Bug 988704 - [dolphin][camera]camera preview is obviously slower than android. r...
[gecko.git] / configure.in
blob83de417579b4a2295441b92a1030e42669d6b8c9
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=10610
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.22.0
64 GTK2_VERSION=2.10.0
65 GTK3_VERSION=3.0.0
66 WINDRES_VERSION=2.14.90
67 W32API_VERSION=3.14
68 GNOMEVFS_VERSION=2.0
69 GNOMEUI_VERSION=2.2.0
70 GCONF_VERSION=1.2.1
71 GIO_VERSION=2.20
72 STARTUP_NOTIFICATION_VERSION=0.8
73 DBUS_VERSION=0.60
74 SQLITE_VERSION=3.8.4.2
76 MSMANIFEST_TOOL=
78 dnl Set various checks
79 dnl ========================================================
80 MISSING_X=
81 AC_PROG_AWK
83 dnl Initialize the Pthread test variables early so they can be
84 dnl  overridden by each platform.
85 dnl ========================================================
86 MOZ_USE_PTHREADS=
87 _PTHREAD_LDFLAGS=""
89 dnl Do not allow objdir == srcdir builds.
90 dnl ==============================================================
91 _topsrcdir=`cd \`dirname $0\`; pwd`
92 _objdir=`pwd`
95 dnl TODO Don't exempt L10N builds once bug 842760 is resolved.
96 if test "$_topsrcdir" = "$_objdir" -a "${with_l10n_base+set}" != set; then
97   echo "  ***"
98   echo "  * Building directly in the main source directory is not allowed."
99   echo "  *"
100   echo "  * To build, you must run configure from a separate directory"
101   echo "  * (referred to as an object directory)."
102   echo "  *"
103   echo "  * If you are building with a mozconfig, you will need to change your"
104   echo "  * mozconfig to point to a different object directory."
105   echo "  ***"
106   exit 1
109 # Check for a couple representative files in the source tree
110 _conflict_files=
111 for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
112   if test -f $file; then
113     _conflict_files="$_conflict_files $file"
114   fi
115 done
116 if test "$_conflict_files"; then
117   echo "***"
118   echo "*   Your source tree contains these files:"
119   for file in $_conflict_files; do
120     echo "*         $file"
121   done
122   cat 1>&2 <<-EOF
123   *   This indicates that you previously built in the source tree.
124   *   A source tree build can confuse the separate objdir build.
125   *
126   *   To clean up the source tree:
127   *     1. cd $_topsrcdir
128   *     2. gmake distclean
129   ***
131   exit 1
132   break
134 MOZ_BUILD_ROOT=`pwd`
136 MOZ_PYTHON
138 MOZ_DEFAULT_COMPILER
140 COMPILE_ENVIRONMENT=1
141 MOZ_ARG_DISABLE_BOOL(compile-environment,
142 [  --disable-compile-environment
143                           Disable compiler/library checks.],
144     COMPILE_ENVIRONMENT= )
145 AC_SUBST(COMPILE_ENVIRONMENT)
147 MOZ_ARG_WITH_STRING(l10n-base,
148 [  --with-l10n-base=DIR    path to l10n repositories],
149     L10NBASEDIR=$withval)
150 if test -n "$L10NBASEDIR"; then
151     if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
152         AC_MSG_ERROR([--with-l10n-base must specify a path])
153     elif test -d "$L10NBASEDIR"; then
154         L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
155     else
156         AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
157     fi
159 AC_SUBST(L10NBASEDIR)
161 dnl Check for Perl first -- needed for win32 SDK checks
162 MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
163 if test -z "$PERL" -o "$PERL" = ":"; then
164     AC_MSG_ERROR([perl not found in \$PATH])
167 if test -n "$GAIADIR" -a ! -d "$GAIADIR" ; then
168     AC_MSG_ERROR([GAIADIR '$GAIADIR' isn't a valid directory])
171 AC_SUBST(GAIADIR)
172 if test -n "$GAIADIR" ; then
173     AC_DEFINE(PACKAGE_GAIA)
176 if test -n "$FXOS_SIMULATOR" -a -z "$GAIADIR" ; then
177     AC_MSG_ERROR([FXOS_SIMULATOR=1 requires GAIADIR to be defined])
180 if test -n "$FXOS_SIMULATOR" ; then
181     AC_DEFINE(FXOS_SIMULATOR)
182     AC_SUBST(FXOS_SIMULATOR)
185 MOZ_ARG_WITH_STRING(gonk,
186 [  --with-gonk=DIR
187                location of gonk dir],
188     gonkdir=$withval)
190 MOZ_ARG_WITH_STRING(gonk-toolchain-prefix,
191 [  --with-gonk-toolchain-prefix=DIR
192                           prefix to gonk toolchain commands],
193     gonk_toolchain_prefix=$withval)
195 if test -n "$gonkdir" ; then
196     kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"`
197     android_source="$gonkdir"
198     ANDROID_SOURCE="$android_source"
199     ANDROID_NDK="${ANDROID_SOURCE}/ndk"
200     dnl Default to ICS
201     ANDROID_VERSION=15
202     if test -n "${PLATFORM_SDK_VERSION}"; then
203         ANDROID_VERSION="${PLATFORM_SDK_VERSION}"
204     fi
206     dnl set up compilers
207     TOOLCHAIN_PREFIX="$gonk_toolchain_prefix"
208     AS="$gonk_toolchain_prefix"as
209     CC="$gonk_toolchain_prefix"gcc
210     CXX="$gonk_toolchain_prefix"g++
211     CPP="$gonk_toolchain_prefix"cpp
212     LD="$gonk_toolchain_prefix"ld
213     AR="$gonk_toolchain_prefix"ar
214     RANLIB="$gonk_toolchain_prefix"ranlib
215     STRIP="$gonk_toolchain_prefix"strip
216     OBJCOPY="$gonk_toolchain_prefix"objcopy
218     if ! test -e "$gonkdir/ndk/sources/cxx-stl/stlport/src/iostream.cpp"; then
219         AC_MSG_ERROR([Couldn't find path to stlport sources in the gonk tree])
220     fi
221     STLPORT_CPPFLAGS="-I$_topsrcdir/build/stlport/stlport -I$gonkdir/ndk/sources/cxx-stl/system/include"
222     STLPORT_LIBS="$_objdir/build/stlport/libstlport_static.a"
224     case "$target_cpu" in
225     arm)
226         ARCH_DIR=arch-arm
227         ;;
228     i?86)
229         ARCH_DIR=arch-x86
230         ;;
231     esac
233     case "$ANDROID_VERSION" in
234     15)
235         GONK_INCLUDES="-I$gonkdir/frameworks/base/opengl/include -I$gonkdir/frameworks/base/native/include -I$gonkdir/frameworks/base/include -I$gonkdir/frameworks/base/services/camera -I$gonkdir/frameworks/base/include/media/ -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/external/dbus -I$gonkdir/external/bluetooth/bluez/lib -I$gonkdir/dalvik/libnativehelper/include/nativehelper"
236         MOZ_B2G_BT=1
237         MOZ_B2G_BT_BLUEZ=1
238         MOZ_NFC=1
239         MOZ_B2G_CAMERA=1
240         MOZ_OMX_DECODER=1
241         AC_SUBST(MOZ_OMX_DECODER)
242         MOZ_RTSP=1
243         ;;
244     17|18)
245         GONK_INCLUDES="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include"
246         if test -d "$gonkdir/external/bluetooth/bluez"; then
247           GONK_INCLUDES="$GONK_INCLUDES -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib"
248             MOZ_B2G_BT=1
249             MOZ_B2G_BT_BLUEZ=1
250         elif test -d "$gonkdir/external/bluetooth/bluedroid"; then
251             MOZ_B2G_BT=1
252             MOZ_B2G_BT_BLUEDROID=1
253         fi
255         MOZ_RTSP=1
256         MOZ_NFC=1
257         MOZ_B2G_CAMERA=1
258         MOZ_OMX_DECODER=1
259         AC_SUBST(MOZ_OMX_DECODER)
260         MOZ_OMX_ENCODER=1
261         AC_SUBST(MOZ_OMX_ENCODER)
262         AC_DEFINE(MOZ_OMX_ENCODER)
263         ;;
264     19)
265         GONK_INCLUDES="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include"
266         MOZ_B2G_CAMERA=1
267         MOZ_B2G_BT=1
268         MOZ_B2G_BT_BLUEDROID=1
269         MOZ_NFC=1
270         MOZ_RTSP=1
271         MOZ_OMX_DECODER=1
272         MOZ_OMX_ENCODER=1
273         AC_DEFINE(MOZ_OMX_ENCODER)
274         MOZ_AUDIO_OFFLOAD=1
275         AC_SUBST(MOZ_AUDIO_OFFLOAD)
276         AC_DEFINE(MOZ_AUDIO_OFFLOAD)
278         ;;
279     *)
280         AC_MSG_ERROR([Unsupported platform version: $ANDROID_VERSION])
281         ;;
282     esac
283     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/system -I$gonkdir/system/core/include -isystem $gonkdir/bionic -I$gonkdir/hardware/libhardware/include -I$gonkdir/external/valgrind/fxos-include $GONK_INCLUDES $CPPFLAGS"
284     CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS"
285     CXXFLAGS="-mandroid -fno-short-enums -fno-exceptions -Wno-psabi $CXXFLAGS $STLPORT_CPPFLAGS"
286     dnl Add -llog by default, since we use it all over the place.
287     LIBS="$LIBS -llog"
289     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"
291     dnl prevent cross compile section from using these flags as host flags
292     if test -z "$HOST_CPPFLAGS" ; then
293         HOST_CPPFLAGS=" "
294     fi
295     if test -z "$HOST_CFLAGS" ; then
296         HOST_CFLAGS=" "
297     fi
298     if test -z "$HOST_CXXFLAGS" ; then
299         HOST_CXXFLAGS=" "
300     fi
301     if test -z "$HOST_LDFLAGS" ; then
302         HOST_LDFLAGS=" "
303     fi
305     AC_DEFINE(ANDROID)
306     AC_DEFINE_UNQUOTED(ANDROID_VERSION, $ANDROID_VERSION)
307     AC_SUBST(ANDROID_VERSION)
308     AC_DEFINE(HAVE_SYS_UIO_H)
309     AC_DEFINE(HAVE_PTHREADS)
310     MOZ_CHROME_FILE_FORMAT=omni
311     direct_nspr_config=1
312 else
313     MOZ_ANDROID_NDK
315     case "$target" in
316     *-android*|*-linuxandroid*)
317         if test -z "$ANDROID_PACKAGE_NAME" ; then
318             ANDROID_PACKAGE_NAME='org.mozilla.$(MOZ_APP_NAME)'
319         fi
320         MOZ_CHROME_FILE_FORMAT=omni
321         ZLIB_DIR=yes
322         ;;
323     *-linux*)
324         AC_PATH_PROG(OBJCOPY,objcopy)
325         ;;
326     esac
329 AC_SUBST(ANDROID_SOURCE)
330 AC_SUBST(ANDROID_PACKAGE_NAME)
331 AC_SUBST(OBJCOPY)
333 dnl ========================================================
334 dnl Checks for compilers.
335 dnl ========================================================
337 dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
338 AR_FLAGS='crs $@'
340 if test "$COMPILE_ENVIRONMENT"; then
342 if test "$target" != "$host"; then
343     MOZ_CROSS_COMPILER
344 else
345     AC_PROG_CC
346     case "$target" in
347     *-mingw*)
348       # Work around the conftest.exe access problem on Windows
349       sleep 2
350     esac
351     AC_PROG_CXX
352     AC_PROG_RANLIB
353     MOZ_PATH_PROGS(AS, $AS as, $CC)
354     AC_CHECK_PROGS(AR, ar, :)
355     AC_CHECK_PROGS(LD, ld, :)
356     AC_CHECK_PROGS(STRIP, strip, :)
357     AC_CHECK_PROGS(WINDRES, windres, :)
358     if test -z "$HOST_CC"; then
359         HOST_CC="$CC"
360     fi
361     if test -z "$HOST_CFLAGS"; then
362         HOST_CFLAGS="$CFLAGS"
363     fi
364     if test -z "$HOST_CXX"; then
365         HOST_CXX="$CXX"
366     fi
367     if test -z "$HOST_CXXFLAGS"; then
368         HOST_CXXFLAGS="$CXXFLAGS"
369     fi
370     if test -z "$HOST_LDFLAGS"; then
371         HOST_LDFLAGS="$LDFLAGS"
372     fi
373     if test -z "$HOST_RANLIB"; then
374         HOST_RANLIB="$RANLIB"
375     fi
376     if test -z "$HOST_AR"; then
377         HOST_AR="$AR"
378     fi
379     if test -z "$HOST_AR_FLAGS"; then
380         HOST_AR_FLAGS="$AR_FLAGS"
381     fi
384 if test -n "$MOZ_WINCONSOLE"; then
385     AC_DEFINE(MOZ_WINCONSOLE)
388 MOZ_TOOL_VARIABLES
390 MOZ_CHECK_COMPILER_WRAPPER
392 if test -n "$GNU_CC" -a -z "$CLANG_CC" ; then
393     if test "$GCC_MAJOR_VERSION" -eq 4 -a "$GCC_MINOR_VERSION" -lt 4 ||
394        test "$GCC_MAJOR_VERSION" -lt 4; then
395         AC_MSG_ERROR([Only GCC 4.4 or newer supported])
396     fi
399 dnl ========================================================
400 dnl Special win32 checks
401 dnl ========================================================
403 MOZ_ARG_ENABLE_BOOL(metro,
404 [  --enable-metro           Enable Windows Metro build targets],
405     MOZ_METRO=1,
406     MOZ_METRO=)
407 if test -n "$MOZ_METRO"; then
408     AC_DEFINE(MOZ_METRO)
409     # Target the Windows 8 Kit
410     WINSDK_TARGETVER=602
411     WINVER=502
412     # toolkit/library/makefile.in needs these, see nsDllMain.
413     CRTDLLVERSION=110
414     CRTEXPDLLVERSION=1-1-0
415 else
416     # Target the Windows 7 SDK by default
417     WINSDK_TARGETVER=601
418     WINVER=502
421 AC_SUBST(CRTDLLVERSION)
422 AC_SUBST(CRTEXPDLLVERSION)
424 MOZ_ARG_WITH_STRING(windows-version,
425 [  --with-windows-version=WINSDK_TARGETVER
426                           Windows SDK version to target. Lowest version
427                           currently allowed is 601 (Win7), highest is 602 (Win8)],
428   WINSDK_TARGETVER=$withval)
430 # Currently only two sdk versions allowed, 601 and 602
431 case "$WINSDK_TARGETVER" in
432 601|602)
433     MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
434     ;;
437     AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER)]);
438     ;;
439 esac
441 case "$target" in
442 *-mingw*)
443     if test "$GCC" != "yes" -a -z "$CLANG_CC"; then
444         # Check to see if we are really running in a msvc environemnt
445         _WIN32_MSVC=1
446         AC_CHECK_PROGS(MIDL, midl)
448         # Make sure compilers are valid
449         CFLAGS="$CFLAGS -TC -nologo"
450         CXXFLAGS="$CXXFLAGS -TP -nologo"
451         AC_LANG_SAVE
452         AC_LANG_C
453         AC_TRY_COMPILE([#include <stdio.h>],
454             [ printf("Hello World\n"); ],,
455             AC_MSG_ERROR([\$(CC) test failed.  You must have MS VC++ in your path to build.]) )
457         AC_LANG_CPLUSPLUS
458         AC_TRY_COMPILE([#include <new.h>],
459             [ unsigned *test = new unsigned(42); ],,
460             AC_MSG_ERROR([\$(CXX) test failed.  You must have MS VC++ in your path to build.]) )
461         AC_LANG_RESTORE
463         changequote(,)
464         _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
465         changequote([,])
467         # Determine compiler version
468         CC_VERSION=`${CC} -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
469         _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
470         _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
471         _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
472         _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
473         _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
475         CXX_VERSION=`${CXX} -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
476         _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
478         if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
479             AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
480         fi
482         AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
483         AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
485         if test "$_CC_MAJOR_VERSION" = "16"; then
486             _CC_SUITE=10
487             MSVS_VERSION=2010
488         elif test "$_CC_MAJOR_VERSION" = "17"; then
489             _CC_SUITE=11
490             MSVS_VERSION=2012
491         elif test "$_CC_MAJOR_VERSION" = "18"; then
492             _CC_SUITE=12
493             MSVS_VERSION=2013
494         else
495             AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
496         fi
497         AC_SUBST(MSVS_VERSION)
499         AC_DEFINE(HAVE_SEH_EXCEPTIONS)
501         if test -n "$WIN32_REDIST_DIR"; then
502           if test ! -d "$WIN32_REDIST_DIR"; then
503             AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
504           fi
505           WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
506         fi
508         dnl Confirm we have the pri tools on win8 builds
509         if test -n "$MOZ_METRO"; then
510           AC_MSG_CHECKING([for makepri])
511           AC_CHECK_PROGS(MAKEPRI, makepri, "")
512           if test -z "MAKEPRI" ; then
513               AC_MSG_ERROR([makepri.exe is required for generating metro browser install components. It should be in the Win8 SDK.])
514           fi
515           AC_SUBST(MAKEPRI)
516         fi
518         dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool',
519         dnl not something else like "magnetic tape manipulation utility".
520         MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
521         if test -z "$MSMT_TOOL"; then
522           AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
523         fi
525         changequote(,)
526         _MSMT_VER_FILTER='s|.*[^!-~]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
527         changequote([,])
528         MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
529         if test -z "$MSMANIFEST_TOOL_VERSION"; then
530           AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
531         fi
533         MSMANIFEST_TOOL=1
534         unset MSMT_TOOL
536         # Check linker version
537         _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
538         _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
539         if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
540             AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION,  does not match the compiler suite version, $_CC_SUITE.])
541         fi
543         INCREMENTAL_LINKER=1
545         # Set midl environment
546         case "$target" in
547         i*86-*)
548             MIDL_FLAGS="${MIDL_FLAGS} -env win32"
549             ;;
550         x86_64-*)
551             MIDL_FLAGS="${MIDL_FLAGS} -env x64"
552             ;;
553         esac
555         unset _MSVC_VER_FILTER
557         AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
558             [
559                 AC_LANG_SAVE
560                 AC_LANG_CPLUSPLUS
561                 _SAVE_CXXFLAGS="$CXXFLAGS"
562                 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
563                 AC_TRY_COMPILE([#include <exception>],
564                             [std::_Throw(std::exception()); return 0;],
565                             ac_cv_have_std__Throw="yes",
566                             ac_cv_have_std__Throw="no")
567                 CXXFLAGS="$_SAVE_CXXFLAGS"
568                 AC_LANG_RESTORE
569             ])
571         if test "$ac_cv_have_std__Throw" = "yes"; then
572             AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
573                            ac_cv_have_dllimport_exception_bug,
574                 [
575                     AC_LANG_SAVE
576                     AC_LANG_CPLUSPLUS
577                     _SAVE_CXXFLAGS="$CXXFLAGS"
578                     CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
579                     AC_TRY_LINK([#include <vector>],
580                                 [std::vector<int> v; return v.at(1);],
581                                 ac_cv_have_dllimport_exception_bug="no",
582                                 ac_cv_have_dllimport_exception_bug="yes")
583                     CXXFLAGS="$_SAVE_CXXFLAGS"
584                     AC_LANG_RESTORE
585                 ])
586             if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
587                 WRAP_STL_INCLUDES=1
588                 MOZ_MSVC_STL_WRAP__Throw=1
589                 AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
590             fi
591         else
592             AC_CACHE_CHECK(for overridable _RAISE,
593                            ac_cv_have__RAISE,
594                 [
595                     AC_LANG_SAVE
596                     AC_LANG_CPLUSPLUS
597                     _SAVE_CXXFLAGS="$CXXFLAGS"
598                     CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
599                     AC_TRY_COMPILE([#include <xstddef>
600                                     #undef _RAISE
601                                     #define _RAISE(x) externallyDefinedFunction((x).what())
602                                     #include <vector>
603                                    ],
604                                    [std::vector<int> v; return v.at(1);],
605                                    ac_cv_have__RAISE="no",
606                                    ac_cv_have__RAISE="yes")
607                     CXXFLAGS="$_SAVE_CXXFLAGS"
608                     AC_LANG_RESTORE
609                 ])
610             if test "$ac_cv_have__RAISE" = "yes"; then
611                 WRAP_STL_INCLUDES=1
612                 MOZ_MSVC_STL_WRAP__RAISE=1
613                 AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
614             else
615                 AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK.  Please file a bug describing this error and your build configuration.])
616             fi
617         fi
619         if test "$WRAP_STL_INCLUDES" = "1"; then
620             STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
621         fi
622     elif test -z "$CLANG_CC"; then
623         # Check w32api version
624         _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
625         _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
626         AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
627         AC_TRY_COMPILE([#include <w32api.h>],
628             #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
629                 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
630                  __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
631                 #error "test failed."
632             #endif
633             , [ res=yes ], [ res=no ])
634         AC_MSG_RESULT([$res])
635         if test "$res" != "yes"; then
636             AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
637         fi
638         # Check windres version
639         AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
640         _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
641         AC_MSG_RESULT([$_WINDRES_VERSION])
642         _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
643         _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
644         _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
645         WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
646         WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
647         WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
648         if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
649                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
650                 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
651                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
652                 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
653                 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
654         then
655             AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
656         fi
658         AC_CHECK_PROGS(MIDL, $target-widl widl)
659         if test -n "$MIDL"; then
660             case "$target" in
661             i*86-*)
662                 MIDL_FLAGS="$MIDL_FLAGS --win32 -m32"
663                 ;;
664             x86_64-*)
665                 MIDL_FLAGS="$MIDL_FLAGS --win64 -m64"
666                 ;;
667             esac
668         fi
670         # strsafe.h on mingw uses macros for function deprecation that pollutes namespace
671         # causing problems with local implementations with the same name.
672         AC_DEFINE(STRSAFE_NO_DEPRECATE)
674         MOZ_WINSDK_MAXVER=0x06020000
675     fi # !GNU_CC
677     # If MSVC or clang
678     if test "$GCC" != "yes" -o -n "$CLANG_CC" ; then
679         MOZ_FIND_WINSDK_VERSION
680     fi
682     AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
683     AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
684     # Require OS features provided by IE 6.0 SP2 (XP SP2)
685     AC_DEFINE_UNQUOTED(_WIN32_IE,0x0603)
687     # If the maximum version supported by this SDK is lower than the target
688     # version, error out
689     AC_MSG_CHECKING([for Windows SDK being recent enough])
690     if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
691         AC_MSG_RESULT("yes")
692     else
693         AC_MSG_RESULT("no")
694         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.])
695     fi
697     AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
698     # Definitions matching sdkddkver.h
699     AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
700     AC_DEFINE_UNQUOTED(MOZ_WINSDK_MAXVER,$MOZ_WINSDK_MAXVER)
701     AC_SUBST(MOZ_WINSDK_MAXVER)
702     ;;
703 esac
705 AC_PROG_CPP
706 AC_PROG_CXXCPP
708 if test -n "$_WIN32_MSVC"; then
709     SKIP_PATH_CHECKS=1
710     SKIP_COMPILER_CHECKS=1
711     SKIP_LIBRARY_CHECKS=1
713     # Since we're skipping compiler and library checks, hard-code
714     # some facts here.
715     AC_DEFINE(HAVE_IO_H)
716     AC_DEFINE(HAVE_SETBUF)
717     AC_DEFINE(HAVE_ISATTY)
720 fi # COMPILE_ENVIRONMENT
722 AC_SUBST(MIDL_FLAGS)
723 AC_SUBST(_MSC_VER)
725 AC_SUBST(GNU_AS)
726 AC_SUBST(GNU_LD)
727 AC_SUBST(GNU_CC)
728 AC_SUBST(GNU_CXX)
729 AC_SUBST(INTEL_CC)
730 AC_SUBST(INTEL_CXX)
732 AC_SUBST(STL_FLAGS)
733 AC_SUBST(WRAP_STL_INCLUDES)
734 AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
735 AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
737 dnl ========================================================
738 dnl Checks for programs.
739 dnl ========================================================
740 AC_PROG_INSTALL
741 AC_PROG_LN_S
743 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
744 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
745 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
746 _perl_res=$?
747 AC_MSG_RESULT([$_perl_version])
749 if test "$_perl_res" != 0; then
750     AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
754 AC_MSG_CHECKING([for full perl installation])
755 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
756 _perl_res=$?
757 if test "$_perl_res" != 0; then
758     AC_MSG_RESULT([no])
759     AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}.  A full perl installation is required.])
760 else
761     AC_MSG_RESULT([yes])
764 if test -z "$COMPILE_ENVIRONMENT"; then
765     NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
767 AC_SUBST(NSINSTALL_BIN)
769 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
770 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
771 MOZ_PATH_PROGS(UNZIP, unzip)
772 if test -z "$UNZIP" -o "$UNZIP" = ":"; then
773     AC_MSG_ERROR([unzip not found in \$PATH])
775 MOZ_PATH_PROGS(ZIP, zip)
776 if test -z "$ZIP" -o "$ZIP" = ":"; then
777     AC_MSG_ERROR([zip not found in \$PATH])
779 MOZ_PATH_PROG(XARGS, xargs)
780 if test -z "$XARGS" -o "$XARGS" = ":"; then
781     AC_MSG_ERROR([xargs not found in \$PATH .])
784 MOZ_PATH_PROG(RPMBUILD, rpmbuild, :)
785 AC_SUBST(RPMBUILD)
787 if test "$COMPILE_ENVIRONMENT"; then
789 dnl ========================================================
790 dnl = Mac OS X toolchain support
791 dnl ========================================================
793 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
794 dnl that a universal binary is being produced and MOZ_CAN_RUN_PROGRAMS
795 dnl when we can run target binaries.
796 AC_SUBST(UNIVERSAL_BINARY)
797 AC_SUBST(MOZ_CAN_RUN_PROGRAMS)
799 MOZ_ARG_WITH_STRING(unify-dist,
800 [  --with-unify-dist=dir   Location of the dist directory to unify with at packaging time (Mac OS X universal build only)],
801     UNIFY_DIST=$withval)
802 if test -n "$UNIVERSAL_BINARY"; then
803     if test -z "$UNIFY_DIST"; then
804         AC_MSG_ERROR([You need to provide the --with-unify-dist=dir argument when performing a universal build])
805     fi
806     case "$UNIFY_DIST" in
807     /*)
808         ;;
809     *)
810         UNIFY_DIST="${MOZ_BUILD_ROOT}/${UNIFY_DIST}"
811         ;;
812     esac
814 AC_SUBST(UNIFY_DIST)
816 dnl ========================================================
817 dnl Check for MacOS deployment target version
818 dnl ========================================================
820 MOZ_ARG_ENABLE_STRING(macos-target,
821                       [  --enable-macos-target=VER (default=10.6)
822                           Set the minimum MacOS version needed at runtime],
823                       [_MACOSX_DEPLOYMENT_TARGET=$enableval])
825 case "$target" in
826 *-darwin*)
827     if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
828         dnl Use the specified value
829         export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
830     else
831         dnl No value specified on the command line or in the environment,
832         dnl use architecture minimum.
833         export MACOSX_DEPLOYMENT_TARGET=10.6
834     fi
835     ;;
836 esac
838 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
840 dnl ========================================================
841 dnl = Mac OS X SDK support
842 dnl ========================================================
843 MACOS_SDK_DIR=
844 MOZ_ARG_WITH_STRING(macos-sdk,
845 [  --with-macos-sdk=dir    Location of platform SDK to use (Mac OS X only)],
846     MACOS_SDK_DIR=$withval)
848 MACOS_PRIVATE_FRAMEWORKS_DIR_DEFAULTED=
849 MOZ_ARG_WITH_STRING(macos-private-frameworks,
850 [  --with-macos-private-frameworks=dir    Location of private frameworks to use (Mac OS X only)],
851     MACOS_PRIVATE_FRAMEWORKS_DIR=$withval,
852     MACOS_PRIVATE_FRAMEWORKS_DIR=/System/Library/PrivateFrameworks
853     MACOS_PRIVATE_FRAMEWORKS_DEFAULTED=1)
855 if test -z "${MACOS_PRIVATE_FRAMEWORKS_DEFAULTED}"; then
856   if test -z "$CROSS_COMPILE"; then
857     AC_MSG_WARN([You should only be using --with-macos-private-frameworks when cross-compiling.])
858   fi
859   if test ! -d "$MACOS_PRIVATE_FRAMEWORKS_DIR"; then
860     AC_MSG_ERROR([PrivateFrameworks directory not found.])
861   fi
864 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
865 AC_SUBST(MACOS_SDK_DIR)
866 AC_SUBST(MACOS_PRIVATE_FRAMEWORKS_DIR)
868 if test "$MACOS_SDK_DIR"; then
869   dnl Sync this section with the ones in NSPR and NSS.
870   dnl Changes to the cross environment here need to be accounted for in
871   dnl the libIDL checks (below) and xpidl build.
873   if test ! -d "$MACOS_SDK_DIR"; then
874     AC_MSG_ERROR([SDK not found.  When using --with-macos-sdk, you must
875 specify a valid SDK.  SDKs are installed when the optional cross-development
876 tools are selected during the Xcode/Developer Tools installation.])
877   fi
879   CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
880   CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
882   dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER.
883   CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
884   CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
886   AC_LANG_SAVE
887   AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
888   AC_LANG_CPLUSPLUS
889   AC_TRY_COMPILE([#include <new>],[],
890    result=yes,
891    result=no)
892   AC_LANG_RESTORE
893   AC_MSG_RESULT($result)
895   if test "$result" = "no" ; then
896     AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
897   fi
900 fi # COMPILE_ENVIRONMENT
902 AC_MSG_CHECKING([compiler version])
903 # Just print it so it shows up in the logs.
904 cc_version=$($CC --version)
905 AC_MSG_RESULT([$cc_version])
907 if test -n "$MAKE"; then
908   if test `echo $MAKE | grep -c make.py` != 1; then
909      NOT_PYMAKE=$MAKE
910   fi
913 case "$host_os" in
914 mingw*)
915     MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
916     ;;
918     MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
919     ;;
920 esac
921 if test "$GMAKE" = ":"; then
922    AC_MSG_ERROR([GNU make not found])
924 AC_SUBST(GMAKE)
926 if test -z "$MAKE"; then
927   MAKE=$GMAKE
930 if test "$COMPILE_ENVIRONMENT"; then
932 AC_PATH_XTRA
934 XCFLAGS="$X_CFLAGS"
936 fi # COMPILE_ENVIRONMENT
938 dnl ========================================================
939 dnl set the defaults first
940 dnl ========================================================
941 AS_BIN=$AS
942 AR_LIST='$(AR) t'
943 AR_EXTRACT='$(AR) x'
944 AR_DELETE='$(AR) d'
945 AS='$(CC)'
946 AS_DASH_C_FLAG='-c'
947 DLL_PREFIX=lib
948 LIB_PREFIX=lib
949 DLL_SUFFIX=.so
950 OBJ_SUFFIX=o
951 LIB_SUFFIX=a
952 ASM_SUFFIX=s
953 IMPORT_LIB_SUFFIX=
954 TARGET_MD_ARCH=unix
955 DIRENT_INO=d_ino
956 MOZ_USER_DIR=".mozilla"
958 MOZ_JPEG_CFLAGS=
959 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/media/libjpeg)'
960 MOZ_BZ2_CFLAGS=
961 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
962 MOZ_PNG_CFLAGS="-I$_objdir/dist/include" # needed for freetype compilation
963 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/media/libpng)'
965 MOZ_JS_STATIC_LIBS='$(call EXPAND_LIBNAME_PATH,js_static,$(LIBXUL_DIST)/lib)'
966 MOZ_JS_SHARED_LIBS='$(call EXPAND_LIBNAME_PATH,mozjs,$(LIBXUL_DIST)/lib)'
967 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
968 XPCOM_FROZEN_LDOPTS='$(call EXPAND_LIBNAME_PATH,xul mozalloc,$(LIBXUL_DIST)/bin)'
969 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS)'
970 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
971 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
973 # These are specially defined on Windows only
974 case "$target" in
975 *-mingw*)
976   XPCOM_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
977   XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime.$(LIB_SUFFIX)'
978   ;;
980   XPCOM_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_GLUE_LDOPTS
981   XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_STANDALONE_GLUE_LDOPTS
982   ;;
983 esac
985 MOZ_FS_LAYOUT=unix
987 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
989 USE_DEPENDENT_LIBS=1
991 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
993 if test -n "$CROSS_COMPILE"; then
994     OS_TARGET="${target_os}"
995     OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
996     OS_RELEASE=
997     case "${target_os}" in
998         linux*)       OS_ARCH=Linux OS_TARGET=Linux ;;
999         kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU/kFreeBSD ;;
1000         gnu*)         OS_ARCH=GNU ;;
1001         solaris*)     OS_ARCH=SunOS OS_RELEASE=5 ;;
1002         mingw*)       OS_ARCH=WINNT OS_TARGET=WINNT ;;
1003         darwin*)      OS_ARCH=Darwin OS_TARGET=Darwin ;;
1004         dragonfly*)   OS_ARCH=DragonFly OS_TARGET=DragonFly ;;
1005         freebsd*)     OS_ARCH=FreeBSD OS_TARGET=FreeBSD ;;
1006         netbsd*)      OS_ARCH=NetBSD OS_TARGET=NetBSD ;;
1007         openbsd*)     OS_ARCH=OpenBSD OS_TARGET=OpenBSD ;;
1008     esac
1009     case "${target}" in
1010         *-android*|*-linuxandroid*) OS_ARCH=Linux OS_TARGET=Android ;;
1011     esac
1012 else
1013     OS_TARGET=`uname -s`
1014     OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1015     OS_RELEASE=`uname -r`
1018 # Before this used `uname -m` when not cross compiling
1019 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1020 OS_TEST="${target_cpu}"
1022 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1024 #######################################################################
1025 # Master "Core Components" macros for getting the OS target           #
1026 #######################################################################
1029 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1030 # cross-compilation.
1034 # Define and override various archtecture-specific variables, including
1035 # HOST_OS_ARCH
1036 # OS_ARCH
1037 # OS_TEST
1038 # OS_TARGET
1039 # OS_RELEASE
1040 # OS_MINOR_RELEASE
1043 case "$HOST_OS_ARCH" in
1044 mingw*)
1045     HOST_OS_ARCH=WINNT
1046     ;;
1047 darwin*)
1048     HOST_OS_ARCH=Darwin
1049     ;;
1050 linux*)
1051     HOST_OS_ARCH=Linux
1052     ;;
1053 kfreebsd*-gnu)
1054     HOST_OS_ARCH=GNU_kFreeBSD
1055     ;;
1056 gnu*)
1057     HOST_OS_ARCH=GNU
1058     ;;
1059 dragonfly*)
1060     HOST_OS_ARCH=DragonFly
1061     ;;
1062 freebsd*)
1063     HOST_OS_ARCH=FreeBSD
1064     ;;
1065 netbsd*)
1066     HOST_OS_ARCH=NetBSD
1067     ;;
1068 openbsd*)
1069     HOST_OS_ARCH=OpenBSD
1070     ;;
1071 solaris*)
1072     HOST_OS_ARCH=SunOS
1073     SOLARIS_SUNPRO_CC=
1074     SOLARIS_SUNPRO_CXX=
1075     if test -z "$GNU_CC"; then
1076         if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1077             SOLARIS_SUNPRO_CC=1
1078        fi
1079     fi
1081     if test -z "$GNU_CXX"; then
1082        if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1083            SOLARIS_SUNPRO_CXX=1
1084        fi
1085     fi
1086     AC_SUBST(SOLARIS_SUNPRO_CC)
1087     AC_SUBST(SOLARIS_SUNPRO_CXX)
1088     ;;
1089 esac
1091 case "$OS_ARCH" in
1092 WINNT)
1093     if test -z "$CROSS_COMPILE" ; then
1094         OS_TEST=`uname -p`
1095     fi
1096     ;;
1097 Windows_NT)
1099 # If uname -s returns "Windows_NT", we assume that we are using
1100 # the uname.exe in MKS toolkit.
1102 # The -r option of MKS uname only returns the major version number.
1103 # So we need to use its -v option to get the minor version number.
1104 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1106     OS_ARCH=WINNT
1107     OS_TARGET=WINNT
1108     OS_MINOR_RELEASE=`uname -v`
1109     if test "$OS_MINOR_RELEASE" = "00"; then
1110         OS_MINOR_RELEASE=0
1111     fi
1112     OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1113     ;;
1114 MINGW*_NT*)
1116 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1117 # the uname.exe in the MSYS tools.
1119     OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1120     OS_ARCH=WINNT
1121     OS_TARGET=WINNT
1122     ;;
1123 AIX)
1124     OS_RELEASE=`uname -v`.`uname -r`
1125     OS_TEST=${target_cpu}
1126     ;;
1127 Darwin)
1128     case "${target_cpu}" in
1129     powerpc*)
1130         OS_TEST=ppc
1131         ;;
1132     i*86*)
1133         OS_TEST=i386
1134         ;;
1135     x86_64)
1136         OS_TEST=x86_64
1137         ;;
1138     *)
1139         if test -z "$CROSS_COMPILE" ; then
1140             OS_TEST=`uname -p`
1141         fi
1142         ;;
1143     esac
1144     ;;
1145 esac
1147 # Only set CPU_ARCH if we recognize the value of OS_TEST
1149 case "$OS_TEST" in
1150 *86 | i86pc)
1151     CPU_ARCH=x86
1152     ;;
1154 powerpc64 | ppc64 | powerpc64le | ppc64le)
1155     CPU_ARCH=ppc64
1156     ;;
1158 powerpc | ppc | rs6000)
1159     CPU_ARCH=ppc
1160     ;;
1162 Alpha | alpha | ALPHA)
1163     CPU_ARCH=Alpha
1164     ;;
1166 s390)
1167     CPU_ARCH=s390
1168     ;;
1170 s390x)
1171     CPU_ARCH=s390x
1172     ;;
1174 hppa* | parisc)
1175     CPU_ARCH=hppa
1176     ;;
1178 sun4u | sparc*)
1179     CPU_ARCH=sparc
1180     ;;
1182 x86_64 | ia64)
1183     CPU_ARCH="$OS_TEST"
1184     ;;
1186 arm*)
1187     CPU_ARCH=arm
1188     ;;
1190 mips|mipsel)
1191     CPU_ARCH="mips"
1192     ;;
1194 aarch64*)
1195     CPU_ARCH=aarch64
1196     ;;
1197 esac
1199 if test -z "$OS_TARGET"; then
1200     OS_TARGET=$OS_ARCH
1202 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1204 dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64.
1205 dnl ===============================================================
1206 INTEL_ARCHITECTURE=
1207 case "$OS_TEST" in
1208     x86_64|i?86)
1209       INTEL_ARCHITECTURE=1
1210 esac
1212 dnl Configure platform-specific CPU architecture compiler options.
1213 dnl ==============================================================
1214 MOZ_ARCH_OPTS
1216 dnl =================================================================
1217 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1218 dnl which is bad when cross compiling.
1219 dnl =================================================================
1220 if test "$COMPILE_ENVIRONMENT"; then
1221 configure_static_assert_macros='
1222 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1223 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1224 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1227 dnl test that the macros actually work:
1228 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1229 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1230  [AC_LANG_SAVE
1231   AC_LANG_C
1232   ac_cv_static_assertion_macros_work="yes"
1233   AC_TRY_COMPILE([$configure_static_assert_macros],
1234                  [CONFIGURE_STATIC_ASSERT(1)],
1235                  ,
1236                  ac_cv_static_assertion_macros_work="no")
1237   AC_TRY_COMPILE([$configure_static_assert_macros],
1238                  [CONFIGURE_STATIC_ASSERT(0)],
1239                  ac_cv_static_assertion_macros_work="no",
1240                  )
1241   AC_LANG_CPLUSPLUS
1242   AC_TRY_COMPILE([$configure_static_assert_macros],
1243                  [CONFIGURE_STATIC_ASSERT(1)],
1244                  ,
1245                  ac_cv_static_assertion_macros_work="no")
1246   AC_TRY_COMPILE([$configure_static_assert_macros],
1247                  [CONFIGURE_STATIC_ASSERT(0)],
1248                  ac_cv_static_assertion_macros_work="no",
1249                  )
1250   AC_LANG_RESTORE
1251  ])
1252 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1253 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1254     AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1256 fi # COMPILE_ENVIRONMENT
1258 dnl ========================================================
1259 dnl Android libstdc++, placed here so it can use MOZ_ARCH
1260 dnl computed above.
1261 dnl ========================================================
1263 MOZ_ANDROID_STLPORT
1265 dnl ========================================================
1266 dnl Suppress Clang Argument Warnings
1267 dnl ========================================================
1268 if test -n "$CLANG_CC"; then
1269     _WARNINGS_CFLAGS="-Qunused-arguments ${_WARNINGS_CFLAGS}"
1270     CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
1272 if test -n "$CLANG_CXX"; then
1273     _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
1276 dnl ========================================================
1277 dnl = Use Address Sanitizer
1278 dnl ========================================================
1279 MOZ_ARG_ENABLE_BOOL(address-sanitizer,
1280 [  --enable-address-sanitizer       Enable Address Sanitizer (default=no)],
1281     MOZ_ASAN=1,
1282     MOZ_ASAN= )
1283 if test -n "$MOZ_ASAN"; then
1284     MOZ_LLVM_HACKS=1
1285     AC_DEFINE(MOZ_ASAN)
1286     MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer)
1288 AC_SUBST(MOZ_ASAN)
1289 AC_SUBST(LLVM_SYMBOLIZER)
1291 dnl ========================================================
1292 dnl = Enable hacks required for LLVM instrumentations
1293 dnl ========================================================
1294 MOZ_ARG_ENABLE_BOOL(llvm-hacks,
1295 [  --enable-llvm-hacks       Enable workarounds required for several LLVM instrumentations (default=no)],
1296     MOZ_LLVM_HACKS=1,
1297     MOZ_LLVM_HACKS= )
1298 if test -n "$MOZ_LLVM_HACKS"; then
1299     MOZ_NO_WLZDEFS=1
1300     MOZ_CFLAGS_NSS=1
1302 AC_SUBST(MOZ_NO_WLZDEFS)
1303 AC_SUBST(MOZ_CFLAGS_NSS)
1305 dnl ========================================================
1306 dnl GNU specific defaults
1307 dnl ========================================================
1308 if test "$GNU_CC"; then
1309     # Per bug 719659 comment 2, some of the headers on ancient build machines
1310     # may require gnu89 inline semantics.  But otherwise, we use C99.
1311     # But on OS X we just use C99 plus GNU extensions, in order to fix
1312     # bug 917526.
1313     CFLAGS="$CFLAGS -std=gnu99"
1314     if test "${OS_ARCH}" != Darwin; then
1315         CFLAGS="$CFLAGS -fgnu89-inline"
1316     fi
1317     # FIXME: Let us build with strict aliasing. bug 414641.
1318     CFLAGS="$CFLAGS -fno-strict-aliasing"
1319     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(notdir $@) -o $@'
1320     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(notdir $@) -o $@'
1321     WARNINGS_AS_ERRORS='-Werror'
1322     DSO_CFLAGS=''
1323     DSO_PIC_CFLAGS='-fPIC'
1324     ASFLAGS="$ASFLAGS -fPIC"
1325     AC_MSG_CHECKING([for --noexecstack option to as])
1326     _SAVE_CFLAGS=$CFLAGS
1327     CFLAGS="$CFLAGS -Wa,--noexecstack"
1328     AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
1329                      [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
1330                      AC_MSG_RESULT([no]))
1331     CFLAGS=$_SAVE_CFLAGS
1332     AC_MSG_CHECKING([for -z noexecstack option to ld])
1333     _SAVE_LDFLAGS=$LDFLAGS
1334     LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
1335     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
1336                   AC_MSG_RESULT([no])
1337                   LDFLAGS=$_SAVE_LDFLAGS)
1339     AC_MSG_CHECKING([for -z text option to ld])
1340     _SAVE_LDFLAGS=$LDFLAGS
1341     LDFLAGS="$LDFLAGS -Wl,-z,text"
1342     AC_TRY_LINK(,,AC_MSG_RESULT([yes])
1343                   [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,text"],
1344                   AC_MSG_RESULT([no])
1345                   LDFLAGS=$_SAVE_LDFLAGS)
1347     AC_MSG_CHECKING([for --build-id option to ld])
1348     _SAVE_LDFLAGS=$LDFLAGS
1349     LDFLAGS="$LDFLAGS -Wl,--build-id"
1350     AC_TRY_LINK(,,AC_MSG_RESULT([yes])
1351                   [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,--build-id"],
1352                   AC_MSG_RESULT([no])
1353                   LDFLAGS=$_SAVE_LDFLAGS)
1355     AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld])
1356     HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=
1357     _SAVE_LDFLAGS=$LDFLAGS
1358     LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ"
1359     AC_TRY_LINK(,,AC_MSG_RESULT([yes])
1360                   [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1],
1361                   AC_MSG_RESULT([no]))
1362     LDFLAGS=$_SAVE_LDFLAGS
1364     # Check for -mssse3 on $CC
1365     AC_MSG_CHECKING([if toolchain supports -mssse3 option])
1366     HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
1367     _SAVE_CFLAGS=$CFLAGS
1368     CFLAGS="$CFLAGS -mssse3"
1369     AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
1370                      [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
1371                      AC_MSG_RESULT([no]))
1372     CFLAGS=$_SAVE_CFLAGS
1374     # Check for -msse4.1 on $CC
1375     AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
1376     HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
1377     _SAVE_CFLAGS=$CFLAGS
1378     CFLAGS="$CFLAGS -msse4.1"
1379     AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
1380                      [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
1381                      AC_MSG_RESULT([no]))
1382     CFLAGS=$_SAVE_CFLAGS
1384     case "${CPU_ARCH}" in
1385     x86 | x86_64)
1386       AC_MSG_CHECKING(for x86 AVX2 asm support in compiler)
1387       AC_TRY_COMPILE([],
1388                      [asm volatile ("vpermq      \$0xd8,%ymm0,%ymm0 \n");],
1389                      result="yes", result="no")
1390       AC_MSG_RESULT("$result")
1391       if test "$result" = "yes"; then
1392           HAVE_X86_AVX2=1
1393           AC_DEFINE(HAVE_X86_AVX2)
1394           AC_SUBST(HAVE_X86_AVX2)
1395       fi
1396     esac
1398     DSO_LDOPTS='-shared'
1399     if test "$GCC_USE_GNU_LD"; then
1400         # Some tools like ASan use a runtime library that is only
1401         # linked against executables, so we must allow undefined
1402         # symbols for shared objects in some cases.
1403         if test -z "$MOZ_NO_WLZDEFS"; then
1404             # Don't allow undefined symbols in libraries
1405             DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1407             # BSDs need `environ' exposed for posix_spawn (bug 753046)
1408             case "$OS_TARGET" in
1409             DragonFly|FreeBSD|NetBSD|OpenBSD)
1410                 if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then
1411                     DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
1412                 else
1413                     DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
1414                 fi
1415                 ;;
1416             esac
1417         fi
1418     fi
1420     # Turn on GNU-specific warnings:
1421     # -Wall - turn on a lot of warnings
1422     # -Wpointer-arith - good to have
1423     # -Wdeclaration-after-statement - MSVC doesn't like these
1424     # -Werror=return-type - catches missing returns, zero false positives
1425     # -Werror=int-to-pointer-cast - catches cast to pointer from integer of different size
1426     # -Wtype-limits - catches overflow bugs, few false positives
1427     # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1428     # -Wsign-compare - catches comparison of signed and unsigned types
1429     #
1430     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -Wpointer-arith -Wdeclaration-after-statement"
1431     MOZ_C_SUPPORTS_WARNING(-W, error=return-type, ac_c_has_werror_return_type)
1432     MOZ_C_SUPPORTS_WARNING(-W, error=int-to-pointer-cast, ac_c_has_werror_int_to_pointer_cast)
1433     MOZ_C_SUPPORTS_WARNING(-W, type-limits, ac_c_has_wtype_limits)
1434     MOZ_C_SUPPORTS_WARNING(-W, empty-body, ac_c_has_wempty_body)
1435     MOZ_C_SUPPORTS_WARNING(-W, sign-compare, ac_c_has_sign_compare)
1437     # Turn off the following warnings that -Wall turns on:
1438     # -Wno-unused - lots of violations in third-party code
1439     #
1440     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-unused"
1442     if test -z "$INTEL_CC" -a -z "$CLANG_CC"; then
1443        # Don't use -Wcast-align with ICC or clang
1444        case "$CPU_ARCH" in
1445            # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1446            hppa | ia64 | sparc | arm)
1447            ;;
1448            *)
1449         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1450            ;;
1451        esac
1452     fi
1454     _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1455     _USE_CPP_INCLUDE_FLAG=1
1456     ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
1458 elif test "$SOLARIS_SUNPRO_CC"; then
1459     DSO_CFLAGS=''
1460     if test "$CPU_ARCH" = "sparc"; then
1461         # for Sun Studio on Solaris/SPARC
1462         DSO_PIC_CFLAGS='-xcode=pic32'
1463     else
1464         DSO_PIC_CFLAGS='-KPIC'
1465     fi
1466     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1467 else
1468     MKSHLIB='$(LD) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
1469     MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
1471     DSO_LDOPTS='-shared'
1472     if test "$GNU_LD"; then
1473         # Don't allow undefined symbols in libraries
1474         DSO_LDOPTS="$DSO_LDOPTS -z defs"
1475     fi
1477     DSO_CFLAGS=''
1478     DSO_PIC_CFLAGS='-KPIC'
1479     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1482 if test "$GNU_CXX"; then
1483     # FIXME: Let us build with strict aliasing. bug 414641.
1484     CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
1486     # Turn on GNU-specific warnings:
1487     # -Wall - turn on a lot of warnings
1488     # -Wpointer-arith - good to have
1489     # -Woverloaded-virtual - ???
1490     # -Werror=return-type - catches missing returns, zero false positives
1491     # -Werror=int-to-pointer-cast - catches cast to pointer from integer of different size
1492     # -Wtype-limits - catches overflow bugs, few false positives
1493     # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1494     # -Wsign-compare - catches comparison of signed and unsigned types
1495     #
1496     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual"
1497     MOZ_CXX_SUPPORTS_WARNING(-W, error=return-type, ac_cxx_has_werror_return_type)
1498     MOZ_CXX_SUPPORTS_WARNING(-W, error=int-to-pointer-cast, ac_cxx_has_werror_int_to_pointer_cast)
1499     MOZ_CXX_SUPPORTS_WARNING(-W, type-limits, ac_cxx_has_wtype_limits)
1500     MOZ_CXX_SUPPORTS_WARNING(-W, empty-body, ac_cxx_has_wempty_body)
1501     MOZ_CXX_SUPPORTS_WARNING(-W, sign-compare, ac_cxx_has_sign_compare)
1503     # Turn off the following warnings that -Wall turns on:
1504     # -Wno-invalid-offsetof - we use offsetof on non-POD types frequently
1505     # -Wno-inline-new-delete - we inline 'new' and 'delete' in mozalloc
1506     #   for performance reasons, and because GCC and clang accept it (though
1507     #   clang warns about it).
1508     #
1509     MOZ_CXX_SUPPORTS_WARNING(-Wno-, invalid-offsetof, ac_cxx_has_wno_invalid_offsetof)
1510     MOZ_CXX_SUPPORTS_WARNING(-Wno-, inline-new-delete, ac_cxx_has_wno_inline_new_delete)
1512     if test -z "$INTEL_CXX" -a -z "$CLANG_CXX"; then
1513        # Don't use -Wcast-align with ICC or clang
1514        case "$CPU_ARCH" in
1515            # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1516            hppa | ia64 | sparc | arm)
1517            ;;
1518            *)
1519         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1520            ;;
1521        esac
1522     fi
1524     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1525     _USE_CPP_INCLUDE_FLAG=1
1527     # Recent clang and gcc support C++11 deleted functions without warnings if
1528     # compiling with -std=c++0x or -std=gnu++0x (or c++11 or gnu++11 in very new
1529     # versions).  We can't use -std=c++0x yet, so gcc's support must remain
1530     # unused.  But clang's warning can be disabled, so when compiling with clang
1531     # we use it to opt out of the warning, enabling (macro-encapsulated) use of
1532     # deleted function syntax.
1533     if test "$CLANG_CXX"; then
1534         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-c++0x-extensions"
1535         MOZ_CXX_SUPPORTS_WARNING(-Wno-, extended-offsetof, ac_cxx_has_wno_extended_offsetof)
1536     fi
1538 else
1539     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1542 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1543 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1544 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1545 dnl normal behavior.
1546 dnl ========================================================
1547 MKSHLIB_FORCE_ALL=
1548 MKSHLIB_UNFORCE_ALL=
1550 if test "$COMPILE_ENVIRONMENT"; then
1551 if test "$GNU_CC"; then
1552   AC_MSG_CHECKING(whether ld has archive extraction flags)
1553   AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1554    [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1555     ac_cv_mkshlib_force_and_unforce="no"
1556     exec 3<&0 <<LOOP_INPUT
1557   force="-Wl,--whole-archive";   unforce="-Wl,--no-whole-archive"
1558   force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1559   force="-Wl,-all";              unforce="-Wl,-none"
1560 LOOP_INPUT
1561     while read line
1562     do
1563       eval $line
1564       LDFLAGS=$force
1565       LIBS=$unforce
1566       AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1567     done
1568     exec 0<&3 3<&-
1569     LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1570    ])
1571   if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1572     AC_MSG_RESULT(no)
1573   else
1574     AC_MSG_RESULT(yes)
1575     eval $ac_cv_mkshlib_force_and_unforce
1576     MKSHLIB_FORCE_ALL=$force
1577     MKSHLIB_UNFORCE_ALL=$unforce
1578   fi
1579 fi # GNU_CC
1580 fi # COMPILE_ENVIRONMENT
1582 dnl ========================================================
1583 dnl Checking for 64-bit OS
1584 dnl ========================================================
1585 if test "$COMPILE_ENVIRONMENT"; then
1586 AC_LANG_SAVE
1587 AC_LANG_C
1588 AC_MSG_CHECKING(for 64-bit OS)
1589 AC_TRY_COMPILE([$configure_static_assert_macros],
1590                [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1591                result="yes", result="no")
1592 AC_MSG_RESULT("$result")
1593 if test "$result" = "yes"; then
1594     AC_DEFINE(HAVE_64BIT_OS)
1595     HAVE_64BIT_OS=1
1597 AC_SUBST(HAVE_64BIT_OS)
1598 AC_LANG_RESTORE
1599 fi # COMPILE_ENVIRONMENT
1601 dnl ========================================================
1602 dnl = Use profiling compile flags
1603 dnl ========================================================
1604 MOZ_ARG_ENABLE_BOOL(profiling,
1605 [  --enable-profiling      Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1606     MOZ_PROFILING=1,
1607     MOZ_PROFILING= )
1609 dnl ========================================================
1610 dnl = Turn on systrace for android/b2g.
1611 dnl ========================================================
1612 MOZ_ARG_ENABLE_BOOL(systrace,
1613 [  --enable-systrace       Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1614     MOZ_USE_SYSTRACE=1,
1615     MOZ_USE_SYSTRACE= )
1616 if test -n "$MOZ_USE_SYSTRACE"; then
1617     AC_DEFINE(MOZ_USE_SYSTRACE)
1620 # For profiling builds keep the symbol information
1621 if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then
1622     case "$OS_TARGET" in
1623     Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
1624         STRIP_FLAGS="--strip-debug"
1625         ;;
1626     esac
1629 dnl ========================================================
1630 dnl = Use Valgrind
1631 dnl ========================================================
1632 MOZ_ARG_ENABLE_BOOL(valgrind,
1633 [  --enable-valgrind       Enable Valgrind integration hooks (default=no)],
1634     MOZ_VALGRIND=1,
1635     MOZ_VALGRIND= )
1636 if test -n "$MOZ_VALGRIND"; then
1637     MOZ_CHECK_HEADER([valgrind/valgrind.h], [],
1638         AC_MSG_ERROR(
1639             [--enable-valgrind specified but Valgrind is not installed]))
1640     AC_DEFINE(MOZ_VALGRIND)
1642 AC_SUBST(MOZ_VALGRIND)
1644 dnl ========================================================
1645 dnl jprof
1646 dnl ========================================================
1647 MOZ_ARG_ENABLE_BOOL(jprof,
1648 [  --enable-jprof          Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.],
1649     MOZ_JPROF=1,
1650     MOZ_JPROF= )
1651 if test -n "$MOZ_JPROF"; then
1652     MOZ_PROFILING=1
1653     AC_DEFINE(MOZ_JPROF)
1656 dnl ========================================================
1657 dnl SPS Profiler
1658 dnl ========================================================
1659 MOZ_ENABLE_PROFILER_SPS=1
1661 case "${OS_TARGET}" in
1662 Android)
1663     case "${CPU_ARCH}" in
1664     x86 | arm) ;;
1665     *)
1666         MOZ_ENABLE_PROFILER_SPS=
1667     esac
1668     ;;
1669 Linux)
1670     case "${CPU_ARCH}" in
1671     x86 | x86_64) ;;
1672     *)
1673         MOZ_ENABLE_PROFILER_SPS=
1674     esac
1675     ;;
1676 WINNT|Darwin) ;;
1678     MOZ_ENABLE_PROFILER_SPS=
1679     ;;
1680 esac
1682 if test -n "$MOZ_ENABLE_PROFILER_SPS"; then
1683     AC_DEFINE(MOZ_ENABLE_PROFILER_SPS)
1686 dnl ========================================================
1687 dnl shark
1688 dnl ========================================================
1689 MOZ_ARG_ENABLE_BOOL(shark,
1690 [  --enable-shark          Enable shark remote profiling. Implies --enable-profiling.],
1691     MOZ_SHARK=1,
1692     MOZ_SHARK= )
1693 if test -n "$MOZ_SHARK"; then
1694     MOZ_PROFILING=1
1695     AC_DEFINE(MOZ_SHARK)
1698 dnl ========================================================
1699 dnl instruments
1700 dnl ========================================================
1701 MOZ_ARG_ENABLE_BOOL(instruments,
1702 [  --enable-instruments    Enable instruments remote profiling. Implies --enable-profiling.],
1703     MOZ_INSTRUMENTS=1,
1704     MOZ_INSTRUMENTS= )
1705 if test -n "$MOZ_INSTRUMENTS"; then
1706     MOZ_PROFILING=1
1707     AC_DEFINE(MOZ_INSTRUMENTS)
1710 dnl ========================================================
1711 dnl callgrind
1712 dnl ========================================================
1713 MOZ_ARG_ENABLE_BOOL(callgrind,
1714 [  --enable-callgrind      Enable callgrind profiling. Implies --enable-profiling.],
1715     MOZ_CALLGRIND=1,
1716     MOZ_CALLGRIND= )
1717 if test -n "$MOZ_CALLGRIND"; then
1718     MOZ_PROFILING=1
1719     AC_DEFINE(MOZ_CALLGRIND)
1722 dnl ========================================================
1723 dnl vtune
1724 dnl ========================================================
1725 MOZ_ARG_ENABLE_BOOL(vtune,
1726 [  --enable-vtune          Enable vtune profiling. Implies --enable-profiling.],
1727     MOZ_VTUNE=1,
1728     MOZ_VTUNE= )
1729 if test -n "$MOZ_VTUNE"; then
1730     MOZ_PROFILING=1
1731     AC_DEFINE(MOZ_VTUNE)
1734 dnl ========================================================
1735 dnl Profiling
1736 dnl ========================================================
1737 if test -n "$MOZ_PROFILING"; then
1738     AC_DEFINE(MOZ_PROFILING)
1741 dnl ========================================================
1742 dnl System overrides of the defaults for host
1743 dnl ========================================================
1744 case "$host" in
1745 *mingw*)
1746     if test -n "$_WIN32_MSVC"; then
1747         HOST_AR=lib
1748         HOST_AR_FLAGS='-NOLOGO -OUT:$@'
1749         HOST_CFLAGS="$HOST_CFLAGS -TC -nologo"
1750         HOST_RANLIB='echo ranlib'
1751     else
1752         HOST_CFLAGS="$HOST_CFLAGS -mwindows"
1753     fi
1754     HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11 -D_CRT_SECURE_NO_WARNINGS"
1755     HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1756     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1757     HOST_BIN_SUFFIX=.exe
1758     case "$host" in
1759     *mingw*)
1760         PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1761         ;;
1762     esac
1764     case "${host_cpu}" in
1765     i*86)
1766         if test -n "$_WIN32_MSVC"; then
1767             HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
1768         fi
1769         ;;
1770     x86_64)
1771         if test -n "$_WIN32_MSVC"; then
1772             HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
1773         fi
1774         HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1775         ;;
1776     esac
1777     ;;
1779 *-darwin*)
1780     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1781     HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1782     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1783     ;;
1785 *-linux*|*-kfreebsd*-gnu|*-gnu*)
1786     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1787     HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1788     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1789     ;;
1792     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1793     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1794     ;;
1795 esac
1797 dnl Check for using a custom <inttypes.h> implementation
1798 dnl ========================================================
1799 AC_MSG_CHECKING(for custom <inttypes.h> implementation)
1800 if test "$MOZ_CUSTOM_INTTYPES_H"; then
1801   AC_DEFINE_UNQUOTED(MOZ_CUSTOM_INTTYPES_H, "$MOZ_CUSTOM_INTTYPES_H")
1802   AC_MSG_RESULT(using $MOZ_CUSTOM_INTTYPES_H)
1803 else
1804   AC_MSG_RESULT(none specified)
1807 dnl Get mozilla version from central milestone file
1808 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1809 MOZILLA_UAVERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir -uaversion`
1810 MOZILLA_SYMBOLVERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir -symbolversion`
1812 dnl Get version of various core apps from the version files.
1813 FIREFOX_VERSION=`cat $_topsrcdir/browser/config/version.txt`
1815 if test -z "$FIREFOX_VERSION"; then
1816     AC_MSG_ERROR([FIREFOX_VERSION is unexpectedly blank.])
1819 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1820 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1821 AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION")
1822 AC_SUBST(MOZILLA_SYMBOLVERSION)
1824 MOZ_DOING_LTO(lto_is_enabled)
1826 dnl ========================================================
1827 dnl System overrides of the defaults for target
1828 dnl ========================================================
1830 case "$target" in
1831 *-aix*)
1832     AC_DEFINE(AIX)
1833     if test ! "$GNU_CC"; then
1834         if test ! "$HAVE_64BIT_OS"; then
1835             # Compiling with Visual Age C++ object model compat is the
1836             # default. To compile with object model ibm, add
1837             # AIX_OBJMODEL=ibm to .mozconfig.
1838             if test "$AIX_OBJMODEL" = "ibm"; then
1839                 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1840             else
1841                 AIX_OBJMODEL=compat
1842             fi
1843         else
1844             AIX_OBJMODEL=compat
1845         fi
1846         AC_SUBST(AIX_OBJMODEL)
1847         DSO_LDOPTS='-qmkshrobj=1'
1848         DSO_CFLAGS='-qflag=w:w'
1849         DSO_PIC_CFLAGS=
1850         LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1851         MOZ_FIX_LINK_PATHS=
1852         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1853         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1854         if test "$COMPILE_ENVIRONMENT"; then
1855             AC_LANG_SAVE
1856             AC_LANG_CPLUSPLUS
1857             AC_MSG_CHECKING([for IBM XLC/C++ compiler version >= 9.0.0.7])
1858             AC_TRY_COMPILE([],
1859                 [#if (__IBMCPP__ < 900)
1860                  #error "Bad compiler"
1861                  #endif],
1862                 _BAD_COMPILER=,_BAD_COMPILER=1)
1863             if test -n "$_BAD_COMPILER"; then
1864                 AC_MSG_RESULT([no])
1865                 AC_MSG_ERROR([IBM XLC/C++ 9.0.0.7 or higher is required to build.])
1866             else
1867                 AC_MSG_RESULT([yes])
1868             fi
1869             AC_LANG_RESTORE
1870             TARGET_COMPILER_ABI="ibmc"
1871             CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1872             CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1873         fi
1874     fi
1875     case "${target_os}" in
1876     aix4.1*)
1877         DLL_SUFFIX='_shr.a'
1878         ;;
1879     esac
1880     if test "$COMPILE_ENVIRONMENT"; then
1881         MOZ_CHECK_HEADERS(sys/inttypes.h)
1882     fi
1883     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1884     ;;
1886 *-darwin*)
1887     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1888     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1889     MOZ_OPTIMIZE_FLAGS="-O3"
1890     # Statically disable jemalloc on 10.5 and 32-bit 10.6.  See bug 702250.
1891     if test "$HAVE_64BIT_OS"; then
1892         MOZ_MEMORY=1
1893     fi
1894     DLL_SUFFIX=".dylib"
1895     DSO_LDOPTS=''
1896     STRIP_FLAGS="$STRIP_FLAGS -x -S"
1897     # Check whether we're targeting OS X or iOS
1898     AC_CACHE_CHECK(for iOS target,
1899                    ac_cv_ios_target,
1900                    [AC_TRY_COMPILE([#include <TargetConditionals.h>
1901 #if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
1902 #error not iOS
1903 #endif],
1904                                    [],
1905                                    ac_cv_ios_target="yes",
1906                                    ac_cv_ios_target="no")])
1907     if test "$ac_cv_ios_target" = "yes"; then
1908         AC_DEFINE(XP_IOS)
1909         AC_DEFINE(XP_DARWIN)
1910         _PLATFORM_DEFAULT_TOOLKIT='cairo-uikit'
1911     else
1912         AC_DEFINE(XP_MACOSX)
1913         AC_DEFINE(XP_DARWIN)
1914         _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1915         # The ExceptionHandling framework is needed for Objective-C exception
1916         # logging code in nsObjCExceptions.h. Currently we only use that in debug
1917         # builds.
1918         MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
1919     fi
1920     TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1922     MMX_FLAGS="-mmmx"
1923     SSE_FLAGS="-msse"
1924     SSE2_FLAGS="-msse2"
1926     if test "x$lto_is_enabled" = "xyes"; then
1927         echo "Skipping -dead_strip because lto is enabled."
1928     dnl DTrace and -dead_strip don't interact well. See bug 403132.
1929     dnl ===================================================================
1930     elif test "x$enable_dtrace" = "xyes"; then
1931         echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1932     else
1933         dnl check for the presence of the -dead_strip linker flag
1934         AC_MSG_CHECKING([for -dead_strip option to ld])
1935         _SAVE_LDFLAGS=$LDFLAGS
1936         LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1937         AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1938         if test -n "$_HAVE_DEAD_STRIP" ; then
1939             AC_MSG_RESULT([yes])
1940             MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1941         else
1942             AC_MSG_RESULT([no])
1943         fi
1945         LDFLAGS=$_SAVE_LDFLAGS
1946     fi
1948     dnl With newer linkers we need to pass -allow_heap_execute because of
1949     dnl Microsoft Silverlight (5.1.10411.0 at least).
1950     AC_MSG_CHECKING([for -allow_heap_execute option to ld])
1951     _SAVE_LDFLAGS=$LDFLAGS
1952     LDFLAGS="$LDFLAGS -Wl,-allow_heap_execute"
1953     AC_TRY_LINK(,[return 0;],_HAVE_ALLOW_HEAP_EXECUTE=1,
1954                 _HAVE_ALLOW_HEAP_EXECUTE=)
1955     if test -n "$_HAVE_ALLOW_HEAP_EXECUTE" ; then
1956         AC_MSG_RESULT([yes])
1957         MOZ_ALLOW_HEAP_EXECUTE_FLAGS="-Wl,-allow_heap_execute"
1958     else
1959         AC_MSG_RESULT([no])
1960     fi
1961     LDFLAGS=$_SAVE_LDFLAGS
1963     MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1964     ;;
1966 ia64*-hpux*)
1967     DLL_SUFFIX=".so"
1968     if test ! "$GNU_CC"; then
1969        DSO_LDOPTS='-b'
1970        DSO_CFLAGS=""
1971        DSO_PIC_CFLAGS=
1972        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
1973        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
1974        CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1975     else
1976        DSO_LDOPTS='-b -E'
1977        MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1978        MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1979     fi
1980     MOZ_FIX_LINK_PATHS=
1981     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1982     AC_DEFINE(_LARGEFILE64_SOURCE)
1983     ;;
1985 *-hpux*)
1986     DLL_SUFFIX=".sl"
1987     if test ! "$GNU_CC"; then
1988         DSO_LDOPTS='-b -Wl,+s'
1989         DSO_CFLAGS=""
1990         DSO_PIC_CFLAGS="+Z"
1991         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1992         MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1993         CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1994     else
1995         DSO_LDOPTS='-b -E +s'
1996         MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1997         MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1998     fi
1999     MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
2000     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2001     ;;
2003 *-android*|*-linuxandroid*)
2004     AC_DEFINE(NO_PW_GECOS)
2005     no_x=yes
2006     if test -n "$gonkdir"; then
2007         _PLATFORM_DEFAULT_TOOLKIT=cairo-gonk
2008         _PLATFORM_HAVE_RIL=1
2009         MOZ_B2G_FM=1
2010         MOZ_SYNTH_PICO=1
2011     else
2012         _PLATFORM_DEFAULT_TOOLKIT=cairo-android
2013         MOZ_LINKER=1
2014     fi
2015     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2017     MMX_FLAGS="-mmmx"
2018     SSE_FLAGS="-msse"
2019     SSE2_FLAGS="-msse2"
2021     MOZ_GFX_OPTIMIZE_MOBILE=1
2022     MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions"
2023     ;;
2025 *-*linux*)
2026     # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
2027     # Similarly for GNU_CXX and INTEL_CXX.
2028     if test "$INTEL_CC" -o "$INTEL_CXX"; then
2029         # -Os has been broken on Intel's C/C++ compilers for quite a
2030         # while; Intel recommends against using it.
2031         MOZ_OPTIMIZE_FLAGS="-O2"
2032     elif test "$GNU_CC" -o "$GNU_CXX"; then
2033         case $GCC_VERSION in
2034         4.5.*)
2035             # -Os is broken on gcc 4.5.x we need to tweak it to get good results.
2036             MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
2037         esac
2038         MOZ_PGO_OPTIMIZE_FLAGS="-O3"
2039         MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks $MOZ_OPTIMIZE_SIZE_TWEAK"
2040     fi
2042     MMX_FLAGS="-mmmx"
2043     SSE_FLAGS="-msse"
2044     SSE2_FLAGS="-msse2"
2046     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2048     MOZ_MEMORY=1
2050     case "${target_cpu}" in
2051     alpha*)
2052         CFLAGS="$CFLAGS -mieee"
2053         CXXFLAGS="$CXXFLAGS -mieee"
2054     ;;
2055     esac
2057     if test -z "$MC"; then
2058         MC=mc.exe
2059     fi
2060     ;;
2061 *-mingw*)
2062     DSO_CFLAGS=
2063     DSO_PIC_CFLAGS=
2064     DLL_SUFFIX=.dll
2065     RC=rc.exe
2066     MC=mc.exe
2067     # certain versions of cygwin's makedepend barf on the
2068     # #include <string> vs -I./dist/include/string issue so don't use it
2069     XPCOM_FROZEN_LDOPTS='$(call EXPAND_LIBNAME_PATH,xul mozalloc,$(LIBXUL_DIST)/lib)'
2070     if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
2071         CC="$CC -mwindows"
2072         CXX="$CXX -mwindows"
2073         CPP="$CPP -mwindows"
2074         CFLAGS="$CFLAGS -mms-bitfields"
2075         CXXFLAGS="$CXXFLAGS -mms-bitfields"
2076         DSO_LDOPTS='-shared'
2077         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2078         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2079         RC='$(WINDRES)'
2080         # Use static libgcc and libstdc++
2081         LDFLAGS="$LDFLAGS -static-libgcc -static-libstdc++"
2082         NSPR_LDFLAGS="$NSPR_LDFLAGS -static-libgcc"
2083         # Use temp file for windres (bug 213281)
2084         RCFLAGS='-O coff --use-temp-file'
2085         # mingw doesn't require kernel32, user32, and advapi32 explicitly
2086         LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32 -lnetapi32"
2087         MOZ_FIX_LINK_PATHS=
2088         DLL_PREFIX=
2089         IMPORT_LIB_SUFFIX=dll.a
2091         MMX_FLAGS="-mmmx"
2092         SSE_FLAGS="-msse"
2093         SSE2_FLAGS="-msse2"
2095         # We use mix of both POSIX and Win32 printf format across the tree, so format
2096         # warnings are useless on mingw.
2097         MOZ_C_SUPPORTS_WARNING(-Wno-, format, ac_c_has_wno_format)
2098         MOZ_CXX_SUPPORTS_WARNING(-Wno-, format, ac_cxx_has_wno_format)
2099     else
2100         TARGET_COMPILER_ABI=msvc
2101         HOST_CC='$(CC)'
2102         HOST_CXX='$(CXX)'
2103         HOST_LD='$(LD)'
2104         if test "$AS_BIN"; then
2105             AS="$(basename "$AS_BIN")"
2106         fi
2107         AR='lib'
2108         AR_FLAGS='-NOLOGO -OUT:$@'
2109         AR_EXTRACT=
2110         RANLIB='echo not_ranlib'
2111         STRIP='echo not_strip'
2112         PKG_SKIP_STRIP=1
2113         XARGS=xargs
2114         ZIP=zip
2115         UNZIP=unzip
2116         DOXYGEN=:
2117         ASM_SUFFIX=asm
2118         OBJ_SUFFIX=obj
2119         LIB_SUFFIX=lib
2120         DLL_PREFIX=
2121         LIB_PREFIX=
2122         IMPORT_LIB_SUFFIX=lib
2123         MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2124         MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2125         MKSHLIB_FORCE_ALL=
2126         MKSHLIB_UNFORCE_ALL=
2127         DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2128         _USE_CPP_INCLUDE_FLAG=1
2129         _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2130         _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2131         CFLAGS="$CFLAGS -W3 -Gy"
2132         CXXFLAGS="$CXXFLAGS -W3 -Gy"
2133         if test "$_CC_SUITE" -ge "12"; then
2134             dnl VS2013+ requires -FS when parallel building by make -jN.
2135             dnl If nothing, compiler sometimes causes C1041 error.
2136             dnl
2137             dnl Visual Studio 2013 supports -Gw flags
2138             dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
2139             CFLAGS="$CFLAGS -FS -Gw"
2140             CXXFLAGS="$CXXFLAGS -FS -Gw"
2141         fi
2142         # khuey says we can safely ignore MSVC warning C4251
2143         # MSVC warning C4244 (implicit type conversion may lose data) warns
2144         # and requires workarounds for perfectly valid code.  Also, GCC/clang
2145         # don't warn about it by default. So for consistency/sanity, we turn
2146         # it off on MSVC, too.
2147         # MSVC warning C4345 warns of newly conformant behavior as of VS2003.
2148         # MSVC warning C4351 warns of newly conformant behavior as of VS2005.
2149         # MSVC warning C4482 warns when an enum value is refered specifing the
2150         # name of the enum itself.  This behavior is allowed in C++11, and the
2151         # warning has been removed in VS2012.
2152         # MSVC warning C4800 warns when a value is implicitly cast to bool,
2153         # because this also forces narrowing to a single byte, which can be a
2154         # perf hit.  But this matters so little in practice (and often we want
2155         # that behavior) that it's better to turn it off.
2156         # MSVC warning C4819 warns some UTF-8 characters (e.g. copyright sign)
2157         # on non-Western system locales even if it is in a comment.
2158         CFLAGS="$CFLAGS -wd4244 -wd4819"
2159         CXXFLAGS="$CXXFLAGS -wd4251 -wd4244 -wd4345 -wd4351 -wd4482 -wd4800 -wd4819"
2160         # make 'foo == bar;' error out
2161         CFLAGS="$CFLAGS -we4553"
2162         CXXFLAGS="$CXXFLAGS -we4553"
2163         LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib netapi32.lib"
2164         MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2165         WARNINGS_AS_ERRORS='-WX'
2166         MOZ_OPTIMIZE_FLAGS='-O1'
2167         MOZ_FIX_LINK_PATHS=
2168         MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2169         LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT"
2170         if test -z "$DEVELOPER_OPTIONS"; then
2171             LDFLAGS="$LDFLAGS -RELEASE"
2172         fi
2173         dnl For profile-guided optimization
2174         PROFILE_GEN_CFLAGS="-GL"
2175         PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2176         dnl XXX: PGO builds can fail with warnings treated as errors,
2177         dnl specifically "no profile data available" appears to be
2178         dnl treated as an error sometimes. This might be a consequence
2179         dnl of using WARNINGS_AS_ERRORS in some modules, combined
2180         dnl with the linker doing most of the work in the whole-program
2181         dnl optimization/PGO case. I think it's probably a compiler bug,
2182         dnl but we work around it here.
2183         PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2184         dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2185         dnl Probably also a compiler bug, but what can you do?
2186         PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2187         LDFLAGS="$LDFLAGS -DYNAMICBASE"
2188         dnl Minimum reqiurement of Gecko is VS2010 or later which supports
2189         dnl both SSSE3 and SSE4.1.
2190         HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
2191         HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
2192     fi
2193     AC_DEFINE(HAVE_SNPRINTF)
2194     AC_DEFINE(_WINDOWS)
2195     AC_DEFINE(WIN32)
2196     AC_DEFINE(XP_WIN)
2197     AC_DEFINE(XP_WIN32)
2198     AC_DEFINE(HW_THREADS)
2199     AC_DEFINE(STDC_HEADERS)
2200     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2201     TARGET_MD_ARCH=win32
2202     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2203     BIN_SUFFIX='.exe'
2204     MOZ_USER_DIR="Mozilla"
2206     dnl Hardcode to win95 for now - cls
2207     TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2209     dnl set NO_X11 defines here as the general check is skipped on win32
2210     no_x=yes
2211     AC_DEFINE(NO_X11)
2213     case "$host" in
2214     *-mingw*)
2215         MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2216         if test -n "$L10NBASEDIR"; then
2217             L10NBASEDIR=`cd $L10NBASEDIR && pwd -W`
2218         fi
2219         ;;
2220     esac
2222     case "$host" in
2223     *-mingw*)
2224         if test -z "$MOZ_TOOLS"; then
2225             AC_MSG_ERROR([MOZ_TOOLS is not set])
2226         fi
2227         MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2228         if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
2229             AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2230         fi
2231         MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2232         if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2233             AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2234         fi
2235         ;;
2236     esac
2238     case "$host_os" in
2239     cygwin*|msvc*|mks*)
2240         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.])
2241         ;;
2242     esac
2244     case "$target" in
2245     i*86-*)
2246         if test "$HAVE_64BIT_OS"; then
2247             AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2248         fi
2250         if test -n "$GNU_CC"; then
2251             CFLAGS="$CFLAGS -mstackrealign -fno-keep-inline-dllexport"
2252             CXXFLAGS="$CXXFLAGS -mstackrealign -fno-keep-inline-dllexport"
2253             LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup -Wl,--large-address-aware"
2254         else
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
2271     ;;
2273 *-netbsd*)
2274     DSO_CFLAGS=''
2275     CFLAGS="$CFLAGS -Dunix"
2276     CXXFLAGS="$CXXFLAGS -Dunix"
2277     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2278         DLL_SUFFIX=".so"
2279         DSO_PIC_CFLAGS='-fPIC -DPIC'
2280         DSO_LDOPTS='-shared'
2281         BIN_FLAGS='-Wl,--export-dynamic'
2282     else
2283         DSO_PIC_CFLAGS='-fPIC -DPIC'
2284         DLL_SUFFIX=".so.1.0"
2285         DSO_LDOPTS='-shared'
2286     fi
2287     # This will fail on a.out systems prior to 1.5.1_ALPHA.
2288     MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2289     MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2290     if test "$LIBRUNPATH"; then
2291         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2292     fi
2293     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(notdir $@) -o $@'
2294     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(notdir $@)) -o $@'
2295     MMX_FLAGS="-mmmx"
2296     SSE_FLAGS="-msse"
2297     SSE2_FLAGS="-msse2"
2298     ;;
2300 *-openbsd*)
2301     if test "$SO_VERSION"; then
2302         DLL_SUFFIX=".so.$SO_VERSION"
2303     else
2304         DLL_SUFFIX=".so.1.0"
2305     fi
2306     MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib -Wl,-rpath-link,$(if $(X11BASE),$(X11BASE),/usr/X11R6)/lib'
2307     DSO_CFLAGS=''
2308     DSO_PIC_CFLAGS='-fPIC'
2309     DSO_LDOPTS='-shared -fPIC'
2310     if test "$LIBRUNPATH"; then
2311         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2312     fi
2313     MMX_FLAGS="-mmmx"
2314     SSE_FLAGS="-msse"
2315     SSE2_FLAGS="-msse2"
2316     ;;
2318 *-solaris*)
2319     AC_DEFINE(SOLARIS)
2320     TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2321     MOZ_FIX_LINK_PATHS=
2322     # $ORIGIN/.. is for shared libraries under components/ to locate shared
2323     # libraries one level up (e.g. libnspr4.so)
2324     if test "$SOLARIS_SUNPRO_CC"; then
2325        LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
2326        LIBS="-lCrun -lCstd -lc $LIBS"
2327        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2328        CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
2329        CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
2330        LDFLAGS="-xildoff $LDFLAGS"
2331        MMX_FLAGS="-xarch=mmx -xO4"
2332        SSE_FLAGS="-xarch=sse"
2333        SSE2_FLAGS="-xarch=ssei2 -xO4"
2334        if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
2335            _SAVE_LDFLAGS=$LDFLAGS
2336            LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2337            AC_TRY_LINK([#include <stdio.h>],
2338                        [printf("Hello World\n");],
2339                        ,
2340                        [LDFLAGS=$_SAVE_LDFLAGS])
2341        fi
2342        MOZ_OPTIMIZE_FLAGS="-xO4"
2343        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
2344        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
2345        MKSHLIB_FORCE_ALL='-z allextract'
2346        MKSHLIB_UNFORCE_ALL='-z defaultextract'
2347        DSO_LDOPTS='-G'
2348        AR_LIST="$AR t"
2349        AR_EXTRACT="$AR x"
2350        AR_DELETE="$AR d"
2351        AR='$(CXX) -xar'
2352        AR_FLAGS='-o $@'
2353        AS='/usr/ccs/bin/as'
2354        ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2355        AS_DASH_C_FLAG=''
2356        TARGET_COMPILER_ABI="sunc"
2357        CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2358        CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2359        AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2360        AC_LANG_SAVE
2361        AC_LANG_CPLUSPLUS
2362        AC_TRY_COMPILE([],
2363            [#if (__SUNPRO_CC < 0x590)
2364            #error "Denied"
2365            #endif],
2366            _BAD_COMPILER=,_BAD_COMPILER=1)
2367        if test -n "$_BAD_COMPILER"; then
2368            _res="no"
2369            AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2370        else
2371            _res="yes"
2372        fi
2373        AC_TRY_COMPILE([],
2374            [#if (__SUNPRO_CC >= 0x5100)
2375            #error "Sun C++ 5.10 or above"
2376            #endif],
2377            _ABOVE_SS12U1=,_ABOVE_SS12U1=1)
2378        if test "$_ABOVE_SS12U1"; then
2379            # disable xannotate
2380            CXXFLAGS="$CXXFLAGS -xannotate=no"
2381        fi
2382        AC_MSG_RESULT([$_res])
2383        AC_LANG_RESTORE
2384     else
2385        LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
2386        LIBS="-lc $LIBS"
2387        MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
2388        MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
2389        ASFLAGS="$ASFLAGS -fPIC"
2390        DSO_LDOPTS='-shared'
2391        WARNINGS_AS_ERRORS='-Werror'
2392        _WARNINGS_CFLAGS=''
2393        _WARNINGS_CXXFLAGS=''
2394        if test "$OS_RELEASE" = "5.3"; then
2395            AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2396        fi
2397        MMX_FLAGS="-mmmx"
2398        SSE_FLAGS="-msse"
2399        SSE2_FLAGS="-msse2"
2400     fi
2401     if test "$OS_RELEASE" = "5.5.1"; then
2402         AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2403     fi
2404     ;;
2406 *-sunos*)
2407     DSO_LDOPTS='-Bdynamic'
2408     MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2409     MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2410     AC_DEFINE(SUNOS4)
2411     AC_DEFINE(SPRINTF_RETURNS_STRING)
2412     case "$(target_os)" in
2413     sunos4.1*)
2414         DLL_SUFFIX='.so.1.0'
2415         ;;
2416     esac
2417     ;;
2419 esac
2421 AC_SUBST_LIST(MMX_FLAGS)
2422 AC_SUBST_LIST(SSE_FLAGS)
2423 AC_SUBST_LIST(SSE2_FLAGS)
2425 case "$target" in
2426 *-*linux*)
2427     # Includes linux-android
2428     AC_DEFINE(XP_LINUX)
2429     ;;
2430 esac
2432 AC_SUBST(MOZ_LINKER)
2433 if test -n "$MOZ_LINKER"; then
2434   AC_DEFINE(MOZ_LINKER)
2437 dnl Only one oddball right now (QNX), but this gives us flexibility
2438 dnl if any other platforms need to override this in the future.
2439 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2441 dnl ========================================================
2442 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2443 dnl by now will not have any way to link most binaries (tests
2444 dnl as well as viewer, apprunner, etc.), because some symbols
2445 dnl will be left out of the "composite" .so's by ld as unneeded.
2446 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2447 dnl they can link in the static libs that provide the missing
2448 dnl symbols.
2449 dnl ========================================================
2450 NO_LD_ARCHIVE_FLAGS=
2451 if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
2452     NO_LD_ARCHIVE_FLAGS=1
2454 case "$target" in
2455 *-aix4.3*|*-aix5*)
2456     NO_LD_ARCHIVE_FLAGS=
2457     ;;
2458 *-mingw*)
2459     if test -z "$GNU_CC"; then
2460         NO_LD_ARCHIVE_FLAGS=
2461     fi
2462     ;;
2463 esac
2464 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2466 dnl ========================================================
2467 dnl = Flags to strip unused symbols from .so components and
2468 dnl = to export jemalloc symbols when linking a program
2469 dnl ========================================================
2470 case "$target" in
2471     *-linux*|*-kfreebsd*-gnu|*-gnu*)
2472         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2473         ;;
2474     *-solaris*)
2475         if test -z "$GNU_CC"; then
2476          MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2477         else
2478          if test -z "$GCC_USE_GNU_LD"; then
2479           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2480          else
2481           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2482          fi
2483         fi
2484         ;;
2485     *-darwin*)
2486         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2487         ;;
2488     *-mingw*)
2489         if test -n "$GNU_CC"; then
2490            MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2491         fi
2492         ;;
2493 esac
2495 if test -z "$COMPILE_ENVIRONMENT"; then
2496     SKIP_COMPILER_CHECKS=1
2497     SKIP_LIBRARY_CHECKS=1
2498 else
2499     MOZ_COMPILER_OPTS
2502 if test -z "$SKIP_COMPILER_CHECKS"; then
2503 dnl Checks for typedefs, structures, and compiler characteristics.
2504 dnl ========================================================
2505 AC_HEADER_STDC
2506 AC_C_CONST
2507 AC_TYPE_MODE_T
2508 AC_TYPE_OFF_T
2509 AC_TYPE_PID_T
2510 AC_TYPE_SIZE_T
2511 AC_LANG_CPLUSPLUS
2512 AC_LANG_C
2513 AC_MSG_CHECKING(for ssize_t)
2514 AC_CACHE_VAL(ac_cv_type_ssize_t,
2515  [AC_TRY_COMPILE([#include <stdio.h>
2516                   #include <sys/types.h>],
2517                  [ssize_t foo = 0;],
2518                  [ac_cv_type_ssize_t=true],
2519                  [ac_cv_type_ssize_t=false])])
2520 if test "$ac_cv_type_ssize_t" = true ; then
2521   AC_DEFINE(HAVE_SSIZE_T)
2522   AC_MSG_RESULT(yes)
2523 else
2524   AC_MSG_RESULT(no)
2526 AC_STRUCT_ST_BLKSIZE
2527 AC_MSG_CHECKING(for siginfo_t)
2528 AC_CACHE_VAL(ac_cv_siginfo_t,
2529  [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2530                   #include <signal.h>],
2531                  [siginfo_t* info;],
2532                  [ac_cv_siginfo_t=true],
2533                  [ac_cv_siginfo_t=false])])
2534 if test "$ac_cv_siginfo_t" = true ; then
2535   AC_DEFINE(HAVE_SIGINFO_T)
2536   AC_MSG_RESULT(yes)
2537 else
2538   AC_MSG_RESULT(no)
2541 AC_LANG_CPLUSPLUS
2543 MOZ_CXX11
2545 AC_LANG_C
2547 dnl Check for .hidden assembler directive and visibility attribute.
2548 dnl Borrowed from glibc configure.in
2549 dnl ===============================================================
2550 if test "$GNU_CC" -a "$OS_TARGET" != WINNT; then
2551   AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2552   AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2553   if test -n "$gonkdir"; then
2554     visibility_target=Gonk
2555   else
2556     visibility_target=$OS_TARGET
2557   fi
2558   case "$visibility_target" in
2559   Darwin|Gonk)
2560     VISIBILITY_FLAGS='-fvisibility=hidden'
2561     ;;
2562   *)
2563     VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2564     WRAP_SYSTEM_INCLUDES=1
2565     ;;
2566   esac
2567 fi         # GNU_CC
2569 # visibility hidden flag for Sun Studio on Solaris
2570 if test "$SOLARIS_SUNPRO_CC"; then
2571 VISIBILITY_FLAGS='-xldscope=hidden'
2572 fi         # Sun Studio on Solaris
2574 case "${OS_TARGET}" in
2575 WINNT|Darwin|Android)
2576   ;;
2578   STL_FLAGS='-I$(DIST)/stl_wrappers'
2579   WRAP_STL_INCLUDES=1
2580   ;;
2581 esac
2583 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2584 AC_SUBST(VISIBILITY_FLAGS)
2586 MOZ_GCC_PR49911
2587 MOZ_GCC_PR39608
2588 if test "$OS_TARGET" != WINNT; then
2589     # Only run this test with clang on non-Windows platforms, because clang
2590     # cannot do enough code gen for now to make this test work correctly.
2591     MOZ_LLVM_PR8927
2594 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
2595 dnl ========================================================
2596 if test "$GNU_CC"; then
2597   CFLAGS_save="${CFLAGS}"
2598   CFLAGS="${CFLAGS} -Werror"
2599   AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
2600                  ac_cv_force_align_arg_pointer,
2601                  [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
2602                                  [],
2603                                  ac_cv_force_align_arg_pointer="yes",
2604                                  ac_cv_force_align_arg_pointer="no")])
2605   CFLAGS="${CFLAGS_save}"
2606   if test "$ac_cv_force_align_arg_pointer" = "yes"; then
2607     HAVE_GCC_ALIGN_ARG_POINTER=1
2608   else
2609     HAVE_GCC_ALIGN_ARG_POINTER=
2610   fi
2612 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
2614 dnl Checks for header files.
2615 dnl ========================================================
2616 AC_HEADER_DIRENT
2617 case "$target_os" in
2618 freebsd*|openbsd*)
2619 # for stuff like -lXshm
2620     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2621     ;;
2622 esac
2623 MOZ_CHECK_COMMON_HEADERS
2625 dnl These are all the places some variant of statfs can be hiding.
2626 MOZ_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2628 dnl Quota support
2629 MOZ_CHECK_HEADERS(sys/quota.h sys/sysmacros.h)
2630 MOZ_CHECK_HEADERS([linux/quota.h],,,[#include <sys/socket.h>])
2632 dnl SCTP support - needs various network include headers
2633 MOZ_CHECK_HEADERS([linux/if_addr.h linux/rtnetlink.h],,,[#include <sys/socket.h>])
2635 MOZ_CHECK_HEADERS(sys/types.h netinet/in.h byteswap.h)
2637 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
2638 AC_CACHE_CHECK(for sockaddr_in.sin_len,
2639                    ac_cv_sockaddr_in_sin_len,
2640                    [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2641                                     #include <sys/types.h>
2642                                     #endif
2643                                     #include <netinet/in.h>
2644                                     struct sockaddr_in x;
2645                                     void *foo = (void*) &x.sin_len;],
2646                                    [],
2647                                    [ac_cv_sockaddr_in_sin_len=true],
2648                                    [ac_cv_sockaddr_in_sin_len=false])])
2649 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
2650   AC_DEFINE(HAVE_SIN_LEN)
2651 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
2652   AC_DEFINE(HAVE_SCONN_LEN)
2655 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
2656                ac_cv_sockaddr_in6_sin6_len,
2657                [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2658                                 #include <sys/types.h>
2659                                 #endif
2660                                 #include <netinet/in.h>
2661                                 struct sockaddr_in6 x;
2662                                 void *foo = (void*) &x.sin6_len;],
2663                                [],
2664                                [ac_cv_sockaddr_in6_sin6_len=true],
2665                                [ac_cv_sockaddr_in6_sin6_len=false])])
2666 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
2667   AC_DEFINE(HAVE_SIN6_LEN)
2670 AC_CACHE_CHECK(for sockaddr.sa_len,
2671                ac_cv_sockaddr_sa_len,
2672                [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2673                                 #include <sys/types.h>
2674                                 #endif
2675                                 #include <sys/socket.h>
2676                                 struct sockaddr x;
2677                                 void *foo = (void*) &x.sa_len;],
2678                                [],
2679                                [ac_cv_sockaddr_sa_len=true],
2680                                [ac_cv_sockaddr_sa_len=false])])
2681 if test "$ac_cv_sockaddr_sa_len" = true ; then
2682   AC_DEFINE(HAVE_SA_LEN)
2685 AC_ARG_ENABLE(dtrace,
2686               [  --enable-dtrace         build with dtrace support if available (default=no)],
2687               [enable_dtrace="yes"],)
2688 if test "x$enable_dtrace" = "xyes"; then
2689   MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
2690   if test -n "$HAVE_DTRACE"; then
2691       AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
2692   else
2693       AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
2694   fi
2696 AC_SUBST(HAVE_DTRACE)
2698 case $target in
2699 *-aix4.3*|*-aix5*)
2700     ;;
2702     MOZ_CHECK_HEADERS(sys/cdefs.h)
2703     ;;
2704 esac
2706 MOZ_LINUX_PERF_EVENT
2708 dnl Checks for libraries.
2709 dnl ========================================================
2710 case $target in
2711 *-hpux11.*)
2712     ;;
2714     AC_CHECK_LIB(c_r, gethostbyname_r)
2715     ;;
2716 esac
2718 dnl We don't want to link with libdl even if it's present on OS X, since
2719 dnl it's not used and not part of the default installation. OS/2 has dlfcn
2720 dnl in libc.
2721 dnl We don't want to link against libm or libpthread on Darwin since
2722 dnl they both are just symlinks to libSystem and explicitly linking
2723 dnl against libSystem causes issues when debugging (see bug 299601).
2724 case $target in
2725 *-darwin*)
2726     ;;
2728     AC_SEARCH_LIBS(dlopen, dl,
2729         MOZ_CHECK_HEADER(dlfcn.h,
2730         AC_DEFINE(HAVE_DLOPEN)))
2731     ;;
2732 esac
2734 _SAVE_CFLAGS="$CFLAGS"
2735 CFLAGS="$CFLAGS -D_GNU_SOURCE"
2736 AC_CHECK_FUNCS(dladdr memmem)
2737 CFLAGS="$_SAVE_CFLAGS"
2739 if test ! "$GNU_CXX"; then
2741     case $target in
2742     *-aix*)
2743         AC_CHECK_LIB(C_r, demangle)
2744         ;;
2745      *)
2746         AC_CHECK_LIB(C, demangle)
2747         ;;
2748      esac
2751 AC_CHECK_LIB(socket, socket)
2753 XLDFLAGS="$X_LIBS"
2754 XLIBS="$X_EXTRA_LIBS"
2756 dnl ========================================================
2757 dnl Checks for X libraries.
2758 dnl Ordering is important.
2759 dnl Xt is dependent upon SM as of X11R6
2760 dnl ========================================================
2761 if test "$no_x" = "yes"; then
2762     AC_DEFINE(NO_X11)
2763 else
2764     AC_DEFINE_UNQUOTED(FUNCPROTO,15)
2765     XLIBS="-lX11 $XLIBS"
2766     _SAVE_LDFLAGS="$LDFLAGS"
2767     LDFLAGS="$XLDFLAGS $LDFLAGS"
2768     AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
2769         [MISSING_X="$MISSING_X -lX11"], $XLIBS)
2770     AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
2771         [MISSING_X="$MISSING_X -lXext"], $XLIBS)
2773     AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
2774         unset ac_cv_lib_Xt_XtFree
2775         AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
2776         AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
2777         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
2778             [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
2779         ])
2781     # AIX needs the motif library linked before libXt to prevent
2782     # crashes in plugins linked against Motif - Bug #98892
2783     case "${target_os}" in
2784     aix*)
2785         XT_LIBS="-lXm $XT_LIBS"
2786         ;;
2787     esac
2789     dnl ========================================================
2790     dnl = Check for XShm
2791     dnl ========================================================
2792     AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
2793         $XLIBS $XEXT_LIBS)
2795     dnl ========================================================
2796     dnl = Check for Xss
2797     dnl ========================================================
2798     MOZ_CHECK_HEADER(X11/extensions/scrnsaver.h,
2799         AC_CHECK_LIB(Xss, XScreenSaverQueryInfo,
2800             [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS"
2801              AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS))
2803     LDFLAGS="$_SAVE_LDFLAGS"
2804 fi # $no_x
2806 AC_SUBST(XCFLAGS)
2807 AC_SUBST(XLDFLAGS)
2808 AC_SUBST(XLIBS)
2809 AC_SUBST(XEXT_LIBS)
2810 AC_SUBST(XT_LIBS)
2811 AC_SUBST(XSS_LIBS)
2813 dnl ========================================================
2814 dnl = pthread support
2815 dnl = Start by checking whether the system support pthreads
2816 dnl ========================================================
2817 case "$target_os" in
2818 darwin*)
2819     MOZ_USE_PTHREADS=1
2820     ;;
2822     MOZ_CHECK_PTHREADS(pthreads,
2823         MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
2824         MOZ_CHECK_PTHREADS(pthread,
2825             MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
2826             MOZ_CHECK_PTHREADS(c_r,
2827                 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
2828                 MOZ_CHECK_PTHREADS(c,
2829                     MOZ_USE_PTHREADS=1
2830                 )
2831             )
2832         )
2833     )
2834     ;;
2835 esac
2837 dnl ========================================================
2838 dnl Check the command line for --with-pthreads
2839 dnl ========================================================
2840 MOZ_ARG_WITH_BOOL(pthreads,
2841 [  --with-pthreads         Force use of system pthread library with NSPR ],
2842 [ if test "$MOZ_USE_PTHREADS"x = x; then
2843     AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
2844 fi],
2845     MOZ_USE_PTHREADS=
2846     _PTHREAD_LDFLAGS=
2849 dnl ========================================================
2850 dnl Do the platform specific pthread hackery
2851 dnl ========================================================
2852 if test "$MOZ_USE_PTHREADS"x != x
2853 then
2854     dnl
2855     dnl See if -pthread is supported.
2856     dnl
2857     rm -f conftest*
2858     ac_cv_have_dash_pthread=no
2859     AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
2860     echo 'int main() { return 0; }' | cat > conftest.c
2861     ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
2862     if test $? -eq 0; then
2863         if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2864             ac_cv_have_dash_pthread=yes
2865             case "$target_os" in
2866             freebsd*)
2867 # Freebsd doesn't use -pthread for compiles, it uses them for linking
2868                 ;;
2869             *)
2870                 CFLAGS="$CFLAGS -pthread"
2871                 CXXFLAGS="$CXXFLAGS -pthread"
2872                 ;;
2873             esac
2874         fi
2875     fi
2876     rm -f conftest*
2877     AC_MSG_RESULT($ac_cv_have_dash_pthread)
2879     dnl
2880     dnl See if -pthreads is supported.
2881     dnl
2882     ac_cv_have_dash_pthreads=no
2883     if test "$ac_cv_have_dash_pthread" = "no"; then
2884         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
2885         echo 'int main() { return 0; }' | cat > conftest.c
2886         ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
2887         if test $? -eq 0; then
2888             if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2889                 ac_cv_have_dash_pthreads=yes
2890                 CFLAGS="$CFLAGS -pthreads"
2891                 CXXFLAGS="$CXXFLAGS -pthreads"
2892             fi
2893         fi
2894         rm -f conftest*
2895         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
2896     fi
2898     case "$target" in
2899         *-*-freebsd*)
2900             AC_DEFINE(_REENTRANT)
2901             AC_DEFINE(_THREAD_SAFE)
2902             dnl -pthread links in -lpthread, so don't specify it explicitly.
2903             if test "$ac_cv_have_dash_pthread" = "yes"; then
2904                 _PTHREAD_LDFLAGS="-pthread"
2905             fi
2906             ;;
2908         *-*-openbsd*|*-*-bsdi*)
2909             AC_DEFINE(_REENTRANT)
2910             AC_DEFINE(_THREAD_SAFE)
2911             dnl -pthread links in -lc_r, so don't specify it explicitly.
2912             if test "$ac_cv_have_dash_pthread" = "yes"; then
2913                 _PTHREAD_LDFLAGS="-pthread"
2914             fi
2915             ;;
2917         *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
2918             AC_DEFINE(_REENTRANT)
2919             ;;
2921         *-aix4.3*|*-aix5*)
2922             AC_DEFINE(_REENTRANT)
2923             ;;
2925         *-hpux11.*)
2926             AC_DEFINE(_REENTRANT)
2927             ;;
2929         *-*-solaris*)
2930             AC_DEFINE(_REENTRANT)
2931             if test "$SOLARIS_SUNPRO_CC"; then
2932                 CFLAGS="$CFLAGS -mt"
2933                 CXXFLAGS="$CXXFLAGS -mt"
2934             fi
2935             ;;
2936     esac
2937     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
2938     AC_SUBST(MOZ_USE_PTHREADS)
2942 dnl Checks for library functions.
2943 dnl ========================================================
2944 AC_PROG_GCC_TRADITIONAL
2945 AC_FUNC_MEMCMP
2946 AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize localtime_r)
2948 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
2949 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
2950                ac_cv_clock_monotonic,
2951                [for libs in "" -lrt; do
2952                     _SAVE_LIBS="$LIBS"
2953                     LIBS="$LIBS $libs"
2954                     AC_TRY_LINK([#include <time.h>],
2955                                  [ struct timespec ts;
2956                                    clock_gettime(CLOCK_MONOTONIC, &ts); ],
2957                                  ac_cv_clock_monotonic=$libs
2958                                  LIBS="$_SAVE_LIBS"
2959                                  break,
2960                                  ac_cv_clock_monotonic=no)
2961                     LIBS="$_SAVE_LIBS"
2962                 done])
2963 if test "$ac_cv_clock_monotonic" != "no"; then
2964     HAVE_CLOCK_MONOTONIC=1
2965     REALTIME_LIBS=$ac_cv_clock_monotonic
2966     AC_DEFINE(HAVE_CLOCK_MONOTONIC)
2967     AC_SUBST(HAVE_CLOCK_MONOTONIC)
2968     AC_SUBST(REALTIME_LIBS)
2971 dnl check for wcrtomb/mbrtowc
2972 dnl =======================================================================
2973 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
2974 AC_LANG_SAVE
2975 AC_LANG_CPLUSPLUS
2976 AC_CACHE_CHECK(for wcrtomb,
2977     ac_cv_have_wcrtomb,
2978     [AC_TRY_LINK([#include <wchar.h>],
2979                  [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
2980                  ac_cv_have_wcrtomb="yes",
2981                  ac_cv_have_wcrtomb="no")])
2982 if test "$ac_cv_have_wcrtomb" = "yes"; then
2983     AC_DEFINE(HAVE_WCRTOMB)
2985 AC_CACHE_CHECK(for mbrtowc,
2986     ac_cv_have_mbrtowc,
2987     [AC_TRY_LINK([#include <wchar.h>],
2988                  [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
2989                  ac_cv_have_mbrtowc="yes",
2990                  ac_cv_have_mbrtowc="no")])
2991 if test "$ac_cv_have_mbrtowc" = "yes"; then
2992     AC_DEFINE(HAVE_MBRTOWC)
2994 AC_LANG_RESTORE
2997 AC_CACHE_CHECK(
2998     [for res_ninit()],
2999     ac_cv_func_res_ninit,
3000     [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
3001         dnl no need for res_ninit() on NetBSD and OpenBSD
3002         ac_cv_func_res_ninit=no
3003      else
3004         AC_TRY_LINK([
3005             #ifdef linux
3006             #define _BSD_SOURCE 1
3007             #endif
3008             #include <sys/types.h>
3009             #include <netinet/in.h>
3010             #include <arpa/nameser.h>
3011             #include <resolv.h>
3012             ],
3013             [int foo = res_ninit(&_res);],
3014             [ac_cv_func_res_ninit=yes],
3015             [ac_cv_func_res_ninit=no])
3016      fi
3017     ])
3019 if test "$ac_cv_func_res_ninit" = "yes"; then
3020     AC_DEFINE(HAVE_RES_NINIT)
3021 dnl must add the link line we do something as foolish as this... dougt
3022 dnl else
3023 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3024 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3027 AC_LANG_CPLUSPLUS
3029 case $target_os in
3030     darwin*|mingw*)
3031         ;;
3032     *)
3034 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3035     AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3036         AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3037 _SAVE_LIBS=$LIBS
3038 LIBS="$LIBS $_ICONV_LIBS"
3039 AC_CACHE_CHECK(
3040     [for iconv()],
3041     ac_cv_func_iconv,
3042     [AC_TRY_LINK([
3043         #include <stdlib.h>
3044         #include <iconv.h>
3045         ],
3046         [
3047             iconv_t h = iconv_open("", "");
3048             iconv(h, NULL, NULL, NULL, NULL);
3049             iconv_close(h);
3050         ],
3051         [ac_cv_func_iconv=yes],
3052         [ac_cv_func_iconv=no]
3053         )]
3054     )
3055 if test "$ac_cv_func_iconv" = "yes"; then
3056     AC_DEFINE(HAVE_ICONV)
3057     LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3058     LIBICONV="$_ICONV_LIBS"
3059     AC_CACHE_CHECK(
3060         [for iconv() with const input],
3061         ac_cv_func_const_iconv,
3062         [AC_TRY_COMPILE([
3063             #include <stdlib.h>
3064             #include <iconv.h>
3065             ],
3066             [
3067                 const char *input = "testing";
3068                 iconv_t h = iconv_open("", "");
3069                 iconv(h, &input, NULL, NULL, NULL);
3070                 iconv_close(h);
3071             ],
3072             [ac_cv_func_const_iconv=yes],
3073             [ac_cv_func_const_iconv=no]
3074             )]
3075         )
3076     if test "$ac_cv_func_const_iconv" = "yes"; then
3077         AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3078     fi
3080 LIBS=$_SAVE_LIBS
3082     ;;
3083 esac
3085 AM_LANGINFO_CODESET
3087 AC_LANG_C
3089 dnl **********************
3090 dnl *** va_copy checks ***
3091 AC_CACHE_CHECK([for an implementation of va_copy()],
3092                ac_cv_va_copy,
3093     [AC_TRY_COMPILE([#include <stdarg.h>
3094                      #include <stdlib.h>
3095         void f (int i, ...) {
3096             va_list args1, args2;
3097             va_start (args1, i);
3098             va_copy (args2, args1);
3099             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3100                 exit (1);
3101             va_end (args1); va_end (args2);
3102         }],
3103         [f(0, 42); return 0],
3104         [ac_cv_va_copy=yes],
3105         [ac_cv_va_copy=no]
3106     )]
3108 AC_CACHE_CHECK([whether va_list can be copied by value],
3109                ac_cv_va_val_copy,
3110     [AC_TRY_COMPILE([#include <stdarg.h>
3111                      #include <stdlib.h>
3112         void f (int i, ...) {
3113             va_list args1, args2;
3114             va_start (args1, i);
3115             args2 = args1;
3116             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3117                 exit (1);
3118             va_end (args1); va_end (args2);
3119         }],
3120         [f(0, 42); return 0],
3121         [ac_cv_va_val_copy=yes],
3122         [ac_cv_va_val_copy=no],
3123     )]
3125 if test "x$ac_cv_va_copy" = "xyes"; then
3126     AC_DEFINE(VA_COPY, va_copy)
3127     AC_DEFINE(HAVE_VA_COPY)
3130 if test "x$ac_cv_va_val_copy" = "xno"; then
3131    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3134 dnl ===================================================================
3135 dnl ========================================================
3136 dnl Put your C++ language/feature checks below
3137 dnl ========================================================
3138 AC_LANG_CPLUSPLUS
3140 ARM_ABI_PREFIX=
3141 if test "$GNU_CC"; then
3142   if test "$CPU_ARCH" = "arm" ; then
3143     AC_CACHE_CHECK(for ARM EABI,
3144         ac_cv_gcc_arm_eabi,
3145         [AC_TRY_COMPILE([],
3146                         [
3147 #if defined(__ARM_EABI__)
3148   return 0;
3149 #else
3150 #error Not ARM EABI.
3151 #endif
3152                         ],
3153                         ac_cv_gcc_arm_eabi="yes",
3154                         ac_cv_gcc_arm_eabi="no")])
3155     if test "$ac_cv_gcc_arm_eabi" = "yes"; then
3156         HAVE_ARM_EABI=1
3157         ARM_ABI_PREFIX=eabi-
3158     else
3159         ARM_ABI_PREFIX=oabi-
3160     fi
3161   fi
3163   TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
3166 dnl Check to see if we can resolve ambiguity with |using|.
3167 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3168                ac_cv_cpp_ambiguity_resolving_using,
3169                [AC_TRY_COMPILE(class X {
3170                                  public: int go(const X&) {return 3;}
3171                                          int jo(const X&) {return 3;}
3172                                };
3173                                class Y : public X {
3174                                  public:  int go(int) {return 2;}
3175                                           int jo(int) {return 2;}
3176                                           using X::jo;
3177                                  private: using X::go;
3178                                };,
3179                                X x; Y y; y.jo(x);,
3180                                ac_cv_cpp_ambiguity_resolving_using=yes,
3181                                ac_cv_cpp_ambiguity_resolving_using=no)])
3182 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3183    AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3186 dnl See if a dynamic_cast to void* gives the most derived object.
3187 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3188                ac_cv_cpp_dynamic_cast_void_ptr,
3189                [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3190                             class Y { int j; public: virtual ~Y() { } };
3191                             class Z : public X, public Y { int k; };
3193                             int main() {
3194                                  Z mdo;
3195                                  X *subx = (X*)&mdo;
3196                                  Y *suby = (Y*)&mdo;
3197                                  return !((((void*)&mdo != (void*)subx) &&
3198                                            ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3199                                           (((void*)&mdo != (void*)suby) &&
3200                                            ((void*)&mdo == dynamic_cast<void*>(suby))));
3201                             }],
3202                            ac_cv_cpp_dynamic_cast_void_ptr=yes,
3203                            ac_cv_cpp_dynamic_cast_void_ptr=no,
3204                            ac_cv_cpp_dynamic_cast_void_ptr=no)])
3205 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3206    AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3210 dnl note that this one is reversed - if the test fails, then
3211 dnl we require implementations of unused virtual methods. Which
3212 dnl really blows because it means we'll have useless vtable
3213 dnl bloat.
3214 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3215                ac_cv_cpp_unused_required,
3216                [AC_TRY_LINK(class X {private: virtual void never_called();};,
3217                                X x;,
3218                                ac_cv_cpp_unused_required=no,
3219                                ac_cv_cpp_unused_required=yes)])
3220 if test "$ac_cv_cpp_unused_required" = yes ; then
3221    AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3225 dnl Some compilers have trouble comparing a constant reference to a templatized
3226 dnl class to zero, and require an explicit operator==() to be defined that takes
3227 dnl an int. This test separates the strong from the weak.
3229 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3230                ac_cv_trouble_comparing_to_zero,
3231                [AC_TRY_COMPILE([#include <algorithm>
3232                                 template <class T> class Foo {};
3233                                 class T2;
3234                                 template <class T> int operator==(const T2*, const T&) { return 0; }
3235                                 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3236                                [Foo<int> f; return (0 != f);],
3237                                ac_cv_trouble_comparing_to_zero=no,
3238                                ac_cv_trouble_comparing_to_zero=yes)])
3239 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3240   AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3243 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
3244 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
3245 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
3246 # linking XUL.
3247 _SAVE_LDFLAGS=$LDFLAGS
3248 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
3249 AC_CACHE_CHECK(for __thread keyword for TLS variables,
3250                ac_cv_thread_keyword,
3251                [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
3252                             [return tlsIsMainThread;],
3253                             ac_cv_thread_keyword=yes,
3254                             ac_cv_thread_keyword=no)])
3255 LDFLAGS=$_SAVE_LDFLAGS
3256 # The custom dynamic linker doesn't support TLS variables
3257 MOZ_TLS=
3258 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
3259   # mips builds fail with TLS variables because of a binutils bug.
3260   # See bug 528687
3261   # OpenBSD doesn't have TLS support, and the test succeeds with clang++
3262   case "${target}" in
3263     mips*-*)
3264       :
3265       ;;
3266     *-android*|*-linuxandroid*)
3267       :
3268       ;;
3269     *-openbsd*)
3270       :
3271       ;;
3272     *)
3273       AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
3274       MOZ_TLS=1
3275       ;;
3276   esac
3279 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
3280 if test -n "$MOZ_LINKER"; then
3281   if test "$CPU_ARCH" = arm; then
3282     dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
3283     if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
3284       LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
3285       _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
3286     fi
3287   fi
3290 dnl The custom linker doesn't support text relocations, but NDK >= r6b
3291 dnl creates some (http://code.google.com/p/android/issues/detail?id=23203)
3292 dnl We however want to avoid these text relocations, and this can be done
3293 dnl by making gcc not link crtbegin and crtend. In the broken NDKs, crtend
3294 dnl doesn't contain anything at all, beside placeholders for some sections,
3295 dnl and crtbegin only contains a finalizer function that calls
3296 dnl __cxa_finalize. The custom linker actually takes care of calling
3297 dnl __cxa_finalize when the library doesn't call it itself, which makes it
3298 dnl safe not to link crtbegin. Besides, previous versions of the NDK didn't
3299 dnl link crtbegin and crtend at all.
3300 if test -n "$MOZ_LINKER" -a "$OS_TARGET" = "Android"; then
3301   AC_CACHE_CHECK([whether the CRT objects have text relocations],
3302     ac_cv_crt_has_text_relocations,
3303     [echo 'int foo() { return 0; }' > conftest.cpp
3304      if AC_TRY_COMMAND(${CXX-g++} -o conftest${DLL_SUFFIX} $CXXFLAGS $DSO_LDOPTS $LDFLAGS conftest.cpp $LIBS 1>&5) &&
3305         test -s conftest${DLL_SUFFIX}; then
3306        if ${TOOLCHAIN_PREFIX}readelf -d conftest${DLL_SUFFIX} | grep TEXTREL > /dev/null; then
3307          ac_cv_crt_has_text_relocations=yes
3308        else
3309          ac_cv_crt_has_text_relocations=no
3310        fi
3311      else
3312        AC_ERROR([couldn't compile a simple C file])
3313      fi
3314      rm -rf conftest*])
3315   if test "$ac_cv_crt_has_text_relocations" = yes; then
3316     dnl While we want libraries to skip the CRT files, we don't want
3317     dnl executables to be treated the same way. We thus set the flag
3318     dnl in DSO_LDOPTS and not LDFLAGS. However, to pass it to nspr,
3319     dnl we need to use LDFLAGS because nspr doesn't inherit DSO_LDOPTS.
3320     dnl Using LDFLAGS in nspr is safe, since we only really build
3321     dnl libraries there.
3322     DSO_LDOPTS="$DSO_LDOPTS -nostartfiles"
3323     NSPR_LDFLAGS="$NSPR_LDFLAGS -nostartfiles"
3324   fi
3327 dnl Check for the existence of various allocation headers/functions
3329 MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h"
3330 MALLOC_H=
3332 for file in $MALLOC_HEADERS; do
3333   MOZ_CHECK_HEADER($file, [MALLOC_H=$file])
3334   if test "$MALLOC_H" != ""; then
3335     AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
3336     break
3337   fi
3338 done
3340 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
3342 AC_CHECK_FUNCS(malloc_usable_size)
3344 dnl See if compiler supports some gcc-style attributes
3346 AC_CACHE_CHECK(for __attribute__((always_inline)),
3347                ac_cv_attribute_always_inline,
3348                [AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));],
3349                                [],
3350                                ac_cv_attribute_always_inline=yes,
3351                                ac_cv_attribute_always_inline=no)])
3353 AC_CACHE_CHECK(for __attribute__((malloc)),
3354                ac_cv_attribute_malloc,
3355                [AC_TRY_COMPILE([void* f(int) __attribute__((malloc));],
3356                                [],
3357                                ac_cv_attribute_malloc=yes,
3358                                ac_cv_attribute_malloc=no)])
3360 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
3361                ac_cv_attribute_warn_unused,
3362                [AC_TRY_COMPILE([int f(void) __attribute__((warn_unused_result));],
3363                                [],
3364                                ac_cv_attribute_warn_unused=yes,
3365                                ac_cv_attribute_warn_unused=no)])
3367 dnl End of C++ language/feature checks
3368 AC_LANG_C
3370 dnl ========================================================
3371 dnl =  Internationalization checks
3372 dnl ========================================================
3374 dnl Internationalization and Locale support is different
3375 dnl on various UNIX platforms.  Checks for specific i18n
3376 dnl features go here.
3378 dnl check for LC_MESSAGES
3379 AC_CACHE_CHECK(for LC_MESSAGES,
3380                ac_cv_i18n_lc_messages,
3381                [AC_TRY_COMPILE([#include <locale.h>],
3382                                [int category = LC_MESSAGES;],
3383                                ac_cv_i18n_lc_messages=yes,
3384                                ac_cv_i18n_lc_messages=no)])
3385 if test "$ac_cv_i18n_lc_messages" = yes; then
3386    AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3389 AC_HAVE_FUNCS(localeconv)
3390 fi # ! SKIP_COMPILER_CHECKS
3392 TARGET_XPCOM_ABI=
3393 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3394     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3397 dnl Mozilla specific options
3398 dnl ========================================================
3399 dnl The macros used for command line options
3400 dnl are defined in build/autoconf/altoptions.m4.
3402 dnl If the compiler supports these attributes, define them as
3403 dnl convenience macros.
3404 if test "$ac_cv_attribute_malloc" = yes ; then
3405   AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
3406 else
3407   AC_DEFINE(NS_ATTR_MALLOC,)
3410 if test "$ac_cv_attribute_warn_unused" = yes ; then
3411   AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
3412 else
3413   AC_DEFINE(NS_WARN_UNUSED_RESULT,)
3416 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
3417 dnl features that Windows actually does support.
3419 if test -n "$SKIP_COMPILER_CHECKS"; then
3420    dnl Windows has malloc.h
3421    AC_DEFINE(MALLOC_H, [<malloc.h>])
3422    AC_DEFINE(HAVE_FORCEINLINE)
3423    AC_DEFINE(HAVE_LOCALECONV)
3424 fi # SKIP_COMPILER_CHECKS
3426 dnl ========================================================
3427 dnl =
3428 dnl = Check for external package dependencies
3429 dnl =
3430 dnl ========================================================
3431 MOZ_ARG_HEADER(External Packages)
3433 MOZ_ARG_WITH_STRING(libxul-sdk,
3434 [  --with-libxul-sdk=PFX   Use the libXUL SDK at <PFX>],
3435   LIBXUL_SDK_DIR=$withval)
3437 if test "$LIBXUL_SDK_DIR" = "yes"; then
3438     AC_MSG_ERROR([--with-libxul-sdk must specify a path])
3439 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
3440     LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
3442     if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
3443         AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
3444     fi
3447 AC_SUBST(LIBXUL_SDK)
3449 if test -n "$LIBXUL_SDK"; then
3450     LIBXUL_DIST="$LIBXUL_SDK"
3451 else
3452     LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
3454 AC_SUBST(LIBXUL_DIST)
3456 SYSTEM_LIBXUL=
3458 MOZ_ARG_WITH_BOOL(system-libxul,
3459 [  --with-system-libxul    Use system installed libxul SDK],
3460     SYSTEM_LIBXUL=1)
3462 dnl ========================================================
3463 dnl = If NSPR was not detected in the system,
3464 dnl = use the one in the source tree (mozilla/nsprpub)
3465 dnl ========================================================
3466 MOZ_ARG_WITH_BOOL(system-nspr,
3467 [  --with-system-nspr      Use system installed NSPR],
3468     _USE_SYSTEM_NSPR=1 )
3470 if test -n "$_USE_SYSTEM_NSPR"; then
3471     AM_PATH_NSPR(4.10.3, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([your don't have NSPR installed or your version is too old])])
3474 if test -n "$MOZ_NATIVE_NSPR"; then
3475     _SAVE_CFLAGS=$CFLAGS
3476     CFLAGS="$CFLAGS $NSPR_CFLAGS"
3477     AC_TRY_COMPILE([#include "prtypes.h"],
3478                 [#ifndef PR_STATIC_ASSERT
3479                  #error PR_STATIC_ASSERT not defined or requires including prtypes.h
3480                  #endif],
3481                 [MOZ_NATIVE_NSPR=1],
3482                 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
3483     AC_TRY_COMPILE([#include "prtypes.h"],
3484                 [#ifndef PR_UINT64
3485                  #error PR_UINT64 not defined or requires including prtypes.h
3486                  #endif],
3487                 [MOZ_NATIVE_NSPR=1],
3488                 AC_MSG_ERROR([system NSPR does not support PR_UINT64 or including prtypes.h does not provide it]))
3489     CFLAGS=$_SAVE_CFLAGS
3490 else
3491     if test -z "$LIBXUL_SDK"; then
3492         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
3493         if test -n "$GNU_CC"; then
3494             NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
3495         else
3496             NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
3497         fi
3498     else
3499         NSPR_CFLAGS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --includedir="${LIBXUL_DIST}/include/nspr" --cflags`
3500         NSPR_LIBS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --libdir="${LIBXUL_DIST}"/lib --libs`
3501     fi
3504 dnl set GRE_MILESTONE
3505 dnl ========================================================
3506 if test -n "$LIBXUL_SDK"; then
3507     GRE_MILESTONE=`$PYTHON "$_topsrcdir"/config/printconfigsetting.py "$LIBXUL_DIST"/bin/platform.ini Build Milestone`
3508 else
3509     GRE_MILESTONE=`tail -n 1 "$_topsrcdir"/config/milestone.txt 2>/dev/null || tail -1 "$_topsrcdir"/config/milestone.txt`
3511 AC_SUBST(GRE_MILESTONE)
3513 # set RELEASE_BUILD and NIGHTLY_BUILD variables depending on the cycle we're in
3514 # The logic works like this:
3515 # - if we have "a1" in GRE_MILESTONE, we're building Nightly (define NIGHTLY_BUILD)
3516 # - otherwise, if we have "a" in GRE_MILESTONE, we're building Nightly or Aurora
3517 # - otherwise, we're building Release/Beta (define RELEASE_BUILD)
3518 case "$GRE_MILESTONE" in
3519   *a1*)
3520       NIGHTLY_BUILD=1
3521       AC_DEFINE(NIGHTLY_BUILD)
3522       ;;
3523   *a*)
3524       ;;
3525   *)
3526       RELEASE_BUILD=1
3527       AC_DEFINE(RELEASE_BUILD)
3528       ;;
3529 esac
3530 AC_SUBST(NIGHTLY_BUILD)
3531 AC_SUBST(RELEASE_BUILD)
3533 dnl ========================================================
3534 dnl Disable compiling sources in unified mode.
3535 dnl ========================================================
3537 if test -z "$NIGHTLY_BUILD"; then
3538     MOZ_DISABLE_UNIFIED_COMPILATION=1
3541 MOZ_ARG_DISABLE_BOOL(unified-compilation,
3542 [  --disable-unified-compilation
3543                           Disable unified compilation of some C/C++ sources],
3544     MOZ_DISABLE_UNIFIED_COMPILATION=1,
3545     MOZ_DISABLE_UNIFIED_COMPILATION=)
3546 AC_SUBST(MOZ_DISABLE_UNIFIED_COMPILATION)
3548 dnl system libevent Support
3549 dnl ========================================================
3550 MOZ_ARG_WITH_STRING(system-libevent,
3551 [  --with-system-libevent[=PFX]
3552                           Use system libevent [installed at prefix PFX]],
3553     LIBEVENT_DIR=$withval)
3555 _SAVE_CFLAGS=$CFLAGS
3556 _SAVE_LDFLAGS=$LDFLAGS
3557 _SAVE_LIBS=$LIBS
3558 if test "$LIBEVENT_DIR" = yes; then
3559     PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
3560         MOZ_NATIVE_LIBEVENT=1,
3561         LIBEVENT_DIR=/usr)
3563 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
3564     MOZ_NATIVE_LIBEVENT=
3565 elif test -z "$MOZ_NATIVE_LIBEVENT"; then
3566     CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
3567     LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
3568     MOZ_CHECK_HEADER(event.h,
3569         [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
3570              AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
3571          fi],
3572         AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
3573     AC_CHECK_LIB(event, event_init,
3574                  [MOZ_NATIVE_LIBEVENT=1
3575                   MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
3576                   MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
3577                  [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
3579 CFLAGS=$_SAVE_CFLAGS
3580 LDFLAGS=$_SAVE_LDFLAGS
3581 LIBS=$_SAVE_LIBS
3583 AC_SUBST(MOZ_NATIVE_LIBEVENT)
3584 AC_SUBST(MOZ_LIBEVENT_CFLAGS)
3585 AC_SUBST(MOZ_LIBEVENT_LIBS)
3587 dnl ========================================================
3588 dnl = If NSS was not detected in the system,
3589 dnl = use the one in the source tree (mozilla/security/nss)
3590 dnl ========================================================
3592 MOZ_ARG_WITH_BOOL(system-nss,
3593 [  --with-system-nss       Use system installed NSS],
3594     _USE_SYSTEM_NSS=1 )
3596 if test -n "$_USE_SYSTEM_NSS"; then
3597     AM_PATH_NSS(3.16, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
3600 if test -n "$MOZ_NATIVE_NSS"; then
3601    NSS_LIBS="$NSS_LIBS -lcrmf"
3602 else
3603    NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
3605    if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT"; then
3606        NSS_LIBS="\
3607         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
3608         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
3609         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
3610         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
3611         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
3612    else
3613        NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
3614    fi
3617 dnl ======================
3618 dnl Detect yasm
3619 dnl ======================
3621 AC_MSG_CHECKING([for YASM assembler])
3622 AC_CHECK_PROGS(YASM, yasm, "")
3624 if test -n "$YASM"; then
3625   dnl Pull out yasm's version string
3626   YASM_VERSION=`yasm --version | $AWK '/^yasm/ { print $2 }'`
3627   _YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'`
3628   _YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'`
3629   _YASM_RELEASE=`      echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'`
3630   _YASM_BUILD=`        echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
3633 if test -z "$SKIP_LIBRARY_CHECKS"; then
3634 dnl system JPEG support
3635 dnl ========================================================
3636 MOZ_ARG_WITH_STRING(system-jpeg,
3637 [  --with-system-jpeg[=PFX]
3638                           Use system libjpeg [installed at prefix PFX]],
3639     JPEG_DIR=$withval)
3641 _SAVE_CFLAGS=$CFLAGS
3642 _SAVE_LDFLAGS=$LDFLAGS
3643 _SAVE_LIBS=$LIBS
3644 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
3645     CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
3646     LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
3648 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
3649     MOZ_NATIVE_JPEG=
3650 else
3651     AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [MOZ_NATIVE_JPEG=1 MOZ_JPEG_LIBS="-ljpeg"], MOZ_NATIVE_JPEG=)
3654 if test "$MOZ_NATIVE_JPEG" = 1; then
3655     AC_TRY_COMPILE([ #include <stdio.h>
3656                      #include <sys/types.h>
3657                      #include <jpeglib.h> ],
3658                    [ #if JPEG_LIB_VERSION < $MOZJPEG
3659                      #error "Insufficient JPEG library version ($MOZJPEG required)."
3660                      #endif
3661                      #ifndef JCS_EXTENSIONS
3662                      #error "libjpeg-turbo JCS_EXTENSIONS required"
3663                      #endif
3664                      ],
3665                    MOZ_NATIVE_JPEG=1,
3666                    AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg]))
3668 CFLAGS=$_SAVE_CFLAGS
3669 LDFLAGS=$_SAVE_LDFLAGS
3670 LIBS=$_SAVE_LIBS
3672 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$MOZ_NATIVE_JPEG" = 1; then
3673     MOZ_JPEG_CFLAGS="-I${JPEG_DIR}/include"
3674     MOZ_JPEG_LIBS="-L${JPEG_DIR}/lib ${MOZ_JPEG_LIBS}"
3676 fi # SKIP_LIBRARY_CHECKS
3678 dnl system ZLIB support
3679 dnl ========================================================
3680 MOZ_ZLIB_CHECK([1.2.3])
3682 if test "$MOZ_NATIVE_ZLIB" != 1; then
3683     MOZ_ZLIB_CFLAGS="-I${_topsrcdir}/modules/zlib/src"
3684     MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,'"$MOZ_BUILD_ROOT"'/modules/zlib/src)'
3687 if test "$MOZ_LINKER" = 1 -a "$MOZ_NATIVE_ZLIB" != 1; then
3688     AC_MSG_ERROR([Custom dynamic linker requires --with-system-zlib])
3691 MOZ_PNG_ARM_NEON=
3693 if test -z "$SKIP_LIBRARY_CHECKS"; then
3694 dnl system BZIP2 Support
3695 dnl ========================================================
3696 MOZ_ARG_WITH_STRING(system-bz2,
3697 [  --with-system-bz2[=PFX]
3698                           Use system libbz2 [installed at prefix PFX]],
3699     BZ2_DIR=$withval)
3701 _SAVE_CFLAGS=$CFLAGS
3702 _SAVE_LDFLAGS=$LDFLAGS
3703 _SAVE_LIBS=$LIBS
3704 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
3705     CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
3706     LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
3708 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
3709     MOZ_NATIVE_BZ2=
3710 else
3711     AC_CHECK_LIB(bz2, BZ2_bzread, [MOZ_NATIVE_BZ2=1 MOZ_BZ2_LIBS="-lbz2"],
3712     [MOZ_NATIVE_BZ2= MOZ_BZ2_CFLAGS= MOZ_BZ2_LIBS=])
3714 CFLAGS=$_SAVE_CFLAGS
3715 LDFLAGS=$_SAVE_LDFLAGS
3716 LIBS=$_SAVE_LIBS
3718 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$MOZ_NATIVE_BZ2" = 1; then
3719     MOZ_BZ2_CFLAGS="-I${BZ2_DIR}/include"
3720     MOZ_BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
3723 dnl ========================================================
3724 dnl system PNG Support
3725 dnl ========================================================
3726 MOZ_ARG_WITH_STRING(system-png,
3727 [  --with-system-png[=PFX]
3728                           Use system libpng [installed at prefix PFX]],
3729     PNG_DIR=$withval)
3731 _SAVE_CFLAGS=$CFLAGS
3732 _SAVE_LDFLAGS=$LDFLAGS
3733 _SAVE_LIBS=$LIBS
3734 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
3735     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
3736     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
3738 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
3739     MOZ_NATIVE_PNG=
3740 else
3741     AC_CHECK_LIB(png, png_get_valid, [MOZ_NATIVE_PNG=1 MOZ_PNG_LIBS="-lpng"],
3742                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
3743     AC_CHECK_LIB(png, png_get_acTL, ,
3744                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
3746 if test "$MOZ_NATIVE_PNG" = 1; then
3747     AC_TRY_COMPILE([ #include <stdio.h>
3748                      #include <sys/types.h>
3749                      #include <png.h> ],
3750                    [ #if PNG_LIBPNG_VER < $MOZPNG
3751                      #error "Insufficient libpng version ($MOZPNG required)."
3752                      #endif
3753                      #ifndef PNG_UINT_31_MAX
3754                      #error "Insufficient libpng version."
3755                      #endif ],
3756                    MOZ_NATIVE_PNG=1,
3757                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
3759 CFLAGS=$_SAVE_CFLAGS
3760 LDFLAGS=$_SAVE_LDFLAGS
3761 LIBS=$_SAVE_LIBS
3763 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_NATIVE_PNG" = 1; then
3764     MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
3765     MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
3768 MOZ_PNG_ARM_NEON_CHECK=
3769 if test "$MOZ_NATIVE_PNG" != 1 -a "$CPU_ARCH" = "arm" ; then
3770     MOZ_ARG_ENABLE_STRING(png-arm-neon-support,
3771         [  --enable-png-arm-neon-support=TYPE
3772              Options include:
3773                  no
3774                  check (default)
3775                  nocheck (faster but unsafe)],
3776         [MOZ_PNG_ARM_NEON_SUPPORT=$enableval ] )
3777     case "$MOZ_PNG_ARM_NEON_SUPPORT" in
3778         no)
3779             # enable-png-arm-neon-support = no
3780             ;;
3781         nocheck)
3782             # enable-png-arm-neon-support = nocheck
3783             MOZ_PNG_ARM_NEON=1
3784             ;;
3785         *)
3786             MOZ_PNG_ARM_NEON=1
3787             MOZ_PNG_ARM_NEON_CHECK=1
3788             ;;
3789     esac
3792 AC_SUBST(MOZ_PNG_ARM_NEON_CHECK)
3794 fi # SKIP_LIBRARY_CHECKS
3796 AC_SUBST(MOZ_PNG_ARM_NEON)
3798 dnl ========================================================
3799 dnl system HunSpell Support
3800 dnl ========================================================
3801 MOZ_ARG_ENABLE_BOOL(system-hunspell,
3802 [  --enable-system-hunspell
3803                           Use system hunspell (located with pkgconfig)],
3804     MOZ_NATIVE_HUNSPELL=1 )
3806 if test -n "$MOZ_NATIVE_HUNSPELL"; then
3807     PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
3810 AC_SUBST(MOZ_NATIVE_HUNSPELL)
3812 dnl ========================================================
3813 dnl system libffi Support
3814 dnl ========================================================
3815 MOZ_CONFIG_FFI()
3817 if test -n "$MOZ_NATIVE_FFI"; then
3818     MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_FFI_LIBS"
3821 # split JS out by default to avoid VS2005 PGO crash (bug 591836).
3822 if test "$OS_ARCH" = "WINNT"; then
3823   JS_SHARED_LIBRARY=1
3826 MOZ_ARG_ENABLE_BOOL(shared-js,
3827 [  --enable-shared-js
3828                           Create a shared JavaScript library.],
3829     JS_SHARED_LIBRARY=1,
3830     JS_SHARED_LIBRARY=)
3832 dnl ========================================================
3833 dnl Java SDK support
3834 dnl ========================================================
3836 JAVA_BIN_PATH=
3837 MOZ_ARG_WITH_STRING(java-bin-path,
3838 [  --with-java-bin-path=dir
3839                           Location of Java binaries (java, javac, jar)],
3840     JAVA_BIN_PATH=$withval)
3842 dnl ========================================================
3843 dnl =
3844 dnl = Application
3845 dnl =
3846 dnl ========================================================
3848 MOZ_ARG_HEADER(Application)
3850 ENABLE_TESTS=1
3851 ENABLE_SYSTEM_EXTENSION_DIRS=1
3852 MOZ_BRANDING_DIRECTORY=
3853 MOZ_OFFICIAL_BRANDING=
3854 MOZ_FEEDS=1
3855 MOZ_WEBAPP_RUNTIME=
3856 MOZ_JSDEBUGGER=1
3857 MOZ_AUTH_EXTENSION=1
3858 MOZ_RAW=
3859 MOZ_VORBIS=
3860 MOZ_TREMOR=
3861 MOZ_WAVE=1
3862 MOZ_SAMPLE_TYPE_FLOAT32=
3863 MOZ_SAMPLE_TYPE_S16=
3864 MOZ_OPUS=1
3865 MOZ_WEBM=1
3866 MOZ_GSTREAMER=
3867 MOZ_DIRECTSHOW=
3868 MOZ_WMF=
3869 MOZ_FMP4=
3870 MOZ_FFMPEG=
3871 MOZ_WEBRTC=1
3872 MOZ_PEERCONNECTION=
3873 MOZ_SRTP=
3874 MOZ_WEBRTC_SIGNALING=
3875 MOZ_WEBRTC_ASSERT_ALWAYS=1
3876 MOZ_SCTP=
3877 MOZ_MEDIA_PLUGINS=
3878 MOZ_MEDIA_NAVIGATOR=
3879 MOZ_OMX_PLUGIN=
3880 MOZ_VPX=
3881 MOZ_VPX_ERROR_CONCEALMENT=
3882 MOZ_WEBSPEECH=1
3883 VPX_AS=
3884 VPX_ASFLAGS=
3885 VPX_AS_DASH_C_FLAG=
3886 VPX_AS_CONVERSION=
3887 VPX_ASM_SUFFIX=
3888 VPX_X86_ASM=
3889 VPX_ARM_ASM=
3890 LIBJPEG_TURBO_AS=
3891 LIBJPEG_TURBO_ASFLAGS=
3892 LIBJPEG_TURBO_X86_ASM=
3893 LIBJPEG_TURBO_X64_ASM=
3894 LIBJPEG_TURBO_ARM_ASM=
3895 MOZ_LOOP=$NIGHTLY_BUILD
3896 MOZ_PERMISSIONS=1
3897 MOZ_PLACES=1
3898 MOZ_SOCIAL=1
3899 MOZ_PREF_EXTENSIONS=1
3900 MOZ_PROFILELOCKING=1
3901 MOZ_REFLOW_PERF=
3902 MOZ_SAFE_BROWSING=
3903 MOZ_HELP_VIEWER=
3904 MOZ_SPELLCHECK=1
3905 MOZ_ANDROID_OMTC=
3906 MOZ_TOOLKIT_SEARCH=1
3907 MOZ_UI_LOCALE=en-US
3908 MOZ_UNIVERSALCHARDET=1
3909 MOZ_URL_CLASSIFIER=
3910 MOZ_XUL=1
3911 MOZ_ZIPWRITER=1
3912 NS_PRINTING=1
3913 MOZ_PDF_PRINTING=
3914 MOZ_DISABLE_CRYPTOLEGACY=
3915 NSS_DISABLE_DBM=
3916 NECKO_COOKIES=1
3917 NECKO_PROTOCOLS_DEFAULT="about app data file ftp http res viewsource websocket wyciwyg device"
3918 if test -n "$MOZ_RTSP"; then
3919   NECKO_PROTOCOLS_DEFAULT="$NECKO_PROTOCOLS_DEFAULT rtsp"
3921 USE_ARM_KUSER=
3922 BUILD_CTYPES=1
3923 MOZ_USE_NATIVE_POPUP_WINDOWS=
3924 MOZ_ANDROID_HISTORY=
3925 MOZ_WEBSMS_BACKEND=
3926 MOZ_ANDROID_BEAM=
3927 MOZ_ANDROID_SYNTHAPKS=
3928 ACCESSIBILITY=1
3929 MOZ_TIME_MANAGER=
3930 MOZ_PAY=
3931 MOZ_AUDIO_CHANNEL_MANAGER=
3932 NSS_NO_LIBPKIX=
3933 MOZ_CONTENT_SANDBOX=
3934 MOZ_CONTENT_SANDBOX_REPORTER=1
3935 JSGC_USE_EXACT_ROOTING=
3936 JSGC_GENERATIONAL=
3938 case "$target_os" in
3939     mingw*)
3940         NS_ENABLE_TSF=1
3941         AC_DEFINE(NS_ENABLE_TSF)
3942         ;;
3943 esac
3945 case "${target}" in
3946     *-android*|*-linuxandroid*)
3947         if test "$CPU_ARCH" = "arm" ; then
3948           USE_ARM_KUSER=1
3949         fi
3951         NSS_DISABLE_DBM=1
3952         MOZ_THEME_FASTSTRIPE=1
3953         MOZ_TREE_FREETYPE=1
3954         MOZ_MEMORY=1
3955         MOZ_RAW=1
3956         ;;
3958 esac
3960 MOZ_ARG_WITH_STRING(external-source-dir,
3961 [  --with-external-source-dir=dir
3962                           External directory containing additional build files.],
3963 [ EXTERNAL_SOURCE_DIR=$withval])
3964 AC_SUBST(EXTERNAL_SOURCE_DIR)
3966 MOZ_ARG_ENABLE_STRING(application,
3967 [  --enable-application=APP
3968                           Options include:
3969                             browser (Firefox)
3970                             xulrunner
3971                             tools/update-packaging (AUS-related packaging tools)],
3972 [ MOZ_BUILD_APP=$enableval ] )
3974 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
3975 [  --with-xulrunner-stub-name=appname   Create the xulrunner stub with the given name],
3976   XULRUNNER_STUB_NAME=$withval)
3978 if test -z "$XULRUNNER_STUB_NAME"; then
3979   case "$target_os" in
3980   darwin*)
3981     XULRUNNER_STUB_NAME=xulrunner
3982     ;;
3983   *)
3984     XULRUNNER_STUB_NAME=xulrunner-stub
3985   esac
3987 AC_SUBST(XULRUNNER_STUB_NAME)
3989 AC_MSG_CHECKING([for application to build])
3990 if test -z "$MOZ_BUILD_APP"; then
3991   AC_MSG_RESULT([browser])
3992   MOZ_BUILD_APP=browser
3993 else
3994   # "mobile" no longer exists.
3995   if test "$MOZ_BUILD_APP" = "mobile" ; then
3996     AC_MSG_RESULT([none])
3997     AC_MSG_ERROR([--enable-application=mobile is no longer supported.])
3998   fi
3999   # We have a valid application only if it has a build.mk file in its top
4000   # directory.
4001   if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4002     AC_MSG_RESULT([none])
4003     AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4004   else
4005     AC_MSG_RESULT([$MOZ_BUILD_APP])
4006   fi
4009 # The app update channel is 'default' when not supplied. The value is used in
4010 # the application's confvars.sh so it must be set before confvars.sh is called.
4011 MOZ_ARG_ENABLE_STRING([update-channel],
4012 [  --enable-update-channel=CHANNEL
4013                           Select application update channel (default=default)],
4014     MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
4016 if test -z "$MOZ_UPDATE_CHANNEL"; then
4017     MOZ_UPDATE_CHANNEL=default
4019 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
4020 AC_SUBST(MOZ_UPDATE_CHANNEL)
4022 # Allow to specify a Mozilla API key file that contains the secret key to be
4023 # used for various Mozilla API requests.
4024 MOZ_ARG_WITH_STRING(mozilla-api-keyfile,
4025 [  --with-mozilla-api-keyfile=file   Use the secret key contained in the given keyfile for Mozilla API requests],
4026   MOZ_MOZILLA_API_KEY=`cat $withval`)
4027 if test -z "$MOZ_MOZILLA_API_KEY"; then
4028     MOZ_MOZILLA_API_KEY=no-mozilla-api-key
4030 AC_SUBST(MOZ_MOZILLA_API_KEY)
4032 # Allow to specify a Google API key file that contains the secret key to be
4033 # used for various Google API requests.
4034 MOZ_ARG_WITH_STRING(google-api-keyfile,
4035 [  --with-google-api-keyfile=file   Use the secret key contained in the given keyfile for Google API requests],
4036   MOZ_GOOGLE_API_KEY=`cat $withval`)
4037 if test -z "$MOZ_GOOGLE_API_KEY"; then
4038     MOZ_GOOGLE_API_KEY=no-google-api-key
4040 AC_SUBST(MOZ_GOOGLE_API_KEY)
4042 # Allow the application to influence configure with a confvars.sh script.
4043 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4044 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4045   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4046   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4047 else
4048   AC_MSG_RESULT([no])
4051 # Allow influencing configure with a defines.sh script.
4052 . "${srcdir}/build/defines.sh"
4054 # If we're not building a release build, define EARLY_BETA_OR_EARLIER if it is
4055 # set in defines.sh
4056 if test "$BUILDING_RELEASE"; then
4057   # Override value in defines.sh, if any
4058   EARLY_BETA_OR_EARLIER=
4059 elif test "$EARLY_BETA_OR_EARLIER"; then
4060   AC_DEFINE(EARLY_BETA_OR_EARLIER)
4062 AC_SUBST(EARLY_BETA_OR_EARLIER)
4064 # Allow the application to provide a subconfigure script
4065 if test -f "${srcdir}/${MOZ_BUILD_APP}/configure.in" ; then
4066   do_output_subdirs() {
4067     if test -n "$_subconfigure_subdirs"; then
4068       AC_MSG_ERROR([Cannot specify more than one sub-sub-configure])
4069      fi
4070     _subconfigure_subdir="$1"
4071     _subconfigure_config_args="$ac_configure_args"
4072   }
4073   tmpscript=`$PYTHON -c 'import os, tempfile; print tempfile.mktemp(prefix="subscript.").replace(os.sep, "/")'` || exit 1
4074   m4 "${srcdir}/build/autoconf/subconfigure.m4" \
4075      "${srcdir}/build/autoconf/altoptions.m4" \
4076      "${srcdir}/${MOZ_BUILD_APP}/configure.in" > $tmpscript
4077   . $tmpscript
4078   rm -f $tmpscript
4081 # Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig
4082 MOZ_ARG_WITH_STRING(app-name,
4083 [--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME],
4084 WITH_APP_NAME=$withval,
4087 if test -n "$WITH_APP_NAME" ; then
4088     MOZ_APP_NAME="$WITH_APP_NAME"
4091 MOZ_ARG_WITH_STRING(app-basename,
4092 [--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME],
4093 WITH_APP_BASENAME=$withval,
4096 if test -n "$WITH_APP_BASENAME" ; then
4097     MOZ_APP_BASENAME="$WITH_APP_BASENAME"
4100 # Now is a good time to test for logic errors, define mismatches, etc.
4101 case "$MOZ_BUILD_APP" in
4102 xulrunner)
4103   if test "$LIBXUL_SDK"; then
4104     AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4105   fi
4106   ;;
4107 esac
4109 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4110 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4111 # MOZ_BUILD_APP.
4112 case "$MOZ_BUILD_APP" in
4113 browser)
4114   AC_DEFINE(MOZ_PHOENIX)
4115   ;;
4117 xulrunner)
4118   AC_DEFINE(MOZ_XULRUNNER)
4119   ;;
4120 b2g)
4121   AC_DEFINE(MOZ_B2G)
4122   ;;
4123 b2g/dev)
4124   AC_DEFINE(MOZ_B2G)
4125   AC_DEFINE(MOZ_MULET)
4126   ;;
4127 esac
4129 AC_SUBST(MOZ_BUILD_APP)
4130 AC_SUBST(MOZ_PHOENIX)
4131 AC_SUBST(MOZ_XULRUNNER)
4132 AC_SUBST(MOZ_B2G)
4133 AC_SUBST(MOZ_MULET)
4134 AC_SUBST(MOZ_B2G_VERSION)
4136 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4138 dnl ========================================================
4139 dnl Check android sdk version depending on mobile target
4140 dnl ========================================================
4142 if test -z "$gonkdir" ; then
4143     # Minimum Android SDK API Level we require.
4144     case "$MOZ_BUILD_APP" in
4145     mobile/android)
4146         android_min_api_level=16
4147         case "$target" in
4148         *-android*|*-linuxandroid*)
4149             :
4150             ;;
4151         *)
4152             AC_MSG_ERROR([You must specify --target=arm-linux-androideabi (or some other valid android target) when building with --enable-application=mobile/android. See https://wiki.mozilla.org/Mobile/Fennec/Android#Setup_Fennec_mozconfig for more information about the necessary options])
4153             ;;
4154         esac
4155         ;;
4156     esac
4158     MOZ_ANDROID_SDK($android_min_api_level)
4161 dnl ========================================================
4162 dnl =
4163 dnl = Toolkit Options
4164 dnl =
4165 dnl ========================================================
4166 MOZ_ARG_HEADER(Toolkit Options)
4168     dnl ========================================================
4169     dnl = Select the default toolkit
4170     dnl ========================================================
4171     MOZ_ARG_ENABLE_STRING(default-toolkit,
4172     [  --enable-default-toolkit=TK
4173                           Select default toolkit
4174                           Platform specific defaults:
4175                             Mac OS X - cairo-cocoa
4176                             Win32 - cairo-windows
4177                             * - cairo-gtk2
4178                             * - cairo-gtk3
4179                             * - cairo-qt],
4180     [ _DEFAULT_TOOLKIT=$enableval ],
4181     [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4183     if test "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4184         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4185         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4186         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk3" \
4187         -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4188         -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
4189         -o "$_DEFAULT_TOOLKIT" = "cairo-uikit" \
4190         -o "$_DEFAULT_TOOLKIT" = "cairo-android" \
4191         -o "$_DEFAULT_TOOLKIT" = "cairo-gonk"
4192     then
4193         dnl nglayout only supports building with one toolkit,
4194         dnl so ignore everything after the first comma (",").
4195         MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4196     else
4197         AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4198     fi
4200 MOZ_ARG_WITHOUT_BOOL(x,
4201 [  --without-x              Build without X11],
4202     WITHOUT_X11=1)
4204 dnl ========================================================
4205 dnl = Enable the toolkit as needed                         =
4206 dnl ========================================================
4208 MOZ_WIDGET_GTK=
4210 case "$MOZ_WIDGET_TOOLKIT" in
4212 cairo-windows)
4213     MOZ_WIDGET_TOOLKIT=windows
4214     MOZ_WEBGL=1
4215     MOZ_PDF_PRINTING=1
4216     MOZ_INSTRUMENT_EVENT_LOOP=1
4217     if test -n "$GNU_CC"; then
4218         MOZ_FOLD_LIBS=
4219     fi
4220     ;;
4222 cairo-gtk3)
4223     MOZ_WIDGET_TOOLKIT=gtk3
4224     MOZ_ENABLE_GTK=1
4225     MOZ_ENABLE_GTK3=1
4226     MOZ_ENABLE_XREMOTE=1
4227     MOZ_WEBGL=1
4228     MOZ_GL_DEFAULT_PROVIDER=GLX
4230     AC_DEFINE(MOZ_X11)
4231     MOZ_X11=1
4232     USE_FC_FREETYPE=1
4234     TK_CFLAGS='$(MOZ_GTK3_CFLAGS)'
4235     TK_LIBS='$(MOZ_GTK3_LIBS)'
4236     MOZ_WIDGET_GTK=3
4237     AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK)
4238     MOZ_PDF_PRINTING=1
4239     MOZ_INSTRUMENT_EVENT_LOOP=1
4240     ;;
4242 cairo-gtk2|cairo-gtk2-x11)
4243     MOZ_WIDGET_TOOLKIT=gtk2
4244     MOZ_ENABLE_GTK=1
4245     MOZ_ENABLE_GTK2=1
4246     MOZ_ENABLE_XREMOTE=1
4247     MOZ_WEBGL=1
4248     MOZ_GL_DEFAULT_PROVIDER=GLX
4250     AC_DEFINE(MOZ_X11)
4251     MOZ_X11=1
4252     USE_FC_FREETYPE=1
4254     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4255     TK_LIBS='$(MOZ_GTK2_LIBS)'
4256     AC_DEFINE(MOZ_WIDGET_GTK2)
4257     MOZ_WIDGET_GTK=2
4258     AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK)
4259     MOZ_PDF_PRINTING=1
4260     MOZ_INSTRUMENT_EVENT_LOOP=1
4261     ;;
4263 cairo-qt)
4264     MOZ_WIDGET_TOOLKIT=qt
4265     MOZ_ENABLE_QT=1
4266     if test -z "$WITHOUT_X11"; then
4267       MOZ_ENABLE_XREMOTE=1
4268       MOZ_GL_DEFAULT_PROVIDER=GLX
4269       MOZ_X11=1
4270       AC_DEFINE(MOZ_X11)
4271       XT_LIBS=
4272     fi
4274     MOZ_WEBGL=1
4275     USE_FC_FREETYPE=1
4276     TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4277     TK_LIBS='$(MOZ_QT_LIBS)'
4278     AC_DEFINE(MOZ_WIDGET_QT)
4279     MOZ_PDF_PRINTING=1
4280     AC_DEFINE(QT_NO_KEYWORDS)
4281     ;;
4283 cairo-cocoa)
4284     MOZ_WIDGET_TOOLKIT=cocoa
4285     AC_DEFINE(MOZ_WIDGET_COCOA)
4286     LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
4287     TK_LIBS='-framework CoreLocation -framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
4288     TK_CFLAGS="-DNO_X11"
4289     CFLAGS="$CFLAGS $TK_CFLAGS"
4290     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4291     XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/bin/XUL $(call EXPAND_LIBNAME_PATH,mozalloc,$(LIBXUL_DIST)/bin)'
4292     MOZ_USER_DIR="Mozilla"
4293     MOZ_FS_LAYOUT=bundle
4294     MOZ_WEBGL=1
4295     MOZ_INSTRUMENT_EVENT_LOOP=1
4296     ;;
4298 cairo-uikit)
4299     MOZ_WIDGET_TOOLKIT=uikit
4300     AC_DEFINE(MOZ_WIDGET_UIKIT)
4301     LDFLAGS="$LDFLAGS -framework UIKit -lobjc"
4302     TK_CFLAGS="-DNO_X11"
4303     TK_LIBS='-framework Foundation -framework CoreFoundation -framework CoreGraphics -framework CoreText'
4304     CFLAGS="$CFLAGS $TK_CFLAGS"
4305     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4306     XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/bin/XUL $(call EXPAND_LIBNAME_PATH,mozalloc,$(LIBXUL_DIST)/bin)'
4307     MOZ_USER_DIR="Mozilla"
4308     MOZ_FS_LAYOUT=bundle
4309     ;;
4311 cairo-android)
4312     AC_DEFINE(MOZ_WIDGET_ANDROID)
4313     MOZ_WIDGET_TOOLKIT=android
4314     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4315     TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4316     MOZ_WEBGL=1
4317     MOZ_PDF_PRINTING=1
4318     MOZ_INSTRUMENT_EVENT_LOOP=1
4319     ;;
4321 cairo-gonk)
4322     XPCOM_FROZEN_LDOPTS='$(call EXPAND_LIBNAME_PATH,xul mozalloc,$(LIBXUL_DIST)/lib)'
4323     AC_DEFINE(MOZ_WIDGET_GONK)
4324     AC_DEFINE(MOZ_TOUCH)
4325     MOZ_WIDGET_TOOLKIT=gonk
4326     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4327     TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4328     MOZ_WEBGL=1
4329     MOZ_PDF_PRINTING=1
4330     MOZ_TOUCH=1
4331     MOZ_INSTRUMENT_EVENT_LOOP=1
4332     ;;
4334 esac
4336 AC_SUBST(MOZ_PDF_PRINTING)
4337 if test "$MOZ_PDF_PRINTING"; then
4338    PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
4339    AC_DEFINE(MOZ_PDF_PRINTING)
4342 if test "$MOZ_ENABLE_XREMOTE"; then
4343     AC_DEFINE(MOZ_ENABLE_XREMOTE)
4346 if test "$MOZ_INSTRUMENT_EVENT_LOOP"; then
4347    AC_DEFINE(MOZ_INSTRUMENT_EVENT_LOOP)
4350 if test "$COMPILE_ENVIRONMENT"; then
4351   if test "$MOZ_ENABLE_GTK3"; then
4352     PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4353   fi
4354   if test "$MOZ_ENABLE_GTK2"; then
4355     if test "$MOZ_X11"; then
4356       GDK_PACKAGES=gdk-x11-2.0
4357     fi
4359     PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4360   fi
4362 fi # COMPILE_ENVIRONMENT
4364 AC_SUBST(MOZ_FS_LAYOUT)
4366 dnl ========================================================
4367 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4368 dnl their usage and use them in spidermonkey.
4369 dnl ========================================================
4370 MOZ_ARG_WITH_BOOL(arm-kuser,
4371 [  --with-arm-kuser         Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4372     USE_ARM_KUSER=1,)
4373 if test -n "$USE_ARM_KUSER"; then
4374    AC_DEFINE(USE_ARM_KUSER)
4377 dnl ========================================================
4378 dnl = startup-notification support module
4379 dnl ========================================================
4381 if test "$MOZ_ENABLE_GTK"
4382 then
4383     MOZ_ENABLE_STARTUP_NOTIFICATION=
4385     MOZ_ARG_ENABLE_BOOL(startup-notification,
4386     [  --enable-startup-notification
4387                           Enable startup-notification support (default: disabled) ],
4388         MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4389         MOZ_ENABLE_STARTUP_NOTIFICATION=)
4390     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4391     then
4392         PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4393                           libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4394         [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4395             if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4396             then
4397                 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4398             fi
4399             MOZ_ENABLE_STARTUP_NOTIFICATION=
4400         ])
4401     fi
4403     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4404         AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4405     fi
4407     TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4409 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4410 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4411 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4413 dnl ========================================================
4414 dnl Disable printing
4415 dnl ========================================================
4416 MOZ_ARG_DISABLE_BOOL(printing,
4417 [  --disable-printing      Disable printing support],
4418     NS_PRINTING=,
4419     NS_PRINTING=1)
4421 if test "$NS_PRINTING"; then
4422     AC_DEFINE(NS_PRINTING)
4423     AC_DEFINE(NS_PRINT_PREVIEW)
4426 dnl ========================================================
4427 dnl = QT support
4428 dnl ========================================================
4429 if test "$MOZ_ENABLE_QT"
4430 then
4431     MOZ_ARG_WITH_STRING(qtdir,
4432     [  --with-qtdir=\$dir       Specify Qt directory ],
4433     [ QTDIR=$withval])
4435     if test -z "$QTDIR"; then
4436         AC_CHECK_PROGS(HOST_QMAKE, $HOST_QMAKE qmake, "")
4437     else
4438         HOST_QMAKE="$QTDIR/bin/qmake"
4439     fi
4440     QT_VERSION=`$HOST_QMAKE -v | grep 'Using Qt version' | egrep -o '[[0-9]]+\.[[0-9]]+\.[[0-9]]+'`
4442     if test -z "$QTDIR"; then
4443         case $QT_VERSION in
4444         5.*)
4445             AC_MSG_RESULT("Using qt5: $QT_VERSION")
4446             PKG_CHECK_MODULES(MOZ_QT, Qt5Gui Qt5Network Qt5Core Qt5Quick, ,
4447             [
4448               AC_MSG_ERROR([$MOZ_QT_PKG_ERRORS Need qtbase development packages, (On Ubuntu, you might try installing the packages qtbase5-dev libqt5opengl5-dev.)])
4449             ])
4450             QT5INCDIR=`pkg-config --variable=includedir Qt5Gui`
4451             MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QT5INCDIR/QtGui/$QT_VERSION/QtGui"
4452             if test "$NS_PRINTING"; then
4453                 PKG_CHECK_MODULES(MOZ_QT_WIDGETS, Qt5PrintSupport, ,
4454                 [
4455                   AC_MSG_ERROR([$MOZ_QT_PKG_ERRORS Need qtbase widgets development package])
4456                 ])
4457                 MOZ_QT_LIBS="$MOZ_QT_LIBS $MOZ_QT_WIDGETS_LIBS"
4458                 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $MOZ_QT_WIDGETS_CFLAGS"
4459             fi
4460             ;;
4461         *)
4462             AC_MSG_ERROR([* * * Unsupported Qt Version: $QT_VERSION])
4463             ;;
4464         esac
4466         AC_CHECK_PROGS(HOST_MOC, $MOC moc, "")
4467         AC_CHECK_PROGS(HOST_RCC, $RCC rcc, "")
4468     else
4469         MOZ_QT_CFLAGS="-DQT_SHARED"
4470         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
4471         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
4472         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
4473         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
4474         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
4475         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDeclarative"
4476         case $QT_VERSION in
4477         5.*)
4478             AC_MSG_RESULT("Using qt5: $QT_VERSION")
4479             MOZ_QT_LIBS="$MOZ_QT_LIBS -L$QTDIR/lib/ -lQt5Gui -lQt5Network -lQt5Core -lQt5Xml"
4480             MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui/$QT_VERSION/QtGui"
4481             if test "$NS_PRINTING"; then
4482                 MOZ_QT_LIBS="$MOZ_QT_LIBS -lQt5Widgets -lQt5PrintSupport"
4483                 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtPrintSupport"
4484             fi
4485             ;;
4486         *)
4487             AC_MSG_ERROR([* * * Unsupported Qt Version: $QT_VERSION])
4488             ;;
4489         esac
4491         HOST_MOC="$QTDIR/bin/moc"
4492         HOST_RCC="$QTDIR/bin/rcc"
4493     fi
4494     if test -z "$HOST_MOC"; then
4495         AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is incorrect])
4496     fi
4497     if test -z "$HOST_RCC"; then
4498         AC_MSG_ERROR([No acceptable rcc preprocessor found. Qt SDK is not installed or --with-qt is incorrect])
4499     fi
4501     MOC=$HOST_MOC
4502     RCC=$HOST_RCC
4504     MOZ_ENABLE_QMSYSTEM2=
4505     PKG_CHECK_MODULES(_QMSYSTEM2, qmsystem2,
4506                       MOZ_ENABLE_QMSYSTEM2=1,
4507                       MOZ_ENABLE_QMSYSTEM2=)
4509     if test "$MOZ_ENABLE_QMSYSTEM2"; then
4510       MOZ_ENABLE_QMSYSTEM2=1
4511       MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QMSYSTEM2_CFLAGS"
4512       MOZ_QT_LIBS="$MOZ_QT_LIBS $_QMSYSTEM2_LIBS"
4513       AC_DEFINE(MOZ_ENABLE_QMSYSTEM2)
4514     fi
4516     MOZ_ENABLE_QTNETWORK=
4517     PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7,
4518                       MOZ_ENABLE_QTNETWORK=1,
4519                       MOZ_ENABLE_QTNETWORK=)
4521     if test "$MOZ_ENABLE_QTNETWORK"; then
4522       MOZ_ENABLE_QTNETWORK=1
4523       AC_DEFINE(MOZ_ENABLE_QTNETWORK)
4524     fi
4526     MOZ_ENABLE_QTMOBILITY=
4527     PKG_CHECK_MODULES(_QTMOBILITY, QtSensors QtFeedback QtLocation,
4528                       MOZ_ENABLE_QTMOBILITY=1,
4529                       MOZ_ENABLE_QTMOBILITY=)
4530     if test "$MOZ_ENABLE_QTMOBILITY"; then
4531        MOZ_ENABLE_QTMOBILITY=1
4532        MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QTMOBILITY_CFLAGS"
4533        MOZ_QT_LIBS="$MOZ_QT_LIBS $_QTMOBILITY_LIBS"
4534        AC_DEFINE(MOZ_ENABLE_QTMOBILITY)
4535        AC_SUBST(MOZ_ENABLE_QTMOBILITY)
4536     else
4537        AC_CHECK_LIB(QtSensors, main, [
4538           MOZ_ENABLE_QTMOBILITY=1
4539           MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtMobility"
4540           MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtSensors"
4541           MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtFeedback"
4542           MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtLocation"
4543           MOZ_QT_LIBS="$MOZ_QT_LIBS -lQtSensors -lQtFeedback -lQtLocation"
4544        ])
4545     fi
4547     MOZ_ENABLE_QT5FEEDBACK=
4548     PKG_CHECK_MODULES(_QT5FEEDBACK, Qt0Feedback,
4549                       MOZ_ENABLE_QT5FEEDBACK=1,
4550                       MOZ_ENABLE_QT5FEEDBACK=)
4551     if test "$MOZ_ENABLE_QT5FEEDBACK"; then
4552        MOZ_ENABLE_QT5FEEDBACK=1
4553        MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QT5FEEDBACK_CFLAGS"
4554        MOZ_QT_LIBS="$MOZ_QT_LIBS $_QT5FEEDBACK_LIBS"
4555        AC_DEFINE(MOZ_ENABLE_QT5FEEDBACK)
4556        AC_SUBST(MOZ_ENABLE_QT5FEEDBACK)
4557     fi
4559     MOZ_ENABLE_QT5GEOPOSITION=
4560     PKG_CHECK_MODULES(_QT5GEOPOSITION, Qt5Positioning,
4561                       MOZ_ENABLE_QT5GEOPOSITION=1,
4562                       MOZ_ENABLE_QT5GEOPOSITION=)
4563     if test "$MOZ_ENABLE_QT5GEOPOSITION"; then
4564        MOZ_ENABLE_QT5GEOPOSITION=1
4565        MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QT5GEOPOSITION_CFLAGS"
4566        MOZ_QT_LIBS="$MOZ_QT_LIBS $_QT5GEOPOSITION_LIBS"
4567        AC_DEFINE(MOZ_ENABLE_QT5GEOPOSITION)
4568        AC_SUBST(MOZ_ENABLE_QT5GEOPOSITION)
4569     fi
4571     if test "$MOZ_ENABLE_CONTENTACTION"; then
4572       MOZ_ENABLE_CONTENTACTION=1
4573       AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
4574     fi
4576     MOZ_ENABLE_CONTENTACTION=
4577     PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=)
4578     if test "$MOZ_ENABLE_CONTENTACTION"; then
4579        MOZ_ENABLE_CONTENTACTION=1
4580        MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_CONTENTACTION_CFLAGS"
4581        MOZ_QT_LIBS="$MOZ_QT_LIBS $_CONTENTACTION_LIBS"
4582        AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
4583        AC_SUBST(MOZ_ENABLE_CONTENTACTION)
4584     fi
4587 AC_SUBST(GTK_CONFIG)
4588 AC_SUBST(TK_CFLAGS)
4589 AC_SUBST(TK_LIBS)
4591 AC_SUBST(MOZ_ENABLE_GTK2)
4592 AC_SUBST(MOZ_ENABLE_GTK3)
4593 AC_SUBST(MOZ_ENABLE_GTK)
4594 AC_SUBST(MOZ_ENABLE_QT)
4595 AC_SUBST(MOZ_ENABLE_QTNETWORK)
4596 AC_SUBST(MOZ_ENABLE_QMSYSTEM2)
4597 AC_SUBST(MOZ_ENABLE_QTMOBILITY)
4598 AC_SUBST(MOZ_ENABLE_XREMOTE)
4599 AC_SUBST(MOZ_GTK2_CFLAGS)
4600 AC_SUBST(MOZ_GTK2_LIBS)
4601 AC_SUBST(MOZ_GTK3_CFLAGS)
4602 AC_SUBST(MOZ_GTK3_LIBS)
4603 AC_SUBST(MOZ_WIDGET_GTK)
4604 AC_SUBST(MOZ_QT_CFLAGS)
4605 AC_SUBST(MOZ_QT_LIBS)
4607 AC_SUBST(MOC)
4608 AC_SUBST(RCC)
4610 AC_SUBST(MOZ_X11)
4612 dnl ========================================================
4613 dnl =
4614 dnl = Components & Features
4615 dnl =
4616 dnl ========================================================
4617 MOZ_ARG_HEADER(Components and Features)
4619 dnl ========================================================
4620 dnl = Localization
4621 dnl ========================================================
4622 MOZ_ARG_ENABLE_STRING(ui-locale,
4623 [  --enable-ui-locale=ab-CD
4624                           Select the user interface locale (default: en-US)],
4625     MOZ_UI_LOCALE=$enableval )
4626 AC_SUBST(MOZ_UI_LOCALE)
4628 dnl ========================================================
4629 dnl = Trademarked Branding
4630 dnl ========================================================
4631 MOZ_ARG_ENABLE_BOOL(official-branding,
4632 [  --enable-official-branding
4633                           Enable Official mozilla.org Branding
4634                           Do not distribute builds with
4635                           --enable-official-branding unless you have
4636                           permission to use trademarks per
4637                           http://www.mozilla.org/foundation/trademarks/ .],
4639   if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
4640     AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
4641   else
4642     MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
4643     MOZ_OFFICIAL_BRANDING=1
4644   fi
4645 ], MOZ_OFFICIAL_BRANDING=)
4647 AC_SUBST(MOZ_OFFICIAL_BRANDING)
4648 if test -n "$MOZ_OFFICIAL_BRANDING"; then
4649   AC_DEFINE(MOZ_OFFICIAL_BRANDING)
4652 MOZ_ARG_WITH_STRING(branding,
4653 [  --with-branding=dir     Use branding from the specified directory.],
4654     MOZ_BRANDING_DIRECTORY=$withval)
4656 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4657 if test -z "$REAL_BRANDING_DIRECTORY"; then
4658   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4661 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4662   . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
4665 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4667 dnl ========================================================
4668 dnl = Distribution ID
4669 dnl ========================================================
4670 MOZ_ARG_WITH_STRING(distribution-id,
4671 [  --with-distribution-id=ID
4672                           Set distribution-specific id (default=org.mozilla)],
4673 [ val=`echo $withval`
4674     MOZ_DISTRIBUTION_ID="$val"])
4676 if test -z "$MOZ_DISTRIBUTION_ID"; then
4677    MOZ_DISTRIBUTION_ID="org.mozilla"
4680 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4681 AC_SUBST(MOZ_DISTRIBUTION_ID)
4684 dnl ========================================================
4685 dnl = Pango
4686 dnl ========================================================
4687 if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT"
4688 then
4689     PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4691     PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION)
4692     AC_SUBST(MOZ_PANGO_CFLAGS)
4693     AC_SUBST(MOZ_PANGO_LIBS)
4696 dnl ========================================================
4697 dnl = GnomeVFS, GIO and GConf support module
4698 dnl ========================================================
4700 if test "$MOZ_X11"
4701 then
4702     dnl build the GIO extension by default only when the
4703     dnl GTK2 toolkit is in use.
4704     if test "$MOZ_ENABLE_GTK"
4705     then
4706         MOZ_ENABLE_GIO=1
4707         MOZ_ENABLE_GCONF=1
4708     fi
4710     dnl ========================================================
4711     dnl = GnomeVFS support module
4712     dnl ========================================================
4713     MOZ_ARG_ENABLE_BOOL(gnomevfs,
4714     [  --enable-gnomevfs       Enable GnomeVFS support (default: disabled)],
4715         MOZ_ENABLE_GNOMEVFS=force,
4716         MOZ_ENABLE_GNOMEVFS=)
4718     if test "$MOZ_ENABLE_GNOMEVFS"
4719     then
4720         PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
4721             MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
4722             MOZ_ENABLE_GNOMEVFS=1
4723             AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
4724         ],[
4725             if test "$MOZ_ENABLE_GNOMEVFS" = "force"
4726             then
4727                 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
4728             fi
4729             MOZ_ENABLE_GNOMEVFS=
4730         ])
4731     fi
4733     AC_SUBST(MOZ_ENABLE_GNOMEVFS)
4734     AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
4735     AC_SUBST(MOZ_GNOMEVFS_LIBS)
4737     dnl ========================================================
4738     dnl = GIO support module
4739     dnl ========================================================
4740     MOZ_ARG_DISABLE_BOOL(gio,
4741     [  --disable-gio           Disable GIO support],
4742         MOZ_ENABLE_GIO=,
4743         MOZ_ENABLE_GIO=force)
4745     if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK"
4746     then
4747         if test "$MOZ_ENABLE_GTK2"
4748         then
4749             PKG_CHECK_MODULES(_GTKCHECK, gtk+-2.0 >= 2.14, ,
4750                               [AC_MSG_ERROR([* * * Could not find gtk+-2.0 > 2.14. Required for build with gio.])])
4751         fi
4752         PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
4753             MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
4754             MOZ_ENABLE_GIO=1
4755             AC_DEFINE(MOZ_ENABLE_GIO)
4756         ],[
4757             if test "$MOZ_ENABLE_GIO" = "force"
4758             then
4759                 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
4760             fi
4761             MOZ_ENABLE_GIO=
4762         ])
4763     fi
4765     AC_SUBST(MOZ_ENABLE_GIO)
4766     AC_SUBST(MOZ_GIO_CFLAGS)
4767     AC_SUBST(MOZ_GIO_LIBS)
4769     dnl ========================================================
4770     dnl = GConf support module
4771     dnl ========================================================
4772     MOZ_ARG_DISABLE_BOOL(gconf,
4773     [  --disable-gconf      Disable Gconf support ],
4774         MOZ_ENABLE_GCONF=,
4775         MOZ_ENABLE_GCONF=force)
4777     if test "$MOZ_ENABLE_GCONF"
4778     then
4779         PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
4780             MOZ_GCONF_LIBS=`$PKG_CONFIG --libs gobject-2.0`
4781             MOZ_ENABLE_GCONF=1
4782         ],[
4783             if test "$MOZ_ENABLE_GCONF" = "force"
4784             then
4785                 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
4786             fi
4787             MOZ_ENABLE_GCONF=
4788         ])
4789     fi
4791     if test "$MOZ_ENABLE_GCONF"; then
4792         AC_DEFINE(MOZ_ENABLE_GCONF)
4793     fi
4795     AC_SUBST(MOZ_ENABLE_GCONF)
4796     AC_SUBST(MOZ_GCONF_CFLAGS)
4797     AC_SUBST(MOZ_GCONF_LIBS)
4800 dnl ========================================================
4801 dnl = libproxy support
4802 dnl ========================================================
4804 if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT"
4805 then
4806     MOZ_ENABLE_LIBPROXY=
4808     MOZ_ARG_ENABLE_BOOL(libproxy,
4809     [  --enable-libproxy         Enable libproxy support ],
4810     MOZ_ENABLE_LIBPROXY=1,
4811     MOZ_ENABLE_LIBPROXY=)
4813     if test "$MOZ_ENABLE_LIBPROXY"
4814     then
4815         PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
4816         AC_DEFINE(MOZ_ENABLE_LIBPROXY)
4817     fi
4819 AC_SUBST(MOZ_ENABLE_LIBPROXY)
4820 AC_SUBST(MOZ_LIBPROXY_CFLAGS)
4821 AC_SUBST(MOZ_LIBPROXY_LIBS)
4823 dnl ========================================================
4824 dnl = GNOME component (mozgnome)
4825 dnl ========================================================
4827 if test "$MOZ_ENABLE_GTK"
4828 then
4829     MOZ_ENABLE_GNOME_COMPONENT=1
4831 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
4833 dnl ========================================================
4834 dnl = libgnomeui support module
4835 dnl ========================================================
4837 if test "$MOZ_ENABLE_GTK"
4838 then
4839     MOZ_ARG_ENABLE_BOOL(gnomeui,
4840     [  --enable-gnomeui        Enable libgnomeui instead of GIO & GTK for icon theme support ],
4841         MOZ_ENABLE_GNOMEUI=force,
4842         MOZ_ENABLE_GNOMEUI=)
4844     if test "$MOZ_ENABLE_GNOMEUI"
4845     then
4846         PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
4847         [
4848             MOZ_ENABLE_GNOMEUI=1
4849         ],[
4850             if test "$MOZ_ENABLE_GNOMEUI" = "force"
4851             then
4852                 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
4853             fi
4854             MOZ_ENABLE_GNOMEUI=
4855         ])
4856     fi
4858     if test "$MOZ_ENABLE_GNOMEUI"; then
4859         AC_DEFINE(MOZ_ENABLE_GNOMEUI)
4860     fi
4863 AC_SUBST(MOZ_ENABLE_GNOMEUI)
4864 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
4866 dnl ========================================================
4867 dnl = dbus support
4868 dnl ========================================================
4870 if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT"
4871 then
4872     MOZ_ENABLE_DBUS=1
4874     MOZ_ARG_DISABLE_BOOL(dbus,
4875     [  --disable-dbus          Disable dbus support ],
4876         MOZ_ENABLE_DBUS=,
4877         MOZ_ENABLE_DBUS=1)
4879     if test "$MOZ_ENABLE_DBUS"
4880     then
4881         PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
4882         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
4883         AC_DEFINE(MOZ_ENABLE_DBUS)
4884     fi
4886 AC_SUBST(MOZ_ENABLE_DBUS)
4887 AC_SUBST(MOZ_DBUS_CFLAGS)
4888 AC_SUBST(MOZ_DBUS_LIBS)
4889 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
4890 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
4892 dnl ========================================================
4893 dnl = Enable Android History instead of Places
4894 dnl ========================================================
4895 if test -n "$MOZ_ANDROID_HISTORY"; then
4896     if test -z "$MOZ_PLACES"; then
4897         AC_DEFINE(MOZ_ANDROID_HISTORY)
4898     else
4899         AC_MSG_ERROR([Cannot use MOZ_ANDROID_HISTORY alongside MOZ_PLACES.])
4900     fi
4903 dnl ========================================================
4904 dnl = Build with the Android compositor
4905 dnl ========================================================
4906 if test -n "$MOZ_ANDROID_OMTC"; then
4907      dnl Do this if defined in confvars.sh
4908      AC_DEFINE(MOZ_ANDROID_OMTC)
4911 dnl ========================================================
4912 dnl = Disable WebSMS backend
4913 dnl ========================================================
4914 MOZ_ARG_DISABLE_BOOL(websms-backend,
4915 [  --disable-websms-backend
4916                            Disable WebSMS backend],
4917     MOZ_WEBSMS_BACKEND=,
4918     MOZ_WEBSMS_BACKEND=1)
4920 if test -n "$MOZ_WEBSMS_BACKEND"; then
4921     AC_DEFINE(MOZ_WEBSMS_BACKEND)
4924 dnl ========================================================
4925 dnl = Enable NFC permission on Android
4926 dnl ========================================================
4927 if test -n "$MOZ_ANDROID_BEAM"; then
4928     AC_DEFINE(MOZ_ANDROID_BEAM)
4931 dnl ========================================================
4932 dnl = Synthesized Webapp APKs on Android
4933 dnl ========================================================
4934 MOZ_ARG_ENABLE_BOOL(android-synthapks,
4935 [  --enable-android-synthapks       Enable synthesized APKs],
4936     MOZ_ANDROID_SYNTHAPKS=1,
4937     MOZ_ANDROID_SYNTHAPKS=)
4939 if test -n "$MOZ_ANDROID_SYNTHAPKS"; then
4940     AC_DEFINE(MOZ_ANDROID_SYNTHAPKS)
4943 dnl ========================================================
4944 dnl = JS Debugger XPCOM component (js/jsd)
4945 dnl ========================================================
4946 MOZ_ARG_DISABLE_BOOL(jsd,
4947 [  --disable-jsd           Disable JavaScript debug library],
4948     MOZ_JSDEBUGGER=,
4949     MOZ_JSDEBUGGER=1)
4952 dnl ========================================================
4953 dnl = Enable IPDL's "expensive" unit tests
4954 dnl ========================================================
4955 MOZ_IPDL_TESTS=
4957 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
4958 [  --enable-ipdl-tests     Enable expensive IPDL tests],
4959     MOZ_IPDL_TESTS=1,
4960     MOZ_IPDL_TESTS=)
4962 if test -n "$MOZ_IPDL_TESTS"; then
4963     AC_DEFINE(MOZ_IPDL_TESTS)
4966 AC_SUBST(MOZ_IPDL_TESTS)
4968 dnl ========================================================
4969 dnl = Disable building dbm
4970 dnl ========================================================
4971 MOZ_ARG_DISABLE_BOOL(dbm,
4972 [  --disable-dbm           Disable building dbm],
4973     NSS_DISABLE_DBM=1,
4974     NSS_DISABLE_DBM=)
4976 dnl ========================================================
4977 dnl accessibility support on by default on all platforms
4978 dnl ========================================================
4979 MOZ_ARG_DISABLE_BOOL(accessibility,
4980 [  --disable-accessibility Disable accessibility support],
4981     ACCESSIBILITY=,
4982     ACCESSIBILITY=1 )
4983 if test "$ACCESSIBILITY"; then
4984     case "$target" in
4985     *-mingw*)
4986         if test -z "$MIDL"; then
4987             if test "$GCC" != "yes"; then
4988                 AC_MSG_ERROR([MIDL could not be found. Building accessibility without MIDL is not supported.])
4989             else
4990                 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.])
4991             fi
4992         fi
4993     esac
4994     AC_DEFINE(ACCESSIBILITY)
4997 dnl ========================================================
4998 dnl Accessibility is required for the linuxgl widget
4999 dnl backend
5000 dnl ========================================================
5001 if test "${MOZ_WIDGET_TOOLKIT}" = "linuxgl" -a "$ACCESSIBILITY" != "1"; then
5002     AC_MSG_ERROR(["Accessibility is required for the linuxgl widget backend"])
5005 dnl Turn off webrtc for OS's we don't handle yet, but allow
5006 dnl --enable-webrtc to override.  Can disable for everything in
5007 dnl the master list above.
5008 if test -n "$MOZ_WEBRTC"; then
5009     case "$target" in
5010     *-linux*|*-mingw*|*-darwin*|*-android*|*-linuxandroid*|*-dragonfly*|*-freebsd*|*-netbsd*|*-openbsd*)
5011         dnl Leave enabled
5012         ;;
5013     *)
5014         dnl default to disabled for all others
5015         MOZ_WEBRTC=
5016         ;;
5017     esac
5020 AC_TRY_COMPILE([#include <linux/ethtool.h>],
5021                [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
5022                MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
5024 AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI)
5026 # target_arch is from {ia32|x64|arm|ppc}
5027 case "$CPU_ARCH" in
5028 x86_64 | arm | x86 | ppc* | ia64)
5029     :
5030     ;;
5032 # unsupported arch for webrtc
5033     MOZ_WEBRTC=
5034     ;;
5036 esac
5038 dnl ========================================================
5039 dnl = Disable WebRTC code
5040 dnl ========================================================
5041 MOZ_ARG_DISABLE_BOOL(webrtc,
5042 [  --disable-webrtc        Disable support for WebRTC],
5043     MOZ_WEBRTC=,
5044     MOZ_WEBRTC=1)
5046 if test -n "$MOZ_WEBRTC"; then
5047     AC_DEFINE(MOZ_WEBRTC)
5048     dnl MOZ_WEBRTC_ASSERT_ALWAYS turns on a number of safety asserts in
5049     dnl opt/production builds (via MOZ_CRASH())
5050     AC_DEFINE(MOZ_WEBRTC_ASSERT_ALWAYS)
5051     MOZ_RAW=1
5052     MOZ_VPX=1
5053     MOZ_VPX_ERROR_CONCEALMENT=1
5055 dnl enable once Signaling lands
5056     MOZ_WEBRTC_SIGNALING=1
5057     AC_DEFINE(MOZ_WEBRTC_SIGNALING)
5058 dnl enable once PeerConnection lands
5059     MOZ_PEERCONNECTION=1
5060     AC_DEFINE(MOZ_PEERCONNECTION)
5061     MOZ_SCTP=1
5062     MOZ_SRTP=1
5063     AC_DEFINE(MOZ_SCTP)
5064     AC_DEFINE(MOZ_SRTP)
5065 else
5066     MOZ_SYNTH_PICO=
5069 AC_SUBST(MOZ_WEBRTC)
5070 AC_SUBST(MOZ_WEBRTC_LEAKING_TESTS)
5071 AC_SUBST(MOZ_WEBRTC_SIGNALING)
5072 AC_SUBST(MOZ_PEERCONNECTION)
5073 AC_SUBST(MOZ_WEBRTC_ASSERT_ALWAYS)
5074 AC_SUBST(MOZ_SCTP)
5075 AC_SUBST(MOZ_SRTP)
5077 dnl Use integers over floats for audio on B2G and Android, because audio
5078 dnl backends for those platforms don't support floats.
5079 if test "$OS_TARGET" = "Android"; then
5080     MOZ_SAMPLE_TYPE_S16=1
5081     AC_DEFINE(MOZ_SAMPLE_TYPE_S16)
5082     AC_SUBST(MOZ_SAMPLE_TYPE_S16)
5083 else
5084     MOZ_SAMPLE_TYPE_FLOAT32=1
5085     AC_DEFINE(MOZ_SAMPLE_TYPE_FLOAT32)
5086     AC_SUBST(MOZ_SAMPLE_TYPE_FLOAT32)
5089 dnl ========================================================
5090 dnl = Disable Speech API code
5091 dnl ========================================================
5092 MOZ_ARG_DISABLE_BOOL(webspeech,
5093 [  --disable-webspeech        Disable support for HTML Speech API],
5094     MOZ_WEBSPEECH=,
5095     MOZ_WEBSPEECH=1)
5097 if test -n "$MOZ_WEBSPEECH"; then
5098     AC_DEFINE(MOZ_WEBSPEECH)
5101 AC_SUBST(MOZ_WEBSPEECH)
5103 dnl ========================================================
5104 dnl = Enable Raw Codecs
5105 dnl ========================================================
5106 MOZ_ARG_ENABLE_BOOL(raw,
5107 [  --enable-raw           Enable support for RAW media],
5108     MOZ_RAW=1,
5109     MOZ_RAW=)
5111 if test -n "$MOZ_RAW"; then
5112     AC_DEFINE(MOZ_RAW)
5115 AC_SUBST(MOZ_RAW)
5117 dnl Checks for __attribute__(aligned()) directive need by libogg
5118 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5119     [ac_cv_c_attribute_aligned],
5120     [ac_cv_c_attribute_aligned=0
5121      CFLAGS_save="${CFLAGS}"
5122      CFLAGS="${CFLAGS} -Werror"
5123      for ac_cv_c_attr_align_try in 64 32 16 8; do
5124        echo "trying $ac_cv_c_attr_align_try"
5125        AC_TRY_COMPILE([],
5126                       [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
5127                       [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
5128        if test "$ac_cv_c_attribute_aligned" != 0; then
5129          break;
5130        fi
5131      done
5132        CFLAGS="${CFLAGS_save}"])
5133 if test "${ac_cv_c_attribute_aligned}" != "0"; then
5134   AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
5135                      [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
5138 dnl ========================================================
5139 dnl = Disable Opus audio codec support
5140 dnl ========================================================
5141 MOZ_ARG_DISABLE_BOOL(opus,
5142 [  --disable-opus          Disable support for Opus audio],
5143     MOZ_OPUS=,
5144     MOZ_OPUS=1)
5146 dnl ========================================================
5147 dnl = Disable VP8 decoder support
5148 dnl ========================================================
5149 MOZ_ARG_DISABLE_BOOL(webm,
5150 [  --disable-webm          Disable support for WebM media (VP8 video and Vorbis audio)],
5151     MOZ_WEBM=,
5152     MOZ_WEBM=1)
5154 if test -n "$MOZ_WEBM"; then
5155     AC_DEFINE(MOZ_WEBM)
5156     MOZ_VPX=1
5159 dnl ========================================================
5160 dnl = DirectShow support
5161 dnl ========================================================
5162 if test "$OS_ARCH" = "WINNT"; then
5163     dnl Enable DirectShow support by default.
5164     MOZ_DIRECTSHOW=1
5167 MOZ_ARG_DISABLE_BOOL(directshow,
5168 [  --disable-directshow  Disable support for DirectShow],
5169     MOZ_DIRECTSHOW=,
5170     MOZ_DIRECTSHOW=1)
5172 if test -n "$MOZ_DIRECTSHOW"; then
5173     AC_DEFINE(MOZ_DIRECTSHOW)
5176 dnl ========================================================
5177 dnl = Windows Media Foundation support
5178 dnl ========================================================
5179 if test "$OS_ARCH" = "WINNT"; then
5180     dnl Enable Windows Media Foundation support by default.
5181     dnl Note our minimum SDK version is Windows 7 SDK, so we are (currently)
5182     dnl guaranteed to have a recent-enough SDK to build WMF.
5183     MOZ_WMF=1
5186 MOZ_ARG_DISABLE_BOOL(wmf,
5187 [  --disable-wmf  Disable support for Windows Media Foundation],
5188     MOZ_WMF=,
5189     MOZ_WMF=1)
5191 if test -n "$MOZ_WMF"; then
5192     AC_DEFINE(MOZ_WMF)
5195 dnl ========================================================
5196 dnl FFmpeg H264/AAC Decoding Support
5197 dnl ========================================================
5198 case "$OS_TARGET" in
5199 WINNT|Darwin|Android)
5200     ;;
5202     MOZ_FFMPEG=1
5203     ;;
5204 esac
5206 MOZ_ARG_DISABLE_BOOL(ffmpeg,
5207 [  --disable-ffmpeg         Disable FFmpeg for fragmented H264/AAC decoding],
5208     MOZ_FFMPEG=,
5209     MOZ_FFMPEG=1
5212 if test -n "$MOZ_FFMPEG"; then
5213     AC_DEFINE(MOZ_FFMPEG)
5216 dnl ========================================================
5217 dnl = Built-in fragmented MP4 support.
5218 dnl ========================================================
5219 if test -n "$MOZ_WMF" -o -n "$MOZ_FFMPEG"; then
5220     dnl Enable fragmented MP4 parser on Windows by default.
5221     dnl We will also need to enable it on other platforms as we implement
5222     dnl platform decoder support there too.
5223     MOZ_FMP4=1
5226 MOZ_ARG_DISABLE_BOOL(fmp4,
5227 [  --disable-fmp4  Disable support for in built Fragmented MP4 parsing],
5228     MOZ_FMP4=,
5229     MOZ_FMP4=1)
5231 if test -n "$MOZ_FMP4"; then
5232     AC_DEFINE(MOZ_FMP4)
5236 dnl ========================================================
5237 dnl = Enable media plugin support
5238 dnl ========================================================
5239 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5240   dnl Enable support on android by default
5241   MOZ_MEDIA_PLUGINS=1
5244 MOZ_ARG_ENABLE_BOOL(media-plugins,
5245 [  --enable-media-plugins  Enable support for media plugins],
5246     MOZ_MEDIA_PLUGINS=1,
5247     MOZ_MEDIA_PLUGINS=)
5249 if test -n "$MOZ_MEDIA_PLUGINS"; then
5250   AC_DEFINE(MOZ_MEDIA_PLUGINS)
5253 dnl ========================================================
5254 dnl = Disable platform MP3 decoder on OSX
5255 dnl ========================================================
5256 if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
5257   MOZ_APPLEMEDIA=1
5260 MOZ_ARG_DISABLE_BOOL(apple-media,
5261 [  --disable-apple-media  Disable support for Apple AudioToolbox/VideoToolbox],
5262     MOZ_APPLEMEDIA=,
5263     MOZ_APPLEMEDIA=1)
5265 if test -n "$MOZ_APPLEMEDIA"; then
5266   AC_DEFINE(MOZ_APPLEMEDIA)
5269 dnl ========================================================
5270 dnl = Enable getUserMedia support
5271 dnl ========================================================
5272 MOZ_ARG_ENABLE_BOOL(media-navigator,
5273 [  --enable-media-navigator  Enable support for getUserMedia],
5274     MOZ_MEDIA_NAVIGATOR=1,
5275     MOZ_MEDIA_NAVIGATOR=)
5277 if test -n "$MOZ_MEDIA_NAVIGATOR"; then
5278   AC_DEFINE(MOZ_MEDIA_NAVIGATOR)
5281 dnl ========================================================
5282 dnl = Enable building OMX media plugin (B2G or Android)
5283 dnl ========================================================
5284 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5285   dnl Enable support on android by default
5286   MOZ_OMX_PLUGIN=1
5289 MOZ_ARG_ENABLE_BOOL(omx-plugin,
5290 [  --enable-omx-plugin      Enable building OMX plugin (B2G)],
5291     MOZ_OMX_PLUGIN=1,
5292     MOZ_OMX_PLUGIN=)
5294 if test -n "$MOZ_OMX_PLUGIN"; then
5295     if test "$OS_TARGET" = "Android"; then
5296         dnl Only allow building OMX plugin on Gonk (B2G) or Android
5297         AC_DEFINE(MOZ_OMX_PLUGIN)
5298     else
5299        dnl fail if we're not building on Gonk or Android
5300        AC_MSG_ERROR([OMX media plugin can only be built on B2G or Android])
5301     fi
5304 dnl system libvpx Support
5305 dnl ========================================================
5306 MOZ_ARG_WITH_BOOL(system-libvpx,
5307 [  --with-system-libvpx    Use system libvpx (located with pkgconfig)],
5308     MOZ_NATIVE_LIBVPX=1)
5310 MOZ_LIBVPX_CFLAGS=
5311 MOZ_LIBVPX_LIBS=
5313 if test -n "$MOZ_VPX"; then
5314     AC_DEFINE(MOZ_VPX)
5315     if test -n "$MOZ_VPX_ERROR_CONCEALMENT" ; then
5316         AC_DEFINE(MOZ_VPX_ERROR_CONCEALMENT)
5317     fi
5319     _SAVE_CFLAGS=$CFLAGS
5320     _SAVE_LIBS=$LIBS
5321     if test -n "$MOZ_NATIVE_LIBVPX"; then
5322         dnl ============================
5323         dnl === libvpx Version check ===
5324         dnl ============================
5325         dnl Check to see if we have a system libvpx package.
5326         PKG_CHECK_MODULES(MOZ_LIBVPX, vpx >= 1.3.0)
5328         CFLAGS="$CFLAGS $MOZ_LIBVPX_CFLAGS"
5329         LIBS="$LIBS $MOZ_LIBVPX_LIBS"
5331         MOZ_CHECK_HEADER([vpx/vpx_decoder.h], [],
5332          [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.])])
5334         AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver, [],
5335          [AC_MSG_ERROR([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found])])
5337         MOZ_CHECK_HEADER([vpx_mem/vpx_mem.h],
5338          [AC_CHECK_FUNC(vpx_mem_set_functions)])
5339         if test "$ac_cv_header_vpx_mem_vpx_mem_h" = no -o \
5340                 "$ac_cv_func_vpx_mem_set_functions" = no; then
5341             AC_DEFINE(MOZ_VPX_NO_MEM_REPORTING)
5342         fi
5343     fi
5344     CFLAGS=$_SAVE_CFLAGS
5345     LIBS=$_SAVE_LIBS
5348 AC_SUBST(MOZ_NATIVE_LIBVPX)
5349 AC_SUBST(MOZ_LIBVPX_CFLAGS)
5350 AC_SUBST(MOZ_LIBVPX_LIBS)
5352 if test "$MOZ_WEBM"; then
5353     if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then
5354         MOZ_VORBIS=1
5355     else
5356         MOZ_TREMOR=1
5357     fi
5360 if test -n "$MOZ_VPX" -a -z "$MOZ_NATIVE_LIBVPX"; then
5362     dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
5363     dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
5364     dnl We currently require gcc on all arm platforms.
5365     VPX_AS=$YASM
5366     VPX_ASM_SUFFIX=asm
5367     VPX_NEED_OBJ_INT_EXTRACT=
5369     dnl See if we have assembly on this platform.
5370     case "$OS_ARCH:$CPU_ARCH" in
5371     Darwin:x86)
5372       VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC"
5373       VPX_X86_ASM=1
5374     ;;
5375     Darwin:x86_64)
5376       VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC"
5377       VPX_X86_ASM=1
5378     ;;
5379     WINNT:x86_64)
5380       VPX_ASFLAGS="-f x64 -rnasm -pnasm"
5381       VPX_X86_ASM=1
5382     ;;
5383     WINNT:x86)
5384       dnl Check for yasm 1.1 or greater.
5385       if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then
5386         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.])
5387       elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
5388         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.])
5389       else
5390         VPX_ASFLAGS="-f win32 -rnasm -pnasm -DPIC"
5391         VPX_X86_ASM=1
5392         dnl The encoder needs obj_int_extract to get asm offsets.
5393       fi
5394     ;;
5395     *:arm*)
5396       if test -n "$GNU_AS" ; then
5397         VPX_AS=$AS
5398         dnl These flags are a lie; they're just used to enable the requisite
5399         dnl opcodes; actual arch detection is done at runtime.
5400         VPX_ASFLAGS="-march=armv7-a -mfpu=neon"
5401         VPX_DASH_C_FLAG="-c"
5402         VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl'
5403         VPX_ASM_SUFFIX="$ASM_SUFFIX"
5404         VPX_ARM_ASM=1
5405       fi
5406     ;;
5407     *:x86)
5408       if $CC -E -dM -</dev/null | grep -q __ELF__; then
5409         VPX_ASFLAGS="-f elf32 -rnasm -pnasm -DPIC"
5410         VPX_X86_ASM=1
5411       fi
5412     ;;
5413     *:x86_64)
5414       if $CC -E -dM -</dev/null | grep -q __ELF__; then
5415         VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
5416         VPX_X86_ASM=1
5417       fi
5418     ;;
5419     esac
5421     if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_X86_ASM" -a -z "$VPX_AS"; then
5422       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.])
5423     fi
5425     if test -z "$GNU_CC" -a -z "$INTEL_CC" -a -z "$CLANG_CC" ; then
5426       dnl We prefer to get asm offsets using inline assembler, which the above
5427       dnl compilers can do. When we're not using one of those, we have to fall
5428       dnl back to obj_int_extract, which reads them from a compiled object
5429       dnl file. Unfortunately, that only works if we're compiling on a system
5430       dnl with the header files for the appropriate object file format.
5431       VPX_NEED_OBJ_INT_EXTRACT=1
5432     fi
5434     if test -n "$VPX_X86_ASM"; then
5435       AC_DEFINE(VPX_X86_ASM)
5436     elif test -n "$VPX_ARM_ASM"; then
5437       AC_DEFINE(VPX_ARM_ASM)
5438     else
5439       AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.])
5440     fi
5443 dnl ========================================================
5444 dnl = Disable Wave decoder support
5445 dnl ========================================================
5446 MOZ_ARG_DISABLE_BOOL(wave,
5447 [  --disable-wave          Disable Wave decoder support],
5448     MOZ_WAVE=,
5449     MOZ_WAVE=1)
5451 if test -n "$MOZ_WAVE"; then
5452     AC_DEFINE(MOZ_WAVE)
5455 dnl ========================================================
5456 dnl = Handle dependent MEDIA defines
5457 dnl ========================================================
5459 if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then
5460     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/])
5463 if test -n "$MOZ_WEBRTC" -a -z "$MOZ_OPUS"; then
5464     AC_MSG_ERROR([MOZ_WEBRTC requires MOZ_OPUS which is disabled.])
5467 if test -n "$MOZ_VORBIS"; then
5468     AC_DEFINE(MOZ_VORBIS)
5471 if test -n "$MOZ_TREMOR"; then
5472     AC_DEFINE(MOZ_TREMOR)
5475 if test -n "$MOZ_OPUS"; then
5476     AC_DEFINE(MOZ_OPUS)
5479 if test -n "$MOZ_WEBM_ENCODER"; then
5480     AC_DEFINE(MOZ_WEBM_ENCODER)
5482 AC_SUBST(MOZ_WEBM_ENCODER)
5484 dnl ==================================
5485 dnl = Check alsa availability on Linux
5486 dnl ==================================
5488 dnl If using Linux, ensure that the alsa library is available
5489 if test "$OS_TARGET" = "Linux"; then
5490     MOZ_ALSA=1
5493 MOZ_ARG_ENABLE_BOOL(alsa,
5494 [  --enable-alsa          Enable Alsa support (default on Linux)],
5495    MOZ_ALSA=1,
5496    MOZ_ALSA=)
5498 if test -n "$MOZ_ALSA"; then
5499     PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
5500          [echo "$MOZ_ALSA_PKG_ERRORS"
5501           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.)])])
5504 AC_SUBST(MOZ_ALSA)
5505 AC_SUBST(MOZ_ALSA_CFLAGS)
5506 AC_SUBST(MOZ_ALSA_LIBS)
5508 dnl ========================================================
5509 dnl = Disable PulseAudio
5510 dnl ========================================================
5512 dnl If using Linux, ensure that the PA library is available
5513 case "$OS_TARGET" in
5514 WINNT|Darwin|Android|OpenBSD)
5515     ;;
5517     if test -z "$MOZ_B2G"; then
5518         MOZ_PULSEAUDIO=1
5519     fi
5520     ;;
5521 esac
5523 MOZ_ARG_DISABLE_BOOL(pulseaudio,
5524 [  --disable-pulseaudio          Disable PulseAudio support],
5525    MOZ_PULSEAUDIO=,
5526    MOZ_PULSEAUDIO=1)
5528 if test -n "$MOZ_PULSEAUDIO"; then
5529     if test -z "$gonkdir"; then
5530         PKG_CHECK_MODULES(MOZ_PULSEAUDIO, libpulse, ,
5531              [echo "$MOZ_PULSEAUDIO_PKG_ERRORS"
5532               AC_MSG_ERROR([pulseaudio audio backend requires libpulse development package])])
5533     else
5534         MOZ_PULSEAUDIO_CFLAGS="-I$gonkdir/external/pulseaudio/pulseaudio/src"
5535     fi
5538 AC_SUBST(MOZ_PULSEAUDIO)
5539 AC_SUBST(MOZ_PULSEAUDIO_CFLAGS)
5541 dnl ========================================================
5542 dnl = Enable GStreamer
5543 dnl ========================================================
5544 case "$OS_TARGET" in
5545 WINNT|Darwin|Android)
5546     ;;
5548     MOZ_GSTREAMER=1
5549     GST_API_VERSION=0.10
5550     ;;
5551 esac
5553 MOZ_ARG_ENABLE_STRING(gstreamer,
5554 [  --enable-gstreamer[=0.10]           Enable GStreamer support],
5555 [ MOZ_GSTREAMER=1
5556   # API version, eg 0.10, 1.0 etc
5557   if test -z "$enableval" -o "$enableval" = "yes"; then
5558     GST_API_VERSION=0.10
5559   elif test "$enableval" = "no"; then
5560     MOZ_GSTREAMER=
5561   else
5562     GST_API_VERSION=$enableval
5563   fi],
5566 if test -n "$MOZ_GSTREAMER"; then
5567     # core/base release number
5568     if test "$GST_API_VERSION" = "1.0"; then
5569       GST_VERSION=1.0
5570     else
5571       GST_VERSION=0.10.25
5572     fi
5574     PKG_CHECK_MODULES(GSTREAMER,
5575                       gstreamer-$GST_API_VERSION >= $GST_VERSION
5576                       gstreamer-app-$GST_API_VERSION
5577                       gstreamer-plugins-base-$GST_API_VERSION,
5578                       [_HAVE_GSTREAMER=1],
5579                       [_HAVE_GSTREAMER=])
5580     if test -z "$_HAVE_GSTREAMER"; then
5581         AC_MSG_ERROR([gstreamer and gstreamer-plugins-base development packages are needed to build gstreamer backend. Install them or disable gstreamer support with --disable-gstreamer])
5582     fi
5584     _SAVE_LDFLAGS=$LDFLAGS
5585     LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5586     AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=)
5587     if test -n "$_HAVE_LIBGSTVIDEO" ; then
5588         GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5589     else
5590         AC_MSG_ERROR([gstreamer-plugins-base found, but no libgstvideo. Something has gone terribly wrong. Try reinstalling gstreamer-plugins-base; failing that, disable the gstreamer backend with --disable-gstreamer.])
5591     fi
5592     LDFLAGS=$_SAVE_LDFLAGS
5594     AC_SUBST(GSTREAMER_CFLAGS)
5595     AC_SUBST(GSTREAMER_LIBS)
5598 AC_SUBST(MOZ_GSTREAMER)
5599 AC_SUBST(GST_API_VERSION)
5601 if test -n "$MOZ_GSTREAMER"; then
5602      AC_DEFINE(MOZ_GSTREAMER)
5603      AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION")
5607 dnl ========================================================
5608 dnl Permissions System
5609 dnl ========================================================
5610 MOZ_ARG_DISABLE_BOOL(permissions,
5611 [  --disable-permissions   Disable permissions (popup and cookie blocking)],
5612     MOZ_PERMISSIONS=,
5613     MOZ_PERMISSIONS=1
5616 dnl ========================================================
5617 dnl Child permissions, currently only used for b2g
5618 dnl ========================================================
5619 if test -n "$MOZ_B2G"; then
5620     if test -n "$MOZ_PERMISSIONS"; then
5621         MOZ_CHILD_PERMISSIONS=1
5622     else
5623         AC_MSG_ERROR([You need to enable MOZ_PERMISSIONS for MOZ_CHILD_PERMISSIONS])
5624     fi
5626 AC_SUBST(MOZ_CHILD_PERMISSIONS)
5628 dnl ========================================================
5629 dnl NegotiateAuth
5630 dnl ========================================================
5631 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5632 [  --disable-negotiateauth Disable GSS-API negotiation ],
5633     MOZ_AUTH_EXTENSION=,
5634     MOZ_AUTH_EXTENSION=1 )
5636 dnl ========================================================
5637 dnl Pref extensions (autoconfig)
5638 dnl ========================================================
5639 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5640 [  --disable-pref-extensions
5641                           Disable pref extensions such as autoconfig],
5642   MOZ_PREF_EXTENSIONS=,
5643   MOZ_PREF_EXTENSIONS=1 )
5645 dnl ========================================================
5646 dnl Searching of system directories for extensions.
5647 dnl Note: this switch is meant to be used for test builds
5648 dnl whose behavior should not depend on what happens to be
5649 dnl installed on the local machine.
5650 dnl ========================================================
5651 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
5652 [  --disable-system-extension-dirs
5653                           Disable searching system- and account-global
5654                           directories for extensions of any kind; use
5655                           only profile-specific extension directories],
5656   ENABLE_SYSTEM_EXTENSION_DIRS=,
5657   ENABLE_SYSTEM_EXTENSION_DIRS=1 )
5658 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
5659   AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
5662 dnl ========================================================
5663 dnl = Universalchardet
5664 dnl ========================================================
5665 MOZ_ARG_DISABLE_BOOL(universalchardet,
5666 [  --disable-universalchardet
5667                           Disable universal encoding detection],
5668   MOZ_UNIVERSALCHARDET=,
5669   MOZ_UNIVERSALCHARDET=1 )
5671 if test -n "${JAVA_BIN_PATH}"; then
5672   dnl Look for javac and jar in the specified path.
5673   JAVA_PATH="$JAVA_BIN_PATH"
5674 else
5675   dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5676   JAVA_PATH="$JAVA_HOME/bin:$PATH"
5679 MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5680 MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5681 MOZ_PATH_PROG(JAVAH, javah, :, [$JAVA_PATH])
5682 MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5683 MOZ_PATH_PROG(JARSIGNER, jarsigner, :, [$JAVA_PATH])
5684 MOZ_PATH_PROG(KEYTOOL, keytool, :, [$JAVA_PATH])
5686 if test -n "${JAVA_BIN_PATH}" -o \
5687   \( "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk" \); then
5688   if test -z "$JAVA" -o "$JAVA" = ":"; then
5689     AC_MSG_ERROR([The program java was not found.  Set \$JAVA_HOME to your Java SDK directory or use --with-java-bin-path={java-bin-dir}])
5690   fi
5691   if test -z "$JAVAC" -o "$JAVAC" = ":"; then
5692     AC_MSG_ERROR([The program javac was not found.  Set \$JAVA_HOME to your Java SDK directory or use --with-java-bin-path={java-bin-dir}])
5693   fi
5694   if test -z "$JAVAH" -o "$JAVAH" = ":"; then
5695     AC_MSG_ERROR([The program javah was not found.  Set \$JAVA_HOME to your Java SDK directory or use --with-java-bin-path={java-bin-dir}])
5696   fi
5697   if test -z "$JAR" -o "$JAR" = ":"; then
5698     AC_MSG_ERROR([The program jar was not found.  Set \$JAVA_HOME to your Java SDK directory or use --with-java-bin-path={java-bin-dir}])
5699   fi
5700   if test -z "$JARSIGNER" -o "$JARSIGNER" = ":"; then
5701     AC_MSG_ERROR([The program jarsigner was not found.  Set \$JAVA_HOME to your Java SDK directory or use --with-java-bin-path={java-bin-dir}])
5702   fi
5703   if test -z "$KEYTOOL" -o "$KEYTOOL" = ":"; then
5704     AC_MSG_ERROR([The program keytool was not found.  Set \$JAVA_HOME to your Java SDK directory or use --with-java-bin-path={java-bin-dir}])
5705   fi
5708 dnl ========================================================
5709 dnl = ANGLE OpenGL->D3D translator for WebGL
5710 dnl = * only applies to win32
5711 dnl = * enabled by default (shipping build); requires explicit --disable to disable
5712 dnl ========================================================
5714 MOZ_ANGLE_RENDERER=
5715 MOZ_D3D_CPU_SUFFIX=
5716 MOZ_HAS_WINSDK_WITH_D3D=
5717 MOZ_D3DCOMPILER_VISTA_DLL=
5718 MOZ_D3DCOMPILER_VISTA_DLL_PATH=
5719 MOZ_DIRECTX_SDK_PATH=
5720 MOZ_D3DCOMPILER_XP_DLL=
5721 MOZ_D3DCOMPILER_XP_CAB=
5723 case "$target_os" in
5724 *mingw*)
5725     MOZ_ANGLE_RENDERER=1
5726     ;;
5727 esac
5729 # The DirectX SDK libraries are split into x86 and x64 sub-directories
5730 case "${target_cpu}" in
5731 i*86)
5732   MOZ_D3D_CPU_SUFFIX=x86
5733   ;;
5734 x86_64)
5735   MOZ_D3D_CPU_SUFFIX=x64
5736   ;;
5737 esac
5739 MOZ_ARG_DISABLE_BOOL(webgl,
5740 [  --disable-webgl     Disable building of the WebGL implementation],
5741     MOZ_WEBGL_DISABLED=1,
5742     MOZ_WEBGL_DISABLED=)
5744 MOZ_ARG_ENABLE_BOOL(require-all-d3dc-versions,
5745 [  --enable-require-all-d3dc-versions Require all versions of the D3D compiler needed for supported Windows systems.],
5746     MOZ_REQUIRE_ALL_D3DCS=1,
5747     MOZ_REQUIRE_ALL_D3DCS=)
5749 if test -n "$MOZ_WEBGL_DISABLED"; then
5750   MOZ_WEBGL=
5751   MOZ_ANGLE_RENDERER=
5754 if test -n "$MOZ_WEBGL"; then
5755   AC_DEFINE(MOZ_WEBGL)
5758 if test -n "$MOZ_WEBGL_CONFORMANT"; then
5759   AC_DEFINE(MOZ_WEBGL_CONFORMANT)
5762 dnl ========================================================
5763 dnl D3D compiler DLL
5764 dnl ========================================================
5765 MOZ_FOUND_D3D_COMPILERS=
5767 if test -n "$MOZ_ANGLE_RENDERER"; then
5768   if test -z "$MOZ_D3D_CPU_SUFFIX"; then
5769     AC_MSG_ERROR([Couldn't determine MOZ_D3D_CPU_SUFFIX.])
5770   fi
5772   ######################################
5773   # Find _46+ for use by Vista+.
5775   # Find a D3D compiler DLL in a Windows SDK.
5776   MOZ_D3DCOMPILER_VISTA_DLL=
5777   case "$MOZ_WINSDK_MAXVER" in
5778   0x0603*)
5779     MOZ_D3DCOMPILER_VISTA_DLL=d3dcompiler_47.dll
5780     AC_MSG_RESULT([Found D3D compiler in Windows SDK 8.1.])
5781   ;;
5782   0x0602*)
5783     MOZ_D3DCOMPILER_VISTA_DLL=d3dcompiler_46.dll
5784     AC_MSG_RESULT([Found D3D compiler in Windows SDK 8.0.])
5785   ;;
5786   esac
5788   if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then
5789     # We have a name, now track down the path.
5790     if test -n "$WINDOWSSDKDIR"; then
5791       MOZ_D3DCOMPILER_VISTA_DLL_PATH="$WINDOWSSDKDIR/Redist/D3D/$MOZ_D3D_CPU_SUFFIX/$MOZ_D3DCOMPILER_VISTA_DLL"
5792       if test -f "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then
5793         AC_MSG_RESULT([Found MOZ_D3DCOMPILER_VISTA_DLL_PATH: $MOZ_D3DCOMPILER_VISTA_DLL_PATH])
5794         MOZ_HAS_WINSDK_WITH_D3D=1
5795       else
5796         AC_MSG_RESULT([MOZ_D3DCOMPILER_VISTA_DLL_PATH doesn't exist: $MOZ_D3DCOMPILER_VISTA_DLL_PATH])
5797         AC_MSG_ERROR([Windows SDK at "$WINDOWSSDKDIR" appears broken. Try updating to MozillaBuild 1.9 final or higher.])
5798         MOZ_D3DCOMPILER_VISTA_DLL_PATH=
5799       fi
5800     else
5801       AC_MSG_RESULT([Windows SDK not found.])
5802     fi
5803   fi
5805   if test -z "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then
5806     MOZ_D3DCOMPILER_VISTA_DLL=
5807   fi
5809   # On mingw, check if headers are provided by toolchain.
5810   if test -n "$GNU_CC"; then
5811     MOZ_CHECK_HEADER(d3d10.h, MOZ_HAS_WINSDK_WITH_D3D=1)
5812   fi
5814   ######################################
5815   # Find _43 for use by XP.
5817   # Get the SDK path from the registry.
5818   # First try to get the June 2010 SDK
5819   MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1`
5820   if test -z "$MOZ_DIRECTX_SDK_REG_KEY" ; then
5821     # Otherwise just take whatever comes first
5822     MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1`
5823   fi
5824   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'`
5826   if test -n "$MOZ_DIRECTX_SDK_PATH" &&
5827      test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/dxguid.lib ; then
5828     AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH])
5829   else
5830     AC_MSG_RESULT([DirectX SDK not found.])
5831     MOZ_DIRECTX_SDK_PATH=
5832   fi
5834   # Check that our DirectX SDK is acceptable.
5835   if test -n "$MOZ_DIRECTX_SDK_PATH"; then
5836     if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then
5837       AC_MSG_RESULT([Found the February 2010 DirectX SDK, which is unacceptable to ANGLE.])
5838       MOZ_DIRECTX_SDK_PATH=
5839     fi
5840   fi
5842   if test -n "$MOZ_DIRECTX_SDK_PATH"; then
5843     # Find a D3D compiler DLL in the DirectX SDK, if we didn't find one already.
5844     # Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib
5845     MOZ_D3DX9_VERSION=`dumpbin //headers "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/d3dx9.lib | egrep d3dx9_[[0-9]][[0-9]]\.dll | head -n1 | sed 's/.*\([[0-9]][[0-9]]\).*/\\1/g'`
5847     if test -n "$MOZ_D3DX9_VERSION" ; then
5848       MOZ_D3DCOMPILER_XP_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_D3D_CPU_SUFFIX}.cab | head -n1`
5850       if test -n "$MOZ_D3DCOMPILER_XP_CAB"; then
5851         MOZ_D3DCOMPILER_XP_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll
5852       else
5853         AC_MSG_RESULT([Couldn't find a CAB containing the D3D compiler DLL.])
5854         AC_MSG_ERROR([DirectX SDK at "$MOZ_DIRECTX_SDK_PATH" appears broken.])
5855         MOZ_DIRECTX_SDK_PATH=
5856       fi
5857     else
5858       AC_MSG_RESULT([Couldn't determine the D3DX9 version for the DirectX SDK.])
5859       MOZ_DIRECTX_SDK_PATH=
5860     fi
5861   else
5862     AC_MSG_RESULT([Couldn't find an acceptable DirectX SDK for ANGLE, needed for d3dcompiler_43.])
5863     AC_MSG_RESULT([  Either ignore, install DirectX SDK (June 2010 version or newer), or reconfigure with --disable-webgl.])
5864   fi
5866   ######################################
5867   # Check that we found what we needed.
5868   MOZ_FOUND_A_D3D_COMPILER=
5869   MOZ_FOUND_BOTH_D3D_COMPILERS=1
5871   if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then
5872     MOZ_FOUND_A_D3D_COMPILER=1
5873     AC_MSG_RESULT([Found d3dcompiler DLL for Vista+: $MOZ_D3DCOMPILER_VISTA_DLL])
5874   else
5875     MOZ_FOUND_BOTH_D3D_COMPILERS=
5876   fi
5878   if test -n "$MOZ_D3DCOMPILER_XP_DLL"; then
5879     MOZ_FOUND_A_D3D_COMPILER=1
5880     AC_MSG_RESULT([Found d3dcompiler DLL for XP: $MOZ_D3DCOMPILER_XP_DLL])
5881   else
5882     MOZ_FOUND_BOTH_D3D_COMPILERS=
5883   fi
5885   if test -z "$CROSS_COMPILE"; then
5886     if test -z "MOZ_FOUND_A_D3D_COMPILER"; then
5887       AC_MSG_ERROR([Couldn't find an acceptable D3D compiler DLL.])
5888       AC_MSG_ERROR([  Either install Windows SDK 8.0+, install DirectX SDK (June 2010 version or newer), or reconfigure with --disable-webgl.])
5889     fi
5891     if test -n "$MOZ_REQUIRE_ALL_D3DCS" -a -z "$MOZ_FOUND_BOTH_D3D_COMPILERS"; then
5892       AC_MSG_ERROR([Both D3D compilers _43 and _46+ are required by --enable-require-d3d-compilers.])
5893       AC_MSG_ERROR([  Install Windows SDK 8.0+, as well as DirectX SDK (June 2010 version or newer), or reconfigure without this flag.])
5894     fi
5895   fi
5899 dnl ========================================================
5900 dnl Gamepad support
5901 dnl ========================================================
5902 MOZ_GAMEPAD=
5903 MOZ_GAMEPAD_BACKEND=stub
5905 # Gamepad DOM is built on supported platforms by default.
5906 case "$OS_TARGET" in
5907      Darwin|WINNT|Linux)
5908        MOZ_GAMEPAD=1
5909        ;;
5910      Android)
5911        if test "$MOZ_WIDGET_TOOLKIT" != "gonk"; then
5912          MOZ_GAMEPAD=1
5913        fi
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         case "$MOZ_WINSDK_MAXVER" in
5931         # We support building with the Windows 7 SDK otherwise, but
5932         # Gamepad support requires the Windows 8 SDK for some HID headers.
5933         0x0601*)
5934           AC_MSG_ERROR([The Windows 8 SDK or newer is required to build Gamepad support. Please install a newer Windows SDK or reconfigure with --disable-gamepad to disable gamepad support.])
5935           ;;
5936         *)
5937           ;;
5938         esac
5939         MOZ_GAMEPAD_BACKEND=windows
5940         ;;
5941     Linux)
5942         MOZ_CHECK_HEADER([linux/joystick.h])
5943         if test "$ac_cv_header_linux_joystick_h" != "yes"; then
5944           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.])
5945         fi
5946         MOZ_GAMEPAD_BACKEND=linux
5947         ;;
5948     Android)
5949         MOZ_GAMEPAD_BACKEND=android
5950         ;;
5951     *)
5952         ;;
5953    esac
5955   AC_DEFINE(MOZ_GAMEPAD)
5957 AC_SUBST(MOZ_GAMEPAD)
5958 AC_SUBST(MOZ_GAMEPAD_BACKEND)
5960 dnl ========================================================
5961 dnl = Breakpad crash reporting (on by default on supported platforms)
5962 dnl ========================================================
5964 case $target in
5965 i?86-*-mingw*|x86_64-*-mingw*)
5966   MOZ_CRASHREPORTER=1
5967   ;;
5968 i?86-apple-darwin*|x86_64-apple-darwin*)
5969   MOZ_CRASHREPORTER=1
5970   ;;
5971 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
5972   if test "$MOZ_ENABLE_GTK"; then
5973     MOZ_CRASHREPORTER=1
5974   fi
5975   ;;
5976 *-android*|*-linuxandroid*)
5977   MOZ_CRASHREPORTER=1
5978   ;;
5979 *solaris*)
5980   MOZ_CRASHREPORTER=1
5981   ;;
5982 esac
5984 MOZ_ARG_DISABLE_BOOL(crashreporter,
5985 [  --disable-crashreporter Disable breakpad crash reporting],
5986     [MOZ_CRASHREPORTER=],
5987     [MOZ_CRASHREPORTER=F # Force enable breakpad])
5989 if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT"; then
5990   if test "$MOZ_CRASHREPORTER" = F; then
5991     AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
5992   fi
5993   MOZ_CRASHREPORTER=
5996 if test -n "$MOZ_CRASHREPORTER"; then
5997    AC_DEFINE(MOZ_CRASHREPORTER)
5999   if test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS" && \
6000     test -z "$SKIP_LIBRARY_CHECKS"; then
6001     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
6002     AC_SUBST(MOZ_GTHREAD_CFLAGS)
6003     AC_SUBST(MOZ_GTHREAD_LIBS)
6004   fi
6006   if test "$OS_ARCH" = "WINNT"; then
6007     if test -z "$HAVE_64BIT_OS"; then
6008       MOZ_CRASHREPORTER_INJECTOR=1
6009       AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
6010     fi
6011   fi
6014 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
6015 [  --with-crashreporter-enable-percent=NN
6016                           Enable sending crash reports by default on NN% of users. (default=100)],
6017 [ val=`echo $withval | sed 's/[^0-9]//g'`
6018     MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
6020 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
6021    MOZ_CRASHREPORTER_ENABLE_PERCENT=100
6023 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
6025 dnl ========================================================
6026 dnl = libjpeg-turbo configuration
6027 dnl ========================================================
6028 MOZ_LIBJPEG_TURBO=
6029 if test -z "$MOZ_NATIVE_JPEG"; then
6030     MOZ_LIBJPEG_TURBO=1
6033 MOZ_ARG_DISABLE_BOOL(libjpeg_turbo,
6034 [ --disable-libjpeg-turbo  Disable optimized jpeg decoding routines],
6035     MOZ_LIBJPEG_TURBO=,
6036     MOZ_LIBJPEG_TURBO=1)
6038 if test "$MOZ_NATIVE_JPEG" = 1 -a "$MOZ_LIBJPEG_TURBO" = 1; then
6039     AC_MSG_ERROR([cannot use --with-system-jpeg with --enable-libjpeg-turbo.])
6042 dnl Detect if we can use yasm to compile libjpeg-turbo's optimized assembly
6043 dnl files.
6045 if test -n "$MOZ_LIBJPEG_TURBO"; then
6047   dnl Do we support libjpeg-turbo on this platform?
6048   case "$OS_ARCH:$OS_TEST" in
6049   Darwin:i?86)
6050     LIBJPEG_TURBO_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC -DMACHO"
6051     LIBJPEG_TURBO_X86_ASM=1
6052   ;;
6053   Darwin:x86_64)
6054     LIBJPEG_TURBO_ASFLAGS="-f macho64 -rnasm -pnasm -D__x86_64__ -DPIC -DMACHO"
6055     LIBJPEG_TURBO_X64_ASM=1
6056   ;;
6057   WINNT:x86|WINNT:i?86)
6058     LIBJPEG_TURBO_ASFLAGS="-f win32 -rnasm -pnasm -DPIC -DWIN32"
6059     LIBJPEG_TURBO_X86_ASM=1
6060   ;;
6061   WINNT:x86_64)
6062     LIBJPEG_TURBO_ASFLAGS="-f win64 -rnasm -pnasm -D__x86_64__ -DPIC -DWIN64 -DMSVC"
6063     LIBJPEG_TURBO_X64_ASM=1
6064   ;;
6065   *:arm*)
6066     LIBJPEG_TURBO_ASFLAGS="-march=armv7-a -mfpu=neon"
6067     LIBJPEG_TURBO_ARM_ASM=1
6068   ;;
6069   *:x86|*:i?86)
6070     if $CC -E -dM -</dev/null | grep -q __ELF__; then
6071       LIBJPEG_TURBO_ASFLAGS="-f elf32 -rnasm -pnasm -DPIC -DELF"
6072       LIBJPEG_TURBO_X86_ASM=1
6073     fi
6074   ;;
6075   *:x86_64)
6076     if $CC -E -dM -</dev/null | grep -q __ELF__; then
6077       LIBJPEG_TURBO_ASFLAGS="-f elf64 -rnasm -pnasm -D__x86_64__ -DPIC -DELF"
6078       LIBJPEG_TURBO_X64_ASM=1
6079     fi
6080   ;;
6081   esac
6085 dnl If we're on an x86 or x64 system which supports libjpeg-turbo's asm routines
6086 dnl and --disable-libjpeg-turbo wasn't passed, check for Yasm, and error out if
6087 dnl it doesn't exist or we have too old of a version.
6088 if test -n "$LIBJPEG_TURBO_X86_ASM" -o -n "$LIBJPEG_TURBO_X64_ASM" ; then
6089     LIBJPEG_TURBO_AS=$YASM
6091     if test -z "$LIBJPEG_TURBO_AS" ; then
6092         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.])
6093     fi
6095     dnl Check that we have the right yasm version.  We require 1.0.1 or newer
6096     dnl on Linux and 1.1 or newer everywhere else.
6097     if test "$OS_ARCH" = "Linux" ; then
6098         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
6099             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.])
6100         fi
6101     else
6102         if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
6103             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.])
6104         fi
6105     fi
6108 dnl If we're on an ARM system which supports libjpeg-turbo's asm routines and
6109 dnl --disable-libjpeg-turbo wasn't passed, use the C compiler as the assembler.
6110 if test -n "$LIBJPEG_TURBO_ARM_ASM" ; then
6111     echo "Using $AS as the assembler for ARM code."
6112     LIBJPEG_TURBO_AS=$AS
6115 if test -n "$LIBJPEG_TURBO_X86_ASM"; then
6116     AC_DEFINE(LIBJPEG_TURBO_X86_ASM)
6117 elif test -n "$LIBJPEG_TURBO_X64_ASM"; then
6118     AC_DEFINE(LIBJPEG_TURBO_X64_ASM)
6119 elif test -n "$LIBJPEG_TURBO_ARM_ASM"; then
6120     AC_DEFINE(LIBJPEG_TURBO_ARM_ASM)
6121 elif test -n "$MOZ_LIBJPEG_TURBO"; then
6122     dnl Warn if we're not building the optimized routines, even though the user
6123     dnl didn't specify --disable-libjpeg-turbo.
6124     AC_MSG_WARN([No assembler or assembly support for libjpeg-turbo.  Using unoptimized C routines.])
6127 dnl ========================================================
6128 dnl = Enable compilation of specific extension modules
6129 dnl ========================================================
6131 MOZ_ARG_ENABLE_STRING(extensions,
6132 [  --enable-extensions     Enable extensions],
6133 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6134     if test "$option" = "yes" -o "$option" = "all"; then
6135         AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6136     elif test "$option" = "no" -o "$option" = "none"; then
6137         MOZ_EXTENSIONS=""
6138     elif test "$option" = "default"; then
6139         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6140     elif test `echo "$option" | grep -c \^-` != 0; then
6141         option=`echo $option | sed 's/^-//'`
6142         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6143     else
6144         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6145     fi
6146 done],
6147     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6149 if test -z "$MOZ_ENABLE_GNOMEVFS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6150     # Suppress warning on non-X11 platforms
6151     if test -n "$MOZ_X11"; then
6152         AC_MSG_WARN([Removing gnomevfs from MOZ_EXTENSIONS due to no --enable-gnomevfs.])
6153     fi
6154     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6157 dnl Do not build gnomevfs with libxul based apps
6158 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6159     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6162 if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6163     # Suppress warning on non-X11 platforms
6164     if test -n "$MOZ_X11"; then
6165         AC_MSG_WARN([Removing gio from MOZ_EXTENSIONS due to --disable-gio.])
6166     fi
6167     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6170 dnl Do not build gio with libxul based apps
6171 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6172     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6175 if test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6176     MOZ_GIO_COMPONENT=1
6177     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6179 AC_SUBST(MOZ_GIO_COMPONENT)
6181 if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6182     AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6183     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6186 dnl Remove dupes
6187 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6189 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6190 dnl when trying to build a nonexistent extension.
6191 for extension in $MOZ_EXTENSIONS; do
6192     if test ! -d "${srcdir}/extensions/${extension}"; then
6193         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6194     fi
6195 done
6197 if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
6198   AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
6201 dnl ========================================================
6202 dnl Build Freetype in the tree
6203 dnl ========================================================
6204 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6205 [  --enable-tree-freetype  Enable Tree FreeType],
6206     MOZ_TREE_FREETYPE=1,
6207     MOZ_TREE_FREETYPE= )
6208 if test -n "$MOZ_TREE_FREETYPE"; then
6209    if test -n "$_WIN32_MSVC"; then
6210       AC_ERROR("building with in-tree freetype is not supported on MSVC")
6211    fi
6212    AC_DEFINE(MOZ_TREE_FREETYPE)
6213    AC_SUBST(MOZ_TREE_FREETYPE)
6214    MOZ_ENABLE_CAIRO_FT=1
6215    FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6216    FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6217    CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6218    FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6219    CAIRO_FT_OSLIBS=''
6220    AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6221    AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6222    AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6223    AC_SUBST(CAIRO_FT_CFLAGS)
6226 dnl ========================================================
6227 dnl Installer
6228 dnl ========================================================
6229 dnl Abort Windows build if the required major version and
6230 dnl minimum minor version of Unicode NSIS isn't in the path
6231 dnl (unless in case of cross compiling, for which Unicode
6232 dnl is not yet sufficient).
6233 if test "$OS_ARCH" = "WINNT"; then
6234     MIN_NSIS_MAJOR_VER=2
6235     MIN_NSIS_MINOR_VER=46
6236     MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensisu-3.0a2.exe makensisu-2.46.exe makensis)
6237     if test -n "$MAKENSISU" -a "$MAKENSISU" != ":"; then
6238       AC_MSG_RESULT([yes])
6239       MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null`
6240       changequote(,)
6241       MAKENSISU_PARSED_VER=`echo "$MAKENSISU_VER" | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\).*\-Unicode$/\1/g'`
6242       changequote([,])
6243       if test "$MAKENSISU_PARSED_VER" = ""; then
6244           changequote(,)
6245           MAKENSISU_PARSED_VER=`echo "$MAKENSISU_VER" | sed -e 's/^v\([0-9]\+\.[0-9]\+\).*$/\1/g'`
6246           changequote([,])
6247       fi
6248       MAKENSISU_MAJOR_VER=0
6249       MAKENSISU_MINOR_VER=0
6250       if test ! "$MAKENSISU_PARSED_VER" = ""; then
6251           MAKENSISU_MAJOR_VER=`echo $MAKENSISU_PARSED_VER | $AWK -F\. '{ print $1 }'`
6252           MAKENSISU_MINOR_VER=`echo $MAKENSISU_PARSED_VER | $AWK -F\. '{ print $2 }'`
6253       fi
6254       AC_MSG_CHECKING([for Unicode NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER or greater])
6255       if test "$MAKENSISU_MAJOR_VER" -eq $MIN_NSIS_MAJOR_VER -a \
6256               "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER ||
6257          test "$MAKENSISU_MAJOR_VER" -gt $MIN_NSIS_MAJOR_VER; then
6258           AC_MSG_RESULT([yes])
6259       else
6260           AC_MSG_RESULT([no])
6261           if test -z "$CROSS_COMPILE"; then
6262             AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS version $REQ_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER or greater in your path.])
6263           else
6264             MAKENSISU=
6265           fi
6266       fi
6267     elif test -z "$CROSS_COMPILE"; then
6268       AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS version $REQ_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER or greater in your path.])
6269     else
6270       MAKENSISU=
6271     fi
6274 dnl ========================================================
6275 dnl Web App Runtime
6276 dnl ========================================================
6277 MOZ_ARG_DISABLE_BOOL(webapp-runtime,
6278 [  --disable-webapp-runtime  Disable Web App Runtime],
6279     MOZ_WEBAPP_RUNTIME=,
6280     MOZ_WEBAPP_RUNTIME=1)
6281 if test "$MOZ_WIDGET_TOOLKIT" != "windows" -a "$MOZ_WIDGET_TOOLKIT" != "cocoa" -a "$MOZ_WIDGET_TOOLKIT" != "gtk2"; then
6282     MOZ_WEBAPP_RUNTIME=
6284 if test "$OS_ARCH" = "WINNT" -a -z "$MAKENSISU" -a -n "$CROSS_COMPILE"; then
6285     MOZ_WEBAPP_RUNTIME=
6287 AC_SUBST(MOZ_WEBAPP_RUNTIME)
6288 if test "$MOZ_WEBAPP_RUNTIME"; then
6289     AC_DEFINE(MOZ_WEBAPP_RUNTIME)
6292 AC_MSG_CHECKING([for tar archiver])
6293 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6294 if test -z "$TAR"; then
6295     AC_MSG_ERROR([no tar archiver found in \$PATH])
6297 AC_MSG_RESULT([$TAR])
6298 AC_SUBST(TAR)
6300 AC_MSG_CHECKING([for wget])
6301 AC_CHECK_PROGS(WGET, wget, "")
6302 AC_MSG_RESULT([$WGET])
6303 AC_SUBST(WGET)
6305 dnl ========================================================
6306 dnl Signing
6307 dnl ========================================================
6309 if test -n "$MOZ_SIGN_CMD"; then
6310     AC_DEFINE(MOZ_SIGNING)
6313 dnl ========================================================
6314 dnl Maintenance Service
6315 dnl ========================================================
6317 MOZ_ARG_ENABLE_BOOL(maintenance-service,
6318 [  --enable-maintenance-service       Enable building of maintenanceservice],
6319     MOZ_MAINTENANCE_SERVICE=1,
6320     MOZ_MAINTENANCE_SERVICE= )
6322 if test -n "$MOZ_MAINTENANCE_SERVICE"; then
6323   if test "$OS_ARCH" = "WINNT"; then
6324     AC_DEFINE(MOZ_MAINTENANCE_SERVICE)
6325   else
6326     AC_MSG_ERROR([Can only build with --enable-maintenance-service with a Windows target])
6327   fi
6330 dnl ========================================================
6331 dnl Verify MAR signatures
6332 dnl ========================================================
6334 MOZ_ARG_ENABLE_BOOL(verify-mar,
6335 [  --enable-verify-mar     Enable verifying MAR signatures],
6336     MOZ_VERIFY_MAR_SIGNATURE=1,
6337     MOZ_VERIFY_MAR_SIGNATURE= )
6339 if test -n "$MOZ_VERIFY_MAR_SIGNATURE"; then
6340   if test "$OS_ARCH" = "WINNT"; then
6341     AC_DEFINE(MOZ_VERIFY_MAR_SIGNATURE)
6342   else
6343     AC_MSG_ERROR([Can only build with --enable-verify-mar with a Windows target])
6344   fi
6347 dnl ========================================================
6348 dnl Enable building the signmar program.
6349 dnl This option is much different than the --enable-verify-mar option.
6350 dnl --enable-verify-mar is for enabling the verification check on MAR
6351 dnl files in the updater.  The --enable-signmar option is for building
6352 dnl the signmar program.
6353 dnl ========================================================
6355 MOZ_ARG_ENABLE_BOOL(signmar,
6356 [  --enable-signmar     Enable building the signmar program],
6357     MOZ_ENABLE_SIGNMAR=1,
6358     MOZ_ENABLE_SIGNMAR= )
6360 if test -n "$MOZ_ENABLE_SIGNMAR"; then
6361   AC_DEFINE(MOZ_ENABLE_SIGNMAR)
6364 dnl ========================================================
6365 dnl Updater
6366 dnl ========================================================
6368 MOZ_ARG_DISABLE_BOOL(updater,
6369 [  --disable-updater       Disable building of updater],
6370     MOZ_UPDATER=,
6371     MOZ_UPDATER=1 )
6373 if test -n "$MOZ_UPDATER"; then
6374     AC_DEFINE(MOZ_UPDATER)
6377 # tools/update-packaging is not checked out by default.
6378 MOZ_ARG_ENABLE_BOOL(update-packaging,
6379 [  --enable-update-packaging
6380                           Enable tools/update-packaging],
6381     MOZ_UPDATE_PACKAGING=1,
6382     MOZ_UPDATE_PACKAGING= )
6383 AC_SUBST(MOZ_UPDATE_PACKAGING)
6385 dnl ========================================================
6386 dnl build the tests by default
6387 dnl ========================================================
6388 MOZ_ARG_DISABLE_BOOL(tests,
6389 [  --disable-tests         Do not build test libraries & programs],
6390     ENABLE_TESTS=,
6391     ENABLE_TESTS=1 )
6393 if test -n "$ENABLE_TESTS"; then
6394     GTEST_HAS_RTTI=0
6395     AC_DEFINE(ENABLE_TESTS)
6396     AC_DEFINE_UNQUOTED(GTEST_HAS_RTTI, 0)
6397     AC_SUBST(GTEST_HAS_RTTI)
6398     if test -n "$_WIN32_MSVC"; then
6399           AC_DEFINE_UNQUOTED(_VARIADIC_MAX, 10)
6400     fi
6401     if test "${OS_TARGET}" = "Android"; then
6402         AC_DEFINE(GTEST_OS_LINUX_ANDROID)
6403         AC_DEFINE(GTEST_USE_OWN_TR1_TUPLE)
6404         AC_DEFINE_UNQUOTED(GTEST_HAS_CLONE, 0)
6405         AC_SUBST(GTEST_OS_LINUX_ANDROID)
6406         AC_SUBST(GTEST_USE_OWN_TR1_TUPLE)
6407         AC_SUBST(GTEST_HAS_CLONE)
6408     fi
6411 dnl ========================================================
6412 dnl parental controls (for Windows Vista)
6413 dnl ========================================================
6414 MOZ_ARG_DISABLE_BOOL(parental-controls,
6415 [  --disable-parental-controls
6416                           Do not build parental controls],
6417    MOZ_DISABLE_PARENTAL_CONTROLS=1,
6418    MOZ_DISABLE_PARENTAL_CONTROLS=)
6419 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6420     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6423 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6425 dnl ========================================================
6426 dnl = Disable DOMCrypto
6427 dnl ========================================================
6428 if test -n "$MOZ_DISABLE_CRYPTOLEGACY"; then
6429     AC_DEFINE(MOZ_DISABLE_CRYPTOLEGACY)
6431 AC_SUBST(MOZ_DISABLE_CRYPTOLEGACY)
6433 dnl ========================================================
6434 dnl = Disable EV certificate verification
6435 dnl ========================================================
6436 if test -n "$MOZ_NO_EV_CERTS"; then
6437     AC_DEFINE(MOZ_NO_EV_CERTS)
6439 AC_SUBST(MOZ_NO_EV_CERTS)
6441 dnl ========================================================
6442 dnl = Disable libpkix
6443 dnl ========================================================
6444 if test -n "$NSS_NO_LIBPKIX"; then
6445     AC_DEFINE(NSS_NO_LIBPKIX)
6447 AC_SUBST(NSS_NO_LIBPKIX)
6449 dnl ========================================================
6450 dnl = Content process sandboxing
6451 dnl ========================================================
6452 if test -n "$gonkdir"; then
6453     MOZ_CONTENT_SANDBOX=1
6456 MOZ_ARG_ENABLE_BOOL(content-sandbox,
6457 [  --enable-content-sandbox        Enable sandboxing support for content-processes],
6458     MOZ_CONTENT_SANDBOX=1,
6459     MOZ_CONTENT_SANDBOX=)
6461 if test -n "$MOZ_CONTENT_SANDBOX"; then
6462     AC_DEFINE(MOZ_CONTENT_SANDBOX)
6465 AC_SUBST(MOZ_CONTENT_SANDBOX)
6467 MOZ_ARG_ENABLE_BOOL(content-sandbox-reporter,
6468 [ --enable-content-sandbox-reporter        Enable syscall reporter to troubleshoot syscalls denied by the content-processes sandbox],
6469     MOZ_CONTENT_SANDBOX_REPORTER=1,
6470     MOZ_CONTENT_SANDBOX_REPORTER=)
6472 if test -n "$MOZ_CONTENT_SANDBOX_REPORTER"; then
6473     AC_DEFINE(MOZ_CONTENT_SANDBOX_REPORTER)
6476 AC_SUBST(MOZ_CONTENT_SANDBOX_REPORTER)
6478 dnl ========================================================
6479 dnl =
6480 dnl = Module specific options
6481 dnl =
6482 dnl ========================================================
6483 MOZ_ARG_HEADER(Individual module options)
6485 dnl ========================================================
6486 dnl = Disable feed handling components
6487 dnl ========================================================
6488 MOZ_ARG_DISABLE_BOOL(feeds,
6489 [  --disable-feeds         Disable feed handling and processing components],
6490     MOZ_FEEDS=,
6491     MOZ_FEEDS=1 )
6492 if test -n "$MOZ_FEEDS"; then
6493     AC_DEFINE(MOZ_FEEDS)
6494 else
6495     if test "$MOZ_BUILD_APP" = "browser"; then
6496         AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6497     fi
6500 dnl ========================================================
6501 dnl Check for sqlite
6502 dnl ========================================================
6504 MOZ_NATIVE_SQLITE=
6505 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6506 [  --enable-system-sqlite  Use system sqlite (located with pkgconfig)],
6507 MOZ_NATIVE_SQLITE=1,
6508 MOZ_NATIVE_SQLITE= )
6510 if test -z "$MOZ_NATIVE_SQLITE"
6511 then
6512     SQLITE_CFLAGS=
6513     SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6514 else
6515     dnl ============================
6516     dnl === SQLite Version check ===
6517     dnl ============================
6518     dnl Check to see if the system SQLite package is new enough.
6519     PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6521     dnl ==================================
6522     dnl === SQLITE_SECURE_DELETE check ===
6523     dnl ==================================
6524     dnl Check to see if the system SQLite package is compiled with
6525     dnl SQLITE_SECURE_DELETE enabled.
6526     AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6527     _SAVE_CFLAGS="$CFLAGS"
6528     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6529     _SAVE_LIBS="$LIBS"
6530     LIBS="$LIBS $SQLITE_LIBS"
6531     AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6532         AC_TRY_RUN([
6533             #include "sqlite3.h"
6535             int main(int argc, char **argv){
6536               return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6537             }],
6538             ac_cv_sqlite_secure_delete=yes,
6539             ac_cv_sqlite_secure_delete=no,
6540             ac_cv_sqlite_secure_delete=no
6541         )
6542     ])
6543     AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6544     CFLAGS="$_SAVE_CFLAGS"
6545     LIBS="$_SAVE_LIBS"
6546     if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6547         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6548     fi
6550     dnl ===============================
6551     dnl === SQLITE_THREADSAFE check ===
6552     dnl ===============================
6553     dnl Check to see if the system SQLite package is compiled with
6554     dnl SQLITE_THREADSAFE enabled.
6555     AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6556     _SAVE_CFLAGS="$CFLAGS"
6557     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6558     _SAVE_LIBS="$LIBS"
6559     LIBS="$LIBS $SQLITE_LIBS"
6560     AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6561         AC_TRY_RUN([
6562             #include "sqlite3.h"
6564             int main(int argc, char **argv){
6565               return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6566             }],
6567             ac_cv_sqlite_threadsafe=yes,
6568             ac_cv_sqlite_threadsafe=no,
6569             ac_cv_sqlite_threadsafe=no
6570         )
6571     ])
6572     AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6573     CFLAGS="$_SAVE_CFLAGS"
6574     LIBS="$_SAVE_LIBS"
6575     if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6576         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6577     fi
6579     dnl ================================
6580     dnl === SQLITE_ENABLE_FTS3 check ===
6581     dnl ================================
6582     dnl check to see if the system SQLite package is compiled with
6583     dnl SQLITE_ENABLE_FTS3 enabled.
6584     AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6585     _SAVE_CFLAGS="$CFLAGS"
6586     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6587     _SAVE_LIBS="$LIBS"
6588     LIBS="$LIBS $SQLITE_LIBS"
6589     AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6590         AC_TRY_RUN([
6591             #include "sqlite3.h"
6593             int main(int argc, char **argv){
6594               return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6595             }],
6596             ac_cv_sqlite_enable_fts3=yes,
6597             ac_cv_sqlite_enable_fts3=no,
6598             ac_cv_sqlite_enable_fts3=no
6599         )
6600     ])
6601     AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6602     CFLAGS="$_SAVE_CFLAGS"
6603     LIBS="$_SAVE_LIBS"
6604     if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6605         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6606     fi
6608     dnl =========================================
6609     dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
6610     dnl =========================================
6611     dnl check to see if the system SQLite package is compiled with
6612     dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
6613     AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
6614     _SAVE_CFLAGS="$CFLAGS"
6615     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6616     _SAVE_LIBS="$LIBS"
6617     LIBS="$LIBS $SQLITE_LIBS"
6618     AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
6619         AC_TRY_RUN([
6620             #include "sqlite3.h"
6622             int main(int argc, char **argv){
6623               return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
6624             }],
6625             ac_cv_sqlite_enable_unlock_notify=yes,
6626             ac_cv_sqlite_enable_unlock_notify=no,
6627             ac_cv_sqlite_enable_unlock_notify=no
6628         )
6629     ])
6630     AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
6631     CFLAGS="$_SAVE_CFLAGS"
6632     LIBS="$_SAVE_LIBS"
6633     if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
6634         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
6635     fi
6638 if test -n "$MOZ_NATIVE_SQLITE"; then
6639     AC_DEFINE(MOZ_NATIVE_SQLITE)
6641 AC_SUBST(MOZ_NATIVE_SQLITE)
6643 dnl ========================================================
6644 dnl = Enable help viewer (off by default)
6645 dnl ========================================================
6646 if test -n "$MOZ_HELP_VIEWER"; then
6647      dnl Do this if defined in confvars.sh
6648      AC_DEFINE(MOZ_HELP_VIEWER)
6651 dnl ========================================================
6652 dnl = Enable safe browsing (anti-phishing)
6653 dnl ========================================================
6654 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6655 [  --enable-safe-browsing  Enable safe browsing (anti-phishing) implementation],
6656     MOZ_SAFE_BROWSING=1,
6657     MOZ_SAFE_BROWSING= )
6658 if test -n "$MOZ_SAFE_BROWSING"; then
6659     AC_DEFINE(MOZ_SAFE_BROWSING)
6661 AC_SUBST(MOZ_SAFE_BROWSING)
6663 dnl ========================================================
6664 dnl = Enable url-classifier
6665 dnl ========================================================
6666 dnl Implicitly enabled by default if building with safe-browsing
6667 if test -n "$MOZ_SAFE_BROWSING"; then
6668     MOZ_URL_CLASSIFIER=1
6670 MOZ_ARG_ENABLE_BOOL(url-classifier,
6671 [  --enable-url-classifier Enable url classifier module],
6672     MOZ_URL_CLASSIFIER=1,
6673     MOZ_URL_CLASSIFIER= )
6674 if test -n "$MOZ_URL_CLASSIFIER"; then
6675     AC_DEFINE(MOZ_URL_CLASSIFIER)
6677 AC_SUBST(MOZ_URL_CLASSIFIER)
6679 dnl ========================================================
6680 dnl = Disable zipwriter
6681 dnl ========================================================
6682 MOZ_ARG_DISABLE_BOOL(zipwriter,
6683 [  --disable-zipwriter     Disable zipwriter component],
6684     MOZ_ZIPWRITER=,
6685     MOZ_ZIPWRITER=1 )
6686 AC_SUBST(MOZ_ZIPWRITER)
6688 dnl ========================================================
6689 dnl GL provider
6690 dnl ========================================================
6691 MOZ_GL_PROVIDER=
6692 MOZ_ARG_WITH_STRING(gl-provider,
6693 [  --with-gl-provider=ID
6694                           Set GL provider backend type],
6695 [ val=`echo $withval`
6696     MOZ_GL_PROVIDER="$val"])
6698 if test -n "$MOZ_GL_PROVIDER"; then
6699 MOZ_GL_DEFAULT_PROVIDER=$MOZ_GL_PROVIDER
6700 AC_SUBST(MOZ_GL_PROVIDER)
6701 AC_DEFINE_UNQUOTED(MOZ_GL_PROVIDER, GLContextProvider$MOZ_GL_PROVIDER)
6703 AC_SUBST(MOZ_GL_DEFAULT_PROVIDER)
6704 AC_DEFINE_UNQUOTED(GL_PROVIDER_$MOZ_GL_DEFAULT_PROVIDER)
6706 dnl ========================================================
6707 dnl = faststripe theme
6708 dnl ========================================================
6709 MOZ_ARG_ENABLE_BOOL(faststripe,
6710 [  --enable-faststripe     Use faststripe theme],
6711     MOZ_THEME_FASTSTRIPE=1,
6712     MOZ_THEME_FASTSTRIPE= )
6713 AC_SUBST(MOZ_THEME_FASTSTRIPE)
6715 dnl ========================================================
6716 dnl =
6717 dnl = Feature options that require extra sources to be pulled
6718 dnl =
6719 dnl ========================================================
6720 dnl MOZ_ARG_HEADER(Features that require extra sources)
6722 dnl ========================================================
6723 dnl =
6724 dnl = Runtime debugging and Optimization Options
6725 dnl =
6726 dnl ========================================================
6727 MOZ_ARG_HEADER(Runtime debugging and Optimizations)
6729 dnl ========================================================
6730 dnl enable mobile optimizations
6731 dnl ========================================================
6732 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
6733 [  --enable-mobile-optimize
6734                           Enable mobile optimizations],
6735     MOZ_GFX_OPTIMIZE_MOBILE=1)
6737 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
6739 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
6740     AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
6743 dnl ========================================================
6744 dnl = Enable code optimization. ON by default.
6745 dnl ========================================================
6746 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6747     MOZ_OPTIMIZE_FLAGS="-O"
6750 MOZ_ARG_ENABLE_STRING(optimize,
6751 [  --disable-optimize      Disable compiler optimization
6752   --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6753 [ if test "$enableval" != "no"; then
6754     MOZ_OPTIMIZE=1
6755     if test -n "$enableval" -a "$enableval" != "yes"; then
6756         MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6757         MOZ_OPTIMIZE=2
6758     fi
6759 else
6760     MOZ_OPTIMIZE=
6761 fi ], MOZ_OPTIMIZE=1)
6763 MOZ_SET_FRAMEPTR_FLAGS
6765 if test "$COMPILE_ENVIRONMENT"; then
6766 if test -n "$MOZ_OPTIMIZE"; then
6767     AC_MSG_CHECKING([for valid optimization flags])
6768     _SAVE_CFLAGS=$CFLAGS
6769     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6770     AC_TRY_COMPILE([#include <stdio.h>],
6771         [printf("Hello World\n");],
6772         _results=yes,
6773         _results=no)
6774     AC_MSG_RESULT([$_results])
6775     if test "$_results" = "no"; then
6776         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6777     fi
6778     CFLAGS=$_SAVE_CFLAGS
6780 fi # COMPILE_ENVIRONMENT
6782 AC_SUBST(MOZ_OPTIMIZE)
6783 AC_SUBST(MOZ_FRAMEPTR_FLAGS)
6784 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6785 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6786 AC_SUBST(MOZ_ALLOW_HEAP_EXECUTE_FLAGS)
6787 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6788 AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS)
6790 dnl ========================================================
6791 dnl = Enable any treating of compile warnings as errors
6792 dnl ========================================================
6793 MOZ_ARG_ENABLE_BOOL(warnings-as-errors,
6794 [  --enable-warnings-as-errors
6795                           Enable treating of warnings as errors],
6796     MOZ_ENABLE_WARNINGS_AS_ERRORS=1,
6797     MOZ_ENABLE_WARNINGS_AS_ERRORS=)
6798 if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
6799    WARNINGS_AS_ERRORS=''
6800 elif test "$GNU_CC"; then
6801     # Prevent the following GCC warnings from being treated as errors:
6802     # -Wuninitialized - too many false positives
6803     # -Wmaybe-uninitialized - too many false positives
6804     # -Wdeprecated-declarations - we don't want our builds held hostage when a
6805     #   platform-specific API becomes deprecated.
6806     MOZ_C_SUPPORTS_WARNING(-W, no-error=uninitialized, ac_c_has_noerror_uninitialized)
6807     MOZ_CXX_SUPPORTS_WARNING(-W, no-error=uninitialized, ac_cxx_has_noerror_uninitialized)
6808     MOZ_C_SUPPORTS_WARNING(-W, no-error=maybe-uninitialized, ac_c_has_noerror_maybe_uninitialized)
6809     MOZ_CXX_SUPPORTS_WARNING(-W, no-error=maybe-uninitialized, ac_cxx_has_noerror_maybe_uninitialized)
6810     MOZ_C_SUPPORTS_WARNING(-W, no-error=deprecated-declarations, ac_c_has_noerror_deprecated_declarations)
6811     MOZ_CXX_SUPPORTS_WARNING(-W, no-error=deprecated-declarations, ac_cxx_has_noerror_deprecated_declarations)
6814 dnl ========================================================
6815 dnl = Disable runtime logging checks
6816 dnl ========================================================
6817 MOZ_ARG_DISABLE_BOOL(logging,
6818 [  --disable-logging       Disable logging facilities],
6819     NS_DISABLE_LOGGING=1,
6820     NS_DISABLE_LOGGING= )
6821 if test "$NS_DISABLE_LOGGING"; then
6822     AC_DEFINE(NS_DISABLE_LOGGING)
6823 else
6824     AC_DEFINE(MOZ_LOGGING)
6827 dnl ========================================================
6828 dnl = This will enable logging of addref, release, ctor, dtor.
6829 dnl ========================================================
6830 _ENABLE_LOGREFCNT=42
6831 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6832 [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
6833     _ENABLE_LOGREFCNT=1,
6834     _ENABLE_LOGREFCNT= )
6835 if test "$_ENABLE_LOGREFCNT" = "1"; then
6836     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6837 elif test -z "$_ENABLE_LOGREFCNT"; then
6838     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6841 dnl ========================================================
6842 dnl moz_dump_painting
6843 dnl ========================================================
6844 MOZ_ARG_ENABLE_BOOL(dump-painting,
6845 [  --enable-dump-painting          Enable paint debugging.],
6846     MOZ_DUMP_PAINTING=1,
6847     MOZ_DUMP_PAINTING= )
6848 if test -n "$MOZ_DUMP_PAINTING"; then
6849     AC_DEFINE(MOZ_DUMP_PAINTING)
6850     AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
6852 if test -n "$MOZ_DEBUG"; then
6853     AC_DEFINE(MOZ_DUMP_PAINTING)
6856 dnl ========================================================
6857 dnl = Enable trace malloc
6858 dnl ========================================================
6859 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6860 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6861 [  --enable-trace-malloc   Enable malloc tracing; also disables DMD and jemalloc],
6862     NS_TRACE_MALLOC=1,
6863     NS_TRACE_MALLOC= )
6864 if test "$NS_TRACE_MALLOC"; then
6865   # Please, Mr. Linker Man, don't take away our symbol names
6866   MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6867   AC_DEFINE(NS_TRACE_MALLOC)
6869 AC_SUBST(NS_TRACE_MALLOC)
6871 dnl ========================================================
6872 dnl = Enable DMD
6873 dnl ========================================================
6875 MOZ_ARG_ENABLE_BOOL(dmd,
6876 [  --enable-dmd            Enable DMD; also enables jemalloc and replace-malloc],
6877     MOZ_DMD=1,
6878     MOZ_DMD= )
6880 dnl The two options are conflicting. Fails the configure to alert the user.
6881 if test "$NS_TRACE_MALLOC" -a "$MOZ_DMD"; then
6882     AC_MSG_ERROR([--enable-trace-malloc and --enable-dmd are conflicting options])
6885 if test "$MOZ_DMD"; then
6886     AC_DEFINE(MOZ_DMD)
6888     if test "${CPU_ARCH}" = "arm"; then
6889         CFLAGS="$CFLAGS -funwind-tables"
6890         CXXFLAGS="$CXXFLAGS -funwind-tables"
6891     fi
6893     MOZ_MEMORY=1                        # DMD enables jemalloc
6894     MOZ_REPLACE_MALLOC=1                # DMD enables replace-malloc
6896 AC_SUBST(MOZ_DMD)
6898 dnl ========================================================
6899 dnl = Enable jemalloc
6900 dnl ========================================================
6901 MOZ_ARG_ENABLE_BOOL(jemalloc,
6902 [  --enable-jemalloc       Replace memory allocator with jemalloc],
6903     MOZ_MEMORY=1,
6904     MOZ_MEMORY=)
6906 if test "$NS_TRACE_MALLOC"; then
6907     MOZ_MEMORY=
6910 if test "${OS_TARGET}" = "Android"; then
6911   dnl On Android, we use WRAP_LDFLAGS to link everything to mozglue
6912   :
6913 elif test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin"; then
6914   dnl On Windows and OSX, we want to link all our binaries against mozglue
6915   if test -z "$GNU_CC"; then
6916     MOZ_GLUE_LDFLAGS='$(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
6917   else
6918     MOZ_GLUE_LDFLAGS='-L$(LIBXUL_DIST)/lib $(call EXPAND_LIBNAME,mozglue)'
6919   fi
6920 else
6921   dnl On other Unix systems, we only want to link executables against mozglue
6922   MOZ_GLUE_PROGRAM_LDFLAGS='$(MKSHLIB_FORCE_ALL) $(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
6923   dnl On other Unix systems, where mozglue is a static library, jemalloc is
6924   dnl separated for the SDK, so we need to add it here.
6925   if test "$MOZ_MEMORY" = 1 -o \( "$LIBXUL_SDK" -a -f "$LIBXUL_SDK/lib/${LIB_PREFIX}memory.${LIB_SUFFIX}" \); then
6926     MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(call EXPAND_LIBNAME_PATH,memory,$(LIBXUL_DIST)/lib)'
6927   fi
6928   MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(MKSHLIB_UNFORCE_ALL)'
6929   if test -n "$GNU_CC"; then
6930     dnl And we need mozglue symbols to be exported.
6931     MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS -rdynamic"
6932   fi
6933   if test "$MOZ_LINKER" = 1; then
6934     MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS $MOZ_ZLIB_LIBS"
6935   fi
6938 dnl ========================================================
6939 dnl = Enable dynamic replacement of malloc implementation
6940 dnl ========================================================
6941 MOZ_ARG_ENABLE_BOOL(replace-malloc,
6942 [  --enable-replace-malloc   Enable ability to dynamically replace the malloc implementation],
6943     MOZ_REPLACE_MALLOC=1,
6944     MOZ_REPLACE_MALLOC= )
6946 dnl The two options are conflicting. Fails the configure to alert the user.
6947 if test "$NS_TRACE_MALLOC" -a "$MOZ_REPLACE_MALLOC"; then
6948     AC_MSG_ERROR([--enable-trace-malloc and --enable-replace-malloc are conflicting options])
6951 if test -n "$MOZ_REPLACE_MALLOC" -a -z "$MOZ_MEMORY"; then
6952     dnl We don't want to enable jemalloc unconditionally because it may be a
6953     dnl deliberate choice not to enable it (bug 702250, for instance)
6954     AC_MSG_ERROR([--enable-replace-malloc requires --enable-jemalloc])
6955 elif test -n "$MOZ_REPLACE_MALLOC"; then
6956     MOZ_NATIVE_JEMALLOC=
6958     dnl Replace-malloc Mac linkage quirks
6959     if test -n "$MACOSX_DEPLOYMENT_TARGET"; then
6960         AC_CACHE_CHECK([how to do weak dynamic linking],
6961             ac_cv_weak_dynamic_linking,
6962             [echo 'extern void foo() __attribute__((weak_import));int bar() { if (foo) foo(); return 0; }' > conftest.c
6963              if AC_TRY_COMMAND([${CC-cc} -o conftest${DLL_SUFFIX} $CFLAGS -dynamiclib $LDFLAGS -Wl,-U,_foo conftest.c $LIBS 1>&5]) &&
6964                 test -s conftest${DLL_SUFFIX}; then
6965                  dnl There are several ways the linker can put link edit rules in a binary:
6966                  dnl - classic info only (for OSX < 10.6)
6967                  dnl - dyld info only
6968                  dnl - both
6969                  if otool -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO_ONLY" > /dev/null; then
6970                      _CLASSIC_INFO=
6971                  else
6972                      _CLASSIC_INFO=1
6973                  fi
6974                  if otool -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO" > /dev/null; then
6975                      _DYLD_INFO=1
6976                  else
6977                      _DYLD_INFO=
6978                  fi
6979                  dnl With classic info, we need to build with -flat_namespace.
6980                  dnl With dyld info, Xcode 4.5 does the right thing without additional flags,
6981                  dnl but Xcode < 4.5 requires a dummy library and -flat_namespace because it
6982                  dnl forgets to set the weak flag in the dyld info.
6983                  dnl See http://glandium.org/blog/?p=2764 for more details.
6984                  dnl
6985                  dnl Values for ac_cv_weak_dynamic_linking, and subsequently
6986                  dnl MOZ_REPLACE_MALLOC_LINKAGE are thus:
6987                  dnl - "flat namespace" when -flat_namespace alone is needed
6988                  dnl - "dummy library" when a dummy library and -flat_namespace are needed
6989                  dnl - "compiler support" when nothing is needed
6990                  if test -n "$_DYLD_INFO" && dyldinfo -bind conftest${DLL_SUFFIX} 2> /dev/null | grep "_foo (weak import)" > /dev/null; then
6991                      if test -n "$_CLASSIC_INFO"; then
6992                          ac_cv_weak_dynamic_linking="flat namespace"
6993                      else
6994                          ac_cv_weak_dynamic_linking="compiler support"
6995                      fi
6996                  else
6997                      if test -n "$_DYLD_INFO"; then
6998                          ac_cv_weak_dynamic_linking="dummy library"
6999                      else
7000                          ac_cv_weak_dynamic_linking="flat namespace"
7001                      fi
7002                  fi
7003              else
7004                  AC_ERROR([couldn't compile a simple C file])
7005              fi
7006              rm -rf conftest*])
7007         MOZ_REPLACE_MALLOC_LINKAGE="$ac_cv_weak_dynamic_linking"
7008     fi
7010 AC_SUBST(MOZ_REPLACE_MALLOC)
7011 AC_SUBST(MOZ_REPLACE_MALLOC_LINKAGE)
7013 dnl ========================================================
7014 dnl = Jemalloc build setup
7015 dnl ========================================================
7016 if test -z "$MOZ_MEMORY"; then
7017   if test -n "$MOZ_JEMALLOC3" -a -z "$MOZ_REPLACE_MALLOC"; then
7018     MOZ_NATIVE_JEMALLOC=1
7019     AC_CHECK_FUNCS(mallctl nallocm,,
7020       [MOZ_NATIVE_JEMALLOC=
7021        break])
7022     if test -n "$MOZ_NATIVE_JEMALLOC"; then
7023       MOZ_MEMORY=1
7024       AC_DEFINE(MOZ_MEMORY)
7025       AC_DEFINE(MOZ_JEMALLOC3)
7026       AC_DEFINE(MOZ_NATIVE_JEMALLOC)
7027     fi
7028   fi
7029   case "${target}" in
7030     *-mingw*)
7031       if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
7032         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.])
7033       fi
7034       ;;
7035   esac
7036 else
7037   AC_DEFINE(MOZ_MEMORY)
7038   if test -n "$MOZ_JEMALLOC3"; then
7039     AC_DEFINE(MOZ_JEMALLOC3)
7040   fi
7041   if test "x$MOZ_DEBUG" = "x1"; then
7042     AC_DEFINE(MOZ_MEMORY_DEBUG)
7043   fi
7044   dnl The generic feature tests that determine how to compute ncpus are long and
7045   dnl complicated.  Therefore, simply define special cpp variables for the
7046   dnl platforms we have special knowledge of.
7047   case "${target}" in
7048   *-darwin*)
7049     AC_DEFINE(MOZ_MEMORY_DARWIN)
7050     ;;
7051   *-*freebsd*)
7052     AC_DEFINE(MOZ_MEMORY_BSD)
7053     ;;
7054   *-android*|*-linuxandroid*)
7055     AC_DEFINE(MOZ_MEMORY_LINUX)
7056     AC_DEFINE(MOZ_MEMORY_ANDROID)
7057     if test -z "$gonkdir"; then
7058       _WRAP_MALLOC=1
7059     else
7060       AC_DEFINE(MOZ_MEMORY_GONK)
7061     fi
7062     MOZ_GLUE_LDFLAGS=
7063     ;;
7064   *-*linux*)
7065     AC_DEFINE(MOZ_MEMORY_LINUX)
7066     ;;
7067   *-netbsd*)
7068     AC_DEFINE(MOZ_MEMORY_BSD)
7069     ;;
7070   *-solaris*)
7071     AC_DEFINE(MOZ_MEMORY_SOLARIS)
7072     ;;
7073   *-mingw*)
7074     AC_DEFINE(MOZ_MEMORY_WINDOWS)
7075     if test -z "$MOZ_DEBUG"; then
7076       WIN32_CRT_LIBS="msvcrt.lib msvcprt.lib"
7077     else
7078       WIN32_CRT_LIBS="msvcrtd.lib msvcprtd.lib"
7079     fi
7080     dnl Look for a broken crtdll.obj
7081     WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj`
7082     lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH
7083     if grep -q '__imp__\{0,1\}free' crtdll.obj; then
7084       MOZ_GLUE_LDFLAGS='-LIBPATH:$(DIST)/lib -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt'
7085       dnl Also pass this to NSPR/NSS
7086       DLLFLAGS="$DLLFLAGS $MOZ_GLUE_LDFLAGS"
7087     else
7088       DLLFLAGS="$DLLFLAGS -LIBPATH:\$(DIST)/lib -DEFAULTLIB:mozglue"
7089     fi
7090     rm crtdll.obj
7092     export DLLFLAGS
7093     ;;
7094   *)
7095     AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7096     ;;
7097   esac
7098 fi # MOZ_MEMORY
7099 AC_SUBST(MOZ_MEMORY)
7100 AC_SUBST(MOZ_JEMALLOC3)
7101 AC_SUBST(MOZ_NATIVE_JEMALLOC)
7102 AC_SUBST(MOZ_GLUE_LDFLAGS)
7103 AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS)
7104 AC_SUBST(WIN32_CRT_LIBS)
7105 dnl Need to set this for make because NSS doesn't have configure
7106 AC_SUBST(DLLFLAGS)
7108 dnl We need to wrap dlopen and related functions on Android because we use
7109 dnl our own linker.
7110 if test "$OS_TARGET" = Android; then
7111     WRAP_LDFLAGS="${WRAP_LDFLAGS} -L$_objdir/dist/lib -lmozglue"
7112     WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=PR_GetEnv,--wrap=PR_SetEnv"
7113     if test "$MOZ_WIDGET_TOOLKIT" = android; then
7114         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=getaddrinfo,--wrap=freeaddrinfo,--wrap=gai_strerror"
7115     fi
7116     if test -z "$gonkdir"; then
7117         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=fork,--wrap=pthread_atfork,--wrap=raise"
7118         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=memccpy,--wrap=memchr,--wrap=memrchr,--wrap=memcmp,--wrap=memcpy,--wrap=memmove,--wrap=memset,--wrap=memmem,--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"
7119     fi
7120     if test "$MOZ_WIDGET_TOOLKIT" = gonk -a -n "$MOZ_NUWA_PROCESS"; then
7121         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=pthread_create,--wrap=epoll_wait,--wrap=poll,--wrap=pthread_cond_timedwait,--wrap=__pthread_cond_timedwait,--wrap=pthread_cond_wait,--wrap=epoll_create,--wrap=epoll_ctl,--wrap=close,--wrap=pthread_key_create,--wrap=pthread_key_delete,--wrap=socketpair,--wrap=pthread_self,--wrap=pthread_mutex_lock,--wrap=pthread_join,--wrap=pipe,--wrap=pipe2,--wrap=tgkill"
7122     fi
7125 dnl ========================================================
7126 dnl = Use malloc wrapper lib
7127 dnl ========================================================
7128 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
7129 [  --enable-wrap-malloc    Wrap malloc calls (gnu linker only)],
7130     _WRAP_MALLOC=1,
7131     _WRAP_MALLOC= )
7133 if test -n "$_WRAP_MALLOC"; then
7134     if test -n "$GNU_CC"; then
7135         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=malloc,--wrap=calloc,--wrap=valloc,--wrap=free,--wrap=realloc,--wrap=memalign"
7136         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=__builtin_new,--wrap=__builtin_vec_new,--wrap=__builtin_delete,--wrap=__builtin_vec_delete"
7137         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=strdup,--wrap=strndup"
7138         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=vasprintf,--wrap=asprintf"
7139         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=posix_memalign,--wrap=malloc_usable_size"
7140         dnl Wrap operator new and operator delete on Android.
7141         if test "$OS_TARGET" = "Android"; then
7142             WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_Znwj,--wrap=_Znaj,--wrap=_ZdlPv,--wrap=_ZdaPv"
7143             dnl Wrap the nothrow variants too.
7144             WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_ZnwjRKSt9nothrow_t,--wrap=_ZnajRKSt9nothrow_t,--wrap=_ZdlPvRKSt9nothrow_t,--wrap=_ZdaPvRKSt9nothrow_t"
7145         fi
7146     else
7147         AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains])
7148     fi
7151 dnl ========================================================
7152 dnl = Location of malloc wrapper lib
7153 dnl ========================================================
7154 MOZ_ARG_WITH_STRING(wrap-malloc,
7155 [  --with-wrap-malloc=DIR  Location of malloc wrapper library],
7156     WRAP_LDFLAGS="${WRAP_LDFLAGS} $withval")
7158 dnl ========================================================
7159 dnl = Use JS Call tracing
7160 dnl ========================================================
7161 MOZ_ARG_ENABLE_BOOL(trace-jscalls,
7162 [  --enable-trace-jscalls  Enable JS call enter/exit callback (default=no)],
7163     MOZ_TRACE_JSCALLS=1,
7164     MOZ_TRACE_JSCALLS= )
7165 if test -n "$MOZ_TRACE_JSCALLS"; then
7166     AC_DEFINE(MOZ_TRACE_JSCALLS)
7169 dnl ========================================================
7170 dnl JS opt-mode assertions and minidump instrumentation
7171 dnl ========================================================
7172 MOZ_ARG_ENABLE_BOOL(js-diagnostics,
7173 [  --enable-js-diagnostics
7174                           Enable JS diagnostic assertions and breakpad data],
7175     JS_CRASH_DIAGNOSTICS=1,
7176     JS_CRASH_DIAGNOSTICS= )
7177 if test -n "$JS_CRASH_DIAGNOSTICS"; then
7178     AC_DEFINE(JS_CRASH_DIAGNOSTICS)
7181 dnl ========================================================
7182 dnl = Use incremental GC
7183 dnl ========================================================
7184 JSGC_INCREMENTAL=1
7185 MOZ_ARG_DISABLE_BOOL(gcincremental,
7186 [  --disable-gcincremental Disable incremental GC],
7187     JSGC_INCREMENTAL= )
7188 if test -n "$JSGC_INCREMENTAL"; then
7189     AC_DEFINE(JSGC_INCREMENTAL)
7192 dnl ========================================================
7193 dnl = Use exact stack rooting for GC
7194 dnl ========================================================
7195 MOZ_ARG_DISABLE_BOOL(exact-rooting,
7196 [  --disable-exact-rooting  Enable use of conservative stack scanning for GC],
7197     JSGC_USE_EXACT_ROOTING= ,
7198     JSGC_USE_EXACT_ROOTING=1 )
7199 if test -n "$JSGC_USE_EXACT_ROOTING"; then
7200     AC_DEFINE(JSGC_USE_EXACT_ROOTING)
7203 dnl ========================================================
7204 dnl = Use generational GC
7205 dnl ========================================================
7206 MOZ_ARG_DISABLE_BOOL(gcgenerational,
7207 [  --disable-gcgenerational Disable generational GC],
7208     JSGC_GENERATIONAL= ,
7209     JSGC_GENERATIONAL=1 )
7210 if test -n "$JSGC_GENERATIONAL"; then
7211     AC_DEFINE(JSGC_GENERATIONAL)
7214 dnl ========================================================
7215 dnl Zealous JavaScript GC
7216 dnl ========================================================
7217 MOZ_ARG_ENABLE_BOOL(gczeal,
7218 [  --enable-gczeal         Enable zealous JavaScript GCing],
7219     JS_GC_ZEAL=1,
7220     JS_GC_ZEAL= )
7221 if test -n "$JS_GC_ZEAL" -o -n "$MOZ_DEBUG"; then
7222     AC_DEFINE(JS_GC_ZEAL)
7225 dnl ========================================================
7226 dnl = Perform moving GC stack rooting analysis
7227 dnl ========================================================
7228 MOZ_ARG_ENABLE_BOOL(root-analysis,
7229 [  --enable-root-analysis  Enable moving GC stack root analysis],
7230     JSGC_ROOT_ANALYSIS=1,
7231     JSGC_ROOT_ANALYSIS= )
7232 if test -n "$JSGC_ROOT_ANALYSIS"; then
7233     AC_DEFINE(JSGC_ROOT_ANALYSIS)
7236 MOZ_CHECK_CCACHE
7238 dnl ========================================================
7239 dnl = Enable static checking using gcc-dehydra
7240 dnl ========================================================
7242 MOZ_ARG_WITH_STRING(static-checking,
7243 [  --with-static-checking=path/to/gcc_dehydra.so
7244                           Enable static checking of code using GCC-dehydra],
7245     DEHYDRA_PATH=$withval,
7246     DEHYDRA_PATH= )
7248 if test -n "$DEHYDRA_PATH"; then
7249     if test ! -f "$DEHYDRA_PATH"; then
7250         AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7251     fi
7252     AC_DEFINE(NS_STATIC_CHECKING)
7254 AC_SUBST(DEHYDRA_PATH)
7256 dnl ========================================================
7257 dnl = Enable using the clang plugin to build
7258 dnl ========================================================
7260 MOZ_ARG_ENABLE_BOOL(clang-plugin,
7261 [  --enable-clang-plugin   Enable building with the mozilla clang plugin ],
7262    ENABLE_CLANG_PLUGIN=1,
7263    ENABLE_CLANG_PLUGIN= )
7264 if test -n "$ENABLE_CLANG_PLUGIN"; then
7265     if test -z "$CLANG_CC"; then
7266         AC_MSG_ERROR([Can't use clang plugin without clang.])
7267     fi
7268     AC_DEFINE(MOZ_CLANG_PLUGIN)
7271 AC_SUBST(ENABLE_CLANG_PLUGIN)
7273 dnl ========================================================
7274 dnl = Enable stripping of libs & executables
7275 dnl ========================================================
7276 MOZ_ARG_ENABLE_BOOL(strip,
7277 [  --enable-strip          Enable stripping of libs & executables ],
7278     ENABLE_STRIP=1,
7279     ENABLE_STRIP= )
7281 dnl ========================================================
7282 dnl = Enable stripping of libs & executables when packaging
7283 dnl ========================================================
7284 MOZ_ARG_ENABLE_BOOL(install-strip,
7285 [  --enable-install-strip  Enable stripping of libs & executables when packaging ],
7286     PKG_SKIP_STRIP= ,
7287     PKG_SKIP_STRIP=1)
7289 dnl ========================================================
7290 dnl = --disable-elf-hack
7291 dnl ========================================================
7293 USE_ELF_HACK=1
7294 MOZ_ARG_DISABLE_BOOL(elf-hack,
7295 [  --disable-elf-hack      Disable elf hacks],
7296     [USE_ELF_HACK=],
7297     [USE_ELF_HACK=F # Force enable elf-hack])
7299 # Disable elf hack for profiling because the built in profiler
7300 # doesn't read the segments properly with elf hack. This is
7301 # temporary and should be fixed soon in the profiler.
7302 if test "$MOZ_PROFILING" = 1; then
7303   if test "$USE_ELF_HACK" = F; then
7304     AC_ERROR([--enable-elf-hack is not compatible with --enable-profiling])
7305   fi
7306   USE_ELF_HACK=
7309 # Only enable elfhack where supported
7310 if test "$USE_ELF_HACK" = 1; then
7311     case "${HOST_OS_ARCH},${OS_ARCH}" in
7312     Linux,Linux)
7313         case "${CPU_ARCH}" in
7314         arm | x86 | x86_64)
7315             USE_ELF_HACK=1
7316             ;;
7317         *)
7318             USE_ELF_HACK=
7319             ;;
7320         esac
7321         ;;
7322     *)
7323         USE_ELF_HACK=
7324         ;;
7325     esac
7328 if test -n "$COMPILE_ENVIRONMENT" -a -n "$USE_ELF_HACK"; then
7329     dnl PT_GNU_RELRO segment makes the dynamic linker set a read-only flag on
7330     dnl memory addresses it maps to. The result is that by the time elfhack
7331     dnl kicks in, it is not possible to apply relocations because of that,
7332     dnl thus elfhack effectively skips relocations inside the PT_GNU_RELRO
7333     dnl segment. It makes elfhack mostly useless, so considering the problems
7334     dnl we have we PT_GNU_RELRO (e.g. bug 664366), and until elfhack can deal
7335     dnl with PT_GNU_RELRO segments, it's just simpler to disable elfhack when
7336     dnl the linker creates PT_GNU_RELRO segments. However, when we do want
7337     dnl elfhack enabled, disable PT_GNU_RELRO instead.
7338     AC_CACHE_CHECK([whether linker creates PT_GNU_RELRO segments],
7339         LINK_WITH_PT_GNU_RELRO,
7340         [echo "int main() {return 0;}" > conftest.${ac_ext}
7341          if AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.${ac_ext} $LIBS 1>&2) &&
7342             test -s conftest${ac_exeext}; then
7343             if ${TOOLCHAIN_PREFIX}readelf -l conftest${ac_exeext} | grep GNU_RELRO > /dev/null; then
7344                 LINK_WITH_PT_GNU_RELRO=yes
7345             else
7346                 LINK_WITH_PT_GNU_RELRO=no
7347             fi
7348          else
7349              dnl We really don't expect to get here, but just in case
7350              AC_ERROR([couldn't compile a simple C file])
7351          fi
7352          rm -rf conftest*])
7353     if test "$LINK_WITH_PT_GNU_RELRO" = yes; then
7354         if test "$USE_ELF_HACK" = F; then
7355             AC_MSG_CHECKING([for -z norelro option to ld])
7356             _SAVE_LDFLAGS=$LDFLAGS
7357             LDFLAGS="$LDFLAGS -Wl,-z,norelro"
7358             AC_TRY_LINK(,,AC_MSG_RESULT([yes])
7359                         [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,norelro"],
7360                         AC_ERROR([--enable-elf-hack is not compatible with a linker creating a PT_GNU_RELRO segment and that doesn't support the "-z norelro" option.]))
7361             USE_ELF_HACK=1
7362         else
7363             AC_MSG_WARN([Disabling elfhack])
7364             USE_ELF_HACK=
7365         fi
7366     fi
7369 dnl ========================================================
7370 dnl = libstdc++ compatibility hacks
7371 dnl ========================================================
7373 STDCXX_COMPAT=
7374 MOZ_ARG_ENABLE_BOOL(stdcxx-compat,
7375 [  --enable-stdcxx-compat  Enable compatibility with older libstdc++],
7376     STDCXX_COMPAT=1)
7378 if test -n "$STDCXX_COMPAT"; then
7379    eval $(CXX="$CXX" HOST_CXX="$HOST_CXX" $PYTHON -m mozbuild.configure.libstdcxx)
7380    AC_SUBST(MOZ_LIBSTDCXX_TARGET_VERSION)
7381    AC_SUBST(MOZ_LIBSTDCXX_HOST_VERSION)
7384 dnl ========================================================
7385 dnl =
7386 dnl = Profiling and Instrumenting
7387 dnl =
7388 dnl ========================================================
7389 MOZ_ARG_HEADER(Profiling and Instrumenting)
7391 dnl ========================================================
7392 dnl = Enable runtime visual profiling logger
7393 dnl ========================================================
7394 MOZ_ARG_ENABLE_BOOL(visual-event-tracer,
7395 [  --enable-visual-event-tracer   Enable visual event tracer instrumentation],
7396     MOZ_VISUAL_EVENT_TRACER=1,
7397     MOZ_VISUAL_EVENT_TRACER=)
7398 if test -n "$MOZ_VISUAL_EVENT_TRACER"; then
7399     AC_DEFINE(MOZ_VISUAL_EVENT_TRACER)
7402 dnl ========================================================
7403 dnl = Enable TaskTracer
7404 dnl ========================================================
7405 MOZ_ARG_ENABLE_BOOL(tasktracer,
7406 [  --enable-tasktracer       Set compile flags necessary for using TaskTracer],
7407     MOZ_TASK_TRACER=1,
7408     MOZ_TASK_TRACER= )
7409 if test "$MOZ_WIDGET_TOOLKIT" = "gonk" -a -n "$MOZ_TASK_TRACER"; then
7410     AC_DEFINE(MOZ_TASK_TRACER)
7411     AC_SUBST(MOZ_TASK_TRACER)
7414 dnl ========================================================
7415 dnl Turn on reflow counting
7416 dnl ========================================================
7417 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7418 [  --enable-reflow-perf    Enable reflow performance tracing],
7419     MOZ_REFLOW_PERF=1,
7420     MOZ_REFLOW_PERF= )
7421 if test -n "$MOZ_REFLOW_PERF"; then
7422     AC_DEFINE(MOZ_REFLOW_PERF)
7425 dnl ========================================================
7426 dnl = Offer a way to disable the startup cache
7427 dnl ========================================================
7428 MOZ_DISABLE_STARTUPCACHE=
7430 MOZ_ARG_DISABLE_BOOL(startupcache,
7431 [  --disable-startupcache          Disable startup cache ],
7432     MOZ_DISABLE_STARTUPCACHE=1,
7433     MOZ_DISABLE_STARTUPCACHE=)
7435 dnl bug 988880: disable startup cache on b2g
7436 if test -n "$MOZ_B2G"; then
7437   MOZ_DISABLE_STARTUPCACHE=1
7440 AC_SUBST(MOZ_DISABLE_STARTUPCACHE)
7442 dnl ========================================================
7443 dnl = Enable Radio Interface for B2G (Gonk usually)
7444 dnl ========================================================
7445 MOZ_ARG_ENABLE_BOOL(b2g-ril,
7446 [  --enable-b2g-ril      Set compile flags necessary for testing B2G Radio Interface Layer via network sockets ],
7447     MOZ_B2G_RIL=1,
7448     MOZ_B2G_RIL=,
7449     MOZ_B2G_RIL=$_PLATFORM_HAVE_RIL )
7450 if test -n "$MOZ_B2G_RIL"; then
7451     if test -n "$_PLATFORM_HAVE_RIL"; then
7452         AC_DEFINE(MOZ_B2G_RIL)
7453     else
7454         AC_MSG_ERROR([b2g-ril cannot be enabled because target platform doesn't support it.])
7455     fi
7457 AC_SUBST(MOZ_B2G_RIL)
7459 dnl ========================================================
7460 dnl = Enable Radio FM for B2G (Gonk usually)
7461 dnl ========================================================
7462 if test -n "$MOZ_B2G_FM"; then
7463     AC_DEFINE(MOZ_B2G_FM)
7465 AC_SUBST(MOZ_B2G_FM)
7467 dnl ========================================================
7468 dnl = Enable Bluetooth Interface for B2G (Gonk usually)
7469 dnl ========================================================
7470 MOZ_ARG_ENABLE_BOOL(b2g-bt,
7471 [  --enable-b2g-bt      Set compile flags necessary for compiling Bluetooth API for B2G ],
7472     MOZ_B2G_BT=1,
7473     MOZ_B2G_BT= )
7474 if test -n "$MOZ_B2G_BT"; then
7475     AC_DEFINE(MOZ_B2G_BT)
7477 AC_SUBST(MOZ_B2G_BT)
7478 AC_SUBST(MOZ_B2G_BT_BLUEZ)
7479 AC_SUBST(MOZ_B2G_BT_BLUEDROID)
7481 dnl ========================================================
7482 dnl = Enable NFC Interface for B2G (Gonk usually)
7483 dnl ========================================================
7484 MOZ_ARG_ENABLE_BOOL(nfc,
7485 [  --enable-nfc         Set compile flags necessary for compiling NFC API ],
7486     MOZ_NFC=1,
7487     MOZ_NFC= )
7488 if test -n "$MOZ_NFC"; then
7489    AC_DEFINE(MOZ_NFC)
7491 AC_SUBST(MOZ_NFC)
7493 dnl ========================================================
7494 dnl = Enable Pico Speech Synthesis (Gonk usually)
7495 dnl ========================================================
7496 MOZ_ARG_ENABLE_BOOL(synth-pico,
7497 [  --enable-synth-pico  Set compile flags necessary for compiling Pico Web Speech API ],
7498     MOZ_SYNTH_PICO=1,
7499     MOZ_SYNTH_PICO= )
7500 if test -n "$MOZ_SYNTH_PICO"; then
7501     AC_DEFINE(MOZ_SYNTH_PICO)
7503 AC_SUBST(MOZ_SYNTH_PICO)
7505 dnl ========================================================
7506 dnl = Enable Support for Time Manager API
7507 dnl ========================================================
7508 if test -n "$MOZ_TIME_MANAGER"; then
7509     AC_DEFINE(MOZ_TIME_MANAGER)
7511 AC_SUBST(MOZ_TIME_MANAGER)
7513 dnl ========================================================
7514 dnl = Enable Camera Interface for B2G (Gonk usually)
7515 dnl ========================================================
7516 MOZ_ARG_ENABLE_BOOL(b2g-camera,
7517 [  --enable-b2g-camera      Set compile flags necessary for compiling camera API for B2G ],
7518     MOZ_B2G_CAMERA=1,
7519     MOZ_B2G_CAMERA= )
7520 if test -n "$MOZ_B2G_CAMERA"; then
7521    AC_DEFINE(MOZ_B2G_CAMERA)
7523 AC_SUBST(MOZ_B2G_CAMERA)
7525 dnl ========================================================
7526 dnl = Enable Support for Payment API
7527 dnl ========================================================
7528 if test -n "$MOZ_PAY"; then
7529     AC_DEFINE(MOZ_PAY)
7531 AC_SUBST(MOZ_PAY)
7533 dnl ========================================================
7534 dnl = Enable Browser Support for Activities
7535 dnl ========================================================
7536 if test -n "$MOZ_ACTIVITIES"; then
7537     AC_DEFINE(MOZ_ACTIVITIES)
7539 AC_SUBST(MOZ_ACTIVITIES)
7541 dnl ========================================================
7542 dnl = Enable Support for AudioChannelManager API
7543 dnl ========================================================
7544 if test -n "$MOZ_AUDIO_CHANNEL_MANAGER"; then
7545     AC_DEFINE(MOZ_AUDIO_CHANNEL_MANAGER)
7547 AC_SUBST(MOZ_AUDIO_CHANNEL_MANAGER)
7549 dnl ========================================================
7550 dnl = Enable Support for Firefox Accounts (services/fxaccounts)
7551 dnl ========================================================
7552 if test -n "$MOZ_SERVICES_FXACCOUNTS"; then
7553     AC_DEFINE(MOZ_SERVICES_FXACCOUNTS)
7555 AC_SUBST(MOZ_SERVICES_FXACCOUNTS)
7557 dnl ========================================================
7558 dnl = Support for demangling undefined symbols
7559 dnl ========================================================
7560 if test -z "$SKIP_LIBRARY_CHECKS"; then
7561     AC_LANG_SAVE
7562     AC_LANG_CPLUSPLUS
7563     AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7564     AC_LANG_RESTORE
7567 # Demangle only for debug or trace-malloc or DMD builds
7568 MOZ_DEMANGLE_SYMBOLS=
7569 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC" -o "$MOZ_DMD"; then
7570     MOZ_DEMANGLE_SYMBOLS=1
7571     AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7573 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7575 dnl ========================================================
7576 dnl = Support for gcc stack unwinding (from gcc 3.3)
7577 dnl ========================================================
7578 if test -z "$SKIP_LIBRARY_CHECKS"; then
7579     AC_LANG_SAVE
7580     AC_LANG_CPLUSPLUS
7581     MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7582     AC_LANG_RESTORE
7585 dnl ========================================================
7586 dnl JIT observers
7587 dnl ========================================================
7589 MOZ_ARG_WITH_STRING(jitreport-granularity,
7590 [  --jitreport-granularity=N
7591                            Default granularity at which to report JIT code
7592                            to external tools
7593                              0 - no info
7594                              1 - code ranges for whole functions only
7595                              2 - per-line information
7596                              3 - per-op information],
7597   JITREPORT_GRANULARITY=$withval,
7598   JITREPORT_GRANULARITY=3)
7600 AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY)
7602 dnl ========================================================
7603 dnl =
7604 dnl = Misc. Options
7605 dnl =
7606 dnl ========================================================
7607 MOZ_ARG_HEADER(Misc. Options)
7609 dnl ========================================================
7610 dnl update xterm title
7611 dnl ========================================================
7612 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7613 [  --enable-xterm-updates  Update XTERM titles with current command.],
7614     MOZ_UPDATE_XTERM=1,
7615     MOZ_UPDATE_XTERM= )
7617 dnl =========================================================
7618 dnl = Chrome format
7619 dnl =========================================================
7620 MOZ_ARG_ENABLE_STRING([chrome-format],
7621 [  --enable-chrome-format=jar|flat|omni
7622                           Select FORMAT of chrome files during packaging],
7623     MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7625 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7626     MOZ_CHROME_FILE_FORMAT=jar
7629 if test "$MOZ_CHROME_FILE_FORMAT" = "symlink"; then
7630     AC_MSG_ERROR([--enable-chrome-format=symlink has been deprecated. It is now used by default in $DIST/bin on platforms that support it])
7633 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
7634     test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7635     test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7636     AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, or omni])
7639 dnl ========================================================
7640 dnl = Enable Support for devtools webide
7641 dnl ========================================================
7642 MOZ_ARG_ENABLE_BOOL(devtools-webide,
7643 [  --enable-devtools-webide Set compile flags necessary for compiling devtools webide ],
7644 MOZ_DEVTOOLS_WEBIDE=1,
7645 MOZ_DEVTOOLS_WEBIDE= )
7647 if test -n "$MOZ_DEVTOOLS_WEBIDE"; then
7648     AC_DEFINE(MOZ_DEVTOOLS_WEBIDE)
7650 AC_SUBST(MOZ_DEVTOOLS_WEBIDE)
7652 dnl =========================================================
7653 dnl Omnijar packaging (bug 552121)
7654 dnl =========================================================
7655 dnl Omnijar packaging is compatible with flat packaging.
7656 dnl In unpackaged builds, omnijar looks for files as if
7657 dnl things were flat packaged. After packaging, all files
7658 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7659 dnl is set to flat since putting files into jars is only
7660 dnl done during packaging with omnijar.
7661 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7662     MOZ_OMNIJAR=1
7663     AC_DEFINE(MOZ_OMNIJAR)
7665 MOZ_PACKAGER_FORMAT="$MOZ_CHROME_FILE_FORMAT"
7666 if test "$OS_ARCH" = "WINNT" -o "$MOZ_WIDGET_TOOLKIT" = "android"; then
7667     MOZ_CHROME_FILE_FORMAT=flat
7668 else
7669     MOZ_CHROME_FILE_FORMAT=symlink
7672 if test "$MOZ_WIDGET_TOOLKIT" = "android"; then
7673     dnl Fennec's static resources live in the assets/ folder of the
7674     dnl APK.  Adding a path to the name here works because we only
7675     dnl have one omnijar file in the final package (which is not the
7676     dnl case on desktop), and necessitates some contortions during
7677     dnl packaging so that the resources in the omnijar are considered
7678     dnl as rooted at / and not as rooted at assets/ (which again is
7679     dnl not the case on desktop: there are omnijars rooted at webrtc/,
7680     dnl etc). packager.mk handles changing the rooting of the single
7681     dnl omnijar.
7682     OMNIJAR_NAME=assets/omni.ja
7683 else
7684     OMNIJAR_NAME=omni.ja
7687 AC_SUBST(OMNIJAR_NAME)
7688 AC_SUBST(MOZ_OMNIJAR)
7689 AC_SUBST(MOZ_PACKAGER_FORMAT)
7691 dnl ========================================================
7692 dnl = Define default location for MOZILLA_FIVE_HOME
7693 dnl ========================================================
7694 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7695 [  --with-default-mozilla-five-home
7696                           Set the default value for MOZILLA_FIVE_HOME],
7697 [ val=`echo $withval`
7698   AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7700 dnl ========================================================
7701 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7702 dnl ========================================================
7703 MOZ_ARG_WITH_STRING(user-appdir,
7704 [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
7705 [ val=`echo $withval`
7706 if echo "$val" | grep "\/" >/dev/null; then
7707     AC_MSG_ERROR("Homedir must be single relative path.")
7708 else
7709     MOZ_USER_DIR="$val"
7710 fi])
7712 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7714 dnl ========================================================
7715 dnl = Doxygen configuration
7716 dnl ========================================================
7717 dnl Use commas to specify multiple dirs to this arg
7718 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7719 MOZ_ARG_WITH_STRING(doc-input-dirs,
7720 [  --with-doc-input-dirs=DIRS
7721                           Header/idl dirs to create docs from],
7722 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7723 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7725 dnl Use commas to specify multiple dirs to this arg
7726 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7727 MOZ_ARG_WITH_STRING(doc-include-dirs,
7728 [  --with-doc-include-dirs=DIRS
7729                           Include dirs to preprocess doc headers],
7730 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7731 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7733 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7734 MOZ_ARG_WITH_STRING(doc-output-dir,
7735 [  --with-doc-output-dir=DIR
7736                           Dir to generate docs into],
7737 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7738 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7740 if test -z "$SKIP_COMPILER_CHECKS"; then
7741 dnl ========================================================
7742 dnl =
7743 dnl = Compiler Options
7744 dnl =
7745 dnl ========================================================
7746 MOZ_ARG_HEADER(Compiler Options)
7748 dnl ========================================================
7749 dnl Check for gcc -pipe support
7750 dnl ========================================================
7751 AC_MSG_CHECKING([for -pipe support])
7752 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
7753     dnl Any gcc that supports firefox supports -pipe.
7754     CFLAGS="$CFLAGS -pipe"
7755     CXXFLAGS="$CXXFLAGS -pipe"
7756     AC_MSG_RESULT([yes])
7757 else
7758     AC_MSG_RESULT([no])
7761 dnl ========================================================
7762 dnl Profile guided optimization (gcc checks)
7763 dnl ========================================================
7764 dnl Test for profiling options
7765 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
7767 _SAVE_CFLAGS="$CFLAGS"
7768 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
7770 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
7771 AC_TRY_COMPILE([], [return 0;],
7772                [ PROFILE_GEN_CFLAGS="-fprofile-generate"
7773                  result="yes" ], result="no")
7774 AC_MSG_RESULT([$result])
7776 if test $result = "yes"; then
7777   PROFILE_GEN_LDFLAGS="-fprofile-generate"
7778   PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch"
7779   PROFILE_USE_LDFLAGS="-fprofile-use"
7782 CFLAGS="$_SAVE_CFLAGS"
7784 if test -n "$INTEL_CC"; then
7785   PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
7786   PROFILE_GEN_LDFLAGS=
7787   PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
7788   PROFILE_USE_LDFLAGS=
7791 dnl Sun Studio on Solaris
7792 if test "$SOLARIS_SUNPRO_CC"; then
7793   PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
7794   PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7795   PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7796   PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7799 AC_SUBST(PROFILE_GEN_CFLAGS)
7800 AC_SUBST(PROFILE_GEN_LDFLAGS)
7801 AC_SUBST(PROFILE_USE_CFLAGS)
7802 AC_SUBST(PROFILE_USE_LDFLAGS)
7804 AC_LANG_CPLUSPLUS
7806 dnl ========================================================
7807 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7808 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7809 dnl raw pointers in nsCOMPtr.h.  (VC++ has the same bug.)
7810 dnl ========================================================
7811 _SAVE_CXXFLAGS=$CXXFLAGS
7812 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7813 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7814     ac_nscap_nonconst_opeq_bug,
7815     [AC_TRY_COMPILE([
7816                       template <class T>
7817                       class Pointer
7818                         {
7819                         public:
7820                           T* myPtr;
7821                         };
7823                       template <class T, class U>
7824                       int operator==(const Pointer<T>& rhs, U* lhs)
7825                         {
7826                           return rhs.myPtr == lhs;
7827                         }
7829                       template <class T, class U>
7830                       int operator==(const Pointer<T>& rhs, const U* lhs)
7831                         {
7832                           return rhs.myPtr == lhs;
7833                         }
7834                     ],
7835                     [
7836                       Pointer<int> foo;
7837                       const int* bar;
7838                       return foo == bar;
7839                     ],
7840                     ac_nscap_nonconst_opeq_bug="no",
7841                     ac_nscap_nonconst_opeq_bug="yes")])
7842 CXXFLAGS="$_SAVE_CXXFLAGS"
7844 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7845     AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7847 fi # ! SKIP_COMPILER_CHECKS
7849 AC_DEFINE(CPP_THROW_NEW, [throw()])
7850 AC_LANG_C
7852 if test "$COMPILE_ENVIRONMENT"; then
7853 MOZ_EXPAND_LIBS
7854 fi # COMPILE_ENVIRONMENT
7856 dnl ========================================================
7857 dnl =
7858 dnl = Build depencency options
7859 dnl =
7860 dnl ========================================================
7861 MOZ_ARG_HEADER(Build dependencies)
7863 if test "$GNU_CC" -a "$GNU_CXX"; then
7864   _DEPEND_CFLAGS='-MD -MP -MF $(MDDEPDIR)/$(@F).pp'
7865 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7866 elif test "$SOLARIS_SUNPRO_CC"; then
7867   _DEPEND_CFLAGS=
7868 else
7869   dnl Don't override this for MSVC
7870   if test -z "$_WIN32_MSVC"; then
7871     _USE_CPP_INCLUDE_FLAG=
7872     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7873     _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7874   else
7875     echo '#include <stdio.h>' > dummy-hello.c
7876     changequote(,)
7877     dnl This output is localized, split at the first double space or colon and space.
7878     _CL_PREFIX_REGEX="^\([^:]*:.*[ :] \)\(.*stdio.h\)$"
7879     CL_INCLUDES_PREFIX=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\1/p'`
7880     _CL_STDIO_PATH=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\2/p'`
7881     changequote([,])
7882     if ! test -e "$_CL_STDIO_PATH"; then
7883         AC_MSG_ERROR([Unable to parse cl -showIncludes prefix. This compiler's locale has an unsupported formatting.])
7884     fi
7885     if test -z "$CL_INCLUDES_PREFIX"; then
7886         AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
7887     fi
7888     AC_SUBST(CL_INCLUDES_PREFIX)
7889     rm -f dummy-hello.c
7891     dnl Make sure that the build system can handle non-ASCII characters
7892     dnl in environment variables to prevent it from breaking silently on
7893     dnl non-English systems.
7894     NONASCII=$'\241\241'
7895     AC_SUBST(NONASCII)
7896   fi
7899 dnl ========================================================
7900 dnl =
7901 dnl = Static Build Options
7902 dnl =
7903 dnl ========================================================
7904 MOZ_ARG_HEADER(Static build options)
7906 AC_SUBST(LIBXUL_LIBS)
7907 XPCOM_LIBS="$LIBXUL_LIBS"
7909 if test "$OS_ARCH" = "WINNT"; then
7910   GKMEDIAS_SHARED_LIBRARY=1
7911   AC_DEFINE(GKMEDIAS_SHARED_LIBRARY)
7913 AC_SUBST(GKMEDIAS_SHARED_LIBRARY)
7915 if test -z "$MOZ_NATIVE_ZLIB"; then
7916 if test -n "$JS_SHARED_LIBRARY" -o "$GKMEDIAS_SHARED_LIBRARY"; then
7917   ZLIB_IN_MOZGLUE=1
7918   AC_DEFINE(ZLIB_IN_MOZGLUE)
7922 AC_SUBST(ZLIB_IN_MOZGLUE)
7924 dnl ========================================================
7925 dnl =
7926 dnl = Standalone module options
7927 dnl =
7928 dnl ========================================================
7929 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7931 dnl Check for GLib.
7932 dnl ========================================================
7934 if test -z "$SKIP_PATH_CHECKS"; then
7935 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
7936     if test "$MOZ_ENABLE_GTK" ; then
7937         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7938     fi
7942 if test -z "${GLIB_GMODULE_LIBS}" \
7943    -a -n "${GLIB_CONFIG}"\
7944     -a "${GLIB_CONFIG}" != no\
7945 ; then
7946     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7949 AC_SUBST(GLIB_CFLAGS)
7950 AC_SUBST(GLIB_LIBS)
7951 AC_SUBST(GLIB_GMODULE_LIBS)
7953 dnl ========================================================
7954 dnl Graphics checks.
7955 dnl ========================================================
7957 if test "${OS_TARGET}" = "WINNT"; then
7958   if $PERL -e "exit($MOZ_WINSDK_MAXVER < 0x06020000)"; then
7959     MOZ_ENABLE_DIRECT2D1_1=1
7960     AC_SUBST(MOZ_ENABLE_DIRECT2D1_1)
7961   fi
7964 if test "${OS_TARGET}" = "WINNT" -o \
7965         "${OS_ARCH}" = "Darwin" -o \
7966         "${MOZ_WIDGET_TOOLKIT}" = "android" -o \
7967         "${MOZ_WIDGET_TOOLKIT}" = "gonk" -o \
7968         "${MOZ_WIDGET_TOOLKIT}" = "gtk2" -o \
7969         "${MOZ_WIDGET_TOOLKIT}" = "gtk3"; then
7970     case "${target_cpu}" in
7971     i*86*|x86_64|arm)
7972         MOZ_ENABLE_SKIA=1
7973         ;;
7974     *)
7975         MOZ_ENABLE_SKIA=
7976         ;;
7977     esac
7978 else
7979 MOZ_ENABLE_SKIA=
7982 MOZ_ARG_ENABLE_BOOL(skia,
7983 [  --enable-skia   Enable use of Skia],
7984 MOZ_ENABLE_SKIA=1,
7985 MOZ_ENABLE_SKIA=)
7987 if test "$USE_FC_FREETYPE"; then
7988     if test "$COMPILE_ENVIRONMENT"; then
7989         dnl ========================================================
7990         dnl = Check for freetype2 and its functionality
7991         dnl ========================================================
7992         PKG_CHECK_MODULES(FT2, freetype2 >= 6.1.0, _HAVE_FREETYPE2=1, _HAVE_FREETYPE2=)
7994         if test "$_HAVE_FREETYPE2"; then
7995             _SAVE_LIBS="$LIBS"
7996             _SAVE_CFLAGS="$CFLAGS"
7997             LIBS="$LIBS $FT2_LIBS"
7998             CFLAGS="$CFLAGS $FT2_CFLAGS"
8000             AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
8001                 ac_cv_member_FT_Bitmap_Size_y_ppem,
8002                 [AC_TRY_COMPILE([#include <ft2build.h>
8003                                  #include FT_FREETYPE_H],
8004                                 [FT_Bitmap_Size s;
8005                                  if (sizeof s.y_ppem) return 0;
8006                                  return 1],
8007                                 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
8008                                 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
8009             if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
8010                 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
8011             else
8012                 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
8013             fi
8014             AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
8015                                $HAVE_FT_BITMAP_SIZE_Y_PPEM,
8016                                [FT_Bitmap_Size structure includes y_ppem field])
8018             AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table)
8020             LIBS="$_SAVE_LIBS"
8021             CFLAGS="$_SAVE_CFLAGS"
8022         fi
8024         _SAVE_CPPFLAGS="$CPPFLAGS"
8025         CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
8026         MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
8027             [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
8028         CPPFLAGS="$_SAVE_CPPFLAGS"
8029     else
8030         AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
8031     fi
8033     PKG_CHECK_MODULES(_FONTCONFIG, fontconfig,
8034     [
8035         if test "$MOZ_PANGO"; then
8036             MOZ_PANGO_CFLAGS="$MOZ_PANGO_CFLAGS $_FONTCONFIG_CFLAGS"
8037             MOZ_PANGO_LIBS="$MOZ_PANGO_LIBS $_FONTCONFIG_LIBS"
8038         else
8039             FT2_CFLAGS="$FT2_CFLAGS $_FONTCONFIG_CFLAGS"
8040             FT2_LIBS="$FT2_LIBS $_FONTCONFIG_LIBS"
8041         fi
8042     ])
8045 dnl ========================================================
8046 dnl Check for pixman and cairo
8047 dnl ========================================================
8049 if test "$MOZ_WIDGET_TOOLKIT" = "gtk3" ; then
8050   # cairo-gtk3 can be build with system-cairo only
8051   MOZ_TREE_CAIRO=
8052 else
8053   MOZ_TREE_CAIRO=1
8056 MOZ_ARG_ENABLE_BOOL(system-cairo,
8057 [  --enable-system-cairo   Use system cairo (located with pkgconfig)],
8058 MOZ_TREE_CAIRO=,
8059 MOZ_TREE_CAIRO=1 )
8061 MOZ_TREE_PIXMAN=1
8062 MOZ_ARG_ENABLE_BOOL(system-pixman,
8063 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
8064 MOZ_TREE_PIXMAN=,
8065 MOZ_TREE_PIXMAN=force,
8066 MOZ_TREE_PIXMAN=1 )
8068 # System cairo depends on system pixman
8069 if test "$MOZ_TREE_PIXMAN" = "force"; then
8070     if test -z "$MOZ_TREE_CAIRO"; then
8071         AC_MSG_ERROR([--disable-system-pixman is incompatible with --enable-system-cairo.])
8072     else
8073         MOZ_TREE_PIXMAN=1
8074     fi
8075 elif test -z "$MOZ_TREE_CAIRO"; then
8076     MOZ_TREE_PIXMAN=
8079 if test "$MOZ_TREE_PIXMAN"; then
8080     AC_DEFINE(MOZ_TREE_PIXMAN)
8081     MOZ_PIXMAN_CFLAGS=""
8082     MOZ_PIXMAN_LIBS='$(call EXPAND_LIBNAME_PATH,mozlibpixman,$(DEPTH)/gfx/cairo/libpixman/src)'
8083 else
8084     PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.19.2)
8085     MOZ_PIXMAN_CFLAGS="$PIXMAN_CFLAGS"
8086     MOZ_PIXMAN_LIBS="$PIXMAN_LIBS"
8088 AC_SUBST(MOZ_PIXMAN_CFLAGS)
8089 AC_SUBST(MOZ_PIXMAN_LIBS)
8091 # Check for headers defining standard int types.
8092 if test -n "$COMPILE_ENVIRONMENT"; then
8093     MOZ_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
8096 if test "$MOZ_TREE_CAIRO"; then
8097     MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
8098     AC_DEFINE(MOZ_TREE_CAIRO)
8100     if test "$OS_ARCH" = "WINNT"; then
8101         # For now we assume that we will have a uint64_t available through
8102         # one of the above headers or mozstdint.h.
8103         AC_DEFINE(HAVE_UINT64_T)
8104     fi
8106     # Define macros for cairo-features.h
8107     TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
8108     if test "$MOZ_X11"; then
8109         XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
8110         XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
8111         PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
8112         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8113         MOZ_ENABLE_CAIRO_FT=1
8114         CAIRO_FT_CFLAGS="$FT2_CFLAGS"
8115     fi
8116     case "$MOZ_WIDGET_TOOLKIT" in
8117       qt)
8118         QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
8119         ;;
8120       cocoa | uikit)
8121         QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
8122         QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
8123         QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
8124         ;;
8125       windows)
8126         WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
8127         WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
8128         if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
8129             WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
8130             WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
8131             MOZ_ENABLE_D2D_SURFACE=1
8132             MOZ_ENABLE_DWRITE_FONT=1
8133         else
8134             WIN32_DWRITE_FONT_FEATURE=
8135             WIN32_D2D_SURFACE_FEATURE=
8136         fi
8138         MOZ_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
8140         dnl D3D10 Layers depend on D2D Surfaces.
8141         if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
8142           MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
8143         fi
8144         ;;
8145       gtk3)
8146         AC_MSG_ERROR([cairo-gtk3 toolkit is incompatible with in-tree cairo. Please add --enable-system-cairo to your build config.])
8147         ;;
8148     esac
8149     if test "$USE_FC_FREETYPE"; then
8150         FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
8151     fi
8152     AC_SUBST(MOZ_ENABLE_CAIRO_FT)
8153     AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
8154     AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
8155     AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
8156     AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
8157     AC_SUBST(CAIRO_FT_CFLAGS)
8159     AC_SUBST(PS_SURFACE_FEATURE)
8160     AC_SUBST(PDF_SURFACE_FEATURE)
8161     AC_SUBST(SVG_SURFACE_FEATURE)
8162     AC_SUBST(XLIB_SURFACE_FEATURE)
8163     AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
8164     AC_SUBST(QUARTZ_SURFACE_FEATURE)
8165     AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
8166     AC_SUBST(WIN32_SURFACE_FEATURE)
8167     AC_SUBST(OS2_SURFACE_FEATURE)
8168     AC_SUBST(DIRECTFB_SURFACE_FEATURE)
8169     AC_SUBST(FT_FONT_FEATURE)
8170     AC_SUBST(FC_FONT_FEATURE)
8171     AC_SUBST(WIN32_FONT_FEATURE)
8172     AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
8173     AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
8174     AC_SUBST(QUARTZ_FONT_FEATURE)
8175     AC_SUBST(PNG_FUNCTIONS_FEATURE)
8176     AC_SUBST(QT_SURFACE_FEATURE)
8177     AC_SUBST(TEE_SURFACE_FEATURE)
8179     MOZ_CAIRO_OSLIBS='${CAIRO_FT_OSLIBS}'
8181     if test "$MOZ_X11"; then
8182         MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
8183     fi
8185     CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
8186 else
8187     PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION)
8188     MOZ_CAIRO_CFLAGS="$CAIRO_CFLAGS"
8189     MOZ_CAIRO_LIBS="$CAIRO_LIBS"
8190     PKG_CHECK_MODULES(CAIRO_TEE, cairo-tee >= $CAIRO_VERSION)
8191     if test "$MOZ_X11"; then
8192         PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
8193         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
8194         MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_LIBS"
8195         MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
8196     fi
8199 AC_SUBST(MOZ_TREE_CAIRO)
8200 AC_SUBST(MOZ_CAIRO_CFLAGS)
8201 AC_SUBST(MOZ_CAIRO_LIBS)
8202 AC_SUBST(MOZ_CAIRO_OSLIBS)
8203 AC_SUBST(MOZ_TREE_PIXMAN)
8205 dnl ========================================================
8206 dnl Skia
8207 dnl ========================================================
8208 if test "$MOZ_ENABLE_SKIA"; then
8209   AC_DEFINE(MOZ_ENABLE_SKIA)
8210   AC_DEFINE(USE_SKIA)
8211   if test "${MOZ_WIDGET_TOOLKIT}" = "android" -o x"$MOZ_WIDGET_TOOLKIT" = x"gonk"; then
8212     AC_DEFINE(SK_BUILD_FOR_ANDROID_NDK)
8213   fi
8215   if test "${CPU_ARCH}" != "ppc" -a "${CPU_ARCH}" != "ppc64" -a "${CPU_ARCH}" != "sparc" ; then
8216     MOZ_ENABLE_SKIA_GPU=1
8217     AC_DEFINE(USE_SKIA_GPU)
8218     AC_SUBST(MOZ_ENABLE_SKIA_GPU)
8219   fi
8221 AC_SUBST(MOZ_ENABLE_SKIA)
8223 dnl ========================================================
8224 dnl disable xul
8225 dnl ========================================================
8226 MOZ_ARG_DISABLE_BOOL(xul,
8227 [  --disable-xul           Disable XUL],
8228     MOZ_XUL= )
8229 if test "$MOZ_XUL"; then
8230   AC_DEFINE(MOZ_XUL)
8231 else
8232   dnl remove extensions that require XUL
8233   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8236 AC_SUBST(MOZ_XUL)
8238 dnl ========================================================
8239 dnl disable profile locking
8240 dnl   do no use this in applications that can have more than
8241 dnl   one process accessing the profile directory.
8242 dnl ========================================================
8243 MOZ_ARG_DISABLE_BOOL(profilelocking,
8244 [  --disable-profilelocking
8245                           Disable profile locking],
8246     MOZ_PROFILELOCKING=,
8247     MOZ_PROFILELOCKING=1 )
8248 if test "$MOZ_PROFILELOCKING"; then
8249   AC_DEFINE(MOZ_PROFILELOCKING)
8252 dnl ========================================================
8253 dnl necko configuration options
8254 dnl ========================================================
8257 dnl option to disable various necko protocols
8259 MOZ_ARG_ENABLE_STRING(necko-protocols,
8260 [  --enable-necko-protocols[={http,ftp,default,all,none}]
8261                           Enable/disable specific protocol handlers],
8262 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8263     if test "$option" = "yes" -o "$option" = "all"; then
8264         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8265     elif test "$option" = "no" -o "$option" = "none"; then
8266         NECKO_PROTOCOLS=""
8267     elif test "$option" = "default"; then
8268         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8269     elif test `echo "$option" | grep -c \^-` != 0; then
8270         option=`echo $option | sed 's/^-//'`
8271         NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8272     else
8273         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8274     fi
8275 done],
8276     NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8277 dnl Remove dupes
8278 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8279 AC_SUBST_SET(NECKO_PROTOCOLS)
8280 for p in $NECKO_PROTOCOLS; do
8281     AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8282     _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_PROTOCOL_$p"
8283 done
8286 dnl option to disable necko's wifi scanner
8289 case "$OS_TARGET" in
8290   Android)
8291     if test -n "$gonkdir"; then
8292       NECKO_WIFI=1
8293     fi
8294     ;;
8295   Darwin|FreeBSD|SunOS|WINNT)
8296     NECKO_WIFI=1
8297     ;;
8298   Linux)
8299     NECKO_WIFI=1
8300     NECKO_WIFI_DBUS=1
8301     ;;
8302 esac
8304 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8305 [  --disable-necko-wifi    Disable necko wifi scanner],
8306     NECKO_WIFI=,
8307     NECKO_WIFI=1)
8309 if test "$NECKO_WIFI"; then
8310   if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
8311     AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
8312   fi
8313   AC_DEFINE(NECKO_WIFI)
8314   _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
8316 AC_SUBST(NECKO_WIFI)
8317 AC_SUBST(NECKO_WIFI_DBUS)
8320 dnl option to disable cookies
8322 MOZ_ARG_DISABLE_BOOL(cookies,
8323 [  --disable-cookies       Disable cookie support],
8324     NECKO_COOKIES=,
8325     NECKO_COOKIES=1)
8326 AC_SUBST(NECKO_COOKIES)
8327 if test "$NECKO_COOKIES"; then
8328     AC_DEFINE(NECKO_COOKIES)
8329     _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
8333 dnl Always build Marionette if not Android or B2G
8335 if test "$OS_TARGET" != Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
8336     AC_DEFINE(ENABLE_MARIONETTE)
8338 AC_SUBST(ENABLE_MARIONETTE)
8339 if test "$ENABLE_MARIONETTE"; then
8340     AC_DEFINE(ENABLE_MARIONETTE)
8344 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8346 MOZ_ARG_DISABLE_BOOL(ctypes,
8347 [  --disable-ctypes        Disable js-ctypes],
8348     BUILD_CTYPES=,
8349     BUILD_CTYPES=1)
8350 AC_SUBST(BUILD_CTYPES)
8351 if test "$BUILD_CTYPES"; then
8352     AC_DEFINE(BUILD_CTYPES)
8355 dnl Build Loop if required
8356 AC_SUBST(MOZ_LOOP)
8357 if test "$MOZ_LOOP"; then
8358   AC_DEFINE(MOZ_LOOP)
8361 dnl Build Places if required
8362 if test "$MOZ_PLACES"; then
8363   AC_DEFINE(MOZ_PLACES)
8366 dnl Build SocialAPI if required
8367 if test "$MOZ_SOCIAL"; then
8368   AC_DEFINE(MOZ_SOCIAL)
8371 dnl Build Common JS modules provided by services.
8372 AC_SUBST(MOZ_SERVICES_COMMON)
8373 if test -n "$MOZ_SERVICES_COMMON"; then
8374   AC_DEFINE(MOZ_SERVICES_COMMON)
8377 dnl Build Services crypto component (used by Sync)
8378 AC_SUBST(MOZ_SERVICES_CRYPTO)
8379 if test -n "$MOZ_SERVICES_CRYPTO"; then
8380   AC_DEFINE(MOZ_SERVICES_CRYPTO)
8383 dnl Build Firefox Health Reporter Service
8384 AC_SUBST(MOZ_SERVICES_HEALTHREPORT)
8385 if test -n "$MOZ_SERVICES_HEALTHREPORT"; then
8386   AC_DEFINE(MOZ_SERVICES_HEALTHREPORT)
8389 dnl Build Services metrics component
8390 AC_SUBST(MOZ_SERVICES_METRICS)
8391 if test -n "$MOZ_SERVICES_METRICS"; then
8392   AC_DEFINE(MOZ_SERVICES_METRICS)
8395 dnl Build Notifications if required
8396 AC_SUBST(MOZ_SERVICES_NOTIFICATIONS)
8397 if test -n "$MOZ_SERVICES_NOTIFICATIONS"; then
8398   AC_DEFINE(MOZ_SERVICES_NOTIFICATIONS)
8401 dnl Build Sync Services if required
8402 AC_SUBST(MOZ_SERVICES_SYNC)
8403 if test -n "$MOZ_SERVICES_SYNC"; then
8404   AC_DEFINE(MOZ_SERVICES_SYNC)
8407 dnl Build Captive Portal Detector if required
8408 AC_SUBST(MOZ_CAPTIVEDETECT)
8409 if test -n "$MOZ_CAPTIVEDETECT"; then
8410   AC_DEFINE(MOZ_CAPTIVEDETECT)
8413 dnl Build second screen and casting features for external devices if required
8414 AC_SUBST(MOZ_DEVICES)
8415 if test -n "$MOZ_DEVICES"; then
8416   AC_DEFINE(MOZ_DEVICES)
8419 dnl ========================================================
8420 if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC" -o "$MOZ_DMD"; then
8421     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8424 if test "$MOZ_APP_COMPONENT_INCLUDE"; then
8425   AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_INCLUDE, "$MOZ_APP_COMPONENT_INCLUDE")
8428 if test "$MOZ_APP_COMPONENT_MODULES"; then
8429   AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_MODULES, $MOZ_APP_COMPONENT_MODULES)
8432 dnl ========================================================
8433 dnl =
8434 dnl = Maintainer debug option (no --enable equivalent)
8435 dnl =
8436 dnl ========================================================
8438 AC_SUBST(AR)
8439 AC_SUBST(AR_FLAGS)
8440 AC_SUBST(AR_LIST)
8441 AC_SUBST(AR_EXTRACT)
8442 AC_SUBST(AR_DELETE)
8443 AC_SUBST(AS)
8444 AC_SUBST(ASFLAGS)
8445 AC_SUBST(AS_DASH_C_FLAG)
8446 AC_SUBST(LD)
8447 AC_SUBST(RC)
8448 AC_SUBST(RCFLAGS)
8449 AC_SUBST(MC)
8450 AC_SUBST(WINDRES)
8451 AC_SUBST(IMPLIB)
8452 AC_SUBST(FILTER)
8453 AC_SUBST(BIN_FLAGS)
8454 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8455 AC_SUBST(MOZ_UPDATE_XTERM)
8456 AC_SUBST(MOZ_AUTH_EXTENSION)
8457 AC_SUBST(MOZ_PERMISSIONS)
8458 AC_SUBST(MOZ_PREF_EXTENSIONS)
8459 AC_SUBST(MOZ_JS_LIBS)
8460 AC_SUBST(MOZ_DEBUG)
8461 AC_SUBST(MOZ_DEBUG_SYMBOLS)
8462 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
8463 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
8464 AC_SUBST(MOZ_DEBUG_LDFLAGS)
8465 AC_SUBST(WARNINGS_AS_ERRORS)
8466 AC_SUBST(MOZ_EXTENSIONS)
8467 AC_SUBST(MOZ_JSDEBUGGER)
8468 AC_SUBST(MOZ_ENABLE_PROFILER_SPS)
8469 AC_SUBST(MOZ_JPROF)
8470 AC_SUBST(MOZ_SHARK)
8471 AC_SUBST(MOZ_INSTRUMENTS)
8472 AC_SUBST(MOZ_CALLGRIND)
8473 AC_SUBST(MOZ_VTUNE)
8474 AC_SUBST(MOZ_PROFILING)
8475 AC_SUBST(LIBICONV)
8476 AC_SUBST(MOZ_PLACES)
8477 AC_SUBST(MOZ_SOCIAL)
8478 AC_SUBST(MOZ_TOOLKIT_SEARCH)
8479 AC_SUBST(MOZ_FEEDS)
8480 AC_SUBST(NS_PRINTING)
8481 AC_SUBST(MOZ_WEBGL)
8482 AC_SUBST(MOZ_HELP_VIEWER)
8483 AC_SUBST(TOOLCHAIN_PREFIX)
8485 AC_SUBST(JAVA)
8486 AC_SUBST(JAVAC)
8487 AC_SUBST(JAVAH)
8488 AC_SUBST(JAR)
8489 AC_SUBST(JARSIGNER)
8490 AC_SUBST(KEYTOOL)
8492 AC_SUBST(MOZ_PROFILELOCKING)
8494 AC_SUBST(ENABLE_TESTS)
8495 AC_SUBST(MOZ_UNIVERSALCHARDET)
8496 AC_SUBST(ACCESSIBILITY)
8497 AC_SUBST(MOZ_SPELLCHECK)
8498 AC_SUBST(MOZ_ANDROID_OMTC)
8499 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
8500 AC_SUBST(MOZ_CRASHREPORTER)
8501 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
8502 AC_SUBST(MOZ_CRASHREPORTER_UPLOAD_FULL_SYMBOLS)
8503 AC_SUBST(MOZ_MAINTENANCE_SERVICE)
8504 AC_SUBST(MOZ_STUB_INSTALLER)
8505 AC_SUBST(MOZ_VERIFY_MAR_SIGNATURE)
8506 AC_SUBST(MOZ_ENABLE_SIGNMAR)
8507 AC_SUBST(MOZ_UPDATER)
8509 AC_SUBST(MOZ_ANGLE_RENDERER)
8510 AC_SUBST(MOZ_D3D_CPU_SUFFIX)
8511 AC_SUBST(MOZ_HAS_WINSDK_WITH_D3D)
8512 AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL)
8513 AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL_PATH)
8514 AC_SUBST(MOZ_DIRECTX_SDK_PATH)
8515 AC_SUBST(MOZ_D3DCOMPILER_XP_DLL)
8516 AC_SUBST(MOZ_D3DCOMPILER_XP_CAB)
8518 AC_SUBST(MOZ_METRO)
8520 AC_SUBST(MOZ_ANDROID_HISTORY)
8521 AC_SUBST(MOZ_WEBSMS_BACKEND)
8522 AC_SUBST(MOZ_ANDROID_BEAM)
8523 AC_SUBST(MOZ_ANDROID_SYNTHAPKS)
8524 AC_SUBST(MOZ_DISABLE_GECKOVIEW)
8525 AC_SUBST(ENABLE_STRIP)
8526 AC_SUBST(PKG_SKIP_STRIP)
8527 AC_SUBST(STRIP_FLAGS)
8528 AC_SUBST(USE_ELF_HACK)
8529 AC_SUBST(INCREMENTAL_LINKER)
8530 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
8531 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
8533 AC_SUBST(MOZ_FIX_LINK_PATHS)
8534 AC_SUBST(XPCOM_LIBS)
8535 AC_SUBST(XPCOM_FROZEN_LDOPTS)
8536 AC_SUBST(XPCOM_GLUE_LDOPTS)
8537 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
8538 AC_SUBST(XPCOM_STATICRUNTIME_GLUE_LDOPTS)
8539 AC_SUBST(XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS)
8541 AC_SUBST(USE_DEPENDENT_LIBS)
8543 AC_SUBST(MOZ_BUILD_ROOT)
8545 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
8546 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
8547 AC_SUBST(MOZ_LINKER_EXTRACT)
8549 AC_SUBST(MOZ_JSDOWNLOADS)
8550 if test -n "$MOZ_JSDOWNLOADS"; then
8551   AC_DEFINE(MOZ_JSDOWNLOADS)
8554 dnl ========================================================
8555 dnl = Mac bundle name prefix
8556 dnl ========================================================
8557 MOZ_ARG_WITH_STRING(macbundlename-prefix,
8558 [  --with-macbundlename-prefix=prefix
8559                           Prefix for MOZ_MACBUNDLE_NAME],
8560 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
8562 MOZ_MACBUNDLE_NAME=`echo $MOZ_APP_DISPLAYNAME | tr -d ' '`
8563 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
8564   MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
8567 if test "$MOZ_DEBUG"; then
8568   MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}Debug.app
8569 else
8570   MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
8572 AC_SUBST(MOZ_MACBUNDLE_NAME)
8574 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
8575 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr '[A-Z]' '[a-z]'`
8576 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
8577 if test "$MOZ_DEBUG"; then
8578   MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
8581 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
8582 AC_SUBST(MOZ_MACBUNDLE_ID)
8584 dnl ========================================================
8585 dnl = Child Process Name for IPC
8586 dnl ========================================================
8587 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
8588   MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
8589 else
8590   # We want to let Android unpack the file at install time, but it only does
8591   # so if the file is named libsomething.so. The lib/ path is also required
8592   # because the unpacked file will be under the lib/ subdirectory and will
8593   # need to be executed from that path.
8594   MOZ_CHILD_PROCESS_NAME="lib/libplugin-container.so"
8596 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
8598 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
8599 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
8601 # The following variables are available to branding and application
8602 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
8603 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
8604 # impacts profile location and user-visible fields.
8605 # - MOZ_APP_BASENAME: Typically stays consistent for multiple branded
8606 # versions of a given application (e.g. Aurora and Firefox both use
8607 # "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used
8608 # for application.ini's "Name" field, which controls profile location in
8609 # the absence of a "Profile" field (see below), and various system
8610 # integration hooks (Unix remoting, Windows MessageWindow name, etc.)
8611 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
8612 # Mac Bundle name, Updater, Installer), it is typically used for nightly
8613 # builds (e.g. Aurora for Firefox).
8614 # - MOZ_APP_VERSION: Defines the application version number.
8615 # - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set,
8616 # defaults to a lowercase form of MOZ_APP_BASENAME.
8617 # - MOZ_APP_PROFILE: When set, used for application.ini's
8618 # "Profile" field, which controls profile location.
8619 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
8620 # crash reporter server url.
8621 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
8622 # - MOZ_EXTENSION_MANAGER: When set, enabled extension manager.
8624 if test -z "$MOZ_APP_NAME"; then
8625    MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
8628 # For extensions and langpacks, we require a max version that is compatible
8629 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
8630 # 24.0a1 and 24.0a2 aren't affected
8631 # 24.0 becomes 24.*
8632 # 24.1.1 becomes 24.*
8633 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
8634 if test -z "$IS_ALPHA"; then
8635   changequote(,)
8636   MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
8637   changequote([,])
8638 else
8639   MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
8642 MOZ_B2G_VERSION=${MOZ_B2G_VERSION:-"1.0.0"}
8643 AC_DEFINE_UNQUOTED(MOZ_B2G_VERSION,"$MOZ_B2G_VERSION")
8644 AC_DEFINE_UNQUOTED(MOZ_B2G_OS_NAME,"$MOZ_B2G_OS_NAME")
8646 AC_SUBST(MOZ_APP_NAME)
8647 AC_SUBST(MOZ_APP_DISPLAYNAME)
8648 AC_SUBST(MOZ_APP_BASENAME)
8649 AC_SUBST(MOZ_APP_VENDOR)
8650 AC_SUBST(MOZ_APP_PROFILE)
8651 AC_SUBST(MOZ_APP_ID)
8652 AC_SUBST(MAR_CHANNEL_ID)
8653 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
8654 AC_SUBST(MOZ_PROFILE_MIGRATOR)
8655 AC_SUBST(MOZ_EXTENSION_MANAGER)
8656 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
8657 AC_SUBST(MOZ_APP_UA_NAME)
8658 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
8659 AC_SUBST(MOZ_APP_VERSION)
8660 AC_SUBST(MOZ_APP_MAXVERSION)
8661 AC_DEFINE_UNQUOTED(FIREFOX_VERSION,$FIREFOX_VERSION)
8662 AC_SUBST(FIREFOX_VERSION)
8663 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
8664 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
8665   AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
8668 AC_SUBST(MOZ_APP_STATIC_INI)
8670 AC_SUBST(MOZ_PKG_SPECIAL)
8672 AC_SUBST(MOZILLA_OFFICIAL)
8674 AC_DEFINE_UNQUOTED(MOZ_TELEMETRY_DISPLAY_REV, 2)
8675 AC_SUBST(MOZ_TELEMETRY_DISPLAY_REV)
8677 if test "$MOZ_TELEMETRY_REPORTING"; then
8678     AC_DEFINE(MOZ_TELEMETRY_REPORTING)
8680     # Enable Telemetry by default for nightly and aurora channels
8681     if test -z "$RELEASE_BUILD"; then
8682       AC_DEFINE(MOZ_TELEMETRY_ON_BY_DEFAULT)
8683     fi
8686 dnl If we have any service that uploads data (and requires data submission
8687 dnl policy alert), set MOZ_DATA_REPORTING.
8688 dnl We need SUBST for build system and DEFINE for xul preprocessor.
8689 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"; then
8690   MOZ_DATA_REPORTING=1
8691   AC_DEFINE(MOZ_DATA_REPORTING)
8692   AC_SUBST(MOZ_DATA_REPORTING)
8695 dnl win32 options
8696 AC_SUBST(MOZ_BROWSE_INFO)
8697 AC_SUBST(MOZ_TOOLS_DIR)
8698 AC_SUBST(WIN32_REDIST_DIR)
8699 AC_SUBST(MAKENSISU)
8701 dnl Echo the CFLAGS to remove extra whitespace.
8702 CFLAGS=`echo \
8703     $_WARNINGS_CFLAGS \
8704     $CFLAGS`
8706 CXXFLAGS=`echo \
8707     $_WARNINGS_CXXFLAGS \
8708     $CXXFLAGS`
8710 COMPILE_CFLAGS=`echo \
8711     $_DEFINES_CFLAGS \
8712     $_DEPEND_CFLAGS \
8713     $COMPILE_CFLAGS`
8715 COMPILE_CXXFLAGS=`echo \
8716     $_DEFINES_CXXFLAGS \
8717     $_DEPEND_CFLAGS \
8718     $COMPILE_CXXFLAGS`
8720 HOST_CFLAGS=`echo \
8721     $HOST_CFLAGS \
8722     $_DEPEND_CFLAGS`
8724 HOST_CXXFLAGS=`echo \
8725     $HOST_CXXFLAGS \
8726     $_DEPEND_CFLAGS`
8728 AC_SUBST(SYSTEM_LIBXUL)
8729 AC_SUBST(MOZ_NATIVE_JPEG)
8730 AC_SUBST(MOZ_NATIVE_PNG)
8731 AC_SUBST(MOZ_NATIVE_BZ2)
8733 AC_SUBST(MOZ_JPEG_CFLAGS)
8734 AC_SUBST(MOZ_JPEG_LIBS)
8735 AC_SUBST(MOZ_BZ2_CFLAGS)
8736 AC_SUBST(MOZ_BZ2_LIBS)
8737 AC_SUBST(MOZ_PNG_CFLAGS)
8738 AC_SUBST(MOZ_PNG_LIBS)
8740 if test "$MOZ_WIDGET_TOOLKIT" = gonk -a -n "$MOZ_NUWA_PROCESS"; then
8741     export MOZ_NUWA_PROCESS
8742     AC_DEFINE(MOZ_NUWA_PROCESS)
8744 AC_SUBST(MOZ_NUWA_PROCESS)
8746 AC_SUBST(NSPR_CFLAGS)
8747 AC_SUBST(NSPR_LIBS)
8748 AC_SUBST(MOZ_NATIVE_NSPR)
8750 AC_SUBST(NSS_CFLAGS)
8751 AC_SUBST(NSS_LIBS)
8752 AC_SUBST(MOZ_NATIVE_NSS)
8753 AC_SUBST(NSS_DISABLE_DBM)
8755 OS_CFLAGS="$CFLAGS"
8756 OS_CXXFLAGS="$CXXFLAGS"
8757 OS_CPPFLAGS="$CPPFLAGS"
8758 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
8759 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
8760 OS_LDFLAGS="$LDFLAGS"
8761 OS_LIBS="$LIBS"
8762 AC_SUBST(OS_CFLAGS)
8763 AC_SUBST(OS_CXXFLAGS)
8764 AC_SUBST(OS_CPPFLAGS)
8765 AC_SUBST(OS_COMPILE_CFLAGS)
8766 AC_SUBST(OS_COMPILE_CXXFLAGS)
8767 AC_SUBST(OS_LDFLAGS)
8768 AC_SUBST(OS_LIBS)
8769 AC_SUBST(CROSS_COMPILE)
8770 AC_SUBST(WCHAR_CFLAGS)
8772 AC_SUBST(HOST_CC)
8773 AC_SUBST(HOST_CXX)
8774 AC_SUBST(HOST_CFLAGS)
8775 AC_SUBST(HOST_CXXFLAGS)
8776 AC_SUBST(HOST_LDFLAGS)
8777 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8778 AC_SUBST(HOST_AR)
8779 AC_SUBST(HOST_AR_FLAGS)
8780 AC_SUBST(HOST_LD)
8781 AC_SUBST(HOST_RANLIB)
8782 AC_SUBST(HOST_NSPR_MDCPUCFG)
8783 AC_SUBST(HOST_BIN_SUFFIX)
8784 AC_SUBST(HOST_OS_ARCH)
8786 AC_SUBST(TARGET_CPU)
8787 AC_SUBST(TARGET_VENDOR)
8788 AC_SUBST(TARGET_OS)
8789 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8790 AC_SUBST(TARGET_MD_ARCH)
8791 AC_SUBST(TARGET_XPCOM_ABI)
8792 AC_SUBST(OS_TARGET)
8793 AC_SUBST(OS_ARCH)
8794 AC_SUBST(OS_RELEASE)
8795 AC_SUBST(OS_TEST)
8796 AC_SUBST(CPU_ARCH)
8797 AC_SUBST(INTEL_ARCHITECTURE)
8798 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
8799 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
8801 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8803 AC_SUBST(WRAP_LDFLAGS)
8804 AC_SUBST(MKSHLIB)
8805 AC_SUBST(MKCSHLIB)
8806 AC_SUBST(MKSHLIB_FORCE_ALL)
8807 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8808 AC_SUBST(DSO_CFLAGS)
8809 AC_SUBST(DSO_PIC_CFLAGS)
8810 AC_SUBST(DSO_LDOPTS)
8811 AC_SUBST(LIB_PREFIX)
8812 AC_SUBST(DLL_PREFIX)
8813 AC_SUBST(DLL_SUFFIX)
8814 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8815 AC_SUBST(LIB_SUFFIX)
8816 AC_SUBST(OBJ_SUFFIX)
8817 AC_SUBST(BIN_SUFFIX)
8818 AC_SUBST(ASM_SUFFIX)
8819 AC_SUBST(IMPORT_LIB_SUFFIX)
8820 AC_SUBST(USE_N32)
8821 AC_SUBST(CC_VERSION)
8822 AC_SUBST(CXX_VERSION)
8823 AC_SUBST(MSMANIFEST_TOOL)
8824 AC_SUBST(NS_ENABLE_TSF)
8825 AC_SUBST(MOZ_NSS_PATCH)
8826 AC_SUBST(MOZ_APP_COMPONENT_LIBS)
8827 AC_SUBST(MOZ_APP_EXTRA_LIBS)
8829 AC_SUBST(MOZ_WAVE)
8830 AC_SUBST(MOZ_VORBIS)
8831 AC_SUBST(MOZ_TREMOR)
8832 AC_SUBST(MOZ_OPUS)
8833 AC_SUBST(MOZ_WEBM)
8834 AC_SUBST(MOZ_WMF)
8835 AC_SUBST(MOZ_FFMPEG)
8836 AC_SUBST(MOZ_FMP4)
8837 AC_SUBST(MOZ_DIRECTSHOW)
8838 AC_SUBST(MOZ_MEDIA_PLUGINS)
8839 AC_SUBST(MOZ_APPLEMEDIA)
8840 AC_SUBST(MOZ_OMX_PLUGIN)
8841 AC_SUBST(MOZ_VPX_ERROR_CONCEALMENT)
8842 AC_SUBST(MOZ_VPX)
8843 AC_SUBST(VPX_AS)
8844 AC_SUBST(VPX_ASFLAGS)
8845 AC_SUBST(VPX_DASH_C_FLAG)
8846 AC_SUBST(VPX_AS_CONVERSION)
8847 AC_SUBST(VPX_ASM_SUFFIX)
8848 AC_SUBST(VPX_X86_ASM)
8849 AC_SUBST(VPX_ARM_ASM)
8850 AC_SUBST(VPX_NEED_OBJ_INT_EXTRACT)
8851 AC_SUBST(MOZ_INSTRUMENT_EVENT_LOOP)
8852 AC_SUBST(LIBJPEG_TURBO_AS)
8853 AC_SUBST(LIBJPEG_TURBO_ASFLAGS)
8854 AC_SUBST(LIBJPEG_TURBO_X86_ASM)
8855 AC_SUBST(LIBJPEG_TURBO_X64_ASM)
8856 AC_SUBST(LIBJPEG_TURBO_ARM_ASM)
8858 AC_SUBST(MOZ_PACKAGE_JSSHELL)
8859 AC_SUBST(MOZ_FOLD_LIBS)
8861 AC_SUBST(MOZ_ENABLE_SZIP)
8862 AC_SUBST(MOZ_SZIP_FLAGS)
8864 if test "$MOZ_DEBUG"; then
8865     MOZ_EM_DEBUG=1
8867 AC_SUBST(MOZ_EM_DEBUG)
8869 if test -n "$COMPILE_ENVIRONMENT"; then
8870 AC_CHECK_FUNCS(posix_fadvise posix_fallocate)
8872 dnl Check for missing components
8873 if test "$MOZ_X11"; then
8874     if test "$WITHOUT_X11"; then
8875         AC_MSG_ERROR([--without-x specified and MOZ_X11 still defined])
8876     fi
8877     dnl ====================================================
8878     dnl = Check if X headers exist
8879     dnl ====================================================
8880     _SAVE_CFLAGS=$CFLAGS
8881     CFLAGS="$CFLAGS $XCFLAGS"
8882     AC_TRY_COMPILE([
8883         #include <stdio.h>
8884         #include <stdlib.h>
8885         #include <X11/Xlib.h>
8886         #include <X11/Intrinsic.h>
8887         #include <X11/extensions/XShm.h>
8888     ],
8889     [
8890         Display *dpy = 0;
8891         if ((dpy = XOpenDisplay(NULL)) == NULL) {
8892             fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8893             exit(1);
8894         }
8895     ], [],
8896     [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ])
8897     CFLAGS="$_SAVE_CFLAGS"
8899     if test -n "$MISSING_X"; then
8900         AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8901     fi
8903 fi # MOZ_X11
8905 fi # COMPILE_ENVIRONMENT
8907 dnl Set various defines and substitutions
8908 dnl ========================================================
8910 if test "$OS_ARCH" != "WINNT"; then
8911   AC_DEFINE(XP_UNIX)
8914 if test "$MOZ_DEBUG"; then
8915     AC_DEFINE(MOZ_REFLOW_PERF)
8916     AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8919 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
8920     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8921     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8922     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8923     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8924     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8925     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8926     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8927     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8930 if test "$MOZ_DEBUG"; then
8931     A11Y_LOG=1
8933 case "$MOZ_UPDATE_CHANNEL" in
8934 aurora|beta|release|esr)
8935     ;;
8937     A11Y_LOG=1
8938     ;;
8939 esac
8940 AC_SUBST(A11Y_LOG)
8941 if test -n "$A11Y_LOG"; then
8942     AC_DEFINE(A11Y_LOG)
8945 AC_SUBST(MOZILLA_VERSION)
8947 AC_SUBST(ac_configure_args)
8949 dnl Spit out some output
8950 dnl ========================================================
8952 dnl The following defines are used by xpcom
8953 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8954 CPP_THROW_NEW
8955 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8956 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8957 HAVE_CPP_PARTIAL_SPECIALIZATION
8958 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8959 NEED_CPP_UNUSED_IMPLEMENTATIONS
8960 HAVE_GETPAGESIZE
8961 HAVE_ICONV
8962 HAVE_ICONV_WITH_CONST_INPUT
8963 HAVE_MBRTOWC
8964 HAVE_WCRTOMB
8965 HAVE_STATVFS64
8966 HAVE_STATVFS
8967 HAVE_STATFS64
8968 HAVE_STATFS
8969 HAVE_SYS_STATVFS_H
8970 HAVE_SYS_STATFS_H
8971 HAVE_SYS_VFS_H
8972 HAVE_SYS_MOUNT_H
8975 AC_SUBST(STLPORT_LIBS)
8977 dnl ========================================================
8978 dnl ICU Support
8979 dnl ========================================================
8981 if test "$MOZ_BUILD_APP" = "browser"; then
8982     _INTL_API=yes
8983 else
8984     # Internationalization isn't built or exposed by default in non-desktop
8985     # builds.  Bugs to enable:
8986     #
8987     #   Android:  bug 864843
8988     #   B2G:      bug 866301
8989     _INTL_API=no
8992 MOZ_CONFIG_ICU()
8994 if test -n "$MOZ_NATIVE_ICU"; then
8995     MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_ICU_LIBS"
8998 if test -n "$JS_SHARED_LIBRARY"; then
8999   MOZ_JS_LIBS="$MOZ_JS_SHARED_LIBS"
9000 else
9001   MOZ_JS_LIBS="$MOZ_JS_STATIC_LIBS"
9002   AC_DEFINE(MOZ_STATIC_JS)
9004 AC_SUBST(JS_SHARED_LIBRARY)
9006 AC_SUBST(UPLOAD_EXTRA_FILES)
9008 MOZ_CREATE_CONFIG_STATUS()
9010 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9011 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9012   MOZ_SUBCONFIGURE_ICU()
9013   MOZ_SUBCONFIGURE_FFI()
9016 # Hack around an Apple bug that affects the egrep that comes with OS X 10.7.
9017 # "env ARCHPREFERENCE=i386,x86_64 arch egrep" first tries to use the 32-bit
9018 # Intel part of the egrep fat binary, even on 64-bit systems, and falls back on
9019 # the 64-bit part if it's not a fat binary, as can happen with MacPorts. We
9020 # (apparently) only need this hack when egrep's "pattern" is particularly long
9021 # (as in the following code) and the first egrep on our $PATH is Apple's.  See
9022 # bug 655339.
9023 case "$host" in
9024 *-apple-darwin11*)
9025     FIXED_EGREP="env ARCHPREFERENCE=i386,x86_64 arch egrep"
9026     ;;
9028     FIXED_EGREP="egrep"
9029     ;;
9030 esac
9032 # Run jemalloc configure script
9034 if test -z "$MOZ_NATIVE_JEMALLOC" -a "$MOZ_MEMORY" && test -n "$MOZ_JEMALLOC3" -o -n "$MOZ_REPLACE_MALLOC"; then
9035   ac_configure_args="--build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_"
9036   if test -n "$MOZ_REPLACE_MALLOC"; then
9037     # When using replace_malloc, we always want memalign and valloc exported from jemalloc.
9038     ac_configure_args="$ac_configure_args ac_cv_func_memalign=yes"
9039     ac_configure_args="$ac_configure_args ac_cv_func_valloc=yes"
9040   fi
9041   if test -n "$MOZ_JEMALLOC3"; then
9042     case "${OS_ARCH}" in
9043       WINNT|Darwin)
9044         # We want jemalloc functions to be kept hidden on both Mac and Windows
9045         # See memory/build/mozmemory_wrap.h for details.
9046         ac_configure_args="$ac_configure_args --without-export"
9047         ;;
9048     esac
9049   elif test "${OS_ARCH}" = Darwin; then
9050     # When building as a replace-malloc lib, disabling the zone allocator
9051     # forces to use pthread_atfork.
9052     ac_configure_args="$ac_configure_args --disable-zone-allocator"
9053   fi
9054   _MANGLE="malloc posix_memalign aligned_alloc calloc realloc free memalign valloc malloc_usable_size"
9055   JEMALLOC_WRAPPER=
9056   if test -z "$MOZ_REPLACE_MALLOC"; then
9057     case "$OS_ARCH" in
9058       Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
9059         MANGLE=$_MANGLE
9060         ;;
9061     esac
9062   elif test -z "$MOZ_JEMALLOC3"; then
9063     MANGLE=$_MANGLE
9064     JEMALLOC_WRAPPER=replace_
9065   fi
9066   if test -n "$MANGLE"; then
9067     MANGLED=
9068     if test -n "$_WRAP_MALLOC" -a -z "$JEMALLOC_WRAPPER"; then
9069       JEMALLOC_WRAPPER=__wrap_
9070     fi
9071     for mangle in ${MANGLE}; do
9072       if test -n "$MANGLED"; then
9073         MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle,$MANGLED"
9074       else
9075         MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle"
9076       fi
9077     done
9078     ac_configure_args="$ac_configure_args --with-mangling=$MANGLED"
9079   fi
9080   unset CONFIG_FILES
9081   if test -z "$MOZ_TLS"; then
9082     ac_configure_args="$ac_configure_args --disable-tls"
9083   fi
9084   EXTRA_CFLAGS="$CFLAGS"
9085   for var in AS CC CXX CPP LD AR RANLIB STRIP CPPFLAGS EXTRA_CFLAGS LDFLAGS; do
9086     ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
9087   done
9088   if test "$CROSS_COMPILE"; then
9089     ac_configure_args="$ac_configure_args je_cv_static_page_shift=12"
9090   fi
9091   _save_cache_file="$cache_file"
9092   cache_file=$_objdir/memory/jemalloc/src/config.cache
9094   if ! test -e memory/jemalloc; then
9095     mkdir -p memory/jemalloc
9096   fi
9098   AC_OUTPUT_SUBDIRS(memory/jemalloc/src)
9099   cache_file="$_save_cache_file"
9100   ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9103 # Run freetype configure script
9105 if test "$MOZ_TREE_FREETYPE"; then
9106    export CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS -std=c99"
9107    export CPPFLAGS="$CPPFLAGS $MOZ_DEBUG_FLAGS"
9108    export CXXFLAGS="$CXXFLAGS $MOZ_DEBUG_FLAGS"
9109    export LDFLAGS="$LDFLAGS $MOZ_DEBUG_LDFLAGS"
9110    # Spaces in the *_CFLAGS and *_LIBS variables are intentionally placed
9111    # to force freetype to use our settings rather than autodetecting
9112    export LIBPNG_CFLAGS="$MOZ_PNG_CFLAGS "
9113    export LIBPNG_LIBS="$MOZ_PNG_LIBS "
9114    export ZLIB_CFLAGS="$MOZ_ZLIB_CFLAGS "
9115    export ZLIB_LIBS="$MOZ_ZLIB_LIBS "
9116    export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in"
9117    ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes --with-zlib=yes --without-bzip2 --with-png=yes --without-harfbuzz"
9119    if ! test -e modules; then
9120      mkdir modules
9121    fi
9123    AC_OUTPUT_SUBDIRS(modules/freetype2)
9126 if test -z "$direct_nspr_config"; then
9127     dnl ========================================================
9128     dnl = Setup a nice relatively clean build environment for
9129     dnl = sub-configures.
9130     dnl ========================================================
9131     CC="$_SUBDIR_CC"
9132     CXX="$_SUBDIR_CXX"
9133     CFLAGS="$_SUBDIR_CFLAGS"
9134     CPPFLAGS="$_SUBDIR_CPPFLAGS"
9135     CXXFLAGS="$_SUBDIR_CXXFLAGS"
9136     LDFLAGS="$_SUBDIR_LDFLAGS"
9137     HOST_CC="$_SUBDIR_HOST_CC"
9138     HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9139     HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9140     RC=
9143 unset MAKEFILES
9144 unset CONFIG_FILES
9146 # Run all configure scripts specified by a subconfigure
9147 if test -n "$_subconfigure_subdir"; then
9148   _save_ac_configure_args="$ac_configure_args"
9149   ac_configure_args="$_subconfigure_config_args"
9150   AC_OUTPUT_SUBDIRS("$_subconfigure_subdir")
9151   ac_configure_args="$_save_ac_configure_args"
9154 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9155 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9157 export WRAP_LDFLAGS
9159 if test -n "$_WRAP_MALLOC"; then
9160     # Avoid doubling wrap malloc arguments
9161     _SUBDIR_CONFIG_ARGS="`echo $_SUBDIR_CONFIG_ARGS | sed -e 's/--enable-wrap-malloc *//'`"
9164 if test -z "$MOZ_NATIVE_NSPR"; then
9165     ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9166     if test -z "$MOZ_DEBUG"; then
9167         ac_configure_args="$ac_configure_args --disable-debug"
9168     else
9169         ac_configure_args="$ac_configure_args --enable-debug"
9170     fi
9171     if test "$MOZ_OPTIMIZE" = "1"; then
9172         ac_configure_args="$ac_configure_args --enable-optimize"
9173     elif test -z "$MOZ_OPTIMIZE"; then
9174         ac_configure_args="$ac_configure_args --disable-optimize"
9175     fi
9176     if test -n "$HAVE_64BIT_OS"; then
9177         ac_configure_args="$ac_configure_args --enable-64bit"
9178     fi
9179     if test -n "$USE_ARM_KUSER"; then
9180         ac_configure_args="$ac_configure_args --with-arm-kuser"
9181     fi
9182     # A configure script generated by autoconf 2.68 does not allow the cached
9183     # values of "precious" variables such as CFLAGS and LDFLAGS to differ from
9184     # the values passed to the configure script. Since we modify CFLAGS and
9185     # LDFLAGS before passing them to NSPR's configure script, we cannot share
9186     # config.cache with NSPR. As a result, we cannot pass AS, CC, CXX, etc. to
9187     # NSPR via a shared config.cache file and must pass them to NSPR on the
9188     # configure command line.
9189     for var in AS CC CXX CPP LD AR RANLIB STRIP; do
9190         ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
9191     done
9192     # A configure script generated by autoconf 2.68 warns if --host is
9193     # specified but --build isn't. So we always pass --build to NSPR's
9194     # configure script.
9195     ac_configure_args="$ac_configure_args --build=$build"
9196     ac_configure_args="$ac_configure_args $NSPR_CONFIGURE_ARGS"
9198     # Save these, so we can mess with them for the subconfigure ..
9199     _SAVE_CFLAGS="$CFLAGS"
9200     _SAVE_CPPFLAGS="$CPPFLAGS"
9201     _SAVE_LDFLAGS="$LDFLAGS"
9203     if test -n "$MOZ_LINKER" -a "$ac_cv_func_dladdr" = no ; then
9204       # dladdr is supported by the new linker, even when the system linker doesn't
9205       # support it. Trick nspr into using dladdr when it's not supported.
9206       export CPPFLAGS="-include $_topsrcdir/mozglue/linker/dladdr.h $CPPFLAGS"
9207     fi
9208     export LDFLAGS="$LDFLAGS $NSPR_LDFLAGS"
9209     export CFLAGS="$CFLAGS $MOZ_FRAMEPTR_FLAGS"
9211     # Use a separate cache file for NSPR since it uses autoconf 2.68.
9212     _save_cache_file="$cache_file"
9213     cache_file=$_objdir/nsprpub/config.cache
9215     AC_OUTPUT_SUBDIRS(nsprpub)
9217     # .. and restore them
9218     cache_file="$_save_cache_file"
9219     CFLAGS="$_SAVE_CFLAGS"
9220     CPPFLAGS="$_SAVE_CPPFLAGS"
9221     LDFLAGS="$_SAVE_LDFLAGS"
9223     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9226 dnl ========================================================
9227 dnl = Setup a nice relatively clean build environment for
9228 dnl = sub-configures.
9229 dnl ========================================================
9230 CC="$_SUBDIR_CC"
9231 CXX="$_SUBDIR_CXX"
9232 CFLAGS="$_SUBDIR_CFLAGS"
9233 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9234 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9235 LDFLAGS="$_SUBDIR_LDFLAGS"
9236 HOST_CC="$_SUBDIR_HOST_CC"
9237 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9238 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9241 if test -n "$ENABLE_CLANG_PLUGIN"; then
9242     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9243     AC_OUTPUT_SUBDIRS(build/clang-plugin)
9247 # Run the SpiderMonkey 'configure' script.
9248 dist=$MOZ_BUILD_ROOT/dist
9249 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9250 ac_configure_args="$ac_configure_args --enable-threadsafe"
9252 if test "$_INTL_API" = no; then
9253     ac_configure_args="$ac_configure_args --without-intl-api"
9256 if test "$BUILD_CTYPES"; then
9257     # Build js-ctypes on the platforms we can.
9258     ac_configure_args="$ac_configure_args --enable-ctypes"
9260 if test -z "$JS_SHARED_LIBRARY" ; then
9261     ac_configure_args="$ac_configure_args --disable-shared-js"
9262     if test -n "$MOZ_DISABLE_EXPORT_JS"; then
9263         ac_configure_args="$ac_configure_args --disable-export-js"
9264     fi
9266 if test -z "$JSGC_USE_EXACT_ROOTING" ; then
9267     ac_configure_args="$ac_configure_args --disable-exact-rooting"
9269 if test -z "$JSGC_GENERATIONAL" ; then
9270     ac_configure_args="$ac_configure_args --disable-gcgenerational"
9272 if test -z "$MOZ_NATIVE_NSPR"; then
9273     ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9274     ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9276 ac_configure_args="$ac_configure_args --prefix=$dist"
9277 if test "$MOZ_MEMORY"; then
9278    ac_configure_args="$ac_configure_args --enable-jemalloc"
9280 if test -n "$MOZ_GLUE_LDFLAGS"; then
9281    export MOZ_GLUE_LDFLAGS
9283 if test -n "$MOZ_GLUE_PROGRAM_LDFLAGS"; then
9284    export MOZ_GLUE_PROGRAM_LDFLAGS
9286 if test -n "$ZLIB_IN_MOZGLUE"; then
9287    MOZ_ZLIB_LIBS=
9289 export MOZ_NATIVE_ZLIB
9290 export MOZ_ZLIB_CFLAGS
9291 export MOZ_ZLIB_LIBS
9292 export MOZ_APP_NAME
9293 export DONT_POPULATE_VIRTUALENV=1
9294 export PYTHON
9295 export MOZILLA_CENTRAL_PATH=$_topsrcdir
9296 export STLPORT_CPPFLAGS
9297 export STLPORT_LDFLAGS
9298 export STLPORT_LIBS
9299 export JS_STANDALONE=no
9300 export MOZ_LINKER
9301 export ZLIB_IN_MOZGLUE
9303 if ! test -e js; then
9304     mkdir js
9307 AC_OUTPUT_SUBDIRS(js/src)
9308 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9310 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR
9312 export WRITE_MOZINFO=1
9313 dnl we need to run config.status after js/src subconfigure because we're
9314 dnl traversing its moz.build and we need its config.status for that.
9315 dnl However, writing our own config.status needs to happen before
9316 dnl subconfigures because the setup surrounding subconfigures alters
9317 dnl many AC_SUBSTed variables.
9318 MOZ_RUN_CONFIG_STATUS()
9319 unset WRITE_MOZINFO