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 MOZ_ARG_WITH_STRING(l10n-base,
206 [ --with-l10nbase=DIR path to l10n repositories],
207 L10NBASEDIR=$withval)
208 if test ! -z "$L10NBASEDIR"; then
209 if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
210 AC_MSG_ERROR([--with-l10n-base must specify a path])
211 elif test -d "$L10NBASEDIR"; then
212 L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
214 AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
217 dnl default to $(topsrcdir)/../l10n for 1.9
218 L10NBASEDIR='$(topsrcdir)/../l10n'
220 AC_SUBST(L10NBASEDIR)
222 dnl ========================================================
223 dnl Checks for compilers.
224 dnl ========================================================
225 dnl Set CROSS_COMPILE in the environment when running configure
226 dnl to use the cross-compile setup for now
227 dnl ========================================================
229 if test "$COMPILE_ENVIRONMENT"; then
231 dnl Do some special WinCE toolchain stuff
234 echo -----------------------------------------------------------------------------
235 echo Building Windows CE Shunt Library and Tool Chain
236 echo -----------------------------------------------------------------------------
240 echo -n "#define TOPSRCDIR \"" > $srcdir/build/wince/tools/topsrcdir.h
241 echo `cd "$_topsrcdir" && pwd -W | tr '\n' '\"'` >> $srcdir/build/wince/tools/topsrcdir.h
242 make -C $srcdir/build/wince/tools
243 echo -----------------------------------------------------------------------------
247 if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then
248 echo "cross compiling from $host to $target"
252 _SAVE_CFLAGS="$CFLAGS"
253 _SAVE_LDFLAGS="$LDFLAGS"
255 AC_MSG_CHECKING([for host c compiler])
256 AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
257 if test -z "$HOST_CC"; then
258 AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
260 AC_MSG_RESULT([$HOST_CC])
261 AC_MSG_CHECKING([for host c++ compiler])
262 AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
263 if test -z "$HOST_CXX"; then
264 AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
266 AC_MSG_RESULT([$HOST_CXX])
268 if test -z "$HOST_CFLAGS"; then
269 HOST_CFLAGS="$CFLAGS"
271 if test -z "$HOST_CXXFLAGS"; then
272 HOST_CXXFLAGS="$CXXFLAGS"
274 if test -z "$HOST_LDFLAGS"; then
275 HOST_LDFLAGS="$LDFLAGS"
277 AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
278 AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
280 CFLAGS="$HOST_CFLAGS"
281 LDFLAGS="$HOST_LDFLAGS"
283 AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
284 AC_TRY_COMPILE([], [return(0);],
285 [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
286 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
289 CFLAGS="$HOST_CXXFLAGS"
291 AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
292 AC_TRY_COMPILE([], [return(0);],
293 [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
294 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
298 LDFLAGS=$_SAVE_LDFLAGS
300 case "$build:$target" in
301 powerpc-apple-darwin8*:i?86-apple-darwin*)
302 dnl The Darwin cross compiler doesn't necessarily point itself at a
303 dnl root that has libraries for the proper architecture, it defaults
304 dnl to the system root. The libraries in the system root on current
305 dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
306 dnl checks will fail. Fake a working SDK in that case.
308 _SAVE_CXXFLAGS=$CXXLAGS
309 CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
310 CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
314 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
317 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
321 case "$build:$target" in
322 powerpc-apple-darwin8*:i?86-apple-darwin*)
323 dnl Revert the changes made above. From this point on, the target
324 dnl compiler will never be used without applying the SDK to CFLAGS
325 dnl (see --with-macos-sdk below).
327 CXXFLAGS=$_SAVE_CXXFLAGS
331 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
332 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
333 AC_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
334 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
335 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
336 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
337 AC_DEFINE(CROSS_COMPILE)
342 AC_PATH_PROGS(AS, $AS as, $CC)
343 AC_CHECK_PROGS(AR, ar, :)
344 AC_CHECK_PROGS(LD, ld, :)
345 AC_CHECK_PROGS(STRIP, strip, :)
346 AC_CHECK_PROGS(WINDRES, windres, :)
347 if test -z "$HOST_CC"; then
350 if test -z "$HOST_CFLAGS"; then
351 HOST_CFLAGS="$CFLAGS"
353 if test -z "$HOST_CXX"; then
356 if test -z "$HOST_CXXFLAGS"; then
357 HOST_CXXFLAGS="$CXXFLAGS"
359 if test -z "$HOST_LDFLAGS"; then
360 HOST_LDFLAGS="$LDFLAGS"
362 if test -z "$HOST_RANLIB"; then
363 HOST_RANLIB="$RANLIB"
365 if test -z "$HOST_AR"; then
376 if test "$GCC" = "yes"; then
378 CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
380 if test "$GXX" = "yes"; then
382 CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
384 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
387 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
390 if test "$GNU_CC"; then
391 if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
398 if test "$GCC" = yes; then
399 if test "`$CC -help 2>&1 | grep -c 'Intel(R) C Compiler'`" != "0"; then
404 if test "$GXX" = yes; then
405 if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
410 dnl Special win32 checks
411 dnl ========================================================
417 if test -n "$GNU_CC"; then
425 MOZ_ARG_WITH_STRING(windows-version,
426 [ --with-windows-version=WINVER
427 Minimum Windows version (WINVER) to support
438 AC_MSG_ERROR([Invalid value --with-windows-version, must be 400, 500 or 501]);
444 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince)
445 if test "$GCC" != "yes"; then
446 # Check to see if we are really running in a msvc environemnt
448 AC_CHECK_PROGS(MIDL, midl)
450 # Make sure compilers are valid
451 CFLAGS="$CFLAGS -TC -nologo"
452 CXXFLAGS="$CXXFLAGS -TP -nologo"
455 AC_TRY_COMPILE([#include <stdio.h>],
456 [ printf("Hello World\n"); ],,
457 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
460 AC_TRY_COMPILE([#include <new.h>],
461 [ unsigned *test = new unsigned(42); ],,
462 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
466 _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
469 # Determine compiler version
470 CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
471 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
472 _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
473 _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
474 _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
475 _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
477 CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
478 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
480 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
481 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
483 if test "$_CC_MAJOR_VERSION" = "12"; then
485 elif test "$_CC_MAJOR_VERSION" = "13"; then
487 elif test "$_CC_MAJOR_VERSION" = "14"; then
489 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
490 dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
491 dnl so be very specific here!
492 dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
493 if test $_CC_RELEASE -gt 50727; then
495 elif test $_CC_BUILD -ge 762; then
498 AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
499 AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
500 elif test "$_CC_MAJOR_VERSION" = "15"; then
502 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
503 LDFLAGS="$LDFLAGS -MANIFESTUAC:NO"
505 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
506 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
508 AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
511 _MOZ_RTTI_FLAGS_ON='-GR'
512 _MOZ_RTTI_FLAGS_OFF='-GR-'
513 _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
514 _MOZ_EXCEPTIONS_FLAGS_OFF=''
516 if test -n "$WIN32_REDIST_DIR"; then
517 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
521 # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
522 if test "$_CC_SUITE" -ge "8"; then
524 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
527 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
528 if test -n "$MSMT_TOOL"; then
529 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
530 if test -z "$MSMANIFEST_TOOL_VERSION"; then
531 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
536 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
540 # Check linker version
541 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
542 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
543 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
544 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
549 _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
550 _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
551 _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
552 _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
553 # Add flags if necessary
554 AC_MSG_CHECKING([for midl flags])
555 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
556 # Starting with MIDL version 6.0.359, the MIDL compiler
557 # generates /Oicf /robust stubs by default, which is not
558 # compatible with versions of Windows older than Win2k.
559 # This switches us back to the old behaviour. When we drop
560 # support for Windows older than Win2k, we should remove
562 MIDL_FLAGS="${MIDL_FLAGS} -no_robust"
563 AC_MSG_RESULT([need -no_robust])
565 MIDL_FLAGS="${MIDL_FLAGS}"
566 AC_MSG_RESULT([none needed])
569 unset _MSVC_VER_FILTER
572 # Check w32api version
573 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
574 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
575 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
576 AC_TRY_COMPILE([#include <w32api.h>],
577 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
578 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
579 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
580 #error "test failed."
582 , [ res=yes ], [ res=no ])
583 AC_MSG_RESULT([$res])
584 if test "$res" != "yes"; then
585 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
587 # Check windres version
588 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
589 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
590 AC_MSG_RESULT([$_WINDRES_VERSION])
591 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
592 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
593 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
594 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
595 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
596 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
597 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
598 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
599 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
600 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
601 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
602 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
604 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
608 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
609 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
610 # Require OS features provided by IE 5.0
611 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
615 dnl Test breaks icc on OS/2 && MSVC
616 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
618 if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
622 CC="${srcdir}/build/hcc '$CC'"
623 CXX="${srcdir}/build/hcpp '$CXX'"
630 if test -n "$_WIN32_MSVC"; then
632 SKIP_COMPILER_CHECKS=1
633 SKIP_LIBRARY_CHECKS=1
636 fi # COMPILE_ENVIRONMENT
648 dnl ========================================================
649 dnl Checks for programs.
650 dnl ========================================================
653 AC_PATH_PROGS(PERL, $PERL perl5 perl )
654 if test -z "$PERL" || test "$PERL" = ":"; then
655 AC_MSG_ERROR([perl not found in \$PATH])
658 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
659 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
660 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
662 AC_MSG_RESULT([$_perl_version])
664 if test "$_perl_res" != 0; then
665 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
669 AC_MSG_CHECKING([for full perl installation])
670 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
672 if test "$_perl_res" != 0; then
674 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
679 AC_PATH_PROGS(PYTHON, $PYTHON python)
680 if test -z "$PYTHON"; then
681 AC_MSG_ERROR([python was not found in \$PATH])
683 echo PYTHON="$PYTHON"
685 AC_PATH_PROGS(NSINSTALL_BIN, nsinstall )
686 if test -z "$COMPILE_ENVIRONMENT"; then
687 if test -z "$NSINSTALL_BIN" || test "$NSINSTALL_BIN" = ":"; then
688 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
691 AC_SUBST(NSINSTALL_BIN)
693 AC_PATH_PROG(DOXYGEN, doxygen, :)
694 AC_PATH_PROG(WHOAMI, whoami, :)
695 AC_PATH_PROG(AUTOCONF, autoconf, :)
696 AC_PATH_PROG(UNZIP, unzip, :)
697 AC_PATH_PROGS(ZIP, zip)
698 if test -z "$ZIP" || test "$ZIP" = ":"; then
699 AC_MSG_ERROR([zip not found in \$PATH])
701 AC_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
702 AC_PATH_PROG(XARGS, xargs)
703 if test -z "$XARGS" || test "$XARGS" = ":"; then
704 AC_MSG_ERROR([xargs not found in \$PATH .])
707 if test "$COMPILE_ENVIRONMENT"; then
709 dnl ========================================================
710 dnl = Mac OS X toolchain support
711 dnl ========================================================
715 dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
716 dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
717 dnl the environment and includedir purposes (when using an SDK, below),
718 dnl but remember the full version number for the libdir (SDK).
720 GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
721 GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
723 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
724 dnl Bug 280479, but this keeps popping up in bug 292530 too because
725 dnl 4.0.0/4061 is the default compiler in Tiger.
727 GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
729 if test "$GCC_BUILD" = "4061" ; then
730 AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
731 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
732 from building Mozilla. Upgrade to Xcode 2.1 or later.])
736 dnl xcodebuild needs GCC_VERSION defined in the environment, since it
737 dnl doesn't respect the CC/CXX setting. With GCC_VERSION set, it will use
738 dnl /usr/bin/g(cc|++)-$GCC_VERSION.
739 AC_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
744 XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
746 if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
752 dnl sdp was formerly in /Developer/Tools. As of Mac OS X 10.4 (Darwin 8),
753 dnl it has moved into /usr/bin.
754 AC_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
758 AC_SUBST(GCC_VERSION)
759 AC_SUBST(XCODEBUILD_VERSION)
760 AC_SUBST(HAS_XCODE_2_1)
762 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
763 dnl that a universal binary is being produced.
764 AC_SUBST(UNIVERSAL_BINARY)
766 dnl ========================================================
767 dnl Check for MacOS deployment target version
768 dnl ========================================================
770 MOZ_ARG_ENABLE_STRING(macos-target,
771 [ --enable-macos-target=VER (default=10.4)
772 Set the minimum MacOS version needed at runtime],
773 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
777 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
778 dnl Use the specified value
779 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
780 AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
781 elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
782 dnl No value specified on the command line or in the environment,
783 dnl use the lesser of the application's minimum or the architecture's
785 export MACOSX_DEPLOYMENT_TARGET=10.4
790 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
792 dnl ========================================================
793 dnl = Mac OS X SDK support
794 dnl ========================================================
797 MOZ_ARG_WITH_STRING(macos-sdk,
798 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
799 MACOS_SDK_DIR=$withval)
801 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
802 dnl NEXT_ROOT will be set and exported only if it's needed.
803 AC_SUBST(MACOS_SDK_DIR)
806 if test "$MACOS_SDK_DIR"; then
807 dnl Sync this section with the ones in NSPR and NSS.
808 dnl Changes to the cross environment here need to be accounted for in
809 dnl the libIDL checks (below) and xpidl build.
811 if test ! -d "$MACOS_SDK_DIR"; then
812 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
813 specify a valid SDK. SDKs are installed when the optional cross-development
814 tools are selected during the Xcode/Developer Tools installation.])
817 GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
818 if test "$GCC_VERSION_MAJOR" -lt "4" ; then
819 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"
820 if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
821 SDK_C_INCLUDE="$SDK_C_INCLUDE -F${MACOS_SDK_DIR}/Library/Frameworks"
823 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"
825 CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
826 CXXFLAGS="$CXXFLAGS -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
828 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
829 CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
830 CXXCPP="$CXXCPP -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
832 dnl ld support for -syslibroot is compiler-agnostic, but only available
833 dnl on Tiger. Although it's possible to switch on the build host's
834 dnl OS release to use ld -syslibroot when available, ld -syslibroot will
835 dnl cause warnings as long as NEXT_ROOT is set. NEXT_ROOT should be
836 dnl set because both the compiler and linker use it.
837 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"
838 export NEXT_ROOT=$MACOS_SDK_DIR
840 if test -n "$CROSS_COMPILE" ; then
841 dnl NEXT_ROOT will be in the environment, but it shouldn't be set for
842 dnl the build host. HOST_CXX is presently unused.
843 HOST_CC="NEXT_ROOT= $HOST_CC"
844 HOST_CXX="NEXT_ROOT= $HOST_CXX"
847 dnl gcc >= 4.0 uses different paths than above, but knows how to find
849 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
850 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
852 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
853 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
854 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
856 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
857 dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
858 dnl that supports -syslibroot. Don't set NEXT_ROOT because it will
859 dnl be ignored and cause warnings when -syslibroot is specified.
860 dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
861 dnl the -isysroot it receives, so this is only needed with 4.0.0.
862 LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
867 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
869 AC_TRY_COMPILE([#include <new>
870 int main() { return 0; }],
874 AC_MSG_RESULT($result)
876 if test "$result" = "no" ; then
877 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
881 fi # COMPILE_ENVIRONMENT
883 dnl Be sure the make we use is GNU make.
884 dnl on win32, gmake.exe is the generally the wrong version
886 cygwin*|mingw*|mks*|msvc*)
887 AC_PATH_PROGS(MAKE, $MAKE make gmake, :)
890 AC_PATH_PROGS(MAKE, $MAKE gmake make, :)
893 _make_try=`$MAKE --version 2>/dev/null | grep GNU`
894 if test ! "$_make_try"
897 echo "*** $MAKE is not GNU Make. You will not be able to build Mozilla without GNU Make."
901 dnl Now exit if version if < MAKE_VERSION
903 echo 'all: ; @echo $(MAKE_VERSION)' > dummy.mk
904 _make_vers=`$MAKE --no-print-directory -f dummy.mk all 2>/dev/null`
906 _MAKE_MAJOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $1 }'`
907 _MAKE_MINOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $2 }'`
908 MAKE_MAJOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $1 }'`
909 MAKE_MINOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $2 }'`
910 if test "$_MAKE_MAJOR_VERSION" -lt "$MAKE_MAJOR_VERSION" || \
911 test "$_MAKE_MAJOR_VERSION" = "$MAKE_MAJOR_VERSION" -a \
912 "$_MAKE_MINOR_VERSION" -lt "$MAKE_MINOR_VERSION"; then
913 AC_MSG_ERROR([GNU Make $MAKE_VERSION or higher is required to build Mozilla.])
917 if test "$COMPILE_ENVIRONMENT"; then
921 dnl Check in X11 include directory too.
922 if test "$no_x" != "yes"; then
923 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
928 fi # COMPILE_ENVIRONMENT
930 dnl ========================================================
931 dnl set the defaults first
932 dnl ========================================================
951 MOZ_USER_DIR=".mozilla"
953 HOST_AR_FLAGS='$(AR_FLAGS)'
956 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
958 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
960 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
962 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/modules/libimg/png)'
964 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
965 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core'
966 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin'
967 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom'
968 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
969 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
970 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
972 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
973 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom_compat'
977 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
978 MOZ_GFX_TOOLKIT='$(MOZ_WIDGET_TOOLKIT)'
980 MOZ_ENABLE_POSTSCRIPT=1
982 if test -n "$CROSS_COMPILE"; then
983 OS_TARGET="${target_os}"
984 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
986 case "${target_os}" in
987 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
988 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
989 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
990 mingw*) OS_ARCH=WINNT ;;
991 wince*) OS_ARCH=WINCE ;;
992 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
996 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
997 OS_RELEASE=`uname -r`
1000 # Before this used `uname -m` when not cross compiling
1001 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1002 OS_TEST="${target_cpu}"
1006 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1008 #######################################################################
1009 # Master "Core Components" macros for getting the OS target #
1010 #######################################################################
1013 # Note: OS_TARGET should be specified on the command line for gmake.
1014 # When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
1015 # The difference between the Win95 target and the WinNT target is that
1016 # the WinNT target uses Windows NT specific features not available
1017 # in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
1018 # at lesser performance (the Win95 target uses threads; the WinNT target
1021 # When OS_TARGET=WIN16 is specified, then a Windows 3.11 (16bit) target
1022 # is built. See: win16_3.11.mk for lots more about the Win16 target.
1024 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1025 # cross-compilation.
1029 # The following hack allows one to build on a WIN95 machine (as if
1030 # s/he were cross-compiling on a WINNT host for a WIN95 target).
1031 # It also accomodates for MKS's uname.exe. If you never intend
1032 # to do development on a WIN95 machine, you don't need this hack.
1047 CYGWIN_9*|CYGWIN_ME*)
1048 OS_ARCH='CYGWIN_NT-4.0'
1054 # Define and override various archtecture-specific variables, including
1063 case "$HOST_OS_ARCH" in
1064 cygwin*|mingw*|mks*|msvc*)
1083 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1086 HOST_OS_ARCH=UNIXWARE
1098 HOST_OS_ARCH=OpenVMS
1108 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1112 HOST_OS_ARCH=UNIXWARE
1122 # If uname -s returns "Windows_NT", we assume that we are using
1123 # the uname.exe in MKS toolkit.
1125 # The -r option of MKS uname only returns the major version number.
1126 # So we need to use its -v option to get the minor version number.
1127 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1131 OS_MINOR_RELEASE=`uname -v`
1132 if test "$OS_MINOR_RELEASE" = "00"; then
1135 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1137 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1139 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1140 # the uname.exe in the Cygwin tools.
1141 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1142 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1143 # the uname.exe in the GNU-Win32 tools.
1144 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1145 # the uname.exe in the MSYS tools.
1147 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1152 OS_RELEASE=`uname -v`.`uname -r`
1165 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1169 OS_RELEASE=`uname -v`
1193 OS_RELEASE=`uname -v`
1199 OS_RELEASE=`uname -v`
1202 if test "$OS_TARGET" != "NTO"; then
1204 OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1213 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1219 OS_RELEASE=`uname -v`
1226 case "${target_cpu}" in
1234 if test -z "$CROSS_COMPILE" ; then
1242 if test "$OS_ARCH" = "NCR"; then
1244 OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1248 # Only set CPU_ARCH if we recognize the value of OS_TEST
1259 Alpha | alpha | ALPHA)
1272 if test -z "$OS_TARGET"; then
1275 if test "$OS_TARGET" = "WIN95"; then
1278 if test "$OS_TARGET" = "WIN16"; then
1281 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1283 dnl ========================================================
1284 dnl GNU specific defaults
1285 dnl ========================================================
1286 if test "$GNU_CC"; then
1287 # FIXME: Let us build with strict aliasing. bug 414641.
1288 CFLAGS="$CFLAGS -fno-strict-aliasing"
1289 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1290 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1291 DSO_LDOPTS='-shared'
1292 if test "$GCC_USE_GNU_LD"; then
1293 # Don't allow undefined symbols in libraries
1294 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1296 WARNINGS_AS_ERRORS='-Werror'
1298 DSO_PIC_CFLAGS='-fPIC'
1299 _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1300 _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1301 _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'
1302 _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-handle-exceptions'
1304 # Turn on GNU specific features
1305 # -Wall - turn on all warnings
1306 # -pedantic - make compiler warn about non-ANSI stuff, and
1307 # be a little bit stricter
1308 # Warnings slamm took out for now (these were giving more noise than help):
1309 # -Wbad-function-cast - warns when casting a function to a new return type
1310 # -Wconversion - complained when char's or short's were used a function args
1311 # -Wshadow - removed because it generates more noise than help --pete
1312 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1313 if test "$CPU_ARCH" != "ia64" && test "$CPU_ARCH" != "sparc" \
1314 && test -z "$INTEL_CC"; then
1315 # don't use -Wcast-align on ia64 or sparc, it's noisy on those platforms
1316 # icc doesn't support this flag.
1317 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1320 dnl Turn pedantic on but disable the warnings for long long
1323 if test -z "$INTEL_CC"; then
1324 _IGNORE_LONG_LONG_WARNINGS=1
1325 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1327 _IGNORE_LONG_LONG_WARNINGS=
1331 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1332 _USE_CPP_INCLUDE_FLAG=1
1334 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1335 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1337 DSO_LDOPTS='-shared'
1338 if test "$GNU_LD"; then
1339 # Don't allow undefined symbols in libraries
1340 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1344 DSO_PIC_CFLAGS='-KPIC'
1345 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1348 if test "$GNU_CXX"; then
1349 # FIXME: Let us build with strict aliasing. bug 414641.
1350 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1351 # Turn on GNU specific features
1352 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wconversion -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1353 if test "$CPU_ARCH" != "ia64" && test "$CPU_ARCH" != "sparc" \
1354 && test -z "$INTEL_CC"; then
1355 # don't use -Wcast-align on ia64 or sparc, it's noisy on those platforms
1356 # icc doesn't support this flag.
1357 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1360 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1361 _USE_CPP_INCLUDE_FLAG=1
1363 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1366 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1367 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1368 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1369 dnl normal behavior.
1370 dnl ========================================================
1372 MKSHLIB_UNFORCE_ALL=
1374 if test "$COMPILE_ENVIRONMENT"; then
1375 if test "$GNU_CC"; then
1376 AC_MSG_CHECKING(whether ld has archive extraction flags)
1377 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1378 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1379 ac_cv_mkshlib_force_and_unforce="no"
1380 exec 3<&0 <<LOOP_INPUT
1381 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1382 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1383 force="-Wl,-all"; unforce="-Wl,-none"
1390 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1393 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1395 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1399 eval $ac_cv_mkshlib_force_and_unforce
1400 MKSHLIB_FORCE_ALL=$force
1401 MKSHLIB_UNFORCE_ALL=$unforce
1404 fi # COMPILE_ENVIRONMENT
1406 dnl =================================================================
1407 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1408 dnl which is bad when cross compiling.
1409 dnl =================================================================
1410 if test "$COMPILE_ENVIRONMENT"; then
1411 configure_static_assert_macros='
1412 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1413 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1414 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1417 dnl test that the macros actually work:
1418 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1419 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1422 ac_cv_static_assertion_macros_work="yes"
1423 AC_TRY_COMPILE([$configure_static_assert_macros],
1424 [CONFIGURE_STATIC_ASSERT(1)],
1426 ac_cv_static_assertion_macros_work="no")
1427 AC_TRY_COMPILE([$configure_static_assert_macros],
1428 [CONFIGURE_STATIC_ASSERT(0)],
1429 ac_cv_static_assertion_macros_work="no",
1432 AC_TRY_COMPILE([$configure_static_assert_macros],
1433 [CONFIGURE_STATIC_ASSERT(1)],
1435 ac_cv_static_assertion_macros_work="no")
1436 AC_TRY_COMPILE([$configure_static_assert_macros],
1437 [CONFIGURE_STATIC_ASSERT(0)],
1438 ac_cv_static_assertion_macros_work="no",
1442 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1443 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1444 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1447 fi # COMPILE_ENVIRONMENT
1449 dnl ========================================================
1450 dnl Checking for 64-bit OS
1451 dnl ========================================================
1452 if test "$COMPILE_ENVIRONMENT"; then
1455 AC_MSG_CHECKING(for 64-bit OS)
1456 AC_TRY_COMPILE([$configure_static_assert_macros],
1457 [CONFIGURE_STATIC_ASSERT(sizeof(long) == 8)],
1458 result="yes", result="no")
1459 AC_MSG_RESULT("$result")
1460 if test "$result" = "yes"; then
1461 AC_DEFINE(HAVE_64BIT_OS)
1464 AC_SUBST(HAVE_64BIT_OS)
1466 fi # COMPILE_ENVIRONMENT
1468 dnl ========================================================
1469 dnl Enable high-memory support on OS/2 by default.
1470 dnl ========================================================
1471 MOZ_OS2_HIGH_MEMORY=1
1472 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1473 [ --disable-os2-high-mem Disable high-memory support on OS/2],
1474 MOZ_OS2_HIGH_MEMORY=,
1475 MOZ_OS2_HIGH_MEMORY=1 )
1476 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1478 dnl ========================================================
1479 dnl System overrides of the defaults for host
1480 dnl ========================================================
1483 HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1484 HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1485 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1488 *cygwin*|*mingw*|*mks*|*msvc*|*wince)
1489 if test -n "$_WIN32_MSVC"; then
1491 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1492 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1493 HOST_RANLIB='echo ranlib'
1495 HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1497 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1498 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1499 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1500 HOST_BIN_SUFFIX=.exe
1503 dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1506 CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1507 if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1509 CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1511 if test "`${PERL} -v | grep -c cygwin 2>/dev/null`" = 0; then
1513 PERL="${CYGWIN_WRAPPER} $PERL"
1516 if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1517 PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1524 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1525 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1526 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1527 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1528 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL -lobjc'
1531 *-linux*|*-kfreebsd*-gnu)
1532 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1533 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1534 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1538 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1539 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1540 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1541 HOST_BIN_SUFFIX=.exe
1546 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1547 HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1548 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1552 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1553 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1557 dnl Get mozilla version from central milestone file
1558 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1560 dnl Get version of various core apps from the version files.
1561 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1562 THUNDERBIRD_VERSION=`cat $topsrcdir/mail/config/version.txt`
1563 SUNBIRD_VERSION=`cat $topsrcdir/calendar/sunbird/config/version.txt`
1564 SEAMONKEY_VERSION=`cat $topsrcdir/suite/config/version.txt`
1566 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1567 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1569 dnl ========================================================
1570 dnl System overrides of the defaults for target
1571 dnl ========================================================
1576 if test ! "$GNU_CC"; then
1577 if test ! "$HAVE_64BIT_OS"; then
1578 # Compiling with Visual Age C++ object model compat is the
1579 # default. To compile with object model ibm, add
1580 # AIX_OBJMODEL=ibm to .mozconfig.
1581 if test "$AIX_OBJMODEL" = "ibm"; then
1582 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1589 AC_SUBST(AIX_OBJMODEL)
1590 DSO_LDOPTS='-qmkshrobj=1'
1591 DSO_CFLAGS='-qflag=w:w'
1593 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1594 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1596 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1597 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1598 if test "$COMPILE_ENVIRONMENT"; then
1601 AC_MSG_CHECKING([for VisualAge C++ compiler version >= 5.0.2.0])
1603 [#if (__IBMCPP__ < 502)
1604 #error "Bad compiler"
1606 _BAD_COMPILER=,_BAD_COMPILER=1)
1607 if test -n "$_BAD_COMPILER"; then
1609 AC_MSG_ERROR([VisualAge C++ version 5.0.2.0 or higher is required to build.])
1611 AC_MSG_RESULT([yes])
1614 TARGET_COMPILER_ABI="ibmc"
1615 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1616 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1619 case "${target_os}" in
1624 if test "$COMPILE_ENVIRONMENT"; then
1625 AC_CHECK_HEADERS(sys/inttypes.h)
1627 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1632 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1633 _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
1634 DSO_LDOPTS='-nostart'
1635 TK_LIBS='-lbe -lroot'
1637 if test "$COMPILE_ENVIRONMENT"; then
1638 AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
1639 AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
1641 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
1642 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
1645 MOZ_USER_DIR="Mozilla"
1649 dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
1651 _IGNORE_LONG_LONG_WARNINGS=
1659 _WARNINGS_CFLAGS="-Wall"
1660 _WARNINGS_CXXFLAGS="-Wall"
1661 # The test above doesn't work properly, at least on 3.1.
1662 MKSHLIB_FORCE_ALL=''
1663 MKSHLIB_UNFORCE_ALL=''
1669 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1670 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1671 MOZ_OPTIMIZE_FLAGS="-O2"
1673 CFLAGS="$CFLAGS -fpascal-strings -fno-common"
1674 CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
1677 STRIP="$STRIP -x -S"
1678 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1679 MOZ_ENABLE_POSTSCRIPT=
1680 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1681 LDFLAGS="$LDFLAGS -framework Cocoa"
1682 # The ExceptionHandling framework is needed for Objective-C exception
1683 # logging code in nsObjCExceptions.h. Currently we only use that in debug
1685 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
1686 # set MACOSX to generate lib/mac/MoreFiles/Makefile
1689 dnl check for the presence of the -dead_strip linker flag
1690 AC_MSG_CHECKING([for -dead_strip option to ld])
1691 _SAVE_LDFLAGS=$LDFLAGS
1692 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1693 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1694 if test -n "$_HAVE_DEAD_STRIP" ; then
1695 AC_MSG_RESULT([yes])
1696 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1700 LDFLAGS=$_SAVE_LDFLAGS
1704 if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` != "elf"; then
1705 DLL_SUFFIX=".so.1.0"
1706 DSO_LDOPTS="-shared"
1708 if test ! "$GNU_CC"; then
1709 DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
1711 # Can't have force w/o an unforce.
1712 # # Hack for FreeBSD 2.2
1713 # if test -z "$MKSHLIB_FORCE_ALL"; then
1714 # MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
1715 # MKSHLIB_UNFORCE_ALL=''
1721 if test ! "$GNU_CC"; then
1722 DSO_LDOPTS='-b -Wl,+s'
1725 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1726 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1727 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1729 DSO_LDOPTS='-b -E +s'
1730 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1731 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1733 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
1734 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1739 DSO_LDOPTS='-elf -shared'
1741 if test "$GNU_CC"; then
1742 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1743 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1744 MKSHLIB_FORCE_ALL='-Wl,-all'
1745 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1746 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1748 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1749 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1750 MKSHLIB_FORCE_ALL='-all'
1751 MKSHLIB_UNFORCE_ALL='-none'
1757 dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must*
1758 dnl compile and link using -n32
1760 TARGET_COMPILER_ABI=n32
1761 DSO_LDOPTS='-elf -shared'
1762 MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1763 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1764 _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
1765 _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
1766 if test "$GNU_CC"; then
1767 MKSHLIB_FORCE_ALL='-Wl,-all'
1768 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1769 _WARNINGS_CFLAGS="-Wall"
1770 _WARNINGS_CXXFLAGS="-Wall"
1771 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1773 MKSHLIB_FORCE_ALL='-all'
1774 MKSHLIB_UNFORCE_ALL='-none'
1780 CFLAGS="$CFLAGS -woff 3262 -G 4"
1781 CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
1782 if test -n "$USE_N32"; then
1783 ASFLAGS="$ASFLAGS -n32"
1784 CFLAGS="$CFLAGS -n32"
1785 CXXFLAGS="$CXXFLAGS -n32"
1786 LDFLAGS="$LDFLAGS -n32"
1788 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1789 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
1792 if test -z "$GNU_CXX"; then
1798 if test "$GNU_CC"; then
1799 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
1800 case $GCC_VERSION in
1802 # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
1803 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
1807 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1808 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_SIZE_TWEAK"
1809 MOZ_DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb,
1810 # and that combo is not yet good at
1811 # debugging inlined functions (even
1812 # when using DWARF2 as the debugging
1817 case "${target_cpu}" in
1819 CFLAGS="$CFLAGS -mieee"
1820 CXXFLAGS="$CXXFLAGS -mieee"
1824 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
1827 CFLAGS="$CFLAGS -Wa,-xgot"
1828 CXXFLAGS="$CXXFLAGS -Wa,-xgot"
1835 MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
1837 AR_EXTRACT="$AR -extract"
1839 AR_FLAGS='-OUT:"$@"'
1846 # certain versions of cygwin's makedepend barf on the
1847 # #include <string> vs -I./dist/include/string issue so don't use it
1853 HOST_AR='lib -OUT:$@'
1854 HOST_RANLIB='echo ranlib'
1855 HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
1858 WARNINGS_AS_ERRORS='-WX'
1859 MOZ_OPTIMIZE_FLAGS='-O1'
1860 AR_FLAGS='-NOLOGO -OUT:"$@"'
1862 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1863 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1866 DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
1867 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1869 IMPORT_LIB_SUFFIX=lib
1871 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1874 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1875 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1877 MKSHLIB_UNFORCE_ALL=
1878 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1879 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1880 MOZ_DEBUG_FLAGS='-Zi'
1881 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1883 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1884 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1886 RANLIB='echo not_ranlib'
1887 STRIP='echo not_strip'
1888 TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
1891 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1893 LIBIDL_CFLAGS="-I$MOZ_TOOLS_DIR/include ${GLIB_CFLAGS}"
1894 LIBIDL_LIBS="$MOZ_TOOLS_DIR/lib/libidl-0.6_s.lib $MOZ_TOOLS_DIR/lib/glib-1.2_s.lib"
1897 AC_DEFINE(HAVE_SNPRINTF)
1903 AC_DEFINE(HW_THREADS)
1904 AC_DEFINE(STDC_HEADERS)
1905 AC_DEFINE(NEW_H, <new>)
1906 AC_DEFINE(WIN32_LEAN_AND_MEAN)
1908 TARGET_MD_ARCH=win32
1909 _PLATFORM_DEFAULT_TOOLKIT='windows'
1912 MOZ_ENABLE_POSTSCRIPT=
1913 MOZ_USER_DIR="Mozilla"
1917 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
1922 # certain versions of cygwin's makedepend barf on the
1923 # #include <string> vs -I./dist/include/string issue so don't use it
1925 if test -n "$GNU_CC"; then
1926 CC="$CC -mno-cygwin"
1927 CXX="$CXX -mno-cygwin"
1928 CPP="$CPP -mno-cygwin"
1929 CFLAGS="$CFLAGS -mms-bitfields"
1930 CXXFLAGS="$CXXFLAGS -mms-bitfields"
1931 DSO_LDOPTS='-shared'
1932 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1933 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1935 # Use temp file for windres (bug 213281)
1936 RCFLAGS='-O coff --use-temp-file'
1937 # mingw doesn't require kernel32, user32, and advapi32 explicitly
1938 LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
1939 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
1941 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
1942 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
1944 IMPORT_LIB_SUFFIX=dll.a
1946 TARGET_COMPILER_ABI=msvc
1950 AR='lib -NOLOGO -OUT:"$@"'
1952 RANLIB='echo not_ranlib'
1953 STRIP='echo not_strip'
1958 GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
1963 IMPORT_LIB_SUFFIX=lib
1964 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(PDBFILE) $(DSO_LDOPTS)'
1965 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(PDBFILE) $(DSO_LDOPTS)'
1967 MKSHLIB_UNFORCE_ALL=
1968 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
1969 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1970 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1971 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
1972 MOZ_DEBUG_FLAGS='-Zi'
1973 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1974 WARNINGS_AS_ERRORS='-WX'
1975 MOZ_OPTIMIZE_FLAGS='-O1'
1976 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1978 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1979 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1980 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1981 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1982 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1983 if test $_MSC_VER -ge 1400; then
1984 LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
1985 dnl For profile-guided optimization
1986 PROFILE_GEN_CFLAGS="-GL"
1987 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
1988 dnl XXX: PGO builds can fail with warnings treated as errors,
1989 dnl specifically "no profile data available" appears to be
1990 dnl treated as an error sometimes. This might be a consequence
1991 dnl of using WARNINGS_AS_ERRORS in some modules, combined
1992 dnl with the linker doing most of the work in the whole-program
1993 dnl optimization/PGO case. I think it's probably a compiler bug,
1994 dnl but we work around it here.
1995 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
1996 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
1997 dnl Probably also a compiler bug, but what can you do?
1998 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
1999 if test -n "$_USE_DYNAMICBASE"; then
2000 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2004 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg$(MOZ_BITS)$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2005 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2006 AC_DEFINE(HAVE_SNPRINTF)
2012 AC_DEFINE(HW_THREADS)
2013 AC_DEFINE(STDC_HEADERS)
2014 AC_DEFINE(NEW_H, <new>)
2015 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2016 TARGET_MD_ARCH=win32
2017 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2020 MOZ_ENABLE_POSTSCRIPT=
2021 MOZ_USER_DIR="Mozilla"
2023 dnl Hardcode to win95 for now - cls
2024 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2026 dnl set NO_X11 defines here as the general check is skipped on win32
2030 dnl MinGW/MSYS doesn't provide or need cygpath
2035 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2037 *-cygwin*|*-msvc*|*-mks*)
2038 CYGPATH_W="cygpath -a -w"
2039 CYGPATH_S="sed -e s|\\\\|/|g"
2040 MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2044 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2046 if test -z "$MOZ_TOOLS"; then
2047 AC_MSG_ERROR([MOZ_TOOLS is not set])
2050 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd`
2051 if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
2052 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2054 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_DIR/bin:"` = 0; then
2055 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2057 MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2059 if test -n "$GLIB_PREFIX"; then
2060 _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd`
2061 if test "$?" = "0"; then
2062 if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
2063 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
2065 _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
2067 AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
2070 _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
2072 if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
2073 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
2075 GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
2076 if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
2077 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
2078 elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
2079 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
2081 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
2084 if test -n "$LIBIDL_PREFIX"; then
2085 _LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd`
2086 if test "$?" = "0"; then
2087 if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
2088 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
2090 _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
2092 AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
2095 _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
2097 if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
2098 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
2100 LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
2101 if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
2102 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
2104 elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
2105 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
2107 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
2109 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2112 *) # else cross-compiling
2113 if test -n "$GLIB_PREFIX"; then
2114 GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
2115 if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
2116 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
2117 elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
2118 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
2120 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
2123 if test -n "$LIBIDL_PREFIX"; then
2124 LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
2125 if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
2126 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
2128 elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
2129 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
2131 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
2134 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2141 AC_MSG_WARN([Using a cygwin build environment is unsupported. Configure cannot check for the presence of necessary headers. Please upgrade to MozillaBuild; see http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites])
2145 AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
2149 AC_CHECK_HEADERS(atlbase.h wpcapi.h)
2165 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2172 CFLAGS="$CFLAGS -Dunix"
2173 CXXFLAGS="$CXXFLAGS -Dunix"
2174 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2176 DSO_PIC_CFLAGS='-fPIC -DPIC'
2177 DSO_LDOPTS='-shared'
2178 BIN_FLAGS='-Wl,--export-dynamic'
2180 DSO_PIC_CFLAGS='-fPIC -DPIC'
2181 DLL_SUFFIX=".so.1.0"
2182 DSO_LDOPTS='-shared'
2184 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2185 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2186 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2187 if test "$LIBRUNPATH"; then
2188 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2190 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2191 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2196 AC_DEFINE(_QNX_SOURCE)
2199 WARNINGS_AS_ERRORS=''
2200 MOZ_OPTIMIZE_FLAGS="-O"
2201 MOZ_DEBUG_FLAGS="-gstabs"
2204 LIBS="$LIBS -lsocket -lstdc++"
2205 _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2206 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2207 if test "$with_x" != "yes"
2209 _PLATFORM_DEFAULT_TOOLKIT="photon"
2210 TK_CFLAGS='-I/usr/include/photon'
2213 case "${target_cpu}" in
2215 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
2218 case "${host_cpu}" in
2226 DLL_SUFFIX=".so.1.0"
2228 DSO_PIC_CFLAGS='-fPIC'
2229 DSO_LDOPTS='-shared -fPIC'
2230 if test "$LIBRUNPATH"; then
2231 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2236 AC_DEFINE(NO_PW_GECOS)
2237 AC_DEFINE(NO_UDSOCK)
2238 AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2240 MKSHLIB_FORCE_ALL='-all'
2241 MKSHLIB_UNFORCE_ALL='-none'
2243 AS_DASH_C_FLAG='-Wc/names=as_is'
2245 DSO_LDOPTS='-shared -auto_symvec'
2247 MOZ_DEBUG_LDFLAGS='-g'
2249 CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2250 CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2255 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2256 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2264 IMPORT_LIB_SUFFIX=lib
2267 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2268 MOZ_ENABLE_POSTSCRIPT=
2271 MOZ_USER_DIR="Mozilla"
2273 if test "$MOZTOOLS"; then
2274 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2276 AC_MSG_ERROR([MOZTOOLS is not set])
2280 if test -n "$GNU_CC"; then
2282 AC_DEFINE(XP_OS2_EMX)
2283 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2284 AC_DEFINE(TCPV40HDRS)
2287 CFLAGS="$CFLAGS -Zomf"
2288 CXXFLAGS="$CXXFLAGS -Zomf"
2290 BIN_FLAGS='-Zlinker /ST:0x100000'
2294 WARNINGS_AS_ERRORS='-Werror'
2295 MOZ_DEBUG_FLAGS="-g -fno-inline"
2296 MOZ_OPTIMIZE_FLAGS="-O2"
2297 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2298 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcomct.lib'
2299 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2300 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2301 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2302 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2303 LDFLAGS="$LDFLAGS -Zhigh-mem"
2304 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2305 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2308 # GCC for OS/2 currently predefines these, but we don't want them
2309 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2310 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2312 AC_CACHE_CHECK(for __declspec(dllexport),
2314 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2316 ac_os2_declspec="yes",
2317 ac_os2_declspec="no")])
2318 if test "$ac_os2_declspec" = "yes"; then
2320 MOZ_OS2_USE_DECLSPEC='1'
2323 # Visual Age C++ build
2324 elif test "$VACPP" = "yes"; then
2325 MOZ_BUILD_ROOT=`pwd -D`
2328 AR_FLAGS='/NOL /NOI /O:$(subst /,\\,$@)'
2337 CFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9"
2338 CXXFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9 /Gx+"
2339 MOZ_DEBUG_FLAGS="/Ti+"
2340 WARNINGS_AS_ERRORS='-WX'
2341 MOZ_OPTIMIZE_FLAGS="/O+ /Gl+ /G5 /qarch=pentium"
2343 MOZ_DEBUG_LDFLAGS="/DE"
2344 MOZ_OPTIMIZE_LDFLAGS="/OPTFUNC /EXEPACK:2 /PACKCODE /PACKDATA"
2347 IMPLIB='implib /NOL /NOI'
2348 FILTER='cppfilt -q -B -P'
2349 AC_DEFINE(NO_ANSI_KEYWORDS)
2352 AC_DEFINE(XP_OS2_VACPP)
2353 AC_DEFINE(TCPV40HDRS)
2354 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2355 AC_DEFINE(STDC_HEADERS)
2356 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2357 MKSHLIB='$(LD) $(DSO_LDOPTS)'
2358 MKCSHLIB='$(LD) $(DSO_LDOPTS)'
2359 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2360 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcomct.lib'
2361 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2362 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2367 if test "$GNU_CC"; then
2368 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2369 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2372 MOZ_DEBUG_FLAGS='-g'
2373 ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2374 CFLAGS="$CFLAGS -ieee"
2375 CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
2376 DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2379 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2380 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2381 MKSHLIB_FORCE_ALL='-all'
2382 MKSHLIB_UNFORCE_ALL='-none'
2383 dnl Might fix the libxpcom.so breakage on this platform as well....
2384 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2385 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2387 if test -z "$GNU_CXX"; then
2390 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2394 DIRENT_INO=d_stat.st_ino
2395 dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2396 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2397 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2398 dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2399 AC_DEFINE(STDC_HEADERS)
2400 if test "$no_x" = "yes"; then
2401 _PLATFORM_DEFAULT_TOOLKIT='photon'
2402 TK_CFLAGS='-I/usr/nto/include/photon'
2403 TK_LIBS='-lphoton -lphrender'
2408 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2409 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2410 CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2411 if test ! "$GNU_CC"; then
2416 dnl the qsort routine under solaris is faulty
2419 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2421 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2422 # libraries one level up (e.g. libnspr4.so)
2423 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
2425 if test -z "$GNU_CC"; then
2427 MOZ_FIX_LINK_PATHS='-R $(LIBXUL_DIST)/bin'
2428 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2430 if test "$CPU_ARCH" != "sparc"; then
2431 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
2432 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife -norunpath"
2434 # Do not use -xbuiltin on SPARC to get around a bug of compiler
2435 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%none"
2436 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%none -features=tmplife -norunpath"
2439 LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2440 if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2441 _SAVE_LDFLAGS=$LDFLAGS
2442 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2443 AC_TRY_LINK([#include <stdio.h>],
2444 [printf("Hello World\n");],
2446 [LDFLAGS=$_SAVE_LDFLAGS])
2448 WARNINGS_AS_ERRORS='-Werror'
2449 MOZ_OPTIMIZE_FLAGS="-xO4"
2450 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2451 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2452 MKSHLIB_FORCE_ALL='-z allextract'
2453 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2454 DSO_LDOPTS='-G -z muldefs'
2460 AS='/usr/ccs/bin/as'
2461 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2463 TARGET_COMPILER_ABI="sunc"
2464 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2465 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2466 AC_MSG_CHECKING([for Forte compiler version >= WS6U2])
2470 [#if (__SUNPRO_CC < 0x530)
2473 _BAD_COMPILER=,_BAD_COMPILER=1)
2474 if test -n "$_BAD_COMPILER"; then
2476 AC_MSG_ERROR([Forte version WS6U2 or higher is required to build. Your compiler version is $CC_VERSION .])
2480 AC_MSG_RESULT([$_res])
2483 ASFLAGS="$ASFLAGS -fPIC"
2486 _WARNINGS_CXXFLAGS=''
2487 if test "$OS_RELEASE" = "5.3"; then
2488 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2491 if test "$OS_RELEASE" = "5.5.1"; then
2492 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2497 DSO_LDOPTS='-Bdynamic'
2498 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2499 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2501 AC_DEFINE(SPRINTF_RETURNS_STRING)
2502 case "$(target_os)" in
2504 DLL_SUFFIX='.so.1.0'
2510 NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2514 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2519 dnl Only one oddball right now (QNX), but this gives us flexibility
2520 dnl if any other platforms need to override this in the future.
2521 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2523 dnl ========================================================
2524 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2525 dnl by now will not have any way to link most binaries (tests
2526 dnl as well as viewer, apprunner, etc.), because some symbols
2527 dnl will be left out of the "composite" .so's by ld as unneeded.
2528 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2529 dnl they can link in the static libs that provide the missing
2531 dnl ========================================================
2532 NO_LD_ARCHIVE_FLAGS=
2533 if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2534 NO_LD_ARCHIVE_FLAGS=1
2538 NO_LD_ARCHIVE_FLAGS=
2541 NO_LD_ARCHIVE_FLAGS=
2544 NO_LD_ARCHIVE_FLAGS=
2546 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
2547 if test -z "$GNU_CC"; then
2548 NO_LD_ARCHIVE_FLAGS=
2552 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2555 dnl Indicate that platform requires special thread safe
2556 dnl locking when starting up the OJI JVM
2557 dnl (see mozilla/modules/oji/src/nsJVMManager.cpp)
2558 dnl ========================================================
2561 AC_DEFINE(MOZ_OJI_REQUIRE_THREAD_SAFE_ON_STARTUP)
2565 dnl ========================================================
2566 dnl = Flags to strip unused symbols from .so components
2567 dnl ========================================================
2569 *-linux*|*-kfreebsd*-gnu)
2570 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2573 if test -z "$GNU_CC"; then
2574 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2576 if test -z "$GCC_USE_GNU_LD"; then
2577 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2579 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2584 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2587 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2589 *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
2590 if test -n "$GNU_CC"; then
2591 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2596 if test -z "$COMPILE_ENVIRONMENT"; then
2597 SKIP_COMPILER_CHECKS=1
2598 SKIP_LIBRARY_CHECKS=1
2601 if test -z "$SKIP_COMPILER_CHECKS"; then
2602 dnl Checks for typedefs, structures, and compiler characteristics.
2603 dnl ========================================================
2611 AC_STRUCT_ST_BLKSIZE
2612 AC_MSG_CHECKING(for siginfo_t)
2613 AC_CACHE_VAL(ac_cv_siginfo_t,
2614 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2615 #include <signal.h>],
2617 [ac_cv_siginfo_t=true],
2618 [ac_cv_siginfo_t=false])])
2619 if test "$ac_cv_siginfo_t" = true ; then
2620 AC_DEFINE(HAVE_SIGINFO_T)
2626 dnl Visual Age for os/2 also defines size_t and off_t in certain
2627 dnl header files. These defines make Visual Age use the mozilla
2629 if test "$VACPP" = "yes"; then
2634 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2635 dnl ========================================================
2636 AC_MSG_CHECKING(for int16_t)
2637 AC_CACHE_VAL(ac_cv_int16_t,
2638 [AC_TRY_COMPILE([#include <stdio.h>
2639 #include <sys/types.h>],
2641 [ac_cv_int16_t=true],
2642 [ac_cv_int16_t=false])])
2643 if test "$ac_cv_int16_t" = true ; then
2644 AC_DEFINE(HAVE_INT16_T)
2649 AC_MSG_CHECKING(for int32_t)
2650 AC_CACHE_VAL(ac_cv_int32_t,
2651 [AC_TRY_COMPILE([#include <stdio.h>
2652 #include <sys/types.h>],
2654 [ac_cv_int32_t=true],
2655 [ac_cv_int32_t=false])])
2656 if test "$ac_cv_int32_t" = true ; then
2657 AC_DEFINE(HAVE_INT32_T)
2662 AC_MSG_CHECKING(for int64_t)
2663 AC_CACHE_VAL(ac_cv_int64_t,
2664 [AC_TRY_COMPILE([#include <stdio.h>
2665 #include <sys/types.h>],
2667 [ac_cv_int64_t=true],
2668 [ac_cv_int64_t=false])])
2669 if test "$ac_cv_int64_t" = true ; then
2670 AC_DEFINE(HAVE_INT64_T)
2675 AC_MSG_CHECKING(for int64)
2676 AC_CACHE_VAL(ac_cv_int64,
2677 [AC_TRY_COMPILE([#include <stdio.h>
2678 #include <sys/types.h>],
2681 [ac_cv_int64=false])])
2682 if test "$ac_cv_int64" = true ; then
2683 AC_DEFINE(HAVE_INT64)
2688 AC_MSG_CHECKING(for uint)
2689 AC_CACHE_VAL(ac_cv_uint,
2690 [AC_TRY_COMPILE([#include <stdio.h>
2691 #include <sys/types.h>],
2694 [ac_cv_uint=false])])
2695 if test "$ac_cv_uint" = true ; then
2696 AC_DEFINE(HAVE_UINT)
2701 AC_MSG_CHECKING(for uint_t)
2702 AC_CACHE_VAL(ac_cv_uint_t,
2703 [AC_TRY_COMPILE([#include <stdio.h>
2704 #include <sys/types.h>],
2706 [ac_cv_uint_t=true],
2707 [ac_cv_uint_t=false])])
2708 if test "$ac_cv_uint_t" = true ; then
2709 AC_DEFINE(HAVE_UINT_T)
2714 AC_MSG_CHECKING(for uint16_t)
2715 AC_CACHE_VAL(ac_cv_uint16_t,
2716 [AC_TRY_COMPILE([#include <stdio.h>
2717 #include <sys/types.h>],
2718 [uint16_t foo = 0;],
2719 [ac_cv_uint16_t=true],
2720 [ac_cv_uint16_t=false])])
2721 if test "$ac_cv_uint16_t" = true ; then
2722 AC_DEFINE(HAVE_UINT16_T)
2728 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2729 dnl are defined when compiling C++ but not C. Since the result of this
2730 dnl test is used only in C++, do it in C++.
2733 AC_MSG_CHECKING(for uname.domainname)
2734 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2735 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2736 [ struct utsname *res; char *domain;
2737 (void)uname(res); if (res != 0) { domain = res->domainname; } ],
2738 [ac_cv_have_uname_domainname_field=true],
2739 [ac_cv_have_uname_domainname_field=false])])
2741 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2742 AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2748 AC_MSG_CHECKING(for uname.__domainname)
2749 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2750 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2751 [ struct utsname *res; char *domain;
2752 (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
2753 [ac_cv_have_uname_us_domainname_field=true],
2754 [ac_cv_have_uname_us_domainname_field=false])])
2756 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2757 AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2765 dnl Check for usable wchar_t (2 bytes, unsigned)
2766 dnl (we really don't need the unsignedness check anymore)
2767 dnl ========================================================
2769 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2770 ac_cv_have_usable_wchar_v2,
2771 [AC_TRY_COMPILE([#include <stddef.h>
2772 $configure_static_assert_macros],
2773 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2774 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2775 ac_cv_have_usable_wchar_v2="yes",
2776 ac_cv_have_usable_wchar_v2="no")])
2777 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2778 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2779 HAVE_CPP_2BYTE_WCHAR_T=1
2781 dnl This is really gcc-only
2782 dnl Do this test using CXX only since some versions of gcc
2783 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2784 dnl only have short-wchar support for c++.
2785 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2789 _SAVE_CXXFLAGS=$CXXFLAGS
2790 CXXFLAGS="$CXXFLAGS -fshort-wchar"
2792 AC_CACHE_CHECK(for compiler -fshort-wchar option,
2793 ac_cv_have_usable_wchar_option_v2,
2794 [AC_TRY_COMPILE([#include <stddef.h>
2795 $configure_static_assert_macros],
2796 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2797 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2798 ac_cv_have_usable_wchar_option_v2="yes",
2799 ac_cv_have_usable_wchar_option_v2="no")])
2801 if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2802 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2803 HAVE_CPP_2BYTE_WCHAR_T=1
2805 CXXFLAGS=$_SAVE_CXXFLAGS
2810 dnl Check for .hidden assembler directive and visibility attribute.
2811 dnl Borrowed from glibc configure.in
2812 dnl ===============================================================
2813 if test "$GNU_CC"; then
2814 AC_CACHE_CHECK(for visibility(hidden) attribute,
2815 ac_cv_visibility_hidden,
2816 [cat > conftest.c <<EOF
2817 int foo __attribute__ ((visibility ("hidden"))) = 1;
2819 ac_cv_visibility_hidden=no
2820 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2821 if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2822 ac_cv_visibility_hidden=yes
2827 if test "$ac_cv_visibility_hidden" = "yes"; then
2828 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2830 AC_CACHE_CHECK(for visibility(default) attribute,
2831 ac_cv_visibility_default,
2832 [cat > conftest.c <<EOF
2833 int foo __attribute__ ((visibility ("default"))) = 1;
2835 ac_cv_visibility_default=no
2836 if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2837 if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2838 ac_cv_visibility_default=yes
2843 if test "$ac_cv_visibility_default" = "yes"; then
2844 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2846 AC_CACHE_CHECK(for visibility pragma support,
2847 ac_cv_visibility_pragma,
2848 [cat > conftest.c <<EOF
2849 #pragma GCC visibility push(hidden)
2851 #pragma GCC visibility push(default)
2852 int foo_default = 1;
2854 ac_cv_visibility_pragma=no
2855 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2856 if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2857 if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2858 ac_cv_visibility_pragma=yes
2864 if test "$ac_cv_visibility_pragma" = "yes"; then
2865 AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2866 ac_cv_have_visibility_class_bug,
2867 [cat > conftest.c <<EOF
2868 #pragma GCC visibility push(hidden)
2869 struct __attribute__ ((visibility ("default"))) TestStruct {
2872 __attribute__ ((visibility ("default"))) void TestFunc() {
2876 ac_cv_have_visibility_class_bug=no
2877 if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2878 ac_cv_have_visibility_class_bug=yes
2880 if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2881 ac_cv_have_visibility_class_bug=yes
2884 rm -rf conftest.{c,S}
2887 AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2888 ac_cv_have_visibility_builtin_bug,
2889 [cat > conftest.c <<EOF
2890 #pragma GCC visibility push(hidden)
2891 #pragma GCC visibility push(default)
2893 #pragma GCC visibility pop
2895 __attribute__ ((visibility ("default"))) void Func() {
2897 memset(c, 0, sizeof(c));
2900 ac_cv_have_visibility_builtin_bug=no
2901 if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2902 ac_cv_have_visibility_builtin_bug=yes
2904 if test `grep -c "@PLT" conftest.S` = 0; then
2905 ac_cv_visibility_builtin_bug=yes
2908 rm -f conftest.{c,S}
2910 if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2911 "$ac_cv_have_visibility_class_bug" = "no"; then
2912 VISIBILITY_FLAGS='-I$(DIST)/include/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2913 WRAP_SYSTEM_INCLUDES=1
2915 VISIBILITY_FLAGS='-fvisibility=hidden'
2916 fi # have visibility pragma bug
2917 fi # have visibility pragma
2918 fi # have visibility(default) attribute
2919 fi # have visibility(hidden) attribute
2922 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2923 AC_SUBST(VISIBILITY_FLAGS)
2925 dnl Checks for header files.
2926 dnl ========================================================
2928 case "$target_os" in
2930 # for stuff like -lXshm
2931 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2934 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
2935 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
2936 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
2937 AC_CHECK_HEADERS(malloc.h)
2938 AC_CHECK_HEADERS(X11/XKBlib.h)
2940 dnl These are all the places some variant of statfs can be hiding.
2941 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2943 dnl Try for MMX support
2944 dnl NB - later gcc versions require -mmmx for this header to be successfully
2945 dnl included (or another option which implies it, such as -march=pentium-mmx)
2946 AC_CHECK_HEADERS(mmintrin.h)
2948 dnl Check whether the compiler supports the new-style C++ standard
2949 dnl library headers (i.e. <new>) or needs the old "new.h"
2952 AC_CHECK_HEADER(new, [NEW_H=new])
2953 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
2956 AC_ARG_ENABLE(dtrace,
2957 [ --enable-dtrace build with dtrace support if available (default=no)],
2958 [enable_dtrace="yes"],)
2959 if test "x$enable_dtrace" = "xyes"; then
2960 AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
2961 if test -n "$HAVE_DTRACE"; then
2962 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
2964 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
2967 AC_SUBST(HAVE_DTRACE)
2973 AC_CHECK_HEADERS(sys/cdefs.h)
2977 dnl Checks for libraries.
2978 dnl ========================================================
2983 AC_CHECK_LIB(c_r, gethostbyname_r)
2987 dnl We don't want to link with libdl even if it's present on OS X, since
2988 dnl it's not used and not part of the default installation.
2989 dnl The same goes for BeOS.
2990 dnl We don't want to link against libm or libpthread on Darwin since
2991 dnl they both are just symlinks to libSystem and explicitly linking
2992 dnl against libSystem causes issues when debugging (see bug 299601).
2999 AC_CHECK_LIB(m, atan)
3000 AC_CHECK_LIB(dl, dlopen,
3001 AC_CHECK_HEADER(dlfcn.h,
3003 AC_DEFINE(HAVE_LIBDL)))
3007 _SAVE_CFLAGS="$CFLAGS"
3008 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3009 AC_CHECK_FUNCS(dladdr)
3010 CFLAGS="$_SAVE_CFLAGS"
3012 if test ! "$GNU_CXX"; then
3016 AC_CHECK_LIB(C_r, demangle)
3019 AC_CHECK_LIB(C, demangle)
3023 AC_CHECK_LIB(socket, socket)
3026 XLIBS="$X_EXTRA_LIBS"
3028 dnl ========================================================
3029 dnl Checks for X libraries.
3030 dnl Ordering is important.
3031 dnl Xt is dependent upon SM as of X11R6
3032 dnl ========================================================
3033 if test "$no_x" = "yes"; then
3036 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3037 XLIBS="-lX11 $XLIBS"
3038 _SAVE_LDFLAGS="$LDFLAGS"
3039 LDFLAGS="$XLDFLAGS $LDFLAGS"
3040 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3041 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3042 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3043 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3046 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3047 unset ac_cv_lib_Xt_XtFree
3048 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3049 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3050 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3051 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3054 # AIX needs the motif library linked before libXt to prevent
3055 # crashes in plugins linked against Motif - Bug #98892
3056 case "${target_os}" in
3058 XT_LIBS="-lXm $XT_LIBS"
3062 dnl ========================================================
3063 dnl = Check for XShm
3064 dnl ========================================================
3065 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3067 AC_CHECK_HEADER(X11/extensions/XShm.h)
3068 if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3069 test -n "$_HAVE_XSHM_XEXT"; then
3070 AC_DEFINE(HAVE_XSHM)
3073 dnl ========================================================
3075 dnl ========================================================
3076 AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3078 AC_CHECK_HEADER(X11/extensions/XIElib.h)
3080 if test "$MOZ_XIE_LIBS"; then
3081 dnl ====================================================
3082 dnl = If XIE is present and is desired, turn it on
3083 dnl ====================================================
3093 LDFLAGS="$_SAVE_LDFLAGS"
3095 dnl ========================================================
3096 dnl = Check for freetype2 and its functionality
3097 dnl ========================================================
3098 AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3100 if test "$_HAVE_FREETYPE2"; then
3102 _SAVE_CFLAGS="$CFLAGS"
3103 LIBS="$LIBS $FT2_LIBS"
3104 CFLAGS="$CFLAGS $FT2_CFLAGS"
3106 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3107 ac_cv_member_FT_Bitmap_Size_y_ppem,
3108 [AC_TRY_COMPILE([#include <ft2build.h>
3109 #include FT_FREETYPE_H],
3111 if (sizeof s.y_ppem) return 0;
3113 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3114 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3115 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3116 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3118 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3120 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3121 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3122 [FT_Bitmap_Size structure includes y_ppem field])
3124 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3127 CFLAGS="$_SAVE_CFLAGS"
3137 dnl ========================================================
3138 dnl = pthread support
3139 dnl = Start by checking whether the system support pthreads
3140 dnl ========================================================
3141 case "$target_os" in
3146 MOZ_CHECK_PTHREADS(pthreads,
3147 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3148 MOZ_CHECK_PTHREADS(pthread,
3149 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3150 MOZ_CHECK_PTHREADS(c_r,
3151 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3152 MOZ_CHECK_PTHREADS(c,
3161 dnl ========================================================
3162 dnl Check the command line for --with-pthreads
3163 dnl ========================================================
3164 MOZ_ARG_WITH_BOOL(pthreads,
3165 [ --with-pthreads Force use of system pthread library with NSPR ],
3166 [ if test "$USE_PTHREADS"x = x; then
3167 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3173 dnl ========================================================
3174 dnl Do the platform specific pthread hackery
3175 dnl ========================================================
3176 if test "$USE_PTHREADS"x != x
3179 dnl See if -pthread is supported.
3182 ac_cv_have_dash_pthread=no
3183 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3184 echo 'int main() { return 0; }' | cat > conftest.c
3185 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3186 if test $? -eq 0; then
3187 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3188 ac_cv_have_dash_pthread=yes
3189 case "$target_os" in
3191 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3194 CFLAGS="$CFLAGS -pthread"
3195 CXXFLAGS="$CXXFLAGS -pthread"
3201 AC_MSG_RESULT($ac_cv_have_dash_pthread)
3204 dnl See if -pthreads is supported.
3206 ac_cv_have_dash_pthreads=no
3207 if test "$ac_cv_have_dash_pthread" = "no"; then
3208 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3209 echo 'int main() { return 0; }' | cat > conftest.c
3210 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3211 if test $? -eq 0; then
3212 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3213 ac_cv_have_dash_pthreads=yes
3214 CFLAGS="$CFLAGS -pthreads"
3215 CXXFLAGS="$CXXFLAGS -pthreads"
3219 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3224 AC_DEFINE(_REENTRANT)
3225 AC_DEFINE(_THREAD_SAFE)
3226 dnl -pthread links in -lc_r, so don't specify it explicitly.
3227 if test "$ac_cv_have_dash_pthread" = "yes"; then
3228 _PTHREAD_LDFLAGS="-pthread"
3230 _PTHREAD_LDFLAGS="-lc_r"
3234 *-*-openbsd*|*-*-bsdi*)
3235 AC_DEFINE(_REENTRANT)
3236 AC_DEFINE(_THREAD_SAFE)
3237 dnl -pthread links in -lc_r, so don't specify it explicitly.
3238 if test "$ac_cv_have_dash_pthread" = "yes"; then
3239 _PTHREAD_LDFLAGS="-pthread"
3243 *-*-linux*|*-*-kfreebsd*-gnu)
3244 AC_DEFINE(_REENTRANT)
3248 AC_DEFINE(_REENTRANT)
3252 AC_DEFINE(_REENTRANT)
3256 AC_DEFINE(_REENTRANT)
3260 AC_DEFINE(_REENTRANT)
3264 AC_DEFINE(_REENTRANT)
3265 if test ! "$GNU_CC"; then
3266 CFLAGS="$CFLAGS -mt"
3267 CXXFLAGS="$CXXFLAGS -mt"
3271 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3274 dnl ========================================================
3275 dnl See if mmap sees writes
3276 dnl For cross compiling, just define it as no, which is a safe default
3277 dnl ========================================================
3278 AC_MSG_CHECKING(whether mmap() sees write()s)
3284 #include <sys/mman.h>
3285 #include <sys/types.h>
3286 #include <sys/stat.h>
3289 char fname[] = "conftest.file";
3290 char zbuff[1024]; /* Fractional page is probably worst case */
3297 fd = open(fname, O_RDWR | O_CREAT, 0660);
3300 write(fd, zbuff, sizeof(zbuff));
3301 lseek(fd, 0, SEEK_SET);
3302 map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3303 if(map==(char*)-1) return 2;
3304 for(i=0; fname[i]; i++) {
3305 int rc = write(fd, &fname[i], 1);
3306 if(map[i]!=fname[i]) return 4;
3313 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3315 AC_MSG_RESULT("$result")
3317 if test "$result" = "no"; then
3318 AC_DEFINE(MMAP_MISSES_WRITES)
3322 dnl Checks for library functions.
3323 dnl ========================================================
3324 AC_PROG_GCC_TRADITIONAL
3326 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64)
3327 AC_CHECK_FUNCS(flockfile getpagesize)
3329 dnl localtime_r and strtok_r are only present on MacOS version 10.2 and higher
3330 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100200"; then
3331 AC_CHECK_FUNCS(localtime_r strtok_r)
3334 dnl check for wcrtomb/mbrtowc
3335 dnl =======================================================================
3336 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3339 AC_CACHE_CHECK(for wcrtomb,
3341 [AC_TRY_LINK([#include <wchar.h>],
3342 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3343 ac_cv_have_wcrtomb="yes",
3344 ac_cv_have_wcrtomb="no")])
3345 if test "$ac_cv_have_wcrtomb" = "yes"; then
3346 AC_DEFINE(HAVE_WCRTOMB)
3348 AC_CACHE_CHECK(for mbrtowc,
3350 [AC_TRY_LINK([#include <wchar.h>],
3351 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3352 ac_cv_have_mbrtowc="yes",
3353 ac_cv_have_mbrtowc="no")])
3354 if test "$ac_cv_have_mbrtowc" = "yes"; then
3355 AC_DEFINE(HAVE_MBRTOWC)
3362 ac_cv_func_res_ninit,
3365 #define _BSD_SOURCE 1
3369 [int foo = res_ninit(&_res);],
3370 [ac_cv_func_res_ninit=yes],
3371 [ac_cv_func_res_ninit=no])
3374 if test "$ac_cv_func_res_ninit" = "yes"; then
3375 AC_DEFINE(HAVE_RES_NINIT)
3376 dnl must add the link line we do something as foolish as this... dougt
3378 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3379 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3384 [for gnu_get_libc_version()],
3385 ac_cv_func_gnu_get_libc_version,
3387 #ifdef HAVE_GNU_LIBC_VERSION_H
3388 #include <gnu/libc-version.h>
3391 [const char *glibc_version = gnu_get_libc_version();],
3392 [ac_cv_func_gnu_get_libc_version=yes],
3393 [ac_cv_func_gnu_get_libc_version=no]
3397 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3398 AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3402 os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|beos*)
3406 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3407 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3408 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3410 LIBS="$LIBS $_ICONV_LIBS"
3419 iconv_t h = iconv_open("", "");
3420 iconv(h, NULL, NULL, NULL, NULL);
3423 [ac_cv_func_iconv=yes],
3424 [ac_cv_func_iconv=no]
3427 if test "$ac_cv_func_iconv" = "yes"; then
3428 AC_DEFINE(HAVE_ICONV)
3429 DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3430 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3431 LIBICONV="$_ICONV_LIBS"
3433 [for iconv() with const input],
3434 ac_cv_func_const_iconv,
3440 const char *input = "testing";
3441 iconv_t h = iconv_open("", "");
3442 iconv(h, &input, NULL, NULL, NULL);
3445 [ac_cv_func_const_iconv=yes],
3446 [ac_cv_func_const_iconv=no]
3449 if test "$ac_cv_func_const_iconv" = "yes"; then
3450 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3462 dnl **********************
3463 dnl *** va_copy checks ***
3464 dnl **********************
3465 dnl we currently check for all three va_copy possibilities, so we get
3466 dnl all results in config.log for bug reports.
3467 AC_MSG_CHECKING(for an implementation of va_copy())
3468 AC_CACHE_VAL(ac_cv_va_copy,[
3471 void f (int i, ...) {
3472 va_list args1, args2;
3473 va_start (args1, i);
3474 va_copy (args2, args1);
3475 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3477 va_end (args1); va_end (args2);
3479 int main() { f (0, 42); return 0; }],
3485 AC_MSG_RESULT($ac_cv_va_copy)
3486 AC_MSG_CHECKING(for an implementation of __va_copy())
3487 AC_CACHE_VAL(ac_cv___va_copy,[
3490 void f (int i, ...) {
3491 va_list args1, args2;
3492 va_start (args1, i);
3493 __va_copy (args2, args1);
3494 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3496 va_end (args1); va_end (args2);
3498 int main() { f (0, 42); return 0; }],
3499 ac_cv___va_copy=yes,
3504 AC_MSG_RESULT($ac_cv___va_copy)
3505 AC_MSG_CHECKING(whether va_lists can be copied by value)
3506 AC_CACHE_VAL(ac_cv_va_val_copy,[
3509 void f (int i, ...) {
3510 va_list args1, args2;
3511 va_start (args1, i);
3513 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3515 va_end (args1); va_end (args2);
3517 int main() { f (0, 42); return 0; }],
3518 ac_cv_va_val_copy=yes,
3519 ac_cv_va_val_copy=no,
3520 ac_cv_va_val_copy=yes
3523 if test "x$ac_cv_va_copy" = "xyes"; then
3524 AC_DEFINE(VA_COPY, va_copy)
3525 AC_DEFINE(HAVE_VA_COPY)
3526 elif test "x$ac_cv___va_copy" = "xyes"; then
3527 AC_DEFINE(VA_COPY, __va_copy)
3528 AC_DEFINE(HAVE_VA_COPY)
3531 if test "x$ac_cv_va_val_copy" = "xno"; then
3532 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3534 AC_MSG_RESULT($ac_cv_va_val_copy)
3536 dnl Check for dll-challenged libc's.
3537 dnl This check is apparently only needed for Linux.
3540 dnl ===================================================================
3543 rm -rf conftest* _conftest
3545 cat >> conftest.C <<\EOF
3550 void __dump_link_map(void) {
3551 struct link_map *map = _dl_loaded;
3552 while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
3555 dlopen("./conftest1.so",RTLD_LAZY);
3556 dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
3557 dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
3558 dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
3562 /* _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).*/
3563 int main() { printf("./conftest1.so\n"); }
3567 $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
3569 cat >> conftest1.C <<\EOF
3571 void foo(void) {printf("foo in dll called\n");}
3573 ${CXX-g++} -fPIC -c -g conftest1.C
3574 ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
3575 ${CXX-g++} -g conftest.C -o conftest -ldl
3576 cp -f conftest1.so conftest _conftest
3578 if test `./conftest | grep conftest1.so | wc -l` -gt 1
3581 echo "*** Your libc has a bug that can result in loading the same dynamic"
3582 echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
3583 echo "*** or later. However, if you choose not to upgrade, the only effect"
3584 echo "*** will be excessive memory usage at runtime."
3588 rm -rf conftest* _conftest
3589 dnl ===================================================================
3593 dnl ===================================================================
3594 dnl ========================================================
3595 dnl By default, turn rtti and exceptions off on g++/egcs
3596 dnl ========================================================
3597 if test "$GNU_CXX"; then
3599 AC_MSG_CHECKING(for C++ exceptions flag)
3601 dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
3602 AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
3603 [echo "int main() { return 0; }" | cat > conftest.C
3605 ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
3607 if egrep "warning.*renamed" conftest.out >/dev/null; then
3608 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
3610 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
3615 AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
3616 _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
3617 _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
3620 dnl ========================================================
3621 dnl Put your C++ language/feature checks below
3622 dnl ========================================================
3626 if test "$GNU_CC"; then
3627 AC_CACHE_CHECK(for gcc 3.0 ABI,
3628 ac_cv_gcc_three_abi,
3631 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
3637 ac_cv_gcc_three_abi="yes",
3638 ac_cv_gcc_three_abi="no")])
3639 if test "$ac_cv_gcc_three_abi" = "yes"; then
3640 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc3}"
3643 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc2}"
3646 AC_SUBST(HAVE_GCC3_ABI)
3649 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
3651 [AC_TRY_COMPILE(class X {
3652 public: explicit X(int i) : i_(i) {}
3656 ac_cv_cpp_explicit=yes,
3657 ac_cv_cpp_explicit=no)])
3658 if test "$ac_cv_cpp_explicit" = yes ; then
3659 AC_DEFINE(HAVE_CPP_EXPLICIT)
3662 AC_CACHE_CHECK(for C++ \"typename\" keyword,
3664 [AC_TRY_COMPILE(class param {
3666 typedef unsigned long num_type;
3669 template <class T> class tplt {
3671 typedef typename T::num_type t_num_type;
3672 t_num_type foo(typename T::num_type num) {
3678 ac_cv_cpp_typename=yes,
3679 ac_cv_cpp_typename=no)])
3680 if test "$ac_cv_cpp_typename" = yes ; then
3681 AC_DEFINE(HAVE_CPP_TYPENAME)
3684 dnl Check for support of modern template specialization syntax
3685 dnl Test code and requirement from scc@netscape.com.
3686 dnl Autoconf cut-and-paste job by waterson@netscape.com
3687 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3688 ac_cv_cpp_modern_specialize_template_syntax,
3689 [AC_TRY_COMPILE(template <class T> struct X { int a; };
3691 template <> struct X<Y> { double a; };,
3694 ac_cv_cpp_modern_specialize_template_syntax=yes,
3695 ac_cv_cpp_modern_specialize_template_syntax=no)])
3696 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
3697 AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
3701 dnl Some compilers support only full specialization, and some don't.
3702 AC_CACHE_CHECK(whether partial template specialization works,
3703 ac_cv_cpp_partial_specialization,
3704 [AC_TRY_COMPILE(template <class T> class Foo {};
3705 template <class T> class Foo<T*> {};,
3707 ac_cv_cpp_partial_specialization=yes,
3708 ac_cv_cpp_partial_specialization=no)])
3709 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3710 AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3713 dnl Some compilers have limited support for operators with templates;
3714 dnl specifically, it is necessary to define derived operators when a base
3715 dnl class's operator declaration should suffice.
3716 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
3717 ac_cv_need_derived_template_operators,
3718 [AC_TRY_COMPILE([template <class T> class Base { };
3720 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
3721 template <class T> class Derived : public Base<T> { };],
3722 [Derived<char> a, b;
3723 Base<char> c = a + b;
3725 ac_cv_need_derived_template_operators=no,
3726 ac_cv_need_derived_template_operators=yes)])
3727 if test "$ac_cv_need_derived_template_operators" = yes ; then
3728 AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
3732 dnl Some compilers have trouble detecting that a template class
3733 dnl that derives from another template is actually an instance
3734 dnl of the base class. This test checks for that.
3735 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
3736 ac_cv_need_cpp_template_cast_to_base,
3737 [AC_TRY_COMPILE([template <class T> class Base { };
3738 template <class T> class Derived : public Base<T> { };
3739 template <class T> int foo(const Base<T>&) { return 0; }],
3740 [Derived<char> bar; return foo(bar);],
3741 ac_cv_need_cpp_template_cast_to_base=no,
3742 ac_cv_need_cpp_template_cast_to_base=yes)])
3743 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
3744 AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
3747 dnl Some compilers have trouble resolving the ambiguity between two
3748 dnl functions whose arguments differ only by cv-qualifications.
3749 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
3750 ac_cv_can_resolve_const_ambiguity,
3752 template <class T> class ptrClass {
3756 template <class T> T* a(ptrClass<T> *arg) {
3761 const T* a(const ptrClass<T> *arg) {
3767 ac_cv_can_resolve_const_ambiguity=yes,
3768 ac_cv_can_resolve_const_ambiguity=no)])
3769 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
3770 AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
3774 dnl We don't do exceptions on unix. The only reason this used to be here
3775 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses
3776 dnl exceptions. But, we turn exceptions off by default and this test breaks.
3777 dnl So im commenting this out until someone writes some artificial
3778 dnl intelligence to detect not only if the compiler has exceptions, but if
3779 dnl they are enabled as well.
3781 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
3782 dnl ac_cv_cpp_exceptions,
3783 dnl [AC_TRY_COMPILE(class X { public: X() {} };
3784 dnl static void F() { throw X(); },
3785 dnl try { F(); } catch(X & e) { },
3786 dnl ac_cv_cpp_exceptions=yes,
3787 dnl ac_cv_cpp_exceptions=no)])
3788 dnl if test $ac_cv_cpp_exceptions = yes ; then
3789 dnl AC_DEFINE(HAVE_CPP_EXCEPTIONS)
3792 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
3793 dnl supports it well enough to allow us to use it to change access, but not
3794 dnl to resolve ambiguity. The next two tests determine how well the |using|
3795 dnl keyword is supported.
3797 dnl Check to see if we can change access with |using|. Test both a
3798 dnl legal and an illegal example.
3799 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
3800 ac_cv_cpp_access_changing_using2,
3802 class A { protected: int foo() { return 0; } };
3803 class B : public A { public: using A::foo; };,
3804 B b; return b.foo();,
3806 class A { public: int foo() { return 1; } };
3807 class B : public A { private: using A::foo; };,
3808 B b; return b.foo();,
3809 ac_cv_cpp_access_changing_using2=no,
3810 ac_cv_cpp_access_changing_using2=yes)],
3811 ac_cv_cpp_access_changing_using2=no)])
3812 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
3813 AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
3816 dnl Check to see if we can resolve ambiguity with |using|.
3817 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3818 ac_cv_cpp_ambiguity_resolving_using,
3819 [AC_TRY_COMPILE(class X {
3820 public: int go(const X&) {return 3;}
3821 int jo(const X&) {return 3;}
3823 class Y : public X {
3824 public: int go(int) {return 2;}
3825 int jo(int) {return 2;}
3827 private: using X::go;
3830 ac_cv_cpp_ambiguity_resolving_using=yes,
3831 ac_cv_cpp_ambiguity_resolving_using=no)])
3832 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3833 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3836 dnl Check to see if the |std| namespace is supported. If so, we'll want
3837 dnl to qualify any standard library calls with "std::" to ensure that
3838 dnl those functions can be resolved.
3839 AC_CACHE_CHECK(for \"std::\" namespace,
3840 ac_cv_cpp_namespace_std,
3841 [AC_TRY_COMPILE([#include <algorithm>],
3842 [return std::min(0, 1);],
3843 ac_cv_cpp_namespace_std=yes,
3844 ac_cv_cpp_namespace_std=no)])
3845 if test "$ac_cv_cpp_namespace_std" = yes ; then
3846 AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
3849 dnl Older compilers are overly ambitious with respect to using the standard
3850 dnl template library's |operator!=()| when |operator==()| is defined. In
3851 dnl which case, defining |operator!=()| in addition to |operator==()| causes
3852 dnl ambiguity at compile-time. This test checks for that case.
3853 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
3854 ac_cv_cpp_unambiguous_std_notequal,
3855 [AC_TRY_COMPILE([#include <algorithm>
3857 int operator==(const T1&, const T1&) { return 0; }
3858 int operator!=(const T1&, const T1&) { return 0; }],
3859 [T1 a,b; return a != b;],
3860 ac_cv_cpp_unambiguous_std_notequal=unambiguous,
3861 ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
3862 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
3863 AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
3867 AC_CACHE_CHECK(for C++ reinterpret_cast,
3868 ac_cv_cpp_reinterpret_cast,
3869 [AC_TRY_COMPILE(struct X { int i; };
3870 struct Y { int i; };,
3871 X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
3872 ac_cv_cpp_reinterpret_cast=yes,
3873 ac_cv_cpp_reinterpret_cast=no)])
3874 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
3875 AC_DEFINE(HAVE_CPP_NEW_CASTS)
3878 dnl See if a dynamic_cast to void* gives the most derived object.
3879 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3880 ac_cv_cpp_dynamic_cast_void_ptr,
3881 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3882 class Y { int j; public: virtual ~Y() { } };
3883 class Z : public X, public Y { int k; };
3889 return !((((void*)&mdo != (void*)subx) &&
3890 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3891 (((void*)&mdo != (void*)suby) &&
3892 ((void*)&mdo == dynamic_cast<void*>(suby))));
3894 ac_cv_cpp_dynamic_cast_void_ptr=yes,
3895 ac_cv_cpp_dynamic_cast_void_ptr=no,
3896 ac_cv_cpp_dynamic_cast_void_ptr=no)])
3897 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3898 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3902 dnl note that this one is reversed - if the test fails, then
3903 dnl we require implementations of unused virtual methods. Which
3904 dnl really blows because it means we'll have useless vtable
3906 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3907 ac_cv_cpp_unused_required,
3908 [AC_TRY_LINK(class X {private: virtual void never_called();};,
3910 ac_cv_cpp_unused_required=no,
3911 ac_cv_cpp_unused_required=yes)])
3912 if test "$ac_cv_cpp_unused_required" = yes ; then
3913 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3917 dnl Some compilers have trouble comparing a constant reference to a templatized
3918 dnl class to zero, and require an explicit operator==() to be defined that takes
3919 dnl an int. This test separates the strong from the weak.
3921 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3922 ac_cv_trouble_comparing_to_zero,
3923 [AC_TRY_COMPILE([#include <algorithm>
3924 template <class T> class Foo {};
3926 template <class T> int operator==(const T2*, const T&) { return 0; }
3927 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3928 [Foo<int> f; return (0 != f);],
3929 ac_cv_trouble_comparing_to_zero=no,
3930 ac_cv_trouble_comparing_to_zero=yes)])
3931 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3932 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3937 dnl End of C++ language/feature checks
3940 dnl ========================================================
3941 dnl = Internationalization checks
3942 dnl ========================================================
3944 dnl Internationalization and Locale support is different
3945 dnl on various UNIX platforms. Checks for specific i18n
3946 dnl features go here.
3948 dnl check for LC_MESSAGES
3949 AC_CACHE_CHECK(for LC_MESSAGES,
3950 ac_cv_i18n_lc_messages,
3951 [AC_TRY_COMPILE([#include <locale.h>],
3952 [int category = LC_MESSAGES;],
3953 ac_cv_i18n_lc_messages=yes,
3954 ac_cv_i18n_lc_messages=no)])
3955 if test "$ac_cv_i18n_lc_messages" = yes; then
3956 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3959 fi # SKIP_COMPILER_CHECKS
3962 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3963 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3966 dnl Mozilla specific options
3967 dnl ========================================================
3968 dnl The macros used for command line options
3969 dnl are defined in build/autoconf/altoptions.m4.
3972 dnl ========================================================
3974 dnl = Check for external package dependencies
3976 dnl ========================================================
3977 MOZ_ARG_HEADER(External Packages)
3981 MOZ_ARG_WITH_STRING(libxul-sdk,
3982 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
3983 LIBXUL_SDK_DIR=$withval)
3985 if test "$LIBXUL_SDK_DIR" = "yes"; then
3986 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
3987 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
3988 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
3990 if test ! -f "$LIBXUL_SDK/sdk/include/xpcom-config.h"; then
3991 AC_MSG_ERROR([$LIBXUL_SDK/sdk/include/xpcom-config.h doesn't exist])
3996 AC_SUBST(LIBXUL_SDK)
3998 dnl ========================================================
3999 dnl = If NSPR was not detected in the system,
4000 dnl = use the one in the source tree (mozilla/nsprpub)
4001 dnl ========================================================
4002 MOZ_ARG_WITH_BOOL(system-nspr,
4003 [ --with-system-nspr Use system installed NSPR],
4004 _USE_SYSTEM_NSPR=1 )
4006 if test -n "$_USE_SYSTEM_NSPR"; then
4007 AM_PATH_NSPR(4.7.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
4010 if test -n "$MOZ_NATIVE_NSPR"; then
4011 _SAVE_CFLAGS=$CFLAGS
4012 CFLAGS="$CFLAGS $NSPR_CFLAGS"
4013 AC_TRY_COMPILE([#include "prlog.h"],
4014 [#ifndef PR_STATIC_ASSERT
4015 #error PR_STATIC_ASSERT not defined
4017 [MOZ_NATIVE_NSPR=1],
4018 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
4019 CFLAGS=$_SAVE_CFLAGS
4021 NSPR_CFLAGS='`$(DEPTH)/nsprpub/config/nspr-config --prefix=$(LIBXUL_DIST) --includedir=$(LIBXUL_DIST)/include/nspr --cflags`'
4022 # explicitly set libs for Visual Age C++ for OS/2
4023 if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
4024 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''
4025 elif test "$OS_ARCH" = "WINCE"; then
4026 NSPR_CFLAGS='-I$(LIBXUL_DIST)/include/nspr'
4027 NSPR_LIBS='$(LIBXUL_DIST)/lib/nspr'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plc'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plds'$NSPR_VERSION'.lib '
4028 elif test "$OS_ARCH" = "WINNT"; then
4029 NSPR_CFLAGS='-I$(LIBXUL_DIST)/include/nspr'
4030 if test -n "$GNU_CC"; then
4031 NSPR_LIBS="-L\$(LIBXUL_DIST)/lib -lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION"
4033 NSPR_LIBS='$(LIBXUL_DIST)/lib/nspr'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plc'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plds'$NSPR_VERSION'.lib '
4036 NSPR_LIBS='`$(DEPTH)/nsprpub/config/nspr-config --prefix=$(LIBXUL_DIST) --libdir=$(LIBXUL_DIST)/lib --libs`'
4040 dnl ========================================================
4041 dnl = If NSS was not detected in the system,
4042 dnl = use the one in the source tree (mozilla/security/nss)
4043 dnl ========================================================
4045 MOZ_ARG_WITH_BOOL(system-nss,
4046 [ --with-system-nss Use system installed NSS],
4049 if test -n "$_USE_SYSTEM_NSS"; then
4050 AM_PATH_NSS(3.12.0, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4053 if test -n "$MOZ_NATIVE_NSS"; then
4054 NSS_LIBS="$NSS_LIBS -lcrmf"
4056 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4058 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4059 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4060 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4061 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4062 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX) \
4063 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)softokn$NSS_VERSION\$(DLL_SUFFIX)"
4065 if test -z "$GNU_CC" && test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4067 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4068 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4069 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4070 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4071 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4072 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)softokn$NSS_VERSION.\$(IMPORT_LIB_SUFFIX)"
4074 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION -lsoftokn$NSS_VERSION"
4078 if test -z "$SKIP_LIBRARY_CHECKS"; then
4079 dnl system JPEG support
4080 dnl ========================================================
4081 MOZ_ARG_WITH_STRING(system-jpeg,
4082 [ --with-system-jpeg[=PFX]
4083 Use system libjpeg [installed at prefix PFX]],
4086 _SAVE_CFLAGS=$CFLAGS
4087 _SAVE_LDFLAGS=$LDFLAGS
4089 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4090 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4091 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4093 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4096 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4099 if test "$SYSTEM_JPEG" = 1; then
4100 LIBS="$JPEG_LIBS $LIBS"
4101 AC_TRY_COMPILE([ #include <stdio.h>
4102 #include <sys/types.h>
4103 #include <jpeglib.h> ],
4104 [ #if JPEG_LIB_VERSION < $MOZJPEG
4105 #error "Insufficient JPEG library version ($MOZJPEG required)."
4108 [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=])
4110 CFLAGS=$_SAVE_CFLAGS
4111 LDFLAGS=$_SAVE_LDFLAGS
4114 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4115 JPEG_CFLAGS="-I${JPEG_DIR}/include"
4116 JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4119 dnl system ZLIB support
4120 dnl ========================================================
4121 MOZ_ARG_WITH_STRING(system-zlib,
4122 [ --with-system-zlib[=PFX]
4123 Use system libz [installed at prefix PFX]],
4126 _SAVE_CFLAGS=$CFLAGS
4127 _SAVE_LDFLAGS=$LDFLAGS
4129 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4130 CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4131 LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4133 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4136 AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"],
4137 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4139 if test "$SYSTEM_ZLIB" = 1; then
4140 LIBS="$ZLIB_LIBS $LIBS"
4141 AC_TRY_COMPILE([ #include <stdio.h>
4143 #include <zlib.h> ],
4144 [ #if ZLIB_VERNUM < $MOZZLIB
4145 #error "Insufficient zlib version ($MOZZLIB required)."
4148 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=])
4150 CFLAGS=$_SAVE_CFLAGS
4151 LDFLAGS=$_SAVE_LDFLAGS
4154 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4155 ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4156 ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4159 dnl system BZIP2 Support
4160 dnl ========================================================
4161 MOZ_ARG_WITH_STRING(system-bz2,
4162 [ --with-system-bz2[=PFX]
4163 Use system libbz2 [installed at prefix PFX]],
4166 _SAVE_CFLAGS=$CFLAGS
4167 _SAVE_LDFLAGS=$LDFLAGS
4169 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4170 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4171 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4173 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4176 AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4177 [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=], $BZ2_LIBS)
4179 CFLAGS=$_SAVE_CFLAGS
4180 LDFLAGS=$_SAVE_LDFLAGS
4183 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4184 BZ2_CFLAGS="-I${BZ2_DIR}/include"
4185 BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4188 dnl system PNG Support
4189 dnl ========================================================
4190 MOZ_ARG_WITH_STRING(system-png,
4191 [ --with-system-png[=PFX]
4192 Use system libpng [installed at prefix PFX]],
4195 _SAVE_CFLAGS=$CFLAGS
4196 _SAVE_LDFLAGS=$LDFLAGS
4198 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4199 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4200 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4201 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4202 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4204 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4207 _SAVE_PNG_LIBS=$PNG_LIBS
4208 AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4209 AC_MSG_ERROR([--with-system-png requested but no working libpng found]),
4211 AC_CHECK_LIB(png, png_get_acTL, ,
4212 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4215 if test "$SYSTEM_PNG" = 1; then
4216 LIBS="$PNG_LIBS $LIBS"
4217 AC_TRY_COMPILE([ #include <stdio.h>
4218 #include <sys/types.h>
4220 [ #if PNG_LIBPNG_VER < $MOZPNG
4221 #error "Insufficient libpng version ($MOZPNG required)."
4223 #ifndef PNG_UINT_31_MAX
4224 #error "Insufficient libpng version."
4227 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4229 CFLAGS=$_SAVE_CFLAGS
4230 LDFLAGS=$_SAVE_LDFLAGS
4233 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4234 PNG_CFLAGS="-I${PNG_DIR}/include"
4235 PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4238 fi # SKIP_LIBRARY_CHECKS
4240 dnl system HunSpell Support
4241 dnl ========================================================
4242 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4243 [ --enable-system-hunspell Use system hunspell (located with pkgconfig)],
4246 if test -n "$SYSTEM_HUNSPELL"; then
4247 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4250 AC_SUBST(SYSTEM_HUNSPELL)
4252 dnl check whether to enable glitz
4253 dnl ========================================================
4254 MOZ_ARG_ENABLE_BOOL(glitz,
4255 [ --enable-glitz Enable Glitz for use with Cairo],
4258 if test "$MOZ_ENABLE_GLITZ"; then
4259 AC_DEFINE(MOZ_ENABLE_GLITZ)
4262 dnl ========================================================
4263 dnl Java SDK support
4264 dnl ========================================================
4266 MOZ_ARG_WITH_STRING(java-include-path,
4267 [ --with-java-include-path=dir Location of Java SDK headers],
4268 JAVA_INCLUDE_PATH=$withval)
4271 MOZ_ARG_WITH_STRING(java-bin-path,
4272 [ --with-java-bin-path=dir Location of Java binaries (java, javac, jar)],
4273 JAVA_BIN_PATH=$withval)
4275 dnl ========================================================
4279 dnl ========================================================
4281 MOZ_ARG_HEADER(Application)
4285 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4286 MOZ_BRANDING_DIRECTORY=
4288 MOZ_DBGRINFO_MODULES=
4290 MOZ_EXTENSIONS_ALL=" wallet xml-rpc venkman inspector irc typeaheadfind gnomevfs sroaming datetime finger cview layout-debug tasks sql xforms schema-validation reporter"
4292 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg bmp xbm icon"
4293 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4306 MOZ_AUTH_EXTENSION=1
4307 MOZ_NO_ACTIVEX_SUPPORT=1
4308 MOZ_NO_INSPECTOR_APIS=
4309 MOZ_NO_XPCOM_OBSOLETE=
4314 MOZ_PLAINTEXT_EDITOR_ONLY=
4316 MOZ_PREF_EXTENSIONS=1
4317 MOZ_PROFILELOCKING=1
4318 MOZ_PROFILESHARING=1
4320 MOZ_PYTHON_EXTENSIONS="xpcom dom"
4322 MOZ_PYTHON_DEBUG_SUFFIX=
4323 MOZ_PYTHON_DLL_SUFFIX=
4324 MOZ_PYTHON_INCLUDES=
4328 MOZ_PYTHON_VER_DOTTED=
4334 MOZ_STATIC_MAIL_BUILD=
4339 MOZ_UNIVERSALCHARDET=1
4341 MOZ_USE_NATIVE_UCONV=
4346 MOZ_XPFE_COMPONENTS=1
4348 MOZ_XSLT_STANDALONE=
4356 NECKO_PROTOCOLS_DEFAULT="about data file ftp gopher http res viewsource"
4357 NECKO_SMALL_BUFFERS=
4360 XPC_IDISPATCH_SUPPORT=
4363 case "$target_os" in
4372 case "$target_os" in
4373 msvc*|mks*|cygwin*|mingw*)
4374 if test -z "$GNU_CC"; then
4375 XPC_IDISPATCH_SUPPORT=1
4376 MOZ_NO_ACTIVEX_SUPPORT=
4377 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1
4382 MOZ_ARG_ENABLE_STRING(application,
4383 [ --enable-application=APP
4393 content/xslt (Standalone Transformiix XSLT)
4394 netwerk (Standalone Necko)
4395 tools/update-packaging (AUS-related packaging tools)
4396 standalone (use this for standalone
4397 xpcom/xpconnect or to manually drive a build)],
4398 [ MOZ_BUILD_APP=$enableval ] )
4400 if test "$MOZ_BUILD_APP" = "macbrowser"; then
4401 AC_MSG_WARN([--enable-application=macbrowser is deprecated. Use --enable-application=camino.])
4402 MOZ_BUILD_APP=camino
4405 case "$MOZ_BUILD_APP" in
4407 MOZ_EMBEDDING_PROFILE=basic
4411 MOZ_EMBEDDING_PROFILE=default
4415 MOZ_ARG_WITH_STRING(embedding-profile,
4416 [ --with-embedding-profile=default|basic|minimal
4417 see http://wiki.mozilla.org/Gecko:Small_Device_Support],
4418 [ MOZ_EMBEDDING_PROFILE=$withval ])
4420 case "$MOZ_EMBEDDING_PROFILE" in
4422 MOZ_EMBEDDING_LEVEL_DEFAULT=1
4423 MOZ_EMBEDDING_LEVEL_BASIC=1
4424 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4425 AC_DEFINE(MOZ_EMBEDDING_LEVEL_DEFAULT)
4426 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4427 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4431 MOZ_EMBEDDING_LEVEL_DEFAULT=
4432 MOZ_EMBEDDING_LEVEL_BASIC=1
4433 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4434 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4435 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4437 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4440 MOZ_ENABLE_POSTSCRIPT=
4441 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4442 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4443 MOZ_IMG_ENCODERS_DEFAULT=
4451 MOZ_NO_ACTIVEX_SUPPORT=1
4452 MOZ_NO_INSPECTOR_APIS=1
4453 MOZ_NO_XPCOM_OBSOLETE=1
4456 MOZ_PLAINTEXT_EDITOR_ONLY=1
4458 MOZ_PREF_EXTENSIONS=
4463 MOZ_UNIVERSALCHARDET=
4465 MOZ_USE_NATIVE_UCONV=
4467 MOZ_XPFE_COMPONENTS=
4472 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4473 NECKO_SMALL_BUFFERS=1
4474 NS_DISABLE_LOGGING=1
4480 MOZ_EMBEDDING_LEVEL_DEFAULT=
4481 MOZ_EMBEDDING_LEVEL_BASIC=
4482 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4483 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4485 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4488 MOZ_ENABLE_POSTSCRIPT=
4489 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4490 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4491 MOZ_IMG_ENCODERS_DEFAULT=
4499 MOZ_NO_ACTIVEX_SUPPORT=1
4500 MOZ_NO_INSPECTOR_APIS=1
4501 MOZ_NO_XPCOM_OBSOLETE=1
4504 MOZ_PLAINTEXT_EDITOR_ONLY=1
4506 MOZ_PREF_EXTENSIONS=
4513 MOZ_UNIVERSALCHARDET=
4515 MOZ_USE_NATIVE_UCONV=1
4517 MOZ_XPFE_COMPONENTS=
4524 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4525 NECKO_SMALL_BUFFERS=1
4526 NS_DISABLE_LOGGING=1
4532 AC_MSG_ERROR([Unrecognized value: --with-embedding-profile=$MOZ_EMBEDDING_PROFILE])
4536 AC_SUBST(MOZ_EMBEDDING_LEVEL_DEFAULT)
4537 AC_SUBST(MOZ_EMBEDDING_LEVEL_BASIC)
4538 AC_SUBST(MOZ_EMBEDDING_LEVEL_MINIMAL)
4540 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4541 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
4542 XULRUNNER_STUB_NAME=$withval)
4544 if test -z "$XULRUNNER_STUB_NAME"; then
4545 case "$target_os" in
4547 XULRUNNER_STUB_NAME=xulrunner
4550 XULRUNNER_STUB_NAME=xulrunner-stub
4553 AC_SUBST(XULRUNNER_STUB_NAME)
4555 if test -z "$MOZ_BUILD_APP"; then
4556 AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
4558 # We have a valid application only if it has a build.mk file in its top
4560 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4561 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4565 # Allow the application to influence configure with a confvars.sh script.
4567 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4568 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4569 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4570 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4575 # Now is a good time to test for logic errors, define mismatches, etc.
4576 case "$MOZ_BUILD_APP" in
4578 if test "$LIBXUL_SDK"; then
4579 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4583 # Fix this case for folks who forget. Warn them.
4584 if test -n "$LIBXUL_SDK" -a -z "$MOZ_XUL_APP"; then
4585 AC_MSG_WARN([Setting MOZ_XUL_APP since LIBXUL_SDK was set. Add to confvars.sh!])
4591 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4592 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4594 case "$MOZ_BUILD_APP" in
4596 AC_DEFINE(MOZ_SUITE)
4600 AC_DEFINE(MOZ_PHOENIX)
4608 AC_DEFINE(MOZ_THUNDERBIRD)
4612 AC_DEFINE(MOZ_STANDALONE_COMPOSER)
4616 AC_DEFINE(MOZ_SUNBIRD)
4620 AC_DEFINE(MOZ_XULRUNNER)
4624 AC_DEFINE(MOZ_MACBROWSER)
4632 MOZ_APP_NAME=mozilla
4633 MOZ_APP_DISPLAYNAME=Mozilla
4634 MOZ_APP_VERSION=$MOZILLA_VERSION
4639 AC_SUBST(MOZ_BUILD_APP)
4640 AC_SUBST(MOZ_XUL_APP)
4642 AC_SUBST(MOZ_PHOENIX)
4643 AC_SUBST(MOZ_THUNDERBIRD)
4644 AC_SUBST(MOZ_STANDALONE_COMPOSER)
4645 AC_SUBST(MOZ_SUNBIRD)
4646 AC_SUBST(MOZ_XULRUNNER)
4648 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4650 if test "$MOZ_XUL_APP"; then
4652 AC_DEFINE(MOZ_XUL_APP)
4655 dnl ========================================================
4657 dnl = Toolkit Options
4659 dnl ========================================================
4660 MOZ_ARG_HEADER(Toolkit Options)
4662 dnl ========================================================
4663 dnl = Select the default toolkit
4664 dnl ========================================================
4665 MOZ_ARG_ENABLE_STRING(default-toolkit,
4666 [ --enable-default-toolkit=TK
4667 Select default toolkit
4668 Platform specific defaults:
4670 Mac OS X - cairo-cocoa
4671 Neutrino/QNX - photon
4673 Win32 - cairo-windows
4676 [ _DEFAULT_TOOLKIT=$enableval ],
4677 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4679 if test "$_DEFAULT_TOOLKIT" = "photon" \
4680 -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4681 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4682 -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
4683 -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4684 -o "$_DEFAULT_TOOLKIT" = "cairo-mac" \
4685 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa"
4687 dnl nglayout only supports building with one toolkit,
4688 dnl so ignore everything after the first comma (",").
4689 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4691 if test "$no_x" != "yes"; then
4692 AC_MSG_ERROR([Toolkit must be cairo-gtk2.])
4694 AC_MSG_ERROR([Toolkit must be $_PLATFORM_DEFAULT_TOOLKIT (if supported).])
4698 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_TOOLKIT,"$MOZ_WIDGET_TOOLKIT")
4700 dnl ========================================================
4701 dnl = Enable the toolkit as needed =
4702 dnl ========================================================
4704 case "$MOZ_WIDGET_TOOLKIT" in
4707 AC_DEFINE(MOZ_WIDGET_PHOTON)
4711 MOZ_WIDGET_TOOLKIT=windows
4712 MOZ_GFX_TOOLKIT=cairo
4716 MOZ_WIDGET_TOOLKIT=gtk2
4717 MOZ_GFX_TOOLKIT=cairo
4719 MOZ_ENABLE_XREMOTE=1
4720 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4721 TK_LIBS='$(MOZ_GTK2_LIBS)'
4722 AC_DEFINE(MOZ_WIDGET_GTK2)
4725 MOZ_WIDGET_TOOLKIT=beos
4726 MOZ_GFX_TOOLKIT=cairo
4727 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4728 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4732 MOZ_WIDGET_TOOLKIT=os2
4733 MOZ_GFX_TOOLKIT=cairo
4734 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4735 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4738 cairo-mac|cairo-cocoa)
4739 if test "$MOZ_WIDGET_TOOLKIT" = "cairo-cocoa"; then
4740 MOZ_WIDGET_TOOLKIT=cocoa
4741 AC_DEFINE(MOZ_WIDGET_COCOA)
4744 MOZ_WIDGET_TOOLKIT=mac
4746 MOZ_GFX_TOOLKIT=cairo
4747 MOZ_USER_DIR="Mozilla"
4748 AC_DEFINE(XP_MACOSX)
4749 AC_DEFINE(TARGET_CARBON)
4750 AC_DEFINE(TARGET_API_MAC_CARBON)
4751 TK_LIBS='-framework Carbon'
4752 TK_CFLAGS="-I${MACOS_SDK_DIR}/Developer/Headers/FlatCarbon"
4753 CFLAGS="$CFLAGS $TK_CFLAGS"
4754 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4758 if test "$MOZ_ENABLE_XREMOTE"; then
4759 AC_DEFINE(MOZ_ENABLE_XREMOTE)
4762 if test "$COMPILE_ENVIRONMENT"; then
4763 if test "$MOZ_ENABLE_GTK2"
4765 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)
4767 fi # COMPILE_ENVIRONMENT
4769 AC_SUBST(MOZ_DEFAULT_TOOLKIT)
4771 dnl ========================================================
4772 dnl = startup-notification support module
4773 dnl ========================================================
4775 if test "$MOZ_ENABLE_GTK2"
4777 MOZ_ENABLE_STARTUP_NOTIFICATION=
4779 MOZ_ARG_ENABLE_BOOL(startup-notification,
4780 [ --enable-startup-notification Enable startup-notification support (default: disabled) ],
4781 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4782 MOZ_ENABLE_STARTUP_NOTIFICATION=)
4783 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4785 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4786 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4787 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4788 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4790 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4792 MOZ_ENABLE_STARTUP_NOTIFICATION=
4796 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4797 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4800 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4802 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4803 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4804 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4806 AC_SUBST(GTK_CONFIG)
4810 AC_SUBST(MOZ_ENABLE_GTK2)
4811 AC_SUBST(MOZ_ENABLE_PHOTON)
4812 AC_SUBST(MOZ_ENABLE_COCOA)
4813 AC_SUBST(MOZ_ENABLE_GLITZ)
4814 AC_SUBST(MOZ_ENABLE_XREMOTE)
4815 AC_SUBST(MOZ_GTK2_CFLAGS)
4816 AC_SUBST(MOZ_GTK2_LIBS)
4820 if test "$MOZ_ENABLE_GTK2"
4827 dnl ========================================================
4829 dnl = Components & Features
4831 dnl ========================================================
4832 MOZ_ARG_HEADER(Components and Features)
4834 dnl ========================================================
4836 dnl ========================================================
4837 MOZ_ARG_ENABLE_STRING(ui-locale,
4838 [ --enable-ui-locale=ab-CD
4839 Select the user interface locale (default: en-US)],
4840 MOZ_UI_LOCALE=$enableval )
4841 AC_SUBST(MOZ_UI_LOCALE)
4843 dnl =========================================================
4844 dnl = Calendar client
4845 dnl =========================================================
4846 MOZ_ARG_ENABLE_BOOL(calendar,,
4850 if test "$MOZ_OLD_CALENDAR"; then
4851 AC_MSG_WARN([Building with the calendar extension is no longer supported.])
4852 if test "$MOZ_THUNDERBIRD"; then
4853 AC_MSG_WARN([Since you're trying to build mail, you could try adding])
4854 AC_MSG_WARN(['--enable-extensions=default,lightning' to your mozconfig])
4855 AC_MSG_WARN([and building WITH A FRESH TREE.])
4857 AC_MSG_WARN([For more information, please visit:])
4858 AC_MSG_ERROR([http://www.mozilla.org/projects/calendar/])
4861 AC_SUBST(MOZ_CALENDAR)
4863 dnl =========================================================
4865 dnl =========================================================
4866 MOZ_ARG_DISABLE_BOOL(mailnews,
4867 [ --disable-mailnews Disable building of mail & news components],
4870 AC_SUBST(MOZ_MAIL_NEWS)
4872 dnl =========================================================
4874 dnl =========================================================
4875 MOZ_ARG_DISABLE_BOOL(ldap,
4876 [ --disable-ldap Disable LDAP support],
4880 dnl ========================================================
4881 dnl = Trademarked Branding
4882 dnl ========================================================
4883 MOZ_ARG_ENABLE_BOOL(official-branding,
4884 [ --enable-official-branding Enable Official mozilla.org Branding
4885 Do not distribute builds with
4886 --enable-official-branding unless you have
4887 permission to use trademarks per
4888 http://www.mozilla.org/foundation/trademarks/ .],
4889 [case "$MOZ_BUILD_APP" in
4891 MOZ_BRANDING_DIRECTORY=other-licenses/branding/firefox
4892 MOZ_APP_DISPLAYNAME=Firefox
4896 MOZ_BRANDING_DIRECTORY=other-licenses/branding/sunbird
4897 MOZ_APP_DISPLAYNAME=Sunbird
4901 MOZ_BRANDING_DIRECTORY=other-licenses/branding/thunderbird
4905 AC_MSG_ERROR([Official branding is only available for Firefox Sunbird and Thunderbird.])
4909 MOZ_ARG_WITH_STRING(branding,
4910 [ --with-branding=dir Use branding from the specified directory.],
4911 MOZ_BRANDING_DIRECTORY=$withval)
4913 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4914 if test -z "$REAL_BRANDING_DIRECTORY"; then
4915 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4918 if test -f "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4919 . "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"
4922 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4924 dnl ========================================================
4925 dnl = Distribution ID
4926 dnl ========================================================
4927 MOZ_ARG_WITH_STRING(distribution-id,
4928 [ --with-distribution-id=ID Set distribution-specific id (default=org.mozilla)],
4929 [ val=`echo $withval`
4930 MOZ_DISTRIBUTION_ID="$val"])
4932 if test -z "$MOZ_DISTRIBUTION_ID"; then
4933 MOZ_DISTRIBUTION_ID="org.mozilla"
4936 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4937 AC_SUBST(MOZ_DISTRIBUTION_ID)
4939 dnl ========================================================
4941 dnl ========================================================
4942 if test "$MOZ_ENABLE_GTK2"
4944 PKG_CHECK_MODULES(MOZ_XFT, xft)
4945 AC_SUBST(MOZ_XFT_CFLAGS)
4946 AC_SUBST(MOZ_XFT_LIBS)
4948 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4949 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangocairo >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
4950 AC_SUBST(MOZ_PANGO_CFLAGS)
4951 AC_SUBST(MOZ_PANGO_LIBS)
4954 dnl ========================================================
4955 dnl = PostScript print module
4956 dnl ========================================================
4957 MOZ_ARG_DISABLE_BOOL(postscript,
4958 [ --disable-postscript Disable PostScript printing support ],
4959 MOZ_ENABLE_POSTSCRIPT=,
4960 MOZ_ENABLE_POSTSCRIPT=1 )
4962 dnl ========================================================
4963 dnl = GnomeVFS support module
4964 dnl ========================================================
4968 dnl build the gnomevfs extension by default only when the
4969 dnl GTK2 toolkit is in use.
4970 if test "$MOZ_ENABLE_GTK2"
4972 MOZ_ENABLE_GNOMEVFS=1
4974 MOZ_ENABLE_LIBGNOME=1
4977 MOZ_ARG_DISABLE_BOOL(gnomevfs,
4978 [ --disable-gnomevfs Disable GnomeVFS support ],
4979 MOZ_ENABLE_GNOMEVFS=,
4980 MOZ_ENABLE_GNOMEVFS=force)
4982 if test "$MOZ_ENABLE_GNOMEVFS"
4984 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
4985 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
4986 MOZ_ENABLE_GNOMEVFS=1
4988 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
4990 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
4992 MOZ_ENABLE_GNOMEVFS=
4996 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
4997 AC_SUBST(MOZ_GNOMEVFS_LIBS)
4999 if test "$MOZ_ENABLE_GCONF"
5001 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION,[
5002 MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5009 if test "$MOZ_ENABLE_GCONF"; then
5010 AC_DEFINE(MOZ_ENABLE_GCONF)
5013 AC_SUBST(MOZ_ENABLE_GCONF)
5014 AC_SUBST(MOZ_GCONF_CFLAGS)
5015 AC_SUBST(MOZ_GCONF_LIBS)
5017 if test "$MOZ_ENABLE_LIBGNOME"
5019 PKG_CHECK_MODULES(MOZ_LIBGNOME, libgnome-2.0 >= $LIBGNOME_VERSION,[
5020 MOZ_LIBGNOME_LIBS=`echo $MOZ_LIBGNOME_LIBS | sed 's/-llinc\>//'`
5021 MOZ_ENABLE_LIBGNOME=1
5023 MOZ_ENABLE_LIBGNOME=
5027 AC_SUBST(MOZ_LIBGNOME_CFLAGS)
5028 AC_SUBST(MOZ_LIBGNOME_LIBS)
5030 # The GNOME component is built if gtk2, gconf, gnome-vfs, and libgnome
5031 # are all available.
5033 if test "$MOZ_ENABLE_GTK2" -a "$MOZ_ENABLE_GCONF" -a \
5034 "$MOZ_ENABLE_GNOMEVFS" -a "$MOZ_ENABLE_LIBGNOME"; then
5035 MOZ_ENABLE_GNOME_COMPONENT=1
5037 MOZ_ENABLE_GNOME_COMPONENT=
5040 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5043 dnl ========================================================
5044 dnl = libgnomeui support module
5045 dnl ========================================================
5047 if test "$MOZ_ENABLE_GTK2"
5049 MOZ_ENABLE_GNOMEUI=1
5051 MOZ_ARG_DISABLE_BOOL(gnomeui,
5052 [ --disable-gnomeui Disable libgnomeui support (default: auto, optional at runtime) ],
5053 MOZ_ENABLE_GNOMEUI=,
5054 MOZ_ENABLE_GNOMEUI=force)
5056 if test "$MOZ_ENABLE_GNOMEUI"
5058 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5060 MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5061 MOZ_ENABLE_GNOMEUI=1
5063 if test "$MOZ_ENABLE_GNOMEUI" = "force"
5065 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5071 if test "$MOZ_ENABLE_GNOMEUI"; then
5072 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5075 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5076 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5077 AC_SUBST(MOZ_GNOMEUI_LIBS)
5079 dnl ========================================================
5081 dnl ========================================================
5083 if test "$MOZ_ENABLE_GTK2"
5087 MOZ_ARG_DISABLE_BOOL(dbus,
5088 [ --disable-dbus Disable dbus support ],
5092 if test "$MOZ_ENABLE_DBUS"
5094 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5095 AC_DEFINE(MOZ_ENABLE_DBUS)
5098 AC_SUBST(MOZ_ENABLE_DBUS)
5099 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5100 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5102 dnl ========================================================
5103 dnl = Build Personal Security Manager
5104 dnl ========================================================
5105 MOZ_ARG_DISABLE_BOOL(crypto,
5106 [ --disable-crypto Disable crypto support (Personal Security Manager)],
5110 dnl ========================================================
5111 dnl = JS Debugger XPCOM component (js/jsd)
5112 dnl ========================================================
5113 MOZ_ARG_DISABLE_BOOL(jsd,
5114 [ --disable-jsd Disable JavaScript debug library],
5119 dnl ========================================================
5120 dnl = Disable plugin support
5121 dnl ========================================================
5122 MOZ_ARG_DISABLE_BOOL(plugins,
5123 [ --disable-plugins Disable plugins support],
5127 dnl ========================================================
5128 dnl = Open JVM Interface (OJI) support
5129 dnl ========================================================
5130 MOZ_ARG_DISABLE_BOOL(oji,
5131 [ --disable-oji Disable Open JVM Integration support],
5134 if test -n "$MOZ_OJI"; then
5138 dnl bi-directional support always on
5142 dnl ========================================================
5143 dnl complex text support off by default
5144 dnl ========================================================
5145 MOZ_ARG_ENABLE_BOOL(ctl,
5146 [ --enable-ctl Enable Thai Complex Script support],
5150 dnl ========================================================
5151 dnl view source support on by default
5152 dnl ========================================================
5153 MOZ_ARG_DISABLE_BOOL(view-source,
5154 [ --disable-view-source Disable view source support],
5157 if test "$MOZ_VIEW_SOURCE"; then
5158 AC_DEFINE(MOZ_VIEW_SOURCE)
5162 dnl ========================================================
5163 dnl accessibility support on by default on all platforms
5165 dnl ========================================================
5166 MOZ_ARG_DISABLE_BOOL(accessibility,
5167 [ --disable-accessibility Disable accessibility support (off by default on OS X)],
5170 if test "$ACCESSIBILITY"; then
5171 AC_DEFINE(ACCESSIBILITY)
5174 if test -n "$ACCESSIBILITY"; then
5176 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5177 if test "$ac_cv_header_atlbase_h" = "no"; then
5178 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.])
5180 if test "$ac_cv_header_oleacc_idl" = "no"; then
5181 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.])
5187 dnl ========================================================
5188 dnl xpfe/components on by default
5189 dnl ========================================================
5190 MOZ_ARG_DISABLE_BOOL(xpfe-components,
5191 [ --disable-xpfe-components
5192 Disable xpfe components],
5193 MOZ_XPFE_COMPONENTS=,
5194 MOZ_XPFE_COMPONENTS=1 )
5196 dnl ========================================================
5197 dnl xpinstall support on by default
5198 dnl ========================================================
5199 MOZ_ARG_DISABLE_BOOL(xpinstall,
5200 [ --disable-xpinstall Disable xpinstall support],
5203 if test "$MOZ_XPINSTALL"; then
5204 AC_DEFINE(MOZ_XPINSTALL)
5207 dnl ========================================================
5208 dnl xpcom js loader support on by default
5209 dnl ========================================================
5210 MOZ_ARG_DISABLE_BOOL(jsloader,
5211 [ --disable-jsloader Disable xpcom js loader support],
5214 if test "$MOZ_JSLOADER"; then
5215 AC_DEFINE(MOZ_JSLOADER)
5218 dnl ========================================================
5219 dnl Disable printing
5220 dnl ========================================================
5221 MOZ_ARG_DISABLE_BOOL(printing,
5222 [ --disable-printing Disable printing support],
5226 if test "$NS_PRINTING"; then
5227 AC_DEFINE(NS_PRINTING)
5228 AC_DEFINE(NS_PRINT_PREVIEW)
5231 dnl ========================================================
5232 dnl use native unicode converters
5233 dnl ========================================================
5234 MOZ_ARG_ENABLE_BOOL(native-uconv,
5235 [ --enable-native-uconv Enable iconv support],
5236 MOZ_USE_NATIVE_UCONV=1,
5237 MOZ_USE_NATIVE_UCONV= )
5238 if test "$MOZ_USE_NATIVE_UCONV"; then
5239 AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5241 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5242 AC_MSG_ERROR([iconv() not found. Cannot enable native uconv support.])
5246 dnl ========================================================
5247 dnl Libeditor can be build as plaintext-only,
5248 dnl or as a full html and text editing component.
5249 dnl We build both by default.
5250 dnl ========================================================
5251 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5252 [ --enable-plaintext-editor-only
5253 Allow only plaintext editing],
5254 MOZ_PLAINTEXT_EDITOR_ONLY=1,
5255 MOZ_PLAINTEXT_EDITOR_ONLY= )
5256 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5257 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5259 dnl ========================================================
5260 dnl Composer is on by default.
5261 dnl ========================================================
5262 MOZ_ARG_DISABLE_BOOL(composer,
5263 [ --disable-composer Disable building of Composer],
5266 AC_SUBST(MOZ_COMPOSER)
5269 dnl ========================================================
5270 dnl = Drop XPCOM Obsolete library
5271 dnl ========================================================
5272 MOZ_ARG_DISABLE_BOOL(xpcom-obsolete,
5273 [ --disable-xpcom-obsolete Disable XPCOM Obsolete Library],
5274 MOZ_NO_XPCOM_OBSOLETE=1,
5275 MOZ_NO_XPCOM_OBSOLETE=)
5277 if test -n "$MOZ_NO_XPCOM_OBSOLETE"; then
5278 AC_DEFINE(MOZ_NO_XPCOM_OBSOLETE)
5281 dnl ========================================================
5282 dnl = Disable Fast Load
5283 dnl ========================================================
5284 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5285 [ --disable-xpcom-fastload Disable XPCOM fastload support],
5289 AC_SUBST(MOZ_NO_FAST_LOAD)
5291 if test -n "$MOZ_NO_FAST_LOAD"; then
5292 AC_DEFINE(MOZ_NO_FAST_LOAD)
5295 dnl ========================================================
5296 dnl Permissions System
5297 dnl ========================================================
5298 MOZ_ARG_DISABLE_BOOL(permissions,
5299 [ --disable-permissions Disable permissions (popup and cookie blocking)],
5304 dnl ========================================================
5306 dnl ========================================================
5307 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5308 [ --disable-negotiateauth Disable GSS-API negotiation ],
5309 MOZ_AUTH_EXTENSION=,
5310 MOZ_AUTH_EXTENSION=1 )
5312 dnl ========================================================
5314 dnl ========================================================
5315 MOZ_ARG_DISABLE_BOOL(xtf,
5316 [ --disable-xtf Disable XTF (pluggable xml tags) support],
5319 if test "$MOZ_XTF"; then
5323 dnl ========================================================
5325 dnl ========================================================
5326 MOZ_ARG_DISABLE_BOOL(inspector-apis,
5327 [ --disable-inspector-apis Disable the DOM inspection APIs ],
5328 MOZ_NO_INSPECTOR_APIS=1,
5329 MOZ_NO_INSPECTOR_APIS= )
5331 dnl ========================================================
5333 dnl ========================================================
5334 MOZ_ARG_DISABLE_BOOL(xmlextras,
5335 [ --disable-xmlextras Disable XMLExtras such as XPointer support ],
5339 dnl ========================================================
5341 dnl ========================================================
5342 MOZ_ARG_ENABLE_BOOL(webservices,
5343 [ --enable-webservices Enable Webservices/SOAP support ],
5347 dnl ========================================================
5348 dnl Pref extensions (autoconfig and system-pref)
5349 dnl ========================================================
5350 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5351 [ --disable-pref-extensions
5352 Disable pref extensions such as autoconfig and
5354 MOZ_PREF_EXTENSIONS=,
5355 MOZ_PREF_EXTENSIONS=1 )
5357 dnl ========================================================
5358 dnl = Universalchardet
5359 dnl ========================================================
5360 MOZ_ARG_DISABLE_BOOL(universalchardet,
5361 [ --disable-universalchardet
5362 Disable universal encoding detection],
5363 MOZ_UNIVERSALCHARDET=,
5364 MOZ_UNIVERSALCHARDET=1 )
5366 dnl ========================================================
5368 dnl ========================================================
5369 MOZ_ARG_ENABLE_BOOL(javaxpcom,
5370 [ --enable-javaxpcom
5371 Enable Java-XPCOM bridge],
5375 if test -n "${MOZ_JAVAXPCOM}"; then
5378 if test -n "$JAVA_HOME"; then
5379 JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
5383 if test -n "$JAVA_HOME"; then
5384 JAVA_HOME=`cd "$JAVA_HOME" && pwd`
5389 if test -n "${JAVA_INCLUDE_PATH}"; then
5390 dnl Make sure jni.h exists in the given include path.
5391 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5392 AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
5395 case "$target_os" in
5397 dnl Default to java system location
5398 JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
5402 JAVA_INCLUDE_PATH="$JAVA_HOME/include"
5405 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5406 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.])
5410 if test -n "${JAVA_BIN_PATH}"; then
5411 dnl Look for javac and jar in the specified path.
5412 JAVA_PATH="$JAVA_BIN_PATH"
5414 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5415 JAVA_PATH="$JAVA_HOME/bin:$PATH"
5418 AC_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5419 AC_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5420 AC_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5421 if test -z "$JAVA" || test "$JAVA" = ":" || test -z "$JAVAC" || test "$JAVAC" = ":" || test -z "$JAR" || test "$JAR" = ":"; then
5422 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.])
5426 dnl ========================================================
5427 dnl = Breakpad crash reporting (on by default on supported platforms)
5428 dnl ========================================================
5430 if (test "$OS_ARCH" = "WINNT" -a -z "$GNU_CC" \
5431 || test "$OS_ARCH" = "Darwin" \
5432 || test "$OS_ARCH" = "Linux" -a "$CPU_ARCH" = "x86" \
5433 || test "$OS_ARCH" = "SunOS") \
5434 && test -z "$HAVE_64BIT_OS"; then
5438 MOZ_ARG_DISABLE_BOOL(crashreporter,
5439 [ --disable-crashreporter Disable breakpad crash reporting],
5441 MOZ_CRASHREPORTER=1)
5443 if test -n "$MOZ_CRASHREPORTER"; then
5444 AC_DEFINE(MOZ_CRASHREPORTER)
5446 if (test "$OS_ARCH" = "Linux" || test "$OS_ARCH" = "SunOS") && \
5447 test -z "$SKIP_LIBRARY_CHECKS"; then
5448 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5449 AC_SUBST(MOZ_GTHREAD_CFLAGS)
5450 AC_SUBST(MOZ_GTHREAD_LIBS)
5452 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.])])
5456 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5457 [ --with-crashreporter-enable-percent=NN Enable sending crash reports by default on NN% of users. (default=100)],
5458 [ val=`echo $withval | sed 's/[^0-9]//g'`
5459 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5461 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5462 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5464 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5467 dnl ========================================================
5468 dnl = Build mochitest JS/DOM tests (on by default)
5469 dnl ========================================================
5470 MOZ_ARG_DISABLE_BOOL(mochitest,
5471 [ --disable-mochitest Disable mochitest harness],
5475 dnl ========================================================
5476 dnl = Enable compilation of specific extension modules
5477 dnl ========================================================
5479 MOZ_ARG_ENABLE_STRING(extensions,
5480 [ --enable-extensions Enable extensions],
5481 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5482 if test "$option" = "yes" || test "$option" = "all"; then
5483 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_ALL"
5484 elif test "$option" = "no" || test "$option" = "none"; then
5486 elif test "$option" = "default"; then
5487 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
5488 elif test `echo "$option" | grep -c \^-` != 0; then
5489 option=`echo $option | sed 's/^-//'`
5490 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
5492 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
5495 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
5497 if test -z "$MOZ_ENABLE_GNOMEVFS" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5498 # Suppress warning on non-X11 platforms
5499 if test -n "$MOZ_X11"; then
5500 AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
5502 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
5505 if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
5506 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
5507 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
5510 dnl This might be temporary: build tridentprofile only on Windows
5511 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
5512 AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
5513 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5516 dnl cookie must be built before tridentprofile. put it at list's end.
5517 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
5518 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5519 MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
5522 dnl xforms requires xtf and schema-validation
5523 if test -z "$MOZ_XTF" && test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
5524 AC_MSG_WARN([Cannot build XForms without XTF support. Removing XForms from MOZ_EXTENSIONS.])
5525 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5527 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
5528 AC_MSG_WARN([Cannot build XForms without schema validation. Removing XForms from MOZ_EXTENSIONS.])
5529 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5532 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
5533 AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
5534 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
5537 if test `echo "$MOZ_EXTENSIONS" | grep -c xmlextras` -ne 0; then
5538 AC_MSG_WARN([xmlextras is no longer an extension, use --disable-xmlextras to disable.])
5539 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xmlextras||g'`
5542 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
5543 AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
5544 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
5547 if test `echo "$MOZ_EXTENSIONS" | grep -c webservices` -ne 0; then
5548 AC_MSG_WARN([webservices is no longer an extension, use --disable-webservices to disable.])
5549 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|webservices||g'`
5552 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
5553 AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
5554 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
5557 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
5558 AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
5559 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
5562 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
5563 AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
5564 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
5567 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
5568 AC_MSG_WARN([spellcheck is no longer an extension.])
5569 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
5572 if test -n "$MOZ_NO_XPCOM_OBSOLETE" && test `echo "$MOZ_EXTENSIONS" | grep -c sroaming` -ne 0; then
5573 AC_MSG_WARN([Cannot currently build sroaming without xpcom obsolete -- bug 249343. Removing sroaming from MOZ_EXTENSIONS.])
5574 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|sroaming||'`
5578 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
5580 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
5581 dnl when trying to build a non-existent extension.
5582 for extension in $MOZ_EXTENSIONS; do
5583 if test ! -d "${srcdir}/extensions/${extension}"; then
5584 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
5589 dnl ========================================================
5591 dnl ========================================================
5592 case "$MOZ_WIDGET_TOOLKIT" in
5593 beos|windows|os2|mac|cocoa)
5596 if test -z "$MOZ_ENABLE_GTK2"; then
5597 MOZ_IMG_DECODERS_DEFAULT=`echo $MOZ_IMG_DECODERS_DEFAULT | sed -e 's|icon||'`
5602 MOZ_ARG_ENABLE_STRING(image-decoders,
5603 [ --enable-image-decoders[={mod1,mod2,default,all,none}]
5604 Enable specific image decoders],
5605 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5606 if test "$option" = "yes" || test "$option" = "all"; then
5607 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5608 elif test "$option" = "no" || test "$option" = "none"; then
5610 elif test "$option" = "default"; then
5611 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5612 elif test `echo "$option" | grep -c \^-` != 0; then
5613 option=`echo $option | sed 's/^-//'`
5614 MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
5616 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
5619 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
5621 dnl Dupes are removed in the encoder section because it will also add decoders
5623 dnl ========================================================
5625 dnl ========================================================
5626 MOZ_ARG_ENABLE_STRING(image-encoders,
5627 [ --enable-image-encoders[={mod1,mod2,default,all,none}]
5628 Enable specific image encoders],
5629 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5630 if test "$option" = "yes" || test "$option" = "all"; then
5631 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5632 elif test "$option" = "no" || test "$option" = "none"; then
5635 elif test "$option" = "default"; then
5636 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5637 elif test `echo "$option" | grep -c \^-` != 0; then
5638 option=`echo $option | sed 's/^-//'`
5639 addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
5641 addencoder="$option"
5643 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
5645 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
5648 MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
5649 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
5651 dnl ========================================================
5652 dnl experimental ldap features
5653 dnl ========================================================
5654 MOZ_ARG_ENABLE_BOOL(ldap-experimental,
5655 [ --enable-ldap-experimental
5656 Enable LDAP experimental features],
5657 MOZ_LDAP_XPCOM_EXPERIMENTAL=1,
5658 MOZ_LDAP_XPCOM_EXPERIMENTAL=)
5660 dnl ========================================================
5661 dnl MathML on by default
5662 dnl ========================================================
5663 MOZ_ARG_DISABLE_BOOL(mathml,
5664 [ --disable-mathml Disable MathML support],
5667 if test "$MOZ_MATHML"; then
5668 AC_DEFINE(MOZ_MATHML)
5671 dnl ========================================================
5673 dnl ========================================================
5674 MOZ_ARG_DISABLE_BOOL(canvas,
5675 [ --disable-canvas Disable html:canvas feature],
5677 MOZ_ENABLE_CANVAS=1 )
5678 if test -n "$MOZ_ENABLE_CANVAS"; then
5679 AC_DEFINE(MOZ_ENABLE_CANVAS)
5681 AC_SUBST(MOZ_ENABLE_CANVAS)
5683 dnl ========================================================
5685 dnl ========================================================
5686 MOZ_ARG_DISABLE_BOOL(svg,
5687 [ --disable-svg Disable SVG support],
5690 if test -n "$MOZ_SVG"; then
5694 MOZ_SVG_FOREIGNOBJECT=1
5695 dnl ========================================================
5696 dnl SVG <foreignObject>
5697 dnl ========================================================
5698 MOZ_ARG_DISABLE_BOOL(svg-foreignobject,
5699 [ --disable-svg-foreignobject
5700 Disable SVG <foreignObject> support],
5701 MOZ_SVG_FOREIGNOBJECT=,
5702 MOZ_SVG_FOREIGNOBJECT=1 )
5703 if test "$MOZ_SVG_FOREIGNOBJECT"; then
5704 if test "$MOZ_SVG"; then
5705 AC_DEFINE(MOZ_SVG_FOREIGNOBJECT)
5707 MOZ_SVG_FOREIGNOBEJCT=
5711 dnl ========================================================
5713 dnl ========================================================
5714 case "$target_os" in
5715 aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*)
5720 MOZ_ARG_DISABLE_BOOL(installer,
5721 [ --disable-installer Disable building of installer],
5724 if test -n "$MOZ_INSTALLER" -a -n "$MOZ_XUL_APP" -a "$OS_ARCH" = "WINNT"; then
5725 # Disable installer for Windows builds that use the new toolkit if NSIS
5726 # isn't in the path.
5727 AC_PATH_PROGS(MAKENSIS, makensis)
5728 if test -z "$MAKENSIS" || test "$MAKENSIS" = ":"; then
5729 AC_MSG_ERROR([To build the installer makensis is required in your path. To build without the installer reconfigure using --disable-installer.])
5731 # The Windows build for NSIS requires the iconv command line utility to
5732 # convert the charset of the locale files.
5733 AC_PATH_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5734 if test -z "$HOST_ICONV"; then
5735 AC_MSG_ERROR([To build the installer iconv is required in your path. To build without the installer reconfigure using --disable-installer.])
5739 # Automatically disable installer if xpinstall isn't built
5740 if test -z "$MOZ_XPINSTALL"; then
5743 AC_SUBST(MOZ_INSTALLER)
5745 AC_MSG_CHECKING([for tar archiver])
5746 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
5747 if test -z "$TAR"; then
5748 AC_MSG_ERROR([no tar archiver found in \$PATH])
5750 AC_MSG_RESULT([$TAR])
5753 dnl ========================================================
5755 dnl ========================================================
5757 MOZ_ARG_DISABLE_BOOL(updater,
5758 [ --disable-updater Disable building of updater],
5761 # The Windows build requires the iconv command line utility
5762 # in order to build the updater.
5763 case "$target_os" in
5764 msvc*|mks*|cygwin*|mingw*|wince*)
5765 if test -n "$MOZ_UPDATER"; then
5766 AC_MSG_CHECKING([for iconv])
5767 AC_CHECK_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5768 if test -z "$HOST_ICONV"; then
5769 AC_MSG_ERROR([iconv not found in \$PATH])
5774 AC_SUBST(MOZ_UPDATER)
5776 # app update channel is 'default' when not supplied.
5777 MOZ_ARG_ENABLE_STRING([update-channel],
5778 [ --enable-update-channel=CHANNEL
5779 Select application update channel (default=default)],
5780 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
5782 if test -z "$MOZ_UPDATE_CHANNEL"; then
5783 MOZ_UPDATE_CHANNEL=default
5785 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
5787 # tools/update-packaging is not checked out by default.
5788 MOZ_ARG_ENABLE_BOOL(update-packaging,
5789 [ --enable-update-packaging
5790 Enable tools/update-packaging],
5791 MOZ_UPDATE_PACKAGING=1,
5792 MOZ_UPDATE_PACKAGING= )
5793 AC_SUBST(MOZ_UPDATE_PACKAGING)
5795 dnl ========================================================
5797 dnl ========================================================
5799 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
5800 [ --disable-xpconnect-idispatch
5801 Disable building of xpconnect support for IDispatch
5803 XPC_IDISPATCH_SUPPORT=,
5804 XPC_IDISPATCH_SUPPORT=1)
5805 AC_SUBST(XPC_IDISPATCH_SUPPORT)
5807 MOZ_ARG_DISABLE_BOOL(activex,
5808 [ --disable-activex Disable building of ActiveX control (win32 only)],
5809 MOZ_NO_ACTIVEX_SUPPORT=1,
5810 MOZ_NO_ACTIVEX_SUPPORT= )
5811 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
5813 MOZ_ARG_DISABLE_BOOL(activex-scripting,
5814 [ --disable-activex-scripting
5815 Disable building of ActiveX scripting support (win32)],
5816 MOZ_ACTIVEX_SCRIPTING_SUPPORT=,
5817 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1)
5818 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
5820 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
5822 AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
5825 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
5827 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5828 if test "$ac_cv_header_atlbase_h" = "no"; then
5829 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.])
5835 dnl ========================================================
5837 dnl ========================================================
5838 MOZ_ARG_ENABLE_BOOL(leaky,
5839 [ --enable-leaky Build leaky memory tool],
5844 dnl ========================================================
5846 dnl ========================================================
5847 MOZ_ARG_ENABLE_BOOL(xpctools,
5848 [ --enable-xpctools Build JS profiling tool],
5853 dnl ========================================================
5854 dnl build the tests by default
5855 dnl ========================================================
5856 MOZ_ARG_DISABLE_BOOL(tests,
5857 [ --disable-tests Do not build test libraries & programs],
5861 dnl ========================================================
5862 dnl parental controls (for Windows Vista)
5863 dnl ========================================================
5864 MOZ_ARG_DISABLE_BOOL(parental-controls,
5865 [ --disable-parental-controls
5866 Do not build parental controls],
5867 MOZ_DISABLE_PARENTAL_CONTROLS=1,
5868 MOZ_DISABLE_PARENTAL_CONTROLS=)
5869 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5870 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5873 dnl ========================================================
5874 dnl Vista SDK specific api
5875 dnl ========================================================
5876 MOZ_ARG_DISABLE_BOOL(vista-sdk-requirements,
5877 [ --disable-vista-sdk-requirements
5878 Do not build Vista SDK specific code],
5879 MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=1,
5880 MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=)
5881 if test -n "$MOZ_DISABLE_VISTA_SDK_REQUIREMENTS"; then
5882 AC_MSG_WARN([Resulting builds will not be compatible with Windows Vista. (bug 428970)])
5883 AC_DEFINE(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5884 if test -z "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5885 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5887 MOZ_DISABLE_PARENTAL_CONTROLS=1
5890 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5891 if test "$ac_cv_header_wpcapi_h" = "no"; then
5892 AC_MSG_ERROR([System header wpcapi.h is not available. See updated http://developer.mozilla.org/en/docs/wpcapi.h for details on fixing this problem.])
5897 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
5898 AC_SUBST(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5900 dnl ========================================================
5902 dnl = Module specific options
5904 dnl ========================================================
5905 MOZ_ARG_HEADER(Individual module options)
5907 dnl ========================================================
5908 dnl = Enable Lea malloc in xpcom. OFF by default.
5909 dnl ========================================================
5910 MOZ_ARG_ENABLE_BOOL(xpcom-lea,
5911 [ --enable-xpcom-lea Use Lea malloc in xpcom ],
5914 if test -n "$XPCOM_USE_LEA"; then
5915 AC_DEFINE(XPCOM_USE_LEA)
5918 dnl ========================================================
5919 dnl = Enable places (new history/bookmarks)
5920 dnl ========================================================
5921 MOZ_ARG_ENABLE_BOOL(places,
5922 [ --enable-places Enable 'places' bookmark/history implementation],
5925 if test -n "$MOZ_PLACES"; then
5926 AC_DEFINE(MOZ_PLACES)
5927 if test -z "$MOZ_MAIL_NEWS"; then
5932 if test "$MOZ_BUILD_APP" = "browser"; then
5933 AC_MSG_ERROR([Cannot build Firefox with --disable-places.])
5937 dnl ========================================================
5938 dnl = Disable feed handling components
5939 dnl ========================================================
5940 MOZ_ARG_DISABLE_BOOL(feeds,
5941 [ --disable-feeds Disable feed handling and processing components],
5944 if test -n "$MOZ_FEEDS"; then
5945 AC_DEFINE(MOZ_FEEDS)
5947 if test "$MOZ_BUILD_APP" = "browser"; then
5948 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
5952 dnl ========================================================
5953 dnl = Enable mozStorage
5954 dnl ========================================================
5955 dnl Implicitly enabled by default if building calendar or places
5956 MOZ_ARG_ENABLE_BOOL(storage,
5957 [ --enable-storage Enable mozStorage module and related components],
5960 if test -n "$MOZ_STORAGE"; then
5961 AC_DEFINE(MOZ_STORAGE)
5964 dnl ========================================================
5965 dnl Check for sqlite
5966 dnl ========================================================
5969 MOZ_ARG_ENABLE_BOOL(system-sqlite,
5970 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
5971 MOZ_NATIVE_SQLITE=1,
5972 MOZ_NATIVE_SQLITE= )
5974 if test -z "$MOZ_NATIVE_SQLITE"
5977 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,sqlite3,$(DIST)/lib)'
5979 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
5982 AC_SUBST(MOZ_NATIVE_SQLITE)
5984 dnl = Enable help viewer (off by default)
5985 dnl ========================================================
5986 MOZ_ARG_ENABLE_BOOL(help-viewer,
5987 [ --enable-help-viewer Enable help viewer],
5990 if test -n "$MOZ_HELP_VIEWER"; then
5991 AC_DEFINE(MOZ_HELP_VIEWER)
5993 AC_SUBST(MOZ_HELP_VIEWER)
5994 if test "$MOZ_BUILD_APP" = "browser" -a -n "$MOZ_HELP_VIEWER"; then
5995 AC_MSG_ERROR([Cannot build Firefox with --enable-help-viewer.])
5998 dnl ========================================================
5999 dnl = Enable safe browsing (anti-phishing)
6000 dnl ========================================================
6001 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6002 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
6003 MOZ_SAFE_BROWSING=1,
6004 MOZ_SAFE_BROWSING= )
6005 if test -n "$MOZ_SAFE_BROWSING"; then
6006 AC_DEFINE(MOZ_SAFE_BROWSING)
6008 AC_SUBST(MOZ_SAFE_BROWSING)
6010 dnl ========================================================
6011 dnl = Enable url-classifier
6012 dnl ========================================================
6013 dnl Implicitly enabled by default if building with safe-browsing
6014 if test -n "$MOZ_SAFE_BROWSING"; then
6015 MOZ_URL_CLASSIFIER=1
6017 MOZ_ARG_ENABLE_BOOL(url-classifier,
6018 [ --enable-url-classifier Enable url classifier module],
6019 MOZ_URL_CLASSIFIER=1,
6020 MOZ_URL_CLASSIFIER= )
6021 if test -n "$MOZ_URL_CLASSIFIER"; then
6022 AC_DEFINE(MOZ_URL_CLASSIFIER)
6024 AC_SUBST(MOZ_URL_CLASSIFIER)
6026 dnl ========================================================
6027 dnl = Disable zipwriter
6028 dnl ========================================================
6029 MOZ_ARG_DISABLE_BOOL(zipwriter,
6030 [ --disable-zipwriter Disable zipwriter component],
6033 AC_SUBST(MOZ_ZIPWRITER)
6035 dnl ========================================================
6036 dnl = Enable Ultrasparc specific optimizations for JS
6037 dnl ========================================================
6038 MOZ_ARG_ENABLE_BOOL(js-ultrasparc,
6039 [ --enable-js-ultrasparc Use UltraSPARC optimizations in JS],
6040 JS_ULTRASPARC_OPTS=1,
6041 JS_ULTRASPARC_OPTS= )
6043 dnl only enable option for ultrasparcs
6044 if test `echo "$target_os" | grep -c \^solaris 2>/dev/null` = 0 -o \
6045 "$OS_TEST" != "sun4u"; then
6048 AC_SUBST(JS_ULTRASPARC_OPTS)
6050 dnl ========================================================
6052 dnl = Feature options that require extra sources to be pulled
6054 dnl ========================================================
6055 dnl MOZ_ARG_HEADER(Features that require extra sources)
6057 dnl ========================================================
6059 dnl = Debugging Options
6061 dnl ========================================================
6062 MOZ_ARG_HEADER(Debugging and Optimizations)
6064 dnl ========================================================
6065 dnl = Disable building with debug info.
6066 dnl = Debugging is OFF by default
6067 dnl ========================================================
6068 if test -z "$MOZ_DEBUG_FLAGS"
6072 if test "$GNU_CC"; then
6073 GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
6074 case "$GCC_VERSION" in
6079 MOZ_DEBUG_FLAGS="-g"
6083 MOZ_DEBUG_FLAGS="-g"
6087 MOZ_DEBUG_FLAGS="-g"
6092 MOZ_ARG_ENABLE_STRING(debug,
6093 [ --enable-debug[=DBG] Enable building with developer debug info
6094 (Using compiler flags DBG)],
6095 [ if test "$enableval" != "no"; then
6097 if test -n "$enableval" && test "$enableval" != "yes"; then
6098 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6105 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
6106 case "${target_os}" in
6108 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
6110 msvc*|mks*|cygwin*|mingw*|os2*|wince*)
6111 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
6114 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
6117 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
6119 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6121 if test -n "$MOZ_DEBUG"; then
6122 AC_MSG_CHECKING([for valid debug flags])
6123 _SAVE_CFLAGS=$CFLAGS
6124 CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6125 AC_TRY_COMPILE([#include <stdio.h>],
6126 [printf("Hello World\n");],
6129 AC_MSG_RESULT([$_results])
6130 if test "$_results" = "no"; then
6131 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6133 CFLAGS=$_SAVE_CFLAGS
6136 dnl ========================================================
6137 dnl = Enable code optimization. ON by default.
6138 dnl ========================================================
6139 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6140 MOZ_OPTIMIZE_FLAGS="-O"
6143 MOZ_ARG_ENABLE_STRING(optimize,
6144 [ --disable-optimize Disable compiler optimization
6145 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6146 [ if test "$enableval" != "no"; then
6148 if test -n "$enableval" && test "$enableval" != "yes"; then
6149 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6154 fi ], MOZ_OPTIMIZE=1)
6156 if test "$COMPILE_ENVIRONMENT"; then
6157 if test -n "$MOZ_OPTIMIZE"; then
6158 AC_MSG_CHECKING([for valid optimization flags])
6159 _SAVE_CFLAGS=$CFLAGS
6160 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6161 AC_TRY_COMPILE([#include <stdio.h>],
6162 [printf("Hello World\n");],
6165 AC_MSG_RESULT([$_results])
6166 if test "$_results" = "no"; then
6167 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6169 CFLAGS=$_SAVE_CFLAGS
6171 fi # COMPILE_ENVIRONMENT
6173 AC_SUBST(MOZ_OPTIMIZE)
6174 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6175 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6176 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6178 dnl ========================================================
6179 dnl = Enable/disable debug for specific modules only
6180 dnl = module names beginning with ^ will be disabled
6181 dnl ========================================================
6182 MOZ_ARG_ENABLE_STRING(debug-modules,
6183 [ --enable-debug-modules Enable/disable debug info for specific modules],
6184 [ MOZ_DEBUG_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6186 dnl ========================================================
6187 dnl = Enable/disable generation of debugger info for specific modules only
6188 dnl = the special module name ALL_MODULES can be used to denote all modules
6189 dnl = module names beginning with ^ will be disabled
6190 dnl ========================================================
6191 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
6192 [ --enable-debugger-info-modules
6193 Enable/disable debugger info for specific modules],
6194 [ for i in `echo $enableval | sed 's/,/ /g'`; do
6195 dnl note that the list of module names is reversed as it is copied
6196 dnl this is important, as it will allow config.mk to interpret stuff like
6197 dnl "^ALL_MODULES xpcom" properly
6198 if test "$i" = "no"; then
6201 if test "$i" = "yes"; then
6204 MOZ_DBGRINFO_MODULES="$i $MOZ_DBGRINFO_MODULES";
6207 dnl ========================================================
6208 dnl Enable garbage collector
6209 dnl ========================================================
6210 MOZ_ARG_ENABLE_BOOL(boehm,
6211 [ --enable-boehm Enable the Boehm Garbage Collector],
6214 if test -n "$GC_LEAK_DETECTOR"; then
6215 AC_DEFINE(GC_LEAK_DETECTOR)
6218 dnl ========================================================
6219 dnl Disable runtime logging checks
6220 dnl ========================================================
6221 MOZ_ARG_DISABLE_BOOL(logging,
6222 [ --disable-logging Disable logging facilities],
6223 NS_DISABLE_LOGGING=1,
6224 NS_DISABLE_LOGGING= )
6225 if test "$NS_DISABLE_LOGGING"; then
6226 AC_DEFINE(NS_DISABLE_LOGGING)
6228 AC_DEFINE(MOZ_LOGGING)
6231 dnl ========================================================
6232 dnl = dnl This will enable logging of addref, release, ctor, dtor.
6233 dnl ========================================================
6234 _ENABLE_LOGREFCNT=42
6235 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6236 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
6237 _ENABLE_LOGREFCNT=1,
6238 _ENABLE_LOGREFCNT= )
6239 if test "$_ENABLE_LOGREFCNT" = "1"; then
6240 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6241 elif test -z "$_ENABLE_LOGREFCNT"; then
6242 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6245 dnl ========================================================
6246 dnl = Enable trace malloc
6247 dnl ========================================================
6248 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6249 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6250 [ --enable-trace-malloc Enable malloc tracing],
6253 if test "$NS_TRACE_MALLOC"; then
6254 # Please, Mr. Linker Man, don't take away our symbol names
6255 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6257 AC_DEFINE(NS_TRACE_MALLOC)
6259 AC_SUBST(NS_TRACE_MALLOC)
6261 dnl ========================================================
6262 dnl = Enable jemalloc
6263 dnl ========================================================
6264 MOZ_ARG_ENABLE_BOOL(jemalloc,
6265 [ --enable-jemalloc Replace memory allocator with jemalloc],
6269 if test "$NS_TRACE_MALLOC"; then
6273 if test "$MOZ_MEMORY"; then
6275 dnl Don't try to run compiler tests on Windows
6276 if test "$OS_ARCH" = "WINNT"; then
6277 if test -z "$HAVE_64BIT_OS"; then
6278 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6280 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6283 AC_CHECK_SIZEOF([int *], [4])
6284 case "${ac_cv_sizeof_int_p}" in
6286 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6289 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6292 AC_MSG_ERROR([Unexpected pointer size])
6297 AC_DEFINE(MOZ_MEMORY)
6298 if test "x$MOZ_DEBUG" = "x1"; then
6299 AC_DEFINE(MOZ_MEMORY_DEBUG)
6301 dnl The generic feature tests that determine how to compute ncpus are long and
6302 dnl complicated. Therefore, simply define special cpp variables for the
6303 dnl platforms we have special knowledge of.
6304 case "${target_os}" in
6306 AC_DEFINE(MOZ_MEMORY_DARWIN)
6309 AC_DEFINE(MOZ_MEMORY_BSD)
6312 AC_DEFINE(MOZ_MEMORY_LINUX)
6315 AC_DEFINE(MOZ_MEMORY_BSD)
6318 AC_DEFINE(MOZ_MEMORY_SOLARIS)
6320 msvc*|mks*|cygwin*|mingw*)
6321 AC_DEFINE(MOZ_MEMORY_WINDOWS)
6322 dnl XXX: should test for vc8sp1 here, otherwise patching the crt src
6323 dnl will fail miserably
6324 if test "$_CC_SUITE" -lt "8"; then
6325 AC_MSG_ERROR([Building jemalloc requires Visual C++ 2005 or better])
6327 if test -z "$WIN32_CRT_SRC_DIR" -a -z "$WIN32_CUSTOM_CRT_DIR"; then
6328 if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
6329 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.])
6331 WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
6334 if test -z "$WIN32_CRT_SRC_DIR"; then
6336 WIN32_CUSTOM_CRT_DIR=`cd "$WIN32_CUSTOM_CRT_DIR" && pwd`
6337 _WIN_UNIX_CRT_PATH="$WIN32_CUSTOM_CRT_DIR"
6339 # CRT source directory
6340 WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd`
6341 _CRT_BASE_DIR=`basename "$WIN32_CRT_SRC_DIR"`
6342 _WIN_UNIX_CRT_PATH="$_objdir/memory/jemalloc/$_CRT_BASE_DIR/build/intel"
6344 dnl need win32 paths in LIB, hence this python abuse. extra brackets
6346 _WIN_CRT_PATH=[`$PYTHON -c 'import sys, os.path; print os.path.normpath(sys.argv[1])' "$_WIN_UNIX_CRT_PATH"`]
6347 MOZ_LIB="$_WIN_CRT_PATH;$LIB"
6348 dnl Needs to be in PATH too, since our tools will wind up linked against it.
6349 dnl This needs to be unix style.
6350 MOZ_PATH="$PATH:$_WIN_UNIX_CRT_PATH"
6351 dnl Statically link the C++ stdlib. We only use this for Breakpad anyway.
6352 AC_DEFINE(_STATIC_CPPLIB)
6353 dnl Don't generate a manifest, since we're linking to a custom CRT.
6354 LDFLAGS="$LDFLAGS -MANIFEST:NO"
6355 dnl Also pass this to NSPR/NSS
6356 DLLFLAGS="$DLLFLAGS -MANIFEST:NO"
6360 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
6364 AC_ARG_WITH([valgrind],
6365 [ --with-valgrind Enable valgrind integration hooks],
6366 [enable_valgrind="yes"], [enable_valgrind="no"])
6367 AC_CHECK_HEADER([valgrind/valgrind.h], [], [enable_valgrind="no"])
6368 if test "x$enable_valgrind" = "xyes" ; then
6369 AC_DEFINE(MOZ_VALGRIND)
6372 AC_SUBST(MOZ_MEMORY)
6373 AC_SUBST(WIN32_CRT_SRC_DIR)
6374 AC_SUBST(WIN32_CUSTOM_CRT_DIR)
6377 dnl Need to set this for make because NSS doesn't have configure
6380 dnl ========================================================
6381 dnl = Use malloc wrapper lib
6382 dnl ========================================================
6383 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
6384 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
6388 if test -n "$_WRAP_MALLOC"; then
6389 if test "$GNU_CC"; then
6390 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"
6391 MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) -o $@'
6395 dnl ========================================================
6396 dnl = Location of malloc wrapper lib
6397 dnl ========================================================
6398 MOZ_ARG_WITH_STRING(wrap-malloc,
6399 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
6400 WRAP_MALLOC_LIB=$withval)
6402 dnl ========================================================
6403 dnl = Use Electric Fence
6404 dnl ========================================================
6405 MOZ_ARG_ENABLE_BOOL(efence,
6406 [ --enable-efence Link with Electric Fence],
6409 if test -n "$_ENABLE_EFENCE"; then
6410 AC_CHECK_LIB(efence,malloc)
6413 dnl ========================================================
6415 dnl ========================================================
6416 MOZ_ARG_ENABLE_BOOL(jprof,
6417 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof)],
6420 if test -n "$MOZ_JPROF"; then
6421 AC_DEFINE(MOZ_JPROF)
6424 dnl ========================================================
6426 dnl ========================================================
6427 MOZ_ARG_ENABLE_BOOL(shark,
6428 [ --enable-shark Enable shark remote profiling (needs CHUD framework)],
6431 if test -n "$MOZ_SHARK"; then
6432 AC_DEFINE(MOZ_SHARK)
6435 dnl ========================================================
6436 dnl = Enable stripping of libs & executables
6437 dnl ========================================================
6438 MOZ_ARG_ENABLE_BOOL(strip,
6439 [ --enable-strip Enable stripping of libs & executables ],
6443 dnl ========================================================
6444 dnl = Enable stripping of libs & executables when packaging
6445 dnl ========================================================
6446 MOZ_ARG_ENABLE_BOOL(install-strip,
6447 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
6451 dnl ========================================================
6452 dnl = --enable-elf-dynstr-gc
6453 dnl ========================================================
6454 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
6455 [ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
6456 USE_ELF_DYNSTR_GC=1,
6457 USE_ELF_DYNSTR_GC= )
6459 dnl ========================================================
6460 dnl = --enable-old-abi-compat-wrappers
6461 dnl ========================================================
6462 dnl on x86 linux, the current builds of some popular plugins (notably
6463 dnl flashplayer and real) expect a few builtin symbols from libgcc
6464 dnl which were available in some older versions of gcc. However,
6465 dnl they're _NOT_ available in newer versions of gcc (eg 3.1), so if
6466 dnl we want those plugin to work with a gcc-3.1 built binary, we need
6467 dnl to provide these symbols. MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS defaults
6468 dnl to true on x86 linux, and false everywhere else.
6471 MOZ_ARG_ENABLE_BOOL(old-abi-compat-wrappers,
6472 [ --enable-old-abi-compat-wrappers
6473 Support old GCC ABI symbols to ease the pain
6474 of the linux compiler change],
6475 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1,
6476 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS= )
6477 if test "$COMPILE_ENVIRONMENT"; then
6478 if test "$MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS"; then
6481 AC_CHECK_FUNCS(__builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual)
6483 AC_DEFINE(MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS)
6485 fi # COMPILE_ENVIRONMENT
6487 dnl ========================================================
6488 dnl = --enable-prebinding
6489 dnl ========================================================
6490 MOZ_ARG_ENABLE_BOOL(prebinding,
6491 [ --enable-prebinding Enable prebinding (Mac OS X only)],
6495 dnl ========================================================
6497 dnl = Profiling and Instrumenting
6499 dnl ========================================================
6500 MOZ_ARG_HEADER(Profiling and Instrumenting)
6502 dnl ========================================================
6503 dnl = Enable timeline service, which provides lightweight
6504 dnl = instrumentation of mozilla for performance measurement.
6505 dnl = Timeline is off by default.
6506 dnl ========================================================
6507 MOZ_ARG_ENABLE_BOOL(timeline,
6508 [ --enable-timeline Enable timeline services ],
6511 if test -n "$MOZ_TIMELINE"; then
6512 AC_DEFINE(MOZ_TIMELINE)
6515 dnl ========================================================
6516 dnl Turn on reflow counting
6517 dnl ========================================================
6518 MOZ_ARG_ENABLE_BOOL(reflow-perf,
6519 [ --enable-reflow-perf Enable reflow performance tracing],
6522 if test -n "$MOZ_REFLOW_PREF"; then
6523 AC_DEFINE(MOZ_REFLOW_PREF)
6525 AC_SUBST(MOZ_REFLOW_PERF)
6527 dnl ========================================================
6528 dnl Enable performance metrics.
6529 dnl ========================================================
6530 MOZ_ARG_ENABLE_BOOL(perf-metrics,
6531 [ --enable-perf-metrics Enable performance metrics],
6534 if test -n "$MOZ_PERF_METRICS"; then
6535 AC_DEFINE(MOZ_PERF_METRICS)
6538 dnl ========================================================
6539 dnl Enable code size metrics.
6540 dnl ========================================================
6541 MOZ_ARG_ENABLE_BOOL(codesighs,
6542 [ --enable-codesighs Enable code size analysis tools],
6543 _ENABLE_CODESIGHS=1,
6544 _ENABLE_CODESIGHS= )
6545 if test -n "$_ENABLE_CODESIGHS"; then
6546 if test -d $srcdir/tools/codesighs; then
6549 AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
6553 dnl ========================================================
6554 dnl = Add support for Eazel profiler
6555 dnl ========================================================
6556 MOZ_ARG_ENABLE_BOOL(eazel-profiler-support,
6557 [ --enable-eazel-profiler-support
6558 Enable Corel/Eazel profiler support],
6559 ENABLE_EAZEL_PROFILER=1,
6560 ENABLE_EAZEL_PROFILER= )
6561 if test -n "$ENABLE_EAZEL_PROFILER"; then
6562 AC_DEFINE(ENABLE_EAZEL_PROFILER)
6564 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6565 EAZEL_PROFILER_CFLAGS="-g -O -gdwarf-2 -finstrument-functions -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
6566 EAZEL_PROFILER_LIBS="-lprofiler -lpthread"
6569 MOZ_ARG_ENABLE_STRING(profile-modules,
6570 [ --enable-profile-modules
6571 Enable/disable profiling for specific modules],
6572 [ MOZ_PROFILE_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6574 MOZ_ARG_ENABLE_BOOL(insure,
6575 [ --enable-insure Enable insure++ instrumentation (linux only)],
6578 if test -n "$_ENABLE_INSURE"; then
6582 MOZ_INSURE_EXCLUDE_DIRS="config"
6585 MOZ_ARG_WITH_STRING(insure-dirs,
6586 [ --with-insure-dirs=DIRS
6587 Dirs to instrument with insure ],
6588 MOZ_INSURE_DIRS=$withval )
6590 MOZ_ARG_WITH_STRING(insure-exclude-dirs,
6591 [ --with-insure-exclude-dirs=DIRS
6592 Dirs to not instrument with insure ],
6593 MOZ_INSURE_EXCLUDE_DIRS="config $withval" )
6595 dnl ========================================================
6596 dnl = Support for Quantify (Windows)
6597 dnl ========================================================
6598 MOZ_ARG_ENABLE_BOOL(quantify,
6599 [ --enable-quantify Enable Quantify support (Windows only) ],
6603 dnl ========================================================
6604 dnl = Support for demangling undefined symbols
6605 dnl ========================================================
6606 if test -z "$SKIP_LIBRARY_CHECKS"; then
6609 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
6613 # Demangle only for debug or trace-malloc builds
6614 MOZ_DEMANGLE_SYMBOLS=
6615 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
6616 MOZ_DEMANGLE_SYMBOLS=1
6617 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
6619 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
6621 dnl ========================================================
6622 dnl = Support for gcc stack unwinding (from gcc 3.3)
6623 dnl ========================================================
6624 if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then
6625 AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
6628 dnl ========================================================
6632 dnl ========================================================
6633 MOZ_ARG_HEADER(Misc. Options)
6635 dnl ========================================================
6636 dnl update xterm title
6637 dnl ========================================================
6638 MOZ_ARG_ENABLE_BOOL(xterm-updates,
6639 [ --enable-xterm-updates Update XTERM titles with current command.],
6643 dnl =========================================================
6645 dnl =========================================================
6646 MOZ_ARG_ENABLE_STRING([chrome-format],
6647 [ --enable-chrome-format=jar|flat|both|symlink
6648 Select FORMAT of chrome files (default=jar)],
6649 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
6651 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
6652 MOZ_CHROME_FILE_FORMAT=jar
6655 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
6656 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
6657 test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
6658 test "$MOZ_CHROME_FILE_FORMAT" != "both"; then
6659 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, or symlink])
6662 dnl ========================================================
6663 dnl = Define default location for MOZILLA_FIVE_HOME
6664 dnl ========================================================
6665 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
6666 [ --with-default-mozilla-five-home
6667 Set the default value for MOZILLA_FIVE_HOME],
6668 [ val=`echo $withval`
6669 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
6671 dnl ========================================================
6672 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
6673 dnl ========================================================
6674 MOZ_ARG_WITH_STRING(user-appdir,
6675 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
6676 [ val=`echo $withval`
6677 if echo "$val" | grep "\/" >/dev/null; then
6678 AC_MSG_ERROR("Homedir must be single relative path.")
6683 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
6685 dnl ========================================================
6686 dnl = Doxygen configuration
6687 dnl ========================================================
6688 dnl Use commas to specify multiple dirs to this arg
6689 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
6690 MOZ_ARG_WITH_STRING(doc-input-dirs,
6691 [ --with-doc-input-dirs=DIRS
6692 Header/idl dirs to create docs from],
6693 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6694 AC_SUBST(MOZ_DOC_INPUT_DIRS)
6696 dnl Use commas to specify multiple dirs to this arg
6697 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
6698 MOZ_ARG_WITH_STRING(doc-include-dirs,
6699 [ --with-doc-include-dirs=DIRS
6700 Include dirs to preprocess doc headers],
6701 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6702 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
6704 MOZ_DOC_OUTPUT_DIR='./dist/docs'
6705 MOZ_ARG_WITH_STRING(doc-output-dir,
6706 [ --with-doc-output-dir=DIR
6707 Dir to generate docs into],
6708 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
6709 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
6711 if test -z "$SKIP_COMPILER_CHECKS"; then
6712 dnl ========================================================
6714 dnl = Compiler Options
6716 dnl ========================================================
6717 MOZ_ARG_HEADER(Compiler Options)
6719 dnl ========================================================
6720 dnl Check for gcc -pipe support
6721 dnl ========================================================
6722 AC_MSG_CHECKING([for gcc -pipe support])
6723 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
6724 echo '#include <stdio.h>' > dummy-hello.c
6725 echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
6726 ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
6727 cat dummy-hello.s | ${AS_BIN} -o dummy-hello.S - 2>&5
6728 if test $? = 0; then
6733 if test "$_res_as_stdin" = "yes"; then
6734 _SAVE_CFLAGS=$CFLAGS
6735 CFLAGS="$CFLAGS -pipe"
6736 AC_TRY_COMPILE( [ #include <stdio.h> ],
6737 [printf("Hello World\n");],
6738 [_res_gcc_pipe="yes"],
6739 [_res_gcc_pipe="no"] )
6740 CFLAGS=$_SAVE_CFLAGS
6742 if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
6744 CFLAGS="$CFLAGS -pipe"
6745 CXXFLAGS="$CXXFLAGS -pipe"
6749 rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
6750 AC_MSG_RESULT([$_res])
6755 dnl pass -Wno-long-long to the compiler
6756 MOZ_ARG_ENABLE_BOOL(long-long-warning,
6757 [ --enable-long-long-warning
6758 Warn about use of non-ANSI long long type],
6759 _IGNORE_LONG_LONG_WARNINGS=,
6760 _IGNORE_LONG_LONG_WARNINGS=1)
6762 if test "$_IGNORE_LONG_LONG_WARNINGS"; then
6763 _SAVE_CFLAGS="$CFLAGS"
6764 CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
6765 AC_MSG_CHECKING([whether compiler supports -Wno-long-long])
6766 AC_TRY_COMPILE([], [return(0);],
6767 [ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6768 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6769 result="yes" ], result="no")
6770 AC_MSG_RESULT([$result])
6771 CFLAGS="$_SAVE_CFLAGS"
6774 dnl ========================================================
6775 dnl Profile guided optimization
6776 dnl ========================================================
6777 dnl Test for profiling options
6778 dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
6779 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
6781 dnl Provide a switch to disable PGO even when called via profiledbuild.
6782 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
6783 [ --disable-profile-guided-optimization
6784 Don't build with PGO even if called via make profiledbuild],
6785 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
6786 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
6788 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
6790 _SAVE_CFLAGS="$CFLAGS"
6791 CFLAGS="$CFLAGS -fprofile-generate"
6793 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
6794 AC_TRY_COMPILE([], [return 0;],
6795 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
6796 result="yes" ], result="no")
6797 AC_MSG_RESULT([$result])
6799 if test $result = "yes"; then
6800 PROFILE_GEN_LDFLAGS="-fprofile-generate"
6801 PROFILE_USE_CFLAGS="-fprofile-use"
6802 PROFILE_USE_LDFLAGS="-fprofile-use"
6804 CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
6805 AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
6806 AC_TRY_COMPILE([], [return 0;],
6807 [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
6808 result="yes" ], result="no")
6809 AC_MSG_RESULT([$result])
6810 if test $result = "yes"; then
6811 PROFILE_USE_CFLAGS="-fbranch-probabilities"
6813 # don't really care, this is an old GCC
6814 PROFILE_GEN_LDFLAGS=
6815 PROFILE_USE_LDFLAGS=
6818 CFLAGS="$_SAVE_CFLAGS"
6820 if test -n "$INTEL_CC"; then
6821 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
6822 PROFILE_GEN_LDFLAGS=
6823 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
6824 PROFILE_USE_LDFLAGS=
6827 dnl Sun Studio on Solaris
6828 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
6829 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
6830 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
6831 if test "$CPU_ARCH" != "sparc"; then
6832 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
6833 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
6835 PROFILE_USE_CFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6836 PROFILE_USE_LDFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6840 AC_SUBST(PROFILE_GEN_CFLAGS)
6841 AC_SUBST(PROFILE_GEN_LDFLAGS)
6842 AC_SUBST(PROFILE_USE_CFLAGS)
6843 AC_SUBST(PROFILE_USE_LDFLAGS)
6847 dnl ========================================================
6848 dnl Test for -pedantic bustage
6849 dnl ========================================================
6850 MOZ_ARG_DISABLE_BOOL(pedantic,
6851 [ --disable-pedantic Issue all warnings demanded by strict ANSI C ],
6853 if test "$_PEDANTIC"; then
6854 _SAVE_CXXFLAGS=$CXXFLAGS
6855 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6856 AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
6857 AC_TRY_COMPILE([$configure_static_assert_macros],
6858 [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
6859 result="no", result="yes" )
6860 AC_MSG_RESULT([$result])
6861 CXXFLAGS="$_SAVE_CXXFLAGS"
6865 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic"
6866 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6869 AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic. Reconfigure using --disable-pedantic. ])
6874 dnl ========================================================
6875 dnl Test for correct temporary object destruction order
6876 dnl ========================================================
6877 dnl We want to make sure the compiler follows the C++ spec here as
6878 dnl xpcom and the string classes depend on it (bug 235381).
6879 AC_MSG_CHECKING([for correct temporary object destruction order])
6880 AC_TRY_RUN([ class A {
6881 public: A(int& x) : mValue(x) {}
6883 operator char**() { return 0; }
6884 private: int& mValue;
6886 void func(char **arg) {}
6897 result="yes", result="no", result="maybe")
6898 AC_MSG_RESULT([$result])
6900 if test "$result" = "no"; then
6901 AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
6904 dnl ========================================================
6905 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
6906 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
6907 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
6908 dnl ========================================================
6909 _SAVE_CXXFLAGS=$CXXFLAGS
6910 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
6911 AC_CACHE_CHECK(for correct overload resolution with const and templates,
6912 ac_nscap_nonconst_opeq_bug,
6921 template <class T, class U>
6922 int operator==(const Pointer<T>& rhs, U* lhs)
6924 return rhs.myPtr == lhs;
6927 template <class T, class U>
6928 int operator==(const Pointer<T>& rhs, const U* lhs)
6930 return rhs.myPtr == lhs;
6938 ac_nscap_nonconst_opeq_bug="no",
6939 ac_nscap_nonconst_opeq_bug="yes")])
6940 CXXFLAGS="$_SAVE_CXXFLAGS"
6942 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
6943 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
6945 fi # SKIP_COMPILER_CHECKS
6947 dnl ========================================================
6949 dnl Should be smarter and check that the compiler does indeed have rtti
6950 dnl ========================================================
6951 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
6952 [ --enable-cpp-rtti Enable C++ RTTI ],
6953 [ _MOZ_USE_RTTI=1 ],
6956 if test "$_MOZ_USE_RTTI"; then
6957 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
6959 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
6962 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
6964 dnl ========================================================
6965 dnl C++ exceptions (g++/egcs only - for now)
6966 dnl Should be smarter and check that the compiler does indeed have exceptions
6967 dnl ========================================================
6968 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
6969 [ --enable-cpp-exceptions Enable C++ exceptions ],
6970 [ _MOZ_CPP_EXCEPTIONS=1 ],
6971 [ _MOZ_CPP_EXCEPTIONS= ])
6973 if test "$_MOZ_CPP_EXCEPTIONS"; then
6974 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
6976 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
6979 # Irix & OSF native compilers do not like exception declarations
6980 # when exceptions are disabled
6981 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
6982 AC_DEFINE(CPP_THROW_NEW, [])
6984 AC_DEFINE(CPP_THROW_NEW, [throw()])
6988 dnl ========================================================
6990 dnl = Build depencency options
6992 dnl ========================================================
6993 MOZ_ARG_HEADER(Build dependencies)
6995 dnl ========================================================
6996 dnl = Do not auto generate dependency info
6997 dnl ========================================================
6999 MOZ_ARG_DISABLE_BOOL(auto-deps,
7000 [ --disable-auto-deps Do not automatically generate dependency info],
7004 if test -n "$MOZ_AUTO_DEPS"; then
7005 dnl ========================================================
7006 dnl = Use mkdepend instead of $CC -MD for dependency generation
7007 dnl ========================================================
7009 MOZ_ARG_DISABLE_BOOL(md,
7010 [ --disable-md Do not use compiler-based dependencies ],
7013 [dnl Default is to turn on -MD if using GNU-compatible compilers
7014 if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
7017 dnl Default is to use -xM if using Sun Studio on Solaris
7018 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7021 if test "$_cpp_md_flag"; then
7023 if test "$OS_ARCH" = "OpenVMS"; then
7024 _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(*F).pp))'
7026 _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(*F).pp)'
7028 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7029 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7034 _USE_CPP_INCLUDE_FLAG=
7035 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7036 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7040 AC_SUBST(MOZ_AUTO_DEPS)
7041 AC_SUBST(COMPILER_DEPEND)
7045 dnl ========================================================
7047 dnl = Static Build Options
7049 dnl ========================================================
7050 MOZ_ARG_HEADER(Static build options)
7052 MOZ_ARG_ENABLE_BOOL(static,
7053 [ --enable-static Enable building of internal static libs],
7054 BUILD_STATIC_LIBS=1,
7057 dnl Disable libxul in debug builds, but not for xulrunner.
7058 if test -n "$MOZ_DEBUG" -a "$MOZ_BUILD_APP" != "xulrunner"; then
7062 MOZ_ARG_ENABLE_BOOL(libxul,
7063 [ --enable-libxul Enable building of libxul],
7064 MOZ_ENABLE_LIBXUL=1,
7067 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
7068 AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
7071 if test -n "$MOZ_ENABLE_LIBXUL" -a -z "$MOZ_XUL_APP"; then
7072 AC_MSG_ERROR([--enable-libxul is only compatible with toolkit XUL applications.])
7075 if test -n "$MOZ_ENABLE_LIBXUL"; then
7076 XPCOM_LIBS="$LIBXUL_LIBS"
7077 AC_DEFINE(MOZ_ENABLE_LIBXUL)
7079 if test -n "$BUILD_STATIC_LIBS"; then
7080 AC_DEFINE(MOZ_STATIC_BUILD)
7082 XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
7085 dnl ========================================================
7086 dnl = Force JS to be a static lib
7087 dnl ========================================================
7088 MOZ_ARG_ENABLE_BOOL(js-static-build,
7089 [ --enable-js-static-build Force js to be a static lib],
7093 AC_SUBST(JS_STATIC_BUILD)
7095 if test -n "$JS_STATIC_BUILD"; then
7096 AC_DEFINE(EXPORT_JS_API)
7098 if test -z "$BUILD_STATIC_LIBS"; then
7099 AC_MSG_ERROR([--enable-js-static-build is only compatible with --enable-static])
7104 dnl Disable static mail in debug builds, but not with libxul sdk.
7105 if test -n "$MOZ_DEBUG" -a -z "$LIBXUL_SDK"; then
7106 MOZ_STATIC_MAIL_BUILD=
7108 MOZ_ARG_ENABLE_BOOL(static-mail,
7109 [ --enable-static-mail Enable static mail build support],
7110 MOZ_STATIC_MAIL_BUILD=1,
7111 MOZ_STATIC_MAIL_BUILD= )
7113 if test "$MOZ_STATIC_MAIL_BUILD"; then
7114 AC_DEFINE(MOZ_STATIC_MAIL_BUILD)
7117 AC_SUBST(MOZ_STATIC_MAIL_BUILD)
7119 dnl ========================================================
7121 dnl = Standalone module options
7123 dnl ========================================================
7124 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7126 dnl Check for GLib and libIDL.
7127 dnl ========================================================
7128 case "$target_os" in
7129 msvc*|mks*|cygwin*|mingw*|wince*)
7130 SKIP_IDL_CHECK="yes"
7137 if test -z "$COMPILE_ENVIRONMENT"; then
7138 SKIP_IDL_CHECK="yes"
7141 dnl = Allow users to disable libIDL checking for standalone modules
7142 MOZ_ARG_WITHOUT_BOOL(libIDL,
7143 [ --without-libIDL Skip check for libIDL (standalone modules only)],
7144 SKIP_IDL_CHECK="yes")
7146 if test "$SKIP_IDL_CHECK" = "no"
7149 if test "$MACOS_SDK_DIR"; then
7150 dnl xpidl, and therefore libIDL, is only needed on the build host.
7151 dnl Don't build it against the SDK, as that causes problems.
7152 _MACSAVE_CFLAGS="$CFLAGS"
7153 _MACSAVE_LIBS="$LIBS"
7154 _MACSAVE_LDFLAGS="$LDFLAGS"
7155 _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
7157 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"`
7158 LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
7159 LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
7164 if test "$MOZ_ENABLE_GTK2"; then
7165 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
7167 dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
7168 dnl to either libIDL1 or libIDL2.
7169 if test -z "$_LIBIDL_FOUND"; then
7170 AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
7171 if test -z "$_LIBIDL_FOUND"; then
7172 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
7176 dnl If we don't have a libIDL config program & not cross-compiling,
7177 dnl look for orbit-config instead.
7179 if test -z "$_LIBIDL_FOUND" && test -z "$CROSS_COMPILE"; then
7180 AC_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
7181 if test -n "$ORBIT_CONFIG"; then
7182 AC_MSG_CHECKING([for ORBit libIDL usability])
7183 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
7184 _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
7185 _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
7186 _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
7187 LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
7188 LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
7190 _SAVE_CFLAGS="$CFLAGS"
7192 CFLAGS="$LIBIDL_CFLAGS $CFLAGS"
7193 LIBS="$LIBIDL_LIBS $LIBS"
7196 #include <libIDL/IDL.h>
7199 s=strdup(IDL_get_libver_string());
7212 AC_MSG_RESULT($result)
7213 CFLAGS="$_SAVE_CFLAGS"
7217 if test -z "$_LIBIDL_FOUND"; then
7218 AC_MSG_ERROR([libIDL not found.
7219 libIDL $LIBIDL_VERSION or higher is required.])
7221 if test "$MACOS_SDK_DIR"; then
7222 CFLAGS="$_MACSAVE_CFLAGS"
7223 LIBS="$_MACSAVE_LIBS"
7224 LDFLAGS="$_MACSAVE_LDFLAGS"
7225 if test -n "$_MACSAVE_NEXT_ROOT" ; then
7226 export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
7231 if test -n "$CROSS_COMPILE"; then
7232 if test -z "$HOST_LIBIDL_CONFIG"; then
7233 HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
7235 if test -n "$HOST_LIBIDL_CONFIG" && test "$HOST_LIBIDL_CONFIG" != "no"; then
7236 HOST_LIBIDL_CFLAGS=`${HOST_LIBIDL_CONFIG} --cflags`
7237 HOST_LIBIDL_LIBS=`${HOST_LIBIDL_CONFIG} --libs`
7239 HOST_LIBIDL_CFLAGS="$LIBIDL_CFLAGS"
7240 HOST_LIBIDL_LIBS="$LIBIDL_LIBS"
7244 if test -z "$SKIP_PATH_CHECKS"; then
7245 if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then
7246 if test "$MOZ_ENABLE_GTK2"; then
7247 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7249 AM_PATH_GLIB(${GLIB_VERSION})
7254 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
7255 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7258 AC_SUBST(LIBIDL_CFLAGS)
7259 AC_SUBST(LIBIDL_LIBS)
7260 AC_SUBST(STATIC_LIBIDL)
7261 AC_SUBST(GLIB_CFLAGS)
7263 AC_SUBST(GLIB_GMODULE_LIBS)
7264 AC_SUBST(HOST_LIBIDL_CONFIG)
7265 AC_SUBST(HOST_LIBIDL_CFLAGS)
7266 AC_SUBST(HOST_LIBIDL_LIBS)
7268 dnl ========================================================
7269 dnl Check for libart
7270 dnl ========================================================
7271 if test "$MOZ_SVG_RENDERER_LIBART"; then
7272 if test ! -f $topsrcdir/other-licenses/libart_lgpl/Makefile.in; then
7273 AC_MSG_ERROR([You must check out the mozilla version of libart. Use
7274 mk_add_options MOZ_CO_MODULE=mozilla/other-licenses/libart_lgpl])
7277 dnl libart's configure hasn't been run yet, but we know what the
7278 dnl answer should be anyway
7279 MOZ_LIBART_CFLAGS='-I${DIST}/include/libart_lgpl'
7280 case "$target_os" in
7281 msvc*|mks*|cygwin*|mingw*|wince*)
7282 MOZ_LIBART_LIBS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)moz_art_lgpl.$(IMPORT_LIB_SUFFIX)'
7285 MOZ_LIBART_LIBS='-lmoz_art -lm'
7288 MOZ_LIBART_LIBS='-lmoz_art_lgpl -lroot -lbe'
7291 MOZ_LIBART_LIBS='-lmoz_art_lgpl -lm'
7297 AC_SUBST(MOZ_LIBART_CFLAGS)
7298 AC_SUBST(MOZ_LIBART_LIBS)
7300 dnl ========================================================
7302 dnl ========================================================
7303 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
7306 MOZ_ARG_ENABLE_BOOL(system-cairo,
7307 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
7311 # Check for headers defining standard int types.
7312 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
7314 if test "$MOZ_TREE_CAIRO"; then
7315 AC_DEFINE(MOZ_TREE_CAIRO)
7317 # For now we assume that we will have a uint64_t available through
7318 # one of the above headers or mozstdint.h.
7319 AC_DEFINE(HAVE_UINT64_T)
7321 # Define macros for cairo-features.h
7322 if test "$MOZ_X11"; then
7323 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
7324 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
7325 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
7326 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7327 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7328 MOZ_ENABLE_CAIRO_FT=1
7329 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
7331 if test "$MOZ_WIDGET_TOOLKIT" = "mac" -o "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
7332 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
7333 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
7334 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
7336 if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7337 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
7338 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
7339 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7341 if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
7342 OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
7343 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7344 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7345 MOZ_ENABLE_CAIRO_FT=1
7346 CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
7347 CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
7349 if test "$MOZ_ENABLE_GLITZ"; then
7350 GLITZ_SURFACE_FEATURE="#define CAIRO_HAS_GLITZ_SURFACE 1"
7352 if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
7353 PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
7354 BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
7355 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7356 MOZ_ENABLE_CAIRO_FT=1
7358 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
7359 AC_SUBST(CAIRO_FT_CFLAGS)
7361 if test "$MOZ_DEBUG"; then
7362 SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
7364 SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
7367 PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
7369 AC_SUBST(PS_SURFACE_FEATURE)
7370 AC_SUBST(PDF_SURFACE_FEATURE)
7371 AC_SUBST(SVG_SURFACE_FEATURE)
7372 AC_SUBST(XLIB_SURFACE_FEATURE)
7373 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
7374 AC_SUBST(QUARTZ_SURFACE_FEATURE)
7375 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
7376 AC_SUBST(XCB_SURFACE_FEATURE)
7377 AC_SUBST(WIN32_SURFACE_FEATURE)
7378 AC_SUBST(OS2_SURFACE_FEATURE)
7379 AC_SUBST(BEOS_SURFACE_FEATURE)
7380 AC_SUBST(GLITZ_SURFACE_FEATURE)
7381 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
7382 AC_SUBST(FT_FONT_FEATURE)
7383 AC_SUBST(WIN32_FONT_FEATURE)
7384 AC_SUBST(QUARTZ_FONT_FEATURE)
7385 AC_SUBST(PNG_FUNCTIONS_FEATURE)
7387 if test "$_WIN32_MSVC"; then
7388 MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/mozcairo.lib $(DEPTH)/gfx/cairo/libpixman/src/mozlibpixman.lib'
7389 if test "$MOZ_ENABLE_GLITZ"; then
7390 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'$(DEPTH)/gfx/cairo/glitz/src/mozglitz.lib $(DEPTH)/gfx/cairo/glitz/src/wgl/mozglitzwgl.lib'
7393 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"
7395 if test "$MOZ_X11"; then
7396 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
7399 if test "$MOZ_ENABLE_GLITZ"; then
7400 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src -lmozglitz'
7401 if test "$MOZ_X11"; then
7402 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src/glx -lmozglitzglx -lGL'
7404 if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7405 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src/wgl -lmozglitzwgl'
7410 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION freetype2 fontconfig)
7411 MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
7412 MOZ_CAIRO_LIBS=$CAIRO_LIBS
7413 if test "$MOZ_X11"; then
7414 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
7415 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
7416 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
7420 AC_SUBST(MOZ_TREE_CAIRO)
7421 AC_SUBST(MOZ_CAIRO_CFLAGS)
7422 AC_SUBST(MOZ_CAIRO_LIBS)
7424 dnl ========================================================
7426 dnl ========================================================
7429 MOZ_ARG_ENABLE_BOOL(system-lcms,
7430 [ --enable-system-lcms Use system lcms (located with pkgconfig)],
7434 if test -z "$MOZ_NATIVE_LCMS"
7437 if test "$_WIN32_MSVC"; then
7438 if test -z "$BUILD_STATIC_LIBS" -a -z "$MOZ_ENABLE_LIBXUL"; then
7439 LCMS_CFLAGS=-DLCMS_DLL
7441 LCMS_LIBS='$(LIBXUL_DIST)/lib/mozlcms.lib'
7443 LCMS_LIBS='-L$(LIBXUL_DIST)/bin -lmozlcms'
7446 PKG_CHECK_MODULES(LCMS, lcms >= $LCMS_VERSION)
7449 AC_SUBST(MOZ_NATIVE_LCMS)
7450 AC_SUBST(LCMS_CFLAGS)
7453 dnl ========================================================
7455 dnl ========================================================
7456 MOZ_ARG_DISABLE_BOOL(xul,
7457 [ --disable-xul Disable XUL],
7459 if test "$MOZ_XUL"; then
7462 dnl remove extensions that require XUL
7463 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
7468 dnl ========================================================
7469 dnl Two ways to enable Python support:
7470 dnl --enable-extensions=python # select all available.
7471 dnl (MOZ_PYTHON_EXTENSIONS contains the list of extensions)
7473 dnl --enable-extensions=python/xpcom,... # select individual ones
7475 dnl If either is used, we locate the Python to use.
7476 dnl ========================================================
7478 dnl If 'python' appears anywhere in the extensions list, go lookin'...
7479 if test `echo "$MOZ_EXTENSIONS" | grep -c python` -ne 0; then
7480 dnl Allow PYTHON to point to the Python interpreter to use
7481 dnl (note that it must be the python executable - which we
7482 dnl run to locate the relevant paths etc)
7483 dnl If not set, we use whatever Python we can find.
7485 dnl Ask Python what its version number is
7487 MOZ_PYTHON_VER=`$PYTHON -c "import sys;print '%d%d' % sys.version_info[0:2]"`
7488 MOZ_PYTHON_VER_DOTTED=`$PYTHON -c "import sys;print '%d.%d' % sys.version_info[0:2]"`
7490 dnl Ask for the Python "prefix" (ie, home/source dir)
7491 MOZ_PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
7492 dnl Setup the include and library directories.
7493 if test "$OS_ARCH" = "WINNT"; then
7494 MOZ_PYTHON_PREFIX=`$CYGPATH_W $MOZ_PYTHON_PREFIX | $CYGPATH_S`
7495 dnl Source trees have "include" and "PC" for .h, and "PCbuild" for .lib
7496 dnl Binary trees have "include" for .h, and "libs" for .lib
7497 dnl We add 'em both - along with quotes, to handle spaces.
7498 MOZ_PYTHON_DLL_SUFFIX=.pyd
7499 MOZ_PYTHON_INCLUDES="\"-I$MOZ_PYTHON_PREFIX/include\" \"-I$MOZ_PYTHON_PREFIX/PC\""
7500 MOZ_PYTHON_LIBS="\"/libpath:$MOZ_PYTHON_PREFIX/PCBuild\" \"/libpath:$MOZ_PYTHON_PREFIX/libs\""
7502 dnl Non-Windows include and libs
7503 MOZ_PYTHON_DLL_SUFFIX=$DLL_SUFFIX
7504 MOZ_PYTHON_INCLUDES="-I$MOZ_PYTHON_PREFIX/include/python$MOZ_PYTHON_VER_DOTTED"
7505 dnl Check for dynamic Python lib
7506 dnl - A static Python is no good - multiple dynamic libraries (xpcom
7507 dnl - core, xpcom loader, pydom etc) all need to share Python.
7508 dnl - Python 2.3's std --enable-shared configure option will
7509 dnl create a libpython2.3.so.1.0. We should first try this
7510 dnl dotted versioned .so file because this is the one that
7511 dnl the PyXPCOM build mechanics tries to link to.
7512 dnl XXX Should find a better way than hardcoding "1.0".
7513 dnl - Python developement tree dir layouts are NOT allowed here
7514 dnl because the PyXPCOM build just dies on it later anyway.
7515 dnl - Fixes to the above by Python/*nix knowledgable people welcome!
7516 if test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7517 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7518 elif test -f "$MOZ_PYTHON_PREFIX/lib64/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7519 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib64 -lpython$MOZ_PYTHON_VER_DOTTED"
7520 elif test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7521 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7522 elif test -f "$MOZ_PYTHON_PREFIX/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7523 dnl Don't Python development tree directory layout.
7524 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX -lpython$MOZ_PYTHON_VER_DOTTED"
7525 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.])
7526 elif test "$OS_ARCH" = "Darwin"; then
7527 dnl We do Darwin last, so if a custom non-framework build of
7528 dnl python is used on OSX, then it will be picked up first by
7529 dnl the logic above.
7530 MOZ_PYTHON_LIBS="-framework Python"
7532 AC_MSG_ERROR([Could not find build shared libraries for Python at $MOZ_PYTHON_PREFIX. This is required for PyXPCOM.])
7534 if test "$OS_ARCH" = "Linux"; then
7535 MOZ_PYTHON_LIBS="$MOZ_PYTHON_LIBS -lutil"
7538 dnl Handle "_d" on Windows
7539 if test "$OS_ARCH" = "WINNT" && test -n "$MOZ_DEBUG"; then
7540 MOZ_PYTHON_DEBUG_SUFFIX="_d"
7542 MOZ_PYTHON_DEBUG_SUFFIX=
7544 AC_MSG_RESULT(Building Python extensions using python-$MOZ_PYTHON_VER_DOTTED from $MOZ_PYTHON_PREFIX)
7547 dnl If the user asks for the 'python' extension, then we add
7548 dnl MOZ_PYTHON_EXTENSIONS to MOZ_EXTENSIONS - but with the leading 'python/'
7549 dnl Note the careful regex - it must match 'python' followed by anything
7550 dnl other than a '/', including the end-of-string.
7551 if test `echo "$MOZ_EXTENSIONS" | grep -c 'python\([[^/]]\|$\)'` -ne 0; then
7552 for pyext in $MOZ_PYTHON_EXTENSIONS; do
7553 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS python/$pyext`
7556 dnl Later we may allow MOZ_PYTHON_EXTENSIONS to be specified on the
7557 dnl command-line, but not yet
7558 AC_SUBST(MOZ_PYTHON_EXTENSIONS)
7559 AC_SUBST(MOZ_PYTHON)
7560 AC_SUBST(MOZ_PYTHON_PREFIX)
7561 AC_SUBST(MOZ_PYTHON_INCLUDES)
7562 AC_SUBST(MOZ_PYTHON_LIBS)
7563 AC_SUBST(MOZ_PYTHON_VER)
7564 AC_SUBST(MOZ_PYTHON_VER_DOTTED)
7565 AC_SUBST(MOZ_PYTHON_DEBUG_SUFFIX)
7566 AC_SUBST(MOZ_PYTHON_DLL_SUFFIX)
7568 dnl ========================================================
7569 dnl disable profile sharing
7570 dnl ========================================================
7571 MOZ_ARG_DISABLE_BOOL(profilesharing,
7572 [ --disable-profilesharing Disable profile sharing],
7573 MOZ_PROFILESHARING=,
7574 MOZ_PROFILESHARING=1 )
7575 if test "$MOZ_PROFILESHARING"; then
7577 AC_DEFINE(MOZ_PROFILESHARING)
7580 dnl ========================================================
7582 dnl ========================================================
7583 MOZ_ARG_ENABLE_BOOL(ipcd,
7584 [ --enable-ipcd Enable IPC daemon],
7588 dnl ========================================================
7589 dnl disable profile locking
7590 dnl do no use this in applications that can have more than
7591 dnl one process accessing the profile directory.
7592 dnl ========================================================
7593 MOZ_ARG_DISABLE_BOOL(profilelocking,
7594 [ --disable-profilelocking Disable profile locking],
7595 MOZ_PROFILELOCKING=,
7596 MOZ_PROFILELOCKING=1 )
7597 if test "$MOZ_PROFILELOCKING"; then
7598 AC_DEFINE(MOZ_PROFILELOCKING)
7601 dnl ========================================================
7602 dnl disable rdf services
7603 dnl ========================================================
7604 MOZ_ARG_DISABLE_BOOL(rdf,
7605 [ --disable-rdf Disable RDF],
7607 if test "$MOZ_RDF"; then
7613 dnl ========================================================
7614 dnl necko configuration options
7615 dnl ========================================================
7618 dnl option to disable various necko protocols
7620 MOZ_ARG_ENABLE_STRING(necko-protocols,
7621 [ --enable-necko-protocols[={http,ftp,default,all,none}]
7622 Enable/disable specific protocol handlers],
7623 [ for option in `echo $enableval | sed 's/,/ /g'`; do
7624 if test "$option" = "yes" || test "$option" = "all"; then
7625 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7626 elif test "$option" = "no" || test "$option" = "none"; then
7628 elif test "$option" = "default"; then
7629 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7630 elif test `echo "$option" | grep -c \^-` != 0; then
7631 option=`echo $option | sed 's/^-//'`
7632 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
7634 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
7637 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
7639 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
7640 AC_SUBST(NECKO_PROTOCOLS)
7641 for p in $NECKO_PROTOCOLS; do
7642 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
7646 dnl option to disable necko's disk cache
7648 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
7649 [ --disable-necko-disk-cache
7650 Disable necko disk cache],
7653 AC_SUBST(NECKO_DISK_CACHE)
7654 if test "$NECKO_DISK_CACHE"; then
7655 AC_DEFINE(NECKO_DISK_CACHE)
7659 dnl option to minimize size of necko's i/o buffers
7661 MOZ_ARG_ENABLE_BOOL(necko-small-buffers,
7662 [ --enable-necko-small-buffers
7663 Minimize size of necko's i/o buffers],
7664 NECKO_SMALL_BUFFERS=1,
7665 NECKO_SMALL_BUFFERS=)
7666 AC_SUBST(NECKO_SMALL_BUFFERS)
7667 if test "$NECKO_SMALL_BUFFERS"; then
7668 AC_DEFINE(NECKO_SMALL_BUFFERS)
7672 dnl option to disable cookies
7674 MOZ_ARG_DISABLE_BOOL(cookies,
7675 [ --disable-cookies Disable cookie support],
7678 AC_SUBST(NECKO_COOKIES)
7679 if test "$NECKO_COOKIES"; then
7680 AC_DEFINE(NECKO_COOKIES)
7683 dnl NECKO_ configuration options are not global
7684 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
7686 dnl ========================================================
7687 dnl string api compatibility
7688 dnl ========================================================
7689 MOZ_ARG_DISABLE_BOOL(v1-string-abi,
7690 [ --disable-v1-string-abi Disable binary compatibility layer for strings],
7692 MOZ_V1_STRING_ABI=1)
7693 AC_SUBST(MOZ_V1_STRING_ABI)
7694 if test "$MOZ_V1_STRING_ABI"; then
7695 AC_DEFINE(MOZ_V1_STRING_ABI)
7698 dnl Only build Mork if it's required
7700 if test "$MOZ_MORK"; then
7704 dnl Build the lightweight Mork reader if required
7705 AC_SUBST(MOZ_MORKREADER)
7706 if test "$MOZ_MORKREADER"; then
7707 AC_DEFINE(MOZ_MORKREADER)
7710 dnl ========================================================
7711 if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
7712 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7715 if test "$MOZ_LDAP_XPCOM"; then
7716 LDAP_CFLAGS='-I${DIST}/public/ldap'
7717 if test "$OS_ARCH" = "WINNT"; then
7718 if test -n "$GNU_CC"; then
7719 LDAP_LIBS='-L$(DIST)/lib -lnsldap32v60 -lnsldappr32v60 -lnsldif32v60'
7721 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}'
7723 elif test "$OS_ARCH" = "OS2"; then
7724 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}'
7726 LDAP_LIBS='-L${DIST}/bin -L${DIST}/lib -lldap60 -lprldap60 -lldif60'
7730 if test "$COMPILE_ENVIRONMENT"; then
7731 if test "$SUNCTL"; then
7732 dnl older versions of glib do not seem to have gmodule which ctl needs
7733 _SAVE_CFLAGS=$CFLAGS
7734 CFLAGS="$CFLAGS $GLIB_CFLAGS"
7737 AC_TRY_COMPILE([#include <gmodule.h>],
7738 [ int x = 1; x++; ],,
7739 [AC_MSG_ERROR([Cannot build ctl without gmodule support in glib.])])
7741 CFLAGS=$_SAVE_CFLAGS
7744 fi # COMPILE_ENVIRONMENT
7746 dnl ========================================================
7748 dnl = Maintainer debug option (no --enable equivalent)
7750 dnl ========================================================
7755 AC_SUBST(AR_EXTRACT)
7759 AC_SUBST(AS_DASH_C_FLAG)
7764 AC_SUBST(USE_SHORT_LIBNAME)
7768 AC_SUBST(NS_USE_NATIVE)
7769 AC_SUBST(MOZ_WIDGET_TOOLKIT)
7770 AC_SUBST(MOZ_GFX_TOOLKIT)
7771 AC_SUBST(MOZ_UPDATE_XTERM)
7773 AC_SUBST(MOZ_AUTH_EXTENSION)
7774 AC_SUBST(MOZ_MATHML)
7775 AC_SUBST(MOZ_PERMISSIONS)
7777 AC_SUBST(MOZ_XMLEXTRAS)
7778 AC_SUBST(MOZ_NO_INSPECTOR_APIS)
7779 AC_SUBST(MOZ_WEBSERVICES)
7780 AC_SUBST(MOZ_PREF_EXTENSIONS)
7782 AC_SUBST(MOZ_SVG_FOREIGNOBJECT)
7783 AC_SUBST(MOZ_XSLT_STANDALONE)
7784 AC_SUBST(MOZ_JS_LIBS)
7787 AC_SUBST(MOZ_DEBUG_MODULES)
7788 AC_SUBST(MOZ_PROFILE_MODULES)
7789 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
7790 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
7791 AC_SUBST(MOZ_DEBUG_FLAGS)
7792 AC_SUBST(MOZ_DEBUG_LDFLAGS)
7793 AC_SUBST(WARNINGS_AS_ERRORS)
7794 AC_SUBST(MOZ_DBGRINFO_MODULES)
7795 AC_SUBST(MOZ_EXTENSIONS)
7796 AC_SUBST(MOZ_IMG_DECODERS)
7797 AC_SUBST(MOZ_IMG_ENCODERS)
7798 AC_SUBST(MOZ_JSDEBUGGER)
7800 AC_SUBST(MOZ_NO_XPCOM_OBSOLETE)
7801 AC_SUBST(MOZ_PLUGINS)
7802 AC_SUBST(ENABLE_EAZEL_PROFILER)
7803 AC_SUBST(EAZEL_PROFILER_CFLAGS)
7804 AC_SUBST(EAZEL_PROFILER_LIBS)
7805 AC_SUBST(MOZ_PERF_METRICS)
7806 AC_SUBST(GC_LEAK_DETECTOR)
7807 AC_SUBST(MOZ_LOG_REFCNT)
7811 AC_SUBST(MOZ_XPCTOOLS)
7812 AC_SUBST(MOZ_JSLOADER)
7813 AC_SUBST(MOZ_USE_NATIVE_UCONV)
7814 AC_SUBST(MOZ_INSURE)
7815 AC_SUBST(MOZ_INSURE_DIRS)
7816 AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
7817 AC_SUBST(MOZ_QUANTIFY)
7818 AC_SUBST(MOZ_INSURIFYING)
7819 AC_SUBST(MOZ_LDAP_XPCOM)
7820 AC_SUBST(MOZ_LDAP_XPCOM_EXPERIMENTAL)
7821 AC_SUBST(LDAP_CFLAGS)
7824 AC_SUBST(MOZ_PLACES)
7825 AC_SUBST(MOZ_PLACES_BOOKMARKS)
7826 AC_SUBST(MOZ_STORAGE)
7828 AC_SUBST(NS_PRINTING)
7830 AC_SUBST(MOZ_JAVAXPCOM)
7831 AC_SUBST(JAVA_INCLUDE_PATH)
7836 AC_SUBST(MOZ_PROFILESHARING)
7837 AC_SUBST(MOZ_PROFILELOCKING)
7842 AC_SUBST(MOZ_XIE_LIBS)
7843 AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
7845 AC_SUBST(XPCOM_USE_LEA)
7846 AC_SUBST(BUILD_STATIC_LIBS)
7847 AC_SUBST(MOZ_ENABLE_LIBXUL)
7848 AC_SUBST(ENABLE_TESTS)
7851 AC_SUBST(MOZ_UNIVERSALCHARDET)
7852 AC_SUBST(ACCESSIBILITY)
7853 AC_SUBST(MOZ_XPINSTALL)
7854 AC_SUBST(MOZ_VIEW_SOURCE)
7855 AC_SUBST(MOZ_SPELLCHECK)
7856 AC_SUBST(MOZ_XPFE_COMPONENTS)
7857 AC_SUBST(MOZ_USER_DIR)
7858 AC_SUBST(MOZ_CRASHREPORTER)
7859 AC_SUBST(MOZ_MOCHITEST)
7861 AC_SUBST(ENABLE_STRIP)
7862 AC_SUBST(PKG_SKIP_STRIP)
7863 AC_SUBST(USE_ELF_DYNSTR_GC)
7864 AC_SUBST(USE_PREBINDING)
7865 AC_SUBST(INCREMENTAL_LINKER)
7866 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
7867 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
7868 AC_SUBST(MOZ_XPCOM_OBSOLETE_LIBS)
7870 AC_SUBST(MOZ_FIX_LINK_PATHS)
7871 AC_SUBST(XPCOM_LIBS)
7872 AC_SUBST(XPCOM_FROZEN_LDOPTS)
7873 AC_SUBST(XPCOM_GLUE_LDOPTS)
7874 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
7876 AC_SUBST(USE_DEPENDENT_LIBS)
7878 AC_SUBST(MOZ_BUILD_ROOT)
7879 AC_SUBST(MOZ_OS2_TOOLS)
7880 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
7882 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
7883 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
7884 AC_SUBST(MOZ_TIMELINE)
7886 AC_SUBST(TARGET_DEVICE)
7888 AC_SUBST(MOZ_APP_NAME)
7889 AC_SUBST(MOZ_APP_DISPLAYNAME)
7890 AC_SUBST(MOZ_APP_VERSION)
7891 AC_SUBST(FIREFOX_VERSION)
7892 AC_SUBST(THUNDERBIRD_VERSION)
7893 AC_SUBST(SUNBIRD_VERSION)
7894 AC_SUBST(SEAMONKEY_VERSION)
7896 AC_SUBST(MOZ_PKG_SPECIAL)
7898 AC_SUBST(MOZILLA_OFFICIAL)
7899 AC_SUBST(BUILD_OFFICIAL)
7900 AC_SUBST(MOZ_MILESTONE_RELEASE)
7903 AC_SUBST(MOZ_PROFILE)
7904 AC_SUBST(MOZ_DEBUG_SYMBOLS)
7905 AC_SUBST(MOZ_MAPINFO)
7906 AC_SUBST(MOZ_BROWSE_INFO)
7907 AC_SUBST(MOZ_TOOLS_DIR)
7908 AC_SUBST(CYGWIN_WRAPPER)
7910 AC_SUBST(WIN32_REDIST_DIR)
7913 dnl Echo the CFLAGS to remove extra whitespace.
7920 $_MOZ_EXCEPTIONS_FLAGS \
7921 $_WARNINGS_CXXFLAGS \
7924 COMPILE_CFLAGS=`echo \
7929 COMPILE_CXXFLAGS=`echo \
7930 $_DEFINES_CXXFLAGS \
7934 AC_SUBST(SYSTEM_MAKEDEPEND)
7935 AC_SUBST(SYSTEM_JPEG)
7936 AC_SUBST(SYSTEM_PNG)
7937 AC_SUBST(SYSTEM_ZLIB)
7938 AC_SUBST(SYSTEM_BZ2)
7940 AC_SUBST(JPEG_CFLAGS)
7942 AC_SUBST(ZLIB_CFLAGS)
7944 AC_SUBST(BZ2_CFLAGS)
7946 AC_SUBST(PNG_CFLAGS)
7949 AC_SUBST(MOZ_JPEG_CFLAGS)
7950 AC_SUBST(MOZ_JPEG_LIBS)
7951 AC_SUBST(MOZ_ZLIB_CFLAGS)
7952 AC_SUBST(MOZ_ZLIB_LIBS)
7953 AC_SUBST(MOZ_BZ2_CFLAGS)
7954 AC_SUBST(MOZ_BZ2_LIBS)
7955 AC_SUBST(MOZ_PNG_CFLAGS)
7956 AC_SUBST(MOZ_PNG_LIBS)
7958 AC_SUBST(NSPR_CFLAGS)
7960 AC_SUBST(MOZ_NATIVE_NSPR)
7962 AC_SUBST(NSS_CFLAGS)
7964 AC_SUBST(NSS_DEP_LIBS)
7965 AC_SUBST(MOZ_NATIVE_NSS)
7970 AC_SUBST(COMPILE_CFLAGS)
7971 AC_SUBST(COMPILE_CXXFLAGS)
7974 AC_SUBST(CROSS_COMPILE)
7978 AC_SUBST(HOST_CFLAGS)
7979 AC_SUBST(HOST_CXXFLAGS)
7980 AC_SUBST(HOST_OPTIMIZE_FLAGS)
7982 AC_SUBST(HOST_AR_FLAGS)
7984 AC_SUBST(HOST_RANLIB)
7985 AC_SUBST(HOST_NSPR_MDCPUCFG)
7986 AC_SUBST(HOST_BIN_SUFFIX)
7987 AC_SUBST(HOST_OS_ARCH)
7989 AC_SUBST(TARGET_CPU)
7990 AC_SUBST(TARGET_VENDOR)
7992 AC_SUBST(TARGET_NSPR_MDCPUCFG)
7993 AC_SUBST(TARGET_MD_ARCH)
7994 AC_SUBST(TARGET_XPCOM_ABI)
7997 AC_SUBST(OS_RELEASE)
8000 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
8001 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8003 AC_SUBST(WRAP_MALLOC_CFLAGS)
8004 AC_SUBST(WRAP_MALLOC_LIB)
8007 AC_SUBST(MKSHLIB_FORCE_ALL)
8008 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8009 AC_SUBST(DSO_CFLAGS)
8010 AC_SUBST(DSO_PIC_CFLAGS)
8011 AC_SUBST(DSO_LDOPTS)
8012 AC_SUBST(LIB_PREFIX)
8013 AC_SUBST(DLL_PREFIX)
8014 AC_SUBST(DLL_SUFFIX)
8015 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8016 AC_SUBST(LIB_SUFFIX)
8017 AC_SUBST(OBJ_SUFFIX)
8018 AC_SUBST(BIN_SUFFIX)
8019 AC_SUBST(ASM_SUFFIX)
8020 AC_SUBST(IMPORT_LIB_SUFFIX)
8022 AC_SUBST(CC_VERSION)
8023 AC_SUBST(CXX_VERSION)
8024 AC_SUBST(MSMANIFEST_TOOL)
8026 if test "$USING_HCC"; then
8027 CC='${topsrcdir}/build/hcc'
8029 CXX='${topsrcdir}/build/hcpp'
8030 CXX="$CXX '$_OLDCXX'"
8035 dnl Check for missing components
8036 if test "$COMPILE_ENVIRONMENT"; then
8037 if test "$MOZ_X11"; then
8038 dnl ====================================================
8039 dnl = Check if X headers exist
8040 dnl ====================================================
8041 _SAVE_CFLAGS=$CFLAGS
8042 CFLAGS="$CFLAGS $XCFLAGS"
8046 #include <X11/Xlib.h>
8047 #include <X11/Intrinsic.h>
8051 if ((dpy = XOpenDisplay(NULL)) == NULL) {
8052 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8056 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8057 CFLAGS="$_SAVE_CFLAGS"
8059 if test ! -z "$MISSING_X"; then
8060 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8064 fi # COMPILE_ENVIRONMENT
8066 dnl Set various defines and substitutions
8067 dnl ========================================================
8069 if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
8070 LIBS='so32dll.lib tcp32dll.lib'
8071 elif test "$OS_ARCH" = "BeOS"; then
8074 elif test "$OS_ARCH" = "Darwin"; then
8076 AC_DEFINE(UNIX_ASYNC_DNS)
8078 elif test "$OS_ARCH" = "OpenVMS"; then
8080 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8082 AC_DEFINE(UNIX_ASYNC_DNS)
8085 AC_SUBST(MOZ_MOVEMAIL)
8087 AC_DEFINE(JS_THREADSAFE)
8089 if test "$MOZ_DEBUG"; then
8090 AC_DEFINE(MOZ_REFLOW_PERF)
8091 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8094 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8095 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8096 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8097 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8098 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8099 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8100 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8101 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8102 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8105 # Used for LD_LIBRARY_PATH of run_viewer target
8107 for lib_arg in $NSPR_LIBS $TK_LIBS; do
8109 -L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr $lib_arg : "-L\(.*\)"` ;;
8115 dnl ========================================================
8116 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
8117 dnl ========================================================
8120 WIN_TOP_SRC=`cd $srcdir; pwd -W`
8123 HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
8124 HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
8125 CC="\$(CYGWIN_WRAPPER) $CC"
8126 CXX="\$(CYGWIN_WRAPPER) $CXX"
8127 CPP="\$(CYGWIN_WRAPPER) $CPP"
8128 LD="\$(CYGWIN_WRAPPER) $LD"
8129 AS="\$(CYGWIN_WRAPPER) $AS"
8130 RC="\$(CYGWIN_WRAPPER) $RC"
8131 MIDL="\$(CYGWIN_WRAPPER) $MIDL"
8132 CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
8133 WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
8137 AC_SUBST(CYGDRIVE_MOUNT)
8138 AC_SUBST(WIN_TOP_SRC)
8140 AC_SUBST(MOZILLA_VERSION)
8142 . ${srcdir}/config/chrome-versions.sh
8143 AC_DEFINE_UNQUOTED(MOZILLA_LOCALE_VERSION,"$MOZILLA_LOCALE_VERSION")
8144 AC_DEFINE_UNQUOTED(MOZILLA_REGION_VERSION,"$MOZILLA_REGION_VERSION")
8145 AC_DEFINE_UNQUOTED(MOZILLA_SKIN_VERSION,"$MOZILLA_SKIN_VERSION")
8147 AC_SUBST(ac_configure_args)
8149 dnl Spit out some output
8150 dnl ========================================================
8152 dnl The following defines are used by xpcom
8153 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8155 HAVE_CPP_2BYTE_WCHAR_T
8156 HAVE_CPP_ACCESS_CHANGING_USING
8157 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8159 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8161 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
8162 HAVE_CPP_NAMESPACE_STD
8164 HAVE_CPP_PARTIAL_SPECIALIZATION
8165 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8167 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
8169 NEED_CPP_UNUSED_IMPLEMENTATIONS
8173 HAVE_ICONV_WITH_CONST_INPUT
8182 netwerk/necko-config.h
8183 xpcom/xpcom-config.h
8184 xpcom/xpcom-private.h
8187 # Save the defines header file before autoconf removes it.
8188 # (Do not add AC_DEFINE calls after this line.)
8189 _CONFIG_TMP=confdefs-tmp.h
8190 _CONFIG_DEFS_H=mozilla-config.h
8192 cat > $_CONFIG_TMP <<\EOF
8193 /* List of defines generated by configure. Included with preprocessor flag,
8194 * -include, to avoid long list of -D defines on the compile command-line.
8198 #ifndef _MOZILLA_CONFIG_H_
8199 #define _MOZILLA_CONFIG_H_
8202 _EGREP_PATTERN='^#define ('
8203 if test -n "$_NON_GLOBAL_ACDEFINES"; then
8204 for f in $_NON_GLOBAL_ACDEFINES; do
8205 _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
8208 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
8210 sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
8212 cat >> $_CONFIG_TMP <<\EOF
8214 #endif /* _MOZILLA_CONFIG_H_ */
8218 # Only write mozilla-config.h when something changes (or it doesn't exist)
8219 if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
8222 AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
8223 mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
8225 echo ==== $_CONFIG_DEFS_H =================================
8229 dnl Probably shouldn't call this manually but we always want the output of DEFS
8230 rm -f confdefs.h.save
8231 mv confdefs.h confdefs.h.save
8232 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
8233 AC_OUTPUT_MAKE_DEFS()
8235 AC_SUBST(MOZ_DEFINES)
8237 mv confdefs.h.save confdefs.h
8239 dnl Load the list of Makefiles to generate.
8240 dnl To add new Makefiles, edit allmakefiles.sh.
8241 dnl allmakefiles.sh sets the variable, MAKEFILES.
8242 . ${srcdir}/allmakefiles.sh
8244 dnl Run a perl script to quickly create the makefiles.
8245 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
8246 dnl for the files it cannot handle correctly. This way, config.status
8247 dnl will handle these files.
8248 dnl If it fails, nothing is set and config.status will run as usual.
8250 dnl This does not change the $MAKEFILES variable.
8252 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
8254 if test -z "${AS_PERL}"; then
8255 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
8257 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
8262 echo $MAKEFILES > unallmakefiles
8264 AC_OUTPUT($MAKEFILES)
8266 dnl ========================================================
8267 dnl = Setup a nice relatively clean build environment for
8268 dnl = sub-configures.
8269 dnl ========================================================
8272 CFLAGS="$_SUBDIR_CFLAGS"
8273 CPPFLAGS="$_SUBDIR_CPPFLAGS"
8274 CXXFLAGS="$_SUBDIR_CXXFLAGS"
8275 LDFLAGS="$_SUBDIR_LDFLAGS"
8276 HOST_CC="$_SUBDIR_HOST_CC"
8277 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
8278 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
8284 if test "$COMPILE_ENVIRONMENT"; then
8285 if test -z "$MOZ_NATIVE_NSPR" || test "$MOZ_LDAP_XPCOM"; then
8286 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
8287 if test -z "$MOZ_DEBUG"; then
8288 ac_configure_args="$ac_configure_args --disable-debug"
8290 if test "$MOZ_OPTIMIZE" = "1"; then
8291 ac_configure_args="$ac_configure_args --enable-optimize"
8293 if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
8294 ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
8296 if test -n "$HAVE_64BIT_OS"; then
8297 ac_configure_args="$ac_configure_args --enable-64bit"
8299 AC_OUTPUT_SUBDIRS(nsprpub)
8300 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8303 if test -z "$MOZ_NATIVE_NSPR"; then
8304 # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
8305 AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
8306 if test ! "$VACPP" && test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
8307 _libs=`./nsprpub/config/nspr-config --prefix=$\(LIBXUL_DIST\) --exec-prefix=$\(DIST\) --libdir=$\(LIBXUL_DIST\)/lib --libs`
8308 $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $_libs'" config/autoconf.mk
8310 if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE" ; then
8311 _cflags=`./nsprpub/config/nspr-config --prefix=$\(LIBXUL_DIST\) --exec-prefix=$\(DIST\) --includedir=$\(LIBXUL_DIST\)/include/nspr --cflags`
8312 $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $_cflags'" config/autoconf.mk
8314 rm -f config/autoconf.mk.bak
8317 # if we're building the LDAP XPCOM component, we need to build
8320 if test "$MOZ_LDAP_XPCOM"; then
8322 # these subdirs may not yet have been created in the build tree.
8323 # don't use the "-p" switch to mkdir, since not all platforms have it
8325 if test ! -d "directory"; then
8328 if test ! -d "directory/c-sdk"; then
8329 mkdir "directory/c-sdk"
8331 if test ! -d "directory/c-sdk/ldap"; then
8332 mkdir "directory/c-sdk/ldap"
8335 ac_configure_args="$_SUBDIR_CONFIG_ARGS --prefix=$MOZ_BUILD_ROOT/dist --with-dist-prefix=$MOZ_BUILD_ROOT/dist --without-nss --with-mozilla"
8336 if test -z "$MOZ_DEBUG"; then
8337 ac_configure_args="$ac_configure_args --disable-debug"
8339 if test "$MOZ_OPTIMIZE" = "1"; then
8340 ac_configure_args="$ac_configure_args --enable-optimize"
8342 if test -n "$HAVE_64BIT_OS"; then
8343 ac_configure_args="$ac_configure_args --enable-64bit"
8345 AC_OUTPUT_SUBDIRS(directory/c-sdk)
8346 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8348 fi # COMPILE_ENVIRONMENT