Bug 867089 - Validate the playbackRate before using it. r=ehsan
[gecko.git] / configure.in
blob96771218feb8b5b403ffe55c6f79418890d8b5f3
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 dnl ========================================================
20 dnl =
21 dnl = Don't change the following two lines.  Doing so breaks:
22 dnl =
23 dnl = CFLAGS="-foo" ./configure
24 dnl =
25 dnl ========================================================
26 CFLAGS="${CFLAGS=}"
27 CPPFLAGS="${CPPFLAGS=}"
28 CXXFLAGS="${CXXFLAGS=}"
29 LDFLAGS="${LDFLAGS=}"
30 HOST_CFLAGS="${HOST_CFLAGS=}"
31 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
32 HOST_LDFLAGS="${HOST_LDFLAGS=}"
34 dnl ========================================================
35 dnl = Preserve certain environment flags passed to configure
36 dnl = We want sub projects to receive the same flags
37 dnl = untainted by this configure script
38 dnl ========================================================
39 _SUBDIR_CC="$CC"
40 _SUBDIR_CXX="$CXX"
41 _SUBDIR_CFLAGS="$CFLAGS"
42 _SUBDIR_CPPFLAGS="$CPPFLAGS"
43 _SUBDIR_CXXFLAGS="$CXXFLAGS"
44 _SUBDIR_LDFLAGS="$LDFLAGS"
45 _SUBDIR_HOST_CC="$HOST_CC"
46 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
47 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
48 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
49 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
51 dnl Set the version number of the libs included with mozilla
52 dnl ========================================================
53 MOZJPEG=62
54 MOZPNG=10513
55 NSPR_VERSION=4
56 NSS_VERSION=3
58 dnl Set the minimum version of toolkit libs used by mozilla
59 dnl ========================================================
60 GLIB_VERSION=1.2.0
61 PERL_VERSION=5.006
62 CAIRO_VERSION=1.10
63 PANGO_VERSION=1.14.0
64 GTK2_VERSION=2.10.0
65 WINDRES_VERSION=2.14.90
66 W32API_VERSION=3.14
67 GNOMEVFS_VERSION=2.0
68 GNOMEUI_VERSION=2.2.0
69 GCONF_VERSION=1.2.1
70 GIO_VERSION=2.20
71 STARTUP_NOTIFICATION_VERSION=0.8
72 DBUS_VERSION=0.60
73 SQLITE_VERSION=3.7.16.1
75 MSMANIFEST_TOOL=
77 dnl Set various checks
78 dnl ========================================================
79 MISSING_X=
80 AC_PROG_AWK
82 dnl Initialize the Pthread test variables early so they can be
83 dnl  overridden by each platform.
84 dnl ========================================================
85 USE_PTHREADS=
86 _PTHREAD_LDFLAGS=""
88 dnl Do not allow a separate objdir build if a srcdir build exists.
89 dnl ==============================================================
90 _topsrcdir=`cd \`dirname $0\`; pwd`
91 _objdir=`pwd`
93 if test "$_topsrcdir" != "$_objdir"
94 then
95   # Check for a couple representative files in the source tree
96   _conflict_files=
97   for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
98     if test -f $file; then
99       _conflict_files="$_conflict_files $file"
100     fi
101   done
102   if test "$_conflict_files"; then
103     echo "***"
104     echo "*   Your source tree contains these files:"
105     for file in $_conflict_files; do
106       echo "*         $file"
107     done
108     cat 1>&2 <<-EOF
109         *   This indicates that you previously built in the source tree.
110         *   A source tree build can confuse the separate objdir build.
111         *
112         *   To clean up the source tree:
113         *     1. cd $_topsrcdir
114         *     2. gmake distclean
115         ***
116         EOF
117     exit 1
118     break
119   fi
121 MOZ_BUILD_ROOT=`pwd`
123 MOZ_PYTHON
125 MOZ_DEFAULT_COMPILER
127 COMPILE_ENVIRONMENT=1
128 MOZ_ARG_DISABLE_BOOL(compile-environment,
129 [  --disable-compile-environment
130                           Disable compiler/library checks.],
131     COMPILE_ENVIRONMENT= )
132 AC_SUBST(COMPILE_ENVIRONMENT)
134 MOZ_ARG_WITH_STRING(l10n-base,
135 [  --with-l10n-base=DIR    path to l10n repositories],
136     L10NBASEDIR=$withval)
137 if test -n "$L10NBASEDIR"; then
138     if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
139         AC_MSG_ERROR([--with-l10n-base must specify a path])
140     elif test -d "$L10NBASEDIR"; then
141         L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
142     else
143         AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
144     fi
146 AC_SUBST(L10NBASEDIR)
148 dnl Check for Perl first -- needed for win32 SDK checks
149 MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
150 if test -z "$PERL" -o "$PERL" = ":"; then
151     AC_MSG_ERROR([perl not found in \$PATH])
154 AC_SUBST(GAIADIR)
155 if test -n "$GAIADIR" ; then
156     AC_DEFINE(PACKAGE_GAIA)
159 MOZ_ARG_WITH_STRING(gonk,
160 [  --with-gonk=DIR
161                location of gonk dir],
162     gonkdir=$withval)
164 MOZ_ARG_WITH_STRING(gonk-toolchain-prefix,
165 [  --with-gonk-toolchain-prefix=DIR
166                           prefix to gonk toolchain commands],
167     gonk_toolchain_prefix=$withval)
169 if test -n "$gonkdir" ; then
170     kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"`
171     android_source="$gonkdir"
172     ANDROID_SOURCE="$android_source"
173     ANDROID_NDK="${ANDROID_SOURCE}/ndk"
175     dnl set up compilers
176     TOOLCHAIN_PREFIX="$gonk_toolchain_prefix"
177     AS="$gonk_toolchain_prefix"as
178     CC="$gonk_toolchain_prefix"gcc
179     CXX="$gonk_toolchain_prefix"g++
180     CPP="$gonk_toolchain_prefix"cpp
181     LD="$gonk_toolchain_prefix"ld
182     AR="$gonk_toolchain_prefix"ar
183     RANLIB="$gonk_toolchain_prefix"ranlib
184     STRIP="$gonk_toolchain_prefix"strip
185     OBJCOPY="$gonk_toolchain_prefix"objcopy
187     STLPORT_CPPFLAGS="-I$gonkdir/ndk/sources/cxx-stl/stlport/stlport/ -I$gonkdir/external/stlport/stlport/"
188     STLPORT_LIBS="-lstlport"
190     case "$target_cpu" in
191     arm)
192         ARCH_DIR=arch-arm
193         ;;
194     i?86)
195         ARCH_DIR=arch-x86
196         ;;
197     esac
199     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"
200     CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS"
201     CXXFLAGS="-mandroid -fno-short-enums -fno-exceptions -Wno-psabi $CXXFLAGS $STLPORT_CPPFLAGS"
202     dnl Add -llog by default, since we use it all over the place.
203     LIBS="$LIBS -llog $STLPORT_LIBS"
205     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"
207     dnl prevent cross compile section from using these flags as host flags
208     if test -z "$HOST_CPPFLAGS" ; then
209         HOST_CPPFLAGS=" "
210     fi
211     if test -z "$HOST_CFLAGS" ; then
212         HOST_CFLAGS=" "
213     fi
214     if test -z "$HOST_CXXFLAGS" ; then
215         HOST_CXXFLAGS=" "
216     fi
217     if test -z "$HOST_LDFLAGS" ; then
218         HOST_LDFLAGS=" "
219     fi
221     AC_DEFINE(ANDROID)
222     AC_DEFINE(HAVE_SYS_UIO_H)
223     AC_DEFINE(HAVE_PTHREADS)
224     CROSS_COMPILE=1
225     MOZ_CHROME_FILE_FORMAT=omni
226     direct_nspr_config=1
227 else
228     MOZ_ANDROID_NDK
230     case "$target" in
231     *-android*|*-linuxandroid*)
232         if test -z "$ANDROID_PACKAGE_NAME" ; then
233             ANDROID_PACKAGE_NAME='org.mozilla.$(MOZ_APP_NAME)'
234         fi
235         MOZ_CHROME_FILE_FORMAT=omni
236         ZLIB_DIR=yes
237         ;;
238     *-linux*)
239         AC_PATH_PROG(OBJCOPY,objcopy)
240         ;;
241     esac
244 AC_SUBST(ANDROID_SOURCE)
245 AC_SUBST(ANDROID_PACKAGE_NAME)
246 AC_SUBST(OBJCOPY)
248 dnl ========================================================
249 dnl Checks for compilers.
250 dnl ========================================================
251 dnl Set CROSS_COMPILE in the environment when running configure
252 dnl to use the cross-compile setup for now
253 dnl ========================================================
255 dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
256 AR_FLAGS='cr $@'
258 if test "$COMPILE_ENVIRONMENT"; then
260 if test -n "$CROSS_COMPILE" -a "$target" != "$host"; then
261     echo "cross compiling from $host to $target"
262     cross_compiling=yes
264     _SAVE_CC="$CC"
265     _SAVE_CFLAGS="$CFLAGS"
266     _SAVE_LDFLAGS="$LDFLAGS"
268     AC_MSG_CHECKING([for host c compiler])
269     AC_CHECK_PROGS(HOST_CC, $HOST_CC cc gcc /usr/ucb/cc cl icc, "")
270     if test -z "$HOST_CC"; then
271         AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
272     fi
273     AC_MSG_RESULT([$HOST_CC])
274     AC_MSG_CHECKING([for host c++ compiler])
275     AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
276     if test -z "$HOST_CXX"; then
277         AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
278     fi
279     AC_MSG_RESULT([$HOST_CXX])
281     if test -z "$HOST_CFLAGS"; then
282         HOST_CFLAGS="$CFLAGS"
283     fi
284     if test -z "$HOST_CXXFLAGS"; then
285         HOST_CXXFLAGS="$CXXFLAGS"
286     fi
287     if test -z "$HOST_LDFLAGS"; then
288         HOST_LDFLAGS="$LDFLAGS"
289     fi
290     if test -z "$HOST_AR_FLAGS"; then
291         HOST_AR_FLAGS="$AR_FLAGS"
292     fi
293     AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
294     AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
295     CC="$HOST_CC"
296     CFLAGS="$HOST_CFLAGS"
297     LDFLAGS="$HOST_LDFLAGS"
299     AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
300     AC_TRY_COMPILE([], [return(0);],
301         [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
302         AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
304     CC="$HOST_CXX"
305     CFLAGS="$HOST_CXXFLAGS"
307     AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
308     AC_TRY_COMPILE([], [return(0);],
309         [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
310         AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
312     CC=$_SAVE_CC
313     CFLAGS=$_SAVE_CFLAGS
314     LDFLAGS=$_SAVE_LDFLAGS
316     AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
317     unset ac_cv_prog_CC
318     AC_PROG_CC
319     AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
320     unset ac_cv_prog_CXX
321     AC_PROG_CXX
323     AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
324     AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
325     MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
326     AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
327     AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
328     AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
329     AC_DEFINE(CROSS_COMPILE)
330 else
331     AC_PROG_CC
332     case "$target" in
333     *-mingw*)
334       # Work around the conftest.exe access problem on Windows
335       sleep 2
336     esac
337     AC_PROG_CXX
338     AC_PROG_RANLIB
339     MOZ_PATH_PROGS(AS, $AS as, $CC)
340     AC_CHECK_PROGS(AR, ar, :)
341     AC_CHECK_PROGS(LD, ld, :)
342     AC_CHECK_PROGS(STRIP, strip, :)
343     AC_CHECK_PROGS(WINDRES, windres, :)
344     if test -z "$HOST_CC"; then
345         HOST_CC="$CC"
346     fi
347     if test -z "$HOST_CFLAGS"; then
348         HOST_CFLAGS="$CFLAGS"
349     fi
350     if test -z "$HOST_CXX"; then
351         HOST_CXX="$CXX"
352     fi
353     if test -z "$HOST_CXXFLAGS"; then
354         HOST_CXXFLAGS="$CXXFLAGS"
355     fi
356     if test -z "$HOST_LDFLAGS"; then
357         HOST_LDFLAGS="$LDFLAGS"
358     fi
359     if test -z "$HOST_RANLIB"; then
360         HOST_RANLIB="$RANLIB"
361     fi
362     if test -z "$HOST_AR"; then
363         HOST_AR="$AR"
364     fi
365     if test -z "$HOST_AR_FLAGS"; then
366         HOST_AR_FLAGS="$AR_FLAGS"
367     fi
370 if test -n "$MOZ_WINCONSOLE"; then
371     AC_DEFINE(MOZ_WINCONSOLE)
374 MOZ_TOOL_VARIABLES
376 if test -n "$GNU_CC" -a -z "$CLANG_CC" ; then
377     if test "$GCC_MAJOR_VERSION" -eq 4 -a "$GCC_MINOR_VERSION" -lt 4 ||
378        test "$GCC_MAJOR_VERSION" -lt 4; then
379         AC_MSG_ERROR([Only GCC 4.4 or newer supported])
380     fi
383 dnl ========================================================
384 dnl Special win32 checks
385 dnl ========================================================
387 MOZ_ARG_ENABLE_BOOL(metro,
388 [  --enable-metro           Enable Windows Metro build targets],
389     MOZ_METRO=1,
390     MOZ_METRO=)
391 if test -n "$MOZ_METRO"; then
392     AC_DEFINE(MOZ_METRO)
393     # Target the Windows 8 Kit
394     WINSDK_TARGETVER=602
395     WINVER=502
396     # toolkit/library/makefile.in needs these, see nsDllMain.
397     CRTDLLVERSION=110
398     CRTEXPDLLVERSION=1-1-0
399 else
400     # Target the Windows 7 SDK by default
401     WINSDK_TARGETVER=601
402     WINVER=502
405 AC_SUBST(CRTDLLVERSION)
406 AC_SUBST(CRTEXPDLLVERSION)
408 MOZ_ARG_WITH_STRING(windows-version,
409 [  --with-windows-version=WINSDK_TARGETVER
410                           Windows SDK version to target. Lowest version
411                           currently allowed is 601 (Win7), highest is 602 (Win8)],
412   WINSDK_TARGETVER=$withval)
414 # Currently only two sdk versions allowed, 601 and 602
415 case "$WINSDK_TARGETVER" in
416 601|602)
417     MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
418     ;;
421     AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER)]);
422     ;;
423 esac
425 case "$target" in
426 *-mingw*)
427     if test "$GCC" != "yes"; then
428         # Check to see if we are really running in a msvc environemnt
429         _WIN32_MSVC=1
430         AC_CHECK_PROGS(MIDL, midl)
432         # Make sure compilers are valid
433         CFLAGS="$CFLAGS -TC -nologo"
434         CXXFLAGS="$CXXFLAGS -TP -nologo"
435         AC_LANG_SAVE
436         AC_LANG_C
437         AC_TRY_COMPILE([#include <stdio.h>],
438             [ printf("Hello World\n"); ],,
439             AC_MSG_ERROR([\$(CC) test failed.  You must have MS VC++ in your path to build.]) )
441         AC_LANG_CPLUSPLUS
442         AC_TRY_COMPILE([#include <new.h>],
443             [ unsigned *test = new unsigned(42); ],,
444             AC_MSG_ERROR([\$(CXX) test failed.  You must have MS VC++ in your path to build.]) )
445         AC_LANG_RESTORE
447         changequote(,)
448         _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
449         changequote([,])
451         # Determine compiler version
452         CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
453         _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
454         _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
455         _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
456         _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
457         _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
459         CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
460         _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
462         if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
463             AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
464         fi
466         if test "$_CC_MAJOR_VERSION" = "14"; then
467             dnl Require VC8SP1 or newer.
468             dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762.
469             if test "$_CC_RELEASE" -lt 50727 -o \
470                     \( "$_CC_RELEASE" -eq 50727 -a "$_CC_BUILD" -lt 762 \); then
471               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.])
472             fi
474             _CC_SUITE=8
475             _MSVS_VERSION=2005
476             AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
477             AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
478         elif test "$_CC_MAJOR_VERSION" = "15"; then
479             _CC_SUITE=9
480             _MSVS_VERSION=2008
481             AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
482             AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
483         elif test "$_CC_MAJOR_VERSION" = "16"; then
484             _CC_SUITE=10
485             _MSVS_VERSION=2010
486             AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
487             AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
488         elif test "$_CC_MAJOR_VERSION" = "17"; then
489             _CC_SUITE=11
490             _MSVS_VERSION=2012
491             AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
492             AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
493         else
494             AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
495         fi
497         AC_DEFINE(HAVE_SEH_EXCEPTIONS)
499         if test -n "$WIN32_REDIST_DIR"; then
500           if test ! -d "$WIN32_REDIST_DIR"; then
501             AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
502           fi
503           WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
504         fi
506         dnl Confirm we have the pri tools on win8 builds
507         if test -n "$MOZ_METRO"; then
508           AC_MSG_CHECKING([for makepri])
509           AC_CHECK_PROGS(MAKEPRI, makepri, "")
510           if test -z "MAKEPRI" ; then
511               AC_MSG_ERROR([makepri.exe is required for generating metro browser install components. It should be in the Win8 SDK.])
512           fi
513           AC_SUBST(MAKEPRI)
514         fi
516         dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool',
517         dnl not something else like "magnetic tape manipulation utility".
518         MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
519         if test -z "$MSMT_TOOL"; then
520           AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
521         fi
523         changequote(,)
524         _MSMT_VER_FILTER='s|.*[^!-~]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
525         changequote([,])
526         MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
527         if test -z "$MSMANIFEST_TOOL_VERSION"; then
528           AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
529         fi
531         MSMANIFEST_TOOL=1
532         unset MSMT_TOOL
534         # Check linker version
535         _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
536         _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
537         if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
538             AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION,  does not match the compiler suite version, $_CC_SUITE.])
539         fi
541         INCREMENTAL_LINKER=1
543         # Check midl version
544         _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
545         _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
546         _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
547         _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
548         # Add flags if necessary
549         AC_MSG_CHECKING([for midl flags])
550         case "$target" in
551         i*86-*)
552             if test \( "$_MIDL_MAJOR_VERSION" = "7" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" = "0499" \); then
553                 # MIDL version 7.00.0499 defaults /env win64 on x64 platforms.
554                 # MIDL version 7.00.0500 or later has no problem.
555                 MIDL_FLAGS="${MIDL_FLAGS} -env win32"
556                 AC_MSG_RESULT([need -env win32])
557             else
558                 AC_MSG_RESULT([none needed])
559             fi
560             ;;
561         x86_64-*)
562             MIDL_FLAGS="${MIDL_FLAGS} -env x64"
563             ;;
564         *)
565             AC_MSG_RESULT([none needed])
566             ;;
567         esac
569         # Identify which version of the SDK we're building with
570         # Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
571         # from there
572         MOZ_CHECK_HEADERS([winsdkver.h])
573         if test "$ac_cv_header_winsdkver_h" = "yes"; then
574             # Get the highest _WIN32_WINNT and NTDDI versions supported
575             # Take the higher of the two
576             # This is done because the Windows 7 beta SDK reports its
577             # NTDDI_MAXVER to be 0x06000100 instead of 0x06010000, as it should
578             AC_CACHE_CHECK(for highest Windows version supported by this SDK,
579                            ac_cv_winsdk_maxver,
580                            [cat > conftest.h <<EOF
581 #include <winsdkver.h>
582 #include <sdkddkver.h>
584 #if (NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER) > NTDDI_MAXVER)
585 #define WINSDK_MAXVER NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER)
586 #else
587 #define WINSDK_MAXVER NTDDI_MAXVER
588 #endif
590 WINSDK_MAXVER
592                             ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
593                             rm -f conftest.h
594                            ])
595             MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
596         else
597             # Any SDK which doesn't have WinSDKVer.h is too old.
598             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.])
599         fi
601         unset _MSVC_VER_FILTER
603         AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
604             [
605                 AC_LANG_SAVE
606                 AC_LANG_CPLUSPLUS
607                 _SAVE_CXXFLAGS="$CXXFLAGS"
608                 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
609                 AC_TRY_COMPILE([#include <exception>],
610                             [std::_Throw(std::exception()); return 0;],
611                             ac_cv_have_std__Throw="yes",
612                             ac_cv_have_std__Throw="no")
613                 CXXFLAGS="$_SAVE_CXXFLAGS"
614                 AC_LANG_RESTORE
615             ])
617         if test "$ac_cv_have_std__Throw" = "yes"; then
618             AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
619                            ac_cv_have_dllimport_exception_bug,
620                 [
621                     AC_LANG_SAVE
622                     AC_LANG_CPLUSPLUS
623                     _SAVE_CXXFLAGS="$CXXFLAGS"
624                     CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
625                     AC_TRY_LINK([#include <vector>],
626                                 [std::vector<int> v; return v.at(1);],
627                                 ac_cv_have_dllimport_exception_bug="no",
628                                 ac_cv_have_dllimport_exception_bug="yes")
629                     CXXFLAGS="$_SAVE_CXXFLAGS"
630                     AC_LANG_RESTORE
631                 ])
632             if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
633                 WRAP_STL_INCLUDES=1
634                 MOZ_MSVC_STL_WRAP__Throw=1
635                 AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
636             fi
637         else
638             AC_CACHE_CHECK(for overridable _RAISE,
639                            ac_cv_have__RAISE,
640                 [
641                     AC_LANG_SAVE
642                     AC_LANG_CPLUSPLUS
643                     _SAVE_CXXFLAGS="$CXXFLAGS"
644                     CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
645                     AC_TRY_COMPILE([#include <xstddef>
646                                     #undef _RAISE
647                                     #define _RAISE(x) externallyDefinedFunction((x).what())
648                                     #include <vector>
649                                    ],
650                                    [std::vector<int> v; return v.at(1);],
651                                    ac_cv_have__RAISE="no",
652                                    ac_cv_have__RAISE="yes")
653                     CXXFLAGS="$_SAVE_CXXFLAGS"
654                     AC_LANG_RESTORE
655                 ])
656             if test "$ac_cv_have__RAISE" = "yes"; then
657                 WRAP_STL_INCLUDES=1
658                 MOZ_MSVC_STL_WRAP__RAISE=1
659                 AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
660             else
661                 AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK.  Please file a bug describing this error and your build configuration.])
662             fi
663         fi
665         if test "$WRAP_STL_INCLUDES" = "1"; then
666             STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
667         fi
668     else
669         # Check w32api version
670         _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
671         _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
672         AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
673         AC_TRY_COMPILE([#include <w32api.h>],
674             #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
675                 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
676                  __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
677                 #error "test failed."
678             #endif
679             , [ res=yes ], [ res=no ])
680         AC_MSG_RESULT([$res])
681         if test "$res" != "yes"; then
682             AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
683         fi
684         # Check windres version
685         AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
686         _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
687         AC_MSG_RESULT([$_WINDRES_VERSION])
688         _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
689         _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
690         _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
691         WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
692         WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
693         WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
694         if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
695                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
696                 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
697                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
698                 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
699                 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
700         then
701             AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
702         fi
704         AC_CHECK_PROGS(MIDL, $target-widl widl)
705         if test -n "$MIDL"; then
706             case "$target" in
707             i*86-*)
708                 MIDL_FLAGS="$MIDL_FLAGS --win32 -m32"
709                 ;;
710             x86_64-*)
711                 MIDL_FLAGS="$MIDL_FLAGS --win64 -m64"
712                 ;;
713             esac
714         fi
716         MOZ_WINSDK_MAXVER=0x06020000
717     fi # !GNU_CC
719     AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
720     AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
721     # Require OS features provided by IE 6.0 SP2 (XP SP2)
722     AC_DEFINE_UNQUOTED(_WIN32_IE,0x0603)
724     # If the maximum version supported by this SDK is lower than the target
725     # version, error out
726     AC_MSG_CHECKING([for Windows SDK being recent enough])
727     if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
728         AC_MSG_RESULT("yes")
729     else
730         AC_MSG_RESULT("no")
731         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.])
732     fi
733     
734     AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
735     # Definitions matching sdkddkver.h
736     AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
737     ;;
738 esac
740 AC_PROG_CPP
741 AC_PROG_CXXCPP
743 if test -n "$_WIN32_MSVC"; then
744     SKIP_PATH_CHECKS=1
745     SKIP_COMPILER_CHECKS=1
746     SKIP_LIBRARY_CHECKS=1
748     # Since we're skipping compiler and library checks, hard-code
749     # some facts here.
750     AC_DEFINE(HAVE_IO_H)
751     AC_DEFINE(HAVE_SETBUF)
752     AC_DEFINE(HAVE_ISATTY)
755 fi # COMPILE_ENVIRONMENT
757 AC_SUBST(MIDL_FLAGS)
758 AC_SUBST(_MSC_VER)
760 AC_SUBST(GNU_AS)
761 AC_SUBST(GNU_LD)
762 AC_SUBST(GNU_CC)
763 AC_SUBST(GNU_CXX)
764 AC_SUBST(INTEL_CC)
765 AC_SUBST(INTEL_CXX)
767 AC_SUBST(STL_FLAGS)
768 AC_SUBST(WRAP_STL_INCLUDES)
769 AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
770 AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
772 dnl ========================================================
773 dnl Checks for programs.
774 dnl ========================================================
775 AC_PROG_INSTALL
776 AC_PROG_LN_S
778 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
779 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
780 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
781 _perl_res=$?
782 AC_MSG_RESULT([$_perl_version])
784 if test "$_perl_res" != 0; then
785     AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
789 AC_MSG_CHECKING([for full perl installation])
790 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
791 _perl_res=$?
792 if test "$_perl_res" != 0; then
793     AC_MSG_RESULT([no])
794     AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}.  A full perl installation is required.])
795 else
796     AC_MSG_RESULT([yes])
799 MOZ_ARG_WITH_BOOL(system-ply,
800 [  --with-system-ply       Use system installed python ply library],
801     [if $PYTHON -c 'import ply' 2>&5; then
802          MOZ_SYSTEM_PLY=1
803      else
804          AC_MSG_ERROR([python ply library is not found but --with-system-ply was requested])
805      fi])
807 AC_SUBST(MOZ_SYSTEM_PLY)
809 if test -z "$COMPILE_ENVIRONMENT"; then
810     NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
812 AC_SUBST(NSINSTALL_BIN)
814 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
815 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
816 MOZ_PATH_PROGS(UNZIP, unzip)
817 if test -z "$UNZIP" -o "$UNZIP" = ":"; then
818     AC_MSG_ERROR([unzip not found in \$PATH])
820 MOZ_PATH_PROGS(ZIP, zip)
821 if test -z "$ZIP" -o "$ZIP" = ":"; then
822     AC_MSG_ERROR([zip not found in \$PATH])
824 MOZ_PATH_PROG(XARGS, xargs)
825 if test -z "$XARGS" -o "$XARGS" = ":"; then
826     AC_MSG_ERROR([xargs not found in \$PATH .])
829 MOZ_PATH_PROG(RPMBUILD, rpmbuild, :)
830 AC_SUBST(RPMBUILD)
832 if test "$COMPILE_ENVIRONMENT"; then
834 dnl ========================================================
835 dnl = Mac OS X toolchain support
836 dnl ========================================================
838 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
839 dnl that a universal binary is being produced and MOZ_CAN_RUN_PROGRAMS
840 dnl when we can run target binaries.
841 AC_SUBST(UNIVERSAL_BINARY)
842 AC_SUBST(MOZ_CAN_RUN_PROGRAMS)
844 MOZ_ARG_WITH_STRING(unify-dist,
845 [  --with-unify-dist=dir   Location of the dist directory to unify with at packaging time (Mac OS X universal build only)],
846     UNIFY_DIST=$withval)
847 if test -n "$UNIVERSAL_BINARY"; then
848     if test -z "$UNIFY_DIST"; then
849         AC_MSG_ERROR([You need to provide the --with-unify-dist=dir argument when performing a universal build])
850     fi
851     case "$UNIFY_DIST" in
852     /*)
853         ;;
854     *)
855         UNIFY_DIST="${MOZ_BUILD_ROOT}/${UNIFY_DIST}"
856         ;;
857     esac
859 AC_SUBST(UNIFY_DIST)
861 dnl ========================================================
862 dnl Check for MacOS deployment target version
863 dnl ========================================================
865 MOZ_ARG_ENABLE_STRING(macos-target,
866                       [  --enable-macos-target=VER (default=10.6)
867                           Set the minimum MacOS version needed at runtime],
868                       [_MACOSX_DEPLOYMENT_TARGET=$enableval])
870 case "$target" in
871 *-darwin*)
872     if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
873         dnl Use the specified value
874         export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
875     else
876         dnl No value specified on the command line or in the environment,
877         dnl use architecture minimum.
878         export MACOSX_DEPLOYMENT_TARGET=10.6
879     fi
880     ;;
881 esac
883 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
885 dnl ========================================================
886 dnl = Mac OS X SDK support
887 dnl ========================================================
888 MACOS_SDK_DIR=
889 NEXT_ROOT=
890 MOZ_ARG_WITH_STRING(macos-sdk,
891 [  --with-macos-sdk=dir    Location of platform SDK to use (Mac OS X only)],
892     MACOS_SDK_DIR=$withval)
894 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
895 dnl NEXT_ROOT will be set and exported only if it's needed.
896 AC_SUBST(MACOS_SDK_DIR)
897 AC_SUBST(NEXT_ROOT)
899 if test "$MACOS_SDK_DIR"; then
900   dnl Sync this section with the ones in NSPR and NSS.
901   dnl Changes to the cross environment here need to be accounted for in
902   dnl the libIDL checks (below) and xpidl build.
904   if test ! -d "$MACOS_SDK_DIR"; then
905     AC_MSG_ERROR([SDK not found.  When using --with-macos-sdk, you must
906 specify a valid SDK.  SDKs are installed when the optional cross-development
907 tools are selected during the Xcode/Developer Tools installation.])
908   fi
910   CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
911   CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
913   dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER.
914   CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
915   CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
917   AC_LANG_SAVE
918   AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
919   AC_LANG_CPLUSPLUS
920   AC_TRY_COMPILE([#include <new>],[],
921    result=yes,
922    result=no)
923   AC_LANG_RESTORE
924   AC_MSG_RESULT($result)
926   if test "$result" = "no" ; then
927     AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
928   fi
931 fi # COMPILE_ENVIRONMENT
933 AC_MSG_CHECKING([compiler version])
934 # Just print it so it shows up in the logs.
935 cc_version=$($CC --version)
936 AC_MSG_RESULT([$cc_version])
938 if test -n "$MAKE"; then
939   if test `echo $MAKE | grep -c make.py` != 1; then
940      NOT_PYMAKE=$MAKE
941   fi
944 case "$host_os" in
945 mingw*)
946     MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
947     ;;
949     MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
950     ;;
951 esac
952 if test "$GMAKE" = ":"; then
953    AC_MSG_ERROR([GNU make not found])
955 AC_SUBST(GMAKE)
957 if test -z "$MAKE"; then
958   MAKE=$GMAKE
961 if test "$COMPILE_ENVIRONMENT"; then
963 AC_PATH_XTRA
965 XCFLAGS="$X_CFLAGS"
967 fi # COMPILE_ENVIRONMENT
969 dnl ========================================================
970 dnl set the defaults first
971 dnl ========================================================
972 AS_BIN=$AS
973 AR_LIST='$(AR) t'
974 AR_EXTRACT='$(AR) x'
975 AR_DELETE='$(AR) d'
976 AS='$(CC)'
977 AS_DASH_C_FLAG='-c'
978 DLL_PREFIX=lib
979 LIB_PREFIX=lib
980 DLL_SUFFIX=.so
981 OBJ_SUFFIX=o
982 LIB_SUFFIX=a
983 ASM_SUFFIX=s
984 IMPORT_LIB_SUFFIX=
985 TARGET_MD_ARCH=unix
986 DIRENT_INO=d_ino
987 MOZ_USER_DIR=".mozilla"
989 MOZ_JPEG_CFLAGS=
990 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/media/libjpeg)'
991 MOZ_BZ2_CFLAGS=
992 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
993 MOZ_PNG_CFLAGS=
994 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/media/libpng)'
996 MOZ_JS_STATIC_LIBS='$(call EXPAND_LIBNAME_PATH,js_static,$(LIBXUL_DIST)/lib)'
997 MOZ_JS_SHARED_LIBS='$(call EXPAND_LIBNAME_PATH,mozjs,$(LIBXUL_DIST)/lib)'
998 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxul -lxpcom_core -lmozalloc'
999 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
1000 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxul -lmozalloc'
1001 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS)'
1002 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1003 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
1005 # These are specially defined on Windows only
1006 case "$target" in
1007 *-mingw*)
1008   XPCOM_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1009   XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime.$(LIB_SUFFIX)'
1010   ;;
1012   XPCOM_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_GLUE_LDOPTS
1013   XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_STANDALONE_GLUE_LDOPTS
1014   ;;
1015 esac
1017 MOZ_FS_LAYOUT=unix
1019 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
1021 USE_DEPENDENT_LIBS=1
1023 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
1025 if test -n "$CROSS_COMPILE"; then
1026     OS_TARGET="${target_os}"
1027     OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
1028     OS_RELEASE=
1029     case "${target_os}" in
1030         linux*)       OS_ARCH=Linux OS_TARGET=Linux ;;
1031         kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
1032         gnu*)         OS_ARCH=GNU ;;
1033         solaris*)     OS_ARCH=SunOS OS_RELEASE=5 ;;
1034         mingw*)       OS_ARCH=WINNT OS_TARGET=WINNT ;;
1035         darwin*)      OS_ARCH=Darwin OS_TARGET=Darwin ;;
1036     esac
1037     case "${target}" in
1038         *-android*|*-linuxandroid*) OS_ARCH=Linux OS_TARGET=Android ;;
1039     esac
1040 else
1041     OS_TARGET=`uname -s`
1042     OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1043     OS_RELEASE=`uname -r`
1046 # Before this used `uname -m` when not cross compiling
1047 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1048 OS_TEST="${target_cpu}"
1050 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1052 #######################################################################
1053 # Master "Core Components" macros for getting the OS target           #
1054 #######################################################################
1057 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1058 # cross-compilation.
1062 # Define and override various archtecture-specific variables, including
1063 # HOST_OS_ARCH
1064 # OS_ARCH
1065 # OS_TEST
1066 # OS_TARGET
1067 # OS_RELEASE
1068 # OS_MINOR_RELEASE
1071 case "$HOST_OS_ARCH" in
1072 mingw*)
1073     HOST_OS_ARCH=WINNT
1074     ;;
1075 darwin*)
1076     HOST_OS_ARCH=Darwin
1077     ;;
1078 linux*)
1079     HOST_OS_ARCH=Linux
1080     ;;
1081 solaris*)
1082     HOST_OS_ARCH=SunOS
1083     SOLARIS_SUNPRO_CC=
1084     SOLARIS_SUNPRO_CXX=
1085     if test -z "$GNU_CC"; then
1086         if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1087             SOLARIS_SUNPRO_CC=1
1088        fi
1089     fi
1091     if test -z "$GNU_CXX"; then
1092        if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1093            SOLARIS_SUNPRO_CXX=1
1094        fi
1095     fi
1096     AC_SUBST(SOLARIS_SUNPRO_CC)
1097     AC_SUBST(SOLARIS_SUNPRO_CXX)
1098     ;;
1099 OS_2)
1100     HOST_OS_ARCH=OS2
1101     ;;
1102 esac
1104 case "$OS_ARCH" in
1105 WINNT)
1106     if test -z "$CROSS_COMPILE" ; then
1107         OS_TEST=`uname -p`
1108     fi
1109     ;;
1110 Windows_NT)
1112 # If uname -s returns "Windows_NT", we assume that we are using
1113 # the uname.exe in MKS toolkit.
1115 # The -r option of MKS uname only returns the major version number.
1116 # So we need to use its -v option to get the minor version number.
1117 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1119     OS_ARCH=WINNT
1120     OS_TARGET=WINNT
1121     OS_MINOR_RELEASE=`uname -v`
1122     if test "$OS_MINOR_RELEASE" = "00"; then
1123         OS_MINOR_RELEASE=0
1124     fi
1125     OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1126     ;;
1127 MINGW*_NT*)
1129 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1130 # the uname.exe in the MSYS tools.
1132     OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1133     OS_ARCH=WINNT
1134     OS_TARGET=WINNT
1135     ;;
1136 AIX)
1137     OS_RELEASE=`uname -v`.`uname -r`
1138     OS_TEST=${target_cpu}
1139     ;;
1140 OS_2)
1141     OS_ARCH=OS2
1142     OS_TARGET=OS2
1143     OS_RELEASE=`uname -v`
1144     ;;
1145 Darwin)
1146     case "${target_cpu}" in
1147     powerpc*)
1148         OS_TEST=ppc
1149         ;;
1150     i*86*)
1151         OS_TEST=i386
1152         ;;
1153     x86_64)
1154         OS_TEST=x86_64
1155         ;;
1156     *)
1157         if test -z "$CROSS_COMPILE" ; then
1158             OS_TEST=`uname -p`
1159         fi
1160         ;;
1161     esac
1162     ;;
1163 esac
1165 # Only set CPU_ARCH if we recognize the value of OS_TEST
1167 case "$OS_TEST" in
1168 *86 | i86pc)
1169     CPU_ARCH=x86
1170     ;;
1172 powerpc64 | ppc64)
1173     CPU_ARCH=ppc64
1174     ;;
1176 powerpc | ppc | rs6000)
1177     CPU_ARCH=ppc
1178     ;;
1180 Alpha | alpha | ALPHA)
1181     CPU_ARCH=Alpha
1182     ;;
1184 s390)
1185     CPU_ARCH=s390
1186     ;;
1188 s390x)
1189     CPU_ARCH=s390x
1190     ;;
1192 hppa* | parisc)
1193     CPU_ARCH=hppa
1194     ;;
1196 sun4u | sparc*)
1197     CPU_ARCH=sparc
1198     ;;
1200 x86_64 | ia64)
1201     CPU_ARCH="$OS_TEST"
1202     ;;
1204 arm*)
1205     CPU_ARCH=arm
1206     ;;
1208 mips|mipsel)
1209     CPU_ARCH="mips"
1210     ;;
1211 esac
1213 if test -z "$OS_TARGET"; then
1214     OS_TARGET=$OS_ARCH
1216 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1218 dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64.
1219 dnl ===============================================================
1220 INTEL_ARCHITECTURE=
1221 case "$OS_TEST" in
1222     x86_64|i?86)
1223       INTEL_ARCHITECTURE=1
1224 esac
1226 dnl Configure platform-specific CPU architecture compiler options.
1227 dnl ==============================================================
1228 MOZ_ARCH_OPTS
1230 dnl =================================================================
1231 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1232 dnl which is bad when cross compiling.
1233 dnl =================================================================
1234 if test "$COMPILE_ENVIRONMENT"; then
1235 configure_static_assert_macros='
1236 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1237 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1238 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1241 dnl test that the macros actually work:
1242 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1243 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1244  [AC_LANG_SAVE
1245   AC_LANG_C
1246   ac_cv_static_assertion_macros_work="yes"
1247   AC_TRY_COMPILE([$configure_static_assert_macros],
1248                  [CONFIGURE_STATIC_ASSERT(1)],
1249                  ,
1250                  ac_cv_static_assertion_macros_work="no")
1251   AC_TRY_COMPILE([$configure_static_assert_macros],
1252                  [CONFIGURE_STATIC_ASSERT(0)],
1253                  ac_cv_static_assertion_macros_work="no",
1254                  )
1255   AC_LANG_CPLUSPLUS
1256   AC_TRY_COMPILE([$configure_static_assert_macros],
1257                  [CONFIGURE_STATIC_ASSERT(1)],
1258                  ,
1259                  ac_cv_static_assertion_macros_work="no")
1260   AC_TRY_COMPILE([$configure_static_assert_macros],
1261                  [CONFIGURE_STATIC_ASSERT(0)],
1262                  ac_cv_static_assertion_macros_work="no",
1263                  )
1264   AC_LANG_RESTORE
1265  ])
1266 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1267 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1268     AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1270 fi # COMPILE_ENVIRONMENT
1272 dnl ========================================================
1273 dnl Android libstdc++, placed here so it can use MOZ_ARCH
1274 dnl computed above.
1275 dnl ========================================================
1277 MOZ_ANDROID_STLPORT
1279 dnl ========================================================
1280 dnl Suppress Clang Argument Warnings
1281 dnl ========================================================
1282 if test -n "$CLANG_CC"; then
1283     _WARNINGS_CFLAGS="-Qunused-arguments ${_WARNINGS_CFLAGS}"
1284     CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
1286 if test -n "$CLANG_CXX"; then
1287     _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
1290 dnl ========================================================
1291 dnl = Use Address Sanitizer
1292 dnl ========================================================
1293 MOZ_ARG_ENABLE_BOOL(address-sanitizer,
1294 [  --enable-address-sanitizer       Enable Address Sanitizer (default=no)],
1295     MOZ_ASAN=1,
1296     MOZ_ASAN= )
1297 if test -n "$MOZ_ASAN"; then
1298     MOZ_LLVM_HACKS=1
1299     AC_DEFINE(MOZ_ASAN)
1301 AC_SUBST(MOZ_ASAN)
1303 dnl ========================================================
1304 dnl = Enable hacks required for LLVM instrumentations
1305 dnl ========================================================
1306 MOZ_ARG_ENABLE_BOOL(llvm-hacks,
1307 [  --enable-llvm-hacks       Enable workarounds required for several LLVM instrumentations (default=no)],
1308     MOZ_LLVM_HACKS=1,
1309     MOZ_LLVM_HACKS= )
1310 if test -n "$MOZ_LLVM_HACKS"; then
1311     MOZ_NO_WLZDEFS=1
1312     MOZ_CFLAGS_NSS=1
1314 AC_SUBST(MOZ_NO_WLZDEFS)
1315 AC_SUBST(MOZ_CFLAGS_NSS)
1317 dnl ========================================================
1318 dnl GNU specific defaults
1319 dnl ========================================================
1320 if test "$GNU_CC"; then
1321     # Per bug 719659 comment 2, some of the headers on ancient build machines
1322     # may require gnu89 inline semantics.  But otherwise, we use C99.
1323     CFLAGS="$CFLAGS -std=gnu99 -fgnu89-inline"
1324     # FIXME: Let us build with strict aliasing. bug 414641.
1325     CFLAGS="$CFLAGS -fno-strict-aliasing"
1326     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1327     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1328     DSO_LDOPTS='-shared'
1329     if test "$GCC_USE_GNU_LD"; then
1330         # Some tools like ASan use a runtime library that is only
1331         # linked against executables, so we must allow undefined
1332         # symbols for shared objects in some cases.
1333         if test -z "$MOZ_NO_WLZDEFS"; then
1334             # Don't allow undefined symbols in libraries
1335             DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1336         fi
1337     fi
1338     WARNINGS_AS_ERRORS='-Werror'
1339     # Don't treat -Wuninitialized as error b/c it has lots of false positives.
1340     WARNINGS_AS_ERRORS="$WARNINGS_AS_ERRORS -Wno-error=uninitialized"
1341     # Don't treat -Wdeprecated-declarations as error b/c we don't want our
1342     # builds held hostage when a platform-specific API is suddenly deprecated.
1343     WARNINGS_AS_ERRORS="$WARNINGS_AS_ERRORS -Wno-error=deprecated-declarations"
1344     DSO_CFLAGS=''
1345     DSO_PIC_CFLAGS='-fPIC'
1346     ASFLAGS="$ASFLAGS -fPIC"
1347     AC_MSG_CHECKING([for --noexecstack option to as])
1348     _SAVE_CFLAGS=$CFLAGS
1349     CFLAGS="$CFLAGS -Wa,--noexecstack"
1350     AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
1351                      [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
1352                      AC_MSG_RESULT([no]))
1353     CFLAGS=$_SAVE_CFLAGS
1354     AC_MSG_CHECKING([for -z noexecstack option to ld])
1355     _SAVE_LDFLAGS=$LDFLAGS
1356     LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
1357     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
1358                   AC_MSG_RESULT([no])
1359                   LDFLAGS=$_SAVE_LDFLAGS)
1360     AC_MSG_CHECKING([for --build-id option to ld])
1361     _SAVE_LDFLAGS=$LDFLAGS
1362     LDFLAGS="$LDFLAGS -Wl,--build-id"
1363     AC_TRY_LINK(,,AC_MSG_RESULT([yes])
1364                   [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,--build-id"],
1365                   AC_MSG_RESULT([no])
1366                   LDFLAGS=$_SAVE_LDFLAGS)
1369     # Check for -mssse3 on $CC
1370     AC_MSG_CHECKING([if toolchain supports -mssse3 option])
1371     HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
1372     _SAVE_CFLAGS=$CFLAGS
1373     CFLAGS="$CFLAGS -mssse3"
1374     AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
1375                      [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
1376                      AC_MSG_RESULT([no]))
1377     CFLAGS=$_SAVE_CFLAGS
1378     AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
1380     # Check for -msse4.1 on $CC
1381     AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
1382     HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
1383     _SAVE_CFLAGS=$CFLAGS
1384     CFLAGS="$CFLAGS -msse4.1"
1385     AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
1386                      [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
1387                      AC_MSG_RESULT([no]))
1388     CFLAGS=$_SAVE_CFLAGS
1389     AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
1391     # Turn on GNU-specific warnings:
1392     # -Wall - turn on a lot of warnings
1393     # -Wpointer-arith - good to have
1394     # -Wdeclaration-after-statement - MSVC doesn't like these
1395     # -Werror=return-type - catches missing returns, zero false positives
1396     # -Wtype-limits - catches overflow bugs, few false positives
1397     # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1398     # -Wsign-compare - catches comparison of signed and unsigned types
1399     #
1400     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -Wpointer-arith -Wdeclaration-after-statement"
1401     MOZ_C_SUPPORTS_WARNING(-W, error=return-type, ac_c_has_werror_return_type)
1402     MOZ_C_SUPPORTS_WARNING(-W, type-limits, ac_c_has_wtype_limits)
1403     MOZ_C_SUPPORTS_WARNING(-W, empty-body, ac_c_has_wempty_body)
1404     MOZ_C_SUPPORTS_WARNING(-W, sign-compare, ac_c_has_sign_compare)
1406     # Turn off the following warnings that -Wall turns on:
1407     # -Wno-unused - lots of violations in third-party code
1408     #
1409     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-unused"
1411     if test -z "$INTEL_CC" -a -z "$CLANG_CC"; then
1412        # Don't use -Wcast-align with ICC or clang
1413        case "$CPU_ARCH" in
1414            # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1415            hppa | ia64 | sparc | arm)
1416            ;;
1417            *)
1418         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1419            ;;
1420        esac
1421     fi
1423     _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1424     _USE_CPP_INCLUDE_FLAG=1
1425     ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
1427 elif test "$SOLARIS_SUNPRO_CC"; then
1428     DSO_CFLAGS=''
1429     if test "$CPU_ARCH" = "sparc"; then
1430         # for Sun Studio on Solaris/SPARC
1431         DSO_PIC_CFLAGS='-xcode=pic32'
1432     else
1433         DSO_PIC_CFLAGS='-KPIC'
1434     fi
1435     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1436 else
1437     MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1438     MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1440     DSO_LDOPTS='-shared'
1441     if test "$GNU_LD"; then
1442         # Don't allow undefined symbols in libraries
1443         DSO_LDOPTS="$DSO_LDOPTS -z defs"
1444     fi
1446     DSO_CFLAGS=''
1447     DSO_PIC_CFLAGS='-KPIC'
1448     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1451 if test "$GNU_CXX"; then
1452     # FIXME: Let us build with strict aliasing. bug 414641.
1453     CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
1455     # Turn on GNU-specific warnings:
1456     # -Wall - turn on a lot of warnings
1457     # -Wpointer-arith - good to have
1458     # -Woverloaded-virtual - ???
1459     # -Werror=return-type - catches missing returns, zero false positives
1460     # -Wtype-limits - catches overflow bugs, few false positives
1461     # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1462     # -Wsign-compare - catches comparison of signed and unsigned types
1463     #
1464     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual"
1465     MOZ_CXX_SUPPORTS_WARNING(-W, error=return-type, ac_cxx_has_werror_return_type)
1466     MOZ_CXX_SUPPORTS_WARNING(-W, type-limits, ac_cxx_has_wtype_limits)
1467     MOZ_CXX_SUPPORTS_WARNING(-W, empty-body, ac_cxx_has_wempty_body)
1468     MOZ_CXX_SUPPORTS_WARNING(-W, sign-compare, ac_cxx_has_sign_compare)
1470     # Turn off the following warnings that -Wall turns on:
1471     # -Wno-invalid-offsetof - we use offsetof on non-POD types frequently
1472     #
1473     MOZ_CXX_SUPPORTS_WARNING(-Wno-, invalid-offsetof, ac_cxx_has_wno_invalid_offsetof)
1475     if test -z "$INTEL_CXX" -a -z "$CLANG_CXX"; then
1476        # Don't use -Wcast-align with ICC or clang
1477        case "$CPU_ARCH" in
1478            # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1479            hppa | ia64 | sparc | arm)
1480            ;;
1481            *)
1482         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1483            ;;
1484        esac
1485     fi
1487     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1488     _USE_CPP_INCLUDE_FLAG=1
1490     # Recent clang and gcc support C++11 deleted functions without warnings if
1491     # compiling with -std=c++0x or -std=gnu++0x (or c++11 or gnu++11 in very new
1492     # versions).  We can't use -std=c++0x yet, so gcc's support must remain
1493     # unused.  But clang's warning can be disabled, so when compiling with clang
1494     # we use it to opt out of the warning, enabling (macro-encapsulated) use of
1495     # deleted function syntax.
1496     if test "$CLANG_CXX"; then
1497         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-c++0x-extensions"
1498         MOZ_CXX_SUPPORTS_WARNING(-Wno-, extended-offsetof, ac_cxx_has_wno_extended_offsetof)
1499     fi
1501 else
1502     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1505 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1506 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1507 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1508 dnl normal behavior.
1509 dnl ========================================================
1510 MKSHLIB_FORCE_ALL=
1511 MKSHLIB_UNFORCE_ALL=
1513 if test "$COMPILE_ENVIRONMENT"; then
1514 if test "$GNU_CC"; then
1515   AC_MSG_CHECKING(whether ld has archive extraction flags)
1516   AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1517    [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1518     ac_cv_mkshlib_force_and_unforce="no"
1519     exec 3<&0 <<LOOP_INPUT
1520         force="-Wl,--whole-archive";   unforce="-Wl,--no-whole-archive"
1521         force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1522         force="-Wl,-all";              unforce="-Wl,-none"
1523 LOOP_INPUT
1524     while read line
1525     do
1526       eval $line
1527       LDFLAGS=$force
1528       LIBS=$unforce
1529       AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1530     done
1531     exec 0<&3 3<&-
1532     LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1533    ])
1534   if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1535     AC_MSG_RESULT(no)
1536   else
1537     AC_MSG_RESULT(yes)
1538     eval $ac_cv_mkshlib_force_and_unforce
1539     MKSHLIB_FORCE_ALL=$force
1540     MKSHLIB_UNFORCE_ALL=$unforce
1541   fi
1542 fi # GNU_CC
1543 fi # COMPILE_ENVIRONMENT
1545 dnl ========================================================
1546 dnl Checking for 64-bit OS
1547 dnl ========================================================
1548 if test "$COMPILE_ENVIRONMENT"; then
1549 AC_LANG_SAVE
1550 AC_LANG_C
1551 AC_MSG_CHECKING(for 64-bit OS)
1552 AC_TRY_COMPILE([$configure_static_assert_macros],
1553                [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1554                result="yes", result="no")
1555 AC_MSG_RESULT("$result")
1556 if test "$result" = "yes"; then
1557     AC_DEFINE(HAVE_64BIT_OS)
1558     HAVE_64BIT_OS=1
1560 AC_SUBST(HAVE_64BIT_OS)
1561 AC_LANG_RESTORE
1562 fi # COMPILE_ENVIRONMENT
1564 dnl ========================================================
1565 dnl Enable high-memory support on OS/2 by default.
1566 dnl ========================================================
1567 MOZ_OS2_HIGH_MEMORY=1
1568 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1569 [  --disable-os2-high-mem  Disable high-memory support on OS/2],
1570     MOZ_OS2_HIGH_MEMORY=,
1571     MOZ_OS2_HIGH_MEMORY=1 )
1572 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1574 dnl ========================================================
1575 dnl = Use profiling compile flags
1576 dnl ========================================================
1577 MOZ_ARG_ENABLE_BOOL(profiling,
1578 [  --enable-profiling      Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1579     MOZ_PROFILING=1,
1580     MOZ_PROFILING= )
1582 # For profiling builds keep the symbol information
1583 if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then
1584     case "$OS_TARGET" in
1585     Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
1586         STRIP_FLAGS="--strip-debug"
1587         ;;
1588     esac
1591 dnl ========================================================
1592 dnl = Use incremental GC
1593 dnl ========================================================
1594 JSGC_INCREMENTAL=1
1595 MOZ_ARG_DISABLE_BOOL(gcincremental,
1596 [  --disable-gcincremental Disable incremental GC],
1597     JSGC_INCREMENTAL= )
1598 if test -n "$JSGC_INCREMENTAL"; then
1599     AC_DEFINE(JSGC_INCREMENTAL)
1602 dnl ========================================================
1603 dnl = Use generational GC
1604 dnl ========================================================
1605 MOZ_ARG_ENABLE_BOOL(gcgenerational,
1606 [  --enable-gcgenerational Enable generational GC],
1607     JSGC_GENERATIONAL=1,
1608     JSGC_GENERATIONAL= )
1609 if test -n "$JSGC_GENERATIONAL"; then
1610     AC_DEFINE(JSGC_GENERATIONAL)
1613 dnl ========================================================
1614 dnl = Perform moving GC stack rooting analysis
1615 dnl ========================================================
1616 MOZ_ARG_ENABLE_BOOL(root-analysis,
1617 [  --enable-root-analysis  Enable moving GC stack root analysis],
1618     JSGC_ROOT_ANALYSIS=1,
1619     JSGC_ROOT_ANALYSIS= )
1620 if test -n "$JSGC_ROOT_ANALYSIS"; then
1621     AC_DEFINE(JSGC_ROOT_ANALYSIS)
1624 dnl ========================================================
1625 dnl = Use exact stack rooting for GC
1626 dnl ========================================================
1627 MOZ_ARG_ENABLE_BOOL(exact-rooting,
1628 [  --enable-exact-rooting  Enable use of exact stack roots for GC],
1629     JSGC_USE_EXACT_ROOTING=1,
1630     JSGC_USE_EXACT_ROOTING= )
1631 if test -n "$JSGC_USE_EXACT_ROOTING"; then
1632     AC_DEFINE(JSGC_USE_EXACT_ROOTING)
1635 dnl ========================================================
1636 dnl = Use Valgrind
1637 dnl ========================================================
1638 MOZ_ARG_ENABLE_BOOL(valgrind,
1639 [  --enable-valgrind       Enable Valgrind integration hooks (default=no)],
1640     MOZ_VALGRIND=1,
1641     MOZ_VALGRIND= )
1642 if test -n "$MOZ_VALGRIND"; then
1643     MOZ_CHECK_HEADER([valgrind/valgrind.h], [],
1644         AC_MSG_ERROR(
1645             [--enable-valgrind specified but Valgrind is not installed]))
1646     AC_DEFINE(MOZ_VALGRIND)
1648 AC_SUBST(MOZ_VALGRIND)
1650 dnl ========================================================
1651 dnl jprof
1652 dnl ========================================================
1653 MOZ_ARG_ENABLE_BOOL(jprof,
1654 [  --enable-jprof          Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.],
1655     MOZ_JPROF=1,
1656     MOZ_JPROF= )
1657 if test -n "$MOZ_JPROF"; then
1658     MOZ_PROFILING=1
1659     AC_DEFINE(MOZ_JPROF)
1662 dnl ========================================================
1663 dnl SPS Profiler
1664 dnl ========================================================
1665 MOZ_ENABLE_PROFILER_SPS=1
1667 case "${OS_TARGET}" in
1668 Android)
1669     case "${CPU_ARCH}" in
1670     x86 | arm) ;;
1671     *)
1672         MOZ_ENABLE_PROFILER_SPS=
1673     esac
1674     ;;
1675 Linux)
1676     case "${CPU_ARCH}" in
1677     x86 | x86_64) ;;
1678     *)
1679         MOZ_ENABLE_PROFILER_SPS=
1680     esac
1681     ;;
1682 WINNT|Darwin) ;;
1684     MOZ_ENABLE_PROFILER_SPS=
1685     ;;
1686 esac
1688 if test -n "$MOZ_ENABLE_PROFILER_SPS"; then
1689     AC_DEFINE(MOZ_ENABLE_PROFILER_SPS)
1692 dnl ========================================================
1693 dnl shark
1694 dnl ========================================================
1695 MOZ_ARG_ENABLE_BOOL(shark,
1696 [  --enable-shark          Enable shark remote profiling. Implies --enable-profiling.],
1697     MOZ_SHARK=1,
1698     MOZ_SHARK= )
1699 if test -n "$MOZ_SHARK"; then
1700     MOZ_PROFILING=1
1701     AC_DEFINE(MOZ_SHARK)
1704 dnl ========================================================
1705 dnl instruments
1706 dnl ========================================================
1707 MOZ_ARG_ENABLE_BOOL(instruments,
1708 [  --enable-instruments    Enable instruments remote profiling. Implies --enable-profiling.],
1709     MOZ_INSTRUMENTS=1,
1710     MOZ_INSTRUMENTS= )
1711 if test -n "$MOZ_INSTRUMENTS"; then
1712     MOZ_PROFILING=1
1713     AC_DEFINE(MOZ_INSTRUMENTS)
1716 dnl ========================================================
1717 dnl callgrind
1718 dnl ========================================================
1719 MOZ_ARG_ENABLE_BOOL(callgrind,
1720 [  --enable-callgrind      Enable callgrind profiling. Implies --enable-profiling.],
1721     MOZ_CALLGRIND=1,
1722     MOZ_CALLGRIND= )
1723 if test -n "$MOZ_CALLGRIND"; then
1724     MOZ_PROFILING=1
1725     AC_DEFINE(MOZ_CALLGRIND)
1728 dnl ========================================================
1729 dnl vtune
1730 dnl ========================================================
1731 MOZ_ARG_ENABLE_BOOL(vtune,
1732 [  --enable-vtune          Enable vtune profiling. Implies --enable-profiling.],
1733     MOZ_VTUNE=1,
1734     MOZ_VTUNE= )
1735 if test -n "$MOZ_VTUNE"; then
1736     MOZ_PROFILING=1
1737     AC_DEFINE(MOZ_VTUNE)
1740 dnl ========================================================
1741 dnl Profiling
1742 dnl ========================================================
1743 if test -n "$MOZ_PROFILING"; then
1744     AC_DEFINE(MOZ_PROFILING)
1747 dnl ========================================================
1748 dnl System overrides of the defaults for host
1749 dnl ========================================================
1750 case "$host" in
1751 *mingw*)
1752     if test -n "$_WIN32_MSVC"; then
1753         HOST_AR=lib
1754         HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1755         HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1756         HOST_RANLIB='echo ranlib'
1757     else
1758         HOST_CFLAGS="$HOST_CFLAGS -mwindows"
1759     fi
1760     HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11 -D_CRT_SECURE_NO_WARNINGS"
1761     HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1762     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1763     HOST_BIN_SUFFIX=.exe
1764     case "$host" in
1765     *mingw*)
1766         PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1767         ;;
1768     esac
1770     case "${host_cpu}" in
1771     i*86)
1772         if test -n "$_WIN32_MSVC"; then
1773             HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
1774         fi
1775         ;;
1776     x86_64)
1777         if test -n "$_WIN32_MSVC"; then
1778             HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
1779         fi
1780         HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1781         ;;
1782     esac
1783     ;;
1785 *-darwin*)
1786     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1787     HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1788     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1789     ;;
1791 *-linux*|*-kfreebsd*-gnu|*-gnu*)
1792     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1793     HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1794     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1795     ;;
1797 *os2*)
1798     HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1799     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1800     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1801     HOST_BIN_SUFFIX=.exe
1802     MOZ_FIX_LINK_PATHS=
1803     ;;
1806     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1807     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1808     ;;
1809 esac
1811 dnl Check for using a custom <stdint.h> implementation
1812 dnl ========================================================
1813 AC_MSG_CHECKING(for custom <stdint.h> implementation)
1814 if test "$MOZ_CUSTOM_STDINT_H"; then
1815   AC_DEFINE_UNQUOTED(MOZ_CUSTOM_STDINT_H, "$MOZ_CUSTOM_STDINT_H")
1816   AC_MSG_RESULT(using $MOZ_CUSTOM_STDINT_H)
1817 else
1818   AC_MSG_RESULT(none specified)
1821 dnl Get mozilla version from central milestone file
1822 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1823 MOZILLA_UAVERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir -uaversion`
1825 dnl Get version of various core apps from the version files.
1826 FIREFOX_VERSION=`cat $_topsrcdir/browser/config/version.txt`
1828 if test -z "$FIREFOX_VERSION"; then
1829     AC_MSG_ERROR([FIREFOX_VERSION is unexpectedly blank.])
1832 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1833 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1834 AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION")
1836 MOZ_DOING_LTO(lto_is_enabled)
1838 dnl ========================================================
1839 dnl System overrides of the defaults for target
1840 dnl ========================================================
1842 case "$target" in
1843 *-aix*)
1844     AC_DEFINE(AIX)
1845     if test ! "$GNU_CC"; then
1846         if test ! "$HAVE_64BIT_OS"; then
1847             # Compiling with Visual Age C++ object model compat is the
1848             # default. To compile with object model ibm, add
1849             # AIX_OBJMODEL=ibm to .mozconfig.
1850             if test "$AIX_OBJMODEL" = "ibm"; then
1851                 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1852             else
1853                 AIX_OBJMODEL=compat
1854             fi
1855         else
1856             AIX_OBJMODEL=compat
1857         fi
1858         AC_SUBST(AIX_OBJMODEL)
1859         DSO_LDOPTS='-qmkshrobj=1'
1860         DSO_CFLAGS='-qflag=w:w'
1861         DSO_PIC_CFLAGS=
1862         LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1863         MOZ_FIX_LINK_PATHS=
1864         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1865         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1866         if test "$COMPILE_ENVIRONMENT"; then
1867             AC_LANG_SAVE
1868             AC_LANG_CPLUSPLUS
1869             AC_MSG_CHECKING([for IBM XLC/C++ compiler version >= 9.0.0.7])
1870             AC_TRY_COMPILE([],
1871                 [#if (__IBMCPP__ < 900)
1872                  #error "Bad compiler"
1873                  #endif],
1874                 _BAD_COMPILER=,_BAD_COMPILER=1)
1875             if test -n "$_BAD_COMPILER"; then
1876                 AC_MSG_RESULT([no])
1877                 AC_MSG_ERROR([IBM XLC/C++ 9.0.0.7 or higher is required to build.])
1878             else
1879                 AC_MSG_RESULT([yes])
1880             fi
1881             AC_LANG_RESTORE
1882             TARGET_COMPILER_ABI="ibmc"
1883             CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1884             CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1885         fi
1886     fi
1887     case "${target_os}" in
1888     aix4.1*)
1889         DLL_SUFFIX='_shr.a'
1890         ;;
1891     esac
1892     if test "$COMPILE_ENVIRONMENT"; then
1893         MOZ_CHECK_HEADERS(sys/inttypes.h)
1894     fi
1895     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1896     ;;
1898 *-darwin*)
1899     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1900     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1901     MOZ_OPTIMIZE_FLAGS="-O3"
1902     # Statically disable jemalloc on 10.5 and 32-bit 10.6.  See bug 702250.
1903     if test "$HAVE_64BIT_OS"; then
1904         MOZ_MEMORY=1
1905     fi
1906     DLL_SUFFIX=".dylib"
1907     DSO_LDOPTS=''
1908     STRIP_FLAGS="$STRIP_FLAGS -x -S"
1909     # Check whether we're targeting OS X or iOS
1910     AC_CACHE_CHECK(for iOS target,
1911                    ac_cv_ios_target,
1912                    [AC_TRY_COMPILE([#include <TargetConditionals.h>
1913 #if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
1914 #error not iOS
1915 #endif],
1916                                    [],
1917                                    ac_cv_ios_target="yes",
1918                                    ac_cv_ios_target="no")])
1919     if test "$ac_cv_ios_target" = "yes"; then
1920         AC_DEFINE(XP_IOS)
1921         AC_DEFINE(XP_DARWIN)
1922         _PLATFORM_DEFAULT_TOOLKIT='cairo-uikit'
1923     else
1924         AC_DEFINE(XP_MACOSX)
1925         AC_DEFINE(XP_DARWIN)
1926         _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1927         # The ExceptionHandling framework is needed for Objective-C exception
1928         # logging code in nsObjCExceptions.h. Currently we only use that in debug
1929         # builds.
1930         MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
1931     fi
1932     TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1935     if test "x$lto_is_enabled" = "xyes"; then
1936         echo "Skipping -dead_strip because lto is enabled."
1937     dnl DTrace and -dead_strip don't interact well. See bug 403132.
1938     dnl ===================================================================
1939     elif test "x$enable_dtrace" = "xyes"; then
1940         echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1941     else
1942         dnl check for the presence of the -dead_strip linker flag
1943         AC_MSG_CHECKING([for -dead_strip option to ld])
1944         _SAVE_LDFLAGS=$LDFLAGS
1945         LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1946         AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1947         if test -n "$_HAVE_DEAD_STRIP" ; then
1948             AC_MSG_RESULT([yes])
1949             MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1950         else
1951             AC_MSG_RESULT([no])
1952         fi
1954         LDFLAGS=$_SAVE_LDFLAGS
1955     fi
1957     dnl With newer linkers we need to pass -allow_heap_execute because of
1958     dnl Microsoft Silverlight (5.1.10411.0 at least).
1959     AC_MSG_CHECKING([for -allow_heap_execute option to ld])
1960     _SAVE_LDFLAGS=$LDFLAGS
1961     LDFLAGS="$LDFLAGS -Wl,-allow_heap_execute"
1962     AC_TRY_LINK(,[return 0;],_HAVE_ALLOW_HEAP_EXECUTE=1,
1963                 _HAVE_ALLOW_HEAP_EXECUTE=)
1964     if test -n "$_HAVE_ALLOW_HEAP_EXECUTE" ; then
1965         AC_MSG_RESULT([yes])
1966         MOZ_ALLOW_HEAP_EXECUTE_FLAGS="-Wl,-allow_heap_execute"
1967     else
1968         AC_MSG_RESULT([no])
1969     fi
1970     LDFLAGS=$_SAVE_LDFLAGS
1972     MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1973     ;;
1975 ia64*-hpux*)
1976     DLL_SUFFIX=".so"
1977     if test ! "$GNU_CC"; then
1978        DSO_LDOPTS='-b'
1979        DSO_CFLAGS=""
1980        DSO_PIC_CFLAGS=
1981        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
1982        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
1983        CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1984     else
1985        DSO_LDOPTS='-b -E'
1986        MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1987        MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1988     fi
1989     MOZ_FIX_LINK_PATHS=
1990     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1991     AC_DEFINE(_LARGEFILE64_SOURCE)
1992     ;;
1994 *-hpux*)
1995     DLL_SUFFIX=".sl"
1996     if test ! "$GNU_CC"; then
1997         DSO_LDOPTS='-b -Wl,+s'
1998         DSO_CFLAGS=""
1999         DSO_PIC_CFLAGS="+Z"
2000         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
2001         MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
2002         CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2003     else
2004         DSO_LDOPTS='-b -E +s'
2005         MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2006         MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2007     fi
2008     MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
2009     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2010     ;;
2012 *-android*|*-linuxandroid*)
2013     AC_DEFINE(NO_PW_GECOS)
2014     no_x=yes
2015     if test -n "$gonkdir"; then
2016         _PLATFORM_DEFAULT_TOOLKIT=cairo-gonk
2017         MOZ_B2G_RIL=1
2018         MOZ_B2G_BT=1
2019         MOZ_B2G_FM=1
2020     else
2021         _PLATFORM_DEFAULT_TOOLKIT=cairo-android
2022         MOZ_LINKER=1
2023     fi
2024     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2026     MOZ_GFX_OPTIMIZE_MOBILE=1
2027     MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions"
2028     ;;
2030 *-*linux*)
2031     # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
2032     # Similarly for GNU_CXX and INTEL_CXX.
2033     if test "$INTEL_CC" -o "$INTEL_CXX"; then
2034         # -Os has been broken on Intel's C/C++ compilers for quite a
2035         # while; Intel recommends against using it.
2036         MOZ_OPTIMIZE_FLAGS="-O2"
2037         MOZ_DEBUG_FLAGS="-g"
2038     elif test "$GNU_CC" -o "$GNU_CXX"; then
2039         case $GCC_VERSION in
2040         4.5.*)
2041             # -Os is broken on gcc 4.5.x we need to tweak it to get good results.
2042             MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
2043         esac
2044         MOZ_PGO_OPTIMIZE_FLAGS="-O3"
2045         MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks $MOZ_OPTIMIZE_SIZE_TWEAK"
2046         MOZ_DEBUG_FLAGS="-g"
2047     fi
2049     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2051     MOZ_MEMORY=1
2053     case "${target_cpu}" in
2054     alpha*)
2055         CFLAGS="$CFLAGS -mieee"
2056         CXXFLAGS="$CXXFLAGS -mieee"
2057     ;;
2058     i*86)
2059         USE_ELF_DYNSTR_GC=1
2060     ;;
2061     mips*)
2062         MOZ_DEBUG_FLAGS="-g" # We want inlining
2063     ;;
2064     esac
2066     if test -z "$MC"; then
2067         MC=mc.exe
2068     fi
2069     ;;
2070 *-mingw*)
2071     DSO_CFLAGS=
2072     DSO_PIC_CFLAGS=
2073     DLL_SUFFIX=.dll
2074     RC=rc.exe
2075     MC=mc.exe
2076     # certain versions of cygwin's makedepend barf on the
2077     # #include <string> vs -I./dist/include/string issue so don't use it
2078     if test -n "$GNU_CC"; then
2079         CC="$CC -mwindows"
2080         CXX="$CXX -mwindows"
2081         CPP="$CPP -mwindows"
2082         CFLAGS="$CFLAGS -mms-bitfields"
2083         CXXFLAGS="$CXXFLAGS -mms-bitfields"
2084         DSO_LDOPTS='-shared'
2085         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2086         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2087         RC='$(WINDRES)'
2088         # Use static libgcc and libstdc++
2089         LDFLAGS="$LDFLAGS -static-libgcc -static-libstdc++"
2090         # Use temp file for windres (bug 213281)
2091         RCFLAGS='-O coff --use-temp-file'
2092         # mingw doesn't require kernel32, user32, and advapi32 explicitly
2093         LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32 -lnetapi32"
2094         MOZ_FIX_LINK_PATHS=
2095         DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxul -lxpcom_core -lmozalloc'
2096         XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxul -lmozalloc'
2097         DLL_PREFIX=
2098         IMPORT_LIB_SUFFIX=dll.a
2100         # We use mix of both POSIX and Win32 printf format across the tree, so format
2101         # warnings are useless on mingw.
2102         MOZ_C_SUPPORTS_WARNING(-Wno-, format, ac_c_has_wno_format)
2103         MOZ_CXX_SUPPORTS_WARNING(-Wno-, format, ac_cxx_has_wno_format)
2104     else
2105         TARGET_COMPILER_ABI=msvc
2106         HOST_CC='$(CC)'
2107         HOST_CXX='$(CXX)'
2108         HOST_LD='$(LD)'
2109         if test "$AS_BIN"; then
2110             AS="$(basename "$AS_BIN")"
2111         fi
2112         AR='lib'
2113         AR_FLAGS='-NOLOGO -OUT:"$@"'
2114         AR_EXTRACT=
2115         RANLIB='echo not_ranlib'
2116         STRIP='echo not_strip'
2117         PKG_SKIP_STRIP=1
2118         XARGS=xargs
2119         ZIP=zip
2120         UNZIP=unzip
2121         DOXYGEN=:
2122         ASM_SUFFIX=asm
2123         OBJ_SUFFIX=obj
2124         LIB_SUFFIX=lib
2125         DLL_PREFIX=
2126         LIB_PREFIX=
2127         IMPORT_LIB_SUFFIX=lib
2128         MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2129         MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2130         MKSHLIB_FORCE_ALL=
2131         MKSHLIB_UNFORCE_ALL=
2132         DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2133         _USE_CPP_INCLUDE_FLAG=1
2134         _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2135         _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2136         CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2137         CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2138         # khuey says we can safely ignore MSVC warning C4251
2139         # MSVC warning C4244 (implicit type conversion may lose data) warns
2140         # and requires workarounds for perfectly valid code.  Also, GCC/clang
2141         # don't warn about it by default. So for consistency/sanity, we turn
2142         # it off on MSVC, too.
2143         # MSVC warning C4345 warns of newly conformant behavior as of VS2003.
2144         # MSVC warning C4351 warns of newly conformant behavior as of VS2005.
2145         # MSVC warning C4482 warns when an enum value is refered specifing the
2146         # name of the enum itself.  This behavior is allowed in C++11, and the
2147         # warning has been removed in VS2012.
2148         # MSVC warning C4800 warns when a value is implicitly cast to bool,
2149         # because this also forces narrowing to a single byte, which can be a
2150         # perf hit.  But this matters so little in practice (and often we want
2151         # that behavior) that it's better to turn it off.
2152         # MSVC warning C4819 warns some UTF-8 characters (e.g. copyright sign)
2153         # on non-Western system locales even if it is in a comment.
2154         CFLAGS="$CFLAGS -wd4244 -wd4819"
2155         CXXFLAGS="$CXXFLAGS -wd4251 -wd4244 -wd4345 -wd4351 -wd4482 -wd4800 -wd4819"
2156         # make 'foo == bar;' error out
2157         CFLAGS="$CFLAGS -we4553"
2158         CXXFLAGS="$CXXFLAGS -we4553"
2159         LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib netapi32.lib"
2160         MOZ_DEBUG_FLAGS='-Zi'
2161         MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2162         WARNINGS_AS_ERRORS='-WX'
2163         MOZ_OPTIMIZE_FLAGS='-O1'
2164         MOZ_FIX_LINK_PATHS=
2165         DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2166         XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2167         LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2168         MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2169         LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT"
2170         dnl For profile-guided optimization
2171         PROFILE_GEN_CFLAGS="-GL"
2172         PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2173         dnl XXX: PGO builds can fail with warnings treated as errors,
2174         dnl specifically "no profile data available" appears to be
2175         dnl treated as an error sometimes. This might be a consequence
2176         dnl of using WARNINGS_AS_ERRORS in some modules, combined
2177         dnl with the linker doing most of the work in the whole-program
2178         dnl optimization/PGO case. I think it's probably a compiler bug,
2179         dnl but we work around it here.
2180         PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2181         dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2182         dnl Probably also a compiler bug, but what can you do?
2183         PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2184         LDFLAGS="$LDFLAGS -DYNAMICBASE"
2185         if test "$_MSC_VER" -ge 1500; then
2186             dnl VS2008 or later supports SSSE3
2187             HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
2188             AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
2189         fi
2190     fi
2191     AC_DEFINE(HAVE_SNPRINTF)
2192     AC_DEFINE(_WINDOWS)
2193     AC_DEFINE(WIN32)
2194     AC_DEFINE(XP_WIN)
2195     AC_DEFINE(XP_WIN32)
2196     AC_DEFINE(HW_THREADS)
2197     AC_DEFINE(STDC_HEADERS)
2198     AC_DEFINE(NEW_H, <new>)
2199     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2200     TARGET_MD_ARCH=win32
2201     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2202     BIN_SUFFIX='.exe'
2203     MOZ_USER_DIR="Mozilla"
2205     dnl Hardcode to win95 for now - cls
2206     TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2208     dnl set NO_X11 defines here as the general check is skipped on win32
2209     no_x=yes
2210     AC_DEFINE(NO_X11)
2212     case "$host" in
2213     *-mingw*)
2214         MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2215         if test -n "$L10NBASEDIR"; then
2216             L10NBASEDIR=`cd $L10NBASEDIR && pwd -W`
2217         fi
2218         ;;
2219     esac
2221     case "$host" in
2222     *-mingw*)
2223         if test -z "$MOZ_TOOLS"; then
2224             AC_MSG_ERROR([MOZ_TOOLS is not set])
2225         fi
2226         MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2227         if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
2228             AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2229         fi
2230         MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2231         if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2232             AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2233         fi
2234         ;;
2235     esac
2237     case "$host_os" in
2238     cygwin*|msvc*|mks*)
2239         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.])
2240         ;;
2241     esac
2243     case "$target" in
2244     i*86-*)
2245         if test "$HAVE_64BIT_OS"; then
2246             AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2247         fi
2249         if test -n "$GNU_CC"; then
2250             CFLAGS="$CFLAGS -mstackrealign -fno-keep-inline-dllexport"
2251             CXXFLAGS="$CXXFLAGS -mstackrealign -fno-keep-inline-dllexport"
2252             LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup -Wl,--large-address-aware"
2253         else
2254             AC_DEFINE(HAVE_STDCALL)
2255             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
2256             LDFLAGS="$LDFLAGS -SAFESEH"
2257         fi
2259         AC_DEFINE(_X86_)
2260         ;;
2261     x86_64-*)
2262         if test -n "$_WIN32_MSVC"; then
2263             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
2264         fi
2265         AC_DEFINE(_AMD64_)
2266         ;;
2267     *)
2268         AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2269         ;;
2270     esac
2272     if test "$HAVE_64BIT_OS"; then
2273         AC_DEFINE(_WIN64)
2274     fi
2275     ;;
2277 *-netbsd*)
2278     DSO_CFLAGS=''
2279     CFLAGS="$CFLAGS -Dunix"
2280     CXXFLAGS="$CXXFLAGS -Dunix"
2281     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2282         DLL_SUFFIX=".so"
2283         DSO_PIC_CFLAGS='-fPIC -DPIC'
2284         DSO_LDOPTS='-shared'
2285         BIN_FLAGS='-Wl,--export-dynamic'
2286     else
2287         DSO_PIC_CFLAGS='-fPIC -DPIC'
2288         DLL_SUFFIX=".so.1.0"
2289         DSO_LDOPTS='-shared'
2290     fi
2291     # This will fail on a.out systems prior to 1.5.1_ALPHA.
2292     MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2293     MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2294     if test "$LIBRUNPATH"; then
2295         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2296     fi
2297     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2298     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2299     ;;
2301 *-openbsd*)
2302     if test "$SO_VERSION"; then
2303         DLL_SUFFIX=".so.$SO_VERSION"
2304     else
2305         DLL_SUFFIX=".so.1.0"
2306     fi
2307     MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib -Wl,-rpath-link,$(if $(X11BASE),$(X11BASE),/usr/X11R6)/lib'
2308     DSO_CFLAGS=''
2309     DSO_PIC_CFLAGS='-fPIC'
2310     DSO_LDOPTS='-shared -fPIC'
2311     if test "$LIBRUNPATH"; then
2312         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2313     fi
2314     ;;
2316 *-os2*)
2317     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2318     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2319     AC_DEFINE(OS2)
2320     AC_DEFINE(XP_OS2)
2321     AC_DEFINE(OS2EMX_PLAIN_CHAR)
2322     AC_DEFINE(TCPV40HDRS)
2323     DLL_PREFIX=
2324     LIB_PREFIX=
2325     LIB_SUFFIX=lib
2326     BIN_SUFFIX=".exe"
2327     DLL_SUFFIX=".dll"
2328     IMPORT_LIB_SUFFIX=lib
2329     DSO_PIC_CFLAGS=
2330     AR=emxomfar
2331     AR_FLAGS='r $@'
2332     CFLAGS="$CFLAGS -Zomf"
2333     CXXFLAGS="$CXXFLAGS -Zomf"
2334     DSO_LDOPTS='-Zdll'
2335     BIN_FLAGS='-Zlinker /ST:0x100000'
2336     IMPLIB='emximp -o'
2337     FILTER='true'
2338     LDFLAGS='-Zmap'
2339     WARNINGS_AS_ERRORS='-Werror'
2340     MOZ_DEBUG_FLAGS="-g -fno-inline"
2341     MOZ_OPTIMIZE_FLAGS="-O2"
2342     MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2343     DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2344     LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2345     TARGET_MD_ARCH=os2
2346     _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2347     RC=rc.exe
2348     MC=mc.exe
2349     RCFLAGS='-n'
2350     MOZ_USER_DIR="Mozilla"
2351     ZIP="$ZIP -X"
2352     STRIP=lxlite
2353     STRIP_FLAGS="/yua /ydd /yxd /ynl /anp /b- /cs+ /d /i- /ml1 /mr2 /mf2 /r+ /u+ /x- /zs:0 /zx /zd"
2355     if test "$MOZTOOLS"; then
2356         MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2357     else
2358         AC_MSG_ERROR([MOZTOOLS is not set])
2359     fi
2360     if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2361         DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2362         LDFLAGS="$LDFLAGS -Zhigh-mem"
2363         MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2364         AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2365     fi
2367     # GCC for OS/2 currently predefines these, but we don't want them
2368     _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2369     _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2371     AC_CACHE_CHECK(for __declspec(dllexport),
2372         ac_os2_declspec,
2373         [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2374                         [return 0;],
2375                         ac_os2_declspec="yes",
2376                         ac_os2_declspec="no")])
2377     if test "$ac_os2_declspec" != "yes"; then
2378         AC_MSG_ERROR([Compiler does not support __declspec(dllexport), install GCC-4.3.2 or newer])
2379     fi
2380     ;;
2382 *-solaris*)
2383     AC_DEFINE(SOLARIS)
2384     TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2385     MOZ_FIX_LINK_PATHS=
2386     # $ORIGIN/.. is for shared libraries under components/ to locate shared
2387     # libraries one level up (e.g. libnspr4.so)
2388     if test "$SOLARIS_SUNPRO_CC"; then
2389        LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
2390        LIBS="-lCrun -lCstd -lc $LIBS"
2391        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2392        CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
2393        CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
2394        LDFLAGS="-xildoff $LDFLAGS"
2395        if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
2396            _SAVE_LDFLAGS=$LDFLAGS
2397            LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2398            AC_TRY_LINK([#include <stdio.h>],
2399                        [printf("Hello World\n");],
2400                        ,
2401                        [LDFLAGS=$_SAVE_LDFLAGS])
2402        fi
2403        MOZ_OPTIMIZE_FLAGS="-xO4"
2404        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2405        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2406        MKSHLIB_FORCE_ALL='-z allextract'
2407        MKSHLIB_UNFORCE_ALL='-z defaultextract'
2408        DSO_LDOPTS='-G'
2409        AR_LIST="$AR t"
2410        AR_EXTRACT="$AR x"
2411        AR_DELETE="$AR d"
2412        AR='$(CXX) -xar'
2413        AR_FLAGS='-o $@'
2414        AS='/usr/ccs/bin/as'
2415        ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2416        AS_DASH_C_FLAG=''
2417        TARGET_COMPILER_ABI="sunc"
2418        CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2419        CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2420        AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2421        AC_LANG_SAVE
2422        AC_LANG_CPLUSPLUS
2423        AC_TRY_COMPILE([],
2424            [#if (__SUNPRO_CC < 0x590)
2425            #error "Denied"
2426            #endif],
2427            _BAD_COMPILER=,_BAD_COMPILER=1)
2428        if test -n "$_BAD_COMPILER"; then
2429            _res="no"
2430            AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2431        else
2432            _res="yes"
2433        fi
2434        AC_TRY_COMPILE([],
2435            [#if (__SUNPRO_CC >= 0x5100)
2436            #error "Sun C++ 5.10 or above"
2437            #endif],
2438            _ABOVE_SS12U1=,_ABOVE_SS12U1=1)
2439        if test "$_ABOVE_SS12U1"; then
2440            # disable xannotate
2441            CXXFLAGS="$CXXFLAGS -xannotate=no"
2442        fi
2443        AC_MSG_RESULT([$_res])
2444        AC_LANG_RESTORE
2445     else
2446        LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
2447        LIBS="-lc $LIBS"
2448        MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
2449        MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
2450        ASFLAGS="$ASFLAGS -fPIC"
2451        DSO_LDOPTS='-shared'
2452        WARNINGS_AS_ERRORS='-Werror'
2453        _WARNINGS_CFLAGS=''
2454        _WARNINGS_CXXFLAGS=''
2455        if test "$OS_RELEASE" = "5.3"; then
2456            AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2457        fi
2458     fi
2459     if test "$OS_RELEASE" = "5.5.1"; then
2460         AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2461     fi
2462     ;;
2464 *-sunos*)
2465     DSO_LDOPTS='-Bdynamic'
2466     MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2467     MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2468     AC_DEFINE(SUNOS4)
2469     AC_DEFINE(SPRINTF_RETURNS_STRING)
2470     case "$(target_os)" in
2471     sunos4.1*)
2472         DLL_SUFFIX='.so.1.0'
2473         ;;
2474     esac
2475     ;;
2477 *-os2*)
2478     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2479     ;;
2481 esac
2483 AC_SUBST(MOZ_LINKER)
2484 if test -n "$MOZ_LINKER"; then
2485   AC_DEFINE(MOZ_LINKER)
2488 dnl Only one oddball right now (QNX), but this gives us flexibility
2489 dnl if any other platforms need to override this in the future.
2490 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2492 dnl ========================================================
2493 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2494 dnl by now will not have any way to link most binaries (tests
2495 dnl as well as viewer, apprunner, etc.), because some symbols
2496 dnl will be left out of the "composite" .so's by ld as unneeded.
2497 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2498 dnl they can link in the static libs that provide the missing
2499 dnl symbols.
2500 dnl ========================================================
2501 NO_LD_ARCHIVE_FLAGS=
2502 if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
2503     NO_LD_ARCHIVE_FLAGS=1
2505 case "$target" in
2506 *-os2*)
2507     NO_LD_ARCHIVE_FLAGS=
2508     ;;
2509 *-aix4.3*|*-aix5*)
2510     NO_LD_ARCHIVE_FLAGS=
2511     ;;
2512 *-mingw*)
2513     if test -z "$GNU_CC"; then
2514         NO_LD_ARCHIVE_FLAGS=
2515     fi
2516     ;;
2517 esac
2518 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2520 dnl ========================================================
2521 dnl = Flags to strip unused symbols from .so components and
2522 dnl = to export jemalloc symbols when linking a program
2523 dnl ========================================================
2524 case "$target" in
2525     *-linux*|*-kfreebsd*-gnu|*-gnu*)
2526         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2527         ;;
2528     *-solaris*)
2529         if test -z "$GNU_CC"; then
2530          MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2531         else
2532          if test -z "$GCC_USE_GNU_LD"; then
2533           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2534          else
2535           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2536          fi
2537         fi
2538         ;;
2539     *-darwin*)
2540         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2541         ;;
2542     *-mingw*)
2543         if test -n "$GNU_CC"; then
2544            MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2545         fi
2546         ;;
2547 esac
2549 if test -z "$COMPILE_ENVIRONMENT"; then
2550     SKIP_COMPILER_CHECKS=1
2551     SKIP_LIBRARY_CHECKS=1
2554 MOZ_COMPILER_OPTS
2555 if test -z "$SKIP_COMPILER_CHECKS"; then
2556 dnl Checks for typedefs, structures, and compiler characteristics.
2557 dnl ========================================================
2558 AC_HEADER_STDC
2559 AC_C_CONST
2560 AC_TYPE_MODE_T
2561 AC_TYPE_OFF_T
2562 AC_TYPE_PID_T
2563 AC_TYPE_SIZE_T
2564 AC_LANG_CPLUSPLUS
2565 AC_MSG_CHECKING(for __stdcall)
2566 AC_CACHE_VAL(ac_cv___stdcall,
2567  [AC_TRY_COMPILE([template <typename Method> struct foo;
2568                   template <> struct foo<void (*)()> {};
2569                   template <> struct foo<void (__stdcall*)()> {};],
2570                  [],
2571                  [ac_cv___stdcall=true],
2572                  [ac_cv___stdcall=false])])
2573 if test "$ac_cv___stdcall" = true ; then
2574   AC_DEFINE(HAVE_STDCALL)
2575   AC_MSG_RESULT(yes)
2576 else
2577   AC_MSG_RESULT(no)
2579 AC_LANG_C
2580 AC_MSG_CHECKING(for ssize_t)
2581 AC_CACHE_VAL(ac_cv_type_ssize_t,
2582  [AC_TRY_COMPILE([#include <stdio.h>
2583                   #include <sys/types.h>],
2584                  [ssize_t foo = 0;],
2585                  [ac_cv_type_ssize_t=true],
2586                  [ac_cv_type_ssize_t=false])])
2587 if test "$ac_cv_type_ssize_t" = true ; then
2588   AC_DEFINE(HAVE_SSIZE_T)
2589   AC_MSG_RESULT(yes)
2590 else
2591   AC_MSG_RESULT(no)
2593 AC_STRUCT_ST_BLKSIZE
2594 AC_MSG_CHECKING(for siginfo_t)
2595 AC_CACHE_VAL(ac_cv_siginfo_t,
2596  [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2597                   #include <signal.h>],
2598                  [siginfo_t* info;],
2599                  [ac_cv_siginfo_t=true],
2600                  [ac_cv_siginfo_t=false])])
2601 if test "$ac_cv_siginfo_t" = true ; then
2602   AC_DEFINE(HAVE_SIGINFO_T)
2603   AC_MSG_RESULT(yes)
2604 else
2605   AC_MSG_RESULT(no)
2608 dnl Check for int64, uint, and uint_t.
2609 dnl ========================================================
2610 AC_MSG_CHECKING(for int64)
2611 AC_CACHE_VAL(ac_cv_int64,
2612  [AC_TRY_COMPILE([#include <stdio.h>
2613                   #include <sys/types.h>],
2614                  [int64 foo = 0;],
2615                  [ac_cv_int64=true],
2616                  [ac_cv_int64=false])])
2617 if test "$ac_cv_int64" = true ; then
2618   AC_DEFINE(HAVE_INT64)
2619   AC_MSG_RESULT(yes)
2620 else
2621   AC_MSG_RESULT(no)
2623 AC_MSG_CHECKING(for uint)
2624 AC_CACHE_VAL(ac_cv_uint,
2625  [AC_TRY_COMPILE([#include <stdio.h>
2626                   #include <sys/types.h>],
2627                  [uint foo = 0;],
2628                  [ac_cv_uint=true],
2629                  [ac_cv_uint=false])])
2630 if test "$ac_cv_uint" = true ; then
2631   AC_DEFINE(HAVE_UINT)
2632   AC_MSG_RESULT(yes)
2633 else
2634   AC_MSG_RESULT(no)
2636 AC_MSG_CHECKING(for uint_t)
2637 AC_CACHE_VAL(ac_cv_uint_t,
2638  [AC_TRY_COMPILE([#include <stdio.h>
2639                   #include <sys/types.h>],
2640                  [uint_t foo = 0;],
2641                  [ac_cv_uint_t=true],
2642                  [ac_cv_uint_t=false])])
2643 if test "$ac_cv_uint_t" = true ; then
2644   AC_DEFINE(HAVE_UINT_T)
2645   AC_MSG_RESULT(yes)
2646 else
2647   AC_MSG_RESULT(no)
2650 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2651 dnl are defined when compiling C++ but not C.  Since the result of this
2652 dnl test is used only in C++, do it in C++.
2653 AC_LANG_CPLUSPLUS
2655 AC_MSG_CHECKING(for uname.domainname)
2656 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2657     [AC_TRY_COMPILE([#include <sys/utsname.h>],
2658         [ struct utsname *res; char *domain;
2659             (void)uname(res);  if (res != 0) { domain = res->domainname; } ],
2660         [ac_cv_have_uname_domainname_field=true],
2661         [ac_cv_have_uname_domainname_field=false])])
2663 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2664     AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2665     AC_MSG_RESULT(yes)
2666 else
2667     AC_MSG_RESULT(no)
2670 AC_MSG_CHECKING(for uname.__domainname)
2671 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2672     [AC_TRY_COMPILE([#include <sys/utsname.h>],
2673         [ struct utsname *res; char *domain;
2674             (void)uname(res);  if (res != 0) { domain = res->__domainname; } ],
2675         [ac_cv_have_uname_us_domainname_field=true],
2676         [ac_cv_have_uname_us_domainname_field=false])])
2678 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2679     AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2680     AC_MSG_RESULT(yes)
2681 else
2682     AC_MSG_RESULT(no)
2685 dnl Check whether we can use gcc's c++0x mode
2686 AC_LANG_CPLUSPLUS
2688 if test "$GNU_CXX"; then
2689     _SAVE_CXXFLAGS=$CXXFLAGS
2690     CXXFLAGS="$CXXFLAGS -std=gnu++0x"
2692     AC_CACHE_CHECK(for gcc c++0x headers bug without rtti,
2693         ac_cv_cxx0x_headers_bug,
2694         [AC_TRY_COMPILE([#include <memory>], [],
2695                         ac_cv_cxx0x_headers_bug="no",
2696                         ac_cv_cxx0x_headers_bug="yes")])
2698     if test "$CLANG_CXX" -a "$ac_cv_cxx0x_headers_bug" = "yes"; then
2699         CXXFLAGS="$CXXFLAGS -I$_topsrcdir/build/unix/headers"
2700         AC_CACHE_CHECK(whether workaround for gcc c++0x headers conflict with clang works,
2701             ac_cv_cxx0x_clang_workaround,
2702             [AC_TRY_COMPILE([#include <memory>], [],
2703                             ac_cv_cxx0x_clang_workaround="yes",
2704                             ac_cv_cxx0x_clang_workaround="no")])
2706         if test "ac_cv_cxx0x_clang_workaround" = "no"; then
2707             CXXFLAGS="$_SAVE_CXXFLAGS"
2708         fi
2709     elif test "$ac_cv_cxx0x_headers_bug" = "yes"; then
2710         CXXFLAGS="$_SAVE_CXXFLAGS"
2711     fi
2714 dnl Check for usable char16_t (2 bytes, unsigned)
2715 dnl (we might not need the unsignedness check anymore)
2716 AC_CACHE_CHECK(for usable char16_t (2 bytes, unsigned),
2717     ac_cv_have_usable_char16_t,
2718     [AC_TRY_COMPILE([$configure_static_assert_macros],
2719                     [CONFIGURE_STATIC_ASSERT(sizeof(char16_t) == 2);
2720                      CONFIGURE_STATIC_ASSERT(char16_t(-1) > char16_t(0));
2721                      CONFIGURE_STATIC_ASSERT(sizeof((u"hello")[0]) == 2);
2722                      CONFIGURE_STATIC_ASSERT(sizeof(u'a') == 2);
2723                      CONFIGURE_STATIC_ASSERT(u'\xFFFF' > u'\x0')],
2724                     ac_cv_have_usable_char16_t="yes",
2725                     ac_cv_have_usable_char16_t="no")])
2726 if test "$ac_cv_have_usable_char16_t" = "yes"; then
2727     AC_DEFINE(HAVE_CPP_CHAR16_T)
2728     HAVE_CPP_CHAR16_T=1
2729 elif test "$GNU_CXX"; then
2730     CXXFLAGS="$_SAVE_CXXFLAGS"
2733 dnl Check for usable wchar_t (2 bytes, unsigned)
2734 dnl (we really don't need the unsignedness check anymore)
2735 dnl ========================================================
2737 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2738     ac_cv_have_usable_wchar_v2,
2739     [AC_TRY_COMPILE([#include <stddef.h>
2740                      $configure_static_assert_macros],
2741                     [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2742                      CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2743                     ac_cv_have_usable_wchar_v2="yes",
2744                     ac_cv_have_usable_wchar_v2="no")])
2745 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2746     AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2747     HAVE_CPP_2BYTE_WCHAR_T=1
2748 elif test "$ac_cv_have_usable_char16_t" != "yes"; then
2749 dnl This is really gcc-only
2750 dnl Do this test using CXX only since some versions of gcc
2751 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2752 dnl only have short-wchar support for c++.
2753 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2755     _SAVE_CXXFLAGS=$CXXFLAGS
2756     CXXFLAGS="$CXXFLAGS -fshort-wchar"
2758     AC_CACHE_CHECK(for compiler -fshort-wchar option,
2759         ac_cv_have_usable_wchar_option_v2,
2760         [AC_TRY_LINK([#include <stddef.h>
2761                       $configure_static_assert_macros],
2762                      [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2763                       CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2764                      ac_cv_have_usable_wchar_option_v2="yes",
2765                      ac_cv_have_usable_wchar_option_v2="no")])
2767     if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2768         AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2769         HAVE_CPP_2BYTE_WCHAR_T=1
2770         if test "$OS_TARGET" = Android; then
2771             WCHAR_CFLAGS="-fshort-wchar -Wl,--no-wchar-size-warning"
2772             CXXFLAGS="$CXXFLAGS -Wl,--no-wchar-size-warning"
2773             CFLAGS="$CFLAGS -Wl,--no-wchar-size-warning"
2774             DSO_LDOPTS="$DSO_LDOPTS -Wl,--no-wchar-size-warning"
2775         else
2776             WCHAR_CFLAGS="-fshort-wchar"
2777         fi
2778     else
2779         CXXFLAGS=$_SAVE_CXXFLAGS
2780     fi
2783 AC_LANG_C
2785 dnl Check for .hidden assembler directive and visibility attribute.
2786 dnl Borrowed from glibc configure.in
2787 dnl ===============================================================
2788 if test "$GNU_CC"; then
2789   AC_CACHE_CHECK(for visibility(hidden) attribute,
2790                  ac_cv_visibility_hidden,
2791                  [cat > conftest.c <<EOF
2792                   int foo __attribute__ ((visibility ("hidden"))) = 1;
2794                   ac_cv_visibility_hidden=no
2795                   if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2796                     if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2797                       ac_cv_visibility_hidden=yes
2798                     fi
2799                   fi
2800                   rm -f conftest.[cs]
2801                  ])
2802   if test "$ac_cv_visibility_hidden" = "yes"; then
2803     AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2805     AC_CACHE_CHECK(for visibility(default) attribute,
2806                    ac_cv_visibility_default,
2807                    [cat > conftest.c <<EOF
2808                     int foo __attribute__ ((visibility ("default"))) = 1;
2810                     ac_cv_visibility_default=no
2811                     if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2812                       if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2813                         ac_cv_visibility_default=yes
2814                       fi
2815                     fi
2816                     rm -f conftest.[cs]
2817                    ])
2818     if test "$ac_cv_visibility_default" = "yes"; then
2819       AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2821       AC_CACHE_CHECK(for visibility pragma support,
2822                      ac_cv_visibility_pragma,
2823                      [cat > conftest.c <<EOF
2824 #pragma GCC visibility push(hidden)
2825                       int foo_hidden = 1;
2826 #pragma GCC visibility push(default)
2827                       int foo_default = 1;
2829                       ac_cv_visibility_pragma=no
2830                       if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2831                         if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2832                           if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2833                             ac_cv_visibility_pragma=yes
2834                           fi
2835                         fi
2836                       fi
2837                       rm -f conftest.[cs]
2838                     ])
2839       if test "$ac_cv_visibility_pragma" = "yes"; then
2840         AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2841                        ac_cv_have_visibility_class_bug,
2842                        [cat > conftest.c <<EOF
2843 #pragma GCC visibility push(hidden)
2844 struct __attribute__ ((visibility ("default"))) TestStruct {
2845   static void Init();
2847 __attribute__ ((visibility ("default"))) void TestFunc() {
2848   TestStruct::Init();
2851                        ac_cv_have_visibility_class_bug=no
2852                        if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2853                          ac_cv_have_visibility_class_bug=yes
2854                        else
2855                          if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2856                            ac_cv_have_visibility_class_bug=yes
2857                          fi
2858                        fi
2859                        rm -rf conftest.{c,S}
2860                        ])
2862         AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2863                        ac_cv_have_visibility_builtin_bug,
2864                        [cat > conftest.c <<EOF
2865 #pragma GCC visibility push(hidden)
2866 #pragma GCC visibility push(default)
2867 #include <string.h>
2868 #pragma GCC visibility pop
2870 __attribute__ ((visibility ("default"))) void Func() {
2871   char c[[100]];
2872   memset(c, 0, sizeof(c));
2875                        ac_cv_have_visibility_builtin_bug=no
2876                        if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2877                          ac_cv_have_visibility_builtin_bug=yes
2878                        else
2879                          if test `grep -c "@PLT" conftest.S` = 0; then
2880                            ac_cv_visibility_builtin_bug=yes
2881                          fi
2882                        fi
2883                        rm -f conftest.{c,S}
2884                        ])
2885         if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2886                 "$ac_cv_have_visibility_class_bug" = "no"; then
2887           VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2888           WRAP_SYSTEM_INCLUDES=1
2889           STL_FLAGS='-I$(DIST)/stl_wrappers'
2890           WRAP_STL_INCLUDES=1
2891         else
2892           VISIBILITY_FLAGS='-fvisibility=hidden'
2893         fi # have visibility pragma bug
2894       fi   # have visibility pragma
2895     fi     # have visibility(default) attribute
2896   fi       # have visibility(hidden) attribute
2897 fi         # GNU_CC
2899 # visibility hidden flag for Sun Studio on Solaris
2900 if test "$SOLARIS_SUNPRO_CC"; then
2901 VISIBILITY_FLAGS='-xldscope=hidden'
2902 fi         # Sun Studio on Solaris
2904 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2905 AC_SUBST(VISIBILITY_FLAGS)
2907 MOZ_GCC_PR49911
2908 MOZ_GCC_PR39608
2909 MOZ_LLVM_PR8927
2911 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
2912 dnl ========================================================
2913 if test "$GNU_CC"; then
2914   CFLAGS_save="${CFLAGS}"
2915   CFLAGS="${CFLAGS} -Werror"
2916   AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
2917                  ac_cv_force_align_arg_pointer,
2918                  [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
2919                                  [],
2920                                  ac_cv_force_align_arg_pointer="yes",
2921                                  ac_cv_force_align_arg_pointer="no")])
2922   CFLAGS="${CFLAGS_save}"
2923   if test "$ac_cv_force_align_arg_pointer" = "yes"; then
2924     HAVE_GCC_ALIGN_ARG_POINTER=1
2925   else
2926     HAVE_GCC_ALIGN_ARG_POINTER=
2927   fi
2929 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
2931 dnl Checks for header files.
2932 dnl ========================================================
2933 AC_HEADER_DIRENT
2934 case "$target_os" in
2935 freebsd*|openbsd*)
2936 # for stuff like -lXshm
2937     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2938     ;;
2939 esac
2940 MOZ_CHECK_COMMON_HEADERS
2942 dnl These are all the places some variant of statfs can be hiding.
2943 MOZ_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2945 dnl Quota support
2946 MOZ_CHECK_HEADERS(sys/quota.h sys/sysmacros.h)
2947 MOZ_CHECK_HEADERS([linux/quota.h],,,[#include <sys/socket.h>])
2949 dnl SCTP support - needs various network include headers
2950 MOZ_CHECK_HEADERS([linux/if_addr.h linux/rtnetlink.h],,,[#include <sys/socket.h>])
2952 MOZ_CHECK_HEADERS(sys/types.h netinet/in.h byteswap.h)
2954 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
2955 AC_CACHE_CHECK(for sockaddr_in.sin_len,
2956                    ac_cv_sockaddr_in_sin_len,
2957                    [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2958                                     #include <sys/types.h>
2959                                     #endif
2960                                     #include <netinet/in.h>
2961                                     struct sockaddr_in x;
2962                                     void *foo = (void*) &x.sin_len;],
2963                                    [],
2964                                    [ac_cv_sockaddr_in_sin_len=true],
2965                                    [ac_cv_sockaddr_in_sin_len=false])])
2966 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
2967   AC_DEFINE(HAVE_SIN_LEN)
2968 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
2969   AC_DEFINE(HAVE_SCONN_LEN)
2972 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
2973                ac_cv_sockaddr_in6_sin6_len,
2974                [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2975                                 #include <sys/types.h>
2976                                 #endif
2977                                 #include <netinet/in.h>
2978                                 struct sockaddr_in6 x;
2979                                 void *foo = (void*) &x.sin6_len;],
2980                                [],
2981                                [ac_cv_sockaddr_in6_sin6_len=true],
2982                                [ac_cv_sockaddr_in6_sin6_len=false])])
2983 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
2984   AC_DEFINE(HAVE_SIN6_LEN)
2987 AC_CACHE_CHECK(for sockaddr.sa_len,
2988                ac_cv_sockaddr_sa_len,
2989                [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2990                                 #include <sys/types.h>
2991                                 #endif
2992                                 #include <sys/socket.h>
2993                                 struct sockaddr x;
2994                                 void *foo = (void*) &x.sa_len;],
2995                                [],
2996                                [ac_cv_sockaddr_sa_len=true],
2997                                [ac_cv_sockaddr_sa_len=false])])
2998 if test "$ac_cv_sockaddr_sa_len" = true ; then
2999   AC_DEFINE(HAVE_SA_LEN)
3002 dnl Check whether the compiler supports the new-style C++ standard
3003 dnl library headers (i.e. <new>) or needs the old "new.h"
3004 AC_LANG_CPLUSPLUS
3005 NEW_H=new.h
3006 MOZ_CHECK_HEADER(new, [NEW_H=new])
3007 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3008 AC_LANG_C
3010 AC_ARG_ENABLE(dtrace,
3011               [  --enable-dtrace         build with dtrace support if available (default=no)],
3012               [enable_dtrace="yes"],)
3013 if test "x$enable_dtrace" = "xyes"; then
3014   MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3015   if test -n "$HAVE_DTRACE"; then
3016       AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3017   else
3018       AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3019   fi
3021 AC_SUBST(HAVE_DTRACE)
3023 case $target in
3024 *-aix4.3*|*-aix5*)
3025         ;;
3027         MOZ_CHECK_HEADERS(sys/cdefs.h)
3028         ;;
3029 esac
3031 MOZ_LINUX_PERF_EVENT
3033 dnl Checks for libraries.
3034 dnl ========================================================
3035 case $target in
3036 *-hpux11.*)
3037         ;;
3039         AC_CHECK_LIB(c_r, gethostbyname_r)
3040         ;;
3041 esac
3043 dnl We don't want to link with libdl even if it's present on OS X, since
3044 dnl it's not used and not part of the default installation. OS/2 has dlfcn
3045 dnl in libc.
3046 dnl We don't want to link against libm or libpthread on Darwin since
3047 dnl they both are just symlinks to libSystem and explicitly linking
3048 dnl against libSystem causes issues when debugging (see bug 299601).
3049 case $target in
3050 *-darwin*)
3051     ;;
3052 *-os2*)
3053     ;;
3055     AC_SEARCH_LIBS(dlopen, dl,
3056         MOZ_CHECK_HEADER(dlfcn.h,
3057         AC_DEFINE(HAVE_DLOPEN)))
3058     ;;
3059 esac
3061 _SAVE_CFLAGS="$CFLAGS"
3062 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3063 AC_CHECK_FUNCS(dladdr memmem)
3064 CFLAGS="$_SAVE_CFLAGS"
3066 if test ! "$GNU_CXX"; then
3068     case $target in
3069     *-aix*)
3070         AC_CHECK_LIB(C_r, demangle)
3071         ;;
3072      *)
3073         AC_CHECK_LIB(C, demangle)
3074         ;;
3075      esac
3078 dnl OS/2 has socket in libc.
3079 case $target in
3080 *-os2*)
3081     ;;
3083     AC_CHECK_LIB(socket, socket)
3084 esac
3086 XLDFLAGS="$X_LIBS"
3087 XLIBS="$X_EXTRA_LIBS"
3089 dnl ========================================================
3090 dnl Checks for X libraries.
3091 dnl Ordering is important.
3092 dnl Xt is dependent upon SM as of X11R6
3093 dnl ========================================================
3094 if test "$no_x" = "yes"; then
3095     AC_DEFINE(NO_X11)
3096 else
3097     AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3098         XLIBS="-lX11 $XLIBS"
3099         _SAVE_LDFLAGS="$LDFLAGS"
3100         LDFLAGS="$XLDFLAGS $LDFLAGS"
3101         AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3102                 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3103         AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3104                 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3106         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3107         unset ac_cv_lib_Xt_XtFree
3108             AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3109             AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3110         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3111                     [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3112         ])
3114     # AIX needs the motif library linked before libXt to prevent
3115     # crashes in plugins linked against Motif - Bug #98892
3116     case "${target_os}" in
3117     aix*)
3118         XT_LIBS="-lXm $XT_LIBS"
3119         ;;
3120     esac
3122     dnl ========================================================
3123     dnl = Check for XShm
3124     dnl ========================================================
3125     AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3126         $XLIBS $XEXT_LIBS)
3128     dnl ========================================================
3129     dnl = Check for Xss
3130     dnl ========================================================
3131     MOZ_CHECK_HEADER(X11/extensions/scrnsaver.h,
3132         AC_CHECK_LIB(Xss, XScreenSaverQueryInfo,
3133             [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS"
3134              AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS))
3136         LDFLAGS="$_SAVE_LDFLAGS"
3137 fi # $no_x
3139 AC_SUBST(XCFLAGS)
3140 AC_SUBST(XLDFLAGS)
3141 AC_SUBST(XLIBS)
3142 AC_SUBST(XEXT_LIBS)
3143 AC_SUBST(XT_LIBS)
3144 AC_SUBST(XSS_LIBS)
3146 dnl ========================================================
3147 dnl = pthread support
3148 dnl = Start by checking whether the system support pthreads
3149 dnl ========================================================
3150 case "$target_os" in
3151 darwin*)
3152     USE_PTHREADS=1
3153     ;;
3155     MOZ_CHECK_PTHREADS(pthreads,
3156         USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3157         MOZ_CHECK_PTHREADS(pthread,
3158             USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3159             MOZ_CHECK_PTHREADS(c_r,
3160                 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3161                 MOZ_CHECK_PTHREADS(c,
3162                     USE_PTHREADS=1
3163                 )
3164             )
3165         )
3166     )
3167     ;;
3168 esac
3170 dnl ========================================================
3171 dnl Check the command line for --with-pthreads
3172 dnl ========================================================
3173 MOZ_ARG_WITH_BOOL(pthreads,
3174 [  --with-pthreads         Force use of system pthread library with NSPR ],
3175 [ if test "$USE_PTHREADS"x = x; then
3176     AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3177 fi],
3178     USE_PTHREADS=
3179     _PTHREAD_LDFLAGS=
3182 dnl ========================================================
3183 dnl Do the platform specific pthread hackery
3184 dnl ========================================================
3185 if test "$USE_PTHREADS"x != x
3186 then
3187         dnl
3188         dnl See if -pthread is supported.
3189         dnl
3190         rm -f conftest*
3191         ac_cv_have_dash_pthread=no
3192         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3193         echo 'int main() { return 0; }' | cat > conftest.c
3194         ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3195         if test $? -eq 0; then
3196                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3197                         ac_cv_have_dash_pthread=yes
3198                 case "$target_os" in
3199                 freebsd*)
3200 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3201                 ;;
3202                 *)
3203                             CFLAGS="$CFLAGS -pthread"
3204                             CXXFLAGS="$CXXFLAGS -pthread"
3205                 ;;
3206                 esac
3207                 fi
3208         fi
3209         rm -f conftest*
3210     AC_MSG_RESULT($ac_cv_have_dash_pthread)
3212         dnl
3213         dnl See if -pthreads is supported.
3214         dnl
3215     ac_cv_have_dash_pthreads=no
3216     if test "$ac_cv_have_dash_pthread" = "no"; then
3217             AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3218         echo 'int main() { return 0; }' | cat > conftest.c
3219             ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3220         if test $? -eq 0; then
3221                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3222                             ac_cv_have_dash_pthreads=yes
3223                             CFLAGS="$CFLAGS -pthreads"
3224                             CXXFLAGS="$CXXFLAGS -pthreads"
3225                     fi
3226             fi
3227             rm -f conftest*
3228         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3229     fi
3231         case "$target" in
3232             *-*-freebsd*)
3233                         AC_DEFINE(_REENTRANT)
3234                         AC_DEFINE(_THREAD_SAFE)
3235                         dnl -pthread links in -lpthread, so don't specify it explicitly.
3236                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3237                                 _PTHREAD_LDFLAGS="-pthread"
3238                         fi
3239                         ;;
3241             *-*-openbsd*|*-*-bsdi*)
3242                         AC_DEFINE(_REENTRANT)
3243                         AC_DEFINE(_THREAD_SAFE)
3244                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3245                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3246                 _PTHREAD_LDFLAGS="-pthread"
3247                         fi
3248                         ;;
3250             *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
3251                         AC_DEFINE(_REENTRANT)
3252                         ;;
3254             *-aix4.3*|*-aix5*)
3255                         AC_DEFINE(_REENTRANT)
3256                         ;;
3258             *-hpux11.*)
3259                         AC_DEFINE(_REENTRANT)
3260                         ;;
3262             *-*-solaris*)
3263                         AC_DEFINE(_REENTRANT)
3264                         if test "$SOLARIS_SUNPRO_CC"; then
3265                                 CFLAGS="$CFLAGS -mt"
3266                                 CXXFLAGS="$CXXFLAGS -mt"
3267                         fi
3268                         ;;
3269         esac
3270     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3274 dnl Checks for library functions.
3275 dnl ========================================================
3276 AC_PROG_GCC_TRADITIONAL
3277 AC_FUNC_MEMCMP
3278 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf memmove rint stat64 lstat64 truncate64 setbuf isatty)
3279 AC_CHECK_FUNCS(statvfs64 statvfs statfs64 statfs)
3280 AC_CHECK_FUNCS(flockfile getpagesize)
3281 AC_CHECK_FUNCS(localtime_r strtok_r)
3283 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
3284 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
3285                ac_cv_clock_monotonic,
3286                [for libs in "" -lrt; do
3287                     _SAVE_LIBS="$LIBS"
3288                     LIBS="$LIBS $libs"
3289                     AC_TRY_LINK([#include <time.h>],
3290                                  [ struct timespec ts;
3291                                    clock_gettime(CLOCK_MONOTONIC, &ts); ],
3292                                  ac_cv_clock_monotonic=$libs
3293                                  LIBS="$_SAVE_LIBS"
3294                                  break,
3295                                  ac_cv_clock_monotonic=no)
3296                     LIBS="$_SAVE_LIBS"
3297                 done])
3298 if test "$ac_cv_clock_monotonic" != "no"; then
3299     HAVE_CLOCK_MONOTONIC=1
3300     REALTIME_LIBS=$ac_cv_clock_monotonic
3301     AC_DEFINE(HAVE_CLOCK_MONOTONIC)
3302     AC_SUBST(HAVE_CLOCK_MONOTONIC)
3303     AC_SUBST(REALTIME_LIBS)
3306 dnl check for wcrtomb/mbrtowc
3307 dnl =======================================================================
3308 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3309 AC_LANG_SAVE
3310 AC_LANG_CPLUSPLUS
3311 AC_CACHE_CHECK(for wcrtomb,
3312     ac_cv_have_wcrtomb,
3313     [AC_TRY_LINK([#include <wchar.h>],
3314                  [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3315                  ac_cv_have_wcrtomb="yes",
3316                  ac_cv_have_wcrtomb="no")])
3317 if test "$ac_cv_have_wcrtomb" = "yes"; then
3318     AC_DEFINE(HAVE_WCRTOMB)
3320 AC_CACHE_CHECK(for mbrtowc,
3321     ac_cv_have_mbrtowc,
3322     [AC_TRY_LINK([#include <wchar.h>],
3323                  [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3324                  ac_cv_have_mbrtowc="yes",
3325                  ac_cv_have_mbrtowc="no")])
3326 if test "$ac_cv_have_mbrtowc" = "yes"; then
3327     AC_DEFINE(HAVE_MBRTOWC)
3329 AC_LANG_RESTORE
3332 AC_CACHE_CHECK(
3333     [for res_ninit()],
3334     ac_cv_func_res_ninit,
3335     [AC_TRY_LINK([
3336         #ifdef linux
3337         #define _BSD_SOURCE 1
3338         #endif
3339         #include <resolv.h>
3340         ],
3341         [int foo = res_ninit(&_res);],
3342         [ac_cv_func_res_ninit=yes],
3343         [ac_cv_func_res_ninit=no])
3344     ])
3346 if test "$ac_cv_func_res_ninit" = "yes"; then
3347     AC_DEFINE(HAVE_RES_NINIT)
3348 dnl must add the link line we do something as foolish as this... dougt
3349 dnl else
3350 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3351 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3354 AC_LANG_CPLUSPLUS
3355 AC_CACHE_CHECK(
3356     [for gnu_get_libc_version()],
3357     ac_cv_func_gnu_get_libc_version,
3358     [AC_TRY_LINK([
3359         #ifdef HAVE_GNU_LIBC_VERSION_H
3360         #include <gnu/libc-version.h>
3361         #endif
3362         ],
3363         [const char *glibc_version = gnu_get_libc_version();],
3364         [ac_cv_func_gnu_get_libc_version=yes],
3365         [ac_cv_func_gnu_get_libc_version=no]
3366         )]
3367     )
3369 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3370     AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3373 case $target_os in
3374     darwin*|mingw*|os2*)
3375         ;;
3376     *)
3378 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3379     AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3380         AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3381 _SAVE_LIBS=$LIBS
3382 LIBS="$LIBS $_ICONV_LIBS"
3383 AC_CACHE_CHECK(
3384     [for iconv()],
3385     ac_cv_func_iconv,
3386     [AC_TRY_LINK([
3387         #include <stdlib.h>
3388         #include <iconv.h>
3389         ],
3390         [
3391             iconv_t h = iconv_open("", "");
3392             iconv(h, NULL, NULL, NULL, NULL);
3393             iconv_close(h);
3394         ],
3395         [ac_cv_func_iconv=yes],
3396         [ac_cv_func_iconv=no]
3397         )]
3398     )
3399 if test "$ac_cv_func_iconv" = "yes"; then
3400     AC_DEFINE(HAVE_ICONV)
3401     DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3402     LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3403     LIBICONV="$_ICONV_LIBS"
3404     AC_CACHE_CHECK(
3405         [for iconv() with const input],
3406         ac_cv_func_const_iconv,
3407         [AC_TRY_COMPILE([
3408             #include <stdlib.h>
3409             #include <iconv.h>
3410             ],
3411             [
3412                 const char *input = "testing";
3413                 iconv_t h = iconv_open("", "");
3414                 iconv(h, &input, NULL, NULL, NULL);
3415                 iconv_close(h);
3416             ],
3417             [ac_cv_func_const_iconv=yes],
3418             [ac_cv_func_const_iconv=no]
3419             )]
3420         )
3421     if test "$ac_cv_func_const_iconv" = "yes"; then
3422         AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3423     fi
3425 LIBS=$_SAVE_LIBS
3427     ;;
3428 esac
3430 AM_LANGINFO_CODESET
3432 AC_LANG_C
3434 dnl **********************
3435 dnl *** va_copy checks ***
3436 dnl **********************
3437 dnl we currently check for all three va_copy possibilities, so we get
3438 dnl all results in config.log for bug reports.
3439 AC_MSG_CHECKING(for an implementation of va_copy())
3440 AC_CACHE_VAL(ac_cv_va_copy,[
3441     AC_TRY_RUN([
3442         #include <stdarg.h>
3443         void f (int i, ...) {
3444             va_list args1, args2;
3445             va_start (args1, i);
3446             va_copy (args2, args1);
3447             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3448                 exit (1);
3449             va_end (args1); va_end (args2);
3450         }
3451         int main() { f (0, 42); return 0; }],
3452         ac_cv_va_copy=yes,
3453         ac_cv_va_copy=no,
3454         ac_cv_va_copy=no
3455     )
3457 AC_MSG_RESULT($ac_cv_va_copy)
3458 AC_MSG_CHECKING(for an implementation of __va_copy())
3459 AC_CACHE_VAL(ac_cv___va_copy,[
3460     AC_TRY_RUN([
3461         #include <stdarg.h>
3462         void f (int i, ...) {
3463             va_list args1, args2;
3464             va_start (args1, i);
3465             __va_copy (args2, args1);
3466             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3467                 exit (1);
3468             va_end (args1); va_end (args2);
3469         }
3470         int main() { f (0, 42); return 0; }],
3471         ac_cv___va_copy=yes,
3472         ac_cv___va_copy=no,
3473         ac_cv___va_copy=no
3474     )
3476 AC_MSG_RESULT($ac_cv___va_copy)
3477 AC_MSG_CHECKING(whether va_lists can be copied by value)
3478 AC_CACHE_VAL(ac_cv_va_val_copy,[
3479     AC_TRY_RUN([
3480         #include <stdarg.h>
3481         void f (int i, ...) {
3482             va_list args1, args2;
3483             va_start (args1, i);
3484             args2 = args1;
3485             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3486                 exit (1);
3487             va_end (args1); va_end (args2);
3488         }
3489         int main() { f (0, 42); return 0; }],
3490         ac_cv_va_val_copy=yes,
3491         ac_cv_va_val_copy=no,
3492         ac_cv_va_val_copy=yes
3493     )
3495 if test "x$ac_cv_va_copy" = "xyes"; then
3496     AC_DEFINE(VA_COPY, va_copy)
3497     AC_DEFINE(HAVE_VA_COPY)
3498 elif test "x$ac_cv___va_copy" = "xyes"; then
3499     AC_DEFINE(VA_COPY, __va_copy)
3500     AC_DEFINE(HAVE_VA_COPY)
3503 if test "x$ac_cv_va_val_copy" = "xno"; then
3504    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3506 AC_MSG_RESULT($ac_cv_va_val_copy)
3508 dnl ===================================================================
3509 dnl ========================================================
3510 dnl Put your C++ language/feature checks below
3511 dnl ========================================================
3512 AC_LANG_CPLUSPLUS
3514 ARM_ABI_PREFIX=
3515 if test "$GNU_CC"; then
3516   if test "$CPU_ARCH" = "arm" ; then
3517     AC_CACHE_CHECK(for ARM EABI,
3518         ac_cv_gcc_arm_eabi,
3519         [AC_TRY_COMPILE([],
3520                         [
3521 #if defined(__ARM_EABI__)
3522   return 0;
3523 #else
3524 #error Not ARM EABI.
3525 #endif
3526                         ],
3527                         ac_cv_gcc_arm_eabi="yes",
3528                         ac_cv_gcc_arm_eabi="no")])
3529     if test "$ac_cv_gcc_arm_eabi" = "yes"; then
3530         HAVE_ARM_EABI=1
3531         ARM_ABI_PREFIX=eabi-
3532     else
3533         ARM_ABI_PREFIX=oabi-
3534     fi
3535   fi
3537   TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
3540 dnl Check for support of modern template specialization syntax
3541 dnl Test code and requirement from scc@netscape.com.
3542 dnl Autoconf cut-and-paste job by waterson@netscape.com
3543 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3544                ac_cv_cpp_modern_specialize_template_syntax,
3545                [AC_TRY_COMPILE(template <class T> struct X { int a; };
3546                                class Y {};
3547                                template <> struct X<Y> { double a; };,
3548                                X<int> int_x;
3549                                X<Y> y_x;,
3550                                ac_cv_cpp_modern_specialize_template_syntax=yes,
3551                                ac_cv_cpp_modern_specialize_template_syntax=no)])
3552 if test "$ac_cv_cpp_modern_specialize_template_syntax" = no ; then
3553   AC_MSG_ERROR([The C++ compiler does not support template specialization])
3556 dnl Some compilers support only full specialization, and some don't.
3557 AC_CACHE_CHECK(whether partial template specialization works,
3558                ac_cv_cpp_partial_specialization,
3559                [AC_TRY_COMPILE(template <class T> class Foo {};
3560                                template <class T> class Foo<T*> {};,
3561                                return 0;,
3562                                ac_cv_cpp_partial_specialization=yes,
3563                                ac_cv_cpp_partial_specialization=no)])
3564 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3565   AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3568 dnl Check to see if we can resolve ambiguity with |using|.
3569 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3570                ac_cv_cpp_ambiguity_resolving_using,
3571                [AC_TRY_COMPILE(class X {
3572                                  public: int go(const X&) {return 3;}
3573                                          int jo(const X&) {return 3;}
3574                                };
3575                                class Y : public X {
3576                                  public:  int go(int) {return 2;}
3577                                           int jo(int) {return 2;}
3578                                           using X::jo;
3579                                  private: using X::go;
3580                                };,
3581                                X x; Y y; y.jo(x);,
3582                                ac_cv_cpp_ambiguity_resolving_using=yes,
3583                                ac_cv_cpp_ambiguity_resolving_using=no)])
3584 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3585    AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3588 dnl See if a dynamic_cast to void* gives the most derived object.
3589 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3590                ac_cv_cpp_dynamic_cast_void_ptr,
3591                [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3592                             class Y { int j; public: virtual ~Y() { } };
3593                             class Z : public X, public Y { int k; };
3595                             int main() {
3596                                  Z mdo;
3597                                  X *subx = (X*)&mdo;
3598                                  Y *suby = (Y*)&mdo;
3599                                  return !((((void*)&mdo != (void*)subx) &&
3600                                            ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3601                                           (((void*)&mdo != (void*)suby) &&
3602                                            ((void*)&mdo == dynamic_cast<void*>(suby))));
3603                             }],
3604                            ac_cv_cpp_dynamic_cast_void_ptr=yes,
3605                            ac_cv_cpp_dynamic_cast_void_ptr=no,
3606                            ac_cv_cpp_dynamic_cast_void_ptr=no)])
3607 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3608    AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3612 dnl note that this one is reversed - if the test fails, then
3613 dnl we require implementations of unused virtual methods. Which
3614 dnl really blows because it means we'll have useless vtable
3615 dnl bloat.
3616 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3617                ac_cv_cpp_unused_required,
3618                [AC_TRY_LINK(class X {private: virtual void never_called();};,
3619                                X x;,
3620                                ac_cv_cpp_unused_required=no,
3621                                ac_cv_cpp_unused_required=yes)])
3622 if test "$ac_cv_cpp_unused_required" = yes ; then
3623    AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3627 dnl Some compilers have trouble comparing a constant reference to a templatized
3628 dnl class to zero, and require an explicit operator==() to be defined that takes
3629 dnl an int. This test separates the strong from the weak.
3631 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3632                ac_cv_trouble_comparing_to_zero,
3633                [AC_TRY_COMPILE([#include <algorithm>
3634                                 template <class T> class Foo {};
3635                                 class T2;
3636                                 template <class T> int operator==(const T2*, const T&) { return 0; }
3637                                 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3638                                [Foo<int> f; return (0 != f);],
3639                                ac_cv_trouble_comparing_to_zero=no,
3640                                ac_cv_trouble_comparing_to_zero=yes)])
3641 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3642   AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3645 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
3646 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
3647 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
3648 # linking XUL.
3649 _SAVE_LDFLAGS=$LDFLAGS
3650 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
3651 AC_CACHE_CHECK(for __thread keyword for TLS variables,
3652                ac_cv_thread_keyword,
3653                [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
3654                             [return tlsIsMainThread;],
3655                             ac_cv_thread_keyword=yes,
3656                             ac_cv_thread_keyword=no)])
3657 LDFLAGS=$_SAVE_LDFLAGS
3658 # The custom dynamic linker doesn't support TLS variables
3659 MOZ_TLS=
3660 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
3661   # mips builds fail with TLS variables because of a binutils bug.
3662   # See bug 528687
3663   # OpenBSD doesn't have TLS support, and the test succeeds with clang++
3664   case "${target}" in
3665     mips*-*)
3666       :
3667       ;;
3668     *-android*|*-linuxandroid*)
3669       :
3670       ;;
3671     *-openbsd*)
3672       :
3673       ;;
3674     *)
3675       AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
3676       MOZ_TLS=1
3677       ;;
3678   esac
3681 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
3682 if test -n "$MOZ_LINKER"; then
3683   if test "$CPU_ARCH" = arm; then
3684     dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
3685     if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
3686       LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
3687       _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
3688     fi
3689   fi
3692 dnl The custom linker doesn't support text relocations, but NDK >= r6b
3693 dnl creates some (http://code.google.com/p/android/issues/detail?id=23203)
3694 dnl We however want to avoid these text relocations, and this can be done
3695 dnl by making gcc not link crtbegin and crtend. In the broken NDKs, crtend
3696 dnl doesn't contain anything at all, beside placeholders for some sections,
3697 dnl and crtbegin only contains a finalizer function that calls
3698 dnl __cxa_finalize. The custom linker actually takes care of calling
3699 dnl __cxa_finalize when the library doesn't call it itself, which makes it
3700 dnl safe not to link crtbegin. Besides, previous versions of the NDK didn't
3701 dnl link crtbegin and crtend at all.
3702 if test -n "$MOZ_LINKER" -a "$OS_TARGET" = "Android"; then
3703   AC_CACHE_CHECK([whether the CRT objects have text relocations],
3704     ac_cv_crt_has_text_relocations,
3705     [echo 'int foo() { return 0; }' > conftest.cpp
3706      if AC_TRY_COMMAND(${CXX-g++} -o conftest${DLL_SUFFIX} $CXXFLAGS $DSO_LDOPTS $LDFLAGS conftest.cpp $LIBS 1>&5) &&
3707         test -s conftest${DLL_SUFFIX}; then
3708        if ${TOOLCHAIN_PREFIX}readelf -d conftest${DLL_SUFFIX} | grep TEXTREL > /dev/null; then
3709          ac_cv_crt_has_text_relocations=yes
3710        else
3711          ac_cv_crt_has_text_relocations=no
3712        fi
3713      else
3714        AC_ERROR([couldn't compile a simple C file])
3715      fi
3716      rm -rf conftest*])
3717   if test "$ac_cv_crt_has_text_relocations" = yes; then
3718     dnl While we want libraries to skip the CRT files, we don't want
3719     dnl executables to be treated the same way. We thus set the flag
3720     dnl in DSO_LDOPTS and not LDFLAGS. However, to pass it to nspr,
3721     dnl we need to use LDFLAGS because nspr doesn't inherit DSO_LDOPTS.
3722     dnl Using LDFLAGS in nspr is safe, since we only really build
3723     dnl libraries there.
3724     DSO_LDOPTS="$DSO_LDOPTS -nostartfiles"
3725     NSPR_LDFLAGS="$NSPR_LDFLAGS -nostartfiles"
3726   fi
3729 dnl Check for the existence of various allocation headers/functions
3731 MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h"
3732 MALLOC_H=
3734 for file in $MALLOC_HEADERS; do
3735   MOZ_CHECK_HEADER($file, [MALLOC_H=$file])
3736   if test "$MALLOC_H" != ""; then
3737     AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
3738     break
3739   fi
3740 done
3742 MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
3743 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
3745 AC_CHECK_FUNCS(malloc_usable_size)
3747 dnl See if compiler supports some gcc-style attributes
3749 AC_CACHE_CHECK(for __attribute__((always_inline)),
3750                ac_cv_attribute_always_inline,
3751                [AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));],
3752                                [],
3753                                ac_cv_attribute_always_inline=yes,
3754                                ac_cv_attribute_always_inline=no)])
3756 AC_CACHE_CHECK(for __attribute__((malloc)),
3757                ac_cv_attribute_malloc,
3758                [AC_TRY_COMPILE([void* f(int) __attribute__((malloc));],
3759                                [],
3760                                ac_cv_attribute_malloc=yes,
3761                                ac_cv_attribute_malloc=no)])
3763 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
3764                ac_cv_attribute_warn_unused,
3765                [AC_TRY_COMPILE([int f(void) __attribute__((warn_unused_result));],
3766                                [],
3767                                ac_cv_attribute_warn_unused=yes,
3768                                ac_cv_attribute_warn_unused=no)])
3770 dnl End of C++ language/feature checks
3771 AC_LANG_C
3773 dnl ========================================================
3774 dnl =  Internationalization checks
3775 dnl ========================================================
3777 dnl Internationalization and Locale support is different
3778 dnl on various UNIX platforms.  Checks for specific i18n
3779 dnl features go here.
3781 dnl check for LC_MESSAGES
3782 AC_CACHE_CHECK(for LC_MESSAGES,
3783                 ac_cv_i18n_lc_messages,
3784                 [AC_TRY_COMPILE([#include <locale.h>],
3785                                 [int category = LC_MESSAGES;],
3786                                 ac_cv_i18n_lc_messages=yes,
3787                                 ac_cv_i18n_lc_messages=no)])
3788 if test "$ac_cv_i18n_lc_messages" = yes; then
3789    AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3792 AC_HAVE_FUNCS(localeconv)
3793 fi # ! SKIP_COMPILER_CHECKS
3795 TARGET_XPCOM_ABI=
3796 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3797     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3800 dnl Mozilla specific options
3801 dnl ========================================================
3802 dnl The macros used for command line options
3803 dnl are defined in build/autoconf/altoptions.m4.
3805 dnl If the compiler supports these attributes, define them as
3806 dnl convenience macros.
3807 if test "$ac_cv_attribute_malloc" = yes ; then
3808   AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
3809 else
3810   AC_DEFINE(NS_ATTR_MALLOC,)
3813 if test "$ac_cv_attribute_warn_unused" = yes ; then
3814   AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
3815 else
3816   AC_DEFINE(NS_WARN_UNUSED_RESULT,)
3819 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
3820 dnl features that Windows actually does support.
3822 if test -n "$SKIP_COMPILER_CHECKS"; then
3823    dnl Windows has malloc.h
3824    AC_DEFINE(MALLOC_H, [<malloc.h>])
3825    AC_DEFINE(HAVE_FORCEINLINE)
3826    AC_DEFINE(HAVE_LOCALECONV)
3827 fi # SKIP_COMPILER_CHECKS
3829 dnl ========================================================
3830 dnl =
3831 dnl = Check for external package dependencies
3832 dnl =
3833 dnl ========================================================
3834 MOZ_ARG_HEADER(External Packages)
3836 MOZ_ARG_WITH_STRING(libxul-sdk,
3837 [  --with-libxul-sdk=PFX   Use the libXUL SDK at <PFX>],
3838   LIBXUL_SDK_DIR=$withval)
3840 if test "$LIBXUL_SDK_DIR" = "yes"; then
3841     AC_MSG_ERROR([--with-libxul-sdk must specify a path])
3842 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
3843     LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
3845     if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
3846         AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
3847     fi
3850 AC_SUBST(LIBXUL_SDK)
3852 if test -n "$LIBXUL_SDK"; then
3853     LIBXUL_DIST="$LIBXUL_SDK"
3854 else
3855     LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
3857 AC_SUBST(LIBXUL_DIST)
3859 SYSTEM_LIBXUL=
3861 MOZ_ARG_WITH_BOOL(system-libxul,
3862 [  --with-system-libxul    Use system installed libxul SDK],
3863     SYSTEM_LIBXUL=1)
3865 dnl ========================================================
3866 dnl = If NSPR was not detected in the system,
3867 dnl = use the one in the source tree (mozilla/nsprpub)
3868 dnl ========================================================
3869 MOZ_ARG_WITH_BOOL(system-nspr,
3870 [  --with-system-nspr      Use system installed NSPR],
3871     _USE_SYSTEM_NSPR=1 )
3873 if test -n "$_USE_SYSTEM_NSPR"; then
3874     AM_PATH_NSPR(4.9.6, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([your don't have NSPR installed or your version is too old])])
3877 if test -n "$MOZ_NATIVE_NSPR"; then
3878     _SAVE_CFLAGS=$CFLAGS
3879     CFLAGS="$CFLAGS $NSPR_CFLAGS"
3880     AC_TRY_COMPILE([#include "prtypes.h"],
3881                 [#ifndef PR_STATIC_ASSERT
3882                  #error PR_STATIC_ASSERT not defined or requires including prtypes.h
3883                  #endif],
3884                 [MOZ_NATIVE_NSPR=1],
3885                 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
3886     AC_TRY_COMPILE([#include "prtypes.h"],
3887                 [#ifndef PR_UINT64
3888                  #error PR_UINT64 not defined or requires including prtypes.h
3889                  #endif],
3890                 [MOZ_NATIVE_NSPR=1],
3891                 AC_MSG_ERROR([system NSPR does not support PR_UINT64 or including prtypes.h does not provide it]))
3892     CFLAGS=$_SAVE_CFLAGS
3893 else
3894     if test -z "$LIBXUL_SDK"; then
3895         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
3896         if test -n "$GNU_CC"; then
3897             NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
3898         else
3899             NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
3900         fi
3901     else
3902         NSPR_CFLAGS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --includedir="${LIBXUL_DIST}/include/nspr" --cflags`
3903         NSPR_LIBS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --libdir="${LIBXUL_DIST}"/lib --libs`
3904     fi
3907 dnl set GRE_MILESTONE
3908 dnl ========================================================
3909 if test -n "$LIBXUL_SDK"; then
3910     GRE_MILESTONE=`$PYTHON "$_topsrcdir"/config/printconfigsetting.py "$LIBXUL_DIST"/bin/platform.ini Build Milestone`
3911 else
3912     GRE_MILESTONE=`tail -n 1 "$_topsrcdir"/config/milestone.txt 2>/dev/null || tail -1 "$_topsrcdir"/config/milestone.txt`
3914 AC_SUBST(GRE_MILESTONE)
3916 dnl system libevent Support
3917 dnl ========================================================
3918 MOZ_ARG_WITH_STRING(system-libevent,
3919 [  --with-system-libevent[=PFX]
3920                           Use system libevent [installed at prefix PFX]],
3921     LIBEVENT_DIR=$withval)
3923 _SAVE_CFLAGS=$CFLAGS
3924 _SAVE_LDFLAGS=$LDFLAGS
3925 _SAVE_LIBS=$LIBS
3926 if test "$LIBEVENT_DIR" = yes; then
3927     PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
3928         MOZ_NATIVE_LIBEVENT=1,
3929         LIBEVENT_DIR=/usr)
3931 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
3932     MOZ_NATIVE_LIBEVENT=
3933 elif test -z "$MOZ_NATIVE_LIBEVENT"; then
3934     CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
3935     LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
3936     MOZ_CHECK_HEADER(event.h,
3937         [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
3938              AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
3939          fi],
3940         AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
3941     AC_CHECK_LIB(event, event_init,
3942                  [MOZ_NATIVE_LIBEVENT=1
3943                   MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
3944                   MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
3945                  [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
3947 CFLAGS=$_SAVE_CFLAGS
3948 LDFLAGS=$_SAVE_LDFLAGS
3949 LIBS=$_SAVE_LIBS
3951 AC_SUBST(MOZ_NATIVE_LIBEVENT)
3952 AC_SUBST(MOZ_LIBEVENT_CFLAGS)
3953 AC_SUBST(MOZ_LIBEVENT_LIBS)
3955 dnl ========================================================
3956 dnl = If NSS was not detected in the system,
3957 dnl = use the one in the source tree (mozilla/security/nss)
3958 dnl ========================================================
3960 MOZ_ARG_WITH_BOOL(system-nss,
3961 [  --with-system-nss       Use system installed NSS],
3962     _USE_SYSTEM_NSS=1 )
3964 if test -n "$_USE_SYSTEM_NSS"; then
3965     AM_PATH_NSS(3.15, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
3968 if test -n "$MOZ_NATIVE_NSS"; then
3969    NSS_LIBS="$NSS_LIBS -lcrmf"
3970 else
3971    NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
3973    if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "OS2"; then
3974        NSS_LIBS="\
3975         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
3976         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
3977         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
3978         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
3979         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
3980    else
3981        NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
3982    fi
3985 dnl ======================
3986 dnl Detect yasm
3987 dnl ======================
3989 AC_MSG_CHECKING([for YASM assembler])
3990 AC_CHECK_PROGS(YASM, yasm, "")
3992 if test -n "$YASM"; then
3993   dnl Pull out yasm's version string
3994   YASM_VERSION=`yasm --version | $AWK '/^yasm/ { print $2 }'`
3995   _YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'`
3996   _YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'`
3997   _YASM_RELEASE=`      echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'`
3998   _YASM_BUILD=`        echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
4001 if test -z "$SKIP_LIBRARY_CHECKS"; then
4002 dnl system JPEG support
4003 dnl ========================================================
4004 MOZ_ARG_WITH_STRING(system-jpeg,
4005 [  --with-system-jpeg[=PFX]
4006                           Use system libjpeg [installed at prefix PFX]],
4007     JPEG_DIR=$withval)
4009 _SAVE_CFLAGS=$CFLAGS
4010 _SAVE_LDFLAGS=$LDFLAGS
4011 _SAVE_LIBS=$LIBS
4012 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4013     CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4014     LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4016 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4017     MOZ_NATIVE_JPEG=
4018 else
4019     AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [MOZ_NATIVE_JPEG=1 MOZ_JPEG_LIBS="-ljpeg"], MOZ_NATIVE_JPEG=)
4022 if test "$MOZ_NATIVE_JPEG" = 1; then
4023     AC_TRY_COMPILE([ #include <stdio.h>
4024                      #include <sys/types.h>
4025                      #include <jpeglib.h> ],
4026                    [ #if JPEG_LIB_VERSION < $MOZJPEG
4027                      #error "Insufficient JPEG library version ($MOZJPEG required)."
4028                      #endif
4029                      #ifndef JCS_EXTENSIONS
4030                      #error "libjpeg-turbo JCS_EXTENSIONS required"
4031                      #endif
4032                      ],
4033                    MOZ_NATIVE_JPEG=1,
4034                    AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg]))
4036 CFLAGS=$_SAVE_CFLAGS
4037 LDFLAGS=$_SAVE_LDFLAGS
4038 LIBS=$_SAVE_LIBS
4040 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$MOZ_NATIVE_JPEG" = 1; then
4041     MOZ_JPEG_CFLAGS="-I${JPEG_DIR}/include"
4042     MOZ_JPEG_LIBS="-L${JPEG_DIR}/lib ${MOZ_JPEG_LIBS}"
4044 fi # SKIP_LIBRARY_CHECKS
4046 dnl system ZLIB support
4047 dnl ========================================================
4048 MOZ_ZLIB_CHECK([1.2.3])
4050 if test "$MOZ_NATIVE_ZLIB" != 1; then
4051     MOZ_ZLIB_CFLAGS=
4052     MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,'"$MOZ_BUILD_ROOT"'/modules/zlib/src)'
4055 if test "$MOZ_LINKER" = 1 -a "$MOZ_NATIVE_ZLIB" != 1; then
4056     AC_MSG_ERROR([Custom dynamic linker requires --with-system-zlib])
4059 if test -z "$SKIP_LIBRARY_CHECKS"; then
4060 dnl system BZIP2 Support
4061 dnl ========================================================
4062 MOZ_ARG_WITH_STRING(system-bz2,
4063 [  --with-system-bz2[=PFX]
4064                           Use system libbz2 [installed at prefix PFX]],
4065     BZ2_DIR=$withval)
4067 _SAVE_CFLAGS=$CFLAGS
4068 _SAVE_LDFLAGS=$LDFLAGS
4069 _SAVE_LIBS=$LIBS
4070 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4071     CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4072     LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4074 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4075     MOZ_NATIVE_BZ2=
4076 else
4077     AC_CHECK_LIB(bz2, BZ2_bzread, [MOZ_NATIVE_BZ2=1 MOZ_BZ2_LIBS="-lbz2"],
4078         [MOZ_NATIVE_BZ2= MOZ_BZ2_CFLAGS= MOZ_BZ2_LIBS=])
4080 CFLAGS=$_SAVE_CFLAGS
4081 LDFLAGS=$_SAVE_LDFLAGS
4082 LIBS=$_SAVE_LIBS
4084 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$MOZ_NATIVE_BZ2" = 1; then
4085     MOZ_BZ2_CFLAGS="-I${BZ2_DIR}/include"
4086     MOZ_BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4089 dnl system PNG Support
4090 dnl ========================================================
4091 MOZ_ARG_WITH_STRING(system-png,
4092 [  --with-system-png[=PFX]
4093                           Use system libpng [installed at prefix PFX]],
4094     PNG_DIR=$withval)
4096 _SAVE_CFLAGS=$CFLAGS
4097 _SAVE_LDFLAGS=$LDFLAGS
4098 _SAVE_LIBS=$LIBS
4099 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4100     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4101     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4103 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4104     MOZ_NATIVE_PNG=
4105 else
4106     AC_CHECK_LIB(png, png_get_valid, [MOZ_NATIVE_PNG=1 MOZ_PNG_LIBS="-lpng"],
4107                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4108     AC_CHECK_LIB(png, png_get_acTL, ,
4109                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
4111 if test "$MOZ_NATIVE_PNG" = 1; then
4112     AC_TRY_COMPILE([ #include <stdio.h>
4113                      #include <sys/types.h>
4114                      #include <png.h> ],
4115                    [ #if PNG_LIBPNG_VER < $MOZPNG
4116                      #error "Insufficient libpng version ($MOZPNG required)."
4117                      #endif
4118                      #ifndef PNG_UINT_31_MAX
4119                      #error "Insufficient libpng version."
4120                      #endif ],
4121                    MOZ_NATIVE_PNG=1,
4122                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4124 CFLAGS=$_SAVE_CFLAGS
4125 LDFLAGS=$_SAVE_LDFLAGS
4126 LIBS=$_SAVE_LIBS
4128 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_NATIVE_PNG" = 1; then
4129     MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
4130     MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
4133 fi # SKIP_LIBRARY_CHECKS
4135 dnl system HunSpell Support
4136 dnl ========================================================
4137 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4138 [  --enable-system-hunspell
4139                           Use system hunspell (located with pkgconfig)],
4140     MOZ_NATIVE_HUNSPELL=1 )
4142 if test -n "$MOZ_NATIVE_HUNSPELL"; then
4143     PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4146 AC_SUBST(MOZ_NATIVE_HUNSPELL)
4148 dnl ========================================================
4149 dnl system libffi Support
4150 dnl ========================================================
4151 MOZ_ARG_ENABLE_BOOL(system-ffi,
4152 [  --enable-system-ffi       Use system libffi (located with pkgconfig)],
4153     MOZ_NATIVE_FFI=1 )
4155 if test -n "$MOZ_NATIVE_FFI"; then
4156     # Vanilla libffi 3.0.9 needs a few patches from upcoming version 3.0.10
4157     # for non-GCC compilers.
4158     if test -z "$GNU_CC"; then
4159         PKG_CHECK_MODULES(MOZ_FFI, libffi > 3.0.9)
4160     else
4161         PKG_CHECK_MODULES(MOZ_FFI, libffi >= 3.0.9)
4162     fi
4163     MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_FFI_LIBS"
4166 dnl ========================================================
4167 dnl Java SDK support
4168 dnl ========================================================
4170 JAVA_BIN_PATH=
4171 MOZ_ARG_WITH_STRING(java-bin-path,
4172 [  --with-java-bin-path=dir
4173                           Location of Java binaries (java, javac, jar)],
4174     JAVA_BIN_PATH=$withval)
4176 dnl ========================================================
4177 dnl =
4178 dnl = Application
4179 dnl =
4180 dnl ========================================================
4182 MOZ_ARG_HEADER(Application)
4184 ENABLE_TESTS=1
4185 ENABLE_SYSTEM_EXTENSION_DIRS=1
4186 MOZ_BRANDING_DIRECTORY=
4187 MOZ_OFFICIAL_BRANDING=
4188 MOZ_FEEDS=1
4189 MOZ_FLEXBOX=1
4190 MOZ_WEBAPP_RUNTIME=
4191 MOZ_JSDEBUGGER=1
4192 MOZ_AUTH_EXTENSION=1
4193 MOZ_OGG=1
4194 MOZ_RAW=
4195 MOZ_SPEEX_RESAMPLER=1
4196 MOZ_SOUNDTOUCH=1
4197 MOZ_CUBEB=
4198 MOZ_VORBIS=
4199 MOZ_TREMOR=
4200 MOZ_WAVE=1
4201 MOZ_SAMPLE_TYPE_FLOAT32=
4202 MOZ_SAMPLE_TYPE_S16=
4203 MOZ_OPUS=1
4204 MOZ_WEBM=1
4205 MOZ_DASH=
4206 MOZ_WMF=
4207 MOZ_WEBRTC=1
4208 MOZ_PEERCONNECTION=
4209 MOZ_SRTP=
4210 MOZ_WEBRTC_SIGNALING=
4211 MOZ_WEBRTC_IN_LIBXUL=
4212 MOZ_WEBRTC_ASSERT_ALWAYS=1
4213 MOZ_SCTP=
4214 MOZ_MEDIA_PLUGINS=
4215 MOZ_MEDIA_NAVIGATOR=
4216 MOZ_OMX_PLUGIN=
4217 MOZ_VP8=
4218 MOZ_VP8_ERROR_CONCEALMENT=
4219 MOZ_VP8_ENCODER=
4220 MOZ_WEBSPEECH=1
4221 VPX_AS=
4222 VPX_ASFLAGS=
4223 VPX_AS_DASH_C_FLAG=
4224 VPX_AS_CONVERSION=
4225 VPX_ASM_SUFFIX=
4226 VPX_X86_ASM=
4227 VPX_ARM_ASM=
4228 LIBJPEG_TURBO_AS=
4229 LIBJPEG_TURBO_ASFLAGS=
4230 LIBJPEG_TURBO_X86_ASM=
4231 LIBJPEG_TURBO_X64_ASM=
4232 LIBJPEG_TURBO_ARM_ASM=
4233 MOZ_PANGO=1
4234 MOZ_PERMISSIONS=1
4235 MOZ_PLACES=1
4236 MOZ_PREF_EXTENSIONS=1
4237 MOZ_PROFILELOCKING=1
4238 MOZ_PSM=1
4239 MOZ_REFLOW_PERF=
4240 MOZ_SAFE_BROWSING=
4241 MOZ_HELP_VIEWER=
4242 MOZ_SPELLCHECK=1
4243 MOZ_ANDROID_OMTC=
4244 MOZ_ONLY_TOUCH_EVENTS=
4245 MOZ_TOOLKIT_SEARCH=1
4246 MOZ_UI_LOCALE=en-US
4247 MOZ_UNIVERSALCHARDET=1
4248 MOZ_URL_CLASSIFIER=
4249 MOZ_XUL=1
4250 MOZ_ZIPWRITER=1
4251 NS_PRINTING=1
4252 MOZ_PDF_PRINTING=
4253 MOZ_DISABLE_CRYPTOLEGACY=
4254 NSS_DISABLE_DBM=
4255 NECKO_WIFI=1
4256 NECKO_COOKIES=1
4257 NECKO_PROTOCOLS_DEFAULT="about data file ftp http res viewsource websocket wyciwyg device"
4258 USE_ARM_KUSER=
4259 BUILD_CTYPES=1
4260 MOZ_USE_NATIVE_POPUP_WINDOWS=
4261 MOZ_ANDROID_HISTORY=
4262 MOZ_WEBSMS_BACKEND=
4263 MOZ_ANDROID_WALLPAPER=
4264 MOZ_ANDROID_BEAM=
4265 ACCESSIBILITY=1
4266 MOZ_TIME_MANAGER=
4267 MOZ_PAY=
4268 MOZ_AUDIO_CHANNEL_MANAGER=
4269 NSS_NO_LIBPKIX=
4271 case "$target_os" in
4272     mingw*)
4273         NS_ENABLE_TSF=1
4274         AC_DEFINE(NS_ENABLE_TSF)
4275         ;;
4276 esac
4278 case "${target}" in
4279     *-android*|*-linuxandroid*)
4280         if test "$CPU_ARCH" = "arm" ; then
4281           USE_ARM_KUSER=1
4282         fi
4284         NSS_DISABLE_DBM=1
4285         if test -z "$gonkdir"; then
4286           NECKO_WIFI=
4287         else
4288           NECKO_WIFI=1
4289         fi
4290         MOZ_THEME_FASTSTRIPE=1
4291         MOZ_TREE_FREETYPE=1
4292         MOZ_MEMORY=1
4293         MOZ_RAW=1
4294         ;;
4296 esac
4298 MOZ_ARG_WITH_STRING(external-source-dir,
4299 [  --with-external-source-dir=dir
4300                           External directory containing additional build files.],
4301 [ EXTERNAL_SOURCE_DIR=$withval])
4302 AC_SUBST(EXTERNAL_SOURCE_DIR)
4304 MOZ_ARG_ENABLE_STRING(application,
4305 [  --enable-application=APP
4306                           Options include:
4307                             browser (Firefox)
4308                             xulrunner
4309                             tools/update-packaging (AUS-related packaging tools)],
4310 [ MOZ_BUILD_APP=$enableval ] )
4312 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4313 [  --with-xulrunner-stub-name=appname   Create the xulrunner stub with the given name],
4314   XULRUNNER_STUB_NAME=$withval)
4316 if test -z "$XULRUNNER_STUB_NAME"; then
4317   case "$target_os" in
4318   darwin*)
4319     XULRUNNER_STUB_NAME=xulrunner
4320     ;;
4321   *)
4322     XULRUNNER_STUB_NAME=xulrunner-stub
4323   esac
4325 AC_SUBST(XULRUNNER_STUB_NAME)
4327 AC_MSG_CHECKING([for application to build])
4328 if test -z "$MOZ_BUILD_APP"; then
4329   AC_MSG_RESULT([browser])
4330   MOZ_BUILD_APP=browser
4331 else
4332   # "mobile" no longer exists.
4333   if test "$MOZ_BUILD_APP" = "mobile" ; then
4334     AC_MSG_RESULT([none])
4335     AC_MSG_ERROR([--enable-application=mobile is no longer supported.])
4336   fi
4337   # We have a valid application only if it has a build.mk file in its top
4338   # directory.
4339   if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4340     AC_MSG_RESULT([none])
4341     AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4342   else
4343     AC_MSG_RESULT([$MOZ_BUILD_APP])
4344   fi
4347 # The app update channel is 'default' when not supplied. The value is used in
4348 # the application's confvars.sh so it must be set before confvars.sh is called.
4349 MOZ_ARG_ENABLE_STRING([update-channel],
4350 [  --enable-update-channel=CHANNEL
4351                           Select application update channel (default=default)],
4352     MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
4354 if test -z "$MOZ_UPDATE_CHANNEL"; then
4355     MOZ_UPDATE_CHANNEL=default
4357 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
4358 AC_SUBST(MOZ_UPDATE_CHANNEL)
4360 # Allow the application to influence configure with a confvars.sh script.
4362 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4363 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4364   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4365   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4366 else
4367   AC_MSG_RESULT([no])
4370 # Allow the application to provide a subconfigure script
4371 if test -f "${srcdir}/${MOZ_BUILD_APP}/configure.in" ; then
4372   do_output_subdirs() {
4373     if test -n "$_subconfigure_subdirs"; then
4374       AC_MSG_ERROR([Cannot specify more than one sub-sub-configure])
4375      fi
4376     _subconfigure_subdir="$1"
4377     _subconfigure_config_args="$ac_configure_args"
4378   }
4379   tmpscript=`$PYTHON -c 'import os, tempfile; print tempfile.mktemp(prefix="subscript.").replace(os.sep, "/")'` || exit 1
4380   m4 "${srcdir}/build/autoconf/subconfigure.m4" \
4381      "${srcdir}/build/autoconf/altoptions.m4" \
4382      "${srcdir}/${MOZ_BUILD_APP}/configure.in" > $tmpscript
4383   . $tmpscript
4384   rm -f $tmpscript
4387 # Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig
4388 MOZ_ARG_WITH_STRING(app-name,
4389 [--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME],
4390 WITH_APP_NAME=$withval,
4393 if test -n "$WITH_APP_NAME" ; then
4394     MOZ_APP_NAME="$WITH_APP_NAME"
4397 MOZ_ARG_WITH_STRING(app-basename,
4398 [--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME],
4399 WITH_APP_BASENAME=$withval,
4402 if test -n "$WITH_APP_BASENAME" ; then
4403     MOZ_APP_BASENAME="$WITH_APP_BASENAME"
4406 # Now is a good time to test for logic errors, define mismatches, etc.
4407 case "$MOZ_BUILD_APP" in
4408 xulrunner)
4409   if test "$LIBXUL_SDK"; then
4410     AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4411   fi
4412   ;;
4413 esac
4415 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4416 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4417 # MOZ_BUILD_APP.
4418 case "$MOZ_BUILD_APP" in
4419 browser)
4420   AC_DEFINE(MOZ_PHOENIX)
4421   ;;
4423 xulrunner)
4424   AC_DEFINE(MOZ_XULRUNNER)
4425   ;;
4426 b2g)
4427   AC_DEFINE(MOZ_B2G)
4428   ;;
4429 esac
4431 AC_SUBST(MOZ_BUILD_APP)
4432 AC_SUBST(MOZ_PHOENIX)
4433 AC_SUBST(MOZ_XULRUNNER)
4434 AC_SUBST(MOZ_B2G)
4436 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4438 dnl ========================================================
4439 dnl Check android sdk version depending on mobile target
4440 dnl ========================================================
4442 if test -z "$gonkdir" ; then
4443     # Minimum Android SDK API Level we require.
4444     case "$MOZ_BUILD_APP" in
4445     mobile/android)
4446         android_min_api_level=16
4447         ;;
4448     esac
4450     MOZ_ANDROID_SDK($android_min_api_level)
4453 dnl ========================================================
4454 dnl =
4455 dnl = Toolkit Options
4456 dnl =
4457 dnl ========================================================
4458 MOZ_ARG_HEADER(Toolkit Options)
4460     dnl ========================================================
4461     dnl = Select the default toolkit
4462     dnl ========================================================
4463         MOZ_ARG_ENABLE_STRING(default-toolkit,
4464         [  --enable-default-toolkit=TK
4465                           Select default toolkit
4466                           Platform specific defaults:
4467                             Mac OS X - cairo-cocoa
4468                             OS/2 - cairo-os2
4469                             Win32 - cairo-windows
4470                             * - cairo-gtk2
4471                             * - cairo-qt],
4472     [ _DEFAULT_TOOLKIT=$enableval ],
4473     [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4475     if test "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4476         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4477         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4478         -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4479         -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4480         -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
4481         -o "$_DEFAULT_TOOLKIT" = "cairo-uikit" \
4482         -o "$_DEFAULT_TOOLKIT" = "cairo-android" \
4483         -o "$_DEFAULT_TOOLKIT" = "cairo-gonk"
4484     then
4485         dnl nglayout only supports building with one toolkit,
4486         dnl so ignore everything after the first comma (",").
4487         MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4488     else
4489         AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4490     fi
4492 MOZ_ARG_WITHOUT_BOOL(x,
4493 [  --without-x              Build without X11],
4494     WITHOUT_X11=1)
4496 dnl ========================================================
4497 dnl = Enable the toolkit as needed                         =
4498 dnl ========================================================
4500 MOZ_WIDGET_GTK=
4502 case "$MOZ_WIDGET_TOOLKIT" in
4504 cairo-windows)
4505     MOZ_WIDGET_TOOLKIT=windows
4506     MOZ_WEBGL=1
4507     MOZ_PDF_PRINTING=1
4508     MOZ_INSTRUMENT_EVENT_LOOP=1
4509     if test -n "$GNU_CC"; then
4510         MOZ_FOLD_LIBS=
4511     fi
4512     ;;
4514 cairo-gtk2|cairo-gtk2-x11)
4515     MOZ_WIDGET_TOOLKIT=gtk2
4516     MOZ_ENABLE_GTK2=1
4517     MOZ_ENABLE_XREMOTE=1
4518     MOZ_WEBGL=1
4519     MOZ_GL_DEFAULT_PROVIDER=GLX
4521     AC_DEFINE(MOZ_X11)
4522     MOZ_X11=1
4523     USE_FC_FREETYPE=1
4525     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4526     TK_LIBS='$(MOZ_GTK2_LIBS)'
4527     AC_DEFINE(MOZ_WIDGET_GTK2)
4528     MOZ_WIDGET_GTK=2
4529     AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK)
4530     MOZ_PDF_PRINTING=1
4531     MOZ_INSTRUMENT_EVENT_LOOP=1
4532     ;;
4534 cairo-qt)
4535     MOZ_WIDGET_TOOLKIT=qt
4536     MOZ_ENABLE_QT=1
4537     if test -z "$WITHOUT_X11"; then
4538       MOZ_ENABLE_XREMOTE=1
4539       MOZ_GL_DEFAULT_PROVIDER=GLX
4540       MOZ_X11=1
4541       AC_DEFINE(MOZ_X11)
4542       XT_LIBS=
4543     fi
4545     MOZ_WEBGL=1
4546     USE_ELF_DYNSTR_GC=
4547     USE_FC_FREETYPE=1
4548     TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4549     TK_LIBS='$(MOZ_QT_LIBS)'
4550     AC_DEFINE(MOZ_WIDGET_QT)
4551     MOZ_PDF_PRINTING=1
4552     AC_DEFINE(QT_NO_KEYWORDS)
4553     ;;
4555 cairo-os2)
4556     MOZ_WIDGET_TOOLKIT=os2
4557     USE_FC_FREETYPE=1
4558     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4559     TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4560     MOZ_PDF_PRINTING=1
4561     ;;
4563 cairo-cocoa)
4564     MOZ_WIDGET_TOOLKIT=cocoa
4565     AC_DEFINE(MOZ_WIDGET_COCOA)
4566     LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
4567     TK_LIBS='-framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
4568     TK_CFLAGS="-DNO_X11"
4569     CFLAGS="$CFLAGS $TK_CFLAGS"
4570     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4571     DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/bin/XUL -lxpcom_core -lmozalloc'
4572     XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/bin/XUL -lmozalloc'
4573     MOZ_USER_DIR="Mozilla"
4574     MOZ_FS_LAYOUT=bundle
4575     MOZ_WEBGL=1
4576     MOZ_INSTRUMENT_EVENT_LOOP=1
4577     ;;
4579 cairo-uikit)
4580     MOZ_WIDGET_TOOLKIT=uikit
4581     AC_DEFINE(MOZ_WIDGET_UIKIT)
4582     LDFLAGS="$LDFLAGS -framework UIKit -lobjc"
4583     TK_CFLAGS="-DNO_X11"
4584     TK_LIBS='-framework Foundation -framework CoreFoundation -framework CoreGraphics -framework CoreText'
4585     CFLAGS="$CFLAGS $TK_CFLAGS"
4586     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4587     DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/bin/XUL -lxpcom_core -lmozalloc'
4588     XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/bin/XUL -lmozalloc'
4589     MOZ_USER_DIR="Mozilla"
4590     MOZ_FS_LAYOUT=bundle
4591     ;;
4593 cairo-android)
4594     AC_DEFINE(MOZ_WIDGET_ANDROID)
4595     MOZ_WIDGET_TOOLKIT=android
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_INSTRUMENT_EVENT_LOOP=1
4601     ;;
4603 cairo-gonk)
4604     AC_DEFINE(MOZ_WIDGET_GONK)
4605     AC_DEFINE(MOZ_TOUCH)
4606     MOZ_WIDGET_TOOLKIT=gonk
4607     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4608     TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4609     MOZ_WEBGL=1
4610     MOZ_PDF_PRINTING=1
4611     MOZ_TOUCH=1
4612     ;;
4614 esac
4616 AC_SUBST(MOZ_PDF_PRINTING)
4617 if test "$MOZ_PDF_PRINTING"; then
4618    PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
4619    AC_DEFINE(MOZ_PDF_PRINTING)
4622 if test "$MOZ_ENABLE_XREMOTE"; then
4623     AC_DEFINE(MOZ_ENABLE_XREMOTE)
4626 if test "$MOZ_INSTRUMENT_EVENT_LOOP"; then
4627    AC_DEFINE(MOZ_INSTRUMENT_EVENT_LOOP)
4630 if test "$COMPILE_ENVIRONMENT"; then
4631   if test "$MOZ_ENABLE_GTK2"; then
4632     if test "$MOZ_X11"; then
4633       GDK_PACKAGES=gdk-x11-2.0
4634     fi
4636     PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4637   fi
4639 fi # COMPILE_ENVIRONMENT
4641 AC_SUBST(MOZ_FS_LAYOUT)
4643 dnl ========================================================
4644 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4645 dnl their usage and use them in spidermonkey.
4646 dnl ========================================================
4647 MOZ_ARG_WITH_BOOL(arm-kuser,
4648 [  --with-arm-kuser         Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4649     USE_ARM_KUSER=1,)
4650 if test -n "$USE_ARM_KUSER"; then
4651    AC_DEFINE(USE_ARM_KUSER)
4654 dnl ========================================================
4655 dnl = startup-notification support module
4656 dnl ========================================================
4658 if test "$MOZ_ENABLE_GTK2"
4659 then
4660     MOZ_ENABLE_STARTUP_NOTIFICATION=
4662     MOZ_ARG_ENABLE_BOOL(startup-notification,
4663     [  --enable-startup-notification
4664                           Enable startup-notification support (default: disabled) ],
4665         MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4666         MOZ_ENABLE_STARTUP_NOTIFICATION=)
4667     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4668     then
4669         PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4670                           libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4671         [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4672             if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4673             then
4674                 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4675             fi
4676             MOZ_ENABLE_STARTUP_NOTIFICATION=
4677         ])
4678     fi
4680     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4681         AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4682     fi
4684     TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4686 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4687 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4688 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4690 dnl ========================================================
4691 dnl = QT support
4692 dnl ========================================================
4693 if test "$MOZ_ENABLE_QT"
4694 then
4695     MOZ_ARG_WITH_STRING(qtdir,
4696     [  --with-qtdir=\$dir       Specify Qt directory ],
4697     [ QTDIR=$withval])
4699     if test -z "$QTDIR"; then
4700         PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtCore QtOpenGL)
4701         PKG_CHECK_MODULES(MOZ_QT5, Qt5Widgets Qt5Multimedia Qt5PrintSupport,
4702                       MOZ_ENABLE_QT5=1,
4703                       MOZ_ENABLE_QT5=)
4704         if test "$MOZ_ENABLE_QT5"; then
4705             echo "Using qt5"
4706             MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $MOZ_QT5_CFLAGS"
4707             MOZ_QT_LIBS="$MOZ_QT_LIBS $MOZ_QT5_LIBS"
4708         fi
4710         AC_CHECK_PROGS(HOST_MOC, $MOC moc, "")
4711         AC_CHECK_PROGS(HOST_RCC, $RCC rcc, "")
4712     else
4713         MOZ_QT_CFLAGS="-DQT_SHARED"
4714         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
4715         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
4716         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
4717         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
4718         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
4719         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDeclarative"
4721         # QtWidgets was introduced only in Qt5
4722         if test -d $QTDIR/include/QtWidgets; then
4723             echo "Using qt5"
4724             MOZ_QT_LIBS="-L$QTDIR/lib/ -lQt5Gui -lQt5Network -lQt5Core -lQt5Xml -lQt5OpenGL"
4725             MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui/5.0.1/QtGui"
4726             MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtWidgets"
4727             MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtPrintSupport"
4728             MOZ_QT_LIBS="$MOZ_QT_LIBS -lQt5Widgets -lQt5PrintSupport"
4729         else
4730             MOZ_QT_LIBS="-L$QTDIR/lib/ -lQtGui -lQtNetwork -lQtCore -lQtXml -lQtOpenGL"
4731             MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/Qt"
4732         fi
4733         HOST_MOC="$QTDIR/bin/moc"
4734         HOST_RCC="$QTDIR/bin/rcc"
4735     fi
4736     if test -z "$HOST_MOC"; then
4737         AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is
4738 incorrect])
4739     fi
4740     if test -z "$HOST_RCC"; then
4741         AC_MSG_ERROR([No acceptable rcc preprocessor found. Qt SDK is not installed or --with-qt is
4742 incorrect])
4743     fi
4745     MOC=$HOST_MOC
4746     RCC=$HOST_RCC
4748     MOZ_ENABLE_QMSYSTEM2=
4749     PKG_CHECK_MODULES(_QMSYSTEM2, qmsystem2,
4750                       MOZ_ENABLE_QMSYSTEM2=1,
4751                       MOZ_ENABLE_QMSYSTEM2=)
4753     if test "$MOZ_ENABLE_QMSYSTEM2"; then
4754       MOZ_ENABLE_QMSYSTEM2=1
4755       MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QMSYSTEM2_CFLAGS"
4756       MOZ_QT_LIBS="$MOZ_QT_LIBS $_QMSYSTEM2_LIBS"
4757       AC_DEFINE(MOZ_ENABLE_QMSYSTEM2)
4758     fi
4760     MOZ_ENABLE_QTNETWORK=
4761     PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7,
4762                       MOZ_ENABLE_QTNETWORK=1,
4763                       MOZ_ENABLE_QTNETWORK=)
4765     if test "$MOZ_ENABLE_QTNETWORK"; then
4766       MOZ_ENABLE_QTNETWORK=1
4767       AC_DEFINE(MOZ_ENABLE_QTNETWORK)
4768     fi
4770     MOZ_ENABLE_QTMOBILITY=
4771     PKG_CHECK_MODULES(_QTMOBILITY, QtSensors QtFeedback QtLocation,
4772                       MOZ_ENABLE_QTMOBILITY=1,
4773                       MOZ_ENABLE_QTMOBILITY=)
4774     if test "$MOZ_ENABLE_QTMOBILITY"; then
4775        MOZ_ENABLE_QTMOBILITY=1
4776        MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QTMOBILITY_CFLAGS"
4777        MOZ_QT_LIBS="$MOZ_QT_LIBS $_QTMOBILITY_LIBS"
4778     else
4779        AC_CHECK_LIB(QtSensors, main, [
4780           MOZ_ENABLE_QTMOBILITY=1
4781           MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtMobility"
4782           MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtSensors"
4783           MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtFeedback"
4784           MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtLocation"
4785           MOZ_QT_LIBS="$MOZ_QT_LIBS -lQtSensors -lQtFeedback -lQtLocation"
4786        ])
4787     fi
4788     if test "$MOZ_ENABLE_QTMOBILITY"; then
4789        AC_DEFINE(MOZ_ENABLE_QTMOBILITY)
4790     fi
4793 AC_SUBST(GTK_CONFIG)
4794 AC_SUBST(TK_CFLAGS)
4795 AC_SUBST(TK_LIBS)
4797 AC_SUBST(MOZ_ENABLE_GTK2)
4798 AC_SUBST(MOZ_ENABLE_QT)
4799 AC_SUBST(MOZ_ENABLE_QTNETWORK)
4800 AC_SUBST(MOZ_ENABLE_QMSYSTEM2)
4801 AC_SUBST(MOZ_ENABLE_QTMOBILITY)
4802 AC_SUBST(MOZ_ENABLE_XREMOTE)
4803 AC_SUBST(MOZ_GTK2_CFLAGS)
4804 AC_SUBST(MOZ_GTK2_LIBS)
4805 AC_SUBST(MOZ_WIDGET_GTK)
4806 AC_SUBST(MOZ_QT_CFLAGS)
4807 AC_SUBST(MOZ_QT_LIBS)
4809 AC_SUBST(MOC)
4810 AC_SUBST(RCC)
4812 AC_SUBST(MOZ_X11)
4814 dnl ========================================================
4815 dnl =
4816 dnl = Components & Features
4817 dnl =
4818 dnl ========================================================
4819 MOZ_ARG_HEADER(Components and Features)
4821 dnl ========================================================
4822 dnl = Localization
4823 dnl ========================================================
4824 MOZ_ARG_ENABLE_STRING(ui-locale,
4825 [  --enable-ui-locale=ab-CD
4826                           Select the user interface locale (default: en-US)],
4827     MOZ_UI_LOCALE=$enableval )
4828 AC_SUBST(MOZ_UI_LOCALE)
4830 dnl ========================================================
4831 dnl = Trademarked Branding
4832 dnl ========================================================
4833 MOZ_ARG_ENABLE_BOOL(official-branding,
4834 [  --enable-official-branding
4835                           Enable Official mozilla.org Branding
4836                           Do not distribute builds with
4837                           --enable-official-branding unless you have
4838                           permission to use trademarks per
4839                           http://www.mozilla.org/foundation/trademarks/ .],
4841   if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
4842     AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
4843   else
4844     MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
4845     MOZ_OFFICIAL_BRANDING=1
4846   fi
4847 ], MOZ_OFFICIAL_BRANDING=)
4849 AC_SUBST(MOZ_OFFICIAL_BRANDING)
4850 if test -n "$MOZ_OFFICIAL_BRANDING"; then
4851   AC_DEFINE(MOZ_OFFICIAL_BRANDING)
4854 MOZ_ARG_WITH_STRING(branding,
4855 [  --with-branding=dir     Use branding from the specified directory.],
4856     MOZ_BRANDING_DIRECTORY=$withval)
4858 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4859 if test -z "$REAL_BRANDING_DIRECTORY"; then
4860   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4863 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4864   . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
4867 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4869 dnl ========================================================
4870 dnl = Distribution ID
4871 dnl ========================================================
4872 MOZ_ARG_WITH_STRING(distribution-id,
4873 [  --with-distribution-id=ID
4874                           Set distribution-specific id (default=org.mozilla)],
4875 [ val=`echo $withval`
4876     MOZ_DISTRIBUTION_ID="$val"])
4878 if test -z "$MOZ_DISTRIBUTION_ID"; then
4879    MOZ_DISTRIBUTION_ID="org.mozilla"
4882 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4883 AC_SUBST(MOZ_DISTRIBUTION_ID)
4886 dnl ========================================================
4887 dnl complex text support off by default
4888 dnl ========================================================
4889 MOZ_ARG_DISABLE_BOOL(pango,
4890 [  --disable-pango         Disable usage of Pango ],
4891     MOZ_PANGO=,
4892     MOZ_PANGO=1)
4894 dnl ========================================================
4895 dnl = Pango
4896 dnl ========================================================
4897 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
4898 then
4899     AC_SUBST(MOZ_PANGO)
4901     if test "$MOZ_PANGO"
4902     then
4903         PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4905         PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION)
4906         AC_SUBST(MOZ_PANGO_CFLAGS)
4907         AC_SUBST(MOZ_PANGO_LIBS)
4908         AC_DEFINE(MOZ_PANGO)
4909     else
4910         PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0)
4911         AC_SUBST(FT2_CFLAGS)
4912         AC_SUBST(FT2_LIBS)
4913     fi
4916 dnl ========================================================
4917 dnl = GnomeVFS, GIO and GConf support module
4918 dnl ========================================================
4920 if test "$MOZ_X11"
4921 then
4922     dnl build the GIO extension by default only when the
4923     dnl GTK2 toolkit is in use.
4924     if test "$MOZ_ENABLE_GTK2"
4925     then
4926         MOZ_ENABLE_GIO=1
4927         MOZ_ENABLE_GCONF=1
4928     fi
4930     dnl ========================================================
4931     dnl = GnomeVFS support module
4932     dnl ========================================================
4933     MOZ_ARG_ENABLE_BOOL(gnomevfs,
4934     [  --enable-gnomevfs       Enable GnomeVFS support (default: disabled)],
4935         MOZ_ENABLE_GNOMEVFS=force,
4936         MOZ_ENABLE_GNOMEVFS=)
4938     if test "$MOZ_ENABLE_GNOMEVFS"
4939     then
4940         PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
4941             MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
4942             MOZ_ENABLE_GNOMEVFS=1
4943             AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
4944         ],[
4945             if test "$MOZ_ENABLE_GNOMEVFS" = "force"
4946             then
4947                 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
4948             fi
4949             MOZ_ENABLE_GNOMEVFS=
4950         ])
4951     fi
4953     AC_SUBST(MOZ_ENABLE_GNOMEVFS)
4954     AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
4955     AC_SUBST(MOZ_GNOMEVFS_LIBS)
4957     dnl ========================================================
4958     dnl = GIO support module
4959     dnl ========================================================
4960     MOZ_ARG_DISABLE_BOOL(gio,
4961     [  --disable-gio           Disable GIO support],
4962         MOZ_ENABLE_GIO=,
4963         MOZ_ENABLE_GIO=force)
4965     if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK2"
4966     then
4967         PKG_CHECK_MODULES(_GTKCHECK, gtk+-2.0 >= 2.14, ,
4968                           [AC_MSG_ERROR([* * * Could not find gtk+-2.0 > 2.14. Required for build with gio.])])
4969         PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
4970             MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
4971             MOZ_ENABLE_GIO=1
4972             AC_DEFINE(MOZ_ENABLE_GIO)
4973         ],[
4974             if test "$MOZ_ENABLE_GIO" = "force"
4975             then
4976                 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
4977             fi
4978             MOZ_ENABLE_GIO=
4979         ])
4980     fi
4982     AC_SUBST(MOZ_ENABLE_GIO)
4983     AC_SUBST(MOZ_GIO_CFLAGS)
4984     AC_SUBST(MOZ_GIO_LIBS)
4986     dnl ========================================================
4987     dnl = GConf support module
4988     dnl ========================================================
4989     MOZ_ARG_DISABLE_BOOL(gconf,
4990     [  --disable-gconf      Disable Gconf support ],
4991         MOZ_ENABLE_GCONF=,
4992         MOZ_ENABLE_GCONF=force)
4994     if test "$MOZ_ENABLE_GCONF"
4995     then
4996         PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
4997             MOZ_GCONF_LIBS=`$PKG_CONFIG --libs gobject-2.0`
4998             MOZ_ENABLE_GCONF=1
4999         ],[
5000             if test "$MOZ_ENABLE_GCONF" = "force"
5001             then
5002                 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
5003             fi
5004             MOZ_ENABLE_GCONF=
5005         ])
5006     fi
5008     if test "$MOZ_ENABLE_GCONF"; then
5009         AC_DEFINE(MOZ_ENABLE_GCONF)
5010     fi
5012     AC_SUBST(MOZ_ENABLE_GCONF)
5013     AC_SUBST(MOZ_GCONF_CFLAGS)
5014     AC_SUBST(MOZ_GCONF_LIBS)
5017 dnl ========================================================
5018 dnl = libproxy support
5019 dnl ========================================================
5021 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5022 then
5023     MOZ_ENABLE_LIBPROXY=
5025     MOZ_ARG_ENABLE_BOOL(libproxy,
5026     [  --enable-libproxy         Enable libproxy support ],
5027     MOZ_ENABLE_LIBPROXY=1,
5028     MOZ_ENABLE_LIBPROXY=)
5030     if test "$MOZ_ENABLE_LIBPROXY"
5031     then
5032         PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
5033         AC_DEFINE(MOZ_ENABLE_LIBPROXY)
5034     fi
5036 AC_SUBST(MOZ_ENABLE_LIBPROXY)
5037 AC_SUBST(MOZ_LIBPROXY_CFLAGS)
5038 AC_SUBST(MOZ_LIBPROXY_LIBS)
5040 dnl ========================================================
5041 dnl = GNOME component (mozgnome)
5042 dnl ========================================================
5044 if test "$MOZ_ENABLE_GTK2"
5045 then
5046     MOZ_ENABLE_GNOME_COMPONENT=1
5048 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5050 dnl ========================================================
5051 dnl = libgnomeui support module
5052 dnl ========================================================
5054 if test "$MOZ_ENABLE_GTK2"
5055 then
5056     MOZ_ARG_ENABLE_BOOL(gnomeui,
5057     [  --enable-gnomeui        Enable libgnomeui instead of GIO & GTK for icon theme support ],
5058         MOZ_ENABLE_GNOMEUI=force,
5059         MOZ_ENABLE_GNOMEUI=)
5061     if test "$MOZ_ENABLE_GNOMEUI"
5062     then
5063         PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5064         [
5065             MOZ_ENABLE_GNOMEUI=1
5066         ],[
5067             if test "$MOZ_ENABLE_GNOMEUI" = "force"
5068             then
5069                 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5070             fi
5071             MOZ_ENABLE_GNOMEUI=
5072         ])
5073     fi
5075     if test "$MOZ_ENABLE_GNOMEUI"; then
5076         AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5077     fi
5080 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5081 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5083 dnl ========================================================
5084 dnl = dbus support
5085 dnl ========================================================
5087 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5088 then
5089     MOZ_ENABLE_DBUS=1
5091     MOZ_ARG_DISABLE_BOOL(dbus,
5092     [  --disable-dbus          Disable dbus support ],
5093         MOZ_ENABLE_DBUS=,
5094         MOZ_ENABLE_DBUS=1)
5096     if test "$MOZ_ENABLE_DBUS"
5097     then
5098         PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
5099         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5100         AC_DEFINE(MOZ_ENABLE_DBUS)
5101     fi
5103 AC_SUBST(MOZ_ENABLE_DBUS)
5104 AC_SUBST(MOZ_DBUS_CFLAGS)
5105 AC_SUBST(MOZ_DBUS_LIBS)
5106 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5107 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5109 dnl ========================================================
5110 dnl = Enable Android History instead of Places
5111 dnl ========================================================
5112 if test -n "$MOZ_ANDROID_HISTORY"; then
5113     if test -z "$MOZ_PLACES"; then
5114         AC_DEFINE(MOZ_ANDROID_HISTORY)
5115     else
5116         AC_MSG_ERROR([Cannot use MOZ_ANDROID_HISTORY alongside MOZ_PLACES.])
5117     fi
5120 dnl ========================================================
5121 dnl = Build with the Android compositor
5122 dnl ========================================================
5123 if test -n "$MOZ_ANDROID_OMTC"; then
5124      dnl Do this if defined in confvars.sh
5125      AC_DEFINE(MOZ_ANDROID_OMTC)
5128 dnl ========================================================
5129 dnl = Disable WebSMS backend
5130 dnl ========================================================
5131 MOZ_ARG_DISABLE_BOOL(websms-backend,
5132 [  --disable-websms-backend
5133                            Disable WebSMS backend],
5134     MOZ_WEBSMS_BACKEND=,
5135     MOZ_WEBSMS_BACKEND=1)
5137 if test -n "$MOZ_WEBSMS_BACKEND"; then
5138     AC_DEFINE(MOZ_WEBSMS_BACKEND)
5141 dnl ========================================================
5142 dnl = Enable SET_WALLPAPER permission on Android
5143 dnl ========================================================
5144 if test -n "$MOZ_ANDROID_WALLPAPER"; then
5145     AC_DEFINE(MOZ_ANDROID_WALLPAPER)
5148 dnl ========================================================
5149 dnl = Enable NFC permission on Android
5150 dnl ========================================================
5151 if test -n "$MOZ_ANDROID_BEAM"; then
5152     AC_DEFINE(MOZ_ANDROID_BEAM)
5155 dnl ========================================================
5156 dnl = Build Personal Security Manager
5157 dnl ========================================================
5158 MOZ_ARG_DISABLE_BOOL(crypto,
5159 [  --disable-crypto        Disable crypto support (Personal Security Manager)],
5160     MOZ_PSM=,
5161     MOZ_PSM=1 )
5163 dnl ========================================================
5164 dnl = JS Debugger XPCOM component (js/jsd)
5165 dnl ========================================================
5166 MOZ_ARG_DISABLE_BOOL(jsd,
5167 [  --disable-jsd           Disable JavaScript debug library],
5168     MOZ_JSDEBUGGER=,
5169     MOZ_JSDEBUGGER=1)
5172 dnl ========================================================
5173 dnl = Enable IPDL's "expensive" unit tests
5174 dnl ========================================================
5175 MOZ_IPDL_TESTS=
5177 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
5178 [  --enable-ipdl-tests     Enable expensive IPDL tests],
5179     MOZ_IPDL_TESTS=1,
5180     MOZ_IPDL_TESTS=)
5182 if test -n "$MOZ_IPDL_TESTS"; then
5183     AC_DEFINE(MOZ_IPDL_TESTS)
5186 AC_SUBST(MOZ_IPDL_TESTS)
5188 dnl ========================================================
5189 dnl = Disable building dbm
5190 dnl ========================================================
5191 MOZ_ARG_DISABLE_BOOL(dbm,
5192 [  --disable-dbm           Disable building dbm],
5193     NSS_DISABLE_DBM=1,
5194     NSS_DISABLE_DBM=)
5196 dnl bi-directional support always on
5197 IBMBIDI=1
5198 AC_DEFINE(IBMBIDI)
5200 dnl ========================================================
5201 dnl accessibility support on by default on all platforms
5202 dnl ========================================================
5203 MOZ_ARG_DISABLE_BOOL(accessibility,
5204 [  --disable-accessibility Disable accessibility support],
5205     ACCESSIBILITY=,
5206     ACCESSIBILITY=1 )
5207 if test "$ACCESSIBILITY"; then
5208     case "$target" in
5209     *-mingw*)
5210         if test -z "$MIDL"; then
5211             if test "$GCC" != "yes"; then
5212                 AC_MSG_ERROR([MIDL could not be found. Building accessibility without MIDL is not supported.])
5213             else
5214                 AC_MSG_ERROR([You have accessibility enabled, but widl could not be found. Add --disable-accessibility to your mozconfig or install widl. See https://developer.mozilla.org/en-US/docs/Cross_Compile_Mozilla_for_Mingw32 for details.])
5215             fi
5216         fi
5217     esac
5218     AC_DEFINE(ACCESSIBILITY)
5221 dnl ========================================================
5222 dnl Accessibility is required for the linuxgl widget
5223 dnl backend
5224 dnl ========================================================
5225 if test "${MOZ_WIDGET_TOOLKIT}" = "linuxgl" -a "$ACCESSIBILITY" != "1"; then
5226     AC_MSG_ERROR(["Accessibility is required for the linuxgl widget backend"])
5229 dnl ========================================================
5230 dnl Disable printing
5231 dnl ========================================================
5232 MOZ_ARG_DISABLE_BOOL(printing,
5233 [  --disable-printing      Disable printing support],
5234     NS_PRINTING=,
5235     NS_PRINTING=1)
5237 if test "$NS_PRINTING"; then
5238     AC_DEFINE(NS_PRINTING)
5239     AC_DEFINE(NS_PRINT_PREVIEW)
5242 dnl Turn off webrtc for OS's we don't handle yet, but allow 
5243 dnl --enable-webrtc to override.  Can disable for everything in
5244 dnl the master list above.
5245 if test -n "$MOZ_WEBRTC"; then
5246     case "$target" in
5247     *-linux*|*-mingw*|*-darwin*|*-android*|*-linuxandroid*)
5248         dnl Leave enabled
5249         ;;
5250     *)
5251         dnl default to disabled for all others
5252         MOZ_WEBRTC=
5253         ;;
5254     esac
5257 # target_arch is from {ia32|x64|arm|ppc}
5258 case "$CPU_ARCH" in
5259 x86_64 | ia64)
5260     WEBRTC_TARGET_ARCH=x64
5261     ;;
5263 arm*)
5264     WEBRTC_TARGET_ARCH=arm
5265     ;;
5267 x86)
5268     WEBRTC_TARGET_ARCH=ia32
5269     ;;
5271 ppc*)
5272     WEBRTC_TARGET_ARCH=ppc
5273     ;;
5275 # unsupported arch for webrtc
5276     WEBRTC_TARGET_ARCH=unknown
5277     MOZ_WEBRTC=
5278     ;;
5280 esac
5282 dnl ========================================================
5283 dnl = Disable WebRTC code
5284 dnl ========================================================
5285 MOZ_ARG_DISABLE_BOOL(webrtc,
5286 [  --disable-webrtc        Disable support for WebRTC],
5287     MOZ_WEBRTC=,
5288     MOZ_WEBRTC=1)
5290 if test -n "$MOZ_WEBRTC"; then
5291     AC_DEFINE(MOZ_WEBRTC)
5292     dnl MOZ_WEBRTC_ASSERT_ALWAYS turns on a number of safety asserts in
5293     dnl opt/production builds (via MOZ_CRASH())
5294     AC_DEFINE(MOZ_WEBRTC_ASSERT_ALWAYS)
5295     MOZ_RAW=1
5296     MOZ_VP8=1
5297     MOZ_VP8_ENCODER=1
5298     MOZ_VP8_ERROR_CONCEALMENT=1
5300 dnl enable once Signaling lands
5301     MOZ_WEBRTC_SIGNALING=1
5302     AC_DEFINE(MOZ_WEBRTC_SIGNALING)
5303     if test "${OS_TARGET}" = "WINNT"; then
5304         MOZ_WEBRTC_IN_LIBXUL=1
5305     fi
5306 dnl enable once PeerConnection lands
5307     MOZ_PEERCONNECTION=1
5308     AC_DEFINE(MOZ_PEERCONNECTION)
5309     MOZ_SCTP=1
5310     MOZ_SRTP=1
5311     AC_DEFINE(MOZ_SCTP)
5312     AC_DEFINE(MOZ_SRTP)
5315 AC_SUBST(MOZ_WEBRTC)
5316 AC_SUBST(MOZ_WEBRTC_LEAKING_TESTS)
5317 AC_SUBST(MOZ_WEBRTC_SIGNALING)
5318 AC_SUBST(MOZ_PEERCONNECTION)
5319 AC_SUBST(MOZ_WEBRTC_IN_LIBXUL)
5320 AC_SUBST(MOZ_WEBRTC_ASSERT_ALWAYS)
5321 AC_SUBST(MOZ_SCTP)
5322 AC_SUBST(MOZ_SRTP)
5324 case "$target_cpu" in
5325 arm*)
5326     MOZ_SAMPLE_TYPE_S16=1
5327     AC_DEFINE(MOZ_SAMPLE_TYPE_S16)
5328     AC_SUBST(MOZ_SAMPLE_TYPE_S16)
5331     MOZ_SAMPLE_TYPE_FLOAT32=1
5332     AC_DEFINE(MOZ_SAMPLE_TYPE_FLOAT32)
5333     AC_SUBST(MOZ_SAMPLE_TYPE_FLOAT32)
5335 esac
5337 dnl ========================================================
5338 dnl = Disable Speech API code
5339 dnl ========================================================
5340 MOZ_ARG_DISABLE_BOOL(webspeech,
5341 [  --disable-webspeech        Disable support for HTML Speech API],
5342     MOZ_WEBSPEECH=,
5343     MOZ_WEBSPEECH=1)
5345 if test -n "$MOZ_WEBSPEECH"; then
5346     AC_DEFINE(MOZ_WEBSPEECH)
5349 AC_SUBST(MOZ_WEBSPEECH)
5351 dnl ========================================================
5352 dnl = Enable Raw Codecs
5353 dnl ========================================================
5354 MOZ_ARG_ENABLE_BOOL(raw,
5355 [  --enable-raw           Enable support for RAW media],
5356     MOZ_RAW=1,
5357     MOZ_RAW=)
5359 if test -n "$MOZ_RAW"; then
5360     AC_DEFINE(MOZ_RAW)
5363 AC_SUBST(MOZ_RAW)
5365 dnl ========================================================
5366 dnl = Disable Ogg Codecs
5367 dnl ========================================================
5368 MOZ_ARG_DISABLE_BOOL(ogg,
5369 [  --disable-ogg           Disable support for OGG media (Theora video and Vorbis audio)],
5370     MOZ_OGG=,
5371     MOZ_OGG=1)
5373 if test -n "$MOZ_OGG"; then
5374     AC_DEFINE(MOZ_OGG)
5375     MOZ_CUBEB=1
5377     dnl Checks for __attribute__(aligned()) directive
5378     AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5379         [ac_cv_c_attribute_aligned],
5380         [ac_cv_c_attribute_aligned=0
5381          CFLAGS_save="${CFLAGS}"
5382          CFLAGS="${CFLAGS} -Werror"
5383          for ac_cv_c_attr_align_try in 64 32 16 8; do
5384            echo "trying $ac_cv_c_attr_align_try"
5385            AC_TRY_COMPILE([],
5386                           [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
5387                           [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
5388            if test "$ac_cv_c_attribute_aligned" != 0; then
5389              break;
5390            fi
5391          done
5392            CFLAGS="${CFLAGS_save}"])
5393     if test "${ac_cv_c_attribute_aligned}" != "0"; then
5394       AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
5395                          [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
5396     fi
5399 dnl ========================================================
5400 dnl = Disable Opus audio codec support
5401 dnl ========================================================
5402 MOZ_ARG_DISABLE_BOOL(opus,
5403 [  --disable-opus          Disable support for Opus audio],
5404     MOZ_OPUS=,
5405     MOZ_OPUS=1)
5407 dnl ========================================================
5408 dnl = Disable VP8 decoder support
5409 dnl ========================================================
5410 MOZ_ARG_DISABLE_BOOL(webm,
5411 [  --disable-webm          Disable support for WebM media (VP8 video and Vorbis audio)],
5412     MOZ_WEBM=,
5413     MOZ_WEBM=1)
5415 if test -n "$MOZ_WEBM"; then
5416     AC_DEFINE(MOZ_WEBM)
5417     MOZ_VP8=1
5420 dnl ========================================================
5421 dnl = Windows Media Foundation support
5422 dnl ========================================================
5423 if test "$OS_ARCH" = "WINNT"; then
5424     dnl Enable Windows Media Foundation support by default.
5425     dnl Note our minimum SDK version is Windows 7 SDK, so we are (currently)
5426     dnl guaranteed to have a recent-enough SDK to build WMF.
5427     MOZ_WMF=1
5430 MOZ_ARG_DISABLE_BOOL(wmf,
5431 [  --disable-wmf  Disable support for Windows Media Foundation],
5432     MOZ_WMF=,
5433     MOZ_WMF=1)
5435 if test -n "$MOZ_WMF"; then
5436     AC_DEFINE(MOZ_WMF)
5437     MOZ_CUBEB=1
5440 dnl ========================================================
5441 dnl = Enable media plugin support
5442 dnl ========================================================
5443 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5444   dnl Enable support on android by default
5445   MOZ_MEDIA_PLUGINS=1
5448 MOZ_ARG_ENABLE_BOOL(media-plugins,
5449 [  --enable-media-plugins  Enable support for media plugins],
5450     MOZ_MEDIA_PLUGINS=1,
5451     MOZ_MEDIA_PLUGINS=)
5453 if test -n "$MOZ_MEDIA_PLUGINS"; then
5454   AC_DEFINE(MOZ_MEDIA_PLUGINS)
5457 dnl ========================================================
5458 dnl = Enable getUserMedia support
5459 dnl ========================================================
5460 MOZ_ARG_ENABLE_BOOL(media-navigator,
5461 [  --enable-media-navigator  Enable support for getUserMedia],
5462     MOZ_MEDIA_NAVIGATOR=1,
5463     MOZ_MEDIA_NAVIGATOR=)
5465 if test -n "$MOZ_MEDIA_NAVIGATOR"; then
5466   AC_DEFINE(MOZ_MEDIA_NAVIGATOR)
5469 dnl ========================================================
5470 dnl = Enable building OMX media plugin (B2G or Android)
5471 dnl ========================================================
5472 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5473   dnl Enable support on android by default
5474   MOZ_OMX_PLUGIN=1
5477 MOZ_ARG_ENABLE_BOOL(omx-plugin,
5478 [  --enable-omx-plugin      Enable building OMX plugin (B2G)],
5479     MOZ_OMX_PLUGIN=1,
5480     MOZ_OMX_PLUGIN=)
5482 if test -n "$MOZ_OMX_PLUGIN"; then
5483     if test "$OS_TARGET" = "Android"; then
5484         dnl Only allow building OMX plugin on Gonk (B2G) or Android
5485         AC_DEFINE(MOZ_OMX_PLUGIN)
5486     else
5487        dnl fail if we're not building on Gonk or Android
5488        AC_MSG_ERROR([OMX media plugin can only be built on B2G or Android])
5489     fi
5492 dnl system libvpx Support
5493 dnl ========================================================
5494 MOZ_ARG_WITH_BOOL(system-libvpx,
5495 [  --with-system-libvpx    Use system libvpx (located with pkgconfig)],
5496     MOZ_NATIVE_LIBVPX=1)
5498 MOZ_LIBVPX_CFLAGS=
5499 MOZ_LIBVPX_LIBS=
5501 if test -n "$MOZ_VP8"; then
5502     AC_DEFINE(MOZ_VP8)
5503     if test -n "$MOZ_VP8_ERROR_CONCEALMENT" ; then
5504         AC_DEFINE(MOZ_VP8_ERROR_CONCEALMENT)
5505     fi
5506     if test -n "$MOZ_VP8_ENCODER" ; then
5507         AC_DEFINE(MOZ_VP8_ENCODER)
5508     fi
5510     if test -n "$MOZ_NATIVE_LIBVPX"; then
5511         dnl ============================
5512         dnl === libvpx Version check ===
5513         dnl ============================
5514         dnl Check to see if we have a system libvpx package.
5515         PKG_CHECK_MODULES(MOZ_LIBVPX, vpx >= 1.0.0)
5517         MOZ_CHECK_HEADER([vpx/vpx_decoder.h], [], 
5518          [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.])])
5520         _SAVE_LIBS=$LIBS
5521         AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver, [], 
5522          [AC_MSG_ERROR([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found])])
5523         LIBS=$_SAVE_LIBS
5524     fi
5527 AC_SUBST(MOZ_NATIVE_LIBVPX)
5528 AC_SUBST(MOZ_LIBVPX_CFLAGS)
5529 AC_SUBST(MOZ_LIBVPX_LIBS)
5531 if test "$MOZ_WEBM"; then
5532     MOZ_CUBEB=1
5533     if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then
5534         MOZ_VORBIS=1
5535     else
5536         MOZ_TREMOR=1
5537     fi
5540 if test -n "$MOZ_VP8" -a -z "$MOZ_NATIVE_LIBVPX"; then
5542     dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
5543     dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
5544     dnl We currently require gcc on all arm platforms.
5545     VPX_AS=$YASM
5546     VPX_ASM_SUFFIX=asm
5547     VPX_NEED_OBJ_INT_EXTRACT=
5549     dnl See if we have assembly on this platform.
5550     case "$OS_ARCH:$CPU_ARCH" in
5551     Darwin:x86)
5552       VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC"
5553       VPX_X86_ASM=1
5554     ;;
5555     Darwin:x86_64)
5556       VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC"
5557       VPX_X86_ASM=1
5558     ;;
5559     WINNT:x86_64)
5560       VPX_ASFLAGS="-f x64 -rnasm -pnasm"
5561       VPX_X86_ASM=1
5562     ;;
5563     WINNT:x86)
5564       dnl Check for yasm 1.1 or greater.
5565       if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then
5566         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.])
5567       elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
5568         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.])
5569       else
5570         VPX_ASFLAGS="-f win32 -rnasm -pnasm -DPIC"
5571         VPX_X86_ASM=1
5572         dnl The encoder needs obj_int_extract to get asm offsets.
5573       fi
5574     ;;
5575     *:arm*)
5576       if test -n "$GNU_AS" ; then
5577         VPX_AS=$AS
5578         dnl These flags are a lie; they're just used to enable the requisite
5579         dnl opcodes; actual arch detection is done at runtime.
5580         VPX_ASFLAGS="-march=armv7-a -mfpu=neon"
5581         VPX_DASH_C_FLAG="-c"
5582         VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl'
5583         VPX_ASM_SUFFIX="$ASM_SUFFIX"
5584         VPX_ARM_ASM=1
5585       fi
5586     ;;
5587     *:x86)
5588       if $CC -E -dM -</dev/null | grep -q __ELF__; then
5589         VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
5590         VPX_X86_ASM=1
5591       fi
5592     ;;
5593     *:x86_64)
5594       if $CC -E -dM -</dev/null | grep -q __ELF__; then
5595         VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
5596         VPX_X86_ASM=1
5597       fi
5598     ;;
5599     esac
5601     if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_X86_ASM" -a -z "$VPX_AS"; then
5602       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.])
5603     fi
5605     if test -n "$MOZ_VP8_ENCODER" -a \
5606             -z "$GNU_CC" -a -z "$INTEL_CC" -a -z "$CLANG_CC" ; then
5607       dnl We prefer to get asm offsets using inline assembler, which the above
5608       dnl compilers can do. When we're not using one of those, we have to fall
5609       dnl back to obj_int_extract, which reads them from a compiled object
5610       dnl file. Unfortunately, that only works if we're compiling on a system
5611       dnl with the header files for the appropriate object file format.
5612       VPX_NEED_OBJ_INT_EXTRACT=1
5613     fi
5615     if test -n "$VPX_X86_ASM"; then
5616       AC_DEFINE(VPX_X86_ASM)
5617     elif test -n "$VPX_ARM_ASM"; then
5618       AC_DEFINE(VPX_ARM_ASM)
5619     else
5620       AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.])
5621     fi
5624 dnl ========================================================
5625 dnl = Disable Wave decoder support
5626 dnl ========================================================
5627 MOZ_ARG_DISABLE_BOOL(wave,
5628 [  --disable-wave          Disable Wave decoder support],
5629     MOZ_WAVE=,
5630     MOZ_WAVE=1)
5632 if test -n "$MOZ_WAVE"; then
5633     AC_DEFINE(MOZ_WAVE)
5634     MOZ_CUBEB=1
5637 dnl ========================================================
5638 dnl = Handle dependent CUBEB and MEDIA defines
5639 dnl ========================================================
5641 if test -n "$MOZ_SPEEX_RESAMPLER"; then
5642     AC_DEFINE(MOZ_SPEEX_RESAMPLER)
5645 if test -n "$MOZ_SOUNDTOUCH"; then
5646     AC_DEFINE(MOZ_SOUNDTOUCH)
5649 if test -n "$MOZ_CUBEB"; then
5650     AC_DEFINE(MOZ_CUBEB)
5653 if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then
5654     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/])
5657 if test -n "$MOZ_VORBIS"; then
5658     AC_DEFINE(MOZ_VORBIS)
5661 if test -n "$MOZ_TREMOR"; then
5662     AC_DEFINE(MOZ_TREMOR)
5665 if test -n "$MOZ_OPUS"; then
5666     AC_DEFINE(MOZ_OPUS)
5669 dnl ========================================================
5670 dnl = Check alsa availability on Linux if using sydneyaudio
5671 dnl ========================================================
5673 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
5674 if test -n "$MOZ_CUBEB" -a "$OS_TARGET" = "Linux"; then
5675     MOZ_ALSA=1
5678 MOZ_ARG_ENABLE_BOOL(alsa,
5679 [  --enable-alsa          Enable Alsa support (default on Linux)],
5680 MOZ_ALSA=1,
5681 MOZ_ALSA=)
5683 if test -n "$MOZ_ALSA"; then
5684     AC_DEFINE(MOZ_CUBEB)
5685     PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
5686          [echo "$MOZ_ALSA_PKG_ERRORS"
5687           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.)])])
5690 AC_SUBST(MOZ_ALSA)
5691 AC_SUBST(MOZ_ALSA_CFLAGS)
5692 AC_SUBST(MOZ_ALSA_LIBS)
5694 dnl ========================================================
5695 dnl = Enable PulseAudio
5696 dnl ========================================================
5698 MOZ_ARG_ENABLE_BOOL(pulseaudio,
5699 [  --enable-pulseaudio          Enable PulseAudio support (experimental)],
5700 MOZ_PULSEAUDIO=1,
5701 MOZ_PULSEAUDIO=)
5703 if test -n "$MOZ_PULSEAUDIO"; then
5704     AC_DEFINE(MOZ_CUBEB)
5705     PKG_CHECK_MODULES(MOZ_PULSEAUDIO, libpulse, ,
5706          [echo "$MOZ_PULSEAUDIO_PKG_ERRORS"
5707           AC_MSG_ERROR([pulseaudio audio backend requires libpulse package])])
5710 AC_SUBST(MOZ_PULSEAUDIO)
5711 AC_SUBST(MOZ_PULSEAUDIO_CFLAGS)
5712 AC_SUBST(MOZ_PULSEAUDIO_LIBS)
5714 dnl ========================================================
5715 dnl = Enable GStreamer
5716 dnl ========================================================
5717 MOZ_ARG_ENABLE_BOOL(gstreamer,
5718 [  --enable-gstreamer           Enable GStreamer support],
5719 MOZ_GSTREAMER=1,
5720 MOZ_GSTREAMER=)
5722 if test "$MOZ_GSTREAMER"; then
5723     # API version, eg 0.10, 1.0 etc
5724     GST_API_VERSION=0.10
5725     # core/base release number
5726     GST_VERSION=0.10.25
5727     PKG_CHECK_MODULES(GSTREAMER,
5728                       gstreamer-$GST_API_VERSION >= $GST_VERSION
5729                       gstreamer-app-$GST_API_VERSION
5730                       gstreamer-plugins-base-$GST_API_VERSION)
5731     if test -n "$GSTREAMER_LIBS"; then
5732        _SAVE_LDFLAGS=$LDFLAGS
5733        LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5734        AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=)
5735        if test -n "$_HAVE_LIBGSTVIDEO" ; then
5736           GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5737        else
5738           AC_MSG_ERROR([gstreamer video backend requires libgstvideo])
5739        fi
5740        LDFLAGS=$_SAVE_LDFLAGS
5741     else
5742        AC_MSG_ERROR([gstreamer backend requires the gstreamer packages])
5743     fi
5745 AC_SUBST(GSTREAMER_CFLAGS)
5746 AC_SUBST(GSTREAMER_LIBS)
5747 AC_SUBST(MOZ_GSTREAMER)
5749 if test -n "$MOZ_GSTREAMER"; then
5750    AC_DEFINE(MOZ_GSTREAMER)
5754 dnl ========================================================
5755 dnl Permissions System
5756 dnl ========================================================
5757 MOZ_ARG_DISABLE_BOOL(permissions,
5758 [  --disable-permissions   Disable permissions (popup and cookie blocking)],
5759     MOZ_PERMISSIONS=,
5760     MOZ_PERMISSIONS=1
5763 dnl ========================================================
5764 dnl NegotiateAuth
5765 dnl ========================================================
5766 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5767 [  --disable-negotiateauth Disable GSS-API negotiation ],
5768     MOZ_AUTH_EXTENSION=,
5769     MOZ_AUTH_EXTENSION=1 )
5771 dnl ========================================================
5772 dnl Pref extensions (autoconfig)
5773 dnl ========================================================
5774 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5775 [  --disable-pref-extensions
5776                           Disable pref extensions such as autoconfig],
5777   MOZ_PREF_EXTENSIONS=,
5778   MOZ_PREF_EXTENSIONS=1 )
5780 dnl ========================================================
5781 dnl Searching of system directories for extensions.
5782 dnl Note: this switch is meant to be used for test builds
5783 dnl whose behavior should not depend on what happens to be
5784 dnl installed on the local machine.
5785 dnl ========================================================
5786 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
5787 [  --disable-system-extension-dirs
5788                           Disable searching system- and account-global
5789                           directories for extensions of any kind; use
5790                           only profile-specific extension directories],
5791   ENABLE_SYSTEM_EXTENSION_DIRS=,
5792   ENABLE_SYSTEM_EXTENSION_DIRS=1 )
5793 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
5794   AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
5797 dnl ========================================================
5798 dnl = Universalchardet
5799 dnl ========================================================
5800 MOZ_ARG_DISABLE_BOOL(universalchardet,
5801 [  --disable-universalchardet
5802                           Disable universal encoding detection],
5803   MOZ_UNIVERSALCHARDET=,
5804   MOZ_UNIVERSALCHARDET=1 )
5806 if test -n "${JAVA_BIN_PATH}"; then
5807   dnl Look for javac and jar in the specified path.
5808   JAVA_PATH="$JAVA_BIN_PATH"
5809 else
5810   dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5811   JAVA_PATH="$JAVA_HOME/bin:$PATH"
5814 MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5815 MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5816 MOZ_PATH_PROG(JAVAH, javah, :, [$JAVA_PATH])
5817 MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5819 if test -n "${JAVA_BIN_PATH}" -o \
5820   \( "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk" \); then
5821   if test -z "$JAVA" -o "$JAVA" = ":" -o -z "$JAVAC" -o "$JAVAC" = ":" -o -z "$JAVAH" -o "$JAVAH" = ":" -o -z "$JAR" -o "$JAR" = ":"; then
5822     AC_MSG_ERROR([The programs java, javac, javah and jar were not found.  Set \$JAVA_HOME to your java sdk directory or use --with-java-bin-path={java-bin-dir}])
5823   fi
5826 dnl ========================================================
5827 dnl = ANGLE OpenGL->D3D translator for WebGL
5828 dnl = * only applies to win32
5829 dnl = * enabled by default (shipping build); requires explicit --disable to disable
5830 dnl ========================================================
5831 MOZ_ANGLE_RENDERER=
5832 MOZ_DIRECTX_SDK_PATH=
5833 MOZ_DIRECTX_SDK_CPU_SUFFIX=
5834 MOZ_D3DCOMPILER_CAB=
5835 MOZ_D3DCOMPILER_DLL=
5836 case "$target_os" in
5837 *mingw*)
5838     MOZ_ANGLE_RENDERER=1
5839     ;;
5840 esac
5842 # The DirectX SDK libraries are split into x86 and x64 sub-directories
5843 case "${target_cpu}" in
5844 i*86)
5845   MOZ_DIRECTX_SDK_CPU_SUFFIX=x86
5846   ;;
5847 x86_64)
5848   MOZ_DIRECTX_SDK_CPU_SUFFIX=x64
5849   ;;
5850 esac
5852 MOZ_ARG_DISABLE_BOOL(webgl,
5853 [  --disable-webgl     Disable building of the WebGL implementation],
5854     MOZ_WEBGL_DISABLED=1,
5855     MOZ_WEBGL_DISABLED=)
5857 if test -n "$MOZ_WEBGL_DISABLED"; then
5858   MOZ_WEBGL=
5859   MOZ_ANGLE_RENDERER=
5862 # Locate a DirectX SDK here so we can use it for both ANGLE and
5863 # Joystick support.
5864 if test "$OS_TARGET" = "WINNT" -a -z "$CROSS_COMPILE"; then
5865   # Get the SDK path from the registry.
5866   # First try to get the June 2010 SDK
5867   MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1`
5868   if test -z "$MOZ_DIRECTX_SDK_REG_KEY" ; then
5869     # Otherwise just take whatever comes first
5870     MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1`
5871   fi
5872   MOZ_DIRECTX_SDK_PATH=`reg query "$MOZ_DIRECTX_SDK_REG_KEY" //v InstallPath | grep REG_SZ | sed 's/.*\([[a-zA-Z]]\)\\:\\\\/\\1\\:\\\\/' | sed 's,\\\\,/,g'`
5875 if test -n "$MOZ_ANGLE_RENDERER" -a -z "$CROSS_COMPILE"; then
5876   if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then
5877     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.])
5878   fi
5880   if test -n "$MOZ_DIRECTX_SDK_PATH" &&
5881      test -f "$MOZ_DIRECTX_SDK_PATH"/include/d3dx9.h &&
5882          test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_DIRECTX_SDK_CPU_SUFFIX/dxguid.lib ; then
5883     AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH])
5884   else
5885     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.])
5886   fi
5888   # Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib
5889   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'`
5891   if test -z "$MOZ_D3DX9_VERSION" ; then
5892         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.])
5893   fi
5895   MOZ_D3DCOMPILER_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_DIRECTX_SDK_CPU_SUFFIX}.cab | head -n1`
5897   if test -z "$MOZ_D3DCOMPILER_CAB"; then
5898     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.])
5899   fi
5901   MOZ_D3DCOMPILER_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll
5904 dnl ========================================================
5905 dnl Gamepad support
5906 dnl ========================================================
5907 MOZ_GAMEPAD=
5908 MOZ_GAMEPAD_BACKEND=stub
5910 # Gamepad DOM is built on supported platforms by default.
5911 case "$OS_TARGET" in
5912      Darwin|WINNT|Linux)
5913        MOZ_GAMEPAD=1
5914        ;;
5915      *)
5916        ;;
5917 esac
5919 MOZ_ARG_DISABLE_BOOL(gamepad,
5920 [  --disable-gamepad   Disable gamepad support],
5921     MOZ_GAMEPAD=,
5922     MOZ_GAMEPAD=1)
5924 if test "$MOZ_GAMEPAD"; then
5925     case "$OS_TARGET" in
5926     Darwin)
5927         MOZ_GAMEPAD_BACKEND=cocoa
5928         ;;
5929     WINNT)
5930         if test -n "$MOZ_DIRECTX_SDK_PATH" ; then
5931             if ! test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_DIRECTX_SDK_CPU_SUFFIX/dxguid.lib ; then
5932                MOZ_GAMEPAD=
5933             fi
5934         elif test "$GCC" != "yes"; then
5935             MOZ_GAMEPAD=
5936         fi
5937         if test -z "$MOZ_GAMEPAD"; then
5938            AC_MSG_ERROR([Couldn't find the DirectX SDK, needed for gamepad support. Please install it or, reconfigure with --disable-gamepad to disable gamepad support.])
5939         fi
5940         MOZ_GAMEPAD_BACKEND=windows
5941         ;;
5942     Linux)
5943         MOZ_CHECK_HEADER([linux/joystick.h])
5944         if test "$ac_cv_header_linux_joystick_h" != "yes"; then
5945           AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers or reconfigure with --disable-gamepad to disable gamepad support.])
5946         fi
5947         MOZ_GAMEPAD_BACKEND=linux
5948         ;;
5949     *)
5950         ;;
5951    esac
5953   AC_DEFINE(MOZ_GAMEPAD)
5955 AC_SUBST(MOZ_GAMEPAD)
5956 AC_SUBST(MOZ_GAMEPAD_BACKEND)
5958 dnl ========================================================
5959 dnl = Breakpad crash reporting (on by default on supported platforms)
5960 dnl ========================================================
5962 case $target in
5963 i?86-*-mingw*|x86_64-*-mingw*)
5964   MOZ_CRASHREPORTER=1
5965   ;;
5966 i?86-apple-darwin*|x86_64-apple-darwin*)
5967   MOZ_CRASHREPORTER=1
5968   ;;
5969 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
5970   if test "$MOZ_ENABLE_GTK2"; then
5971     MOZ_CRASHREPORTER=1
5972   fi
5973   ;;
5974 *-android*|*-linuxandroid*)
5975   MOZ_CRASHREPORTER=1
5976   ;;
5977 *solaris*)
5978   MOZ_CRASHREPORTER=1
5979   ;;
5980 esac
5982 MOZ_ARG_DISABLE_BOOL(crashreporter,
5983 [  --disable-crashreporter Disable breakpad crash reporting],
5984     MOZ_CRASHREPORTER=,
5985     MOZ_CRASHREPORTER=1)
5987 if test -n "$MOZ_CRASHREPORTER"; then
5988    AC_DEFINE(MOZ_CRASHREPORTER)
5990   if test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS" && \
5991     test -z "$SKIP_LIBRARY_CHECKS"; then
5992     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5993     AC_SUBST(MOZ_GTHREAD_CFLAGS)
5994     AC_SUBST(MOZ_GTHREAD_LIBS)
5995   fi
5997   if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT"; then
5998     AC_MSG_ERROR([Breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.  Use --disable-crashreporter.])
5999   fi
6001   if test "$OS_ARCH" = "WINNT"; then
6002     if test -z "$HAVE_64BIT_OS"; then
6003       MOZ_CRASHREPORTER_INJECTOR=1
6004       AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
6005     fi
6006   fi
6008 AC_DEFINE_UNQUOTED(BREAKPAD_CUSTOM_STDINT_H, "mozilla/StandardInteger.h")
6010 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
6011 [  --with-crashreporter-enable-percent=NN
6012                           Enable sending crash reports by default on NN% of users. (default=100)],
6013 [ val=`echo $withval | sed 's/[^0-9]//g'`
6014     MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
6016 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
6017    MOZ_CRASHREPORTER_ENABLE_PERCENT=100
6019 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
6021 dnl ========================================================
6022 dnl = libjpeg-turbo configuration
6023 dnl ========================================================
6024 MOZ_LIBJPEG_TURBO=
6025 if test -z "$MOZ_NATIVE_JPEG"; then
6026     MOZ_LIBJPEG_TURBO=1
6029 MOZ_ARG_DISABLE_BOOL(libjpeg_turbo,
6030 [ --disable-libjpeg-turbo  Disable optimized jpeg decoding routines],
6031     MOZ_LIBJPEG_TURBO=,
6032     MOZ_LIBJPEG_TURBO=1)
6034 if test "$MOZ_NATIVE_JPEG" = 1 -a "$MOZ_LIBJPEG_TURBO" = 1; then
6035     AC_MSG_ERROR([cannot use --with-system-jpeg with --enable-libjpeg-turbo.])
6038 dnl Detect if we can use yasm to compile libjpeg-turbo's optimized assembly
6039 dnl files.
6041 if test -n "$MOZ_LIBJPEG_TURBO"; then
6043   dnl Do we support libjpeg-turbo on this platform?
6044   case "$OS_ARCH:$OS_TEST" in
6045   Darwin:i?86)
6046     LIBJPEG_TURBO_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC -DMACHO"
6047     LIBJPEG_TURBO_X86_ASM=1
6048   ;;
6049   Darwin:x86_64)
6050     LIBJPEG_TURBO_ASFLAGS="-f macho64 -rnasm -pnasm -D__x86_64__ -DPIC -DMACHO"
6051     LIBJPEG_TURBO_X64_ASM=1
6052   ;;
6053   WINNT:x86|WINNT:i?86)
6054     LIBJPEG_TURBO_ASFLAGS="-f win32 -rnasm -pnasm -DPIC -DWIN32"
6055     LIBJPEG_TURBO_X86_ASM=1
6056   ;;
6057   WINNT:x86_64)
6058     LIBJPEG_TURBO_ASFLAGS="-f win64 -rnasm -pnasm -D__x86_64__ -DPIC -DWIN64 -DMSVC"
6059     LIBJPEG_TURBO_X64_ASM=1
6060   ;;
6061   *:arm*)
6062     LIBJPEG_TURBO_ASFLAGS="-march=armv7-a -mfpu=neon"
6063     LIBJPEG_TURBO_ARM_ASM=1
6064   ;;
6065   *:x86|*:i?86)
6066     if $CC -E -dM -</dev/null | grep -q __ELF__; then
6067       LIBJPEG_TURBO_ASFLAGS="-f elf32 -rnasm -pnasm -DPIC -DELF"
6068       LIBJPEG_TURBO_X86_ASM=1
6069     fi
6070   ;;
6071   *:x86_64)
6072     if $CC -E -dM -</dev/null | grep -q __ELF__; then
6073       LIBJPEG_TURBO_ASFLAGS="-f elf64 -rnasm -pnasm -D__x86_64__ -DPIC -DELF"
6074       LIBJPEG_TURBO_X64_ASM=1
6075     fi
6076   ;;
6077   esac
6081 dnl If we're on an x86 or x64 system which supports libjpeg-turbo's asm routines
6082 dnl and --disable-libjpeg-turbo wasn't passed, check for Yasm, and error out if
6083 dnl it doesn't exist or we have too old of a version.
6084 if test -n "$LIBJPEG_TURBO_X86_ASM" -o -n "$LIBJPEG_TURBO_X64_ASM" ; then
6085     LIBJPEG_TURBO_AS=$YASM
6087     if test -z "$LIBJPEG_TURBO_AS" ; then
6088         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.])
6089     fi
6091     dnl Check that we have the right yasm version.  We require 1.0.1 or newer
6092     dnl on Linux and 1.1 or newer everywhere else.
6093     if test "$OS_ARCH" = "Linux" ; then
6094         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
6095             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.])
6096         fi
6097     else
6098         if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
6099             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.])
6100         fi
6101     fi
6104 dnl If we're on an ARM system which supports libjpeg-turbo's asm routines and
6105 dnl --disable-libjpeg-turbo wasn't passed, use the C compiler as the assembler.
6106 if test -n "$LIBJPEG_TURBO_ARM_ASM" ; then
6107     echo "Using $AS as the assembler for ARM code."
6108     LIBJPEG_TURBO_AS=$AS
6111 if test -n "$LIBJPEG_TURBO_X86_ASM"; then
6112     AC_DEFINE(LIBJPEG_TURBO_X86_ASM)
6113 elif test -n "$LIBJPEG_TURBO_X64_ASM"; then
6114     AC_DEFINE(LIBJPEG_TURBO_X64_ASM)
6115 elif test -n "$LIBJPEG_TURBO_ARM_ASM"; then
6116     AC_DEFINE(LIBJPEG_TURBO_ARM_ASM)
6117 elif test -n "$MOZ_LIBJPEG_TURBO"; then
6118     dnl Warn if we're not building the optimized routines, even though the user
6119     dnl didn't specify --disable-libjpeg-turbo.
6120     AC_MSG_WARN([No assembler or assembly support for libjpeg-turbo.  Using unoptimized C routines.])
6123 dnl ========================================================
6124 dnl = Enable compilation of specific extension modules
6125 dnl ========================================================
6127 MOZ_ARG_ENABLE_STRING(extensions,
6128 [  --enable-extensions     Enable extensions],
6129 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6130     if test "$option" = "yes" -o "$option" = "all"; then
6131         AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6132     elif test "$option" = "no" -o "$option" = "none"; then
6133         MOZ_EXTENSIONS=""
6134     elif test "$option" = "default"; then
6135         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6136     elif test `echo "$option" | grep -c \^-` != 0; then
6137         option=`echo $option | sed 's/^-//'`
6138         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6139     else
6140         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6141     fi
6142 done],
6143     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6145 if test -z "$MOZ_ENABLE_GNOMEVFS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6146     # Suppress warning on non-X11 platforms
6147     if test -n "$MOZ_X11"; then
6148         AC_MSG_WARN([Removing gnomevfs from MOZ_EXTENSIONS due to no --enable-gnomevfs.])
6149     fi
6150     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6153 dnl Do not build gnomevfs with libxul based apps
6154 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6155     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6158 if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6159     # Suppress warning on non-X11 platforms
6160     if test -n "$MOZ_X11"; then
6161         AC_MSG_WARN([Removing gio from MOZ_EXTENSIONS due to --disable-gio.])
6162     fi
6163     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6166 dnl Do not build gio with libxul based apps
6167 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6168     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6171 if test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6172     MOZ_GIO_COMPONENT=1
6173     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6175 AC_SUBST(MOZ_GIO_COMPONENT)
6177 if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6178     AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6179     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6182 dnl Remove dupes
6183 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6185 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6186 dnl when trying to build a nonexistent extension.
6187 for extension in $MOZ_EXTENSIONS; do
6188     if test ! -d "${srcdir}/extensions/${extension}"; then
6189         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6190     fi
6191 done
6193 if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
6194   AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
6197 dnl ========================================================
6198 dnl CSS3 Flexbox Support
6199 dnl ========================================================
6200 if test -n "$MOZ_FLEXBOX"; then
6201   AC_DEFINE(MOZ_FLEXBOX)
6204 dnl ========================================================
6205 dnl Build Freetype in the tree
6206 dnl ========================================================
6207 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6208 [  --enable-tree-freetype  Enable Tree FreeType],
6209     MOZ_TREE_FREETYPE=1,
6210     MOZ_TREE_FREETYPE= )
6211 if test -n "$MOZ_TREE_FREETYPE"; then
6212    if test -n "$_WIN32_MSVC"; then
6213       AC_ERROR("building with in-tree freetype is not supported on MSVC")
6214    fi
6215    AC_DEFINE(MOZ_TREE_FREETYPE)
6216    AC_SUBST(MOZ_TREE_FREETYPE)
6217    MOZ_ENABLE_CAIRO_FT=1
6218    FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6219    FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6220    CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6221    FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6222    CAIRO_FT_OSLIBS=''
6223    CAIRO_FT_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6224    AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6225    AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6226    AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6227    AC_SUBST(CAIRO_FT_CFLAGS)
6230 dnl ========================================================
6231 dnl Installer
6232 dnl ========================================================
6233 dnl Abort Windows build if the required major version and
6234 dnl minimum minor version of Unicode NSIS isn't in the path
6235 dnl (unless in case of cross compiling, for which Unicode
6236 dnl is not yet sufficient).
6237 if test "$OS_ARCH" = "WINNT"; then
6238     REQ_NSIS_MAJOR_VER=2
6239     MIN_NSIS_MINOR_VER=46
6240     MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensisu-2.46 makensis)
6241     if test -n "$MAKENSISU" -a "$MAKENSISU" != ":"; then
6242       AC_MSG_RESULT([yes])
6243       changequote(,)
6244       MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\).*\-Unicode$/\1/g'`
6245       changequote([,])
6246       if test ! "$MAKENSISU_VER" = ""; then
6247           MAKENSISU_MAJOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $1 }'`
6248           MAKENSISU_MINOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $2 }'`
6249       fi
6250       AC_MSG_CHECKING([for Unicode NSIS with major version == $REQ_NSIS_MAJOR_VER and minor version >= $MIN_NSIS_MINOR_VER])
6251       if test "$MAKENSISU_VER" = "" || \
6252          test ! "$MAKENSISU_MAJOR_VER" = "$REQ_NSIS_MAJOR_VER" -o \
6253               ! "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER; then
6254           AC_MSG_RESULT([no])
6255           if test -z "$CROSS_COMPILE"; then
6256             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.])
6257           else
6258             MAKENSISU=
6259           fi
6260       fi
6261     elif test -z "$CROSS_COMPILE"; then
6262       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.])
6263     else
6264       MAKENSISU=
6265     fi
6268 dnl ========================================================
6269 dnl Web App Runtime
6270 dnl ========================================================
6271 MOZ_ARG_DISABLE_BOOL(webapp-runtime,
6272 [  --disable-webapp-runtime  Disable Web App Runtime],
6273     MOZ_WEBAPP_RUNTIME=,
6274     MOZ_WEBAPP_RUNTIME=1)
6275 if test "$MOZ_WIDGET_TOOLKIT" != "windows" -a "$MOZ_WIDGET_TOOLKIT" != "cocoa" -a "$MOZ_WIDGET_TOOLKIT" != "gtk2"; then
6276     MOZ_WEBAPP_RUNTIME=
6278 if test "$OS_ARCH" = "WINNT" -a -z "$MAKENSISU" -a -n "$CROSS_COMPILE"; then
6279     MOZ_WEBAPP_RUNTIME=
6281 AC_SUBST(MOZ_WEBAPP_RUNTIME)
6282 if test "$MOZ_WEBAPP_RUNTIME"; then
6283     AC_DEFINE(MOZ_WEBAPP_RUNTIME)
6286 AC_MSG_CHECKING([for tar archiver])
6287 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6288 if test -z "$TAR"; then
6289     AC_MSG_ERROR([no tar archiver found in \$PATH])
6291 AC_MSG_RESULT([$TAR])
6292 AC_SUBST(TAR)
6294 AC_MSG_CHECKING([for wget])
6295 AC_CHECK_PROGS(WGET, wget, "")
6296 AC_MSG_RESULT([$WGET])
6297 AC_SUBST(WGET)
6299 dnl ========================================================
6300 dnl Signing
6301 dnl ========================================================
6303 if test -n "$MOZ_SIGN_CMD"; then
6304     AC_DEFINE(MOZ_SIGNING)
6307 dnl ========================================================
6308 dnl Maintenance Service
6309 dnl ========================================================
6311 MOZ_ARG_ENABLE_BOOL(maintenance-service,
6312 [  --enable-maintenance-service       Enable building of maintenanceservice],
6313     MOZ_MAINTENANCE_SERVICE=1,
6314     MOZ_MAINTENANCE_SERVICE= )
6316 if test -n "$MOZ_MAINTENANCE_SERVICE"; then
6317   if test "$OS_ARCH" = "WINNT"; then
6318     AC_DEFINE(MOZ_MAINTENANCE_SERVICE)
6319   else
6320     AC_MSG_ERROR([Can only build with --enable-maintenance-service with a Windows target])
6321   fi
6324 dnl ========================================================
6325 dnl Verify MAR signatures
6326 dnl ========================================================
6328 MOZ_ARG_ENABLE_BOOL(verify-mar,
6329 [  --enable-verify-mar     Enable verifying MAR signatures],
6330     MOZ_VERIFY_MAR_SIGNATURE=1,
6331     MOZ_VERIFY_MAR_SIGNATURE= )
6333 if test -n "$MOZ_VERIFY_MAR_SIGNATURE"; then
6334   if test "$OS_ARCH" = "WINNT"; then
6335     AC_DEFINE(MOZ_VERIFY_MAR_SIGNATURE)
6336   else
6337     AC_MSG_ERROR([Can only build with --enable-verify-mar with a Windows target])
6338   fi
6341 dnl ========================================================
6342 dnl Enable building the signmar program.
6343 dnl This option is much different than the --enable-verify-mar option.
6344 dnl --enable-verify-mar is for enabling the verification check on MAR
6345 dnl files in the updater.  The --enable-signmar option is for building
6346 dnl the signmar program.
6347 dnl ========================================================
6349 MOZ_ARG_ENABLE_BOOL(signmar,
6350 [  --enable-signmar     Enable building the signmar program],
6351     MOZ_ENABLE_SIGNMAR=1,
6352     MOZ_ENABLE_SIGNMAR= )
6354 if test -n "$MOZ_ENABLE_SIGNMAR"; then
6355   AC_DEFINE(MOZ_ENABLE_SIGNMAR)
6358 dnl ========================================================
6359 dnl Updater
6360 dnl ========================================================
6362 MOZ_ARG_DISABLE_BOOL(updater,
6363 [  --disable-updater       Disable building of updater],
6364     MOZ_UPDATER=,
6365     MOZ_UPDATER=1 )
6367 if test -n "$MOZ_UPDATER"; then
6368     AC_DEFINE(MOZ_UPDATER)
6371 # tools/update-packaging is not checked out by default.
6372 MOZ_ARG_ENABLE_BOOL(update-packaging,
6373 [  --enable-update-packaging
6374                           Enable tools/update-packaging],
6375     MOZ_UPDATE_PACKAGING=1,
6376     MOZ_UPDATE_PACKAGING= )
6377 AC_SUBST(MOZ_UPDATE_PACKAGING)
6379 dnl ========================================================
6380 dnl build the tests by default
6381 dnl ========================================================
6382 MOZ_ARG_DISABLE_BOOL(tests,
6383 [  --disable-tests         Do not build test libraries & programs],
6384     ENABLE_TESTS=,
6385     ENABLE_TESTS=1 )
6387 # Currently GTest is linked into libxul. This means it must be off by default.
6388 # Follow up will be to generate libxul.so and libxul-test.so to let GTest
6389 # be compiled along with ENABLE_TESTS
6390 MOZ_ARG_ENABLE_BOOL(gtest,
6391 [  --enable-gtest
6392                           Enable GTest libxul unit test.],
6393     MOZ_ENABLE_GTEST=1,
6394     MOZ_ENABLE_GTEST= )
6396 if test -n "$MOZ_ENABLE_GTEST"; then
6397     if test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin" -o "${OS_TARGET}" = "Linux" -o "${OS_TARGET}" = "Android"; then
6398         MOZ_ENABLE_GTEST=1
6399         GTEST_HAS_RTTI=0
6400         AC_DEFINE(MOZ_ENABLE_GTEST)
6401         AC_DEFINE_UNQUOTED(GTEST_HAS_RTTI, 0)
6402         AC_SUBST(MOZ_ENABLE_GTEST)
6403         AC_SUBST(GTEST_HAS_RTTI)
6404     else
6405         AC_MSG_ERROR([Cannot build with --enable-gtest on this platform.])
6406     fi
6407     if test "${OS_TARGET}" = "Android"; then
6408         AC_DEFINE(GTEST_OS_LINUX_ANDROID)
6409         AC_DEFINE(GTEST_USE_OWN_TR1_TUPLE)
6410         AC_DEFINE_UNQUOTED(GTEST_HAS_CLONE, 0)
6411         AC_SUBST(GTEST_OS_LINUX_ANDROID)
6412         AC_SUBST(GTEST_USE_OWN_TR1_TUPLE)
6413         AC_SUBST(GTEST_HAS_CLONE)
6414     fi
6417 dnl ========================================================
6418 dnl parental controls (for Windows Vista)
6419 dnl ========================================================
6420 MOZ_ARG_DISABLE_BOOL(parental-controls,
6421 [  --disable-parental-controls
6422                           Do not build parental controls],
6423    MOZ_DISABLE_PARENTAL_CONTROLS=1,
6424    MOZ_DISABLE_PARENTAL_CONTROLS=)
6425 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6426     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6429 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6431 dnl ========================================================
6432 dnl = Disable DOMCrypto
6433 dnl ========================================================
6434 if test -n "$MOZ_DISABLE_CRYPTOLEGACY"; then
6435     AC_DEFINE(MOZ_DISABLE_CRYPTOLEGACY)
6437 AC_SUBST(MOZ_DISABLE_CRYPTOLEGACY)
6439 dnl ========================================================
6440 dnl = Disable libpkix
6441 dnl ========================================================
6442 if test -n "$NSS_NO_LIBPKIX"; then
6443     AC_DEFINE(NSS_NO_LIBPKIX)
6445 AC_SUBST(NSS_NO_LIBPKIX)
6448 dnl ========================================================
6449 dnl =
6450 dnl = Module specific options
6451 dnl =
6452 dnl ========================================================
6453 MOZ_ARG_HEADER(Individual module options)
6455 dnl ========================================================
6456 dnl = Disable feed handling components
6457 dnl ========================================================
6458 MOZ_ARG_DISABLE_BOOL(feeds,
6459 [  --disable-feeds         Disable feed handling and processing components],
6460     MOZ_FEEDS=,
6461     MOZ_FEEDS=1 )
6462 if test -n "$MOZ_FEEDS"; then
6463     AC_DEFINE(MOZ_FEEDS)
6464 else
6465     if test "$MOZ_BUILD_APP" = "browser"; then
6466         AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6467     fi
6470 dnl ========================================================
6471 dnl Check for sqlite
6472 dnl ========================================================
6474 MOZ_NATIVE_SQLITE=
6475 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6476 [  --enable-system-sqlite  Use system sqlite (located with pkgconfig)],
6477 MOZ_NATIVE_SQLITE=1,
6478 MOZ_NATIVE_SQLITE= )
6480 if test -z "$MOZ_NATIVE_SQLITE"
6481 then
6482     SQLITE_CFLAGS=
6483     SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6484 else
6485     dnl ============================
6486     dnl === SQLite Version check ===
6487     dnl ============================
6488     dnl Check to see if the system SQLite package is new enough.
6489     PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6491     dnl ==================================
6492     dnl === SQLITE_SECURE_DELETE check ===
6493     dnl ==================================
6494     dnl Check to see if the system SQLite package is compiled with
6495     dnl SQLITE_SECURE_DELETE enabled.
6496     AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6497     _SAVE_CFLAGS="$CFLAGS"
6498     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6499     _SAVE_LIBS="$LIBS"
6500     LIBS="$LIBS $SQLITE_LIBS"
6501     AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6502         AC_TRY_RUN([
6503             #include "sqlite3.h"
6505             int main(int argc, char **argv){
6506               return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6507             }],
6508             ac_cv_sqlite_secure_delete=yes,
6509             ac_cv_sqlite_secure_delete=no,
6510             ac_cv_sqlite_secure_delete=no
6511         )
6512     ])
6513     AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6514     CFLAGS="$_SAVE_CFLAGS"
6515     LIBS="$_SAVE_LIBS"
6516     if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6517         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6518     fi
6520     dnl ===============================
6521     dnl === SQLITE_THREADSAFE check ===
6522     dnl ===============================
6523     dnl Check to see if the system SQLite package is compiled with
6524     dnl SQLITE_THREADSAFE enabled.
6525     AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6526     _SAVE_CFLAGS="$CFLAGS"
6527     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6528     _SAVE_LIBS="$LIBS"
6529     LIBS="$LIBS $SQLITE_LIBS"
6530     AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6531         AC_TRY_RUN([
6532             #include "sqlite3.h"
6534             int main(int argc, char **argv){
6535               return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6536             }],
6537             ac_cv_sqlite_threadsafe=yes,
6538             ac_cv_sqlite_threadsafe=no,
6539             ac_cv_sqlite_threadsafe=no
6540         )
6541     ])
6542     AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6543     CFLAGS="$_SAVE_CFLAGS"
6544     LIBS="$_SAVE_LIBS"
6545     if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6546         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6547     fi
6549     dnl ================================
6550     dnl === SQLITE_ENABLE_FTS3 check ===
6551     dnl ================================
6552     dnl check to see if the system SQLite package is compiled with
6553     dnl SQLITE_ENABLE_FTS3 enabled.
6554     AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6555     _SAVE_CFLAGS="$CFLAGS"
6556     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6557     _SAVE_LIBS="$LIBS"
6558     LIBS="$LIBS $SQLITE_LIBS"
6559     AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6560         AC_TRY_RUN([
6561             #include "sqlite3.h"
6563             int main(int argc, char **argv){
6564               return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6565             }],
6566             ac_cv_sqlite_enable_fts3=yes,
6567             ac_cv_sqlite_enable_fts3=no,
6568             ac_cv_sqlite_enable_fts3=no
6569         )
6570     ])
6571     AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6572     CFLAGS="$_SAVE_CFLAGS"
6573     LIBS="$_SAVE_LIBS"
6574     if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6575         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6576     fi
6578     dnl =========================================
6579     dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
6580     dnl =========================================
6581     dnl check to see if the system SQLite package is compiled with
6582     dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
6583     AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
6584     _SAVE_CFLAGS="$CFLAGS"
6585     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6586     _SAVE_LIBS="$LIBS"
6587     LIBS="$LIBS $SQLITE_LIBS"
6588     AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
6589         AC_TRY_RUN([
6590             #include "sqlite3.h"
6592             int main(int argc, char **argv){
6593               return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
6594             }],
6595             ac_cv_sqlite_enable_unlock_notify=yes,
6596             ac_cv_sqlite_enable_unlock_notify=no,
6597             ac_cv_sqlite_enable_unlock_notify=no
6598         )
6599     ])
6600     AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
6601     CFLAGS="$_SAVE_CFLAGS"
6602     LIBS="$_SAVE_LIBS"
6603     if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
6604         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
6605     fi
6608 if test -n "$MOZ_NATIVE_SQLITE"; then
6609     AC_DEFINE(MOZ_NATIVE_SQLITE)
6611 AC_SUBST(MOZ_NATIVE_SQLITE)
6613 dnl ========================================================
6614 dnl = Enable help viewer (off by default)
6615 dnl ========================================================
6616 if test -n "$MOZ_HELP_VIEWER"; then
6617      dnl Do this if defined in confvars.sh
6618      AC_DEFINE(MOZ_HELP_VIEWER)
6621 dnl ========================================================
6622 dnl = Enable safe browsing (anti-phishing)
6623 dnl ========================================================
6624 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6625 [  --enable-safe-browsing  Enable safe browsing (anti-phishing) implementation],
6626     MOZ_SAFE_BROWSING=1,
6627     MOZ_SAFE_BROWSING= )
6628 if test -n "$MOZ_SAFE_BROWSING"; then
6629     AC_DEFINE(MOZ_SAFE_BROWSING)
6631 AC_SUBST(MOZ_SAFE_BROWSING)
6633 dnl ========================================================
6634 dnl = Enable url-classifier
6635 dnl ========================================================
6636 dnl Implicitly enabled by default if building with safe-browsing
6637 if test -n "$MOZ_SAFE_BROWSING"; then
6638     MOZ_URL_CLASSIFIER=1
6640 MOZ_ARG_ENABLE_BOOL(url-classifier,
6641 [  --enable-url-classifier Enable url classifier module],
6642     MOZ_URL_CLASSIFIER=1,
6643     MOZ_URL_CLASSIFIER= )
6644 if test -n "$MOZ_URL_CLASSIFIER"; then
6645     AC_DEFINE(MOZ_URL_CLASSIFIER)
6647 AC_SUBST(MOZ_URL_CLASSIFIER)
6649 dnl ========================================================
6650 dnl = Disable zipwriter
6651 dnl ========================================================
6652 MOZ_ARG_DISABLE_BOOL(zipwriter,
6653 [  --disable-zipwriter     Disable zipwriter component],
6654     MOZ_ZIPWRITER=,
6655     MOZ_ZIPWRITER=1 )
6656 AC_SUBST(MOZ_ZIPWRITER)
6658 dnl ========================================================
6659 dnl = libconic
6660 dnl ========================================================
6661 dnl superseded by QtNetwork starting from 4.7
6662 MOZ_ENABLE_LIBCONIC=1
6664 if test -n "$MOZ_ENABLE_QT"; then
6665   if test "$MOZ_ENABLE_QTNETWORK"; then
6666     MOZ_ENABLE_LIBCONIC=
6667   fi
6670 MOZ_ARG_DISABLE_BOOL(libconic,
6671 [  --disable-libconic      Disable libconic],
6672     MOZ_ENABLE_LIBCONIC=,
6673     MOZ_ENABLE_LIBCONIC=1 )
6675 if test -n "$MOZ_ENABLE_LIBCONIC"; then
6676     PKG_CHECK_MODULES(LIBCONIC, conic,
6677                       MOZ_ENABLE_LIBCONIC=1,
6678                       MOZ_ENABLE_LIBCONIC=)
6680 if test "$MOZ_ENABLE_LIBCONIC"; then
6681     AC_DEFINE(MOZ_ENABLE_LIBCONIC)
6684 AC_SUBST(MOZ_ENABLE_LIBCONIC)
6685 AC_SUBST(LIBCONIC_CFLAGS)
6686 AC_SUBST(LIBCONIC_LIBS)
6688 dnl ========================================================
6689 dnl = Maemo checks
6690 dnl ========================================================
6692 MAEMO_SDK_TARGET_VER=-1
6694 MOZ_ARG_WITH_STRING(maemo-version,
6695 [  --with-maemo-version=MAEMO_SDK_TARGET_VER
6696                           Maemo SDK Version],
6697   MAEMO_SDK_TARGET_VER=$withval)
6699 case "$MAEMO_SDK_TARGET_VER" in
6701     MOZ_PLATFORM_MAEMO=5
6702     ;;
6705     MOZ_PLATFORM_MAEMO=6
6706     ;;
6709     dnl We aren't compiling for Maemo, move on.
6710     ;;
6712     AC_MSG_ERROR([Unknown Maemo Version.  Try setting --with-maemo-version to 5 or 6.])
6713     ;;
6714 esac
6716 if test $MOZ_PLATFORM_MAEMO; then
6717    AC_DEFINE_UNQUOTED([MOZ_PLATFORM_MAEMO], $MOZ_PLATFORM_MAEMO)
6719    if test -z "$MOZ_ENABLE_DBUS"; then
6720        AC_MSG_ERROR([DBus is required when building for Maemo])
6721    fi
6723    MOZ_GFX_OPTIMIZE_MOBILE=1
6724    MOZ_GL_DEFAULT_PROVIDER=EGL
6725    MOZ_MAEMO_LIBLOCATION=
6727    if test $MOZ_PLATFORM_MAEMO = 5; then
6728       dnl if we have Xcomposite we should also have Xdamage and Xfixes
6729       MOZ_CHECK_HEADERS([X11/extensions/Xdamage.h], [],
6730           [AC_MSG_ERROR([Couldn't find X11/extensions/Xdamage.h which is required for composited plugins.])])
6731       AC_CHECK_LIB(Xcomposite, XCompositeRedirectWindow, [XCOMPOSITE_LIBS="-lXcomposite -lXdamage -lXfixes"],
6732                    [MISSING_X="$MISSING_X -lXcomposite"], $XLIBS)
6734       AC_SUBST(XCOMPOSITE_LIBS)
6736       PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime, _LIB_FOUND=1, _LIB_FOUND=)
6737       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONMIME_LIBS"
6738       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONMIME_CFLAGS"
6739       if test -z "$_LIB_FOUND"; then
6740          AC_MSG_ERROR([Hildon Mime is required when building for Maemo])
6741       fi
6744       PKG_CHECK_MODULES(LIBOSSO,libosso, _LIB_FOUND=1, _LIB_FOUND=)
6745       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBOSSO_LIBS"
6746       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBOSSO_CFLAGS"
6747       if test -z "$_LIB_FOUND"; then
6748          AC_MSG_ERROR([LibOSSO is required when building for Maemo])
6749       fi
6751       PKG_CHECK_MODULES(LIBHILDONFM,hildon-fm-2, _LIB_FOUND=1, _LIB_FOUND=)
6752       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONFM_LIBS"
6753       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONFM_CFLAGS"
6754       if test -z "$_LIB_FOUND"; then
6755          AC_MSG_ERROR([Hildon FM-2 is required when building for Maemo])
6756       fi
6758    fi
6759    if test $MOZ_PLATFORM_MAEMO = 6; then
6761       PKG_CHECK_MODULES(LIBCONTENTMANAGER, ContentManager QtSparql,
6762                         _LIB_FOUND=1,
6763                         _LIB_FOUND=)
6764       if test "$_LIB_FOUND"; then
6765          MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTMANAGER_LIBS"
6766          MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTMANAGER_CFLAGS"
6767          MOZ_ENABLE_CONTENTMANAGER=1
6768          AC_DEFINE(MOZ_ENABLE_CONTENTMANAGER)
6769       else
6770          AC_MSG_WARN([Cannot find libcontentmanager and or QtSparql building for Maemo 6])
6771       fi
6772       AC_SUBST(MOZ_ENABLE_CONTENTMANAGER)
6774       dnl ========================================================
6775       dnl = Enable meego libcontentaction
6776       dnl ========================================================
6777       MOZ_ARG_ENABLE_BOOL(meegocontentaction,
6778       [  --enable-meegocontentaction           Enable meegocontentaction support],
6779          MOZ_MEEGOCONTENTACTION=1,
6780          MOZ_MEEGOCONTENTACTION=)
6782       if test -n "$MOZ_MEEGOCONTENTACTION"; then
6784          PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=)
6785          if test "$_LIB_FOUND"; then
6786             MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTACTION_LIBS"
6787             MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTACTION_CFLAGS"
6788             MOZ_ENABLE_CONTENTACTION=1
6789             AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
6790             AC_SUBST(MOZ_ENABLE_CONTENTACTION)
6791          fi
6792       fi
6794       MOZ_ARG_ENABLE_BOOL(meegotouch,
6795       [  --enable-meegotouch  Enable meegotouch support],
6796          MOZ_MEEGOTOUCHENABLED=1,
6797          MOZ_MEEGOTOUCHENABLED=)
6799       if test -n "$MOZ_MEEGOTOUCHENABLED"; then
6800           PKG_CHECK_MODULES(MOZ_MEEGOTOUCH, meegotouchcore, _LIB_FOUND=1, _LIB_FOUND=)
6801           if test "$_LIB_FOUND"; then
6802               MOZ_QT_CFLAGS="$MOZ_MEEGOTOUCH_CFLAGS $MOZ_QT_CFLAGS"
6803               MOZ_QT_LIBS="$MOZ_MEEGOTOUCH_LIBS $MOZ_QT_LIBS"
6804               AC_DEFINE(MOZ_ENABLE_MEEGOTOUCH)
6805           else
6806               AC_MSG_WARN([Cannot meegotouchcore-dev. Disabling Meegotouch support.])
6807           fi
6808       fi
6809    fi
6811    PKG_CHECK_MODULES(LIBLOCATION,liblocation, _LIB_FOUND=1, _LIB_FOUND=)
6812    MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBLOCATION_LIBS"
6813    MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBLOCATION_CFLAGS"
6814    if test "$_LIB_FOUND"; then
6815       MOZ_MAEMO_LIBLOCATION=1
6816       AC_DEFINE(MOZ_MAEMO_LIBLOCATION)
6817    else
6818       AC_MSG_WARN([Cannot liblocation-dev. Disabling Maemo geolocation.])
6819    fi
6820    AC_SUBST(MOZ_MAEMO_LIBLOCATION)
6822    PKG_CHECK_MODULES(LIBMEEGOTOUCHSHARE, ShareUiInterface-maemo-meegotouch >= 0.3.31 mdatauri, _LIB_FOUND=1, _LIB_FOUND=)
6823    MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBMEEGOTOUCHSHARE_LIBS"
6824    MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBMEEGOTOUCHSHARE_CFLAGS"
6825    if test "$_LIB_FOUND"; then
6826       MOZ_ENABLE_MEEGOTOUCHSHARE=1
6827       AC_DEFINE(MOZ_ENABLE_MEEGOTOUCHSHARE)
6828    else
6829       AC_MSG_WARN([Cannot find maemo-meegotouch-interfaces-dev or libmdatauri-dev. Disabling meegotouch share ui.])
6830    fi
6831    AC_SUBST(MOZ_ENABLE_MEEGOTOUCHSHARE)
6833    AC_SUBST(MOZ_PLATFORM_MAEMO_LIBS)
6834    AC_SUBST(MOZ_PLATFORM_MAEMO_CFLAGS)
6837 dnl ========================================================
6838 dnl GL provider
6839 dnl ========================================================
6840 MOZ_GL_PROVIDER=
6841 MOZ_ARG_WITH_STRING(gl-provider,
6842 [  --with-gl-provider=ID
6843                           Set GL provider backend type],
6844 [ val=`echo $withval`
6845     MOZ_GL_PROVIDER="$val"])
6847 if test -n "$MOZ_GL_PROVIDER"; then
6848 MOZ_GL_DEFAULT_PROVIDER=$MOZ_GL_PROVIDER
6849 AC_SUBST(MOZ_GL_PROVIDER)
6850 AC_DEFINE_UNQUOTED(MOZ_GL_PROVIDER, GLContextProvider$MOZ_GL_PROVIDER)
6852 AC_SUBST(MOZ_GL_DEFAULT_PROVIDER)
6853 AC_DEFINE_UNQUOTED(GL_PROVIDER_$MOZ_GL_DEFAULT_PROVIDER)
6855 dnl ========================================================
6856 dnl = faststripe theme
6857 dnl ========================================================
6858 MOZ_ARG_ENABLE_BOOL(faststripe,
6859 [  --enable-faststripe     Use faststripe theme],
6860     MOZ_THEME_FASTSTRIPE=1,
6861     MOZ_THEME_FASTSTRIPE= )
6862 AC_SUBST(MOZ_THEME_FASTSTRIPE)
6864 dnl ========================================================
6865 dnl =
6866 dnl = Feature options that require extra sources to be pulled
6867 dnl =
6868 dnl ========================================================
6869 dnl MOZ_ARG_HEADER(Features that require extra sources)
6871 dnl ========================================================
6872 dnl =
6873 dnl = Debugging Options
6874 dnl =
6875 dnl ========================================================
6876 MOZ_ARG_HEADER(Debugging and Optimizations)
6878 dnl ========================================================
6879 dnl = Disable building with debug info.
6880 dnl = Debugging is OFF by default
6881 dnl ========================================================
6882 if test -z "$MOZ_DEBUG_FLAGS"; then
6883   MOZ_DEBUG_FLAGS="-g"
6886 MOZ_ARG_ENABLE_STRING(debug,
6887 [  --enable-debug[=DBG]    Enable building with developer debug info
6888                            (using compiler flags DBG)],
6889 [ if test "$enableval" != "no"; then
6890     MOZ_DEBUG=1
6891     if test -n "$enableval" -a "$enableval" != "yes"; then
6892         MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6893         _MOZ_DEBUG_FLAGS_SET=1
6894     fi
6895   else
6896     MOZ_DEBUG=
6897   fi ],
6898   MOZ_DEBUG=)
6900 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG -DTRACING"
6901 MOZ_ARG_WITH_STRING(debug-label,
6902 [  --with-debug-label=LABELS
6903                           Define DEBUG_<value> for each comma-separated
6904                           value given.],
6905 [ for option in `echo $withval | sed 's/,/ /g'`; do
6906     MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${option}"
6907 done])
6909 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6911 if test -n "$MOZ_DEBUG"; then
6912     AC_MSG_CHECKING([for valid debug flags])
6913     _SAVE_CFLAGS=$CFLAGS
6914     CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6915     AC_TRY_COMPILE([#include <stdio.h>],
6916         [printf("Hello World\n");],
6917         _results=yes,
6918         _results=no)
6919     AC_MSG_RESULT([$_results])
6920     if test "$_results" = "no"; then
6921         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6922     fi
6923     CFLAGS=$_SAVE_CFLAGS
6926 dnl ========================================================
6927 dnl enable mobile optimizations
6928 dnl ========================================================
6929 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
6930 [  --enable-mobile-optimize
6931                           Enable mobile optimizations],
6932     MOZ_GFX_OPTIMIZE_MOBILE=1)
6934 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
6936 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
6937     AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
6940 dnl ========================================================
6941 dnl = Enable code optimization. ON by default.
6942 dnl ========================================================
6943 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6944         MOZ_OPTIMIZE_FLAGS="-O"
6947 MOZ_ARG_ENABLE_STRING(optimize,
6948 [  --disable-optimize      Disable compiler optimization
6949   --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6950 [ if test "$enableval" != "no"; then
6951     MOZ_OPTIMIZE=1
6952     if test -n "$enableval" -a "$enableval" != "yes"; then
6953         MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6954         MOZ_OPTIMIZE=2
6955     fi
6956 else
6957     MOZ_OPTIMIZE=
6958 fi ], MOZ_OPTIMIZE=1)
6960 MOZ_SET_FRAMEPTR_FLAGS
6962 if test "$COMPILE_ENVIRONMENT"; then
6963 if test -n "$MOZ_OPTIMIZE"; then
6964     AC_MSG_CHECKING([for valid optimization flags])
6965     _SAVE_CFLAGS=$CFLAGS
6966     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6967     AC_TRY_COMPILE([#include <stdio.h>],
6968         [printf("Hello World\n");],
6969         _results=yes,
6970         _results=no)
6971     AC_MSG_RESULT([$_results])
6972     if test "$_results" = "no"; then
6973         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6974     fi
6975     CFLAGS=$_SAVE_CFLAGS
6977 fi # COMPILE_ENVIRONMENT
6979 AC_SUBST(MOZ_OPTIMIZE)
6980 AC_SUBST(MOZ_FRAMEPTR_FLAGS)
6981 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6982 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6983 AC_SUBST(MOZ_ALLOW_HEAP_EXECUTE_FLAGS)
6984 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6985 AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS)
6987 dnl ========================================================
6988 dnl = Enable generation of debug symbols
6989 dnl ========================================================
6990 MOZ_ARG_ENABLE_STRING(debug-symbols,
6991 [  --enable-debug-symbols[=DBG]
6992                           Enable debugging symbols (using compiler flags DBG)],
6993 [ if test "$enableval" != "no"; then
6994       MOZ_DEBUG_SYMBOLS=1
6995       if test -n "$enableval" -a "$enableval" != "yes"; then
6996           if test -z "$_MOZ_DEBUG_FLAGS_SET"; then
6997               MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6998           else
6999               AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
7000           fi
7001       fi
7002   else
7003       MOZ_DEBUG_SYMBOLS=
7004   fi ],
7005   MOZ_DEBUG_SYMBOLS=1)
7007 if test -n "$MOZ_DEBUG" -o -n "$MOZ_DEBUG_SYMBOLS"; then
7008     AC_DEFINE(MOZ_DEBUG_SYMBOLS)
7009     export MOZ_DEBUG_SYMBOLS
7012 dnl ========================================================
7013 dnl = Enable any treating of compile warnings as errors
7014 dnl ========================================================
7015 MOZ_ARG_ENABLE_BOOL(warnings-as-errors,
7016 [  --enable-warnings-as-errors
7017                           Enable treating of warnings as errors],
7018     MOZ_ENABLE_WARNINGS_AS_ERRORS=1,
7019     MOZ_ENABLE_WARNINGS_AS_ERRORS=)
7020 if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
7021    WARNINGS_AS_ERRORS=''
7024 dnl ========================================================
7025 dnl = Disable runtime logging checks
7026 dnl ========================================================
7027 MOZ_ARG_DISABLE_BOOL(logging,
7028 [  --disable-logging       Disable logging facilities],
7029     NS_DISABLE_LOGGING=1,
7030     NS_DISABLE_LOGGING= )
7031 if test "$NS_DISABLE_LOGGING"; then
7032     AC_DEFINE(NS_DISABLE_LOGGING)
7033 else
7034     AC_DEFINE(MOZ_LOGGING)
7037 dnl ========================================================
7038 dnl = This will enable logging of addref, release, ctor, dtor.
7039 dnl ========================================================
7040 _ENABLE_LOGREFCNT=42
7041 MOZ_ARG_ENABLE_BOOL(logrefcnt,
7042 [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
7043     _ENABLE_LOGREFCNT=1,
7044     _ENABLE_LOGREFCNT= )
7045 if test "$_ENABLE_LOGREFCNT" = "1"; then
7046     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
7047 elif test -z "$_ENABLE_LOGREFCNT"; then
7048     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
7051 dnl ========================================================
7052 dnl moz_dump_painting
7053 dnl ========================================================
7054 MOZ_ARG_ENABLE_BOOL(dump-painting,
7055 [  --enable-dump-painting          Enable paint debugging.],
7056     MOZ_DUMP_PAINTING=1,
7057     MOZ_DUMP_PAINTING= )
7058 if test -n "$MOZ_DUMP_PAINTING"; then
7059     AC_DEFINE(MOZ_DUMP_PAINTING)
7060     AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
7062 if test -n "$MOZ_DEBUG"; then
7063     AC_DEFINE(MOZ_DUMP_PAINTING)
7066 dnl ========================================================
7067 dnl = Enable trace malloc
7068 dnl ========================================================
7069 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
7070 MOZ_ARG_ENABLE_BOOL(trace-malloc,
7071 [  --enable-trace-malloc   Enable malloc tracing; also disables DMD and jemalloc],
7072     NS_TRACE_MALLOC=1,
7073     NS_TRACE_MALLOC= )
7074 if test "$NS_TRACE_MALLOC"; then
7075   # Please, Mr. Linker Man, don't take away our symbol names
7076   MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7077   USE_ELF_DYNSTR_GC=
7078   AC_DEFINE(NS_TRACE_MALLOC)
7080 AC_SUBST(NS_TRACE_MALLOC)
7082 dnl ========================================================
7083 dnl = Enable DMD
7084 dnl ========================================================
7086 MOZ_ARG_ENABLE_BOOL(dmd,
7087 [  --enable-dmd            Enable DMD; also enables jemalloc and replace-malloc],
7088     MOZ_DMD=1,
7089     MOZ_DMD= )
7091 if test "$NS_TRACE_MALLOC"; then        # trace-malloc disables DMD
7092     MOZ_DMD=
7094 if test "$MOZ_DMD"; then
7095     USE_ELF_DYNSTR_GC=
7096     AC_DEFINE(MOZ_DMD)
7098     if test "${CPU_ARCH}" = "arm"; then
7099         CFLAGS="$CFLAGS -funwind-tables"
7100         CXXFLAGS="$CXXFLAGS -funwind-tables"
7101     fi
7103     MOZ_MEMORY=1                        # DMD enables jemalloc
7104     MOZ_REPLACE_MALLOC=1                # DMD enables replace-malloc
7106 AC_SUBST(MOZ_DMD)
7108 dnl ========================================================
7109 dnl = Enable jemalloc
7110 dnl ========================================================
7111 MOZ_ARG_ENABLE_BOOL(jemalloc,
7112 [  --enable-jemalloc       Replace memory allocator with jemalloc],
7113     MOZ_MEMORY=1,
7114     MOZ_MEMORY=)
7116 if test "$NS_TRACE_MALLOC"; then
7117     MOZ_MEMORY=
7120 if test "${OS_TARGET}" = "Android"; then
7121   dnl On Android, we use WRAP_LDFLAGS to link everything to mozglue
7122   :
7123 elif test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin" -o "${OS_TARGET}" = "OS2"; then
7124   dnl On Windows, OSX and OS2, we want to link all our binaries against mozglue
7125   if test -z "$GNU_CC"; then
7126     MOZ_GLUE_LDFLAGS='$(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
7127   else
7128     MOZ_GLUE_LDFLAGS='-L$(LIBXUL_DIST)/lib $(call EXPAND_LIBNAME,mozglue)'
7129   fi
7130 else
7131   dnl On other Unix systems, we only want to link executables against mozglue
7132   MOZ_GLUE_PROGRAM_LDFLAGS='$(MKSHLIB_FORCE_ALL) $(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
7133   dnl On other Unix systems, where mozglue is a static library, jemalloc is
7134   dnl separated for the SDK, so we need to add it here.
7135   if test "$MOZ_MEMORY" = 1 -o \( "$LIBXUL_SDK" -a -f "$LIBXUL_SDK/lib/${LIB_PREFIX}memory.${LIB_SUFFIX}" \); then
7136     MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(call EXPAND_LIBNAME_PATH,memory,$(LIBXUL_DIST)/lib)'
7137   fi
7138   MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(MKSHLIB_UNFORCE_ALL)'
7139   if test -n "$GNU_CC"; then
7140     dnl And we need mozglue symbols to be exported.
7141     MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS -rdynamic"
7142   fi
7143   if test "$MOZ_LINKER" = 1; then
7144     MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS $MOZ_ZLIB_LIBS"
7145   fi
7148 dnl ========================================================
7149 dnl = Enable dynamic replacement of malloc implementation
7150 dnl ========================================================
7151 MOZ_ARG_ENABLE_BOOL(replace-malloc,
7152 [  --enable-replace-malloc   Enable ability to dynamically replace the malloc implementation],
7153     MOZ_REPLACE_MALLOC=1,
7154     MOZ_REPLACE_MALLOC= )
7156 if test -n "$MOZ_REPLACE_MALLOC" -a -z "$MOZ_MEMORY"; then
7157     dnl We don't want to enable jemalloc unconditionally because it may be a
7158     dnl deliberate choice not to enable it (bug 702250, for instance)
7159     AC_MSG_ERROR([--enable-replace-malloc requires --enable-jemalloc])
7160 elif test -n "$MOZ_REPLACE_MALLOC"; then
7161     MOZ_NATIVE_JEMALLOC=
7163     dnl Replace-malloc Mac linkage quirks
7164     if test -n "$MACOSX_DEPLOYMENT_TARGET"; then
7165         AC_CACHE_CHECK([how to do weak dynamic linking],
7166             ac_cv_weak_dynamic_linking,
7167             [echo 'extern void foo() __attribute__((weak_import));int bar() { if (foo) foo(); return 0; }' > conftest.c
7168              if AC_TRY_COMMAND([${CC-cc} -o conftest${DLL_SUFFIX} $CFLAGS -dynamiclib $LDFLAGS -Wl,-U,_foo conftest.c $LIBS 1>&5]) &&
7169                 test -s conftest${DLL_SUFFIX}; then
7170                  dnl There are several ways the linker can put link edit rules in a binary:
7171                  dnl - classic info only (for OSX < 10.6)
7172                  dnl - dyld info only
7173                  dnl - both
7174                  if otool -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO_ONLY" > /dev/null; then
7175                      _CLASSIC_INFO=
7176                  else
7177                      _CLASSIC_INFO=1
7178                  fi
7179                  if otool -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO" > /dev/null; then
7180                      _DYLD_INFO=1
7181                  else
7182                      _DYLD_INFO=
7183                  fi
7184                  dnl With classic info, we need to build with -flat_namespace.
7185                  dnl With dyld info, Xcode 4.5 does the right thing without additional flags,
7186                  dnl but Xcode < 4.5 requires a dummy library and -flat_namespace because it
7187                  dnl forgets to set the weak flag in the dyld info.
7188                  dnl See http://glandium.org/blog/?p=2764 for more details.
7189                  dnl
7190                  dnl Values for ac_cv_weak_dynamic_linking, and subsequently
7191                  dnl MOZ_REPLACE_MALLOC_LINKAGE are thus:
7192                  dnl - "flat namespace" when -flat_namespace alone is needed
7193                  dnl - "dummy library" when a dummy library and -flat_namespace are needed
7194                  dnl - "compiler support" when nothing is needed
7195                  if test -n "$_DYLD_INFO" && dyldinfo -bind conftest${DLL_SUFFIX} 2> /dev/null | grep "_foo (weak import)" > /dev/null; then
7196                      if test -n "$_CLASSIC_INFO"; then
7197                          ac_cv_weak_dynamic_linking="flat namespace"
7198                      else
7199                          ac_cv_weak_dynamic_linking="compiler support"
7200                      fi
7201                  else
7202                      if test -n "$_DYLD_INFO"; then
7203                          ac_cv_weak_dynamic_linking="dummy library"
7204                      else
7205                          ac_cv_weak_dynamic_linking="flat namespace"
7206                      fi
7207                  fi
7208              else
7209                  AC_ERROR([couldn't compile a simple C file])
7210              fi
7211              rm -rf conftest*])
7212         MOZ_REPLACE_MALLOC_LINKAGE="$ac_cv_weak_dynamic_linking"
7213     fi
7215 AC_SUBST(MOZ_REPLACE_MALLOC)
7216 AC_SUBST(MOZ_REPLACE_MALLOC_LINKAGE)
7218 dnl ========================================================
7219 dnl = Jemalloc build setup
7220 dnl ========================================================
7221 if test -z "$MOZ_MEMORY"; then
7222   if test -n "$MOZ_JEMALLOC3" -a -z "$MOZ_REPLACE_MALLOC"; then
7223     MOZ_NATIVE_JEMALLOC=1
7224     AC_CHECK_FUNCS(mallctl nallocm,,
7225       [MOZ_NATIVE_JEMALLOC=
7226        break])
7227     if test -n "$MOZ_NATIVE_JEMALLOC"; then
7228       MOZ_MEMORY=1
7229       AC_DEFINE(MOZ_MEMORY)
7230       AC_DEFINE(MOZ_JEMALLOC3)
7231       AC_DEFINE(MOZ_NATIVE_JEMALLOC)
7232     fi
7233   fi
7234   case "${target}" in
7235     *-mingw*)
7236       if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
7237         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.])
7238       fi
7239       ;;
7240   esac
7241 else
7242   dnl Don't try to run compiler tests on Windows
7243   if test "$OS_ARCH" = "WINNT"; then
7244     if test -z "$HAVE_64BIT_OS"; then
7245       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7246     else
7247       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7248     fi
7249   else
7250     AC_CHECK_SIZEOF([int *], [4])
7251     case "${ac_cv_sizeof_int_p}" in
7252     4)
7253       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7254       ;;
7255     8)
7256       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7257       ;;
7258     *)
7259       AC_MSG_ERROR([Unexpected pointer size])
7260       ;;
7261     esac
7262   fi
7264   AC_DEFINE(MOZ_MEMORY)
7265   if test -n "$MOZ_JEMALLOC3"; then
7266     AC_DEFINE(MOZ_JEMALLOC3)
7267   fi
7268   if test "x$MOZ_DEBUG" = "x1"; then
7269     AC_DEFINE(MOZ_MEMORY_DEBUG)
7270   fi
7271   dnl The generic feature tests that determine how to compute ncpus are long and
7272   dnl complicated.  Therefore, simply define special cpp variables for the
7273   dnl platforms we have special knowledge of.
7274   case "${target}" in
7275   *-darwin*)
7276     AC_DEFINE(MOZ_MEMORY_DARWIN)
7277     ;;
7278   *-*freebsd*)
7279     AC_DEFINE(MOZ_MEMORY_BSD)
7280     ;;
7281   *-android*|*-linuxandroid*)
7282     AC_DEFINE(MOZ_MEMORY_LINUX)
7283     AC_DEFINE(MOZ_MEMORY_ANDROID)
7284     if test -z "$gonkdir"; then
7285       _WRAP_MALLOC=1
7286     else
7287       AC_DEFINE(MOZ_MEMORY_GONK)
7288     fi
7289     MOZ_GLUE_LDFLAGS=
7290     ;;
7291   *-*linux*)
7292     AC_DEFINE(MOZ_MEMORY_LINUX)
7293     ;;
7294   *-netbsd*)
7295     AC_DEFINE(MOZ_MEMORY_BSD)
7296     ;;
7297   *-solaris*)
7298     AC_DEFINE(MOZ_MEMORY_SOLARIS)
7299     ;;
7300   *-mingw*)
7301     AC_DEFINE(MOZ_MEMORY_WINDOWS)
7302     if test -z "$MOZ_DEBUG"; then
7303       WIN32_CRT_LIBS="msvcrt.lib msvcprt.lib"
7304     else
7305       WIN32_CRT_LIBS="msvcrtd.lib msvcprtd.lib"
7306     fi
7307     dnl Look for a broken crtdll.obj
7308     WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj`
7309     lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH
7310     if grep -q '__imp__\{0,1\}free' crtdll.obj; then
7311       MOZ_GLUE_LDFLAGS='-LIBPATH:$(DIST)/lib -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt'
7312       dnl Also pass this to NSPR/NSS
7313       DLLFLAGS="$DLLFLAGS $MOZ_GLUE_LDFLAGS"
7314     else
7315       DLLFLAGS="$DLLFLAGS -LIBPATH:\$(DIST)/lib -DEFAULTLIB:mozglue"
7316     fi
7317     rm crtdll.obj
7319     export DLLFLAGS
7320     ;;
7321   *)
7322     AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7323     ;;
7324   esac
7325 fi # MOZ_MEMORY
7326 AC_SUBST(MOZ_MEMORY)
7327 AC_SUBST(MOZ_JEMALLOC3)
7328 AC_SUBST(MOZ_NATIVE_JEMALLOC)
7329 AC_SUBST(MOZ_GLUE_LDFLAGS)
7330 AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS)
7331 AC_SUBST(WIN32_CRT_LIBS)
7332 dnl Need to set this for make because NSS doesn't have configure
7333 AC_SUBST(DLLFLAGS)
7335 dnl We need to wrap dlopen and related functions on Android because we use
7336 dnl our own linker.
7337 if test "$OS_TARGET" = Android; then
7338     WRAP_LDFLAGS="${WRAP_LDFLAGS} -L$_objdir/dist/lib -lmozglue"
7339     WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=getaddrinfo,--wrap=freeaddrinfo,--wrap=gai_strerror"
7340     WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=PR_GetEnv,--wrap=PR_SetEnv"
7341     if test -z "$gonkdir"; then
7342         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=fork,--wrap=pthread_atfork,--wrap=raise"
7343         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=memccpy,--wrap=memchr,--wrap=memrchr,--wrap=memcmp,--wrap=memcpy,--wrap=memmove,--wrap=memset,--wrap=memmem,--wrap=memswap,--wrap=index,--wrap=strchr,--wrap=strrchr,--wrap=strlen,--wrap=strcmp,--wrap=strcpy,--wrap=strcat,--wrap=strcasecmp,--wrap=strncasecmp,--wrap=strstr,--wrap=strcasestr,--wrap=strtok,--wrap=strtok_r,--wrap=strerror,--wrap=strerror_r,--wrap=strnlen,--wrap=strncat,--wrap=strncmp,--wrap=strncpy,--wrap=strlcat,--wrap=strlcpy,--wrap=strcspn,--wrap=strpbrk,--wrap=strsep,--wrap=strspn,--wrap=strcoll,--wrap=strxfrm"
7344     fi
7347 dnl ========================================================
7348 dnl = Use malloc wrapper lib
7349 dnl ========================================================
7350 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
7351 [  --enable-wrap-malloc    Wrap malloc calls (gnu linker only)],
7352     _WRAP_MALLOC=1,
7353     _WRAP_MALLOC= )
7355 if test -n "$_WRAP_MALLOC"; then
7356     if test -n "$GNU_CC"; then
7357         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=malloc,--wrap=calloc,--wrap=valloc,--wrap=free,--wrap=realloc,--wrap=memalign"
7358         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=__builtin_new,--wrap=__builtin_vec_new,--wrap=__builtin_delete,--wrap=__builtin_vec_delete"
7359         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=strdup,--wrap=strndup"
7360         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=posix_memalign,--wrap=malloc_usable_size"
7361         dnl Wrap operator new and operator delete on Android.
7362         if test "$OS_TARGET" = "Android"; then
7363             WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_Znwj,--wrap=_Znaj,--wrap=_ZdlPv,--wrap=_ZdaPv"
7364             dnl Wrap the nothrow variants too.
7365             WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_ZnwjRKSt9nothrow_t,--wrap=_ZnajRKSt9nothrow_t,--wrap=_ZdlPvRKSt9nothrow_t,--wrap=_ZdaPvRKSt9nothrow_t"
7366         fi
7367     else
7368         AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains])
7369     fi
7372 dnl ========================================================
7373 dnl = Location of malloc wrapper lib
7374 dnl ========================================================
7375 MOZ_ARG_WITH_STRING(wrap-malloc,
7376 [  --with-wrap-malloc=DIR  Location of malloc wrapper library],
7377     WRAP_LDFLAGS="${WRAP_LDFLAGS} $withval")
7379 dnl ========================================================
7380 dnl = Use JS Call tracing
7381 dnl ========================================================
7382 MOZ_ARG_ENABLE_BOOL(trace-jscalls,
7383 [  --enable-trace-jscalls  Enable JS call enter/exit callback (default=no)],
7384     MOZ_TRACE_JSCALLS=1,
7385     MOZ_TRACE_JSCALLS= )
7386 if test -n "$MOZ_TRACE_JSCALLS"; then
7387     AC_DEFINE(MOZ_TRACE_JSCALLS)
7390 dnl ========================================================
7391 dnl = Use incremental GC
7392 dnl ========================================================
7393 JSGC_INCREMENTAL=1
7394 MOZ_ARG_DISABLE_BOOL(gcincremental,
7395 [  --disable-gcincremental Disable incremental GC],
7396     JSGC_INCREMENTAL= )
7397 if test -n "$JSGC_INCREMENTAL"; then
7398     AC_DEFINE(JSGC_INCREMENTAL)
7401 dnl ========================================================
7402 dnl Zealous JavaScript GC
7403 dnl ========================================================
7404 MOZ_ARG_ENABLE_BOOL(gczeal,
7405 [  --enable-gczeal         Enable zealous JavaScript GCing],
7406     JS_GC_ZEAL=1,
7407     JS_GC_ZEAL= )
7408 if test -n "$JS_GC_ZEAL"; then
7409     AC_DEFINE(JS_GC_ZEAL)
7412 dnl ========================================================
7413 dnl JS opt-mode assertions and minidump instrumentation
7414 dnl ========================================================
7415 MOZ_ARG_ENABLE_BOOL(js-diagnostics,
7416 [  --enable-js-diagnostics
7417                           Enable JS diagnostic assertions and breakpad data],
7418     JS_CRASH_DIAGNOSTICS=1,
7419     JS_CRASH_DIAGNOSTICS= )
7420 if test -n "$JS_CRASH_DIAGNOSTICS"; then
7421     AC_DEFINE(JS_CRASH_DIAGNOSTICS)
7424 MOZ_CHECK_CCACHE
7426 dnl ========================================================
7427 dnl = Enable static checking using gcc-dehydra
7428 dnl ========================================================
7430 MOZ_ARG_WITH_STRING(static-checking,
7431 [  --with-static-checking=path/to/gcc_dehydra.so
7432                           Enable static checking of code using GCC-dehydra],
7433     DEHYDRA_PATH=$withval,
7434     DEHYDRA_PATH= )
7436 if test -n "$DEHYDRA_PATH"; then
7437     if test ! -f "$DEHYDRA_PATH"; then
7438         AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7439     fi
7440     AC_DEFINE(NS_STATIC_CHECKING)
7442 AC_SUBST(DEHYDRA_PATH)
7444 dnl ========================================================
7445 dnl = Enable using the clang plugin to build
7446 dnl ========================================================
7448 MOZ_ARG_ENABLE_BOOL(clang-plugin,
7449 [  --enable-clang-plugin   Enable building with the mozilla clang plugin ],
7450    ENABLE_CLANG_PLUGIN=1,
7451    ENABLE_CLANG_PLUGIN= )
7452 if test -n "$ENABLE_CLANG_PLUGIN"; then
7453     if test -z "$CLANG_CC"; then
7454         AC_MSG_ERROR([Can't use clang plugin without clang.])
7455     fi
7456     AC_DEFINE(MOZ_CLANG_PLUGIN)
7459 AC_SUBST(ENABLE_CLANG_PLUGIN)
7461 dnl ========================================================
7462 dnl = Enable stripping of libs & executables
7463 dnl ========================================================
7464 MOZ_ARG_ENABLE_BOOL(strip,
7465 [  --enable-strip          Enable stripping of libs & executables ],
7466     ENABLE_STRIP=1,
7467     ENABLE_STRIP= )
7469 dnl ========================================================
7470 dnl = Enable stripping of libs & executables when packaging
7471 dnl ========================================================
7472 MOZ_ARG_ENABLE_BOOL(install-strip,
7473 [  --enable-install-strip  Enable stripping of libs & executables when packaging ],
7474     PKG_SKIP_STRIP= ,
7475     PKG_SKIP_STRIP=1)
7477 dnl ========================================================
7478 dnl = --enable-elf-dynstr-gc
7479 dnl ========================================================
7480 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
7481 [  --enable-elf-dynstr-gc  Enable elf dynstr garbage collector (opt builds only)],
7482     USE_ELF_DYNSTR_GC=1,
7483     USE_ELF_DYNSTR_GC= )
7485 dnl ========================================================
7486 dnl = --disable-elf-hack
7487 dnl ========================================================
7489 USE_ELF_HACK=1
7490 MOZ_ARG_DISABLE_BOOL(elf-hack,
7491 [  --disable-elf-hack      Disable elf hacks],
7492     USE_ELF_HACK=,
7493     USE_ELF_HACK=1)
7495 # Disable elf hack for profiling because the built in profiler
7496 # doesn't read the segments properly with elf hack. This is
7497 # temporary and should be fixed soon in the profiler.
7498 if test "$MOZ_PROFILING" = 1; then
7499   USE_ELF_HACK=
7502 # Only enable elfhack where supported
7503 if test "$USE_ELF_HACK" = 1; then
7504     case "${HOST_OS_ARCH},${OS_ARCH}" in
7505     Linux,Linux)
7506         case "${CPU_ARCH}" in
7507         arm | x86 | x86_64)
7508             USE_ELF_HACK=1
7509             ;;
7510         *)
7511             USE_ELF_HACK=
7512             ;;
7513         esac
7514         ;;
7515     *)
7516         USE_ELF_HACK=
7517         ;;
7518     esac
7521 if test "$USE_ELF_HACK" = 1; then
7522     dnl PT_GNU_RELRO segment makes the dynamic linker set a read-only flag on
7523     dnl memory addresses it maps to. The result is that by the time elfhack
7524     dnl kicks in, it is not possible to apply relocations because of that,
7525     dnl thus elfhack effectively skips relocations inside the PT_GNU_RELRO
7526     dnl segment. It makes elfhack mostly useless, so considering the problems
7527     dnl we have we PT_GNU_RELRO (e.g. bug 664366), and until elfhack can deal
7528     dnl with PT_GNU_RELRO segments, it's just simpler to disable elfhack when
7529     dnl the linker creates PT_GNU_RELRO segments.
7530     AC_CACHE_CHECK([whether linker creates PT_GNU_RELRO segments],
7531         LINK_WITH_PT_GNU_RELRO,
7532         [echo "int main() {return 0;}" > conftest.${ac_ext}
7533          if AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.${ac_ext} $LIBS 1>&2) &&
7534             test -s conftest${ac_exeext}; then
7535             if ${TOOLCHAIN_PREFIX}readelf -l conftest${ac_exeext} | grep GNU_RELRO > /dev/null; then
7536                 LINK_WITH_PT_GNU_RELRO=yes
7537             else
7538                 LINK_WITH_PT_GNU_RELRO=no
7539             fi
7540          else
7541              dnl We really don't expect to get here, but just in case
7542              AC_ERROR([couldn't compile a simple C file])
7543          fi
7544          rm -rf conftest*])
7545     if test "$LINK_WITH_PT_GNU_RELRO" = yes; then
7546         AC_MSG_WARN([Disabling elfhack])
7547         USE_ELF_HACK=
7548     fi
7551 dnl ========================================================
7552 dnl = libstdc++ compatibility hacks
7553 dnl ========================================================
7555 STDCXX_COMPAT=
7556 MOZ_ARG_ENABLE_BOOL(stdcxx-compat,
7557 [  --enable-stdcxx-compat  Enable compatibility with older libstdc++],
7558     STDCXX_COMPAT=1)
7560 AC_SUBST(STDCXX_COMPAT)
7562 if test -n "$STDCXX_COMPAT"; then
7563    eval $(CXX="$CXX" $PYTHON $_topsrcdir/build/autoconf/libstdcxx.py)
7564    AC_SUBST(MOZ_LIBSTDCXX_TARGET_VERSION)
7565    AC_SUBST(MOZ_LIBSTDCXX_HOST_VERSION)
7568 dnl ========================================================
7569 dnl =
7570 dnl = Profiling and Instrumenting
7571 dnl =
7572 dnl ========================================================
7573 MOZ_ARG_HEADER(Profiling and Instrumenting)
7575 dnl ========================================================
7576 dnl = Enable runtime visual profiling logger
7577 dnl ========================================================
7578 MOZ_ARG_ENABLE_BOOL(visual-event-tracer,
7579 [  --enable-visual-event-tracer   Enable visual event tracer instrumentation],
7580     MOZ_VISUAL_EVENT_TRACER=1,
7581     MOZ_VISUAL_EVENT_TRACER=)
7582 if test -n "$MOZ_VISUAL_EVENT_TRACER"; then
7583     AC_DEFINE(MOZ_VISUAL_EVENT_TRACER)
7586 dnl ========================================================
7587 dnl Turn on reflow counting
7588 dnl ========================================================
7589 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7590 [  --enable-reflow-perf    Enable reflow performance tracing],
7591     MOZ_REFLOW_PERF=1,
7592     MOZ_REFLOW_PERF= )
7593 if test -n "$MOZ_REFLOW_PERF"; then
7594     AC_DEFINE(MOZ_REFLOW_PERF)
7597 dnl ========================================================
7598 dnl Enable code size metrics.
7599 dnl ========================================================
7600 MOZ_ARG_ENABLE_BOOL(codesighs,
7601 [  --enable-codesighs      Enable code size analysis tools],
7602     _ENABLE_CODESIGHS=1,
7603     _ENABLE_CODESIGHS= )
7604 if test -n "$_ENABLE_CODESIGHS"; then
7605     if test -d $srcdir/tools/codesighs; then
7606         MOZ_MAPINFO=1
7607     else
7608         AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
7609     fi
7612 dnl ========================================================
7613 dnl = Enable Radio Interface for B2G (Gonk usually)
7614 dnl ========================================================
7615 MOZ_ARG_ENABLE_BOOL(b2g-ril,
7616 [  --enable-b2g-ril      Set compile flags necessary for testing B2G Radio Interface Layer via network sockets ],
7617     MOZ_B2G_RIL=1,
7618     MOZ_B2G_RIL= )
7619 if test -n "$MOZ_B2G_RIL"; then
7620     AC_DEFINE(MOZ_B2G_RIL)
7622 AC_SUBST(MOZ_B2G_RIL)
7624 dnl ========================================================
7625 dnl = Enable Radio FM for B2G (Gonk usually)
7626 dnl ========================================================
7627 if test -n "$MOZ_B2G_FM"; then
7628     AC_DEFINE(MOZ_B2G_FM)
7630 AC_SUBST(MOZ_B2G_FM)
7632 dnl ========================================================
7633 dnl = Enable Bluetooth Interface for B2G (Gonk usually)
7634 dnl ========================================================
7635 MOZ_ARG_ENABLE_BOOL(b2g-bt,
7636 [  --enable-b2g-bt      Set compile flags necessary for compiling Bluetooth API for B2G ],
7637     MOZ_B2G_BT=1,
7638     MOZ_B2G_BT= )
7639 if test -n "$MOZ_B2G_BT"; then
7640     AC_DEFINE(MOZ_B2G_BT)
7642 AC_SUBST(MOZ_B2G_BT)
7644 dnl ========================================================
7645 dnl = Enable Support for Time Manager API
7646 dnl ========================================================
7647 if test -n "$MOZ_TIME_MANAGER"; then
7648     AC_DEFINE(MOZ_TIME_MANAGER)
7650 AC_SUBST(MOZ_TIME_MANAGER)
7652 dnl ========================================================
7653 dnl = Enable Camera Interface for B2G (Gonk usually)
7654 dnl ========================================================
7655 MOZ_ARG_ENABLE_BOOL(b2g-camera,
7656 [  --enable-b2g-camera      Set compile flags necessary for compiling camera API for B2G ],
7657     MOZ_B2G_CAMERA=1,
7658     MOZ_B2G_CAMERA= )
7659 if test -n "$MOZ_B2G_CAMERA"; then
7660    AC_DEFINE(MOZ_B2G_CAMERA)
7662 AC_SUBST(MOZ_B2G_CAMERA)
7664 dnl ========================================================
7665 dnl = Enable Support B2G-specific changes to the NSS
7666 dnl = certificate trust database.
7667 dnl ========================================================
7668 if test -n "$MOZ_B2G_CERTDATA"; then
7669     AC_DEFINE(MOZ_B2G_CERTDATA)
7671 AC_SUBST(MOZ_B2G_CERTDATA)
7673 dnl ========================================================
7674 dnl = Enable Support for Payment API
7675 dnl ========================================================
7676 if test -n "$MOZ_PAY"; then
7677     AC_DEFINE(MOZ_PAY)
7679 AC_SUBST(MOZ_PAY)
7681 dnl ========================================================
7682 dnl = Enable Support for AudioChannelManager API
7683 dnl ========================================================
7684 if test -n "$MOZ_AUDIO_CHANNEL_MANAGER"; then
7685     AC_DEFINE(MOZ_AUDIO_CHANNEL_MANAGER)
7687 AC_SUBST(MOZ_AUDIO_CHANNEL_MANAGER)
7689 dnl ========================================================
7690 dnl = Support for demangling undefined symbols
7691 dnl ========================================================
7692 if test -z "$SKIP_LIBRARY_CHECKS"; then
7693     AC_LANG_SAVE
7694     AC_LANG_CPLUSPLUS
7695     AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7696     AC_LANG_RESTORE
7699 # Demangle only for debug or trace-malloc or DMD builds
7700 MOZ_DEMANGLE_SYMBOLS=
7701 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC" -o "$MOZ_DMD"; then
7702     MOZ_DEMANGLE_SYMBOLS=1
7703     AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7705 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7707 dnl ========================================================
7708 dnl = Support for gcc stack unwinding (from gcc 3.3)
7709 dnl ========================================================
7710 if test -z "$SKIP_LIBRARY_CHECKS"; then
7711     MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7714 dnl ========================================================
7715 dnl JIT observers
7716 dnl ========================================================
7718 MOZ_ARG_WITH_STRING(jitreport-granularity,
7719 [  --jitreport-granularity=N
7720                            Default granularity at which to report JIT code
7721                            to external tools
7722                              0 - no info
7723                              1 - code ranges for whole functions only
7724                              2 - per-line information
7725                              3 - per-op information],
7726   JITREPORT_GRANULARITY=$withval,
7727   JITREPORT_GRANULARITY=3)
7729 AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY)
7731 dnl ========================================================
7732 dnl =
7733 dnl = Misc. Options
7734 dnl =
7735 dnl ========================================================
7736 MOZ_ARG_HEADER(Misc. Options)
7738 dnl ========================================================
7739 dnl update xterm title
7740 dnl ========================================================
7741 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7742 [  --enable-xterm-updates  Update XTERM titles with current command.],
7743     MOZ_UPDATE_XTERM=1,
7744     MOZ_UPDATE_XTERM= )
7746 dnl =========================================================
7747 dnl = Chrome format
7748 dnl =========================================================
7749 MOZ_ARG_ENABLE_STRING([chrome-format],
7750 [  --enable-chrome-format=jar|flat|omni
7751                           Select FORMAT of chrome files during packaging],
7752     MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7754 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7755     MOZ_CHROME_FILE_FORMAT=jar
7758 if test "$MOZ_CHROME_FILE_FORMAT" = "symlink"; then
7759     AC_MSG_ERROR([--enable-chrome-format=symlink has been deprecated. It is now used by default in $DIST/bin on platforms that support it])
7762 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
7763     test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7764     test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7765     AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, or omni])
7768 dnl =========================================================
7769 dnl Omnijar packaging (bug 552121)
7770 dnl =========================================================
7771 dnl Omnijar packaging is compatible with flat packaging.
7772 dnl In unpackaged builds, omnijar looks for files as if
7773 dnl things were flat packaged. After packaging, all files
7774 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7775 dnl is set to flat since putting files into jars is only
7776 dnl done during packaging with omnijar.
7777 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7778     MOZ_OMNIJAR=1
7779     AC_DEFINE(MOZ_OMNIJAR)
7781 MOZ_PACKAGER_FORMAT="$MOZ_CHROME_FILE_FORMAT"
7782 if test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "OS2" -o "$MOZ_WIDGET_TOOLKIT" = "android"; then
7783     MOZ_CHROME_FILE_FORMAT=flat
7784 else
7785     MOZ_CHROME_FILE_FORMAT=symlink
7788 OMNIJAR_NAME=omni.ja
7789 AC_SUBST(OMNIJAR_NAME)
7790 AC_SUBST(MOZ_OMNIJAR)
7791 AC_SUBST(MOZ_PACKAGER_FORMAT)
7793 dnl ========================================================
7794 dnl = Define default location for MOZILLA_FIVE_HOME
7795 dnl ========================================================
7796 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7797 [  --with-default-mozilla-five-home
7798                           Set the default value for MOZILLA_FIVE_HOME],
7799 [ val=`echo $withval`
7800   AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7802 dnl ========================================================
7803 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7804 dnl ========================================================
7805 MOZ_ARG_WITH_STRING(user-appdir,
7806 [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
7807 [ val=`echo $withval`
7808 if echo "$val" | grep "\/" >/dev/null; then
7809     AC_MSG_ERROR("Homedir must be single relative path.")
7810 else
7811     MOZ_USER_DIR="$val"
7812 fi])
7814 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7816 dnl ========================================================
7817 dnl = Doxygen configuration
7818 dnl ========================================================
7819 dnl Use commas to specify multiple dirs to this arg
7820 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7821 MOZ_ARG_WITH_STRING(doc-input-dirs,
7822 [  --with-doc-input-dirs=DIRS
7823                           Header/idl dirs to create docs from],
7824 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7825 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7827 dnl Use commas to specify multiple dirs to this arg
7828 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7829 MOZ_ARG_WITH_STRING(doc-include-dirs,
7830 [  --with-doc-include-dirs=DIRS
7831                           Include dirs to preprocess doc headers],
7832 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7833 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7835 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7836 MOZ_ARG_WITH_STRING(doc-output-dir,
7837 [  --with-doc-output-dir=DIR
7838                           Dir to generate docs into],
7839 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7840 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7842 if test -z "$SKIP_COMPILER_CHECKS"; then
7843 dnl ========================================================
7844 dnl =
7845 dnl = Compiler Options
7846 dnl =
7847 dnl ========================================================
7848 MOZ_ARG_HEADER(Compiler Options)
7850 dnl ========================================================
7851 dnl Check for gcc -pipe support
7852 dnl ========================================================
7853 AC_MSG_CHECKING([for -pipe support])
7854 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
7855     dnl Any gcc that supports firefox supports -pipe.
7856     CFLAGS="$CFLAGS -pipe"
7857     CXXFLAGS="$CXXFLAGS -pipe"
7858     AC_MSG_RESULT([yes])
7859 else
7860     AC_MSG_RESULT([no])
7863 dnl ========================================================
7864 dnl Profile guided optimization (gcc checks)
7865 dnl ========================================================
7866 dnl Test for profiling options
7867 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
7869 _SAVE_CFLAGS="$CFLAGS"
7870 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
7872 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
7873 AC_TRY_COMPILE([], [return 0;],
7874                [ PROFILE_GEN_CFLAGS="-fprofile-generate"
7875                  result="yes" ], result="no")
7876 AC_MSG_RESULT([$result])
7878 if test $result = "yes"; then
7879   PROFILE_GEN_LDFLAGS="-fprofile-generate"
7880   PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch"
7881   PROFILE_USE_LDFLAGS="-fprofile-use"
7884 CFLAGS="$_SAVE_CFLAGS"
7886 if test -n "$INTEL_CC"; then
7887   PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
7888   PROFILE_GEN_LDFLAGS=
7889   PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
7890   PROFILE_USE_LDFLAGS=
7893 dnl Sun Studio on Solaris
7894 if test "$SOLARIS_SUNPRO_CC"; then
7895   PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
7896   PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7897   PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7898   PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7901 AC_SUBST(PROFILE_GEN_CFLAGS)
7902 AC_SUBST(PROFILE_GEN_LDFLAGS)
7903 AC_SUBST(PROFILE_USE_CFLAGS)
7904 AC_SUBST(PROFILE_USE_LDFLAGS)
7906 AC_LANG_CPLUSPLUS
7908 dnl ========================================================
7909 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7910 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7911 dnl raw pointers in nsCOMPtr.h.  (VC++ has the same bug.)
7912 dnl ========================================================
7913 _SAVE_CXXFLAGS=$CXXFLAGS
7914 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7915 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7916     ac_nscap_nonconst_opeq_bug,
7917     [AC_TRY_COMPILE([
7918                       template <class T>
7919                       class Pointer
7920                         {
7921                         public:
7922                           T* myPtr;
7923                         };
7925                       template <class T, class U>
7926                       int operator==(const Pointer<T>& rhs, U* lhs)
7927                         {
7928                           return rhs.myPtr == lhs;
7929                         }
7931                       template <class T, class U>
7932                       int operator==(const Pointer<T>& rhs, const U* lhs)
7933                         {
7934                           return rhs.myPtr == lhs;
7935                         }
7936                     ],
7937                     [
7938                       Pointer<int> foo;
7939                       const int* bar;
7940                       return foo == bar;
7941                     ],
7942                     ac_nscap_nonconst_opeq_bug="no",
7943                     ac_nscap_nonconst_opeq_bug="yes")])
7944 CXXFLAGS="$_SAVE_CXXFLAGS"
7946 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7947     AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7949 fi # ! SKIP_COMPILER_CHECKS
7951 AC_DEFINE(CPP_THROW_NEW, [throw()])
7952 AC_LANG_C
7954 if test "$COMPILE_ENVIRONMENT"; then
7955 MOZ_EXPAND_LIBS
7956 fi # COMPILE_ENVIRONMENT
7958 dnl ========================================================
7959 dnl =
7960 dnl = Build depencency options
7961 dnl =
7962 dnl ========================================================
7963 MOZ_ARG_HEADER(Build dependencies)
7965 if test "$GNU_CC" -a "$GNU_CXX"; then
7966   _DEPEND_CFLAGS='-MD -MP -MF $(MDDEPDIR)/$(@F).pp'
7967 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7968 elif test "$SOLARIS_SUNPRO_CC"; then
7969   _DEPEND_CFLAGS=
7970 else
7971   dnl Don't override this for MSVC
7972   if test -z "$_WIN32_MSVC"; then
7973     _USE_CPP_INCLUDE_FLAG=
7974     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7975     _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7976   else
7977     echo '#include <stdio.h>' > dummy-hello.c
7978     changequote(,)
7979     CL_INCLUDES_PREFIX=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/^\([^:]*:[^:]*:\).*stdio.h$/\1/p'`
7980     changequote([,])
7981     if test -z "$CL_INCLUDES_PREFIX"; then
7982         AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
7983     fi
7984     AC_SUBST(CL_INCLUDES_PREFIX)
7985     rm -f dummy-hello.c
7986   fi
7989 dnl ========================================================
7990 dnl =
7991 dnl = Static Build Options
7992 dnl =
7993 dnl ========================================================
7994 MOZ_ARG_HEADER(Static build options)
7996 # split JS out by default to avoid VS2005 PGO crash (bug 591836).
7997 if test "$OS_ARCH" = "WINNT"; then
7998   ENABLE_SHARED_JS=1
8001 MOZ_ARG_ENABLE_BOOL(shared-js,
8002 [  --enable-shared-js
8003                           Create a shared JavaScript library.],
8004     ENABLE_SHARED_JS=1,
8005     ENABLE_SHARED_JS=)
8007 if test -n "$ENABLE_SHARED_JS"; then
8008   JS_SHARED_LIBRARY=1
8009   MOZ_JS_LIBS="$MOZ_JS_SHARED_LIBS"
8010 else
8011   MOZ_JS_LIBS="$MOZ_JS_STATIC_LIBS"
8012   AC_DEFINE(MOZ_STATIC_JS)
8014 AC_SUBST(JS_SHARED_LIBRARY)
8016 AC_SUBST(LIBXUL_LIBS)
8017 XPCOM_LIBS="$LIBXUL_LIBS"
8019 dnl ========================================================
8020 dnl =
8021 dnl = Standalone module options
8022 dnl =
8023 dnl ========================================================
8024 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
8026 dnl Check for GLib.
8027 dnl ========================================================
8029 if test -z "$SKIP_PATH_CHECKS"; then
8030 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
8031     if test "$MOZ_ENABLE_GTK2" -o "$USE_ELF_DYNSTR_GC" ; then
8032         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
8033     fi
8037 if test -z "${GLIB_GMODULE_LIBS}" \
8038    -a -n "${GLIB_CONFIG}"\
8039     -a "${GLIB_CONFIG}" != no\
8040 ; then
8041     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
8044 AC_SUBST(GLIB_CFLAGS)
8045 AC_SUBST(GLIB_LIBS)
8046 AC_SUBST(GLIB_GMODULE_LIBS)
8048 dnl ========================================================
8049 dnl Graphics checks.
8050 dnl ========================================================
8052 if test "${OS_TARGET}" = "WINNT" -o "${MOZ_WIDGET_TOOLKIT}" = "android" -o "${MOZ_WIDGET_TOOLKIT}" = "gtk2"; then
8053 MOZ_ENABLE_SKIA=1
8054 else
8055 MOZ_ENABLE_SKIA=
8058 MOZ_ARG_ENABLE_BOOL(skia,
8059 [  --enable-skia   Enable use of Skia],
8060 MOZ_ENABLE_SKIA=1,
8061 MOZ_ENABLE_SKIA=)
8063 if test "$USE_FC_FREETYPE"; then
8064     if test "$COMPILE_ENVIRONMENT"; then
8065         dnl ========================================================
8066         dnl = Check for freetype2 and its functionality
8067         dnl ========================================================
8068         PKG_CHECK_MODULES(FT2, freetype2 >= 6.1.0, _HAVE_FREETYPE2=1, _HAVE_FREETYPE2=)
8070         if test "$_HAVE_FREETYPE2"; then
8071             _SAVE_LIBS="$LIBS"
8072             _SAVE_CFLAGS="$CFLAGS"
8073             LIBS="$LIBS $FT2_LIBS"
8074             CFLAGS="$CFLAGS $FT2_CFLAGS"
8076             AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
8077                 ac_cv_member_FT_Bitmap_Size_y_ppem,
8078                 [AC_TRY_COMPILE([#include <ft2build.h>
8079                                  #include FT_FREETYPE_H],
8080                                 [FT_Bitmap_Size s;
8081                                  if (sizeof s.y_ppem) return 0;
8082                                  return 1],
8083                                 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
8084                                 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
8085             if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
8086                 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
8087             else
8088                 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
8089             fi
8090             AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
8091                                $HAVE_FT_BITMAP_SIZE_Y_PPEM,
8092                                [FT_Bitmap_Size structure includes y_ppem field])
8094             AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
8096             LIBS="$_SAVE_LIBS"
8097             CFLAGS="$_SAVE_CFLAGS"
8098         fi
8100         _SAVE_CPPFLAGS="$CPPFLAGS"
8101         CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
8102         MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
8103             [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
8104         CPPFLAGS="$_SAVE_CPPFLAGS"
8105     else
8106         AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
8107     fi
8109     PKG_CHECK_MODULES(_FONTCONFIG, fontconfig,
8110     [
8111         if test "$MOZ_PANGO"; then
8112             MOZ_PANGO_CFLAGS="$MOZ_PANGO_CFLAGS $_FONTCONFIG_CFLAGS"
8113             MOZ_PANGO_LIBS="$MOZ_PANGO_LIBS $_FONTCONFIG_LIBS"
8114         else
8115             FT2_CFLAGS="$FT2_CFLAGS $_FONTCONFIG_CFLAGS"
8116             FT2_LIBS="$FT2_LIBS $_FONTCONFIG_LIBS"
8117         fi
8118     ])
8121 dnl ========================================================
8122 dnl Check for pixman and cairo
8123 dnl ========================================================
8125 MOZ_TREE_CAIRO=1
8126 MOZ_ARG_ENABLE_BOOL(system-cairo,
8127 [  --enable-system-cairo   Use system cairo (located with pkgconfig)],
8128 MOZ_TREE_CAIRO=,
8129 MOZ_TREE_CAIRO=1 )
8131 MOZ_TREE_PIXMAN=1
8132 MOZ_ARG_ENABLE_BOOL(system-pixman,
8133 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
8134 MOZ_TREE_PIXMAN=,
8135 MOZ_TREE_PIXMAN=force,
8136 MOZ_TREE_PIXMAN=1 )
8138 # System cairo depends on system pixman
8139 if test "$MOZ_TREE_PIXMAN" = "force"; then
8140     if test -z "$MOZ_TREE_CAIRO"; then
8141         AC_MSG_ERROR([--disable-system-pixman is incompatible with --enable-system-cairo.])
8142     else
8143         MOZ_TREE_PIXMAN=1
8144     fi
8145 elif test -z "$MOZ_TREE_CAIRO"; then
8146     MOZ_TREE_PIXMAN=
8149 if test "$MOZ_TREE_PIXMAN"; then
8150     AC_DEFINE(MOZ_TREE_PIXMAN)
8151     MOZ_PIXMAN_CFLAGS=""
8152     MOZ_PIXMAN_LIBS='$(call EXPAND_LIBNAME_PATH,mozlibpixman,$(DEPTH)/gfx/cairo/libpixman/src)'
8153 else
8154     PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.19.2)
8155     MOZ_PIXMAN_CFLAGS="$PIXMAN_CFLAGS"
8156     MOZ_PIXMAN_LIBS="$PIXMAN_LIBS"
8158 AC_SUBST(MOZ_PIXMAN_CFLAGS)
8159 AC_SUBST(MOZ_PIXMAN_LIBS)
8161 # Check for headers defining standard int types.
8162 MOZ_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
8164 if test "$MOZ_TREE_CAIRO"; then
8165     MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
8166     AC_DEFINE(MOZ_TREE_CAIRO)
8168     # For now we assume that we will have a uint64_t available through
8169     # one of the above headers or mozstdint.h.
8170     AC_DEFINE(HAVE_UINT64_T)
8172     # Define macros for cairo-features.h
8173     TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
8174     if test "$MOZ_X11"; then
8175         XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
8176         XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
8177         PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
8178         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8179         MOZ_ENABLE_CAIRO_FT=1
8180         CAIRO_FT_CFLAGS="$FT2_CFLAGS"
8181     fi
8182     case "$MOZ_WIDGET_TOOLKIT" in
8183       qt)
8184         QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
8185         ;;
8186       cocoa | uikit)
8187         QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
8188         QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
8189         QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
8190         ;;
8191       windows)
8192         WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
8193         WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
8194         if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
8195             WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
8196             WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
8197             MOZ_ENABLE_D2D_SURFACE=1
8198             MOZ_ENABLE_DWRITE_FONT=1
8199         else
8200             WIN32_DWRITE_FONT_FEATURE=
8201             WIN32_D2D_SURFACE_FEATURE=
8202         fi
8204         MOZ_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
8206         dnl D3D10 Layers depend on D2D Surfaces.
8207         if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
8208           MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
8209         fi
8210         ;;
8211       os2)
8212         OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
8213         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8214         MOZ_ENABLE_CAIRO_FT=1
8215         CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
8216         CAIRO_FT_OSLIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
8217         CAIRO_FT_LIBS=""
8218         ;;
8219     esac
8220     if test "$USE_FC_FREETYPE"; then
8221         FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
8222     fi
8223     AC_SUBST(MOZ_ENABLE_CAIRO_FT)
8224     AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
8225     AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
8226     AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
8227     AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
8228     AC_SUBST(CAIRO_FT_CFLAGS)
8230     AC_SUBST(PS_SURFACE_FEATURE)
8231     AC_SUBST(PDF_SURFACE_FEATURE)
8232     AC_SUBST(SVG_SURFACE_FEATURE)
8233     AC_SUBST(XLIB_SURFACE_FEATURE)
8234     AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
8235     AC_SUBST(QUARTZ_SURFACE_FEATURE)
8236     AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
8237     AC_SUBST(WIN32_SURFACE_FEATURE)
8238     AC_SUBST(OS2_SURFACE_FEATURE)
8239     AC_SUBST(DIRECTFB_SURFACE_FEATURE)
8240     AC_SUBST(FT_FONT_FEATURE)
8241     AC_SUBST(FC_FONT_FEATURE)
8242     AC_SUBST(WIN32_FONT_FEATURE)
8243     AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
8244     AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
8245     AC_SUBST(QUARTZ_FONT_FEATURE)
8246     AC_SUBST(PNG_FUNCTIONS_FEATURE)
8247     AC_SUBST(QT_SURFACE_FEATURE)
8248     AC_SUBST(TEE_SURFACE_FEATURE)
8250     MOZ_CAIRO_LIBS='$(call EXPAND_LIBNAME_PATH,mozcairo,$(DEPTH)/gfx/cairo/cairo/src)'" $CAIRO_FT_LIBS"
8251     MOZ_CAIRO_OSLIBS='${CAIRO_FT_OSLIBS}'
8253     if test "$MOZ_X11"; then
8254         MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
8255     fi
8257     CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
8258 else
8259     PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION)
8260     MOZ_CAIRO_CFLAGS="$CAIRO_CFLAGS"
8261     MOZ_CAIRO_LIBS="$CAIRO_LIBS"
8262     PKG_CHECK_MODULES(CAIRO_TEE, cairo-tee >= $CAIRO_VERSION)
8263     if test "$MOZ_X11"; then
8264         PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
8265         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
8266         MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_LIBS"
8267         MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
8268     fi
8271 AC_SUBST(MOZ_TREE_CAIRO)
8272 AC_SUBST(MOZ_CAIRO_CFLAGS)
8273 AC_SUBST(MOZ_CAIRO_LIBS)
8274 AC_SUBST(MOZ_CAIRO_OSLIBS)
8275 AC_SUBST(MOZ_TREE_PIXMAN)
8277 dnl ========================================================
8278 dnl qcms
8279 dnl ========================================================
8281 QCMS_LIBS='$(DEPTH)/gfx/qcms/$(LIB_PREFIX)mozqcms.$(LIB_SUFFIX)'
8282 AC_SUBST(QCMS_LIBS)
8284 dnl ========================================================
8285 dnl HarfBuzz
8286 dnl ========================================================
8287 MOZ_HARFBUZZ_LIBS='$(DEPTH)/gfx/harfbuzz/src/$(LIB_PREFIX)mozharfbuzz.$(LIB_SUFFIX)'
8288 AC_SUBST(MOZ_HARFBUZZ_LIBS)
8290 dnl ========================================================
8291 dnl SIL Graphite
8292 dnl ========================================================
8293 MOZ_GRAPHITE_LIBS='$(DEPTH)/gfx/graphite2/src/$(LIB_PREFIX)mozgraphite2.$(LIB_SUFFIX)'
8294 AC_SUBST(MOZ_GRAPHITE_LIBS)
8296 dnl ========================================================
8297 dnl OTS
8298 dnl ========================================================
8299 MOZ_OTS_LIBS='$(DEPTH)/gfx/ots/src/$(LIB_PREFIX)mozots.$(LIB_SUFFIX)'
8300 AC_SUBST(MOZ_OTS_LIBS)
8302 dnl ========================================================
8303 dnl Skia 
8304 dnl ========================================================
8305 if test "$MOZ_ENABLE_SKIA"; then
8306   MOZ_SKIA_LIBS='$(DEPTH)/gfx/skia/$(LIB_PREFIX)skia.$(LIB_SUFFIX)'
8307   AC_DEFINE(MOZ_ENABLE_SKIA)
8308   AC_DEFINE(USE_SKIA)
8309   if test "${MOZ_WIDGET_TOOLKIT}" = "android" -o x"$MOZ_WIDGET_TOOLKIT" = x"gonk"; then
8310     AC_DEFINE(SK_BUILD_FOR_ANDROID_NDK)
8311   elif test "$OS_ARCH" = "WINNT"; then
8312     AC_DEFINE(SKIA_DLL)
8313     AC_DEFINE(GR_DLL)
8314   fi
8316   if test "${CPU_ARCH}" != "ppc" -a "${CPU_ARCH}" != "ppc64"; then
8317     MOZ_ENABLE_SKIA_GPU=1
8318     AC_DEFINE(USE_SKIA_GPU)
8319     AC_SUBST(MOZ_ENABLE_SKIA_GPU)
8320   fi
8321 else
8322   MOZ_SKIA_LIBS=
8324 AC_SUBST(MOZ_ENABLE_SKIA)
8325 AC_SUBST(MOZ_SKIA_LIBS)
8327 dnl ========================================================
8328 dnl disable xul
8329 dnl ========================================================
8330 MOZ_ARG_DISABLE_BOOL(xul,
8331 [  --disable-xul           Disable XUL],
8332     MOZ_XUL= )
8333 if test "$MOZ_XUL"; then
8334   AC_DEFINE(MOZ_XUL)
8335 else
8336   dnl remove extensions that require XUL
8337   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8340 AC_SUBST(MOZ_XUL)
8342 dnl ========================================================
8343 dnl disable profile locking
8344 dnl   do no use this in applications that can have more than
8345 dnl   one process accessing the profile directory.
8346 dnl ========================================================
8347 MOZ_ARG_DISABLE_BOOL(profilelocking,
8348 [  --disable-profilelocking
8349                           Disable profile locking],
8350     MOZ_PROFILELOCKING=,
8351     MOZ_PROFILELOCKING=1 )
8352 if test "$MOZ_PROFILELOCKING"; then
8353   AC_DEFINE(MOZ_PROFILELOCKING)
8356 dnl ========================================================
8357 dnl necko configuration options
8358 dnl ========================================================
8361 dnl option to disable various necko protocols
8363 MOZ_ARG_ENABLE_STRING(necko-protocols,
8364 [  --enable-necko-protocols[={http,ftp,default,all,none}]
8365                           Enable/disable specific protocol handlers],
8366 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8367     if test "$option" = "yes" -o "$option" = "all"; then
8368         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8369     elif test "$option" = "no" -o "$option" = "none"; then
8370         NECKO_PROTOCOLS=""
8371     elif test "$option" = "default"; then
8372         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8373     elif test `echo "$option" | grep -c \^-` != 0; then
8374         option=`echo $option | sed 's/^-//'`
8375         NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8376     else
8377         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8378     fi
8379 done],
8380     NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8381 dnl Remove dupes
8382 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8383 AC_SUBST(NECKO_PROTOCOLS)
8384 for p in $NECKO_PROTOCOLS; do
8385     AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8386     _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_PROTOCOL_$p"
8387 done
8390 dnl option to disable necko's wifi scanner
8392 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8393 [  --disable-necko-wifi    Disable necko wifi scanner],
8394     NECKO_WIFI=,
8395     NECKO_WIFI=1)
8397 if test "$OS_ARCH" = "OS2"; then
8398   dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
8399   NECKO_WIFI=
8401 if test "$NECKO_WIFI" -a \
8402         "$OS_ARCH" != "Linux" -a \
8403         "$OS_ARCH" != "Darwin" -a \
8404         "$OS_ARCH" != "SunOS" -a \
8405         "$OS_ARCH" != "WINNT"; then
8406   AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi])
8409 if test "$NECKO_WIFI"; then
8410   AC_DEFINE(NECKO_WIFI)
8411   _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
8413 AC_SUBST(NECKO_WIFI)
8416 dnl option to disable cookies
8418 MOZ_ARG_DISABLE_BOOL(cookies,
8419 [  --disable-cookies       Disable cookie support],
8420     NECKO_COOKIES=,
8421     NECKO_COOKIES=1)
8422 AC_SUBST(NECKO_COOKIES)
8423 if test "$NECKO_COOKIES"; then
8424     AC_DEFINE(NECKO_COOKIES)
8425     _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
8429 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8431 MOZ_ARG_DISABLE_BOOL(ctypes,
8432 [  --disable-ctypes        Disable js-ctypes],
8433     BUILD_CTYPES=,
8434     BUILD_CTYPES=1)
8435 AC_SUBST(BUILD_CTYPES)
8436 if test "$BUILD_CTYPES"; then
8437     AC_DEFINE(BUILD_CTYPES)
8440 dnl Build Places if required
8441 if test "$MOZ_PLACES"; then
8442   AC_DEFINE(MOZ_PLACES)
8445 dnl Build Common JS modules provided by services.
8446 AC_SUBST(MOZ_SERVICES_COMMON)
8447 if test -n "$MOZ_SERVICES_COMMON"; then
8448   AC_DEFINE(MOZ_SERVICES_COMMON)
8451 dnl Build Services crypto component (used by Sync)
8452 AC_SUBST(MOZ_SERVICES_CRYPTO)
8453 if test -n "$MOZ_SERVICES_CRYPTO"; then
8454   AC_DEFINE(MOZ_SERVICES_CRYPTO)
8457 dnl Build Firefox Health Reporter Service
8458 AC_SUBST(MOZ_SERVICES_HEALTHREPORT)
8459 if test -n "$MOZ_SERVICES_HEALTHREPORT"; then
8460   AC_DEFINE(MOZ_SERVICES_HEALTHREPORT)
8463 dnl Build Services metrics component
8464 AC_SUBST(MOZ_SERVICES_METRICS)
8465 if test -n "$MOZ_SERVICES_METRICS"; then
8466   AC_DEFINE(MOZ_SERVICES_METRICS)
8469 dnl Build Notifications if required
8470 AC_SUBST(MOZ_SERVICES_NOTIFICATIONS)
8471 if test -n "$MOZ_SERVICES_NOTIFICATIONS"; then
8472   AC_DEFINE(MOZ_SERVICES_NOTIFICATIONS)
8475 dnl Build Sync Services if required
8476 AC_SUBST(MOZ_SERVICES_SYNC)
8477 if test -n "$MOZ_SERVICES_SYNC"; then
8478   AC_DEFINE(MOZ_SERVICES_SYNC)
8481 dnl Build Captive Portal Detector if required
8482 AC_SUBST(MOZ_CAPTIVEDETECT)
8483 if test -n "$MOZ_CAPTIVEDETECT"; then
8484   AC_DEFINE(MOZ_CAPTIVEDETECT)
8487 dnl Build WBMP decoder if required
8488 AC_SUBST(MOZ_WBMP)
8489 if test -n "$MOZ_WBMP"; then
8490   AC_DEFINE(MOZ_WBMP)
8493 dnl ========================================================
8494 if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC" -o "$MOZ_DMD"; then
8495     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8498 if test "$MOZ_APP_COMPONENT_INCLUDE"; then
8499   AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_INCLUDE, "$MOZ_APP_COMPONENT_INCLUDE")
8502 if test "$MOZ_APP_COMPONENT_MODULES"; then
8503   AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_MODULES, $MOZ_APP_COMPONENT_MODULES)
8506 dnl ========================================================
8507 dnl =
8508 dnl = Maintainer debug option (no --enable equivalent)
8509 dnl =
8510 dnl ========================================================
8512 AC_SUBST(AR)
8513 AC_SUBST(AR_FLAGS)
8514 AC_SUBST(AR_LIST)
8515 AC_SUBST(AR_EXTRACT)
8516 AC_SUBST(AR_DELETE)
8517 AC_SUBST(AS)
8518 AC_SUBST(ASFLAGS)
8519 AC_SUBST(AS_DASH_C_FLAG)
8520 AC_SUBST(LD)
8521 AC_SUBST(RC)
8522 AC_SUBST(RCFLAGS)
8523 AC_SUBST(MC)
8524 AC_SUBST(WINDRES)
8525 AC_SUBST(IMPLIB)
8526 AC_SUBST(FILTER)
8527 AC_SUBST(BIN_FLAGS)
8528 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8529 AC_SUBST(MOZ_UPDATE_XTERM)
8530 AC_SUBST(MOZ_PLATFORM_MAEMO)
8531 AC_SUBST(MOZ_AUTH_EXTENSION)
8532 AC_SUBST(MOZ_PERMISSIONS)
8533 AC_SUBST(MOZ_PREF_EXTENSIONS)
8534 AC_SUBST(MOZ_JS_LIBS)
8535 AC_SUBST(MOZ_PSM)
8536 AC_SUBST(MOZ_DEBUG)
8537 AC_SUBST(MOZ_DEBUG_SYMBOLS)
8538 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
8539 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
8540 AC_SUBST(MOZ_DEBUG_FLAGS)
8541 AC_SUBST(MOZ_DEBUG_LDFLAGS)
8542 AC_SUBST(WARNINGS_AS_ERRORS)
8543 AC_SUBST(MOZ_EXTENSIONS)
8544 AC_SUBST(MOZ_JSDEBUGGER)
8545 AC_SUBST(MOZ_ENABLE_PROFILER_SPS)
8546 AC_SUBST(MOZ_JPROF)
8547 AC_SUBST(MOZ_SHARK)
8548 AC_SUBST(MOZ_INSTRUMENTS)
8549 AC_SUBST(MOZ_CALLGRIND)
8550 AC_SUBST(MOZ_VTUNE)
8551 AC_SUBST(MOZ_PROFILING)
8552 AC_SUBST(LIBICONV)
8553 AC_SUBST(MOZ_PLACES)
8554 AC_SUBST(MOZ_TOOLKIT_SEARCH)
8555 AC_SUBST(MOZ_FEEDS)
8556 AC_SUBST(NS_PRINTING)
8557 AC_SUBST(MOZ_WEBGL)
8558 AC_SUBST(MOZ_HELP_VIEWER)
8559 AC_SUBST(TOOLCHAIN_PREFIX)
8561 AC_SUBST(JAVA)
8562 AC_SUBST(JAVAC)
8563 AC_SUBST(JAVAH)
8564 AC_SUBST(JAR)
8566 AC_SUBST(MOZ_PROFILELOCKING)
8568 AC_SUBST(ENABLE_TESTS)
8569 AC_SUBST(ENABLE_MARIONETTE)
8570 AC_SUBST(IBMBIDI)
8571 AC_SUBST(MOZ_UNIVERSALCHARDET)
8572 AC_SUBST(ACCESSIBILITY)
8573 AC_SUBST(MOZ_SPELLCHECK)
8574 AC_SUBST(MOZ_ANDROID_OMTC)
8575 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
8576 AC_SUBST(MOZ_ONLY_TOUCH_EVENTS)
8577 AC_SUBST(MOZ_CRASHREPORTER)
8578 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
8579 AC_SUBST(MOZ_CRASHREPORTER_UPLOAD_FULL_SYMBOLS)
8580 AC_SUBST(MOZ_MAINTENANCE_SERVICE)
8581 AC_SUBST(MOZ_STUB_INSTALLER)
8582 AC_SUBST(MOZ_VERIFY_MAR_SIGNATURE)
8583 AC_SUBST(MOZ_ENABLE_SIGNMAR)
8584 AC_SUBST(MOZ_UPDATER)
8585 AC_SUBST(MOZ_ANGLE_RENDERER)
8586 AC_SUBST(MOZ_DIRECTX_SDK_PATH)
8587 AC_SUBST(MOZ_DIRECTX_SDK_CPU_SUFFIX)
8588 AC_SUBST(MOZ_D3DX9_VERSION)
8589 AC_SUBST(MOZ_D3DCOMPILER_CAB)
8590 AC_SUBST(MOZ_D3DCOMPILER_DLL)
8591 AC_SUBST(MOZ_METRO)
8593 AC_SUBST(MOZ_ANDROID_HISTORY)
8594 AC_SUBST(MOZ_WEBSMS_BACKEND)
8595 AC_SUBST(MOZ_ANDROID_WALLPAPER)
8596 AC_SUBST(MOZ_ANDROID_BEAM)
8597 AC_SUBST(ENABLE_STRIP)
8598 AC_SUBST(PKG_SKIP_STRIP)
8599 AC_SUBST(STRIP_FLAGS)
8600 AC_SUBST(USE_ELF_DYNSTR_GC)
8601 AC_SUBST(USE_ELF_HACK)
8602 AC_SUBST(INCREMENTAL_LINKER)
8603 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
8604 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
8606 AC_SUBST(MOZ_FIX_LINK_PATHS)
8607 AC_SUBST(XPCOM_LIBS)
8608 AC_SUBST(XPCOM_FROZEN_LDOPTS)
8609 AC_SUBST(XPCOM_GLUE_LDOPTS)
8610 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
8611 AC_SUBST(XPCOM_STATICRUNTIME_GLUE_LDOPTS)
8612 AC_SUBST(XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS)
8614 AC_SUBST(USE_DEPENDENT_LIBS)
8616 AC_SUBST(MOZ_BUILD_ROOT)
8617 AC_SUBST(MOZ_OS2_TOOLS)
8619 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
8620 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
8621 AC_SUBST(MOZ_LINKER_EXTRACT)
8623 dnl ========================================================
8624 dnl = Mac bundle name prefix
8625 dnl ========================================================
8626 MOZ_ARG_WITH_STRING(macbundlename-prefix,
8627 [  --with-macbundlename-prefix=prefix
8628                           Prefix for MOZ_MACBUNDLE_NAME],
8629 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
8631 MOZ_MACBUNDLE_NAME=`echo $MOZ_APP_DISPLAYNAME | tr -d ' '`
8632 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
8633   MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
8636 if test "$MOZ_DEBUG"; then
8637   MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}Debug.app
8638 else
8639   MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
8641 AC_SUBST(MOZ_MACBUNDLE_NAME)
8643 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
8644 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr '[A-Z]' '[a-z]'`
8645 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
8646 if test "$MOZ_DEBUG"; then
8647   MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
8650 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
8651 AC_SUBST(MOZ_MACBUNDLE_ID)
8653 # The following variables are available to branding and application
8654 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
8655 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
8656 # impacts profile location and user-visible fields.
8657 # - MOZ_APP_BASENAME: Typically stays consistent for multiple branded
8658 # versions of a given application (e.g. Aurora and Firefox both use
8659 # "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used
8660 # for application.ini's "Name" field, which controls profile location in
8661 # the absence of a "Profile" field (see below), and various system
8662 # integration hooks (Unix remoting, Windows MessageWindow name, etc.)
8663 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
8664 # Mac Bundle name, Updater, Installer), it is typically used for nightly
8665 # builds (e.g. Aurora for Firefox).
8666 # - MOZ_APP_VERSION: Defines the application version number.
8667 # - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set,
8668 # defaults to a lowercase form of MOZ_APP_BASENAME.
8669 # - MOZ_APP_PROFILE: When set, used for application.ini's
8670 # "Profile" field, which controls profile location.
8671 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
8672 # crash reporter server url.
8673 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
8674 # - MOZ_EXTENSION_MANAGER: When set, enabled extension manager.
8676 if test -z "$MOZ_APP_NAME"; then
8677    MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
8680 # For extensions and langpacks, we require a max version that is compatible
8681 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
8682 # 10.0a1 and 10.0a2 aren't affected
8683 # 10.0 becomes 10.0.*
8684 # 10.0.1 becomes 10.0.*
8685 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
8686 if test -z "$IS_ALPHA"; then
8687   changequote(,)
8688   MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*.[0-9]*\).*|\1|"`.*
8689   changequote([,])
8690 else
8691   MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
8694 MOZ_B2G_VERSION=${MOZ_B2G_VERSION:-"1.0.0"}
8695 AC_DEFINE_UNQUOTED(MOZ_B2G_VERSION,"$MOZ_B2G_VERSION")
8696 AC_DEFINE_UNQUOTED(MOZ_B2G_OS_NAME,"$MOZ_B2G_OS_NAME")
8698 AC_SUBST(MOZ_APP_NAME)
8699 AC_SUBST(MOZ_APP_DISPLAYNAME)
8700 AC_SUBST(MOZ_APP_BASENAME)
8701 AC_SUBST(MOZ_APP_VENDOR)
8702 AC_SUBST(MOZ_APP_PROFILE)
8703 AC_SUBST(MOZ_APP_ID)
8704 AC_SUBST(MAR_CHANNEL_ID)
8705 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
8706 AC_SUBST(MOZ_PROFILE_MIGRATOR)
8707 AC_SUBST(MOZ_EXTENSION_MANAGER)
8708 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
8709 AC_SUBST(MOZ_APP_UA_NAME)
8710 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
8711 AC_SUBST(MOZ_APP_VERSION)
8712 AC_SUBST(MOZ_APP_MAXVERSION)
8713 AC_DEFINE_UNQUOTED(FIREFOX_VERSION,$FIREFOX_VERSION)
8714 AC_SUBST(FIREFOX_VERSION)
8715 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
8716 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
8717   AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
8719 AC_DEFINE_UNQUOTED(MOZ_UA_BUILDID, "$MOZ_UA_BUILDID")
8720 AC_SUBST(MOZ_UA_BUILDID)
8722 AC_SUBST(MOZ_APP_STATIC_INI)
8724 AC_SUBST(MOZ_PKG_SPECIAL)
8726 AC_SUBST(MOZILLA_OFFICIAL)
8728 AC_DEFINE_UNQUOTED(MOZ_TELEMETRY_DISPLAY_REV, 2)
8729 AC_SUBST(MOZ_TELEMETRY_DISPLAY_REV)
8731 if test "$MOZ_TELEMETRY_REPORTING"; then
8732     AC_DEFINE(MOZ_TELEMETRY_REPORTING)
8734     # Enable Telemetry by default for nightly and aurora channels
8735     if test "$MOZ_UPDATE_CHANNEL" = "nightly" -o \
8736         "$MOZ_UPDATE_CHANNEL" = "aurora"; then
8737         AC_DEFINE(MOZ_TELEMETRY_ON_BY_DEFAULT)
8738     fi
8741 dnl If we have any service that uploads data (and requires data submission
8742 dnl policy alert), set MOZ_DATA_REPORTING.
8743 dnl We need SUBST for build system and DEFINE for xul preprocessor.
8744 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"; then
8745   MOZ_DATA_REPORTING=1
8746   AC_DEFINE(MOZ_DATA_REPORTING)
8747   AC_SUBST(MOZ_DATA_REPORTING)
8750 dnl win32 options
8751 AC_SUBST(MOZ_MAPINFO)
8752 AC_SUBST(MOZ_BROWSE_INFO)
8753 AC_SUBST(MOZ_TOOLS_DIR)
8754 AC_SUBST(WIN32_REDIST_DIR)
8755 AC_SUBST(MAKENSISU)
8757 dnl Echo the CFLAGS to remove extra whitespace.
8758 CFLAGS=`echo \
8759         $_WARNINGS_CFLAGS \
8760         $CFLAGS`
8762 CXXFLAGS=`echo \
8763         $_WARNINGS_CXXFLAGS \
8764         $CXXFLAGS`
8766 COMPILE_CFLAGS=`echo \
8767     $_DEFINES_CFLAGS \
8768         $_DEPEND_CFLAGS \
8769     $COMPILE_CFLAGS`
8771 COMPILE_CXXFLAGS=`echo \
8772     $_DEFINES_CXXFLAGS \
8773         $_DEPEND_CFLAGS \
8774     $COMPILE_CXXFLAGS`
8776 AC_SUBST(SYSTEM_LIBXUL)
8777 AC_SUBST(MOZ_NATIVE_JPEG)
8778 AC_SUBST(MOZ_NATIVE_PNG)
8779 AC_SUBST(MOZ_NATIVE_BZ2)
8781 AC_SUBST(MOZ_FLEXBOX)
8782 AC_SUBST(MOZ_JPEG_CFLAGS)
8783 AC_SUBST(MOZ_JPEG_LIBS)
8784 AC_SUBST(MOZ_BZ2_CFLAGS)
8785 AC_SUBST(MOZ_BZ2_LIBS)
8786 AC_SUBST(MOZ_PNG_CFLAGS)
8787 AC_SUBST(MOZ_PNG_LIBS)
8789 AC_SUBST(NSPR_CFLAGS)
8790 AC_SUBST(NSPR_LIBS)
8791 AC_SUBST(MOZ_NATIVE_NSPR)
8793 AC_SUBST(NSS_CFLAGS)
8794 AC_SUBST(NSS_LIBS)
8795 AC_SUBST(MOZ_NATIVE_NSS)
8796 AC_SUBST(NSS_DISABLE_DBM)
8798 OS_CFLAGS="$CFLAGS"
8799 OS_CXXFLAGS="$CXXFLAGS"
8800 OS_CPPFLAGS="$CPPFLAGS"
8801 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
8802 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
8803 OS_LDFLAGS="$LDFLAGS"
8804 OS_LIBS="$LIBS"
8805 AC_SUBST(OS_CFLAGS)
8806 AC_SUBST(OS_CXXFLAGS)
8807 AC_SUBST(OS_CPPFLAGS)
8808 AC_SUBST(OS_COMPILE_CFLAGS)
8809 AC_SUBST(OS_COMPILE_CXXFLAGS)
8810 AC_SUBST(OS_LDFLAGS)
8811 AC_SUBST(OS_LIBS)
8812 AC_SUBST(CROSS_COMPILE)
8813 AC_SUBST(WCHAR_CFLAGS)
8815 AC_SUBST(HOST_CC)
8816 AC_SUBST(HOST_CXX)
8817 AC_SUBST(HOST_CFLAGS)
8818 AC_SUBST(HOST_CXXFLAGS)
8819 AC_SUBST(HOST_LDFLAGS)
8820 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8821 AC_SUBST(HOST_AR)
8822 AC_SUBST(HOST_AR_FLAGS)
8823 AC_SUBST(HOST_LD)
8824 AC_SUBST(HOST_RANLIB)
8825 AC_SUBST(HOST_NSPR_MDCPUCFG)
8826 AC_SUBST(HOST_BIN_SUFFIX)
8827 AC_SUBST(HOST_OS_ARCH)
8829 AC_SUBST(TARGET_CPU)
8830 AC_SUBST(TARGET_VENDOR)
8831 AC_SUBST(TARGET_OS)
8832 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8833 AC_SUBST(TARGET_MD_ARCH)
8834 AC_SUBST(TARGET_XPCOM_ABI)
8835 AC_SUBST(OS_TARGET)
8836 AC_SUBST(OS_ARCH)
8837 AC_SUBST(OS_RELEASE)
8838 AC_SUBST(OS_TEST)
8839 AC_SUBST(CPU_ARCH)
8840 AC_SUBST(INTEL_ARCHITECTURE)
8842 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8844 AC_SUBST(WRAP_LDFLAGS)
8845 AC_SUBST(MKSHLIB)
8846 AC_SUBST(MKCSHLIB)
8847 AC_SUBST(MKSHLIB_FORCE_ALL)
8848 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8849 AC_SUBST(DSO_CFLAGS)
8850 AC_SUBST(DSO_PIC_CFLAGS)
8851 AC_SUBST(DSO_LDOPTS)
8852 AC_SUBST(LIB_PREFIX)
8853 AC_SUBST(DLL_PREFIX)
8854 AC_SUBST(DLL_SUFFIX)
8855 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8856 AC_SUBST(LIB_SUFFIX)
8857 AC_SUBST(OBJ_SUFFIX)
8858 AC_SUBST(BIN_SUFFIX)
8859 AC_SUBST(ASM_SUFFIX)
8860 AC_SUBST(IMPORT_LIB_SUFFIX)
8861 AC_SUBST(USE_N32)
8862 AC_SUBST(CC_VERSION)
8863 AC_SUBST(CXX_VERSION)
8864 AC_SUBST(MSMANIFEST_TOOL)
8865 AC_SUBST(NS_ENABLE_TSF)
8866 AC_SUBST(MOZ_NSS_PATCH)
8867 AC_SUBST(MOZ_APP_COMPONENT_LIBS)
8868 AC_SUBST(MOZ_APP_EXTRA_LIBS)
8870 AC_SUBST(MOZ_SPEEX_RESAMPLER)
8871 AC_SUBST(MOZ_SOUNDTOUCH)
8872 AC_SUBST(MOZ_CUBEB)
8873 AC_SUBST(MOZ_WAVE)
8874 AC_SUBST(MOZ_VORBIS)
8875 AC_SUBST(MOZ_TREMOR)
8876 AC_SUBST(MOZ_OPUS)
8877 AC_SUBST(MOZ_WEBM)
8878 AC_SUBST(MOZ_DASH)
8879 AC_SUBST(MOZ_WMF)
8880 AC_SUBST(MOZ_MEDIA_PLUGINS)
8881 AC_SUBST(MOZ_OMX_PLUGIN)
8882 AC_SUBST(MOZ_VP8_ERROR_CONCEALMENT)
8883 AC_SUBST(MOZ_VP8_ENCODER)
8884 AC_SUBST(MOZ_VP8)
8885 AC_SUBST(MOZ_OGG)
8886 AC_SUBST(VPX_AS)
8887 AC_SUBST(VPX_ASFLAGS)
8888 AC_SUBST(VPX_DASH_C_FLAG)
8889 AC_SUBST(VPX_AS_CONVERSION)
8890 AC_SUBST(VPX_ASM_SUFFIX)
8891 AC_SUBST(VPX_X86_ASM)
8892 AC_SUBST(VPX_ARM_ASM)
8893 AC_SUBST(VPX_NEED_OBJ_INT_EXTRACT)
8894 AC_SUBST(MOZ_INSTRUMENT_EVENT_LOOP)
8895 AC_SUBST(LIBJPEG_TURBO_AS)
8896 AC_SUBST(LIBJPEG_TURBO_ASFLAGS)
8897 AC_SUBST(LIBJPEG_TURBO_X86_ASM)
8898 AC_SUBST(LIBJPEG_TURBO_X64_ASM)
8899 AC_SUBST(LIBJPEG_TURBO_ARM_ASM)
8901 AC_SUBST(MOZ_PACKAGE_JSSHELL)
8902 AC_SUBST(MOZ_FOLD_LIBS)
8904 AC_SUBST(MOZ_ENABLE_SZIP)
8905 AC_SUBST(MOZ_SZIP_FLAGS)
8907 AC_MSG_CHECKING([for posix_fallocate])
8908 AC_TRY_LINK([#define _XOPEN_SOURCE 600
8909   #include <fcntl.h>],
8910                  [posix_fallocate(0, 0, 0);],
8911                  [ac_cv___posix_fallocate=true],
8912                  [ac_cv___posix_fallocate=false])
8914 if test "$ac_cv___posix_fallocate" = true ; then
8915   AC_DEFINE(HAVE_POSIX_FALLOCATE)
8916   AC_MSG_RESULT(yes)
8917 else
8918   AC_MSG_RESULT(no)
8921 dnl Check for missing components
8922 if test "$COMPILE_ENVIRONMENT"; then
8923 if test "$MOZ_X11"; then
8924     if test "$WITHOUT_X11"; then
8925         AC_MSG_ERROR([--without-x specified and MOZ_X11 still defined])
8926     fi
8927     dnl ====================================================
8928     dnl = Check if X headers exist
8929     dnl ====================================================
8930     _SAVE_CFLAGS=$CFLAGS
8931     CFLAGS="$CFLAGS $XCFLAGS"
8932     AC_TRY_COMPILE([
8933         #include <stdio.h>
8934         #include <stdlib.h>
8935         #include <X11/Xlib.h>
8936         #include <X11/Intrinsic.h>
8937         #include <X11/extensions/XShm.h>
8938     ],
8939     [
8940         Display *dpy = 0;
8941         if ((dpy = XOpenDisplay(NULL)) == NULL) {
8942             fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8943             exit(1);
8944         }
8945     ], [],
8946     [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8947     CFLAGS="$_SAVE_CFLAGS"
8949     if test -n "$MISSING_X"; then
8950         AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8951     fi
8953 fi # MOZ_X11
8955 dnl Check for headers, etc. needed by WebGL.
8956 if test "$MOZ_GL_DEFAULT_PROVIDER" = "GLX"; then
8957     MOZ_CHECK_HEADER(GL/glx.h)
8958     if test "$ac_cv_header_GL_glx_h" != "yes"; then
8959         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))])
8960     fi
8961 fi # MOZ_GL_DEFAULT_PROVIDER=GLX
8962 fi # COMPILE_ENVIRONMENT
8964 dnl Set various defines and substitutions
8965 dnl ========================================================
8967 if test "$OS_ARCH" = "Darwin"; then
8968   AC_DEFINE(XP_UNIX)
8969 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2"; then
8970   AC_DEFINE(XP_UNIX)
8973 if test "$MOZ_DEBUG"; then
8974     AC_DEFINE(MOZ_REFLOW_PERF)
8975     AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8978 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8979     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8980     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8981     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8982     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8983     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8984     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8985     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8986     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8989 AC_SUBST(MOZILLA_VERSION)
8991 AC_SUBST(ac_configure_args)
8993 dnl Spit out some output
8994 dnl ========================================================
8996 dnl The following defines are used by xpcom
8997 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8998 CPP_THROW_NEW
8999 HAVE_CPP_2BYTE_WCHAR_T
9000 HAVE_CPP_AMBIGUITY_RESOLVING_USING
9001 HAVE_CPP_CHAR16_T
9002 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
9003 HAVE_CPP_PARTIAL_SPECIALIZATION
9004 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
9005 NEED_CPP_UNUSED_IMPLEMENTATIONS
9006 NEW_H
9007 HAVE_GETPAGESIZE
9008 HAVE_ICONV
9009 HAVE_ICONV_WITH_CONST_INPUT
9010 HAVE_MBRTOWC
9011 HAVE_WCRTOMB
9012 HAVE_STATVFS64
9013 HAVE_STATVFS
9014 HAVE_STATFS64
9015 HAVE_STATFS
9016 HAVE_SYS_STATVFS_H
9017 HAVE_SYS_STATFS_H
9018 HAVE_SYS_VFS_H
9019 HAVE_SYS_MOUNT_H
9022 # FUTURE? Consider moving all these to moz.build files.
9023 AC_CONFIG_HEADER(
9024 netwerk/necko-config.h
9025 xpcom/xpcom-config.h
9026 xpcom/xpcom-private.h
9029 AC_OUTPUT([mozilla-config.h])
9031 # Hack around an Apple bug that affects the egrep that comes with OS X 10.7.
9032 # "env ARCHPREFERENCE=i386,x86_64 arch egrep" first tries to use the 32-bit
9033 # Intel part of the egrep fat binary, even on 64-bit systems, and falls back on
9034 # the 64-bit part if it's not a fat binary, as can happen with MacPorts. We
9035 # (apparently) only need this hack when egrep's "pattern" is particularly long
9036 # (as in the following code) and the first egrep on our $PATH is Apple's.  See
9037 # bug 655339.
9038 case "$host" in
9039 *-apple-darwin11*)
9040     FIXED_EGREP="env ARCHPREFERENCE=i386,x86_64 arch egrep"
9041     ;;
9043     FIXED_EGREP="egrep"
9044     ;;
9045 esac
9047 # Generate Makefiles for WebRTC directly from .gyp files
9048 if test "${OS_TARGET}" = "WINNT"; then
9049    if test "$HAVE_64BIT_OS"; then
9050       OS_BITS=64
9051    else
9052       OS_BITS=32
9053    fi
9054    EXTRA_GYP_DEFINES="-D MSVS_VERSION=${_MSVS_VERSION} -D MSVS_OS_BITS=${OS_BITS}"
9056 elif test "${OS_TARGET}" = "Android"; then
9057    if test "${MOZ_WIDGET_TOOLKIT}" = "gonk"; then
9058       EXTRA_GYP_DEFINES="-G os=linux "
9059    else
9060       EXTRA_GYP_DEFINES="-D gtest_target_type=executable -D android_toolchain=${android_toolchain} -G os=android "
9061    fi
9064 if test -n "$ARM_ARCH"; then
9065     if test "$ARM_ARCH" -lt 7; then
9066         EXTRA_GYP_DEFINES="${EXTRA_GYP_DEFINES} -D armv7=0 "
9067     else
9068         if test "${OS_TARGET}" = "Android"; then
9069             EXTRA_GYP_DEFINES="${EXTRA_GYP_DEFINES} -D armv7=1 "
9070         else
9071             dnl CPU detection for ARM works on Android only.  armv7 always uses CPU detection, so
9072             dnl we have to set armv7=0 for non-Android target
9073             EXTRA_GYP_DEFINES="${EXTRA_GYP_DEFINES} -D armv7=0 "
9074         fi
9075     fi
9078 # Don't try to compile sse4.1 code if toolchain doesn't support
9079 if test -z "$HAVE_TOOLCHAIN_SUPPORT_MSSE4_1"; then
9080   EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D yuv_disable_asm=1"
9083 if test -n "$MOZ_WEBRTC"; then
9084    AC_MSG_RESULT("generating WebRTC Makefiles...")
9086    if test "${MOZ_WIDGET_TOOLKIT}" = "gonk"; then
9087       EXTRA_GYP_DEFINES="${EXTRA_GYP_DEFINES} -D build_with_gonk=1 -D include_internal_audio_device=0"
9088    fi
9090 dnl Any --include files must also appear in -D FORCED_INCLUDE_FILE= entries
9091 dnl so that regeneration via dependencies works correctly
9092    WEBRTC_CONFIG="-D build_with_mozilla=1 -D build_with_chromium=0 --include ${srcdir}/media/webrtc/webrtc_config.gypi -D FORCED_INCLUDE_FILE=${srcdir}/media/webrtc/webrtc_config.gypi"
9094    if test -n HAVE_CLOCK_MONOTONIC; then
9095       WEBRTC_CONFIG="${WEBRTC_CONFIG} -D have_clock_monotonic=1"
9096    else
9097       WEBRTC_CONFIG="${WEBRTC_CONFIG} -D have_clock_monotonic=0"
9098    fi
9100    GYP_WEBRTC_OPTIONS="--format=mozmake ${WEBRTC_CONFIG} -D target_arch=${WEBRTC_TARGET_ARCH} ${EXTRA_GYP_DEFINES} --depth=${srcdir}/media/webrtc/trunk --toplevel-dir=${srcdir} -G OBJDIR=${_objdir}"
9102    $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
9103      $GYP_WEBRTC_OPTIONS \
9104      --generator-output=${_objdir}/media/webrtc/trunk \
9105      ${srcdir}/media/webrtc/trunk/peerconnection.gyp
9106    if test "$?" != 0; then
9107       AC_MSG_ERROR([failed to generate WebRTC Makefiles])
9108    fi
9110    # XXX disable until we land the tranche with signaling
9111    if test -n "$MOZ_WEBRTC_SIGNALING"; then
9112      AC_MSG_RESULT("generating WebRTC/Signaling Makefiles...")
9113      $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
9114        $GYP_WEBRTC_OPTIONS \
9115        -D build_for_test=0 \
9116        --generator-output=${_objdir}/media/webrtc/signaling \
9117        ${srcdir}/media/webrtc/signaling/signaling.gyp
9118      if test "$?" != 0; then
9119         AC_MSG_ERROR([failed to generate WebRTC/Signaling Makefiles])
9120      fi
9122      AC_MSG_RESULT("generating WebRTC/SignalingTest Makefiles...")
9123      $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
9124        $GYP_WEBRTC_OPTIONS \
9125        -D build_for_test=1 \
9126        --generator-output=${_objdir}/media/webrtc/signalingtest \
9127        ${srcdir}/media/webrtc/signaling/signaling.gyp
9128      if test "$?" != 0; then
9129        AC_MSG_ERROR([failed to generate WebRTC/SignalingTest Makefiles])
9130      fi
9131    fi
9133    AC_MSG_RESULT("generating gtest Makefiles...")
9134    # Ok to pass some extra -D's that are ignored here
9135    $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
9136      $GYP_WEBRTC_OPTIONS \
9137      --generator-output=${_objdir}/media/webrtc/trunk/testing/ \
9138      ${srcdir}/media/webrtc/trunk/testing/gtest.gyp
9139    if test "$?" != 0; then
9140       AC_MSG_ERROR([failed to generate gtest Makefiles])
9141    fi
9143    AC_MSG_RESULT("generating nrappkit Makefiles...")
9144    $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
9145      $GYP_WEBRTC_OPTIONS \
9146      --generator-output=${_objdir}/media/mtransport/third_party/nrappkit \
9147      ${srcdir}/media/mtransport/third_party/nrappkit/nrappkit.gyp
9148    if test "$?" != 0; then
9149       AC_MSG_ERROR([failed to generate nrappkit Makefiles])
9150    fi
9152    AC_MSG_RESULT("generating nICEr Makefiles...")
9153    $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
9154      $GYP_WEBRTC_OPTIONS \
9155      --generator-output=${_objdir}/media/mtransport/third_party/nICEr \
9156      ${srcdir}/media/mtransport/third_party/nICEr/nicer.gyp
9157    if test "$?" != 0; then
9158       AC_MSG_ERROR([failed to generate nICEr Makefiles])
9159    fi
9162 # Generate a JSON config file for unittest harnesses etc to read
9163 # build configuration details from in a standardized way.
9164 OS_TARGET=${OS_TARGET} \
9165 TARGET_CPU=${TARGET_CPU} \
9166 MOZ_DEBUG=${MOZ_DEBUG} \
9167 MOZ_WIDGET_TOOLKIT=${MOZ_WIDGET_TOOLKIT} \
9168 UNIVERSAL_BINARY=${UNIVERSAL_BINARY} \
9169 MOZ_CRASHREPORTER=${MOZ_CRASHREPORTER} \
9170 MOZ_APP_NAME=${MOZ_APP_NAME} \
9171 TOPSRCDIR=${_topsrcdir} \
9172   $PYTHON ${_topsrcdir}/config/writemozinfo.py ./mozinfo.json.tmp
9173 if cmp -s ./mozinfo.json.tmp ./mozinfo.json; then
9174   rm ./mozinfo.json.tmp
9175 else
9176   mv -f ./mozinfo.json.tmp ./mozinfo.json
9179 # Run jemalloc configure script
9181 if test -z "$MOZ_NATIVE_JEMALLOC" -a "$MOZ_MEMORY" && test -n "$MOZ_JEMALLOC3" -o -n "$MOZ_REPLACE_MALLOC"; then
9182   ac_configure_args="$_SUBDIR_CONFIG_ARGS --build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_"
9183   if test -n "$MOZ_REPLACE_MALLOC"; then
9184     # When using replace_malloc, we always want memalign and valloc exported from jemalloc.
9185     ac_configure_args="$ac_configure_args ac_cv_func_memalign=yes"
9186     ac_configure_args="$ac_configure_args ac_cv_func_valloc=yes"
9187   fi
9188   if test -n "$MOZ_JEMALLOC3"; then
9189     case "${OS_ARCH}" in
9190       WINNT|Darwin)
9191         # We want jemalloc functions to be kept hidden on both Mac and Windows
9192         # See memory/build/mozmemory_wrap.h for details.
9193         ac_configure_args="$ac_configure_args --without-export"
9194         ;;
9195     esac
9196   elif test "${OS_ARCH}" = Darwin; then
9197     # When building as a replace-malloc lib, disabling the zone allocator
9198     # forces to use pthread_atfork.
9199     ac_configure_args="$ac_configure_args --disable-zone-allocator"
9200   fi
9201   _MANGLE="malloc posix_memalign aligned_alloc calloc realloc free memalign valloc malloc_usable_size"
9202   JEMALLOC_WRAPPER=
9203   if test -z "$MOZ_REPLACE_MALLOC"; then
9204     case "$OS_ARCH" in
9205       Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
9206         MANGLE=$_MANGLE
9207         ;;
9208     esac
9209   elif test -z "$MOZ_JEMALLOC3"; then
9210     MANGLE=$_MANGLE
9211     JEMALLOC_WRAPPER=replace_
9212   fi
9213   if test -n "$MANGLE"; then
9214     MANGLED=
9215     if test -n "$_WRAP_MALLOC" -a -z "$JEMALLOC_WRAPPER"; then
9216       JEMALLOC_WRAPPER=__wrap_
9217     fi
9218     for mangle in ${MANGLE}; do
9219       if test -n "$MANGLED"; then
9220         MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle,$MANGLED"
9221       else
9222         MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle"
9223       fi
9224     done
9225     ac_configure_args="$ac_configure_args --with-mangling=$MANGLED"
9226   fi
9227   unset CONFIG_FILES
9228   if test -z "$MOZ_TLS"; then
9229     ac_configure_args="$ac_configure_args --disable-tls"
9230   fi
9231   EXTRA_CFLAGS="$CFLAGS"
9232   for var in AS CC CXX CPP LD AR RANLIB STRIP CPPFLAGS EXTRA_CFLAGS LDFLAGS; do
9233     ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
9234   done
9235   if test "$CROSS_COMPILE"; then
9236     ac_configure_args="$ac_configure_args je_cv_static_page_shift=12"
9237   fi
9238   _save_cache_file="$cache_file"
9239   cache_file=$_objdir/memory/jemalloc/src/config.cache
9241   if ! test -e memory/jemalloc; then
9242     mkdir -p memory/jemalloc
9243   fi
9245   AC_OUTPUT_SUBDIRS(memory/jemalloc/src)
9246   cache_file="$_save_cache_file"
9247   ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9250 # Run freetype configure script
9252 if test "$MOZ_TREE_FREETYPE"; then
9253    export CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS -std=c99"
9254    export CPPFLAGS="$CPPFLAGS $MOZ_DEBUG_FLAGS"
9255    export CXXFLAGS="$CXXFLAGS $MOZ_DEBUG_FLAGS"
9256    export LDFLAGS="$LDFLAGS $MOZ_DEBUG_LDFLAGS"
9257    export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in"
9258    ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes"
9260    if ! test -e modules; then
9261      mkdir modules
9262    fi
9264    AC_OUTPUT_SUBDIRS(modules/freetype2)
9267 if test -z "$direct_nspr_config"; then
9268     dnl ========================================================
9269     dnl = Setup a nice relatively clean build environment for
9270     dnl = sub-configures.
9271     dnl ========================================================
9272     CC="$_SUBDIR_CC"
9273     CXX="$_SUBDIR_CXX"
9274     CFLAGS="$_SUBDIR_CFLAGS"
9275     CPPFLAGS="$_SUBDIR_CPPFLAGS"
9276     CXXFLAGS="$_SUBDIR_CXXFLAGS"
9277     LDFLAGS="$_SUBDIR_LDFLAGS"
9278     HOST_CC="$_SUBDIR_HOST_CC"
9279     HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9280     HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9281     RC=
9284 unset MAKEFILES
9285 unset CONFIG_FILES
9287 # Run all configure scripts specified by a subconfigure
9288 if test -n "$_subconfigure_subdir"; then
9289   _save_ac_configure_args="$ac_configure_args"
9290   ac_configure_args="$_subconfigure_config_args"
9291   AC_OUTPUT_SUBDIRS("$_subconfigure_subdir")
9292   ac_configure_args="$_save_ac_configure_args"
9295 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9296 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9298 export WRAP_LDFLAGS
9300 if test -n "$_WRAP_MALLOC"; then
9301     # Avoid doubling wrap malloc arguments
9302     _SUBDIR_CONFIG_ARGS="`echo $_SUBDIR_CONFIG_ARGS | sed -e 's/--enable-wrap-malloc *//'`"
9305 if test -z "$MOZ_NATIVE_NSPR"; then
9306     ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9307     if test -z "$MOZ_DEBUG"; then
9308         ac_configure_args="$ac_configure_args --disable-debug"
9309     else
9310         ac_configure_args="$ac_configure_args --enable-debug"
9311     fi
9312     if test "$MOZ_OPTIMIZE" = "1"; then
9313         ac_configure_args="$ac_configure_args --enable-optimize"
9314     elif test -z "$MOZ_OPTIMIZE"; then
9315         ac_configure_args="$ac_configure_args --disable-optimize"
9316     fi
9317     if test -n "$HAVE_64BIT_OS"; then
9318         ac_configure_args="$ac_configure_args --enable-64bit"
9319     fi
9320     if test -n "$USE_ARM_KUSER"; then
9321         ac_configure_args="$ac_configure_args --with-arm-kuser"
9322     fi
9323     ac_configure_args="$ac_configure_args $NSPR_CONFIGURE_ARGS"
9324     if test -n "$MOZ_LINKER" -a "$ac_cv_func_dladdr" = no ; then
9325       # dladdr is supported by the new linker, even when the system linker doesn't
9326       # support it. Trick nspr into using dladdr when it's not supported.
9327       _SAVE_CPPFLAGS="$CPPFLAGS"
9328       export CPPFLAGS="-include $_topsrcdir/mozglue/linker/dladdr.h $CPPFLAGS"
9329     fi
9330     _SAVE_LDFLAGS="$LDFLAGS"
9331     export LDFLAGS="$LDFLAGS $NSPR_LDFLAGS"
9332     AC_OUTPUT_SUBDIRS(nsprpub)
9333     LDFLAGS="$_SAVE_LDFLAGS"
9334     if test -n "$MOZ_LINKER" -a "$ac_cv_func_dladdr" = no; then
9335       unset CPPFLAGS
9336       CPPFLAGS="$_SAVE_CFLAGS"
9337     fi
9338     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9341 dnl ========================================================
9342 dnl = Setup a nice relatively clean build environment for
9343 dnl = sub-configures.
9344 dnl ========================================================
9345 CC="$_SUBDIR_CC"
9346 CXX="$_SUBDIR_CXX"
9347 CFLAGS="$_SUBDIR_CFLAGS"
9348 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9349 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9350 LDFLAGS="$_SUBDIR_LDFLAGS"
9351 HOST_CC="$_SUBDIR_HOST_CC"
9352 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9353 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9356 if test -n "$ENABLE_CLANG_PLUGIN"; then
9357     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9358     AC_OUTPUT_SUBDIRS(build/clang-plugin)
9362 # Run the SpiderMonkey 'configure' script.
9363 dist=$MOZ_BUILD_ROOT/dist
9364 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9365 ac_configure_args="$ac_configure_args --enable-threadsafe"
9366 if test "$BUILD_CTYPES"; then
9367     # Build js-ctypes on the platforms we can.
9368     ac_configure_args="$ac_configure_args --enable-ctypes"
9370 if test -z "$JS_SHARED_LIBRARY" ; then
9371     ac_configure_args="$ac_configure_args --disable-shared-js"
9373 if test -z "$MOZ_NATIVE_NSPR"; then
9374     ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9375     ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9377 ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
9378 ac_configure_args="$ac_configure_args --prefix=$dist"
9379 if test "$MOZ_MEMORY"; then
9380    ac_configure_args="$ac_configure_args --enable-jemalloc"
9382 if test -n "$MOZ_GLUE_LDFLAGS"; then
9383    export MOZ_GLUE_LDFLAGS
9385 if test -n "$MOZ_GLUE_PROGRAM_LDFLAGS"; then
9386    export MOZ_GLUE_PROGRAM_LDFLAGS
9388 if test "$MOZ_NATIVE_ZLIB" != 1 -a "$OS_ARCH" = "WINNT"; then
9389    MOZ_ZLIB_LIBS=
9391 export MOZ_NATIVE_ZLIB
9392 export MOZ_ZLIB_CFLAGS
9393 export MOZ_ZLIB_LIBS
9394 export MOZ_APP_NAME
9395 export DONT_POPULATE_VIRTUALENV=1
9396 export PYTHON
9397 export MOZILLA_CENTRAL_PATH=$_topsrcdir
9398 export STLPORT_CPPFLAGS
9399 export STLPORT_LDFLAGS
9400 export STLPORT_LIBS
9401 export JS_STANDALONE=no
9403 if ! test -e js; then
9404     mkdir js
9407 AC_OUTPUT_SUBDIRS(js/src)
9408 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9410 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR