Merge fx-team to m-c.
[gecko.git] / configure.in
blob762932bf003a5e4fc84e2898141bda1b4e3fed6d
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 -Oi'
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         MOZ_MEMORY=1
2193     fi
2194     AC_DEFINE(HAVE_SNPRINTF)
2195     AC_DEFINE(_WINDOWS)
2196     AC_DEFINE(WIN32)
2197     AC_DEFINE(XP_WIN)
2198     AC_DEFINE(XP_WIN32)
2199     AC_DEFINE(HW_THREADS)
2200     AC_DEFINE(STDC_HEADERS)
2201     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2202     TARGET_MD_ARCH=win32
2203     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2204     BIN_SUFFIX='.exe'
2205     MOZ_USER_DIR="Mozilla"
2207     dnl Hardcode to win95 for now - cls
2208     TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2210     dnl set NO_X11 defines here as the general check is skipped on win32
2211     no_x=yes
2212     AC_DEFINE(NO_X11)
2214     case "$host" in
2215     *-mingw*)
2216         MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2217         if test -n "$L10NBASEDIR"; then
2218             L10NBASEDIR=`cd $L10NBASEDIR && pwd -W`
2219         fi
2220         ;;
2221     esac
2223     case "$host" in
2224     *-mingw*)
2225         if test -z "$MOZ_TOOLS"; then
2226             AC_MSG_ERROR([MOZ_TOOLS is not set])
2227         fi
2228         MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2229         if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
2230             AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2231         fi
2232         MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2233         if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2234             AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2235         fi
2236         ;;
2237     esac
2239     case "$host_os" in
2240     cygwin*|msvc*|mks*)
2241         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.])
2242         ;;
2243     esac
2245     case "$target" in
2246     i*86-*)
2247         if test "$HAVE_64BIT_OS"; then
2248             AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2249         fi
2251         if test -n "$GNU_CC"; then
2252             CFLAGS="$CFLAGS -mstackrealign -fno-keep-inline-dllexport"
2253             CXXFLAGS="$CXXFLAGS -mstackrealign -fno-keep-inline-dllexport"
2254             LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup -Wl,--large-address-aware"
2255         else
2256             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
2257             LDFLAGS="$LDFLAGS -SAFESEH"
2258         fi
2260         AC_DEFINE(_X86_)
2261         ;;
2262     x86_64-*)
2263         if test -n "$_WIN32_MSVC"; then
2264             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
2265         fi
2266         AC_DEFINE(_AMD64_)
2267         ;;
2268     *)
2269         AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2270         ;;
2271     esac
2272     ;;
2274 *-netbsd*)
2275     DSO_CFLAGS=''
2276     CFLAGS="$CFLAGS -Dunix"
2277     CXXFLAGS="$CXXFLAGS -Dunix"
2278     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2279         DLL_SUFFIX=".so"
2280         DSO_PIC_CFLAGS='-fPIC -DPIC'
2281         DSO_LDOPTS='-shared'
2282         BIN_FLAGS='-Wl,--export-dynamic'
2283     else
2284         DSO_PIC_CFLAGS='-fPIC -DPIC'
2285         DLL_SUFFIX=".so.1.0"
2286         DSO_LDOPTS='-shared'
2287     fi
2288     # This will fail on a.out systems prior to 1.5.1_ALPHA.
2289     MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2290     MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2291     if test "$LIBRUNPATH"; then
2292         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2293     fi
2294     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(notdir $@) -o $@'
2295     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(notdir $@)) -o $@'
2296     MMX_FLAGS="-mmmx"
2297     SSE_FLAGS="-msse"
2298     SSE2_FLAGS="-msse2"
2299     ;;
2301 *-openbsd*)
2302     if test "$SO_VERSION"; then
2303         DLL_SUFFIX=".so.$SO_VERSION"
2304     else
2305         DLL_SUFFIX=".so.1.0"
2306     fi
2307     MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib -Wl,-rpath-link,$(if $(X11BASE),$(X11BASE),/usr/X11R6)/lib'
2308     DSO_CFLAGS=''
2309     DSO_PIC_CFLAGS='-fPIC'
2310     DSO_LDOPTS='-shared -fPIC'
2311     if test "$LIBRUNPATH"; then
2312         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2313     fi
2314     MMX_FLAGS="-mmmx"
2315     SSE_FLAGS="-msse"
2316     SSE2_FLAGS="-msse2"
2317     ;;
2319 *-solaris*)
2320     AC_DEFINE(SOLARIS)
2321     TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2322     MOZ_FIX_LINK_PATHS=
2323     # $ORIGIN/.. is for shared libraries under components/ to locate shared
2324     # libraries one level up (e.g. libnspr4.so)
2325     if test "$SOLARIS_SUNPRO_CC"; then
2326        LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
2327        LIBS="-lCrun -lCstd -lc $LIBS"
2328        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2329        CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
2330        CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
2331        LDFLAGS="-xildoff $LDFLAGS"
2332        MMX_FLAGS="-xarch=mmx -xO4"
2333        SSE_FLAGS="-xarch=sse"
2334        SSE2_FLAGS="-xarch=ssei2 -xO4"
2335        if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
2336            _SAVE_LDFLAGS=$LDFLAGS
2337            LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2338            AC_TRY_LINK([#include <stdio.h>],
2339                        [printf("Hello World\n");],
2340                        ,
2341                        [LDFLAGS=$_SAVE_LDFLAGS])
2342        fi
2343        MOZ_OPTIMIZE_FLAGS="-xO4"
2344        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
2345        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
2346        MKSHLIB_FORCE_ALL='-z allextract'
2347        MKSHLIB_UNFORCE_ALL='-z defaultextract'
2348        DSO_LDOPTS='-G'
2349        AR_LIST="$AR t"
2350        AR_EXTRACT="$AR x"
2351        AR_DELETE="$AR d"
2352        AR='$(CXX) -xar'
2353        AR_FLAGS='-o $@'
2354        AS='/usr/ccs/bin/as'
2355        ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2356        AS_DASH_C_FLAG=''
2357        TARGET_COMPILER_ABI="sunc"
2358        CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2359        CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2360        AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2361        AC_LANG_SAVE
2362        AC_LANG_CPLUSPLUS
2363        AC_TRY_COMPILE([],
2364            [#if (__SUNPRO_CC < 0x590)
2365            #error "Denied"
2366            #endif],
2367            _BAD_COMPILER=,_BAD_COMPILER=1)
2368        if test -n "$_BAD_COMPILER"; then
2369            _res="no"
2370            AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2371        else
2372            _res="yes"
2373        fi
2374        AC_TRY_COMPILE([],
2375            [#if (__SUNPRO_CC >= 0x5100)
2376            #error "Sun C++ 5.10 or above"
2377            #endif],
2378            _ABOVE_SS12U1=,_ABOVE_SS12U1=1)
2379        if test "$_ABOVE_SS12U1"; then
2380            # disable xannotate
2381            CXXFLAGS="$CXXFLAGS -xannotate=no"
2382        fi
2383        AC_MSG_RESULT([$_res])
2384        AC_LANG_RESTORE
2385     else
2386        LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
2387        LIBS="-lc $LIBS"
2388        MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
2389        MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
2390        ASFLAGS="$ASFLAGS -fPIC"
2391        DSO_LDOPTS='-shared'
2392        WARNINGS_AS_ERRORS='-Werror'
2393        _WARNINGS_CFLAGS=''
2394        _WARNINGS_CXXFLAGS=''
2395        if test "$OS_RELEASE" = "5.3"; then
2396            AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2397        fi
2398        MMX_FLAGS="-mmmx"
2399        SSE_FLAGS="-msse"
2400        SSE2_FLAGS="-msse2"
2401     fi
2402     if test "$OS_RELEASE" = "5.5.1"; then
2403         AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2404     fi
2405     ;;
2407 *-sunos*)
2408     DSO_LDOPTS='-Bdynamic'
2409     MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2410     MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2411     AC_DEFINE(SUNOS4)
2412     AC_DEFINE(SPRINTF_RETURNS_STRING)
2413     case "$(target_os)" in
2414     sunos4.1*)
2415         DLL_SUFFIX='.so.1.0'
2416         ;;
2417     esac
2418     ;;
2420 esac
2422 AC_SUBST_LIST(MMX_FLAGS)
2423 AC_SUBST_LIST(SSE_FLAGS)
2424 AC_SUBST_LIST(SSE2_FLAGS)
2426 case "$target" in
2427 *-*linux*)
2428     # Includes linux-android
2429     AC_DEFINE(XP_LINUX)
2430     ;;
2431 esac
2433 AC_SUBST(MOZ_LINKER)
2434 if test -n "$MOZ_LINKER"; then
2435   AC_DEFINE(MOZ_LINKER)
2438 dnl Only one oddball right now (QNX), but this gives us flexibility
2439 dnl if any other platforms need to override this in the future.
2440 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2442 dnl ========================================================
2443 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2444 dnl by now will not have any way to link most binaries (tests
2445 dnl as well as viewer, apprunner, etc.), because some symbols
2446 dnl will be left out of the "composite" .so's by ld as unneeded.
2447 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2448 dnl they can link in the static libs that provide the missing
2449 dnl symbols.
2450 dnl ========================================================
2451 NO_LD_ARCHIVE_FLAGS=
2452 if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
2453     NO_LD_ARCHIVE_FLAGS=1
2455 case "$target" in
2456 *-aix4.3*|*-aix5*)
2457     NO_LD_ARCHIVE_FLAGS=
2458     ;;
2459 *-mingw*)
2460     if test -z "$GNU_CC"; then
2461         NO_LD_ARCHIVE_FLAGS=
2462     fi
2463     ;;
2464 esac
2465 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2467 dnl ========================================================
2468 dnl = Flags to strip unused symbols from .so components and
2469 dnl = to export jemalloc symbols when linking a program
2470 dnl ========================================================
2471 case "$target" in
2472     *-linux*|*-kfreebsd*-gnu|*-gnu*)
2473         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2474         ;;
2475     *-solaris*)
2476         if test -z "$GNU_CC"; then
2477          MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2478         else
2479          if test -z "$GCC_USE_GNU_LD"; then
2480           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2481          else
2482           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2483          fi
2484         fi
2485         ;;
2486     *-darwin*)
2487         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2488         ;;
2489     *-mingw*)
2490         if test -n "$GNU_CC"; then
2491            MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2492         fi
2493         ;;
2494 esac
2496 if test -z "$COMPILE_ENVIRONMENT"; then
2497     SKIP_COMPILER_CHECKS=1
2498     SKIP_LIBRARY_CHECKS=1
2499 else
2500     MOZ_COMPILER_OPTS
2503 if test -z "$SKIP_COMPILER_CHECKS"; then
2504 dnl Checks for typedefs, structures, and compiler characteristics.
2505 dnl ========================================================
2506 AC_HEADER_STDC
2507 AC_C_CONST
2508 AC_TYPE_MODE_T
2509 AC_TYPE_OFF_T
2510 AC_TYPE_PID_T
2511 AC_TYPE_SIZE_T
2512 AC_LANG_CPLUSPLUS
2513 AC_LANG_C
2514 AC_MSG_CHECKING(for ssize_t)
2515 AC_CACHE_VAL(ac_cv_type_ssize_t,
2516  [AC_TRY_COMPILE([#include <stdio.h>
2517                   #include <sys/types.h>],
2518                  [ssize_t foo = 0;],
2519                  [ac_cv_type_ssize_t=true],
2520                  [ac_cv_type_ssize_t=false])])
2521 if test "$ac_cv_type_ssize_t" = true ; then
2522   AC_DEFINE(HAVE_SSIZE_T)
2523   AC_MSG_RESULT(yes)
2524 else
2525   AC_MSG_RESULT(no)
2527 AC_STRUCT_ST_BLKSIZE
2528 AC_MSG_CHECKING(for siginfo_t)
2529 AC_CACHE_VAL(ac_cv_siginfo_t,
2530  [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2531                   #include <signal.h>],
2532                  [siginfo_t* info;],
2533                  [ac_cv_siginfo_t=true],
2534                  [ac_cv_siginfo_t=false])])
2535 if test "$ac_cv_siginfo_t" = true ; then
2536   AC_DEFINE(HAVE_SIGINFO_T)
2537   AC_MSG_RESULT(yes)
2538 else
2539   AC_MSG_RESULT(no)
2542 AC_LANG_CPLUSPLUS
2544 MOZ_CXX11
2546 AC_LANG_C
2548 dnl Check for .hidden assembler directive and visibility attribute.
2549 dnl Borrowed from glibc configure.in
2550 dnl ===============================================================
2551 if test "$GNU_CC" -a "$OS_TARGET" != WINNT; then
2552   AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2553   AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2554   case "$OS_TARGET" in
2555   Darwin)
2556     VISIBILITY_FLAGS='-fvisibility=hidden'
2557     ;;
2558   *)
2559     case $GCC_VERSION in
2560     4.4*|4.6*)
2561       VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden_dso_handle.h'
2562       ;;
2563     *)
2564       VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2565       ;;
2566     esac
2567     WRAP_SYSTEM_INCLUDES=1
2568     ;;
2569   esac
2570 fi         # GNU_CC
2572 # visibility hidden flag for Sun Studio on Solaris
2573 if test "$SOLARIS_SUNPRO_CC"; then
2574 VISIBILITY_FLAGS='-xldscope=hidden'
2575 fi         # Sun Studio on Solaris
2577 case "${OS_TARGET}" in
2578 WINNT|Darwin|Android)
2579   ;;
2581   STL_FLAGS='-I$(DIST)/stl_wrappers'
2582   WRAP_STL_INCLUDES=1
2583   ;;
2584 esac
2586 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2587 AC_SUBST(VISIBILITY_FLAGS)
2589 MOZ_GCC_PR49911
2590 MOZ_GCC_PR39608
2591 if test "$OS_TARGET" != WINNT; then
2592     # Only run this test with clang on non-Windows platforms, because clang
2593     # cannot do enough code gen for now to make this test work correctly.
2594     MOZ_LLVM_PR8927
2597 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
2598 dnl ========================================================
2599 if test "$GNU_CC"; then
2600   CFLAGS_save="${CFLAGS}"
2601   CFLAGS="${CFLAGS} -Werror"
2602   AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
2603                  ac_cv_force_align_arg_pointer,
2604                  [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
2605                                  [],
2606                                  ac_cv_force_align_arg_pointer="yes",
2607                                  ac_cv_force_align_arg_pointer="no")])
2608   CFLAGS="${CFLAGS_save}"
2609   if test "$ac_cv_force_align_arg_pointer" = "yes"; then
2610     HAVE_GCC_ALIGN_ARG_POINTER=1
2611   else
2612     HAVE_GCC_ALIGN_ARG_POINTER=
2613   fi
2615 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
2617 dnl Checks for header files.
2618 dnl ========================================================
2619 AC_HEADER_DIRENT
2620 case "$target_os" in
2621 freebsd*|openbsd*)
2622 # for stuff like -lXshm
2623     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2624     ;;
2625 esac
2626 MOZ_CHECK_COMMON_HEADERS
2628 dnl These are all the places some variant of statfs can be hiding.
2629 MOZ_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2631 dnl Quota support
2632 MOZ_CHECK_HEADERS(sys/quota.h sys/sysmacros.h)
2633 MOZ_CHECK_HEADERS([linux/quota.h],,,[#include <sys/socket.h>])
2635 dnl SCTP support - needs various network include headers
2636 MOZ_CHECK_HEADERS([linux/if_addr.h linux/rtnetlink.h],,,[#include <sys/socket.h>])
2638 MOZ_CHECK_HEADERS(sys/types.h netinet/in.h byteswap.h)
2640 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
2641 AC_CACHE_CHECK(for sockaddr_in.sin_len,
2642                    ac_cv_sockaddr_in_sin_len,
2643                    [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2644                                     #include <sys/types.h>
2645                                     #endif
2646                                     #include <netinet/in.h>
2647                                     struct sockaddr_in x;
2648                                     void *foo = (void*) &x.sin_len;],
2649                                    [],
2650                                    [ac_cv_sockaddr_in_sin_len=true],
2651                                    [ac_cv_sockaddr_in_sin_len=false])])
2652 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
2653   AC_DEFINE(HAVE_SIN_LEN)
2654 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
2655   AC_DEFINE(HAVE_SCONN_LEN)
2658 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
2659                ac_cv_sockaddr_in6_sin6_len,
2660                [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2661                                 #include <sys/types.h>
2662                                 #endif
2663                                 #include <netinet/in.h>
2664                                 struct sockaddr_in6 x;
2665                                 void *foo = (void*) &x.sin6_len;],
2666                                [],
2667                                [ac_cv_sockaddr_in6_sin6_len=true],
2668                                [ac_cv_sockaddr_in6_sin6_len=false])])
2669 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
2670   AC_DEFINE(HAVE_SIN6_LEN)
2673 AC_CACHE_CHECK(for sockaddr.sa_len,
2674                ac_cv_sockaddr_sa_len,
2675                [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2676                                 #include <sys/types.h>
2677                                 #endif
2678                                 #include <sys/socket.h>
2679                                 struct sockaddr x;
2680                                 void *foo = (void*) &x.sa_len;],
2681                                [],
2682                                [ac_cv_sockaddr_sa_len=true],
2683                                [ac_cv_sockaddr_sa_len=false])])
2684 if test "$ac_cv_sockaddr_sa_len" = true ; then
2685   AC_DEFINE(HAVE_SA_LEN)
2688 AC_ARG_ENABLE(dtrace,
2689               [  --enable-dtrace         build with dtrace support if available (default=no)],
2690               [enable_dtrace="yes"],)
2691 if test "x$enable_dtrace" = "xyes"; then
2692   MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
2693   if test -n "$HAVE_DTRACE"; then
2694       AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
2695   else
2696       AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
2697   fi
2699 AC_SUBST(HAVE_DTRACE)
2701 case $target in
2702 *-aix4.3*|*-aix5*)
2703     ;;
2705     MOZ_CHECK_HEADERS(sys/cdefs.h)
2706     ;;
2707 esac
2709 MOZ_LINUX_PERF_EVENT
2711 dnl Checks for libraries.
2712 dnl ========================================================
2713 case $target in
2714 *-hpux11.*)
2715     ;;
2717     AC_CHECK_LIB(c_r, gethostbyname_r)
2718     ;;
2719 esac
2721 dnl We don't want to link with libdl even if it's present on OS X, since
2722 dnl it's not used and not part of the default installation. OS/2 has dlfcn
2723 dnl in libc.
2724 dnl We don't want to link against libm or libpthread on Darwin since
2725 dnl they both are just symlinks to libSystem and explicitly linking
2726 dnl against libSystem causes issues when debugging (see bug 299601).
2727 case $target in
2728 *-darwin*)
2729     ;;
2731     AC_SEARCH_LIBS(dlopen, dl,
2732         MOZ_CHECK_HEADER(dlfcn.h,
2733         AC_DEFINE(HAVE_DLOPEN)))
2734     ;;
2735 esac
2737 _SAVE_CFLAGS="$CFLAGS"
2738 CFLAGS="$CFLAGS -D_GNU_SOURCE"
2739 AC_CHECK_FUNCS(dladdr memmem)
2740 CFLAGS="$_SAVE_CFLAGS"
2742 if test ! "$GNU_CXX"; then
2744     case $target in
2745     *-aix*)
2746         AC_CHECK_LIB(C_r, demangle)
2747         ;;
2748      *)
2749         AC_CHECK_LIB(C, demangle)
2750         ;;
2751      esac
2754 AC_CHECK_LIB(socket, socket)
2756 XLDFLAGS="$X_LIBS"
2757 XLIBS="$X_EXTRA_LIBS"
2759 dnl ========================================================
2760 dnl Checks for X libraries.
2761 dnl Ordering is important.
2762 dnl Xt is dependent upon SM as of X11R6
2763 dnl ========================================================
2764 if test "$no_x" = "yes"; then
2765     AC_DEFINE(NO_X11)
2766 else
2767     AC_DEFINE_UNQUOTED(FUNCPROTO,15)
2768     XLIBS="-lX11 $XLIBS"
2769     _SAVE_LDFLAGS="$LDFLAGS"
2770     LDFLAGS="$XLDFLAGS $LDFLAGS"
2771     AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
2772         [MISSING_X="$MISSING_X -lX11"], $XLIBS)
2773     AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
2774         [MISSING_X="$MISSING_X -lXext"], $XLIBS)
2776     AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
2777         unset ac_cv_lib_Xt_XtFree
2778         AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
2779         AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
2780         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
2781             [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
2782         ])
2784     # AIX needs the motif library linked before libXt to prevent
2785     # crashes in plugins linked against Motif - Bug #98892
2786     case "${target_os}" in
2787     aix*)
2788         XT_LIBS="-lXm $XT_LIBS"
2789         ;;
2790     esac
2792     dnl ========================================================
2793     dnl = Check for XShm
2794     dnl ========================================================
2795     AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
2796         $XLIBS $XEXT_LIBS)
2798     dnl ========================================================
2799     dnl = Check for Xss
2800     dnl ========================================================
2801     MOZ_CHECK_HEADER(X11/extensions/scrnsaver.h,
2802         AC_CHECK_LIB(Xss, XScreenSaverQueryInfo,
2803             [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS"
2804              AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS))
2806     LDFLAGS="$_SAVE_LDFLAGS"
2807 fi # $no_x
2809 AC_SUBST(XCFLAGS)
2810 AC_SUBST(XLDFLAGS)
2811 AC_SUBST(XLIBS)
2812 AC_SUBST(XEXT_LIBS)
2813 AC_SUBST(XT_LIBS)
2814 AC_SUBST(XSS_LIBS)
2816 dnl ========================================================
2817 dnl = pthread support
2818 dnl = Start by checking whether the system support pthreads
2819 dnl ========================================================
2820 case "$target_os" in
2821 darwin*)
2822     MOZ_USE_PTHREADS=1
2823     ;;
2825     MOZ_CHECK_PTHREADS(pthreads,
2826         MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
2827         MOZ_CHECK_PTHREADS(pthread,
2828             MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
2829             MOZ_CHECK_PTHREADS(c_r,
2830                 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
2831                 MOZ_CHECK_PTHREADS(c,
2832                     MOZ_USE_PTHREADS=1
2833                 )
2834             )
2835         )
2836     )
2837     ;;
2838 esac
2840 dnl ========================================================
2841 dnl Check the command line for --with-pthreads
2842 dnl ========================================================
2843 MOZ_ARG_WITH_BOOL(pthreads,
2844 [  --with-pthreads         Force use of system pthread library with NSPR ],
2845 [ if test "$MOZ_USE_PTHREADS"x = x; then
2846     AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
2847 fi],
2848     MOZ_USE_PTHREADS=
2849     _PTHREAD_LDFLAGS=
2852 dnl ========================================================
2853 dnl Do the platform specific pthread hackery
2854 dnl ========================================================
2855 if test "$MOZ_USE_PTHREADS"x != x
2856 then
2857     dnl
2858     dnl See if -pthread is supported.
2859     dnl
2860     rm -f conftest*
2861     ac_cv_have_dash_pthread=no
2862     AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
2863     echo 'int main() { return 0; }' | cat > conftest.c
2864     ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
2865     if test $? -eq 0; then
2866         if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2867             ac_cv_have_dash_pthread=yes
2868             case "$target_os" in
2869             freebsd*)
2870 # Freebsd doesn't use -pthread for compiles, it uses them for linking
2871                 ;;
2872             *)
2873                 CFLAGS="$CFLAGS -pthread"
2874                 CXXFLAGS="$CXXFLAGS -pthread"
2875                 ;;
2876             esac
2877         fi
2878     fi
2879     rm -f conftest*
2880     AC_MSG_RESULT($ac_cv_have_dash_pthread)
2882     dnl
2883     dnl See if -pthreads is supported.
2884     dnl
2885     ac_cv_have_dash_pthreads=no
2886     if test "$ac_cv_have_dash_pthread" = "no"; then
2887         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
2888         echo 'int main() { return 0; }' | cat > conftest.c
2889         ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
2890         if test $? -eq 0; then
2891             if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2892                 ac_cv_have_dash_pthreads=yes
2893                 CFLAGS="$CFLAGS -pthreads"
2894                 CXXFLAGS="$CXXFLAGS -pthreads"
2895             fi
2896         fi
2897         rm -f conftest*
2898         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
2899     fi
2901     case "$target" in
2902         *-*-freebsd*)
2903             AC_DEFINE(_REENTRANT)
2904             AC_DEFINE(_THREAD_SAFE)
2905             dnl -pthread links in -lpthread, so don't specify it explicitly.
2906             if test "$ac_cv_have_dash_pthread" = "yes"; then
2907                 _PTHREAD_LDFLAGS="-pthread"
2908             fi
2909             ;;
2911         *-*-openbsd*|*-*-bsdi*)
2912             AC_DEFINE(_REENTRANT)
2913             AC_DEFINE(_THREAD_SAFE)
2914             dnl -pthread links in -lc_r, so don't specify it explicitly.
2915             if test "$ac_cv_have_dash_pthread" = "yes"; then
2916                 _PTHREAD_LDFLAGS="-pthread"
2917             fi
2918             ;;
2920         *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
2921             AC_DEFINE(_REENTRANT)
2922             ;;
2924         *-aix4.3*|*-aix5*)
2925             AC_DEFINE(_REENTRANT)
2926             ;;
2928         *-hpux11.*)
2929             AC_DEFINE(_REENTRANT)
2930             ;;
2932         *-*-solaris*)
2933             AC_DEFINE(_REENTRANT)
2934             if test "$SOLARIS_SUNPRO_CC"; then
2935                 CFLAGS="$CFLAGS -mt"
2936                 CXXFLAGS="$CXXFLAGS -mt"
2937             fi
2938             ;;
2939     esac
2940     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
2941     AC_SUBST(MOZ_USE_PTHREADS)
2945 dnl Checks for library functions.
2946 dnl ========================================================
2947 AC_PROG_GCC_TRADITIONAL
2948 AC_FUNC_MEMCMP
2949 AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize localtime_r)
2951 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
2952 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
2953                ac_cv_clock_monotonic,
2954                [for libs in "" -lrt; do
2955                     _SAVE_LIBS="$LIBS"
2956                     LIBS="$LIBS $libs"
2957                     AC_TRY_LINK([#include <time.h>],
2958                                  [ struct timespec ts;
2959                                    clock_gettime(CLOCK_MONOTONIC, &ts); ],
2960                                  ac_cv_clock_monotonic=$libs
2961                                  LIBS="$_SAVE_LIBS"
2962                                  break,
2963                                  ac_cv_clock_monotonic=no)
2964                     LIBS="$_SAVE_LIBS"
2965                 done])
2966 if test "$ac_cv_clock_monotonic" != "no"; then
2967     HAVE_CLOCK_MONOTONIC=1
2968     REALTIME_LIBS=$ac_cv_clock_monotonic
2969     AC_DEFINE(HAVE_CLOCK_MONOTONIC)
2970     AC_SUBST(HAVE_CLOCK_MONOTONIC)
2971     AC_SUBST(REALTIME_LIBS)
2974 dnl check for wcrtomb/mbrtowc
2975 dnl =======================================================================
2976 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
2977 AC_LANG_SAVE
2978 AC_LANG_CPLUSPLUS
2979 AC_CACHE_CHECK(for wcrtomb,
2980     ac_cv_have_wcrtomb,
2981     [AC_TRY_LINK([#include <wchar.h>],
2982                  [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
2983                  ac_cv_have_wcrtomb="yes",
2984                  ac_cv_have_wcrtomb="no")])
2985 if test "$ac_cv_have_wcrtomb" = "yes"; then
2986     AC_DEFINE(HAVE_WCRTOMB)
2988 AC_CACHE_CHECK(for mbrtowc,
2989     ac_cv_have_mbrtowc,
2990     [AC_TRY_LINK([#include <wchar.h>],
2991                  [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
2992                  ac_cv_have_mbrtowc="yes",
2993                  ac_cv_have_mbrtowc="no")])
2994 if test "$ac_cv_have_mbrtowc" = "yes"; then
2995     AC_DEFINE(HAVE_MBRTOWC)
2997 AC_LANG_RESTORE
3000 AC_CACHE_CHECK(
3001     [for res_ninit()],
3002     ac_cv_func_res_ninit,
3003     [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
3004         dnl no need for res_ninit() on NetBSD and OpenBSD
3005         ac_cv_func_res_ninit=no
3006      else
3007         AC_TRY_LINK([
3008             #ifdef linux
3009             #define _BSD_SOURCE 1
3010             #endif
3011             #include <sys/types.h>
3012             #include <netinet/in.h>
3013             #include <arpa/nameser.h>
3014             #include <resolv.h>
3015             ],
3016             [int foo = res_ninit(&_res);],
3017             [ac_cv_func_res_ninit=yes],
3018             [ac_cv_func_res_ninit=no])
3019      fi
3020     ])
3022 if test "$ac_cv_func_res_ninit" = "yes"; then
3023     AC_DEFINE(HAVE_RES_NINIT)
3024 dnl must add the link line we do something as foolish as this... dougt
3025 dnl else
3026 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3027 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3030 AC_LANG_CPLUSPLUS
3032 case $target_os in
3033     darwin*|mingw*)
3034         ;;
3035     *)
3037 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3038     AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3039         AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3040 _SAVE_LIBS=$LIBS
3041 LIBS="$LIBS $_ICONV_LIBS"
3042 AC_CACHE_CHECK(
3043     [for iconv()],
3044     ac_cv_func_iconv,
3045     [AC_TRY_LINK([
3046         #include <stdlib.h>
3047         #include <iconv.h>
3048         ],
3049         [
3050             iconv_t h = iconv_open("", "");
3051             iconv(h, NULL, NULL, NULL, NULL);
3052             iconv_close(h);
3053         ],
3054         [ac_cv_func_iconv=yes],
3055         [ac_cv_func_iconv=no]
3056         )]
3057     )
3058 if test "$ac_cv_func_iconv" = "yes"; then
3059     AC_DEFINE(HAVE_ICONV)
3060     LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3061     LIBICONV="$_ICONV_LIBS"
3062     AC_CACHE_CHECK(
3063         [for iconv() with const input],
3064         ac_cv_func_const_iconv,
3065         [AC_TRY_COMPILE([
3066             #include <stdlib.h>
3067             #include <iconv.h>
3068             ],
3069             [
3070                 const char *input = "testing";
3071                 iconv_t h = iconv_open("", "");
3072                 iconv(h, &input, NULL, NULL, NULL);
3073                 iconv_close(h);
3074             ],
3075             [ac_cv_func_const_iconv=yes],
3076             [ac_cv_func_const_iconv=no]
3077             )]
3078         )
3079     if test "$ac_cv_func_const_iconv" = "yes"; then
3080         AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3081     fi
3083 LIBS=$_SAVE_LIBS
3085     ;;
3086 esac
3088 AM_LANGINFO_CODESET
3090 AC_LANG_C
3092 dnl **********************
3093 dnl *** va_copy checks ***
3094 AC_CACHE_CHECK([for an implementation of va_copy()],
3095                ac_cv_va_copy,
3096     [AC_TRY_COMPILE([#include <stdarg.h>
3097                      #include <stdlib.h>
3098         void f (int i, ...) {
3099             va_list args1, args2;
3100             va_start (args1, i);
3101             va_copy (args2, args1);
3102             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3103                 exit (1);
3104             va_end (args1); va_end (args2);
3105         }],
3106         [f(0, 42); return 0],
3107         [ac_cv_va_copy=yes],
3108         [ac_cv_va_copy=no]
3109     )]
3111 AC_CACHE_CHECK([whether va_list can be copied by value],
3112                ac_cv_va_val_copy,
3113     [AC_TRY_COMPILE([#include <stdarg.h>
3114                      #include <stdlib.h>
3115         void f (int i, ...) {
3116             va_list args1, args2;
3117             va_start (args1, i);
3118             args2 = args1;
3119             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3120                 exit (1);
3121             va_end (args1); va_end (args2);
3122         }],
3123         [f(0, 42); return 0],
3124         [ac_cv_va_val_copy=yes],
3125         [ac_cv_va_val_copy=no],
3126     )]
3128 if test "x$ac_cv_va_copy" = "xyes"; then
3129     AC_DEFINE(VA_COPY, va_copy)
3130     AC_DEFINE(HAVE_VA_COPY)
3133 if test "x$ac_cv_va_val_copy" = "xno"; then
3134    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3137 dnl ===================================================================
3138 dnl ========================================================
3139 dnl Put your C++ language/feature checks below
3140 dnl ========================================================
3141 AC_LANG_CPLUSPLUS
3143 ARM_ABI_PREFIX=
3144 if test "$GNU_CC"; then
3145   if test "$CPU_ARCH" = "arm" ; then
3146     AC_CACHE_CHECK(for ARM EABI,
3147         ac_cv_gcc_arm_eabi,
3148         [AC_TRY_COMPILE([],
3149                         [
3150 #if defined(__ARM_EABI__)
3151   return 0;
3152 #else
3153 #error Not ARM EABI.
3154 #endif
3155                         ],
3156                         ac_cv_gcc_arm_eabi="yes",
3157                         ac_cv_gcc_arm_eabi="no")])
3158     if test "$ac_cv_gcc_arm_eabi" = "yes"; then
3159         HAVE_ARM_EABI=1
3160         ARM_ABI_PREFIX=eabi-
3161     else
3162         ARM_ABI_PREFIX=oabi-
3163     fi
3164   fi
3166   TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
3169 dnl Check to see if we can resolve ambiguity with |using|.
3170 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3171                ac_cv_cpp_ambiguity_resolving_using,
3172                [AC_TRY_COMPILE(class X {
3173                                  public: int go(const X&) {return 3;}
3174                                          int jo(const X&) {return 3;}
3175                                };
3176                                class Y : public X {
3177                                  public:  int go(int) {return 2;}
3178                                           int jo(int) {return 2;}
3179                                           using X::jo;
3180                                  private: using X::go;
3181                                };,
3182                                X x; Y y; y.jo(x);,
3183                                ac_cv_cpp_ambiguity_resolving_using=yes,
3184                                ac_cv_cpp_ambiguity_resolving_using=no)])
3185 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3186    AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3189 dnl See if a dynamic_cast to void* gives the most derived object.
3190 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3191                ac_cv_cpp_dynamic_cast_void_ptr,
3192                [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3193                             class Y { int j; public: virtual ~Y() { } };
3194                             class Z : public X, public Y { int k; };
3196                             int main() {
3197                                  Z mdo;
3198                                  X *subx = (X*)&mdo;
3199                                  Y *suby = (Y*)&mdo;
3200                                  return !((((void*)&mdo != (void*)subx) &&
3201                                            ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3202                                           (((void*)&mdo != (void*)suby) &&
3203                                            ((void*)&mdo == dynamic_cast<void*>(suby))));
3204                             }],
3205                            ac_cv_cpp_dynamic_cast_void_ptr=yes,
3206                            ac_cv_cpp_dynamic_cast_void_ptr=no,
3207                            ac_cv_cpp_dynamic_cast_void_ptr=no)])
3208 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3209    AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3212 dnl note that this one is reversed - if the test fails, then
3213 dnl we require implementations of unused virtual methods. Which
3214 dnl really blows because it means we'll have useless vtable
3215 dnl bloat.
3216 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3217                ac_cv_cpp_unused_required,
3218                [AC_TRY_LINK(class X {private: virtual void never_called();};,
3219                                X x;,
3220                                ac_cv_cpp_unused_required=no,
3221                                ac_cv_cpp_unused_required=yes)])
3222 if test "$ac_cv_cpp_unused_required" = yes ; then
3223    AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3227 dnl Some compilers have trouble comparing a constant reference to a templatized
3228 dnl class to zero, and require an explicit operator==() to be defined that takes
3229 dnl an int. This test separates the strong from the weak.
3231 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3232                ac_cv_trouble_comparing_to_zero,
3233                [AC_TRY_COMPILE([#include <algorithm>
3234                                 template <class T> class Foo {};
3235                                 class T2;
3236                                 template <class T> int operator==(const T2*, const T&) { return 0; }
3237                                 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3238                                [Foo<int> f; return (0 != f);],
3239                                ac_cv_trouble_comparing_to_zero=no,
3240                                ac_cv_trouble_comparing_to_zero=yes)])
3241 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3242   AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3245 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
3246 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
3247 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
3248 # linking XUL.
3249 _SAVE_LDFLAGS=$LDFLAGS
3250 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
3251 AC_CACHE_CHECK(for __thread keyword for TLS variables,
3252                ac_cv_thread_keyword,
3253                [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
3254                             [return tlsIsMainThread;],
3255                             ac_cv_thread_keyword=yes,
3256                             ac_cv_thread_keyword=no)])
3257 LDFLAGS=$_SAVE_LDFLAGS
3258 # The custom dynamic linker doesn't support TLS variables
3259 MOZ_TLS=
3260 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
3261   # mips builds fail with TLS variables because of a binutils bug.
3262   # See bug 528687
3263   # OpenBSD doesn't have TLS support, and the test succeeds with clang++
3264   case "${target}" in
3265     mips*-*)
3266       :
3267       ;;
3268     *-android*|*-linuxandroid*)
3269       :
3270       ;;
3271     *-openbsd*)
3272       :
3273       ;;
3274     *)
3275       AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
3276       MOZ_TLS=1
3277       ;;
3278   esac
3281 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
3282 if test -n "$MOZ_LINKER"; then
3283   if test "$CPU_ARCH" = arm; then
3284     dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
3285     if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
3286       LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
3287       _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
3288     fi
3289   fi
3292 dnl The custom linker doesn't support text relocations, but NDK >= r6b
3293 dnl creates some (http://code.google.com/p/android/issues/detail?id=23203)
3294 dnl We however want to avoid these text relocations, and this can be done
3295 dnl by making gcc not link crtbegin and crtend. In the broken NDKs, crtend
3296 dnl doesn't contain anything at all, beside placeholders for some sections,
3297 dnl and crtbegin only contains a finalizer function that calls
3298 dnl __cxa_finalize. The custom linker actually takes care of calling
3299 dnl __cxa_finalize when the library doesn't call it itself, which makes it
3300 dnl safe not to link crtbegin. Besides, previous versions of the NDK didn't
3301 dnl link crtbegin and crtend at all.
3302 if test -n "$MOZ_LINKER" -a "$OS_TARGET" = "Android"; then
3303   AC_CACHE_CHECK([whether the CRT objects have text relocations],
3304     ac_cv_crt_has_text_relocations,
3305     [echo 'int foo() { return 0; }' > conftest.cpp
3306      if AC_TRY_COMMAND(${CXX-g++} -o conftest${DLL_SUFFIX} $CXXFLAGS $DSO_LDOPTS $LDFLAGS conftest.cpp $LIBS 1>&5) &&
3307         test -s conftest${DLL_SUFFIX}; then
3308        if ${TOOLCHAIN_PREFIX}readelf -d conftest${DLL_SUFFIX} | grep TEXTREL > /dev/null; then
3309          ac_cv_crt_has_text_relocations=yes
3310        else
3311          ac_cv_crt_has_text_relocations=no
3312        fi
3313      else
3314        AC_ERROR([couldn't compile a simple C file])
3315      fi
3316      rm -rf conftest*])
3317   if test "$ac_cv_crt_has_text_relocations" = yes; then
3318     dnl While we want libraries to skip the CRT files, we don't want
3319     dnl executables to be treated the same way. We thus set the flag
3320     dnl in DSO_LDOPTS and not LDFLAGS. However, to pass it to nspr,
3321     dnl we need to use LDFLAGS because nspr doesn't inherit DSO_LDOPTS.
3322     dnl Using LDFLAGS in nspr is safe, since we only really build
3323     dnl libraries there.
3324     DSO_LDOPTS="$DSO_LDOPTS -nostartfiles"
3325     NSPR_LDFLAGS="$NSPR_LDFLAGS -nostartfiles"
3326   fi
3329 dnl Check for the existence of various allocation headers/functions
3331 MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h"
3332 MALLOC_H=
3334 for file in $MALLOC_HEADERS; do
3335   MOZ_CHECK_HEADER($file, [MALLOC_H=$file])
3336   if test "$MALLOC_H" != ""; then
3337     AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
3338     break
3339   fi
3340 done
3342 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
3344 AC_CHECK_FUNCS(malloc_usable_size)
3346 dnl See if compiler supports some gcc-style attributes
3348 AC_CACHE_CHECK(for __attribute__((always_inline)),
3349                ac_cv_attribute_always_inline,
3350                [AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));],
3351                                [],
3352                                ac_cv_attribute_always_inline=yes,
3353                                ac_cv_attribute_always_inline=no)])
3355 AC_CACHE_CHECK(for __attribute__((malloc)),
3356                ac_cv_attribute_malloc,
3357                [AC_TRY_COMPILE([void* f(int) __attribute__((malloc));],
3358                                [],
3359                                ac_cv_attribute_malloc=yes,
3360                                ac_cv_attribute_malloc=no)])
3362 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
3363                ac_cv_attribute_warn_unused,
3364                [AC_TRY_COMPILE([int f(void) __attribute__((warn_unused_result));],
3365                                [],
3366                                ac_cv_attribute_warn_unused=yes,
3367                                ac_cv_attribute_warn_unused=no)])
3369 dnl End of C++ language/feature checks
3370 AC_LANG_C
3372 dnl ========================================================
3373 dnl =  Internationalization checks
3374 dnl ========================================================
3376 dnl Internationalization and Locale support is different
3377 dnl on various UNIX platforms.  Checks for specific i18n
3378 dnl features go here.
3380 dnl check for LC_MESSAGES
3381 AC_CACHE_CHECK(for LC_MESSAGES,
3382                ac_cv_i18n_lc_messages,
3383                [AC_TRY_COMPILE([#include <locale.h>],
3384                                [int category = LC_MESSAGES;],
3385                                ac_cv_i18n_lc_messages=yes,
3386                                ac_cv_i18n_lc_messages=no)])
3387 if test "$ac_cv_i18n_lc_messages" = yes; then
3388    AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3391 AC_HAVE_FUNCS(localeconv)
3392 fi # ! SKIP_COMPILER_CHECKS
3394 TARGET_XPCOM_ABI=
3395 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3396     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3399 dnl Mozilla specific options
3400 dnl ========================================================
3401 dnl The macros used for command line options
3402 dnl are defined in build/autoconf/altoptions.m4.
3404 dnl If the compiler supports these attributes, define them as
3405 dnl convenience macros.
3406 if test "$ac_cv_attribute_malloc" = yes ; then
3407   AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
3408 else
3409   AC_DEFINE(NS_ATTR_MALLOC,)
3412 if test "$ac_cv_attribute_warn_unused" = yes ; then
3413   AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
3414 else
3415   AC_DEFINE(NS_WARN_UNUSED_RESULT,)
3418 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
3419 dnl features that Windows actually does support.
3421 if test -n "$SKIP_COMPILER_CHECKS"; then
3422    dnl Windows has malloc.h
3423    AC_DEFINE(MALLOC_H, [<malloc.h>])
3424    AC_DEFINE(HAVE_FORCEINLINE)
3425    AC_DEFINE(HAVE_LOCALECONV)
3426 fi # SKIP_COMPILER_CHECKS
3428 dnl ========================================================
3429 dnl =
3430 dnl = Check for external package dependencies
3431 dnl =
3432 dnl ========================================================
3433 MOZ_ARG_HEADER(External Packages)
3435 MOZ_ARG_WITH_STRING(libxul-sdk,
3436 [  --with-libxul-sdk=PFX   Use the libXUL SDK at <PFX>],
3437   LIBXUL_SDK_DIR=$withval)
3439 if test "$LIBXUL_SDK_DIR" = "yes"; then
3440     AC_MSG_ERROR([--with-libxul-sdk must specify a path])
3441 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
3442     LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
3444     if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
3445         AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
3446     fi
3449 AC_SUBST(LIBXUL_SDK)
3451 if test -n "$LIBXUL_SDK"; then
3452     LIBXUL_DIST="$LIBXUL_SDK"
3453 else
3454     LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
3456 AC_SUBST(LIBXUL_DIST)
3458 SYSTEM_LIBXUL=
3460 MOZ_ARG_WITH_BOOL(system-libxul,
3461 [  --with-system-libxul    Use system installed libxul SDK],
3462     SYSTEM_LIBXUL=1)
3464 dnl ========================================================
3465 dnl = If NSPR was not detected in the system,
3466 dnl = use the one in the source tree (mozilla/nsprpub)
3467 dnl ========================================================
3468 MOZ_ARG_WITH_BOOL(system-nspr,
3469 [  --with-system-nspr      Use system installed NSPR],
3470     _USE_SYSTEM_NSPR=1 )
3472 if test -n "$_USE_SYSTEM_NSPR"; then
3473     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])])
3476 if test -n "$MOZ_NATIVE_NSPR"; then
3477     _SAVE_CFLAGS=$CFLAGS
3478     CFLAGS="$CFLAGS $NSPR_CFLAGS"
3479     AC_TRY_COMPILE([#include "prtypes.h"],
3480                 [#ifndef PR_STATIC_ASSERT
3481                  #error PR_STATIC_ASSERT not defined or requires including prtypes.h
3482                  #endif],
3483                 [MOZ_NATIVE_NSPR=1],
3484                 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
3485     AC_TRY_COMPILE([#include "prtypes.h"],
3486                 [#ifndef PR_UINT64
3487                  #error PR_UINT64 not defined or requires including prtypes.h
3488                  #endif],
3489                 [MOZ_NATIVE_NSPR=1],
3490                 AC_MSG_ERROR([system NSPR does not support PR_UINT64 or including prtypes.h does not provide it]))
3491     CFLAGS=$_SAVE_CFLAGS
3492 else
3493     if test -z "$LIBXUL_SDK"; then
3494         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
3495         if test -n "$GNU_CC"; then
3496             NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
3497         else
3498             NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
3499         fi
3500     else
3501         NSPR_CFLAGS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --includedir="${LIBXUL_DIST}/include/nspr" --cflags`
3502         NSPR_LIBS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --libdir="${LIBXUL_DIST}"/lib --libs`
3503     fi
3506 dnl set GRE_MILESTONE
3507 dnl ========================================================
3508 if test -n "$LIBXUL_SDK"; then
3509     GRE_MILESTONE=`$PYTHON "$_topsrcdir"/config/printconfigsetting.py "$LIBXUL_DIST"/bin/platform.ini Build Milestone`
3510 else
3511     GRE_MILESTONE=`tail -n 1 "$_topsrcdir"/config/milestone.txt 2>/dev/null || tail -1 "$_topsrcdir"/config/milestone.txt`
3513 AC_SUBST(GRE_MILESTONE)
3515 # set RELEASE_BUILD and NIGHTLY_BUILD variables depending on the cycle we're in
3516 # The logic works like this:
3517 # - if we have "a1" in GRE_MILESTONE, we're building Nightly (define NIGHTLY_BUILD)
3518 # - otherwise, if we have "a" in GRE_MILESTONE, we're building Nightly or Aurora
3519 # - otherwise, we're building Release/Beta (define RELEASE_BUILD)
3520 case "$GRE_MILESTONE" in
3521   *a1*)
3522       NIGHTLY_BUILD=1
3523       AC_DEFINE(NIGHTLY_BUILD)
3524       ;;
3525   *a*)
3526       ;;
3527   *)
3528       RELEASE_BUILD=1
3529       AC_DEFINE(RELEASE_BUILD)
3530       ;;
3531 esac
3532 AC_SUBST(NIGHTLY_BUILD)
3533 AC_SUBST(RELEASE_BUILD)
3535 dnl ========================================================
3536 dnl Disable compiling sources in unified mode.
3537 dnl ========================================================
3539 if test -z "$NIGHTLY_BUILD"; then
3540     MOZ_DISABLE_UNIFIED_COMPILATION=1
3543 MOZ_ARG_DISABLE_BOOL(unified-compilation,
3544 [  --disable-unified-compilation
3545                           Disable unified compilation of some C/C++ sources],
3546     MOZ_DISABLE_UNIFIED_COMPILATION=1,
3547     MOZ_DISABLE_UNIFIED_COMPILATION=)
3548 AC_SUBST(MOZ_DISABLE_UNIFIED_COMPILATION)
3550 dnl ========================================================
3551 dnl Multiprocess Firefox Nightly Testing UI
3552 dnl To be removed in Bug 1003313
3553 dnl ========================================================
3554 if test -z "$NIGHTLY_BUILD"; then
3555     E10S_TESTING_ONLY=1
3558 AC_SUBST(E10S_TESTING_ONLY)
3560 dnl ========================================================
3561 dnl system libevent Support
3562 dnl ========================================================
3563 MOZ_ARG_WITH_STRING(system-libevent,
3564 [  --with-system-libevent[=PFX]
3565                           Use system libevent [installed at prefix PFX]],
3566     LIBEVENT_DIR=$withval)
3568 _SAVE_CFLAGS=$CFLAGS
3569 _SAVE_LDFLAGS=$LDFLAGS
3570 _SAVE_LIBS=$LIBS
3571 if test "$LIBEVENT_DIR" = yes; then
3572     PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
3573         MOZ_NATIVE_LIBEVENT=1,
3574         LIBEVENT_DIR=/usr)
3576 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
3577     MOZ_NATIVE_LIBEVENT=
3578 elif test -z "$MOZ_NATIVE_LIBEVENT"; then
3579     CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
3580     LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
3581     MOZ_CHECK_HEADER(event.h,
3582         [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
3583              AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
3584          fi],
3585         AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
3586     AC_CHECK_LIB(event, event_init,
3587                  [MOZ_NATIVE_LIBEVENT=1
3588                   MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
3589                   MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
3590                  [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
3592 CFLAGS=$_SAVE_CFLAGS
3593 LDFLAGS=$_SAVE_LDFLAGS
3594 LIBS=$_SAVE_LIBS
3596 AC_SUBST(MOZ_NATIVE_LIBEVENT)
3597 AC_SUBST(MOZ_LIBEVENT_CFLAGS)
3598 AC_SUBST(MOZ_LIBEVENT_LIBS)
3600 dnl ========================================================
3601 dnl = If NSS was not detected in the system,
3602 dnl = use the one in the source tree (mozilla/security/nss)
3603 dnl ========================================================
3605 MOZ_ARG_WITH_BOOL(system-nss,
3606 [  --with-system-nss       Use system installed NSS],
3607     _USE_SYSTEM_NSS=1 )
3609 if test -n "$_USE_SYSTEM_NSS"; then
3610     AM_PATH_NSS(3.16, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
3613 if test -n "$MOZ_NATIVE_NSS"; then
3614    NSS_LIBS="$NSS_LIBS -lcrmf"
3615 else
3616    NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
3618    if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT"; then
3619        NSS_LIBS="\
3620         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
3621         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
3622         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
3623         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
3624         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
3625    else
3626        NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
3627    fi
3630 dnl ======================
3631 dnl Detect yasm
3632 dnl ======================
3634 AC_MSG_CHECKING([for YASM assembler])
3635 AC_CHECK_PROGS(YASM, yasm, "")
3637 if test -n "$YASM"; then
3638   dnl Pull out yasm's version string
3639   YASM_VERSION=`yasm --version | $AWK '/^yasm/ { print $2 }'`
3640   _YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'`
3641   _YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'`
3642   _YASM_RELEASE=`      echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'`
3643   _YASM_BUILD=`        echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
3646 if test -z "$SKIP_LIBRARY_CHECKS"; then
3647 dnl system JPEG support
3648 dnl ========================================================
3649 MOZ_ARG_WITH_STRING(system-jpeg,
3650 [  --with-system-jpeg[=PFX]
3651                           Use system libjpeg [installed at prefix PFX]],
3652     JPEG_DIR=$withval)
3654 _SAVE_CFLAGS=$CFLAGS
3655 _SAVE_LDFLAGS=$LDFLAGS
3656 _SAVE_LIBS=$LIBS
3657 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
3658     CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
3659     LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
3661 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
3662     MOZ_NATIVE_JPEG=
3663 else
3664     AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [MOZ_NATIVE_JPEG=1 MOZ_JPEG_LIBS="-ljpeg"], MOZ_NATIVE_JPEG=)
3667 if test "$MOZ_NATIVE_JPEG" = 1; then
3668     AC_TRY_COMPILE([ #include <stdio.h>
3669                      #include <sys/types.h>
3670                      #include <jpeglib.h> ],
3671                    [ #if JPEG_LIB_VERSION < $MOZJPEG
3672                      #error "Insufficient JPEG library version ($MOZJPEG required)."
3673                      #endif
3674                      #ifndef JCS_EXTENSIONS
3675                      #error "libjpeg-turbo JCS_EXTENSIONS required"
3676                      #endif
3677                      ],
3678                    MOZ_NATIVE_JPEG=1,
3679                    AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg]))
3681 CFLAGS=$_SAVE_CFLAGS
3682 LDFLAGS=$_SAVE_LDFLAGS
3683 LIBS=$_SAVE_LIBS
3685 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$MOZ_NATIVE_JPEG" = 1; then
3686     MOZ_JPEG_CFLAGS="-I${JPEG_DIR}/include"
3687     MOZ_JPEG_LIBS="-L${JPEG_DIR}/lib ${MOZ_JPEG_LIBS}"
3689 fi # SKIP_LIBRARY_CHECKS
3691 dnl system ZLIB support
3692 dnl ========================================================
3693 MOZ_ZLIB_CHECK([1.2.3])
3695 if test "$MOZ_NATIVE_ZLIB" != 1; then
3696     MOZ_ZLIB_CFLAGS="-I${_topsrcdir}/modules/zlib/src"
3697     MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,'"$MOZ_BUILD_ROOT"'/modules/zlib/src)'
3700 if test "$MOZ_LINKER" = 1 -a "$MOZ_NATIVE_ZLIB" != 1; then
3701     AC_MSG_ERROR([Custom dynamic linker requires --with-system-zlib])
3704 MOZ_PNG_ARM_NEON=
3706 if test -z "$SKIP_LIBRARY_CHECKS"; then
3707 dnl system BZIP2 Support
3708 dnl ========================================================
3709 MOZ_ARG_WITH_STRING(system-bz2,
3710 [  --with-system-bz2[=PFX]
3711                           Use system libbz2 [installed at prefix PFX]],
3712     BZ2_DIR=$withval)
3714 _SAVE_CFLAGS=$CFLAGS
3715 _SAVE_LDFLAGS=$LDFLAGS
3716 _SAVE_LIBS=$LIBS
3717 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
3718     CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
3719     LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
3721 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
3722     MOZ_NATIVE_BZ2=
3723 else
3724     AC_CHECK_LIB(bz2, BZ2_bzread, [MOZ_NATIVE_BZ2=1 MOZ_BZ2_LIBS="-lbz2"],
3725     [MOZ_NATIVE_BZ2= MOZ_BZ2_CFLAGS= MOZ_BZ2_LIBS=])
3727 CFLAGS=$_SAVE_CFLAGS
3728 LDFLAGS=$_SAVE_LDFLAGS
3729 LIBS=$_SAVE_LIBS
3731 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$MOZ_NATIVE_BZ2" = 1; then
3732     MOZ_BZ2_CFLAGS="-I${BZ2_DIR}/include"
3733     MOZ_BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
3736 dnl ========================================================
3737 dnl system PNG Support
3738 dnl ========================================================
3739 MOZ_ARG_WITH_STRING(system-png,
3740 [  --with-system-png[=PFX]
3741                           Use system libpng [installed at prefix PFX]],
3742     PNG_DIR=$withval)
3744 _SAVE_CFLAGS=$CFLAGS
3745 _SAVE_LDFLAGS=$LDFLAGS
3746 _SAVE_LIBS=$LIBS
3747 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
3748     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
3749     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
3751 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
3752     MOZ_NATIVE_PNG=
3753 else
3754     AC_CHECK_LIB(png, png_get_valid, [MOZ_NATIVE_PNG=1 MOZ_PNG_LIBS="-lpng"],
3755                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
3756     AC_CHECK_LIB(png, png_get_acTL, ,
3757                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
3759 if test "$MOZ_NATIVE_PNG" = 1; then
3760     AC_TRY_COMPILE([ #include <stdio.h>
3761                      #include <sys/types.h>
3762                      #include <png.h> ],
3763                    [ #if PNG_LIBPNG_VER < $MOZPNG
3764                      #error "Insufficient libpng version ($MOZPNG required)."
3765                      #endif
3766                      #ifndef PNG_UINT_31_MAX
3767                      #error "Insufficient libpng version."
3768                      #endif ],
3769                    MOZ_NATIVE_PNG=1,
3770                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
3772 CFLAGS=$_SAVE_CFLAGS
3773 LDFLAGS=$_SAVE_LDFLAGS
3774 LIBS=$_SAVE_LIBS
3776 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_NATIVE_PNG" = 1; then
3777     MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
3778     MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
3781 MOZ_PNG_ARM_NEON_CHECK=
3782 if test "$MOZ_NATIVE_PNG" != 1 -a "$CPU_ARCH" = "arm" ; then
3783     MOZ_ARG_ENABLE_STRING(png-arm-neon-support,
3784         [  --enable-png-arm-neon-support=TYPE
3785              Options include:
3786                  no
3787                  check (default)
3788                  nocheck (faster but unsafe)],
3789         [MOZ_PNG_ARM_NEON_SUPPORT=$enableval ] )
3790     case "$MOZ_PNG_ARM_NEON_SUPPORT" in
3791         no)
3792             # enable-png-arm-neon-support = no
3793             ;;
3794         nocheck)
3795             # enable-png-arm-neon-support = nocheck
3796             MOZ_PNG_ARM_NEON=1
3797             ;;
3798         *)
3799             MOZ_PNG_ARM_NEON=1
3800             MOZ_PNG_ARM_NEON_CHECK=1
3801             ;;
3802     esac
3805 AC_SUBST(MOZ_PNG_ARM_NEON_CHECK)
3807 fi # SKIP_LIBRARY_CHECKS
3809 AC_SUBST(MOZ_PNG_ARM_NEON)
3811 dnl ========================================================
3812 dnl system HunSpell Support
3813 dnl ========================================================
3814 MOZ_ARG_ENABLE_BOOL(system-hunspell,
3815 [  --enable-system-hunspell
3816                           Use system hunspell (located with pkgconfig)],
3817     MOZ_NATIVE_HUNSPELL=1 )
3819 if test -n "$MOZ_NATIVE_HUNSPELL"; then
3820     PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
3823 AC_SUBST(MOZ_NATIVE_HUNSPELL)
3825 dnl ========================================================
3826 dnl system libffi Support
3827 dnl ========================================================
3828 MOZ_CONFIG_FFI()
3830 if test -n "$MOZ_NATIVE_FFI"; then
3831     MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_FFI_LIBS"
3834 # split JS out by default to avoid VS2005 PGO crash (bug 591836).
3835 if test "$OS_ARCH" = "WINNT"; then
3836   JS_SHARED_LIBRARY=1
3839 MOZ_ARG_ENABLE_BOOL(shared-js,
3840 [  --enable-shared-js
3841                           Create a shared JavaScript library.],
3842     JS_SHARED_LIBRARY=1,
3843     JS_SHARED_LIBRARY=)
3845 dnl ========================================================
3846 dnl Java SDK support
3847 dnl ========================================================
3849 JAVA_BIN_PATH=
3850 MOZ_ARG_WITH_STRING(java-bin-path,
3851 [  --with-java-bin-path=dir
3852                           Location of Java binaries (java, javac, jar)],
3853     JAVA_BIN_PATH=$withval)
3855 dnl ========================================================
3856 dnl =
3857 dnl = Application
3858 dnl =
3859 dnl ========================================================
3861 MOZ_ARG_HEADER(Application)
3863 ENABLE_TESTS=1
3864 ENABLE_SYSTEM_EXTENSION_DIRS=1
3865 MOZ_BRANDING_DIRECTORY=
3866 MOZ_OFFICIAL_BRANDING=
3867 MOZ_FEEDS=1
3868 MOZ_WEBAPP_RUNTIME=
3869 MOZ_JSDEBUGGER=1
3870 MOZ_AUTH_EXTENSION=1
3871 MOZ_RAW=
3872 MOZ_VORBIS=
3873 MOZ_TREMOR=
3874 MOZ_WAVE=1
3875 MOZ_SAMPLE_TYPE_FLOAT32=
3876 MOZ_SAMPLE_TYPE_S16=
3877 MOZ_OPUS=1
3878 MOZ_WEBM=1
3879 MOZ_GSTREAMER=
3880 MOZ_DIRECTSHOW=
3881 MOZ_WMF=
3882 MOZ_FMP4=
3883 MOZ_FFMPEG=
3884 MOZ_WEBRTC=1
3885 MOZ_PEERCONNECTION=
3886 MOZ_SRTP=
3887 MOZ_WEBRTC_SIGNALING=
3888 MOZ_WEBRTC_ASSERT_ALWAYS=1
3889 MOZ_SCTP=
3890 MOZ_MEDIA_PLUGINS=
3891 MOZ_MEDIA_NAVIGATOR=
3892 MOZ_OMX_PLUGIN=
3893 MOZ_VPX=
3894 MOZ_VPX_ERROR_CONCEALMENT=
3895 MOZ_WEBSPEECH=1
3896 VPX_AS=
3897 VPX_ASFLAGS=
3898 VPX_AS_DASH_C_FLAG=
3899 VPX_AS_CONVERSION=
3900 VPX_ASM_SUFFIX=
3901 VPX_X86_ASM=
3902 VPX_ARM_ASM=
3903 LIBJPEG_TURBO_AS=
3904 LIBJPEG_TURBO_ASFLAGS=
3905 LIBJPEG_TURBO_X86_ASM=
3906 LIBJPEG_TURBO_X64_ASM=
3907 LIBJPEG_TURBO_ARM_ASM=
3908 MOZ_LOOP=$NIGHTLY_BUILD
3909 MOZ_PERMISSIONS=1
3910 MOZ_PLACES=1
3911 MOZ_SOCIAL=1
3912 MOZ_PREF_EXTENSIONS=1
3913 MOZ_PROFILELOCKING=1
3914 MOZ_REFLOW_PERF=
3915 MOZ_SAFE_BROWSING=
3916 MOZ_HELP_VIEWER=
3917 MOZ_SPELLCHECK=1
3918 MOZ_ANDROID_OMTC=
3919 MOZ_TOOLKIT_SEARCH=1
3920 MOZ_UI_LOCALE=en-US
3921 MOZ_UNIVERSALCHARDET=1
3922 MOZ_URL_CLASSIFIER=
3923 MOZ_XUL=1
3924 MOZ_ZIPWRITER=1
3925 NS_PRINTING=1
3926 MOZ_PDF_PRINTING=
3927 MOZ_DISABLE_CRYPTOLEGACY=
3928 NSS_DISABLE_DBM=
3929 NECKO_COOKIES=1
3930 NECKO_PROTOCOLS_DEFAULT="about app data file ftp http res viewsource websocket wyciwyg device"
3931 if test -n "$MOZ_RTSP"; then
3932   NECKO_PROTOCOLS_DEFAULT="$NECKO_PROTOCOLS_DEFAULT rtsp"
3934 USE_ARM_KUSER=
3935 BUILD_CTYPES=1
3936 MOZ_USE_NATIVE_POPUP_WINDOWS=
3937 MOZ_ANDROID_HISTORY=
3938 MOZ_WEBSMS_BACKEND=
3939 MOZ_ANDROID_BEAM=
3940 MOZ_ANDROID_SYNTHAPKS=
3941 ACCESSIBILITY=1
3942 MOZ_TIME_MANAGER=
3943 MOZ_PAY=
3944 MOZ_AUDIO_CHANNEL_MANAGER=
3945 NSS_NO_LIBPKIX=
3946 MOZ_CONTENT_SANDBOX=
3947 MOZ_CONTENT_SANDBOX_REPORTER=1
3948 JSGC_USE_EXACT_ROOTING=
3949 JSGC_GENERATIONAL=
3951 case "$target_os" in
3952     mingw*)
3953         NS_ENABLE_TSF=1
3954         AC_DEFINE(NS_ENABLE_TSF)
3955         ;;
3956 esac
3958 case "${target}" in
3959     *-android*|*-linuxandroid*)
3960         if test "$CPU_ARCH" = "arm" ; then
3961           USE_ARM_KUSER=1
3962         fi
3964         NSS_DISABLE_DBM=1
3965         MOZ_THEME_FASTSTRIPE=1
3966         MOZ_TREE_FREETYPE=1
3967         MOZ_MEMORY=1
3968         MOZ_RAW=1
3969         ;;
3971 esac
3973 MOZ_ARG_WITH_STRING(external-source-dir,
3974 [  --with-external-source-dir=dir
3975                           External directory containing additional build files.],
3976 [ EXTERNAL_SOURCE_DIR=$withval])
3977 AC_SUBST(EXTERNAL_SOURCE_DIR)
3979 MOZ_ARG_ENABLE_STRING(application,
3980 [  --enable-application=APP
3981                           Options include:
3982                             browser (Firefox)
3983                             xulrunner
3984                             tools/update-packaging (AUS-related packaging tools)],
3985 [ MOZ_BUILD_APP=$enableval ] )
3987 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
3988 [  --with-xulrunner-stub-name=appname   Create the xulrunner stub with the given name],
3989   XULRUNNER_STUB_NAME=$withval)
3991 if test -z "$XULRUNNER_STUB_NAME"; then
3992   case "$target_os" in
3993   darwin*)
3994     XULRUNNER_STUB_NAME=xulrunner
3995     ;;
3996   *)
3997     XULRUNNER_STUB_NAME=xulrunner-stub
3998   esac
4000 AC_SUBST(XULRUNNER_STUB_NAME)
4002 AC_MSG_CHECKING([for application to build])
4003 if test -z "$MOZ_BUILD_APP"; then
4004   AC_MSG_RESULT([browser])
4005   MOZ_BUILD_APP=browser
4006 else
4007   # "mobile" no longer exists.
4008   if test "$MOZ_BUILD_APP" = "mobile" ; then
4009     AC_MSG_RESULT([none])
4010     AC_MSG_ERROR([--enable-application=mobile is no longer supported.])
4011   fi
4012   # We have a valid application only if it has a build.mk file in its top
4013   # directory.
4014   if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4015     AC_MSG_RESULT([none])
4016     AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4017   else
4018     AC_MSG_RESULT([$MOZ_BUILD_APP])
4019   fi
4022 # The app update channel is 'default' when not supplied. The value is used in
4023 # the application's confvars.sh so it must be set before confvars.sh is called.
4024 MOZ_ARG_ENABLE_STRING([update-channel],
4025 [  --enable-update-channel=CHANNEL
4026                           Select application update channel (default=default)],
4027     MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
4029 if test -z "$MOZ_UPDATE_CHANNEL"; then
4030     MOZ_UPDATE_CHANNEL=default
4032 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
4033 AC_SUBST(MOZ_UPDATE_CHANNEL)
4035 # Allow to specify a Mozilla API key file that contains the secret key to be
4036 # used for various Mozilla API requests.
4037 MOZ_ARG_WITH_STRING(mozilla-api-keyfile,
4038 [  --with-mozilla-api-keyfile=file   Use the secret key contained in the given keyfile for Mozilla API requests],
4039   MOZ_MOZILLA_API_KEY=`cat $withval`)
4040 if test -z "$MOZ_MOZILLA_API_KEY"; then
4041     MOZ_MOZILLA_API_KEY=no-mozilla-api-key
4043 AC_SUBST(MOZ_MOZILLA_API_KEY)
4045 # Allow to specify a Google API key file that contains the secret key to be
4046 # used for various Google API requests.
4047 MOZ_ARG_WITH_STRING(google-api-keyfile,
4048 [  --with-google-api-keyfile=file   Use the secret key contained in the given keyfile for Google API requests],
4049   MOZ_GOOGLE_API_KEY=`cat $withval`)
4050 if test -z "$MOZ_GOOGLE_API_KEY"; then
4051     MOZ_GOOGLE_API_KEY=no-google-api-key
4053 AC_SUBST(MOZ_GOOGLE_API_KEY)
4055 # Allow specifying a Bing API key file that contains the client ID and the
4056 # secret key to be used for the Bing Translation API requests.
4057 MOZ_ARG_WITH_STRING(bing-api-keyfile,
4058 [  --with-bing-api-keyfile=file   Use the client id and secret key contained in the given keyfile for Bing API requests],
4059  [MOZ_BING_API_CLIENTID=`cat $withval | cut -f 1 -d " "`
4060   MOZ_BING_API_KEY=`cat $withval | cut -f 2 -d " "`])
4061 if test -z "$MOZ_BING_API_CLIENTID"; then
4062     MOZ_BING_API_CLIENTID=no-bing-api-clientid
4063     MOZ_BING_API_KEY=no-bing-api-key
4065 AC_SUBST(MOZ_BING_API_CLIENTID)
4066 AC_SUBST(MOZ_BING_API_KEY)
4068 # Allow the application to influence configure with a confvars.sh script.
4069 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4070 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4071   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4072   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4073 else
4074   AC_MSG_RESULT([no])
4077 # Allow influencing configure with a defines.sh script.
4078 . "${srcdir}/build/defines.sh"
4080 # If we're not building a release build, define EARLY_BETA_OR_EARLIER if it is
4081 # set in defines.sh
4082 if test "$BUILDING_RELEASE"; then
4083   # Override value in defines.sh, if any
4084   EARLY_BETA_OR_EARLIER=
4085 elif test "$EARLY_BETA_OR_EARLIER"; then
4086   AC_DEFINE(EARLY_BETA_OR_EARLIER)
4088 AC_SUBST(EARLY_BETA_OR_EARLIER)
4090 # Allow the application to provide a subconfigure script
4091 if test -f "${srcdir}/${MOZ_BUILD_APP}/configure.in" ; then
4092   do_output_subdirs() {
4093     if test -n "$_subconfigure_subdirs"; then
4094       AC_MSG_ERROR([Cannot specify more than one sub-sub-configure])
4095      fi
4096     _subconfigure_subdir="$1"
4097     _subconfigure_config_args="$ac_configure_args"
4098   }
4099   tmpscript=`$PYTHON -c 'import os, tempfile; print tempfile.mktemp(prefix="subscript.").replace(os.sep, "/")'` || exit 1
4100   m4 "${srcdir}/build/autoconf/subconfigure.m4" \
4101      "${srcdir}/build/autoconf/altoptions.m4" \
4102      "${srcdir}/${MOZ_BUILD_APP}/configure.in" > $tmpscript
4103   . $tmpscript
4104   rm -f $tmpscript
4107 # Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig
4108 MOZ_ARG_WITH_STRING(app-name,
4109 [--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME],
4110 WITH_APP_NAME=$withval,
4113 if test -n "$WITH_APP_NAME" ; then
4114     MOZ_APP_NAME="$WITH_APP_NAME"
4117 MOZ_ARG_WITH_STRING(app-basename,
4118 [--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME],
4119 WITH_APP_BASENAME=$withval,
4122 if test -n "$WITH_APP_BASENAME" ; then
4123     MOZ_APP_BASENAME="$WITH_APP_BASENAME"
4126 # Now is a good time to test for logic errors, define mismatches, etc.
4127 case "$MOZ_BUILD_APP" in
4128 xulrunner)
4129   if test "$LIBXUL_SDK"; then
4130     AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4131   fi
4132   ;;
4133 esac
4135 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4136 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4137 # MOZ_BUILD_APP.
4138 case "$MOZ_BUILD_APP" in
4139 browser)
4140   AC_DEFINE(MOZ_PHOENIX)
4141   ;;
4143 xulrunner)
4144   AC_DEFINE(MOZ_XULRUNNER)
4145   ;;
4146 b2g)
4147   AC_DEFINE(MOZ_B2G)
4148   ;;
4149 b2g/dev)
4150   AC_DEFINE(MOZ_B2G)
4151   AC_DEFINE(MOZ_MULET)
4152   ;;
4153 esac
4155 AC_SUBST(MOZ_BUILD_APP)
4156 AC_SUBST(MOZ_PHOENIX)
4157 AC_SUBST(MOZ_XULRUNNER)
4158 AC_SUBST(MOZ_B2G)
4159 AC_SUBST(MOZ_MULET)
4160 AC_SUBST(MOZ_B2G_VERSION)
4162 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4164 dnl ========================================================
4165 dnl Check android sdk version depending on mobile target
4166 dnl ========================================================
4168 if test -z "$gonkdir" ; then
4169     # Minimum Android SDK API Level we require.
4170     case "$MOZ_BUILD_APP" in
4171     mobile/android)
4172         android_min_api_level=16
4173         case "$target" in
4174         *-android*|*-linuxandroid*)
4175             :
4176             ;;
4177         *)
4178             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])
4179             ;;
4180         esac
4181         ;;
4182     esac
4184     MOZ_ANDROID_SDK($android_min_api_level)
4187 dnl ========================================================
4188 dnl =
4189 dnl = Toolkit Options
4190 dnl =
4191 dnl ========================================================
4192 MOZ_ARG_HEADER(Toolkit Options)
4194     dnl ========================================================
4195     dnl = Select the default toolkit
4196     dnl ========================================================
4197     MOZ_ARG_ENABLE_STRING(default-toolkit,
4198     [  --enable-default-toolkit=TK
4199                           Select default toolkit
4200                           Platform specific defaults:
4201                             Mac OS X - cairo-cocoa
4202                             Win32 - cairo-windows
4203                             * - cairo-gtk2
4204                             * - cairo-gtk3
4205                             * - cairo-qt],
4206     [ _DEFAULT_TOOLKIT=$enableval ],
4207     [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4209     if test "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4210         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4211         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4212         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk3" \
4213         -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4214         -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
4215         -o "$_DEFAULT_TOOLKIT" = "cairo-uikit" \
4216         -o "$_DEFAULT_TOOLKIT" = "cairo-android" \
4217         -o "$_DEFAULT_TOOLKIT" = "cairo-gonk"
4218     then
4219         dnl nglayout only supports building with one toolkit,
4220         dnl so ignore everything after the first comma (",").
4221         MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4222     else
4223         AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4224     fi
4226 MOZ_ARG_WITHOUT_BOOL(x,
4227 [  --without-x              Build without X11],
4228     WITHOUT_X11=1)
4230 dnl ========================================================
4231 dnl = Enable the toolkit as needed                         =
4232 dnl ========================================================
4234 MOZ_WIDGET_GTK=
4236 case "$MOZ_WIDGET_TOOLKIT" in
4238 cairo-windows)
4239     MOZ_WIDGET_TOOLKIT=windows
4240     MOZ_WEBGL=1
4241     MOZ_PDF_PRINTING=1
4242     MOZ_INSTRUMENT_EVENT_LOOP=1
4243     if test -n "$GNU_CC"; then
4244         MOZ_FOLD_LIBS=
4245     fi
4246     ;;
4248 cairo-gtk3)
4249     MOZ_WIDGET_TOOLKIT=gtk3
4250     MOZ_ENABLE_GTK=1
4251     MOZ_ENABLE_GTK3=1
4252     MOZ_ENABLE_XREMOTE=1
4253     MOZ_WEBGL=1
4254     MOZ_GL_DEFAULT_PROVIDER=GLX
4256     AC_DEFINE(MOZ_X11)
4257     MOZ_X11=1
4258     USE_FC_FREETYPE=1
4260     TK_CFLAGS='$(MOZ_GTK3_CFLAGS)'
4261     TK_LIBS='$(MOZ_GTK3_LIBS)'
4262     MOZ_WIDGET_GTK=3
4263     AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK)
4264     MOZ_PDF_PRINTING=1
4265     MOZ_INSTRUMENT_EVENT_LOOP=1
4266     ;;
4268 cairo-gtk2|cairo-gtk2-x11)
4269     MOZ_WIDGET_TOOLKIT=gtk2
4270     MOZ_ENABLE_GTK=1
4271     MOZ_ENABLE_GTK2=1
4272     MOZ_ENABLE_XREMOTE=1
4273     MOZ_WEBGL=1
4274     MOZ_GL_DEFAULT_PROVIDER=GLX
4276     AC_DEFINE(MOZ_X11)
4277     MOZ_X11=1
4278     USE_FC_FREETYPE=1
4280     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4281     TK_LIBS='$(MOZ_GTK2_LIBS)'
4282     AC_DEFINE(MOZ_WIDGET_GTK2)
4283     MOZ_WIDGET_GTK=2
4284     AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK)
4285     MOZ_PDF_PRINTING=1
4286     MOZ_INSTRUMENT_EVENT_LOOP=1
4287     ;;
4289 cairo-qt)
4290     MOZ_WIDGET_TOOLKIT=qt
4291     MOZ_ENABLE_QT=1
4292     if test -z "$WITHOUT_X11"; then
4293       MOZ_ENABLE_XREMOTE=1
4294       MOZ_GL_DEFAULT_PROVIDER=GLX
4295       MOZ_X11=1
4296       AC_DEFINE(MOZ_X11)
4297       XT_LIBS=
4298     fi
4300     MOZ_WEBGL=1
4301     USE_FC_FREETYPE=1
4302     TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4303     TK_LIBS='$(MOZ_QT_LIBS)'
4304     AC_DEFINE(MOZ_WIDGET_QT)
4305     MOZ_PDF_PRINTING=1
4306     AC_DEFINE(QT_NO_KEYWORDS)
4307     ;;
4309 cairo-cocoa)
4310     MOZ_WIDGET_TOOLKIT=cocoa
4311     AC_DEFINE(MOZ_WIDGET_COCOA)
4312     LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
4313     TK_LIBS='-framework CoreLocation -framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
4314     TK_CFLAGS="-DNO_X11"
4315     CFLAGS="$CFLAGS $TK_CFLAGS"
4316     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4317     XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/bin/XUL $(call EXPAND_LIBNAME_PATH,mozalloc,$(LIBXUL_DIST)/bin)'
4318     MOZ_USER_DIR="Mozilla"
4319     MOZ_FS_LAYOUT=bundle
4320     MOZ_WEBGL=1
4321     MOZ_INSTRUMENT_EVENT_LOOP=1
4322     ;;
4324 cairo-uikit)
4325     MOZ_WIDGET_TOOLKIT=uikit
4326     AC_DEFINE(MOZ_WIDGET_UIKIT)
4327     LDFLAGS="$LDFLAGS -framework UIKit -lobjc"
4328     TK_CFLAGS="-DNO_X11"
4329     TK_LIBS='-framework Foundation -framework CoreFoundation -framework CoreGraphics -framework CoreText'
4330     CFLAGS="$CFLAGS $TK_CFLAGS"
4331     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4332     XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/bin/XUL $(call EXPAND_LIBNAME_PATH,mozalloc,$(LIBXUL_DIST)/bin)'
4333     MOZ_USER_DIR="Mozilla"
4334     MOZ_FS_LAYOUT=bundle
4335     ;;
4337 cairo-android)
4338     AC_DEFINE(MOZ_WIDGET_ANDROID)
4339     MOZ_WIDGET_TOOLKIT=android
4340     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4341     TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4342     MOZ_WEBGL=1
4343     MOZ_PDF_PRINTING=1
4344     MOZ_INSTRUMENT_EVENT_LOOP=1
4345     ;;
4347 cairo-gonk)
4348     XPCOM_FROZEN_LDOPTS='$(call EXPAND_LIBNAME_PATH,xul mozalloc,$(LIBXUL_DIST)/lib)'
4349     AC_DEFINE(MOZ_WIDGET_GONK)
4350     AC_DEFINE(MOZ_TOUCH)
4351     MOZ_WIDGET_TOOLKIT=gonk
4352     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4353     TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4354     MOZ_WEBGL=1
4355     MOZ_PDF_PRINTING=1
4356     MOZ_TOUCH=1
4357     MOZ_INSTRUMENT_EVENT_LOOP=1
4358     ;;
4360 esac
4362 AC_SUBST(MOZ_PDF_PRINTING)
4363 if test "$MOZ_PDF_PRINTING"; then
4364    PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
4365    AC_DEFINE(MOZ_PDF_PRINTING)
4368 if test "$MOZ_ENABLE_XREMOTE"; then
4369     AC_DEFINE(MOZ_ENABLE_XREMOTE)
4372 if test "$MOZ_INSTRUMENT_EVENT_LOOP"; then
4373    AC_DEFINE(MOZ_INSTRUMENT_EVENT_LOOP)
4376 if test "$COMPILE_ENVIRONMENT"; then
4377   if test "$MOZ_ENABLE_GTK3"; then
4378     PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4379   fi
4380   if test "$MOZ_ENABLE_GTK"; then
4381     if test "$MOZ_X11"; then
4382       GDK_PACKAGES=gdk-x11-2.0
4383     fi
4385     PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4386   fi
4388 fi # COMPILE_ENVIRONMENT
4390 AC_SUBST(MOZ_FS_LAYOUT)
4392 dnl ========================================================
4393 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4394 dnl their usage and use them in spidermonkey.
4395 dnl ========================================================
4396 MOZ_ARG_WITH_BOOL(arm-kuser,
4397 [  --with-arm-kuser         Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4398     USE_ARM_KUSER=1,)
4399 if test -n "$USE_ARM_KUSER"; then
4400    AC_DEFINE(USE_ARM_KUSER)
4403 dnl ========================================================
4404 dnl = startup-notification support module
4405 dnl ========================================================
4407 if test "$MOZ_ENABLE_GTK"
4408 then
4409     MOZ_ENABLE_STARTUP_NOTIFICATION=
4411     MOZ_ARG_ENABLE_BOOL(startup-notification,
4412     [  --enable-startup-notification
4413                           Enable startup-notification support (default: disabled) ],
4414         MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4415         MOZ_ENABLE_STARTUP_NOTIFICATION=)
4416     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4417     then
4418         PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4419                           libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4420         [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4421             if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4422             then
4423                 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4424             fi
4425             MOZ_ENABLE_STARTUP_NOTIFICATION=
4426         ])
4427     fi
4429     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4430         AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4431     fi
4433     TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4435 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4436 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4437 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4439 dnl ========================================================
4440 dnl Disable printing
4441 dnl ========================================================
4442 MOZ_ARG_DISABLE_BOOL(printing,
4443 [  --disable-printing      Disable printing support],
4444     NS_PRINTING=,
4445     NS_PRINTING=1)
4447 if test "$NS_PRINTING"; then
4448     AC_DEFINE(NS_PRINTING)
4449     AC_DEFINE(NS_PRINT_PREVIEW)
4452 dnl ========================================================
4453 dnl = QT support
4454 dnl ========================================================
4455 if test "$MOZ_ENABLE_QT"
4456 then
4457     MOZ_ARG_WITH_STRING(qtdir,
4458     [  --with-qtdir=\$dir       Specify Qt directory ],
4459     [ QTDIR=$withval])
4461     if test -z "$QTDIR"; then
4462         AC_CHECK_PROGS(HOST_QMAKE, $HOST_QMAKE qmake, "")
4463     else
4464         HOST_QMAKE="$QTDIR/bin/qmake"
4465     fi
4466     QT_VERSION=`$HOST_QMAKE -v | grep 'Using Qt version' | egrep -o '[[0-9]]+\.[[0-9]]+\.[[0-9]]+'`
4468     if test -z "$QTDIR"; then
4469         case $QT_VERSION in
4470         5.*)
4471             AC_MSG_RESULT("Using qt5: $QT_VERSION")
4472             PKG_CHECK_MODULES(MOZ_QT, Qt5Gui Qt5Network Qt5Core Qt5Quick, ,
4473             [
4474               AC_MSG_ERROR([$MOZ_QT_PKG_ERRORS Need qtbase development packages, (On Ubuntu, you might try installing the packages qtbase5-dev libqt5opengl5-dev.)])
4475             ])
4476             QT5INCDIR=`pkg-config --variable=includedir Qt5Gui`
4477             MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QT5INCDIR/QtGui/$QT_VERSION/QtGui"
4478             if test "$NS_PRINTING"; then
4479                 PKG_CHECK_MODULES(MOZ_QT_WIDGETS, Qt5PrintSupport, ,
4480                 [
4481                   AC_MSG_ERROR([$MOZ_QT_PKG_ERRORS Need qtbase widgets development package])
4482                 ])
4483                 MOZ_QT_LIBS="$MOZ_QT_LIBS $MOZ_QT_WIDGETS_LIBS"
4484                 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $MOZ_QT_WIDGETS_CFLAGS"
4485             fi
4486             ;;
4487         *)
4488             AC_MSG_ERROR([* * * Unsupported Qt Version: $QT_VERSION])
4489             ;;
4490         esac
4492         AC_CHECK_PROGS(HOST_MOC, $MOC moc, "")
4493         AC_CHECK_PROGS(HOST_RCC, $RCC rcc, "")
4494     else
4495         MOZ_QT_CFLAGS="-DQT_SHARED"
4496         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
4497         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
4498         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
4499         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
4500         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
4501         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDeclarative"
4502         case $QT_VERSION in
4503         5.*)
4504             AC_MSG_RESULT("Using qt5: $QT_VERSION")
4505             MOZ_QT_LIBS="$MOZ_QT_LIBS -L$QTDIR/lib/ -lQt5Gui -lQt5Network -lQt5Core -lQt5Xml"
4506             MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui/$QT_VERSION/QtGui"
4507             if test "$NS_PRINTING"; then
4508                 MOZ_QT_LIBS="$MOZ_QT_LIBS -lQt5Widgets -lQt5PrintSupport"
4509                 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtPrintSupport"
4510             fi
4511             ;;
4512         *)
4513             AC_MSG_ERROR([* * * Unsupported Qt Version: $QT_VERSION])
4514             ;;
4515         esac
4517         HOST_MOC="$QTDIR/bin/moc"
4518         HOST_RCC="$QTDIR/bin/rcc"
4519     fi
4520     if test -z "$HOST_MOC"; then
4521         AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is incorrect])
4522     fi
4523     if test -z "$HOST_RCC"; then
4524         AC_MSG_ERROR([No acceptable rcc preprocessor found. Qt SDK is not installed or --with-qt is incorrect])
4525     fi
4527     MOC=$HOST_MOC
4528     RCC=$HOST_RCC
4530     MOZ_ENABLE_QMSYSTEM2=
4531     PKG_CHECK_MODULES(_QMSYSTEM2, qmsystem2,
4532                       MOZ_ENABLE_QMSYSTEM2=1,
4533                       MOZ_ENABLE_QMSYSTEM2=)
4535     if test "$MOZ_ENABLE_QMSYSTEM2"; then
4536       MOZ_ENABLE_QMSYSTEM2=1
4537       MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QMSYSTEM2_CFLAGS"
4538       MOZ_QT_LIBS="$MOZ_QT_LIBS $_QMSYSTEM2_LIBS"
4539       AC_DEFINE(MOZ_ENABLE_QMSYSTEM2)
4540     fi
4542     MOZ_ENABLE_QTNETWORK=
4543     PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7,
4544                       MOZ_ENABLE_QTNETWORK=1,
4545                       MOZ_ENABLE_QTNETWORK=)
4547     if test "$MOZ_ENABLE_QTNETWORK"; then
4548       MOZ_ENABLE_QTNETWORK=1
4549       AC_DEFINE(MOZ_ENABLE_QTNETWORK)
4550     fi
4552     MOZ_ENABLE_QTMOBILITY=
4553     PKG_CHECK_MODULES(_QTMOBILITY, QtSensors QtFeedback QtLocation,
4554                       MOZ_ENABLE_QTMOBILITY=1,
4555                       MOZ_ENABLE_QTMOBILITY=)
4556     if test "$MOZ_ENABLE_QTMOBILITY"; then
4557        MOZ_ENABLE_QTMOBILITY=1
4558        MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QTMOBILITY_CFLAGS"
4559        MOZ_QT_LIBS="$MOZ_QT_LIBS $_QTMOBILITY_LIBS"
4560        AC_DEFINE(MOZ_ENABLE_QTMOBILITY)
4561        AC_SUBST(MOZ_ENABLE_QTMOBILITY)
4562     else
4563        AC_CHECK_LIB(QtSensors, main, [
4564           MOZ_ENABLE_QTMOBILITY=1
4565           MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtMobility"
4566           MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtSensors"
4567           MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtFeedback"
4568           MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtLocation"
4569           MOZ_QT_LIBS="$MOZ_QT_LIBS -lQtSensors -lQtFeedback -lQtLocation"
4570        ])
4571     fi
4573     MOZ_ENABLE_QT5FEEDBACK=
4574     PKG_CHECK_MODULES(_QT5FEEDBACK, Qt0Feedback,
4575                       MOZ_ENABLE_QT5FEEDBACK=1,
4576                       MOZ_ENABLE_QT5FEEDBACK=)
4577     if test "$MOZ_ENABLE_QT5FEEDBACK"; then
4578        MOZ_ENABLE_QT5FEEDBACK=1
4579        MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QT5FEEDBACK_CFLAGS"
4580        MOZ_QT_LIBS="$MOZ_QT_LIBS $_QT5FEEDBACK_LIBS"
4581        AC_DEFINE(MOZ_ENABLE_QT5FEEDBACK)
4582        AC_SUBST(MOZ_ENABLE_QT5FEEDBACK)
4583     fi
4585     MOZ_ENABLE_QT5GEOPOSITION=
4586     PKG_CHECK_MODULES(_QT5GEOPOSITION, Qt5Positioning,
4587                       MOZ_ENABLE_QT5GEOPOSITION=1,
4588                       MOZ_ENABLE_QT5GEOPOSITION=)
4589     if test "$MOZ_ENABLE_QT5GEOPOSITION"; then
4590        MOZ_ENABLE_QT5GEOPOSITION=1
4591        MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QT5GEOPOSITION_CFLAGS"
4592        MOZ_QT_LIBS="$MOZ_QT_LIBS $_QT5GEOPOSITION_LIBS"
4593        AC_DEFINE(MOZ_ENABLE_QT5GEOPOSITION)
4594        AC_SUBST(MOZ_ENABLE_QT5GEOPOSITION)
4595     fi
4597     if test "$MOZ_ENABLE_CONTENTACTION"; then
4598       MOZ_ENABLE_CONTENTACTION=1
4599       AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
4600     fi
4602     MOZ_ENABLE_CONTENTACTION=
4603     PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=)
4604     if test "$MOZ_ENABLE_CONTENTACTION"; then
4605        MOZ_ENABLE_CONTENTACTION=1
4606        MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_CONTENTACTION_CFLAGS"
4607        MOZ_QT_LIBS="$MOZ_QT_LIBS $_CONTENTACTION_LIBS"
4608        AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
4609        AC_SUBST(MOZ_ENABLE_CONTENTACTION)
4610     fi
4613 AC_SUBST(GTK_CONFIG)
4614 AC_SUBST(TK_CFLAGS)
4615 AC_SUBST(TK_LIBS)
4617 AC_SUBST(MOZ_ENABLE_GTK2)
4618 AC_SUBST(MOZ_ENABLE_GTK3)
4619 AC_SUBST(MOZ_ENABLE_GTK)
4620 AC_SUBST(MOZ_ENABLE_QT)
4621 AC_SUBST(MOZ_ENABLE_QTNETWORK)
4622 AC_SUBST(MOZ_ENABLE_QMSYSTEM2)
4623 AC_SUBST(MOZ_ENABLE_QTMOBILITY)
4624 AC_SUBST(MOZ_ENABLE_XREMOTE)
4625 AC_SUBST(MOZ_GTK2_CFLAGS)
4626 AC_SUBST(MOZ_GTK2_LIBS)
4627 AC_SUBST(MOZ_GTK3_CFLAGS)
4628 AC_SUBST(MOZ_GTK3_LIBS)
4629 AC_SUBST(MOZ_WIDGET_GTK)
4630 AC_SUBST(MOZ_QT_CFLAGS)
4631 AC_SUBST(MOZ_QT_LIBS)
4633 AC_SUBST(MOC)
4634 AC_SUBST(RCC)
4636 AC_SUBST(MOZ_X11)
4638 dnl ========================================================
4639 dnl =
4640 dnl = Components & Features
4641 dnl =
4642 dnl ========================================================
4643 MOZ_ARG_HEADER(Components and Features)
4645 dnl ========================================================
4646 dnl = Localization
4647 dnl ========================================================
4648 MOZ_ARG_ENABLE_STRING(ui-locale,
4649 [  --enable-ui-locale=ab-CD
4650                           Select the user interface locale (default: en-US)],
4651     MOZ_UI_LOCALE=$enableval )
4652 AC_SUBST(MOZ_UI_LOCALE)
4654 dnl ========================================================
4655 dnl = Trademarked Branding
4656 dnl ========================================================
4657 MOZ_ARG_ENABLE_BOOL(official-branding,
4658 [  --enable-official-branding
4659                           Enable Official mozilla.org Branding
4660                           Do not distribute builds with
4661                           --enable-official-branding unless you have
4662                           permission to use trademarks per
4663                           http://www.mozilla.org/foundation/trademarks/ .],
4665   if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
4666     AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
4667   else
4668     MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
4669     MOZ_OFFICIAL_BRANDING=1
4670   fi
4671 ], MOZ_OFFICIAL_BRANDING=)
4673 AC_SUBST(MOZ_OFFICIAL_BRANDING)
4674 if test -n "$MOZ_OFFICIAL_BRANDING"; then
4675   AC_DEFINE(MOZ_OFFICIAL_BRANDING)
4678 MOZ_ARG_WITH_STRING(branding,
4679 [  --with-branding=dir     Use branding from the specified directory.],
4680     MOZ_BRANDING_DIRECTORY=$withval)
4682 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4683 if test -z "$REAL_BRANDING_DIRECTORY"; then
4684   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4687 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4688   . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
4691 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4693 dnl ========================================================
4694 dnl = Distribution ID
4695 dnl ========================================================
4696 MOZ_ARG_WITH_STRING(distribution-id,
4697 [  --with-distribution-id=ID
4698                           Set distribution-specific id (default=org.mozilla)],
4699 [ val=`echo $withval`
4700     MOZ_DISTRIBUTION_ID="$val"])
4702 if test -z "$MOZ_DISTRIBUTION_ID"; then
4703    MOZ_DISTRIBUTION_ID="org.mozilla"
4706 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4707 AC_SUBST(MOZ_DISTRIBUTION_ID)
4710 dnl ========================================================
4711 dnl = Pango
4712 dnl ========================================================
4713 if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT"
4714 then
4715     PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4717     PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION)
4718     AC_SUBST(MOZ_PANGO_CFLAGS)
4719     AC_SUBST(MOZ_PANGO_LIBS)
4722 dnl ========================================================
4723 dnl = GnomeVFS, GIO and GConf support module
4724 dnl ========================================================
4726 if test "$MOZ_X11"
4727 then
4728     dnl build the GIO extension by default only when the
4729     dnl GTK2 toolkit is in use.
4730     if test "$MOZ_ENABLE_GTK"
4731     then
4732         MOZ_ENABLE_GIO=1
4733         MOZ_ENABLE_GCONF=1
4734     fi
4736     dnl ========================================================
4737     dnl = GnomeVFS support module
4738     dnl ========================================================
4739     MOZ_ARG_ENABLE_BOOL(gnomevfs,
4740     [  --enable-gnomevfs       Enable GnomeVFS support (default: disabled)],
4741         MOZ_ENABLE_GNOMEVFS=force,
4742         MOZ_ENABLE_GNOMEVFS=)
4744     if test "$MOZ_ENABLE_GNOMEVFS"
4745     then
4746         PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
4747             MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
4748             MOZ_ENABLE_GNOMEVFS=1
4749             AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
4750         ],[
4751             if test "$MOZ_ENABLE_GNOMEVFS" = "force"
4752             then
4753                 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
4754             fi
4755             MOZ_ENABLE_GNOMEVFS=
4756         ])
4757     fi
4759     AC_SUBST(MOZ_ENABLE_GNOMEVFS)
4760     AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
4761     AC_SUBST(MOZ_GNOMEVFS_LIBS)
4763     dnl ========================================================
4764     dnl = GIO support module
4765     dnl ========================================================
4766     MOZ_ARG_DISABLE_BOOL(gio,
4767     [  --disable-gio           Disable GIO support],
4768         MOZ_ENABLE_GIO=,
4769         MOZ_ENABLE_GIO=force)
4771     if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK"
4772     then
4773         if test "$MOZ_ENABLE_GTK2"
4774         then
4775             PKG_CHECK_MODULES(_GTKCHECK, gtk+-2.0 >= 2.14, ,
4776                               [AC_MSG_ERROR([* * * Could not find gtk+-2.0 > 2.14. Required for build with gio.])])
4777         fi
4778         PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
4779             MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
4780             MOZ_ENABLE_GIO=1
4781             AC_DEFINE(MOZ_ENABLE_GIO)
4782         ],[
4783             if test "$MOZ_ENABLE_GIO" = "force"
4784             then
4785                 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
4786             fi
4787             MOZ_ENABLE_GIO=
4788         ])
4789     fi
4791     AC_SUBST(MOZ_ENABLE_GIO)
4792     AC_SUBST(MOZ_GIO_CFLAGS)
4793     AC_SUBST(MOZ_GIO_LIBS)
4795     dnl ========================================================
4796     dnl = GConf support module
4797     dnl ========================================================
4798     MOZ_ARG_DISABLE_BOOL(gconf,
4799     [  --disable-gconf      Disable Gconf support ],
4800         MOZ_ENABLE_GCONF=,
4801         MOZ_ENABLE_GCONF=force)
4803     if test "$MOZ_ENABLE_GCONF"
4804     then
4805         PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
4806             MOZ_GCONF_LIBS=`$PKG_CONFIG --libs gobject-2.0`
4807             MOZ_ENABLE_GCONF=1
4808         ],[
4809             if test "$MOZ_ENABLE_GCONF" = "force"
4810             then
4811                 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
4812             fi
4813             MOZ_ENABLE_GCONF=
4814         ])
4815     fi
4817     if test "$MOZ_ENABLE_GCONF"; then
4818         AC_DEFINE(MOZ_ENABLE_GCONF)
4819     fi
4821     AC_SUBST(MOZ_ENABLE_GCONF)
4822     AC_SUBST(MOZ_GCONF_CFLAGS)
4823     AC_SUBST(MOZ_GCONF_LIBS)
4826 dnl ========================================================
4827 dnl = libproxy support
4828 dnl ========================================================
4830 if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT"
4831 then
4832     MOZ_ENABLE_LIBPROXY=
4834     MOZ_ARG_ENABLE_BOOL(libproxy,
4835     [  --enable-libproxy         Enable libproxy support ],
4836     MOZ_ENABLE_LIBPROXY=1,
4837     MOZ_ENABLE_LIBPROXY=)
4839     if test "$MOZ_ENABLE_LIBPROXY"
4840     then
4841         PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
4842         AC_DEFINE(MOZ_ENABLE_LIBPROXY)
4843     fi
4845 AC_SUBST(MOZ_ENABLE_LIBPROXY)
4846 AC_SUBST(MOZ_LIBPROXY_CFLAGS)
4847 AC_SUBST(MOZ_LIBPROXY_LIBS)
4849 dnl ========================================================
4850 dnl = GNOME component (mozgnome)
4851 dnl ========================================================
4853 if test "$MOZ_ENABLE_GTK"
4854 then
4855     MOZ_ENABLE_GNOME_COMPONENT=1
4857 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
4859 dnl ========================================================
4860 dnl = libgnomeui support module
4861 dnl ========================================================
4863 if test "$MOZ_ENABLE_GTK"
4864 then
4865     MOZ_ARG_ENABLE_BOOL(gnomeui,
4866     [  --enable-gnomeui        Enable libgnomeui instead of GIO & GTK for icon theme support ],
4867         MOZ_ENABLE_GNOMEUI=force,
4868         MOZ_ENABLE_GNOMEUI=)
4870     if test "$MOZ_ENABLE_GNOMEUI"
4871     then
4872         PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
4873         [
4874             MOZ_ENABLE_GNOMEUI=1
4875         ],[
4876             if test "$MOZ_ENABLE_GNOMEUI" = "force"
4877             then
4878                 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
4879             fi
4880             MOZ_ENABLE_GNOMEUI=
4881         ])
4882     fi
4884     if test "$MOZ_ENABLE_GNOMEUI"; then
4885         AC_DEFINE(MOZ_ENABLE_GNOMEUI)
4886     fi
4889 AC_SUBST(MOZ_ENABLE_GNOMEUI)
4890 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
4892 dnl ========================================================
4893 dnl = dbus support
4894 dnl ========================================================
4896 if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT"
4897 then
4898     MOZ_ENABLE_DBUS=1
4900     MOZ_ARG_DISABLE_BOOL(dbus,
4901     [  --disable-dbus          Disable dbus support ],
4902         MOZ_ENABLE_DBUS=,
4903         MOZ_ENABLE_DBUS=1)
4905     if test "$MOZ_ENABLE_DBUS"
4906     then
4907         PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
4908         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
4909         AC_DEFINE(MOZ_ENABLE_DBUS)
4910     fi
4912 AC_SUBST(MOZ_ENABLE_DBUS)
4913 AC_SUBST(MOZ_DBUS_CFLAGS)
4914 AC_SUBST(MOZ_DBUS_LIBS)
4915 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
4916 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
4918 dnl ========================================================
4919 dnl = Enable Android History instead of Places
4920 dnl ========================================================
4921 if test -n "$MOZ_ANDROID_HISTORY"; then
4922     if test -z "$MOZ_PLACES"; then
4923         AC_DEFINE(MOZ_ANDROID_HISTORY)
4924     else
4925         AC_MSG_ERROR([Cannot use MOZ_ANDROID_HISTORY alongside MOZ_PLACES.])
4926     fi
4929 dnl ========================================================
4930 dnl = Build with the Android compositor
4931 dnl ========================================================
4932 if test -n "$MOZ_ANDROID_OMTC"; then
4933      dnl Do this if defined in confvars.sh
4934      AC_DEFINE(MOZ_ANDROID_OMTC)
4937 dnl ========================================================
4938 dnl = Disable WebSMS backend
4939 dnl ========================================================
4940 MOZ_ARG_DISABLE_BOOL(websms-backend,
4941 [  --disable-websms-backend
4942                            Disable WebSMS backend],
4943     MOZ_WEBSMS_BACKEND=,
4944     MOZ_WEBSMS_BACKEND=1)
4946 if test -n "$MOZ_WEBSMS_BACKEND"; then
4947     AC_DEFINE(MOZ_WEBSMS_BACKEND)
4950 dnl ========================================================
4951 dnl = Enable NFC permission on Android
4952 dnl ========================================================
4953 if test -n "$MOZ_ANDROID_BEAM"; then
4954     AC_DEFINE(MOZ_ANDROID_BEAM)
4957 dnl ========================================================
4958 dnl = Synthesized Webapp APKs on Android
4959 dnl ========================================================
4960 MOZ_ARG_ENABLE_BOOL(android-synthapks,
4961 [  --enable-android-synthapks       Enable synthesized APKs],
4962     MOZ_ANDROID_SYNTHAPKS=1,
4963     MOZ_ANDROID_SYNTHAPKS=)
4965 if test -n "$MOZ_ANDROID_SYNTHAPKS"; then
4966     AC_DEFINE(MOZ_ANDROID_SYNTHAPKS)
4969 dnl ========================================================
4970 dnl = JS Debugger XPCOM component (js/jsd)
4971 dnl ========================================================
4972 MOZ_ARG_DISABLE_BOOL(jsd,
4973 [  --disable-jsd           Disable JavaScript debug library],
4974     MOZ_JSDEBUGGER=,
4975     MOZ_JSDEBUGGER=1)
4978 dnl ========================================================
4979 dnl = Enable IPDL's "expensive" unit tests
4980 dnl ========================================================
4981 MOZ_IPDL_TESTS=
4983 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
4984 [  --enable-ipdl-tests     Enable expensive IPDL tests],
4985     MOZ_IPDL_TESTS=1,
4986     MOZ_IPDL_TESTS=)
4988 if test -n "$MOZ_IPDL_TESTS"; then
4989     AC_DEFINE(MOZ_IPDL_TESTS)
4992 AC_SUBST(MOZ_IPDL_TESTS)
4994 dnl ========================================================
4995 dnl = Disable building dbm
4996 dnl ========================================================
4997 MOZ_ARG_DISABLE_BOOL(dbm,
4998 [  --disable-dbm           Disable building dbm],
4999     NSS_DISABLE_DBM=1,
5000     NSS_DISABLE_DBM=)
5002 dnl ========================================================
5003 dnl accessibility support on by default on all platforms
5004 dnl ========================================================
5005 MOZ_ARG_DISABLE_BOOL(accessibility,
5006 [  --disable-accessibility Disable accessibility support],
5007     ACCESSIBILITY=,
5008     ACCESSIBILITY=1 )
5009 if test "$ACCESSIBILITY"; then
5010     case "$target" in
5011     *-mingw*)
5012         if test -z "$MIDL"; then
5013             if test "$GCC" != "yes"; then
5014                 AC_MSG_ERROR([MIDL could not be found. Building accessibility without MIDL is not supported.])
5015             else
5016                 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.])
5017             fi
5018         fi
5019     esac
5020     AC_DEFINE(ACCESSIBILITY)
5023 dnl ========================================================
5024 dnl Accessibility is required for the linuxgl widget
5025 dnl backend
5026 dnl ========================================================
5027 if test "${MOZ_WIDGET_TOOLKIT}" = "linuxgl" -a "$ACCESSIBILITY" != "1"; then
5028     AC_MSG_ERROR(["Accessibility is required for the linuxgl widget backend"])
5031 dnl Turn off webrtc for OS's we don't handle yet, but allow
5032 dnl --enable-webrtc to override.  Can disable for everything in
5033 dnl the master list above.
5034 if test -n "$MOZ_WEBRTC"; then
5035     case "$target" in
5036     *-linux*|*-mingw*|*-darwin*|*-android*|*-linuxandroid*|*-dragonfly*|*-freebsd*|*-netbsd*|*-openbsd*)
5037         dnl Leave enabled
5038         ;;
5039     *)
5040         dnl default to disabled for all others
5041         MOZ_WEBRTC=
5042         ;;
5043     esac
5046 AC_TRY_COMPILE([#include <linux/ethtool.h>],
5047                [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
5048                MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
5050 AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI)
5052 # target_arch is from {ia32|x64|arm|ppc}
5053 case "$CPU_ARCH" in
5054 x86_64 | arm | x86 | ppc* | ia64)
5055     :
5056     ;;
5058 # unsupported arch for webrtc
5059     MOZ_WEBRTC=
5060     ;;
5062 esac
5064 dnl ========================================================
5065 dnl = Disable WebRTC code
5066 dnl ========================================================
5067 MOZ_ARG_DISABLE_BOOL(webrtc,
5068 [  --disable-webrtc        Disable support for WebRTC],
5069     MOZ_WEBRTC=,
5070     MOZ_WEBRTC=1)
5072 if test -n "$MOZ_WEBRTC"; then
5073     AC_DEFINE(MOZ_WEBRTC)
5074     dnl MOZ_WEBRTC_ASSERT_ALWAYS turns on a number of safety asserts in
5075     dnl opt/production builds (via MOZ_CRASH())
5076     AC_DEFINE(MOZ_WEBRTC_ASSERT_ALWAYS)
5077     MOZ_RAW=1
5078     MOZ_VPX=1
5079     MOZ_VPX_ERROR_CONCEALMENT=1
5081 dnl enable once Signaling lands
5082     MOZ_WEBRTC_SIGNALING=1
5083     AC_DEFINE(MOZ_WEBRTC_SIGNALING)
5084 dnl enable once PeerConnection lands
5085     MOZ_PEERCONNECTION=1
5086     AC_DEFINE(MOZ_PEERCONNECTION)
5087     MOZ_SCTP=1
5088     MOZ_SRTP=1
5089     AC_DEFINE(MOZ_SCTP)
5090     AC_DEFINE(MOZ_SRTP)
5091 else
5092     MOZ_SYNTH_PICO=
5095 AC_SUBST(MOZ_WEBRTC)
5096 AC_SUBST(MOZ_WEBRTC_LEAKING_TESTS)
5097 AC_SUBST(MOZ_WEBRTC_SIGNALING)
5098 AC_SUBST(MOZ_PEERCONNECTION)
5099 AC_SUBST(MOZ_WEBRTC_ASSERT_ALWAYS)
5100 AC_SUBST(MOZ_SCTP)
5101 AC_SUBST(MOZ_SRTP)
5103 dnl Use integers over floats for audio on B2G and Android, because audio
5104 dnl backends for those platforms don't support floats.
5105 if test "$OS_TARGET" = "Android"; then
5106     MOZ_SAMPLE_TYPE_S16=1
5107     AC_DEFINE(MOZ_SAMPLE_TYPE_S16)
5108     AC_SUBST(MOZ_SAMPLE_TYPE_S16)
5109 else
5110     MOZ_SAMPLE_TYPE_FLOAT32=1
5111     AC_DEFINE(MOZ_SAMPLE_TYPE_FLOAT32)
5112     AC_SUBST(MOZ_SAMPLE_TYPE_FLOAT32)
5115 dnl ========================================================
5116 dnl = Disable Speech API code
5117 dnl ========================================================
5118 MOZ_ARG_DISABLE_BOOL(webspeech,
5119 [  --disable-webspeech        Disable support for HTML Speech API],
5120     MOZ_WEBSPEECH=,
5121     MOZ_WEBSPEECH=1)
5123 if test -n "$MOZ_WEBSPEECH"; then
5124     AC_DEFINE(MOZ_WEBSPEECH)
5127 AC_SUBST(MOZ_WEBSPEECH)
5129 dnl ========================================================
5130 dnl = Enable Raw Codecs
5131 dnl ========================================================
5132 MOZ_ARG_ENABLE_BOOL(raw,
5133 [  --enable-raw           Enable support for RAW media],
5134     MOZ_RAW=1,
5135     MOZ_RAW=)
5137 if test -n "$MOZ_RAW"; then
5138     AC_DEFINE(MOZ_RAW)
5141 AC_SUBST(MOZ_RAW)
5143 dnl Checks for __attribute__(aligned()) directive need by libogg
5144 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5145     [ac_cv_c_attribute_aligned],
5146     [ac_cv_c_attribute_aligned=0
5147      CFLAGS_save="${CFLAGS}"
5148      CFLAGS="${CFLAGS} -Werror"
5149      for ac_cv_c_attr_align_try in 64 32 16 8; do
5150        echo "trying $ac_cv_c_attr_align_try"
5151        AC_TRY_COMPILE([],
5152                       [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
5153                       [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
5154        if test "$ac_cv_c_attribute_aligned" != 0; then
5155          break;
5156        fi
5157      done
5158        CFLAGS="${CFLAGS_save}"])
5159 if test "${ac_cv_c_attribute_aligned}" != "0"; then
5160   AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
5161                      [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
5164 dnl ========================================================
5165 dnl = Disable Opus audio codec support
5166 dnl ========================================================
5167 MOZ_ARG_DISABLE_BOOL(opus,
5168 [  --disable-opus          Disable support for Opus audio],
5169     MOZ_OPUS=,
5170     MOZ_OPUS=1)
5172 dnl ========================================================
5173 dnl = Disable VP8 decoder support
5174 dnl ========================================================
5175 MOZ_ARG_DISABLE_BOOL(webm,
5176 [  --disable-webm          Disable support for WebM media (VP8 video and Vorbis audio)],
5177     MOZ_WEBM=,
5178     MOZ_WEBM=1)
5180 if test -n "$MOZ_WEBM"; then
5181     AC_DEFINE(MOZ_WEBM)
5182     MOZ_VPX=1
5185 dnl ========================================================
5186 dnl = DirectShow support
5187 dnl ========================================================
5188 if test "$OS_ARCH" = "WINNT"; then
5189     dnl Enable DirectShow support by default.
5190     MOZ_DIRECTSHOW=1
5193 MOZ_ARG_DISABLE_BOOL(directshow,
5194 [  --disable-directshow  Disable support for DirectShow],
5195     MOZ_DIRECTSHOW=,
5196     MOZ_DIRECTSHOW=1)
5198 if test -n "$MOZ_DIRECTSHOW"; then
5199     AC_DEFINE(MOZ_DIRECTSHOW)
5202 dnl ========================================================
5203 dnl = Windows Media Foundation support
5204 dnl ========================================================
5205 if test "$OS_ARCH" = "WINNT"; then
5206     dnl Enable Windows Media Foundation support by default.
5207     dnl Note our minimum SDK version is Windows 7 SDK, so we are (currently)
5208     dnl guaranteed to have a recent-enough SDK to build WMF.
5209     MOZ_WMF=1
5212 MOZ_ARG_DISABLE_BOOL(wmf,
5213 [  --disable-wmf  Disable support for Windows Media Foundation],
5214     MOZ_WMF=,
5215     MOZ_WMF=1)
5217 if test -n "$MOZ_WMF"; then
5218     AC_DEFINE(MOZ_WMF)
5221 dnl ========================================================
5222 dnl FFmpeg H264/AAC Decoding Support
5223 dnl ========================================================
5224 case "$OS_TARGET" in
5225 WINNT|Darwin|Android)
5226     ;;
5228     MOZ_FFMPEG=1
5229     ;;
5230 esac
5232 MOZ_ARG_DISABLE_BOOL(ffmpeg,
5233 [  --disable-ffmpeg         Disable FFmpeg for fragmented H264/AAC decoding],
5234     MOZ_FFMPEG=,
5235     MOZ_FFMPEG=1
5238 if test -n "$MOZ_FFMPEG"; then
5239     AC_DEFINE(MOZ_FFMPEG)
5242 dnl ========================================================
5243 dnl = Built-in fragmented MP4 support.
5244 dnl ========================================================
5245 if test -n "$MOZ_WMF" -o -n "$MOZ_FFMPEG"; then
5246     dnl Enable fragmented MP4 parser on Windows by default.
5247     dnl We will also need to enable it on other platforms as we implement
5248     dnl platform decoder support there too.
5249     MOZ_FMP4=1
5252 MOZ_ARG_DISABLE_BOOL(fmp4,
5253 [  --disable-fmp4  Disable support for in built Fragmented MP4 parsing],
5254     MOZ_FMP4=,
5255     MOZ_FMP4=1)
5257 if test -n "$MOZ_FMP4"; then
5258     AC_DEFINE(MOZ_FMP4)
5262 dnl ========================================================
5263 dnl = Enable media plugin support
5264 dnl ========================================================
5265 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5266   dnl Enable support on android by default
5267   MOZ_MEDIA_PLUGINS=1
5270 MOZ_ARG_ENABLE_BOOL(media-plugins,
5271 [  --enable-media-plugins  Enable support for media plugins],
5272     MOZ_MEDIA_PLUGINS=1,
5273     MOZ_MEDIA_PLUGINS=)
5275 if test -n "$MOZ_MEDIA_PLUGINS"; then
5276   AC_DEFINE(MOZ_MEDIA_PLUGINS)
5279 dnl ========================================================
5280 dnl = Disable platform MP3 decoder on OSX
5281 dnl ========================================================
5282 if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
5283   MOZ_APPLEMEDIA=1
5286 MOZ_ARG_DISABLE_BOOL(apple-media,
5287 [  --disable-apple-media  Disable support for Apple AudioToolbox/VideoToolbox],
5288     MOZ_APPLEMEDIA=,
5289     MOZ_APPLEMEDIA=1)
5291 if test -n "$MOZ_APPLEMEDIA"; then
5292   AC_DEFINE(MOZ_APPLEMEDIA)
5295 dnl ========================================================
5296 dnl = Enable getUserMedia support
5297 dnl ========================================================
5298 MOZ_ARG_ENABLE_BOOL(media-navigator,
5299 [  --enable-media-navigator  Enable support for getUserMedia],
5300     MOZ_MEDIA_NAVIGATOR=1,
5301     MOZ_MEDIA_NAVIGATOR=)
5303 if test -n "$MOZ_MEDIA_NAVIGATOR"; then
5304   AC_DEFINE(MOZ_MEDIA_NAVIGATOR)
5307 dnl ========================================================
5308 dnl = Enable building OMX media plugin (B2G or Android)
5309 dnl ========================================================
5310 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5311   dnl Enable support on android by default
5312   MOZ_OMX_PLUGIN=1
5315 MOZ_ARG_ENABLE_BOOL(omx-plugin,
5316 [  --enable-omx-plugin      Enable building OMX plugin (B2G)],
5317     MOZ_OMX_PLUGIN=1,
5318     MOZ_OMX_PLUGIN=)
5320 if test -n "$MOZ_OMX_PLUGIN"; then
5321     if test "$OS_TARGET" = "Android"; then
5322         dnl Only allow building OMX plugin on Gonk (B2G) or Android
5323         AC_DEFINE(MOZ_OMX_PLUGIN)
5324     else
5325        dnl fail if we're not building on Gonk or Android
5326        AC_MSG_ERROR([OMX media plugin can only be built on B2G or Android])
5327     fi
5330 dnl system libvpx Support
5331 dnl ========================================================
5332 MOZ_ARG_WITH_BOOL(system-libvpx,
5333 [  --with-system-libvpx    Use system libvpx (located with pkgconfig)],
5334     MOZ_NATIVE_LIBVPX=1)
5336 MOZ_LIBVPX_CFLAGS=
5337 MOZ_LIBVPX_LIBS=
5339 if test -n "$MOZ_VPX"; then
5340     AC_DEFINE(MOZ_VPX)
5341     if test -n "$MOZ_VPX_ERROR_CONCEALMENT" ; then
5342         AC_DEFINE(MOZ_VPX_ERROR_CONCEALMENT)
5343     fi
5345     _SAVE_CFLAGS=$CFLAGS
5346     _SAVE_LIBS=$LIBS
5347     if test -n "$MOZ_NATIVE_LIBVPX"; then
5348         dnl ============================
5349         dnl === libvpx Version check ===
5350         dnl ============================
5351         dnl Check to see if we have a system libvpx package.
5352         PKG_CHECK_MODULES(MOZ_LIBVPX, vpx >= 1.3.0)
5354         CFLAGS="$CFLAGS $MOZ_LIBVPX_CFLAGS"
5355         LIBS="$LIBS $MOZ_LIBVPX_LIBS"
5357         MOZ_CHECK_HEADER([vpx/vpx_decoder.h], [],
5358          [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.])])
5360         AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver, [],
5361          [AC_MSG_ERROR([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found])])
5363         MOZ_CHECK_HEADER([vpx_mem/vpx_mem.h],
5364          [AC_CHECK_FUNC(vpx_mem_set_functions)])
5365         if test "$ac_cv_header_vpx_mem_vpx_mem_h" = no -o \
5366                 "$ac_cv_func_vpx_mem_set_functions" = no; then
5367             AC_DEFINE(MOZ_VPX_NO_MEM_REPORTING)
5368         fi
5369     fi
5370     CFLAGS=$_SAVE_CFLAGS
5371     LIBS=$_SAVE_LIBS
5374 AC_SUBST(MOZ_NATIVE_LIBVPX)
5375 AC_SUBST(MOZ_LIBVPX_CFLAGS)
5376 AC_SUBST(MOZ_LIBVPX_LIBS)
5378 if test "$MOZ_WEBM"; then
5379     if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then
5380         MOZ_VORBIS=1
5381     else
5382         MOZ_TREMOR=1
5383     fi
5386 if test -n "$MOZ_VPX" -a -z "$MOZ_NATIVE_LIBVPX"; then
5388     dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
5389     dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
5390     dnl We currently require gcc on all arm platforms.
5391     VPX_AS=$YASM
5392     VPX_ASM_SUFFIX=asm
5393     VPX_NEED_OBJ_INT_EXTRACT=
5395     dnl See if we have assembly on this platform.
5396     case "$OS_ARCH:$CPU_ARCH" in
5397     Darwin:x86)
5398       VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC"
5399       VPX_X86_ASM=1
5400     ;;
5401     Darwin:x86_64)
5402       VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC"
5403       VPX_X86_ASM=1
5404     ;;
5405     WINNT:x86_64)
5406       VPX_ASFLAGS="-f x64 -rnasm -pnasm"
5407       VPX_X86_ASM=1
5408     ;;
5409     WINNT:x86)
5410       dnl Check for yasm 1.1 or greater.
5411       if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then
5412         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.])
5413       elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
5414         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.])
5415       else
5416         VPX_ASFLAGS="-f win32 -rnasm -pnasm -DPIC"
5417         VPX_X86_ASM=1
5418         dnl The encoder needs obj_int_extract to get asm offsets.
5419       fi
5420     ;;
5421     *:arm*)
5422       if test -n "$GNU_AS" ; then
5423         VPX_AS=$AS
5424         dnl These flags are a lie; they're just used to enable the requisite
5425         dnl opcodes; actual arch detection is done at runtime.
5426         VPX_ASFLAGS="-march=armv7-a -mfpu=neon"
5427         VPX_DASH_C_FLAG="-c"
5428         VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl'
5429         VPX_ASM_SUFFIX="$ASM_SUFFIX"
5430         VPX_ARM_ASM=1
5431       fi
5432     ;;
5433     *:x86)
5434       if $CC -E -dM -</dev/null | grep -q __ELF__; then
5435         VPX_ASFLAGS="-f elf32 -rnasm -pnasm -DPIC"
5436         VPX_X86_ASM=1
5437       fi
5438     ;;
5439     *:x86_64)
5440       if $CC -E -dM -</dev/null | grep -q __ELF__; then
5441         VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
5442         VPX_X86_ASM=1
5443       fi
5444     ;;
5445     esac
5447     if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_X86_ASM" -a -z "$VPX_AS"; then
5448       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.])
5449     fi
5451     if test -z "$GNU_CC" -a -z "$INTEL_CC" -a -z "$CLANG_CC" ; then
5452       dnl We prefer to get asm offsets using inline assembler, which the above
5453       dnl compilers can do. When we're not using one of those, we have to fall
5454       dnl back to obj_int_extract, which reads them from a compiled object
5455       dnl file. Unfortunately, that only works if we're compiling on a system
5456       dnl with the header files for the appropriate object file format.
5457       VPX_NEED_OBJ_INT_EXTRACT=1
5458     fi
5460     if test -n "$VPX_X86_ASM"; then
5461       AC_DEFINE(VPX_X86_ASM)
5462     elif test -n "$VPX_ARM_ASM"; then
5463       AC_DEFINE(VPX_ARM_ASM)
5464     else
5465       AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.])
5466     fi
5469 dnl ========================================================
5470 dnl = Disable Wave decoder support
5471 dnl ========================================================
5472 MOZ_ARG_DISABLE_BOOL(wave,
5473 [  --disable-wave          Disable Wave decoder support],
5474     MOZ_WAVE=,
5475     MOZ_WAVE=1)
5477 if test -n "$MOZ_WAVE"; then
5478     AC_DEFINE(MOZ_WAVE)
5481 dnl ========================================================
5482 dnl = Handle dependent MEDIA defines
5483 dnl ========================================================
5485 if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then
5486     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/])
5489 if test -n "$MOZ_WEBRTC" -a -z "$MOZ_OPUS"; then
5490     AC_MSG_ERROR([MOZ_WEBRTC requires MOZ_OPUS which is disabled.])
5493 if test -n "$MOZ_VORBIS"; then
5494     AC_DEFINE(MOZ_VORBIS)
5497 if test -n "$MOZ_TREMOR"; then
5498     AC_DEFINE(MOZ_TREMOR)
5501 if test -n "$MOZ_OPUS"; then
5502     AC_DEFINE(MOZ_OPUS)
5505 if test -n "$MOZ_WEBM_ENCODER"; then
5506     AC_DEFINE(MOZ_WEBM_ENCODER)
5508 AC_SUBST(MOZ_WEBM_ENCODER)
5510 dnl ==================================
5511 dnl = Check alsa availability on Linux
5512 dnl ==================================
5514 dnl If using Linux, ensure that the alsa library is available
5515 if test "$OS_TARGET" = "Linux"; then
5516     MOZ_ALSA=1
5519 MOZ_ARG_ENABLE_BOOL(alsa,
5520 [  --enable-alsa          Enable Alsa support (default on Linux)],
5521    MOZ_ALSA=1,
5522    MOZ_ALSA=)
5524 if test -n "$MOZ_ALSA"; then
5525     PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
5526          [echo "$MOZ_ALSA_PKG_ERRORS"
5527           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.)])])
5530 AC_SUBST(MOZ_ALSA)
5531 AC_SUBST(MOZ_ALSA_CFLAGS)
5532 AC_SUBST(MOZ_ALSA_LIBS)
5534 dnl ========================================================
5535 dnl = Disable PulseAudio
5536 dnl ========================================================
5538 dnl If using Linux, ensure that the PA library is available
5539 case "$OS_TARGET" in
5540 WINNT|Darwin|Android|OpenBSD)
5541     ;;
5543     if test -z "$MOZ_B2G"; then
5544         MOZ_PULSEAUDIO=1
5545     fi
5546     ;;
5547 esac
5549 MOZ_ARG_DISABLE_BOOL(pulseaudio,
5550 [  --disable-pulseaudio          Disable PulseAudio support],
5551    MOZ_PULSEAUDIO=,
5552    MOZ_PULSEAUDIO=1)
5554 if test -n "$MOZ_PULSEAUDIO"; then
5555     if test -z "$gonkdir"; then
5556         PKG_CHECK_MODULES(MOZ_PULSEAUDIO, libpulse, ,
5557              [echo "$MOZ_PULSEAUDIO_PKG_ERRORS"
5558               AC_MSG_ERROR([pulseaudio audio backend requires libpulse development package])])
5559     else
5560         MOZ_PULSEAUDIO_CFLAGS="-I$gonkdir/external/pulseaudio/pulseaudio/src"
5561     fi
5564 AC_SUBST(MOZ_PULSEAUDIO)
5565 AC_SUBST(MOZ_PULSEAUDIO_CFLAGS)
5567 dnl ========================================================
5568 dnl = Enable GStreamer
5569 dnl ========================================================
5570 case "$OS_TARGET" in
5571 WINNT|Darwin|Android)
5572     ;;
5574     MOZ_GSTREAMER=1
5575     GST_API_VERSION=0.10
5576     ;;
5577 esac
5579 MOZ_ARG_ENABLE_STRING(gstreamer,
5580 [  --enable-gstreamer[=0.10]           Enable GStreamer support],
5581 [ MOZ_GSTREAMER=1
5582   # API version, eg 0.10, 1.0 etc
5583   if test -z "$enableval" -o "$enableval" = "yes"; then
5584     GST_API_VERSION=0.10
5585   elif test "$enableval" = "no"; then
5586     MOZ_GSTREAMER=
5587   else
5588     GST_API_VERSION=$enableval
5589   fi],
5592 if test -n "$MOZ_GSTREAMER"; then
5593     # core/base release number
5594     if test "$GST_API_VERSION" = "1.0"; then
5595       GST_VERSION=1.0
5596     else
5597       GST_VERSION=0.10.25
5598     fi
5600     PKG_CHECK_MODULES(GSTREAMER,
5601                       gstreamer-$GST_API_VERSION >= $GST_VERSION
5602                       gstreamer-app-$GST_API_VERSION
5603                       gstreamer-plugins-base-$GST_API_VERSION,
5604                       [_HAVE_GSTREAMER=1],
5605                       [_HAVE_GSTREAMER=])
5606     if test -z "$_HAVE_GSTREAMER"; then
5607         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])
5608     fi
5610     _SAVE_LDFLAGS=$LDFLAGS
5611     LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5612     AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=)
5613     if test -n "$_HAVE_LIBGSTVIDEO" ; then
5614         GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5615     else
5616         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.])
5617     fi
5618     LDFLAGS=$_SAVE_LDFLAGS
5620     AC_SUBST(GSTREAMER_CFLAGS)
5621     AC_SUBST(GSTREAMER_LIBS)
5624 AC_SUBST(MOZ_GSTREAMER)
5625 AC_SUBST(GST_API_VERSION)
5627 if test -n "$MOZ_GSTREAMER"; then
5628      AC_DEFINE(MOZ_GSTREAMER)
5629      AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION")
5633 dnl ========================================================
5634 dnl Permissions System
5635 dnl ========================================================
5636 MOZ_ARG_DISABLE_BOOL(permissions,
5637 [  --disable-permissions   Disable permissions (popup and cookie blocking)],
5638     MOZ_PERMISSIONS=,
5639     MOZ_PERMISSIONS=1
5642 dnl ========================================================
5643 dnl Child permissions, currently only used for b2g
5644 dnl ========================================================
5645 if test -n "$MOZ_B2G"; then
5646     if test -n "$MOZ_PERMISSIONS"; then
5647         MOZ_CHILD_PERMISSIONS=1
5648     else
5649         AC_MSG_ERROR([You need to enable MOZ_PERMISSIONS for MOZ_CHILD_PERMISSIONS])
5650     fi
5652 AC_SUBST(MOZ_CHILD_PERMISSIONS)
5654 dnl ========================================================
5655 dnl NegotiateAuth
5656 dnl ========================================================
5657 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5658 [  --disable-negotiateauth Disable GSS-API negotiation ],
5659     MOZ_AUTH_EXTENSION=,
5660     MOZ_AUTH_EXTENSION=1 )
5662 dnl ========================================================
5663 dnl Pref extensions (autoconfig)
5664 dnl ========================================================
5665 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5666 [  --disable-pref-extensions
5667                           Disable pref extensions such as autoconfig],
5668   MOZ_PREF_EXTENSIONS=,
5669   MOZ_PREF_EXTENSIONS=1 )
5671 dnl ========================================================
5672 dnl Searching of system directories for extensions.
5673 dnl Note: this switch is meant to be used for test builds
5674 dnl whose behavior should not depend on what happens to be
5675 dnl installed on the local machine.
5676 dnl ========================================================
5677 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
5678 [  --disable-system-extension-dirs
5679                           Disable searching system- and account-global
5680                           directories for extensions of any kind; use
5681                           only profile-specific extension directories],
5682   ENABLE_SYSTEM_EXTENSION_DIRS=,
5683   ENABLE_SYSTEM_EXTENSION_DIRS=1 )
5684 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
5685   AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
5688 dnl ========================================================
5689 dnl = Universalchardet
5690 dnl ========================================================
5691 MOZ_ARG_DISABLE_BOOL(universalchardet,
5692 [  --disable-universalchardet
5693                           Disable universal encoding detection],
5694   MOZ_UNIVERSALCHARDET=,
5695   MOZ_UNIVERSALCHARDET=1 )
5697 if test -n "${JAVA_BIN_PATH}"; then
5698   dnl Look for javac and jar in the specified path.
5699   JAVA_PATH="$JAVA_BIN_PATH"
5700 else
5701   dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5702   JAVA_PATH="$JAVA_HOME/bin:$PATH"
5705 MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5706 MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5707 MOZ_PATH_PROG(JAVAH, javah, :, [$JAVA_PATH])
5708 MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5709 MOZ_PATH_PROG(JARSIGNER, jarsigner, :, [$JAVA_PATH])
5710 MOZ_PATH_PROG(KEYTOOL, keytool, :, [$JAVA_PATH])
5712 if test -n "${JAVA_BIN_PATH}" -o \
5713   \( "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk" \); then
5714   if test -z "$JAVA" -o "$JAVA" = ":"; then
5715     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}])
5716   fi
5717   if test -z "$JAVAC" -o "$JAVAC" = ":"; then
5718     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}])
5719   fi
5720   if test -z "$JAVAH" -o "$JAVAH" = ":"; then
5721     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}])
5722   fi
5723   if test -z "$JAR" -o "$JAR" = ":"; then
5724     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}])
5725   fi
5726   if test -z "$JARSIGNER" -o "$JARSIGNER" = ":"; then
5727     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}])
5728   fi
5729   if test -z "$KEYTOOL" -o "$KEYTOOL" = ":"; then
5730     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}])
5731   fi
5734 dnl ========================================================
5735 dnl = ANGLE OpenGL->D3D translator for WebGL
5736 dnl = * only applies to win32
5737 dnl = * enabled by default (shipping build); requires explicit --disable to disable
5738 dnl ========================================================
5740 MOZ_ANGLE_RENDERER=
5741 MOZ_D3D_CPU_SUFFIX=
5742 MOZ_HAS_WINSDK_WITH_D3D=
5743 MOZ_D3DCOMPILER_VISTA_DLL=
5744 MOZ_D3DCOMPILER_VISTA_DLL_PATH=
5745 MOZ_DIRECTX_SDK_PATH=
5746 MOZ_D3DCOMPILER_XP_DLL=
5747 MOZ_D3DCOMPILER_XP_CAB=
5749 case "$target_os" in
5750 *mingw*)
5751     MOZ_ANGLE_RENDERER=1
5752     ;;
5753 esac
5755 # The DirectX SDK libraries are split into x86 and x64 sub-directories
5756 case "${target_cpu}" in
5757 i*86)
5758   MOZ_D3D_CPU_SUFFIX=x86
5759   ;;
5760 x86_64)
5761   MOZ_D3D_CPU_SUFFIX=x64
5762   ;;
5763 esac
5765 MOZ_ARG_DISABLE_BOOL(webgl,
5766 [  --disable-webgl     Disable building of the WebGL implementation],
5767     MOZ_WEBGL_DISABLED=1,
5768     MOZ_WEBGL_DISABLED=)
5770 MOZ_ARG_ENABLE_BOOL(require-all-d3dc-versions,
5771 [  --enable-require-all-d3dc-versions Require all versions of the D3D compiler needed for supported Windows systems.],
5772     MOZ_REQUIRE_ALL_D3DCS=1,
5773     MOZ_REQUIRE_ALL_D3DCS=)
5775 if test -n "$MOZ_WEBGL_DISABLED"; then
5776   MOZ_WEBGL=
5777   MOZ_ANGLE_RENDERER=
5780 if test -n "$MOZ_WEBGL"; then
5781   AC_DEFINE(MOZ_WEBGL)
5784 if test -n "$MOZ_WEBGL_CONFORMANT"; then
5785   AC_DEFINE(MOZ_WEBGL_CONFORMANT)
5788 dnl ========================================================
5789 dnl D3D compiler DLL
5790 dnl ========================================================
5791 MOZ_FOUND_D3D_COMPILERS=
5793 if test -n "$MOZ_ANGLE_RENDERER"; then
5794   if test -z "$MOZ_D3D_CPU_SUFFIX"; then
5795     AC_MSG_ERROR([Couldn't determine MOZ_D3D_CPU_SUFFIX.])
5796   fi
5798   ######################################
5799   # Find _46+ for use by Vista+.
5801   # Find a D3D compiler DLL in a Windows SDK.
5802   MOZ_D3DCOMPILER_VISTA_DLL=
5803   case "$MOZ_WINSDK_MAXVER" in
5804   0x0603*)
5805     MOZ_D3DCOMPILER_VISTA_DLL=d3dcompiler_47.dll
5806     AC_MSG_RESULT([Found D3D compiler in Windows SDK 8.1.])
5807   ;;
5808   0x0602*)
5809     MOZ_D3DCOMPILER_VISTA_DLL=d3dcompiler_46.dll
5810     AC_MSG_RESULT([Found D3D compiler in Windows SDK 8.0.])
5811   ;;
5812   esac
5814   if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then
5815     # We have a name, now track down the path.
5816     if test -n "$WINDOWSSDKDIR"; then
5817       MOZ_D3DCOMPILER_VISTA_DLL_PATH="$WINDOWSSDKDIR/Redist/D3D/$MOZ_D3D_CPU_SUFFIX/$MOZ_D3DCOMPILER_VISTA_DLL"
5818       if test -f "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then
5819         AC_MSG_RESULT([Found MOZ_D3DCOMPILER_VISTA_DLL_PATH: $MOZ_D3DCOMPILER_VISTA_DLL_PATH])
5820         MOZ_HAS_WINSDK_WITH_D3D=1
5821       else
5822         AC_MSG_RESULT([MOZ_D3DCOMPILER_VISTA_DLL_PATH doesn't exist: $MOZ_D3DCOMPILER_VISTA_DLL_PATH])
5823         AC_MSG_ERROR([Windows SDK at "$WINDOWSSDKDIR" appears broken. Try updating to MozillaBuild 1.9 final or higher.])
5824         MOZ_D3DCOMPILER_VISTA_DLL_PATH=
5825       fi
5826     else
5827       AC_MSG_RESULT([Windows SDK not found.])
5828     fi
5829   fi
5831   if test -z "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then
5832     MOZ_D3DCOMPILER_VISTA_DLL=
5833   fi
5835   # On mingw, check if headers are provided by toolchain.
5836   if test -n "$GNU_CC"; then
5837     MOZ_CHECK_HEADER(d3d10.h, MOZ_HAS_WINSDK_WITH_D3D=1)
5838   fi
5840   ######################################
5841   # Find _43 for use by XP.
5843   # Get the SDK path from the registry.
5844   # First try to get the June 2010 SDK
5845   MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1`
5846   if test -z "$MOZ_DIRECTX_SDK_REG_KEY" ; then
5847     # Otherwise just take whatever comes first
5848     MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1`
5849   fi
5850   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'`
5852   if test -n "$MOZ_DIRECTX_SDK_PATH" &&
5853      test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/dxguid.lib ; then
5854     AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH])
5855   else
5856     AC_MSG_RESULT([DirectX SDK not found.])
5857     MOZ_DIRECTX_SDK_PATH=
5858   fi
5860   # Check that our DirectX SDK is acceptable.
5861   if test -n "$MOZ_DIRECTX_SDK_PATH"; then
5862     if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then
5863       AC_MSG_RESULT([Found the February 2010 DirectX SDK, which is unacceptable to ANGLE.])
5864       MOZ_DIRECTX_SDK_PATH=
5865     fi
5866   fi
5868   if test -n "$MOZ_DIRECTX_SDK_PATH"; then
5869     # Find a D3D compiler DLL in the DirectX SDK, if we didn't find one already.
5870     # Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib
5871     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'`
5873     if test -n "$MOZ_D3DX9_VERSION" ; then
5874       MOZ_D3DCOMPILER_XP_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_D3D_CPU_SUFFIX}.cab | head -n1`
5876       if test -n "$MOZ_D3DCOMPILER_XP_CAB"; then
5877         MOZ_D3DCOMPILER_XP_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll
5878       else
5879         AC_MSG_RESULT([Couldn't find a CAB containing the D3D compiler DLL.])
5880         AC_MSG_ERROR([DirectX SDK at "$MOZ_DIRECTX_SDK_PATH" appears broken.])
5881         MOZ_DIRECTX_SDK_PATH=
5882       fi
5883     else
5884       AC_MSG_RESULT([Couldn't determine the D3DX9 version for the DirectX SDK.])
5885       MOZ_DIRECTX_SDK_PATH=
5886     fi
5887   else
5888     AC_MSG_RESULT([Couldn't find an acceptable DirectX SDK for ANGLE, needed for d3dcompiler_43.])
5889     AC_MSG_RESULT([  Either ignore, install DirectX SDK (June 2010 version or newer), or reconfigure with --disable-webgl.])
5890   fi
5892   ######################################
5893   # Check that we found what we needed.
5894   MOZ_FOUND_A_D3D_COMPILER=
5895   MOZ_FOUND_BOTH_D3D_COMPILERS=1
5897   if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then
5898     MOZ_FOUND_A_D3D_COMPILER=1
5899     AC_MSG_RESULT([Found d3dcompiler DLL for Vista+: $MOZ_D3DCOMPILER_VISTA_DLL])
5900   else
5901     MOZ_FOUND_BOTH_D3D_COMPILERS=
5902   fi
5904   if test -n "$MOZ_D3DCOMPILER_XP_DLL"; then
5905     MOZ_FOUND_A_D3D_COMPILER=1
5906     AC_MSG_RESULT([Found d3dcompiler DLL for XP: $MOZ_D3DCOMPILER_XP_DLL])
5907   else
5908     MOZ_FOUND_BOTH_D3D_COMPILERS=
5909   fi
5911   if test -z "$CROSS_COMPILE"; then
5912     if test -z "MOZ_FOUND_A_D3D_COMPILER"; then
5913       AC_MSG_ERROR([Couldn't find an acceptable D3D compiler DLL.])
5914       AC_MSG_ERROR([  Either install Windows SDK 8.0+, install DirectX SDK (June 2010 version or newer), or reconfigure with --disable-webgl.])
5915     fi
5917     if test -n "$MOZ_REQUIRE_ALL_D3DCS" -a -z "$MOZ_FOUND_BOTH_D3D_COMPILERS"; then
5918       AC_MSG_ERROR([Both D3D compilers _43 and _46+ are required by --enable-require-d3d-compilers.])
5919       AC_MSG_ERROR([  Install Windows SDK 8.0+, as well as DirectX SDK (June 2010 version or newer), or reconfigure without this flag.])
5920     fi
5921   fi
5925 dnl ========================================================
5926 dnl Gamepad support
5927 dnl ========================================================
5928 MOZ_GAMEPAD=
5929 MOZ_GAMEPAD_BACKEND=stub
5931 # Gamepad DOM is built on supported platforms by default.
5932 case "$OS_TARGET" in
5933      Darwin|WINNT|Linux)
5934        MOZ_GAMEPAD=1
5935        ;;
5936      Android)
5937        if test "$MOZ_WIDGET_TOOLKIT" != "gonk"; then
5938          MOZ_GAMEPAD=1
5939        fi
5940        ;;
5941      *)
5942        ;;
5943 esac
5945 MOZ_ARG_DISABLE_BOOL(gamepad,
5946 [  --disable-gamepad   Disable gamepad support],
5947     MOZ_GAMEPAD=,
5948     MOZ_GAMEPAD=1)
5950 if test "$MOZ_GAMEPAD"; then
5951     case "$OS_TARGET" in
5952     Darwin)
5953         MOZ_GAMEPAD_BACKEND=cocoa
5954         ;;
5955     WINNT)
5956         case "$MOZ_WINSDK_MAXVER" in
5957         # We support building with the Windows 7 SDK otherwise, but
5958         # Gamepad support requires the Windows 8 SDK for some HID headers.
5959         0x0601*)
5960           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.])
5961           ;;
5962         *)
5963           ;;
5964         esac
5965         MOZ_GAMEPAD_BACKEND=windows
5966         ;;
5967     Linux)
5968         MOZ_CHECK_HEADER([linux/joystick.h])
5969         if test "$ac_cv_header_linux_joystick_h" != "yes"; then
5970           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.])
5971         fi
5972         MOZ_GAMEPAD_BACKEND=linux
5973         ;;
5974     Android)
5975         MOZ_GAMEPAD_BACKEND=android
5976         ;;
5977     *)
5978         ;;
5979    esac
5981   AC_DEFINE(MOZ_GAMEPAD)
5983 AC_SUBST(MOZ_GAMEPAD)
5984 AC_SUBST(MOZ_GAMEPAD_BACKEND)
5986 dnl ========================================================
5987 dnl = Breakpad crash reporting (on by default on supported platforms)
5988 dnl ========================================================
5990 case $target in
5991 i?86-*-mingw*|x86_64-*-mingw*)
5992   MOZ_CRASHREPORTER=1
5993   ;;
5994 i?86-apple-darwin*|x86_64-apple-darwin*)
5995   MOZ_CRASHREPORTER=1
5996   ;;
5997 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
5998   if test "$MOZ_ENABLE_GTK"; then
5999     MOZ_CRASHREPORTER=1
6000   fi
6001   ;;
6002 *-android*|*-linuxandroid*)
6003   MOZ_CRASHREPORTER=1
6004   ;;
6005 *solaris*)
6006   MOZ_CRASHREPORTER=1
6007   ;;
6008 esac
6010 MOZ_ARG_DISABLE_BOOL(crashreporter,
6011 [  --disable-crashreporter Disable breakpad crash reporting],
6012     [MOZ_CRASHREPORTER=],
6013     [MOZ_CRASHREPORTER=F # Force enable breakpad])
6015 if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT"; then
6016   if test "$MOZ_CRASHREPORTER" = F; then
6017     AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
6018   fi
6019   MOZ_CRASHREPORTER=
6022 if test -n "$MOZ_CRASHREPORTER"; then
6023    AC_DEFINE(MOZ_CRASHREPORTER)
6025   if test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS" && \
6026     test -z "$SKIP_LIBRARY_CHECKS"; then
6027     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
6028     AC_SUBST(MOZ_GTHREAD_CFLAGS)
6029     AC_SUBST(MOZ_GTHREAD_LIBS)
6030   fi
6032   if test "$OS_ARCH" = "WINNT"; then
6033     if test -z "$HAVE_64BIT_OS"; then
6034       MOZ_CRASHREPORTER_INJECTOR=1
6035       AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
6036     fi
6037   fi
6040 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
6041 [  --with-crashreporter-enable-percent=NN
6042                           Enable sending crash reports by default on NN% of users. (default=100)],
6043 [ val=`echo $withval | sed 's/[^0-9]//g'`
6044     MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
6046 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
6047    MOZ_CRASHREPORTER_ENABLE_PERCENT=100
6049 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
6051 dnl ========================================================
6052 dnl = libjpeg-turbo configuration
6053 dnl ========================================================
6054 MOZ_LIBJPEG_TURBO=
6055 if test -z "$MOZ_NATIVE_JPEG"; then
6056     MOZ_LIBJPEG_TURBO=1
6059 MOZ_ARG_DISABLE_BOOL(libjpeg_turbo,
6060 [ --disable-libjpeg-turbo  Disable optimized jpeg decoding routines],
6061     MOZ_LIBJPEG_TURBO=,
6062     MOZ_LIBJPEG_TURBO=1)
6064 if test "$MOZ_NATIVE_JPEG" = 1 -a "$MOZ_LIBJPEG_TURBO" = 1; then
6065     AC_MSG_ERROR([cannot use --with-system-jpeg with --enable-libjpeg-turbo.])
6068 dnl Detect if we can use yasm to compile libjpeg-turbo's optimized assembly
6069 dnl files.
6071 if test -n "$MOZ_LIBJPEG_TURBO"; then
6073   dnl Do we support libjpeg-turbo on this platform?
6074   case "$OS_ARCH:$OS_TEST" in
6075   Darwin:i?86)
6076     LIBJPEG_TURBO_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC -DMACHO"
6077     LIBJPEG_TURBO_X86_ASM=1
6078   ;;
6079   Darwin:x86_64)
6080     LIBJPEG_TURBO_ASFLAGS="-f macho64 -rnasm -pnasm -D__x86_64__ -DPIC -DMACHO"
6081     LIBJPEG_TURBO_X64_ASM=1
6082   ;;
6083   WINNT:x86|WINNT:i?86)
6084     LIBJPEG_TURBO_ASFLAGS="-f win32 -rnasm -pnasm -DPIC -DWIN32"
6085     LIBJPEG_TURBO_X86_ASM=1
6086   ;;
6087   WINNT:x86_64)
6088     LIBJPEG_TURBO_ASFLAGS="-f win64 -rnasm -pnasm -D__x86_64__ -DPIC -DWIN64 -DMSVC"
6089     LIBJPEG_TURBO_X64_ASM=1
6090   ;;
6091   *:arm*)
6092     LIBJPEG_TURBO_ASFLAGS="-march=armv7-a -mfpu=neon"
6093     LIBJPEG_TURBO_ARM_ASM=1
6094   ;;
6095   *:x86|*:i?86)
6096     if $CC -E -dM -</dev/null | grep -q __ELF__; then
6097       LIBJPEG_TURBO_ASFLAGS="-f elf32 -rnasm -pnasm -DPIC -DELF"
6098       LIBJPEG_TURBO_X86_ASM=1
6099     fi
6100   ;;
6101   *:x86_64)
6102     if $CC -E -dM -</dev/null | grep -q __ELF__; then
6103       LIBJPEG_TURBO_ASFLAGS="-f elf64 -rnasm -pnasm -D__x86_64__ -DPIC -DELF"
6104       LIBJPEG_TURBO_X64_ASM=1
6105     fi
6106   ;;
6107   esac
6111 dnl If we're on an x86 or x64 system which supports libjpeg-turbo's asm routines
6112 dnl and --disable-libjpeg-turbo wasn't passed, check for Yasm, and error out if
6113 dnl it doesn't exist or we have too old of a version.
6114 if test -n "$LIBJPEG_TURBO_X86_ASM" -o -n "$LIBJPEG_TURBO_X64_ASM" ; then
6115     LIBJPEG_TURBO_AS=$YASM
6117     if test -z "$LIBJPEG_TURBO_AS" ; then
6118         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.])
6119     fi
6121     dnl Check that we have the right yasm version.  We require 1.0.1 or newer
6122     dnl on Linux and 1.1 or newer everywhere else.
6123     if test "$OS_ARCH" = "Linux" ; then
6124         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
6125             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.])
6126         fi
6127     else
6128         if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
6129             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.])
6130         fi
6131     fi
6134 dnl If we're on an ARM system which supports libjpeg-turbo's asm routines and
6135 dnl --disable-libjpeg-turbo wasn't passed, use the C compiler as the assembler.
6136 if test -n "$LIBJPEG_TURBO_ARM_ASM" ; then
6137     echo "Using $AS as the assembler for ARM code."
6138     LIBJPEG_TURBO_AS=$AS
6141 if test -n "$LIBJPEG_TURBO_X86_ASM"; then
6142     AC_DEFINE(LIBJPEG_TURBO_X86_ASM)
6143 elif test -n "$LIBJPEG_TURBO_X64_ASM"; then
6144     AC_DEFINE(LIBJPEG_TURBO_X64_ASM)
6145 elif test -n "$LIBJPEG_TURBO_ARM_ASM"; then
6146     AC_DEFINE(LIBJPEG_TURBO_ARM_ASM)
6147 elif test -n "$MOZ_LIBJPEG_TURBO"; then
6148     dnl Warn if we're not building the optimized routines, even though the user
6149     dnl didn't specify --disable-libjpeg-turbo.
6150     AC_MSG_WARN([No assembler or assembly support for libjpeg-turbo.  Using unoptimized C routines.])
6153 dnl ========================================================
6154 dnl = Enable compilation of specific extension modules
6155 dnl ========================================================
6157 MOZ_ARG_ENABLE_STRING(extensions,
6158 [  --enable-extensions     Enable extensions],
6159 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6160     if test "$option" = "yes" -o "$option" = "all"; then
6161         AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6162     elif test "$option" = "no" -o "$option" = "none"; then
6163         MOZ_EXTENSIONS=""
6164     elif test "$option" = "default"; then
6165         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6166     elif test `echo "$option" | grep -c \^-` != 0; then
6167         option=`echo $option | sed 's/^-//'`
6168         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6169     else
6170         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6171     fi
6172 done],
6173     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6175 if test -z "$MOZ_ENABLE_GNOMEVFS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6176     # Suppress warning on non-X11 platforms
6177     if test -n "$MOZ_X11"; then
6178         AC_MSG_WARN([Removing gnomevfs from MOZ_EXTENSIONS due to no --enable-gnomevfs.])
6179     fi
6180     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6183 dnl Do not build gnomevfs with libxul based apps
6184 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6185     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6188 if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6189     # Suppress warning on non-X11 platforms
6190     if test -n "$MOZ_X11"; then
6191         AC_MSG_WARN([Removing gio from MOZ_EXTENSIONS due to --disable-gio.])
6192     fi
6193     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6196 dnl Do not build gio with libxul based apps
6197 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6198     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6201 if test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6202     MOZ_GIO_COMPONENT=1
6203     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6205 AC_SUBST(MOZ_GIO_COMPONENT)
6207 if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6208     AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6209     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6212 dnl Remove dupes
6213 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6215 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6216 dnl when trying to build a nonexistent extension.
6217 for extension in $MOZ_EXTENSIONS; do
6218     if test ! -d "${srcdir}/extensions/${extension}"; then
6219         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6220     fi
6221 done
6223 if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
6224   AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
6227 dnl ========================================================
6228 dnl Build Freetype in the tree
6229 dnl ========================================================
6230 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6231 [  --enable-tree-freetype  Enable Tree FreeType],
6232     MOZ_TREE_FREETYPE=1,
6233     MOZ_TREE_FREETYPE= )
6234 if test -n "$MOZ_TREE_FREETYPE"; then
6235    if test -n "$_WIN32_MSVC"; then
6236       AC_ERROR("building with in-tree freetype is not supported on MSVC")
6237    fi
6238    AC_DEFINE(MOZ_TREE_FREETYPE)
6239    AC_SUBST(MOZ_TREE_FREETYPE)
6240    MOZ_ENABLE_CAIRO_FT=1
6241    FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6242    FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6243    CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6244    FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6245    CAIRO_FT_OSLIBS=''
6246    AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6247    AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6248    AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6249    AC_SUBST(CAIRO_FT_CFLAGS)
6252 dnl ========================================================
6253 dnl Installer
6254 dnl ========================================================
6255 dnl Abort Windows build if the required major version and
6256 dnl minimum minor version of Unicode NSIS isn't in the path
6257 dnl (unless in case of cross compiling, for which Unicode
6258 dnl is not yet sufficient).
6259 if test "$OS_ARCH" = "WINNT"; then
6260     MIN_NSIS_MAJOR_VER=2
6261     MIN_NSIS_MINOR_VER=46
6262     MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensisu-3.0a2.exe makensisu-2.46.exe makensis)
6263     if test -n "$MAKENSISU" -a "$MAKENSISU" != ":"; then
6264       AC_MSG_RESULT([yes])
6265       MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null`
6266       changequote(,)
6267       MAKENSISU_PARSED_VER=`echo "$MAKENSISU_VER" | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\).*\-Unicode$/\1/g'`
6268       changequote([,])
6269       if test "$MAKENSISU_PARSED_VER" = ""; then
6270           changequote(,)
6271           MAKENSISU_PARSED_VER=`echo "$MAKENSISU_VER" | sed -e 's/^v\([0-9]\+\.[0-9]\+\).*$/\1/g'`
6272           changequote([,])
6273       fi
6274       MAKENSISU_MAJOR_VER=0
6275       MAKENSISU_MINOR_VER=0
6276       if test ! "$MAKENSISU_PARSED_VER" = ""; then
6277           MAKENSISU_MAJOR_VER=`echo $MAKENSISU_PARSED_VER | $AWK -F\. '{ print $1 }'`
6278           MAKENSISU_MINOR_VER=`echo $MAKENSISU_PARSED_VER | $AWK -F\. '{ print $2 }'`
6279       fi
6280       AC_MSG_CHECKING([for Unicode NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER or greater])
6281       if test "$MAKENSISU_MAJOR_VER" -eq $MIN_NSIS_MAJOR_VER -a \
6282               "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER ||
6283          test "$MAKENSISU_MAJOR_VER" -gt $MIN_NSIS_MAJOR_VER; then
6284           AC_MSG_RESULT([yes])
6285       else
6286           AC_MSG_RESULT([no])
6287           if test -z "$CROSS_COMPILE"; then
6288             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.])
6289           else
6290             MAKENSISU=
6291           fi
6292       fi
6293     elif test -z "$CROSS_COMPILE"; then
6294       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.])
6295     else
6296       MAKENSISU=
6297     fi
6300 dnl ========================================================
6301 dnl Web App Runtime
6302 dnl ========================================================
6303 MOZ_ARG_DISABLE_BOOL(webapp-runtime,
6304 [  --disable-webapp-runtime  Disable Web App Runtime],
6305     MOZ_WEBAPP_RUNTIME=,
6306     MOZ_WEBAPP_RUNTIME=1)
6307 if test "$MOZ_WIDGET_TOOLKIT" != "windows" -a "$MOZ_WIDGET_TOOLKIT" != "cocoa" -a -z "$MOZ_WIDGET_GTK" ; then
6308     MOZ_WEBAPP_RUNTIME=
6310 if test "$OS_ARCH" = "WINNT" -a -z "$MAKENSISU" -a -n "$CROSS_COMPILE"; then
6311     MOZ_WEBAPP_RUNTIME=
6313 AC_SUBST(MOZ_WEBAPP_RUNTIME)
6314 if test "$MOZ_WEBAPP_RUNTIME"; then
6315     AC_DEFINE(MOZ_WEBAPP_RUNTIME)
6318 AC_MSG_CHECKING([for tar archiver])
6319 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6320 if test -z "$TAR"; then
6321     AC_MSG_ERROR([no tar archiver found in \$PATH])
6323 AC_MSG_RESULT([$TAR])
6324 AC_SUBST(TAR)
6326 AC_MSG_CHECKING([for wget])
6327 AC_CHECK_PROGS(WGET, wget, "")
6328 AC_MSG_RESULT([$WGET])
6329 AC_SUBST(WGET)
6331 dnl ========================================================
6332 dnl Signing
6333 dnl ========================================================
6335 if test -n "$MOZ_SIGN_CMD"; then
6336     AC_DEFINE(MOZ_SIGNING)
6339 dnl ========================================================
6340 dnl Maintenance Service
6341 dnl ========================================================
6343 MOZ_ARG_ENABLE_BOOL(maintenance-service,
6344 [  --enable-maintenance-service       Enable building of maintenanceservice],
6345     MOZ_MAINTENANCE_SERVICE=1,
6346     MOZ_MAINTENANCE_SERVICE= )
6348 if test -n "$MOZ_MAINTENANCE_SERVICE"; then
6349   if test "$OS_ARCH" = "WINNT"; then
6350     AC_DEFINE(MOZ_MAINTENANCE_SERVICE)
6351   else
6352     AC_MSG_ERROR([Can only build with --enable-maintenance-service with a Windows target])
6353   fi
6356 dnl ========================================================
6357 dnl Bundled fonts on desktop platforms
6358 dnl ========================================================
6360 MOZ_ARG_ENABLE_BOOL(bundled-fonts,
6361 [  --enable-bundled-fonts  Enable support for bundled fonts on desktop platforms],
6362     MOZ_BUNDLED_FONTS=1,
6363     MOZ_BUNDLED_FONTS=)
6365 if test -n "$MOZ_BUNDLED_FONTS"; then
6366   AC_DEFINE(MOZ_BUNDLED_FONTS)
6369 dnl ========================================================
6370 dnl Verify MAR signatures
6371 dnl ========================================================
6373 MOZ_ARG_ENABLE_BOOL(verify-mar,
6374 [  --enable-verify-mar     Enable verifying MAR signatures],
6375     MOZ_VERIFY_MAR_SIGNATURE=1,
6376     MOZ_VERIFY_MAR_SIGNATURE= )
6378 if test -n "$MOZ_VERIFY_MAR_SIGNATURE"; then
6379   if test "$OS_ARCH" = "WINNT"; then
6380     AC_DEFINE(MOZ_VERIFY_MAR_SIGNATURE)
6381   else
6382     AC_MSG_ERROR([Can only build with --enable-verify-mar with a Windows target])
6383   fi
6386 dnl ========================================================
6387 dnl Enable building the signmar program.
6388 dnl This option is much different than the --enable-verify-mar option.
6389 dnl --enable-verify-mar is for enabling the verification check on MAR
6390 dnl files in the updater.  The --enable-signmar option is for building
6391 dnl the signmar program.
6392 dnl ========================================================
6394 MOZ_ARG_ENABLE_BOOL(signmar,
6395 [  --enable-signmar     Enable building the signmar program],
6396     MOZ_ENABLE_SIGNMAR=1,
6397     MOZ_ENABLE_SIGNMAR= )
6399 if test -n "$MOZ_ENABLE_SIGNMAR"; then
6400   AC_DEFINE(MOZ_ENABLE_SIGNMAR)
6403 dnl ========================================================
6404 dnl Updater
6405 dnl ========================================================
6407 MOZ_ARG_DISABLE_BOOL(updater,
6408 [  --disable-updater       Disable building of updater],
6409     MOZ_UPDATER=,
6410     MOZ_UPDATER=1 )
6412 if test -n "$MOZ_UPDATER"; then
6413     AC_DEFINE(MOZ_UPDATER)
6416 # tools/update-packaging is not checked out by default.
6417 MOZ_ARG_ENABLE_BOOL(update-packaging,
6418 [  --enable-update-packaging
6419                           Enable tools/update-packaging],
6420     MOZ_UPDATE_PACKAGING=1,
6421     MOZ_UPDATE_PACKAGING= )
6422 AC_SUBST(MOZ_UPDATE_PACKAGING)
6424 dnl ========================================================
6425 dnl build the tests by default
6426 dnl ========================================================
6427 MOZ_ARG_DISABLE_BOOL(tests,
6428 [  --disable-tests         Do not build test libraries & programs],
6429     ENABLE_TESTS=,
6430     ENABLE_TESTS=1 )
6432 if test -n "$ENABLE_TESTS"; then
6433     GTEST_HAS_RTTI=0
6434     AC_DEFINE(ENABLE_TESTS)
6435     AC_DEFINE_UNQUOTED(GTEST_HAS_RTTI, 0)
6436     AC_SUBST(GTEST_HAS_RTTI)
6437     if test -n "$_WIN32_MSVC"; then
6438           AC_DEFINE_UNQUOTED(_VARIADIC_MAX, 10)
6439     fi
6440     if test "${OS_TARGET}" = "Android"; then
6441         AC_DEFINE(GTEST_OS_LINUX_ANDROID)
6442         AC_DEFINE(GTEST_USE_OWN_TR1_TUPLE)
6443         AC_DEFINE_UNQUOTED(GTEST_HAS_CLONE, 0)
6444         AC_SUBST(GTEST_OS_LINUX_ANDROID)
6445         AC_SUBST(GTEST_USE_OWN_TR1_TUPLE)
6446         AC_SUBST(GTEST_HAS_CLONE)
6447     fi
6450 dnl ========================================================
6451 dnl parental controls (for Windows Vista)
6452 dnl ========================================================
6453 MOZ_ARG_DISABLE_BOOL(parental-controls,
6454 [  --disable-parental-controls
6455                           Do not build parental controls],
6456    MOZ_DISABLE_PARENTAL_CONTROLS=1,
6457    MOZ_DISABLE_PARENTAL_CONTROLS=)
6458 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6459     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6462 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6464 dnl ========================================================
6465 dnl = Disable DOMCrypto
6466 dnl ========================================================
6467 if test -n "$MOZ_DISABLE_CRYPTOLEGACY"; then
6468     AC_DEFINE(MOZ_DISABLE_CRYPTOLEGACY)
6470 AC_SUBST(MOZ_DISABLE_CRYPTOLEGACY)
6472 dnl ========================================================
6473 dnl = Disable EV certificate verification
6474 dnl ========================================================
6475 if test -n "$MOZ_NO_EV_CERTS"; then
6476     AC_DEFINE(MOZ_NO_EV_CERTS)
6478 AC_SUBST(MOZ_NO_EV_CERTS)
6480 dnl ========================================================
6481 dnl = Disable libpkix
6482 dnl ========================================================
6483 if test -n "$NSS_NO_LIBPKIX"; then
6484     AC_DEFINE(NSS_NO_LIBPKIX)
6486 AC_SUBST(NSS_NO_LIBPKIX)
6488 dnl ========================================================
6489 dnl = Content process sandboxing
6490 dnl ========================================================
6491 if test -n "$gonkdir"; then
6492     MOZ_CONTENT_SANDBOX=1
6495 MOZ_ARG_ENABLE_BOOL(content-sandbox,
6496 [  --enable-content-sandbox        Enable sandboxing support for content-processes],
6497     MOZ_CONTENT_SANDBOX=1,
6498     MOZ_CONTENT_SANDBOX=)
6500 if test -n "$MOZ_CONTENT_SANDBOX"; then
6501     AC_DEFINE(MOZ_CONTENT_SANDBOX)
6504 AC_SUBST(MOZ_CONTENT_SANDBOX)
6506 MOZ_ARG_ENABLE_BOOL(content-sandbox-reporter,
6507 [ --enable-content-sandbox-reporter        Enable syscall reporter to troubleshoot syscalls denied by the content-processes sandbox],
6508     MOZ_CONTENT_SANDBOX_REPORTER=1,
6509     MOZ_CONTENT_SANDBOX_REPORTER=)
6511 if test -n "$MOZ_CONTENT_SANDBOX_REPORTER"; then
6512     AC_DEFINE(MOZ_CONTENT_SANDBOX_REPORTER)
6515 AC_SUBST(MOZ_CONTENT_SANDBOX_REPORTER)
6517 dnl ========================================================
6518 dnl =
6519 dnl = Module specific options
6520 dnl =
6521 dnl ========================================================
6522 MOZ_ARG_HEADER(Individual module options)
6524 dnl ========================================================
6525 dnl = Disable feed handling components
6526 dnl ========================================================
6527 MOZ_ARG_DISABLE_BOOL(feeds,
6528 [  --disable-feeds         Disable feed handling and processing components],
6529     MOZ_FEEDS=,
6530     MOZ_FEEDS=1 )
6531 if test -n "$MOZ_FEEDS"; then
6532     AC_DEFINE(MOZ_FEEDS)
6533 else
6534     if test "$MOZ_BUILD_APP" = "browser"; then
6535         AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6536     fi
6539 dnl ========================================================
6540 dnl Check for sqlite
6541 dnl ========================================================
6543 MOZ_NATIVE_SQLITE=
6544 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6545 [  --enable-system-sqlite  Use system sqlite (located with pkgconfig)],
6546 MOZ_NATIVE_SQLITE=1,
6547 MOZ_NATIVE_SQLITE= )
6549 if test -z "$MOZ_NATIVE_SQLITE"
6550 then
6551     SQLITE_CFLAGS=
6552     SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6553 else
6554     dnl ============================
6555     dnl === SQLite Version check ===
6556     dnl ============================
6557     dnl Check to see if the system SQLite package is new enough.
6558     PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6560     dnl ==================================
6561     dnl === SQLITE_SECURE_DELETE check ===
6562     dnl ==================================
6563     dnl Check to see if the system SQLite package is compiled with
6564     dnl SQLITE_SECURE_DELETE enabled.
6565     AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6566     _SAVE_CFLAGS="$CFLAGS"
6567     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6568     _SAVE_LIBS="$LIBS"
6569     LIBS="$LIBS $SQLITE_LIBS"
6570     AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6571         AC_TRY_RUN([
6572             #include "sqlite3.h"
6574             int main(int argc, char **argv){
6575               return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6576             }],
6577             ac_cv_sqlite_secure_delete=yes,
6578             ac_cv_sqlite_secure_delete=no,
6579             ac_cv_sqlite_secure_delete=no
6580         )
6581     ])
6582     AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6583     CFLAGS="$_SAVE_CFLAGS"
6584     LIBS="$_SAVE_LIBS"
6585     if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6586         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6587     fi
6589     dnl ===============================
6590     dnl === SQLITE_THREADSAFE check ===
6591     dnl ===============================
6592     dnl Check to see if the system SQLite package is compiled with
6593     dnl SQLITE_THREADSAFE enabled.
6594     AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6595     _SAVE_CFLAGS="$CFLAGS"
6596     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6597     _SAVE_LIBS="$LIBS"
6598     LIBS="$LIBS $SQLITE_LIBS"
6599     AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6600         AC_TRY_RUN([
6601             #include "sqlite3.h"
6603             int main(int argc, char **argv){
6604               return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6605             }],
6606             ac_cv_sqlite_threadsafe=yes,
6607             ac_cv_sqlite_threadsafe=no,
6608             ac_cv_sqlite_threadsafe=no
6609         )
6610     ])
6611     AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6612     CFLAGS="$_SAVE_CFLAGS"
6613     LIBS="$_SAVE_LIBS"
6614     if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6615         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6616     fi
6618     dnl ================================
6619     dnl === SQLITE_ENABLE_FTS3 check ===
6620     dnl ================================
6621     dnl check to see if the system SQLite package is compiled with
6622     dnl SQLITE_ENABLE_FTS3 enabled.
6623     AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6624     _SAVE_CFLAGS="$CFLAGS"
6625     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6626     _SAVE_LIBS="$LIBS"
6627     LIBS="$LIBS $SQLITE_LIBS"
6628     AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6629         AC_TRY_RUN([
6630             #include "sqlite3.h"
6632             int main(int argc, char **argv){
6633               return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6634             }],
6635             ac_cv_sqlite_enable_fts3=yes,
6636             ac_cv_sqlite_enable_fts3=no,
6637             ac_cv_sqlite_enable_fts3=no
6638         )
6639     ])
6640     AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6641     CFLAGS="$_SAVE_CFLAGS"
6642     LIBS="$_SAVE_LIBS"
6643     if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6644         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6645     fi
6647     dnl =========================================
6648     dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
6649     dnl =========================================
6650     dnl check to see if the system SQLite package is compiled with
6651     dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
6652     AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
6653     _SAVE_CFLAGS="$CFLAGS"
6654     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6655     _SAVE_LIBS="$LIBS"
6656     LIBS="$LIBS $SQLITE_LIBS"
6657     AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
6658         AC_TRY_RUN([
6659             #include "sqlite3.h"
6661             int main(int argc, char **argv){
6662               return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
6663             }],
6664             ac_cv_sqlite_enable_unlock_notify=yes,
6665             ac_cv_sqlite_enable_unlock_notify=no,
6666             ac_cv_sqlite_enable_unlock_notify=no
6667         )
6668     ])
6669     AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
6670     CFLAGS="$_SAVE_CFLAGS"
6671     LIBS="$_SAVE_LIBS"
6672     if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
6673         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
6674     fi
6677 if test -n "$MOZ_NATIVE_SQLITE"; then
6678     AC_DEFINE(MOZ_NATIVE_SQLITE)
6680 AC_SUBST(MOZ_NATIVE_SQLITE)
6682 dnl ========================================================
6683 dnl = Enable help viewer (off by default)
6684 dnl ========================================================
6685 if test -n "$MOZ_HELP_VIEWER"; then
6686      dnl Do this if defined in confvars.sh
6687      AC_DEFINE(MOZ_HELP_VIEWER)
6690 dnl ========================================================
6691 dnl = Enable safe browsing (anti-phishing)
6692 dnl ========================================================
6693 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6694 [  --enable-safe-browsing  Enable safe browsing (anti-phishing) implementation],
6695     MOZ_SAFE_BROWSING=1,
6696     MOZ_SAFE_BROWSING= )
6697 if test -n "$MOZ_SAFE_BROWSING"; then
6698     AC_DEFINE(MOZ_SAFE_BROWSING)
6700 AC_SUBST(MOZ_SAFE_BROWSING)
6702 dnl ========================================================
6703 dnl = Enable url-classifier
6704 dnl ========================================================
6705 dnl Implicitly enabled by default if building with safe-browsing
6706 if test -n "$MOZ_SAFE_BROWSING"; then
6707     MOZ_URL_CLASSIFIER=1
6709 MOZ_ARG_ENABLE_BOOL(url-classifier,
6710 [  --enable-url-classifier Enable url classifier module],
6711     MOZ_URL_CLASSIFIER=1,
6712     MOZ_URL_CLASSIFIER= )
6713 if test -n "$MOZ_URL_CLASSIFIER"; then
6714     AC_DEFINE(MOZ_URL_CLASSIFIER)
6716 AC_SUBST(MOZ_URL_CLASSIFIER)
6718 dnl ========================================================
6719 dnl = Disable zipwriter
6720 dnl ========================================================
6721 MOZ_ARG_DISABLE_BOOL(zipwriter,
6722 [  --disable-zipwriter     Disable zipwriter component],
6723     MOZ_ZIPWRITER=,
6724     MOZ_ZIPWRITER=1 )
6725 AC_SUBST(MOZ_ZIPWRITER)
6727 dnl ========================================================
6728 dnl GL provider
6729 dnl ========================================================
6730 MOZ_GL_PROVIDER=
6731 MOZ_ARG_WITH_STRING(gl-provider,
6732 [  --with-gl-provider=ID
6733                           Set GL provider backend type],
6734 [ val=`echo $withval`
6735     MOZ_GL_PROVIDER="$val"])
6737 if test -n "$MOZ_GL_PROVIDER"; then
6738 MOZ_GL_DEFAULT_PROVIDER=$MOZ_GL_PROVIDER
6739 AC_SUBST(MOZ_GL_PROVIDER)
6740 AC_DEFINE_UNQUOTED(MOZ_GL_PROVIDER, GLContextProvider$MOZ_GL_PROVIDER)
6742 AC_SUBST(MOZ_GL_DEFAULT_PROVIDER)
6743 AC_DEFINE_UNQUOTED(GL_PROVIDER_$MOZ_GL_DEFAULT_PROVIDER)
6745 dnl ========================================================
6746 dnl = faststripe theme
6747 dnl ========================================================
6748 MOZ_ARG_ENABLE_BOOL(faststripe,
6749 [  --enable-faststripe     Use faststripe theme],
6750     MOZ_THEME_FASTSTRIPE=1,
6751     MOZ_THEME_FASTSTRIPE= )
6752 AC_SUBST(MOZ_THEME_FASTSTRIPE)
6754 dnl ========================================================
6755 dnl =
6756 dnl = Feature options that require extra sources to be pulled
6757 dnl =
6758 dnl ========================================================
6759 dnl MOZ_ARG_HEADER(Features that require extra sources)
6761 dnl ========================================================
6762 dnl =
6763 dnl = Runtime debugging and Optimization Options
6764 dnl =
6765 dnl ========================================================
6766 MOZ_ARG_HEADER(Runtime debugging and Optimizations)
6768 dnl ========================================================
6769 dnl enable mobile optimizations
6770 dnl ========================================================
6771 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
6772 [  --enable-mobile-optimize
6773                           Enable mobile optimizations],
6774     MOZ_GFX_OPTIMIZE_MOBILE=1)
6776 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
6778 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
6779     AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
6782 dnl ========================================================
6783 dnl = Enable code optimization. ON by default.
6784 dnl ========================================================
6785 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6786     MOZ_OPTIMIZE_FLAGS="-O"
6789 MOZ_ARG_ENABLE_STRING(optimize,
6790 [  --disable-optimize      Disable compiler optimization
6791   --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6792 [ if test "$enableval" != "no"; then
6793     MOZ_OPTIMIZE=1
6794     if test -n "$enableval" -a "$enableval" != "yes"; then
6795         MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6796         MOZ_OPTIMIZE=2
6797     fi
6798 else
6799     MOZ_OPTIMIZE=
6800 fi ], MOZ_OPTIMIZE=1)
6802 MOZ_SET_FRAMEPTR_FLAGS
6804 if test "$COMPILE_ENVIRONMENT"; then
6805 if test -n "$MOZ_OPTIMIZE"; then
6806     AC_MSG_CHECKING([for valid optimization flags])
6807     _SAVE_CFLAGS=$CFLAGS
6808     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6809     AC_TRY_COMPILE([#include <stdio.h>],
6810         [printf("Hello World\n");],
6811         _results=yes,
6812         _results=no)
6813     AC_MSG_RESULT([$_results])
6814     if test "$_results" = "no"; then
6815         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6816     fi
6817     CFLAGS=$_SAVE_CFLAGS
6819 fi # COMPILE_ENVIRONMENT
6821 AC_SUBST(MOZ_OPTIMIZE)
6822 AC_SUBST(MOZ_FRAMEPTR_FLAGS)
6823 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6824 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6825 AC_SUBST(MOZ_ALLOW_HEAP_EXECUTE_FLAGS)
6826 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6827 AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS)
6829 dnl ========================================================
6830 dnl = Enable any treating of compile warnings as errors
6831 dnl ========================================================
6832 MOZ_ARG_ENABLE_BOOL(warnings-as-errors,
6833 [  --enable-warnings-as-errors
6834                           Enable treating of warnings as errors],
6835     MOZ_ENABLE_WARNINGS_AS_ERRORS=1,
6836     MOZ_ENABLE_WARNINGS_AS_ERRORS=)
6837 if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
6838    WARNINGS_AS_ERRORS=''
6839 elif test "$GNU_CC"; then
6840     # Prevent the following GCC warnings from being treated as errors:
6841     # -Wuninitialized - too many false positives
6842     # -Wmaybe-uninitialized - too many false positives
6843     # -Wdeprecated-declarations - we don't want our builds held hostage when a
6844     #   platform-specific API becomes deprecated.
6845     MOZ_C_SUPPORTS_WARNING(-W, no-error=uninitialized, ac_c_has_noerror_uninitialized)
6846     MOZ_CXX_SUPPORTS_WARNING(-W, no-error=uninitialized, ac_cxx_has_noerror_uninitialized)
6847     MOZ_C_SUPPORTS_WARNING(-W, no-error=maybe-uninitialized, ac_c_has_noerror_maybe_uninitialized)
6848     MOZ_CXX_SUPPORTS_WARNING(-W, no-error=maybe-uninitialized, ac_cxx_has_noerror_maybe_uninitialized)
6849     MOZ_C_SUPPORTS_WARNING(-W, no-error=deprecated-declarations, ac_c_has_noerror_deprecated_declarations)
6850     MOZ_CXX_SUPPORTS_WARNING(-W, no-error=deprecated-declarations, ac_cxx_has_noerror_deprecated_declarations)
6853 dnl ========================================================
6854 dnl = Disable runtime logging checks
6855 dnl ========================================================
6856 MOZ_ARG_DISABLE_BOOL(logging,
6857 [  --disable-logging       Disable logging facilities],
6858     NS_DISABLE_LOGGING=1,
6859     NS_DISABLE_LOGGING= )
6860 if test "$NS_DISABLE_LOGGING"; then
6861     AC_DEFINE(NS_DISABLE_LOGGING)
6862 else
6863     AC_DEFINE(MOZ_LOGGING)
6866 dnl ========================================================
6867 dnl = This will enable logging of addref, release, ctor, dtor.
6868 dnl ========================================================
6869 _ENABLE_LOGREFCNT=42
6870 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6871 [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
6872     _ENABLE_LOGREFCNT=1,
6873     _ENABLE_LOGREFCNT= )
6874 if test "$_ENABLE_LOGREFCNT" = "1"; then
6875     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6876 elif test -z "$_ENABLE_LOGREFCNT"; then
6877     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6880 dnl ========================================================
6881 dnl moz_dump_painting
6882 dnl ========================================================
6883 MOZ_ARG_ENABLE_BOOL(dump-painting,
6884 [  --enable-dump-painting          Enable paint debugging.],
6885     MOZ_DUMP_PAINTING=1,
6886     MOZ_DUMP_PAINTING= )
6887 if test -n "$MOZ_DUMP_PAINTING"; then
6888     AC_DEFINE(MOZ_DUMP_PAINTING)
6889     AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
6891 if test -n "$MOZ_DEBUG"; then
6892     AC_DEFINE(MOZ_DUMP_PAINTING)
6895 dnl ========================================================
6896 dnl = Enable trace malloc
6897 dnl ========================================================
6898 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6899 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6900 [  --enable-trace-malloc   Enable malloc tracing; also disables DMD and jemalloc],
6901     NS_TRACE_MALLOC=1,
6902     NS_TRACE_MALLOC= )
6903 if test "$NS_TRACE_MALLOC"; then
6904   # Please, Mr. Linker Man, don't take away our symbol names
6905   MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6906   AC_DEFINE(NS_TRACE_MALLOC)
6908 AC_SUBST(NS_TRACE_MALLOC)
6910 dnl ========================================================
6911 dnl = Enable DMD
6912 dnl ========================================================
6914 MOZ_ARG_ENABLE_BOOL(dmd,
6915 [  --enable-dmd            Enable DMD; also enables jemalloc and replace-malloc],
6916     MOZ_DMD=1,
6917     MOZ_DMD= )
6919 dnl The two options are conflicting. Fails the configure to alert the user.
6920 if test "$NS_TRACE_MALLOC" -a "$MOZ_DMD"; then
6921     AC_MSG_ERROR([--enable-trace-malloc and --enable-dmd are conflicting options])
6924 if test "$MOZ_DMD"; then
6925     AC_DEFINE(MOZ_DMD)
6927     if test "${CPU_ARCH}" = "arm"; then
6928         CFLAGS="$CFLAGS -funwind-tables"
6929         CXXFLAGS="$CXXFLAGS -funwind-tables"
6930     fi
6932     MOZ_MEMORY=1                        # DMD enables jemalloc
6933     MOZ_REPLACE_MALLOC=1                # DMD enables replace-malloc
6935 AC_SUBST(MOZ_DMD)
6937 dnl ========================================================
6938 dnl = Enable jemalloc
6939 dnl ========================================================
6940 MOZ_ARG_ENABLE_BOOL(jemalloc,
6941 [  --enable-jemalloc       Replace memory allocator with jemalloc],
6942     MOZ_MEMORY=1,
6943     MOZ_MEMORY=)
6945 if test "$NS_TRACE_MALLOC"; then
6946     MOZ_MEMORY=
6949 if test "${OS_TARGET}" = "Android"; then
6950   dnl On Android, we use WRAP_LDFLAGS to link everything to mozglue
6951   :
6952 elif test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin"; then
6953   dnl On Windows and OSX, we want to link all our binaries against mozglue
6954   if test -z "$GNU_CC"; then
6955     MOZ_GLUE_LDFLAGS='$(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
6956   else
6957     MOZ_GLUE_LDFLAGS='-L$(LIBXUL_DIST)/lib $(call EXPAND_LIBNAME,mozglue)'
6958   fi
6959 else
6960   dnl On other Unix systems, we only want to link executables against mozglue
6961   MOZ_GLUE_PROGRAM_LDFLAGS='$(MKSHLIB_FORCE_ALL) $(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
6962   dnl On other Unix systems, where mozglue is a static library, jemalloc is
6963   dnl separated for the SDK, so we need to add it here.
6964   if test "$MOZ_MEMORY" = 1 -o \( "$LIBXUL_SDK" -a -f "$LIBXUL_SDK/lib/${LIB_PREFIX}memory.${LIB_SUFFIX}" \); then
6965     MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(call EXPAND_LIBNAME_PATH,memory,$(LIBXUL_DIST)/lib)'
6966   fi
6967   MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(MKSHLIB_UNFORCE_ALL)'
6968   if test -n "$GNU_CC"; then
6969     dnl And we need mozglue symbols to be exported.
6970     MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS -rdynamic"
6971   fi
6972   if test "$MOZ_LINKER" = 1; then
6973     MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS $MOZ_ZLIB_LIBS"
6974   fi
6977 dnl ========================================================
6978 dnl = Enable dynamic replacement of malloc implementation
6979 dnl ========================================================
6980 if test -n "$NIGHTLY_BUILD" -a -n "$MOZ_MEMORY"; then
6981   # Enable on central for the debugging opportunities it adds.
6982   MOZ_REPLACE_MALLOC=1
6984 MOZ_ARG_ENABLE_BOOL(replace-malloc,
6985 [  --enable-replace-malloc   Enable ability to dynamically replace the malloc implementation],
6986     MOZ_REPLACE_MALLOC=1,
6987     MOZ_REPLACE_MALLOC= )
6989 dnl The two options are conflicting. Fails the configure to alert the user.
6990 if test "$NS_TRACE_MALLOC" -a "$MOZ_REPLACE_MALLOC"; then
6991     AC_MSG_ERROR([--enable-trace-malloc and --enable-replace-malloc are conflicting options])
6994 if test -n "$MOZ_REPLACE_MALLOC" -a -z "$MOZ_MEMORY"; then
6995     dnl We don't want to enable jemalloc unconditionally because it may be a
6996     dnl deliberate choice not to enable it (bug 702250, for instance)
6997     AC_MSG_ERROR([--enable-replace-malloc requires --enable-jemalloc])
6998 elif test -n "$MOZ_REPLACE_MALLOC"; then
6999     MOZ_NATIVE_JEMALLOC=
7001     dnl Replace-malloc Mac linkage quirks
7002     if test -n "$MACOSX_DEPLOYMENT_TARGET"; then
7003         AC_CACHE_CHECK([how to do weak dynamic linking],
7004             ac_cv_weak_dynamic_linking,
7005             [echo 'extern void foo() __attribute__((weak_import));int bar() { if (foo) foo(); return 0; }' > conftest.c
7006              if AC_TRY_COMMAND([${CC-cc} -o conftest${DLL_SUFFIX} $CFLAGS -dynamiclib $LDFLAGS -Wl,-U,_foo conftest.c $LIBS 1>&5]) &&
7007                 test -s conftest${DLL_SUFFIX}; then
7008                  dnl There are several ways the linker can put link edit rules in a binary:
7009                  dnl - classic info only (for OSX < 10.6)
7010                  dnl - dyld info only
7011                  dnl - both
7012                  if otool -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO_ONLY" > /dev/null; then
7013                      _CLASSIC_INFO=
7014                  else
7015                      _CLASSIC_INFO=1
7016                  fi
7017                  if otool -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO" > /dev/null; then
7018                      _DYLD_INFO=1
7019                  else
7020                      _DYLD_INFO=
7021                  fi
7022                  dnl With classic info, we need to build with -flat_namespace.
7023                  dnl With dyld info, Xcode 4.5 does the right thing without additional flags,
7024                  dnl but Xcode < 4.5 requires a dummy library and -flat_namespace because it
7025                  dnl forgets to set the weak flag in the dyld info.
7026                  dnl See http://glandium.org/blog/?p=2764 for more details.
7027                  dnl
7028                  dnl Values for ac_cv_weak_dynamic_linking, and subsequently
7029                  dnl MOZ_REPLACE_MALLOC_LINKAGE are thus:
7030                  dnl - "flat namespace" when -flat_namespace alone is needed
7031                  dnl - "dummy library" when a dummy library and -flat_namespace are needed
7032                  dnl - "compiler support" when nothing is needed
7033                  if test -n "$_DYLD_INFO" && dyldinfo -bind conftest${DLL_SUFFIX} 2> /dev/null | grep "_foo (weak import)" > /dev/null; then
7034                      if test -n "$_CLASSIC_INFO"; then
7035                          ac_cv_weak_dynamic_linking="flat namespace"
7036                      else
7037                          ac_cv_weak_dynamic_linking="compiler support"
7038                      fi
7039                  else
7040                      if test -n "$_DYLD_INFO"; then
7041                          ac_cv_weak_dynamic_linking="dummy library"
7042                      else
7043                          ac_cv_weak_dynamic_linking="flat namespace"
7044                      fi
7045                  fi
7046              else
7047                  AC_ERROR([couldn't compile a simple C file])
7048              fi
7049              rm -rf conftest*])
7050         MOZ_REPLACE_MALLOC_LINKAGE="$ac_cv_weak_dynamic_linking"
7051     fi
7053 AC_SUBST(MOZ_REPLACE_MALLOC)
7054 AC_SUBST(MOZ_REPLACE_MALLOC_LINKAGE)
7056 dnl ========================================================
7057 dnl = Jemalloc build setup
7058 dnl ========================================================
7059 if test -z "$MOZ_MEMORY"; then
7060   if test -n "$MOZ_JEMALLOC3" -a -z "$MOZ_REPLACE_MALLOC"; then
7061     MOZ_NATIVE_JEMALLOC=1
7062     AC_CHECK_FUNCS(mallctl nallocm,,
7063       [MOZ_NATIVE_JEMALLOC=
7064        break])
7065     if test -n "$MOZ_NATIVE_JEMALLOC"; then
7066       MOZ_MEMORY=1
7067       AC_DEFINE(MOZ_MEMORY)
7068       AC_DEFINE(MOZ_JEMALLOC3)
7069       AC_DEFINE(MOZ_NATIVE_JEMALLOC)
7070     fi
7071   fi
7072   case "${target}" in
7073     *-mingw*)
7074       if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
7075         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.])
7076       fi
7077       ;;
7078   esac
7079 else
7080   AC_DEFINE(MOZ_MEMORY)
7081   if test -n "$MOZ_JEMALLOC3"; then
7082     AC_DEFINE(MOZ_JEMALLOC3)
7083   fi
7084   if test "x$MOZ_DEBUG" = "x1"; then
7085     AC_DEFINE(MOZ_MEMORY_DEBUG)
7086   fi
7087   dnl The generic feature tests that determine how to compute ncpus are long and
7088   dnl complicated.  Therefore, simply define special cpp variables for the
7089   dnl platforms we have special knowledge of.
7090   case "${target}" in
7091   *-darwin*)
7092     AC_DEFINE(MOZ_MEMORY_DARWIN)
7093     ;;
7094   *-*freebsd*)
7095     AC_DEFINE(MOZ_MEMORY_BSD)
7096     ;;
7097   *-android*|*-linuxandroid*)
7098     AC_DEFINE(MOZ_MEMORY_LINUX)
7099     AC_DEFINE(MOZ_MEMORY_ANDROID)
7100     if test -z "$gonkdir"; then
7101       _WRAP_MALLOC=1
7102     else
7103       AC_DEFINE(MOZ_MEMORY_GONK)
7104     fi
7105     MOZ_GLUE_LDFLAGS=
7106     ;;
7107   *-*linux*)
7108     AC_DEFINE(MOZ_MEMORY_LINUX)
7109     ;;
7110   *-netbsd*)
7111     AC_DEFINE(MOZ_MEMORY_BSD)
7112     ;;
7113   *-solaris*)
7114     AC_DEFINE(MOZ_MEMORY_SOLARIS)
7115     ;;
7116   *-mingw*)
7117     AC_DEFINE(MOZ_MEMORY_WINDOWS)
7118     export MOZ_NO_DEBUG_RTL=1
7119     WIN32_CRT_LIBS="msvcrt.lib msvcprt.lib"
7120     dnl Look for a broken crtdll.obj
7121     WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj`
7122     lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH
7123     if grep -q '__imp__\{0,1\}free' crtdll.obj; then
7124       MOZ_GLUE_LDFLAGS='-LIBPATH:$(DIST)/lib -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcprt -DEFAULTLIB:mozcrt'
7125       dnl Also pass this to NSPR/NSS
7126       DLLFLAGS="$DLLFLAGS $MOZ_GLUE_LDFLAGS"
7127     else
7128       DLLFLAGS="$DLLFLAGS -LIBPATH:\$(DIST)/lib -DEFAULTLIB:mozglue"
7129     fi
7130     rm crtdll.obj
7132     export DLLFLAGS
7133     ;;
7134   *)
7135     AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7136     ;;
7137   esac
7138 fi # MOZ_MEMORY
7139 AC_SUBST(MOZ_MEMORY)
7140 AC_SUBST(MOZ_JEMALLOC3)
7141 AC_SUBST(MOZ_NATIVE_JEMALLOC)
7142 AC_SUBST(MOZ_GLUE_LDFLAGS)
7143 AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS)
7144 AC_SUBST(WIN32_CRT_LIBS)
7145 dnl Need to set this for make because NSS doesn't have configure
7146 AC_SUBST(DLLFLAGS)
7148 dnl We need to wrap dlopen and related functions on Android because we use
7149 dnl our own linker.
7150 if test "$OS_TARGET" = Android; then
7151     WRAP_LDFLAGS="${WRAP_LDFLAGS} -L$_objdir/dist/lib -lmozglue"
7152     WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=PR_GetEnv,--wrap=PR_SetEnv"
7153     if test "$MOZ_WIDGET_TOOLKIT" = android; then
7154         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=getaddrinfo,--wrap=freeaddrinfo,--wrap=gai_strerror"
7155     fi
7156     if test -z "$gonkdir"; then
7157         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=fork,--wrap=pthread_atfork,--wrap=raise"
7158         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"
7159     fi
7160     if test "$MOZ_WIDGET_TOOLKIT" = gonk -a -n "$MOZ_NUWA_PROCESS"; then
7161         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"
7162     fi
7165 dnl ========================================================
7166 dnl = Use malloc wrapper lib
7167 dnl ========================================================
7168 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
7169 [  --enable-wrap-malloc    Wrap malloc calls (gnu linker only)],
7170     _WRAP_MALLOC=1,
7171     _WRAP_MALLOC= )
7173 if test -n "$_WRAP_MALLOC"; then
7174     if test -n "$GNU_CC"; then
7175         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=malloc,--wrap=calloc,--wrap=valloc,--wrap=free,--wrap=realloc,--wrap=memalign"
7176         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=__builtin_new,--wrap=__builtin_vec_new,--wrap=__builtin_delete,--wrap=__builtin_vec_delete"
7177         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=strdup,--wrap=strndup"
7178         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=vasprintf,--wrap=asprintf"
7179         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=posix_memalign,--wrap=malloc_usable_size"
7180         dnl Wrap operator new and operator delete on Android.
7181         if test "$OS_TARGET" = "Android"; then
7182             WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_Znwj,--wrap=_Znaj,--wrap=_ZdlPv,--wrap=_ZdaPv"
7183             dnl Wrap the nothrow variants too.
7184             WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_ZnwjRKSt9nothrow_t,--wrap=_ZnajRKSt9nothrow_t,--wrap=_ZdlPvRKSt9nothrow_t,--wrap=_ZdaPvRKSt9nothrow_t"
7185         fi
7186     else
7187         AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains])
7188     fi
7191 dnl ========================================================
7192 dnl = Location of malloc wrapper lib
7193 dnl ========================================================
7194 MOZ_ARG_WITH_STRING(wrap-malloc,
7195 [  --with-wrap-malloc=DIR  Location of malloc wrapper library],
7196     WRAP_LDFLAGS="${WRAP_LDFLAGS} $withval")
7198 dnl ========================================================
7199 dnl = Use JS Call tracing
7200 dnl ========================================================
7201 MOZ_ARG_ENABLE_BOOL(trace-jscalls,
7202 [  --enable-trace-jscalls  Enable JS call enter/exit callback (default=no)],
7203     MOZ_TRACE_JSCALLS=1,
7204     MOZ_TRACE_JSCALLS= )
7205 if test -n "$MOZ_TRACE_JSCALLS"; then
7206     AC_DEFINE(MOZ_TRACE_JSCALLS)
7209 dnl ========================================================
7210 dnl JS opt-mode assertions and minidump instrumentation
7211 dnl ========================================================
7212 MOZ_ARG_ENABLE_BOOL(js-diagnostics,
7213 [  --enable-js-diagnostics
7214                           Enable JS diagnostic assertions and breakpad data],
7215     JS_CRASH_DIAGNOSTICS=1,
7216     JS_CRASH_DIAGNOSTICS= )
7217 if test -n "$JS_CRASH_DIAGNOSTICS"; then
7218     AC_DEFINE(JS_CRASH_DIAGNOSTICS)
7221 dnl ========================================================
7222 dnl = Use incremental GC
7223 dnl ========================================================
7224 JSGC_INCREMENTAL=1
7225 MOZ_ARG_DISABLE_BOOL(gcincremental,
7226 [  --disable-gcincremental Disable incremental GC],
7227     JSGC_INCREMENTAL= )
7228 if test -n "$JSGC_INCREMENTAL"; then
7229     AC_DEFINE(JSGC_INCREMENTAL)
7232 dnl ========================================================
7233 dnl = Use exact stack rooting for GC
7234 dnl ========================================================
7235 MOZ_ARG_DISABLE_BOOL(exact-rooting,
7236 [  --disable-exact-rooting  Enable use of conservative stack scanning for GC],
7237     JSGC_USE_EXACT_ROOTING= ,
7238     JSGC_USE_EXACT_ROOTING=1 )
7239 if test -n "$JSGC_USE_EXACT_ROOTING"; then
7240     AC_DEFINE(JSGC_USE_EXACT_ROOTING)
7243 dnl ========================================================
7244 dnl = Use generational GC
7245 dnl ========================================================
7246 MOZ_ARG_DISABLE_BOOL(gcgenerational,
7247 [  --disable-gcgenerational Disable generational GC],
7248     JSGC_GENERATIONAL= ,
7249     JSGC_GENERATIONAL=1 )
7250 if test -n "$JSGC_GENERATIONAL"; then
7251     AC_DEFINE(JSGC_GENERATIONAL)
7254 dnl ========================================================
7255 dnl Zealous JavaScript GC
7256 dnl ========================================================
7257 MOZ_ARG_ENABLE_BOOL(gczeal,
7258 [  --enable-gczeal         Enable zealous JavaScript GCing],
7259     JS_GC_ZEAL=1,
7260     JS_GC_ZEAL= )
7261 if test -n "$JS_GC_ZEAL" -o -n "$MOZ_DEBUG"; then
7262     AC_DEFINE(JS_GC_ZEAL)
7265 dnl ========================================================
7266 dnl = Perform moving GC stack rooting analysis
7267 dnl ========================================================
7268 MOZ_ARG_ENABLE_BOOL(root-analysis,
7269 [  --enable-root-analysis  Enable moving GC stack root analysis],
7270     JSGC_ROOT_ANALYSIS=1,
7271     JSGC_ROOT_ANALYSIS= )
7272 if test -n "$JSGC_ROOT_ANALYSIS"; then
7273     AC_DEFINE(JSGC_ROOT_ANALYSIS)
7276 MOZ_CHECK_CCACHE
7278 dnl ========================================================
7279 dnl = Enable static checking using gcc-dehydra
7280 dnl ========================================================
7282 MOZ_ARG_WITH_STRING(static-checking,
7283 [  --with-static-checking=path/to/gcc_dehydra.so
7284                           Enable static checking of code using GCC-dehydra],
7285     DEHYDRA_PATH=$withval,
7286     DEHYDRA_PATH= )
7288 if test -n "$DEHYDRA_PATH"; then
7289     if test ! -f "$DEHYDRA_PATH"; then
7290         AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7291     fi
7292     AC_DEFINE(NS_STATIC_CHECKING)
7294 AC_SUBST(DEHYDRA_PATH)
7296 dnl ========================================================
7297 dnl = Enable using the clang plugin to build
7298 dnl ========================================================
7300 MOZ_ARG_ENABLE_BOOL(clang-plugin,
7301 [  --enable-clang-plugin   Enable building with the mozilla clang plugin ],
7302    ENABLE_CLANG_PLUGIN=1,
7303    ENABLE_CLANG_PLUGIN= )
7304 if test -n "$ENABLE_CLANG_PLUGIN"; then
7305     if test -z "$CLANG_CC"; then
7306         AC_MSG_ERROR([Can't use clang plugin without clang.])
7307     fi
7308     AC_DEFINE(MOZ_CLANG_PLUGIN)
7311 AC_SUBST(ENABLE_CLANG_PLUGIN)
7313 dnl ========================================================
7314 dnl = Enable stripping of libs & executables
7315 dnl ========================================================
7316 MOZ_ARG_ENABLE_BOOL(strip,
7317 [  --enable-strip          Enable stripping of libs & executables ],
7318     ENABLE_STRIP=1,
7319     ENABLE_STRIP= )
7321 dnl ========================================================
7322 dnl = Enable stripping of libs & executables when packaging
7323 dnl ========================================================
7324 MOZ_ARG_ENABLE_BOOL(install-strip,
7325 [  --enable-install-strip  Enable stripping of libs & executables when packaging ],
7326     PKG_SKIP_STRIP= ,
7327     PKG_SKIP_STRIP=1)
7329 dnl ========================================================
7330 dnl = --disable-elf-hack
7331 dnl ========================================================
7333 USE_ELF_HACK=1
7334 MOZ_ARG_DISABLE_BOOL(elf-hack,
7335 [  --disable-elf-hack      Disable elf hacks],
7336     [USE_ELF_HACK=],
7337     [USE_ELF_HACK=F # Force enable elf-hack])
7339 # Disable elf hack for profiling because the built in profiler
7340 # doesn't read the segments properly with elf hack. This is
7341 # temporary and should be fixed soon in the profiler.
7342 if test "$MOZ_PROFILING" = 1; then
7343   if test "$USE_ELF_HACK" = F; then
7344     AC_ERROR([--enable-elf-hack is not compatible with --enable-profiling])
7345   fi
7346   USE_ELF_HACK=
7349 # Only enable elfhack where supported
7350 if test "$USE_ELF_HACK" = 1; then
7351     case "${HOST_OS_ARCH},${OS_ARCH}" in
7352     Linux,Linux)
7353         case "${CPU_ARCH}" in
7354         arm | x86 | x86_64)
7355             USE_ELF_HACK=1
7356             ;;
7357         *)
7358             USE_ELF_HACK=
7359             ;;
7360         esac
7361         ;;
7362     *)
7363         USE_ELF_HACK=
7364         ;;
7365     esac
7368 if test -n "$COMPILE_ENVIRONMENT" -a -n "$USE_ELF_HACK"; then
7369     dnl PT_GNU_RELRO segment makes the dynamic linker set a read-only flag on
7370     dnl memory addresses it maps to. The result is that by the time elfhack
7371     dnl kicks in, it is not possible to apply relocations because of that,
7372     dnl thus elfhack effectively skips relocations inside the PT_GNU_RELRO
7373     dnl segment. It makes elfhack mostly useless, so considering the problems
7374     dnl we have we PT_GNU_RELRO (e.g. bug 664366), and until elfhack can deal
7375     dnl with PT_GNU_RELRO segments, it's just simpler to disable elfhack when
7376     dnl the linker creates PT_GNU_RELRO segments. However, when we do want
7377     dnl elfhack enabled, disable PT_GNU_RELRO instead.
7378     AC_CACHE_CHECK([whether linker creates PT_GNU_RELRO segments],
7379         LINK_WITH_PT_GNU_RELRO,
7380         [echo "int main() {return 0;}" > conftest.${ac_ext}
7381          if AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.${ac_ext} $LIBS 1>&2) &&
7382             test -s conftest${ac_exeext}; then
7383             if ${TOOLCHAIN_PREFIX}readelf -l conftest${ac_exeext} | grep GNU_RELRO > /dev/null; then
7384                 LINK_WITH_PT_GNU_RELRO=yes
7385             else
7386                 LINK_WITH_PT_GNU_RELRO=no
7387             fi
7388          else
7389              dnl We really don't expect to get here, but just in case
7390              AC_ERROR([couldn't compile a simple C file])
7391          fi
7392          rm -rf conftest*])
7393     if test "$LINK_WITH_PT_GNU_RELRO" = yes; then
7394         if test "$USE_ELF_HACK" = F; then
7395             AC_MSG_CHECKING([for -z norelro option to ld])
7396             _SAVE_LDFLAGS=$LDFLAGS
7397             LDFLAGS="$LDFLAGS -Wl,-z,norelro"
7398             AC_TRY_LINK(,,AC_MSG_RESULT([yes])
7399                         [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,norelro"],
7400                         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.]))
7401             USE_ELF_HACK=1
7402         else
7403             AC_MSG_WARN([Disabling elfhack])
7404             USE_ELF_HACK=
7405         fi
7406     fi
7409 dnl ========================================================
7410 dnl = libstdc++ compatibility hacks
7411 dnl ========================================================
7413 STDCXX_COMPAT=
7414 MOZ_ARG_ENABLE_BOOL(stdcxx-compat,
7415 [  --enable-stdcxx-compat  Enable compatibility with older libstdc++],
7416     STDCXX_COMPAT=1)
7418 if test -n "$STDCXX_COMPAT"; then
7419    eval $(CXX="$CXX" HOST_CXX="$HOST_CXX" $PYTHON -m mozbuild.configure.libstdcxx)
7420    AC_SUBST(MOZ_LIBSTDCXX_TARGET_VERSION)
7421    AC_SUBST(MOZ_LIBSTDCXX_HOST_VERSION)
7424 dnl ========================================================
7425 dnl =
7426 dnl = Profiling and Instrumenting
7427 dnl =
7428 dnl ========================================================
7429 MOZ_ARG_HEADER(Profiling and Instrumenting)
7431 dnl ========================================================
7432 dnl = Enable runtime visual profiling logger
7433 dnl ========================================================
7434 MOZ_ARG_ENABLE_BOOL(visual-event-tracer,
7435 [  --enable-visual-event-tracer   Enable visual event tracer instrumentation],
7436     MOZ_VISUAL_EVENT_TRACER=1,
7437     MOZ_VISUAL_EVENT_TRACER=)
7438 if test -n "$MOZ_VISUAL_EVENT_TRACER"; then
7439     AC_DEFINE(MOZ_VISUAL_EVENT_TRACER)
7442 dnl ========================================================
7443 dnl = Enable TaskTracer
7444 dnl ========================================================
7445 MOZ_ARG_ENABLE_BOOL(tasktracer,
7446 [  --enable-tasktracer       Set compile flags necessary for using TaskTracer],
7447     MOZ_TASK_TRACER=1,
7448     MOZ_TASK_TRACER= )
7449 if test "$MOZ_WIDGET_TOOLKIT" = "gonk" -a -n "$MOZ_TASK_TRACER"; then
7450     AC_DEFINE(MOZ_TASK_TRACER)
7451     AC_SUBST(MOZ_TASK_TRACER)
7454 dnl ========================================================
7455 dnl Turn on reflow counting
7456 dnl ========================================================
7457 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7458 [  --enable-reflow-perf    Enable reflow performance tracing],
7459     MOZ_REFLOW_PERF=1,
7460     MOZ_REFLOW_PERF= )
7461 if test -n "$MOZ_REFLOW_PERF"; then
7462     AC_DEFINE(MOZ_REFLOW_PERF)
7465 dnl ========================================================
7466 dnl = Offer a way to disable the startup cache
7467 dnl ========================================================
7468 MOZ_DISABLE_STARTUPCACHE=
7470 MOZ_ARG_DISABLE_BOOL(startupcache,
7471 [  --disable-startupcache          Disable startup cache ],
7472     MOZ_DISABLE_STARTUPCACHE=1,
7473     MOZ_DISABLE_STARTUPCACHE=)
7475 dnl bug 988880: disable startup cache on b2g
7476 if test -n "$MOZ_B2G"; then
7477   MOZ_DISABLE_STARTUPCACHE=1
7480 AC_SUBST(MOZ_DISABLE_STARTUPCACHE)
7482 dnl ========================================================
7483 dnl = Enable Radio Interface for B2G (Gonk usually)
7484 dnl ========================================================
7485 MOZ_ARG_ENABLE_BOOL(b2g-ril,
7486 [  --enable-b2g-ril      Set compile flags necessary for testing B2G Radio Interface Layer via network sockets ],
7487     MOZ_B2G_RIL=1,
7488     MOZ_B2G_RIL=,
7489     MOZ_B2G_RIL=$_PLATFORM_HAVE_RIL )
7490 if test -n "$MOZ_B2G_RIL"; then
7491     if test -n "$_PLATFORM_HAVE_RIL"; then
7492         AC_DEFINE(MOZ_B2G_RIL)
7493     else
7494         AC_MSG_ERROR([b2g-ril cannot be enabled because target platform doesn't support it.])
7495     fi
7497 AC_SUBST(MOZ_B2G_RIL)
7499 dnl ========================================================
7500 dnl = Enable Radio FM for B2G (Gonk usually)
7501 dnl ========================================================
7502 if test -n "$MOZ_B2G_FM"; then
7503     AC_DEFINE(MOZ_B2G_FM)
7505 AC_SUBST(MOZ_B2G_FM)
7507 dnl ========================================================
7508 dnl = Enable Bluetooth Interface for B2G (Gonk usually)
7509 dnl ========================================================
7510 MOZ_ARG_ENABLE_BOOL(b2g-bt,
7511 [  --enable-b2g-bt      Set compile flags necessary for compiling Bluetooth API for B2G ],
7512     MOZ_B2G_BT=1,
7513     MOZ_B2G_BT= )
7514 if test -n "$MOZ_B2G_BT"; then
7515     AC_DEFINE(MOZ_B2G_BT)
7517 AC_SUBST(MOZ_B2G_BT)
7518 AC_SUBST(MOZ_B2G_BT_BLUEZ)
7519 AC_SUBST(MOZ_B2G_BT_BLUEDROID)
7521 dnl ========================================================
7522 dnl = Enable NFC Interface for B2G (Gonk usually)
7523 dnl ========================================================
7524 MOZ_ARG_ENABLE_BOOL(nfc,
7525 [  --enable-nfc         Set compile flags necessary for compiling NFC API ],
7526     MOZ_NFC=1,
7527     MOZ_NFC= )
7528 if test -n "$MOZ_NFC"; then
7529    AC_DEFINE(MOZ_NFC)
7531 AC_SUBST(MOZ_NFC)
7533 dnl ========================================================
7534 dnl = Enable Pico Speech Synthesis (Gonk usually)
7535 dnl ========================================================
7536 MOZ_ARG_ENABLE_BOOL(synth-pico,
7537 [  --enable-synth-pico  Set compile flags necessary for compiling Pico Web Speech API ],
7538     MOZ_SYNTH_PICO=1,
7539     MOZ_SYNTH_PICO= )
7540 if test -n "$MOZ_SYNTH_PICO"; then
7541     AC_DEFINE(MOZ_SYNTH_PICO)
7543 AC_SUBST(MOZ_SYNTH_PICO)
7545 dnl ========================================================
7546 dnl = Enable Support for Time Manager API
7547 dnl ========================================================
7548 if test -n "$MOZ_TIME_MANAGER"; then
7549     AC_DEFINE(MOZ_TIME_MANAGER)
7551 AC_SUBST(MOZ_TIME_MANAGER)
7553 dnl ========================================================
7554 dnl = Enable Camera Interface for B2G (Gonk usually)
7555 dnl ========================================================
7556 MOZ_ARG_ENABLE_BOOL(b2g-camera,
7557 [  --enable-b2g-camera      Set compile flags necessary for compiling camera API for B2G ],
7558     MOZ_B2G_CAMERA=1,
7559     MOZ_B2G_CAMERA= )
7560 if test -n "$MOZ_B2G_CAMERA"; then
7561    AC_DEFINE(MOZ_B2G_CAMERA)
7563 AC_SUBST(MOZ_B2G_CAMERA)
7565 dnl ========================================================
7566 dnl = Enable Support for Payment API
7567 dnl ========================================================
7568 if test -n "$MOZ_PAY"; then
7569     AC_DEFINE(MOZ_PAY)
7571 AC_SUBST(MOZ_PAY)
7573 dnl ========================================================
7574 dnl = Enable Browser Support for Activities
7575 dnl ========================================================
7576 if test -n "$MOZ_ACTIVITIES"; then
7577     AC_DEFINE(MOZ_ACTIVITIES)
7579 AC_SUBST(MOZ_ACTIVITIES)
7581 dnl ========================================================
7582 dnl = Enable Support for AudioChannelManager API
7583 dnl ========================================================
7584 if test -n "$MOZ_AUDIO_CHANNEL_MANAGER"; then
7585     AC_DEFINE(MOZ_AUDIO_CHANNEL_MANAGER)
7587 AC_SUBST(MOZ_AUDIO_CHANNEL_MANAGER)
7589 dnl ========================================================
7590 dnl = Enable Support for Firefox Accounts (services/fxaccounts)
7591 dnl ========================================================
7592 if test -n "$MOZ_SERVICES_FXACCOUNTS"; then
7593     AC_DEFINE(MOZ_SERVICES_FXACCOUNTS)
7595 AC_SUBST(MOZ_SERVICES_FXACCOUNTS)
7597 dnl ========================================================
7598 dnl = Support for demangling undefined symbols
7599 dnl ========================================================
7600 if test -z "$SKIP_LIBRARY_CHECKS"; then
7601     AC_LANG_SAVE
7602     AC_LANG_CPLUSPLUS
7603     AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7604     AC_LANG_RESTORE
7607 # Demangle only for debug or trace-malloc or DMD builds
7608 MOZ_DEMANGLE_SYMBOLS=
7609 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC" -o "$MOZ_DMD"; then
7610     MOZ_DEMANGLE_SYMBOLS=1
7611     AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7613 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7615 dnl ========================================================
7616 dnl = Support for gcc stack unwinding (from gcc 3.3)
7617 dnl ========================================================
7618 if test -z "$SKIP_LIBRARY_CHECKS"; then
7619     AC_LANG_SAVE
7620     AC_LANG_CPLUSPLUS
7621     MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7622     AC_LANG_RESTORE
7625 dnl ========================================================
7626 dnl JIT observers
7627 dnl ========================================================
7629 MOZ_ARG_WITH_STRING(jitreport-granularity,
7630 [  --jitreport-granularity=N
7631                            Default granularity at which to report JIT code
7632                            to external tools
7633                              0 - no info
7634                              1 - code ranges for whole functions only
7635                              2 - per-line information
7636                              3 - per-op information],
7637   JITREPORT_GRANULARITY=$withval,
7638   JITREPORT_GRANULARITY=3)
7640 AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY)
7642 dnl ========================================================
7643 dnl =
7644 dnl = Misc. Options
7645 dnl =
7646 dnl ========================================================
7647 MOZ_ARG_HEADER(Misc. Options)
7649 dnl ========================================================
7650 dnl update xterm title
7651 dnl ========================================================
7652 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7653 [  --enable-xterm-updates  Update XTERM titles with current command.],
7654     MOZ_UPDATE_XTERM=1,
7655     MOZ_UPDATE_XTERM= )
7657 dnl =========================================================
7658 dnl = Chrome format
7659 dnl =========================================================
7660 MOZ_ARG_ENABLE_STRING([chrome-format],
7661 [  --enable-chrome-format=jar|flat|omni
7662                           Select FORMAT of chrome files during packaging],
7663     MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7665 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7666     MOZ_CHROME_FILE_FORMAT=jar
7669 if test "$MOZ_CHROME_FILE_FORMAT" = "symlink"; then
7670     AC_MSG_ERROR([--enable-chrome-format=symlink has been deprecated. It is now used by default in $DIST/bin on platforms that support it])
7673 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
7674     test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7675     test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7676     AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, or omni])
7679 dnl ========================================================
7680 dnl = Enable Support for devtools webide
7681 dnl ========================================================
7682 MOZ_ARG_ENABLE_BOOL(devtools-webide,
7683 [  --enable-devtools-webide Set compile flags necessary for compiling devtools webide ],
7684 MOZ_DEVTOOLS_WEBIDE=1,
7685 MOZ_DEVTOOLS_WEBIDE= )
7687 if test -n "$MOZ_DEVTOOLS_WEBIDE"; then
7688     AC_DEFINE(MOZ_DEVTOOLS_WEBIDE)
7690 AC_SUBST(MOZ_DEVTOOLS_WEBIDE)
7692 dnl =========================================================
7693 dnl Omnijar packaging (bug 552121)
7694 dnl =========================================================
7695 dnl Omnijar packaging is compatible with flat packaging.
7696 dnl In unpackaged builds, omnijar looks for files as if
7697 dnl things were flat packaged. After packaging, all files
7698 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7699 dnl is set to flat since putting files into jars is only
7700 dnl done during packaging with omnijar.
7701 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7702     MOZ_OMNIJAR=1
7703     AC_DEFINE(MOZ_OMNIJAR)
7705 MOZ_PACKAGER_FORMAT="$MOZ_CHROME_FILE_FORMAT"
7706 if test "$OS_ARCH" = "WINNT" -o "$MOZ_WIDGET_TOOLKIT" = "android"; then
7707     MOZ_CHROME_FILE_FORMAT=flat
7708 else
7709     MOZ_CHROME_FILE_FORMAT=symlink
7712 if test "$MOZ_WIDGET_TOOLKIT" = "android"; then
7713     dnl Fennec's static resources live in the assets/ folder of the
7714     dnl APK.  Adding a path to the name here works because we only
7715     dnl have one omnijar file in the final package (which is not the
7716     dnl case on desktop), and necessitates some contortions during
7717     dnl packaging so that the resources in the omnijar are considered
7718     dnl as rooted at / and not as rooted at assets/ (which again is
7719     dnl not the case on desktop: there are omnijars rooted at webrtc/,
7720     dnl etc). packager.mk handles changing the rooting of the single
7721     dnl omnijar.
7722     OMNIJAR_NAME=assets/omni.ja
7723 else
7724     OMNIJAR_NAME=omni.ja
7727 AC_SUBST(OMNIJAR_NAME)
7728 AC_SUBST(MOZ_OMNIJAR)
7729 AC_SUBST(MOZ_PACKAGER_FORMAT)
7731 dnl ========================================================
7732 dnl = Define default location for MOZILLA_FIVE_HOME
7733 dnl ========================================================
7734 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7735 [  --with-default-mozilla-five-home
7736                           Set the default value for MOZILLA_FIVE_HOME],
7737 [ val=`echo $withval`
7738   AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7740 dnl ========================================================
7741 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7742 dnl ========================================================
7743 MOZ_ARG_WITH_STRING(user-appdir,
7744 [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
7745 [ val=`echo $withval`
7746 if echo "$val" | grep "\/" >/dev/null; then
7747     AC_MSG_ERROR("Homedir must be single relative path.")
7748 else
7749     MOZ_USER_DIR="$val"
7750 fi])
7752 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7754 dnl ========================================================
7755 dnl = Doxygen configuration
7756 dnl ========================================================
7757 dnl Use commas to specify multiple dirs to this arg
7758 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7759 MOZ_ARG_WITH_STRING(doc-input-dirs,
7760 [  --with-doc-input-dirs=DIRS
7761                           Header/idl dirs to create docs from],
7762 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7763 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7765 dnl Use commas to specify multiple dirs to this arg
7766 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7767 MOZ_ARG_WITH_STRING(doc-include-dirs,
7768 [  --with-doc-include-dirs=DIRS
7769                           Include dirs to preprocess doc headers],
7770 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7771 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7773 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7774 MOZ_ARG_WITH_STRING(doc-output-dir,
7775 [  --with-doc-output-dir=DIR
7776                           Dir to generate docs into],
7777 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7778 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7780 if test -z "$SKIP_COMPILER_CHECKS"; then
7781 dnl ========================================================
7782 dnl =
7783 dnl = Compiler Options
7784 dnl =
7785 dnl ========================================================
7786 MOZ_ARG_HEADER(Compiler Options)
7788 dnl ========================================================
7789 dnl Check for gcc -pipe support
7790 dnl ========================================================
7791 AC_MSG_CHECKING([for -pipe support])
7792 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
7793     dnl Any gcc that supports firefox supports -pipe.
7794     CFLAGS="$CFLAGS -pipe"
7795     CXXFLAGS="$CXXFLAGS -pipe"
7796     AC_MSG_RESULT([yes])
7797 else
7798     AC_MSG_RESULT([no])
7801 dnl ========================================================
7802 dnl Profile guided optimization (gcc checks)
7803 dnl ========================================================
7804 dnl Test for profiling options
7805 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
7807 _SAVE_CFLAGS="$CFLAGS"
7808 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
7810 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
7811 AC_TRY_COMPILE([], [return 0;],
7812                [ PROFILE_GEN_CFLAGS="-fprofile-generate"
7813                  result="yes" ], result="no")
7814 AC_MSG_RESULT([$result])
7816 if test $result = "yes"; then
7817   PROFILE_GEN_LDFLAGS="-fprofile-generate"
7818   PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch"
7819   PROFILE_USE_LDFLAGS="-fprofile-use"
7822 CFLAGS="$_SAVE_CFLAGS"
7824 if test -n "$INTEL_CC"; then
7825   PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
7826   PROFILE_GEN_LDFLAGS=
7827   PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
7828   PROFILE_USE_LDFLAGS=
7831 dnl Sun Studio on Solaris
7832 if test "$SOLARIS_SUNPRO_CC"; then
7833   PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
7834   PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7835   PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7836   PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7839 AC_SUBST(PROFILE_GEN_CFLAGS)
7840 AC_SUBST(PROFILE_GEN_LDFLAGS)
7841 AC_SUBST(PROFILE_USE_CFLAGS)
7842 AC_SUBST(PROFILE_USE_LDFLAGS)
7844 AC_LANG_CPLUSPLUS
7846 dnl ========================================================
7847 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7848 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7849 dnl raw pointers in nsCOMPtr.h.  (VC++ has the same bug.)
7850 dnl ========================================================
7851 _SAVE_CXXFLAGS=$CXXFLAGS
7852 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7853 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7854     ac_nscap_nonconst_opeq_bug,
7855     [AC_TRY_COMPILE([
7856                       template <class T>
7857                       class Pointer
7858                         {
7859                         public:
7860                           T* myPtr;
7861                         };
7863                       template <class T, class U>
7864                       int operator==(const Pointer<T>& rhs, U* lhs)
7865                         {
7866                           return rhs.myPtr == lhs;
7867                         }
7869                       template <class T, class U>
7870                       int operator==(const Pointer<T>& rhs, const U* lhs)
7871                         {
7872                           return rhs.myPtr == lhs;
7873                         }
7874                     ],
7875                     [
7876                       Pointer<int> foo;
7877                       const int* bar;
7878                       return foo == bar;
7879                     ],
7880                     ac_nscap_nonconst_opeq_bug="no",
7881                     ac_nscap_nonconst_opeq_bug="yes")])
7882 CXXFLAGS="$_SAVE_CXXFLAGS"
7884 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7885     AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7887 fi # ! SKIP_COMPILER_CHECKS
7889 AC_DEFINE(CPP_THROW_NEW, [throw()])
7890 AC_LANG_C
7892 if test "$COMPILE_ENVIRONMENT"; then
7893 MOZ_EXPAND_LIBS
7894 fi # COMPILE_ENVIRONMENT
7896 dnl ========================================================
7897 dnl =
7898 dnl = Build depencency options
7899 dnl =
7900 dnl ========================================================
7901 MOZ_ARG_HEADER(Build dependencies)
7903 if test "$GNU_CC" -a "$GNU_CXX"; then
7904   _DEPEND_CFLAGS='-MD -MP -MF $(MDDEPDIR)/$(@F).pp'
7905 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7906 elif test "$SOLARIS_SUNPRO_CC"; then
7907   _DEPEND_CFLAGS=
7908 else
7909   dnl Don't override this for MSVC
7910   if test -z "$_WIN32_MSVC"; then
7911     _USE_CPP_INCLUDE_FLAG=
7912     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7913     _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7914   else
7915     echo '#include <stdio.h>' > dummy-hello.c
7916     changequote(,)
7917     dnl This output is localized, split at the first double space or colon and space.
7918     _CL_PREFIX_REGEX="^\([^:]*:.*[ :] \)\(.*stdio.h\)$"
7919     CL_INCLUDES_PREFIX=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\1/p'`
7920     _CL_STDIO_PATH=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\2/p'`
7921     changequote([,])
7922     if ! test -e "$_CL_STDIO_PATH"; then
7923         AC_MSG_ERROR([Unable to parse cl -showIncludes prefix. This compiler's locale has an unsupported formatting.])
7924     fi
7925     if test -z "$CL_INCLUDES_PREFIX"; then
7926         AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
7927     fi
7928     AC_SUBST(CL_INCLUDES_PREFIX)
7929     rm -f dummy-hello.c
7931     dnl Make sure that the build system can handle non-ASCII characters
7932     dnl in environment variables to prevent it from breaking silently on
7933     dnl non-English systems.
7934     NONASCII=$'\241\241'
7935     AC_SUBST(NONASCII)
7936   fi
7939 dnl ========================================================
7940 dnl =
7941 dnl = Static Build Options
7942 dnl =
7943 dnl ========================================================
7944 MOZ_ARG_HEADER(Static build options)
7946 AC_SUBST(LIBXUL_LIBS)
7947 XPCOM_LIBS="$LIBXUL_LIBS"
7949 if test "$OS_ARCH" = "WINNT"; then
7950   GKMEDIAS_SHARED_LIBRARY=1
7951   AC_DEFINE(GKMEDIAS_SHARED_LIBRARY)
7953 AC_SUBST(GKMEDIAS_SHARED_LIBRARY)
7955 if test -z "$MOZ_NATIVE_ZLIB"; then
7956 if test -n "$JS_SHARED_LIBRARY" -o "$GKMEDIAS_SHARED_LIBRARY"; then
7957   ZLIB_IN_MOZGLUE=1
7958   AC_DEFINE(ZLIB_IN_MOZGLUE)
7962 AC_SUBST(ZLIB_IN_MOZGLUE)
7964 dnl ========================================================
7965 dnl =
7966 dnl = Standalone module options
7967 dnl =
7968 dnl ========================================================
7969 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7971 dnl Check for GLib.
7972 dnl ========================================================
7974 if test -z "$SKIP_PATH_CHECKS"; then
7975 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
7976     if test "$MOZ_ENABLE_GTK" ; then
7977         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7978     fi
7982 if test -z "${GLIB_GMODULE_LIBS}" \
7983    -a -n "${GLIB_CONFIG}"\
7984     -a "${GLIB_CONFIG}" != no\
7985 ; then
7986     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7989 AC_SUBST(GLIB_CFLAGS)
7990 AC_SUBST(GLIB_LIBS)
7991 AC_SUBST(GLIB_GMODULE_LIBS)
7993 dnl ========================================================
7994 dnl Graphics checks.
7995 dnl ========================================================
7997 if test "${OS_TARGET}" = "WINNT"; then
7998   if $PERL -e "exit($MOZ_WINSDK_MAXVER < 0x06020000)"; then
7999     MOZ_ENABLE_DIRECT2D1_1=1
8000     AC_SUBST(MOZ_ENABLE_DIRECT2D1_1)
8001   fi
8004 if test "${OS_TARGET}" = "WINNT" -o \
8005         "${OS_ARCH}" = "Darwin" -o \
8006         "${MOZ_WIDGET_TOOLKIT}" = "android" -o \
8007         "${MOZ_WIDGET_TOOLKIT}" = "gonk" -o \
8008         "${MOZ_WIDGET_TOOLKIT}" = "gtk2" -o \
8009         "${MOZ_WIDGET_TOOLKIT}" = "gtk3"; then
8010     case "${target_cpu}" in
8011     i*86*|x86_64|arm)
8012         MOZ_ENABLE_SKIA=1
8013         ;;
8014     *)
8015         MOZ_ENABLE_SKIA=
8016         ;;
8017     esac
8018 else
8019 MOZ_ENABLE_SKIA=
8022 MOZ_ARG_ENABLE_BOOL(skia,
8023 [  --enable-skia   Enable use of Skia],
8024 MOZ_ENABLE_SKIA=1,
8025 MOZ_ENABLE_SKIA=)
8027 if test "$USE_FC_FREETYPE"; then
8028     if test "$COMPILE_ENVIRONMENT"; then
8029         dnl ========================================================
8030         dnl = Check for freetype2 and its functionality
8031         dnl ========================================================
8032         PKG_CHECK_MODULES(FT2, freetype2 >= 6.1.0, _HAVE_FREETYPE2=1, _HAVE_FREETYPE2=)
8034         if test "$_HAVE_FREETYPE2"; then
8035             _SAVE_LIBS="$LIBS"
8036             _SAVE_CFLAGS="$CFLAGS"
8037             LIBS="$LIBS $FT2_LIBS"
8038             CFLAGS="$CFLAGS $FT2_CFLAGS"
8040             AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
8041                 ac_cv_member_FT_Bitmap_Size_y_ppem,
8042                 [AC_TRY_COMPILE([#include <ft2build.h>
8043                                  #include FT_FREETYPE_H],
8044                                 [FT_Bitmap_Size s;
8045                                  if (sizeof s.y_ppem) return 0;
8046                                  return 1],
8047                                 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
8048                                 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
8049             if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
8050                 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
8051             else
8052                 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
8053             fi
8054             AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
8055                                $HAVE_FT_BITMAP_SIZE_Y_PPEM,
8056                                [FT_Bitmap_Size structure includes y_ppem field])
8058             AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table)
8060             LIBS="$_SAVE_LIBS"
8061             CFLAGS="$_SAVE_CFLAGS"
8062         fi
8064         _SAVE_CPPFLAGS="$CPPFLAGS"
8065         CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
8066         MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
8067             [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
8068         CPPFLAGS="$_SAVE_CPPFLAGS"
8069     else
8070         AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
8071     fi
8073     PKG_CHECK_MODULES(_FONTCONFIG, fontconfig,
8074     [
8075         if test "$MOZ_PANGO"; then
8076             MOZ_PANGO_CFLAGS="$MOZ_PANGO_CFLAGS $_FONTCONFIG_CFLAGS"
8077             MOZ_PANGO_LIBS="$MOZ_PANGO_LIBS $_FONTCONFIG_LIBS"
8078         else
8079             FT2_CFLAGS="$FT2_CFLAGS $_FONTCONFIG_CFLAGS"
8080             FT2_LIBS="$FT2_LIBS $_FONTCONFIG_LIBS"
8081         fi
8082     ])
8085 dnl ========================================================
8086 dnl Check for pixman and cairo
8087 dnl ========================================================
8089 if test "$MOZ_WIDGET_TOOLKIT" = "gtk3" ; then
8090   # cairo-gtk3 can be build with system-cairo only
8091   MOZ_TREE_CAIRO=
8092 else
8093   MOZ_TREE_CAIRO=1
8096 MOZ_ARG_ENABLE_BOOL(system-cairo,
8097 [  --enable-system-cairo   Use system cairo (located with pkgconfig)],
8098 MOZ_TREE_CAIRO=,
8099 MOZ_TREE_CAIRO=1 )
8101 MOZ_TREE_PIXMAN=1
8102 MOZ_ARG_ENABLE_BOOL(system-pixman,
8103 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
8104 MOZ_TREE_PIXMAN=,
8105 MOZ_TREE_PIXMAN=force,
8106 MOZ_TREE_PIXMAN=1 )
8108 # System cairo depends on system pixman
8109 if test "$MOZ_TREE_PIXMAN" = "force"; then
8110     if test -z "$MOZ_TREE_CAIRO"; then
8111         AC_MSG_ERROR([--disable-system-pixman is incompatible with --enable-system-cairo.])
8112     else
8113         MOZ_TREE_PIXMAN=1
8114     fi
8115 elif test -z "$MOZ_TREE_CAIRO"; then
8116     MOZ_TREE_PIXMAN=
8119 if test "$MOZ_TREE_PIXMAN"; then
8120     AC_DEFINE(MOZ_TREE_PIXMAN)
8121     MOZ_PIXMAN_CFLAGS=""
8122     MOZ_PIXMAN_LIBS='$(call EXPAND_LIBNAME_PATH,mozlibpixman,$(DEPTH)/gfx/cairo/libpixman/src)'
8123 else
8124     PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.19.2)
8125     MOZ_PIXMAN_CFLAGS="$PIXMAN_CFLAGS"
8126     MOZ_PIXMAN_LIBS="$PIXMAN_LIBS"
8128 AC_SUBST(MOZ_PIXMAN_CFLAGS)
8129 AC_SUBST(MOZ_PIXMAN_LIBS)
8131 # Check for headers defining standard int types.
8132 if test -n "$COMPILE_ENVIRONMENT"; then
8133     MOZ_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
8135     if test "${ac_cv_header_inttypes_h}" = "yes"; then
8136         HAVE_INTTYPES_H=1
8137     fi
8140 AC_SUBST(HAVE_INTTYPES_H)
8142 if test "$MOZ_TREE_CAIRO"; then
8143     MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
8144     AC_DEFINE(MOZ_TREE_CAIRO)
8146     if test "$OS_ARCH" = "WINNT"; then
8147         # For now we assume that we will have a uint64_t available through
8148         # one of the above headers or mozstdint.h.
8149         AC_DEFINE(HAVE_UINT64_T)
8150     fi
8152     # Define macros for cairo-features.h
8153     TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
8154     if test "$MOZ_X11"; then
8155         XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
8156         XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
8157         PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
8158         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8159         MOZ_ENABLE_CAIRO_FT=1
8160         CAIRO_FT_CFLAGS="$FT2_CFLAGS"
8161     fi
8162     case "$MOZ_WIDGET_TOOLKIT" in
8163       qt)
8164         QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
8165         ;;
8166       cocoa | uikit)
8167         QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
8168         QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
8169         QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
8170         ;;
8171       windows)
8172         WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
8173         WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
8174         if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
8175             WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
8176             WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
8177             MOZ_ENABLE_D2D_SURFACE=1
8178             MOZ_ENABLE_DWRITE_FONT=1
8179         else
8180             WIN32_DWRITE_FONT_FEATURE=
8181             WIN32_D2D_SURFACE_FEATURE=
8182         fi
8184         MOZ_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
8186         dnl D3D10 Layers depend on D2D Surfaces.
8187         if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
8188           MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
8189         fi
8190         ;;
8191       gtk3)
8192         AC_MSG_ERROR([cairo-gtk3 toolkit is incompatible with in-tree cairo. Please add --enable-system-cairo to your build config.])
8193         ;;
8194     esac
8195     if test "$USE_FC_FREETYPE"; then
8196         FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
8197     fi
8198     AC_SUBST(MOZ_ENABLE_CAIRO_FT)
8199     AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
8200     AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
8201     AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
8202     AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
8203     AC_SUBST(CAIRO_FT_CFLAGS)
8205     AC_SUBST(PS_SURFACE_FEATURE)
8206     AC_SUBST(PDF_SURFACE_FEATURE)
8207     AC_SUBST(SVG_SURFACE_FEATURE)
8208     AC_SUBST(XLIB_SURFACE_FEATURE)
8209     AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
8210     AC_SUBST(QUARTZ_SURFACE_FEATURE)
8211     AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
8212     AC_SUBST(WIN32_SURFACE_FEATURE)
8213     AC_SUBST(OS2_SURFACE_FEATURE)
8214     AC_SUBST(DIRECTFB_SURFACE_FEATURE)
8215     AC_SUBST(FT_FONT_FEATURE)
8216     AC_SUBST(FC_FONT_FEATURE)
8217     AC_SUBST(WIN32_FONT_FEATURE)
8218     AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
8219     AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
8220     AC_SUBST(QUARTZ_FONT_FEATURE)
8221     AC_SUBST(PNG_FUNCTIONS_FEATURE)
8222     AC_SUBST(QT_SURFACE_FEATURE)
8223     AC_SUBST(TEE_SURFACE_FEATURE)
8225     MOZ_CAIRO_OSLIBS='${CAIRO_FT_OSLIBS}'
8227     if test "$MOZ_X11"; then
8228         MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
8229     fi
8231     CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
8232 else
8233     PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION)
8234     MOZ_CAIRO_CFLAGS="$CAIRO_CFLAGS"
8235     MOZ_CAIRO_LIBS="$CAIRO_LIBS"
8236     PKG_CHECK_MODULES(CAIRO_TEE, cairo-tee >= $CAIRO_VERSION)
8237     if test "$MOZ_X11"; then
8238         PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
8239         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
8240         MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_LIBS"
8241         MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
8242     fi
8245 AC_SUBST(MOZ_TREE_CAIRO)
8246 AC_SUBST(MOZ_CAIRO_CFLAGS)
8247 AC_SUBST(MOZ_CAIRO_LIBS)
8248 AC_SUBST(MOZ_CAIRO_OSLIBS)
8249 AC_SUBST(MOZ_TREE_PIXMAN)
8251 dnl ========================================================
8252 dnl Skia
8253 dnl ========================================================
8254 if test "$MOZ_ENABLE_SKIA"; then
8255   AC_DEFINE(MOZ_ENABLE_SKIA)
8256   AC_DEFINE(USE_SKIA)
8257   if test "${MOZ_WIDGET_TOOLKIT}" = "android" -o x"$MOZ_WIDGET_TOOLKIT" = x"gonk"; then
8258     AC_DEFINE(SK_BUILD_FOR_ANDROID_NDK)
8259   fi
8261   if test "${CPU_ARCH}" != "ppc" -a "${CPU_ARCH}" != "ppc64" -a "${CPU_ARCH}" != "sparc" ; then
8262     MOZ_ENABLE_SKIA_GPU=1
8263     AC_DEFINE(USE_SKIA_GPU)
8264     AC_SUBST(MOZ_ENABLE_SKIA_GPU)
8265   fi
8267 AC_SUBST(MOZ_ENABLE_SKIA)
8269 dnl ========================================================
8270 dnl disable xul
8271 dnl ========================================================
8272 MOZ_ARG_DISABLE_BOOL(xul,
8273 [  --disable-xul           Disable XUL],
8274     MOZ_XUL= )
8275 if test "$MOZ_XUL"; then
8276   AC_DEFINE(MOZ_XUL)
8277 else
8278   dnl remove extensions that require XUL
8279   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8282 AC_SUBST(MOZ_XUL)
8284 dnl ========================================================
8285 dnl disable profile locking
8286 dnl   do no use this in applications that can have more than
8287 dnl   one process accessing the profile directory.
8288 dnl ========================================================
8289 MOZ_ARG_DISABLE_BOOL(profilelocking,
8290 [  --disable-profilelocking
8291                           Disable profile locking],
8292     MOZ_PROFILELOCKING=,
8293     MOZ_PROFILELOCKING=1 )
8294 if test "$MOZ_PROFILELOCKING"; then
8295   AC_DEFINE(MOZ_PROFILELOCKING)
8298 dnl ========================================================
8299 dnl necko configuration options
8300 dnl ========================================================
8303 dnl option to disable various necko protocols
8305 MOZ_ARG_ENABLE_STRING(necko-protocols,
8306 [  --enable-necko-protocols[={http,ftp,default,all,none}]
8307                           Enable/disable specific protocol handlers],
8308 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8309     if test "$option" = "yes" -o "$option" = "all"; then
8310         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8311     elif test "$option" = "no" -o "$option" = "none"; then
8312         NECKO_PROTOCOLS=""
8313     elif test "$option" = "default"; then
8314         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8315     elif test `echo "$option" | grep -c \^-` != 0; then
8316         option=`echo $option | sed 's/^-//'`
8317         NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8318     else
8319         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8320     fi
8321 done],
8322     NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8323 dnl Remove dupes
8324 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8325 AC_SUBST_SET(NECKO_PROTOCOLS)
8326 for p in $NECKO_PROTOCOLS; do
8327     AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8328     _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_PROTOCOL_$p"
8329 done
8332 dnl option to disable necko's wifi scanner
8335 case "$OS_TARGET" in
8336   Android)
8337     if test -n "$gonkdir"; then
8338       NECKO_WIFI=1
8339     fi
8340     ;;
8341   Darwin|FreeBSD|SunOS|WINNT)
8342     NECKO_WIFI=1
8343     ;;
8344   Linux)
8345     NECKO_WIFI=1
8346     NECKO_WIFI_DBUS=1
8347     ;;
8348 esac
8350 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8351 [  --disable-necko-wifi    Disable necko wifi scanner],
8352     NECKO_WIFI=,
8353     NECKO_WIFI=1)
8355 if test "$NECKO_WIFI"; then
8356   if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
8357     AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
8358   fi
8359   AC_DEFINE(NECKO_WIFI)
8360   _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
8362 AC_SUBST(NECKO_WIFI)
8363 AC_SUBST(NECKO_WIFI_DBUS)
8366 dnl option to disable cookies
8368 MOZ_ARG_DISABLE_BOOL(cookies,
8369 [  --disable-cookies       Disable cookie support],
8370     NECKO_COOKIES=,
8371     NECKO_COOKIES=1)
8372 AC_SUBST(NECKO_COOKIES)
8373 if test "$NECKO_COOKIES"; then
8374     AC_DEFINE(NECKO_COOKIES)
8375     _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
8379 dnl Always build Marionette if not Android or B2G
8381 if test "$OS_TARGET" != Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
8382     AC_DEFINE(ENABLE_MARIONETTE)
8384 AC_SUBST(ENABLE_MARIONETTE)
8385 if test "$ENABLE_MARIONETTE"; then
8386     AC_DEFINE(ENABLE_MARIONETTE)
8390 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8392 MOZ_ARG_DISABLE_BOOL(ctypes,
8393 [  --disable-ctypes        Disable js-ctypes],
8394     BUILD_CTYPES=,
8395     BUILD_CTYPES=1)
8396 AC_SUBST(BUILD_CTYPES)
8397 if test "$BUILD_CTYPES"; then
8398     AC_DEFINE(BUILD_CTYPES)
8401 dnl Build Loop if required
8402 AC_SUBST(MOZ_LOOP)
8403 if test "$MOZ_LOOP"; then
8404   AC_DEFINE(MOZ_LOOP)
8407 dnl Build Places if required
8408 if test "$MOZ_PLACES"; then
8409   AC_DEFINE(MOZ_PLACES)
8412 dnl Build SocialAPI if required
8413 if test "$MOZ_SOCIAL"; then
8414   AC_DEFINE(MOZ_SOCIAL)
8417 dnl Build Common JS modules provided by services.
8418 AC_SUBST(MOZ_SERVICES_COMMON)
8419 if test -n "$MOZ_SERVICES_COMMON"; then
8420   AC_DEFINE(MOZ_SERVICES_COMMON)
8423 dnl Build Services crypto component (used by Sync)
8424 AC_SUBST(MOZ_SERVICES_CRYPTO)
8425 if test -n "$MOZ_SERVICES_CRYPTO"; then
8426   AC_DEFINE(MOZ_SERVICES_CRYPTO)
8429 dnl Build Firefox Health Reporter Service
8430 AC_SUBST(MOZ_SERVICES_HEALTHREPORT)
8431 if test -n "$MOZ_SERVICES_HEALTHREPORT"; then
8432   AC_DEFINE(MOZ_SERVICES_HEALTHREPORT)
8435 dnl Build Services metrics component
8436 AC_SUBST(MOZ_SERVICES_METRICS)
8437 if test -n "$MOZ_SERVICES_METRICS"; then
8438   AC_DEFINE(MOZ_SERVICES_METRICS)
8441 dnl Build Notifications if required
8442 AC_SUBST(MOZ_SERVICES_NOTIFICATIONS)
8443 if test -n "$MOZ_SERVICES_NOTIFICATIONS"; then
8444   AC_DEFINE(MOZ_SERVICES_NOTIFICATIONS)
8447 dnl Build Sync Services if required
8448 AC_SUBST(MOZ_SERVICES_SYNC)
8449 if test -n "$MOZ_SERVICES_SYNC"; then
8450   AC_DEFINE(MOZ_SERVICES_SYNC)
8453 dnl Build Captive Portal Detector if required
8454 AC_SUBST(MOZ_CAPTIVEDETECT)
8455 if test -n "$MOZ_CAPTIVEDETECT"; then
8456   AC_DEFINE(MOZ_CAPTIVEDETECT)
8459 dnl Build second screen and casting features for external devices if required
8460 AC_SUBST(MOZ_DEVICES)
8461 if test -n "$MOZ_DEVICES"; then
8462   AC_DEFINE(MOZ_DEVICES)
8465 dnl ========================================================
8466 if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC" -o "$MOZ_DMD"; then
8467     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8470 if test "$MOZ_APP_COMPONENT_INCLUDE"; then
8471   AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_INCLUDE, "$MOZ_APP_COMPONENT_INCLUDE")
8474 if test "$MOZ_APP_COMPONENT_MODULES"; then
8475   AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_MODULES, $MOZ_APP_COMPONENT_MODULES)
8478 dnl ========================================================
8479 dnl =
8480 dnl = Maintainer debug option (no --enable equivalent)
8481 dnl =
8482 dnl ========================================================
8484 AC_SUBST(AR)
8485 AC_SUBST(AR_FLAGS)
8486 AC_SUBST(AR_LIST)
8487 AC_SUBST(AR_EXTRACT)
8488 AC_SUBST(AR_DELETE)
8489 AC_SUBST(AS)
8490 AC_SUBST(ASFLAGS)
8491 AC_SUBST(AS_DASH_C_FLAG)
8492 AC_SUBST(LD)
8493 AC_SUBST(RC)
8494 AC_SUBST(RCFLAGS)
8495 AC_SUBST(MC)
8496 AC_SUBST(WINDRES)
8497 AC_SUBST(IMPLIB)
8498 AC_SUBST(FILTER)
8499 AC_SUBST(BIN_FLAGS)
8500 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8501 AC_SUBST(MOZ_UPDATE_XTERM)
8502 AC_SUBST(MOZ_AUTH_EXTENSION)
8503 AC_SUBST(MOZ_PERMISSIONS)
8504 AC_SUBST(MOZ_PREF_EXTENSIONS)
8505 AC_SUBST(MOZ_JS_LIBS)
8506 AC_SUBST(MOZ_DEBUG)
8507 AC_SUBST(MOZ_DEBUG_SYMBOLS)
8508 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
8509 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
8510 AC_SUBST(MOZ_DEBUG_LDFLAGS)
8511 AC_SUBST(WARNINGS_AS_ERRORS)
8512 AC_SUBST(MOZ_EXTENSIONS)
8513 AC_SUBST(MOZ_JSDEBUGGER)
8514 AC_SUBST(MOZ_ENABLE_PROFILER_SPS)
8515 AC_SUBST(MOZ_JPROF)
8516 AC_SUBST(MOZ_SHARK)
8517 AC_SUBST(MOZ_INSTRUMENTS)
8518 AC_SUBST(MOZ_CALLGRIND)
8519 AC_SUBST(MOZ_VTUNE)
8520 AC_SUBST(MOZ_PROFILING)
8521 AC_SUBST(LIBICONV)
8522 AC_SUBST(MOZ_PLACES)
8523 AC_SUBST(MOZ_SOCIAL)
8524 AC_SUBST(MOZ_TOOLKIT_SEARCH)
8525 AC_SUBST(MOZ_FEEDS)
8526 AC_SUBST(NS_PRINTING)
8527 AC_SUBST(MOZ_WEBGL)
8528 AC_SUBST(MOZ_HELP_VIEWER)
8529 AC_SUBST(TOOLCHAIN_PREFIX)
8531 AC_SUBST(JAVA)
8532 AC_SUBST(JAVAC)
8533 AC_SUBST(JAVAH)
8534 AC_SUBST(JAR)
8535 AC_SUBST(JARSIGNER)
8536 AC_SUBST(KEYTOOL)
8538 AC_SUBST(MOZ_PROFILELOCKING)
8540 AC_SUBST(ENABLE_TESTS)
8541 AC_SUBST(MOZ_UNIVERSALCHARDET)
8542 AC_SUBST(ACCESSIBILITY)
8543 AC_SUBST(MOZ_SPELLCHECK)
8544 AC_SUBST(MOZ_ANDROID_OMTC)
8545 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
8546 AC_SUBST(MOZ_CRASHREPORTER)
8547 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
8548 AC_SUBST(MOZ_CRASHREPORTER_UPLOAD_FULL_SYMBOLS)
8549 AC_SUBST(MOZ_MAINTENANCE_SERVICE)
8550 AC_SUBST(MOZ_STUB_INSTALLER)
8551 AC_SUBST(MOZ_VERIFY_MAR_SIGNATURE)
8552 AC_SUBST(MOZ_ENABLE_SIGNMAR)
8553 AC_SUBST(MOZ_UPDATER)
8555 AC_SUBST(MOZ_ANGLE_RENDERER)
8556 AC_SUBST(MOZ_D3D_CPU_SUFFIX)
8557 AC_SUBST(MOZ_HAS_WINSDK_WITH_D3D)
8558 AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL)
8559 AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL_PATH)
8560 AC_SUBST(MOZ_DIRECTX_SDK_PATH)
8561 AC_SUBST(MOZ_D3DCOMPILER_XP_DLL)
8562 AC_SUBST(MOZ_D3DCOMPILER_XP_CAB)
8564 AC_SUBST(MOZ_METRO)
8566 AC_SUBST(MOZ_ANDROID_HISTORY)
8567 AC_SUBST(MOZ_WEBSMS_BACKEND)
8568 AC_SUBST(MOZ_ANDROID_BEAM)
8569 AC_SUBST(MOZ_ANDROID_SYNTHAPKS)
8570 AC_SUBST(MOZ_DISABLE_GECKOVIEW)
8571 AC_SUBST(ENABLE_STRIP)
8572 AC_SUBST(PKG_SKIP_STRIP)
8573 AC_SUBST(STRIP_FLAGS)
8574 AC_SUBST(USE_ELF_HACK)
8575 AC_SUBST(INCREMENTAL_LINKER)
8576 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
8577 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
8579 AC_SUBST(MOZ_FIX_LINK_PATHS)
8580 AC_SUBST(XPCOM_LIBS)
8581 AC_SUBST(XPCOM_FROZEN_LDOPTS)
8582 AC_SUBST(XPCOM_GLUE_LDOPTS)
8583 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
8584 AC_SUBST(XPCOM_STATICRUNTIME_GLUE_LDOPTS)
8585 AC_SUBST(XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS)
8587 AC_SUBST(USE_DEPENDENT_LIBS)
8589 AC_SUBST(MOZ_BUILD_ROOT)
8591 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
8592 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
8593 AC_SUBST(MOZ_LINKER_EXTRACT)
8595 AC_SUBST(MOZ_JSDOWNLOADS)
8596 if test -n "$MOZ_JSDOWNLOADS"; then
8597   AC_DEFINE(MOZ_JSDOWNLOADS)
8600 dnl ========================================================
8601 dnl = Mac bundle name prefix
8602 dnl ========================================================
8603 MOZ_ARG_WITH_STRING(macbundlename-prefix,
8604 [  --with-macbundlename-prefix=prefix
8605                           Prefix for MOZ_MACBUNDLE_NAME],
8606 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
8608 MOZ_MACBUNDLE_NAME=`echo $MOZ_APP_DISPLAYNAME | tr -d ' '`
8609 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
8610   MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
8613 if test "$MOZ_DEBUG"; then
8614   MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}Debug.app
8615 else
8616   MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
8618 AC_SUBST(MOZ_MACBUNDLE_NAME)
8620 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
8621 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr '[A-Z]' '[a-z]'`
8622 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
8623 if test "$MOZ_DEBUG"; then
8624   MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
8627 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
8628 AC_SUBST(MOZ_MACBUNDLE_ID)
8630 dnl ========================================================
8631 dnl = Child Process Name for IPC
8632 dnl ========================================================
8633 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
8634   MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
8635 else
8636   # We want to let Android unpack the file at install time, but it only does
8637   # so if the file is named libsomething.so. The lib/ path is also required
8638   # because the unpacked file will be under the lib/ subdirectory and will
8639   # need to be executed from that path.
8640   MOZ_CHILD_PROCESS_NAME="lib/libplugin-container.so"
8642 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
8644 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
8645 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
8647 # The following variables are available to branding and application
8648 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
8649 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
8650 # impacts profile location and user-visible fields.
8651 # - MOZ_APP_BASENAME: Typically stays consistent for multiple branded
8652 # versions of a given application (e.g. Aurora and Firefox both use
8653 # "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used
8654 # for application.ini's "Name" field, which controls profile location in
8655 # the absence of a "Profile" field (see below), and various system
8656 # integration hooks (Unix remoting, Windows MessageWindow name, etc.)
8657 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
8658 # Mac Bundle name, Updater, Installer), it is typically used for nightly
8659 # builds (e.g. Aurora for Firefox).
8660 # - MOZ_APP_VERSION: Defines the application version number.
8661 # - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set,
8662 # defaults to a lowercase form of MOZ_APP_BASENAME.
8663 # - MOZ_APP_PROFILE: When set, used for application.ini's
8664 # "Profile" field, which controls profile location.
8665 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
8666 # crash reporter server url.
8667 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
8668 # - MOZ_EXTENSION_MANAGER: When set, enabled extension manager.
8670 if test -z "$MOZ_APP_NAME"; then
8671    MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
8674 # For extensions and langpacks, we require a max version that is compatible
8675 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
8676 # 24.0a1 and 24.0a2 aren't affected
8677 # 24.0 becomes 24.*
8678 # 24.1.1 becomes 24.*
8679 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
8680 if test -z "$IS_ALPHA"; then
8681   changequote(,)
8682   MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
8683   changequote([,])
8684 else
8685   MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
8688 MOZ_B2G_VERSION=${MOZ_B2G_VERSION:-"1.0.0"}
8689 AC_DEFINE_UNQUOTED(MOZ_B2G_VERSION,"$MOZ_B2G_VERSION")
8690 AC_DEFINE_UNQUOTED(MOZ_B2G_OS_NAME,"$MOZ_B2G_OS_NAME")
8692 AC_SUBST(MOZ_APP_NAME)
8693 AC_SUBST(MOZ_APP_DISPLAYNAME)
8694 AC_SUBST(MOZ_APP_BASENAME)
8695 AC_SUBST(MOZ_APP_VENDOR)
8696 AC_SUBST(MOZ_APP_PROFILE)
8697 AC_SUBST(MOZ_APP_ID)
8698 AC_SUBST(MAR_CHANNEL_ID)
8699 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
8700 AC_SUBST(MOZ_PROFILE_MIGRATOR)
8701 AC_SUBST(MOZ_EXTENSION_MANAGER)
8702 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
8703 AC_SUBST(MOZ_APP_UA_NAME)
8704 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
8705 AC_SUBST(MOZ_APP_VERSION)
8706 AC_SUBST(MOZ_APP_MAXVERSION)
8707 AC_DEFINE_UNQUOTED(FIREFOX_VERSION,$FIREFOX_VERSION)
8708 AC_SUBST(FIREFOX_VERSION)
8709 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
8710 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
8711   AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
8714 AC_SUBST(MOZ_APP_STATIC_INI)
8716 AC_SUBST(MOZ_PKG_SPECIAL)
8718 AC_SUBST(MOZILLA_OFFICIAL)
8720 AC_DEFINE_UNQUOTED(MOZ_TELEMETRY_DISPLAY_REV, 2)
8721 AC_SUBST(MOZ_TELEMETRY_DISPLAY_REV)
8723 if test "$MOZ_TELEMETRY_REPORTING"; then
8724     AC_DEFINE(MOZ_TELEMETRY_REPORTING)
8726     # Enable Telemetry by default for nightly and aurora channels
8727     if test -z "$RELEASE_BUILD"; then
8728       AC_DEFINE(MOZ_TELEMETRY_ON_BY_DEFAULT)
8729     fi
8732 dnl If we have any service that uploads data (and requires data submission
8733 dnl policy alert), set MOZ_DATA_REPORTING.
8734 dnl We need SUBST for build system and DEFINE for xul preprocessor.
8735 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"; then
8736   MOZ_DATA_REPORTING=1
8737   AC_DEFINE(MOZ_DATA_REPORTING)
8738   AC_SUBST(MOZ_DATA_REPORTING)
8741 dnl win32 options
8742 AC_SUBST(MOZ_BROWSE_INFO)
8743 AC_SUBST(MOZ_TOOLS_DIR)
8744 AC_SUBST(WIN32_REDIST_DIR)
8745 AC_SUBST(MAKENSISU)
8747 dnl Echo the CFLAGS to remove extra whitespace.
8748 CFLAGS=`echo \
8749     $_WARNINGS_CFLAGS \
8750     $CFLAGS`
8752 CXXFLAGS=`echo \
8753     $_WARNINGS_CXXFLAGS \
8754     $CXXFLAGS`
8756 COMPILE_CFLAGS=`echo \
8757     $_DEFINES_CFLAGS \
8758     $_DEPEND_CFLAGS \
8759     $COMPILE_CFLAGS`
8761 COMPILE_CXXFLAGS=`echo \
8762     $_DEFINES_CXXFLAGS \
8763     $_DEPEND_CFLAGS \
8764     $COMPILE_CXXFLAGS`
8766 HOST_CFLAGS=`echo \
8767     $HOST_CFLAGS \
8768     $_DEPEND_CFLAGS`
8770 HOST_CXXFLAGS=`echo \
8771     $HOST_CXXFLAGS \
8772     $_DEPEND_CFLAGS`
8774 AC_SUBST(SYSTEM_LIBXUL)
8775 AC_SUBST(MOZ_NATIVE_JPEG)
8776 AC_SUBST(MOZ_NATIVE_PNG)
8777 AC_SUBST(MOZ_NATIVE_BZ2)
8779 AC_SUBST(MOZ_JPEG_CFLAGS)
8780 AC_SUBST(MOZ_JPEG_LIBS)
8781 AC_SUBST(MOZ_BZ2_CFLAGS)
8782 AC_SUBST(MOZ_BZ2_LIBS)
8783 AC_SUBST(MOZ_PNG_CFLAGS)
8784 AC_SUBST(MOZ_PNG_LIBS)
8786 if test "$MOZ_WIDGET_TOOLKIT" = gonk -a -n "$MOZ_NUWA_PROCESS"; then
8787     export MOZ_NUWA_PROCESS
8788     AC_DEFINE(MOZ_NUWA_PROCESS)
8790 AC_SUBST(MOZ_NUWA_PROCESS)
8792 AC_SUBST(NSPR_CFLAGS)
8793 AC_SUBST(NSPR_LIBS)
8794 AC_SUBST(MOZ_NATIVE_NSPR)
8796 AC_SUBST(NSS_CFLAGS)
8797 AC_SUBST(NSS_LIBS)
8798 AC_SUBST(MOZ_NATIVE_NSS)
8799 AC_SUBST(NSS_DISABLE_DBM)
8801 OS_CFLAGS="$CFLAGS"
8802 OS_CXXFLAGS="$CXXFLAGS"
8803 OS_CPPFLAGS="$CPPFLAGS"
8804 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
8805 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
8806 OS_LDFLAGS="$LDFLAGS"
8807 OS_LIBS="$LIBS"
8808 AC_SUBST(OS_CFLAGS)
8809 AC_SUBST(OS_CXXFLAGS)
8810 AC_SUBST(OS_CPPFLAGS)
8811 AC_SUBST(OS_COMPILE_CFLAGS)
8812 AC_SUBST(OS_COMPILE_CXXFLAGS)
8813 AC_SUBST(OS_LDFLAGS)
8814 AC_SUBST(OS_LIBS)
8815 AC_SUBST(CROSS_COMPILE)
8816 AC_SUBST(WCHAR_CFLAGS)
8818 AC_SUBST(HOST_CC)
8819 AC_SUBST(HOST_CXX)
8820 AC_SUBST(HOST_CFLAGS)
8821 AC_SUBST(HOST_CXXFLAGS)
8822 AC_SUBST(HOST_LDFLAGS)
8823 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8824 AC_SUBST(HOST_AR)
8825 AC_SUBST(HOST_AR_FLAGS)
8826 AC_SUBST(HOST_LD)
8827 AC_SUBST(HOST_RANLIB)
8828 AC_SUBST(HOST_NSPR_MDCPUCFG)
8829 AC_SUBST(HOST_BIN_SUFFIX)
8830 AC_SUBST(HOST_OS_ARCH)
8832 AC_SUBST(TARGET_CPU)
8833 AC_SUBST(TARGET_VENDOR)
8834 AC_SUBST(TARGET_OS)
8835 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8836 AC_SUBST(TARGET_MD_ARCH)
8837 AC_SUBST(TARGET_XPCOM_ABI)
8838 AC_SUBST(OS_TARGET)
8839 AC_SUBST(OS_ARCH)
8840 AC_SUBST(OS_RELEASE)
8841 AC_SUBST(OS_TEST)
8842 AC_SUBST(CPU_ARCH)
8843 AC_SUBST(INTEL_ARCHITECTURE)
8844 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
8845 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
8847 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8849 AC_SUBST(WRAP_LDFLAGS)
8850 AC_SUBST(MKSHLIB)
8851 AC_SUBST(MKCSHLIB)
8852 AC_SUBST(MKSHLIB_FORCE_ALL)
8853 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8854 AC_SUBST(DSO_CFLAGS)
8855 AC_SUBST(DSO_PIC_CFLAGS)
8856 AC_SUBST(DSO_LDOPTS)
8857 AC_SUBST(LIB_PREFIX)
8858 AC_SUBST(DLL_PREFIX)
8859 AC_SUBST(DLL_SUFFIX)
8860 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8861 AC_SUBST(LIB_SUFFIX)
8862 AC_SUBST(OBJ_SUFFIX)
8863 AC_SUBST(BIN_SUFFIX)
8864 AC_SUBST(ASM_SUFFIX)
8865 AC_SUBST(IMPORT_LIB_SUFFIX)
8866 AC_SUBST(USE_N32)
8867 AC_SUBST(CC_VERSION)
8868 AC_SUBST(CXX_VERSION)
8869 AC_SUBST(MSMANIFEST_TOOL)
8870 AC_SUBST(NS_ENABLE_TSF)
8871 AC_SUBST(MOZ_APP_COMPONENT_LIBS)
8872 AC_SUBST(MOZ_APP_EXTRA_LIBS)
8874 AC_SUBST(MOZ_WAVE)
8875 AC_SUBST(MOZ_VORBIS)
8876 AC_SUBST(MOZ_TREMOR)
8877 AC_SUBST(MOZ_OPUS)
8878 AC_SUBST(MOZ_WEBM)
8879 AC_SUBST(MOZ_WMF)
8880 AC_SUBST(MOZ_FFMPEG)
8881 AC_SUBST(MOZ_FMP4)
8882 AC_SUBST(MOZ_DIRECTSHOW)
8883 AC_SUBST(MOZ_MEDIA_PLUGINS)
8884 AC_SUBST(MOZ_APPLEMEDIA)
8885 AC_SUBST(MOZ_OMX_PLUGIN)
8886 AC_SUBST(MOZ_VPX_ERROR_CONCEALMENT)
8887 AC_SUBST(MOZ_VPX)
8888 AC_SUBST(VPX_AS)
8889 AC_SUBST(VPX_ASFLAGS)
8890 AC_SUBST(VPX_DASH_C_FLAG)
8891 AC_SUBST(VPX_AS_CONVERSION)
8892 AC_SUBST(VPX_ASM_SUFFIX)
8893 AC_SUBST(VPX_X86_ASM)
8894 AC_SUBST(VPX_ARM_ASM)
8895 AC_SUBST(VPX_NEED_OBJ_INT_EXTRACT)
8896 AC_SUBST(MOZ_INSTRUMENT_EVENT_LOOP)
8897 AC_SUBST(LIBJPEG_TURBO_AS)
8898 AC_SUBST(LIBJPEG_TURBO_ASFLAGS)
8899 AC_SUBST(LIBJPEG_TURBO_X86_ASM)
8900 AC_SUBST(LIBJPEG_TURBO_X64_ASM)
8901 AC_SUBST(LIBJPEG_TURBO_ARM_ASM)
8903 AC_SUBST(MOZ_PACKAGE_JSSHELL)
8904 AC_SUBST(MOZ_FOLD_LIBS)
8906 AC_SUBST(MOZ_ENABLE_SZIP)
8907 AC_SUBST(MOZ_SZIP_FLAGS)
8909 if test "$MOZ_DEBUG"; then
8910     MOZ_EM_DEBUG=1
8912 AC_SUBST(MOZ_EM_DEBUG)
8914 if test -n "$COMPILE_ENVIRONMENT"; then
8915 AC_CHECK_FUNCS(posix_fadvise posix_fallocate)
8917 dnl Check for missing components
8918 if test "$MOZ_X11"; then
8919     if test "$WITHOUT_X11"; then
8920         AC_MSG_ERROR([--without-x specified and MOZ_X11 still defined])
8921     fi
8922     dnl ====================================================
8923     dnl = Check if X headers exist
8924     dnl ====================================================
8925     _SAVE_CFLAGS=$CFLAGS
8926     CFLAGS="$CFLAGS $XCFLAGS"
8927     AC_TRY_COMPILE([
8928         #include <stdio.h>
8929         #include <stdlib.h>
8930         #include <X11/Xlib.h>
8931         #include <X11/Intrinsic.h>
8932         #include <X11/extensions/XShm.h>
8933     ],
8934     [
8935         Display *dpy = 0;
8936         if ((dpy = XOpenDisplay(NULL)) == NULL) {
8937             fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8938             exit(1);
8939         }
8940     ], [],
8941     [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ])
8942     CFLAGS="$_SAVE_CFLAGS"
8944     if test -n "$MISSING_X"; then
8945         AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8946     fi
8948 fi # MOZ_X11
8950 fi # COMPILE_ENVIRONMENT
8952 dnl Set various defines and substitutions
8953 dnl ========================================================
8955 if test "$OS_ARCH" != "WINNT"; then
8956   AC_DEFINE(XP_UNIX)
8959 if test "$MOZ_DEBUG"; then
8960     AC_DEFINE(MOZ_REFLOW_PERF)
8961     AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8964 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
8965     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8966     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8967     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8968     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8969     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8970     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8971     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8972     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8975 if test "$MOZ_DEBUG"; then
8976     A11Y_LOG=1
8978 case "$MOZ_UPDATE_CHANNEL" in
8979 aurora|beta|release|esr)
8980     ;;
8982     A11Y_LOG=1
8983     ;;
8984 esac
8985 AC_SUBST(A11Y_LOG)
8986 if test -n "$A11Y_LOG"; then
8987     AC_DEFINE(A11Y_LOG)
8990 AC_SUBST(MOZILLA_VERSION)
8992 AC_SUBST(ac_configure_args)
8994 dnl Spit out some output
8995 dnl ========================================================
8997 dnl The following defines are used by xpcom
8998 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8999 CPP_THROW_NEW
9000 HAVE_CPP_AMBIGUITY_RESOLVING_USING
9001 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
9002 HAVE_CPP_PARTIAL_SPECIALIZATION
9003 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
9004 NEED_CPP_UNUSED_IMPLEMENTATIONS
9005 HAVE_GETPAGESIZE
9006 HAVE_ICONV
9007 HAVE_ICONV_WITH_CONST_INPUT
9008 HAVE_MBRTOWC
9009 HAVE_WCRTOMB
9010 HAVE_STATVFS64
9011 HAVE_STATVFS
9012 HAVE_STATFS64
9013 HAVE_STATFS
9014 HAVE_SYS_STATVFS_H
9015 HAVE_SYS_STATFS_H
9016 HAVE_SYS_VFS_H
9017 HAVE_SYS_MOUNT_H
9020 AC_SUBST(STLPORT_LIBS)
9022 dnl ========================================================
9023 dnl ICU Support
9024 dnl ========================================================
9026 if test "$MOZ_BUILD_APP" = "browser"; then
9027     _INTL_API=yes
9028 else
9029     # Internationalization isn't built or exposed by default in non-desktop
9030     # builds.  Bugs to enable:
9031     #
9032     #   Android:  bug 864843
9033     #   B2G:      bug 866301
9034     _INTL_API=no
9037 MOZ_CONFIG_ICU()
9039 if test -n "$MOZ_NATIVE_ICU"; then
9040     MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_ICU_LIBS"
9043 if test -n "$JS_SHARED_LIBRARY"; then
9044   MOZ_JS_LIBS="$MOZ_JS_SHARED_LIBS"
9045 else
9046   MOZ_JS_LIBS="$MOZ_JS_STATIC_LIBS"
9047   AC_DEFINE(MOZ_STATIC_JS)
9049 AC_SUBST(JS_SHARED_LIBRARY)
9051 AC_SUBST(UPLOAD_EXTRA_FILES)
9053 MOZ_CREATE_CONFIG_STATUS()
9055 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9056 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9057   MOZ_SUBCONFIGURE_ICU()
9058   MOZ_SUBCONFIGURE_FFI()
9061 # Hack around an Apple bug that affects the egrep that comes with OS X 10.7.
9062 # "env ARCHPREFERENCE=i386,x86_64 arch egrep" first tries to use the 32-bit
9063 # Intel part of the egrep fat binary, even on 64-bit systems, and falls back on
9064 # the 64-bit part if it's not a fat binary, as can happen with MacPorts. We
9065 # (apparently) only need this hack when egrep's "pattern" is particularly long
9066 # (as in the following code) and the first egrep on our $PATH is Apple's.  See
9067 # bug 655339.
9068 case "$host" in
9069 *-apple-darwin11*)
9070     FIXED_EGREP="env ARCHPREFERENCE=i386,x86_64 arch egrep"
9071     ;;
9073     FIXED_EGREP="egrep"
9074     ;;
9075 esac
9077 # Run jemalloc configure script
9079 if test -z "$MOZ_NATIVE_JEMALLOC" -a "$MOZ_MEMORY" && test -n "$MOZ_JEMALLOC3" -o -n "$MOZ_REPLACE_MALLOC"; then
9080   ac_configure_args="--build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_"
9081   if test -n "$MOZ_REPLACE_MALLOC"; then
9082     # When using replace_malloc, we always want memalign and valloc exported from jemalloc.
9083     ac_configure_args="$ac_configure_args ac_cv_func_memalign=yes"
9084     ac_configure_args="$ac_configure_args ac_cv_func_valloc=yes"
9085   fi
9086   if test -n "$MOZ_JEMALLOC3"; then
9087     case "${OS_ARCH}" in
9088       WINNT|Darwin)
9089         # We want jemalloc functions to be kept hidden on both Mac and Windows
9090         # See memory/build/mozmemory_wrap.h for details.
9091         ac_configure_args="$ac_configure_args --without-export"
9092         ;;
9093     esac
9094   elif test "${OS_ARCH}" = Darwin; then
9095     # When building as a replace-malloc lib, disabling the zone allocator
9096     # forces to use pthread_atfork.
9097     ac_configure_args="$ac_configure_args --disable-zone-allocator"
9098   fi
9099   _MANGLE="malloc posix_memalign aligned_alloc calloc realloc free memalign valloc malloc_usable_size"
9100   JEMALLOC_WRAPPER=
9101   if test -z "$MOZ_REPLACE_MALLOC"; then
9102     case "$OS_ARCH" in
9103       Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
9104         MANGLE=$_MANGLE
9105         ;;
9106     esac
9107   elif test -z "$MOZ_JEMALLOC3"; then
9108     MANGLE=$_MANGLE
9109     JEMALLOC_WRAPPER=replace_
9110   fi
9111   if test -n "$MANGLE"; then
9112     MANGLED=
9113     if test -n "$_WRAP_MALLOC" -a -z "$JEMALLOC_WRAPPER"; then
9114       JEMALLOC_WRAPPER=__wrap_
9115     fi
9116     for mangle in ${MANGLE}; do
9117       if test -n "$MANGLED"; then
9118         MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle,$MANGLED"
9119       else
9120         MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle"
9121       fi
9122     done
9123     ac_configure_args="$ac_configure_args --with-mangling=$MANGLED"
9124   fi
9125   unset CONFIG_FILES
9126   if test -z "$MOZ_TLS"; then
9127     ac_configure_args="$ac_configure_args --disable-tls"
9128   fi
9129   EXTRA_CFLAGS="$CFLAGS"
9130   for var in AS CC CXX CPP LD AR RANLIB STRIP CPPFLAGS EXTRA_CFLAGS LDFLAGS; do
9131     ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
9132   done
9133   if test "$CROSS_COMPILE"; then
9134     ac_configure_args="$ac_configure_args je_cv_static_page_shift=12"
9135   fi
9136   _save_cache_file="$cache_file"
9137   cache_file=$_objdir/memory/jemalloc/src/config.cache
9139   if ! test -e memory/jemalloc; then
9140     mkdir -p memory/jemalloc
9141   fi
9143   dnl jemalloc's configure uses $srcdir in AC_CONFIG_HEADERS, which syntax uses
9144   dnl colons, conflicting with the windows-style path in $srcdir.
9145   dnl Turn it into a msys path just for jemalloc's configure
9146   _save_srcdir="$srcdir"
9147   srcdir=`cd $srcdir; pwd`
9148   AC_OUTPUT_SUBDIRS(memory/jemalloc/src)
9149   srcdir="$_save_srcdir"
9150   cache_file="$_save_cache_file"
9151   ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9154 # Run freetype configure script
9156 if test "$MOZ_TREE_FREETYPE"; then
9157    export CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS -std=c99"
9158    export CPPFLAGS="$CPPFLAGS $MOZ_DEBUG_FLAGS"
9159    export CXXFLAGS="$CXXFLAGS $MOZ_DEBUG_FLAGS"
9160    export LDFLAGS="$LDFLAGS $MOZ_DEBUG_LDFLAGS"
9161    # Spaces in the *_CFLAGS and *_LIBS variables are intentionally placed
9162    # to force freetype to use our settings rather than autodetecting
9163    export LIBPNG_CFLAGS="$MOZ_PNG_CFLAGS "
9164    export LIBPNG_LIBS="$MOZ_PNG_LIBS "
9165    export ZLIB_CFLAGS="$MOZ_ZLIB_CFLAGS "
9166    export ZLIB_LIBS="$MOZ_ZLIB_LIBS "
9167    export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in"
9168    ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes --with-zlib=yes --without-bzip2 --with-png=yes --without-harfbuzz"
9170    if ! test -e modules; then
9171      mkdir modules
9172    fi
9174    AC_OUTPUT_SUBDIRS(modules/freetype2)
9177 if test -z "$direct_nspr_config"; then
9178     dnl ========================================================
9179     dnl = Setup a nice relatively clean build environment for
9180     dnl = sub-configures.
9181     dnl ========================================================
9182     CC="$_SUBDIR_CC"
9183     CXX="$_SUBDIR_CXX"
9184     CFLAGS="$_SUBDIR_CFLAGS"
9185     CPPFLAGS="$_SUBDIR_CPPFLAGS"
9186     CXXFLAGS="$_SUBDIR_CXXFLAGS"
9187     LDFLAGS="$_SUBDIR_LDFLAGS"
9188     HOST_CC="$_SUBDIR_HOST_CC"
9189     HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9190     HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9191     RC=
9194 unset MAKEFILES
9195 unset CONFIG_FILES
9197 # Run all configure scripts specified by a subconfigure
9198 if test -n "$_subconfigure_subdir"; then
9199   _save_ac_configure_args="$ac_configure_args"
9200   ac_configure_args="$_subconfigure_config_args"
9201   AC_OUTPUT_SUBDIRS("$_subconfigure_subdir")
9202   ac_configure_args="$_save_ac_configure_args"
9205 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9206 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9208 export WRAP_LDFLAGS
9210 if test -n "$_WRAP_MALLOC"; then
9211     # Avoid doubling wrap malloc arguments
9212     _SUBDIR_CONFIG_ARGS="`echo $_SUBDIR_CONFIG_ARGS | sed -e 's/--enable-wrap-malloc *//'`"
9215 if test -z "$MOZ_NATIVE_NSPR"; then
9216     ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9217     if test -z "$MOZ_DEBUG"; then
9218         ac_configure_args="$ac_configure_args --disable-debug"
9219     else
9220         ac_configure_args="$ac_configure_args --enable-debug"
9221         if test -n "$MOZ_NO_DEBUG_RTL"; then
9222             ac_configure_args="$ac_configure_args --disable-debug-rtl"
9223         fi
9224     fi
9225     if test "$MOZ_OPTIMIZE" = "1"; then
9226         ac_configure_args="$ac_configure_args --enable-optimize"
9227     elif test -z "$MOZ_OPTIMIZE"; then
9228         ac_configure_args="$ac_configure_args --disable-optimize"
9229     fi
9230     if test -n "$HAVE_64BIT_OS"; then
9231         ac_configure_args="$ac_configure_args --enable-64bit"
9232     fi
9233     if test -n "$USE_ARM_KUSER"; then
9234         ac_configure_args="$ac_configure_args --with-arm-kuser"
9235     fi
9236     # A configure script generated by autoconf 2.68 does not allow the cached
9237     # values of "precious" variables such as CFLAGS and LDFLAGS to differ from
9238     # the values passed to the configure script. Since we modify CFLAGS and
9239     # LDFLAGS before passing them to NSPR's configure script, we cannot share
9240     # config.cache with NSPR. As a result, we cannot pass AS, CC, CXX, etc. to
9241     # NSPR via a shared config.cache file and must pass them to NSPR on the
9242     # configure command line.
9243     for var in AS CC CXX CPP LD AR RANLIB STRIP; do
9244         ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
9245     done
9246     # A configure script generated by autoconf 2.68 warns if --host is
9247     # specified but --build isn't. So we always pass --build to NSPR's
9248     # configure script.
9249     ac_configure_args="$ac_configure_args --build=$build"
9250     ac_configure_args="$ac_configure_args $NSPR_CONFIGURE_ARGS"
9252     # Save these, so we can mess with them for the subconfigure ..
9253     _SAVE_CFLAGS="$CFLAGS"
9254     _SAVE_CPPFLAGS="$CPPFLAGS"
9255     _SAVE_LDFLAGS="$LDFLAGS"
9257     if test -n "$MOZ_LINKER" -a "$ac_cv_func_dladdr" = no ; then
9258       # dladdr is supported by the new linker, even when the system linker doesn't
9259       # support it. Trick nspr into using dladdr when it's not supported.
9260       export CPPFLAGS="-include $_topsrcdir/mozglue/linker/dladdr.h $CPPFLAGS"
9261     fi
9262     export LDFLAGS="$LDFLAGS $NSPR_LDFLAGS"
9263     export CFLAGS="$CFLAGS $MOZ_FRAMEPTR_FLAGS"
9265     # Use a separate cache file for NSPR since it uses autoconf 2.68.
9266     _save_cache_file="$cache_file"
9267     cache_file=$_objdir/nsprpub/config.cache
9269     AC_OUTPUT_SUBDIRS(nsprpub)
9271     # .. and restore them
9272     cache_file="$_save_cache_file"
9273     CFLAGS="$_SAVE_CFLAGS"
9274     CPPFLAGS="$_SAVE_CPPFLAGS"
9275     LDFLAGS="$_SAVE_LDFLAGS"
9277     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9280 dnl ========================================================
9281 dnl = Setup a nice relatively clean build environment for
9282 dnl = sub-configures.
9283 dnl ========================================================
9284 CC="$_SUBDIR_CC"
9285 CXX="$_SUBDIR_CXX"
9286 CFLAGS="$_SUBDIR_CFLAGS"
9287 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9288 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9289 LDFLAGS="$_SUBDIR_LDFLAGS"
9290 HOST_CC="$_SUBDIR_HOST_CC"
9291 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9292 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9295 if test -n "$ENABLE_CLANG_PLUGIN"; then
9296     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9297     AC_OUTPUT_SUBDIRS(build/clang-plugin)
9301 # Run the SpiderMonkey 'configure' script.
9302 dist=$MOZ_BUILD_ROOT/dist
9303 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9304 ac_configure_args="$ac_configure_args --enable-threadsafe"
9306 if test "$_INTL_API" = no; then
9307     ac_configure_args="$ac_configure_args --without-intl-api"
9310 if test "$BUILD_CTYPES"; then
9311     # Build js-ctypes on the platforms we can.
9312     ac_configure_args="$ac_configure_args --enable-ctypes"
9314 if test -z "$JS_SHARED_LIBRARY" ; then
9315     ac_configure_args="$ac_configure_args --disable-shared-js"
9316     if test -n "$MOZ_DISABLE_EXPORT_JS"; then
9317         ac_configure_args="$ac_configure_args --disable-export-js"
9318     fi
9320 if test -z "$JSGC_USE_EXACT_ROOTING" ; then
9321     ac_configure_args="$ac_configure_args --disable-exact-rooting"
9323 if test -z "$JSGC_GENERATIONAL" ; then
9324     ac_configure_args="$ac_configure_args --disable-gcgenerational"
9326 if test -z "$MOZ_NATIVE_NSPR"; then
9327     ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9328     ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9330 ac_configure_args="$ac_configure_args --prefix=$dist"
9331 if test "$MOZ_MEMORY"; then
9332    ac_configure_args="$ac_configure_args --enable-jemalloc"
9334 if test -n "$MOZ_GLUE_LDFLAGS"; then
9335    export MOZ_GLUE_LDFLAGS
9337 if test -n "$MOZ_GLUE_PROGRAM_LDFLAGS"; then
9338    export MOZ_GLUE_PROGRAM_LDFLAGS
9340 if test -n "$ZLIB_IN_MOZGLUE"; then
9341    MOZ_ZLIB_LIBS=
9343 export MOZ_NATIVE_ZLIB
9344 export MOZ_ZLIB_CFLAGS
9345 export MOZ_ZLIB_LIBS
9346 export MOZ_APP_NAME
9347 export DONT_POPULATE_VIRTUALENV=1
9348 export PYTHON
9349 export MOZILLA_CENTRAL_PATH=$_topsrcdir
9350 export STLPORT_CPPFLAGS
9351 export STLPORT_LDFLAGS
9352 export STLPORT_LIBS
9353 export JS_STANDALONE=no
9354 export MOZ_LINKER
9355 export ZLIB_IN_MOZGLUE
9357 if ! test -e js; then
9358     mkdir js
9361 AC_OUTPUT_SUBDIRS(js/src)
9362 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9364 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR
9366 export WRITE_MOZINFO=1
9367 dnl we need to run config.status after js/src subconfigure because we're
9368 dnl traversing its moz.build and we need its config.status for that.
9369 dnl However, writing our own config.status needs to happen before
9370 dnl subconfigures because the setup surrounding subconfigures alters
9371 dnl many AC_SUBSTed variables.
9372 MOZ_RUN_CONFIG_STATUS()
9373 unset WRITE_MOZINFO