Bug 788829 - Call SetSizeConstraints even if a popup is not open. r=enndeakin
[gecko.git] / configure.in
blobd296e5afec0fe6b8fa2cf03950de50bfeca2ea0c
2 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
3 dnl vi: set tabstop=4 shiftwidth=4 expandtab syntax=m4:
4 dnl This Source Code Form is subject to the terms of the Mozilla Public
5 dnl License, v. 2.0. If a copy of the MPL was not distributed with this
6 dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 dnl Process this file with autoconf to produce a configure script.
9 dnl ========================================================
11 AC_PREREQ(2.13)
12 AC_INIT(config/config.mk)
13 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
14 AC_CANONICAL_SYSTEM
15 TARGET_CPU="${target_cpu}"
16 TARGET_VENDOR="${target_vendor}"
17 TARGET_OS="${target_os}"
19 MOZ_DEB_TIMESTAMP=`date +"%a, %d  %b %Y %T %z"   2>&1`
20 AC_SUBST(MOZ_DEB_TIMESTAMP)
22 dnl ========================================================
23 dnl =
24 dnl = Don't change the following two lines.  Doing so breaks:
25 dnl =
26 dnl = CFLAGS="-foo" ./configure
27 dnl =
28 dnl ========================================================
29 CFLAGS="${CFLAGS=}"
30 CPPFLAGS="${CPPFLAGS=}"
31 CXXFLAGS="${CXXFLAGS=}"
32 LDFLAGS="${LDFLAGS=}"
33 HOST_CFLAGS="${HOST_CFLAGS=}"
34 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
35 HOST_LDFLAGS="${HOST_LDFLAGS=}"
37 dnl ========================================================
38 dnl = Preserve certain environment flags passed to configure
39 dnl = We want sub projects to receive the same flags
40 dnl = untainted by this configure script
41 dnl ========================================================
42 _SUBDIR_CC="$CC"
43 _SUBDIR_CXX="$CXX"
44 _SUBDIR_CFLAGS="$CFLAGS"
45 _SUBDIR_CPPFLAGS="$CPPFLAGS"
46 _SUBDIR_CXXFLAGS="$CXXFLAGS"
47 _SUBDIR_LDFLAGS="$LDFLAGS"
48 _SUBDIR_HOST_CC="$HOST_CC"
49 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
50 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
51 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
52 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
54 dnl Set the version number of the libs included with mozilla
55 dnl ========================================================
56 MOZJPEG=62
57 MOZPNG=10513
58 NSPR_VERSION=4
59 NSS_VERSION=3
61 dnl Set the minimum version of toolkit libs used by mozilla
62 dnl ========================================================
63 GLIB_VERSION=1.2.0
64 PERL_VERSION=5.006
65 PYTHON_VERSION_MAJOR=2
66 PYTHON_VERSION_MINOR=5
67 CAIRO_VERSION=1.10
68 PANGO_VERSION=1.14.0
69 GTK2_VERSION=2.10.0
70 WINDRES_VERSION=2.14.90
71 W32API_VERSION=3.14
72 GNOMEVFS_VERSION=2.0
73 GNOMEUI_VERSION=2.2.0
74 GCONF_VERSION=1.2.1
75 GIO_VERSION=2.18
76 STARTUP_NOTIFICATION_VERSION=0.8
77 DBUS_VERSION=0.60
78 SQLITE_VERSION=3.7.14
80 MSMANIFEST_TOOL=
82 dnl Set various checks
83 dnl ========================================================
84 MISSING_X=
85 AC_PROG_AWK
87 dnl Initialize the Pthread test variables early so they can be
88 dnl  overridden by each platform.
89 dnl ========================================================
90 USE_PTHREADS=
91 _PTHREAD_LDFLAGS=""
93 dnl Do not allow a separate objdir build if a srcdir build exists.
94 dnl ==============================================================
95 _topsrcdir=`cd \`dirname $0\`; pwd`
96 _objdir=`pwd`
98 if test "$_topsrcdir" != "$_objdir"
99 then
100   # Check for a couple representative files in the source tree
101   _conflict_files=
102   for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
103     if test -f $file; then
104       _conflict_files="$_conflict_files $file"
105     fi
106   done
107   if test "$_conflict_files"; then
108     echo "***"
109     echo "*   Your source tree contains these files:"
110     for file in $_conflict_files; do
111       echo "*         $file"
112     done
113     cat 1>&2 <<-EOF
114         *   This indicates that you previously built in the source tree.
115         *   A source tree build can confuse the separate objdir build.
116         *
117         *   To clean up the source tree:
118         *     1. cd $_topsrcdir
119         *     2. gmake distclean
120         ***
121         EOF
122     exit 1
123     break
124   fi
126 MOZ_BUILD_ROOT=`pwd`
128 MOZ_DEFAULT_COMPILER
130 COMPILE_ENVIRONMENT=1
131 MOZ_ARG_DISABLE_BOOL(compile-environment,
132 [  --disable-compile-environment
133                           Disable compiler/library checks.],
134     COMPILE_ENVIRONMENT= )
135 AC_SUBST(COMPILE_ENVIRONMENT)
137 MOZ_ARG_WITH_STRING(l10n-base,
138 [  --with-l10n-base=DIR    path to l10n repositories],
139     L10NBASEDIR=$withval)
140 if test -n "$L10NBASEDIR"; then
141     if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
142         AC_MSG_ERROR([--with-l10n-base must specify a path])
143     elif test -d "$L10NBASEDIR"; then
144         L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
145     else
146         AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
147     fi
149 AC_SUBST(L10NBASEDIR)
151 dnl Check for Perl first -- needed for win32 SDK checks
152 MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
153 if test -z "$PERL" -o "$PERL" = ":"; then
154     AC_MSG_ERROR([perl not found in \$PATH])
157 AC_SUBST(GAIADIR)
158 if test -n "$GAIADIR" ; then
159     AC_DEFINE(PACKAGE_GAIA)
162 MOZ_ARG_WITH_STRING(gonk,
163 [  --with-gonk=DIR
164                location of gonk dir],
165     gonkdir=$withval)
167 MOZ_ARG_WITH_STRING(gonk-toolchain-prefix,
168 [  --with-gonk-toolchain-prefix=DIR
169                           prefix to gonk toolchain commands],
170     gonk_toolchain_prefix=$withval)
172 if test -n "$gonkdir" ; then
173     kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"`
174     android_source="$gonkdir"
175     ANDROID_SOURCE="$android_source"
176     ANDROID_NDK="${ANDROID_SOURCE}/ndk"
178     dnl set up compilers
179     TOOLCHAIN_PREFIX="$gonk_toolchain_prefix"
180     AS="$gonk_toolchain_prefix"as
181     CC="$gonk_toolchain_prefix"gcc
182     CXX="$gonk_toolchain_prefix"g++
183     CPP="$gonk_toolchain_prefix"cpp
184     LD="$gonk_toolchain_prefix"ld
185     AR="$gonk_toolchain_prefix"ar
186     RANLIB="$gonk_toolchain_prefix"ranlib
187     STRIP="$gonk_toolchain_prefix"strip
189     STLPORT_CPPFLAGS="-I$gonkdir/ndk/sources/cxx-stl/stlport/stlport/ -I$gonkdir/external/stlport/stlport/"
190     STLPORT_LIBS="-lstlport"
192     case "$target_cpu" in
193     arm)
194         ARCH_DIR=arch-arm
195         ;;
196     i?86)
197         ARCH_DIR=arch-x86
198         ;;
199     esac
201     CPPFLAGS="-DANDROID -isystem $gonkdir/bionic/libc/$ARCH_DIR/include -isystem $gonkdir/bionic/libc/include/ -isystem $gonkdir/bionic/libc/kernel/common -isystem $gonkdir/bionic/libc/kernel/$ARCH_DIR -isystem $gonkdir/bionic/libm/include -I$gonkdir/frameworks/base/opengl/include -I$gonkdir/frameworks/base/native/include -I$gonkdir/hardware/libhardware/include -I$gonkdir/hardware/libhardware_legacy/include -I$gonkdir/system -I$gonkdir/system/core/include -isystem $gonkdir/bionic -I$gonkdir/frameworks/base/include -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib $CPPFLAGS -I$gonkdir/frameworks/base/services/sensorservice -I$gonkdir/frameworks/base/services/camera -I$gonkdir/system/media/wilhelm/include -I$gonkdir/frameworks/base/include/media/stagefright -I$gonkdir/frameworks/base/include/media/stagefright/openmax -I$gonkdir/frameworks/base/media/libstagefright/rtsp -I$gonkdir/frameworks/base/media/libstagefright/include -I$gonkdir/dalvik/libnativehelper/include/nativehelper"
202     CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS"
203     CXXFLAGS="-mandroid -fno-short-enums -fno-exceptions -Wno-psabi $CXXFLAGS $STLPORT_CPPFLAGS"
204     dnl Add -llog by default, since we use it all over the place.
205     LIBS="$LIBS -llog $STLPORT_LIBS"
207     LDFLAGS="-mandroid -L$gonkdir/out/target/product/$GONK_PRODUCT/obj/lib -Wl,-rpath-link=$gonkdir/out/target/product/$GONK_PRODUCT/obj/lib --sysroot=$gonkdir/out/target/product/$GONK_PRODUCT/obj/ $LDFLAGS"
209     dnl prevent cross compile section from using these flags as host flags
210     if test -z "$HOST_CPPFLAGS" ; then
211         HOST_CPPFLAGS=" "
212     fi
213     if test -z "$HOST_CFLAGS" ; then
214         HOST_CFLAGS=" "
215     fi
216     if test -z "$HOST_CXXFLAGS" ; then
217         HOST_CXXFLAGS=" "
218     fi
219     if test -z "$HOST_LDFLAGS" ; then
220         HOST_LDFLAGS=" "
221     fi
223     AC_DEFINE(ANDROID)
224     AC_DEFINE(HAVE_SYS_UIO_H)
225     AC_DEFINE(HAVE_PTHREADS)
226     CROSS_COMPILE=1
227     MOZ_CHROME_FILE_FORMAT=omni
228     direct_nspr_config=1
229 else
230     MOZ_ANDROID_NDK
232     case "$target" in
233     *-android*|*-linuxandroid*)
234         if test -z "$ANDROID_PACKAGE_NAME" ; then
235             ANDROID_PACKAGE_NAME='org.mozilla.$(MOZ_APP_NAME)'
236         fi
237         MOZ_CHROME_FILE_FORMAT=omni
238         ZLIB_DIR=yes
239         ;;
240     *-linux*)
241         AC_PATH_PROG(OBJCOPY,objcopy)
242         ;;
243     esac
246 AC_SUBST(ANDROID_SOURCE)
247 AC_SUBST(ANDROID_PACKAGE_NAME)
248 AC_SUBST(OBJCOPY)
250 dnl ========================================================
251 dnl Checks for compilers.
252 dnl ========================================================
253 dnl Set CROSS_COMPILE in the environment when running configure
254 dnl to use the cross-compile setup for now
255 dnl ========================================================
257 dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
258 AR_FLAGS='cr $@'
260 if test "$COMPILE_ENVIRONMENT"; then
262 if test -n "$CROSS_COMPILE" -a "$target" != "$host"; then
263     echo "cross compiling from $host to $target"
264     cross_compiling=yes
266     _SAVE_CC="$CC"
267     _SAVE_CFLAGS="$CFLAGS"
268     _SAVE_LDFLAGS="$LDFLAGS"
270     AC_MSG_CHECKING([for host c compiler])
271     AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
272     if test -z "$HOST_CC"; then
273         AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
274     fi
275     AC_MSG_RESULT([$HOST_CC])
276     AC_MSG_CHECKING([for host c++ compiler])
277     AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
278     if test -z "$HOST_CXX"; then
279         AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
280     fi
281     AC_MSG_RESULT([$HOST_CXX])
283     if test -z "$HOST_CFLAGS"; then
284         HOST_CFLAGS="$CFLAGS"
285     fi
286     if test -z "$HOST_CXXFLAGS"; then
287         HOST_CXXFLAGS="$CXXFLAGS"
288     fi
289     if test -z "$HOST_LDFLAGS"; then
290         HOST_LDFLAGS="$LDFLAGS"
291     fi
292     if test -z "$HOST_AR_FLAGS"; then
293         HOST_AR_FLAGS="$AR_FLAGS"
294     fi
295     AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
296     AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
297     CC="$HOST_CC"
298     CFLAGS="$HOST_CFLAGS"
299     LDFLAGS="$HOST_LDFLAGS"
301     AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
302     AC_TRY_COMPILE([], [return(0);],
303         [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
304         AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
306     CC="$HOST_CXX"
307     CFLAGS="$HOST_CXXFLAGS"
309     AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
310     AC_TRY_COMPILE([], [return(0);],
311         [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
312         AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
314     CC=$_SAVE_CC
315     CFLAGS=$_SAVE_CFLAGS
316     LDFLAGS=$_SAVE_LDFLAGS
318     AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
319     unset ac_cv_prog_CC
320     AC_PROG_CC
321     AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
322     unset ac_cv_prog_CXX
323     AC_PROG_CXX
325     AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
326     AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
327     MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
328     AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
329     AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
330     AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
331     AC_DEFINE(CROSS_COMPILE)
332 else
333     AC_PROG_CC
334     case "$target" in
335     *-mingw*)
336       # Work around the conftest.exe access problem on Windows
337       sleep 2
338     esac
339     AC_PROG_CXX
340     AC_PROG_RANLIB
341     MOZ_PATH_PROGS(AS, $AS as, $CC)
342     AC_CHECK_PROGS(AR, ar, :)
343     AC_CHECK_PROGS(LD, ld, :)
344     AC_CHECK_PROGS(STRIP, strip, :)
345     AC_CHECK_PROGS(WINDRES, windres, :)
346     if test -z "$HOST_CC"; then
347         HOST_CC="$CC"
348     fi
349     if test -z "$HOST_CFLAGS"; then
350         HOST_CFLAGS="$CFLAGS"
351     fi
352     if test -z "$HOST_CXX"; then
353         HOST_CXX="$CXX"
354     fi
355     if test -z "$HOST_CXXFLAGS"; then
356         HOST_CXXFLAGS="$CXXFLAGS"
357     fi
358     if test -z "$HOST_LDFLAGS"; then
359         HOST_LDFLAGS="$LDFLAGS"
360     fi
361     if test -z "$HOST_RANLIB"; then
362         HOST_RANLIB="$RANLIB"
363     fi
364     if test -z "$HOST_AR"; then
365         HOST_AR="$AR"
366     fi
367     if test -z "$HOST_AR_FLAGS"; then
368         HOST_AR_FLAGS="$AR_FLAGS"
369     fi
372 if test -n "$MOZ_WINCONSOLE"; then
373     AC_DEFINE(MOZ_WINCONSOLE)
376 MOZ_TOOL_VARIABLES
378 dnl ========================================================
379 dnl Special win32 checks
380 dnl ========================================================
382 # With win8, sdk target=602, WINVER=602
383 MOZ_ARG_ENABLE_BOOL(metro,
384 [  --enable-metro           Enable Windows Metro build targets],
385     MOZ_METRO=1,
386     MOZ_METRO=)
387 if test -n "$MOZ_METRO"; then
388     AC_DEFINE(MOZ_METRO)
389     # Target the Windows 8 Kit
390     WINSDK_TARGETVER=602
391     # Allow a higher api set
392     WINVER=602
393     # toolkit/library/makefile.in needs these, see nsDllMain.
394     CRTDLLVERSION=110
395     CRTEXPDLLVERSION=1-1-0
396 else
397     # Target the Windows 7 SDK by default
398     WINSDK_TARGETVER=601
399     WINVER=502
402 AC_SUBST(CRTDLLVERSION)
403 AC_SUBST(CRTEXPDLLVERSION)
405 if test -n "$MOZ_METRO"; then
406   case "$target" in
407   *-mingw*)
408     ;;
409   *)
410     AC_MSG_ERROR([Metro builds only valid on the windows platform.]);
411     ;;
412   esac
415 MOZ_ARG_WITH_STRING(windows-version,
416 [  --with-windows-version=WINSDK_TARGETVER
417                           Windows SDK version to target. Lowest version
418                           currently allowed is 601 (Win7), highest is 602 (Win8)],
419   WINSDK_TARGETVER=$withval)
421 # Currently only two sdk versions allowed, 601 and 602
422 case "$WINSDK_TARGETVER" in
423 601|602)
424     MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
425     ;;
428     AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER)]);
429     ;;
430 esac
432 case "$target" in
433 *-mingw*)
434     if test "$GCC" != "yes"; then
435         # Check to see if we are really running in a msvc environemnt
436         _WIN32_MSVC=1
437         AC_CHECK_PROGS(MIDL, midl)
439         # Make sure compilers are valid
440         CFLAGS="$CFLAGS -TC -nologo"
441         CXXFLAGS="$CXXFLAGS -TP -nologo"
442         AC_LANG_SAVE
443         AC_LANG_C
444         AC_TRY_COMPILE([#include <stdio.h>],
445             [ printf("Hello World\n"); ],,
446             AC_MSG_ERROR([\$(CC) test failed.  You must have MS VC++ in your path to build.]) )
448         AC_LANG_CPLUSPLUS
449         AC_TRY_COMPILE([#include <new.h>],
450             [ unsigned *test = new unsigned(42); ],,
451             AC_MSG_ERROR([\$(CXX) test failed.  You must have MS VC++ in your path to build.]) )
452         AC_LANG_RESTORE
454         changequote(,)
455         _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
456         changequote([,])
458         # Determine compiler version
459         CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
460         _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
461         _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
462         _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
463         _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
464         _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
466         CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
467         _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
469         if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
470             AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
471         fi
473         if test "$_CC_MAJOR_VERSION" = "14"; then
474             dnl Require VC8SP1 or newer.
475             dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762.
476             if test "$_CC_RELEASE" -lt 50727 -o \
477                     \( "$_CC_RELEASE" -eq 50727 -a "$_CC_BUILD" -lt 762 \); then
478               AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. You probably need to install Service Pack 1 of Visual Studio 2005. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
479             fi
481             _CC_SUITE=8
482             _MSVS_VERSION=2005
483             AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
484             AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
485         elif test "$_CC_MAJOR_VERSION" = "15"; then
486             _CC_SUITE=9
487             _MSVS_VERSION=2008
488             AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
489             AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
490         elif test "$_CC_MAJOR_VERSION" = "16"; then
491             _CC_SUITE=10
492             _MSVS_VERSION=2010
493             AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
494             AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
495         elif test "$_CC_MAJOR_VERSION" = "17"; then
496             _CC_SUITE=11
497             _MSVS_VERSION=2012
498             AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
499             AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
500         else
501             AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
502         fi
504         AC_DEFINE(HAVE_SEH_EXCEPTIONS)
506         if test -n "$WIN32_REDIST_DIR"; then
507           if test ! -d "$WIN32_REDIST_DIR"; then
508             AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
509           fi
510           WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
511         fi
513         dnl Confirm we have the pri tools on win8 builds
514         if test -n "$MOZ_METRO"; then
515           AC_MSG_CHECKING([for makepri])
516           AC_CHECK_PROGS(MAKEPRI, makepri, "")
517           if test -z "MAKEPRI" ; then
518               AC_MSG_ERROR([makepri.exe is required for generating metro browser install components. It should be in the Win8 SDK.])
519           fi
520           AC_SUBST(MAKEPRI)
521         fi
523         dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool',
524         dnl not something else like "magnetic tape manipulation utility".
525         MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
526         if test -z "$MSMT_TOOL"; then
527           AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
528         fi
530         changequote(,)
531         _MSMT_VER_FILTER='s|.*[^!-~]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
532         changequote([,])
533         MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
534         if test -z "$MSMANIFEST_TOOL_VERSION"; then
535           AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
536         fi
538         MSMANIFEST_TOOL=1
539         unset MSMT_TOOL
541         # Check linker version
542         _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
543         _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
544         if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
545             AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION,  does not match the compiler suite version, $_CC_SUITE.])
546         fi
548         INCREMENTAL_LINKER=1
550         # Check midl version
551         _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
552         _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
553         _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
554         _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
555         # Add flags if necessary
556         AC_MSG_CHECKING([for midl flags])
557         case "$target" in
558         i*86-*)
559             if test \( "$_MIDL_MAJOR_VERSION" = "7" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" = "0499" \); then
560                 # MIDL version 7.00.0499 defaults /env win64 on x64 platforms.
561                 # MIDL version 7.00.0500 or later has no problem.
562                 MIDL_FLAGS="${MIDL_FLAGS} -env win32"
563                 AC_MSG_RESULT([need -env win32])
564             else
565                 AC_MSG_RESULT([none needed])
566             fi
567             ;;
568         x86_64-*)
569             MIDL_FLAGS="${MIDL_FLAGS} -env x64"
570             ;;
571         *)
572             AC_MSG_RESULT([none needed])
573             ;;
574         esac
576         # Identify which version of the SDK we're building with
577         # Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
578         # from there
579         MOZ_CHECK_HEADERS([winsdkver.h])
580         if test "$ac_cv_header_winsdkver_h" = "yes"; then
581             # Get the highest _WIN32_WINNT and NTDDI versions supported
582             # Take the higher of the two
583             # This is done because the Windows 7 beta SDK reports its
584             # NTDDI_MAXVER to be 0x06000100 instead of 0x06010000, as it should
585             AC_CACHE_CHECK(for highest Windows version supported by this SDK,
586                            ac_cv_winsdk_maxver,
587                            [cat > conftest.h <<EOF
588 #include <winsdkver.h>
589 #include <sdkddkver.h>
591 #if (NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER) > NTDDI_MAXVER)
592 #define WINSDK_MAXVER NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER)
593 #else
594 #define WINSDK_MAXVER NTDDI_MAXVER
595 #endif
597 WINSDK_MAXVER
599                             ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
600                             rm -f conftest.h
601                            ])
602             MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
603         else
604             # Any SDK which doesn't have WinSDKVer.h is too old.
605             AC_MSG_ERROR([Your SDK does not have WinSDKVer.h. It is probably too old. Please upgrade to a newer SDK or try running the Windows SDK Configuration Tool and selecting a newer SDK. See https://developer.mozilla.org/En/Windows_SDK_versions for more details on fixing this.])
606         fi
608         unset _MSVC_VER_FILTER
610         AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
611             [
612                 AC_LANG_SAVE
613                 AC_LANG_CPLUSPLUS
614                 _SAVE_CXXFLAGS="$CXXFLAGS"
615                 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
616                 AC_TRY_COMPILE([#include <exception>],
617                             [std::_Throw(std::exception()); return 0;],
618                             ac_cv_have_std__Throw="yes",
619                             ac_cv_have_std__Throw="no")
620                 CXXFLAGS="$_SAVE_CXXFLAGS"
621                 AC_LANG_RESTORE
622             ])
624         if test "$ac_cv_have_std__Throw" = "yes"; then
625             AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
626                            ac_cv_have_dllimport_exception_bug,
627                 [
628                     AC_LANG_SAVE
629                     AC_LANG_CPLUSPLUS
630                     _SAVE_CXXFLAGS="$CXXFLAGS"
631                     CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
632                     AC_TRY_LINK([#include <vector>],
633                                 [std::vector<int> v; return v.at(1);],
634                                 ac_cv_have_dllimport_exception_bug="no",
635                                 ac_cv_have_dllimport_exception_bug="yes")
636                     CXXFLAGS="$_SAVE_CXXFLAGS"
637                     AC_LANG_RESTORE
638                 ])
639             if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
640                 WRAP_STL_INCLUDES=1
641                 MOZ_MSVC_STL_WRAP__Throw=1
642                 AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
643             fi
644         else
645             AC_CACHE_CHECK(for overridable _RAISE,
646                            ac_cv_have__RAISE,
647                 [
648                     AC_LANG_SAVE
649                     AC_LANG_CPLUSPLUS
650                     _SAVE_CXXFLAGS="$CXXFLAGS"
651                     CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
652                     AC_TRY_COMPILE([#include <xstddef>
653                                     #undef _RAISE
654                                     #define _RAISE(x) externallyDefinedFunction((x).what())
655                                     #include <vector>
656                                    ],
657                                    [std::vector<int> v; return v.at(1);],
658                                    ac_cv_have__RAISE="no",
659                                    ac_cv_have__RAISE="yes")
660                     CXXFLAGS="$_SAVE_CXXFLAGS"
661                     AC_LANG_RESTORE
662                 ])
663             if test "$ac_cv_have__RAISE" = "yes"; then
664                 WRAP_STL_INCLUDES=1
665                 MOZ_MSVC_STL_WRAP__RAISE=1
666                 AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
667             else
668                 AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK.  Please file a bug describing this error and your build configuration.])
669             fi
670         fi
672         if test "$WRAP_STL_INCLUDES" = "1"; then
673             STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
674         fi
675     else
676         # Check w32api version
677         _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
678         _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
679         AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
680         AC_TRY_COMPILE([#include <w32api.h>],
681             #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
682                 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
683                  __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
684                 #error "test failed."
685             #endif
686             , [ res=yes ], [ res=no ])
687         AC_MSG_RESULT([$res])
688         if test "$res" != "yes"; then
689             AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
690         fi
691         # Check windres version
692         AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
693         _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
694         AC_MSG_RESULT([$_WINDRES_VERSION])
695         _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
696         _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
697         _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
698         WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
699         WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
700         WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
701         if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
702                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
703                 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
704                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
705                 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
706                 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
707         then
708             AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
709         fi
711         MOZ_WINSDK_MAXVER=0x06020000
712     fi # !GNU_CC
714     AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
715     AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
716     # Require OS features provided by IE 6.0 SP2 (XP SP2)
717     AC_DEFINE_UNQUOTED(_WIN32_IE,0x0603)
719     # If the maximum version supported by this SDK is lower than the target
720     # version, error out
721     AC_MSG_CHECKING([for Windows SDK being recent enough])
722     if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
723         AC_MSG_RESULT("yes")
724     else
725         AC_MSG_RESULT("no")
726         AC_MSG_ERROR([You are targeting Windows version 0x$MOZ_WINSDK_TARGETVER, but your SDK only supports up to version $MOZ_WINSDK_MAXVER. Install and use an updated SDK, or target a lower version using --with-windows-version. Alternatively, try running the Windows SDK Configuration Tool and selecting a newer SDK. See https://developer.mozilla.org/En/Windows_SDK_versions for more details on fixing this.])
727     fi
728     
729     # Make sure the sdk / code we're targeting has the right toolset
730     AC_MSG_CHECKING([SDK and tools are in sync])
731     if test -n "$MOZ_METRO"; then
732       if test "$MOZ_MSVCVERSION" -gt "10"; then
733         AC_MSG_RESULT("yes")
734       else
735         AC_MSG_RESULT("no")
736         AC_MSG_ERROR([Your MOZ_MSVCVERSION equals $MOZ_MSVCVERSION and you've enabled metro build support. You can't target metro without msvc 11 or higher. Disable metro support or switch to a newer set of tools.])
737       fi
738     fi
739       
740     AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
741     # Definitions matching sdkddkver.h
742     AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
743     ;;
744 esac
746 AC_PROG_CPP
747 AC_PROG_CXXCPP
749 if test -n "$_WIN32_MSVC"; then
750     SKIP_PATH_CHECKS=1
751     SKIP_COMPILER_CHECKS=1
752     SKIP_LIBRARY_CHECKS=1
754     # Since we're skipping compiler and library checks, hard-code
755     # some facts here.
756     AC_DEFINE(HAVE_IO_H)
757     AC_DEFINE(HAVE_SETBUF)
758     AC_DEFINE(HAVE_ISATTY)
761 fi # COMPILE_ENVIRONMENT
763 AC_SUBST(MIDL_FLAGS)
764 AC_SUBST(_MSC_VER)
766 AC_SUBST(GNU_AS)
767 AC_SUBST(GNU_LD)
768 AC_SUBST(GNU_CC)
769 AC_SUBST(GNU_CXX)
770 AC_SUBST(INTEL_CC)
771 AC_SUBST(INTEL_CXX)
773 AC_SUBST(STL_FLAGS)
774 AC_SUBST(WRAP_STL_INCLUDES)
775 AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
776 AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
778 dnl ========================================================
779 dnl Checks for programs.
780 dnl ========================================================
781 AC_PROG_INSTALL
782 AC_PROG_LN_S
784 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
785 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
786 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
787 _perl_res=$?
788 AC_MSG_RESULT([$_perl_version])
790 if test "$_perl_res" != 0; then
791     AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
795 AC_MSG_CHECKING([for full perl installation])
796 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
797 _perl_res=$?
798 if test "$_perl_res" != 0; then
799     AC_MSG_RESULT([no])
800     AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}.  A full perl installation is required.])
801 else
802     AC_MSG_RESULT([yes])
805 MOZ_PATH_PROGS(PYTHON, $PYTHON python2.7 python2.6 python2.5 python)
806 if test -z "$PYTHON"; then
807     AC_MSG_ERROR([python was not found in \$PATH])
810 MOZ_ARG_WITH_BOOL(system-ply,
811 [  --with-system-ply       Use system installed python ply library],
812     [if $PYTHON -c 'import ply' 2>&5; then
813          MOZ_SYSTEM_PLY=1
814      else
815          AC_MSG_ERROR([python ply library is not found but --with-system-ply was requested])
816      fi])
818 AC_SUBST(MOZ_SYSTEM_PLY)
820 if test -z "$COMPILE_ENVIRONMENT"; then
821     NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
823 AC_SUBST(NSINSTALL_BIN)
825 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
826 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
827 MOZ_PATH_PROGS(UNZIP, unzip)
828 if test -z "$UNZIP" -o "$UNZIP" = ":"; then
829     AC_MSG_ERROR([unzip not found in \$PATH])
831 MOZ_PATH_PROGS(ZIP, zip)
832 if test -z "$ZIP" -o "$ZIP" = ":"; then
833     AC_MSG_ERROR([zip not found in \$PATH])
835 MOZ_PATH_PROG(XARGS, xargs)
836 if test -z "$XARGS" -o "$XARGS" = ":"; then
837     AC_MSG_ERROR([xargs not found in \$PATH .])
840 MOZ_PATH_PROG(RPMBUILD, rpmbuild, :)
841 AC_SUBST(RPMBUILD)
843 if test "$COMPILE_ENVIRONMENT"; then
845 dnl ========================================================
846 dnl = Mac OS X toolchain support
847 dnl ========================================================
849 case "$target_os" in
850 darwin*)
851     dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
852     dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
853     dnl the environment and includedir purposes (when using an SDK, below),
854     dnl but remember the full version number for the libdir (SDK).
855     changequote(,)
856     GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
857     GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
858     changequote([,])
859     if test "$GCC_VERSION_FULL" = "4.0.0" ; then
860         dnl Bug 280479, but this keeps popping up in bug 292530 too because
861         dnl 4.0.0/4061 is the default compiler in Tiger.
862         changequote(,)
863         GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
864         changequote([,])
865         if test "$GCC_BUILD" = "4061" ; then
866             AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
867 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
868 from building Mozilla. Upgrade to Xcode 2.1 or later.])
869         fi
870     fi
872     dnl xcodebuild needs GCC_VERSION defined in the environment, since it
873     dnl doesn't respect the CC/CXX setting.  With GCC_VERSION set, it will use
874     dnl /usr/bin/g(cc|++)-$GCC_VERSION.
875     MOZ_PATH_PROGS(PBBUILD_BIN, pbbuild xcodebuild pbxbuild)
877     dnl sdp was formerly in /Developer/Tools.  As of Mac OS X 10.4 (Darwin 8),
878     dnl it has moved into /usr/bin.
879     MOZ_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
880     ;;
881 esac
883 AC_SUBST(GCC_VERSION)
885 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
886 dnl that a universal binary is being produced and MOZ_CAN_RUN_PROGRAMS
887 dnl when we can run target binaries.
888 AC_SUBST(UNIVERSAL_BINARY)
889 AC_SUBST(MOZ_CAN_RUN_PROGRAMS)
891 dnl ========================================================
892 dnl Check for MacOS deployment target version
893 dnl ========================================================
895 MOZ_ARG_ENABLE_STRING(macos-target,
896                       [  --enable-macos-target=VER (default=10.6)
897                           Set the minimum MacOS version needed at runtime],
898                       [_MACOSX_DEPLOYMENT_TARGET=$enableval])
900 case "$target" in
901 *-darwin*)
902     if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
903         dnl Use the specified value
904         export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
905     else
906         dnl No value specified on the command line or in the environment,
907         dnl use architecture minimum.
908         export MACOSX_DEPLOYMENT_TARGET=10.6
909     fi
910     ;;
911 esac
913 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
915 dnl ========================================================
916 dnl = Mac OS X SDK support
917 dnl ========================================================
918 MACOS_SDK_DIR=
919 NEXT_ROOT=
920 MOZ_ARG_WITH_STRING(macos-sdk,
921 [  --with-macos-sdk=dir    Location of platform SDK to use (Mac OS X only)],
922     MACOS_SDK_DIR=$withval)
924 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
925 dnl NEXT_ROOT will be set and exported only if it's needed.
926 AC_SUBST(MACOS_SDK_DIR)
927 AC_SUBST(NEXT_ROOT)
929 if test "$MACOS_SDK_DIR"; then
930   dnl Sync this section with the ones in NSPR and NSS.
931   dnl Changes to the cross environment here need to be accounted for in
932   dnl the libIDL checks (below) and xpidl build.
934   if test ! -d "$MACOS_SDK_DIR"; then
935     AC_MSG_ERROR([SDK not found.  When using --with-macos-sdk, you must
936 specify a valid SDK.  SDKs are installed when the optional cross-development
937 tools are selected during the Xcode/Developer Tools installation.])
938   fi
940   GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
941   if test "$GCC_VERSION_MAJOR" -lt "4" ; then
942     AC_MSG_ERROR([You need to upgrade the compiler version to 4.x])
943   else
944     CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
945     CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
947     dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER.
948     CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
949     CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
951     if test "$GCC_VERSION_FULL" = "4.0.0" ; then
952       dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
953       dnl that supports -syslibroot.  Don't set NEXT_ROOT because it will
954       dnl be ignored and cause warnings when -syslibroot is specified.
955       dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
956       dnl the -isysroot it receives, so this is only needed with 4.0.0.
957       LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
958     fi
959   fi
961   AC_LANG_SAVE
962   AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
963   AC_LANG_CPLUSPLUS
964   AC_TRY_COMPILE([#include <new>],[],
965    result=yes,
966    result=no)
967   AC_LANG_RESTORE
968   AC_MSG_RESULT($result)
970   if test "$result" = "no" ; then
971     AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
972   fi
975 fi # COMPILE_ENVIRONMENT
977 AC_MSG_CHECKING([compiler version])
978 # Just print it so it shows up in the logs.
979 cc_version=$($CC --version)
980 AC_MSG_RESULT([$cc_version])
982 if test -n "$MAKE"; then
983   if test `echo $MAKE | grep -c make.py` != 1; then
984      NOT_PYMAKE=$MAKE
985   fi
988 case "$host_os" in
989 mingw*)
990     MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
991     ;;
993     MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
994     ;;
995 esac
996 if test "$GMAKE" = ":"; then
997    AC_MSG_ERROR([GNU make not found])
999 AC_SUBST(GMAKE)
1001 if test -z "$MAKE"; then
1002   MAKE=$GMAKE
1005 if test "$COMPILE_ENVIRONMENT"; then
1007 AC_PATH_XTRA
1009 XCFLAGS="$X_CFLAGS"
1011 fi # COMPILE_ENVIRONMENT
1013 dnl ========================================================
1014 dnl set the defaults first
1015 dnl ========================================================
1016 AS_BIN=$AS
1017 AR_LIST='$(AR) t'
1018 AR_EXTRACT='$(AR) x'
1019 AR_DELETE='$(AR) d'
1020 AS='$(CC)'
1021 AS_DASH_C_FLAG='-c'
1022 DLL_PREFIX=lib
1023 LIB_PREFIX=lib
1024 DLL_SUFFIX=.so
1025 OBJ_SUFFIX=o
1026 LIB_SUFFIX=a
1027 ASM_SUFFIX=s
1028 IMPORT_LIB_SUFFIX=
1029 TARGET_MD_ARCH=unix
1030 DIRENT_INO=d_ino
1031 MOZ_USER_DIR=".mozilla"
1033 MOZ_JPEG_CFLAGS=
1034 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/media/libjpeg)'
1035 MOZ_BZ2_CFLAGS=
1036 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
1037 MOZ_PNG_CFLAGS=
1038 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/media/libpng)'
1040 MOZ_JS_STATIC_LIBS='$(call EXPAND_LIBNAME_PATH,js_static,$(LIBXUL_DIST)/lib)'
1041 MOZ_JS_SHARED_LIBS='$(call EXPAND_LIBNAME_PATH,mozjs,$(LIBXUL_DIST)/lib)'
1042 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core -lmozalloc'
1043 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
1044 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom -lmozalloc'
1045 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
1046 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1047 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
1049 # These are specially defined on Windows only
1050 case "$target" in
1051 *-mingw*)
1052   XPCOM_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1053   XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime.$(LIB_SUFFIX)'
1054   ;;
1056   XPCOM_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_GLUE_LDOPTS
1057   XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_STANDALONE_GLUE_LDOPTS
1058   ;;
1059 esac
1061 MOZ_FS_LAYOUT=unix
1063 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
1065 USE_DEPENDENT_LIBS=1
1067 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
1069 if test -n "$CROSS_COMPILE"; then
1070     OS_TARGET="${target_os}"
1071     OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
1072     OS_RELEASE=
1073     case "${target_os}" in
1074         linux*)       OS_ARCH=Linux OS_TARGET=Linux ;;
1075         kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
1076         gnu*)         OS_ARCH=GNU ;;
1077         solaris*)     OS_ARCH=SunOS OS_RELEASE=5 ;;
1078         mingw*)       OS_ARCH=WINNT OS_TARGET=WINNT ;;
1079         darwin*)      OS_ARCH=Darwin OS_TARGET=Darwin ;;
1080     esac
1081     case "${target}" in
1082         *-android*|*-linuxandroid*) OS_ARCH=Linux OS_TARGET=Android ;;
1083     esac
1084 else
1085     OS_TARGET=`uname -s`
1086     OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1087     OS_RELEASE=`uname -r`
1090 # Before this used `uname -m` when not cross compiling
1091 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1092 OS_TEST="${target_cpu}"
1094 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1096 #######################################################################
1097 # Master "Core Components" macros for getting the OS target           #
1098 #######################################################################
1101 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1102 # cross-compilation.
1106 # Define and override various archtecture-specific variables, including
1107 # HOST_OS_ARCH
1108 # OS_ARCH
1109 # OS_TEST
1110 # OS_TARGET
1111 # OS_RELEASE
1112 # OS_MINOR_RELEASE
1115 case "$HOST_OS_ARCH" in
1116 mingw*)
1117     HOST_OS_ARCH=WINNT
1118     ;;
1119 darwin*)
1120     HOST_OS_ARCH=Darwin
1121     ;;
1122 linux*)
1123     HOST_OS_ARCH=Linux
1124     ;;
1125 solaris*)
1126     HOST_OS_ARCH=SunOS
1127     SOLARIS_SUNPRO_CC=
1128     SOLARIS_SUNPRO_CXX=
1129     if test -z "$GNU_CC"; then
1130         if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1131             SOLARIS_SUNPRO_CC=1
1132        fi
1133     fi
1135     if test -z "$GNU_CXX"; then
1136        if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1137            SOLARIS_SUNPRO_CXX=1
1138        fi
1139     fi
1140     AC_SUBST(SOLARIS_SUNPRO_CC)
1141     AC_SUBST(SOLARIS_SUNPRO_CXX)
1142     ;;
1143 BSD_386)
1144     HOST_OS_ARCH=BSD
1145     ;;
1146 OS_2)
1147     HOST_OS_ARCH=OS2
1148     ;;
1149 esac
1151 case "$OS_ARCH" in
1152 WINNT)
1153     if test -z "$CROSS_COMPILE" ; then
1154         OS_TEST=`uname -p`
1155     fi
1156     ;;
1157 Windows_NT)
1159 # If uname -s returns "Windows_NT", we assume that we are using
1160 # the uname.exe in MKS toolkit.
1162 # The -r option of MKS uname only returns the major version number.
1163 # So we need to use its -v option to get the minor version number.
1164 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1166     OS_ARCH=WINNT
1167     OS_TARGET=WINNT
1168     OS_MINOR_RELEASE=`uname -v`
1169     if test "$OS_MINOR_RELEASE" = "00"; then
1170         OS_MINOR_RELEASE=0
1171     fi
1172     OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1173     ;;
1174 MINGW*_NT*)
1176 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1177 # the uname.exe in the MSYS tools.
1179     OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1180     OS_ARCH=WINNT
1181     OS_TARGET=WINNT
1182     ;;
1183 AIX)
1184     OS_RELEASE=`uname -v`.`uname -r`
1185     OS_TEST=${target_cpu}
1186     ;;
1187 BSD_386)
1188     OS_ARCH=BSD
1189     ;;
1190 OS_2)
1191     OS_ARCH=OS2
1192     OS_TARGET=OS2
1193     OS_RELEASE=`uname -v`
1194     ;;
1195 Darwin)
1196     case "${target_cpu}" in
1197     powerpc*)
1198         OS_TEST=ppc
1199         ;;
1200     i*86*)
1201         OS_TEST=i386
1202         ;;
1203     x86_64)
1204         OS_TEST=x86_64
1205         ;;
1206     *)
1207         if test -z "$CROSS_COMPILE" ; then
1208             OS_TEST=`uname -p`
1209         fi
1210         ;;
1211     esac
1212     ;;
1213 esac
1215 # Only set CPU_ARCH if we recognize the value of OS_TEST
1217 case "$OS_TEST" in
1218 *86 | i86pc)
1219     CPU_ARCH=x86
1220     ;;
1222 powerpc64 | ppc64)
1223     CPU_ARCH=ppc64
1224     ;;
1226 powerpc | ppc | rs6000)
1227     CPU_ARCH=ppc
1228     ;;
1230 Alpha | alpha | ALPHA)
1231     CPU_ARCH=Alpha
1232     ;;
1234 s390)
1235     CPU_ARCH=s390
1236     ;;
1238 s390x)
1239     CPU_ARCH=s390x
1240     ;;
1242 hppa* | parisc)
1243     CPU_ARCH=hppa
1244     ;;
1246 sun4u | sparc*)
1247     CPU_ARCH=sparc
1248     ;;
1250 x86_64 | ia64)
1251     CPU_ARCH="$OS_TEST"
1252     ;;
1254 arm*)
1255     CPU_ARCH=arm
1256     ;;
1258 mips|mipsel)
1259     CPU_ARCH="mips"
1260     ;;
1261 esac
1263 if test -z "$OS_TARGET"; then
1264     OS_TARGET=$OS_ARCH
1266 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1268 dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64.
1269 dnl ===============================================================
1270 INTEL_ARCHITECTURE=
1271 case "$OS_TEST" in
1272     x86_64|i?86)
1273       INTEL_ARCHITECTURE=1
1274 esac
1276 dnl Configure platform-specific CPU architecture compiler options.
1277 dnl ==============================================================
1278 MOZ_ARCH_OPTS
1280 dnl =================================================================
1281 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1282 dnl which is bad when cross compiling.
1283 dnl =================================================================
1284 if test "$COMPILE_ENVIRONMENT"; then
1285 configure_static_assert_macros='
1286 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1287 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1288 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1291 dnl test that the macros actually work:
1292 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1293 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1294  [AC_LANG_SAVE
1295   AC_LANG_C
1296   ac_cv_static_assertion_macros_work="yes"
1297   AC_TRY_COMPILE([$configure_static_assert_macros],
1298                  [CONFIGURE_STATIC_ASSERT(1)],
1299                  ,
1300                  ac_cv_static_assertion_macros_work="no")
1301   AC_TRY_COMPILE([$configure_static_assert_macros],
1302                  [CONFIGURE_STATIC_ASSERT(0)],
1303                  ac_cv_static_assertion_macros_work="no",
1304                  )
1305   AC_LANG_CPLUSPLUS
1306   AC_TRY_COMPILE([$configure_static_assert_macros],
1307                  [CONFIGURE_STATIC_ASSERT(1)],
1308                  ,
1309                  ac_cv_static_assertion_macros_work="no")
1310   AC_TRY_COMPILE([$configure_static_assert_macros],
1311                  [CONFIGURE_STATIC_ASSERT(0)],
1312                  ac_cv_static_assertion_macros_work="no",
1313                  )
1314   AC_LANG_RESTORE
1315  ])
1316 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1317 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1318     AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1320 fi # COMPILE_ENVIRONMENT
1322 dnl ========================================================
1323 dnl Android libstdc++, placed here so it can use MOZ_ARCH
1324 dnl computed above.
1325 dnl ========================================================
1327 MOZ_ANDROID_STLPORT
1329 dnl ========================================================
1330 dnl Suppress Clang Argument Warnings
1331 dnl ========================================================
1332 if test -n "$CLANG_CC"; then
1333     _WARNINGS_CFLAGS="-Qunused-arguments ${_WARNINGS_CFLAGS}"
1334     CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
1336 if test -n "$CLANG_CXX"; then
1337     _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
1340 dnl ========================================================
1341 dnl = Use Address Sanitizer
1342 dnl ========================================================
1343 MOZ_ARG_ENABLE_BOOL(address-sanitizer,
1344 [  --enable-address-sanitizer       Enable Address Sanitizer (default=no)],
1345     MOZ_ASAN=1,
1346     MOZ_ASAN= )
1347 if test -n "$MOZ_ASAN"; then
1348     MOZ_LLVM_HACKS=1
1349     AC_DEFINE(MOZ_ASAN)
1351 AC_SUBST(MOZ_ASAN)
1353 dnl ========================================================
1354 dnl = Enable hacks required for LLVM instrumentations
1355 dnl ========================================================
1356 MOZ_ARG_ENABLE_BOOL(llvm-hacks,
1357 [  --enable-llvm-hacks       Enable workarounds required for several LLVM instrumentations (default=no)],
1358     MOZ_LLVM_HACKS=1,
1359     MOZ_LLVM_HACKS= )
1360 if test -n "$MOZ_LLVM_HACKS"; then
1361     MOZ_NO_WLZDEFS=1
1362     MOZ_CFLAGS_NSS=1
1364 AC_SUBST(MOZ_NO_WLZDEFS)
1365 AC_SUBST(MOZ_CFLAGS_NSS)
1367 dnl ========================================================
1368 dnl GNU specific defaults
1369 dnl ========================================================
1370 if test "$GNU_CC"; then
1371     # FIXME: Let us build with strict aliasing. bug 414641.
1372     CFLAGS="$CFLAGS -fno-strict-aliasing"
1373     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1374     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1375     DSO_LDOPTS='-shared'
1376     if test "$GCC_USE_GNU_LD"; then
1377         # Some tools like ASan use a runtime library that is only
1378         # linked against executables, so we must allow undefined
1379         # symbols for shared objects in some cases.
1380         if test -z "$MOZ_NO_WLZDEFS"; then
1381             # Don't allow undefined symbols in libraries
1382             DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1383         fi
1384     fi
1385     WARNINGS_AS_ERRORS='-Werror -Wno-error=uninitialized'
1386     DSO_CFLAGS=''
1387     DSO_PIC_CFLAGS='-fPIC'
1388     ASFLAGS="$ASFLAGS -fPIC"
1389     AC_MSG_CHECKING([for --noexecstack option to as])
1390     _SAVE_CFLAGS=$CFLAGS
1391     CFLAGS="$CFLAGS -Wa,--noexecstack"
1392     AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
1393                      [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
1394                      AC_MSG_RESULT([no]))
1395     CFLAGS=$_SAVE_CFLAGS
1396     AC_MSG_CHECKING([for -z noexecstack option to ld])
1397     _SAVE_LDFLAGS=$LDFLAGS
1398     LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
1399     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
1400                   AC_MSG_RESULT([no])
1401                   LDFLAGS=$_SAVE_LDFLAGS)
1403     # Check for -mssse3 on $CC
1404     AC_MSG_CHECKING([if toolchain supports -mssse3 option])
1405     HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
1406     _SAVE_CFLAGS=$CFLAGS
1407     CFLAGS="$CFLAGS -mssse3"
1408     AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
1409                      [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
1410                      AC_MSG_RESULT([no]))
1411     CFLAGS=$_SAVE_CFLAGS
1412     AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
1414     # Turn on GNU-specific warnings:
1415     # -Wall - turn on a lot of warnings
1416     # -pedantic - this is turned on below
1417     # -Wpointer-arith - enabled with -pedantic, but good to have even if not
1418     # -Wdeclaration-after-statement - MSVC doesn't like these
1419     # -Werror=return-type - catches missing returns, zero false positives
1420     # -Wtype-limits - catches overflow bugs, few false positives
1421     # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1422     #
1423     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -Wpointer-arith -Wdeclaration-after-statement"
1424     MOZ_C_SUPPORTS_WARNING(-W, error=return-type, ac_c_has_werror_return_type)
1425     MOZ_C_SUPPORTS_WARNING(-W, type-limits, ac_c_has_wtype_limits)
1426     MOZ_C_SUPPORTS_WARNING(-W, empty-body, ac_c_has_wempty_body)
1427     
1428     # Turn off the following warnings that -Wall/-pedantic turn on:
1429     # -Wno-unused - lots of violations in third-party code
1430     # -Wno-overlength-strings - we exceed the minimum maximum length frequently
1431     #
1432     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-unused"
1433     MOZ_C_SUPPORTS_WARNING(-Wno-, overlength-strings, ac_c_has_wno_overlength_strings)
1435     if test -z "$INTEL_CC" -a -z "$CLANG_CC"; then
1436        # Don't use -Wcast-align with ICC or clang
1437        case "$CPU_ARCH" in
1438            # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1439            hppa | ia64 | sparc | arm)
1440            ;;
1441            *)
1442         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1443            ;;
1444        esac
1445     fi
1447     dnl Turn pedantic on but disable the warnings for long long
1448     _PEDANTIC=1
1450     _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1451     _USE_CPP_INCLUDE_FLAG=1
1453 elif test "$SOLARIS_SUNPRO_CC"; then
1454     DSO_CFLAGS=''
1455     if test "$CPU_ARCH" = "sparc"; then
1456         # for Sun Studio on Solaris/SPARC
1457         DSO_PIC_CFLAGS='-xcode=pic32'
1458     else
1459         DSO_PIC_CFLAGS='-KPIC'
1460     fi
1461     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1462 else
1463     MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1464     MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1466     DSO_LDOPTS='-shared'
1467     if test "$GNU_LD"; then
1468         # Don't allow undefined symbols in libraries
1469         DSO_LDOPTS="$DSO_LDOPTS -z defs"
1470     fi
1472     DSO_CFLAGS=''
1473     DSO_PIC_CFLAGS='-KPIC'
1474     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1477 if test "$GNU_CXX"; then
1478     # FIXME: Let us build with strict aliasing. bug 414641.
1479     CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
1481     # Turn on GNU-specific warnings:
1482     # -Wall - turn on a lot of warnings
1483     # -pedantic - this is turned on below
1484     # -Wpointer-arith - enabled with -pedantic, but good to have even if not
1485     # -Woverloaded-virtual - ???
1486     # -Werror=return-type - catches missing returns, zero false positives
1487     # -Wtype-limits - catches overflow bugs, few false positives
1488     # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1489     # -Werror=conversion-null - catches conversions between NULL and non-pointer types
1490     #
1491     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual"
1492     MOZ_CXX_SUPPORTS_WARNING(-W, error=return-type, ac_cxx_has_werror_return_type)
1493     MOZ_CXX_SUPPORTS_WARNING(-W, type-limits, ac_cxx_has_wtype_limits)
1494     MOZ_CXX_SUPPORTS_WARNING(-W, empty-body, ac_cxx_has_wempty_body)
1495     MOZ_CXX_SUPPORTS_WARNING(-W, error=conversion-null, ac_cxx_has_werror_conversion_null)
1497     # Turn off the following warnings that -Wall/-pedantic turn on:
1498     # -Wno-ctor-dtor-privacy - ???
1499     # -Wno-overlength-strings - we exceed the minimum maximum length frequently 
1500     # -Wno-invalid-offsetof - we use offsetof on non-POD types frequently
1501     # -Wno-variadic-macros - ???
1502     #
1503     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-ctor-dtor-privacy"
1504     MOZ_CXX_SUPPORTS_WARNING(-Wno-, overlength-strings, ac_cxx_has_wno_overlength_strings)
1505     MOZ_CXX_SUPPORTS_WARNING(-Wno-, invalid-offsetof, ac_cxx_has_wno_invalid_offsetof)
1506     MOZ_CXX_SUPPORTS_WARNING(-Wno-, variadic-macros, ac_cxx_has_wno_variadic_macros)
1508     if test -z "$INTEL_CXX" -a -z "$CLANG_CXX"; then
1509        # Don't use -Wcast-align with ICC or clang
1510        case "$CPU_ARCH" in
1511            # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1512            hppa | ia64 | sparc | arm)
1513            ;;
1514            *)
1515         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1516            ;;
1517        esac
1518     fi
1520     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1521     _USE_CPP_INCLUDE_FLAG=1
1523     # Recent clang and gcc support C++11 deleted functions without warnings if
1524     # compiling with -std=c++0x or -std=gnu++0x (or c++11 or gnu++11 in very new
1525     # versions).  We can't use -std=c++0x yet, so gcc's support must remain
1526     # unused.  But clang's warning can be disabled, so when compiling with clang
1527     # we use it to opt out of the warning, enabling (macro-encapsulated) use of
1528     # deleted function syntax.
1529     if test "$CLANG_CXX"; then
1530         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-c++0x-extensions"
1531         MOZ_CXX_SUPPORTS_WARNING(-Wno-, extended-offsetof, ac_cxx_has_wno_extended_offsetof)
1532     fi
1534 else
1535     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1538 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1539 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1540 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1541 dnl normal behavior.
1542 dnl ========================================================
1543 MKSHLIB_FORCE_ALL=
1544 MKSHLIB_UNFORCE_ALL=
1546 if test "$COMPILE_ENVIRONMENT"; then
1547 if test "$GNU_CC"; then
1548   AC_MSG_CHECKING(whether ld has archive extraction flags)
1549   AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1550    [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1551     ac_cv_mkshlib_force_and_unforce="no"
1552     exec 3<&0 <<LOOP_INPUT
1553         force="-Wl,--whole-archive";   unforce="-Wl,--no-whole-archive"
1554         force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1555         force="-Wl,-all";              unforce="-Wl,-none"
1556 LOOP_INPUT
1557     while read line
1558     do
1559       eval $line
1560       LDFLAGS=$force
1561       LIBS=$unforce
1562       AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1563     done
1564     exec 0<&3 3<&-
1565     LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1566    ])
1567   if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1568     AC_MSG_RESULT(no)
1569   else
1570     AC_MSG_RESULT(yes)
1571     eval $ac_cv_mkshlib_force_and_unforce
1572     MKSHLIB_FORCE_ALL=$force
1573     MKSHLIB_UNFORCE_ALL=$unforce
1574   fi
1575 fi # GNU_CC
1576 fi # COMPILE_ENVIRONMENT
1578 dnl ========================================================
1579 dnl Checking for 64-bit OS
1580 dnl ========================================================
1581 if test "$COMPILE_ENVIRONMENT"; then
1582 AC_LANG_SAVE
1583 AC_LANG_C
1584 AC_MSG_CHECKING(for 64-bit OS)
1585 AC_TRY_COMPILE([$configure_static_assert_macros],
1586                [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1587                result="yes", result="no")
1588 AC_MSG_RESULT("$result")
1589 if test "$result" = "yes"; then
1590     AC_DEFINE(HAVE_64BIT_OS)
1591     HAVE_64BIT_OS=1
1593 AC_SUBST(HAVE_64BIT_OS)
1594 AC_LANG_RESTORE
1595 fi # COMPILE_ENVIRONMENT
1597 dnl ========================================================
1598 dnl Enable high-memory support on OS/2 by default.
1599 dnl ========================================================
1600 MOZ_OS2_HIGH_MEMORY=1
1601 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1602 [  --disable-os2-high-mem  Disable high-memory support on OS/2],
1603     MOZ_OS2_HIGH_MEMORY=,
1604     MOZ_OS2_HIGH_MEMORY=1 )
1605 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1607 dnl ========================================================
1608 dnl = Use profiling compile flags
1609 dnl ========================================================
1610 MOZ_ARG_ENABLE_BOOL(profiling,
1611 [  --enable-profiling      Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1612     MOZ_PROFILING=1,
1613     MOZ_PROFILING= )
1615 # For profiling builds keep the symbol information
1616 if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then
1617     STRIP_FLAGS="--strip-debug"
1620 dnl ========================================================
1621 dnl = Use incremental GC
1622 dnl ========================================================
1623 JSGC_INCREMENTAL=1
1624 MOZ_ARG_DISABLE_BOOL(gcincremental,
1625 [  --disable-gcincremental Disable incremental GC],
1626     JSGC_INCREMENTAL= )
1627 if test -n "$JSGC_INCREMENTAL"; then
1628     AC_DEFINE(JSGC_INCREMENTAL)
1631 dnl ========================================================
1632 dnl = Use generational GC
1633 dnl ========================================================
1634 MOZ_ARG_ENABLE_BOOL(gcgenerational,
1635 [  --enable-gcgenerational Enable generational GC],
1636     JSGC_GENERATIONAL=1,
1637     JSGC_GENERATIONAL= )
1638 if test -n "$JSGC_GENERATIONAL"; then
1639     AC_DEFINE(JSGC_GENERATIONAL)
1642 dnl ========================================================
1643 dnl = Perform moving GC stack rooting analysis
1644 dnl ========================================================
1645 MOZ_ARG_ENABLE_BOOL(root-analysis,
1646 [  --enable-root-analysis  Enable moving GC stack root analysis],
1647     JSGC_ROOT_ANALYSIS=1,
1648     JSGC_ROOT_ANALYSIS= )
1649 if test -n "$JSGC_ROOT_ANALYSIS"; then
1650     AC_DEFINE(JSGC_ROOT_ANALYSIS)
1653 dnl ========================================================
1654 dnl = Use exact stack rooting for GC
1655 dnl ========================================================
1656 MOZ_ARG_ENABLE_BOOL(exact-rooting,
1657 [  --enable-exact-rooting  Enable use of exact stack roots for GC],
1658     JSGC_USE_EXACT_ROOTING=1,
1659     JSGC_USE_EXACT_ROOTING= )
1660 if test -n "$JSGC_USE_EXACT_ROOTING"; then
1661     AC_DEFINE(JSGC_USE_EXACT_ROOTING)
1664 dnl ========================================================
1665 dnl = Use Valgrind
1666 dnl ========================================================
1667 MOZ_ARG_ENABLE_BOOL(valgrind,
1668 [  --enable-valgrind       Enable Valgrind integration hooks (default=no)],
1669     MOZ_VALGRIND=1,
1670     MOZ_VALGRIND= )
1671 if test -n "$MOZ_VALGRIND"; then
1672     MOZ_CHECK_HEADER([valgrind/valgrind.h], [],
1673         AC_MSG_ERROR(
1674             [--enable-valgrind specified but Valgrind is not installed]))
1675     AC_DEFINE(MOZ_VALGRIND)
1677 AC_SUBST(MOZ_VALGRIND)
1679 dnl ========================================================
1680 dnl = Use DMD
1681 dnl ========================================================
1682 MOZ_ARG_ENABLE_BOOL(dmd,
1683 [  --enable-dmd            Enable DMD; also disables jemalloc (default=no)],
1684     MOZ_DMD=1,
1685     MOZ_DMD= )
1686 if test -n "$MOZ_DMD"; then
1687     MOZ_CHECK_HEADER([valgrind/valgrind.h], [],
1688         AC_MSG_ERROR(
1689             [--enable-dmd specified but Valgrind is not installed]))
1690     AC_DEFINE(MOZ_DMD)
1693 dnl ========================================================
1694 dnl jprof
1695 dnl ========================================================
1696 MOZ_ARG_ENABLE_BOOL(jprof,
1697 [  --enable-jprof          Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.],
1698     MOZ_JPROF=1,
1699     MOZ_JPROF= )
1700 if test -n "$MOZ_JPROF"; then
1701     MOZ_PROFILING=1
1702     AC_DEFINE(MOZ_JPROF)
1705 dnl ========================================================
1706 dnl SPS Profiler
1707 dnl ========================================================
1708 MOZ_ENABLE_PROFILER_SPS=1
1710 case "${OS_TARGET}" in
1711 Android)
1712     case "${CPU_ARCH}" in
1713     x86 | arm) ;;
1714     *)
1715         MOZ_ENABLE_PROFILER_SPS=
1716     esac
1717     ;;
1718 Linux)
1719     case "${CPU_ARCH}" in
1720     x86 | x86_64) ;;
1721     *)
1722         MOZ_ENABLE_PROFILER_SPS=
1723     esac
1724     ;;
1725 WINNT|Darwin) ;;
1727     MOZ_ENABLE_PROFILER_SPS=
1728     ;;
1729 esac
1731 if test -n "$MOZ_ENABLE_PROFILER_SPS"; then
1732     AC_DEFINE(MOZ_ENABLE_PROFILER_SPS)
1735 dnl ========================================================
1736 dnl shark
1737 dnl ========================================================
1738 MOZ_ARG_ENABLE_BOOL(shark,
1739 [  --enable-shark          Enable shark remote profiling. Implies --enable-profiling.],
1740     MOZ_SHARK=1,
1741     MOZ_SHARK= )
1742 if test -n "$MOZ_SHARK"; then
1743     MOZ_PROFILING=1
1744     AC_DEFINE(MOZ_SHARK)
1747 dnl ========================================================
1748 dnl callgrind
1749 dnl ========================================================
1750 MOZ_ARG_ENABLE_BOOL(callgrind,
1751 [  --enable-callgrind      Enable callgrind profiling. Implies --enable-profiling.],
1752     MOZ_CALLGRIND=1,
1753     MOZ_CALLGRIND= )
1754 if test -n "$MOZ_CALLGRIND"; then
1755     MOZ_PROFILING=1
1756     AC_DEFINE(MOZ_CALLGRIND)
1759 dnl ========================================================
1760 dnl vtune
1761 dnl ========================================================
1762 MOZ_ARG_ENABLE_BOOL(vtune,
1763 [  --enable-vtune          Enable vtune profiling. Implies --enable-profiling.],
1764     MOZ_VTUNE=1,
1765     MOZ_VTUNE= )
1766 if test -n "$MOZ_VTUNE"; then
1767     MOZ_PROFILING=1
1768     AC_DEFINE(MOZ_VTUNE)
1771 dnl ========================================================
1772 dnl Profiling
1773 dnl ========================================================
1774 if test -n "$MOZ_PROFILING"; then
1775     AC_DEFINE(MOZ_PROFILING)
1778 dnl ========================================================
1779 dnl System overrides of the defaults for host
1780 dnl ========================================================
1781 case "$host" in
1782 *mingw*)
1783     if test -n "$_WIN32_MSVC"; then
1784         HOST_AR=lib
1785         HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1786         HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1787         HOST_RANLIB='echo ranlib'
1788     else
1789         HOST_CFLAGS="$HOST_CFLAGS -mwindows"
1790     fi
1791     HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11 -D_CRT_SECURE_NO_WARNINGS"
1792     HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1793     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1794     HOST_BIN_SUFFIX=.exe
1795     case "$host" in
1796     *mingw*)
1797         PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1798         ;;
1799     esac
1801     case "${host_cpu}" in
1802     i*86)
1803         if test -n "$_WIN32_MSVC"; then
1804             HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
1805         fi
1806         ;;
1807     x86_64)
1808         if test -n "$_WIN32_MSVC"; then
1809             HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
1810         fi
1811         HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1812         ;;
1813     esac
1814     ;;
1816 *-darwin*)
1817     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1818     HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1819     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1820     ;;
1822 *-linux*|*-kfreebsd*-gnu|*-gnu*)
1823     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1824     HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1825     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1826     ;;
1828 *os2*)
1829     HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1830     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1831     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1832     HOST_BIN_SUFFIX=.exe
1833     MOZ_FIX_LINK_PATHS=
1834     ;;
1837     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1838     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1839     ;;
1840 esac
1842 dnl We require version 2.5 or newer of Python to build.
1843 AC_MSG_CHECKING([for Python version >= $PYTHON_VERSION_MAJOR.$PYTHON_VERSION_MINOR but not 3.x])
1845 changequote(:)
1846 read python_version_major python_version_minor python_version_micro <<EOF
1847 `$PYTHON -c 'import sys; print sys.version_info[0], sys.version_info[1], sys.version_info[2]'`
1849 changequote([,])
1851 if test $python_version_major -ne $PYTHON_VERSION_MAJOR; then
1852     AC_MSG_ERROR([Cannot build on Python $python_version_major.])
1853 else
1854     if test $python_version_minor -lt $PYTHON_VERSION_MINOR; then
1855         AC_MSG_ERROR([Cannot build on Python $python_version_major.$python_version_minor. You need at least $PYTHON_VERSION_MAJOR.$PYTHON_VERSION_MINOR.])
1856     fi
1858 AC_MSG_RESULT([yes])
1860 dnl Check for using a custom <stdint.h> implementation
1861 dnl ========================================================
1862 AC_MSG_CHECKING(for custom <stdint.h> implementation)
1863 if test "$MOZ_CUSTOM_STDINT_H"; then
1864   AC_DEFINE_UNQUOTED(MOZ_CUSTOM_STDINT_H, "$MOZ_CUSTOM_STDINT_H")
1865   AC_MSG_RESULT(using $MOZ_CUSTOM_STDINT_H)
1866 else
1867   AC_MSG_RESULT(none specified)
1870 dnl Get mozilla version from central milestone file
1871 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1872 MOZILLA_UAVERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir -uaversion`
1874 dnl Get version of various core apps from the version files.
1875 FIREFOX_VERSION=`cat $_topsrcdir/browser/config/version.txt`
1877 if test -z "$FIREFOX_VERSION"; then
1878     AC_MSG_ERROR([FIREFOX_VERSION is unexpectedly blank.])
1881 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1882 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1883 AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION")
1885 MOZ_DOING_LTO(lto_is_enabled)
1887 dnl ========================================================
1888 dnl System overrides of the defaults for target
1889 dnl ========================================================
1891 case "$target" in
1892 *-aix*)
1893     AC_DEFINE(AIX)
1894     if test ! "$GNU_CC"; then
1895         if test ! "$HAVE_64BIT_OS"; then
1896             # Compiling with Visual Age C++ object model compat is the
1897             # default. To compile with object model ibm, add
1898             # AIX_OBJMODEL=ibm to .mozconfig.
1899             if test "$AIX_OBJMODEL" = "ibm"; then
1900                 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1901             else
1902                 AIX_OBJMODEL=compat
1903             fi
1904         else
1905             AIX_OBJMODEL=compat
1906         fi
1907         AC_SUBST(AIX_OBJMODEL)
1908         DSO_LDOPTS='-qmkshrobj=1'
1909         DSO_CFLAGS='-qflag=w:w'
1910         DSO_PIC_CFLAGS=
1911         LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1912         MOZ_FIX_LINK_PATHS=
1913         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1914         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1915         if test "$COMPILE_ENVIRONMENT"; then
1916             AC_LANG_SAVE
1917             AC_LANG_CPLUSPLUS
1918             AC_MSG_CHECKING([for IBM XLC/C++ compiler version >= 9.0.0.7])
1919             AC_TRY_COMPILE([],
1920                 [#if (__IBMCPP__ < 900)
1921                  #error "Bad compiler"
1922                  #endif],
1923                 _BAD_COMPILER=,_BAD_COMPILER=1)
1924             if test -n "$_BAD_COMPILER"; then
1925                 AC_MSG_RESULT([no])
1926                 AC_MSG_ERROR([IBM XLC/C++ 9.0.0.7 or higher is required to build.])
1927             else
1928                 AC_MSG_RESULT([yes])
1929             fi
1930             AC_LANG_RESTORE
1931             TARGET_COMPILER_ABI="ibmc"
1932             CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1933             CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1934         fi
1935     fi
1936     case "${target_os}" in
1937     aix4.1*)
1938         DLL_SUFFIX='_shr.a'
1939         ;;
1940     esac
1941     if test "$COMPILE_ENVIRONMENT"; then
1942         MOZ_CHECK_HEADERS(sys/inttypes.h)
1943     fi
1944     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1945     ;;
1947 *-bsdi*)
1948     dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
1949     _PEDANTIC=
1950     case $OS_RELEASE in
1951         4.*|5.*)
1952             STRIP="$STRIP -d"
1953             ;;
1954         *)
1955             DSO_CFLAGS=''
1956             DSO_LDOPTS='-r'
1957             _WARNINGS_CFLAGS="-Wall"
1958             _WARNINGS_CXXFLAGS="-Wall"
1959             # The test above doesn't work properly, at least on 3.1.
1960             MKSHLIB_FORCE_ALL=''
1961             MKSHLIB_UNFORCE_ALL=''
1962         ;;
1963     esac
1964     ;;
1966 *-darwin*)
1967     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1968     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1969     MOZ_OPTIMIZE_FLAGS="-O3"
1970     _PEDANTIC=
1971     # Statically disable jemalloc on 10.5 and 32-bit 10.6.  See bug 702250.
1972     if test "$HAVE_64BIT_OS"; then
1973         MOZ_MEMORY=1
1974     fi
1975     DLL_SUFFIX=".dylib"
1976     DSO_LDOPTS=''
1977     STRIP="$STRIP -x -S"
1978     # Check whether we're targeting OS X or iOS
1979     AC_CACHE_CHECK(for iOS target,
1980                    ac_cv_ios_target,
1981                    [AC_TRY_COMPILE([#include <TargetConditionals.h>
1982 #if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
1983 #error not iOS
1984 #endif],
1985                                    [],
1986                                    ac_cv_ios_target="yes",
1987                                    ac_cv_ios_target="no")])
1988     if test "$ac_cv_ios_target" = "yes"; then
1989         AC_DEFINE(XP_IOS)
1990         AC_DEFINE(XP_DARWIN)
1991         _PLATFORM_DEFAULT_TOOLKIT='cairo-uikit'
1992     else
1993         AC_DEFINE(XP_MACOSX)
1994         AC_DEFINE(XP_DARWIN)
1995         _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1996         # The ExceptionHandling framework is needed for Objective-C exception
1997         # logging code in nsObjCExceptions.h. Currently we only use that in debug
1998         # builds.
1999         MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
2000     fi
2001     TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
2004     if test "x$lto_is_enabled" = "xyes"; then
2005         echo "Skipping -dead_strip because lto is enabled."
2006     dnl DTrace and -dead_strip don't interact well. See bug 403132.
2007     dnl ===================================================================
2008     elif test "x$enable_dtrace" = "xyes"; then
2009         echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
2010     else
2011         dnl check for the presence of the -dead_strip linker flag
2012         AC_MSG_CHECKING([for -dead_strip option to ld])
2013         _SAVE_LDFLAGS=$LDFLAGS
2014         LDFLAGS="$LDFLAGS -Wl,-dead_strip"
2015         AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
2016         if test -n "$_HAVE_DEAD_STRIP" ; then
2017             AC_MSG_RESULT([yes])
2018             MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
2019         else
2020             AC_MSG_RESULT([no])
2021         fi
2023         LDFLAGS=$_SAVE_LDFLAGS
2024     fi
2026     dnl With newer linkers we need to pass -allow_heap_execute because of
2027     dnl Microsoft Silverlight (5.1.10411.0 at least).
2028     AC_MSG_CHECKING([for -allow_heap_execute option to ld])
2029     _SAVE_LDFLAGS=$LDFLAGS
2030     LDFLAGS="$LDFLAGS -Wl,-allow_heap_execute"
2031     AC_TRY_LINK(,[return 0;],_HAVE_ALLOW_HEAP_EXECUTE=1,
2032                 _HAVE_ALLOW_HEAP_EXECUTE=)
2033     if test -n "$_HAVE_ALLOW_HEAP_EXECUTE" ; then
2034         AC_MSG_RESULT([yes])
2035         MOZ_ALLOW_HEAP_EXECUTE_FLAGS="-Wl,-allow_heap_execute"
2036     else
2037         AC_MSG_RESULT([no])
2038     fi
2039     LDFLAGS=$_SAVE_LDFLAGS
2041     MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
2042     ;;
2044 ia64*-hpux*)
2045     DLL_SUFFIX=".so"
2046     if test ! "$GNU_CC"; then
2047        DSO_LDOPTS='-b'
2048        DSO_CFLAGS=""
2049        DSO_PIC_CFLAGS=
2050        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
2051        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
2052        CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2053     else
2054        DSO_LDOPTS='-b -E'
2055        MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2056        MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2057     fi
2058     MOZ_FIX_LINK_PATHS=
2059     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2060     AC_DEFINE(_LARGEFILE64_SOURCE)
2061     ;;
2063 *-hpux*)
2064     DLL_SUFFIX=".sl"
2065     if test ! "$GNU_CC"; then
2066         DSO_LDOPTS='-b -Wl,+s'
2067         DSO_CFLAGS=""
2068         DSO_PIC_CFLAGS="+Z"
2069         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
2070         MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
2071         CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2072     else
2073         DSO_LDOPTS='-b -E +s'
2074         MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2075         MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2076     fi
2077     MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
2078     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2079     ;;
2081 *-android*|*-linuxandroid*)
2082     AC_DEFINE(NO_PW_GECOS)
2083     no_x=yes
2084     if test -n "$gonkdir"; then
2085         _PLATFORM_DEFAULT_TOOLKIT=cairo-gonk
2086         MOZ_B2G_RIL=1
2087         MOZ_B2G_BT=1
2088         MOZ_B2G_FM=1
2089     else
2090         _PLATFORM_DEFAULT_TOOLKIT=cairo-android
2091         MOZ_LINKER=1
2092     fi
2093     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2095     MOZ_GFX_OPTIMIZE_MOBILE=1
2096     MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions"
2097     ;;
2099 *-*linux*)
2100     # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
2101     # Similarly for GNU_CXX and INTEL_CXX.
2102     if test "$INTEL_CC" -o "$INTEL_CXX"; then
2103         # -Os has been broken on Intel's C/C++ compilers for quite a
2104         # while; Intel recommends against using it.
2105         MOZ_OPTIMIZE_FLAGS="-O2"
2106         MOZ_DEBUG_FLAGS="-g"
2107     elif test "$GNU_CC" -o "$GNU_CXX"; then
2108         GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2109         case $GCC_VERSION in
2110         4.1.*|4.2.*|4.5.*)
2111             # -Os is broken on gcc 4.1.x 4.2.x, 4.5.x we need to tweak it to get good results.
2112             MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
2113         esac
2114         MOZ_PGO_OPTIMIZE_FLAGS="-O3"
2115         MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks $MOZ_OPTIMIZE_SIZE_TWEAK"
2116         MOZ_DEBUG_FLAGS="-g"
2117     fi
2119     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2121     MOZ_MEMORY=1
2123     case "${target_cpu}" in
2124     alpha*)
2125         CFLAGS="$CFLAGS -mieee"
2126         CXXFLAGS="$CXXFLAGS -mieee"
2127     ;;
2128     i*86)
2129         USE_ELF_DYNSTR_GC=1
2130     ;;
2131     mips*)
2132         MOZ_DEBUG_FLAGS="-g" # We want inlining
2133     ;;
2134     esac
2136     if test -z "$MC"; then
2137         MC=mc.exe
2138     fi
2139     ;;
2140 *-mingw*)
2141     DSO_CFLAGS=
2142     DSO_PIC_CFLAGS=
2143     DLL_SUFFIX=.dll
2144     RC=rc.exe
2145     MC=mc.exe
2146     # certain versions of cygwin's makedepend barf on the
2147     # #include <string> vs -I./dist/include/string issue so don't use it
2148     if test -n "$GNU_CC"; then
2149         CC="$CC -mwindows"
2150         CXX="$CXX -mwindows"
2151         CPP="$CPP -mwindows"
2152         CFLAGS="$CFLAGS -mms-bitfields"
2153         CXXFLAGS="$CXXFLAGS -mms-bitfields"
2154         DSO_LDOPTS='-shared'
2155         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2156         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2157         RC='$(WINDRES)'
2158         # Use temp file for windres (bug 213281)
2159         RCFLAGS='-O coff --use-temp-file'
2160         # mingw doesn't require kernel32, user32, and advapi32 explicitly
2161         LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32 -luserenv"
2162         MOZ_FIX_LINK_PATHS=
2163         DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core -lmozalloc'
2164         XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom -lmozalloc'
2165         DLL_PREFIX=
2166         IMPORT_LIB_SUFFIX=dll.a
2167         GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2168     else
2169         TARGET_COMPILER_ABI=msvc
2170         HOST_CC='$(CC)'
2171         HOST_CXX='$(CXX)'
2172         HOST_LD='$(LD)'
2173         if test "$AS_BIN"; then
2174             AS="$(basename "$AS_BIN")"
2175         fi
2176         AR='lib'
2177         AR_FLAGS='-NOLOGO -OUT:"$@"'
2178         AR_EXTRACT=
2179         RANLIB='echo not_ranlib'
2180         STRIP='echo not_strip'
2181         PKG_SKIP_STRIP=1
2182         XARGS=xargs
2183         ZIP=zip
2184         UNZIP=unzip
2185         DOXYGEN=:
2186         ASM_SUFFIX=asm
2187         OBJ_SUFFIX=obj
2188         LIB_SUFFIX=lib
2189         DLL_PREFIX=
2190         LIB_PREFIX=
2191         IMPORT_LIB_SUFFIX=lib
2192         MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2193         MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2194         MKSHLIB_FORCE_ALL=
2195         MKSHLIB_UNFORCE_ALL=
2196         DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2197         _USE_CPP_INCLUDE_FLAG=1
2198         _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2199         _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2200         CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2201         CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2202         # MSVC warning C4345 warns of newly conformant behavior as of VS2003.
2203         # MSVC warning C4351 warns of newly conformant behavior as of VS2005.
2204         # MSVC warning C4800 warns when a value is implicitly cast to bool,
2205         # because this also forces narrowing to a single byte, which can be a
2206         # perf hit.  But this matters so little in practice (and often we want
2207         # that behavior) that it's better to turn it off.
2208         CXXFLAGS="$CXXFLAGS -wd4345 -wd4351 -wd4800"
2209         # make 'foo == bar;' error out
2210         CFLAGS="$CFLAGS -we4553"
2211         CXXFLAGS="$CXXFLAGS -we4553"
2212         LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2213         MOZ_DEBUG_FLAGS='-Zi'
2214         MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2215         WARNINGS_AS_ERRORS='-WX'
2216         MOZ_OPTIMIZE_FLAGS='-O1'
2217         MOZ_FIX_LINK_PATHS=
2218         DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2219         XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2220         LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2221         MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2222         LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT"
2223         dnl For profile-guided optimization
2224         PROFILE_GEN_CFLAGS="-GL"
2225         PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2226         dnl XXX: PGO builds can fail with warnings treated as errors,
2227         dnl specifically "no profile data available" appears to be
2228         dnl treated as an error sometimes. This might be a consequence
2229         dnl of using WARNINGS_AS_ERRORS in some modules, combined
2230         dnl with the linker doing most of the work in the whole-program
2231         dnl optimization/PGO case. I think it's probably a compiler bug,
2232         dnl but we work around it here.
2233         PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2234         dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2235         dnl Probably also a compiler bug, but what can you do?
2236         PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2237         LDFLAGS="$LDFLAGS -DYNAMICBASE"
2238     fi
2239     AC_DEFINE(HAVE_SNPRINTF)
2240     AC_DEFINE(_WINDOWS)
2241     AC_DEFINE(WIN32)
2242     AC_DEFINE(XP_WIN)
2243     AC_DEFINE(XP_WIN32)
2244     AC_DEFINE(HW_THREADS)
2245     AC_DEFINE(STDC_HEADERS)
2246     AC_DEFINE(NEW_H, <new>)
2247     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2248     TARGET_MD_ARCH=win32
2249     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2250     BIN_SUFFIX='.exe'
2251     MOZ_USER_DIR="Mozilla"
2253     dnl Hardcode to win95 for now - cls
2254     TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2256     dnl set NO_X11 defines here as the general check is skipped on win32
2257     no_x=yes
2258     AC_DEFINE(NO_X11)
2260     case "$host" in
2261     *-mingw*)
2262         MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2263         L10NBASEDIR=`cd $L10NBASEDIR && pwd -W`
2264         ;;
2265     esac
2267     case "$host" in
2268     *-mingw*)
2269         if test -z "$MOZ_TOOLS"; then
2270             AC_MSG_ERROR([MOZ_TOOLS is not set])
2271         fi
2272         MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2273         if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
2274             AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2275         fi
2276         MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2277         if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2278             AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2279         fi
2280         ;;
2281     esac
2283     case "$host_os" in
2284     cygwin*|msvc*|mks*)
2285         AC_MSG_ERROR([Using a Cygwin build environment is unsupported. Configure cannot check for presence of necessary headers. Please upgrade to MozillaBuild; see https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
2286         ;;
2287     esac
2289     case "$target" in
2290     i*86-*)
2291         if test "$HAVE_64BIT_OS"; then
2292             AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2293         fi
2295         if test -n "$GNU_CC"; then
2296             CFLAGS="$CFLAGS -mstackrealign -fno-keep-inline-dllexport"
2297             CXXFLAGS="$CXXFLAGS -mstackrealign -fno-keep-inline-dllexport"
2298             LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup"
2299         else
2300             AC_DEFINE(HAVE_STDCALL)
2301             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
2302             LDFLAGS="$LDFLAGS -SAFESEH"
2303         fi
2305         AC_DEFINE(_X86_)
2306         ;;
2307     x86_64-*)
2308         if test -n "$_WIN32_MSVC"; then
2309             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
2310         fi
2311         AC_DEFINE(_AMD64_)
2312         ;;
2313     *)
2314         AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2315         ;;
2316     esac
2318     if test "$HAVE_64BIT_OS"; then
2319         AC_DEFINE(_WIN64)
2320     fi
2321     ;;
2323 *-netbsd*)
2324     DSO_CFLAGS=''
2325     CFLAGS="$CFLAGS -Dunix"
2326     CXXFLAGS="$CXXFLAGS -Dunix"
2327     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2328         DLL_SUFFIX=".so"
2329         DSO_PIC_CFLAGS='-fPIC -DPIC'
2330         DSO_LDOPTS='-shared'
2331         BIN_FLAGS='-Wl,--export-dynamic'
2332     else
2333         DSO_PIC_CFLAGS='-fPIC -DPIC'
2334         DLL_SUFFIX=".so.1.0"
2335         DSO_LDOPTS='-shared'
2336     fi
2337     # This will fail on a.out systems prior to 1.5.1_ALPHA.
2338     MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2339     MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2340     if test "$LIBRUNPATH"; then
2341         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2342     fi
2343     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2344     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2345     ;;
2347 *-openbsd*)
2348     if test "$SO_VERSION"; then
2349         DLL_SUFFIX=".so.$SO_VERSION"
2350     else
2351         DLL_SUFFIX=".so.1.0"
2352     fi
2353     MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib -Wl,-rpath-link,$(if $(X11BASE),$(X11BASE),/usr/X11R6)/lib'
2354     DSO_CFLAGS=''
2355     DSO_PIC_CFLAGS='-fPIC'
2356     DSO_LDOPTS='-shared -fPIC'
2357     if test "$LIBRUNPATH"; then
2358         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2359     fi
2360     ;;
2362 *-os2*)
2363     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2364     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2365     AC_DEFINE(OS2)
2366     AC_DEFINE(XP_OS2)
2367     AC_DEFINE(OS2EMX_PLAIN_CHAR)
2368     AC_DEFINE(TCPV40HDRS)
2369     DLL_PREFIX=
2370     LIB_PREFIX=
2371     LIB_SUFFIX=lib
2372     BIN_SUFFIX=".exe"
2373     DLL_SUFFIX=".dll"
2374     IMPORT_LIB_SUFFIX=lib
2375     DSO_PIC_CFLAGS=
2376     AR=emxomfar
2377     AR_FLAGS='r $@'
2378     CFLAGS="$CFLAGS -Zomf"
2379     CXXFLAGS="$CXXFLAGS -Zomf"
2380     DSO_LDOPTS='-Zdll'
2381     BIN_FLAGS='-Zlinker /ST:0x100000'
2382     IMPLIB='emximp -o'
2383     FILTER='true'
2384     LDFLAGS='-Zmap'
2385     WARNINGS_AS_ERRORS='-Werror'
2386     MOZ_DEBUG_FLAGS="-g -fno-inline"
2387     MOZ_OPTIMIZE_FLAGS="-O2"
2388     MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2389     DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2390     LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2391     TARGET_MD_ARCH=os2
2392     _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2393     RC=rc.exe
2394     MC=mc.exe
2395     RCFLAGS='-n'
2396     MOZ_USER_DIR="Mozilla"
2397     ZIP="$ZIP -X"
2399     if test "$MOZTOOLS"; then
2400         MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2401     else
2402         AC_MSG_ERROR([MOZTOOLS is not set])
2403     fi
2404     if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2405         DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2406         LDFLAGS="$LDFLAGS -Zhigh-mem"
2407         MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2408         AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2409     fi
2411     # GCC for OS/2 currently predefines these, but we don't want them
2412     _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2413     _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2415     AC_CACHE_CHECK(for __declspec(dllexport),
2416         ac_os2_declspec,
2417         [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2418                         [return 0;],
2419                         ac_os2_declspec="yes",
2420                         ac_os2_declspec="no")])
2421     if test "$ac_os2_declspec" != "yes"; then
2422         AC_MSG_ERROR([Compiler does not support __declspec(dllexport), install GCC-4.3.2 or newer])
2423     fi
2424     ;;
2426 *-solaris*)
2427     AC_DEFINE(SOLARIS)
2428     TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2429     MOZ_FIX_LINK_PATHS=
2430     # $ORIGIN/.. is for shared libraries under components/ to locate shared
2431     # libraries one level up (e.g. libnspr4.so)
2432     if test "$SOLARIS_SUNPRO_CC"; then
2433        LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
2434        LIBS="-lCrun -lCstd -lc $LIBS"
2435        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2436        CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
2437        CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
2438        LDFLAGS="-xildoff $LDFLAGS"
2439        if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
2440            _SAVE_LDFLAGS=$LDFLAGS
2441            LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2442            AC_TRY_LINK([#include <stdio.h>],
2443                        [printf("Hello World\n");],
2444                        ,
2445                        [LDFLAGS=$_SAVE_LDFLAGS])
2446        fi
2447        MOZ_OPTIMIZE_FLAGS="-xO4"
2448        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2449        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2450        MKSHLIB_FORCE_ALL='-z allextract'
2451        MKSHLIB_UNFORCE_ALL='-z defaultextract'
2452        DSO_LDOPTS='-G'
2453        AR_LIST="$AR t"
2454        AR_EXTRACT="$AR x"
2455        AR_DELETE="$AR d"
2456        AR='$(CXX) -xar'
2457        AR_FLAGS='-o $@'
2458        AS='/usr/ccs/bin/as'
2459        ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2460        AS_DASH_C_FLAG=''
2461        TARGET_COMPILER_ABI="sunc"
2462        CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2463        CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2464        AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2465        AC_LANG_SAVE
2466        AC_LANG_CPLUSPLUS
2467        AC_TRY_COMPILE([],
2468            [#if (__SUNPRO_CC < 0x590)
2469            #error "Denied"
2470            #endif],
2471            _BAD_COMPILER=,_BAD_COMPILER=1)
2472        if test -n "$_BAD_COMPILER"; then
2473            _res="no"
2474            AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2475        else
2476            _res="yes"
2477        fi
2478        AC_TRY_COMPILE([],
2479            [#if (__SUNPRO_CC >= 0x5100)
2480            #error "Sun C++ 5.10 or above"
2481            #endif],
2482            _ABOVE_SS12U1=,_ABOVE_SS12U1=1)
2483        if test "$_ABOVE_SS12U1"; then
2484            # disable xannotate
2485            CXXFLAGS="$CXXFLAGS -xannotate=no"
2486        fi
2487        AC_MSG_RESULT([$_res])
2488        AC_LANG_RESTORE
2489     else
2490        LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
2491        LIBS="-lc $LIBS"
2492        MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
2493        MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
2494        ASFLAGS="$ASFLAGS -fPIC"
2495        DSO_LDOPTS='-shared'
2496        WARNINGS_AS_ERRORS='-Werror'
2497        _WARNINGS_CFLAGS=''
2498        _WARNINGS_CXXFLAGS=''
2499        if test "$OS_RELEASE" = "5.3"; then
2500            AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2501        fi
2502     fi
2503     if test "$OS_RELEASE" = "5.5.1"; then
2504         AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2505     fi
2506     ;;
2508 *-sunos*)
2509     DSO_LDOPTS='-Bdynamic'
2510     MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2511     MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2512     AC_DEFINE(SUNOS4)
2513     AC_DEFINE(SPRINTF_RETURNS_STRING)
2514     case "$(target_os)" in
2515     sunos4.1*)
2516         DLL_SUFFIX='.so.1.0'
2517         ;;
2518     esac
2519     ;;
2521 *-os2*)
2522     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2523     ;;
2525 esac
2527 AC_SUBST(MOZ_LINKER)
2528 if test -n "$MOZ_LINKER"; then
2529   AC_DEFINE(MOZ_LINKER)
2531 AC_SUBST(MOZ_ENABLE_SZIP)
2533 dnl Only one oddball right now (QNX), but this gives us flexibility
2534 dnl if any other platforms need to override this in the future.
2535 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2537 dnl ========================================================
2538 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2539 dnl by now will not have any way to link most binaries (tests
2540 dnl as well as viewer, apprunner, etc.), because some symbols
2541 dnl will be left out of the "composite" .so's by ld as unneeded.
2542 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2543 dnl they can link in the static libs that provide the missing
2544 dnl symbols.
2545 dnl ========================================================
2546 NO_LD_ARCHIVE_FLAGS=
2547 if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
2548     NO_LD_ARCHIVE_FLAGS=1
2550 case "$target" in
2551 *-os2*)
2552     NO_LD_ARCHIVE_FLAGS=
2553     ;;
2554 *-aix4.3*|*-aix5*)
2555     NO_LD_ARCHIVE_FLAGS=
2556     ;;
2557 *-mingw*)
2558     if test -z "$GNU_CC"; then
2559         NO_LD_ARCHIVE_FLAGS=
2560     fi
2561     ;;
2562 esac
2563 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2565 dnl ========================================================
2566 dnl = Flags to strip unused symbols from .so components and
2567 dnl = to export jemalloc symbols when linking a program
2568 dnl ========================================================
2569 case "$target" in
2570     *-linux*|*-kfreebsd*-gnu|*-gnu*)
2571         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2572         ;;
2573     *-solaris*)
2574         if test -z "$GNU_CC"; then
2575          MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2576         else
2577          if test -z "$GCC_USE_GNU_LD"; then
2578           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2579          else
2580           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2581          fi
2582         fi
2583         ;;
2584     *-darwin*)
2585         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2586         ;;
2587     *-mingw*)
2588         if test -n "$GNU_CC"; then
2589            MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2590         fi
2591         ;;
2592 esac
2594 if test -z "$COMPILE_ENVIRONMENT"; then
2595     SKIP_COMPILER_CHECKS=1
2596     SKIP_LIBRARY_CHECKS=1
2599 MOZ_COMPILER_OPTS
2600 if test -z "$SKIP_COMPILER_CHECKS"; then
2601 dnl Checks for typedefs, structures, and compiler characteristics.
2602 dnl ========================================================
2603 AC_HEADER_STDC
2604 AC_C_CONST
2605 AC_TYPE_MODE_T
2606 AC_TYPE_OFF_T
2607 AC_TYPE_PID_T
2608 AC_TYPE_SIZE_T
2609 AC_LANG_CPLUSPLUS
2610 AC_MSG_CHECKING(for __stdcall)
2611 AC_CACHE_VAL(ac_cv___stdcall,
2612  [AC_TRY_COMPILE([template <typename Method> struct foo;
2613                   template <> struct foo<void (*)()> {};
2614                   template <> struct foo<void (__stdcall*)()> {};],
2615                  [],
2616                  [ac_cv___stdcall=true],
2617                  [ac_cv___stdcall=false])])
2618 if test "$ac_cv___stdcall" = true ; then
2619   AC_DEFINE(HAVE_STDCALL)
2620   AC_MSG_RESULT(yes)
2621 else
2622   AC_MSG_RESULT(no)
2624 AC_LANG_C
2625 AC_MSG_CHECKING(for ssize_t)
2626 AC_CACHE_VAL(ac_cv_type_ssize_t,
2627  [AC_TRY_COMPILE([#include <stdio.h>
2628                   #include <sys/types.h>],
2629                  [ssize_t foo = 0;],
2630                  [ac_cv_type_ssize_t=true],
2631                  [ac_cv_type_ssize_t=false])])
2632 if test "$ac_cv_type_ssize_t" = true ; then
2633   AC_DEFINE(HAVE_SSIZE_T)
2634   AC_MSG_RESULT(yes)
2635 else
2636   AC_MSG_RESULT(no)
2638 AC_STRUCT_ST_BLKSIZE
2639 AC_MSG_CHECKING(for siginfo_t)
2640 AC_CACHE_VAL(ac_cv_siginfo_t,
2641  [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2642                   #include <signal.h>],
2643                  [siginfo_t* info;],
2644                  [ac_cv_siginfo_t=true],
2645                  [ac_cv_siginfo_t=false])])
2646 if test "$ac_cv_siginfo_t" = true ; then
2647   AC_DEFINE(HAVE_SIGINFO_T)
2648   AC_MSG_RESULT(yes)
2649 else
2650   AC_MSG_RESULT(no)
2653 dnl Check for int64, uint, and uint_t.
2654 dnl ========================================================
2655 AC_MSG_CHECKING(for int64)
2656 AC_CACHE_VAL(ac_cv_int64,
2657  [AC_TRY_COMPILE([#include <stdio.h>
2658                   #include <sys/types.h>],
2659                  [int64 foo = 0;],
2660                  [ac_cv_int64=true],
2661                  [ac_cv_int64=false])])
2662 if test "$ac_cv_int64" = true ; then
2663   AC_DEFINE(HAVE_INT64)
2664   AC_MSG_RESULT(yes)
2665 else
2666   AC_MSG_RESULT(no)
2668 AC_MSG_CHECKING(for uint)
2669 AC_CACHE_VAL(ac_cv_uint,
2670  [AC_TRY_COMPILE([#include <stdio.h>
2671                   #include <sys/types.h>],
2672                  [uint foo = 0;],
2673                  [ac_cv_uint=true],
2674                  [ac_cv_uint=false])])
2675 if test "$ac_cv_uint" = true ; then
2676   AC_DEFINE(HAVE_UINT)
2677   AC_MSG_RESULT(yes)
2678 else
2679   AC_MSG_RESULT(no)
2681 AC_MSG_CHECKING(for uint_t)
2682 AC_CACHE_VAL(ac_cv_uint_t,
2683  [AC_TRY_COMPILE([#include <stdio.h>
2684                   #include <sys/types.h>],
2685                  [uint_t foo = 0;],
2686                  [ac_cv_uint_t=true],
2687                  [ac_cv_uint_t=false])])
2688 if test "$ac_cv_uint_t" = true ; then
2689   AC_DEFINE(HAVE_UINT_T)
2690   AC_MSG_RESULT(yes)
2691 else
2692   AC_MSG_RESULT(no)
2695 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2696 dnl are defined when compiling C++ but not C.  Since the result of this
2697 dnl test is used only in C++, do it in C++.
2698 AC_LANG_CPLUSPLUS
2700 AC_MSG_CHECKING(for uname.domainname)
2701 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2702     [AC_TRY_COMPILE([#include <sys/utsname.h>],
2703         [ struct utsname *res; char *domain;
2704             (void)uname(res);  if (res != 0) { domain = res->domainname; } ],
2705         [ac_cv_have_uname_domainname_field=true],
2706         [ac_cv_have_uname_domainname_field=false])])
2708 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2709     AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2710     AC_MSG_RESULT(yes)
2711 else
2712     AC_MSG_RESULT(no)
2715 AC_MSG_CHECKING(for uname.__domainname)
2716 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2717     [AC_TRY_COMPILE([#include <sys/utsname.h>],
2718         [ struct utsname *res; char *domain;
2719             (void)uname(res);  if (res != 0) { domain = res->__domainname; } ],
2720         [ac_cv_have_uname_us_domainname_field=true],
2721         [ac_cv_have_uname_us_domainname_field=false])])
2723 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2724     AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2725     AC_MSG_RESULT(yes)
2726 else
2727     AC_MSG_RESULT(no)
2730 dnl Check whether we can use gcc's c++0x mode
2731 AC_LANG_CPLUSPLUS
2733 if test "$GNU_CXX"; then
2734     _SAVE_CXXFLAGS=$CXXFLAGS
2735     CXXFLAGS="$CXXFLAGS -std=gnu++0x"
2737     AC_CACHE_CHECK(for gcc c++0x headers bug without rtti,
2738         ac_cv_cxx0x_headers_bug,
2739         [AC_TRY_COMPILE([#include <memory>], [],
2740                         ac_cv_cxx0x_headers_bug="no",
2741                         ac_cv_cxx0x_headers_bug="yes")])
2742     CXXFLAGS="$_SAVE_CXXFLAGS"
2743     if test "$ac_cv_cxx0x_headers_bug" = "no"; then
2744         CXXFLAGS="$CXXFLAGS -std=gnu++0x"
2745     fi
2748 dnl Check for usable char16_t (2 bytes, unsigned)
2749 dnl (we might not need the unsignedness check anymore)
2750 AC_CACHE_CHECK(for usable char16_t (2 bytes, unsigned),
2751     ac_cv_have_usable_char16_t,
2752     [AC_TRY_COMPILE([$configure_static_assert_macros],
2753                     [CONFIGURE_STATIC_ASSERT(sizeof(char16_t) == 2);
2754                      CONFIGURE_STATIC_ASSERT(char16_t(-1) > char16_t(0));
2755                      CONFIGURE_STATIC_ASSERT(sizeof((u"hello")[0]) == 2);
2756                      CONFIGURE_STATIC_ASSERT(sizeof(u'a') == 2);
2757                      CONFIGURE_STATIC_ASSERT(u'\xFFFF' > u'\x0')],
2758                     ac_cv_have_usable_char16_t="yes",
2759                     ac_cv_have_usable_char16_t="no")])
2760 if test "$ac_cv_have_usable_char16_t" = "yes"; then
2761     AC_DEFINE(HAVE_CPP_CHAR16_T)
2762     HAVE_CPP_CHAR16_T=1
2763 elif test "$GNU_CXX"; then
2764     CXXFLAGS="$_SAVE_CXXFLAGS"
2767 dnl Check for usable wchar_t (2 bytes, unsigned)
2768 dnl (we really don't need the unsignedness check anymore)
2769 dnl ========================================================
2771 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2772     ac_cv_have_usable_wchar_v2,
2773     [AC_TRY_COMPILE([#include <stddef.h>
2774                      $configure_static_assert_macros],
2775                     [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2776                      CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2777                     ac_cv_have_usable_wchar_v2="yes",
2778                     ac_cv_have_usable_wchar_v2="no")])
2779 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2780     AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2781     HAVE_CPP_2BYTE_WCHAR_T=1
2782 elif test "$ac_cv_have_usable_char16_t" != "yes"; then
2783 dnl This is really gcc-only
2784 dnl Do this test using CXX only since some versions of gcc
2785 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2786 dnl only have short-wchar support for c++.
2787 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_LINK([#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
2804         if test "$OS_TARGET" = Android; then
2805             WCHAR_CFLAGS="-fshort-wchar -Wl,--no-wchar-size-warning"
2806             CXXFLAGS="$CXXFLAGS -Wl,--no-wchar-size-warning"
2807             CFLAGS="$CFLAGS -Wl,--no-wchar-size-warning"
2808             DSO_LDOPTS="$DSO_LDOPTS -Wl,--no-wchar-size-warning"
2809         else
2810             WCHAR_CFLAGS="-fshort-wchar"
2811         fi
2812     else
2813         CXXFLAGS=$_SAVE_CXXFLAGS
2814     fi
2817 AC_LANG_C
2819 dnl Check for .hidden assembler directive and visibility attribute.
2820 dnl Borrowed from glibc configure.in
2821 dnl ===============================================================
2822 if test "$GNU_CC"; then
2823   AC_CACHE_CHECK(for visibility(hidden) attribute,
2824                  ac_cv_visibility_hidden,
2825                  [cat > conftest.c <<EOF
2826                   int foo __attribute__ ((visibility ("hidden"))) = 1;
2828                   ac_cv_visibility_hidden=no
2829                   if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2830                     if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2831                       ac_cv_visibility_hidden=yes
2832                     fi
2833                   fi
2834                   rm -f conftest.[cs]
2835                  ])
2836   if test "$ac_cv_visibility_hidden" = "yes"; then
2837     AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2839     AC_CACHE_CHECK(for visibility(default) attribute,
2840                    ac_cv_visibility_default,
2841                    [cat > conftest.c <<EOF
2842                     int foo __attribute__ ((visibility ("default"))) = 1;
2844                     ac_cv_visibility_default=no
2845                     if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2846                       if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2847                         ac_cv_visibility_default=yes
2848                       fi
2849                     fi
2850                     rm -f conftest.[cs]
2851                    ])
2852     if test "$ac_cv_visibility_default" = "yes"; then
2853       AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2855       AC_CACHE_CHECK(for visibility pragma support,
2856                      ac_cv_visibility_pragma,
2857                      [cat > conftest.c <<EOF
2858 #pragma GCC visibility push(hidden)
2859                       int foo_hidden = 1;
2860 #pragma GCC visibility push(default)
2861                       int foo_default = 1;
2863                       ac_cv_visibility_pragma=no
2864                       if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2865                         if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2866                           if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2867                             ac_cv_visibility_pragma=yes
2868                           fi
2869                         fi
2870                       fi
2871                       rm -f conftest.[cs]
2872                     ])
2873       if test "$ac_cv_visibility_pragma" = "yes"; then
2874         AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2875                        ac_cv_have_visibility_class_bug,
2876                        [cat > conftest.c <<EOF
2877 #pragma GCC visibility push(hidden)
2878 struct __attribute__ ((visibility ("default"))) TestStruct {
2879   static void Init();
2881 __attribute__ ((visibility ("default"))) void TestFunc() {
2882   TestStruct::Init();
2885                        ac_cv_have_visibility_class_bug=no
2886                        if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2887                          ac_cv_have_visibility_class_bug=yes
2888                        else
2889                          if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2890                            ac_cv_have_visibility_class_bug=yes
2891                          fi
2892                        fi
2893                        rm -rf conftest.{c,S}
2894                        ])
2896         AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2897                        ac_cv_have_visibility_builtin_bug,
2898                        [cat > conftest.c <<EOF
2899 #pragma GCC visibility push(hidden)
2900 #pragma GCC visibility push(default)
2901 #include <string.h>
2902 #pragma GCC visibility pop
2904 __attribute__ ((visibility ("default"))) void Func() {
2905   char c[[100]];
2906   memset(c, 0, sizeof(c));
2909                        ac_cv_have_visibility_builtin_bug=no
2910                        if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2911                          ac_cv_have_visibility_builtin_bug=yes
2912                        else
2913                          if test `grep -c "@PLT" conftest.S` = 0; then
2914                            ac_cv_visibility_builtin_bug=yes
2915                          fi
2916                        fi
2917                        rm -f conftest.{c,S}
2918                        ])
2919         if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2920                 "$ac_cv_have_visibility_class_bug" = "no"; then
2921           VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2922           WRAP_SYSTEM_INCLUDES=1
2923           STL_FLAGS='-I$(DIST)/stl_wrappers'
2924           WRAP_STL_INCLUDES=1
2925         else
2926           VISIBILITY_FLAGS='-fvisibility=hidden'
2927         fi # have visibility pragma bug
2928       fi   # have visibility pragma
2929     fi     # have visibility(default) attribute
2930   fi       # have visibility(hidden) attribute
2931 fi         # GNU_CC
2933 # visibility hidden flag for Sun Studio on Solaris
2934 if test "$SOLARIS_SUNPRO_CC"; then
2935 VISIBILITY_FLAGS='-xldscope=hidden'
2936 fi         # Sun Studio on Solaris
2938 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2939 AC_SUBST(VISIBILITY_FLAGS)
2941 MOZ_GCC_PR49911
2942 MOZ_GCC_PR39608
2943 MOZ_LLVM_PR8927
2945 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
2946 dnl ========================================================
2947 if test "$GNU_CC"; then
2948   CFLAGS_save="${CFLAGS}"
2949   CFLAGS="${CFLAGS} -Werror"
2950   AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
2951                  ac_cv_force_align_arg_pointer,
2952                  [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
2953                                  [],
2954                                  ac_cv_force_align_arg_pointer="yes",
2955                                  ac_cv_force_align_arg_pointer="no")])
2956   CFLAGS="${CFLAGS_save}"
2957   if test "$ac_cv_force_align_arg_pointer" = "yes"; then
2958     HAVE_GCC_ALIGN_ARG_POINTER=1
2959   else
2960     HAVE_GCC_ALIGN_ARG_POINTER=
2961   fi
2963 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
2965 dnl Checks for header files.
2966 dnl ========================================================
2967 AC_HEADER_DIRENT
2968 case "$target_os" in
2969 freebsd*|openbsd*)
2970 # for stuff like -lXshm
2971     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2972     ;;
2973 esac
2974 MOZ_CHECK_COMMON_HEADERS
2976 dnl These are all the places some variant of statfs can be hiding.
2977 MOZ_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2979 dnl Quota support
2980 MOZ_CHECK_HEADERS(sys/quota.h sys/sysmacros.h)
2981 MOZ_CHECK_HEADERS([linux/quota.h],,,[#include <sys/socket.h>])
2983 dnl SCTP support - needs various network include headers
2984 MOZ_CHECK_HEADERS([linux/if_addr.h linux/rtnetlink.h],,,[#include <sys/socket.h>])
2986 MOZ_CHECK_HEADERS(sys/types.h netinet/in.h byteswap.h)
2988 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
2989 AC_CACHE_CHECK(for sockaddr_in.sin_len,
2990                    ac_cv_sockaddr_in_sin_len,
2991                    [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2992                                     #include <sys/types.h>
2993                                     #endif
2994                                     #include <netinet/in.h>
2995                                     struct sockaddr_in x;
2996                                     void *foo = (void*) &x.sin_len;],
2997                                    [],
2998                                    [ac_cv_sockaddr_in_sin_len=true],
2999                                    [ac_cv_sockaddr_in_sin_len=false])])
3000 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
3001   AC_DEFINE(HAVE_SIN_LEN)
3002 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
3003   AC_DEFINE(HAVE_SCONN_LEN)
3006 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
3007                ac_cv_sockaddr_in6_sin6_len,
3008                [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
3009                                 #include <sys/types.h>
3010                                 #endif
3011                                 #include <netinet/in.h>
3012                                 struct sockaddr_in6 x;
3013                                 void *foo = (void*) &x.sin6_len;],
3014                                [],
3015                                [ac_cv_sockaddr_in6_sin6_len=true],
3016                                [ac_cv_sockaddr_in6_sin6_len=false])])
3017 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
3018   AC_DEFINE(HAVE_SIN6_LEN)
3021 AC_CACHE_CHECK(for sockaddr.sa_len,
3022                ac_cv_sockaddr_sa_len,
3023                [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
3024                                 #include <sys/types.h>
3025                                 #endif
3026                                 #include <sys/socket.h>
3027                                 struct sockaddr x;
3028                                 void *foo = (void*) &x.sa_len;],
3029                                [],
3030                                [ac_cv_sockaddr_sa_len=true],
3031                                [ac_cv_sockaddr_sa_len=false])])
3032 if test "$ac_cv_sockaddr_sa_len" = true ; then
3033   AC_DEFINE(HAVE_SA_LEN)
3036 dnl Check whether the compiler supports the new-style C++ standard
3037 dnl library headers (i.e. <new>) or needs the old "new.h"
3038 AC_LANG_CPLUSPLUS
3039 NEW_H=new.h
3040 MOZ_CHECK_HEADER(new, [NEW_H=new])
3041 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3042 AC_LANG_C
3044 AC_ARG_ENABLE(dtrace,
3045               [  --enable-dtrace         build with dtrace support if available (default=no)],
3046               [enable_dtrace="yes"],)
3047 if test "x$enable_dtrace" = "xyes"; then
3048   MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3049   if test -n "$HAVE_DTRACE"; then
3050       AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3051   else
3052       AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3053   fi
3055 AC_SUBST(HAVE_DTRACE)
3057 case $target in
3058 *-aix4.3*|*-aix5*)
3059         ;;
3061         MOZ_CHECK_HEADERS(sys/cdefs.h)
3062         ;;
3063 esac
3065 MOZ_LINUX_PERF_EVENT
3067 dnl Checks for libraries.
3068 dnl ========================================================
3069 case $target in
3070 *-hpux11.*)
3071         ;;
3073         AC_CHECK_LIB(c_r, gethostbyname_r)
3074         ;;
3075 esac
3077 dnl We don't want to link with libdl even if it's present on OS X, since
3078 dnl it's not used and not part of the default installation. OS/2 has dlfcn
3079 dnl in libc.
3080 dnl We don't want to link against libm or libpthread on Darwin since
3081 dnl they both are just symlinks to libSystem and explicitly linking
3082 dnl against libSystem causes issues when debugging (see bug 299601).
3083 case $target in
3084 *-darwin*)
3085     ;;
3086 *-os2*)
3087     ;;
3089     AC_SEARCH_LIBS(dlopen, dl,
3090         MOZ_CHECK_HEADER(dlfcn.h,
3091         AC_DEFINE(HAVE_DLOPEN)))
3092     ;;
3093 esac
3095 _SAVE_CFLAGS="$CFLAGS"
3096 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3097 AC_CHECK_FUNCS(dladdr memmem)
3098 CFLAGS="$_SAVE_CFLAGS"
3100 if test ! "$GNU_CXX"; then
3102     case $target in
3103     *-aix*)
3104         AC_CHECK_LIB(C_r, demangle)
3105         ;;
3106      *)
3107         AC_CHECK_LIB(C, demangle)
3108         ;;
3109      esac
3112 dnl OS/2 has socket in libc.
3113 case $target in
3114 *-os2*)
3115     ;;
3117     AC_CHECK_LIB(socket, socket)
3118 esac
3120 XLDFLAGS="$X_LIBS"
3121 XLIBS="$X_EXTRA_LIBS"
3123 dnl ========================================================
3124 dnl Checks for X libraries.
3125 dnl Ordering is important.
3126 dnl Xt is dependent upon SM as of X11R6
3127 dnl ========================================================
3128 if test "$no_x" = "yes"; then
3129     AC_DEFINE(NO_X11)
3130 else
3131     AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3132         XLIBS="-lX11 $XLIBS"
3133         _SAVE_LDFLAGS="$LDFLAGS"
3134         LDFLAGS="$XLDFLAGS $LDFLAGS"
3135         AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3136                 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3137         AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3138                 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3140         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3141         unset ac_cv_lib_Xt_XtFree
3142             AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3143             AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3144         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3145                     [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3146         ])
3148     # AIX needs the motif library linked before libXt to prevent
3149     # crashes in plugins linked against Motif - Bug #98892
3150     case "${target_os}" in
3151     aix*)
3152         XT_LIBS="-lXm $XT_LIBS"
3153         ;;
3154     esac
3156     dnl ========================================================
3157     dnl = Check for XShm
3158     dnl ========================================================
3159     AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3160         $XLIBS $XEXT_LIBS)
3162     dnl ========================================================
3163     dnl = Check for Xss
3164     dnl ========================================================
3165     MOZ_CHECK_HEADER(X11/extensions/scrnsaver.h,
3166         AC_CHECK_LIB(Xss, XScreenSaverQueryInfo,
3167             [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS"
3168              AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS))
3170         LDFLAGS="$_SAVE_LDFLAGS"
3171 fi # $no_x
3173 AC_SUBST(XCFLAGS)
3174 AC_SUBST(XLDFLAGS)
3175 AC_SUBST(XLIBS)
3176 AC_SUBST(XEXT_LIBS)
3177 AC_SUBST(XT_LIBS)
3178 AC_SUBST(XSS_LIBS)
3180 dnl ========================================================
3181 dnl = pthread support
3182 dnl = Start by checking whether the system support pthreads
3183 dnl ========================================================
3184 case "$target_os" in
3185 darwin*)
3186     USE_PTHREADS=1
3187     ;;
3189     MOZ_CHECK_PTHREADS(pthreads,
3190         USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3191         MOZ_CHECK_PTHREADS(pthread,
3192             USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3193             MOZ_CHECK_PTHREADS(c_r,
3194                 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3195                 MOZ_CHECK_PTHREADS(c,
3196                     USE_PTHREADS=1
3197                 )
3198             )
3199         )
3200     )
3201     ;;
3202 esac
3204 dnl ========================================================
3205 dnl Check the command line for --with-pthreads
3206 dnl ========================================================
3207 MOZ_ARG_WITH_BOOL(pthreads,
3208 [  --with-pthreads         Force use of system pthread library with NSPR ],
3209 [ if test "$USE_PTHREADS"x = x; then
3210     AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3211 fi],
3212     USE_PTHREADS=
3213     _PTHREAD_LDFLAGS=
3216 dnl ========================================================
3217 dnl Do the platform specific pthread hackery
3218 dnl ========================================================
3219 if test "$USE_PTHREADS"x != x
3220 then
3221         dnl
3222         dnl See if -pthread is supported.
3223         dnl
3224         rm -f conftest*
3225         ac_cv_have_dash_pthread=no
3226         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3227         echo 'int main() { return 0; }' | cat > conftest.c
3228         ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3229         if test $? -eq 0; then
3230                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3231                         ac_cv_have_dash_pthread=yes
3232                 case "$target_os" in
3233                 freebsd*)
3234 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3235                 ;;
3236                 *)
3237                             CFLAGS="$CFLAGS -pthread"
3238                             CXXFLAGS="$CXXFLAGS -pthread"
3239                 ;;
3240                 esac
3241                 fi
3242         fi
3243         rm -f conftest*
3244     AC_MSG_RESULT($ac_cv_have_dash_pthread)
3246         dnl
3247         dnl See if -pthreads is supported.
3248         dnl
3249     ac_cv_have_dash_pthreads=no
3250     if test "$ac_cv_have_dash_pthread" = "no"; then
3251             AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3252         echo 'int main() { return 0; }' | cat > conftest.c
3253             ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3254         if test $? -eq 0; then
3255                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3256                             ac_cv_have_dash_pthreads=yes
3257                             CFLAGS="$CFLAGS -pthreads"
3258                             CXXFLAGS="$CXXFLAGS -pthreads"
3259                     fi
3260             fi
3261             rm -f conftest*
3262         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3263     fi
3265         case "$target" in
3266             *-*-freebsd*)
3267                         AC_DEFINE(_REENTRANT)
3268                         AC_DEFINE(_THREAD_SAFE)
3269                         dnl -pthread links in -lpthread, so don't specify it explicitly.
3270                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3271                                 _PTHREAD_LDFLAGS="-pthread"
3272                         fi
3273                         ;;
3275             *-*-openbsd*|*-*-bsdi*)
3276                         AC_DEFINE(_REENTRANT)
3277                         AC_DEFINE(_THREAD_SAFE)
3278                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3279                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3280                 _PTHREAD_LDFLAGS="-pthread"
3281                         fi
3282                         ;;
3284             *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
3285                         AC_DEFINE(_REENTRANT)
3286                         ;;
3288             *-aix4.3*|*-aix5*)
3289                         AC_DEFINE(_REENTRANT)
3290                         ;;
3292             *-hpux11.*)
3293                         AC_DEFINE(_REENTRANT)
3294                         ;;
3296             *-*-solaris*)
3297                         AC_DEFINE(_REENTRANT)
3298                         if test "$SOLARIS_SUNPRO_CC"; then
3299                                 CFLAGS="$CFLAGS -mt"
3300                                 CXXFLAGS="$CXXFLAGS -mt"
3301                         fi
3302                         ;;
3303         esac
3304     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3308 dnl Checks for library functions.
3309 dnl ========================================================
3310 AC_PROG_GCC_TRADITIONAL
3311 AC_FUNC_MEMCMP
3312 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf memmove rint stat64 lstat64 truncate64 setbuf isatty)
3313 AC_CHECK_FUNCS(statvfs64 statvfs statfs64 statfs)
3314 AC_CHECK_FUNCS(flockfile getpagesize)
3315 AC_CHECK_FUNCS(localtime_r strtok_r)
3317 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
3318 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
3319                ac_cv_clock_monotonic,
3320                [for libs in "" -lrt; do
3321                     _SAVE_LIBS="$LIBS"
3322                     LIBS="$LIBS $libs"
3323                     AC_TRY_LINK([#include <time.h>],
3324                                  [ struct timespec ts;
3325                                    clock_gettime(CLOCK_MONOTONIC, &ts); ],
3326                                  ac_cv_clock_monotonic=$libs
3327                                  LIBS="$_SAVE_LIBS"
3328                                  break,
3329                                  ac_cv_clock_monotonic=no)
3330                     LIBS="$_SAVE_LIBS"
3331                 done])
3332 if test "$ac_cv_clock_monotonic" != "no"; then
3333     HAVE_CLOCK_MONOTONIC=1
3334     REALTIME_LIBS=$ac_cv_clock_monotonic
3335     AC_DEFINE(HAVE_CLOCK_MONOTONIC)
3336     AC_SUBST(HAVE_CLOCK_MONOTONIC)
3337     AC_SUBST(REALTIME_LIBS)
3340 dnl check for wcrtomb/mbrtowc
3341 dnl =======================================================================
3342 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3343 AC_LANG_SAVE
3344 AC_LANG_CPLUSPLUS
3345 AC_CACHE_CHECK(for wcrtomb,
3346     ac_cv_have_wcrtomb,
3347     [AC_TRY_LINK([#include <wchar.h>],
3348                  [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3349                  ac_cv_have_wcrtomb="yes",
3350                  ac_cv_have_wcrtomb="no")])
3351 if test "$ac_cv_have_wcrtomb" = "yes"; then
3352     AC_DEFINE(HAVE_WCRTOMB)
3354 AC_CACHE_CHECK(for mbrtowc,
3355     ac_cv_have_mbrtowc,
3356     [AC_TRY_LINK([#include <wchar.h>],
3357                  [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3358                  ac_cv_have_mbrtowc="yes",
3359                  ac_cv_have_mbrtowc="no")])
3360 if test "$ac_cv_have_mbrtowc" = "yes"; then
3361     AC_DEFINE(HAVE_MBRTOWC)
3363 AC_LANG_RESTORE
3366 AC_CACHE_CHECK(
3367     [for res_ninit()],
3368     ac_cv_func_res_ninit,
3369     [AC_TRY_LINK([
3370         #ifdef linux
3371         #define _BSD_SOURCE 1
3372         #endif
3373         #include <resolv.h>
3374         ],
3375         [int foo = res_ninit(&_res);],
3376         [ac_cv_func_res_ninit=yes],
3377         [ac_cv_func_res_ninit=no])
3378     ])
3380 if test "$ac_cv_func_res_ninit" = "yes"; then
3381     AC_DEFINE(HAVE_RES_NINIT)
3382 dnl must add the link line we do something as foolish as this... dougt
3383 dnl else
3384 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3385 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3388 AC_LANG_CPLUSPLUS
3389 AC_CACHE_CHECK(
3390     [for gnu_get_libc_version()],
3391     ac_cv_func_gnu_get_libc_version,
3392     [AC_TRY_LINK([
3393         #ifdef HAVE_GNU_LIBC_VERSION_H
3394         #include <gnu/libc-version.h>
3395         #endif
3396         ],
3397         [const char *glibc_version = gnu_get_libc_version();],
3398         [ac_cv_func_gnu_get_libc_version=yes],
3399         [ac_cv_func_gnu_get_libc_version=no]
3400         )]
3401     )
3403 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3404     AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3407 case $target_os in
3408     darwin*|mingw*|os2*)
3409         ;;
3410     *)
3412 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3413     AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3414         AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3415 _SAVE_LIBS=$LIBS
3416 LIBS="$LIBS $_ICONV_LIBS"
3417 AC_CACHE_CHECK(
3418     [for iconv()],
3419     ac_cv_func_iconv,
3420     [AC_TRY_LINK([
3421         #include <stdlib.h>
3422         #include <iconv.h>
3423         ],
3424         [
3425             iconv_t h = iconv_open("", "");
3426             iconv(h, NULL, NULL, NULL, NULL);
3427             iconv_close(h);
3428         ],
3429         [ac_cv_func_iconv=yes],
3430         [ac_cv_func_iconv=no]
3431         )]
3432     )
3433 if test "$ac_cv_func_iconv" = "yes"; then
3434     AC_DEFINE(HAVE_ICONV)
3435     DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3436     LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3437     LIBICONV="$_ICONV_LIBS"
3438     AC_CACHE_CHECK(
3439         [for iconv() with const input],
3440         ac_cv_func_const_iconv,
3441         [AC_TRY_COMPILE([
3442             #include <stdlib.h>
3443             #include <iconv.h>
3444             ],
3445             [
3446                 const char *input = "testing";
3447                 iconv_t h = iconv_open("", "");
3448                 iconv(h, &input, NULL, NULL, NULL);
3449                 iconv_close(h);
3450             ],
3451             [ac_cv_func_const_iconv=yes],
3452             [ac_cv_func_const_iconv=no]
3453             )]
3454         )
3455     if test "$ac_cv_func_const_iconv" = "yes"; then
3456         AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3457     fi
3459 LIBS=$_SAVE_LIBS
3461     ;;
3462 esac
3464 AM_LANGINFO_CODESET
3466 AC_LANG_C
3468 dnl **********************
3469 dnl *** va_copy checks ***
3470 dnl **********************
3471 dnl we currently check for all three va_copy possibilities, so we get
3472 dnl all results in config.log for bug reports.
3473 AC_MSG_CHECKING(for an implementation of va_copy())
3474 AC_CACHE_VAL(ac_cv_va_copy,[
3475     AC_TRY_RUN([
3476         #include <stdarg.h>
3477         void f (int i, ...) {
3478             va_list args1, args2;
3479             va_start (args1, i);
3480             va_copy (args2, args1);
3481             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3482                 exit (1);
3483             va_end (args1); va_end (args2);
3484         }
3485         int main() { f (0, 42); return 0; }],
3486         ac_cv_va_copy=yes,
3487         ac_cv_va_copy=no,
3488         ac_cv_va_copy=no
3489     )
3491 AC_MSG_RESULT($ac_cv_va_copy)
3492 AC_MSG_CHECKING(for an implementation of __va_copy())
3493 AC_CACHE_VAL(ac_cv___va_copy,[
3494     AC_TRY_RUN([
3495         #include <stdarg.h>
3496         void f (int i, ...) {
3497             va_list args1, args2;
3498             va_start (args1, i);
3499             __va_copy (args2, args1);
3500             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3501                 exit (1);
3502             va_end (args1); va_end (args2);
3503         }
3504         int main() { f (0, 42); return 0; }],
3505         ac_cv___va_copy=yes,
3506         ac_cv___va_copy=no,
3507         ac_cv___va_copy=no
3508     )
3510 AC_MSG_RESULT($ac_cv___va_copy)
3511 AC_MSG_CHECKING(whether va_lists can be copied by value)
3512 AC_CACHE_VAL(ac_cv_va_val_copy,[
3513     AC_TRY_RUN([
3514         #include <stdarg.h>
3515         void f (int i, ...) {
3516             va_list args1, args2;
3517             va_start (args1, i);
3518             args2 = args1;
3519             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3520                 exit (1);
3521             va_end (args1); va_end (args2);
3522         }
3523         int main() { f (0, 42); return 0; }],
3524         ac_cv_va_val_copy=yes,
3525         ac_cv_va_val_copy=no,
3526         ac_cv_va_val_copy=yes
3527     )
3529 if test "x$ac_cv_va_copy" = "xyes"; then
3530     AC_DEFINE(VA_COPY, va_copy)
3531     AC_DEFINE(HAVE_VA_COPY)
3532 elif test "x$ac_cv___va_copy" = "xyes"; then
3533     AC_DEFINE(VA_COPY, __va_copy)
3534     AC_DEFINE(HAVE_VA_COPY)
3537 if test "x$ac_cv_va_val_copy" = "xno"; then
3538    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3540 AC_MSG_RESULT($ac_cv_va_val_copy)
3542 dnl ===================================================================
3543 dnl ========================================================
3544 dnl Put your C++ language/feature checks below
3545 dnl ========================================================
3546 AC_LANG_CPLUSPLUS
3548 ARM_ABI_PREFIX=
3549 if test "$GNU_CC"; then
3550   if test "$CPU_ARCH" = "arm" ; then
3551     AC_CACHE_CHECK(for ARM EABI,
3552         ac_cv_gcc_arm_eabi,
3553         [AC_TRY_COMPILE([],
3554                         [
3555 #if defined(__ARM_EABI__)
3556   return 0;
3557 #else
3558 #error Not ARM EABI.
3559 #endif
3560                         ],
3561                         ac_cv_gcc_arm_eabi="yes",
3562                         ac_cv_gcc_arm_eabi="no")])
3563     if test "$ac_cv_gcc_arm_eabi" = "yes"; then
3564         HAVE_ARM_EABI=1
3565         ARM_ABI_PREFIX=eabi-
3566     else
3567         ARM_ABI_PREFIX=oabi-
3568     fi
3569   fi
3571   TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
3574 dnl Check for support of modern template specialization syntax
3575 dnl Test code and requirement from scc@netscape.com.
3576 dnl Autoconf cut-and-paste job by waterson@netscape.com
3577 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3578                ac_cv_cpp_modern_specialize_template_syntax,
3579                [AC_TRY_COMPILE(template <class T> struct X { int a; };
3580                                class Y {};
3581                                template <> struct X<Y> { double a; };,
3582                                X<int> int_x;
3583                                X<Y> y_x;,
3584                                ac_cv_cpp_modern_specialize_template_syntax=yes,
3585                                ac_cv_cpp_modern_specialize_template_syntax=no)])
3586 if test "$ac_cv_cpp_modern_specialize_template_syntax" = no ; then
3587   AC_MSG_ERROR([The C++ compiler does not support template specialization])
3590 dnl Some compilers support only full specialization, and some don't.
3591 AC_CACHE_CHECK(whether partial template specialization works,
3592                ac_cv_cpp_partial_specialization,
3593                [AC_TRY_COMPILE(template <class T> class Foo {};
3594                                template <class T> class Foo<T*> {};,
3595                                return 0;,
3596                                ac_cv_cpp_partial_specialization=yes,
3597                                ac_cv_cpp_partial_specialization=no)])
3598 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3599   AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3602 dnl Check to see if we can resolve ambiguity with |using|.
3603 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3604                ac_cv_cpp_ambiguity_resolving_using,
3605                [AC_TRY_COMPILE(class X {
3606                                  public: int go(const X&) {return 3;}
3607                                          int jo(const X&) {return 3;}
3608                                };
3609                                class Y : public X {
3610                                  public:  int go(int) {return 2;}
3611                                           int jo(int) {return 2;}
3612                                           using X::jo;
3613                                  private: using X::go;
3614                                };,
3615                                X x; Y y; y.jo(x);,
3616                                ac_cv_cpp_ambiguity_resolving_using=yes,
3617                                ac_cv_cpp_ambiguity_resolving_using=no)])
3618 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3619    AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3622 dnl See if a dynamic_cast to void* gives the most derived object.
3623 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3624                ac_cv_cpp_dynamic_cast_void_ptr,
3625                [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3626                             class Y { int j; public: virtual ~Y() { } };
3627                             class Z : public X, public Y { int k; };
3629                             int main() {
3630                                  Z mdo;
3631                                  X *subx = (X*)&mdo;
3632                                  Y *suby = (Y*)&mdo;
3633                                  return !((((void*)&mdo != (void*)subx) &&
3634                                            ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3635                                           (((void*)&mdo != (void*)suby) &&
3636                                            ((void*)&mdo == dynamic_cast<void*>(suby))));
3637                             }],
3638                            ac_cv_cpp_dynamic_cast_void_ptr=yes,
3639                            ac_cv_cpp_dynamic_cast_void_ptr=no,
3640                            ac_cv_cpp_dynamic_cast_void_ptr=no)])
3641 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3642    AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3646 dnl note that this one is reversed - if the test fails, then
3647 dnl we require implementations of unused virtual methods. Which
3648 dnl really blows because it means we'll have useless vtable
3649 dnl bloat.
3650 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3651                ac_cv_cpp_unused_required,
3652                [AC_TRY_LINK(class X {private: virtual void never_called();};,
3653                                X x;,
3654                                ac_cv_cpp_unused_required=no,
3655                                ac_cv_cpp_unused_required=yes)])
3656 if test "$ac_cv_cpp_unused_required" = yes ; then
3657    AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3661 dnl Some compilers have trouble comparing a constant reference to a templatized
3662 dnl class to zero, and require an explicit operator==() to be defined that takes
3663 dnl an int. This test separates the strong from the weak.
3665 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3666                ac_cv_trouble_comparing_to_zero,
3667                [AC_TRY_COMPILE([#include <algorithm>
3668                                 template <class T> class Foo {};
3669                                 class T2;
3670                                 template <class T> int operator==(const T2*, const T&) { return 0; }
3671                                 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3672                                [Foo<int> f; return (0 != f);],
3673                                ac_cv_trouble_comparing_to_zero=no,
3674                                ac_cv_trouble_comparing_to_zero=yes)])
3675 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3676   AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3679 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
3680 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
3681 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
3682 # linking XUL.
3683 _SAVE_LDFLAGS=$LDFLAGS
3684 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
3685 AC_CACHE_CHECK(for __thread keyword for TLS variables,
3686                ac_cv_thread_keyword,
3687                [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
3688                             [return tlsIsMainThread;],
3689                             ac_cv_thread_keyword=yes,
3690                             ac_cv_thread_keyword=no)])
3691 LDFLAGS=$_SAVE_LDFLAGS
3692 # The custom dynamic linker doesn't support TLS variables
3693 MOZ_TLS=
3694 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
3695   # mips builds fail with TLS variables because of a binutils bug.
3696   # See bug 528687
3697   # OpenBSD doesn't have TLS support, and the test succeeds with clang++
3698   case "${target}" in
3699     mips*-*)
3700       :
3701       ;;
3702     *-android*|*-linuxandroid*)
3703       :
3704       ;;
3705     *-openbsd*)
3706       :
3707       ;;
3708     *)
3709       AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
3710       MOZ_TLS=1
3711       ;;
3712   esac
3715 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
3716 if test -n "$MOZ_LINKER"; then
3717   if test "$CPU_ARCH" = arm; then
3718     dnl Determine the target ARM architecture (5 for ARMv5, v5T, v5E, etc.; 6 for ARMv6, v6K, etc.)
3719     ARM_ARCH=`${CC-cc} ${CFLAGS} -dM -E - < /dev/null | sed -n 's/.*__ARM_ARCH_\([[0-9]]*\).*/\1/p'`
3720     dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
3721     if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
3722       LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000"
3723       _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000"
3724     fi
3725   fi
3728 dnl The custom linker doesn't support text relocations, but NDK >= r6b
3729 dnl creates some (http://code.google.com/p/android/issues/detail?id=23203)
3730 dnl We however want to avoid these text relocations, and this can be done
3731 dnl by making gcc not link crtbegin and crtend. In the broken NDKs, crtend
3732 dnl doesn't contain anything at all, beside placeholders for some sections,
3733 dnl and crtbegin only contains a finalizer function that calls
3734 dnl __cxa_finalize. The custom linker actually takes care of calling
3735 dnl __cxa_finalize when the library doesn't call it itself, which makes it
3736 dnl safe not to link crtbegin. Besides, previous versions of the NDK didn't
3737 dnl link crtbegin and crtend at all.
3738 if test -n "$MOZ_LINKER" -a -z "$MOZ_OLD_LINKER" -a "$OS_TARGET" = "Android"; then
3739   AC_CACHE_CHECK([whether the CRT objects have text relocations],
3740     ac_cv_crt_has_text_relocations,
3741     [echo 'int foo() { return 0; }' > conftest.cpp
3742      if AC_TRY_COMMAND(${CXX-g++} -o conftest${DLL_SUFFIX} $CXXFLAGS $DSO_LDOPTS $LDFLAGS conftest.cpp $LIBS 1>&5) &&
3743         test -s conftest${DLL_SUFFIX}; then
3744        if ${TOOLCHAIN_PREFIX}readelf -d conftest${DLL_SUFFIX} | grep TEXTREL > /dev/null; then
3745          ac_cv_crt_has_text_relocations=yes
3746        else
3747          ac_cv_crt_has_text_relocations=no
3748        fi
3749      else
3750        AC_ERROR([couldn't compile a simple C file])
3751      fi
3752      rm -rf conftest*])
3753   if test "$ac_cv_crt_has_text_relocations" = yes; then
3754     dnl While we want libraries to skip the CRT files, we don't want
3755     dnl executables to be treated the same way. We thus set the flag
3756     dnl in DSO_LDOPTS and not LDFLAGS. However, to pass it to nspr,
3757     dnl we need to use LDFLAGS because nspr doesn't inherit DSO_LDOPTS.
3758     dnl Using LDFLAGS in nspr is safe, since we only really build
3759     dnl libraries there.
3760     DSO_LDOPTS="$DSO_LDOPTS -nostartfiles"
3761     NSPR_LDFLAGS=-nostartfiles
3762   fi
3765 dnl Check for the existence of various allocation headers/functions
3767 MALLOC_H=
3768 MOZ_CHECK_HEADER(malloc.h,        [MALLOC_H=malloc.h])
3769 if test "$MALLOC_H" = ""; then
3770   MOZ_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h])
3771   if test "$MALLOC_H" = ""; then
3772     MOZ_CHECK_HEADER(sys/malloc.h,    [MALLOC_H=sys/malloc.h])
3773   fi
3775 if test "$MALLOC_H" != ""; then
3776    AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
3779 MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
3780 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
3782 dnl See if compiler supports some gcc-style attributes
3784 AC_CACHE_CHECK(for __attribute__((always_inline)),
3785                ac_cv_attribute_always_inline,
3786                [AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));],
3787                                [],
3788                                ac_cv_attribute_always_inline=yes,
3789                                ac_cv_attribute_always_inline=no)])
3791 AC_CACHE_CHECK(for __attribute__((malloc)),
3792                ac_cv_attribute_malloc,
3793                [AC_TRY_COMPILE([void* f(int) __attribute__((malloc));],
3794                                [],
3795                                ac_cv_attribute_malloc=yes,
3796                                ac_cv_attribute_malloc=no)])
3798 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
3799                ac_cv_attribute_warn_unused,
3800                [AC_TRY_COMPILE([int f(void) __attribute__((warn_unused_result));],
3801                                [],
3802                                ac_cv_attribute_warn_unused=yes,
3803                                ac_cv_attribute_warn_unused=no)])
3805 dnl End of C++ language/feature checks
3806 AC_LANG_C
3808 dnl ========================================================
3809 dnl =  Internationalization checks
3810 dnl ========================================================
3812 dnl Internationalization and Locale support is different
3813 dnl on various UNIX platforms.  Checks for specific i18n
3814 dnl features go here.
3816 dnl check for LC_MESSAGES
3817 AC_CACHE_CHECK(for LC_MESSAGES,
3818                 ac_cv_i18n_lc_messages,
3819                 [AC_TRY_COMPILE([#include <locale.h>],
3820                                 [int category = LC_MESSAGES;],
3821                                 ac_cv_i18n_lc_messages=yes,
3822                                 ac_cv_i18n_lc_messages=no)])
3823 if test "$ac_cv_i18n_lc_messages" = yes; then
3824    AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3827 AC_HAVE_FUNCS(localeconv)
3828 fi # ! SKIP_COMPILER_CHECKS
3830 TARGET_XPCOM_ABI=
3831 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3832     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3835 dnl Mozilla specific options
3836 dnl ========================================================
3837 dnl The macros used for command line options
3838 dnl are defined in build/autoconf/altoptions.m4.
3840 dnl If the compiler supports these attributes, define them as
3841 dnl convenience macros.
3842 if test "$ac_cv_attribute_always_inline" = yes ; then
3843   AC_DEFINE(NS_ALWAYS_INLINE, [__attribute__((always_inline))])
3844 else
3845   AC_DEFINE(NS_ALWAYS_INLINE,)
3848 if test "$ac_cv_attribute_malloc" = yes ; then
3849   AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
3850 else
3851   AC_DEFINE(NS_ATTR_MALLOC,)
3854 if test "$ac_cv_attribute_warn_unused" = yes ; then
3855   AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
3856 else
3857   AC_DEFINE(NS_WARN_UNUSED_RESULT,)
3860 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
3861 dnl features that Windows actually does support.
3863 if test -n "$SKIP_COMPILER_CHECKS"; then
3864    dnl Windows has malloc.h
3865    AC_DEFINE(MALLOC_H, [<malloc.h>])
3866    AC_DEFINE(HAVE_FORCEINLINE)
3867    AC_DEFINE(HAVE_LOCALECONV)
3868 fi # SKIP_COMPILER_CHECKS
3870 dnl ========================================================
3871 dnl =
3872 dnl = Check for external package dependencies
3873 dnl =
3874 dnl ========================================================
3875 MOZ_ARG_HEADER(External Packages)
3877 MOZ_ARG_WITH_STRING(libxul-sdk,
3878 [  --with-libxul-sdk=PFX   Use the libXUL SDK at <PFX>],
3879   LIBXUL_SDK_DIR=$withval)
3881 if test "$LIBXUL_SDK_DIR" = "yes"; then
3882     AC_MSG_ERROR([--with-libxul-sdk must specify a path])
3883 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
3884     LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
3886     if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
3887         AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
3888     fi
3891 AC_SUBST(LIBXUL_SDK)
3893 if test -n "$LIBXUL_SDK"; then
3894     LIBXUL_DIST="$LIBXUL_SDK"
3895 else
3896     LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
3898 AC_SUBST(LIBXUL_DIST)
3900 SYSTEM_LIBXUL=
3902 MOZ_ARG_WITH_BOOL(system-libxul,
3903 [  --with-system-libxul    Use system installed libxul SDK],
3904     SYSTEM_LIBXUL=1)
3906 dnl ========================================================
3907 dnl = If NSPR was not detected in the system,
3908 dnl = use the one in the source tree (mozilla/nsprpub)
3909 dnl ========================================================
3910 MOZ_ARG_WITH_BOOL(system-nspr,
3911 [  --with-system-nspr      Use system installed NSPR],
3912     _USE_SYSTEM_NSPR=1 )
3914 if test -n "$_USE_SYSTEM_NSPR"; then
3915     AM_PATH_NSPR(4.9.3, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([your don't have NSPR installed or your version is too old])])
3918 if test -n "$MOZ_NATIVE_NSPR"; then
3919     _SAVE_CFLAGS=$CFLAGS
3920     CFLAGS="$CFLAGS $NSPR_CFLAGS"
3921     AC_TRY_COMPILE([#include "prtypes.h"],
3922                 [#ifndef PR_STATIC_ASSERT
3923                  #error PR_STATIC_ASSERT not defined or requires including prtypes.h
3924                  #endif],
3925                 [MOZ_NATIVE_NSPR=1],
3926                 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
3927     AC_TRY_COMPILE([#include "prtypes.h"],
3928                 [#ifndef PR_UINT64
3929                  #error PR_UINT64 not defined or requires including prtypes.h
3930                  #endif],
3931                 [MOZ_NATIVE_NSPR=1],
3932                 AC_MSG_ERROR([system NSPR does not support PR_UINT64 or including prtypes.h does not provide it]))
3933     CFLAGS=$_SAVE_CFLAGS
3934 else
3935     if test -z "$LIBXUL_SDK"; then
3936         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
3937         if test -n "$GNU_CC"; then
3938             NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
3939         else
3940             NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
3941         fi
3942     else
3943         NSPR_CFLAGS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --includedir="${LIBXUL_DIST}/include/nspr" --cflags`
3944         NSPR_LIBS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --libdir="${LIBXUL_DIST}"/lib --libs`
3945     fi
3948 dnl system libevent Support
3949 dnl ========================================================
3950 MOZ_ARG_WITH_STRING(system-libevent,
3951 [  --with-system-libevent[=PFX]
3952                           Use system libevent [installed at prefix PFX]],
3953     LIBEVENT_DIR=$withval)
3955 _SAVE_CFLAGS=$CFLAGS
3956 _SAVE_LDFLAGS=$LDFLAGS
3957 _SAVE_LIBS=$LIBS
3958 if test "$LIBEVENT_DIR" = yes; then
3959     PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
3960         MOZ_NATIVE_LIBEVENT=1,
3961         LIBEVENT_DIR=/usr)
3963 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
3964     MOZ_NATIVE_LIBEVENT=
3965 elif test -z "$MOZ_NATIVE_LIBEVENT"; then
3966     CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
3967     LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
3968     MOZ_CHECK_HEADER(event.h,
3969         [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
3970              AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
3971          fi],
3972         AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
3973     AC_CHECK_LIB(event, event_init,
3974                  [MOZ_NATIVE_LIBEVENT=1
3975                   MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
3976                   MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
3977                  [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
3979 CFLAGS=$_SAVE_CFLAGS
3980 LDFLAGS=$_SAVE_LDFLAGS
3981 LIBS=$_SAVE_LIBS
3983 AC_SUBST(MOZ_NATIVE_LIBEVENT)
3984 AC_SUBST(MOZ_LIBEVENT_CFLAGS)
3985 AC_SUBST(MOZ_LIBEVENT_LIBS)
3987 dnl ========================================================
3988 dnl = If NSS was not detected in the system,
3989 dnl = use the one in the source tree (mozilla/security/nss)
3990 dnl ========================================================
3992 MOZ_ARG_WITH_BOOL(system-nss,
3993 [  --with-system-nss       Use system installed NSS],
3994     _USE_SYSTEM_NSS=1 )
3996 if test -n "$_USE_SYSTEM_NSS"; then
3997     AM_PATH_NSS(3.14, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
4000 if test -n "$MOZ_NATIVE_NSS"; then
4001    NSS_LIBS="$NSS_LIBS -lcrmf"
4002 else
4003    NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4004    NSS_DEP_LIBS="\
4005         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4006         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4007         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4008         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4009         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX)"
4011    if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "OS2"; then
4012        NSS_LIBS="\
4013         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4014         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
4015         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
4016         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
4017         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
4018    else
4019        NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
4020    fi
4023 dnl ======================
4024 dnl Detect yasm
4025 dnl ======================
4027 AC_MSG_CHECKING([for YASM assembler])
4028 AC_CHECK_PROGS(YASM, yasm, "")
4030 if test -n "$YASM"; then
4031   dnl Pull out yasm's version string
4032   YASM_VERSION=`yasm --version | $AWK '/^yasm/ { print $2 }'`
4033   _YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'`
4034   _YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'`
4035   _YASM_RELEASE=`      echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'`
4036   _YASM_BUILD=`        echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
4039 if test -z "$SKIP_LIBRARY_CHECKS"; then
4040 dnl system JPEG support
4041 dnl ========================================================
4042 MOZ_ARG_WITH_STRING(system-jpeg,
4043 [  --with-system-jpeg[=PFX]
4044                           Use system libjpeg [installed at prefix PFX]],
4045     JPEG_DIR=$withval)
4047 _SAVE_CFLAGS=$CFLAGS
4048 _SAVE_LDFLAGS=$LDFLAGS
4049 _SAVE_LIBS=$LIBS
4050 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4051     CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4052     LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4054 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4055     MOZ_NATIVE_JPEG=
4056 else
4057     AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [MOZ_NATIVE_JPEG=1 MOZ_JPEG_LIBS="-ljpeg"], MOZ_NATIVE_JPEG=)
4060 if test "$MOZ_NATIVE_JPEG" = 1; then
4061     AC_TRY_COMPILE([ #include <stdio.h>
4062                      #include <sys/types.h>
4063                      #include <jpeglib.h> ],
4064                    [ #if JPEG_LIB_VERSION < $MOZJPEG
4065                      #error "Insufficient JPEG library version ($MOZJPEG required)."
4066                      #endif
4067                      #ifndef JCS_EXTENSIONS
4068                      #error "libjpeg-turbo JCS_EXTENSIONS required"
4069                      #endif
4070                      ],
4071                    MOZ_NATIVE_JPEG=1,
4072                    AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg]))
4074 CFLAGS=$_SAVE_CFLAGS
4075 LDFLAGS=$_SAVE_LDFLAGS
4076 LIBS=$_SAVE_LIBS
4078 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$MOZ_NATIVE_JPEG" = 1; then
4079     MOZ_JPEG_CFLAGS="-I${JPEG_DIR}/include"
4080     MOZ_JPEG_LIBS="-L${JPEG_DIR}/lib ${MOZ_JPEG_LIBS}"
4082 fi # SKIP_LIBRARY_CHECKS
4084 dnl system ZLIB support
4085 dnl ========================================================
4086 MOZ_ZLIB_CHECK([1.2.3])
4088 if test "$MOZ_NATIVE_ZLIB" != 1; then
4089     MOZ_ZLIB_CFLAGS=
4090     MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,'"$MOZ_BUILD_ROOT"'/modules/zlib/src)'
4093 if test "$MOZ_LINKER" = 1 -a "$MOZ_NATIVE_ZLIB" != 1; then
4094     AC_MSG_ERROR([Custom dynamic linker requires --with-system-zlib])
4097 if test -z "$SKIP_LIBRARY_CHECKS"; then
4098 dnl system BZIP2 Support
4099 dnl ========================================================
4100 MOZ_ARG_WITH_STRING(system-bz2,
4101 [  --with-system-bz2[=PFX]
4102                           Use system libbz2 [installed at prefix PFX]],
4103     BZ2_DIR=$withval)
4105 _SAVE_CFLAGS=$CFLAGS
4106 _SAVE_LDFLAGS=$LDFLAGS
4107 _SAVE_LIBS=$LIBS
4108 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4109     CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4110     LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4112 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4113     MOZ_NATIVE_BZ2=
4114 else
4115     AC_CHECK_LIB(bz2, BZ2_bzread, [MOZ_NATIVE_BZ2=1 MOZ_BZ2_LIBS="-lbz2"],
4116         [MOZ_NATIVE_BZ2= MOZ_BZ2_CFLAGS= MOZ_BZ2_LIBS=])
4118 CFLAGS=$_SAVE_CFLAGS
4119 LDFLAGS=$_SAVE_LDFLAGS
4120 LIBS=$_SAVE_LIBS
4122 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$MOZ_NATIVE_BZ2" = 1; then
4123     MOZ_BZ2_CFLAGS="-I${BZ2_DIR}/include"
4124     MOZ_BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4127 dnl system PNG Support
4128 dnl ========================================================
4129 MOZ_ARG_WITH_STRING(system-png,
4130 [  --with-system-png[=PFX]
4131                           Use system libpng [installed at prefix PFX]],
4132     PNG_DIR=$withval)
4134 _SAVE_CFLAGS=$CFLAGS
4135 _SAVE_LDFLAGS=$LDFLAGS
4136 _SAVE_LIBS=$LIBS
4137 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4138     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4139     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4141 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4142     MOZ_NATIVE_PNG=
4143 else
4144     AC_CHECK_LIB(png, png_get_valid, [MOZ_NATIVE_PNG=1 MOZ_PNG_LIBS="-lpng"],
4145                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4146     AC_CHECK_LIB(png, png_get_acTL, ,
4147                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
4149 if test "$MOZ_NATIVE_PNG" = 1; then
4150     AC_TRY_COMPILE([ #include <stdio.h>
4151                      #include <sys/types.h>
4152                      #include <png.h> ],
4153                    [ #if PNG_LIBPNG_VER < $MOZPNG
4154                      #error "Insufficient libpng version ($MOZPNG required)."
4155                      #endif
4156                      #ifndef PNG_UINT_31_MAX
4157                      #error "Insufficient libpng version."
4158                      #endif ],
4159                    MOZ_NATIVE_PNG=1,
4160                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4162 CFLAGS=$_SAVE_CFLAGS
4163 LDFLAGS=$_SAVE_LDFLAGS
4164 LIBS=$_SAVE_LIBS
4166 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_NATIVE_PNG" = 1; then
4167     MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
4168     MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
4171 fi # SKIP_LIBRARY_CHECKS
4173 dnl system HunSpell Support
4174 dnl ========================================================
4175 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4176 [  --enable-system-hunspell
4177                           Use system hunspell (located with pkgconfig)],
4178     MOZ_NATIVE_HUNSPELL=1 )
4180 if test -n "$MOZ_NATIVE_HUNSPELL"; then
4181     PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4184 AC_SUBST(MOZ_NATIVE_HUNSPELL)
4186 dnl ========================================================
4187 dnl system libffi Support
4188 dnl ========================================================
4189 MOZ_ARG_ENABLE_BOOL(system-ffi,
4190 [  --enable-system-ffi       Use system libffi (located with pkgconfig)],
4191     MOZ_NATIVE_FFI=1 )
4193 if test -n "$MOZ_NATIVE_FFI"; then
4194     # Vanilla libffi 3.0.9 needs a few patches from upcoming version 3.0.10
4195     # for non-GCC compilers.
4196     if test -z "$GNU_CC"; then
4197         PKG_CHECK_MODULES(MOZ_FFI, libffi > 3.0.9)
4198     else
4199         PKG_CHECK_MODULES(MOZ_FFI, libffi >= 3.0.9)
4200     fi
4201     MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_FFI_LIBS"
4204 dnl ========================================================
4205 dnl Java SDK support
4206 dnl ========================================================
4208 JAVA_BIN_PATH=
4209 MOZ_ARG_WITH_STRING(java-bin-path,
4210 [  --with-java-bin-path=dir
4211                           Location of Java binaries (java, javac, jar)],
4212     JAVA_BIN_PATH=$withval)
4214 dnl ========================================================
4215 dnl =
4216 dnl = Application
4217 dnl =
4218 dnl ========================================================
4220 MOZ_ARG_HEADER(Application)
4222 ENABLE_TESTS=1
4223 ENABLE_SYSTEM_EXTENSION_DIRS=1
4224 MOZ_BRANDING_DIRECTORY=
4225 MOZ_OFFICIAL_BRANDING=
4226 MOZ_FEEDS=1
4227 MOZ_FLEXBOX=1
4228 MOZ_WEBAPP_RUNTIME=
4229 MOZ_JSDEBUGGER=1
4230 MOZ_AUTH_EXTENSION=1
4231 MOZ_OGG=1
4232 MOZ_RAW=
4233 MOZ_SYDNEYAUDIO=
4234 MOZ_SPEEX_RESAMPLER=1
4235 MOZ_CUBEB=
4236 MOZ_VORBIS=
4237 MOZ_TREMOR=
4238 MOZ_WAVE=1
4239 MOZ_SAMPLE_TYPE_FLOAT32=
4240 MOZ_SAMPLE_TYPE_S16=
4241 MOZ_MEDIA=
4242 MOZ_OPUS=1
4243 MOZ_WEBM=1
4244 MOZ_DASH=
4245 MOZ_WEBRTC=1
4246 MOZ_PEERCONNECTION=
4247 MOZ_SRTP=
4248 MOZ_WEBRTC_SIGNALING=
4249 MOZ_WEBRTC_IN_LIBXUL=
4250 MOZ_SCTP=
4251 MOZ_MEDIA_PLUGINS=
4252 MOZ_MEDIA_NAVIGATOR=
4253 MOZ_OMX_PLUGIN=
4254 MOZ_VP8=
4255 MOZ_VP8_ERROR_CONCEALMENT=
4256 MOZ_VP8_ENCODER=
4257 VPX_AS=
4258 VPX_ASFLAGS=
4259 VPX_AS_DASH_C_FLAG=
4260 VPX_AS_CONVERSION=
4261 VPX_ASM_SUFFIX=
4262 VPX_X86_ASM=
4263 VPX_ARM_ASM=
4264 LIBJPEG_TURBO_AS=
4265 LIBJPEG_TURBO_ASFLAGS=
4266 LIBJPEG_TURBO_X86_ASM=
4267 LIBJPEG_TURBO_X64_ASM=
4268 LIBJPEG_TURBO_ARM_ASM=
4269 MOZ_PANGO=1
4270 MOZ_PERMISSIONS=1
4271 MOZ_PLACES=1
4272 MOZ_PREF_EXTENSIONS=1
4273 MOZ_PROFILELOCKING=1
4274 MOZ_PSM=1
4275 MOZ_REFLOW_PERF=
4276 MOZ_SAFE_BROWSING=
4277 MOZ_HELP_VIEWER=
4278 MOZ_SPELLCHECK=1
4279 MOZ_ANDROID_OMTC=
4280 MOZ_ONLY_TOUCH_EVENTS=
4281 MOZ_TOOLKIT_SEARCH=1
4282 MOZ_UI_LOCALE=en-US
4283 MOZ_UNIVERSALCHARDET=1
4284 MOZ_URL_CLASSIFIER=
4285 MOZ_XTF=1
4286 MOZ_XUL=1
4287 MOZ_ZIPWRITER=1
4288 NS_PRINTING=1
4289 MOZ_PDF_PRINTING=
4290 MOZ_DISABLE_DOMCRYPTO=
4291 NSS_DISABLE_DBM=
4292 NECKO_WIFI=1
4293 NECKO_COOKIES=1
4294 NECKO_PROTOCOLS_DEFAULT="about data file ftp http res viewsource websocket wyciwyg device"
4295 USE_ARM_KUSER=
4296 BUILD_CTYPES=1
4297 MOZ_USE_NATIVE_POPUP_WINDOWS=
4298 MOZ_ANDROID_HISTORY=
4299 MOZ_WEBSMS_BACKEND=
4300 MOZ_GRAPHITE=1
4301 ACCESSIBILITY=1
4302 MOZ_SYS_MSG=
4303 MOZ_PAY=
4305 case "$target_os" in
4306     mingw*)
4307         NS_ENABLE_TSF=1
4308         AC_DEFINE(NS_ENABLE_TSF)
4309         ;;
4310 esac
4312 case "${target}" in
4313     *-android*|*-linuxandroid*)
4314         if test "$CPU_ARCH" = "arm" ; then
4315           USE_ARM_KUSER=1
4316         fi
4318         NSS_DISABLE_DBM=1
4319         NECKO_WIFI=
4320         MOZ_THEME_FASTSTRIPE=1
4321         MOZ_TREE_FREETYPE=1
4322         MOZ_MEMORY=1
4323         MOZ_RAW=1
4324         ;;
4326 esac
4328 MOZ_ARG_ENABLE_STRING(application,
4329 [  --enable-application=APP
4330                           Options include:
4331                             browser (Firefox)
4332                             xulrunner
4333                             tools/update-packaging (AUS-related packaging tools)],
4334 [ MOZ_BUILD_APP=$enableval ] )
4336 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4337 [  --with-xulrunner-stub-name=appname   Create the xulrunner stub with the given name],
4338   XULRUNNER_STUB_NAME=$withval)
4340 if test -z "$XULRUNNER_STUB_NAME"; then
4341   case "$target_os" in
4342   darwin*)
4343     XULRUNNER_STUB_NAME=xulrunner
4344     ;;
4345   *)
4346     XULRUNNER_STUB_NAME=xulrunner-stub
4347   esac
4349 AC_SUBST(XULRUNNER_STUB_NAME)
4351 AC_MSG_CHECKING([for application to build])
4352 if test -z "$MOZ_BUILD_APP"; then
4353   AC_MSG_RESULT([browser])
4354   MOZ_BUILD_APP=browser
4355 else
4356   # default mobile to be mobile/xul
4357   if test "$MOZ_BUILD_APP" = "mobile" ; then
4358     MOZ_BUILD_APP=mobile/xul
4359   fi
4360   # We have a valid application only if it has a build.mk file in its top
4361   # directory.
4362   if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4363     AC_MSG_RESULT([none])
4364     AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4365   else
4366     AC_MSG_RESULT([$MOZ_BUILD_APP])
4367   fi
4370 # Allow the application to influence configure with a confvars.sh script.
4372 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4373 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4374   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4375   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4376 else
4377   AC_MSG_RESULT([no])
4380 # Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig
4381 MOZ_ARG_WITH_STRING(app-name,
4382 [--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME],
4383 WITH_APP_NAME=$withval,
4386 if test -n "$WITH_APP_NAME" ; then
4387     MOZ_APP_NAME="$WITH_APP_NAME"
4390 MOZ_ARG_WITH_STRING(app-basename,
4391 [--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME],
4392 WITH_APP_BASENAME=$withval,
4395 if test -n "$WITH_APP_BASENAME" ; then
4396     MOZ_APP_BASENAME="$WITH_APP_BASENAME"
4399 # Now is a good time to test for logic errors, define mismatches, etc.
4400 case "$MOZ_BUILD_APP" in
4401 xulrunner)
4402   if test "$LIBXUL_SDK"; then
4403     AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4404   fi
4405   ;;
4406 esac
4408 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4409 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4410 # MOZ_BUILD_APP.
4411 case "$MOZ_BUILD_APP" in
4412 browser)
4413   AC_DEFINE(MOZ_PHOENIX)
4414   ;;
4416 xulrunner)
4417   AC_DEFINE(MOZ_XULRUNNER)
4418   ;;
4419 esac
4421 AC_SUBST(MOZ_BUILD_APP)
4422 AC_SUBST(MOZ_PHOENIX)
4423 AC_SUBST(MOZ_XULRUNNER)
4425 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4427 dnl ========================================================
4428 dnl Check android sdk version depending on mobile target
4429 dnl ========================================================
4431 if test -z "$gonkdir" ; then
4432     # Minimum Android SDK API Level we require.
4433     case "$MOZ_BUILD_APP" in
4434     mobile/xul)
4435         android_min_api_level=13
4436         ;;
4437     mobile/android)
4438         android_min_api_level=16
4439         ;;
4440     esac
4442     MOZ_ANDROID_SDK($android_min_api_level)
4445 dnl ========================================================
4446 dnl =
4447 dnl = Toolkit Options
4448 dnl =
4449 dnl ========================================================
4450 MOZ_ARG_HEADER(Toolkit Options)
4452     dnl ========================================================
4453     dnl = Select the default toolkit
4454     dnl ========================================================
4455         MOZ_ARG_ENABLE_STRING(default-toolkit,
4456         [  --enable-default-toolkit=TK
4457                           Select default toolkit
4458                           Platform specific defaults:
4459                             Mac OS X - cairo-cocoa
4460                             OS/2 - cairo-os2
4461                             Win32 - cairo-windows
4462                             * - cairo-gtk2
4463                             * - cairo-qt],
4464     [ _DEFAULT_TOOLKIT=$enableval ],
4465     [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4467     if test "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4468         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4469         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4470         -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4471         -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4472         -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
4473         -o "$_DEFAULT_TOOLKIT" = "cairo-uikit" \
4474         -o "$_DEFAULT_TOOLKIT" = "cairo-android" \
4475         -o "$_DEFAULT_TOOLKIT" = "cairo-gonk"
4476     then
4477         dnl nglayout only supports building with one toolkit,
4478         dnl so ignore everything after the first comma (",").
4479         MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4480     else
4481         AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4482     fi
4484 MOZ_ARG_WITHOUT_BOOL(x,
4485 [  --without-x              Build without X11],
4486     WITHOUT_X11=1)
4488 dnl ========================================================
4489 dnl = Enable the toolkit as needed                         =
4490 dnl ========================================================
4492 MOZ_WIDGET_GTK=
4494 case "$MOZ_WIDGET_TOOLKIT" in
4496 cairo-windows)
4497     MOZ_WIDGET_TOOLKIT=windows
4498     MOZ_WEBGL=1
4499     MOZ_PDF_PRINTING=1
4500     MOZ_INSTRUMENT_EVENT_LOOP=1
4501     ;;
4503 cairo-gtk2|cairo-gtk2-x11)
4504     MOZ_WIDGET_TOOLKIT=gtk2
4505     MOZ_ENABLE_GTK2=1
4506     MOZ_ENABLE_XREMOTE=1
4507     MOZ_WEBGL=1
4508     MOZ_GL_DEFAULT_PROVIDER=GLX
4510     AC_DEFINE(MOZ_X11)
4511     MOZ_X11=1
4512     USE_FC_FREETYPE=1
4514     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4515     TK_LIBS='$(MOZ_GTK2_LIBS)'
4516     AC_DEFINE(MOZ_WIDGET_GTK2)
4517     MOZ_WIDGET_GTK=2
4518     AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK)
4519     MOZ_PDF_PRINTING=1
4520     MOZ_INSTRUMENT_EVENT_LOOP=1
4521     ;;
4523 cairo-qt)
4524     MOZ_WIDGET_TOOLKIT=qt
4525     MOZ_ENABLE_QT=1
4526     if test -z "$WITHOUT_X11"; then
4527       MOZ_ENABLE_XREMOTE=1
4528       MOZ_GL_DEFAULT_PROVIDER=GLX
4529       MOZ_X11=1
4530       AC_DEFINE(MOZ_X11)
4531       XT_LIBS=
4532     fi
4534     MOZ_WEBGL=1
4535     USE_ELF_DYNSTR_GC=
4536     USE_FC_FREETYPE=1
4537     TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4538     TK_LIBS='$(MOZ_QT_LIBS)'
4539     AC_DEFINE(MOZ_WIDGET_QT)
4540     MOZ_PDF_PRINTING=1
4541     ;;
4543 cairo-os2)
4544     MOZ_WIDGET_TOOLKIT=os2
4545     USE_FC_FREETYPE=1
4546     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4547     TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4548     MOZ_PDF_PRINTING=1
4549     ;;
4551 cairo-cocoa)
4552     MOZ_WIDGET_TOOLKIT=cocoa
4553     AC_DEFINE(MOZ_WIDGET_COCOA)
4554     LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
4555     TK_LIBS='-framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
4556     TK_CFLAGS="-DNO_X11"
4557     CFLAGS="$CFLAGS $TK_CFLAGS"
4558     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4559     LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL'
4560     MOZ_USER_DIR="Mozilla"
4561     MOZ_FS_LAYOUT=bundle
4562     MOZ_WEBGL=1
4563     MOZ_INSTRUMENT_EVENT_LOOP=1
4564     ;;
4566 cairo-uikit)
4567     MOZ_WIDGET_TOOLKIT=uikit
4568     AC_DEFINE(MOZ_WIDGET_UIKIT)
4569     LDFLAGS="$LDFLAGS -framework UIKit -lobjc"
4570     TK_CFLAGS="-DNO_X11"
4571     TK_LIBS='-framework Foundation -framework CoreFoundation -framework CoreGraphics -framework CoreText'
4572     CFLAGS="$CFLAGS $TK_CFLAGS"
4573     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4574     LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL'
4575     MOZ_USER_DIR="Mozilla"
4576     MOZ_FS_LAYOUT=bundle
4577     ;;
4579 cairo-android)
4580     AC_DEFINE(MOZ_WIDGET_ANDROID)
4581     MOZ_WIDGET_TOOLKIT=android
4582     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4583     TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4584     MOZ_WEBGL=1
4585     MOZ_PDF_PRINTING=1
4586     MOZ_INSTRUMENT_EVENT_LOOP=1
4587     if test "$MOZ_BUILD_APP" = "mobile/xul"; then
4588         MOZ_OLD_LINKER=1
4589     fi
4590     ;;
4592 cairo-gonk)
4593     AC_DEFINE(MOZ_WIDGET_GONK)
4594     AC_DEFINE(MOZ_TOUCH)
4595     MOZ_WIDGET_TOOLKIT=gonk
4596     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4597     TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4598     MOZ_WEBGL=1
4599     MOZ_PDF_PRINTING=1
4600     MOZ_TOUCH=1
4601     ;;
4603 esac
4605 AC_SUBST(MOZ_OLD_LINKER)
4606 AC_SUBST(MOZ_PDF_PRINTING)
4607 if test "$MOZ_PDF_PRINTING"; then
4608    PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
4609    AC_DEFINE(MOZ_PDF_PRINTING)
4612 if test "$MOZ_ENABLE_XREMOTE"; then
4613     AC_DEFINE(MOZ_ENABLE_XREMOTE)
4616 if test "$MOZ_INSTRUMENT_EVENT_LOOP"; then
4617    AC_DEFINE(MOZ_INSTRUMENT_EVENT_LOOP)
4620 if test "$COMPILE_ENVIRONMENT"; then
4621   if test "$MOZ_ENABLE_GTK2"; then
4622     if test "$MOZ_X11"; then
4623       GDK_PACKAGES=gdk-x11-2.0
4624     fi
4626     PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4627   fi
4629 fi # COMPILE_ENVIRONMENT
4631 AC_SUBST(MOZ_FS_LAYOUT)
4633 dnl ========================================================
4634 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4635 dnl their usage and use them in spidermonkey.
4636 dnl ========================================================
4637 MOZ_ARG_WITH_BOOL(arm-kuser,
4638 [  --with-arm-kuser         Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4639     USE_ARM_KUSER=1,)
4640 if test -n "$USE_ARM_KUSER"; then
4641    AC_DEFINE(USE_ARM_KUSER)
4644 dnl ========================================================
4645 dnl = startup-notification support module
4646 dnl ========================================================
4648 if test "$MOZ_ENABLE_GTK2"
4649 then
4650     MOZ_ENABLE_STARTUP_NOTIFICATION=
4652     MOZ_ARG_ENABLE_BOOL(startup-notification,
4653     [  --enable-startup-notification
4654                           Enable startup-notification support (default: disabled) ],
4655         MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4656         MOZ_ENABLE_STARTUP_NOTIFICATION=)
4657     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4658     then
4659         PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4660                           libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4661         [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4662             if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4663             then
4664                 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4665             fi
4666             MOZ_ENABLE_STARTUP_NOTIFICATION=
4667         ])
4668     fi
4670     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4671         AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4672     fi
4674     TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4676 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4677 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4678 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4680 dnl ========================================================
4681 dnl = QT support
4682 dnl ========================================================
4683 if test "$MOZ_ENABLE_QT"
4684 then
4685     MOZ_ARG_WITH_STRING(qtdir,
4686     [  --with-qtdir=\$dir       Specify Qt directory ],
4687     [ QTDIR=$withval])
4689     if test -z "$QTDIR"; then
4690         PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtCore QtOpenGL)
4691         PKG_CHECK_MODULES(MOZ_QT5, QtWidgets QtMultimedia QtPrintSupport,
4692                       MOZ_ENABLE_QT5=1,
4693                       MOZ_ENABLE_QT5=)
4694         if test "$MOZ_ENABLE_QT5"; then
4695             echo "Using qt5"
4696             MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $MOZ_QT5_CFLAGS"
4697             MOZ_QT_LIBS="$MOZ_QT_LIBS $MOZ_QT5_LIBS"
4698         fi
4700         AC_CHECK_PROGS(HOST_MOC, $MOC moc, "")
4701         AC_CHECK_PROGS(HOST_RCC, $RCC rcc, "")
4702     else
4703         MOZ_QT_LIBS="-L$QTDIR/lib/ -lQtGui -lQtNetwork -lQtCore -lQtXml -lQtOpenGL"
4705         MOZ_QT_CFLAGS="-DQT_SHARED"
4706         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
4707         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/Qt"
4708         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
4709         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
4710         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
4711         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
4712         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDeclarative"
4713         HOST_MOC="$QTDIR/bin/moc"
4714         HOST_RCC="$QTDIR/bin/rcc"
4716         # QtWidgets was introduced only in Qt5
4717         if test -d $QTDIR/include/QtWidgets; then
4718             MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtWidgets"
4719             MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtPrintSupport"
4720             MOZ_QT_LIBS="$MOZ_QT_LIBS -lQtWidgets -lQtPrintSupport"
4721         fi
4722     fi
4723     if test -z "$HOST_MOC"; then
4724         AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is
4725 incorrect])
4726     fi
4727     if test -z "$HOST_RCC"; then
4728         AC_MSG_ERROR([No acceptable rcc preprocessor found. Qt SDK is not installed or --with-qt is
4729 incorrect])
4730     fi
4732     MOC=$HOST_MOC
4733     RCC=$HOST_RCC
4735     MOZ_ENABLE_QMSYSTEM2=
4736     PKG_CHECK_MODULES(_QMSYSTEM2, qmsystem2,
4737                       MOZ_ENABLE_QMSYSTEM2=1,
4738                       MOZ_ENABLE_QMSYSTEM2=)
4740     if test "$MOZ_ENABLE_QMSYSTEM2"; then
4741       MOZ_ENABLE_QMSYSTEM2=1
4742       MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QMSYSTEM2_CFLAGS"
4743       MOZ_QT_LIBS="$MOZ_QT_LIBS $_QMSYSTEM2_LIBS"
4744       AC_DEFINE(MOZ_ENABLE_QMSYSTEM2)
4745     fi
4747     MOZ_ENABLE_QTNETWORK=
4748     PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7,
4749                       MOZ_ENABLE_QTNETWORK=1,
4750                       MOZ_ENABLE_QTNETWORK=)
4752     if test "$MOZ_ENABLE_QTNETWORK"; then
4753       MOZ_ENABLE_QTNETWORK=1
4754       AC_DEFINE(MOZ_ENABLE_QTNETWORK)
4755     fi
4757     MOZ_ENABLE_QTMOBILITY=
4758     PKG_CHECK_MODULES(_QTMOBILITY, QtSensors QtFeedback QtLocation,
4759                       MOZ_ENABLE_QTMOBILITY=1,
4760                       MOZ_ENABLE_QTMOBILITY=)
4761     if test "$MOZ_ENABLE_QTMOBILITY"; then
4762        MOZ_ENABLE_QTMOBILITY=1
4763        MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QTMOBILITY_CFLAGS"
4764        MOZ_QT_LIBS="$MOZ_QT_LIBS $_QTMOBILITY_LIBS"
4765     else
4766        AC_CHECK_LIB(QtSensors, main, [
4767           MOZ_ENABLE_QTMOBILITY=1
4768           MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtMobility"
4769           MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtSensors"
4770           MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtFeedback"
4771           MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtLocation"
4772           MOZ_QT_LIBS="$MOZ_QT_LIBS -lQtSensors -lQtFeedback -lQtLocation"
4773        ])
4774     fi
4775     if test "$MOZ_ENABLE_QTMOBILITY"; then
4776        AC_DEFINE(MOZ_ENABLE_QTMOBILITY)
4777     fi
4780 AC_SUBST(GTK_CONFIG)
4781 AC_SUBST(TK_CFLAGS)
4782 AC_SUBST(TK_LIBS)
4784 AC_SUBST(MOZ_ENABLE_GTK2)
4785 AC_SUBST(MOZ_ENABLE_QT)
4786 AC_SUBST(MOZ_ENABLE_QTNETWORK)
4787 AC_SUBST(MOZ_ENABLE_QMSYSTEM2)
4788 AC_SUBST(MOZ_ENABLE_QTMOBILITY)
4789 AC_SUBST(MOZ_ENABLE_XREMOTE)
4790 AC_SUBST(MOZ_GTK2_CFLAGS)
4791 AC_SUBST(MOZ_GTK2_LIBS)
4792 AC_SUBST(MOZ_WIDGET_GTK)
4793 AC_SUBST(MOZ_QT_CFLAGS)
4794 AC_SUBST(MOZ_QT_LIBS)
4796 AC_SUBST(MOC)
4797 AC_SUBST(RCC)
4799 AC_SUBST(MOZ_X11)
4801 dnl ========================================================
4802 dnl =
4803 dnl = Components & Features
4804 dnl =
4805 dnl ========================================================
4806 MOZ_ARG_HEADER(Components and Features)
4808 dnl ========================================================
4809 dnl = Localization
4810 dnl ========================================================
4811 MOZ_ARG_ENABLE_STRING(ui-locale,
4812 [  --enable-ui-locale=ab-CD
4813                           Select the user interface locale (default: en-US)],
4814     MOZ_UI_LOCALE=$enableval )
4815 AC_SUBST(MOZ_UI_LOCALE)
4817 dnl ========================================================
4818 dnl = Trademarked Branding
4819 dnl ========================================================
4820 MOZ_ARG_ENABLE_BOOL(official-branding,
4821 [  --enable-official-branding
4822                           Enable Official mozilla.org Branding
4823                           Do not distribute builds with
4824                           --enable-official-branding unless you have
4825                           permission to use trademarks per
4826                           http://www.mozilla.org/foundation/trademarks/ .],
4828   if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
4829     AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
4830   else
4831     MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
4832     MOZ_OFFICIAL_BRANDING=1
4833   fi
4834 ], MOZ_OFFICIAL_BRANDING=)
4836 AC_SUBST(MOZ_OFFICIAL_BRANDING)
4837 if test -n "$MOZ_OFFICIAL_BRANDING"; then
4838   AC_DEFINE(MOZ_OFFICIAL_BRANDING)
4841 MOZ_ARG_WITH_STRING(branding,
4842 [  --with-branding=dir     Use branding from the specified directory.],
4843     MOZ_BRANDING_DIRECTORY=$withval)
4845 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4846 if test -z "$REAL_BRANDING_DIRECTORY"; then
4847   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4850 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4851   . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
4854 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4856 dnl ========================================================
4857 dnl = Distribution ID
4858 dnl ========================================================
4859 MOZ_ARG_WITH_STRING(distribution-id,
4860 [  --with-distribution-id=ID
4861                           Set distribution-specific id (default=org.mozilla)],
4862 [ val=`echo $withval`
4863     MOZ_DISTRIBUTION_ID="$val"])
4865 if test -z "$MOZ_DISTRIBUTION_ID"; then
4866    MOZ_DISTRIBUTION_ID="org.mozilla"
4869 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4870 AC_SUBST(MOZ_DISTRIBUTION_ID)
4873 dnl ========================================================
4874 dnl complex text support off by default
4875 dnl ========================================================
4876 MOZ_ARG_DISABLE_BOOL(pango,
4877 [  --disable-pango         Disable usage of Pango ],
4878     MOZ_PANGO=,
4879     MOZ_PANGO=1)
4881 dnl ========================================================
4882 dnl = Pango
4883 dnl ========================================================
4884 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
4885 then
4886     AC_SUBST(MOZ_PANGO)
4888     if test "$MOZ_PANGO"
4889     then
4890         PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4892         PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION)
4893         AC_SUBST(MOZ_PANGO_CFLAGS)
4894         AC_SUBST(MOZ_PANGO_LIBS)
4895         AC_DEFINE(MOZ_PANGO)
4896     else
4897         PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0)
4898         AC_SUBST(FT2_CFLAGS)
4899         AC_SUBST(FT2_LIBS)
4900     fi
4903 dnl ========================================================
4904 dnl = GnomeVFS, GIO and GConf support module
4905 dnl ========================================================
4907 if test "$MOZ_X11"
4908 then
4909     dnl build the GIO extension by default only when the
4910     dnl GTK2 toolkit is in use.
4911     if test "$MOZ_ENABLE_GTK2"
4912     then
4913         MOZ_ENABLE_GIO=1
4914         MOZ_ENABLE_GCONF=1
4915     fi
4917     dnl ========================================================
4918     dnl = GnomeVFS support module
4919     dnl ========================================================
4920     MOZ_ARG_ENABLE_BOOL(gnomevfs,
4921     [  --enable-gnomevfs       Enable GnomeVFS support (default: disabled)],
4922         MOZ_ENABLE_GNOMEVFS=force,
4923         MOZ_ENABLE_GNOMEVFS=)
4925     if test "$MOZ_ENABLE_GNOMEVFS"
4926     then
4927         PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
4928             MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
4929             MOZ_ENABLE_GNOMEVFS=1
4930             AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
4931         ],[
4932             if test "$MOZ_ENABLE_GNOMEVFS" = "force"
4933             then
4934                 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
4935             fi
4936             MOZ_ENABLE_GNOMEVFS=
4937         ])
4938     fi
4940     AC_SUBST(MOZ_ENABLE_GNOMEVFS)
4941     AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
4942     AC_SUBST(MOZ_GNOMEVFS_LIBS)
4944     dnl ========================================================
4945     dnl = GIO support module
4946     dnl ========================================================
4947     MOZ_ARG_DISABLE_BOOL(gio,
4948     [  --disable-gio           Disable GIO support],
4949         MOZ_ENABLE_GIO=,
4950         MOZ_ENABLE_GIO=force)
4952     if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK2"
4953     then
4954         PKG_CHECK_MODULES(_GTKCHECK, gtk+-2.0 >= 2.14, ,
4955                           [AC_MSG_ERROR([* * * Could not find gtk+-2.0 > 2.14. Required for build with gio.])])
4956         PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
4957             MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
4958             MOZ_ENABLE_GIO=1
4959             AC_DEFINE(MOZ_ENABLE_GIO)
4960         ],[
4961             if test "$MOZ_ENABLE_GIO" = "force"
4962             then
4963                 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
4964             fi
4965             MOZ_ENABLE_GIO=
4966         ])
4967     fi
4969     AC_SUBST(MOZ_ENABLE_GIO)
4970     AC_SUBST(MOZ_GIO_CFLAGS)
4971     AC_SUBST(MOZ_GIO_LIBS)
4973     dnl ========================================================
4974     dnl = GConf support module
4975     dnl ========================================================
4976     MOZ_ARG_DISABLE_BOOL(gconf,
4977     [  --disable-gconf      Disable Gconf support ],
4978         MOZ_ENABLE_GCONF=,
4979         MOZ_ENABLE_GCONF=force)
4981     if test "$MOZ_ENABLE_GCONF"
4982     then
4983         PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
4984             MOZ_GCONF_LIBS=`$PKG_CONFIG --libs gobject-2.0`
4985             MOZ_ENABLE_GCONF=1
4986         ],[
4987             if test "$MOZ_ENABLE_GCONF" = "force"
4988             then
4989                 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
4990             fi
4991             MOZ_ENABLE_GCONF=
4992         ])
4993     fi
4995     if test "$MOZ_ENABLE_GCONF"; then
4996         AC_DEFINE(MOZ_ENABLE_GCONF)
4997     fi
4999     AC_SUBST(MOZ_ENABLE_GCONF)
5000     AC_SUBST(MOZ_GCONF_CFLAGS)
5001     AC_SUBST(MOZ_GCONF_LIBS)
5004 dnl ========================================================
5005 dnl = libproxy support
5006 dnl ========================================================
5008 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5009 then
5010     MOZ_ENABLE_LIBPROXY=
5012     MOZ_ARG_ENABLE_BOOL(libproxy,
5013     [  --enable-libproxy         Enable libproxy support ],
5014     MOZ_ENABLE_LIBPROXY=1,
5015     MOZ_ENABLE_LIBPROXY=)
5017     if test "$MOZ_ENABLE_LIBPROXY"
5018     then
5019         PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
5020         AC_DEFINE(MOZ_ENABLE_LIBPROXY)
5021     fi
5023 AC_SUBST(MOZ_ENABLE_LIBPROXY)
5024 AC_SUBST(MOZ_LIBPROXY_CFLAGS)
5025 AC_SUBST(MOZ_LIBPROXY_LIBS)
5027 dnl ========================================================
5028 dnl = GNOME component (mozgnome)
5029 dnl ========================================================
5031 if test "$MOZ_ENABLE_GTK2"
5032 then
5033     MOZ_ENABLE_GNOME_COMPONENT=1
5035 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5037 dnl ========================================================
5038 dnl = libgnomeui support module
5039 dnl ========================================================
5041 if test "$MOZ_ENABLE_GTK2"
5042 then
5043     MOZ_ARG_ENABLE_BOOL(gnomeui,
5044     [  --enable-gnomeui        Enable libgnomeui instead of GIO & GTK for icon theme support ],
5045         MOZ_ENABLE_GNOMEUI=force,
5046         MOZ_ENABLE_GNOMEUI=)
5048     if test "$MOZ_ENABLE_GNOMEUI"
5049     then
5050         PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5051         [
5052             MOZ_ENABLE_GNOMEUI=1
5053         ],[
5054             if test "$MOZ_ENABLE_GNOMEUI" = "force"
5055             then
5056                 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5057             fi
5058             MOZ_ENABLE_GNOMEUI=
5059         ])
5060     fi
5062     if test "$MOZ_ENABLE_GNOMEUI"; then
5063         AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5064     fi
5067 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5068 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5070 dnl ========================================================
5071 dnl = dbus support
5072 dnl ========================================================
5074 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5075 then
5076     MOZ_ENABLE_DBUS=1
5078     MOZ_ARG_DISABLE_BOOL(dbus,
5079     [  --disable-dbus          Disable dbus support ],
5080         MOZ_ENABLE_DBUS=,
5081         MOZ_ENABLE_DBUS=1)
5083     if test "$MOZ_ENABLE_DBUS"
5084     then
5085         PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
5086         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5087         AC_DEFINE(MOZ_ENABLE_DBUS)
5088     fi
5090 AC_SUBST(MOZ_ENABLE_DBUS)
5091 AC_SUBST(MOZ_DBUS_CFLAGS)
5092 AC_SUBST(MOZ_DBUS_LIBS)
5093 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5094 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5096 dnl ========================================================
5097 dnl = Enable Android History instead of Places
5098 dnl ========================================================
5099 if test -n "$MOZ_ANDROID_HISTORY"; then
5100      dnl Do this if defined in confvars.sh
5101      AC_DEFINE(MOZ_ANDROID_HISTORY)
5105 dnl ========================================================
5106 dnl = Build with the Android compositor
5107 dnl ========================================================
5108 if test -n "$MOZ_ANDROID_OMTC"; then
5109      dnl Do this if defined in confvars.sh
5110      AC_DEFINE(MOZ_ANDROID_OMTC)
5113 dnl ========================================================
5114 dnl = Disable WebSMS backend
5115 dnl ========================================================
5116 MOZ_ARG_DISABLE_BOOL(websms-backend,
5117 [  --disable-websms-backend
5118                            Disable WebSMS backend],
5119     MOZ_WEBSMS_BACKEND=,
5120     MOZ_WEBSMS_BACKEND=1)
5122 if test -n "$MOZ_WEBSMS_BACKEND"; then
5123     AC_DEFINE(MOZ_WEBSMS_BACKEND)
5126 dnl ========================================================
5127 dnl = Build Personal Security Manager
5128 dnl ========================================================
5129 MOZ_ARG_DISABLE_BOOL(crypto,
5130 [  --disable-crypto        Disable crypto support (Personal Security Manager)],
5131     MOZ_PSM=,
5132     MOZ_PSM=1 )
5134 dnl ========================================================
5135 dnl = JS Debugger XPCOM component (js/jsd)
5136 dnl ========================================================
5137 MOZ_ARG_DISABLE_BOOL(jsd,
5138 [  --disable-jsd           Disable JavaScript debug library],
5139     MOZ_JSDEBUGGER=,
5140     MOZ_JSDEBUGGER=1)
5143 dnl ========================================================
5144 dnl = Enable IPDL's "expensive" unit tests
5145 dnl ========================================================
5146 MOZ_IPDL_TESTS=
5148 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
5149 [  --enable-ipdl-tests     Enable expensive IPDL tests],
5150     MOZ_IPDL_TESTS=1,
5151     MOZ_IPDL_TESTS=)
5153 if test -n "$MOZ_IPDL_TESTS"; then
5154     AC_DEFINE(MOZ_IPDL_TESTS)
5157 AC_SUBST(MOZ_IPDL_TESTS)
5159 dnl ========================================================
5160 dnl = Turns off code necessary for e10s compatibility
5161 dnl ========================================================
5162 dnl This is a temporary flag to be removed in bug 662601 when
5163 dnl it's no longer needed
5165 MOZ_E10S_COMPAT=
5167 MOZ_ARG_ENABLE_BOOL(e10s-compat,
5168 [  --enable-e10s-compat     Turns off code for e10s compat],
5169     MOZ_E10S_COMPAT=1,
5170     MOZ_E10S_COMPAT=)
5172 if test -n "$MOZ_E10S_COMPAT"; then
5173     AC_DEFINE(MOZ_E10S_COMPAT)
5176 dnl ========================================================
5177 dnl = Disable building dbm
5178 dnl ========================================================
5179 MOZ_ARG_DISABLE_BOOL(dbm,
5180 [  --disable-dbm           Disable building dbm],
5181     NSS_DISABLE_DBM=1,
5182     NSS_DISABLE_DBM=)
5184 dnl bi-directional support always on
5185 IBMBIDI=1
5186 AC_DEFINE(IBMBIDI)
5188 dnl ========================================================
5189 dnl accessibility support on by default on all platforms
5190 dnl ========================================================
5191 MOZ_ARG_DISABLE_BOOL(accessibility,
5192 [  --disable-accessibility Disable accessibility support],
5193     ACCESSIBILITY=,
5194     ACCESSIBILITY=1 )
5195 if test "$ACCESSIBILITY"; then
5196     AC_DEFINE(ACCESSIBILITY)
5199 dnl ========================================================
5200 dnl Disable printing
5201 dnl ========================================================
5202 MOZ_ARG_DISABLE_BOOL(printing,
5203 [  --disable-printing      Disable printing support],
5204     NS_PRINTING=,
5205     NS_PRINTING=1)
5207 if test "$NS_PRINTING"; then
5208     AC_DEFINE(NS_PRINTING)
5209     AC_DEFINE(NS_PRINT_PREVIEW)
5212 dnl Turn off webrtc for OS's we don't handle yet, but allow 
5213 dnl --enable-webrtc to override.  Can disable for everything in
5214 dnl the master list above.
5215 if test -n "$MOZ_WEBRTC"; then
5216     case "$target" in
5217     *-android*|*-linuxandroid*)
5218         dnl Make sure doesn't get matched by *-linux*
5219         MOZ_WEBRTC=
5220         ;;
5221     *-linux*|*-mingw*|*-darwin*)
5222         dnl Leave enabled
5223         ;;
5224     *)
5225         dnl default to disabled for all others
5226         MOZ_WEBRTC=
5227         ;;
5228     esac
5231 dnl ========================================================
5232 dnl = Disable WebRTC code
5233 dnl ========================================================
5234 MOZ_ARG_DISABLE_BOOL(webrtc,
5235 [  --disable-webrtc        Disable support for WebRTC],
5236     MOZ_WEBRTC=,
5237     MOZ_WEBRTC=1)
5239 if test -n "$MOZ_WEBRTC"; then
5240     AC_DEFINE(MOZ_WEBRTC)
5241     MOZ_MEDIA=1
5242     MOZ_RAW=1
5243     MOZ_VP8=1
5244     MOZ_VP8_ENCODER=1
5245     MOZ_VP8_ERROR_CONCEALMENT=1
5246 dnl enable once Signaling lands
5247     MOZ_WEBRTC_SIGNALING=1
5248     AC_DEFINE(MOZ_WEBRTC_SIGNALING)
5249     if test "${OS_TARGET}" = "WINNT"; then
5250         MOZ_WEBRTC_IN_LIBXUL=1
5251     fi
5252 dnl enable once PeerConnection lands
5253     MOZ_PEERCONNECTION=1
5254     AC_DEFINE(MOZ_PEERCONNECTION)
5255     MOZ_SCTP=1
5256     MOZ_SRTP=1
5257     AC_DEFINE(MOZ_SCTP)
5258     AC_DEFINE(MOZ_SRTP)
5261 AC_SUBST(MOZ_WEBRTC)
5262 AC_SUBST(MOZ_WEBRTC_SIGNALING)
5263 AC_SUBST(MOZ_PEERCONNECTION)
5264 AC_SUBST(MOZ_WEBRTC_IN_LIBXUL)
5265 AC_SUBST(MOZ_SCTP)
5266 AC_SUBST(MOZ_SRTP)
5268 case "$target_cpu" in
5269 arm*)
5270     MOZ_SAMPLE_TYPE_S16=1
5271     AC_DEFINE(MOZ_SAMPLE_TYPE_S16)
5272     AC_SUBST(MOZ_SAMPLE_TYPE_S16)
5275     MOZ_SAMPLE_TYPE_FLOAT32=1
5276     AC_DEFINE(MOZ_SAMPLE_TYPE_FLOAT32)
5277     AC_SUBST(MOZ_SAMPLE_TYPE_FLOAT32)
5279 esac
5281 dnl ========================================================
5282 dnl = Enable Raw Codecs
5283 dnl ========================================================
5284 MOZ_ARG_ENABLE_BOOL(raw,
5285 [  --enable-raw           Enable support for RAW media],
5286     MOZ_RAW=1,
5287     MOZ_RAW=)
5289 if test -n "$MOZ_RAW"; then
5290     AC_DEFINE(MOZ_RAW)
5291     MOZ_MEDIA=1
5294 AC_SUBST(MOZ_RAW)
5296 dnl ========================================================
5297 dnl = Disable Ogg Codecs
5298 dnl ========================================================
5299 MOZ_ARG_DISABLE_BOOL(ogg,
5300 [  --disable-ogg           Disable support for OGG media (Theora video and Vorbis audio)],
5301     MOZ_OGG=,
5302     MOZ_OGG=1)
5304 if test -n "$MOZ_OGG"; then
5305     AC_DEFINE(MOZ_OGG)
5306     MOZ_SYDNEYAUDIO=1
5307     MOZ_CUBEB=1
5308     MOZ_MEDIA=1
5310     dnl Checks for __attribute__(aligned()) directive
5311     AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5312         [ac_cv_c_attribute_aligned],
5313         [ac_cv_c_attribute_aligned=0
5314          CFLAGS_save="${CFLAGS}"
5315          CFLAGS="${CFLAGS} -Werror"
5316          for ac_cv_c_attr_align_try in 64 32 16 8; do
5317            echo "trying $ac_cv_c_attr_align_try"
5318            AC_TRY_COMPILE([],
5319                           [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
5320                           [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
5321            if test "$ac_cv_c_attribute_aligned" != 0; then
5322              break;
5323            fi
5324          done
5325            CFLAGS="${CFLAGS_save}"])
5326     if test "${ac_cv_c_attribute_aligned}" != "0"; then
5327       AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
5328                          [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
5329     fi
5332 dnl ========================================================
5333 dnl = Disable Opus audio codec support
5334 dnl ========================================================
5335 MOZ_ARG_DISABLE_BOOL(opus,
5336 [  --disable-opus          Disable support for Opus audio],
5337     MOZ_OPUS=,
5338     MOZ_OPUS=1)
5340 dnl ========================================================
5341 dnl = Disable VP8 decoder support
5342 dnl ========================================================
5343 MOZ_ARG_DISABLE_BOOL(webm,
5344 [  --disable-webm          Disable support for WebM media (VP8 video and Vorbis audio)],
5345     MOZ_WEBM=,
5346     MOZ_WEBM=1)
5348 if test -n "$MOZ_WEBM"; then
5349     AC_DEFINE(MOZ_WEBM)
5350     MOZ_VP8=1
5353 dnl ========================================================
5354 dnl = Enable DASH-WebM support
5355 dnl ========================================================
5356 MOZ_ARG_ENABLE_BOOL(dash,
5357 [  --enable-dash          Enable support for DASH-WebM],
5358     MOZ_DASH=1,
5359     MOZ_DASH=)
5361 if test -n "$MOZ_DASH"; then
5362     if test -n "$MOZ_WEBM"; then
5363         AC_DEFINE(MOZ_DASH)
5364     else
5365         dnl Fail if WebM is not enabled as well as DASH.
5366         AC_MSG_ERROR([WebM is currently disabled and must be enabled for DASH
5367                      to work.])
5368     fi
5371 dnl ========================================================
5372 dnl = Enable media plugin support
5373 dnl ========================================================
5374 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5375   dnl Enable support on android by default
5376   MOZ_MEDIA_PLUGINS=1
5379 MOZ_ARG_ENABLE_BOOL(media-plugins,
5380 [  --enable-media-plugins  Enable support for media plugins],
5381     MOZ_MEDIA_PLUGINS=1,
5382     MOZ_MEDIA_PLUGINS=)
5384 if test -n "$MOZ_MEDIA_PLUGINS"; then
5385   AC_DEFINE(MOZ_MEDIA_PLUGINS)
5388 dnl ========================================================
5389 dnl = Enable getUserMedia support
5390 dnl ========================================================
5391 MOZ_ARG_ENABLE_BOOL(media-navigator,
5392 [  --enable-media-navigator  Enable support for getUserMedia],
5393     MOZ_MEDIA_NAVIGATOR=1,
5394     MOZ_MEDIA_NAVIGATOR=)
5396 if test -n "$MOZ_MEDIA_NAVIGATOR"; then
5397   AC_DEFINE(MOZ_MEDIA_NAVIGATOR)
5400 dnl ========================================================
5401 dnl = Enable building OMX media plugin (B2G or Android)
5402 dnl ========================================================
5403 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5404   dnl Enable support on android by default
5405   MOZ_OMX_PLUGIN=1
5408 MOZ_ARG_ENABLE_BOOL(omx-plugin,
5409 [  --enable-omx-plugin      Enable building OMX plugin (B2G)],
5410     MOZ_OMX_PLUGIN=1,
5411     MOZ_OMX_PLUGIN=)
5413 if test -n "$MOZ_OMX_PLUGIN"; then
5414     if test "$OS_TARGET" = "Android"; then
5415         dnl Only allow building OMX plugin on Gonk (B2G) or Android
5416         AC_DEFINE(MOZ_OMX_PLUGIN)
5417     else
5418        dnl fail if we're not building on Gonk or Android
5419        AC_MSG_ERROR([OMX media plugin can only be built on B2G or Android])
5420     fi
5423 dnl system libvpx Support
5424 dnl ========================================================
5425 MOZ_ARG_WITH_BOOL(system-libvpx,
5426 [  --with-system-libvpx    Use system libvpx (located with pkgconfig)],
5427     MOZ_NATIVE_LIBVPX=1)
5429 MOZ_LIBVPX_CFLAGS=
5430 MOZ_LIBVPX_LIBS=
5432 if test -n "$MOZ_VP8"; then
5433     AC_DEFINE(MOZ_VP8)
5434     if test -n "$MOZ_VP8_ERROR_CONCEALMENT" ; then
5435         AC_DEFINE(MOZ_VP8_ERROR_CONCEALMENT)
5436     fi
5437     if test -n "$MOZ_VP8_ENCODER" ; then
5438         AC_DEFINE(MOZ_VP8_ENCODER)
5439     fi
5441     if test -n "$MOZ_NATIVE_LIBVPX"; then
5442         dnl ============================
5443         dnl === libvpx Version check ===
5444         dnl ============================
5445         dnl Check to see if we have a system libvpx package.
5446         PKG_CHECK_MODULES(MOZ_LIBVPX, vpx >= 1.0.0)
5448         MOZ_CHECK_HEADER([vpx/vpx_decoder.h], [], 
5449          [AC_MSG_ERROR([Couldn't find vpx/vpx_decoder.h which is required for build with system libvpx. Use --without-system-libvpx to build with in-tree libvpx.])])
5451         _SAVE_LIBS=$LIBS
5452         AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver, [], 
5453          [AC_MSG_ERROR([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found])])
5454         LIBS=$_SAVE_LIBS
5455     fi
5458 AC_SUBST(MOZ_NATIVE_LIBVPX)
5459 AC_SUBST(MOZ_LIBVPX_CFLAGS)
5460 AC_SUBST(MOZ_LIBVPX_LIBS)
5462 if test "$MOZ_WEBM"; then
5463     MOZ_SYDNEYAUDIO=1
5464     MOZ_CUBEB=1
5465     MOZ_MEDIA=1
5466     if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then
5467         MOZ_VORBIS=1
5468     else
5469         MOZ_TREMOR=1
5470     fi
5473 if test -n "$MOZ_VP8" -a -z "$MOZ_NATIVE_LIBVPX"; then
5475     dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
5476     dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
5477     dnl We currently require gcc on all arm platforms.
5478     VPX_AS=$YASM
5479     VPX_ASM_SUFFIX=asm
5480     VPX_NEED_OBJ_INT_EXTRACT=
5482     dnl See if we have assembly on this platform.
5483     case "$OS_ARCH:$CPU_ARCH" in
5484     Darwin:x86)
5485       VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC"
5486       VPX_X86_ASM=1
5487     ;;
5488     Darwin:x86_64)
5489       VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC"
5490       VPX_X86_ASM=1
5491     ;;
5492     WINNT:x86_64)
5493       VPX_ASFLAGS="-f x64 -rnasm -pnasm"
5494       VPX_X86_ASM=1
5495     ;;
5496     WINNT:x86)
5497       dnl Check for yasm 1.1 or greater.
5498       if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then
5499         AC_MSG_ERROR([yasm 1.1 or greater is required to build libvpx on Win32, but it appears not to be installed.  Install it (included in MozillaBuild 1.5.1 and newer) or configure with --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
5500       elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
5501         AC_MSG_ERROR([yasm 1.1 or greater is required to build libvpx on Win32, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION.  Upgrade to the newest version (included in MozillaBuild 1.5.1 and newer) or configure with --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
5502       else
5503         VPX_ASFLAGS="-f win32 -rnasm -pnasm -DPIC"
5504         VPX_X86_ASM=1
5505         dnl The encoder needs obj_int_extract to get asm offsets.
5506       fi
5507     ;;
5508     *:arm*)
5509       if test -n "$GNU_AS" ; then
5510         VPX_AS=$AS
5511         dnl These flags are a lie; they're just used to enable the requisite
5512         dnl opcodes; actual arch detection is done at runtime.
5513         VPX_ASFLAGS="-march=armv7-a -mfpu=neon"
5514         VPX_DASH_C_FLAG="-c"
5515         VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl'
5516         VPX_ASM_SUFFIX="$ASM_SUFFIX"
5517         VPX_ARM_ASM=1
5518       fi
5519     ;;
5520     *:x86)
5521       if $CC -E -dM -</dev/null | grep -q __ELF__; then
5522         VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
5523         VPX_X86_ASM=1
5524       fi
5525     ;;
5526     *:x86_64)
5527       if $CC -E -dM -</dev/null | grep -q __ELF__; then
5528         VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
5529         VPX_X86_ASM=1
5530       fi
5531     ;;
5532     esac
5534     if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_X86_ASM" -a -z "$VPX_AS"; then
5535       AC_MSG_ERROR([yasm is a required build tool for this architecture when webm is enabled. You may either install yasm or --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
5536     fi
5538     if test -n "$MOZ_VP8_ENCODER" -a \
5539             -z "$GNU_CC" -a -z "$INTEL_CC" -a -z "$CLANG_CC" ; then
5540       dnl We prefer to get asm offsets using inline assembler, which the above
5541       dnl compilers can do. When we're not using one of those, we have to fall
5542       dnl back to obj_int_extract, which reads them from a compiled object
5543       dnl file. Unfortunately, that only works if we're compiling on a system
5544       dnl with the header files for the appropriate object file format.
5545       VPX_NEED_OBJ_INT_EXTRACT=1
5546     fi
5548     if test -n "$VPX_X86_ASM"; then
5549       AC_DEFINE(VPX_X86_ASM)
5550     elif test -n "$VPX_ARM_ASM"; then
5551       AC_DEFINE(VPX_ARM_ASM)
5552     else
5553       AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.])
5554     fi
5557 dnl ========================================================
5558 dnl = Disable Wave decoder support
5559 dnl ========================================================
5560 MOZ_ARG_DISABLE_BOOL(wave,
5561 [  --disable-wave          Disable Wave decoder support],
5562     MOZ_WAVE=,
5563     MOZ_WAVE=1)
5565 if test -n "$MOZ_WAVE"; then
5566     AC_DEFINE(MOZ_WAVE)
5567     MOZ_SYDNEYAUDIO=1
5568     MOZ_CUBEB=1
5569     MOZ_MEDIA=1
5572 dnl ========================================================
5573 dnl = Handle dependent SYDNEYAUDIO, CUBEB, and MEDIA defines
5574 dnl ========================================================
5576 if test -n "$MOZ_SYDNEYAUDIO"; then
5577     AC_DEFINE(MOZ_SYDNEYAUDIO)
5580 if test -n "$MOZ_SPEEX_RESAMPLER"; then
5581     AC_DEFINE(MOZ_SPEEX_RESAMPLER)
5584 if test -n "$MOZ_CUBEB"; then
5585     case "$target" in
5586     *-android*|*-linuxandroid*)
5587         if test -n "$gonkdir"; then
5588             AC_DEFINE(MOZ_CUBEB)
5589         fi
5590         dnl No Android implementation of libcubeb yet.
5591         ;;
5592     *-linux*)
5593         AC_DEFINE(MOZ_CUBEB)
5594         ;;
5595     *-mingw*)
5596         AC_DEFINE(MOZ_CUBEB)
5597         ;;
5598     *-darwin*)
5599         AC_DEFINE(MOZ_CUBEB)
5600         ;;
5601     *-openbsd*)
5602         AC_DEFINE(MOZ_CUBEB)
5603         ;;
5604     *)
5605         dnl Other targets will be enabled soon.
5606         ;;
5607     esac
5610 if test -n "$MOZ_MEDIA"; then
5611     AC_DEFINE(MOZ_MEDIA)
5614 if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then
5615     AC_MSG_ERROR([MOZ_VORBIS and MOZ_TREMOR are mutually exclusive!  The build system should not allow them both to be set, but they are.  Please file a bug at https://bugzilla.mozilla.org/])
5618 if test -n "$MOZ_VORBIS"; then
5619     AC_DEFINE(MOZ_VORBIS)
5622 if test -n "$MOZ_TREMOR"; then
5623     AC_DEFINE(MOZ_TREMOR)
5626 if test -n "$MOZ_OPUS"; then
5627     AC_DEFINE(MOZ_OPUS)
5630 dnl ========================================================
5631 dnl = Check alsa availability on Linux if using sydneyaudio
5632 dnl ========================================================
5634 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
5635 if test -n "$MOZ_SYDNEYAUDIO" -a "$OS_TARGET" = "Linux"; then
5636     PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
5637          [echo "$MOZ_ALSA_PKG_ERRORS"
5638           AC_MSG_ERROR([Need alsa for Ogg, Wave or WebM decoding on Linux.  Disable with --disable-ogg --disable-wave --disable-webm.  (On Ubuntu, you might try installing the package libasound2-dev.)])])
5641 dnl ========================================================
5642 dnl = Enable PulseAudio
5643 dnl ========================================================
5645 MOZ_ARG_ENABLE_BOOL(pulseaudio,
5646 [  --enable-pulseaudio          Enable PulseAudio support (experimental)],
5647 MOZ_PULSEAUDIO=1,
5648 MOZ_PULSEAUDIO=)
5650 if test -n "$MOZ_PULSEAUDIO"; then
5651     AC_DEFINE(MOZ_CUBEB)
5652     PKG_CHECK_MODULES(MOZ_PULSEAUDIO, libpulse, ,
5653          [echo "$MOZ_PULSEAUDIO_PKG_ERRORS"
5654           AC_MSG_ERROR([pulseaudio audio backend requires libpulse package])])
5657 AC_SUBST(MOZ_PULSEAUDIO)
5658 AC_SUBST(MOZ_PULSEAUDIO_CFLAGS)
5659 AC_SUBST(MOZ_PULSEAUDIO_LIBS)
5661 dnl ========================================================
5662 dnl = Enable GStreamer
5663 dnl ========================================================
5664 MOZ_ARG_ENABLE_BOOL(gstreamer,
5665 [  --enable-gstreamer           Enable GStreamer support],
5666 MOZ_GSTREAMER=1,
5667 MOZ_GSTREAMER=)
5669 if test "$MOZ_GSTREAMER"; then
5670     # API version, eg 0.10, 1.0 etc
5671     GST_API_VERSION=0.10
5672     # core/base release number
5673     # depend on >= 0.10.33 as that's when the playbin2 source-setup signal was
5674     # introduced
5675     GST_VERSION=0.10.33
5676     PKG_CHECK_MODULES(GSTREAMER,
5677                       gstreamer-$GST_API_VERSION >= $GST_VERSION
5678                       gstreamer-app-$GST_API_VERSION
5679                       gstreamer-plugins-base-$GST_API_VERSION)
5680     if test -n "$GSTREAMER_LIBS"; then
5681        _SAVE_LDFLAGS=$LDFLAGS
5682        LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5683        AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=)
5684        if test -n "$_HAVE_LIBGSTVIDEO" ; then
5685           GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5686        else
5687           AC_MSG_ERROR([gstreamer video backend requires libgstvideo])
5688        fi
5689        LDFLAGS=$_SAVE_LDFLAGS
5690     else
5691        AC_MSG_ERROR([gstreamer backend requires the gstreamer packages])
5692     fi
5694 AC_SUBST(GSTREAMER_CFLAGS)
5695 AC_SUBST(GSTREAMER_LIBS)
5696 AC_SUBST(MOZ_GSTREAMER)
5698 if test -n "$MOZ_GSTREAMER"; then
5699    AC_DEFINE(MOZ_GSTREAMER)
5700    MOZ_MEDIA=1
5704 dnl ========================================================
5705 dnl Permissions System
5706 dnl ========================================================
5707 MOZ_ARG_DISABLE_BOOL(permissions,
5708 [  --disable-permissions   Disable permissions (popup and cookie blocking)],
5709     MOZ_PERMISSIONS=,
5710     MOZ_PERMISSIONS=1
5713 dnl ========================================================
5714 dnl NegotiateAuth
5715 dnl ========================================================
5716 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5717 [  --disable-negotiateauth Disable GSS-API negotiation ],
5718     MOZ_AUTH_EXTENSION=,
5719     MOZ_AUTH_EXTENSION=1 )
5721 dnl ========================================================
5722 dnl XTF
5723 dnl ========================================================
5724 MOZ_ARG_DISABLE_BOOL(xtf,
5725 [  --disable-xtf           Disable XTF (pluggable xml tags) support],
5726     MOZ_XTF=,
5727     MOZ_XTF=1 )
5728 if test "$MOZ_XTF"; then
5729   AC_DEFINE(MOZ_XTF)
5732 dnl ========================================================
5733 dnl Pref extensions (autoconfig)
5734 dnl ========================================================
5735 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5736 [  --disable-pref-extensions
5737                           Disable pref extensions such as autoconfig],
5738   MOZ_PREF_EXTENSIONS=,
5739   MOZ_PREF_EXTENSIONS=1 )
5741 dnl ========================================================
5742 dnl Searching of system directories for extensions.
5743 dnl Note: this switch is meant to be used for test builds
5744 dnl whose behavior should not depend on what happens to be
5745 dnl installed on the local machine.
5746 dnl ========================================================
5747 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
5748 [  --disable-system-extension-dirs
5749                           Disable searching system- and account-global
5750                           directories for extensions of any kind; use
5751                           only profile-specific extension directories],
5752   ENABLE_SYSTEM_EXTENSION_DIRS=,
5753   ENABLE_SYSTEM_EXTENSION_DIRS=1 )
5754 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
5755   AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
5758 dnl ========================================================
5759 dnl = Universalchardet
5760 dnl ========================================================
5761 MOZ_ARG_DISABLE_BOOL(universalchardet,
5762 [  --disable-universalchardet
5763                           Disable universal encoding detection],
5764   MOZ_UNIVERSALCHARDET=,
5765   MOZ_UNIVERSALCHARDET=1 )
5767 if test -n "${JAVA_BIN_PATH}"; then
5768   dnl Look for javac and jar in the specified path.
5769   JAVA_PATH="$JAVA_BIN_PATH"
5770 else
5771   dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5772   JAVA_PATH="$JAVA_HOME/bin:$PATH"
5775 MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5776 MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5777 MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5779 if test -n "${JAVA_BIN_PATH}" -o \
5780   \( "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk" \); then
5781   if test -z "$JAVA" -o "$JAVA" = ":" -o -z "$JAVAC" -o "$JAVAC" = ":" -o -z "$JAR" -o "$JAR" = ":"; then
5782     AC_MSG_ERROR([The programs java, javac and jar were not found.  Set \$JAVA_HOME to your java sdk directory or use --with-java-bin-path={java-bin-dir}])
5783   fi
5786 dnl ========================================================
5787 dnl = ANGLE OpenGL->D3D translator for WebGL
5788 dnl = * only applies to win32
5789 dnl = * enabled by default (shipping build); requires explicit --disable to disable
5790 dnl ========================================================
5791 MOZ_ANGLE_RENDERER=
5792 MOZ_DIRECTX_SDK_PATH=
5793 MOZ_DIRECTX_SDK_CPU_SUFFIX=
5794 MOZ_D3DX9_VERSION=
5795 MOZ_D3DX9_CAB=
5796 MOZ_D3DCOMPILER_CAB=
5797 MOZ_D3DX9_DLL=
5798 MOZ_D3DCOMPILER_DLL=
5799 case "$target_os" in
5800 *mingw*)
5801     MOZ_ANGLE_RENDERER=1
5802     ;;
5803 esac
5805 # The DirectX SDK libraries are split into x86 and x64 sub-directories
5806 case "${target_cpu}" in
5807 i*86)
5808   MOZ_DIRECTX_SDK_CPU_SUFFIX=x86
5809   ;;
5810 x86_64)
5811   MOZ_DIRECTX_SDK_CPU_SUFFIX=x64
5812   ;;
5813 esac
5815 MOZ_ARG_DISABLE_BOOL(webgl,
5816 [  --disable-webgl     Disable building of the WebGL implementation],
5817     MOZ_WEBGL_DISABLED=1,
5818     MOZ_WEBGL_DISABLED=)
5820 if test -n "$MOZ_WEBGL_DISABLED"; then
5821   MOZ_WEBGL=
5822   MOZ_ANGLE_RENDERER=
5825 if test -n "$MOZ_ANGLE_RENDERER" -a -z "$CROSS_COMPILE"; then
5826   # Get the SDK path from the registry.
5827   # First try to get the June 2010 SDK
5828   MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1`
5829   if test -z "$MOZ_DIRECTX_SDK_REG_KEY" ; then
5830     # Otherwise just take whatever comes first
5831     MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1`
5832   fi
5834   if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then
5835     AC_MSG_ERROR([Found the February 2010 DirectX SDK. Need the June 2010 DirectX SDK, or newer.  Upgrade your SDK or reconfigure with --disable-webgl.])
5836   else
5837     MOZ_DIRECTX_SDK_PATH=`reg query "$MOZ_DIRECTX_SDK_REG_KEY" //v InstallPath | grep REG_SZ | sed 's/.*\([[a-zA-Z]]\)\\:\\\\/\\1\\:\\\\/'`
5838   fi
5840   if test -n "$MOZ_DIRECTX_SDK_PATH" &&
5841      test -f "$MOZ_DIRECTX_SDK_PATH"/include/d3dx9.h &&
5842          test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_DIRECTX_SDK_CPU_SUFFIX/dxguid.lib ; then
5843     AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH])
5844   else
5845     AC_MSG_ERROR([Couldn't find the DirectX SDK, needed for WebGL. Either install it (June 2010 version or newer), or reconfigure with --disable-webgl.])
5846   fi
5848   # Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib
5849   MOZ_D3DX9_VERSION=`dumpbin //headers "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_DIRECTX_SDK_CPU_SUFFIX/d3dx9.lib | egrep d3dx9_[[0-9]][[0-9]]\.dll | head -n1 | sed 's/.*\([[0-9]][[0-9]]\).*/\\1/g'`
5851   if test -z "$MOZ_D3DX9_VERSION" ; then
5852         AC_MSG_ERROR([Couldn't determine the D3DX9 version, needed for WebGL. Either reinstall the DirectX SDK (June 2010 version or newer), or reconfigure with --disable-webgl.])
5853   fi
5855   MOZ_D3DX9_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *d3dx9_${MOZ_D3DX9_VERSION}_${MOZ_DIRECTX_SDK_CPU_SUFFIX}.cab | head -n1`
5856   MOZ_D3DCOMPILER_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_DIRECTX_SDK_CPU_SUFFIX}.cab | head -n1`
5858   if test -z "$MOZ_D3DX9_CAB" -o -z "$MOZ_D3DCOMPILER_CAB"; then
5859     AC_MSG_ERROR([Couldn't find the DirectX redistributable files. Either reinstall the DirectX SDK (making sure the "DirectX Redistributable Files" option is selected), or reconfigure with --disable-webgl.])
5860   fi
5862   MOZ_D3DX9_DLL=d3dx9_$MOZ_D3DX9_VERSION.dll
5863   MOZ_D3DCOMPILER_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll
5866 dnl ========================================================
5867 dnl = Breakpad crash reporting (on by default on supported platforms)
5868 dnl ========================================================
5870 case $target in
5871 i?86-*-mingw*|x86_64-*-mingw*)
5872   MOZ_CRASHREPORTER=1
5873   ;;
5874 i?86-apple-darwin*|x86_64-apple-darwin*)
5875   MOZ_CRASHREPORTER=1
5876   ;;
5877 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
5878   if test "$MOZ_ENABLE_GTK2"; then
5879     MOZ_CRASHREPORTER=1
5880   fi
5881   ;;
5882 *-android*|*-linuxandroid*)
5883   MOZ_CRASHREPORTER=1
5884   ;;
5885 *solaris*)
5886   MOZ_CRASHREPORTER=1
5887   ;;
5888 esac
5890 MOZ_ARG_DISABLE_BOOL(crashreporter,
5891 [  --disable-crashreporter Disable breakpad crash reporting],
5892     MOZ_CRASHREPORTER=,
5893     MOZ_CRASHREPORTER=1)
5895 if test -n "$MOZ_CRASHREPORTER"; then
5896    AC_DEFINE(MOZ_CRASHREPORTER)
5898   if test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS" && \
5899     test -z "$SKIP_LIBRARY_CHECKS"; then
5900     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5901     AC_SUBST(MOZ_GTHREAD_CFLAGS)
5902     AC_SUBST(MOZ_GTHREAD_LIBS)
5904     MOZ_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.])])
5905   fi
5907   if test "$OS_ARCH" != "$HOST_OS_ARCH"; then
5908     AC_MSG_ERROR([Breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.  Use --disable-crashreporter.])
5909   fi
5911   if test "$OS_ARCH" = "WINNT" -a -z "$HAVE_64BIT_OS"; then
5912     MOZ_CRASHREPORTER_INJECTOR=1
5913     AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
5914   fi
5917 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5918 [  --with-crashreporter-enable-percent=NN
5919                           Enable sending crash reports by default on NN% of users. (default=100)],
5920 [ val=`echo $withval | sed 's/[^0-9]//g'`
5921     MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5923 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5924    MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5926 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5928 dnl ========================================================
5929 dnl = libjpeg-turbo configuration
5930 dnl ========================================================
5931 MOZ_LIBJPEG_TURBO=
5932 if test -z "$MOZ_NATIVE_JPEG"; then
5933     MOZ_LIBJPEG_TURBO=1
5936 MOZ_ARG_DISABLE_BOOL(libjpeg_turbo,
5937 [ --disable-libjpeg-turbo  Disable optimized jpeg decoding routines],
5938     MOZ_LIBJPEG_TURBO=,
5939     MOZ_LIBJPEG_TURBO=1)
5941 if test "$MOZ_NATIVE_JPEG" = 1 -a "$MOZ_LIBJPEG_TURBO" = 1; then
5942     AC_MSG_ERROR([cannot use --with-system-jpeg with --enable-libjpeg-turbo.])
5945 dnl Detect if we can use yasm to compile libjpeg-turbo's optimized assembly
5946 dnl files.
5948 if test -n "$MOZ_LIBJPEG_TURBO"; then
5950   dnl Do we support libjpeg-turbo on this platform?
5951   case "$OS_ARCH:$OS_TEST" in
5952   Darwin:i?86)
5953     LIBJPEG_TURBO_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC -DMACHO"
5954     LIBJPEG_TURBO_X86_ASM=1
5955   ;;
5956   Darwin:x86_64)
5957     LIBJPEG_TURBO_ASFLAGS="-f macho64 -rnasm -pnasm -D__x86_64__ -DPIC -DMACHO"
5958     LIBJPEG_TURBO_X64_ASM=1
5959   ;;
5960   WINNT:x86|WINNT:i?86)
5961     LIBJPEG_TURBO_ASFLAGS="-f win32 -rnasm -pnasm -DPIC -DWIN32"
5962     LIBJPEG_TURBO_X86_ASM=1
5963   ;;
5964   WINNT:x86_64)
5965     LIBJPEG_TURBO_ASFLAGS="-f win64 -rnasm -pnasm -D__x86_64__ -DPIC -DWIN64 -DMSVC"
5966     LIBJPEG_TURBO_X64_ASM=1
5967   ;;
5968   *:arm*)
5969     LIBJPEG_TURBO_ASFLAGS="-march=armv7-a -mfpu=neon"
5970     LIBJPEG_TURBO_ARM_ASM=1
5971   ;;
5972   *:x86|*:i?86)
5973     if $CC -E -dM -</dev/null | grep -q __ELF__; then
5974       LIBJPEG_TURBO_ASFLAGS="-f elf32 -rnasm -pnasm -DPIC -DELF"
5975       LIBJPEG_TURBO_X86_ASM=1
5976     fi
5977   ;;
5978   *:x86_64)
5979     if $CC -E -dM -</dev/null | grep -q __ELF__; then
5980       LIBJPEG_TURBO_ASFLAGS="-f elf64 -rnasm -pnasm -D__x86_64__ -DPIC -DELF"
5981       LIBJPEG_TURBO_X64_ASM=1
5982     fi
5983   ;;
5984   esac
5988 dnl If we're on an x86 or x64 system which supports libjpeg-turbo's asm routines
5989 dnl and --disable-libjpeg-turbo wasn't passed, check for Yasm, and error out if
5990 dnl it doesn't exist or we have too old of a version.
5991 if test -n "$LIBJPEG_TURBO_X86_ASM" -o -n "$LIBJPEG_TURBO_X64_ASM" ; then
5992     AC_MSG_CHECKING([for Yasm assembler])
5993     AC_CHECK_PROGS(LIBJPEG_TURBO_AS, yasm, "")
5995     if test -z "$LIBJPEG_TURBO_AS" ; then
5996         AC_MSG_ERROR([Yasm is required to build with libjpeg-turbo's optimized JPEG decoding routines, but you do not appear to have Yasm installed.  Either install it or configure with --disable-libjpeg-turbo to use the pure C JPEG decoder.  See https://developer.mozilla.org/en/YASM for more details.])
5997     fi
5999     dnl Check that we have the right yasm version.  We require 1.0.1 or newer
6000     dnl on Linux and 1.1 or newer everywhere else.
6001     if test "$OS_ARCH" = "Linux" ; then
6002         if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -eq "0" -a "$_YASM_RELEASE" -lt "1" \) ; then
6003             AC_MSG_ERROR([Yasm 1.0.1 or greater is required to build with libjpeg-turbo's optimized JPEG decoding routines, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION.$_YASM_RELEASE.  Upgrade to the newest version or configure with --disable-libjpeg-turbo to use the pure C JPEG decoder.  See https://developer.mozilla.org/en/YASM for more details.])
6004         fi
6005     else
6006         if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
6007             AC_MSG_ERROR([Yasm 1.1 or greater is required to build with libjpeg-turbo's optimized JPEG decoding routines, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION.  Upgrade to the newest version or configure with --disable-libjpeg-turbo to use the pure C JPEG decoder.  See https://developer.mozilla.org/en/YASM for more details.])
6008         fi
6009     fi
6012 dnl If we're on an ARM system which supports libjpeg-turbo's asm routines and
6013 dnl --disable-libjpeg-turbo wasn't passed, use the C compiler as the assembler.
6014 if test -n "$LIBJPEG_TURBO_ARM_ASM" ; then
6015     echo "Using $AS as the assembler for ARM code."
6016     LIBJPEG_TURBO_AS=$AS
6019 if test -n "$LIBJPEG_TURBO_X86_ASM"; then
6020     AC_DEFINE(LIBJPEG_TURBO_X86_ASM)
6021 elif test -n "$LIBJPEG_TURBO_X64_ASM"; then
6022     AC_DEFINE(LIBJPEG_TURBO_X64_ASM)
6023 elif test -n "$LIBJPEG_TURBO_ARM_ASM"; then
6024     AC_DEFINE(LIBJPEG_TURBO_ARM_ASM)
6025 elif test -n "$MOZ_LIBJPEG_TURBO"; then
6026     dnl Warn if we're not building the optimized routines, even though the user
6027     dnl didn't specify --disable-libjpeg-turbo.
6028     AC_MSG_WARN([No assembler or assembly support for libjpeg-turbo.  Using unoptimized C routines.])
6031 dnl ========================================================
6032 dnl = Enable compilation of specific extension modules
6033 dnl ========================================================
6035 MOZ_ARG_ENABLE_STRING(extensions,
6036 [  --enable-extensions     Enable extensions],
6037 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6038     if test "$option" = "yes" -o "$option" = "all"; then
6039         AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6040     elif test "$option" = "no" -o "$option" = "none"; then
6041         MOZ_EXTENSIONS=""
6042     elif test "$option" = "default"; then
6043         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6044     elif test `echo "$option" | grep -c \^-` != 0; then
6045         option=`echo $option | sed 's/^-//'`
6046         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6047     else
6048         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6049     fi
6050 done],
6051     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6053 if test -z "$MOZ_ENABLE_GNOMEVFS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6054     # Suppress warning on non-X11 platforms
6055     if test -n "$MOZ_X11"; then
6056         AC_MSG_WARN([Removing gnomevfs from MOZ_EXTENSIONS due to no --enable-gnomevfs.])
6057     fi
6058     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6061 dnl Do not build gnomevfs with libxul based apps
6062 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6063     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6066 if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6067     # Suppress warning on non-X11 platforms
6068     if test -n "$MOZ_X11"; then
6069         AC_MSG_WARN([Removing gio from MOZ_EXTENSIONS due to --disable-gio.])
6070     fi
6071     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6074 dnl Do not build gio with libxul based apps
6075 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6076     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6079 if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6080     AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6081     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6084 dnl xforms requires xtf
6085 if test -z "$MOZ_XTF" -a `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
6086     AC_MSG_WARN([Cannot build XForms without XTF support.  Removing XForms from MOZ_EXTENSIONS.])
6087     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
6090 dnl Remove dupes
6091 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6093 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6094 dnl when trying to build a nonexistent extension.
6095 for extension in $MOZ_EXTENSIONS; do
6096     if test ! -d "${srcdir}/extensions/${extension}"; then
6097         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6098     fi
6099 done
6101 if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
6102   AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
6105 dnl ========================================================
6106 dnl CSS3 Flexbox Support
6107 dnl ========================================================
6108 if test -n "$MOZ_FLEXBOX"; then
6109   AC_DEFINE(MOZ_FLEXBOX)
6112 dnl ========================================================
6113 dnl Build Freetype in the tree
6114 dnl ========================================================
6115 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6116 [  --enable-tree-freetype  Enable Tree FreeType],
6117     MOZ_TREE_FREETYPE=1,
6118     MOZ_TREE_FREETYPE= )
6119 if test -n "$MOZ_TREE_FREETYPE"; then
6120    if test -n "$_WIN32_MSVC"; then
6121       AC_ERROR("building with in-tree freetype is not supported on MSVC")
6122    fi
6123    AC_DEFINE(MOZ_TREE_FREETYPE)
6124    AC_SUBST(MOZ_TREE_FREETYPE)
6125    MOZ_ENABLE_CAIRO_FT=1
6126    FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6127    FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6128    CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6129    FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6130    CAIRO_FT_OSLIBS=''
6131    CAIRO_FT_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6132    AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6133    AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6134    AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6135    AC_SUBST(CAIRO_FT_CFLAGS)
6138 dnl ========================================================
6139 dnl Installer
6140 dnl ========================================================
6141 dnl Abort Windows build if the required major version and
6142 dnl minimum minor version of Unicode NSIS isn't in the path
6143 dnl (unless in case of cross compiling, for which Unicode
6144 dnl is not yet sufficient).
6145 if test "$OS_ARCH" = "WINNT"; then
6146     REQ_NSIS_MAJOR_VER=2
6147     MIN_NSIS_MINOR_VER=33
6148     MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensisu-2.46 makensisu makensis)
6149     if test -n "$MAKENSISU" -a "$MAKENSISU" != ":"; then
6150       AC_MSG_RESULT([yes])
6151       changequote(,)
6152       MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\)\-Unicode$/\1/g'`
6153       changequote([,])
6154       if test ! "$MAKENSISU_VER" = ""; then
6155           MAKENSISU_MAJOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $1 }'`
6156           MAKENSISU_MINOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $2 }'`
6157       fi
6158       AC_MSG_CHECKING([for Unicode NSIS with major version == $REQ_NSIS_MAJOR_VER and minor version >= $MIN_NSIS_MINOR_VER])
6159       if test "$MAKENSISU_VER" = "" || \
6160          test ! "$MAKENSISU_MAJOR_VER" = "$REQ_NSIS_MAJOR_VER" -o \
6161               ! "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER; then
6162           AC_MSG_RESULT([no])
6163           if test -z "$CROSS_COMPILE"; then
6164             AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS with a major version of $REQ_NSIS_MAJOR_VER and a minimum minor version of $MIN_NSIS_MINOR_VER in your path.])
6165           else
6166             MAKENSISU=
6167           fi
6168       fi
6169     elif test -z "$CROSS_COMPILE"; then
6170       AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS with a major version of $REQ_NSIS_MAJOR_VER and a minimum minor version of $MIN_NSIS_MINOR_VER in your path.])
6171     else
6172       MAKENSISU=
6173     fi
6176 dnl ========================================================
6177 dnl Web App Runtime
6178 dnl ========================================================
6179 MOZ_ARG_DISABLE_BOOL(webapp-runtime,
6180 [  --disable-webapp-runtime  Disable Web App Runtime],
6181     MOZ_WEBAPP_RUNTIME=,
6182     MOZ_WEBAPP_RUNTIME=1)
6183 if test "$MOZ_WIDGET_TOOLKIT" != "windows" -a "$MOZ_WIDGET_TOOLKIT" != "cocoa" -a "$MOZ_WIDGET_TOOLKIT" != "gtk2"; then
6184     MOZ_WEBAPP_RUNTIME=
6186 if test "$OS_ARCH" = "WINNT" -a -z "$MAKENSISU" -a -n "$CROSS_COMPILE"; then
6187     MOZ_WEBAPP_RUNTIME=
6189 AC_SUBST(MOZ_WEBAPP_RUNTIME)
6190 if test "$MOZ_WEBAPP_RUNTIME"; then
6191     AC_DEFINE(MOZ_WEBAPP_RUNTIME)
6194 AC_MSG_CHECKING([for tar archiver])
6195 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6196 if test -z "$TAR"; then
6197     AC_MSG_ERROR([no tar archiver found in \$PATH])
6199 AC_MSG_RESULT([$TAR])
6200 AC_SUBST(TAR)
6202 AC_MSG_CHECKING([for wget])
6203 AC_CHECK_PROGS(WGET, wget, "")
6204 AC_MSG_RESULT([$WGET])
6205 AC_SUBST(WGET)
6207 dnl ========================================================
6208 dnl Signing
6209 dnl ========================================================
6211 if test -n "$MOZ_SIGN_CMD"; then
6212     AC_DEFINE(MOZ_SIGNING)
6215 dnl ========================================================
6216 dnl Maintenance Service
6217 dnl ========================================================
6219 MOZ_ARG_ENABLE_BOOL(maintenance-service,
6220 [  --enable-maintenance-service       Enable building of maintenanceservice],
6221     MOZ_MAINTENANCE_SERVICE=1,
6222     MOZ_MAINTENANCE_SERVICE= )
6224 if test -n "$MOZ_MAINTENANCE_SERVICE"; then
6225   if test "$OS_ARCH" = "WINNT"; then
6226     AC_DEFINE(MOZ_MAINTENANCE_SERVICE)
6227   else
6228     AC_MSG_ERROR([Can only build with --enable-maintenance-service with a Windows target])
6229   fi
6232 dnl ========================================================
6233 dnl Verify MAR signatures
6234 dnl ========================================================
6236 MOZ_ARG_ENABLE_BOOL(verify-mar,
6237 [  --enable-verify-mar     Enable verifying MAR signatures],
6238     MOZ_VERIFY_MAR_SIGNATURE=1,
6239     MOZ_VERIFY_MAR_SIGNATURE= )
6241 if test -n "$MOZ_VERIFY_MAR_SIGNATURE"; then
6242   if test "$OS_ARCH" = "WINNT"; then
6243     AC_DEFINE(MOZ_VERIFY_MAR_SIGNATURE)
6244   else
6245     AC_MSG_ERROR([Can only build with --enable-verify-mar with a Windows target])
6246   fi
6249 dnl ========================================================
6250 dnl Enable building the signmar program.
6251 dnl This option is much different than the --enable-verify-mar option.
6252 dnl --enable-verify-mar is for enabling the verification check on MAR
6253 dnl files in the updater.  The --enable-signmar option is for building
6254 dnl the signmar program.
6255 dnl ========================================================
6257 MOZ_ARG_ENABLE_BOOL(signmar,
6258 [  --enable-signmar     Enable building the signmar program],
6259     MOZ_ENABLE_SIGNMAR=1,
6260     MOZ_ENABLE_SIGNMAR= )
6262 if test -n "$MOZ_ENABLE_SIGNMAR"; then
6263   AC_DEFINE(MOZ_ENABLE_SIGNMAR)
6266 dnl ========================================================
6267 dnl Updater
6268 dnl ========================================================
6270 MOZ_ARG_DISABLE_BOOL(updater,
6271 [  --disable-updater       Disable building of updater],
6272     MOZ_UPDATER=,
6273     MOZ_UPDATER=1 )
6275 if test -n "$MOZ_UPDATER"; then
6276     AC_DEFINE(MOZ_UPDATER)
6279 # app update channel is 'default' when not supplied.
6280 MOZ_ARG_ENABLE_STRING([update-channel],
6281 [  --enable-update-channel=CHANNEL
6282                           Select application update channel (default=default)],
6283     MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
6285 if test -z "$MOZ_UPDATE_CHANNEL"; then
6286     MOZ_UPDATE_CHANNEL=default
6288 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
6289 AC_SUBST(MOZ_UPDATE_CHANNEL)
6291 # tools/update-packaging is not checked out by default.
6292 MOZ_ARG_ENABLE_BOOL(update-packaging,
6293 [  --enable-update-packaging
6294                           Enable tools/update-packaging],
6295     MOZ_UPDATE_PACKAGING=1,
6296     MOZ_UPDATE_PACKAGING= )
6297 AC_SUBST(MOZ_UPDATE_PACKAGING)
6299 dnl ========================================================
6300 dnl build the tests by default
6301 dnl ========================================================
6302 MOZ_ARG_DISABLE_BOOL(tests,
6303 [  --disable-tests         Do not build test libraries & programs],
6304     ENABLE_TESTS=,
6305     ENABLE_TESTS=1 )
6307 dnl ========================================================
6308 dnl parental controls (for Windows Vista)
6309 dnl ========================================================
6310 MOZ_ARG_DISABLE_BOOL(parental-controls,
6311 [  --disable-parental-controls
6312                           Do not build parental controls],
6313    MOZ_DISABLE_PARENTAL_CONTROLS=1,
6314    MOZ_DISABLE_PARENTAL_CONTROLS=)
6315 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6316     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6319 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6321 dnl ========================================================
6322 dnl = Disable DOMCrypto
6323 dnl ========================================================
6324 if test -n "$MOZ_DISABLE_DOMCRYPTO"; then
6325     AC_DEFINE(MOZ_DISABLE_DOMCRYPTO)
6328 dnl ========================================================
6329 dnl =
6330 dnl = Module specific options
6331 dnl =
6332 dnl ========================================================
6333 MOZ_ARG_HEADER(Individual module options)
6335 dnl ========================================================
6336 dnl = Disable feed handling components
6337 dnl ========================================================
6338 MOZ_ARG_DISABLE_BOOL(feeds,
6339 [  --disable-feeds         Disable feed handling and processing components],
6340     MOZ_FEEDS=,
6341     MOZ_FEEDS=1 )
6342 if test -n "$MOZ_FEEDS"; then
6343     AC_DEFINE(MOZ_FEEDS)
6344 else
6345     if test "$MOZ_BUILD_APP" = "browser"; then
6346         AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6347     fi
6350 dnl ========================================================
6351 dnl Check for sqlite
6352 dnl ========================================================
6354 MOZ_NATIVE_SQLITE=
6355 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6356 [  --enable-system-sqlite  Use system sqlite (located with pkgconfig)],
6357 MOZ_NATIVE_SQLITE=1,
6358 MOZ_NATIVE_SQLITE= )
6360 if test -z "$MOZ_NATIVE_SQLITE"
6361 then
6362     SQLITE_CFLAGS=
6363     SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6364 else
6365     dnl ============================
6366     dnl === SQLite Version check ===
6367     dnl ============================
6368     dnl Check to see if the system SQLite package is new enough.
6369     PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6371     dnl ==================================
6372     dnl === SQLITE_SECURE_DELETE check ===
6373     dnl ==================================
6374     dnl Check to see if the system SQLite package is compiled with
6375     dnl SQLITE_SECURE_DELETE enabled.
6376     AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6377     _SAVE_CFLAGS="$CFLAGS"
6378     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6379     _SAVE_LIBS="$LIBS"
6380     LIBS="$LIBS $SQLITE_LIBS"
6381     AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6382         AC_TRY_RUN([
6383             #include "sqlite3.h"
6385             int main(int argc, char **argv){
6386               return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6387             }],
6388             ac_cv_sqlite_secure_delete=yes,
6389             ac_cv_sqlite_secure_delete=no,
6390             ac_cv_sqlite_secure_delete=no
6391         )
6392     ])
6393     AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6394     CFLAGS="$_SAVE_CFLAGS"
6395     LIBS="$_SAVE_LIBS"
6396     if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6397         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6398     fi
6400     dnl ===============================
6401     dnl === SQLITE_THREADSAFE check ===
6402     dnl ===============================
6403     dnl Check to see if the system SQLite package is compiled with
6404     dnl SQLITE_THREADSAFE enabled.
6405     AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6406     _SAVE_CFLAGS="$CFLAGS"
6407     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6408     _SAVE_LIBS="$LIBS"
6409     LIBS="$LIBS $SQLITE_LIBS"
6410     AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6411         AC_TRY_RUN([
6412             #include "sqlite3.h"
6414             int main(int argc, char **argv){
6415               return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6416             }],
6417             ac_cv_sqlite_threadsafe=yes,
6418             ac_cv_sqlite_threadsafe=no,
6419             ac_cv_sqlite_threadsafe=no
6420         )
6421     ])
6422     AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6423     CFLAGS="$_SAVE_CFLAGS"
6424     LIBS="$_SAVE_LIBS"
6425     if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6426         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6427     fi
6429     dnl ================================
6430     dnl === SQLITE_ENABLE_FTS3 check ===
6431     dnl ================================
6432     dnl check to see if the system SQLite package is compiled with
6433     dnl SQLITE_ENABLE_FTS3 enabled.
6434     AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6435     _SAVE_CFLAGS="$CFLAGS"
6436     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6437     _SAVE_LIBS="$LIBS"
6438     LIBS="$LIBS $SQLITE_LIBS"
6439     AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6440         AC_TRY_RUN([
6441             #include "sqlite3.h"
6443             int main(int argc, char **argv){
6444               return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6445             }],
6446             ac_cv_sqlite_enable_fts3=yes,
6447             ac_cv_sqlite_enable_fts3=no,
6448             ac_cv_sqlite_enable_fts3=no
6449         )
6450     ])
6451     AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6452     CFLAGS="$_SAVE_CFLAGS"
6453     LIBS="$_SAVE_LIBS"
6454     if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6455         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6456     fi
6458     dnl =========================================
6459     dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
6460     dnl =========================================
6461     dnl check to see if the system SQLite package is compiled with
6462     dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
6463     AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
6464     _SAVE_CFLAGS="$CFLAGS"
6465     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6466     _SAVE_LIBS="$LIBS"
6467     LIBS="$LIBS $SQLITE_LIBS"
6468     AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
6469         AC_TRY_RUN([
6470             #include "sqlite3.h"
6472             int main(int argc, char **argv){
6473               return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
6474             }],
6475             ac_cv_sqlite_enable_unlock_notify=yes,
6476             ac_cv_sqlite_enable_unlock_notify=no,
6477             ac_cv_sqlite_enable_unlock_notify=no
6478         )
6479     ])
6480     AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
6481     CFLAGS="$_SAVE_CFLAGS"
6482     LIBS="$_SAVE_LIBS"
6483     if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
6484         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
6485     fi
6488 if test -n "$MOZ_NATIVE_SQLITE"; then
6489     AC_DEFINE(MOZ_NATIVE_SQLITE)
6491 AC_SUBST(MOZ_NATIVE_SQLITE)
6493 dnl ========================================================
6494 dnl = Enable help viewer (off by default)
6495 dnl ========================================================
6496 if test -n "$MOZ_HELP_VIEWER"; then
6497      dnl Do this if defined in confvars.sh
6498      AC_DEFINE(MOZ_HELP_VIEWER)
6501 dnl ========================================================
6502 dnl = Enable safe browsing (anti-phishing)
6503 dnl ========================================================
6504 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6505 [  --enable-safe-browsing  Enable safe browsing (anti-phishing) implementation],
6506     MOZ_SAFE_BROWSING=1,
6507     MOZ_SAFE_BROWSING= )
6508 if test -n "$MOZ_SAFE_BROWSING"; then
6509     AC_DEFINE(MOZ_SAFE_BROWSING)
6511 AC_SUBST(MOZ_SAFE_BROWSING)
6513 dnl ========================================================
6514 dnl = Enable url-classifier
6515 dnl ========================================================
6516 dnl Implicitly enabled by default if building with safe-browsing
6517 if test -n "$MOZ_SAFE_BROWSING"; then
6518     MOZ_URL_CLASSIFIER=1
6520 MOZ_ARG_ENABLE_BOOL(url-classifier,
6521 [  --enable-url-classifier Enable url classifier module],
6522     MOZ_URL_CLASSIFIER=1,
6523     MOZ_URL_CLASSIFIER= )
6524 if test -n "$MOZ_URL_CLASSIFIER"; then
6525     AC_DEFINE(MOZ_URL_CLASSIFIER)
6527 AC_SUBST(MOZ_URL_CLASSIFIER)
6529 dnl ========================================================
6530 dnl = Disable zipwriter
6531 dnl ========================================================
6532 MOZ_ARG_DISABLE_BOOL(zipwriter,
6533 [  --disable-zipwriter     Disable zipwriter component],
6534     MOZ_ZIPWRITER=,
6535     MOZ_ZIPWRITER=1 )
6536 AC_SUBST(MOZ_ZIPWRITER)
6538 dnl ========================================================
6539 dnl = libconic
6540 dnl ========================================================
6541 dnl superseded by QtNetwork starting from 4.7
6542 MOZ_ENABLE_LIBCONIC=1
6544 if test -n "$MOZ_ENABLE_QT"; then
6545   if test "$MOZ_ENABLE_QTNETWORK"; then
6546     MOZ_ENABLE_LIBCONIC=
6547   fi
6550 MOZ_ARG_DISABLE_BOOL(libconic,
6551 [  --disable-libconic      Disable libconic],
6552     MOZ_ENABLE_LIBCONIC=,
6553     MOZ_ENABLE_LIBCONIC=1 )
6555 if test -n "$MOZ_ENABLE_LIBCONIC"; then
6556     PKG_CHECK_MODULES(LIBCONIC, conic,
6557                       MOZ_ENABLE_LIBCONIC=1,
6558                       MOZ_ENABLE_LIBCONIC=)
6560 if test "$MOZ_ENABLE_LIBCONIC"; then
6561     AC_DEFINE(MOZ_ENABLE_LIBCONIC)
6564 AC_SUBST(MOZ_ENABLE_LIBCONIC)
6565 AC_SUBST(LIBCONIC_CFLAGS)
6566 AC_SUBST(LIBCONIC_LIBS)
6568 dnl ========================================================
6569 dnl = Maemo checks
6570 dnl ========================================================
6572 MAEMO_SDK_TARGET_VER=-1
6574 MOZ_ARG_WITH_STRING(maemo-version,
6575 [  --with-maemo-version=MAEMO_SDK_TARGET_VER
6576                           Maemo SDK Version],
6577   MAEMO_SDK_TARGET_VER=$withval)
6579 case "$MAEMO_SDK_TARGET_VER" in
6581     MOZ_PLATFORM_MAEMO=5
6582     ;;
6585     MOZ_PLATFORM_MAEMO=6
6586     ;;
6589     dnl We aren't compiling for Maemo, move on.
6590     ;;
6592     AC_MSG_ERROR([Unknown Maemo Version.  Try setting --with-maemo-version to 5 or 6.])
6593     ;;
6594 esac
6596 if test $MOZ_PLATFORM_MAEMO; then
6597    AC_DEFINE_UNQUOTED([MOZ_PLATFORM_MAEMO], $MOZ_PLATFORM_MAEMO)
6599    if test -z "$MOZ_ENABLE_DBUS"; then
6600        AC_MSG_ERROR([DBus is required when building for Maemo])
6601    fi
6603    MOZ_GFX_OPTIMIZE_MOBILE=1
6604    MOZ_GL_DEFAULT_PROVIDER=EGL
6605    MOZ_MAEMO_LIBLOCATION=
6607    if test $MOZ_PLATFORM_MAEMO = 5; then
6608       dnl if we have Xcomposite we should also have Xdamage and Xfixes
6609       MOZ_CHECK_HEADERS([X11/extensions/Xdamage.h], [],
6610           [AC_MSG_ERROR([Couldn't find X11/extensions/Xdamage.h which is required for composited plugins.])])
6611       AC_CHECK_LIB(Xcomposite, XCompositeRedirectWindow, [XCOMPOSITE_LIBS="-lXcomposite -lXdamage -lXfixes"],
6612                    [MISSING_X="$MISSING_X -lXcomposite"], $XLIBS)
6614       AC_SUBST(XCOMPOSITE_LIBS)
6616       PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime, _LIB_FOUND=1, _LIB_FOUND=)
6617       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONMIME_LIBS"
6618       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONMIME_CFLAGS"
6619       if test -z "$_LIB_FOUND"; then
6620          AC_MSG_ERROR([Hildon Mime is required when building for Maemo])
6621       fi
6624       PKG_CHECK_MODULES(LIBOSSO,libosso, _LIB_FOUND=1, _LIB_FOUND=)
6625       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBOSSO_LIBS"
6626       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBOSSO_CFLAGS"
6627       if test -z "$_LIB_FOUND"; then
6628          AC_MSG_ERROR([LibOSSO is required when building for Maemo])
6629       fi
6631       PKG_CHECK_MODULES(LIBHILDONFM,hildon-fm-2, _LIB_FOUND=1, _LIB_FOUND=)
6632       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONFM_LIBS"
6633       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONFM_CFLAGS"
6634       if test -z "$_LIB_FOUND"; then
6635          AC_MSG_ERROR([Hildon FM-2 is required when building for Maemo])
6636       fi
6638    fi
6639    if test $MOZ_PLATFORM_MAEMO = 6; then
6641       PKG_CHECK_MODULES(LIBCONTENTMANAGER, ContentManager QtSparql,
6642                         _LIB_FOUND=1,
6643                         _LIB_FOUND=)
6644       if test "$_LIB_FOUND"; then
6645          MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTMANAGER_LIBS"
6646          MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTMANAGER_CFLAGS"
6647          MOZ_ENABLE_CONTENTMANAGER=1
6648          AC_DEFINE(MOZ_ENABLE_CONTENTMANAGER)
6649       else
6650          AC_MSG_WARN([Cannot find libcontentmanager and or QtSparql building for Maemo 6])
6651       fi
6652       AC_SUBST(MOZ_ENABLE_CONTENTMANAGER)
6654       dnl ========================================================
6655       dnl = Enable meego libcontentaction
6656       dnl ========================================================
6657       MOZ_ARG_ENABLE_BOOL(meegocontentaction,
6658       [  --enable-meegocontentaction           Enable meegocontentaction support],
6659          MOZ_MEEGOCONTENTACTION=1,
6660          MOZ_MEEGOCONTENTACTION=)
6662       if test -n "$MOZ_MEEGOCONTENTACTION"; then
6664          PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=)
6665          if test "$_LIB_FOUND"; then
6666             MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTACTION_LIBS"
6667             MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTACTION_CFLAGS"
6668             MOZ_ENABLE_CONTENTACTION=1
6669             AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
6670             AC_SUBST(MOZ_ENABLE_CONTENTACTION)
6671          fi
6672       fi
6674       MOZ_ARG_ENABLE_BOOL(meegotouch,
6675       [  --enable-meegotouch  Enable meegotouch support],
6676          MOZ_MEEGOTOUCHENABLED=1,
6677          MOZ_MEEGOTOUCHENABLED=)
6679       if test -n "$MOZ_MEEGOTOUCHENABLED"; then
6680           PKG_CHECK_MODULES(MOZ_MEEGOTOUCH, meegotouchcore, _LIB_FOUND=1, _LIB_FOUND=)
6681           if test "$_LIB_FOUND"; then
6682               MOZ_QT_CFLAGS="$MOZ_MEEGOTOUCH_CFLAGS $MOZ_QT_CFLAGS"
6683               MOZ_QT_LIBS="$MOZ_MEEGOTOUCH_LIBS $MOZ_QT_LIBS"
6684               AC_DEFINE(MOZ_ENABLE_MEEGOTOUCH)
6685           else
6686               AC_MSG_WARN([Cannot meegotouchcore-dev. Disabling Meegotouch support.])
6687           fi
6688       fi
6689    fi
6691    PKG_CHECK_MODULES(LIBLOCATION,liblocation, _LIB_FOUND=1, _LIB_FOUND=)
6692    MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBLOCATION_LIBS"
6693    MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBLOCATION_CFLAGS"
6694    if test "$_LIB_FOUND"; then
6695       MOZ_MAEMO_LIBLOCATION=1
6696       AC_DEFINE(MOZ_MAEMO_LIBLOCATION)
6697    else
6698       AC_MSG_WARN([Cannot liblocation-dev. Disabling Maemo geolocation.])
6699    fi
6700    AC_SUBST(MOZ_MAEMO_LIBLOCATION)
6702    PKG_CHECK_MODULES(LIBMEEGOTOUCHSHARE, ShareUiInterface-maemo-meegotouch >= 0.3.31 mdatauri, _LIB_FOUND=1, _LIB_FOUND=)
6703    MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBMEEGOTOUCHSHARE_LIBS"
6704    MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBMEEGOTOUCHSHARE_CFLAGS"
6705    if test "$_LIB_FOUND"; then
6706       MOZ_ENABLE_MEEGOTOUCHSHARE=1
6707       AC_DEFINE(MOZ_ENABLE_MEEGOTOUCHSHARE)
6708    else
6709       AC_MSG_WARN([Cannot find maemo-meegotouch-interfaces-dev or libmdatauri-dev. Disabling meegotouch share ui.])
6710    fi
6711    AC_SUBST(MOZ_ENABLE_MEEGOTOUCHSHARE)
6713    AC_SUBST(MOZ_PLATFORM_MAEMO_LIBS)
6714    AC_SUBST(MOZ_PLATFORM_MAEMO_CFLAGS)
6717 dnl ========================================================
6718 dnl = XRender Composite
6719 dnl ========================================================
6720 MOZ_ARG_ENABLE_BOOL(egl-xrender-composite,
6721 [  --enable-egl-xrender-composite
6722                           Enable EGL xrender composite optimizations],
6723     MOZ_EGL_XRENDER_COMPOSITE=1)
6725 if test -n "$MOZ_EGL_XRENDER_COMPOSITE"; then
6726     AC_DEFINE(MOZ_EGL_XRENDER_COMPOSITE)
6729 AC_SUBST(MOZ_EGL_XRENDER_COMPOSITE)
6731 dnl ========================================================
6732 dnl GL provider
6733 dnl ========================================================
6734 MOZ_GL_PROVIDER=
6735 MOZ_ARG_WITH_STRING(gl-provider,
6736 [  --with-gl-provider=ID
6737                           Set GL provider backend type],
6738 [ val=`echo $withval`
6739     MOZ_GL_PROVIDER="$val"])
6741 if test -n "$MOZ_GL_PROVIDER"; then
6742 MOZ_GL_DEFAULT_PROVIDER=$MOZ_GL_PROVIDER
6743 AC_SUBST(MOZ_GL_PROVIDER)
6744 AC_DEFINE_UNQUOTED(MOZ_GL_PROVIDER, GLContextProvider$MOZ_GL_PROVIDER)
6746 AC_SUBST(MOZ_GL_DEFAULT_PROVIDER)
6748 dnl ========================================================
6749 dnl = faststripe theme
6750 dnl ========================================================
6751 MOZ_ARG_ENABLE_BOOL(faststripe,
6752 [  --enable-faststripe     Use faststripe theme],
6753     MOZ_THEME_FASTSTRIPE=1,
6754     MOZ_THEME_FASTSTRIPE= )
6755 AC_SUBST(MOZ_THEME_FASTSTRIPE)
6757 dnl ========================================================
6758 dnl =
6759 dnl = Feature options that require extra sources to be pulled
6760 dnl =
6761 dnl ========================================================
6762 dnl MOZ_ARG_HEADER(Features that require extra sources)
6764 dnl ========================================================
6765 dnl =
6766 dnl = Debugging Options
6767 dnl =
6768 dnl ========================================================
6769 MOZ_ARG_HEADER(Debugging and Optimizations)
6771 dnl ========================================================
6772 dnl = Disable building with debug info.
6773 dnl = Debugging is OFF by default
6774 dnl ========================================================
6775 if test -z "$MOZ_DEBUG_FLAGS"; then
6776   MOZ_DEBUG_FLAGS="-g"
6779 MOZ_ARG_ENABLE_STRING(debug,
6780 [  --enable-debug[=DBG]    Enable building with developer debug info
6781                            (using compiler flags DBG)],
6782 [ if test "$enableval" != "no"; then
6783     MOZ_DEBUG=1
6784     if test -n "$enableval" -a "$enableval" != "yes"; then
6785         MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6786         _MOZ_DEBUG_FLAGS_SET=1
6787     fi
6788   else
6789     MOZ_DEBUG=
6790   fi ],
6791   MOZ_DEBUG=)
6793 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG -DTRACING"
6794 MOZ_ARG_WITH_STRING(debug-label,
6795 [  --with-debug-label=LABELS
6796                           Define DEBUG_<value> for each comma-separated
6797                           value given.],
6798 [ for option in `echo $withval | sed 's/,/ /g'`; do
6799     MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${option}"
6800 done])
6802 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6804 if test -n "$MOZ_DEBUG"; then
6805     AC_MSG_CHECKING([for valid debug flags])
6806     _SAVE_CFLAGS=$CFLAGS
6807     CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6808     AC_TRY_COMPILE([#include <stdio.h>],
6809         [printf("Hello World\n");],
6810         _results=yes,
6811         _results=no)
6812     AC_MSG_RESULT([$_results])
6813     if test "$_results" = "no"; then
6814         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6815     fi
6816     CFLAGS=$_SAVE_CFLAGS
6819 dnl ========================================================
6820 dnl enable mobile optimizations
6821 dnl ========================================================
6822 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
6823 [  --enable-mobile-optimize
6824                           Enable mobile optimizations],
6825     MOZ_GFX_OPTIMIZE_MOBILE=1)
6827 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
6829 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
6830     AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
6833 dnl ========================================================
6834 dnl = Enable code optimization. ON by default.
6835 dnl ========================================================
6836 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6837         MOZ_OPTIMIZE_FLAGS="-O"
6840 MOZ_ARG_ENABLE_STRING(optimize,
6841 [  --disable-optimize      Disable compiler optimization
6842   --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6843 [ if test "$enableval" != "no"; then
6844     MOZ_OPTIMIZE=1
6845     if test -n "$enableval" -a "$enableval" != "yes"; then
6846         MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6847         MOZ_OPTIMIZE=2
6848     fi
6849 else
6850     MOZ_OPTIMIZE=
6851 fi ], MOZ_OPTIMIZE=1)
6853 MOZ_SET_FRAMEPTR_FLAGS
6855 if test "$COMPILE_ENVIRONMENT"; then
6856 if test -n "$MOZ_OPTIMIZE"; then
6857     AC_MSG_CHECKING([for valid optimization flags])
6858     _SAVE_CFLAGS=$CFLAGS
6859     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6860     AC_TRY_COMPILE([#include <stdio.h>],
6861         [printf("Hello World\n");],
6862         _results=yes,
6863         _results=no)
6864     AC_MSG_RESULT([$_results])
6865     if test "$_results" = "no"; then
6866         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6867     fi
6868     CFLAGS=$_SAVE_CFLAGS
6870 fi # COMPILE_ENVIRONMENT
6872 AC_SUBST(MOZ_OPTIMIZE)
6873 AC_SUBST(MOZ_FRAMEPTR_FLAGS)
6874 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6875 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6876 AC_SUBST(MOZ_ALLOW_HEAP_EXECUTE_FLAGS)
6877 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6878 AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS)
6880 dnl ========================================================
6881 dnl = Enable generation of debug symbols
6882 dnl ========================================================
6883 MOZ_ARG_ENABLE_STRING(debug-symbols,
6884 [  --enable-debug-symbols[=DBG]
6885                           Enable debugging symbols (using compiler flags DBG)],
6886 [ if test "$enableval" != "no"; then
6887       MOZ_DEBUG_SYMBOLS=1
6888       if test -n "$enableval" -a "$enableval" != "yes"; then
6889           if test -z "$_MOZ_DEBUG_FLAGS_SET"; then
6890               MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6891           else
6892               AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
6893           fi
6894       fi
6895   else
6896       MOZ_DEBUG_SYMBOLS=
6897   fi ],
6898   MOZ_DEBUG_SYMBOLS=1)
6900 if test -n "$MOZ_DEBUG" -o -n "$MOZ_DEBUG_SYMBOLS"; then
6901     AC_DEFINE(MOZ_DEBUG_SYMBOLS)
6902     export MOZ_DEBUG_SYMBOLS
6905 dnl ========================================================
6906 dnl = Enable any treating of compile warnings as errors
6907 dnl ========================================================
6908 MOZ_ARG_ENABLE_BOOL(warnings-as-errors,
6909 [  --enable-warnings-as-errors
6910                           Enable treating of warnings as errors],
6911     MOZ_ENABLE_WARNINGS_AS_ERRORS=1,
6912     MOZ_ENABLE_WARNINGS_AS_ERRORS=)
6913 if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
6914    WARNINGS_AS_ERRORS=''
6917 dnl ========================================================
6918 dnl = Disable runtime logging checks
6919 dnl ========================================================
6920 MOZ_ARG_DISABLE_BOOL(logging,
6921 [  --disable-logging       Disable logging facilities],
6922     NS_DISABLE_LOGGING=1,
6923     NS_DISABLE_LOGGING= )
6924 if test "$NS_DISABLE_LOGGING"; then
6925     AC_DEFINE(NS_DISABLE_LOGGING)
6926 else
6927     AC_DEFINE(MOZ_LOGGING)
6930 dnl ========================================================
6931 dnl = This will enable logging of addref, release, ctor, dtor.
6932 dnl ========================================================
6933 _ENABLE_LOGREFCNT=42
6934 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6935 [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
6936     _ENABLE_LOGREFCNT=1,
6937     _ENABLE_LOGREFCNT= )
6938 if test "$_ENABLE_LOGREFCNT" = "1"; then
6939     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6940 elif test -z "$_ENABLE_LOGREFCNT"; then
6941     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6944 dnl ========================================================
6945 dnl moz_dump_painting
6946 dnl ========================================================
6947 MOZ_ARG_ENABLE_BOOL(dump-painting,
6948 [  --enable-dump-painting          Enable paint debugging.],
6949     MOZ_DUMP_PAINTING=1,
6950     MOZ_DUMP_PAINTING= )
6951 if test -n "$MOZ_DUMP_PAINTING"; then
6952     AC_DEFINE(MOZ_DUMP_PAINTING)
6953     AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
6955 if test -n "$MOZ_DEBUG"; then
6956     AC_DEFINE(MOZ_DUMP_PAINTING)
6959 dnl ========================================================
6960 dnl = Enable trace malloc
6961 dnl ========================================================
6962 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6963 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6964 [  --enable-trace-malloc   Enable malloc tracing; also disables jemalloc],
6965     NS_TRACE_MALLOC=1,
6966     NS_TRACE_MALLOC= )
6967 if test "$NS_TRACE_MALLOC"; then
6968   # Please, Mr. Linker Man, don't take away our symbol names
6969   MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6970   USE_ELF_DYNSTR_GC=
6971   AC_DEFINE(NS_TRACE_MALLOC)
6973 AC_SUBST(NS_TRACE_MALLOC)
6975 dnl ========================================================
6976 dnl = Enable jemalloc
6977 dnl ========================================================
6978 MOZ_ARG_ENABLE_BOOL(jemalloc,
6979 [  --enable-jemalloc       Replace memory allocator with jemalloc],
6980     MOZ_MEMORY=1,
6981     MOZ_MEMORY=)
6983 if test "$NS_TRACE_MALLOC"; then
6984     MOZ_MEMORY=
6986 if test "$MOZ_DMD"; then
6987     MOZ_MEMORY=
6990 if test "${OS_TARGET}" = "Android"; then
6991   dnl On Android, we use WRAP_LDFLAGS to link everything to mozglue
6992   :
6993 elif test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin" -o "${OS_TARGET}" = "OS2"; then
6994   dnl On Windows, OSX and OS2, we want to link all our binaries against mozglue
6995   if test -z "$GNU_CC"; then
6996     MOZ_GLUE_LDFLAGS='$(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
6997   else
6998     MOZ_GLUE_LDFLAGS='-L$(LIBXUL_DIST)/lib $(call EXPAND_LIBNAME,mozglue)'
6999   fi
7000 else
7001   dnl On other Unix systems, we only want to link executables against mozglue
7002   MOZ_GLUE_PROGRAM_LDFLAGS='$(MKSHLIB_FORCE_ALL) $(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
7003   dnl On other Unix systems, where mozglue is a static library, jemalloc is
7004   dnl separated for the SDK, so we need to add it here.
7005   if test "$MOZ_MEMORY" = 1 -o \( "$LIBXUL_SDK" -a -f "$LIBXUL_SDK/lib/${LIB_PREFIX}memory.${LIB_SUFFIX}" \); then
7006     MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(call EXPAND_LIBNAME_PATH,memory,$(LIBXUL_DIST)/lib)'
7007   fi
7008   MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(MKSHLIB_UNFORCE_ALL)'
7009   if test -n "$GNU_CC"; then
7010     dnl And we need mozglue symbols to be exported.
7011     MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS -rdynamic"
7012   fi
7013   if test "$MOZ_LINKER" = 1; then
7014     MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS $ZLIB_LIBS"
7015   fi
7018 if test -z "$MOZ_MEMORY"; then
7019   case "${target}" in
7020     *-mingw*)
7021       if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
7022         AC_MSG_WARN([When not building jemalloc, you need to set WIN32_REDIST_DIR to the path to the Visual C++ Redist (usually VCINSTALLDIR\redist\x86\Microsoft.VC80.CRT, for VC++ v8) if you intend to distribute your build.])
7023       fi
7024       ;;
7025   esac
7026 else
7027   dnl Don't try to run compiler tests on Windows
7028   if test "$OS_ARCH" = "WINNT"; then
7029     if test -z "$HAVE_64BIT_OS"; then
7030       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7031     else
7032       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7033     fi
7034   else
7035     AC_CHECK_SIZEOF([int *], [4])
7036     case "${ac_cv_sizeof_int_p}" in
7037     4)
7038       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7039       ;;
7040     8)
7041       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7042       ;;
7043     *)
7044       AC_MSG_ERROR([Unexpected pointer size])
7045       ;;
7046     esac
7047   fi
7049   AC_DEFINE(MOZ_MEMORY)
7050   if test -n "$MOZ_JEMALLOC"; then
7051     AC_DEFINE(MOZ_JEMALLOC)
7052   fi
7053   if test "x$MOZ_DEBUG" = "x1"; then
7054     AC_DEFINE(MOZ_MEMORY_DEBUG)
7055   fi
7056   dnl The generic feature tests that determine how to compute ncpus are long and
7057   dnl complicated.  Therefore, simply define special cpp variables for the
7058   dnl platforms we have special knowledge of.
7059   case "${target}" in
7060   *-darwin*)
7061     AC_DEFINE(MOZ_MEMORY_DARWIN)
7062     ;;
7063   *-*freebsd*)
7064     AC_DEFINE(MOZ_MEMORY_BSD)
7065     ;;
7066   *-android*|*-linuxandroid*)
7067     AC_DEFINE(MOZ_MEMORY_LINUX)
7068     AC_DEFINE(MOZ_MEMORY_ANDROID)
7069     if test -z "$gonkdir"; then
7070       _WRAP_MALLOC=1
7071     else
7072       AC_DEFINE(MOZ_MEMORY_GONK)
7073     fi
7074     MOZ_GLUE_LDFLAGS=
7075     ;;
7076   *-*linux*)
7077     AC_DEFINE(MOZ_MEMORY_LINUX)
7078     ;;
7079   *-netbsd*)
7080     AC_DEFINE(MOZ_MEMORY_BSD)
7081     ;;
7082   *-solaris*)
7083     AC_DEFINE(MOZ_MEMORY_SOLARIS)
7084     ;;
7085   *-mingw*)
7086     AC_DEFINE(MOZ_MEMORY_WINDOWS)
7087     if test -z "$MOZ_DEBUG"; then
7088       WIN32_CRT_LIBS="msvcrt.lib msvcprt.lib"
7089     else
7090       WIN32_CRT_LIBS="msvcrtd.lib msvcprtd.lib"
7091     fi
7092     dnl Look for a broken crtdll.obj
7093     WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj`
7094     lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH
7095     if grep -q '__imp__\{0,1\}free' crtdll.obj; then
7096       MOZ_GLUE_LDFLAGS='-LIBPATH:$(DIST)/lib -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt'
7097       dnl Also pass this to NSPR/NSS
7098       DLLFLAGS="$DLLFLAGS $MOZ_GLUE_LDFLAGS"
7099     else
7100       DLLFLAGS="$DLLFLAGS -LIBPATH:\$(DIST)/lib -DEFAULTLIB:mozglue"
7101     fi
7102     rm crtdll.obj
7104     export DLLFLAGS
7105     ;;
7106   *)
7107     AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7108     ;;
7109   esac
7110 fi # MOZ_MEMORY
7111 AC_SUBST(MOZ_MEMORY)
7112 AC_SUBST(MOZ_JEMALLOC)
7113 AC_SUBST(MOZ_GLUE_LDFLAGS)
7114 AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS)
7115 AC_SUBST(WIN32_CRT_LIBS)
7116 dnl Need to set this for make because NSS doesn't have configure
7117 AC_SUBST(DLLFLAGS)
7119 dnl We need to wrap dlopen and related functions on Android because we use
7120 dnl our own linker.
7121 if test "$OS_TARGET" = Android; then
7122     WRAP_LDFLAGS="${WRAP_LDFLAGS} -L$_objdir/dist/lib -lmozglue"
7123     if test -n "$MOZ_OLD_LINKER"; then
7124         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=dlopen,--wrap=dlclose,--wrap=dlerror,--wrap=dlsym,--wrap=dladdr"
7125     fi
7126     WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=getaddrinfo,--wrap=freeaddrinfo,--wrap=gai_strerror"
7127     WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=fork,--wrap=pthread_atfork,--wrap=raise,--wrap=PR_GetEnv,--wrap=PR_SetEnv"
7130 dnl ========================================================
7131 dnl = Use malloc wrapper lib
7132 dnl ========================================================
7133 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
7134 [  --enable-wrap-malloc    Wrap malloc calls (gnu linker only)],
7135     _WRAP_MALLOC=1,
7136     _WRAP_MALLOC= )
7138 if test -n "$_WRAP_MALLOC"; then
7139     if test -n "$GNU_CC"; then
7140         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=malloc,--wrap=calloc,--wrap=valloc,--wrap=free,--wrap=realloc,--wrap=memalign"
7141         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=__builtin_new,--wrap=__builtin_vec_new,--wrap=__builtin_delete,--wrap=__builtin_vec_delete"
7142         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=strdup,--wrap=strndup"
7143         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=posix_memalign,--wrap=malloc_usable_size"
7144         dnl Wrap operator new and operator delete on Android.
7145         if test "$OS_TARGET" = "Android"; then
7146             WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_Znwj,--wrap=_Znaj,--wrap=_ZdlPv,--wrap=_ZdaPv"
7147         fi
7148     else
7149         AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains])
7150     fi
7153 dnl ========================================================
7154 dnl = Location of malloc wrapper lib
7155 dnl ========================================================
7156 MOZ_ARG_WITH_STRING(wrap-malloc,
7157 [  --with-wrap-malloc=DIR  Location of malloc wrapper library],
7158     WRAP_LDFLAGS="${WRAP_LDFLAGS} $withval")
7160 dnl ========================================================
7161 dnl = Use JS Call tracing
7162 dnl ========================================================
7163 MOZ_ARG_ENABLE_BOOL(trace-jscalls,
7164 [  --enable-trace-jscalls  Enable JS call enter/exit callback (default=no)],
7165     MOZ_TRACE_JSCALLS=1,
7166     MOZ_TRACE_JSCALLS= )
7167 if test -n "$MOZ_TRACE_JSCALLS"; then
7168     AC_DEFINE(MOZ_TRACE_JSCALLS)
7171 dnl ========================================================
7172 dnl = Use incremental GC
7173 dnl ========================================================
7174 JSGC_INCREMENTAL=1
7175 MOZ_ARG_DISABLE_BOOL(gcincremental,
7176 [  --disable-gcincremental Disable incremental GC],
7177     JSGC_INCREMENTAL= )
7178 if test -n "$JSGC_INCREMENTAL"; then
7179     AC_DEFINE(JSGC_INCREMENTAL)
7182 dnl ========================================================
7183 dnl ETW - Event Tracing for Windows
7184 dnl ========================================================
7185 MOZ_ARG_ENABLE_BOOL(ETW,
7186 [  --enable-ETW            Enable ETW (Event Tracing for Windows) event reporting],
7187     MOZ_ETW=1,
7188     MOZ_ETW= )
7189 if test -n "$MOZ_ETW"; then
7190     AC_DEFINE(MOZ_ETW)
7193 if test -n "$MOZ_ETW"; then
7194     if test -z "$MOZ_WINSDK_TARGETVER"; then
7195         AC_MSG_ERROR([--enable-ETW is only valid on Windows])
7196     fi
7199 dnl ========================================================
7200 dnl Zealous JavaScript GC
7201 dnl ========================================================
7202 MOZ_ARG_ENABLE_BOOL(gczeal,
7203 [  --enable-gczeal         Enable zealous JavaScript GCing],
7204     JS_GC_ZEAL=1,
7205     JS_GC_ZEAL= )
7206 if test -n "$JS_GC_ZEAL"; then
7207     AC_DEFINE(JS_GC_ZEAL)
7210 dnl ========================================================
7211 dnl JS opt-mode assertions and minidump instrumentation
7212 dnl ========================================================
7213 MOZ_ARG_ENABLE_BOOL(js-diagnostics,
7214 [  --enable-js-diagnostics
7215                           Enable JS diagnostic assertions and breakpad data],
7216     JS_CRASH_DIAGNOSTICS=1,
7217     JS_CRASH_DIAGNOSTICS= )
7218 if test -n "$JS_CRASH_DIAGNOSTICS"; then
7219     AC_DEFINE(JS_CRASH_DIAGNOSTICS)
7222 MOZ_CHECK_CCACHE
7224 dnl ========================================================
7225 dnl = Enable static checking using gcc-dehydra
7226 dnl ========================================================
7228 MOZ_ARG_WITH_STRING(static-checking,
7229 [  --with-static-checking=path/to/gcc_dehydra.so
7230                           Enable static checking of code using GCC-dehydra],
7231     DEHYDRA_PATH=$withval,
7232     DEHYDRA_PATH= )
7234 if test -n "$DEHYDRA_PATH"; then
7235     if test ! -f "$DEHYDRA_PATH"; then
7236         AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7237     fi
7238     AC_DEFINE(NS_STATIC_CHECKING)
7240 AC_SUBST(DEHYDRA_PATH)
7242 dnl ========================================================
7243 dnl = Enable stripping of libs & executables
7244 dnl ========================================================
7245 MOZ_ARG_ENABLE_BOOL(strip,
7246 [  --enable-strip          Enable stripping of libs & executables ],
7247     ENABLE_STRIP=1,
7248     ENABLE_STRIP= )
7250 dnl ========================================================
7251 dnl = Enable stripping of libs & executables when packaging
7252 dnl ========================================================
7253 MOZ_ARG_ENABLE_BOOL(install-strip,
7254 [  --enable-install-strip  Enable stripping of libs & executables when packaging ],
7255     PKG_SKIP_STRIP= ,
7256     PKG_SKIP_STRIP=1)
7258 dnl ========================================================
7259 dnl = --enable-elf-dynstr-gc
7260 dnl ========================================================
7261 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
7262 [  --enable-elf-dynstr-gc  Enable elf dynstr garbage collector (opt builds only)],
7263     USE_ELF_DYNSTR_GC=1,
7264     USE_ELF_DYNSTR_GC= )
7266 dnl ========================================================
7267 dnl = --disable-elf-hack
7268 dnl ========================================================
7270 USE_ELF_HACK=1
7271 MOZ_ARG_DISABLE_BOOL(elf-hack,
7272 [  --disable-elf-hack      Disable elf hacks],
7273     USE_ELF_HACK=,
7274     USE_ELF_HACK=1)
7276 # Disable elf hack for profiling because the built in profiler
7277 # doesn't read the segments properly with elf hack. This is
7278 # temporary and should be fixed soon in the profiler.
7279 if test "$MOZ_PROFILING" = 1; then
7280   USE_ELF_HACK=
7283 # Only enable elfhack where supported
7284 if test "$USE_ELF_HACK" = 1; then
7285     case "${HOST_OS_ARCH},${OS_ARCH}" in
7286     Linux,Linux)
7287         case "${CPU_ARCH}" in
7288         arm | x86 | x86_64)
7289             USE_ELF_HACK=1
7290             ;;
7291         *)
7292             USE_ELF_HACK=
7293             ;;
7294         esac
7295         ;;
7296     *)
7297         USE_ELF_HACK=
7298         ;;
7299     esac
7302 if test "$USE_ELF_HACK" = 1; then
7303     dnl PT_GNU_RELRO segment makes the dynamic linker set a read-only flag on
7304     dnl memory addresses it maps to. The result is that by the time elfhack
7305     dnl kicks in, it is not possible to apply relocations because of that,
7306     dnl thus elfhack effectively skips relocations inside the PT_GNU_RELRO
7307     dnl segment. It makes elfhack mostly useless, so considering the problems
7308     dnl we have we PT_GNU_RELRO (e.g. bug 664366), and until elfhack can deal
7309     dnl with PT_GNU_RELRO segments, it's just simpler to disable elfhack when
7310     dnl the linker creates PT_GNU_RELRO segments.
7311     AC_CACHE_CHECK([whether linker creates PT_GNU_RELRO segments],
7312         LINK_WITH_PT_GNU_RELRO,
7313         [echo "int main() {return 0;}" > conftest.${ac_ext}
7314          if AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.${ac_ext} $LIBS 1>&2) &&
7315             test -s conftest${ac_exeext}; then
7316             if ${TOOLCHAIN_PREFIX}readelf -l conftest${ac_exeext} | grep GNU_RELRO > /dev/null; then
7317                 LINK_WITH_PT_GNU_RELRO=yes
7318             else
7319                 LINK_WITH_PT_GNU_RELRO=no
7320             fi
7321          else
7322              dnl We really don't expect to get here, but just in case
7323              AC_ERROR([couldn't compile a simple C file])
7324          fi
7325          rm -rf conftest*])
7326     if test "$LINK_WITH_PT_GNU_RELRO" = yes; then
7327         AC_MSG_WARN([Disabling elfhack])
7328         USE_ELF_HACK=
7329     fi
7332 dnl ========================================================
7333 dnl = libstdc++ compatibility hacks
7334 dnl ========================================================
7336 STDCXX_COMPAT=
7337 MOZ_ARG_ENABLE_BOOL(stdcxx-compat,
7338 [  --enable-stdcxx-compat  Enable compatibility with older libstdc++],
7339     STDCXX_COMPAT=1)
7341 AC_SUBST(STDCXX_COMPAT)
7343 if test -n "$STDCXX_COMPAT"; then
7344    eval $(CXX="$CXX" $PYTHON $_topsrcdir/build/autoconf/libstdcxx.py)
7345    AC_SUBST(MOZ_LIBSTDCXX_TARGET_VERSION)
7346    AC_SUBST(MOZ_LIBSTDCXX_HOST_VERSION)
7349 dnl ========================================================
7350 dnl =
7351 dnl = Profiling and Instrumenting
7352 dnl =
7353 dnl ========================================================
7354 MOZ_ARG_HEADER(Profiling and Instrumenting)
7356 dnl ========================================================
7357 dnl = Enable runtime visual profiling logger
7358 dnl ========================================================
7359 MOZ_ARG_ENABLE_BOOL(visual-event-tracer,
7360 [  --enable-visual-event-tracer   Enable visual event tracer instrumentation],
7361     MOZ_VISUAL_EVENT_TRACER=1,
7362     MOZ_VISUAL_EVENT_TRACER=)
7363 if test -n "$MOZ_VISUAL_EVENT_TRACER"; then
7364     AC_DEFINE(MOZ_VISUAL_EVENT_TRACER)
7367 dnl ========================================================
7368 dnl Turn on reflow counting
7369 dnl ========================================================
7370 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7371 [  --enable-reflow-perf    Enable reflow performance tracing],
7372     MOZ_REFLOW_PERF=1,
7373     MOZ_REFLOW_PERF= )
7374 if test -n "$MOZ_REFLOW_PERF"; then
7375     AC_DEFINE(MOZ_REFLOW_PERF)
7378 dnl ========================================================
7379 dnl Enable code size metrics.
7380 dnl ========================================================
7381 MOZ_ARG_ENABLE_BOOL(codesighs,
7382 [  --enable-codesighs      Enable code size analysis tools],
7383     _ENABLE_CODESIGHS=1,
7384     _ENABLE_CODESIGHS= )
7385 if test -n "$_ENABLE_CODESIGHS"; then
7386     if test -d $srcdir/tools/codesighs; then
7387         MOZ_MAPINFO=1
7388     else
7389         AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
7390     fi
7393 dnl ========================================================
7394 dnl = Enable Radio Interface for B2G (Gonk usually)
7395 dnl ========================================================
7396 MOZ_ARG_ENABLE_BOOL(b2g-ril,
7397 [  --enable-b2g-ril      Set compile flags necessary for testing B2G Radio Interface Layer via network sockets ],
7398     MOZ_B2G_RIL=1,
7399     MOZ_B2G_RIL= )
7400 if test -n "$MOZ_B2G_RIL"; then
7401     AC_DEFINE(MOZ_B2G_RIL)
7403 AC_SUBST(MOZ_B2G_RIL)
7405 dnl ========================================================
7406 dnl = Enable Radio FM for B2G (Gonk usually)
7407 dnl ========================================================
7408 if test -n "$MOZ_B2G_FM"; then
7409     AC_DEFINE(MOZ_B2G_FM)
7411 AC_SUBST(MOZ_B2G_FM)
7413 dnl ========================================================
7414 dnl = Enable Bluetooth Interface for B2G (Gonk usually)
7415 dnl ========================================================
7416 MOZ_ARG_ENABLE_BOOL(b2g-bt,
7417 [  --enable-b2g-bt      Set compile flags necessary for compiling Bluetooth API for B2G ],
7418     MOZ_B2G_BT=1,
7419     MOZ_B2G_BT= )
7420 if test -n "$MOZ_B2G_BT"; then
7421     AC_DEFINE(MOZ_B2G_BT)
7423 AC_SUBST(MOZ_B2G_BT)
7425 dnl ========================================================
7426 dnl = Enable Support for System Messages API
7427 dnl ========================================================
7428 if test -n "$MOZ_SYS_MSG"; then
7429     AC_DEFINE(MOZ_SYS_MSG)
7431 AC_SUBST(MOZ_SYS_MSG)
7433 dnl ========================================================
7434 dnl = Enable Camera Interface for B2G (Gonk usually)
7435 dnl ========================================================
7436 MOZ_ARG_ENABLE_BOOL(b2g-camera,
7437 [  --enable-b2g-camera      Set compile flags necessary for compiling camera API for B2G ],
7438     MOZ_B2G_CAMERA=1,
7439     MOZ_B2G_CAMERA= )
7440 if test -n "$MOZ_B2G_CAMERA"; then
7441    AC_DEFINE(MOZ_B2G_CAMERA)
7443 AC_SUBST(MOZ_B2G_CAMERA)
7445 dnl ========================================================
7446 dnl = Enable Support for Payment API
7447 dnl ========================================================
7448 if test -n "$MOZ_PAY"; then
7449     AC_DEFINE(MOZ_PAY)
7451 AC_SUBST(MOZ_PAY)
7453 dnl ========================================================
7454 dnl = Support for demangling undefined symbols
7455 dnl ========================================================
7456 if test -z "$SKIP_LIBRARY_CHECKS"; then
7457     AC_LANG_SAVE
7458     AC_LANG_CPLUSPLUS
7459     AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7460     AC_LANG_RESTORE
7463 # Demangle only for debug or trace-malloc builds
7464 MOZ_DEMANGLE_SYMBOLS=
7465 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
7466     MOZ_DEMANGLE_SYMBOLS=1
7467     AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7469 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7471 dnl ========================================================
7472 dnl = Support for gcc stack unwinding (from gcc 3.3)
7473 dnl ========================================================
7474 if test -z "$SKIP_LIBRARY_CHECKS"; then
7475     MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7478 dnl ========================================================
7479 dnl JIT observers
7480 dnl ========================================================
7482 MOZ_ARG_WITH_STRING(jitreport-granularity,
7483 [  --jitreport-granularity=N
7484                            Default granularity at which to report JIT code
7485                            to external tools
7486                              0 - no info
7487                              1 - code ranges for whole functions only
7488                              2 - per-line information
7489                              3 - per-op information],
7490   JITREPORT_GRANULARITY=$withval,
7491   JITREPORT_GRANULARITY=3)
7493 AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY)
7495 dnl ========================================================
7496 dnl =
7497 dnl = Misc. Options
7498 dnl =
7499 dnl ========================================================
7500 MOZ_ARG_HEADER(Misc. Options)
7502 dnl ========================================================
7503 dnl update xterm title
7504 dnl ========================================================
7505 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7506 [  --enable-xterm-updates  Update XTERM titles with current command.],
7507     MOZ_UPDATE_XTERM=1,
7508     MOZ_UPDATE_XTERM= )
7510 dnl =========================================================
7511 dnl = Chrome format
7512 dnl =========================================================
7513 MOZ_ARG_ENABLE_STRING([chrome-format],
7514 [  --enable-chrome-format=jar|flat|both|symlink|omni
7515                           Select FORMAT of chrome files (default=jar)],
7516     MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7518 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7519     MOZ_CHROME_FILE_FORMAT=jar
7522 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
7523     test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7524     test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
7525     test "$MOZ_CHROME_FILE_FORMAT" != "both" &&
7526     test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7527     AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, symlink, or omni])
7530 dnl =========================================================
7531 dnl Omnijar packaging (bug 552121)
7532 dnl =========================================================
7533 dnl Omnijar packaging is compatible with flat packaging.
7534 dnl In unpackaged builds, omnijar looks for files as if
7535 dnl things were flat packaged. After packaging, all files
7536 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7537 dnl is set to flat since putting files into jars is only
7538 dnl done during packaging with omnijar.
7539 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7540     MOZ_OMNIJAR=1
7541     AC_DEFINE(MOZ_OMNIJAR)
7542     if test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "OS2" -o "$OS_TARGET" = "Android"; then
7543         MOZ_CHROME_FILE_FORMAT=flat
7544     else
7545         MOZ_CHROME_FILE_FORMAT=symlink
7546     fi
7547 elif test "$MOZ_CHROME_FILE_FORMAT" = "jar"; then
7548     AC_DEFINE(MOZ_CHROME_FILE_FORMAT_JAR)
7551 OMNIJAR_NAME=omni.ja
7552 AC_SUBST(OMNIJAR_NAME)
7553 AC_SUBST(MOZ_OMNIJAR)
7555 dnl ========================================================
7556 dnl = Define default location for MOZILLA_FIVE_HOME
7557 dnl ========================================================
7558 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7559 [  --with-default-mozilla-five-home
7560                           Set the default value for MOZILLA_FIVE_HOME],
7561 [ val=`echo $withval`
7562   AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7564 dnl ========================================================
7565 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7566 dnl ========================================================
7567 MOZ_ARG_WITH_STRING(user-appdir,
7568 [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
7569 [ val=`echo $withval`
7570 if echo "$val" | grep "\/" >/dev/null; then
7571     AC_MSG_ERROR("Homedir must be single relative path.")
7572 else
7573     MOZ_USER_DIR="$val"
7574 fi])
7576 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7578 dnl ========================================================
7579 dnl = Doxygen configuration
7580 dnl ========================================================
7581 dnl Use commas to specify multiple dirs to this arg
7582 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7583 MOZ_ARG_WITH_STRING(doc-input-dirs,
7584 [  --with-doc-input-dirs=DIRS
7585                           Header/idl dirs to create docs from],
7586 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7587 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7589 dnl Use commas to specify multiple dirs to this arg
7590 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7591 MOZ_ARG_WITH_STRING(doc-include-dirs,
7592 [  --with-doc-include-dirs=DIRS
7593                           Include dirs to preprocess doc headers],
7594 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7595 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7597 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7598 MOZ_ARG_WITH_STRING(doc-output-dir,
7599 [  --with-doc-output-dir=DIR
7600                           Dir to generate docs into],
7601 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7602 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7604 if test -z "$SKIP_COMPILER_CHECKS"; then
7605 dnl ========================================================
7606 dnl =
7607 dnl = Compiler Options
7608 dnl =
7609 dnl ========================================================
7610 MOZ_ARG_HEADER(Compiler Options)
7612 dnl ========================================================
7613 dnl Check for gcc -pipe support
7614 dnl ========================================================
7615 AC_MSG_CHECKING([for -pipe support])
7616 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
7617     dnl Any gcc that supports firefox supports -pipe.
7618     CFLAGS="$CFLAGS -pipe"
7619     CXXFLAGS="$CXXFLAGS -pipe"
7620     AC_MSG_RESULT([yes])
7621 else
7622     AC_MSG_RESULT([no])
7625 dnl ========================================================
7626 dnl Profile guided optimization (gcc checks)
7627 dnl ========================================================
7628 dnl Test for profiling options
7629 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
7631 _SAVE_CFLAGS="$CFLAGS"
7632 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
7634 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
7635 AC_TRY_COMPILE([], [return 0;],
7636                [ PROFILE_GEN_CFLAGS="-fprofile-generate"
7637                  result="yes" ], result="no")
7638 AC_MSG_RESULT([$result])
7640 if test $result = "yes"; then
7641   PROFILE_GEN_LDFLAGS="-fprofile-generate"
7642   PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch"
7643   PROFILE_USE_LDFLAGS="-fprofile-use"
7646 CFLAGS="$_SAVE_CFLAGS"
7648 if test -n "$INTEL_CC"; then
7649   PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
7650   PROFILE_GEN_LDFLAGS=
7651   PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
7652   PROFILE_USE_LDFLAGS=
7655 dnl Sun Studio on Solaris
7656 if test "$SOLARIS_SUNPRO_CC"; then
7657   PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
7658   PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7659   PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7660   PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7663 AC_SUBST(PROFILE_GEN_CFLAGS)
7664 AC_SUBST(PROFILE_GEN_LDFLAGS)
7665 AC_SUBST(PROFILE_USE_CFLAGS)
7666 AC_SUBST(PROFILE_USE_LDFLAGS)
7668 AC_LANG_CPLUSPLUS
7670 dnl ========================================================
7671 dnl Test for -pedantic bustage
7672 dnl ========================================================
7673 MOZ_ARG_DISABLE_BOOL(pedantic,
7674 [  --disable-pedantic      Issue all warnings demanded by strict ANSI C ],
7675 _PEDANTIC= )
7676 if test "$_PEDANTIC"; then
7677     _SAVE_CXXFLAGS=$CXXFLAGS
7678     CXXFLAGS="$CXXFLAGS -pedantic ${_WARNINGS_CXXFLAGS} -Wno-long-long"
7679     AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
7680     AC_TRY_COMPILE([$configure_static_assert_macros],
7681                    [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
7682                    result="no", result="yes" )
7683     AC_MSG_RESULT([$result])
7684     CXXFLAGS="$_SAVE_CXXFLAGS"
7686     case "$result" in
7687     no)
7688         _WARNINGS_CFLAGS="-pedantic ${_WARNINGS_CFLAGS} -Wno-long-long"
7689         _WARNINGS_CXXFLAGS="-pedantic ${_WARNINGS_CXXFLAGS} -Wno-long-long"
7690         ;;
7691     yes)
7692         AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic.  Reconfigure using --disable-pedantic. ])
7693         ;;
7694     esac
7697 dnl ========================================================
7698 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7699 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7700 dnl raw pointers in nsCOMPtr.h.  (VC++ has the same bug.)
7701 dnl ========================================================
7702 _SAVE_CXXFLAGS=$CXXFLAGS
7703 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7704 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7705     ac_nscap_nonconst_opeq_bug,
7706     [AC_TRY_COMPILE([
7707                       template <class T>
7708                       class Pointer
7709                         {
7710                         public:
7711                           T* myPtr;
7712                         };
7714                       template <class T, class U>
7715                       int operator==(const Pointer<T>& rhs, U* lhs)
7716                         {
7717                           return rhs.myPtr == lhs;
7718                         }
7720                       template <class T, class U>
7721                       int operator==(const Pointer<T>& rhs, const U* lhs)
7722                         {
7723                           return rhs.myPtr == lhs;
7724                         }
7725                     ],
7726                     [
7727                       Pointer<int> foo;
7728                       const int* bar;
7729                       return foo == bar;
7730                     ],
7731                     ac_nscap_nonconst_opeq_bug="no",
7732                     ac_nscap_nonconst_opeq_bug="yes")])
7733 CXXFLAGS="$_SAVE_CXXFLAGS"
7735 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7736     AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7738 fi # ! SKIP_COMPILER_CHECKS
7740 AC_DEFINE(CPP_THROW_NEW, [throw()])
7741 AC_LANG_C
7743 if test "$COMPILE_ENVIRONMENT"; then
7744 MOZ_EXPAND_LIBS
7745 fi # COMPILE_ENVIRONMENT
7747 dnl ========================================================
7748 dnl =
7749 dnl = Build depencency options
7750 dnl =
7751 dnl ========================================================
7752 MOZ_ARG_HEADER(Build dependencies)
7754 if test "$GNU_CC" -a "$GNU_CXX"; then
7755   _DEPEND_CFLAGS='$(filter-out %/.pp,-MD -MF $(MDDEPDIR)/$(@F).pp)'
7756 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7757 elif test "$SOLARIS_SUNPRO_CC"; then
7758   _DEPEND_CFLAGS=
7759 else
7760   dnl Don't override this for MSVC
7761   if test -z "$_WIN32_MSVC"; then
7762     _USE_CPP_INCLUDE_FLAG=
7763     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7764     _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7765   else
7766     echo '#include <stdio.h>' > dummy-hello.c
7767     changequote(,)
7768     CL_INCLUDES_PREFIX=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/^\([^:]*:[^:]*:\).*stdio.h$/\1/p'`
7769     changequote([,])
7770     if test -z "$CL_INCLUDES_PREFIX"; then
7771         AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
7772     fi
7773     AC_SUBST(CL_INCLUDES_PREFIX)
7774     rm -f dummy-hello.c
7775   fi
7778 dnl ========================================================
7779 dnl =
7780 dnl = Static Build Options
7781 dnl =
7782 dnl ========================================================
7783 MOZ_ARG_HEADER(Static build options)
7785 # split JS out by default to avoid VS2005 PGO crash (bug 591836).
7786 if test "$OS_ARCH" = "WINNT" -a "$CPU_ARCH" != "x86_64" ; then
7787   ENABLE_SHARED_JS=1
7790 MOZ_ARG_ENABLE_BOOL(shared-js,
7791 [  --enable-shared-js
7792                           Create a shared JavaScript library.],
7793     ENABLE_SHARED_JS=1,
7794     ENABLE_SHARED_JS=)
7796 if test -n "$ENABLE_SHARED_JS"; then
7797   JS_SHARED_LIBRARY=1
7798   MOZ_JS_LIBS="$MOZ_JS_SHARED_LIBS"
7799 else
7800   MOZ_JS_LIBS="$MOZ_JS_STATIC_LIBS"
7801   AC_DEFINE(MOZ_STATIC_JS)
7803 AC_SUBST(JS_SHARED_LIBRARY)
7805 AC_SUBST(LIBXUL_LIBS)
7806 XPCOM_LIBS="$LIBXUL_LIBS"
7808 dnl ========================================================
7809 dnl =
7810 dnl = Standalone module options
7811 dnl =
7812 dnl ========================================================
7813 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7815 dnl Check for GLib.
7816 dnl ========================================================
7818 if test -z "$SKIP_PATH_CHECKS"; then
7819 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
7820     if test "$MOZ_ENABLE_GTK2" -o "$USE_ELF_DYNSTR_GC" ; then
7821         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7822     fi
7826 if test -z "${GLIB_GMODULE_LIBS}" \
7827    -a -n "${GLIB_CONFIG}"\
7828     -a "${GLIB_CONFIG}" != no\
7829 ; then
7830     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7833 AC_SUBST(GLIB_CFLAGS)
7834 AC_SUBST(GLIB_LIBS)
7835 AC_SUBST(GLIB_GMODULE_LIBS)
7837 dnl ========================================================
7838 dnl Graphics checks.
7839 dnl ========================================================
7841 if test "${OS_TARGET}" = "WINNT" -o "${OS_ARCH}" = "Darwin" -o "${MOZ_WIDGET_TOOLKIT}" = "android" -o "${MOZ_WIDGET_TOOLKIT}" = "gtk2"; then
7842 MOZ_ENABLE_SKIA=1
7843 else
7844 MOZ_ENABLE_SKIA=
7847 MOZ_ARG_ENABLE_BOOL(skia,
7848 [  --enable-skia   Enable use of Skia],
7849 MOZ_ENABLE_SKIA=1,
7850 MOZ_ENABLE_SKIA=)
7852 if test "$USE_FC_FREETYPE"; then
7853     if test "$COMPILE_ENVIRONMENT"; then
7854         dnl ========================================================
7855         dnl = Check for freetype2 and its functionality
7856         dnl ========================================================
7857         PKG_CHECK_MODULES(FT2, freetype2 >= 6.1.0, _HAVE_FREETYPE2=1, _HAVE_FREETYPE2=)
7859         if test "$_HAVE_FREETYPE2"; then
7860             _SAVE_LIBS="$LIBS"
7861             _SAVE_CFLAGS="$CFLAGS"
7862             LIBS="$LIBS $FT2_LIBS"
7863             CFLAGS="$CFLAGS $FT2_CFLAGS"
7865             AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
7866                 ac_cv_member_FT_Bitmap_Size_y_ppem,
7867                 [AC_TRY_COMPILE([#include <ft2build.h>
7868                                  #include FT_FREETYPE_H],
7869                                 [FT_Bitmap_Size s;
7870                                  if (sizeof s.y_ppem) return 0;
7871                                  return 1],
7872                                 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
7873                                 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
7874             if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
7875                 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
7876             else
7877                 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
7878             fi
7879             AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
7880                                $HAVE_FT_BITMAP_SIZE_Y_PPEM,
7881                                [FT_Bitmap_Size structure includes y_ppem field])
7883             AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
7885             LIBS="$_SAVE_LIBS"
7886             CFLAGS="$_SAVE_CFLAGS"
7887         fi
7889         _SAVE_CPPFLAGS="$CPPFLAGS"
7890         CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
7891         MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
7892             [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
7893         CPPFLAGS="$_SAVE_CPPFLAGS"
7894     else
7895         AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
7896     fi
7898     PKG_CHECK_MODULES(_FONTCONFIG, fontconfig,
7899     [
7900         if test "$MOZ_PANGO"; then
7901             MOZ_PANGO_CFLAGS="$MOZ_PANGO_CFLAGS $_FONTCONFIG_CFLAGS"
7902             MOZ_PANGO_LIBS="$MOZ_PANGO_LIBS $_FONTCONFIG_LIBS"
7903         else
7904             FT2_CFLAGS="$FT2_CFLAGS $_FONTCONFIG_CFLAGS"
7905             FT2_LIBS="$FT2_LIBS $_FONTCONFIG_LIBS"
7906         fi
7907     ])
7910 dnl ========================================================
7911 dnl Check for pixman and cairo
7912 dnl ========================================================
7914 MOZ_TREE_CAIRO=1
7915 MOZ_ARG_ENABLE_BOOL(system-cairo,
7916 [  --enable-system-cairo   Use system cairo (located with pkgconfig)],
7917 MOZ_TREE_CAIRO=,
7918 MOZ_TREE_CAIRO=1 )
7920 MOZ_TREE_PIXMAN=1
7921 MOZ_ARG_ENABLE_BOOL(system-pixman,
7922 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
7923 MOZ_TREE_PIXMAN=,
7924 MOZ_TREE_PIXMAN=force,
7925 MOZ_TREE_PIXMAN=1 )
7927 # System cairo depends on system pixman
7928 if test "$MOZ_TREE_PIXMAN" = "force"; then
7929     if test -z "$MOZ_TREE_CAIRO"; then
7930         AC_MSG_ERROR([--disable-system-pixman is incompatible with --enable-system-cairo.])
7931     else
7932         MOZ_TREE_PIXMAN=1
7933     fi
7934 elif test -z "$MOZ_TREE_CAIRO"; then
7935     MOZ_TREE_PIXMAN=
7938 if test "$MOZ_TREE_PIXMAN"; then
7939     AC_DEFINE(MOZ_TREE_PIXMAN)
7940     MOZ_PIXMAN_CFLAGS=""
7941     MOZ_PIXMAN_LIBS='$(call EXPAND_LIBNAME_PATH,mozlibpixman,$(DEPTH)/gfx/cairo/libpixman/src)'
7942 else
7943     PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.19.2)
7944     MOZ_PIXMAN_CFLAGS="$PIXMAN_CFLAGS"
7945     MOZ_PIXMAN_LIBS="$PIXMAN_LIBS"
7947 AC_SUBST(MOZ_PIXMAN_CFLAGS)
7948 AC_SUBST(MOZ_PIXMAN_LIBS)
7950 # Check for headers defining standard int types.
7951 MOZ_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
7953 if test "$MOZ_TREE_CAIRO"; then
7954     MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
7955     AC_DEFINE(MOZ_TREE_CAIRO)
7957     # For now we assume that we will have a uint64_t available through
7958     # one of the above headers or mozstdint.h.
7959     AC_DEFINE(HAVE_UINT64_T)
7961     # Define macros for cairo-features.h
7962     TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
7963     if test "$MOZ_X11"; then
7964         XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
7965         XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
7966         PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
7967         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7968         MOZ_ENABLE_CAIRO_FT=1
7969         CAIRO_FT_CFLAGS="$FT2_CFLAGS"
7970     fi
7971     case "$MOZ_WIDGET_TOOLKIT" in
7972       qt)
7973         QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
7974         ;;
7975       cocoa | uikit)
7976         QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
7977         QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
7978         QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
7979         ;;
7980       windows)
7981         WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
7982         WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
7983         if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
7984             WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
7985             WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
7986             MOZ_ENABLE_D2D_SURFACE=1
7987             MOZ_ENABLE_DWRITE_FONT=1
7988         else
7989             WIN32_DWRITE_FONT_FEATURE=
7990             WIN32_D2D_SURFACE_FEATURE=
7991         fi
7993         MOZ_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
7995         dnl D3D10 Layers depend on D2D Surfaces.
7996         if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
7997           MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
7998         fi
7999         ;;
8000       os2)
8001         OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
8002         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8003         MOZ_ENABLE_CAIRO_FT=1
8004         CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
8005         CAIRO_FT_OSLIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
8006         CAIRO_FT_LIBS=""
8007         ;;
8008     esac
8009     if test "$USE_FC_FREETYPE"; then
8010         FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
8011     fi
8012     AC_SUBST(MOZ_ENABLE_CAIRO_FT)
8013     AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
8014     AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
8015     AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
8016     AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
8017     AC_SUBST(CAIRO_FT_CFLAGS)
8019     AC_SUBST(PS_SURFACE_FEATURE)
8020     AC_SUBST(PDF_SURFACE_FEATURE)
8021     AC_SUBST(SVG_SURFACE_FEATURE)
8022     AC_SUBST(XLIB_SURFACE_FEATURE)
8023     AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
8024     AC_SUBST(QUARTZ_SURFACE_FEATURE)
8025     AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
8026     AC_SUBST(WIN32_SURFACE_FEATURE)
8027     AC_SUBST(OS2_SURFACE_FEATURE)
8028     AC_SUBST(DIRECTFB_SURFACE_FEATURE)
8029     AC_SUBST(FT_FONT_FEATURE)
8030     AC_SUBST(FC_FONT_FEATURE)
8031     AC_SUBST(WIN32_FONT_FEATURE)
8032     AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
8033     AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
8034     AC_SUBST(QUARTZ_FONT_FEATURE)
8035     AC_SUBST(PNG_FUNCTIONS_FEATURE)
8036     AC_SUBST(QT_SURFACE_FEATURE)
8037     AC_SUBST(TEE_SURFACE_FEATURE)
8039     MOZ_CAIRO_LIBS='$(call EXPAND_LIBNAME_PATH,mozcairo,$(DEPTH)/gfx/cairo/cairo/src)'" $CAIRO_FT_LIBS"
8040     MOZ_CAIRO_OSLIBS='${CAIRO_FT_OSLIBS}'
8042     if test "$MOZ_X11"; then
8043         MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
8044     fi
8046     CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
8047 else
8048     PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION)
8049     MOZ_CAIRO_CFLAGS="$CAIRO_CFLAGS"
8050     MOZ_CAIRO_LIBS="$CAIRO_LIBS"
8051     PKG_CHECK_MODULES(CAIRO_TEE, cairo-tee >= $CAIRO_VERSION)
8052     if test "$MOZ_X11"; then
8053         PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
8054         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
8055         MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_LIBS"
8056         MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
8057     fi
8060 AC_SUBST(MOZ_TREE_CAIRO)
8061 AC_SUBST(MOZ_CAIRO_CFLAGS)
8062 AC_SUBST(MOZ_CAIRO_LIBS)
8063 AC_SUBST(MOZ_CAIRO_OSLIBS)
8064 AC_SUBST(MOZ_TREE_PIXMAN)
8066 dnl ========================================================
8067 dnl qcms
8068 dnl ========================================================
8070 QCMS_LIBS='$(DEPTH)/gfx/qcms/$(LIB_PREFIX)mozqcms.$(LIB_SUFFIX)'
8071 AC_SUBST(QCMS_LIBS)
8073 dnl ========================================================
8074 dnl HarfBuzz
8075 dnl ========================================================
8076 MOZ_HARFBUZZ_LIBS='$(DEPTH)/gfx/harfbuzz/src/$(LIB_PREFIX)mozharfbuzz.$(LIB_SUFFIX)'
8077 AC_SUBST(MOZ_HARFBUZZ_LIBS)
8079 dnl ========================================================
8080 dnl SIL Graphite
8081 dnl ========================================================
8082 if test "$MOZ_GRAPHITE"; then
8083   MOZ_GRAPHITE_LIBS='$(DEPTH)/gfx/graphite2/src/$(LIB_PREFIX)mozgraphite2.$(LIB_SUFFIX)'
8084   AC_DEFINE(MOZ_GRAPHITE)
8085 else
8086   MOZ_GRAPHITE_LIBS=
8088 AC_SUBST(MOZ_GRAPHITE)
8089 AC_SUBST(MOZ_GRAPHITE_LIBS)
8091 dnl ========================================================
8092 dnl OTS
8093 dnl ========================================================
8094 MOZ_OTS_LIBS='$(DEPTH)/gfx/ots/src/$(LIB_PREFIX)mozots.$(LIB_SUFFIX)'
8095 AC_SUBST(MOZ_OTS_LIBS)
8097 dnl ========================================================
8098 dnl Skia 
8099 dnl ========================================================
8100 if test "$MOZ_ENABLE_SKIA"; then
8101   MOZ_SKIA_LIBS='$(DEPTH)/gfx/skia/$(LIB_PREFIX)skia.$(LIB_SUFFIX)'
8102   AC_DEFINE(MOZ_ENABLE_SKIA)
8103 else
8104   MOZ_SKIA_LIBS=
8106 AC_SUBST(MOZ_ENABLE_SKIA)
8107 AC_SUBST(MOZ_SKIA_LIBS)
8109 dnl ========================================================
8110 dnl disable xul
8111 dnl ========================================================
8112 MOZ_ARG_DISABLE_BOOL(xul,
8113 [  --disable-xul           Disable XUL],
8114     MOZ_XUL= )
8115 if test "$MOZ_XUL"; then
8116   AC_DEFINE(MOZ_XUL)
8117 else
8118   dnl remove extensions that require XUL
8119   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8122 AC_SUBST(MOZ_XUL)
8124 dnl ========================================================
8125 dnl disable profile locking
8126 dnl   do no use this in applications that can have more than
8127 dnl   one process accessing the profile directory.
8128 dnl ========================================================
8129 MOZ_ARG_DISABLE_BOOL(profilelocking,
8130 [  --disable-profilelocking
8131                           Disable profile locking],
8132     MOZ_PROFILELOCKING=,
8133     MOZ_PROFILELOCKING=1 )
8134 if test "$MOZ_PROFILELOCKING"; then
8135   AC_DEFINE(MOZ_PROFILELOCKING)
8138 dnl ========================================================
8139 dnl necko configuration options
8140 dnl ========================================================
8143 dnl option to disable various necko protocols
8145 MOZ_ARG_ENABLE_STRING(necko-protocols,
8146 [  --enable-necko-protocols[={http,ftp,default,all,none}]
8147                           Enable/disable specific protocol handlers],
8148 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8149     if test "$option" = "yes" -o "$option" = "all"; then
8150         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8151     elif test "$option" = "no" -o "$option" = "none"; then
8152         NECKO_PROTOCOLS=""
8153     elif test "$option" = "default"; then
8154         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8155     elif test `echo "$option" | grep -c \^-` != 0; then
8156         option=`echo $option | sed 's/^-//'`
8157         NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8158     else
8159         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8160     fi
8161 done],
8162     NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8163 dnl Remove dupes
8164 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8165 AC_SUBST(NECKO_PROTOCOLS)
8166 for p in $NECKO_PROTOCOLS; do
8167     AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8168     _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_PROTOCOL_$p"
8169 done
8172 dnl option to disable necko's wifi scanner
8174 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8175 [  --disable-necko-wifi    Disable necko wifi scanner],
8176     NECKO_WIFI=,
8177     NECKO_WIFI=1)
8179 if test "$OS_ARCH" = "OS2"; then
8180   dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
8181   NECKO_WIFI=
8183 if test "$NECKO_WIFI" -a \
8184         "$OS_ARCH" != "Linux" -a \
8185         "$OS_ARCH" != "Darwin" -a \
8186         "$OS_ARCH" != "SunOS" -a \
8187         "$OS_ARCH" != "WINNT"; then
8188   AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi])
8191 if test -z "$SKIP_LIBRARY_CHECKS" -a "$NECKO_WIFI" -a "$OS_ARCH" = "Linux"
8192 then
8193   MOZ_CHECK_HEADER([iwlib.h])
8194   if test "$ac_cv_header_iwlib_h" != "yes"; then
8195     AC_MSG_ERROR([Can't find header iwlib.h for Necko WiFi scanning (might be in package libiw-dev (Ubuntu) or wireless-tools-devel (Fedora) or libiw-devel (openSUSE)); use --disable-necko-wifi to disable])
8196   fi
8199 if test "$NECKO_WIFI"; then
8200   AC_DEFINE(NECKO_WIFI)
8201   _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
8203 AC_SUBST(NECKO_WIFI)
8206 dnl option to disable cookies
8208 MOZ_ARG_DISABLE_BOOL(cookies,
8209 [  --disable-cookies       Disable cookie support],
8210     NECKO_COOKIES=,
8211     NECKO_COOKIES=1)
8212 AC_SUBST(NECKO_COOKIES)
8213 if test "$NECKO_COOKIES"; then
8214     AC_DEFINE(NECKO_COOKIES)
8215     _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
8219 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8221 MOZ_ARG_DISABLE_BOOL(ctypes,
8222 [  --disable-ctypes        Disable js-ctypes],
8223     BUILD_CTYPES=,
8224     BUILD_CTYPES=1)
8225 AC_SUBST(BUILD_CTYPES)
8226 if test "$BUILD_CTYPES"; then
8227     AC_DEFINE(BUILD_CTYPES)
8230 dnl Build Places if required
8231 if test "$MOZ_PLACES"; then
8232   AC_DEFINE(MOZ_PLACES)
8235 dnl Build Apps in the Cloud (AITC) if required
8236 AC_SUBST(MOZ_SERVICES_AITC)
8237 if test -n "$MOZ_SERVICES_AITC"; then
8238   AC_DEFINE(MOZ_SERVICES_AITC)
8241 dnl Build Notifications if required
8242 AC_SUBST(MOZ_SERVICES_NOTIFICATIONS)
8243 if test -n "$MOZ_SERVICES_NOTIFICATIONS"; then
8244   AC_DEFINE(MOZ_SERVICES_NOTIFICATIONS)
8247 dnl Build Sync Services if required
8248 AC_SUBST(MOZ_SERVICES_SYNC)
8249 if test -n "$MOZ_SERVICES_SYNC"; then
8250   AC_DEFINE(MOZ_SERVICES_SYNC)
8253 dnl ========================================================
8254 if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
8255     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8258 if test "$MOZ_APP_COMPONENT_INCLUDE"; then
8259   AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_INCLUDE, "$MOZ_APP_COMPONENT_INCLUDE")
8262 if test "$MOZ_APP_COMPONENT_MODULES"; then
8263   AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_MODULES, $MOZ_APP_COMPONENT_MODULES)
8266 dnl ========================================================
8267 dnl =
8268 dnl = Maintainer debug option (no --enable equivalent)
8269 dnl =
8270 dnl ========================================================
8272 AC_SUBST(AR)
8273 AC_SUBST(AR_FLAGS)
8274 AC_SUBST(AR_LIST)
8275 AC_SUBST(AR_EXTRACT)
8276 AC_SUBST(AR_DELETE)
8277 AC_SUBST(AS)
8278 AC_SUBST(ASFLAGS)
8279 AC_SUBST(AS_DASH_C_FLAG)
8280 AC_SUBST(LD)
8281 AC_SUBST(RC)
8282 AC_SUBST(RCFLAGS)
8283 AC_SUBST(MC)
8284 AC_SUBST(WINDRES)
8285 AC_SUBST(IMPLIB)
8286 AC_SUBST(FILTER)
8287 AC_SUBST(BIN_FLAGS)
8288 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8289 AC_SUBST(MOZ_UPDATE_XTERM)
8290 AC_SUBST(MOZ_PLATFORM_MAEMO)
8291 AC_SUBST(MOZ_AUTH_EXTENSION)
8292 AC_SUBST(MOZ_PERMISSIONS)
8293 AC_SUBST(MOZ_XTF)
8294 AC_SUBST(MOZ_PREF_EXTENSIONS)
8295 AC_SUBST(MOZ_JS_LIBS)
8296 AC_SUBST(MOZ_PSM)
8297 AC_SUBST(MOZ_DEBUG)
8298 AC_SUBST(MOZ_DEBUG_SYMBOLS)
8299 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
8300 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
8301 AC_SUBST(MOZ_DEBUG_FLAGS)
8302 AC_SUBST(MOZ_DEBUG_LDFLAGS)
8303 AC_SUBST(WARNINGS_AS_ERRORS)
8304 AC_SUBST(MOZ_EXTENSIONS)
8305 AC_SUBST(MOZ_JSDEBUGGER)
8306 AC_SUBST(MOZ_ENABLE_PROFILER_SPS)
8307 AC_SUBST(MOZ_JPROF)
8308 AC_SUBST(MOZ_SHARK)
8309 AC_SUBST(MOZ_CALLGRIND)
8310 AC_SUBST(MOZ_VTUNE)
8311 AC_SUBST(MOZ_ETW)
8312 AC_SUBST(MOZ_PROFILING)
8313 AC_SUBST(LIBICONV)
8314 AC_SUBST(MOZ_PLACES)
8315 AC_SUBST(MOZ_TOOLKIT_SEARCH)
8316 AC_SUBST(MOZ_FEEDS)
8317 AC_SUBST(NS_PRINTING)
8318 AC_SUBST(MOZ_WEBGL)
8319 AC_SUBST(MOZ_HELP_VIEWER)
8320 AC_SUBST(TOOLCHAIN_PREFIX)
8322 AC_SUBST(JAVA)
8323 AC_SUBST(JAVAC)
8324 AC_SUBST(JAR)
8326 AC_SUBST(MOZ_PROFILELOCKING)
8328 AC_SUBST(ENABLE_TESTS)
8329 AC_SUBST(ENABLE_MARIONETTE)
8330 AC_SUBST(IBMBIDI)
8331 AC_SUBST(MOZ_UNIVERSALCHARDET)
8332 AC_SUBST(ACCESSIBILITY)
8333 AC_SUBST(MOZ_SPELLCHECK)
8334 AC_SUBST(MOZ_ANDROID_OMTC)
8335 AC_SUBST(MOZ_ONLY_TOUCH_EVENTS)
8336 AC_SUBST(MOZ_CRASHREPORTER)
8337 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
8338 AC_SUBST(MOZ_MAINTENANCE_SERVICE)
8339 AC_SUBST(MOZ_STUB_INSTALLER)
8340 AC_SUBST(MOZ_VERIFY_MAR_SIGNATURE)
8341 AC_SUBST(MOZ_ENABLE_SIGNMAR)
8342 AC_SUBST(MOZ_UPDATER)
8343 AC_SUBST(MOZ_ANGLE_RENDERER)
8344 AC_SUBST(MOZ_DIRECTX_SDK_PATH)
8345 AC_SUBST(MOZ_DIRECTX_SDK_CPU_SUFFIX)
8346 AC_SUBST(MOZ_D3DX9_VERSION)
8347 AC_SUBST(MOZ_D3DX9_CAB)
8348 AC_SUBST(MOZ_D3DCOMPILER_CAB)
8349 AC_SUBST(MOZ_D3DX9_DLL)
8350 AC_SUBST(MOZ_D3DCOMPILER_DLL)
8351 AC_SUBST(MOZ_METRO)
8353 AC_SUBST(MOZ_ANDROID_HISTORY)
8354 AC_SUBST(MOZ_WEBSMS_BACKEND)
8355 AC_SUBST(ENABLE_STRIP)
8356 AC_SUBST(PKG_SKIP_STRIP)
8357 AC_SUBST(STRIP_FLAGS)
8358 AC_SUBST(USE_ELF_DYNSTR_GC)
8359 AC_SUBST(USE_ELF_HACK)
8360 AC_SUBST(INCREMENTAL_LINKER)
8361 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
8362 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
8364 AC_SUBST(MOZ_FIX_LINK_PATHS)
8365 AC_SUBST(XPCOM_LIBS)
8366 AC_SUBST(XPCOM_FROZEN_LDOPTS)
8367 AC_SUBST(XPCOM_GLUE_LDOPTS)
8368 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
8369 AC_SUBST(XPCOM_STATICRUNTIME_GLUE_LDOPTS)
8370 AC_SUBST(XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS)
8372 AC_SUBST(USE_DEPENDENT_LIBS)
8374 AC_SUBST(MOZ_BUILD_ROOT)
8375 AC_SUBST(MOZ_OS2_TOOLS)
8377 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
8378 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
8379 AC_SUBST(MOZ_LINKER_EXTRACT)
8380 AC_SUBST(MOZ_PER_WINDOW_PRIVATE_BROWSING)
8382 dnl ========================================================
8383 dnl = Mac bundle name prefix
8384 dnl ========================================================
8385 MOZ_ARG_WITH_STRING(macbundlename-prefix,
8386 [  --with-macbundlename-prefix=prefix
8387                           Prefix for MOZ_MACBUNDLE_NAME],
8388 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
8390 MOZ_MACBUNDLE_NAME=`echo $MOZ_APP_DISPLAYNAME | tr -d ' '`
8391 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
8392   MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
8395 if test "$MOZ_DEBUG"; then
8396   MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}Debug.app
8397 else
8398   MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
8400 AC_SUBST(MOZ_MACBUNDLE_NAME)
8402 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
8403 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr '[A-Z]' '[a-z]'`
8404 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
8405 if test "$MOZ_DEBUG"; then
8406   MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
8409 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
8410 AC_SUBST(MOZ_MACBUNDLE_ID)
8412 # The following variables are available to branding and application
8413 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
8414 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
8415 # impacts profile location and user-visible fields.
8416 # - MOZ_APP_BASENAME: Typically stays consistent for multiple branded
8417 # versions of a given application (e.g. Aurora and Firefox both use
8418 # "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used
8419 # for application.ini's "Name" field, which controls profile location in
8420 # the absence of a "Profile" field (see below), and various system
8421 # integration hooks (Unix remoting, Windows MessageWindow name, etc.)
8422 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
8423 # Mac Bundle name, Updater, Installer), it is typically used for nightly
8424 # builds (e.g. Aurora for Firefox).
8425 # - MOZ_APP_VERSION: Defines the application version number.
8426 # - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set,
8427 # defaults to a lowercase form of MOZ_APP_BASENAME.
8428 # - MOZ_APP_PROFILE: When set, used for application.ini's
8429 # "Profile" field, which controls profile location.
8430 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
8431 # crash reporter server url.
8432 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
8433 # - MOZ_EXTENSION_MANAGER: When set, enabled extension manager.
8435 if test -z "$MOZ_APP_NAME"; then
8436    MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
8439 # For extensions and langpacks, we require a max version that is compatible
8440 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
8441 # 10.0a1 and 10.0a2 aren't affected
8442 # 10.0 becomes 10.0.*
8443 # 10.0.1 becomes 10.0.*
8444 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
8445 if test -z "$IS_ALPHA"; then
8446   changequote(,)
8447   MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*.[0-9]*\).*|\1|"`.*
8448   changequote([,])
8449 else
8450   MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
8453 MOZ_B2G_VERSION=${MOZ_B2G_VERSION:-"1.0.0"}
8454 AC_DEFINE_UNQUOTED(MOZ_B2G_VERSION,"$MOZ_B2G_VERSION")
8456 AC_SUBST(MOZ_APP_NAME)
8457 AC_SUBST(MOZ_APP_DISPLAYNAME)
8458 AC_SUBST(MOZ_APP_BASENAME)
8459 AC_SUBST(MOZ_APP_VENDOR)
8460 AC_SUBST(MOZ_APP_PROFILE)
8461 AC_SUBST(MOZ_APP_ID)
8462 AC_SUBST(MAR_CHANNEL_ID)
8463 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
8464 AC_SUBST(MOZ_PROFILE_MIGRATOR)
8465 AC_SUBST(MOZ_EXTENSION_MANAGER)
8466 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
8467 AC_SUBST(MOZ_APP_UA_NAME)
8468 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
8469 AC_SUBST(MOZ_APP_VERSION)
8470 AC_SUBST(MOZ_APP_MAXVERSION)
8471 AC_DEFINE_UNQUOTED(FIREFOX_VERSION,$FIREFOX_VERSION)
8472 AC_SUBST(FIREFOX_VERSION)
8473 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
8474 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
8475   AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
8478 # We can't use the static application.ini data when building against
8479 # a libxul SDK.
8480 if test -n "$LIBXUL_SDK"; then
8481     MOZ_APP_STATIC_INI=
8483 AC_SUBST(MOZ_APP_STATIC_INI)
8485 AC_SUBST(MOZ_PKG_SPECIAL)
8487 AC_SUBST(MOZILLA_OFFICIAL)
8489 if test "$MOZ_TELEMETRY_REPORTING"; then
8490     AC_DEFINE(MOZ_TELEMETRY_REPORTING)
8493 dnl win32 options
8494 AC_SUBST(MOZ_MAPINFO)
8495 AC_SUBST(MOZ_BROWSE_INFO)
8496 AC_SUBST(MOZ_TOOLS_DIR)
8497 AC_SUBST(WIN32_REDIST_DIR)
8498 AC_SUBST(MAKENSISU)
8500 dnl Echo the CFLAGS to remove extra whitespace.
8501 CFLAGS=`echo \
8502         $_WARNINGS_CFLAGS \
8503         $CFLAGS`
8505 CXXFLAGS=`echo \
8506         $_WARNINGS_CXXFLAGS \
8507         $CXXFLAGS`
8509 COMPILE_CFLAGS=`echo \
8510     $_DEFINES_CFLAGS \
8511         $_DEPEND_CFLAGS \
8512     $COMPILE_CFLAGS`
8514 COMPILE_CXXFLAGS=`echo \
8515     $_DEFINES_CXXFLAGS \
8516         $_DEPEND_CFLAGS \
8517     $COMPILE_CXXFLAGS`
8519 AC_SUBST(SYSTEM_LIBXUL)
8520 AC_SUBST(MOZ_NATIVE_JPEG)
8521 AC_SUBST(MOZ_NATIVE_PNG)
8522 AC_SUBST(MOZ_NATIVE_BZ2)
8524 AC_SUBST(MOZ_FLEXBOX)
8525 AC_SUBST(MOZ_JPEG_CFLAGS)
8526 AC_SUBST(MOZ_JPEG_LIBS)
8527 AC_SUBST(MOZ_BZ2_CFLAGS)
8528 AC_SUBST(MOZ_BZ2_LIBS)
8529 AC_SUBST(MOZ_PNG_CFLAGS)
8530 AC_SUBST(MOZ_PNG_LIBS)
8532 AC_SUBST(NSPR_CFLAGS)
8533 AC_SUBST(NSPR_LIBS)
8534 AC_SUBST(MOZ_NATIVE_NSPR)
8536 AC_SUBST(NSS_CFLAGS)
8537 AC_SUBST(NSS_LIBS)
8538 AC_SUBST(NSS_DEP_LIBS)
8539 AC_SUBST(MOZ_NATIVE_NSS)
8540 AC_SUBST(NSS_DISABLE_DBM)
8542 OS_CFLAGS="$CFLAGS"
8543 OS_CXXFLAGS="$CXXFLAGS"
8544 OS_CPPFLAGS="$CPPFLAGS"
8545 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
8546 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
8547 OS_LDFLAGS="$LDFLAGS"
8548 OS_LIBS="$LIBS"
8549 AC_SUBST(OS_CFLAGS)
8550 AC_SUBST(OS_CXXFLAGS)
8551 AC_SUBST(OS_CPPFLAGS)
8552 AC_SUBST(OS_COMPILE_CFLAGS)
8553 AC_SUBST(OS_COMPILE_CXXFLAGS)
8554 AC_SUBST(OS_LDFLAGS)
8555 AC_SUBST(OS_LIBS)
8556 AC_SUBST(CROSS_COMPILE)
8557 AC_SUBST(WCHAR_CFLAGS)
8559 AC_SUBST(HOST_CC)
8560 AC_SUBST(HOST_CXX)
8561 AC_SUBST(HOST_CFLAGS)
8562 AC_SUBST(HOST_CXXFLAGS)
8563 AC_SUBST(HOST_LDFLAGS)
8564 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8565 AC_SUBST(HOST_AR)
8566 AC_SUBST(HOST_AR_FLAGS)
8567 AC_SUBST(HOST_LD)
8568 AC_SUBST(HOST_RANLIB)
8569 AC_SUBST(HOST_NSPR_MDCPUCFG)
8570 AC_SUBST(HOST_BIN_SUFFIX)
8571 AC_SUBST(HOST_OS_ARCH)
8573 AC_SUBST(TARGET_CPU)
8574 AC_SUBST(TARGET_VENDOR)
8575 AC_SUBST(TARGET_OS)
8576 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8577 AC_SUBST(TARGET_MD_ARCH)
8578 AC_SUBST(TARGET_XPCOM_ABI)
8579 AC_SUBST(OS_TARGET)
8580 AC_SUBST(OS_ARCH)
8581 AC_SUBST(OS_RELEASE)
8582 AC_SUBST(OS_TEST)
8583 AC_SUBST(CPU_ARCH)
8584 AC_SUBST(INTEL_ARCHITECTURE)
8586 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8588 AC_SUBST(WRAP_LDFLAGS)
8589 AC_SUBST(MKSHLIB)
8590 AC_SUBST(MKCSHLIB)
8591 AC_SUBST(MKSHLIB_FORCE_ALL)
8592 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8593 AC_SUBST(DSO_CFLAGS)
8594 AC_SUBST(DSO_PIC_CFLAGS)
8595 AC_SUBST(DSO_LDOPTS)
8596 AC_SUBST(LIB_PREFIX)
8597 AC_SUBST(DLL_PREFIX)
8598 AC_SUBST(DLL_SUFFIX)
8599 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8600 AC_SUBST(LIB_SUFFIX)
8601 AC_SUBST(OBJ_SUFFIX)
8602 AC_SUBST(BIN_SUFFIX)
8603 AC_SUBST(ASM_SUFFIX)
8604 AC_SUBST(IMPORT_LIB_SUFFIX)
8605 AC_SUBST(USE_N32)
8606 AC_SUBST(CC_VERSION)
8607 AC_SUBST(CXX_VERSION)
8608 AC_SUBST(MSMANIFEST_TOOL)
8609 AC_SUBST(NS_ENABLE_TSF)
8610 AC_SUBST(MOZ_NSS_PATCH)
8611 AC_SUBST(MOZ_APP_COMPONENT_LIBS)
8612 AC_SUBST(MOZ_APP_EXTRA_LIBS)
8614 AC_SUBST(MOZ_MEDIA)
8615 AC_SUBST(MOZ_SYDNEYAUDIO)
8616 AC_SUBST(MOZ_SPEEX_RESAMPLER)
8617 AC_SUBST(MOZ_CUBEB)
8618 AC_SUBST(MOZ_WAVE)
8619 AC_SUBST(MOZ_VORBIS)
8620 AC_SUBST(MOZ_TREMOR)
8621 AC_SUBST(MOZ_OPUS)
8622 AC_SUBST(MOZ_WEBM)
8623 AC_SUBST(MOZ_DASH)
8624 AC_SUBST(MOZ_MEDIA_PLUGINS)
8625 AC_SUBST(MOZ_OMX_PLUGIN)
8626 AC_SUBST(MOZ_VP8_ERROR_CONCEALMENT)
8627 AC_SUBST(MOZ_VP8_ENCODER)
8628 AC_SUBST(MOZ_VP8)
8629 AC_SUBST(MOZ_OGG)
8630 AC_SUBST(MOZ_ALSA_LIBS)
8631 AC_SUBST(MOZ_ALSA_CFLAGS)
8632 AC_SUBST(VPX_AS)
8633 AC_SUBST(VPX_ASFLAGS)
8634 AC_SUBST(VPX_DASH_C_FLAG)
8635 AC_SUBST(VPX_AS_CONVERSION)
8636 AC_SUBST(VPX_ASM_SUFFIX)
8637 AC_SUBST(VPX_X86_ASM)
8638 AC_SUBST(VPX_ARM_ASM)
8639 AC_SUBST(VPX_NEED_OBJ_INT_EXTRACT)
8640 AC_SUBST(MOZ_INSTRUMENT_EVENT_LOOP)
8641 AC_SUBST(LIBJPEG_TURBO_AS)
8642 AC_SUBST(LIBJPEG_TURBO_ASFLAGS)
8643 AC_SUBST(LIBJPEG_TURBO_X86_ASM)
8644 AC_SUBST(LIBJPEG_TURBO_X64_ASM)
8645 AC_SUBST(LIBJPEG_TURBO_ARM_ASM)
8647 AC_SUBST(MOZ_PACKAGE_JSSHELL)
8649 AC_MSG_CHECKING([for posix_fallocate])
8650 AC_TRY_LINK([#define _XOPEN_SOURCE 600
8651   #include <fcntl.h>],
8652                  [posix_fallocate(0, 0, 0);],
8653                  [ac_cv___posix_fallocate=true],
8654                  [ac_cv___posix_fallocate=false])
8656 if test "$ac_cv___posix_fallocate" = true ; then
8657   AC_DEFINE(HAVE_POSIX_FALLOCATE)
8658   AC_MSG_RESULT(yes)
8659 else
8660   AC_MSG_RESULT(no)
8663 dnl Check for missing components
8664 if test "$COMPILE_ENVIRONMENT"; then
8665 if test "$MOZ_X11"; then
8666     if test "$WITHOUT_X11"; then
8667         AC_MSG_ERROR([--without-x specified and MOZ_X11 still defined])
8668     fi
8669     dnl ====================================================
8670     dnl = Check if X headers exist
8671     dnl ====================================================
8672     _SAVE_CFLAGS=$CFLAGS
8673     CFLAGS="$CFLAGS $XCFLAGS"
8674     AC_TRY_COMPILE([
8675         #include <stdio.h>
8676         #include <stdlib.h>
8677         #include <X11/Xlib.h>
8678         #include <X11/Intrinsic.h>
8679         #include <X11/extensions/XShm.h>
8680     ],
8681     [
8682         Display *dpy = 0;
8683         if ((dpy = XOpenDisplay(NULL)) == NULL) {
8684             fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8685             exit(1);
8686         }
8687     ], [],
8688     [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8689     CFLAGS="$_SAVE_CFLAGS"
8691     if test -n "$MISSING_X"; then
8692         AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8693     fi
8695 fi # MOZ_X11
8697 dnl Check for headers, etc. needed by WebGL.
8698 if test "$MOZ_GL_DEFAULT_PROVIDER" = "GLX"; then
8699     MOZ_CHECK_HEADER(GL/glx.h)
8700     if test "$ac_cv_header_GL_glx_h" != "yes"; then
8701         AC_MSG_ERROR([Can't find header GL/glx.h for WebGL (install mesa-common-dev (Ubuntu), mesa-libGL-devel (Fedora), or Mesa-devel (openSUSE))])
8702     fi
8703 fi # MOZ_GL_DEFAULT_PROVIDER=GLX
8704 fi # COMPILE_ENVIRONMENT
8706 dnl Set various defines and substitutions
8707 dnl ========================================================
8709 if test "$OS_ARCH" = "Darwin"; then
8710   AC_DEFINE(XP_UNIX)
8711 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2"; then
8712   AC_DEFINE(XP_UNIX)
8715 if test "$MOZ_DEBUG"; then
8716     AC_DEFINE(MOZ_REFLOW_PERF)
8717     AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8720 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8721     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8722     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8723     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8724     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8725     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8726     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8727     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8728     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8731 AC_SUBST(MOZILLA_VERSION)
8733 AC_SUBST(ac_configure_args)
8735 dnl Spit out some output
8736 dnl ========================================================
8738 dnl The following defines are used by xpcom
8739 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8740 CPP_THROW_NEW
8741 HAVE_CPP_2BYTE_WCHAR_T
8742 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8743 HAVE_CPP_CHAR16_T
8744 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8745 HAVE_CPP_PARTIAL_SPECIALIZATION
8746 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8747 NEED_CPP_UNUSED_IMPLEMENTATIONS
8748 NEW_H
8749 HAVE_GETPAGESIZE
8750 HAVE_ICONV
8751 HAVE_ICONV_WITH_CONST_INPUT
8752 HAVE_MBRTOWC
8753 HAVE_WCRTOMB
8754 HAVE_STATVFS64
8755 HAVE_STATVFS
8756 HAVE_STATFS64
8757 HAVE_STATFS
8758 HAVE_SYS_STATVFS_H
8759 HAVE_SYS_STATFS_H
8760 HAVE_SYS_VFS_H
8761 HAVE_SYS_MOUNT_H
8764 AC_CONFIG_HEADER(
8765 netwerk/necko-config.h
8766 xpcom/xpcom-config.h
8767 xpcom/xpcom-private.h
8770 # Hack around an Apple bug that affects the egrep that comes with OS X 10.7.
8771 # "env ARCHPREFERENCE=i386,x86_64 arch egrep" first tries to use the 32-bit
8772 # Intel part of the egrep fat binary, even on 64-bit systems, and falls back on
8773 # the 64-bit part if it's not a fat binary, as can happen with MacPorts. We
8774 # (apparently) only need this hack when egrep's "pattern" is particularly long
8775 # (as in the following code) and the first egrep on our $PATH is Apple's.  See
8776 # bug 655339.
8777 case "$host" in
8778 *-apple-darwin11*)
8779     FIXED_EGREP="env ARCHPREFERENCE=i386,x86_64 arch egrep"
8780     ;;
8782     FIXED_EGREP="egrep"
8783     ;;
8784 esac
8786 dnl Create a virtualenv where we can install local Python packages
8787 AC_MSG_RESULT([Creating Python virtualenv])
8788 rm -rf _virtualenv
8789 mkdir -p _virtualenv
8790 MACOSX_DEPLOYMENT_TARGET= PYTHONDONTWRITEBYTECODE= $PYTHON $_topsrcdir/python/virtualenv/virtualenv.py --system-site-packages ./_virtualenv
8791 case "$host_os" in
8792 mingw*)
8793     PYTHON=$MOZ_BUILD_ROOT/_virtualenv/Scripts/python.exe
8794     ;;
8796     PYTHON=$MOZ_BUILD_ROOT/_virtualenv/bin/python
8797     ;;
8798 esac
8800 AC_SUBST(PYTHON)
8802 dnl Populate the virtualenv
8804 dnl We always use the version Python was compiled with to ensure that compiled
8805 dnl extensions work properly. This works around a bug in Python. See also
8806 dnl http://bugs.python.org/issue9516 and bug 659881.
8808 dnl Please note that this assumes nothing built during virtualenv population is
8809 dnl shipped as part of a release package. If it does ship, binaries built here
8810 dnl may not be compatible with the minimum supported OS X version.
8811 osx_deployment_target_system=
8813 if test $python_version_major -ne 2; then
8814     AC_MSG_ERROR([Assertion failed: building with Python 2.])
8817 dnl sysconfig is only present on Python 2.7 and above.
8818 if test $python_version_minor -ge 7; then
8819     osx_deployment_target_system=`$PYTHON -c 'import sysconfig; print sysconfig.get_config_var("MACOSX_DEPLOYMENT_TARGET")'`
8822 AC_MSG_RESULT([Populating Python virtualenv])
8823 MACOSX_DEPLOYMENT_TARGET=$osx_deployment_target_system \
8824   LDFLAGS="${HOST_LDFLAGS}" \
8825   CC="${HOST_CC}" CXX="${HOST_CXX}" \
8826   CFLAGS="${HOST_CFLAGS}" CXXFLAGS="${HOST_CXXFLAGS}" \
8827   $PYTHON $_topsrcdir/build/virtualenv/populate_virtualenv.py \
8828     $_topsrcdir $_topsrcdir/build/virtualenv/packages.txt \
8829   || exit 1
8831 dnl Load the list of Makefiles to generate.
8832 dnl   To add new Makefiles, edit allmakefiles.sh.
8833 dnl   allmakefiles.sh sets the variable, MAKEFILES.
8834 . ${srcdir}/allmakefiles.sh
8836 echo $MAKEFILES > unallmakefiles
8838 AC_OUTPUT($MAKEFILES)
8840 # Generate Makefiles for WebRTC directly from .gyp files
8841 if test "${OS_TARGET}" = "WINNT"; then
8842    if test "$HAVE_64BIT_OS"; then
8843       OS_BITS=64
8844    else
8845       OS_BITS=32
8846    fi
8847    EXTRA_GYP_DEFINES="-D MSVS_VERSION=${_MSVS_VERSION} -D MSVS_OS_BITS=${OS_BITS}"
8850 if test -n "$MOZ_WEBRTC"; then
8851    AC_MSG_RESULT("generating WebRTC Makefiles...")
8853    WEBRTC_CONFIG="-D build_with_mozilla=1 --include ${srcdir}/media/webrtc/webrtc_config.gypi"
8855    GYP_WEBRTC_OPTIONS="--format=mozmake ${WEBRTC_CONFIG} ${EXTRA_GYP_DEFINES} --depth=${srcdir}/media/webrtc/trunk --toplevel-dir=${srcdir} -G OBJDIR=${_objdir}"
8857    $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
8858      $GYP_WEBRTC_OPTIONS \
8859      --generator-output=${_objdir}/media/webrtc/trunk \
8860      ${srcdir}/media/webrtc/trunk/peerconnection.gyp
8861    if test "$?" != 0; then
8862       AC_MSG_ERROR([failed to generate WebRTC Makefiles])
8863    fi
8865    # XXX disable until we land the tranche with signaling
8866    if test -n "$MOZ_WEBRTC_SIGNALING"; then
8867      AC_MSG_RESULT("generating WebRTC/Signaling Makefiles...")
8868      $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
8869        $GYP_WEBRTC_OPTIONS \
8870        -D build_for_test=0 \
8871        --generator-output=${_objdir}/media/webrtc/signaling \
8872        ${srcdir}/media/webrtc/signaling/signaling.gyp
8873      if test "$?" != 0; then
8874         AC_MSG_ERROR([failed to generate WebRTC/Signaling Makefiles])
8875      fi
8877      AC_MSG_RESULT("generating WebRTC/SignalingTest Makefiles...")
8878      $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
8879        $GYP_WEBRTC_OPTIONS \
8880        -D build_for_test=1 \
8881        --generator-output=${_objdir}/media/webrtc/signalingtest \
8882        ${srcdir}/media/webrtc/signaling/signaling.gyp
8883      if test "$?" != 0; then
8884        AC_MSG_ERROR([failed to generate WebRTC/SignalingTest Makefiles])
8885      fi
8886    fi
8888    AC_MSG_RESULT("generating gtest Makefiles...")
8889    # Ok to pass some extra -D's that are ignored here
8890    $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
8891      $GYP_WEBRTC_OPTIONS \
8892      --generator-output=${_objdir}/media/webrtc/trunk/testing/ \
8893      ${srcdir}/media/webrtc/trunk/testing/gtest.gyp
8894    if test "$?" != 0; then
8895       AC_MSG_ERROR([failed to generate gtest Makefiles])
8896    fi
8898    AC_MSG_RESULT("generating nrappkit Makefiles...")
8899    $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
8900      $GYP_WEBRTC_OPTIONS \
8901      --generator-output=${_objdir}/media/mtransport/third_party/nrappkit \
8902      ${srcdir}/media/mtransport/third_party/nrappkit/nrappkit.gyp
8903    if test "$?" != 0; then
8904       AC_MSG_ERROR([failed to generate nrappkit Makefiles])
8905    fi
8907    AC_MSG_RESULT("generating nICEr Makefiles...")
8908    $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
8909      $GYP_WEBRTC_OPTIONS \
8910      --generator-output=${_objdir}/media/mtransport/third_party/nICEr \
8911      ${srcdir}/media/mtransport/third_party/nICEr/nicer.gyp
8912    if test "$?" != 0; then
8913       AC_MSG_ERROR([failed to generate nICEr Makefiles])
8914    fi
8917 # Generate a JSON config file for unittest harnesses etc to read
8918 # build configuration details from in a standardized way.
8919 OS_TARGET=${OS_TARGET} \
8920 TARGET_CPU=${TARGET_CPU} \
8921 MOZ_DEBUG=${MOZ_DEBUG} \
8922 MOZ_WIDGET_TOOLKIT=${MOZ_WIDGET_TOOLKIT} \
8923 UNIVERSAL_BINARY=${UNIVERSAL_BINARY} \
8924 MOZ_CRASHREPORTER=${MOZ_CRASHREPORTER} \
8925   $PYTHON ${_topsrcdir}/config/writemozinfo.py ./mozinfo.json.tmp
8926 if cmp -s ./mozinfo.json.tmp ./mozinfo.json; then
8927   rm ./mozinfo.json.tmp
8928 else
8929   mv -f ./mozinfo.json.tmp ./mozinfo.json
8932 # Run jemalloc configure script
8934 if test "$MOZ_JEMALLOC" -a "$MOZ_MEMORY"; then
8935   ac_configure_args="$_SUBDIR_CONFIG_ARGS --build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_"
8936   if test "$OS_ARCH" = "Linux"; then
8937     MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size"
8938     MANGLED=
8939     JEMALLOC_WRAPPER=
8940     if test -n "$_WRAP_MALLOC"; then
8941       JEMALLOC_WRAPPER=__wrap_
8942     fi
8943     for mangle in ${MANGLE}; do
8944       if test -n "$MANGLED"; then
8945         MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle,$MANGLED"
8946       else
8947         MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle"
8948       fi
8949     done
8950     ac_configure_args="$ac_configure_args --with-mangling=$MANGLED"
8951   fi
8952   unset CONFIG_FILES
8953   if test -z "$MOZ_TLS"; then
8954     ac_configure_args="$ac_configure_args --disable-tls"
8955   fi
8956   EXTRA_CFLAGS="$CFLAGS"
8957   for var in AS CC CXX CPP LD AR RANLIB STRIP CPPFLAGS EXTRA_CFLAGS LDFLAGS; do
8958     ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
8959   done
8960   if test "$CROSS_COMPILE"; then
8961     ac_configure_args="$ac_configure_args je_cv_static_page_shift=12"
8962   fi
8963   _save_cache_file="$cache_file"
8964   cache_file=$_objdir/memory/jemalloc/src/config.cache
8965   AC_OUTPUT_SUBDIRS(memory/jemalloc/src)
8966   cache_file="$_save_cache_file"
8967   ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8970 dnl Build libunwind for Android profiling builds
8971 if test "$OS_TARGET" = "Android" -a "$MOZ_PROFILING"; then
8972   old_ac_configure_arg="$ac_configure_args"
8973   ac_configure_args="--build=${build} --host=${target_alias} --disable-shared --enable-block-signals=no"
8974   if test "$MOZ_DEBUG"; then
8975     ac_configure_args="$ac_configure_args --enable-debug"
8976   fi
8977   if test "$DSO_PIC_CFLAGS"; then
8978     ac_configure_args="$ac_configure_args --with-pic"
8979   fi
8980   ac_configure_args="$ac_configure_args \
8981       CC=\"$CC\" \
8982       CXX=\"$CXX\" \
8983       CPP=\"$CPP\" \
8984       CFLAGS=\"$CFLAGS\" \
8985       CXXFLAGS=\"$CXXFLAGS\" \
8986       CPPFLAGS=\"$CPPFLAGS\" \
8987       LD=\"$LD\" \
8988       LDFLAGS=\"$LDFLAGS\" \
8989       AR=\"$AR\" \
8990       RANLIB=\"$RANLIB\" \
8991       STRIP=\"$STRIP\" \
8992       LIBS=\"$LIBS\""
8994   # Use a separate cache file for libunwind, since it does not use caching.
8995   mkdir -p $_objdir/tools/profiler/libunwind/src
8996   old_cache_file=$cache_file
8997   cache_file=$_objdir/tools/profiler/libunwind/src/config.cache
8998   old_config_files=$CONFIG_FILES
8999   unset CONFIG_FILES
9000   AC_OUTPUT_SUBDIRS(tools/profiler/libunwind/src)
9001   cache_file=$old_cache_file
9002   ac_configure_args="$old_ac_configure_args"
9003   CONFIG_FILES=$old_config_files
9006 # Run freetype configure script
9008 if test "$MOZ_TREE_FREETYPE"; then
9009    export CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS -std=c99"
9010    export CPPFLAGS="$CPPFLAGS $MOZ_DEBUG_FLAGS"
9011    export CXXFLAGS="$CXXFLAGS $MOZ_DEBUG_FLAGS"
9012    export LDFLAGS="$LDFLAGS $MOZ_DEBUG_LDFLAGS"
9013    export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in"
9014    ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes"
9015    AC_OUTPUT_SUBDIRS(modules/freetype2)
9018 if test -z "$direct_nspr_config"; then
9019     dnl ========================================================
9020     dnl = Setup a nice relatively clean build environment for
9021     dnl = sub-configures.
9022     dnl ========================================================
9023     CC="$_SUBDIR_CC"
9024     CXX="$_SUBDIR_CXX"
9025     CFLAGS="$_SUBDIR_CFLAGS"
9026     CPPFLAGS="$_SUBDIR_CPPFLAGS"
9027     CXXFLAGS="$_SUBDIR_CXXFLAGS"
9028     LDFLAGS="$_SUBDIR_LDFLAGS"
9029     HOST_CC="$_SUBDIR_HOST_CC"
9030     HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9031     HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9032     RC=
9035 unset MAKEFILES
9036 unset CONFIG_FILES
9038 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9039 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9041 export WRAP_LDFLAGS
9043 if test -n "$_WRAP_MALLOC"; then
9044     # Avoid doubling wrap malloc arguments
9045     _SUBDIR_CONFIG_ARGS="`echo $_SUBDIR_CONFIG_ARGS | sed -e 's/--enable-wrap-malloc *//'`"
9048 if test -z "$MOZ_NATIVE_NSPR"; then
9049     ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9050     if test -z "$MOZ_DEBUG"; then
9051         ac_configure_args="$ac_configure_args --disable-debug"
9052     else
9053         ac_configure_args="$ac_configure_args --enable-debug"
9054     fi
9055     if test "$MOZ_OPTIMIZE" = "1"; then
9056         ac_configure_args="$ac_configure_args --enable-optimize"
9057     elif test -z "$MOZ_OPTIMIZE"; then
9058         ac_configure_args="$ac_configure_args --disable-optimize"
9059     fi
9060     if test -n "$HAVE_64BIT_OS"; then
9061         ac_configure_args="$ac_configure_args --enable-64bit"
9062     fi
9063     if test -n "$USE_ARM_KUSER"; then
9064         ac_configure_args="$ac_configure_args --with-arm-kuser"
9065     fi
9066     ac_configure_args="$ac_configure_args $NSPR_CONFIGURE_ARGS"
9067     if test -n "$MOZ_LINKER" -a -z "$MOZ_OLD_LINKER" -a "$ac_cv_func_dladdr" = no ; then
9068       # dladdr is supported by the new linker, even when the system linker doesn't
9069       # support it. Trick nspr into using dladdr when it's not supported.
9070       _SAVE_CPPFLAGS="$CPPFLAGS"
9071       export CPPFLAGS="-include $_topsrcdir/mozglue/linker/dladdr.h $CPPFLAGS"
9072     fi
9073     _SAVE_LDFLAGS="$LDFLAGS"
9074     export LDFLAGS="$LDFLAGS $NSPR_LDFLAGS"
9075     AC_OUTPUT_SUBDIRS(nsprpub)
9076     LDFLAGS="$_SAVE_LDFLAGS"
9077     if test -n "$MOZ_LINKER" -a -z "$MOZ_OLD_LINKER" -a "$ac_cv_func_dladdr" = no; then
9078       unset CPPFLAGS
9079       CPPFLAGS="$_SAVE_CFLAGS"
9080     fi
9081     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9084 dnl ========================================================
9085 dnl = Setup a nice relatively clean build environment for
9086 dnl = sub-configures.
9087 dnl ========================================================
9088 CC="$_SUBDIR_CC"
9089 CXX="$_SUBDIR_CXX"
9090 CFLAGS="$_SUBDIR_CFLAGS"
9091 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9092 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9093 LDFLAGS="$_SUBDIR_LDFLAGS"
9094 HOST_CC="$_SUBDIR_HOST_CC"
9095 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9096 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9099 # Run the SpiderMonkey 'configure' script.
9100 dist=$MOZ_BUILD_ROOT/dist
9101 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9102 ac_configure_args="$ac_configure_args --enable-threadsafe"
9103 if test "$BUILD_CTYPES"; then
9104     # Build js-ctypes on the platforms we can.
9105     ac_configure_args="$ac_configure_args --enable-ctypes"
9107 if test -z "$JS_SHARED_LIBRARY" ; then
9108     ac_configure_args="$ac_configure_args --disable-shared-js"
9110 if test -z "$MOZ_NATIVE_NSPR"; then
9111     ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9112     ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9114 ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
9115 ac_configure_args="$ac_configure_args --prefix=$dist"
9116 if test "$MOZ_MEMORY"; then
9117    ac_configure_args="$ac_configure_args --enable-jemalloc"
9119 if test -n "$MOZ_GLUE_LDFLAGS"; then
9120    export MOZ_GLUE_LDFLAGS
9122 if test -n "$MOZ_GLUE_PROGRAM_LDFLAGS"; then
9123    export MOZ_GLUE_PROGRAM_LDFLAGS
9125 if test "$MOZ_NATIVE_ZLIB" != 1 -a "$OS_ARCH" = "WINNT"; then
9126    MOZ_ZLIB_LIBS=
9128 export MOZ_NATIVE_ZLIB
9129 export MOZ_ZLIB_CFLAGS
9130 export MOZ_ZLIB_LIBS
9131 export MOZ_APP_NAME
9132 export STLPORT_CPPFLAGS
9133 export STLPORT_LDFLAGS
9134 export STLPORT_LIBS
9135 AC_OUTPUT_SUBDIRS(js/src)
9136 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9138 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR