1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
2 dnl vi: set tabstop=4 shiftwidth=4 expandtab:
3 dnl ***** BEGIN LICENSE BLOCK *****
4 dnl Version: MPL 1.1/GPL 2.0/LGPL 2.1
6 dnl The contents of this file are subject to the Mozilla Public License Version
7 dnl 1.1 (the "License"); you may not use this file except in compliance with
8 dnl the License. You may obtain a copy of the License at
9 dnl http://www.mozilla.org/MPL/
11 dnl Software distributed under the License is distributed on an "AS IS" basis,
12 dnl WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 dnl for the specific language governing rights and limitations under the
16 dnl The Original Code is this file as it was released upon August 6, 1998.
18 dnl The Initial Developer of the Original Code is
19 dnl Christopher Seawood.
20 dnl Portions created by the Initial Developer are Copyright (C) 1998-2001
21 dnl the Initial Developer. All Rights Reserved.
24 dnl Jamie Zawinski <jwz@jwz.org>
25 dnl gettimeofday args check
26 dnl Christopher Blizzard <blizzard@appliedtheory.com>
27 dnl gnomefe update & enable-pthreads
28 dnl Ramiro Estrugo <ramiro@netscape.com>
29 dnl X11 makedepend support
31 dnl Henry Sobotka <sobotka@axess.com>
33 dnl Dan Mosedale <dmose@mozilla.org>
35 dnl Seth Spitzer <sspitzer@netscape.com>
37 dnl Benjamin Smedberg <benjamin@smedbergs.us>
38 dnl Howard Chu <hyc@symas.com>
40 dnl Mark Mentovai <mark@moxienet.com>:
41 dnl Mac OS X 10.4 support
42 dnl Giorgio Maone <g.maone@informaction.com>
43 dnl MSVC l10n compatible version check
44 dnl Ben Turner <mozilla@songbirdnest.com>
46 dnl Alternatively, the contents of this file may be used under the terms of
47 dnl either the GNU General Public License Version 2 or later (the "GPL"), or
48 dnl the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
49 dnl in which case the provisions of the GPL or the LGPL are applicable instead
50 dnl of those above. If you wish to allow use of your version of this file only
51 dnl under the terms of either the GPL or the LGPL, and not to allow others to
52 dnl use your version of this file under the terms of the MPL, indicate your
53 dnl decision by deleting the provisions above and replace them with the notice
54 dnl and other provisions required by the GPL or the LGPL. If you do not delete
55 dnl the provisions above, a recipient may use your version of this file under
56 dnl the terms of any one of the MPL, the GPL or the LGPL.
58 dnl ***** END LICENSE BLOCK *****
60 dnl Process this file with autoconf to produce a configure script.
61 dnl ========================================================
64 AC_INIT(config/config.mk)
65 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
67 TARGET_CPU="${target_cpu}"
68 TARGET_VENDOR="${target_vendor}"
69 TARGET_OS="${target_os}"
71 dnl ========================================================
73 dnl = Don't change the following two lines. Doing so breaks:
75 dnl = CFLAGS="-foo" ./configure
77 dnl ========================================================
79 CPPFLAGS="${CPPFLAGS=}"
80 CXXFLAGS="${CXXFLAGS=}"
82 HOST_CFLAGS="${HOST_CFLAGS=}"
83 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
84 HOST_LDFLAGS="${HOST_LDFLAGS=}"
86 dnl ========================================================
87 dnl = Preserve certain environment flags passed to configure
88 dnl = We want sub projects to receive the same flags
89 dnl = untainted by this configure script
90 dnl ========================================================
93 _SUBDIR_CFLAGS="$CFLAGS"
94 _SUBDIR_CPPFLAGS="$CPPFLAGS"
95 _SUBDIR_CXXFLAGS="$CXXFLAGS"
96 _SUBDIR_LDFLAGS="$LDFLAGS"
97 _SUBDIR_HOST_CC="$HOST_CC"
98 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
99 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
100 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
101 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
103 dnl Set the version number of the libs included with mozilla
104 dnl ========================================================
111 dnl Set the minimum version of toolkit libs used by mozilla
112 dnl ========================================================
122 WINDRES_VERSION=2.14.90
125 GNOMEUI_VERSION=2.2.0
128 STARTUP_NOTIFICATION_VERSION=0.8
135 dnl Set various checks
136 dnl ========================================================
140 dnl Initialize the Pthread test variables early so they can be
141 dnl overridden by each platform.
142 dnl ========================================================
146 dnl Do not allow a separate objdir build if a srcdir build exists.
147 dnl ==============================================================
148 _topsrcdir=`cd \`dirname $0\`; pwd`
151 if test "$_topsrcdir" != "$_objdir"
153 # Check for a couple representative files in the source tree
155 for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
156 if test -f $file; then
157 _conflict_files="$_conflict_files $file"
160 if test "$_conflict_files"; then
162 echo "* Your source tree contains these files:"
163 for file in $_conflict_files; do
167 * This indicates that you previously built in the source tree.
168 * A source tree build can confuse the separate objdir build.
170 * To clean up the source tree:
181 dnl Default to MSVC for win32
182 dnl ==============================================================
183 if test -z "$CROSS_COMPILE"; then
185 *-cygwin*|*-mingw*|*-msvc*|*-mks*)
187 if test -z "$CC"; then CC=cl; fi
188 if test -z "$CXX"; then CXX=cl; fi
189 if test -z "$CPP"; then CPP="cl -E -nologo"; fi
190 if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
191 if test -z "$LD"; then LD=link; fi
192 if test -z "$AS"; then AS=ml; fi
193 if test -z "$MIDL"; then MIDL=midl; fi
198 COMPILE_ENVIRONMENT=1
199 MOZ_ARG_ENABLE_BOOL(compile-environment,
200 [ --disable-compile-environment
201 Disable compiler/library checks.],
202 COMPILE_ENVIRONMENT=1,
203 COMPILE_ENVIRONMENT= )
205 dnl ========================================================
206 dnl Checks for compilers.
207 dnl ========================================================
208 dnl Set CROSS_COMPILE in the environment when running configure
209 dnl to use the cross-compile setup for now
210 dnl ========================================================
212 if test "$COMPILE_ENVIRONMENT"; then
214 dnl Do some special WinCE toolchain stuff
217 echo -----------------------------------------------------------------------------
218 echo Building Windows CE Shunt Library and Tool Chain
219 echo -----------------------------------------------------------------------------
223 echo -n "#define TOPSRCDIR \"" > $srcdir/build/wince/tools/topsrcdir.h
224 echo `cd "$_topsrcdir" && pwd -W | tr '\n' '\"'` >> $srcdir/build/wince/tools/topsrcdir.h
225 make -C $srcdir/build/wince/tools
226 echo -----------------------------------------------------------------------------
230 if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then
231 echo "cross compiling from $host to $target"
235 _SAVE_CFLAGS="$CFLAGS"
236 _SAVE_LDFLAGS="$LDFLAGS"
238 AC_MSG_CHECKING([for host c compiler])
239 AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
240 if test -z "$HOST_CC"; then
241 AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
243 AC_MSG_RESULT([$HOST_CC])
244 AC_MSG_CHECKING([for host c++ compiler])
245 AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
246 if test -z "$HOST_CXX"; then
247 AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
249 AC_MSG_RESULT([$HOST_CXX])
251 if test -z "$HOST_CFLAGS"; then
252 HOST_CFLAGS="$CFLAGS"
254 if test -z "$HOST_CXXFLAGS"; then
255 HOST_CXXFLAGS="$CXXFLAGS"
257 if test -z "$HOST_LDFLAGS"; then
258 HOST_LDFLAGS="$LDFLAGS"
260 AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
261 AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
263 CFLAGS="$HOST_CFLAGS"
264 LDFLAGS="$HOST_LDFLAGS"
266 AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
267 AC_TRY_COMPILE([], [return(0);],
268 [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
269 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
272 CFLAGS="$HOST_CXXFLAGS"
274 AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
275 AC_TRY_COMPILE([], [return(0);],
276 [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
277 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
281 LDFLAGS=$_SAVE_LDFLAGS
283 case "$build:$target" in
284 powerpc-apple-darwin8*:i?86-apple-darwin*)
285 dnl The Darwin cross compiler doesn't necessarily point itself at a
286 dnl root that has libraries for the proper architecture, it defaults
287 dnl to the system root. The libraries in the system root on current
288 dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
289 dnl checks will fail. Fake a working SDK in that case.
291 _SAVE_CXXFLAGS=$CXXLAGS
292 CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
293 CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
297 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
300 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
304 case "$build:$target" in
305 powerpc-apple-darwin8*:i?86-apple-darwin*)
306 dnl Revert the changes made above. From this point on, the target
307 dnl compiler will never be used without applying the SDK to CFLAGS
308 dnl (see --with-macos-sdk below).
310 CXXFLAGS=$_SAVE_CXXFLAGS
314 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
315 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
316 AC_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
317 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
318 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
319 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
320 AC_DEFINE(CROSS_COMPILE)
325 AC_PATH_PROGS(AS, $AS as, $CC)
326 AC_CHECK_PROGS(AR, ar, :)
327 AC_CHECK_PROGS(LD, ld, :)
328 AC_CHECK_PROGS(STRIP, strip, :)
329 AC_CHECK_PROGS(WINDRES, windres, :)
330 if test -z "$HOST_CC"; then
333 if test -z "$HOST_CFLAGS"; then
334 HOST_CFLAGS="$CFLAGS"
336 if test -z "$HOST_CXX"; then
339 if test -z "$HOST_CXXFLAGS"; then
340 HOST_CXXFLAGS="$CXXFLAGS"
342 if test -z "$HOST_LDFLAGS"; then
343 HOST_LDFLAGS="$LDFLAGS"
345 if test -z "$HOST_RANLIB"; then
346 HOST_RANLIB="$RANLIB"
348 if test -z "$HOST_AR"; then
359 if test "$GCC" = "yes"; then
361 CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
363 if test "$GXX" = "yes"; then
365 CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
367 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
370 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
373 if test "$GNU_CC"; then
374 if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
381 if test "$GCC" = yes; then
382 if test "`$CC -help 2>&1 | grep -c 'Intel(R) C Compiler'`" != "0"; then
387 if test "$GXX" = yes; then
388 if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
393 dnl Special win32 checks
394 dnl ========================================================
400 if test -n "$GNU_CC"; then
408 MOZ_ARG_WITH_STRING(windows-version,
409 [ --with-windows-version=WINVER
410 Minimum Windows version (WINVER) to support
421 AC_MSG_ERROR([Invalid value --with-windows-version, must be 400, 500 or 501]);
427 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince)
428 if test "$GCC" != "yes"; then
429 # Check to see if we are really running in a msvc environemnt
431 AC_CHECK_PROGS(MIDL, midl)
433 # Make sure compilers are valid
434 CFLAGS="$CFLAGS -TC -nologo"
435 CXXFLAGS="$CXXFLAGS -TP -nologo"
438 AC_TRY_COMPILE([#include <stdio.h>],
439 [ printf("Hello World\n"); ],,
440 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
443 AC_TRY_COMPILE([#include <new.h>],
444 [ unsigned *test = new unsigned(42); ],,
445 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
449 _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
452 # Determine compiler version
453 CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
454 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
455 _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
456 _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
457 _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
458 _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
460 CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
461 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
463 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
464 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
466 if test "$_CC_MAJOR_VERSION" = "12"; then
468 elif test "$_CC_MAJOR_VERSION" = "13"; then
470 elif test "$_CC_MAJOR_VERSION" = "14"; then
472 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
473 dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
474 dnl so be very specific here!
475 dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
476 if test $_CC_RELEASE -gt 50727; then
478 elif test $_CC_BUILD -ge 762; then
481 AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
482 AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
483 elif test "$_CC_MAJOR_VERSION" = "15"; then
485 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
487 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
488 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
490 AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
493 _MOZ_RTTI_FLAGS_ON='-GR'
494 _MOZ_RTTI_FLAGS_OFF='-GR-'
495 _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
496 _MOZ_EXCEPTIONS_FLAGS_OFF=''
498 if test -n "$WIN32_REDIST_DIR"; then
499 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
503 # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
504 if test "$_CC_SUITE" -ge "8"; then
506 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
509 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
510 if test -n "$MSMT_TOOL"; then
511 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
512 if test -z "$MSMANIFEST_TOOL_VERSION"; then
513 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
518 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
522 # Check linker version
523 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
524 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
525 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
526 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
531 _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
532 _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
533 _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
534 _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
535 # Add flags if necessary
536 AC_MSG_CHECKING([for midl flags])
537 if test \( "$_MIDL_MAJOR_VERSION" -gt "6" \) -o \( "$_MIDL_MAJOR_VERSION" = "6" -a "$_MIDL_MINOR_VERSION" -gt "0" \) -o \( "$_MIDL_MAJOR_VERSION" = "6" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" -gt "359" \); then
538 # Starting with MIDL version 6.0.359, the MIDL compiler
539 # generates /Oicf /robust stubs by default, which is not
540 # compatible with versions of Windows older than Win2k.
541 # This switches us back to the old behaviour. When we drop
542 # support for Windows older than Win2k, we should remove
544 MIDL_FLAGS="${MIDL_FLAGS} -no_robust"
545 AC_MSG_RESULT([need -no_robust])
547 MIDL_FLAGS="${MIDL_FLAGS}"
548 AC_MSG_RESULT([none needed])
551 unset _MSVC_VER_FILTER
554 # Check w32api version
555 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
556 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
557 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
558 AC_TRY_COMPILE([#include <w32api.h>],
559 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
560 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
561 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
562 #error "test failed."
564 , [ res=yes ], [ res=no ])
565 AC_MSG_RESULT([$res])
566 if test "$res" != "yes"; then
567 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
569 # Check windres version
570 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
571 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
572 AC_MSG_RESULT([$_WINDRES_VERSION])
573 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
574 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
575 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
576 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
577 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
578 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
579 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
580 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
581 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
582 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
583 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
584 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
586 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
590 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
591 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
592 # Require OS features provided by IE 5.0
593 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
597 dnl Test breaks icc on OS/2 && MSVC
598 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
600 if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
604 CC="${srcdir}/build/hcc '$CC'"
605 CXX="${srcdir}/build/hcpp '$CXX'"
612 if test -n "$_WIN32_MSVC"; then
614 SKIP_COMPILER_CHECKS=1
615 SKIP_LIBRARY_CHECKS=1
618 fi # COMPILE_ENVIRONMENT
630 dnl ========================================================
631 dnl Checks for programs.
632 dnl ========================================================
635 AC_PATH_PROGS(PERL, $PERL perl5 perl )
636 if test -z "$PERL" || test "$PERL" = ":"; then
637 AC_MSG_ERROR([perl not found in \$PATH])
640 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
641 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
642 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
644 AC_MSG_RESULT([$_perl_version])
646 if test "$_perl_res" != 0; then
647 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
651 AC_MSG_CHECKING([for full perl installation])
652 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
654 if test "$_perl_res" != 0; then
656 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
661 AC_PATH_PROGS(PYTHON, $PYTHON python)
662 if test -z "$PYTHON"; then
663 AC_MSG_ERROR([python was not found in \$PATH])
665 echo PYTHON="$PYTHON"
667 AC_PATH_PROGS(NSINSTALL_BIN, nsinstall )
668 if test -z "$COMPILE_ENVIRONMENT"; then
669 if test -z "$NSINSTALL_BIN" || test "$NSINSTALL_BIN" = ":"; then
670 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
673 AC_SUBST(NSINSTALL_BIN)
675 AC_PATH_PROG(DOXYGEN, doxygen, :)
676 AC_PATH_PROG(WHOAMI, whoami, :)
677 AC_PATH_PROG(AUTOCONF, autoconf, :)
678 AC_PATH_PROG(UNZIP, unzip, :)
679 AC_PATH_PROGS(ZIP, zip)
680 if test -z "$ZIP" || test "$ZIP" = ":"; then
681 AC_MSG_ERROR([zip not found in \$PATH])
683 AC_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
684 AC_PATH_PROG(XARGS, xargs)
685 if test -z "$XARGS" || test "$XARGS" = ":"; then
686 AC_MSG_ERROR([xargs not found in \$PATH .])
689 if test "$COMPILE_ENVIRONMENT"; then
691 dnl ========================================================
692 dnl = Mac OS X toolchain support
693 dnl ========================================================
697 dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
698 dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
699 dnl the environment and includedir purposes (when using an SDK, below),
700 dnl but remember the full version number for the libdir (SDK).
702 GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
703 GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
705 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
706 dnl Bug 280479, but this keeps popping up in bug 292530 too because
707 dnl 4.0.0/4061 is the default compiler in Tiger.
709 GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
711 if test "$GCC_BUILD" = "4061" ; then
712 AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
713 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
714 from building Mozilla. Upgrade to Xcode 2.1 or later.])
718 dnl xcodebuild needs GCC_VERSION defined in the environment, since it
719 dnl doesn't respect the CC/CXX setting. With GCC_VERSION set, it will use
720 dnl /usr/bin/g(cc|++)-$GCC_VERSION.
721 AC_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
726 XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
728 if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
734 dnl sdp was formerly in /Developer/Tools. As of Mac OS X 10.4 (Darwin 8),
735 dnl it has moved into /usr/bin.
736 AC_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
740 AC_SUBST(GCC_VERSION)
741 AC_SUBST(XCODEBUILD_VERSION)
742 AC_SUBST(HAS_XCODE_2_1)
744 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
745 dnl that a universal binary is being produced.
746 AC_SUBST(UNIVERSAL_BINARY)
748 dnl ========================================================
749 dnl Check for MacOS deployment target version
750 dnl ========================================================
752 MOZ_ARG_ENABLE_STRING(macos-target,
753 [ --enable-macos-target=VER (default=10.4)
754 Set the minimum MacOS version needed at runtime],
755 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
759 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
760 dnl Use the specified value
761 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
762 AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
763 elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
764 dnl No value specified on the command line or in the environment,
765 dnl use the lesser of the application's minimum or the architecture's
767 export MACOSX_DEPLOYMENT_TARGET=10.4
772 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
774 dnl ========================================================
775 dnl = Mac OS X SDK support
776 dnl ========================================================
779 MOZ_ARG_WITH_STRING(macos-sdk,
780 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
781 MACOS_SDK_DIR=$withval)
783 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
784 dnl NEXT_ROOT will be set and exported only if it's needed.
785 AC_SUBST(MACOS_SDK_DIR)
788 if test "$MACOS_SDK_DIR"; then
789 dnl Sync this section with the ones in NSPR and NSS.
790 dnl Changes to the cross environment here need to be accounted for in
791 dnl the libIDL checks (below) and xpidl build.
793 if test ! -d "$MACOS_SDK_DIR"; then
794 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
795 specify a valid SDK. SDKs are installed when the optional cross-development
796 tools are selected during the Xcode/Developer Tools installation.])
799 GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
800 if test "$GCC_VERSION_MAJOR" -lt "4" ; then
801 SDK_C_INCLUDE="-isystem ${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION} -isystem ${MACOS_SDK_DIR}/usr/include -F${MACOS_SDK_DIR}/System/Library/Frameworks"
802 if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
803 SDK_C_INCLUDE="$SDK_C_INCLUDE -F${MACOS_SDK_DIR}/Library/Frameworks"
805 SDK_CXX_INCLUDE="-I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++ -I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++/ppc-darwin -I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++/backward"
807 CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
808 CXXFLAGS="$CXXFLAGS -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
810 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
811 CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
812 CXXCPP="$CXXCPP -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
814 dnl ld support for -syslibroot is compiler-agnostic, but only available
815 dnl on Tiger. Although it's possible to switch on the build host's
816 dnl OS release to use ld -syslibroot when available, ld -syslibroot will
817 dnl cause warnings as long as NEXT_ROOT is set. NEXT_ROOT should be
818 dnl set because both the compiler and linker use it.
819 LIBS="-L${MACOS_SDK_DIR}/usr/lib/gcc/darwin -L${MACOS_SDK_DIR}/usr/lib/gcc/darwin/${GCC_VERSION_FULL} -L${MACOS_SDK_DIR}/usr/lib $LIBS"
820 export NEXT_ROOT=$MACOS_SDK_DIR
822 if test -n "$CROSS_COMPILE" ; then
823 dnl NEXT_ROOT will be in the environment, but it shouldn't be set for
824 dnl the build host. HOST_CXX is presently unused.
825 HOST_CC="NEXT_ROOT= $HOST_CC"
826 HOST_CXX="NEXT_ROOT= $HOST_CXX"
829 dnl gcc >= 4.0 uses different paths than above, but knows how to find
831 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
832 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
834 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
835 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
836 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
838 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
839 dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
840 dnl that supports -syslibroot. Don't set NEXT_ROOT because it will
841 dnl be ignored and cause warnings when -syslibroot is specified.
842 dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
843 dnl the -isysroot it receives, so this is only needed with 4.0.0.
844 LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
849 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
851 AC_TRY_COMPILE([#include <new>
852 int main() { return 0; }],
856 AC_MSG_RESULT($result)
858 if test "$result" = "no" ; then
859 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
863 fi # COMPILE_ENVIRONMENT
865 dnl Be sure the make we use is GNU make.
866 dnl on win32, gmake.exe is the generally the wrong version
868 cygwin*|mingw*|mks*|msvc*)
869 AC_PATH_PROGS(MAKE, $MAKE make gmake, :)
872 AC_PATH_PROGS(MAKE, $MAKE gmake make, :)
875 _make_try=`$MAKE --version 2>/dev/null | grep GNU`
876 if test ! "$_make_try"
879 echo "*** $MAKE is not GNU Make. You will not be able to build Mozilla without GNU Make."
883 dnl Now exit if version if < MAKE_VERSION
885 echo 'all: ; @echo $(MAKE_VERSION)' > dummy.mk
886 _make_vers=`$MAKE --no-print-directory -f dummy.mk all 2>/dev/null`
888 _MAKE_MAJOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $1 }'`
889 _MAKE_MINOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $2 }'`
890 MAKE_MAJOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $1 }'`
891 MAKE_MINOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $2 }'`
892 if test "$_MAKE_MAJOR_VERSION" -lt "$MAKE_MAJOR_VERSION" || \
893 test "$_MAKE_MAJOR_VERSION" = "$MAKE_MAJOR_VERSION" -a \
894 "$_MAKE_MINOR_VERSION" -lt "$MAKE_MINOR_VERSION"; then
895 AC_MSG_ERROR([GNU Make $MAKE_VERSION or higher is required to build Mozilla.])
899 if test "$COMPILE_ENVIRONMENT"; then
903 dnl Check in X11 include directory too.
904 if test "$no_x" != "yes"; then
905 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
910 fi # COMPILE_ENVIRONMENT
912 dnl ========================================================
913 dnl set the defaults first
914 dnl ========================================================
933 MOZ_USER_DIR=".mozilla"
935 HOST_AR_FLAGS='$(AR_FLAGS)'
938 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
940 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
942 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
944 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/modules/libimg/png)'
946 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
947 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core'
948 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin'
949 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom'
950 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
951 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
952 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
954 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
955 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom_compat'
959 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
960 MOZ_GFX_TOOLKIT='$(MOZ_WIDGET_TOOLKIT)'
962 MOZ_ENABLE_POSTSCRIPT=1
964 if test -n "$CROSS_COMPILE"; then
965 OS_TARGET="${target_os}"
966 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
968 case "${target_os}" in
969 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
970 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
971 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
972 mingw*) OS_ARCH=WINNT ;;
973 wince*) OS_ARCH=WINCE ;;
974 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
978 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
979 OS_RELEASE=`uname -r`
982 # Before this used `uname -m` when not cross compiling
983 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
984 OS_TEST="${target_cpu}"
988 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
990 #######################################################################
991 # Master "Core Components" macros for getting the OS target #
992 #######################################################################
995 # Note: OS_TARGET should be specified on the command line for gmake.
996 # When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
997 # The difference between the Win95 target and the WinNT target is that
998 # the WinNT target uses Windows NT specific features not available
999 # in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
1000 # at lesser performance (the Win95 target uses threads; the WinNT target
1003 # When OS_TARGET=WIN16 is specified, then a Windows 3.11 (16bit) target
1004 # is built. See: win16_3.11.mk for lots more about the Win16 target.
1006 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1007 # cross-compilation.
1011 # The following hack allows one to build on a WIN95 machine (as if
1012 # s/he were cross-compiling on a WINNT host for a WIN95 target).
1013 # It also accomodates for MKS's uname.exe. If you never intend
1014 # to do development on a WIN95 machine, you don't need this hack.
1029 CYGWIN_9*|CYGWIN_ME*)
1030 OS_ARCH='CYGWIN_NT-4.0'
1036 # Define and override various archtecture-specific variables, including
1045 case "$HOST_OS_ARCH" in
1046 cygwin*|mingw*|mks*|msvc*)
1065 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1068 HOST_OS_ARCH=UNIXWARE
1080 HOST_OS_ARCH=OpenVMS
1090 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1094 HOST_OS_ARCH=UNIXWARE
1104 # If uname -s returns "Windows_NT", we assume that we are using
1105 # the uname.exe in MKS toolkit.
1107 # The -r option of MKS uname only returns the major version number.
1108 # So we need to use its -v option to get the minor version number.
1109 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1113 OS_MINOR_RELEASE=`uname -v`
1114 if test "$OS_MINOR_RELEASE" = "00"; then
1117 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1119 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1121 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1122 # the uname.exe in the Cygwin tools.
1123 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1124 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1125 # the uname.exe in the GNU-Win32 tools.
1126 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1127 # the uname.exe in the MSYS tools.
1129 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1134 OS_RELEASE=`uname -v`.`uname -r`
1147 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1151 OS_RELEASE=`uname -v`
1175 OS_RELEASE=`uname -v`
1181 OS_RELEASE=`uname -v`
1184 if test "$OS_TARGET" != "NTO"; then
1186 OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1195 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1201 OS_RELEASE=`uname -v`
1208 case "${target_cpu}" in
1216 if test -z "$CROSS_COMPILE" ; then
1224 if test "$OS_ARCH" = "NCR"; then
1226 OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1230 # Only set CPU_ARCH if we recognize the value of OS_TEST
1241 Alpha | alpha | ALPHA)
1254 if test -z "$OS_TARGET"; then
1257 if test "$OS_TARGET" = "WIN95"; then
1260 if test "$OS_TARGET" = "WIN16"; then
1263 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1265 dnl ========================================================
1266 dnl GNU specific defaults
1267 dnl ========================================================
1268 if test "$GNU_CC"; then
1269 # FIXME: Let us build with strict aliasing. bug 414641.
1270 CFLAGS="$CFLAGS -fno-strict-aliasing"
1271 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1272 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1273 DSO_LDOPTS='-shared'
1274 if test "$GCC_USE_GNU_LD"; then
1275 # Don't allow undefined symbols in libraries
1276 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1278 WARNINGS_AS_ERRORS='-Werror'
1280 DSO_PIC_CFLAGS='-fPIC'
1281 _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1282 _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1283 _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'
1284 _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-handle-exceptions'
1286 # Turn on GNU specific features
1287 # -Wall - turn on all warnings
1288 # -pedantic - make compiler warn about non-ANSI stuff, and
1289 # be a little bit stricter
1290 # Warnings slamm took out for now (these were giving more noise than help):
1291 # -Wbad-function-cast - warns when casting a function to a new return type
1292 # -Wconversion - complained when char's or short's were used a function args
1293 # -Wshadow - removed because it generates more noise than help --pete
1294 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1295 if test "$CPU_ARCH" != "ia64" && test "$CPU_ARCH" != "sparc" \
1296 && test -z "$INTEL_CC"; then
1297 # don't use -Wcast-align on ia64 or sparc, it's noisy on those platforms
1298 # icc doesn't support this flag.
1299 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1302 dnl Turn pedantic on but disable the warnings for long long
1305 if test -z "$INTEL_CC"; then
1306 _IGNORE_LONG_LONG_WARNINGS=1
1307 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1309 _IGNORE_LONG_LONG_WARNINGS=
1313 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1314 _USE_CPP_INCLUDE_FLAG=1
1316 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1317 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1319 DSO_LDOPTS='-shared'
1320 if test "$GNU_LD"; then
1321 # Don't allow undefined symbols in libraries
1322 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1326 DSO_PIC_CFLAGS='-KPIC'
1327 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1330 if test "$GNU_CXX"; then
1331 # FIXME: Let us build with strict aliasing. bug 414641.
1332 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1333 # Turn on GNU specific features
1334 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wconversion -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1335 if test "$CPU_ARCH" != "ia64" && test "$CPU_ARCH" != "sparc" \
1336 && test -z "$INTEL_CC"; then
1337 # don't use -Wcast-align on ia64 or sparc, it's noisy on those platforms
1338 # icc doesn't support this flag.
1339 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1342 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1343 _USE_CPP_INCLUDE_FLAG=1
1345 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1348 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1349 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1350 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1351 dnl normal behavior.
1352 dnl ========================================================
1354 MKSHLIB_UNFORCE_ALL=
1356 if test "$COMPILE_ENVIRONMENT"; then
1357 if test "$GNU_CC"; then
1358 AC_MSG_CHECKING(whether ld has archive extraction flags)
1359 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1360 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1361 ac_cv_mkshlib_force_and_unforce="no"
1362 exec 3<&0 <<LOOP_INPUT
1363 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1364 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1365 force="-Wl,-all"; unforce="-Wl,-none"
1372 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1375 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1377 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1381 eval $ac_cv_mkshlib_force_and_unforce
1382 MKSHLIB_FORCE_ALL=$force
1383 MKSHLIB_UNFORCE_ALL=$unforce
1386 fi # COMPILE_ENVIRONMENT
1388 dnl =================================================================
1389 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1390 dnl which is bad when cross compiling.
1391 dnl =================================================================
1392 if test "$COMPILE_ENVIRONMENT"; then
1393 configure_static_assert_macros='
1394 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1395 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1396 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1399 dnl test that the macros actually work:
1400 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1401 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1404 ac_cv_static_assertion_macros_work="yes"
1405 AC_TRY_COMPILE([$configure_static_assert_macros],
1406 [CONFIGURE_STATIC_ASSERT(1)],
1408 ac_cv_static_assertion_macros_work="no")
1409 AC_TRY_COMPILE([$configure_static_assert_macros],
1410 [CONFIGURE_STATIC_ASSERT(0)],
1411 ac_cv_static_assertion_macros_work="no",
1414 AC_TRY_COMPILE([$configure_static_assert_macros],
1415 [CONFIGURE_STATIC_ASSERT(1)],
1417 ac_cv_static_assertion_macros_work="no")
1418 AC_TRY_COMPILE([$configure_static_assert_macros],
1419 [CONFIGURE_STATIC_ASSERT(0)],
1420 ac_cv_static_assertion_macros_work="no",
1424 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1425 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1426 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1429 fi # COMPILE_ENVIRONMENT
1431 dnl ========================================================
1432 dnl Checking for 64-bit OS
1433 dnl ========================================================
1434 if test "$COMPILE_ENVIRONMENT"; then
1437 AC_MSG_CHECKING(for 64-bit OS)
1438 AC_TRY_COMPILE([$configure_static_assert_macros],
1439 [CONFIGURE_STATIC_ASSERT(sizeof(long) == 8)],
1440 result="yes", result="no")
1441 AC_MSG_RESULT("$result")
1442 if test "$result" = "yes"; then
1443 AC_DEFINE(HAVE_64BIT_OS)
1446 AC_SUBST(HAVE_64BIT_OS)
1448 fi # COMPILE_ENVIRONMENT
1450 dnl ========================================================
1451 dnl Enable high-memory support on OS/2, disabled by default
1452 dnl ========================================================
1453 MOZ_ARG_ENABLE_BOOL(os2-high-mem,
1454 [ --enable-os2-high-mem Enable high-memory support on OS/2],
1455 MOZ_OS2_HIGH_MEMORY=1,
1456 MOZ_OS2_HIGH_MEMORY= )
1457 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1459 dnl ========================================================
1460 dnl System overrides of the defaults for host
1461 dnl ========================================================
1464 HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1465 HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1466 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1469 *cygwin*|*mingw*|*mks*|*msvc*|*wince)
1470 if test -n "$_WIN32_MSVC"; then
1472 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1473 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1474 HOST_RANLIB='echo ranlib'
1476 HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1478 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1479 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1480 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1481 HOST_BIN_SUFFIX=.exe
1484 dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1487 CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1488 if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1490 CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1492 if test "`${PERL} -v | grep -c cygwin 2>/dev/null`" = 0; then
1494 PERL="${CYGWIN_WRAPPER} $PERL"
1497 if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1498 PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1505 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1506 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1507 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1508 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1509 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL -lobjc'
1512 *-linux*|*-kfreebsd*-gnu)
1513 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1514 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1515 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1519 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1520 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1521 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1522 HOST_BIN_SUFFIX=.exe
1527 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1528 HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1529 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1533 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1534 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1538 dnl Get mozilla version from central milestone file
1539 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1541 dnl Get version of various core apps from the version files.
1542 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1543 THUNDERBIRD_VERSION=`cat $topsrcdir/mail/config/version.txt`
1544 SUNBIRD_VERSION=`cat $topsrcdir/calendar/sunbird/config/version.txt`
1545 SEAMONKEY_VERSION=`cat $topsrcdir/suite/config/version.txt`
1547 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1548 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1550 dnl ========================================================
1551 dnl System overrides of the defaults for target
1552 dnl ========================================================
1557 if test ! "$GNU_CC"; then
1558 if test ! "$HAVE_64BIT_OS"; then
1559 # Compiling with Visual Age C++ object model compat is the
1560 # default. To compile with object model ibm, add
1561 # AIX_OBJMODEL=ibm to .mozconfig.
1562 if test "$AIX_OBJMODEL" = "ibm"; then
1563 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1570 AC_SUBST(AIX_OBJMODEL)
1571 DSO_LDOPTS='-qmkshrobj=1'
1572 DSO_CFLAGS='-qflag=w:w'
1574 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1575 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1577 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1578 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1579 if test "$COMPILE_ENVIRONMENT"; then
1582 AC_MSG_CHECKING([for VisualAge C++ compiler version >= 5.0.2.0])
1584 [#if (__IBMCPP__ < 502)
1585 #error "Bad compiler"
1587 _BAD_COMPILER=,_BAD_COMPILER=1)
1588 if test -n "$_BAD_COMPILER"; then
1590 AC_MSG_ERROR([VisualAge C++ version 5.0.2.0 or higher is required to build.])
1592 AC_MSG_RESULT([yes])
1595 TARGET_COMPILER_ABI="ibmc"
1596 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1597 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1600 case "${target_os}" in
1605 if test "$COMPILE_ENVIRONMENT"; then
1606 AC_CHECK_HEADERS(sys/inttypes.h)
1608 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1613 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1614 _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
1615 DSO_LDOPTS='-nostart'
1616 TK_LIBS='-lbe -lroot'
1618 if test "$COMPILE_ENVIRONMENT"; then
1619 AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
1620 AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
1622 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
1623 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
1626 MOZ_USER_DIR="Mozilla"
1630 dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
1632 _IGNORE_LONG_LONG_WARNINGS=
1640 _WARNINGS_CFLAGS="-Wall"
1641 _WARNINGS_CXXFLAGS="-Wall"
1642 # The test above doesn't work properly, at least on 3.1.
1643 MKSHLIB_FORCE_ALL=''
1644 MKSHLIB_UNFORCE_ALL=''
1650 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1651 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1652 MOZ_OPTIMIZE_FLAGS="-O2"
1654 CFLAGS="$CFLAGS -fpascal-strings -fno-common"
1655 CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
1658 STRIP="$STRIP -x -S"
1659 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1660 MOZ_ENABLE_POSTSCRIPT=
1661 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1662 LDFLAGS="$LDFLAGS -framework Cocoa"
1663 # set MACOSX to generate lib/mac/MoreFiles/Makefile
1666 dnl check for the presence of the -dead_strip linker flag
1667 AC_MSG_CHECKING([for -dead_strip option to ld])
1668 _SAVE_LDFLAGS=$LDFLAGS
1669 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1670 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1671 if test -n "$_HAVE_DEAD_STRIP" ; then
1672 AC_MSG_RESULT([yes])
1673 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1677 LDFLAGS=$_SAVE_LDFLAGS
1681 if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` != "elf"; then
1682 DLL_SUFFIX=".so.1.0"
1683 DSO_LDOPTS="-shared"
1685 if test ! "$GNU_CC"; then
1686 DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
1688 # Can't have force w/o an unforce.
1689 # # Hack for FreeBSD 2.2
1690 # if test -z "$MKSHLIB_FORCE_ALL"; then
1691 # MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
1692 # MKSHLIB_UNFORCE_ALL=''
1698 if test ! "$GNU_CC"; then
1699 DSO_LDOPTS='-b -Wl,+s'
1702 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1703 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1704 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1706 DSO_LDOPTS='-b -E +s'
1707 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1708 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1710 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
1711 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1716 DSO_LDOPTS='-elf -shared'
1718 if test "$GNU_CC"; then
1719 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1720 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1721 MKSHLIB_FORCE_ALL='-Wl,-all'
1722 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1723 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1725 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1726 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1727 MKSHLIB_FORCE_ALL='-all'
1728 MKSHLIB_UNFORCE_ALL='-none'
1734 dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must*
1735 dnl compile and link using -n32
1737 TARGET_COMPILER_ABI=n32
1738 DSO_LDOPTS='-elf -shared'
1739 MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1740 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1741 _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
1742 _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
1743 if test "$GNU_CC"; then
1744 MKSHLIB_FORCE_ALL='-Wl,-all'
1745 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1746 _WARNINGS_CFLAGS="-Wall"
1747 _WARNINGS_CXXFLAGS="-Wall"
1748 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1750 MKSHLIB_FORCE_ALL='-all'
1751 MKSHLIB_UNFORCE_ALL='-none'
1757 CFLAGS="$CFLAGS -woff 3262 -G 4"
1758 CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
1759 if test -n "$USE_N32"; then
1760 ASFLAGS="$ASFLAGS -n32"
1761 CFLAGS="$CFLAGS -n32"
1762 CXXFLAGS="$CXXFLAGS -n32"
1763 LDFLAGS="$LDFLAGS -n32"
1765 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1766 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
1769 if test -z "$GNU_CXX"; then
1775 if test "$GNU_CC"; then
1776 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
1777 case $GCC_VERSION in
1779 # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
1780 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
1784 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1785 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_SIZE_TWEAK"
1786 MOZ_DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb,
1787 # and that combo is not yet good at
1788 # debugging inlined functions (even
1789 # when using DWARF2 as the debugging
1794 case "${target_cpu}" in
1796 CFLAGS="$CFLAGS -mieee"
1797 CXXFLAGS="$CXXFLAGS -mieee"
1801 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
1804 CFLAGS="$CFLAGS -Wa,-xgot"
1805 CXXFLAGS="$CXXFLAGS -Wa,-xgot"
1812 MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
1814 AR_EXTRACT="$AR -extract"
1816 AR_FLAGS='-OUT:"$@"'
1823 # certain versions of cygwin's makedepend barf on the
1824 # #include <string> vs -I./dist/include/string issue so don't use it
1830 HOST_AR='lib -OUT:$@'
1831 HOST_RANLIB='echo ranlib'
1832 HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
1835 WARNINGS_AS_ERRORS='-WX'
1836 MOZ_OPTIMIZE_FLAGS='-O1'
1837 AR_FLAGS='-NOLOGO -OUT:"$@"'
1839 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1840 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1843 DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
1844 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1846 IMPORT_LIB_SUFFIX=lib
1848 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1851 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1852 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1854 MKSHLIB_UNFORCE_ALL=
1855 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1856 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1857 MOZ_DEBUG_FLAGS='-Zi'
1858 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1860 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1861 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1863 RANLIB='echo not_ranlib'
1864 STRIP='echo not_strip'
1865 TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
1868 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1870 LIBIDL_CFLAGS="-I$MOZ_TOOLS_DIR/include ${GLIB_CFLAGS}"
1871 LIBIDL_LIBS="$MOZ_TOOLS_DIR/lib/libidl-0.6_s.lib $MOZ_TOOLS_DIR/lib/glib-1.2_s.lib"
1874 AC_DEFINE(HAVE_SNPRINTF)
1880 AC_DEFINE(HW_THREADS)
1881 AC_DEFINE(STDC_HEADERS)
1882 AC_DEFINE(NEW_H, <new>)
1883 AC_DEFINE(WIN32_LEAN_AND_MEAN)
1885 TARGET_MD_ARCH=win32
1886 _PLATFORM_DEFAULT_TOOLKIT='windows'
1889 MOZ_ENABLE_POSTSCRIPT=
1890 MOZ_USER_DIR="Mozilla"
1894 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
1899 # certain versions of cygwin's makedepend barf on the
1900 # #include <string> vs -I./dist/include/string issue so don't use it
1902 if test -n "$GNU_CC"; then
1903 CC="$CC -mno-cygwin"
1904 CXX="$CXX -mno-cygwin"
1905 CPP="$CPP -mno-cygwin"
1906 CFLAGS="$CFLAGS -mms-bitfields"
1907 CXXFLAGS="$CXXFLAGS -mms-bitfields"
1908 DSO_LDOPTS='-shared'
1909 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1910 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1912 # Use temp file for windres (bug 213281)
1913 RCFLAGS='-O coff --use-temp-file'
1914 # mingw doesn't require kernel32, user32, and advapi32 explicitly
1915 LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
1916 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
1918 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
1919 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
1921 IMPORT_LIB_SUFFIX=dll.a
1923 TARGET_COMPILER_ABI=msvc
1927 AR='lib -NOLOGO -OUT:"$@"'
1929 RANLIB='echo not_ranlib'
1930 STRIP='echo not_strip'
1935 GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
1940 IMPORT_LIB_SUFFIX=lib
1941 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(PDBFILE) $(DSO_LDOPTS)'
1942 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(PDBFILE) $(DSO_LDOPTS)'
1944 MKSHLIB_UNFORCE_ALL=
1945 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
1946 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1947 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1948 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
1949 MOZ_DEBUG_FLAGS='-Zi'
1950 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1951 WARNINGS_AS_ERRORS='-WX'
1952 MOZ_OPTIMIZE_FLAGS='-O1'
1953 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1955 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1956 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1957 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1958 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1959 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1960 if test $_MSC_VER -ge 1400; then
1961 LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
1962 dnl For profile-guided optimization
1963 PROFILE_GEN_CFLAGS="-GL"
1964 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
1965 PROFILE_USE_CFLAGS="-GL"
1966 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul
1967 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
1968 if test -n "$_USE_DYNAMICBASE"; then
1969 LDFLAGS="$LDFLAGS -DYNAMICBASE"
1973 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg$(MOZ_BITS)$(VERSION_NUMBER),$(DEPTH)/jpeg)'
1974 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
1975 AC_DEFINE(HAVE_SNPRINTF)
1981 AC_DEFINE(HW_THREADS)
1982 AC_DEFINE(STDC_HEADERS)
1983 AC_DEFINE(NEW_H, <new>)
1984 AC_DEFINE(WIN32_LEAN_AND_MEAN)
1985 TARGET_MD_ARCH=win32
1986 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
1989 MOZ_ENABLE_POSTSCRIPT=
1990 MOZ_USER_DIR="Mozilla"
1992 dnl Hardcode to win95 for now - cls
1993 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
1995 dnl set NO_X11 defines here as the general check is skipped on win32
1999 dnl MinGW/MSYS doesn't provide or need cygpath
2004 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2006 *-cygwin*|*-msvc*|*-mks*)
2007 CYGPATH_W="cygpath -a -w"
2008 CYGPATH_S="sed -e s|\\\\|/|g"
2009 MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2013 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2015 if test -z "$MOZ_TOOLS"; then
2016 AC_MSG_ERROR([MOZ_TOOLS is not set])
2019 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd`
2020 if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
2021 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2023 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_DIR/bin:"` = 0; then
2024 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2026 MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2028 if test -n "$GLIB_PREFIX"; then
2029 _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd`
2030 if test "$?" = "0"; then
2031 if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
2032 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
2034 _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
2036 AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
2039 _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
2041 if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
2042 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
2044 GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
2045 if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
2046 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
2047 elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
2048 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
2050 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
2053 if test -n "$LIBIDL_PREFIX"; then
2054 _LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd`
2055 if test "$?" = "0"; then
2056 if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
2057 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
2059 _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
2061 AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
2064 _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
2066 if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
2067 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
2069 LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
2070 if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
2071 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
2073 elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
2074 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
2076 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
2078 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2081 *) # else cross-compiling
2082 if test -n "$GLIB_PREFIX"; then
2083 GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
2084 if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
2085 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
2086 elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
2087 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
2089 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
2092 if test -n "$LIBIDL_PREFIX"; then
2093 LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
2094 if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
2095 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
2097 elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
2098 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
2100 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
2103 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2107 AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
2111 AC_CHECK_HEADERS(atlbase.h wpcapi.h)
2125 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2132 CFLAGS="$CFLAGS -Dunix"
2133 CXXFLAGS="$CXXFLAGS -Dunix"
2134 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2136 DSO_PIC_CFLAGS='-fPIC -DPIC'
2137 DSO_LDOPTS='-shared'
2138 BIN_FLAGS='-Wl,--export-dynamic'
2140 DSO_PIC_CFLAGS='-fPIC -DPIC'
2141 DLL_SUFFIX=".so.1.0"
2142 DSO_LDOPTS='-shared'
2144 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2145 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2146 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2147 if test "$LIBRUNPATH"; then
2148 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2150 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2151 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2156 AC_DEFINE(_QNX_SOURCE)
2159 WARNINGS_AS_ERRORS=''
2160 MOZ_OPTIMIZE_FLAGS="-O"
2161 MOZ_DEBUG_FLAGS="-gstabs"
2164 LIBS="$LIBS -lsocket -lstdc++"
2165 _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2166 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2167 if test "$with_x" != "yes"
2169 _PLATFORM_DEFAULT_TOOLKIT="photon"
2170 TK_CFLAGS='-I/usr/include/photon'
2173 case "${target_cpu}" in
2175 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
2178 case "${host_cpu}" in
2186 DLL_SUFFIX=".so.1.0"
2188 DSO_PIC_CFLAGS='-fPIC'
2189 DSO_LDOPTS='-shared -fPIC'
2190 if test "$LIBRUNPATH"; then
2191 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2196 AC_DEFINE(NO_PW_GECOS)
2197 AC_DEFINE(NO_UDSOCK)
2198 AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2200 MKSHLIB_FORCE_ALL='-all'
2201 MKSHLIB_UNFORCE_ALL='-none'
2203 AS_DASH_C_FLAG='-Wc/names=as_is'
2205 DSO_LDOPTS='-shared -auto_symvec'
2207 MOZ_DEBUG_LDFLAGS='-g'
2209 CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2210 CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2215 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2216 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2224 IMPORT_LIB_SUFFIX=lib
2227 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2228 MOZ_ENABLE_POSTSCRIPT=
2231 MOZ_USER_DIR="Mozilla"
2233 if test "$MOZTOOLS"; then
2234 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2236 AC_MSG_ERROR([MOZTOOLS is not set])
2240 if test -n "$GNU_CC"; then
2242 AC_DEFINE(XP_OS2_EMX)
2243 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2244 AC_DEFINE(TCPV40HDRS)
2247 CFLAGS="$CFLAGS -Zomf"
2248 CXXFLAGS="$CXXFLAGS -Zomf"
2250 BIN_FLAGS='-Zlinker /ST:0x100000'
2254 WARNINGS_AS_ERRORS='-Werror'
2255 MOZ_DEBUG_FLAGS="-g -fno-inline"
2256 MOZ_OPTIMIZE_FLAGS="-O2"
2257 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2258 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcomct.lib'
2259 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2260 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2261 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2262 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2263 LDFLAGS="$LDFLAGS -Zhigh-mem"
2264 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2265 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2268 # GCC for OS/2 currently predefines these, but we don't want them
2269 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2270 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2272 AC_CACHE_CHECK(for __declspec(dllexport),
2274 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2276 ac_os2_declspec="yes",
2277 ac_os2_declspec="no")])
2278 if test "$ac_os2_declspec" = "yes"; then
2280 MOZ_OS2_USE_DECLSPEC='1'
2283 # Visual Age C++ build
2284 elif test "$VACPP" = "yes"; then
2285 MOZ_BUILD_ROOT=`pwd -D`
2288 AR_FLAGS='/NOL /NOI /O:$(subst /,\\,$@)'
2297 CFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9"
2298 CXXFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9 /Gx+"
2299 MOZ_DEBUG_FLAGS="/Ti+"
2300 WARNINGS_AS_ERRORS='-WX'
2301 MOZ_OPTIMIZE_FLAGS="/O+ /Gl+ /G5 /qarch=pentium"
2303 MOZ_DEBUG_LDFLAGS="/DE"
2304 MOZ_OPTIMIZE_LDFLAGS="/OPTFUNC /EXEPACK:2 /PACKCODE /PACKDATA"
2307 IMPLIB='implib /NOL /NOI'
2308 FILTER='cppfilt -q -B -P'
2309 AC_DEFINE(NO_ANSI_KEYWORDS)
2312 AC_DEFINE(XP_OS2_VACPP)
2313 AC_DEFINE(TCPV40HDRS)
2314 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2315 AC_DEFINE(STDC_HEADERS)
2316 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2317 MKSHLIB='$(LD) $(DSO_LDOPTS)'
2318 MKCSHLIB='$(LD) $(DSO_LDOPTS)'
2319 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2320 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcomct.lib'
2321 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2322 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2327 if test "$GNU_CC"; then
2328 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2329 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2332 MOZ_DEBUG_FLAGS='-g'
2333 ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2334 CFLAGS="$CFLAGS -ieee"
2335 CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
2336 DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2339 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2340 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2341 MKSHLIB_FORCE_ALL='-all'
2342 MKSHLIB_UNFORCE_ALL='-none'
2343 dnl Might fix the libxpcom.so breakage on this platform as well....
2344 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2345 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2347 if test -z "$GNU_CXX"; then
2350 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2354 DIRENT_INO=d_stat.st_ino
2355 dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2356 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2357 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2358 dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2359 AC_DEFINE(STDC_HEADERS)
2360 if test "$no_x" = "yes"; then
2361 _PLATFORM_DEFAULT_TOOLKIT='photon'
2362 TK_CFLAGS='-I/usr/nto/include/photon'
2363 TK_LIBS='-lphoton -lphrender'
2368 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2369 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2370 CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2371 if test ! "$GNU_CC"; then
2376 dnl the qsort routine under solaris is faulty
2379 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2381 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2382 # libraries one level up (e.g. libnspr4.so)
2383 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
2384 if test -z "$GNU_CC"; then
2386 MOZ_FIX_LINK_PATHS='-R $(LIBXUL_DIST)/bin'
2387 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2389 if test "$CPU_ARCH" != "sparc"; then
2390 CFLAGS="$CFLAGS -xstrconst -xbuiltin=%all"
2391 CXXFLAGS="$CXXFLAGS -xbuiltin=%all -features=tmplife -norunpath"
2393 # Do not use -xbuiltin on SPARC to get around a bug of compiler
2394 CFLAGS="$CFLAGS -xstrconst -xbuiltin=%none"
2395 CXXFLAGS="$CXXFLAGS -xbuiltin=%none -features=tmplife -norunpath"
2398 LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2399 if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2400 _SAVE_LDFLAGS=$LDFLAGS
2401 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2402 AC_TRY_LINK([#include <stdio.h>],
2403 [printf("Hello World\n");],
2405 [LDFLAGS=$_SAVE_LDFLAGS])
2407 WARNINGS_AS_ERRORS='-Werror'
2408 MOZ_OPTIMIZE_FLAGS="-xO4"
2409 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2410 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2411 MKSHLIB_FORCE_ALL='-z allextract'
2412 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2413 DSO_LDOPTS='-G -z muldefs'
2419 AS='/usr/ccs/bin/as'
2420 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2422 TARGET_COMPILER_ABI="sunc"
2423 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2424 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2425 AC_MSG_CHECKING([for Forte compiler version >= WS6U2])
2429 [#if (__SUNPRO_CC < 0x530)
2432 _BAD_COMPILER=,_BAD_COMPILER=1)
2433 if test -n "$_BAD_COMPILER"; then
2435 AC_MSG_ERROR([Forte version WS6U2 or higher is required to build. Your compiler version is $CC_VERSION .])
2439 AC_MSG_RESULT([$_res])
2442 ASFLAGS="$ASFLAGS -fPIC"
2445 _WARNINGS_CXXFLAGS=''
2446 if test "$OS_RELEASE" = "5.3"; then
2447 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2450 if test "$OS_RELEASE" = "5.5.1"; then
2451 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2456 DSO_LDOPTS='-Bdynamic'
2457 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2458 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2460 AC_DEFINE(SPRINTF_RETURNS_STRING)
2461 case "$(target_os)" in
2463 DLL_SUFFIX='.so.1.0'
2469 NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2473 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2478 dnl Only one oddball right now (QNX), but this gives us flexibility
2479 dnl if any other platforms need to override this in the future.
2480 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2482 dnl ========================================================
2483 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2484 dnl by now will not have any way to link most binaries (tests
2485 dnl as well as viewer, apprunner, etc.), because some symbols
2486 dnl will be left out of the "composite" .so's by ld as unneeded.
2487 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2488 dnl they can link in the static libs that provide the missing
2490 dnl ========================================================
2491 NO_LD_ARCHIVE_FLAGS=
2492 if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2493 NO_LD_ARCHIVE_FLAGS=1
2497 NO_LD_ARCHIVE_FLAGS=
2500 NO_LD_ARCHIVE_FLAGS=
2503 NO_LD_ARCHIVE_FLAGS=
2505 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
2506 if test -z "$GNU_CC"; then
2507 NO_LD_ARCHIVE_FLAGS=
2511 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2514 dnl Indicate that platform requires special thread safe
2515 dnl locking when starting up the OJI JVM
2516 dnl (see mozilla/modules/oji/src/nsJVMManager.cpp)
2517 dnl ========================================================
2520 AC_DEFINE(MOZ_OJI_REQUIRE_THREAD_SAFE_ON_STARTUP)
2524 dnl ========================================================
2525 dnl = Flags to strip unused symbols from .so components
2526 dnl ========================================================
2528 *-linux*|*-kfreebsd*-gnu)
2529 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2532 if test -z "$GNU_CC"; then
2533 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2535 if test -z "$GCC_USE_GNU_LD"; then
2536 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2538 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2543 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2546 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2548 *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
2549 if test -n "$GNU_CC"; then
2550 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2555 if test -z "$COMPILE_ENVIRONMENT"; then
2556 SKIP_COMPILER_CHECKS=1
2557 SKIP_LIBRARY_CHECKS=1
2560 if test -z "$SKIP_COMPILER_CHECKS"; then
2561 dnl Checks for typedefs, structures, and compiler characteristics.
2562 dnl ========================================================
2570 AC_STRUCT_ST_BLKSIZE
2571 AC_MSG_CHECKING(for siginfo_t)
2572 AC_CACHE_VAL(ac_cv_siginfo_t,
2573 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2574 #include <signal.h>],
2576 [ac_cv_siginfo_t=true],
2577 [ac_cv_siginfo_t=false])])
2578 if test "$ac_cv_siginfo_t" = true ; then
2579 AC_DEFINE(HAVE_SIGINFO_T)
2585 dnl Visual Age for os/2 also defines size_t and off_t in certain
2586 dnl header files. These defines make Visual Age use the mozilla
2588 if test "$VACPP" = "yes"; then
2593 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2594 dnl ========================================================
2595 AC_MSG_CHECKING(for int16_t)
2596 AC_CACHE_VAL(ac_cv_int16_t,
2597 [AC_TRY_COMPILE([#include <stdio.h>
2598 #include <sys/types.h>],
2600 [ac_cv_int16_t=true],
2601 [ac_cv_int16_t=false])])
2602 if test "$ac_cv_int16_t" = true ; then
2603 AC_DEFINE(HAVE_INT16_T)
2608 AC_MSG_CHECKING(for int32_t)
2609 AC_CACHE_VAL(ac_cv_int32_t,
2610 [AC_TRY_COMPILE([#include <stdio.h>
2611 #include <sys/types.h>],
2613 [ac_cv_int32_t=true],
2614 [ac_cv_int32_t=false])])
2615 if test "$ac_cv_int32_t" = true ; then
2616 AC_DEFINE(HAVE_INT32_T)
2621 AC_MSG_CHECKING(for int64_t)
2622 AC_CACHE_VAL(ac_cv_int64_t,
2623 [AC_TRY_COMPILE([#include <stdio.h>
2624 #include <sys/types.h>],
2626 [ac_cv_int64_t=true],
2627 [ac_cv_int64_t=false])])
2628 if test "$ac_cv_int64_t" = true ; then
2629 AC_DEFINE(HAVE_INT64_T)
2634 AC_MSG_CHECKING(for int64)
2635 AC_CACHE_VAL(ac_cv_int64,
2636 [AC_TRY_COMPILE([#include <stdio.h>
2637 #include <sys/types.h>],
2640 [ac_cv_int64=false])])
2641 if test "$ac_cv_int64" = true ; then
2642 AC_DEFINE(HAVE_INT64)
2647 AC_MSG_CHECKING(for uint)
2648 AC_CACHE_VAL(ac_cv_uint,
2649 [AC_TRY_COMPILE([#include <stdio.h>
2650 #include <sys/types.h>],
2653 [ac_cv_uint=false])])
2654 if test "$ac_cv_uint" = true ; then
2655 AC_DEFINE(HAVE_UINT)
2660 AC_MSG_CHECKING(for uint_t)
2661 AC_CACHE_VAL(ac_cv_uint_t,
2662 [AC_TRY_COMPILE([#include <stdio.h>
2663 #include <sys/types.h>],
2665 [ac_cv_uint_t=true],
2666 [ac_cv_uint_t=false])])
2667 if test "$ac_cv_uint_t" = true ; then
2668 AC_DEFINE(HAVE_UINT_T)
2673 AC_MSG_CHECKING(for uint16_t)
2674 AC_CACHE_VAL(ac_cv_uint16_t,
2675 [AC_TRY_COMPILE([#include <stdio.h>
2676 #include <sys/types.h>],
2677 [uint16_t foo = 0;],
2678 [ac_cv_uint16_t=true],
2679 [ac_cv_uint16_t=false])])
2680 if test "$ac_cv_uint16_t" = true ; then
2681 AC_DEFINE(HAVE_UINT16_T)
2687 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2688 dnl are defined when compiling C++ but not C. Since the result of this
2689 dnl test is used only in C++, do it in C++.
2692 AC_MSG_CHECKING(for uname.domainname)
2693 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2694 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2695 [ struct utsname *res; char *domain;
2696 (void)uname(res); if (res != 0) { domain = res->domainname; } ],
2697 [ac_cv_have_uname_domainname_field=true],
2698 [ac_cv_have_uname_domainname_field=false])])
2700 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2701 AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2707 AC_MSG_CHECKING(for uname.__domainname)
2708 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2709 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2710 [ struct utsname *res; char *domain;
2711 (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
2712 [ac_cv_have_uname_us_domainname_field=true],
2713 [ac_cv_have_uname_us_domainname_field=false])])
2715 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2716 AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2724 dnl Check for usable wchar_t (2 bytes, unsigned)
2725 dnl (we really don't need the unsignedness check anymore)
2726 dnl ========================================================
2728 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2729 ac_cv_have_usable_wchar_v2,
2730 [AC_TRY_COMPILE([#include <stddef.h>
2731 $configure_static_assert_macros],
2732 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2733 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2734 ac_cv_have_usable_wchar_v2="yes",
2735 ac_cv_have_usable_wchar_v2="no")])
2736 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2737 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2738 HAVE_CPP_2BYTE_WCHAR_T=1
2740 dnl This is really gcc-only
2741 dnl Do this test using CXX only since some versions of gcc
2742 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2743 dnl only have short-wchar support for c++.
2744 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2748 _SAVE_CXXFLAGS=$CXXFLAGS
2749 CXXFLAGS="$CXXFLAGS -fshort-wchar"
2751 AC_CACHE_CHECK(for compiler -fshort-wchar option,
2752 ac_cv_have_usable_wchar_option_v2,
2753 [AC_TRY_COMPILE([#include <stddef.h>
2754 $configure_static_assert_macros],
2755 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2756 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2757 ac_cv_have_usable_wchar_option_v2="yes",
2758 ac_cv_have_usable_wchar_option_v2="no")])
2760 if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2761 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2762 HAVE_CPP_2BYTE_WCHAR_T=1
2764 CXXFLAGS=$_SAVE_CXXFLAGS
2769 dnl Check for .hidden assembler directive and visibility attribute.
2770 dnl Borrowed from glibc configure.in
2771 dnl ===============================================================
2772 if test "$GNU_CC"; then
2773 AC_CACHE_CHECK(for visibility(hidden) attribute,
2774 ac_cv_visibility_hidden,
2775 [cat > conftest.c <<EOF
2776 int foo __attribute__ ((visibility ("hidden"))) = 1;
2778 ac_cv_visibility_hidden=no
2779 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2780 if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2781 ac_cv_visibility_hidden=yes
2786 if test "$ac_cv_visibility_hidden" = "yes"; then
2787 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2789 AC_CACHE_CHECK(for visibility(default) attribute,
2790 ac_cv_visibility_default,
2791 [cat > conftest.c <<EOF
2792 int foo __attribute__ ((visibility ("default"))) = 1;
2794 ac_cv_visibility_default=no
2795 if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2796 if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2797 ac_cv_visibility_default=yes
2802 if test "$ac_cv_visibility_default" = "yes"; then
2803 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2805 AC_CACHE_CHECK(for visibility pragma support,
2806 ac_cv_visibility_pragma,
2807 [cat > conftest.c <<EOF
2808 #pragma GCC visibility push(hidden)
2810 #pragma GCC visibility push(default)
2811 int foo_default = 1;
2813 ac_cv_visibility_pragma=no
2814 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2815 if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2816 if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2817 ac_cv_visibility_pragma=yes
2823 if test "$ac_cv_visibility_pragma" = "yes"; then
2824 AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2825 ac_cv_have_visibility_class_bug,
2826 [cat > conftest.c <<EOF
2827 #pragma GCC visibility push(hidden)
2828 struct __attribute__ ((visibility ("default"))) TestStruct {
2831 __attribute__ ((visibility ("default"))) void TestFunc() {
2835 ac_cv_have_visibility_class_bug=no
2836 if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2837 ac_cv_have_visibility_class_bug=yes
2839 if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2840 ac_cv_have_visibility_class_bug=yes
2843 rm -rf conftest.{c,S}
2846 AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2847 ac_cv_have_visibility_builtin_bug,
2848 [cat > conftest.c <<EOF
2849 #pragma GCC visibility push(hidden)
2850 #pragma GCC visibility push(default)
2852 #pragma GCC visibility pop
2854 __attribute__ ((visibility ("default"))) void Func() {
2856 memset(c, 0, sizeof(c));
2859 ac_cv_have_visibility_builtin_bug=no
2860 if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2861 ac_cv_have_visibility_builtin_bug=yes
2863 if test `grep -c "@PLT" conftest.S` = 0; then
2864 ac_cv_visibility_builtin_bug=yes
2867 rm -f conftest.{c,S}
2869 if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2870 "$ac_cv_have_visibility_class_bug" = "no"; then
2871 VISIBILITY_FLAGS='-I$(DIST)/include/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2872 WRAP_SYSTEM_INCLUDES=1
2874 VISIBILITY_FLAGS='-fvisibility=hidden'
2875 fi # have visibility pragma bug
2876 fi # have visibility pragma
2877 fi # have visibility(default) attribute
2878 fi # have visibility(hidden) attribute
2881 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2882 AC_SUBST(VISIBILITY_FLAGS)
2884 dnl Checks for header files.
2885 dnl ========================================================
2887 case "$target_os" in
2889 # for stuff like -lXshm
2890 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2893 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
2894 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
2895 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
2896 AC_CHECK_HEADERS(malloc.h)
2897 AC_CHECK_HEADERS(X11/XKBlib.h)
2899 dnl These are all the places some variant of statfs can be hiding.
2900 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2902 dnl Try for MMX support
2903 dnl NB - later gcc versions require -mmmx for this header to be successfully
2904 dnl included (or another option which implies it, such as -march=pentium-mmx)
2905 AC_CHECK_HEADERS(mmintrin.h)
2907 dnl Check whether the compiler supports the new-style C++ standard
2908 dnl library headers (i.e. <new>) or needs the old "new.h"
2911 AC_CHECK_HEADER(new, [NEW_H=new])
2912 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
2915 AC_ARG_ENABLE(dtrace,
2916 [ --enable-dtrace build with dtrace support if available (default=no)],
2917 [enable_dtrace="yes"],)
2918 if test "x$enable_dtrace" = "xyes"; then
2919 AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
2920 if test -n "$HAVE_DTRACE"; then
2921 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
2923 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
2926 AC_SUBST(HAVE_DTRACE)
2932 AC_CHECK_HEADERS(sys/cdefs.h)
2936 dnl Checks for libraries.
2937 dnl ========================================================
2942 AC_CHECK_LIB(c_r, gethostbyname_r)
2946 dnl We don't want to link with libdl even if it's present on OS X, since
2947 dnl it's not used and not part of the default installation.
2948 dnl The same goes for BeOS.
2949 dnl We don't want to link against libm or libpthread on Darwin since
2950 dnl they both are just symlinks to libSystem and explicitly linking
2951 dnl against libSystem causes issues when debugging (see bug 299601).
2958 AC_CHECK_LIB(m, atan)
2959 AC_CHECK_LIB(dl, dlopen,
2960 AC_CHECK_HEADER(dlfcn.h,
2962 AC_DEFINE(HAVE_LIBDL)))
2966 _SAVE_CFLAGS="$CFLAGS"
2967 CFLAGS="$CFLAGS -D_GNU_SOURCE"
2968 AC_CHECK_FUNCS(dladdr)
2969 CFLAGS="$_SAVE_CFLAGS"
2971 if test ! "$GNU_CXX"; then
2975 AC_CHECK_LIB(C_r, demangle)
2978 AC_CHECK_LIB(C, demangle)
2982 AC_CHECK_LIB(socket, socket)
2985 XLIBS="$X_EXTRA_LIBS"
2987 dnl ========================================================
2988 dnl Checks for X libraries.
2989 dnl Ordering is important.
2990 dnl Xt is dependent upon SM as of X11R6
2991 dnl ========================================================
2992 if test "$no_x" = "yes"; then
2995 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
2996 XLIBS="-lX11 $XLIBS"
2997 _SAVE_LDFLAGS="$LDFLAGS"
2998 LDFLAGS="$XLDFLAGS $LDFLAGS"
2999 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3000 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3001 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3002 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3005 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3006 unset ac_cv_lib_Xt_XtFree
3007 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3008 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3009 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3010 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3013 # AIX needs the motif library linked before libXt to prevent
3014 # crashes in plugins linked against Motif - Bug #98892
3015 case "${target_os}" in
3017 XT_LIBS="-lXm $XT_LIBS"
3021 dnl ========================================================
3022 dnl = Check for XShm
3023 dnl ========================================================
3024 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3026 AC_CHECK_HEADER(X11/extensions/XShm.h)
3027 if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3028 test -n "$_HAVE_XSHM_XEXT"; then
3029 AC_DEFINE(HAVE_XSHM)
3032 dnl ========================================================
3034 dnl ========================================================
3035 AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3037 AC_CHECK_HEADER(X11/extensions/XIElib.h)
3039 if test "$MOZ_XIE_LIBS"; then
3040 dnl ====================================================
3041 dnl = If XIE is present and is desired, turn it on
3042 dnl ====================================================
3052 LDFLAGS="$_SAVE_LDFLAGS"
3054 dnl ========================================================
3055 dnl = Check for freetype2 and its functionality
3056 dnl ========================================================
3057 AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3059 if test "$_HAVE_FREETYPE2"; then
3061 _SAVE_CFLAGS="$CFLAGS"
3062 LIBS="$LIBS $FT2_LIBS"
3063 CFLAGS="$CFLAGS $FT2_CFLAGS"
3065 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3066 ac_cv_member_FT_Bitmap_Size_y_ppem,
3067 [AC_TRY_COMPILE([#include <ft2build.h>
3068 #include FT_FREETYPE_H],
3070 if (sizeof s.y_ppem) return 0;
3072 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3073 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3074 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3075 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3077 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3079 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3080 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3081 [FT_Bitmap_Size structure includes y_ppem field])
3083 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3086 CFLAGS="$_SAVE_CFLAGS"
3096 dnl ========================================================
3097 dnl = pthread support
3098 dnl = Start by checking whether the system support pthreads
3099 dnl ========================================================
3100 case "$target_os" in
3105 MOZ_CHECK_PTHREADS(pthreads,
3106 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3107 MOZ_CHECK_PTHREADS(pthread,
3108 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3109 MOZ_CHECK_PTHREADS(c_r,
3110 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3111 MOZ_CHECK_PTHREADS(c,
3120 dnl ========================================================
3121 dnl Check the command line for --with-pthreads
3122 dnl ========================================================
3123 MOZ_ARG_WITH_BOOL(pthreads,
3124 [ --with-pthreads Force use of system pthread library with NSPR ],
3125 [ if test "$USE_PTHREADS"x = x; then
3126 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3132 dnl ========================================================
3133 dnl Do the platform specific pthread hackery
3134 dnl ========================================================
3135 if test "$USE_PTHREADS"x != x
3138 dnl See if -pthread is supported.
3141 ac_cv_have_dash_pthread=no
3142 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3143 echo 'int main() { return 0; }' | cat > conftest.c
3144 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3145 if test $? -eq 0; then
3146 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3147 ac_cv_have_dash_pthread=yes
3148 case "$target_os" in
3150 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3153 CFLAGS="$CFLAGS -pthread"
3154 CXXFLAGS="$CXXFLAGS -pthread"
3160 AC_MSG_RESULT($ac_cv_have_dash_pthread)
3163 dnl See if -pthreads is supported.
3165 ac_cv_have_dash_pthreads=no
3166 if test "$ac_cv_have_dash_pthread" = "no"; then
3167 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3168 echo 'int main() { return 0; }' | cat > conftest.c
3169 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3170 if test $? -eq 0; then
3171 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3172 ac_cv_have_dash_pthreads=yes
3173 CFLAGS="$CFLAGS -pthreads"
3174 CXXFLAGS="$CXXFLAGS -pthreads"
3178 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3183 AC_DEFINE(_REENTRANT)
3184 AC_DEFINE(_THREAD_SAFE)
3185 dnl -pthread links in -lc_r, so don't specify it explicitly.
3186 if test "$ac_cv_have_dash_pthread" = "yes"; then
3187 _PTHREAD_LDFLAGS="-pthread"
3189 _PTHREAD_LDFLAGS="-lc_r"
3193 *-*-openbsd*|*-*-bsdi*)
3194 AC_DEFINE(_REENTRANT)
3195 AC_DEFINE(_THREAD_SAFE)
3196 dnl -pthread links in -lc_r, so don't specify it explicitly.
3197 if test "$ac_cv_have_dash_pthread" = "yes"; then
3198 _PTHREAD_LDFLAGS="-pthread"
3202 *-*-linux*|*-*-kfreebsd*-gnu)
3203 AC_DEFINE(_REENTRANT)
3207 AC_DEFINE(_REENTRANT)
3211 AC_DEFINE(_REENTRANT)
3215 AC_DEFINE(_REENTRANT)
3219 AC_DEFINE(_REENTRANT)
3223 AC_DEFINE(_REENTRANT)
3224 if test ! "$GNU_CC"; then
3225 CFLAGS="$CFLAGS -mt"
3226 CXXFLAGS="$CXXFLAGS -mt"
3230 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3233 dnl ========================================================
3234 dnl See if mmap sees writes
3235 dnl For cross compiling, just define it as no, which is a safe default
3236 dnl ========================================================
3237 AC_MSG_CHECKING(whether mmap() sees write()s)
3243 #include <sys/mman.h>
3244 #include <sys/types.h>
3245 #include <sys/stat.h>
3248 char fname[] = "conftest.file";
3249 char zbuff[1024]; /* Fractional page is probably worst case */
3256 fd = open(fname, O_RDWR | O_CREAT, 0660);
3259 write(fd, zbuff, sizeof(zbuff));
3260 lseek(fd, 0, SEEK_SET);
3261 map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3262 if(map==(char*)-1) return 2;
3263 for(i=0; fname[i]; i++) {
3264 int rc = write(fd, &fname[i], 1);
3265 if(map[i]!=fname[i]) return 4;
3272 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3274 AC_MSG_RESULT("$result")
3276 if test "$result" = "no"; then
3277 AC_DEFINE(MMAP_MISSES_WRITES)
3281 dnl Checks for library functions.
3282 dnl ========================================================
3283 AC_PROG_GCC_TRADITIONAL
3285 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64)
3286 AC_CHECK_FUNCS(flockfile getpagesize)
3288 dnl localtime_r and strtok_r are only present on MacOS version 10.2 and higher
3289 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100200"; then
3290 AC_CHECK_FUNCS(localtime_r strtok_r)
3293 dnl check for wcrtomb/mbrtowc
3294 dnl =======================================================================
3295 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3298 AC_CACHE_CHECK(for wcrtomb,
3300 [AC_TRY_LINK([#include <wchar.h>],
3301 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3302 ac_cv_have_wcrtomb="yes",
3303 ac_cv_have_wcrtomb="no")])
3304 if test "$ac_cv_have_wcrtomb" = "yes"; then
3305 AC_DEFINE(HAVE_WCRTOMB)
3307 AC_CACHE_CHECK(for mbrtowc,
3309 [AC_TRY_LINK([#include <wchar.h>],
3310 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3311 ac_cv_have_mbrtowc="yes",
3312 ac_cv_have_mbrtowc="no")])
3313 if test "$ac_cv_have_mbrtowc" = "yes"; then
3314 AC_DEFINE(HAVE_MBRTOWC)
3321 ac_cv_func_res_ninit,
3324 #define _BSD_SOURCE 1
3328 [int foo = res_ninit(&_res);],
3329 [ac_cv_func_res_ninit=yes],
3330 [ac_cv_func_res_ninit=no])
3333 if test "$ac_cv_func_res_ninit" = "yes"; then
3334 AC_DEFINE(HAVE_RES_NINIT)
3335 dnl must add the link line we do something as foolish as this... dougt
3337 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3338 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3343 [for gnu_get_libc_version()],
3344 ac_cv_func_gnu_get_libc_version,
3346 #ifdef HAVE_GNU_LIBC_VERSION_H
3347 #include <gnu/libc-version.h>
3350 [const char *glibc_version = gnu_get_libc_version();],
3351 [ac_cv_func_gnu_get_libc_version=yes],
3352 [ac_cv_func_gnu_get_libc_version=no]
3356 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3357 AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3361 os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|beos*)
3365 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3366 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3367 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3369 LIBS="$LIBS $_ICONV_LIBS"
3378 iconv_t h = iconv_open("", "");
3379 iconv(h, NULL, NULL, NULL, NULL);
3382 [ac_cv_func_iconv=yes],
3383 [ac_cv_func_iconv=no]
3386 if test "$ac_cv_func_iconv" = "yes"; then
3387 AC_DEFINE(HAVE_ICONV)
3388 DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3389 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3390 LIBICONV="$_ICONV_LIBS"
3392 [for iconv() with const input],
3393 ac_cv_func_const_iconv,
3399 const char *input = "testing";
3400 iconv_t h = iconv_open("", "");
3401 iconv(h, &input, NULL, NULL, NULL);
3404 [ac_cv_func_const_iconv=yes],
3405 [ac_cv_func_const_iconv=no]
3408 if test "$ac_cv_func_const_iconv" = "yes"; then
3409 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3421 dnl **********************
3422 dnl *** va_copy checks ***
3423 dnl **********************
3424 dnl we currently check for all three va_copy possibilities, so we get
3425 dnl all results in config.log for bug reports.
3426 AC_MSG_CHECKING(for an implementation of va_copy())
3427 AC_CACHE_VAL(ac_cv_va_copy,[
3430 void f (int i, ...) {
3431 va_list args1, args2;
3432 va_start (args1, i);
3433 va_copy (args2, args1);
3434 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3436 va_end (args1); va_end (args2);
3438 int main() { f (0, 42); return 0; }],
3444 AC_MSG_RESULT($ac_cv_va_copy)
3445 AC_MSG_CHECKING(for an implementation of __va_copy())
3446 AC_CACHE_VAL(ac_cv___va_copy,[
3449 void f (int i, ...) {
3450 va_list args1, args2;
3451 va_start (args1, i);
3452 __va_copy (args2, args1);
3453 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3455 va_end (args1); va_end (args2);
3457 int main() { f (0, 42); return 0; }],
3458 ac_cv___va_copy=yes,
3463 AC_MSG_RESULT($ac_cv___va_copy)
3464 AC_MSG_CHECKING(whether va_lists can be copied by value)
3465 AC_CACHE_VAL(ac_cv_va_val_copy,[
3468 void f (int i, ...) {
3469 va_list args1, args2;
3470 va_start (args1, i);
3472 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3474 va_end (args1); va_end (args2);
3476 int main() { f (0, 42); return 0; }],
3477 ac_cv_va_val_copy=yes,
3478 ac_cv_va_val_copy=no,
3479 ac_cv_va_val_copy=yes
3482 if test "x$ac_cv_va_copy" = "xyes"; then
3483 AC_DEFINE(VA_COPY, va_copy)
3484 AC_DEFINE(HAVE_VA_COPY)
3485 elif test "x$ac_cv___va_copy" = "xyes"; then
3486 AC_DEFINE(VA_COPY, __va_copy)
3487 AC_DEFINE(HAVE_VA_COPY)
3490 if test "x$ac_cv_va_val_copy" = "xno"; then
3491 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3493 AC_MSG_RESULT($ac_cv_va_val_copy)
3495 dnl Check for dll-challenged libc's.
3496 dnl This check is apparently only needed for Linux.
3499 dnl ===================================================================
3502 rm -rf conftest* _conftest
3504 cat >> conftest.C <<\EOF
3509 void __dump_link_map(void) {
3510 struct link_map *map = _dl_loaded;
3511 while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
3514 dlopen("./conftest1.so",RTLD_LAZY);
3515 dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
3516 dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
3517 dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
3521 /* _dl_loaded isn't defined, so this should be either a libc5 (glibc1) system, or a glibc2 system that doesn't have the multiple load bug (i.e., RH6.0).*/
3522 int main() { printf("./conftest1.so\n"); }
3526 $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
3528 cat >> conftest1.C <<\EOF
3530 void foo(void) {printf("foo in dll called\n");}
3532 ${CXX-g++} -fPIC -c -g conftest1.C
3533 ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
3534 ${CXX-g++} -g conftest.C -o conftest -ldl
3535 cp -f conftest1.so conftest _conftest
3537 if test `./conftest | grep conftest1.so | wc -l` -gt 1
3540 echo "*** Your libc has a bug that can result in loading the same dynamic"
3541 echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
3542 echo "*** or later. However, if you choose not to upgrade, the only effect"
3543 echo "*** will be excessive memory usage at runtime."
3547 rm -rf conftest* _conftest
3548 dnl ===================================================================
3552 dnl ===================================================================
3553 dnl ========================================================
3554 dnl By default, turn rtti and exceptions off on g++/egcs
3555 dnl ========================================================
3556 if test "$GNU_CXX"; then
3558 AC_MSG_CHECKING(for C++ exceptions flag)
3560 dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
3561 AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
3562 [echo "int main() { return 0; }" | cat > conftest.C
3564 ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
3566 if egrep "warning.*renamed" conftest.out >/dev/null; then
3567 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
3569 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
3574 AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
3575 _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
3576 _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
3579 dnl ========================================================
3580 dnl Put your C++ language/feature checks below
3581 dnl ========================================================
3585 if test "$GNU_CC"; then
3586 AC_CACHE_CHECK(for gcc 3.0 ABI,
3587 ac_cv_gcc_three_abi,
3590 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
3596 ac_cv_gcc_three_abi="yes",
3597 ac_cv_gcc_three_abi="no")])
3598 if test "$ac_cv_gcc_three_abi" = "yes"; then
3599 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc3}"
3602 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc2}"
3605 AC_SUBST(HAVE_GCC3_ABI)
3608 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
3610 [AC_TRY_COMPILE(class X {
3611 public: explicit X(int i) : i_(i) {}
3615 ac_cv_cpp_explicit=yes,
3616 ac_cv_cpp_explicit=no)])
3617 if test "$ac_cv_cpp_explicit" = yes ; then
3618 AC_DEFINE(HAVE_CPP_EXPLICIT)
3621 AC_CACHE_CHECK(for C++ \"typename\" keyword,
3623 [AC_TRY_COMPILE(class param {
3625 typedef unsigned long num_type;
3628 template <class T> class tplt {
3630 typedef typename T::num_type t_num_type;
3631 t_num_type foo(typename T::num_type num) {
3637 ac_cv_cpp_typename=yes,
3638 ac_cv_cpp_typename=no)])
3639 if test "$ac_cv_cpp_typename" = yes ; then
3640 AC_DEFINE(HAVE_CPP_TYPENAME)
3643 dnl Check for support of modern template specialization syntax
3644 dnl Test code and requirement from scc@netscape.com.
3645 dnl Autoconf cut-and-paste job by waterson@netscape.com
3646 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3647 ac_cv_cpp_modern_specialize_template_syntax,
3648 [AC_TRY_COMPILE(template <class T> struct X { int a; };
3650 template <> struct X<Y> { double a; };,
3653 ac_cv_cpp_modern_specialize_template_syntax=yes,
3654 ac_cv_cpp_modern_specialize_template_syntax=no)])
3655 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
3656 AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
3660 dnl Some compilers support only full specialization, and some don't.
3661 AC_CACHE_CHECK(whether partial template specialization works,
3662 ac_cv_cpp_partial_specialization,
3663 [AC_TRY_COMPILE(template <class T> class Foo {};
3664 template <class T> class Foo<T*> {};,
3666 ac_cv_cpp_partial_specialization=yes,
3667 ac_cv_cpp_partial_specialization=no)])
3668 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3669 AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3672 dnl Some compilers have limited support for operators with templates;
3673 dnl specifically, it is necessary to define derived operators when a base
3674 dnl class's operator declaration should suffice.
3675 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
3676 ac_cv_need_derived_template_operators,
3677 [AC_TRY_COMPILE([template <class T> class Base { };
3679 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
3680 template <class T> class Derived : public Base<T> { };],
3681 [Derived<char> a, b;
3682 Base<char> c = a + b;
3684 ac_cv_need_derived_template_operators=no,
3685 ac_cv_need_derived_template_operators=yes)])
3686 if test "$ac_cv_need_derived_template_operators" = yes ; then
3687 AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
3691 dnl Some compilers have trouble detecting that a template class
3692 dnl that derives from another template is actually an instance
3693 dnl of the base class. This test checks for that.
3694 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
3695 ac_cv_need_cpp_template_cast_to_base,
3696 [AC_TRY_COMPILE([template <class T> class Base { };
3697 template <class T> class Derived : public Base<T> { };
3698 template <class T> int foo(const Base<T>&) { return 0; }],
3699 [Derived<char> bar; return foo(bar);],
3700 ac_cv_need_cpp_template_cast_to_base=no,
3701 ac_cv_need_cpp_template_cast_to_base=yes)])
3702 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
3703 AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
3706 dnl Some compilers have trouble resolving the ambiguity between two
3707 dnl functions whose arguments differ only by cv-qualifications.
3708 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
3709 ac_cv_can_resolve_const_ambiguity,
3711 template <class T> class ptrClass {
3715 template <class T> T* a(ptrClass<T> *arg) {
3720 const T* a(const ptrClass<T> *arg) {
3726 ac_cv_can_resolve_const_ambiguity=yes,
3727 ac_cv_can_resolve_const_ambiguity=no)])
3728 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
3729 AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
3733 dnl We don't do exceptions on unix. The only reason this used to be here
3734 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses
3735 dnl exceptions. But, we turn exceptions off by default and this test breaks.
3736 dnl So im commenting this out until someone writes some artificial
3737 dnl intelligence to detect not only if the compiler has exceptions, but if
3738 dnl they are enabled as well.
3740 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
3741 dnl ac_cv_cpp_exceptions,
3742 dnl [AC_TRY_COMPILE(class X { public: X() {} };
3743 dnl static void F() { throw X(); },
3744 dnl try { F(); } catch(X & e) { },
3745 dnl ac_cv_cpp_exceptions=yes,
3746 dnl ac_cv_cpp_exceptions=no)])
3747 dnl if test $ac_cv_cpp_exceptions = yes ; then
3748 dnl AC_DEFINE(HAVE_CPP_EXCEPTIONS)
3751 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
3752 dnl supports it well enough to allow us to use it to change access, but not
3753 dnl to resolve ambiguity. The next two tests determine how well the |using|
3754 dnl keyword is supported.
3756 dnl Check to see if we can change access with |using|. Test both a
3757 dnl legal and an illegal example.
3758 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
3759 ac_cv_cpp_access_changing_using2,
3761 class A { protected: int foo() { return 0; } };
3762 class B : public A { public: using A::foo; };,
3763 B b; return b.foo();,
3765 class A { public: int foo() { return 1; } };
3766 class B : public A { private: using A::foo; };,
3767 B b; return b.foo();,
3768 ac_cv_cpp_access_changing_using2=no,
3769 ac_cv_cpp_access_changing_using2=yes)],
3770 ac_cv_cpp_access_changing_using2=no)])
3771 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
3772 AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
3775 dnl Check to see if we can resolve ambiguity with |using|.
3776 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3777 ac_cv_cpp_ambiguity_resolving_using,
3778 [AC_TRY_COMPILE(class X {
3779 public: int go(const X&) {return 3;}
3780 int jo(const X&) {return 3;}
3782 class Y : public X {
3783 public: int go(int) {return 2;}
3784 int jo(int) {return 2;}
3786 private: using X::go;
3789 ac_cv_cpp_ambiguity_resolving_using=yes,
3790 ac_cv_cpp_ambiguity_resolving_using=no)])
3791 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3792 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3795 dnl Check to see if the |std| namespace is supported. If so, we'll want
3796 dnl to qualify any standard library calls with "std::" to ensure that
3797 dnl those functions can be resolved.
3798 AC_CACHE_CHECK(for \"std::\" namespace,
3799 ac_cv_cpp_namespace_std,
3800 [AC_TRY_COMPILE([#include <algorithm>],
3801 [return std::min(0, 1);],
3802 ac_cv_cpp_namespace_std=yes,
3803 ac_cv_cpp_namespace_std=no)])
3804 if test "$ac_cv_cpp_namespace_std" = yes ; then
3805 AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
3808 dnl Older compilers are overly ambitious with respect to using the standard
3809 dnl template library's |operator!=()| when |operator==()| is defined. In
3810 dnl which case, defining |operator!=()| in addition to |operator==()| causes
3811 dnl ambiguity at compile-time. This test checks for that case.
3812 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
3813 ac_cv_cpp_unambiguous_std_notequal,
3814 [AC_TRY_COMPILE([#include <algorithm>
3816 int operator==(const T1&, const T1&) { return 0; }
3817 int operator!=(const T1&, const T1&) { return 0; }],
3818 [T1 a,b; return a != b;],
3819 ac_cv_cpp_unambiguous_std_notequal=unambiguous,
3820 ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
3821 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
3822 AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
3826 AC_CACHE_CHECK(for C++ reinterpret_cast,
3827 ac_cv_cpp_reinterpret_cast,
3828 [AC_TRY_COMPILE(struct X { int i; };
3829 struct Y { int i; };,
3830 X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
3831 ac_cv_cpp_reinterpret_cast=yes,
3832 ac_cv_cpp_reinterpret_cast=no)])
3833 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
3834 AC_DEFINE(HAVE_CPP_NEW_CASTS)
3837 dnl See if a dynamic_cast to void* gives the most derived object.
3838 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3839 ac_cv_cpp_dynamic_cast_void_ptr,
3840 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3841 class Y { int j; public: virtual ~Y() { } };
3842 class Z : public X, public Y { int k; };
3848 return !((((void*)&mdo != (void*)subx) &&
3849 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3850 (((void*)&mdo != (void*)suby) &&
3851 ((void*)&mdo == dynamic_cast<void*>(suby))));
3853 ac_cv_cpp_dynamic_cast_void_ptr=yes,
3854 ac_cv_cpp_dynamic_cast_void_ptr=no,
3855 ac_cv_cpp_dynamic_cast_void_ptr=no)])
3856 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3857 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3861 dnl note that this one is reversed - if the test fails, then
3862 dnl we require implementations of unused virtual methods. Which
3863 dnl really blows because it means we'll have useless vtable
3865 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3866 ac_cv_cpp_unused_required,
3867 [AC_TRY_LINK(class X {private: virtual void never_called();};,
3869 ac_cv_cpp_unused_required=no,
3870 ac_cv_cpp_unused_required=yes)])
3871 if test "$ac_cv_cpp_unused_required" = yes ; then
3872 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3876 dnl Some compilers have trouble comparing a constant reference to a templatized
3877 dnl class to zero, and require an explicit operator==() to be defined that takes
3878 dnl an int. This test separates the strong from the weak.
3880 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3881 ac_cv_trouble_comparing_to_zero,
3882 [AC_TRY_COMPILE([#include <algorithm>
3883 template <class T> class Foo {};
3885 template <class T> int operator==(const T2*, const T&) { return 0; }
3886 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3887 [Foo<int> f; return (0 != f);],
3888 ac_cv_trouble_comparing_to_zero=no,
3889 ac_cv_trouble_comparing_to_zero=yes)])
3890 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3891 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3896 dnl End of C++ language/feature checks
3899 dnl ========================================================
3900 dnl = Internationalization checks
3901 dnl ========================================================
3903 dnl Internationalization and Locale support is different
3904 dnl on various UNIX platforms. Checks for specific i18n
3905 dnl features go here.
3907 dnl check for LC_MESSAGES
3908 AC_CACHE_CHECK(for LC_MESSAGES,
3909 ac_cv_i18n_lc_messages,
3910 [AC_TRY_COMPILE([#include <locale.h>],
3911 [int category = LC_MESSAGES;],
3912 ac_cv_i18n_lc_messages=yes,
3913 ac_cv_i18n_lc_messages=no)])
3914 if test "$ac_cv_i18n_lc_messages" = yes; then
3915 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3918 fi # SKIP_COMPILER_CHECKS
3921 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3922 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3925 dnl Mozilla specific options
3926 dnl ========================================================
3927 dnl The macros used for command line options
3928 dnl are defined in build/autoconf/altoptions.m4.
3931 dnl ========================================================
3933 dnl = Check for external package dependencies
3935 dnl ========================================================
3936 MOZ_ARG_HEADER(External Packages)
3940 MOZ_ARG_WITH_STRING(libxul-sdk,
3941 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
3942 LIBXUL_SDK_DIR=$withval)
3944 if test "$LIBXUL_SDK_DIR" = "yes"; then
3945 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
3946 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
3947 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
3949 if test ! -f "$LIBXUL_SDK/sdk/include/xpcom-config.h"; then
3950 AC_MSG_ERROR([$LIBXUL_SDK/sdk/include/xpcom-config.h doesn't exist])
3955 AC_SUBST(LIBXUL_SDK)
3957 dnl ========================================================
3958 dnl = If NSPR was not detected in the system,
3959 dnl = use the one in the source tree (mozilla/nsprpub)
3960 dnl ========================================================
3961 MOZ_ARG_WITH_BOOL(system-nspr,
3962 [ --with-system-nspr Use system installed NSPR],
3963 _USE_SYSTEM_NSPR=1 )
3965 if test -n "$_USE_SYSTEM_NSPR"; then
3966 AM_PATH_NSPR(4.7.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
3969 if test -n "$MOZ_NATIVE_NSPR"; then
3970 _SAVE_CFLAGS=$CFLAGS
3971 CFLAGS="$CFLAGS $NSPR_CFLAGS"
3972 AC_TRY_COMPILE([#include "prlog.h"],
3973 [#ifndef PR_STATIC_ASSERT
3974 #error PR_STATIC_ASSERT not defined
3976 [MOZ_NATIVE_NSPR=1],
3977 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
3978 CFLAGS=$_SAVE_CFLAGS
3980 NSPR_CFLAGS='`$(DEPTH)/nsprpub/config/nspr-config --prefix=$(LIBXUL_DIST) --includedir=$(LIBXUL_DIST)/include/nspr --cflags`'
3981 # explicitly set libs for Visual Age C++ for OS/2
3982 if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
3983 NSPR_LIBS='$(LIBXUL_DIST)/lib/nspr'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plc'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plds'$NSPR_VERSION'.lib '$_PTHREAD_LDFLAGS''
3984 elif test "$OS_ARCH" = "WINCE"; then
3985 NSPR_CFLAGS='-I$(LIBXUL_DIST)/include/nspr'
3986 NSPR_LIBS='$(LIBXUL_DIST)/lib/nspr'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plc'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plds'$NSPR_VERSION'.lib '
3987 elif test "$OS_ARCH" = "WINNT"; then
3988 NSPR_CFLAGS='-I$(LIBXUL_DIST)/include/nspr'
3989 if test -n "$GNU_CC"; then
3990 NSPR_LIBS="-L\$(LIBXUL_DIST)/lib -lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION"
3992 NSPR_LIBS='$(LIBXUL_DIST)/lib/nspr'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plc'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plds'$NSPR_VERSION'.lib '
3995 NSPR_LIBS='`$(DEPTH)/nsprpub/config/nspr-config --prefix=$(LIBXUL_DIST) --libdir=$(LIBXUL_DIST)/lib --libs`'
3999 dnl ========================================================
4000 dnl = If NSS was not detected in the system,
4001 dnl = use the one in the source tree (mozilla/security/nss)
4002 dnl ========================================================
4004 MOZ_ARG_WITH_BOOL(system-nss,
4005 [ --with-system-nss Use system installed NSS],
4008 if test -n "$_USE_SYSTEM_NSS"; then
4009 AM_PATH_NSS(3.12.0, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4012 if test -n "$MOZ_NATIVE_NSS"; then
4013 NSS_LIBS="$NSS_LIBS -lcrmf"
4015 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4017 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4018 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4019 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4020 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4021 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX) \
4022 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)softokn$NSS_VERSION\$(DLL_SUFFIX)"
4024 if test -z "$GNU_CC" && test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4026 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4027 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4028 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4029 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4030 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4031 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)softokn$NSS_VERSION.\$(IMPORT_LIB_SUFFIX)"
4033 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION -lsoftokn$NSS_VERSION"
4037 if test -z "$SKIP_LIBRARY_CHECKS"; then
4038 dnl system JPEG support
4039 dnl ========================================================
4040 MOZ_ARG_WITH_STRING(system-jpeg,
4041 [ --with-system-jpeg[=PFX]
4042 Use system libjpeg [installed at prefix PFX]],
4045 _SAVE_CFLAGS=$CFLAGS
4046 _SAVE_LDFLAGS=$LDFLAGS
4048 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4049 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4050 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4052 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4055 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4058 if test "$SYSTEM_JPEG" = 1; then
4059 LIBS="$JPEG_LIBS $LIBS"
4060 AC_TRY_COMPILE([ #include <stdio.h>
4061 #include <sys/types.h>
4062 #include <jpeglib.h> ],
4063 [ #if JPEG_LIB_VERSION < $MOZJPEG
4064 #error "Insufficient JPEG library version ($MOZJPEG required)."
4067 [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=])
4069 CFLAGS=$_SAVE_CFLAGS
4070 LDFLAGS=$_SAVE_LDFLAGS
4073 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4074 JPEG_CFLAGS="-I${JPEG_DIR}/include"
4075 JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4078 dnl system ZLIB support
4079 dnl ========================================================
4080 MOZ_ARG_WITH_STRING(system-zlib,
4081 [ --with-system-zlib[=PFX]
4082 Use system libz [installed at prefix PFX]],
4085 _SAVE_CFLAGS=$CFLAGS
4086 _SAVE_LDFLAGS=$LDFLAGS
4088 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4089 CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4090 LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4092 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4095 AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"],
4096 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4098 if test "$SYSTEM_ZLIB" = 1; then
4099 LIBS="$ZLIB_LIBS $LIBS"
4100 AC_TRY_COMPILE([ #include <stdio.h>
4102 #include <zlib.h> ],
4103 [ #if ZLIB_VERNUM < $MOZZLIB
4104 #error "Insufficient zlib version ($MOZZLIB required)."
4107 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=])
4109 CFLAGS=$_SAVE_CFLAGS
4110 LDFLAGS=$_SAVE_LDFLAGS
4113 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4114 ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4115 ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4118 dnl system BZIP2 Support
4119 dnl ========================================================
4120 MOZ_ARG_WITH_STRING(system-bz2,
4121 [ --with-system-bz2[=PFX]
4122 Use system libbz2 [installed at prefix PFX]],
4125 _SAVE_CFLAGS=$CFLAGS
4126 _SAVE_LDFLAGS=$LDFLAGS
4128 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4129 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4130 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4132 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4135 AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4136 [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=], $BZ2_LIBS)
4138 CFLAGS=$_SAVE_CFLAGS
4139 LDFLAGS=$_SAVE_LDFLAGS
4142 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4143 BZ2_CFLAGS="-I${BZ2_DIR}/include"
4144 BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4147 dnl system PNG Support
4148 dnl ========================================================
4149 MOZ_ARG_WITH_STRING(system-png,
4150 [ --with-system-png[=PFX]
4151 Use system libpng [installed at prefix PFX]],
4154 _SAVE_CFLAGS=$CFLAGS
4155 _SAVE_LDFLAGS=$LDFLAGS
4157 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4158 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4159 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4160 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4161 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4163 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4166 _SAVE_PNG_LIBS=$PNG_LIBS
4167 AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4168 AC_MSG_ERROR([--with-system-png requested but no working libpng found]),
4170 AC_CHECK_LIB(png, png_get_acTL, ,
4171 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4174 if test "$SYSTEM_PNG" = 1; then
4175 LIBS="$PNG_LIBS $LIBS"
4176 AC_TRY_COMPILE([ #include <stdio.h>
4177 #include <sys/types.h>
4179 [ #if PNG_LIBPNG_VER < $MOZPNG
4180 #error "Insufficient libpng version ($MOZPNG required)."
4182 #ifndef PNG_UINT_31_MAX
4183 #error "Insufficient libpng version."
4186 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4188 CFLAGS=$_SAVE_CFLAGS
4189 LDFLAGS=$_SAVE_LDFLAGS
4192 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4193 PNG_CFLAGS="-I${PNG_DIR}/include"
4194 PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4197 fi # SKIP_LIBRARY_CHECKS
4199 dnl system HunSpell Support
4200 dnl ========================================================
4201 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4202 [ --enable-system-hunspell Use system hunspell (located with pkgconfig)],
4205 if test -n "$SYSTEM_HUNSPELL"; then
4206 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4209 AC_SUBST(SYSTEM_HUNSPELL)
4211 dnl check whether to enable glitz
4212 dnl ========================================================
4213 MOZ_ARG_ENABLE_BOOL(glitz,
4214 [ --enable-glitz Enable Glitz for use with Cairo],
4217 if test "$MOZ_ENABLE_GLITZ"; then
4218 AC_DEFINE(MOZ_ENABLE_GLITZ)
4221 dnl ========================================================
4222 dnl Java SDK support
4223 dnl ========================================================
4225 MOZ_ARG_WITH_STRING(java-include-path,
4226 [ --with-java-include-path=dir Location of Java SDK headers],
4227 JAVA_INCLUDE_PATH=$withval)
4230 MOZ_ARG_WITH_STRING(java-bin-path,
4231 [ --with-java-bin-path=dir Location of Java binaries (java, javac, jar)],
4232 JAVA_BIN_PATH=$withval)
4234 dnl ========================================================
4238 dnl ========================================================
4240 MOZ_ARG_HEADER(Application)
4244 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4245 MOZ_BRANDING_DIRECTORY=
4247 MOZ_DBGRINFO_MODULES=
4249 MOZ_EXTENSIONS_ALL=" wallet xml-rpc venkman inspector irc typeaheadfind gnomevfs sroaming datetime finger cview layout-debug tasks sql xforms schema-validation reporter"
4251 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg bmp xbm icon"
4252 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4265 MOZ_AUTH_EXTENSION=1
4266 MOZ_NO_ACTIVEX_SUPPORT=1
4267 MOZ_NO_INSPECTOR_APIS=
4268 MOZ_NO_XPCOM_OBSOLETE=
4273 MOZ_PLAINTEXT_EDITOR_ONLY=
4275 MOZ_PREF_EXTENSIONS=1
4276 MOZ_PROFILELOCKING=1
4277 MOZ_PROFILESHARING=1
4279 MOZ_PYTHON_EXTENSIONS="xpcom dom"
4281 MOZ_PYTHON_DEBUG_SUFFIX=
4282 MOZ_PYTHON_DLL_SUFFIX=
4283 MOZ_PYTHON_INCLUDES=
4287 MOZ_PYTHON_VER_DOTTED=
4293 MOZ_STATIC_MAIL_BUILD=
4298 MOZ_UNIVERSALCHARDET=1
4300 MOZ_USE_NATIVE_UCONV=
4305 MOZ_XPFE_COMPONENTS=1
4307 MOZ_XSLT_STANDALONE=
4315 NECKO_PROTOCOLS_DEFAULT="about data file ftp gopher http res viewsource"
4316 NECKO_SMALL_BUFFERS=
4319 XPC_IDISPATCH_SUPPORT=
4322 case "$target_os" in
4331 case "$target_os" in
4332 msvc*|mks*|cygwin*|mingw*)
4333 if test -z "$GNU_CC"; then
4334 XPC_IDISPATCH_SUPPORT=1
4335 MOZ_NO_ACTIVEX_SUPPORT=
4336 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1
4341 MOZ_ARG_ENABLE_STRING(application,
4342 [ --enable-application=APP
4352 content/xslt (Standalone Transformiix XSLT)
4353 netwerk (Standalone Necko)
4354 tools/update-packaging (AUS-related packaging tools)
4355 standalone (use this for standalone
4356 xpcom/xpconnect or to manually drive a build)],
4357 [ MOZ_BUILD_APP=$enableval ] )
4359 if test "$MOZ_BUILD_APP" = "macbrowser"; then
4360 AC_MSG_WARN([--enable-application=macbrowser is deprecated. Use --enable-application=camino.])
4361 MOZ_BUILD_APP=camino
4364 case "$MOZ_BUILD_APP" in
4366 MOZ_EMBEDDING_PROFILE=basic
4370 MOZ_EMBEDDING_PROFILE=default
4374 MOZ_ARG_WITH_STRING(embedding-profile,
4375 [ --with-embedding-profile=default|basic|minimal
4376 see http://wiki.mozilla.org/Gecko:Small_Device_Support],
4377 [ MOZ_EMBEDDING_PROFILE=$withval ])
4379 case "$MOZ_EMBEDDING_PROFILE" in
4381 MOZ_EMBEDDING_LEVEL_DEFAULT=1
4382 MOZ_EMBEDDING_LEVEL_BASIC=1
4383 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4384 AC_DEFINE(MOZ_EMBEDDING_LEVEL_DEFAULT)
4385 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4386 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4390 MOZ_EMBEDDING_LEVEL_DEFAULT=
4391 MOZ_EMBEDDING_LEVEL_BASIC=1
4392 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4393 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4394 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4396 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4399 MOZ_ENABLE_POSTSCRIPT=
4400 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4401 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4402 MOZ_IMG_ENCODERS_DEFAULT=
4410 MOZ_NO_ACTIVEX_SUPPORT=1
4411 MOZ_NO_INSPECTOR_APIS=1
4412 MOZ_NO_XPCOM_OBSOLETE=1
4415 MOZ_PLAINTEXT_EDITOR_ONLY=1
4417 MOZ_PREF_EXTENSIONS=
4422 MOZ_UNIVERSALCHARDET=
4424 MOZ_USE_NATIVE_UCONV=
4426 MOZ_XPFE_COMPONENTS=
4431 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4432 NECKO_SMALL_BUFFERS=1
4433 NS_DISABLE_LOGGING=1
4439 MOZ_EMBEDDING_LEVEL_DEFAULT=
4440 MOZ_EMBEDDING_LEVEL_BASIC=
4441 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4442 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4444 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4447 MOZ_ENABLE_POSTSCRIPT=
4448 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4449 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4450 MOZ_IMG_ENCODERS_DEFAULT=
4458 MOZ_NO_ACTIVEX_SUPPORT=1
4459 MOZ_NO_INSPECTOR_APIS=1
4460 MOZ_NO_XPCOM_OBSOLETE=1
4463 MOZ_PLAINTEXT_EDITOR_ONLY=1
4465 MOZ_PREF_EXTENSIONS=
4472 MOZ_UNIVERSALCHARDET=
4474 MOZ_USE_NATIVE_UCONV=1
4476 MOZ_XPFE_COMPONENTS=
4483 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4484 NECKO_SMALL_BUFFERS=1
4485 NS_DISABLE_LOGGING=1
4491 AC_MSG_ERROR([Unrecognized value: --with-embedding-profile=$MOZ_EMBEDDING_PROFILE])
4495 AC_SUBST(MOZ_EMBEDDING_LEVEL_DEFAULT)
4496 AC_SUBST(MOZ_EMBEDDING_LEVEL_BASIC)
4497 AC_SUBST(MOZ_EMBEDDING_LEVEL_MINIMAL)
4499 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4500 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
4501 XULRUNNER_STUB_NAME=$withval)
4503 if test -z "$XULRUNNER_STUB_NAME"; then
4504 case "$target_os" in
4506 XULRUNNER_STUB_NAME=xulrunner
4509 XULRUNNER_STUB_NAME=xulrunner-stub
4512 AC_SUBST(XULRUNNER_STUB_NAME)
4514 if test -z "$MOZ_BUILD_APP"; then
4515 AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
4517 # We have a valid application only if it has a build.mk file in its top
4519 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4520 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4524 # Allow the application to influence configure with a confvars.sh script.
4526 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4527 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4528 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4529 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4534 # Now is a good time to test for logic errors, define mismatches, etc.
4535 case "$MOZ_BUILD_APP" in
4537 if test "$LIBXUL_SDK"; then
4538 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4542 # Fix this case for folks who forget. Warn them.
4543 if test -n "$LIBXUL_SDK" -a -z "$MOZ_XUL_APP"; then
4544 AC_MSG_WARN([Setting MOZ_XUL_APP since LIBXUL_SDK was set. Add to confvars.sh!])
4550 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4551 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4553 case "$MOZ_BUILD_APP" in
4555 AC_DEFINE(MOZ_SUITE)
4559 AC_DEFINE(MOZ_PHOENIX)
4567 AC_DEFINE(MOZ_THUNDERBIRD)
4571 AC_DEFINE(MOZ_STANDALONE_COMPOSER)
4575 AC_DEFINE(MOZ_SUNBIRD)
4579 AC_DEFINE(MOZ_XULRUNNER)
4583 AC_DEFINE(MOZ_MACBROWSER)
4591 MOZ_APP_NAME=mozilla
4592 MOZ_APP_DISPLAYNAME=Mozilla
4593 MOZ_APP_VERSION=$MOZILLA_VERSION
4598 AC_SUBST(MOZ_BUILD_APP)
4599 AC_SUBST(MOZ_XUL_APP)
4601 AC_SUBST(MOZ_PHOENIX)
4602 AC_SUBST(MOZ_THUNDERBIRD)
4603 AC_SUBST(MOZ_STANDALONE_COMPOSER)
4604 AC_SUBST(MOZ_SUNBIRD)
4605 AC_SUBST(MOZ_XULRUNNER)
4607 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4609 if test "$MOZ_XUL_APP"; then
4611 AC_DEFINE(MOZ_XUL_APP)
4614 dnl ========================================================
4616 dnl = Toolkit Options
4618 dnl ========================================================
4619 MOZ_ARG_HEADER(Toolkit Options)
4621 dnl ========================================================
4622 dnl = Select the default toolkit
4623 dnl ========================================================
4624 MOZ_ARG_ENABLE_STRING(default-toolkit,
4625 [ --enable-default-toolkit=TK
4626 Select default toolkit
4627 Platform specific defaults:
4629 Mac OS X - cairo-cocoa
4630 Neutrino/QNX - photon
4632 Win32 - cairo-windows
4635 [ _DEFAULT_TOOLKIT=$enableval ],
4636 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4638 if test "$_DEFAULT_TOOLKIT" = "photon" \
4639 -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4640 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4641 -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
4642 -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4643 -o "$_DEFAULT_TOOLKIT" = "cairo-mac" \
4644 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa"
4646 dnl nglayout only supports building with one toolkit,
4647 dnl so ignore everything after the first comma (",").
4648 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4650 if test "$no_x" != "yes"; then
4651 AC_MSG_ERROR([Toolkit must be cairo-gtk2.])
4653 AC_MSG_ERROR([Toolkit must be $_PLATFORM_DEFAULT_TOOLKIT (if supported).])
4657 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_TOOLKIT,"$MOZ_WIDGET_TOOLKIT")
4659 dnl ========================================================
4660 dnl = Enable the toolkit as needed =
4661 dnl ========================================================
4663 case "$MOZ_WIDGET_TOOLKIT" in
4666 AC_DEFINE(MOZ_WIDGET_PHOTON)
4670 MOZ_WIDGET_TOOLKIT=windows
4671 MOZ_GFX_TOOLKIT=cairo
4675 MOZ_WIDGET_TOOLKIT=gtk2
4676 MOZ_GFX_TOOLKIT=cairo
4678 MOZ_ENABLE_XREMOTE=1
4679 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4680 TK_LIBS='$(MOZ_GTK2_LIBS)'
4681 AC_DEFINE(MOZ_WIDGET_GTK2)
4684 MOZ_WIDGET_TOOLKIT=beos
4685 MOZ_GFX_TOOLKIT=cairo
4686 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4687 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4691 MOZ_WIDGET_TOOLKIT=os2
4692 MOZ_GFX_TOOLKIT=cairo
4693 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4694 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4697 cairo-mac|cairo-cocoa)
4698 if test "$MOZ_WIDGET_TOOLKIT" = "cairo-cocoa"; then
4699 MOZ_WIDGET_TOOLKIT=cocoa
4700 AC_DEFINE(MOZ_WIDGET_COCOA)
4703 MOZ_WIDGET_TOOLKIT=mac
4705 MOZ_GFX_TOOLKIT=cairo
4706 MOZ_USER_DIR="Mozilla"
4707 AC_DEFINE(XP_MACOSX)
4708 AC_DEFINE(TARGET_CARBON)
4709 AC_DEFINE(TARGET_API_MAC_CARBON)
4710 TK_LIBS='-framework Carbon'
4711 TK_CFLAGS="-I${MACOS_SDK_DIR}/Developer/Headers/FlatCarbon"
4712 CFLAGS="$CFLAGS $TK_CFLAGS"
4713 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4717 if test "$MOZ_ENABLE_XREMOTE"; then
4718 AC_DEFINE(MOZ_ENABLE_XREMOTE)
4721 if test "$COMPILE_ENVIRONMENT"; then
4722 if test "$MOZ_ENABLE_GTK2"
4724 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 gdk-x11-2.0 glib-2.0 gobject-2.0)
4726 fi # COMPILE_ENVIRONMENT
4728 AC_SUBST(MOZ_DEFAULT_TOOLKIT)
4730 dnl ========================================================
4731 dnl = startup-notification support module
4732 dnl ========================================================
4734 if test "$MOZ_ENABLE_GTK2"
4736 MOZ_ENABLE_STARTUP_NOTIFICATION=
4738 MOZ_ARG_ENABLE_BOOL(startup-notification,
4739 [ --enable-startup-notification Enable startup-notification support (default: disabled) ],
4740 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4741 MOZ_ENABLE_STARTUP_NOTIFICATION=)
4742 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4744 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4745 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4746 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4747 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4749 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4751 MOZ_ENABLE_STARTUP_NOTIFICATION=
4755 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4756 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4759 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4761 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4762 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4763 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4765 AC_SUBST(GTK_CONFIG)
4769 AC_SUBST(MOZ_ENABLE_GTK2)
4770 AC_SUBST(MOZ_ENABLE_PHOTON)
4771 AC_SUBST(MOZ_ENABLE_COCOA)
4772 AC_SUBST(MOZ_ENABLE_GLITZ)
4773 AC_SUBST(MOZ_ENABLE_XREMOTE)
4774 AC_SUBST(MOZ_GTK2_CFLAGS)
4775 AC_SUBST(MOZ_GTK2_LIBS)
4779 if test "$MOZ_ENABLE_GTK2"
4786 dnl ========================================================
4788 dnl = Components & Features
4790 dnl ========================================================
4791 MOZ_ARG_HEADER(Components and Features)
4793 dnl ========================================================
4795 dnl ========================================================
4796 MOZ_ARG_ENABLE_STRING(ui-locale,
4797 [ --enable-ui-locale=ab-CD
4798 Select the user interface locale (default: en-US)],
4799 MOZ_UI_LOCALE=$enableval )
4800 AC_SUBST(MOZ_UI_LOCALE)
4802 dnl =========================================================
4803 dnl = Calendar client
4804 dnl =========================================================
4805 MOZ_ARG_ENABLE_BOOL(calendar,,
4809 if test "$MOZ_OLD_CALENDAR"; then
4810 AC_MSG_WARN([Building with the calendar extension is no longer supported.])
4811 if test "$MOZ_THUNDERBIRD"; then
4812 AC_MSG_WARN([Since you're trying to build mail, you could try adding])
4813 AC_MSG_WARN(['--enable-extensions=default,lightning' to your mozconfig])
4814 AC_MSG_WARN([and building WITH A FRESH TREE.])
4816 AC_MSG_WARN([For more information, please visit:])
4817 AC_MSG_ERROR([http://www.mozilla.org/projects/calendar/])
4820 AC_SUBST(MOZ_CALENDAR)
4822 dnl =========================================================
4824 dnl =========================================================
4825 MOZ_ARG_DISABLE_BOOL(mailnews,
4826 [ --disable-mailnews Disable building of mail & news components],
4829 AC_SUBST(MOZ_MAIL_NEWS)
4831 dnl =========================================================
4833 dnl =========================================================
4834 MOZ_ARG_DISABLE_BOOL(ldap,
4835 [ --disable-ldap Disable LDAP support],
4839 dnl ========================================================
4840 dnl = Trademarked Branding
4841 dnl ========================================================
4842 MOZ_ARG_ENABLE_BOOL(official-branding,
4843 [ --enable-official-branding Enable Official mozilla.org Branding
4844 Do not distribute builds with
4845 --enable-official-branding unless you have
4846 permission to use trademarks per
4847 http://www.mozilla.org/foundation/trademarks/ .],
4848 [case "$MOZ_BUILD_APP" in
4850 MOZ_BRANDING_DIRECTORY=other-licenses/branding/firefox
4851 MOZ_APP_DISPLAYNAME=Firefox
4855 MOZ_BRANDING_DIRECTORY=other-licenses/branding/sunbird
4856 MOZ_APP_DISPLAYNAME=Sunbird
4860 MOZ_BRANDING_DIRECTORY=other-licenses/branding/thunderbird
4864 AC_MSG_ERROR([Official branding is only available for Firefox Sunbird and Thunderbird.])
4868 MOZ_ARG_WITH_STRING(branding,
4869 [ --with-branding=dir Use branding from the specified directory.],
4870 MOZ_BRANDING_DIRECTORY=$withval)
4872 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4873 if test -z "$REAL_BRANDING_DIRECTORY"; then
4874 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4877 if test -f "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4878 . "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"
4881 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4883 dnl ========================================================
4884 dnl = Distribution ID
4885 dnl ========================================================
4886 MOZ_ARG_WITH_STRING(distribution-id,
4887 [ --with-distribution-id=ID Set distribution-specific id (default=org.mozilla)],
4888 [ val=`echo $withval`
4889 MOZ_DISTRIBUTION_ID="$val"])
4891 if test -z "$MOZ_DISTRIBUTION_ID"; then
4892 MOZ_DISTRIBUTION_ID="org.mozilla"
4895 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4896 AC_SUBST(MOZ_DISTRIBUTION_ID)
4898 dnl ========================================================
4900 dnl ========================================================
4901 if test "$MOZ_ENABLE_GTK2"
4903 PKG_CHECK_MODULES(MOZ_XFT, xft)
4904 AC_SUBST(MOZ_XFT_CFLAGS)
4905 AC_SUBST(MOZ_XFT_LIBS)
4907 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4908 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangocairo >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
4909 AC_SUBST(MOZ_PANGO_CFLAGS)
4910 AC_SUBST(MOZ_PANGO_LIBS)
4913 dnl ========================================================
4914 dnl = PostScript print module
4915 dnl ========================================================
4916 MOZ_ARG_DISABLE_BOOL(postscript,
4917 [ --disable-postscript Disable PostScript printing support ],
4918 MOZ_ENABLE_POSTSCRIPT=,
4919 MOZ_ENABLE_POSTSCRIPT=1 )
4921 dnl ========================================================
4922 dnl = GnomeVFS support module
4923 dnl ========================================================
4927 dnl build the gnomevfs extension by default only when the
4928 dnl GTK2 toolkit is in use.
4929 if test "$MOZ_ENABLE_GTK2"
4931 MOZ_ENABLE_GNOMEVFS=1
4933 MOZ_ENABLE_LIBGNOME=1
4936 MOZ_ARG_DISABLE_BOOL(gnomevfs,
4937 [ --disable-gnomevfs Disable GnomeVFS support ],
4938 MOZ_ENABLE_GNOMEVFS=,
4939 MOZ_ENABLE_GNOMEVFS=force)
4941 if test "$MOZ_ENABLE_GNOMEVFS"
4943 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
4944 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
4945 MOZ_ENABLE_GNOMEVFS=1
4947 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
4949 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
4951 MOZ_ENABLE_GNOMEVFS=
4955 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
4956 AC_SUBST(MOZ_GNOMEVFS_LIBS)
4958 if test "$MOZ_ENABLE_GCONF"
4960 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION,[
4961 MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
4968 AC_SUBST(MOZ_GCONF_CFLAGS)
4969 AC_SUBST(MOZ_GCONF_LIBS)
4971 if test "$MOZ_ENABLE_LIBGNOME"
4973 PKG_CHECK_MODULES(MOZ_LIBGNOME, libgnome-2.0 >= $LIBGNOME_VERSION,[
4974 MOZ_LIBGNOME_LIBS=`echo $MOZ_LIBGNOME_LIBS | sed 's/-llinc\>//'`
4975 MOZ_ENABLE_LIBGNOME=1
4977 MOZ_ENABLE_LIBGNOME=
4981 AC_SUBST(MOZ_LIBGNOME_CFLAGS)
4982 AC_SUBST(MOZ_LIBGNOME_LIBS)
4984 # The GNOME component is built if gtk2, gconf, gnome-vfs, and libgnome
4985 # are all available.
4987 if test "$MOZ_ENABLE_GTK2" -a "$MOZ_ENABLE_GCONF" -a \
4988 "$MOZ_ENABLE_GNOMEVFS" -a "$MOZ_ENABLE_LIBGNOME"; then
4989 MOZ_ENABLE_GNOME_COMPONENT=1
4991 MOZ_ENABLE_GNOME_COMPONENT=
4994 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
4997 dnl ========================================================
4998 dnl = libgnomeui support module
4999 dnl ========================================================
5001 if test "$MOZ_ENABLE_GTK2"
5003 MOZ_ENABLE_GNOMEUI=1
5005 MOZ_ARG_DISABLE_BOOL(gnomeui,
5006 [ --disable-gnomeui Disable libgnomeui support (default: auto, optional at runtime) ],
5007 MOZ_ENABLE_GNOMEUI=,
5008 MOZ_ENABLE_GNOMEUI=force)
5010 if test "$MOZ_ENABLE_GNOMEUI"
5012 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5014 MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5015 MOZ_ENABLE_GNOMEUI=1
5017 if test "$MOZ_ENABLE_GNOMEUI" = "force"
5019 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5025 if test "$MOZ_ENABLE_GNOMEUI"; then
5026 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5029 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5030 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5031 AC_SUBST(MOZ_GNOMEUI_LIBS)
5033 dnl ========================================================
5035 dnl ========================================================
5037 if test "$MOZ_ENABLE_GTK2"
5041 MOZ_ARG_DISABLE_BOOL(dbus,
5042 [ --disable-dbus Disable dbus support ],
5046 if test "$MOZ_ENABLE_DBUS"
5048 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5049 AC_DEFINE(MOZ_ENABLE_DBUS)
5052 AC_SUBST(MOZ_ENABLE_DBUS)
5053 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5054 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5056 dnl ========================================================
5057 dnl = Build Personal Security Manager
5058 dnl ========================================================
5059 MOZ_ARG_DISABLE_BOOL(crypto,
5060 [ --disable-crypto Disable crypto support (Personal Security Manager)],
5064 dnl ========================================================
5065 dnl = JS Debugger XPCOM component (js/jsd)
5066 dnl ========================================================
5067 MOZ_ARG_DISABLE_BOOL(jsd,
5068 [ --disable-jsd Disable JavaScript debug library],
5073 dnl ========================================================
5074 dnl = Disable plugin support
5075 dnl ========================================================
5076 MOZ_ARG_DISABLE_BOOL(plugins,
5077 [ --disable-plugins Disable plugins support],
5081 dnl ========================================================
5082 dnl = Open JVM Interface (OJI) support
5083 dnl ========================================================
5084 MOZ_ARG_DISABLE_BOOL(oji,
5085 [ --disable-oji Disable Open JVM Integration support],
5088 if test -n "$MOZ_OJI"; then
5092 dnl bi-directional support always on
5096 dnl ========================================================
5097 dnl complex text support off by default
5098 dnl ========================================================
5099 MOZ_ARG_ENABLE_BOOL(ctl,
5100 [ --enable-ctl Enable Thai Complex Script support],
5104 dnl ========================================================
5105 dnl view source support on by default
5106 dnl ========================================================
5107 MOZ_ARG_DISABLE_BOOL(view-source,
5108 [ --disable-view-source Disable view source support],
5111 if test "$MOZ_VIEW_SOURCE"; then
5112 AC_DEFINE(MOZ_VIEW_SOURCE)
5116 dnl ========================================================
5117 dnl accessibility support on by default on all platforms
5119 dnl ========================================================
5120 MOZ_ARG_DISABLE_BOOL(accessibility,
5121 [ --disable-accessibility Disable accessibility support (off by default on OS X)],
5124 if test "$ACCESSIBILITY"; then
5125 AC_DEFINE(ACCESSIBILITY)
5128 if test -n "$ACCESSIBILITY"; then
5130 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5131 if test "$ac_cv_header_atlbase_h" = "no"; then
5132 AC_MSG_ERROR([System header atlbase.h is not available. See http://developer.mozilla.org/en/docs/atlbase.h for details on fixing this problem.])
5134 if test "$ac_cv_header_oleacc_idl" = "no"; then
5135 AC_MSG_ERROR([System header oleacc.idl is not available. See http://developer.mozilla.org/en/docs/oleacc.idl for details on fixing this problem.])
5141 dnl ========================================================
5142 dnl xpfe/components on by default
5143 dnl ========================================================
5144 MOZ_ARG_DISABLE_BOOL(xpfe-components,
5145 [ --disable-xpfe-components
5146 Disable xpfe components],
5147 MOZ_XPFE_COMPONENTS=,
5148 MOZ_XPFE_COMPONENTS=1 )
5150 dnl ========================================================
5151 dnl xpinstall support on by default
5152 dnl ========================================================
5153 MOZ_ARG_DISABLE_BOOL(xpinstall,
5154 [ --disable-xpinstall Disable xpinstall support],
5157 if test "$MOZ_XPINSTALL"; then
5158 AC_DEFINE(MOZ_XPINSTALL)
5161 dnl ========================================================
5162 dnl xpcom js loader support on by default
5163 dnl ========================================================
5164 MOZ_ARG_DISABLE_BOOL(jsloader,
5165 [ --disable-jsloader Disable xpcom js loader support],
5168 if test "$MOZ_JSLOADER"; then
5169 AC_DEFINE(MOZ_JSLOADER)
5172 dnl ========================================================
5173 dnl Disable printing
5174 dnl ========================================================
5175 MOZ_ARG_DISABLE_BOOL(printing,
5176 [ --disable-printing Disable printing support],
5180 if test "$NS_PRINTING"; then
5181 AC_DEFINE(NS_PRINTING)
5182 AC_DEFINE(NS_PRINT_PREVIEW)
5185 dnl ========================================================
5186 dnl use native unicode converters
5187 dnl ========================================================
5188 MOZ_ARG_ENABLE_BOOL(native-uconv,
5189 [ --enable-native-uconv Enable iconv support],
5190 MOZ_USE_NATIVE_UCONV=1,
5191 MOZ_USE_NATIVE_UCONV= )
5192 if test "$MOZ_USE_NATIVE_UCONV"; then
5193 AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5195 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5196 AC_MSG_ERROR([iconv() not found. Cannot enable native uconv support.])
5200 dnl ========================================================
5201 dnl Libeditor can be build as plaintext-only,
5202 dnl or as a full html and text editing component.
5203 dnl We build both by default.
5204 dnl ========================================================
5205 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5206 [ --enable-plaintext-editor-only
5207 Allow only plaintext editing],
5208 MOZ_PLAINTEXT_EDITOR_ONLY=1,
5209 MOZ_PLAINTEXT_EDITOR_ONLY= )
5210 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5211 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5213 dnl ========================================================
5214 dnl Composer is on by default.
5215 dnl ========================================================
5216 MOZ_ARG_DISABLE_BOOL(composer,
5217 [ --disable-composer Disable building of Composer],
5220 AC_SUBST(MOZ_COMPOSER)
5223 dnl ========================================================
5224 dnl = Drop XPCOM Obsolete library
5225 dnl ========================================================
5226 MOZ_ARG_DISABLE_BOOL(xpcom-obsolete,
5227 [ --disable-xpcom-obsolete Disable XPCOM Obsolete Library],
5228 MOZ_NO_XPCOM_OBSOLETE=1,
5229 MOZ_NO_XPCOM_OBSOLETE=)
5231 if test -n "$MOZ_NO_XPCOM_OBSOLETE"; then
5232 AC_DEFINE(MOZ_NO_XPCOM_OBSOLETE)
5235 dnl ========================================================
5236 dnl = Disable Fast Load
5237 dnl ========================================================
5238 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5239 [ --disable-xpcom-fastload Disable XPCOM fastload support],
5243 AC_SUBST(MOZ_NO_FAST_LOAD)
5245 if test -n "$MOZ_NO_FAST_LOAD"; then
5246 AC_DEFINE(MOZ_NO_FAST_LOAD)
5249 dnl ========================================================
5250 dnl Permissions System
5251 dnl ========================================================
5252 MOZ_ARG_DISABLE_BOOL(permissions,
5253 [ --disable-permissions Disable permissions (popup and cookie blocking)],
5258 dnl ========================================================
5260 dnl ========================================================
5261 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5262 [ --disable-negotiateauth Disable GSS-API negotiation ],
5263 MOZ_AUTH_EXTENSION=,
5264 MOZ_AUTH_EXTENSION=1 )
5266 dnl ========================================================
5268 dnl ========================================================
5269 MOZ_ARG_DISABLE_BOOL(xtf,
5270 [ --disable-xtf Disable XTF (pluggable xml tags) support],
5273 if test "$MOZ_XTF"; then
5277 dnl ========================================================
5279 dnl ========================================================
5280 MOZ_ARG_DISABLE_BOOL(inspector-apis,
5281 [ --disable-inspector-apis Disable the DOM inspection APIs ],
5282 MOZ_NO_INSPECTOR_APIS=1,
5283 MOZ_NO_INSPECTOR_APIS= )
5285 dnl ========================================================
5287 dnl ========================================================
5288 MOZ_ARG_DISABLE_BOOL(xmlextras,
5289 [ --disable-xmlextras Disable XMLExtras such as XPointer support ],
5293 dnl ========================================================
5295 dnl ========================================================
5296 MOZ_ARG_ENABLE_BOOL(webservices,
5297 [ --enable-webservices Enable Webservices/SOAP support ],
5301 dnl ========================================================
5302 dnl Pref extensions (autoconfig and system-pref)
5303 dnl ========================================================
5304 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5305 [ --disable-pref-extensions
5306 Disable pref extensions such as autoconfig and
5308 MOZ_PREF_EXTENSIONS=,
5309 MOZ_PREF_EXTENSIONS=1 )
5311 dnl ========================================================
5312 dnl = Universalchardet
5313 dnl ========================================================
5314 MOZ_ARG_DISABLE_BOOL(universalchardet,
5315 [ --disable-universalchardet
5316 Disable universal encoding detection],
5317 MOZ_UNIVERSALCHARDET=,
5318 MOZ_UNIVERSALCHARDET=1 )
5320 dnl ========================================================
5322 dnl ========================================================
5323 MOZ_ARG_ENABLE_BOOL(javaxpcom,
5324 [ --enable-javaxpcom
5325 Enable Java-XPCOM bridge],
5329 if test -n "${MOZ_JAVAXPCOM}"; then
5332 if test -n "$JAVA_HOME"; then
5333 JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
5337 if test -n "$JAVA_HOME"; then
5338 JAVA_HOME=`cd "$JAVA_HOME" && pwd`
5343 if test -n "${JAVA_INCLUDE_PATH}"; then
5344 dnl Make sure jni.h exists in the given include path.
5345 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5346 AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
5349 case "$target_os" in
5351 dnl Default to java system location
5352 JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
5356 JAVA_INCLUDE_PATH="$JAVA_HOME/include"
5359 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5360 AC_MSG_ERROR([The header jni.h was not found. Set \$JAVA_HOME to your java sdk directory, use --with-java-bin-path={java-bin-dir}, or reconfigure with --disable-javaxpcom.])
5364 if test -n "${JAVA_BIN_PATH}"; then
5365 dnl Look for javac and jar in the specified path.
5366 JAVA_PATH="$JAVA_BIN_PATH"
5368 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5369 JAVA_PATH="$JAVA_HOME/bin:$PATH"
5372 AC_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5373 AC_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5374 AC_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5375 if test -z "$JAVA" || test "$JAVA" = ":" || test -z "$JAVAC" || test "$JAVAC" = ":" || test -z "$JAR" || test "$JAR" = ":"; then
5376 AC_MSG_ERROR([The programs java, javac and jar were not found. Set \$JAVA_HOME to your java sdk directory, use --with-java-bin-path={java-bin-dir}, or reconfigure with --disable-javaxpcom.])
5380 dnl ========================================================
5381 dnl = Breakpad crash reporting (on by default on supported platforms)
5382 dnl ========================================================
5384 if (test "$OS_ARCH" = "WINNT" -a -z "$GNU_CC" \
5385 || test "$OS_ARCH" = "Darwin" \
5386 || test "$OS_ARCH" = "Linux" -a "$CPU_ARCH" = "x86" \
5387 || test "$OS_ARCH" = "SunOS") \
5388 && test -z "$HAVE_64BIT_OS"; then
5392 MOZ_ARG_DISABLE_BOOL(crashreporter,
5393 [ --disable-crashreporter Disable breakpad crash reporting],
5395 MOZ_CRASHREPORTER=1)
5397 if test -n "$MOZ_CRASHREPORTER"; then
5398 AC_DEFINE(MOZ_CRASHREPORTER)
5400 if (test "$OS_ARCH" = "Linux" || test "$OS_ARCH" = "SunOS") && \
5401 test -z "$SKIP_LIBRARY_CHECKS"; then
5402 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5403 AC_SUBST(MOZ_GTHREAD_CFLAGS)
5404 AC_SUBST(MOZ_GTHREAD_LIBS)
5406 AC_CHECK_HEADERS([curl/curl.h], [], [AC_MSG_ERROR([Couldn't find curl/curl.h which is required for the crash reporter. Use --disable-crashreporter to disable the crash reporter.])])
5410 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5411 [ --with-crashreporter-enable-percent=NN Enable sending crash reports by default on NN% of users. (default=100)],
5412 [ val=`echo $withval | sed 's/[^0-9]//g'`
5413 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5415 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5416 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5418 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5421 dnl ========================================================
5422 dnl = Build mochitest JS/DOM tests (on by default)
5423 dnl ========================================================
5424 MOZ_ARG_DISABLE_BOOL(mochitest,
5425 [ --disable-mochitest Disable mochitest harness],
5429 dnl ========================================================
5430 dnl = Enable compilation of specific extension modules
5431 dnl ========================================================
5433 MOZ_ARG_ENABLE_STRING(extensions,
5434 [ --enable-extensions Enable extensions],
5435 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5436 if test "$option" = "yes" || test "$option" = "all"; then
5437 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_ALL"
5438 elif test "$option" = "no" || test "$option" = "none"; then
5440 elif test "$option" = "default"; then
5441 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
5442 elif test `echo "$option" | grep -c \^-` != 0; then
5443 option=`echo $option | sed 's/^-//'`
5444 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
5446 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
5449 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
5451 if test -z "$MOZ_ENABLE_GNOMEVFS" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5452 # Suppress warning on non-X11 platforms
5453 if test -n "$MOZ_X11"; then
5454 AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
5456 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
5459 if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
5460 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
5461 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
5464 dnl This might be temporary: build tridentprofile only on Windows
5465 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
5466 AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
5467 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5470 dnl cookie must be built before tridentprofile. put it at list's end.
5471 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
5472 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5473 MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
5476 dnl xforms requires xtf and schema-validation
5477 if test -z "$MOZ_XTF" && test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
5478 AC_MSG_WARN([Cannot build XForms without XTF support. Removing XForms from MOZ_EXTENSIONS.])
5479 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5481 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
5482 AC_MSG_WARN([Cannot build XForms without schema validation. Removing XForms from MOZ_EXTENSIONS.])
5483 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5486 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
5487 AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
5488 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
5491 if test `echo "$MOZ_EXTENSIONS" | grep -c xmlextras` -ne 0; then
5492 AC_MSG_WARN([xmlextras is no longer an extension, use --disable-xmlextras to disable.])
5493 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xmlextras||g'`
5496 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
5497 AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
5498 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
5501 if test `echo "$MOZ_EXTENSIONS" | grep -c webservices` -ne 0; then
5502 AC_MSG_WARN([webservices is no longer an extension, use --disable-webservices to disable.])
5503 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|webservices||g'`
5506 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
5507 AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
5508 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
5511 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
5512 AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
5513 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
5516 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
5517 AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
5518 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
5521 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
5522 AC_MSG_WARN([spellcheck is no longer an extension.])
5523 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
5526 if test -n "$MOZ_NO_XPCOM_OBSOLETE" && test `echo "$MOZ_EXTENSIONS" | grep -c sroaming` -ne 0; then
5527 AC_MSG_WARN([Cannot currently build sroaming without xpcom obsolete -- bug 249343. Removing sroaming from MOZ_EXTENSIONS.])
5528 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|sroaming||'`
5532 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
5534 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
5535 dnl when trying to build a non-existent extension.
5536 for extension in $MOZ_EXTENSIONS; do
5537 if test ! -d "${srcdir}/extensions/${extension}"; then
5538 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
5543 dnl ========================================================
5545 dnl ========================================================
5546 case "$MOZ_WIDGET_TOOLKIT" in
5547 beos|windows|os2|mac|cocoa)
5550 if test -z "$MOZ_ENABLE_GTK2"; then
5551 MOZ_IMG_DECODERS_DEFAULT=`echo $MOZ_IMG_DECODERS_DEFAULT | sed -e 's|icon||'`
5556 MOZ_ARG_ENABLE_STRING(image-decoders,
5557 [ --enable-image-decoders[={mod1,mod2,default,all,none}]
5558 Enable specific image decoders],
5559 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5560 if test "$option" = "yes" || test "$option" = "all"; then
5561 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5562 elif test "$option" = "no" || test "$option" = "none"; then
5564 elif test "$option" = "default"; then
5565 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5566 elif test `echo "$option" | grep -c \^-` != 0; then
5567 option=`echo $option | sed 's/^-//'`
5568 MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
5570 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
5573 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
5575 dnl Dupes are removed in the encoder section because it will also add decoders
5577 dnl ========================================================
5579 dnl ========================================================
5580 MOZ_ARG_ENABLE_STRING(image-encoders,
5581 [ --enable-image-encoders[={mod1,mod2,default,all,none}]
5582 Enable specific image encoders],
5583 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5584 if test "$option" = "yes" || test "$option" = "all"; then
5585 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5586 elif test "$option" = "no" || test "$option" = "none"; then
5589 elif test "$option" = "default"; then
5590 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5591 elif test `echo "$option" | grep -c \^-` != 0; then
5592 option=`echo $option | sed 's/^-//'`
5593 addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
5595 addencoder="$option"
5597 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
5599 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
5602 MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
5603 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
5605 dnl ========================================================
5606 dnl experimental ldap features
5607 dnl ========================================================
5608 MOZ_ARG_ENABLE_BOOL(ldap-experimental,
5609 [ --enable-ldap-experimental
5610 Enable LDAP experimental features],
5611 MOZ_LDAP_XPCOM_EXPERIMENTAL=1,
5612 MOZ_LDAP_XPCOM_EXPERIMENTAL=)
5614 dnl ========================================================
5615 dnl MathML on by default
5616 dnl ========================================================
5617 MOZ_ARG_DISABLE_BOOL(mathml,
5618 [ --disable-mathml Disable MathML support],
5621 if test "$MOZ_MATHML"; then
5622 AC_DEFINE(MOZ_MATHML)
5625 dnl ========================================================
5627 dnl ========================================================
5628 MOZ_ARG_DISABLE_BOOL(canvas,
5629 [ --disable-canvas Disable html:canvas feature],
5631 MOZ_ENABLE_CANVAS=1 )
5632 if test -n "$MOZ_ENABLE_CANVAS"; then
5633 AC_DEFINE(MOZ_ENABLE_CANVAS)
5635 AC_SUBST(MOZ_ENABLE_CANVAS)
5637 dnl ========================================================
5639 dnl ========================================================
5640 MOZ_ARG_DISABLE_BOOL(svg,
5641 [ --disable-svg Disable SVG support],
5644 if test -n "$MOZ_SVG"; then
5648 MOZ_SVG_FOREIGNOBJECT=1
5649 dnl ========================================================
5650 dnl SVG <foreignObject>
5651 dnl ========================================================
5652 MOZ_ARG_DISABLE_BOOL(svg-foreignobject,
5653 [ --disable-svg-foreignobject
5654 Disable SVG <foreignObject> support],
5655 MOZ_SVG_FOREIGNOBJECT=,
5656 MOZ_SVG_FOREIGNOBJECT=1 )
5657 if test "$MOZ_SVG_FOREIGNOBJECT"; then
5658 if test "$MOZ_SVG"; then
5659 AC_DEFINE(MOZ_SVG_FOREIGNOBJECT)
5661 MOZ_SVG_FOREIGNOBEJCT=
5665 dnl ========================================================
5667 dnl ========================================================
5668 case "$target_os" in
5669 aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*)
5674 MOZ_ARG_DISABLE_BOOL(installer,
5675 [ --disable-installer Disable building of installer],
5678 if test -n "$MOZ_INSTALLER" -a -n "$MOZ_XUL_APP" -a "$OS_ARCH" = "WINNT"; then
5679 # Disable installer for Windows builds that use the new toolkit if NSIS
5680 # isn't in the path.
5681 AC_PATH_PROGS(MAKENSIS, makensis)
5682 if test -z "$MAKENSIS" || test "$MAKENSIS" = ":"; then
5683 AC_MSG_ERROR([To build the installer makensis is required in your path. To build without the installer reconfigure using --disable-installer.])
5685 # The Windows build for NSIS requires the iconv command line utility to
5686 # convert the charset of the locale files.
5687 AC_PATH_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5688 if test -z "$HOST_ICONV"; then
5689 AC_MSG_ERROR([To build the installer iconv is required in your path. To build without the installer reconfigure using --disable-installer.])
5693 # Automatically disable installer if xpinstall isn't built
5694 if test -z "$MOZ_XPINSTALL"; then
5697 AC_SUBST(MOZ_INSTALLER)
5699 AC_MSG_CHECKING([for tar archiver])
5700 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
5701 if test -z "$TAR"; then
5702 AC_MSG_ERROR([no tar archiver found in \$PATH])
5704 AC_MSG_RESULT([$TAR])
5707 dnl ========================================================
5709 dnl ========================================================
5711 MOZ_ARG_DISABLE_BOOL(updater,
5712 [ --disable-updater Disable building of updater],
5715 # The Windows build requires the iconv command line utility
5716 # in order to build the updater.
5717 case "$target_os" in
5718 msvc*|mks*|cygwin*|mingw*|wince*)
5719 if test -n "$MOZ_UPDATER"; then
5720 AC_MSG_CHECKING([for iconv])
5721 AC_CHECK_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5722 if test -z "$HOST_ICONV"; then
5723 AC_MSG_ERROR([iconv not found in \$PATH])
5728 AC_SUBST(MOZ_UPDATER)
5730 # app update channel is 'default' when not supplied.
5731 MOZ_ARG_ENABLE_STRING([update-channel],
5732 [ --enable-update-channel=CHANNEL
5733 Select application update channel (default=default)],
5734 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
5736 if test -z "$MOZ_UPDATE_CHANNEL"; then
5737 MOZ_UPDATE_CHANNEL=default
5739 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
5741 # tools/update-packaging is not checked out by default.
5742 MOZ_ARG_ENABLE_BOOL(update-packaging,
5743 [ --enable-update-packaging
5744 Enable tools/update-packaging],
5745 MOZ_UPDATE_PACKAGING=1,
5746 MOZ_UPDATE_PACKAGING= )
5747 AC_SUBST(MOZ_UPDATE_PACKAGING)
5749 dnl ========================================================
5751 dnl ========================================================
5753 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
5754 [ --disable-xpconnect-idispatch
5755 Disable building of xpconnect support for IDispatch
5757 XPC_IDISPATCH_SUPPORT=,
5758 XPC_IDISPATCH_SUPPORT=1)
5759 AC_SUBST(XPC_IDISPATCH_SUPPORT)
5761 MOZ_ARG_DISABLE_BOOL(activex,
5762 [ --disable-activex Disable building of ActiveX control (win32 only)],
5763 MOZ_NO_ACTIVEX_SUPPORT=1,
5764 MOZ_NO_ACTIVEX_SUPPORT= )
5765 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
5767 MOZ_ARG_DISABLE_BOOL(activex-scripting,
5768 [ --disable-activex-scripting
5769 Disable building of ActiveX scripting support (win32)],
5770 MOZ_ACTIVEX_SCRIPTING_SUPPORT=,
5771 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1)
5772 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
5774 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
5776 AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
5779 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
5781 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5782 if test "$ac_cv_header_atlbase_h" = "no"; then
5783 AC_MSG_ERROR([System header atlbase.h is not available. See http://developer.mozilla.org/en/docs/atlbase.h for details on fixing this problem.])
5789 dnl ========================================================
5791 dnl ========================================================
5792 MOZ_ARG_ENABLE_BOOL(leaky,
5793 [ --enable-leaky Build leaky memory tool],
5798 dnl ========================================================
5800 dnl ========================================================
5801 MOZ_ARG_ENABLE_BOOL(xpctools,
5802 [ --enable-xpctools Build JS profiling tool],
5807 dnl ========================================================
5808 dnl build the tests by default
5809 dnl ========================================================
5810 MOZ_ARG_DISABLE_BOOL(tests,
5811 [ --disable-tests Do not build test libraries & programs],
5815 dnl ========================================================
5816 dnl parental controls (for Windows Vista)
5817 dnl ========================================================
5818 MOZ_ARG_DISABLE_BOOL(parental-controls,
5819 [ --disable-parental-controls
5820 Do not build parental controls],
5821 MOZ_DISABLE_PARENTAL_CONTROLS=1,
5822 MOZ_DISABLE_PARENTAL_CONTROLS=)
5823 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5824 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5827 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5828 if test "$ac_cv_header_wpcapi_h" = "no"; then
5829 AC_MSG_ERROR([System header wpcapi.h is not available. See http://developer.mozilla.org/en/docs/wpcapi.h for details on fixing this problem.])
5834 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
5836 dnl ========================================================
5838 dnl = Module specific options
5840 dnl ========================================================
5841 MOZ_ARG_HEADER(Individual module options)
5843 dnl ========================================================
5844 dnl = Enable Lea malloc in xpcom. OFF by default.
5845 dnl ========================================================
5846 MOZ_ARG_ENABLE_BOOL(xpcom-lea,
5847 [ --enable-xpcom-lea Use Lea malloc in xpcom ],
5850 if test -n "$XPCOM_USE_LEA"; then
5851 AC_DEFINE(XPCOM_USE_LEA)
5854 dnl ========================================================
5855 dnl = Enable places (new history/bookmarks)
5856 dnl ========================================================
5857 MOZ_ARG_ENABLE_BOOL(places,
5858 [ --enable-places Enable 'places' bookmark/history implementation],
5861 if test -n "$MOZ_PLACES"; then
5862 AC_DEFINE(MOZ_PLACES)
5863 if test -z "$MOZ_MAIL_NEWS"; then
5868 if test "$MOZ_BUILD_APP" = "browser"; then
5869 AC_MSG_ERROR([Cannot build Firefox with --disable-places.])
5873 dnl ========================================================
5874 dnl = Disable feed handling components
5875 dnl ========================================================
5876 MOZ_ARG_DISABLE_BOOL(feeds,
5877 [ --disable-feeds Disable feed handling and processing components],
5880 if test -n "$MOZ_FEEDS"; then
5881 AC_DEFINE(MOZ_FEEDS)
5883 if test "$MOZ_BUILD_APP" = "browser"; then
5884 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
5888 dnl ========================================================
5889 dnl = Enable mozStorage
5890 dnl ========================================================
5891 dnl Implicitly enabled by default if building calendar or places
5892 MOZ_ARG_ENABLE_BOOL(storage,
5893 [ --enable-storage Enable mozStorage module and related components],
5896 if test -n "$MOZ_STORAGE"; then
5897 AC_DEFINE(MOZ_STORAGE)
5900 dnl ========================================================
5901 dnl Check for sqlite
5902 dnl ========================================================
5905 MOZ_ARG_ENABLE_BOOL(system-sqlite,
5906 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
5907 MOZ_NATIVE_SQLITE=1,
5908 MOZ_NATIVE_SQLITE= )
5910 if test -z "$MOZ_NATIVE_SQLITE"
5913 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,sqlite3,$(DIST)/lib)'
5915 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
5918 AC_SUBST(MOZ_NATIVE_SQLITE)
5920 dnl = Enable help viewer (off by default)
5921 dnl ========================================================
5922 MOZ_ARG_ENABLE_BOOL(help-viewer,
5923 [ --enable-help-viewer Enable help viewer],
5926 if test -n "$MOZ_HELP_VIEWER"; then
5927 AC_DEFINE(MOZ_HELP_VIEWER)
5929 AC_SUBST(MOZ_HELP_VIEWER)
5931 dnl ========================================================
5932 dnl = Enable safe browsing (anti-phishing)
5933 dnl ========================================================
5934 MOZ_ARG_ENABLE_BOOL(safe-browsing,
5935 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
5936 MOZ_SAFE_BROWSING=1,
5937 MOZ_SAFE_BROWSING= )
5938 if test -n "$MOZ_SAFE_BROWSING"; then
5939 AC_DEFINE(MOZ_SAFE_BROWSING)
5941 AC_SUBST(MOZ_SAFE_BROWSING)
5943 dnl ========================================================
5944 dnl = Enable url-classifier
5945 dnl ========================================================
5946 dnl Implicitly enabled by default if building with safe-browsing
5947 if test -n "$MOZ_SAFE_BROWSING"; then
5948 MOZ_URL_CLASSIFIER=1
5950 MOZ_ARG_ENABLE_BOOL(url-classifier,
5951 [ --enable-url-classifier Enable url classifier module],
5952 MOZ_URL_CLASSIFIER=1,
5953 MOZ_URL_CLASSIFIER= )
5954 if test -n "$MOZ_URL_CLASSIFIER"; then
5955 AC_DEFINE(MOZ_URL_CLASSIFIER)
5957 AC_SUBST(MOZ_URL_CLASSIFIER)
5959 dnl ========================================================
5960 dnl = Disable zipwriter
5961 dnl ========================================================
5962 MOZ_ARG_DISABLE_BOOL(zipwriter,
5963 [ --disable-zipwriter Disable zipwriter component],
5966 AC_SUBST(MOZ_ZIPWRITER)
5968 dnl ========================================================
5969 dnl = Enable Ultrasparc specific optimizations for JS
5970 dnl ========================================================
5971 MOZ_ARG_ENABLE_BOOL(js-ultrasparc,
5972 [ --enable-js-ultrasparc Use UltraSPARC optimizations in JS],
5973 JS_ULTRASPARC_OPTS=1,
5974 JS_ULTRASPARC_OPTS= )
5976 dnl only enable option for ultrasparcs
5977 if test `echo "$target_os" | grep -c \^solaris 2>/dev/null` = 0 -o \
5978 "$OS_TEST" != "sun4u"; then
5981 AC_SUBST(JS_ULTRASPARC_OPTS)
5983 dnl ========================================================
5985 dnl = Feature options that require extra sources to be pulled
5987 dnl ========================================================
5988 dnl MOZ_ARG_HEADER(Features that require extra sources)
5990 dnl ========================================================
5992 dnl = Debugging Options
5994 dnl ========================================================
5995 MOZ_ARG_HEADER(Debugging and Optimizations)
5997 dnl ========================================================
5998 dnl = Disable building with debug info.
5999 dnl = Debugging is OFF by default
6000 dnl ========================================================
6001 if test -z "$MOZ_DEBUG_FLAGS"
6005 if test "$GNU_CC"; then
6006 GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
6007 case "$GCC_VERSION" in
6012 MOZ_DEBUG_FLAGS="-g"
6016 MOZ_DEBUG_FLAGS="-g"
6020 MOZ_DEBUG_FLAGS="-g"
6025 MOZ_ARG_ENABLE_STRING(debug,
6026 [ --enable-debug[=DBG] Enable building with developer debug info
6027 (Using compiler flags DBG)],
6028 [ if test "$enableval" != "no"; then
6030 if test -n "$enableval" && test "$enableval" != "yes"; then
6031 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6038 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
6039 case "${target_os}" in
6041 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
6043 msvc*|mks*|cygwin*|mingw*|os2*|wince*)
6044 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
6047 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
6050 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
6052 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6054 if test -n "$MOZ_DEBUG"; then
6055 AC_MSG_CHECKING([for valid debug flags])
6056 _SAVE_CFLAGS=$CFLAGS
6057 CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6058 AC_TRY_COMPILE([#include <stdio.h>],
6059 [printf("Hello World\n");],
6062 AC_MSG_RESULT([$_results])
6063 if test "$_results" = "no"; then
6064 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6066 CFLAGS=$_SAVE_CFLAGS
6069 dnl ========================================================
6070 dnl = Enable code optimization. ON by default.
6071 dnl ========================================================
6072 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6073 MOZ_OPTIMIZE_FLAGS="-O"
6076 MOZ_ARG_ENABLE_STRING(optimize,
6077 [ --disable-optimize Disable compiler optimization
6078 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6079 [ if test "$enableval" != "no"; then
6081 if test -n "$enableval" && test "$enableval" != "yes"; then
6082 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6087 fi ], MOZ_OPTIMIZE=1)
6089 if test "$COMPILE_ENVIRONMENT"; then
6090 if test -n "$MOZ_OPTIMIZE"; then
6091 AC_MSG_CHECKING([for valid optimization flags])
6092 _SAVE_CFLAGS=$CFLAGS
6093 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6094 AC_TRY_COMPILE([#include <stdio.h>],
6095 [printf("Hello World\n");],
6098 AC_MSG_RESULT([$_results])
6099 if test "$_results" = "no"; then
6100 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6102 CFLAGS=$_SAVE_CFLAGS
6104 fi # COMPILE_ENVIRONMENT
6106 AC_SUBST(MOZ_OPTIMIZE)
6107 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6108 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6109 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6111 dnl ========================================================
6112 dnl = Enable/disable debug for specific modules only
6113 dnl = module names beginning with ^ will be disabled
6114 dnl ========================================================
6115 MOZ_ARG_ENABLE_STRING(debug-modules,
6116 [ --enable-debug-modules Enable/disable debug info for specific modules],
6117 [ MOZ_DEBUG_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6119 dnl ========================================================
6120 dnl = Enable/disable generation of debugger info for specific modules only
6121 dnl = the special module name ALL_MODULES can be used to denote all modules
6122 dnl = module names beginning with ^ will be disabled
6123 dnl ========================================================
6124 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
6125 [ --enable-debugger-info-modules
6126 Enable/disable debugger info for specific modules],
6127 [ for i in `echo $enableval | sed 's/,/ /g'`; do
6128 dnl note that the list of module names is reversed as it is copied
6129 dnl this is important, as it will allow config.mk to interpret stuff like
6130 dnl "^ALL_MODULES xpcom" properly
6131 if test "$i" = "no"; then
6134 if test "$i" = "yes"; then
6137 MOZ_DBGRINFO_MODULES="$i $MOZ_DBGRINFO_MODULES";
6140 dnl ========================================================
6141 dnl Enable garbage collector
6142 dnl ========================================================
6143 MOZ_ARG_ENABLE_BOOL(boehm,
6144 [ --enable-boehm Enable the Boehm Garbage Collector],
6147 if test -n "$GC_LEAK_DETECTOR"; then
6148 AC_DEFINE(GC_LEAK_DETECTOR)
6151 dnl ========================================================
6152 dnl Disable runtime logging checks
6153 dnl ========================================================
6154 MOZ_ARG_DISABLE_BOOL(logging,
6155 [ --disable-logging Disable logging facilities],
6156 NS_DISABLE_LOGGING=1,
6157 NS_DISABLE_LOGGING= )
6158 if test "$NS_DISABLE_LOGGING"; then
6159 AC_DEFINE(NS_DISABLE_LOGGING)
6161 AC_DEFINE(MOZ_LOGGING)
6164 dnl ========================================================
6165 dnl = dnl This will enable logging of addref, release, ctor, dtor.
6166 dnl ========================================================
6167 _ENABLE_LOGREFCNT=42
6168 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6169 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
6170 _ENABLE_LOGREFCNT=1,
6171 _ENABLE_LOGREFCNT= )
6172 if test "$_ENABLE_LOGREFCNT" = "1"; then
6173 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6174 elif test -z "$_ENABLE_LOGREFCNT"; then
6175 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6178 dnl ========================================================
6179 dnl = Enable trace malloc
6180 dnl ========================================================
6181 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6182 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6183 [ --enable-trace-malloc Enable malloc tracing],
6186 if test "$NS_TRACE_MALLOC"; then
6187 # Please, Mr. Linker Man, don't take away our symbol names
6188 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6190 AC_DEFINE(NS_TRACE_MALLOC)
6192 AC_SUBST(NS_TRACE_MALLOC)
6194 dnl ========================================================
6195 dnl = Enable jemalloc
6196 dnl ========================================================
6197 MOZ_ARG_ENABLE_BOOL(jemalloc,
6198 [ --enable-jemalloc Replace memory allocator with jemalloc],
6202 if test "$NS_TRACE_MALLOC"; then
6206 if test "$MOZ_MEMORY"; then
6208 dnl Don't try to run compiler tests on Windows
6209 if test "$OS_ARCH" = "WINNT"; then
6210 if test -z "$HAVE_64BIT_OS"; then
6211 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6213 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6216 AC_CHECK_SIZEOF([int *], [4])
6217 case "${ac_cv_sizeof_int_p}" in
6219 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6222 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6225 AC_MSG_ERROR([Unexpected pointer size])
6230 AC_DEFINE(MOZ_MEMORY)
6231 if test "x$MOZ_DEBUG" = "x1"; then
6232 AC_DEFINE(MOZ_MEMORY_DEBUG)
6234 dnl The generic feature tests that determine how to compute ncpus are long and
6235 dnl complicated. Therefore, simply define special cpp variables for the
6236 dnl platforms we have special knowledge of.
6237 case "${target_os}" in
6239 AC_DEFINE(MOZ_MEMORY_DARWIN)
6242 AC_DEFINE(MOZ_MEMORY_BSD)
6245 AC_DEFINE(MOZ_MEMORY_LINUX)
6248 AC_DEFINE(MOZ_MEMORY_BSD)
6251 AC_DEFINE(MOZ_MEMORY_SOLARIS)
6253 msvc*|mks*|cygwin*|mingw*)
6254 AC_DEFINE(MOZ_MEMORY_WINDOWS)
6255 dnl XXX: should test for vc8sp1 here, otherwise patching the crt src
6256 dnl will fail miserably
6257 if test "$_CC_SUITE" -lt "8"; then
6258 AC_MSG_ERROR([Building jemalloc requires Visual C++ 2005 or better])
6260 if test -z "$WIN32_CRT_SRC_DIR" -a -z "$WIN32_CUSTOM_CRT_DIR"; then
6261 if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
6262 AC_MSG_ERROR([When building jemalloc, either set WIN32_CRT_SRC_DIR to the path to the Visual C++ CRT source (usually VCINSTALLDIR\crt\src), or set WIN32_CUSTOM_CRT_DIR to the path to a folder containing a pre-built CRT DLL.])
6264 WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
6267 if test -z "$WIN32_CRT_SRC_DIR"; then
6269 WIN32_CUSTOM_CRT_DIR=`cd "$WIN32_CUSTOM_CRT_DIR" && pwd`
6270 _WIN_UNIX_CRT_PATH="$WIN32_CUSTOM_CRT_DIR"
6272 # CRT source directory
6273 WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd`
6274 _CRT_BASE_DIR=`basename "$WIN32_CRT_SRC_DIR"`
6275 _WIN_UNIX_CRT_PATH="$_objdir/memory/jemalloc/$_CRT_BASE_DIR/build/intel"
6277 dnl need win32 paths in LIB, hence this python abuse. extra brackets
6279 _WIN_CRT_PATH=[`$PYTHON -c 'import sys, os.path; print os.path.normpath(sys.argv[1])' "$_WIN_UNIX_CRT_PATH"`]
6280 MOZ_LIB="$_WIN_CRT_PATH;$LIB"
6281 dnl Needs to be in PATH too, since our tools will wind up linked against it.
6282 dnl This needs to be unix style.
6283 MOZ_PATH="$PATH:$_WIN_UNIX_CRT_PATH"
6284 dnl Statically link the C++ stdlib. We only use this for Breakpad anyway.
6285 AC_DEFINE(_STATIC_CPPLIB)
6286 dnl Don't generate a manifest, since we're linking to a custom CRT.
6287 LDFLAGS="$LDFLAGS -MANIFEST:NO"
6288 dnl Also pass this to NSPR/NSS
6289 DLLFLAGS="$DLLFLAGS -MANIFEST:NO"
6293 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
6297 AC_ARG_WITH([valgrind],
6298 [ --with-valgrind Enable valgrind integration hooks],
6299 [enable_valgrind="yes"], [enable_valgrind="no"])
6300 AC_CHECK_HEADER([valgrind/valgrind.h], [], [enable_valgrind="no"])
6301 if test "x$enable_valgrind" = "xyes" ; then
6302 AC_DEFINE(MOZ_VALGRIND)
6305 AC_SUBST(MOZ_MEMORY)
6306 AC_SUBST(WIN32_CRT_SRC_DIR)
6307 AC_SUBST(WIN32_CUSTOM_CRT_DIR)
6310 dnl Need to set this for make because NSS doesn't have configure
6313 dnl ========================================================
6314 dnl = Use malloc wrapper lib
6315 dnl ========================================================
6316 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
6317 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
6321 if test -n "$_WRAP_MALLOC"; then
6322 if test "$GNU_CC"; then
6323 WRAP_MALLOC_CFLAGS="${LDFLAGS} -Wl,--wrap -Wl,malloc -Wl,--wrap -Wl,free -Wl,--wrap -Wl,realloc -Wl,--wrap -Wl,__builtin_new -Wl,--wrap -Wl,__builtin_vec_new -Wl,--wrap -Wl,__builtin_delete -Wl,--wrap -Wl,__builtin_vec_delete -Wl,--wrap -Wl,PR_Free -Wl,--wrap -Wl,PR_Malloc -Wl,--wrap -Wl,PR_Calloc -Wl,--wrap -Wl,PR_Realloc"
6324 MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) -o $@'
6328 dnl ========================================================
6329 dnl = Location of malloc wrapper lib
6330 dnl ========================================================
6331 MOZ_ARG_WITH_STRING(wrap-malloc,
6332 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
6333 WRAP_MALLOC_LIB=$withval)
6335 dnl ========================================================
6336 dnl = Use Electric Fence
6337 dnl ========================================================
6338 MOZ_ARG_ENABLE_BOOL(efence,
6339 [ --enable-efence Link with Electric Fence],
6342 if test -n "$_ENABLE_EFENCE"; then
6343 AC_CHECK_LIB(efence,malloc)
6346 dnl ========================================================
6348 dnl ========================================================
6349 MOZ_ARG_ENABLE_BOOL(jprof,
6350 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof)],
6353 if test -n "$MOZ_JPROF"; then
6354 AC_DEFINE(MOZ_JPROF)
6357 dnl ========================================================
6359 dnl ========================================================
6360 MOZ_ARG_ENABLE_BOOL(shark,
6361 [ --enable-shark Enable shark remote profiling (needs CHUD framework)],
6364 if test -n "$MOZ_SHARK"; then
6365 AC_DEFINE(MOZ_SHARK)
6368 dnl ========================================================
6369 dnl = Enable stripping of libs & executables
6370 dnl ========================================================
6371 MOZ_ARG_ENABLE_BOOL(strip,
6372 [ --enable-strip Enable stripping of libs & executables ],
6376 dnl ========================================================
6377 dnl = Enable stripping of libs & executables when packaging
6378 dnl ========================================================
6379 MOZ_ARG_ENABLE_BOOL(install-strip,
6380 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
6384 dnl ========================================================
6385 dnl = --enable-elf-dynstr-gc
6386 dnl ========================================================
6387 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
6388 [ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
6389 USE_ELF_DYNSTR_GC=1,
6390 USE_ELF_DYNSTR_GC= )
6392 dnl ========================================================
6393 dnl = --enable-old-abi-compat-wrappers
6394 dnl ========================================================
6395 dnl on x86 linux, the current builds of some popular plugins (notably
6396 dnl flashplayer and real) expect a few builtin symbols from libgcc
6397 dnl which were available in some older versions of gcc. However,
6398 dnl they're _NOT_ available in newer versions of gcc (eg 3.1), so if
6399 dnl we want those plugin to work with a gcc-3.1 built binary, we need
6400 dnl to provide these symbols. MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS defaults
6401 dnl to true on x86 linux, and false everywhere else.
6404 MOZ_ARG_ENABLE_BOOL(old-abi-compat-wrappers,
6405 [ --enable-old-abi-compat-wrappers
6406 Support old GCC ABI symbols to ease the pain
6407 of the linux compiler change],
6408 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1,
6409 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS= )
6410 if test "$COMPILE_ENVIRONMENT"; then
6411 if test "$MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS"; then
6414 AC_CHECK_FUNCS(__builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual)
6416 AC_DEFINE(MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS)
6418 fi # COMPILE_ENVIRONMENT
6420 dnl ========================================================
6421 dnl = --enable-prebinding
6422 dnl ========================================================
6423 MOZ_ARG_ENABLE_BOOL(prebinding,
6424 [ --enable-prebinding Enable prebinding (Mac OS X only)],
6428 dnl ========================================================
6430 dnl = Profiling and Instrumenting
6432 dnl ========================================================
6433 MOZ_ARG_HEADER(Profiling and Instrumenting)
6435 dnl ========================================================
6436 dnl = Enable timeline service, which provides lightweight
6437 dnl = instrumentation of mozilla for performance measurement.
6438 dnl = Timeline is off by default.
6439 dnl ========================================================
6440 MOZ_ARG_ENABLE_BOOL(timeline,
6441 [ --enable-timeline Enable timeline services ],
6444 if test -n "$MOZ_TIMELINE"; then
6445 AC_DEFINE(MOZ_TIMELINE)
6448 dnl ========================================================
6449 dnl Turn on reflow counting
6450 dnl ========================================================
6451 MOZ_ARG_ENABLE_BOOL(reflow-perf,
6452 [ --enable-reflow-perf Enable reflow performance tracing],
6455 if test -n "$MOZ_REFLOW_PREF"; then
6456 AC_DEFINE(MOZ_REFLOW_PREF)
6458 AC_SUBST(MOZ_REFLOW_PERF)
6460 dnl ========================================================
6461 dnl Enable performance metrics.
6462 dnl ========================================================
6463 MOZ_ARG_ENABLE_BOOL(perf-metrics,
6464 [ --enable-perf-metrics Enable performance metrics],
6467 if test -n "$MOZ_PERF_METRICS"; then
6468 AC_DEFINE(MOZ_PERF_METRICS)
6471 dnl ========================================================
6472 dnl Enable code size metrics.
6473 dnl ========================================================
6474 MOZ_ARG_ENABLE_BOOL(codesighs,
6475 [ --enable-codesighs Enable code size analysis tools],
6476 _ENABLE_CODESIGHS=1,
6477 _ENABLE_CODESIGHS= )
6478 if test -n "$_ENABLE_CODESIGHS"; then
6479 if test -d $srcdir/tools/codesighs; then
6482 AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
6486 dnl ========================================================
6487 dnl = Add support for Eazel profiler
6488 dnl ========================================================
6489 MOZ_ARG_ENABLE_BOOL(eazel-profiler-support,
6490 [ --enable-eazel-profiler-support
6491 Enable Corel/Eazel profiler support],
6492 ENABLE_EAZEL_PROFILER=1,
6493 ENABLE_EAZEL_PROFILER= )
6494 if test -n "$ENABLE_EAZEL_PROFILER"; then
6495 AC_DEFINE(ENABLE_EAZEL_PROFILER)
6497 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6498 EAZEL_PROFILER_CFLAGS="-g -O -gdwarf-2 -finstrument-functions -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
6499 EAZEL_PROFILER_LIBS="-lprofiler -lpthread"
6502 MOZ_ARG_ENABLE_STRING(profile-modules,
6503 [ --enable-profile-modules
6504 Enable/disable profiling for specific modules],
6505 [ MOZ_PROFILE_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6507 MOZ_ARG_ENABLE_BOOL(insure,
6508 [ --enable-insure Enable insure++ instrumentation (linux only)],
6511 if test -n "$_ENABLE_INSURE"; then
6515 MOZ_INSURE_EXCLUDE_DIRS="config"
6518 MOZ_ARG_WITH_STRING(insure-dirs,
6519 [ --with-insure-dirs=DIRS
6520 Dirs to instrument with insure ],
6521 MOZ_INSURE_DIRS=$withval )
6523 MOZ_ARG_WITH_STRING(insure-exclude-dirs,
6524 [ --with-insure-exclude-dirs=DIRS
6525 Dirs to not instrument with insure ],
6526 MOZ_INSURE_EXCLUDE_DIRS="config $withval" )
6528 dnl ========================================================
6529 dnl = Support for Quantify (Windows)
6530 dnl ========================================================
6531 MOZ_ARG_ENABLE_BOOL(quantify,
6532 [ --enable-quantify Enable Quantify support (Windows only) ],
6536 dnl ========================================================
6537 dnl = Support for demangling undefined symbols
6538 dnl ========================================================
6539 if test -z "$SKIP_LIBRARY_CHECKS"; then
6542 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
6546 # Demangle only for debug or trace-malloc builds
6547 MOZ_DEMANGLE_SYMBOLS=
6548 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
6549 MOZ_DEMANGLE_SYMBOLS=1
6550 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
6552 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
6554 dnl ========================================================
6555 dnl = Support for gcc stack unwinding (from gcc 3.3)
6556 dnl ========================================================
6557 if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then
6558 AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
6561 dnl ========================================================
6565 dnl ========================================================
6566 MOZ_ARG_HEADER(Misc. Options)
6568 dnl ========================================================
6569 dnl update xterm title
6570 dnl ========================================================
6571 MOZ_ARG_ENABLE_BOOL(xterm-updates,
6572 [ --enable-xterm-updates Update XTERM titles with current command.],
6576 dnl =========================================================
6578 dnl =========================================================
6579 MOZ_ARG_ENABLE_STRING([chrome-format],
6580 [ --enable-chrome-format=jar|flat|both|symlink
6581 Select FORMAT of chrome files (default=jar)],
6582 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
6584 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
6585 MOZ_CHROME_FILE_FORMAT=jar
6588 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
6589 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
6590 test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
6591 test "$MOZ_CHROME_FILE_FORMAT" != "both"; then
6592 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, or symlink])
6595 dnl ========================================================
6596 dnl = Define default location for MOZILLA_FIVE_HOME
6597 dnl ========================================================
6598 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
6599 [ --with-default-mozilla-five-home
6600 Set the default value for MOZILLA_FIVE_HOME],
6601 [ val=`echo $withval`
6602 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
6604 dnl ========================================================
6605 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
6606 dnl ========================================================
6607 MOZ_ARG_WITH_STRING(user-appdir,
6608 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
6609 [ val=`echo $withval`
6610 if echo "$val" | grep "\/" >/dev/null; then
6611 AC_MSG_ERROR("Homedir must be single relative path.")
6616 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
6618 dnl ========================================================
6619 dnl = Doxygen configuration
6620 dnl ========================================================
6621 dnl Use commas to specify multiple dirs to this arg
6622 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
6623 MOZ_ARG_WITH_STRING(doc-input-dirs,
6624 [ --with-doc-input-dirs=DIRS
6625 Header/idl dirs to create docs from],
6626 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6627 AC_SUBST(MOZ_DOC_INPUT_DIRS)
6629 dnl Use commas to specify multiple dirs to this arg
6630 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
6631 MOZ_ARG_WITH_STRING(doc-include-dirs,
6632 [ --with-doc-include-dirs=DIRS
6633 Include dirs to preprocess doc headers],
6634 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6635 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
6637 MOZ_DOC_OUTPUT_DIR='./dist/docs'
6638 MOZ_ARG_WITH_STRING(doc-output-dir,
6639 [ --with-doc-output-dir=DIR
6640 Dir to generate docs into],
6641 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
6642 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
6644 if test -z "$SKIP_COMPILER_CHECKS"; then
6645 dnl ========================================================
6647 dnl = Compiler Options
6649 dnl ========================================================
6650 MOZ_ARG_HEADER(Compiler Options)
6652 dnl ========================================================
6653 dnl Check for gcc -pipe support
6654 dnl ========================================================
6655 AC_MSG_CHECKING([for gcc -pipe support])
6656 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
6657 echo '#include <stdio.h>' > dummy-hello.c
6658 echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
6659 ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
6660 cat dummy-hello.s | ${AS_BIN} -o dummy-hello.S - 2>&5
6661 if test $? = 0; then
6666 if test "$_res_as_stdin" = "yes"; then
6667 _SAVE_CFLAGS=$CFLAGS
6668 CFLAGS="$CFLAGS -pipe"
6669 AC_TRY_COMPILE( [ #include <stdio.h> ],
6670 [printf("Hello World\n");],
6671 [_res_gcc_pipe="yes"],
6672 [_res_gcc_pipe="no"] )
6673 CFLAGS=$_SAVE_CFLAGS
6675 if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
6677 CFLAGS="$CFLAGS -pipe"
6678 CXXFLAGS="$CXXFLAGS -pipe"
6682 rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
6683 AC_MSG_RESULT([$_res])
6688 dnl pass -Wno-long-long to the compiler
6689 MOZ_ARG_ENABLE_BOOL(long-long-warning,
6690 [ --enable-long-long-warning
6691 Warn about use of non-ANSI long long type],
6692 _IGNORE_LONG_LONG_WARNINGS=,
6693 _IGNORE_LONG_LONG_WARNINGS=1)
6695 if test "$_IGNORE_LONG_LONG_WARNINGS"; then
6696 _SAVE_CFLAGS="$CFLAGS"
6697 CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
6698 AC_MSG_CHECKING([whether compiler supports -Wno-long-long])
6699 AC_TRY_COMPILE([], [return(0);],
6700 [ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6701 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6702 result="yes" ], result="no")
6703 AC_MSG_RESULT([$result])
6704 CFLAGS="$_SAVE_CFLAGS"
6707 dnl ========================================================
6708 dnl Profile guided optimization
6709 dnl ========================================================
6710 dnl Test for profiling options
6711 dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
6712 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
6714 dnl Provide a switch to disable PGO even when called via profiledbuild.
6715 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
6716 [ --disable-profile-guided-optimization
6717 Don't build with PGO even if called via make profiledbuild],
6718 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
6719 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
6721 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
6723 _SAVE_CFLAGS="$CFLAGS"
6724 CFLAGS="$CFLAGS -fprofile-generate"
6726 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
6727 AC_TRY_COMPILE([], [return 0;],
6728 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
6729 result="yes" ], result="no")
6730 AC_MSG_RESULT([$result])
6732 if test $result = "yes"; then
6733 PROFILE_GEN_LDFLAGS="-fprofile-generate"
6734 PROFILE_USE_CFLAGS="-fprofile-use"
6735 PROFILE_USE_LDFLAGS="-fprofile-use"
6737 CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
6738 AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
6739 AC_TRY_COMPILE([], [return 0;],
6740 [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
6741 result="yes" ], result="no")
6742 AC_MSG_RESULT([$result])
6743 if test $result = "yes"; then
6744 PROFILE_USE_CFLAGS="-fbranch-probabilities"
6746 # don't really care, this is an old GCC
6747 PROFILE_GEN_LDFLAGS=
6748 PROFILE_USE_LDFLAGS=
6751 CFLAGS="$_SAVE_CFLAGS"
6753 if test -n "$INTEL_CC"; then
6754 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
6755 PROFILE_GEN_LDFLAGS=
6756 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
6757 PROFILE_USE_LDFLAGS=
6760 dnl Sun Studio on Solaris
6761 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
6762 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
6763 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
6764 if test "$CPU_ARCH" != "sparc"; then
6765 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
6766 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
6768 PROFILE_USE_CFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6769 PROFILE_USE_LDFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6773 AC_SUBST(PROFILE_GEN_CFLAGS)
6774 AC_SUBST(PROFILE_GEN_LDFLAGS)
6775 AC_SUBST(PROFILE_USE_CFLAGS)
6776 AC_SUBST(PROFILE_USE_LDFLAGS)
6780 dnl ========================================================
6781 dnl Test for -pedantic bustage
6782 dnl ========================================================
6783 MOZ_ARG_DISABLE_BOOL(pedantic,
6784 [ --disable-pedantic Issue all warnings demanded by strict ANSI C ],
6786 if test "$_PEDANTIC"; then
6787 _SAVE_CXXFLAGS=$CXXFLAGS
6788 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6789 AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
6790 AC_TRY_COMPILE([$configure_static_assert_macros],
6791 [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
6792 result="no", result="yes" )
6793 AC_MSG_RESULT([$result])
6794 CXXFLAGS="$_SAVE_CXXFLAGS"
6798 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic"
6799 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6802 AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic. Reconfigure using --disable-pedantic. ])
6807 dnl ========================================================
6808 dnl Test for correct temporary object destruction order
6809 dnl ========================================================
6810 dnl We want to make sure the compiler follows the C++ spec here as
6811 dnl xpcom and the string classes depend on it (bug 235381).
6812 AC_MSG_CHECKING([for correct temporary object destruction order])
6813 AC_TRY_RUN([ class A {
6814 public: A(int& x) : mValue(x) {}
6816 operator char**() { return 0; }
6817 private: int& mValue;
6819 void func(char **arg) {}
6830 result="yes", result="no", result="maybe")
6831 AC_MSG_RESULT([$result])
6833 if test "$result" = "no"; then
6834 AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
6837 dnl ========================================================
6838 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
6839 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
6840 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
6841 dnl ========================================================
6842 _SAVE_CXXFLAGS=$CXXFLAGS
6843 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
6844 AC_CACHE_CHECK(for correct overload resolution with const and templates,
6845 ac_nscap_nonconst_opeq_bug,
6854 template <class T, class U>
6855 int operator==(const Pointer<T>& rhs, U* lhs)
6857 return rhs.myPtr == lhs;
6860 template <class T, class U>
6861 int operator==(const Pointer<T>& rhs, const U* lhs)
6863 return rhs.myPtr == lhs;
6871 ac_nscap_nonconst_opeq_bug="no",
6872 ac_nscap_nonconst_opeq_bug="yes")])
6873 CXXFLAGS="$_SAVE_CXXFLAGS"
6875 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
6876 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
6878 fi # SKIP_COMPILER_CHECKS
6880 dnl ========================================================
6882 dnl Should be smarter and check that the compiler does indeed have rtti
6883 dnl ========================================================
6884 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
6885 [ --enable-cpp-rtti Enable C++ RTTI ],
6886 [ _MOZ_USE_RTTI=1 ],
6889 if test "$_MOZ_USE_RTTI"; then
6890 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
6892 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
6895 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
6897 dnl ========================================================
6898 dnl C++ exceptions (g++/egcs only - for now)
6899 dnl Should be smarter and check that the compiler does indeed have exceptions
6900 dnl ========================================================
6901 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
6902 [ --enable-cpp-exceptions Enable C++ exceptions ],
6903 [ _MOZ_CPP_EXCEPTIONS=1 ],
6904 [ _MOZ_CPP_EXCEPTIONS= ])
6906 if test "$_MOZ_CPP_EXCEPTIONS"; then
6907 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
6909 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
6912 # Irix & OSF native compilers do not like exception declarations
6913 # when exceptions are disabled
6914 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
6915 AC_DEFINE(CPP_THROW_NEW, [])
6917 AC_DEFINE(CPP_THROW_NEW, [throw()])
6921 dnl ========================================================
6923 dnl = Build depencency options
6925 dnl ========================================================
6926 MOZ_ARG_HEADER(Build dependencies)
6928 dnl ========================================================
6929 dnl = Do not auto generate dependency info
6930 dnl ========================================================
6932 MOZ_ARG_DISABLE_BOOL(auto-deps,
6933 [ --disable-auto-deps Do not automatically generate dependency info],
6937 if test -n "$MOZ_AUTO_DEPS"; then
6938 dnl ========================================================
6939 dnl = Use mkdepend instead of $CC -MD for dependency generation
6940 dnl ========================================================
6942 MOZ_ARG_DISABLE_BOOL(md,
6943 [ --disable-md Do not use compiler-based dependencies ],
6946 [dnl Default is to turn on -MD if using GNU-compatible compilers
6947 if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
6950 dnl Default is to use -xM if using Sun Studio on Solaris
6951 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
6954 if test "$_cpp_md_flag"; then
6956 if test "$OS_ARCH" = "OpenVMS"; then
6957 _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(*F).pp))'
6959 _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(*F).pp)'
6961 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
6962 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
6967 _USE_CPP_INCLUDE_FLAG=
6968 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
6969 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
6973 AC_SUBST(MOZ_AUTO_DEPS)
6974 AC_SUBST(COMPILER_DEPEND)
6978 dnl ========================================================
6980 dnl = Static Build Options
6982 dnl ========================================================
6983 MOZ_ARG_HEADER(Static build options)
6985 MOZ_ARG_ENABLE_BOOL(static,
6986 [ --enable-static Enable building of internal static libs],
6987 BUILD_STATIC_LIBS=1,
6990 dnl Disable libxul in debug builds, but not for xulrunner.
6991 if test -n "$MOZ_DEBUG" -a "$MOZ_BUILD_APP" != "xulrunner"; then
6995 MOZ_ARG_ENABLE_BOOL(libxul,
6996 [ --enable-libxul Enable building of libxul],
6997 MOZ_ENABLE_LIBXUL=1,
7000 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
7001 AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
7004 if test -n "$MOZ_ENABLE_LIBXUL" -a -z "$MOZ_XUL_APP"; then
7005 AC_MSG_ERROR([--enable-libxul is only compatible with toolkit XUL applications.])
7008 if test -n "$MOZ_ENABLE_LIBXUL"; then
7009 XPCOM_LIBS="$LIBXUL_LIBS"
7010 AC_DEFINE(MOZ_ENABLE_LIBXUL)
7012 if test -n "$BUILD_STATIC_LIBS"; then
7013 AC_DEFINE(MOZ_STATIC_BUILD)
7015 XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
7018 dnl ========================================================
7019 dnl = Force JS to be a static lib
7020 dnl ========================================================
7021 MOZ_ARG_ENABLE_BOOL(js-static-build,
7022 [ --enable-js-static-build Force js to be a static lib],
7026 AC_SUBST(JS_STATIC_BUILD)
7028 if test -n "$JS_STATIC_BUILD"; then
7029 AC_DEFINE(EXPORT_JS_API)
7031 if test -z "$BUILD_STATIC_LIBS"; then
7032 AC_MSG_ERROR([--enable-js-static-build is only compatible with --enable-static])
7037 dnl Disable static mail in debug builds, but not with libxul sdk.
7038 if test -n "$MOZ_DEBUG" -a -z "$LIBXUL_SDK"; then
7039 MOZ_STATIC_MAIL_BUILD=
7041 MOZ_ARG_ENABLE_BOOL(static-mail,
7042 [ --enable-static-mail Enable static mail build support],
7043 MOZ_STATIC_MAIL_BUILD=1,
7044 MOZ_STATIC_MAIL_BUILD= )
7046 if test "$MOZ_STATIC_MAIL_BUILD"; then
7047 AC_DEFINE(MOZ_STATIC_MAIL_BUILD)
7050 AC_SUBST(MOZ_STATIC_MAIL_BUILD)
7052 dnl ========================================================
7054 dnl = Standalone module options
7056 dnl ========================================================
7057 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7059 dnl Check for GLib and libIDL.
7060 dnl ========================================================
7061 case "$target_os" in
7062 msvc*|mks*|cygwin*|mingw*|wince*)
7063 SKIP_IDL_CHECK="yes"
7070 if test -z "$COMPILE_ENVIRONMENT"; then
7071 SKIP_IDL_CHECK="yes"
7074 dnl = Allow users to disable libIDL checking for standalone modules
7075 MOZ_ARG_WITHOUT_BOOL(libIDL,
7076 [ --without-libIDL Skip check for libIDL (standalone modules only)],
7077 SKIP_IDL_CHECK="yes")
7079 if test "$SKIP_IDL_CHECK" = "no"
7082 if test "$MACOS_SDK_DIR"; then
7083 dnl xpidl, and therefore libIDL, is only needed on the build host.
7084 dnl Don't build it against the SDK, as that causes problems.
7085 _MACSAVE_CFLAGS="$CFLAGS"
7086 _MACSAVE_LIBS="$LIBS"
7087 _MACSAVE_LDFLAGS="$LDFLAGS"
7088 _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
7090 CFLAGS=`echo $CFLAGS|sed -E -e "s%((-I|-isystem )${MACOS_SDK_DIR}/usr/(include|lib/gcc)[^ ]*)|-F${MACOS_SDK_DIR}(/System)?/Library/Frameworks[^ ]*|-nostdinc[^ ]*|-isysroot ${MACOS_SDK_DIR}%%g"`
7091 LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
7092 LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
7097 if test "$MOZ_ENABLE_GTK2"; then
7098 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
7100 dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
7101 dnl to either libIDL1 or libIDL2.
7102 if test -z "$_LIBIDL_FOUND"; then
7103 AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
7104 if test -z "$_LIBIDL_FOUND"; then
7105 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
7109 dnl If we don't have a libIDL config program & not cross-compiling,
7110 dnl look for orbit-config instead.
7112 if test -z "$_LIBIDL_FOUND" && test -z "$CROSS_COMPILE"; then
7113 AC_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
7114 if test -n "$ORBIT_CONFIG"; then
7115 AC_MSG_CHECKING([for ORBit libIDL usability])
7116 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
7117 _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
7118 _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
7119 _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
7120 LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
7121 LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
7123 _SAVE_CFLAGS="$CFLAGS"
7125 CFLAGS="$LIBIDL_CFLAGS $CFLAGS"
7126 LIBS="$LIBIDL_LIBS $LIBS"
7129 #include <libIDL/IDL.h>
7132 s=strdup(IDL_get_libver_string());
7145 AC_MSG_RESULT($result)
7146 CFLAGS="$_SAVE_CFLAGS"
7150 if test -z "$_LIBIDL_FOUND"; then
7151 AC_MSG_ERROR([libIDL not found.
7152 libIDL $LIBIDL_VERSION or higher is required.])
7154 if test "$MACOS_SDK_DIR"; then
7155 CFLAGS="$_MACSAVE_CFLAGS"
7156 LIBS="$_MACSAVE_LIBS"
7157 LDFLAGS="$_MACSAVE_LDFLAGS"
7158 if test -n "$_MACSAVE_NEXT_ROOT" ; then
7159 export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
7164 if test -n "$CROSS_COMPILE"; then
7165 if test -z "$HOST_LIBIDL_CONFIG"; then
7166 HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
7168 if test -n "$HOST_LIBIDL_CONFIG" && test "$HOST_LIBIDL_CONFIG" != "no"; then
7169 HOST_LIBIDL_CFLAGS=`${HOST_LIBIDL_CONFIG} --cflags`
7170 HOST_LIBIDL_LIBS=`${HOST_LIBIDL_CONFIG} --libs`
7172 HOST_LIBIDL_CFLAGS="$LIBIDL_CFLAGS"
7173 HOST_LIBIDL_LIBS="$LIBIDL_LIBS"
7177 if test -z "$SKIP_PATH_CHECKS"; then
7178 if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then
7179 if test "$MOZ_ENABLE_GTK2"; then
7180 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7182 AM_PATH_GLIB(${GLIB_VERSION})
7187 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
7188 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7191 AC_SUBST(LIBIDL_CFLAGS)
7192 AC_SUBST(LIBIDL_LIBS)
7193 AC_SUBST(STATIC_LIBIDL)
7194 AC_SUBST(GLIB_CFLAGS)
7196 AC_SUBST(GLIB_GMODULE_LIBS)
7197 AC_SUBST(HOST_LIBIDL_CONFIG)
7198 AC_SUBST(HOST_LIBIDL_CFLAGS)
7199 AC_SUBST(HOST_LIBIDL_LIBS)
7201 dnl ========================================================
7202 dnl Check for libart
7203 dnl ========================================================
7204 if test "$MOZ_SVG_RENDERER_LIBART"; then
7205 if test ! -f $topsrcdir/other-licenses/libart_lgpl/Makefile.in; then
7206 AC_MSG_ERROR([You must check out the mozilla version of libart. Use
7207 mk_add_options MOZ_CO_MODULE=mozilla/other-licenses/libart_lgpl])
7210 dnl libart's configure hasn't been run yet, but we know what the
7211 dnl answer should be anyway
7212 MOZ_LIBART_CFLAGS='-I${DIST}/include/libart_lgpl'
7213 case "$target_os" in
7214 msvc*|mks*|cygwin*|mingw*|wince*)
7215 MOZ_LIBART_LIBS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)moz_art_lgpl.$(IMPORT_LIB_SUFFIX)'
7218 MOZ_LIBART_LIBS='-lmoz_art -lm'
7221 MOZ_LIBART_LIBS='-lmoz_art_lgpl -lroot -lbe'
7224 MOZ_LIBART_LIBS='-lmoz_art_lgpl -lm'
7230 AC_SUBST(MOZ_LIBART_CFLAGS)
7231 AC_SUBST(MOZ_LIBART_LIBS)
7233 dnl ========================================================
7235 dnl ========================================================
7236 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
7239 MOZ_ARG_ENABLE_BOOL(system-cairo,
7240 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
7244 # Check for headers defining standard int types.
7245 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
7247 if test "$MOZ_TREE_CAIRO"; then
7248 AC_DEFINE(MOZ_TREE_CAIRO)
7250 # For now we assume that we will have a uint64_t available through
7251 # one of the above headers or mozstdint.h.
7252 AC_DEFINE(HAVE_UINT64_T)
7254 # Define macros for cairo-features.h
7255 if test "$MOZ_X11"; then
7256 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
7257 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
7258 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
7259 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7260 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7261 MOZ_ENABLE_CAIRO_FT=1
7262 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
7264 if test "$MOZ_WIDGET_TOOLKIT" = "mac" -o "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
7265 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
7266 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
7267 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
7269 if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7270 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
7271 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
7272 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7274 if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
7275 OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
7276 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7277 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7278 MOZ_ENABLE_CAIRO_FT=1
7279 CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
7280 CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
7282 if test "$MOZ_ENABLE_GLITZ"; then
7283 GLITZ_SURFACE_FEATURE="#define CAIRO_HAS_GLITZ_SURFACE 1"
7285 if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
7286 PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
7287 BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
7288 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7289 MOZ_ENABLE_CAIRO_FT=1
7291 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
7292 AC_SUBST(CAIRO_FT_CFLAGS)
7294 if test "$MOZ_DEBUG"; then
7295 SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
7297 SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
7300 PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
7302 AC_SUBST(PS_SURFACE_FEATURE)
7303 AC_SUBST(PDF_SURFACE_FEATURE)
7304 AC_SUBST(SVG_SURFACE_FEATURE)
7305 AC_SUBST(XLIB_SURFACE_FEATURE)
7306 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
7307 AC_SUBST(QUARTZ_SURFACE_FEATURE)
7308 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
7309 AC_SUBST(XCB_SURFACE_FEATURE)
7310 AC_SUBST(WIN32_SURFACE_FEATURE)
7311 AC_SUBST(OS2_SURFACE_FEATURE)
7312 AC_SUBST(BEOS_SURFACE_FEATURE)
7313 AC_SUBST(GLITZ_SURFACE_FEATURE)
7314 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
7315 AC_SUBST(FT_FONT_FEATURE)
7316 AC_SUBST(WIN32_FONT_FEATURE)
7317 AC_SUBST(QUARTZ_FONT_FEATURE)
7318 AC_SUBST(PNG_FUNCTIONS_FEATURE)
7320 if test "$_WIN32_MSVC"; then
7321 MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/mozcairo.lib $(DEPTH)/gfx/cairo/libpixman/src/mozlibpixman.lib'
7322 if test "$MOZ_ENABLE_GLITZ"; then
7323 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'$(DEPTH)/gfx/cairo/glitz/src/mozglitz.lib $(DEPTH)/gfx/cairo/glitz/src/wgl/mozglitzwgl.lib'
7326 MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/$(LIB_PREFIX)mozcairo.$(LIB_SUFFIX) $(DEPTH)/gfx/cairo/libpixman/src/$(LIB_PREFIX)mozlibpixman.$(LIB_SUFFIX)'" $CAIRO_FT_LIBS"
7328 if test "$MOZ_X11"; then
7329 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
7332 if test "$MOZ_ENABLE_GLITZ"; then
7333 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src -lmozglitz'
7334 if test "$MOZ_X11"; then
7335 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src/glx -lmozglitzglx -lGL'
7337 if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7338 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src/wgl -lmozglitzwgl'
7343 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION freetype2 fontconfig)
7344 MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
7345 MOZ_CAIRO_LIBS=$CAIRO_LIBS
7346 if test "$MOZ_X11"; then
7347 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
7348 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
7349 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
7353 AC_SUBST(MOZ_TREE_CAIRO)
7354 AC_SUBST(MOZ_CAIRO_CFLAGS)
7355 AC_SUBST(MOZ_CAIRO_LIBS)
7357 dnl ========================================================
7359 dnl ========================================================
7362 MOZ_ARG_ENABLE_BOOL(system-lcms,
7363 [ --enable-system-lcms Use system lcms (located with pkgconfig)],
7367 if test -z "$MOZ_NATIVE_LCMS"
7370 if test "$_WIN32_MSVC"; then
7371 if test -z "$BUILD_STATIC_LIBS" -a -z "$MOZ_ENABLE_LIBXUL"; then
7372 LCMS_CFLAGS=-DLCMS_DLL
7374 LCMS_LIBS='$(LIBXUL_DIST)/lib/mozlcms.lib'
7376 LCMS_LIBS='-L$(LIBXUL_DIST)/bin -lmozlcms'
7379 PKG_CHECK_MODULES(LCMS, lcms >= $LCMS_VERSION)
7382 AC_SUBST(MOZ_NATIVE_LCMS)
7383 AC_SUBST(LCMS_CFLAGS)
7386 dnl ========================================================
7388 dnl ========================================================
7389 MOZ_ARG_DISABLE_BOOL(xul,
7390 [ --disable-xul Disable XUL],
7392 if test "$MOZ_XUL"; then
7395 dnl remove extensions that require XUL
7396 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
7401 dnl ========================================================
7402 dnl Two ways to enable Python support:
7403 dnl --enable-extensions=python # select all available.
7404 dnl (MOZ_PYTHON_EXTENSIONS contains the list of extensions)
7406 dnl --enable-extensions=python/xpcom,... # select individual ones
7408 dnl If either is used, we locate the Python to use.
7409 dnl ========================================================
7411 dnl If 'python' appears anywhere in the extensions list, go lookin'...
7412 if test `echo "$MOZ_EXTENSIONS" | grep -c python` -ne 0; then
7413 dnl Allow PYTHON to point to the Python interpreter to use
7414 dnl (note that it must be the python executable - which we
7415 dnl run to locate the relevant paths etc)
7416 dnl If not set, we use whatever Python we can find.
7418 dnl Ask Python what its version number is
7420 MOZ_PYTHON_VER=`$PYTHON -c "import sys;print '%d%d' % sys.version_info[0:2]"`
7421 MOZ_PYTHON_VER_DOTTED=`$PYTHON -c "import sys;print '%d.%d' % sys.version_info[0:2]"`
7423 dnl Ask for the Python "prefix" (ie, home/source dir)
7424 MOZ_PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
7425 dnl Setup the include and library directories.
7426 if test "$OS_ARCH" = "WINNT"; then
7427 MOZ_PYTHON_PREFIX=`$CYGPATH_W $MOZ_PYTHON_PREFIX | $CYGPATH_S`
7428 dnl Source trees have "include" and "PC" for .h, and "PCbuild" for .lib
7429 dnl Binary trees have "include" for .h, and "libs" for .lib
7430 dnl We add 'em both - along with quotes, to handle spaces.
7431 MOZ_PYTHON_DLL_SUFFIX=.pyd
7432 MOZ_PYTHON_INCLUDES="\"-I$MOZ_PYTHON_PREFIX/include\" \"-I$MOZ_PYTHON_PREFIX/PC\""
7433 MOZ_PYTHON_LIBS="\"/libpath:$MOZ_PYTHON_PREFIX/PCBuild\" \"/libpath:$MOZ_PYTHON_PREFIX/libs\""
7435 dnl Non-Windows include and libs
7436 MOZ_PYTHON_DLL_SUFFIX=$DLL_SUFFIX
7437 MOZ_PYTHON_INCLUDES="-I$MOZ_PYTHON_PREFIX/include/python$MOZ_PYTHON_VER_DOTTED"
7438 dnl Check for dynamic Python lib
7439 dnl - A static Python is no good - multiple dynamic libraries (xpcom
7440 dnl - core, xpcom loader, pydom etc) all need to share Python.
7441 dnl - Python 2.3's std --enable-shared configure option will
7442 dnl create a libpython2.3.so.1.0. We should first try this
7443 dnl dotted versioned .so file because this is the one that
7444 dnl the PyXPCOM build mechanics tries to link to.
7445 dnl XXX Should find a better way than hardcoding "1.0".
7446 dnl - Python developement tree dir layouts are NOT allowed here
7447 dnl because the PyXPCOM build just dies on it later anyway.
7448 dnl - Fixes to the above by Python/*nix knowledgable people welcome!
7449 if test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7450 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7451 elif test -f "$MOZ_PYTHON_PREFIX/lib64/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7452 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib64 -lpython$MOZ_PYTHON_VER_DOTTED"
7453 elif test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7454 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7455 elif test -f "$MOZ_PYTHON_PREFIX/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7456 dnl Don't Python development tree directory layout.
7457 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX -lpython$MOZ_PYTHON_VER_DOTTED"
7458 AC_MSG_ERROR([The Python at $MOZ_PYTHON_PREFIX looks like a dev tree. The PyXPCOM build cannot handle this yet. You must 'make install' Python and use the installed tree.])
7459 elif test "$OS_ARCH" = "Darwin"; then
7460 dnl We do Darwin last, so if a custom non-framework build of
7461 dnl python is used on OSX, then it will be picked up first by
7462 dnl the logic above.
7463 MOZ_PYTHON_LIBS="-framework Python"
7465 AC_MSG_ERROR([Could not find build shared libraries for Python at $MOZ_PYTHON_PREFIX. This is required for PyXPCOM.])
7467 if test "$OS_ARCH" = "Linux"; then
7468 MOZ_PYTHON_LIBS="$MOZ_PYTHON_LIBS -lutil"
7471 dnl Handle "_d" on Windows
7472 if test "$OS_ARCH" = "WINNT" && test -n "$MOZ_DEBUG"; then
7473 MOZ_PYTHON_DEBUG_SUFFIX="_d"
7475 MOZ_PYTHON_DEBUG_SUFFIX=
7477 AC_MSG_RESULT(Building Python extensions using python-$MOZ_PYTHON_VER_DOTTED from $MOZ_PYTHON_PREFIX)
7480 dnl If the user asks for the 'python' extension, then we add
7481 dnl MOZ_PYTHON_EXTENSIONS to MOZ_EXTENSIONS - but with the leading 'python/'
7482 dnl Note the careful regex - it must match 'python' followed by anything
7483 dnl other than a '/', including the end-of-string.
7484 if test `echo "$MOZ_EXTENSIONS" | grep -c 'python\([[^/]]\|$\)'` -ne 0; then
7485 for pyext in $MOZ_PYTHON_EXTENSIONS; do
7486 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS python/$pyext`
7489 dnl Later we may allow MOZ_PYTHON_EXTENSIONS to be specified on the
7490 dnl command-line, but not yet
7491 AC_SUBST(MOZ_PYTHON_EXTENSIONS)
7492 AC_SUBST(MOZ_PYTHON)
7493 AC_SUBST(MOZ_PYTHON_PREFIX)
7494 AC_SUBST(MOZ_PYTHON_INCLUDES)
7495 AC_SUBST(MOZ_PYTHON_LIBS)
7496 AC_SUBST(MOZ_PYTHON_VER)
7497 AC_SUBST(MOZ_PYTHON_VER_DOTTED)
7498 AC_SUBST(MOZ_PYTHON_DEBUG_SUFFIX)
7499 AC_SUBST(MOZ_PYTHON_DLL_SUFFIX)
7501 dnl ========================================================
7502 dnl disable profile sharing
7503 dnl ========================================================
7504 MOZ_ARG_DISABLE_BOOL(profilesharing,
7505 [ --disable-profilesharing Disable profile sharing],
7506 MOZ_PROFILESHARING=,
7507 MOZ_PROFILESHARING=1 )
7508 if test "$MOZ_PROFILESHARING"; then
7510 AC_DEFINE(MOZ_PROFILESHARING)
7513 dnl ========================================================
7515 dnl ========================================================
7516 MOZ_ARG_ENABLE_BOOL(ipcd,
7517 [ --enable-ipcd Enable IPC daemon],
7521 dnl ========================================================
7522 dnl disable profile locking
7523 dnl do no use this in applications that can have more than
7524 dnl one process accessing the profile directory.
7525 dnl ========================================================
7526 MOZ_ARG_DISABLE_BOOL(profilelocking,
7527 [ --disable-profilelocking Disable profile locking],
7528 MOZ_PROFILELOCKING=,
7529 MOZ_PROFILELOCKING=1 )
7530 if test "$MOZ_PROFILELOCKING"; then
7531 AC_DEFINE(MOZ_PROFILELOCKING)
7534 dnl ========================================================
7535 dnl disable rdf services
7536 dnl ========================================================
7537 MOZ_ARG_DISABLE_BOOL(rdf,
7538 [ --disable-rdf Disable RDF],
7540 if test "$MOZ_RDF"; then
7546 dnl ========================================================
7547 dnl necko configuration options
7548 dnl ========================================================
7551 dnl option to disable various necko protocols
7553 MOZ_ARG_ENABLE_STRING(necko-protocols,
7554 [ --enable-necko-protocols[={http,ftp,default,all,none}]
7555 Enable/disable specific protocol handlers],
7556 [ for option in `echo $enableval | sed 's/,/ /g'`; do
7557 if test "$option" = "yes" || test "$option" = "all"; then
7558 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7559 elif test "$option" = "no" || test "$option" = "none"; then
7561 elif test "$option" = "default"; then
7562 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7563 elif test `echo "$option" | grep -c \^-` != 0; then
7564 option=`echo $option | sed 's/^-//'`
7565 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
7567 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
7570 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
7572 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
7573 AC_SUBST(NECKO_PROTOCOLS)
7574 for p in $NECKO_PROTOCOLS; do
7575 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
7579 dnl option to disable necko's disk cache
7581 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
7582 [ --disable-necko-disk-cache
7583 Disable necko disk cache],
7586 AC_SUBST(NECKO_DISK_CACHE)
7587 if test "$NECKO_DISK_CACHE"; then
7588 AC_DEFINE(NECKO_DISK_CACHE)
7592 dnl option to minimize size of necko's i/o buffers
7594 MOZ_ARG_ENABLE_BOOL(necko-small-buffers,
7595 [ --enable-necko-small-buffers
7596 Minimize size of necko's i/o buffers],
7597 NECKO_SMALL_BUFFERS=1,
7598 NECKO_SMALL_BUFFERS=)
7599 AC_SUBST(NECKO_SMALL_BUFFERS)
7600 if test "$NECKO_SMALL_BUFFERS"; then
7601 AC_DEFINE(NECKO_SMALL_BUFFERS)
7605 dnl option to disable cookies
7607 MOZ_ARG_DISABLE_BOOL(cookies,
7608 [ --disable-cookies Disable cookie support],
7611 AC_SUBST(NECKO_COOKIES)
7612 if test "$NECKO_COOKIES"; then
7613 AC_DEFINE(NECKO_COOKIES)
7616 dnl NECKO_ configuration options are not global
7617 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
7619 dnl ========================================================
7620 dnl string api compatibility
7621 dnl ========================================================
7622 MOZ_ARG_DISABLE_BOOL(v1-string-abi,
7623 [ --disable-v1-string-abi Disable binary compatibility layer for strings],
7625 MOZ_V1_STRING_ABI=1)
7626 AC_SUBST(MOZ_V1_STRING_ABI)
7627 if test "$MOZ_V1_STRING_ABI"; then
7628 AC_DEFINE(MOZ_V1_STRING_ABI)
7631 dnl Only build Mork if it's required
7633 if test "$MOZ_MORK"; then
7637 dnl Build the lightweight Mork reader if required
7638 AC_SUBST(MOZ_MORKREADER)
7639 if test "$MOZ_MORKREADER"; then
7640 AC_DEFINE(MOZ_MORKREADER)
7643 dnl ========================================================
7644 if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
7645 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7648 if test "$MOZ_LDAP_XPCOM"; then
7649 LDAP_CFLAGS='-I${DIST}/public/ldap'
7650 if test "$OS_ARCH" = "WINNT"; then
7651 if test -n "$GNU_CC"; then
7652 LDAP_LIBS='-L$(DIST)/lib -lnsldap32v60 -lnsldappr32v60 -lnsldif32v60'
7654 LDAP_LIBS='$(DIST)/lib/$(LIB_PREFIX)nsldap32v60.${IMPORT_LIB_SUFFIX} $(DIST)/lib/$(LIB_PREFIX)nsldappr32v60.${IMPORT_LIB_SUFFIX} $(DIST)/lib/$(LIB_PREFIX)nsldif32v60.${IMPORT_LIB_SUFFIX}'
7656 elif test "$OS_ARCH" = "OS2"; then
7657 LDAP_LIBS='$(DIST)/lib/$(LIB_PREFIX)ldap60.${IMPORT_LIB_SUFFIX} $(DIST)/lib/$(LIB_PREFIX)prldap60.${IMPORT_LIB_SUFFIX} $(DIST)/lib/$(LIB_PREFIX)ldif60.${IMPORT_LIB_SUFFIX}'
7659 LDAP_LIBS='-L${DIST}/bin -L${DIST}/lib -lldap60 -lprldap60 -lldif60'
7663 if test "$COMPILE_ENVIRONMENT"; then
7664 if test "$SUNCTL"; then
7665 dnl older versions of glib do not seem to have gmodule which ctl needs
7666 _SAVE_CFLAGS=$CFLAGS
7667 CFLAGS="$CFLAGS $GLIB_CFLAGS"
7670 AC_TRY_COMPILE([#include <gmodule.h>],
7671 [ int x = 1; x++; ],,
7672 [AC_MSG_ERROR([Cannot build ctl without gmodule support in glib.])])
7674 CFLAGS=$_SAVE_CFLAGS
7677 fi # COMPILE_ENVIRONMENT
7679 dnl ========================================================
7681 dnl = Maintainer debug option (no --enable equivalent)
7683 dnl ========================================================
7688 AC_SUBST(AR_EXTRACT)
7692 AC_SUBST(AS_DASH_C_FLAG)
7697 AC_SUBST(USE_SHORT_LIBNAME)
7701 AC_SUBST(NS_USE_NATIVE)
7702 AC_SUBST(MOZ_WIDGET_TOOLKIT)
7703 AC_SUBST(MOZ_GFX_TOOLKIT)
7704 AC_SUBST(MOZ_UPDATE_XTERM)
7706 AC_SUBST(MOZ_AUTH_EXTENSION)
7707 AC_SUBST(MOZ_MATHML)
7708 AC_SUBST(MOZ_PERMISSIONS)
7710 AC_SUBST(MOZ_XMLEXTRAS)
7711 AC_SUBST(MOZ_NO_INSPECTOR_APIS)
7712 AC_SUBST(MOZ_WEBSERVICES)
7713 AC_SUBST(MOZ_PREF_EXTENSIONS)
7715 AC_SUBST(MOZ_SVG_FOREIGNOBJECT)
7716 AC_SUBST(MOZ_XSLT_STANDALONE)
7717 AC_SUBST(MOZ_JS_LIBS)
7720 AC_SUBST(MOZ_DEBUG_MODULES)
7721 AC_SUBST(MOZ_PROFILE_MODULES)
7722 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
7723 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
7724 AC_SUBST(MOZ_DEBUG_FLAGS)
7725 AC_SUBST(MOZ_DEBUG_LDFLAGS)
7726 AC_SUBST(WARNINGS_AS_ERRORS)
7727 AC_SUBST(MOZ_DBGRINFO_MODULES)
7728 AC_SUBST(MOZ_EXTENSIONS)
7729 AC_SUBST(MOZ_IMG_DECODERS)
7730 AC_SUBST(MOZ_IMG_ENCODERS)
7731 AC_SUBST(MOZ_JSDEBUGGER)
7733 AC_SUBST(MOZ_NO_XPCOM_OBSOLETE)
7734 AC_SUBST(MOZ_PLUGINS)
7735 AC_SUBST(ENABLE_EAZEL_PROFILER)
7736 AC_SUBST(EAZEL_PROFILER_CFLAGS)
7737 AC_SUBST(EAZEL_PROFILER_LIBS)
7738 AC_SUBST(MOZ_PERF_METRICS)
7739 AC_SUBST(GC_LEAK_DETECTOR)
7740 AC_SUBST(MOZ_LOG_REFCNT)
7744 AC_SUBST(MOZ_XPCTOOLS)
7745 AC_SUBST(MOZ_JSLOADER)
7746 AC_SUBST(MOZ_USE_NATIVE_UCONV)
7747 AC_SUBST(MOZ_INSURE)
7748 AC_SUBST(MOZ_INSURE_DIRS)
7749 AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
7750 AC_SUBST(MOZ_QUANTIFY)
7751 AC_SUBST(MOZ_INSURIFYING)
7752 AC_SUBST(MOZ_LDAP_XPCOM)
7753 AC_SUBST(MOZ_LDAP_XPCOM_EXPERIMENTAL)
7754 AC_SUBST(LDAP_CFLAGS)
7757 AC_SUBST(MOZ_PLACES)
7758 AC_SUBST(MOZ_PLACES_BOOKMARKS)
7759 AC_SUBST(MOZ_STORAGE)
7761 AC_SUBST(NS_PRINTING)
7763 AC_SUBST(MOZ_JAVAXPCOM)
7764 AC_SUBST(JAVA_INCLUDE_PATH)
7769 AC_SUBST(MOZ_PROFILESHARING)
7770 AC_SUBST(MOZ_PROFILELOCKING)
7775 AC_SUBST(MOZ_XIE_LIBS)
7776 AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
7778 AC_SUBST(XPCOM_USE_LEA)
7779 AC_SUBST(BUILD_STATIC_LIBS)
7780 AC_SUBST(MOZ_ENABLE_LIBXUL)
7781 AC_SUBST(ENABLE_TESTS)
7784 AC_SUBST(MOZ_UNIVERSALCHARDET)
7785 AC_SUBST(ACCESSIBILITY)
7786 AC_SUBST(MOZ_XPINSTALL)
7787 AC_SUBST(MOZ_VIEW_SOURCE)
7788 AC_SUBST(MOZ_SPELLCHECK)
7789 AC_SUBST(MOZ_XPFE_COMPONENTS)
7790 AC_SUBST(MOZ_USER_DIR)
7791 AC_SUBST(MOZ_CRASHREPORTER)
7792 AC_SUBST(MOZ_MOCHITEST)
7794 AC_SUBST(ENABLE_STRIP)
7795 AC_SUBST(PKG_SKIP_STRIP)
7796 AC_SUBST(USE_ELF_DYNSTR_GC)
7797 AC_SUBST(USE_PREBINDING)
7798 AC_SUBST(INCREMENTAL_LINKER)
7799 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
7800 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
7801 AC_SUBST(MOZ_XPCOM_OBSOLETE_LIBS)
7803 AC_SUBST(MOZ_FIX_LINK_PATHS)
7804 AC_SUBST(XPCOM_LIBS)
7805 AC_SUBST(XPCOM_FROZEN_LDOPTS)
7806 AC_SUBST(XPCOM_GLUE_LDOPTS)
7807 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
7809 AC_SUBST(USE_DEPENDENT_LIBS)
7811 AC_SUBST(MOZ_BUILD_ROOT)
7812 AC_SUBST(MOZ_OS2_TOOLS)
7813 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
7815 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
7816 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
7817 AC_SUBST(MOZ_TIMELINE)
7819 AC_SUBST(TARGET_DEVICE)
7821 AC_SUBST(MOZ_APP_NAME)
7822 AC_SUBST(MOZ_APP_DISPLAYNAME)
7823 AC_SUBST(MOZ_APP_VERSION)
7824 AC_SUBST(FIREFOX_VERSION)
7825 AC_SUBST(THUNDERBIRD_VERSION)
7826 AC_SUBST(SUNBIRD_VERSION)
7827 AC_SUBST(SEAMONKEY_VERSION)
7829 AC_SUBST(MOZ_PKG_SPECIAL)
7831 AC_SUBST(MOZILLA_OFFICIAL)
7832 AC_SUBST(BUILD_OFFICIAL)
7833 AC_SUBST(MOZ_MILESTONE_RELEASE)
7836 AC_SUBST(MOZ_PROFILE)
7837 AC_SUBST(MOZ_DEBUG_SYMBOLS)
7838 AC_SUBST(MOZ_MAPINFO)
7839 AC_SUBST(MOZ_BROWSE_INFO)
7840 AC_SUBST(MOZ_TOOLS_DIR)
7841 AC_SUBST(CYGWIN_WRAPPER)
7843 AC_SUBST(WIN32_REDIST_DIR)
7846 dnl Echo the CFLAGS to remove extra whitespace.
7853 $_MOZ_EXCEPTIONS_FLAGS \
7854 $_WARNINGS_CXXFLAGS \
7857 COMPILE_CFLAGS=`echo \
7862 COMPILE_CXXFLAGS=`echo \
7863 $_DEFINES_CXXFLAGS \
7867 AC_SUBST(SYSTEM_MAKEDEPEND)
7868 AC_SUBST(SYSTEM_JPEG)
7869 AC_SUBST(SYSTEM_PNG)
7870 AC_SUBST(SYSTEM_ZLIB)
7871 AC_SUBST(SYSTEM_BZ2)
7873 AC_SUBST(JPEG_CFLAGS)
7875 AC_SUBST(ZLIB_CFLAGS)
7877 AC_SUBST(BZ2_CFLAGS)
7879 AC_SUBST(PNG_CFLAGS)
7882 AC_SUBST(MOZ_JPEG_CFLAGS)
7883 AC_SUBST(MOZ_JPEG_LIBS)
7884 AC_SUBST(MOZ_ZLIB_CFLAGS)
7885 AC_SUBST(MOZ_ZLIB_LIBS)
7886 AC_SUBST(MOZ_BZ2_CFLAGS)
7887 AC_SUBST(MOZ_BZ2_LIBS)
7888 AC_SUBST(MOZ_PNG_CFLAGS)
7889 AC_SUBST(MOZ_PNG_LIBS)
7891 AC_SUBST(NSPR_CFLAGS)
7893 AC_SUBST(MOZ_NATIVE_NSPR)
7895 AC_SUBST(NSS_CFLAGS)
7897 AC_SUBST(NSS_DEP_LIBS)
7898 AC_SUBST(MOZ_NATIVE_NSS)
7903 AC_SUBST(COMPILE_CFLAGS)
7904 AC_SUBST(COMPILE_CXXFLAGS)
7907 AC_SUBST(CROSS_COMPILE)
7911 AC_SUBST(HOST_CFLAGS)
7912 AC_SUBST(HOST_CXXFLAGS)
7913 AC_SUBST(HOST_OPTIMIZE_FLAGS)
7915 AC_SUBST(HOST_AR_FLAGS)
7917 AC_SUBST(HOST_RANLIB)
7918 AC_SUBST(HOST_NSPR_MDCPUCFG)
7919 AC_SUBST(HOST_BIN_SUFFIX)
7920 AC_SUBST(HOST_OS_ARCH)
7922 AC_SUBST(TARGET_CPU)
7923 AC_SUBST(TARGET_VENDOR)
7925 AC_SUBST(TARGET_NSPR_MDCPUCFG)
7926 AC_SUBST(TARGET_MD_ARCH)
7927 AC_SUBST(TARGET_XPCOM_ABI)
7930 AC_SUBST(OS_RELEASE)
7933 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
7934 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
7936 AC_SUBST(WRAP_MALLOC_CFLAGS)
7937 AC_SUBST(WRAP_MALLOC_LIB)
7940 AC_SUBST(MKSHLIB_FORCE_ALL)
7941 AC_SUBST(MKSHLIB_UNFORCE_ALL)
7942 AC_SUBST(DSO_CFLAGS)
7943 AC_SUBST(DSO_PIC_CFLAGS)
7944 AC_SUBST(DSO_LDOPTS)
7945 AC_SUBST(LIB_PREFIX)
7946 AC_SUBST(DLL_PREFIX)
7947 AC_SUBST(DLL_SUFFIX)
7948 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
7949 AC_SUBST(LIB_SUFFIX)
7950 AC_SUBST(OBJ_SUFFIX)
7951 AC_SUBST(BIN_SUFFIX)
7952 AC_SUBST(ASM_SUFFIX)
7953 AC_SUBST(IMPORT_LIB_SUFFIX)
7955 AC_SUBST(CC_VERSION)
7956 AC_SUBST(CXX_VERSION)
7957 AC_SUBST(MSMANIFEST_TOOL)
7959 if test "$USING_HCC"; then
7960 CC='${topsrcdir}/build/hcc'
7962 CXX='${topsrcdir}/build/hcpp'
7963 CXX="$CXX '$_OLDCXX'"
7968 dnl Check for missing components
7969 if test "$COMPILE_ENVIRONMENT"; then
7970 if test "$MOZ_X11"; then
7971 dnl ====================================================
7972 dnl = Check if X headers exist
7973 dnl ====================================================
7974 _SAVE_CFLAGS=$CFLAGS
7975 CFLAGS="$CFLAGS $XCFLAGS"
7979 #include <X11/Xlib.h>
7980 #include <X11/Intrinsic.h>
7984 if ((dpy = XOpenDisplay(NULL)) == NULL) {
7985 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
7989 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
7990 CFLAGS="$_SAVE_CFLAGS"
7992 if test ! -z "$MISSING_X"; then
7993 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
7997 fi # COMPILE_ENVIRONMENT
7999 dnl Set various defines and substitutions
8000 dnl ========================================================
8002 if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
8003 LIBS='so32dll.lib tcp32dll.lib'
8004 elif test "$OS_ARCH" = "BeOS"; then
8007 elif test "$OS_ARCH" = "Darwin"; then
8009 AC_DEFINE(UNIX_ASYNC_DNS)
8011 elif test "$OS_ARCH" = "OpenVMS"; then
8013 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8015 AC_DEFINE(UNIX_ASYNC_DNS)
8018 AC_SUBST(MOZ_MOVEMAIL)
8020 AC_DEFINE(JS_THREADSAFE)
8022 if test "$MOZ_DEBUG"; then
8023 AC_DEFINE(MOZ_REFLOW_PERF)
8024 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8027 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8028 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8029 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8030 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8031 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8032 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8033 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8034 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8035 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8038 # Used for LD_LIBRARY_PATH of run_viewer target
8040 for lib_arg in $NSPR_LIBS $TK_LIBS; do
8042 -L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr $lib_arg : "-L\(.*\)"` ;;
8048 dnl ========================================================
8049 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
8050 dnl ========================================================
8053 WIN_TOP_SRC=`cd $srcdir; pwd -W`
8056 HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
8057 HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
8058 CC="\$(CYGWIN_WRAPPER) $CC"
8059 CXX="\$(CYGWIN_WRAPPER) $CXX"
8060 CPP="\$(CYGWIN_WRAPPER) $CPP"
8061 LD="\$(CYGWIN_WRAPPER) $LD"
8062 AS="\$(CYGWIN_WRAPPER) $AS"
8063 RC="\$(CYGWIN_WRAPPER) $RC"
8064 MIDL="\$(CYGWIN_WRAPPER) $MIDL"
8065 CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
8066 WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
8070 AC_SUBST(CYGDRIVE_MOUNT)
8071 AC_SUBST(WIN_TOP_SRC)
8073 AC_SUBST(MOZILLA_VERSION)
8075 . ${srcdir}/config/chrome-versions.sh
8076 AC_DEFINE_UNQUOTED(MOZILLA_LOCALE_VERSION,"$MOZILLA_LOCALE_VERSION")
8077 AC_DEFINE_UNQUOTED(MOZILLA_REGION_VERSION,"$MOZILLA_REGION_VERSION")
8078 AC_DEFINE_UNQUOTED(MOZILLA_SKIN_VERSION,"$MOZILLA_SKIN_VERSION")
8080 AC_SUBST(ac_configure_args)
8082 dnl Spit out some output
8083 dnl ========================================================
8085 dnl The following defines are used by xpcom
8086 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8088 HAVE_CPP_2BYTE_WCHAR_T
8089 HAVE_CPP_ACCESS_CHANGING_USING
8090 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8092 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8094 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
8095 HAVE_CPP_NAMESPACE_STD
8097 HAVE_CPP_PARTIAL_SPECIALIZATION
8098 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8100 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
8102 NEED_CPP_UNUSED_IMPLEMENTATIONS
8106 HAVE_ICONV_WITH_CONST_INPUT
8115 netwerk/necko-config.h
8116 xpcom/xpcom-config.h
8117 xpcom/xpcom-private.h
8120 # Save the defines header file before autoconf removes it.
8121 # (Do not add AC_DEFINE calls after this line.)
8122 _CONFIG_TMP=confdefs-tmp.h
8123 _CONFIG_DEFS_H=mozilla-config.h
8125 cat > $_CONFIG_TMP <<\EOF
8126 /* List of defines generated by configure. Included with preprocessor flag,
8127 * -include, to avoid long list of -D defines on the compile command-line.
8131 #ifndef _MOZILLA_CONFIG_H_
8132 #define _MOZILLA_CONFIG_H_
8135 _EGREP_PATTERN='^#define ('
8136 if test -n "$_NON_GLOBAL_ACDEFINES"; then
8137 for f in $_NON_GLOBAL_ACDEFINES; do
8138 _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
8141 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
8143 sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
8145 cat >> $_CONFIG_TMP <<\EOF
8147 #endif /* _MOZILLA_CONFIG_H_ */
8151 # Only write mozilla-config.h when something changes (or it doesn't exist)
8152 if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
8155 AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
8156 mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
8158 echo ==== $_CONFIG_DEFS_H =================================
8162 dnl Probably shouldn't call this manually but we always want the output of DEFS
8163 rm -f confdefs.h.save
8164 mv confdefs.h confdefs.h.save
8165 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
8166 AC_OUTPUT_MAKE_DEFS()
8168 AC_SUBST(MOZ_DEFINES)
8170 mv confdefs.h.save confdefs.h
8172 dnl Load the list of Makefiles to generate.
8173 dnl To add new Makefiles, edit allmakefiles.sh.
8174 dnl allmakefiles.sh sets the variable, MAKEFILES.
8175 . ${srcdir}/allmakefiles.sh
8177 dnl Run a perl script to quickly create the makefiles.
8178 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
8179 dnl for the files it cannot handle correctly. This way, config.status
8180 dnl will handle these files.
8181 dnl If it fails, nothing is set and config.status will run as usual.
8183 dnl This does not change the $MAKEFILES variable.
8185 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
8187 if test -z "${AS_PERL}"; then
8188 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
8190 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
8195 echo $MAKEFILES > unallmakefiles
8197 AC_OUTPUT($MAKEFILES)
8199 dnl ========================================================
8200 dnl = Setup a nice relatively clean build environment for
8201 dnl = sub-configures.
8202 dnl ========================================================
8205 CFLAGS="$_SUBDIR_CFLAGS"
8206 CPPFLAGS="$_SUBDIR_CPPFLAGS"
8207 CXXFLAGS="$_SUBDIR_CXXFLAGS"
8208 LDFLAGS="$_SUBDIR_LDFLAGS"
8209 HOST_CC="$_SUBDIR_HOST_CC"
8210 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
8211 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
8217 if test "$COMPILE_ENVIRONMENT"; then
8218 if test -z "$MOZ_NATIVE_NSPR" || test "$MOZ_LDAP_XPCOM"; then
8219 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
8220 if test -z "$MOZ_DEBUG"; then
8221 ac_configure_args="$ac_configure_args --disable-debug"
8223 if test "$MOZ_OPTIMIZE" = "1"; then
8224 ac_configure_args="$ac_configure_args --enable-optimize"
8226 if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
8227 ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
8229 if test -n "$HAVE_64BIT_OS"; then
8230 ac_configure_args="$ac_configure_args --enable-64bit"
8232 AC_OUTPUT_SUBDIRS(nsprpub)
8233 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8236 if test -z "$MOZ_NATIVE_NSPR"; then
8237 # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
8238 AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
8239 if test ! "$VACPP" && test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
8240 _libs=`./nsprpub/config/nspr-config --prefix=$\(LIBXUL_DIST\) --exec-prefix=$\(DIST\) --libdir=$\(LIBXUL_DIST\)/lib --libs`
8241 $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $_libs'" config/autoconf.mk
8243 if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE" ; then
8244 _cflags=`./nsprpub/config/nspr-config --prefix=$\(LIBXUL_DIST\) --exec-prefix=$\(DIST\) --includedir=$\(LIBXUL_DIST\)/include/nspr --cflags`
8245 $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $_cflags'" config/autoconf.mk
8247 rm -f config/autoconf.mk.bak
8250 # if we're building the LDAP XPCOM component, we need to build
8253 if test "$MOZ_LDAP_XPCOM"; then
8255 # these subdirs may not yet have been created in the build tree.
8256 # don't use the "-p" switch to mkdir, since not all platforms have it
8258 if test ! -d "directory"; then
8261 if test ! -d "directory/c-sdk"; then
8262 mkdir "directory/c-sdk"
8264 if test ! -d "directory/c-sdk/ldap"; then
8265 mkdir "directory/c-sdk/ldap"
8268 ac_configure_args="$_SUBDIR_CONFIG_ARGS --prefix=$MOZ_BUILD_ROOT/dist --with-dist-prefix=$MOZ_BUILD_ROOT/dist --without-nss --with-mozilla"
8269 if test -z "$MOZ_DEBUG"; then
8270 ac_configure_args="$ac_configure_args --disable-debug"
8272 if test "$MOZ_OPTIMIZE" = "1"; then
8273 ac_configure_args="$ac_configure_args --enable-optimize"
8275 if test -n "$HAVE_64BIT_OS"; then
8276 ac_configure_args="$ac_configure_args --enable-64bit"
8278 AC_OUTPUT_SUBDIRS(directory/c-sdk)
8279 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8281 fi # COMPILE_ENVIRONMENT