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 ========================================================
12 AC_INIT(config/config.mk)
13 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
15 TARGET_CPU="${target_cpu}"
16 TARGET_VENDOR="${target_vendor}"
17 TARGET_OS="${target_os}"
19 dnl ========================================================
21 dnl = Don't change the following two lines. Doing so breaks:
23 dnl = CFLAGS="-foo" ./configure
25 dnl ========================================================
27 CPPFLAGS="${CPPFLAGS=}"
28 CXXFLAGS="${CXXFLAGS=}"
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 ========================================================
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 ========================================================
58 dnl Set the minimum version of toolkit libs used by mozilla
59 dnl ========================================================
66 WINDRES_VERSION=2.14.90
72 STARTUP_NOTIFICATION_VERSION=0.8
74 SQLITE_VERSION=3.8.4.2
78 dnl Set various checks
79 dnl ========================================================
83 dnl Initialize the Pthread test variables early so they can be
84 dnl overridden by each platform.
85 dnl ========================================================
89 dnl Do not allow objdir == srcdir builds.
90 dnl ==============================================================
91 _topsrcdir=`cd \`dirname $0\`; 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
98 echo " * Building directly in the main source directory is not allowed."
100 echo " * To build, you must run configure from a separate directory"
101 echo " * (referred to as an object directory)."
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."
109 # Check for a couple representative files in the source tree
111 for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
112 if test -f $file; then
113 _conflict_files="$_conflict_files $file"
116 if test "$_conflict_files"; then
118 echo "* Your source tree contains these files:"
119 for file in $_conflict_files; do
123 * This indicates that you previously built in the source tree.
124 * A source tree build can confuse the separate objdir build.
126 * To clean up the source tree:
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`
156 AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
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])
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,
187 location of gonk dir],
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"
202 if test -n "${PLATFORM_SDK_VERSION}"; then
203 ANDROID_VERSION="${PLATFORM_SDK_VERSION}"
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])
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
233 case "$ANDROID_VERSION" in
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"
241 AC_SUBST(MOZ_OMX_DECODER)
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"
250 elif test -d "$gonkdir/external/bluetooth/bluedroid"; then
252 MOZ_B2G_BT_BLUEDROID=1
259 AC_SUBST(MOZ_OMX_DECODER)
261 AC_SUBST(MOZ_OMX_ENCODER)
262 AC_DEFINE(MOZ_OMX_ENCODER)
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"
268 MOZ_B2G_BT_BLUEDROID=1
273 AC_DEFINE(MOZ_OMX_ENCODER)
275 AC_SUBST(MOZ_AUDIO_OFFLOAD)
276 AC_DEFINE(MOZ_AUDIO_OFFLOAD)
280 AC_MSG_ERROR([Unsupported platform version: $ANDROID_VERSION])
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.
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
295 if test -z "$HOST_CFLAGS" ; then
298 if test -z "$HOST_CXXFLAGS" ; then
301 if test -z "$HOST_LDFLAGS" ; then
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
316 *-android*|*-linuxandroid*)
317 if test -z "$ANDROID_PACKAGE_NAME" ; then
318 ANDROID_PACKAGE_NAME='org.mozilla.$(MOZ_APP_NAME)'
320 MOZ_CHROME_FILE_FORMAT=omni
324 AC_PATH_PROG(OBJCOPY,objcopy)
329 AC_SUBST(ANDROID_SOURCE)
330 AC_SUBST(ANDROID_PACKAGE_NAME)
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)
340 if test "$COMPILE_ENVIRONMENT"; then
342 if test "$target" != "$host"; then
348 # Work around the conftest.exe access problem on Windows
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
361 if test -z "$HOST_CFLAGS"; then
362 HOST_CFLAGS="$CFLAGS"
364 if test -z "$HOST_CXX"; then
367 if test -z "$HOST_CXXFLAGS"; then
368 HOST_CXXFLAGS="$CXXFLAGS"
370 if test -z "$HOST_LDFLAGS"; then
371 HOST_LDFLAGS="$LDFLAGS"
373 if test -z "$HOST_RANLIB"; then
374 HOST_RANLIB="$RANLIB"
376 if test -z "$HOST_AR"; then
379 if test -z "$HOST_AR_FLAGS"; then
380 HOST_AR_FLAGS="$AR_FLAGS"
384 if test -n "$MOZ_WINCONSOLE"; then
385 AC_DEFINE(MOZ_WINCONSOLE)
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])
399 dnl ========================================================
400 dnl Special win32 checks
401 dnl ========================================================
403 MOZ_ARG_ENABLE_BOOL(metro,
404 [ --enable-metro Enable Windows Metro build targets],
407 if test -n "$MOZ_METRO"; then
409 # Target the Windows 8 Kit
412 # toolkit/library/makefile.in needs these, see nsDllMain.
414 CRTEXPDLLVERSION=1-1-0
416 # Target the Windows 7 SDK by default
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
433 MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
437 AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER)]);
443 if test "$GCC" != "yes" -a -z "$CLANG_CC"; then
444 # Check to see if we are really running in a msvc environemnt
446 AC_CHECK_PROGS(MIDL, midl)
448 # Make sure compilers are valid
449 CFLAGS="$CFLAGS -TC -nologo"
450 CXXFLAGS="$CXXFLAGS -TP -nologo"
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.]) )
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.]) )
464 _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
467 # Determine compiler version
468 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | cut -c 1-2`
469 _CC_MINOR_VERSION=`echo ${CC_VERSION} | cut -c 3-4`
470 _MSC_VER=${CC_VERSION}
472 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | cut -c 1-2`
474 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
475 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
478 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
479 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
481 if test "$_CC_MAJOR_VERSION" = "16"; then
484 elif test "$_CC_MAJOR_VERSION" = "17"; then
487 elif test "$_CC_MAJOR_VERSION" = "18"; then
491 AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
493 AC_SUBST(MSVS_VERSION)
495 # Disable SEH on clang-cl because it doesn't implement them yet.
496 if test -z "$CLANG_CL"; then
497 AC_DEFINE(HAVE_SEH_EXCEPTIONS)
500 if test -n "$WIN32_REDIST_DIR"; then
501 if test ! -d "$WIN32_REDIST_DIR"; then
502 AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
504 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
507 dnl Confirm we have the pri tools on win8 builds
508 if test -n "$MOZ_METRO"; then
509 AC_MSG_CHECKING([for makepri])
510 AC_CHECK_PROGS(MAKEPRI, makepri, "")
511 if test -z "MAKEPRI" ; then
512 AC_MSG_ERROR([makepri.exe is required for generating metro browser install components. It should be in the Win8 SDK.])
517 dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool',
518 dnl not something else like "magnetic tape manipulation utility".
519 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
520 if test -z "$MSMT_TOOL"; then
521 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
525 _MSMT_VER_FILTER='s|.*[^!-~]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
527 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
528 if test -z "$MSMANIFEST_TOOL_VERSION"; then
529 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
535 # Check linker version
536 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
537 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
538 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
539 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
544 # Set midl environment
547 MIDL_FLAGS="${MIDL_FLAGS} -env win32"
550 MIDL_FLAGS="${MIDL_FLAGS} -env x64"
554 unset _MSVC_VER_FILTER
556 AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
560 _SAVE_CXXFLAGS="$CXXFLAGS"
561 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
562 AC_TRY_COMPILE([#include <exception>],
563 [std::_Throw(std::exception()); return 0;],
564 ac_cv_have_std__Throw="yes",
565 ac_cv_have_std__Throw="no")
566 CXXFLAGS="$_SAVE_CXXFLAGS"
570 if test "$ac_cv_have_std__Throw" = "yes"; then
571 AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
572 ac_cv_have_dllimport_exception_bug,
576 _SAVE_CXXFLAGS="$CXXFLAGS"
577 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
578 AC_TRY_LINK([#include <vector>],
579 [std::vector<int> v; return v.at(1);],
580 ac_cv_have_dllimport_exception_bug="no",
581 ac_cv_have_dllimport_exception_bug="yes")
582 CXXFLAGS="$_SAVE_CXXFLAGS"
585 if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
587 MOZ_MSVC_STL_WRAP__Throw=1
588 AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
591 AC_CACHE_CHECK(for overridable _RAISE,
596 _SAVE_CXXFLAGS="$CXXFLAGS"
597 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
598 AC_TRY_COMPILE([#include <xstddef>
600 #define _RAISE(x) externallyDefinedFunction((x).what())
603 [std::vector<int> v; return v.at(1);],
604 ac_cv_have__RAISE="no",
605 ac_cv_have__RAISE="yes")
606 CXXFLAGS="$_SAVE_CXXFLAGS"
609 if test "$ac_cv_have__RAISE" = "yes"; then
611 MOZ_MSVC_STL_WRAP__RAISE=1
612 AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
614 AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK. Please file a bug describing this error and your build configuration.])
618 if test "$WRAP_STL_INCLUDES" = "1"; then
619 STL_FLAGS='-I$(DIST)/stl_wrappers'
621 CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0"
622 CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0"
623 elif test -z "$CLANG_CC"; then
624 # Check w32api version
625 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
626 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
627 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
628 AC_TRY_COMPILE([#include <w32api.h>],
629 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
630 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
631 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
632 #error "test failed."
634 , [ res=yes ], [ res=no ])
635 AC_MSG_RESULT([$res])
636 if test "$res" != "yes"; then
637 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
639 # Check windres version
640 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
641 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
642 AC_MSG_RESULT([$_WINDRES_VERSION])
643 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
644 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
645 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
646 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
647 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
648 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
649 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
650 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
651 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
652 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
653 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
654 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
656 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
659 AC_CHECK_PROGS(MIDL, $target-widl widl)
660 if test -n "$MIDL"; then
663 MIDL_FLAGS="$MIDL_FLAGS --win32 -m32"
666 MIDL_FLAGS="$MIDL_FLAGS --win64 -m64"
671 # strsafe.h on mingw uses macros for function deprecation that pollutes namespace
672 # causing problems with local implementations with the same name.
673 AC_DEFINE(STRSAFE_NO_DEPRECATE)
675 MOZ_WINSDK_MAXVER=0x06020000
679 if test "$GCC" != "yes" -o -n "$CLANG_CC" ; then
680 MOZ_FIND_WINSDK_VERSION
683 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
684 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
685 # Require OS features provided by IE 6.0 SP2 (XP SP2)
686 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0603)
688 # If the maximum version supported by this SDK is lower than the target
690 AC_MSG_CHECKING([for Windows SDK being recent enough])
691 if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
695 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.])
698 AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
699 # Definitions matching sdkddkver.h
700 AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
701 AC_DEFINE_UNQUOTED(MOZ_WINSDK_MAXVER,$MOZ_WINSDK_MAXVER)
702 AC_SUBST(MOZ_WINSDK_MAXVER)
709 if test -n "$_WIN32_MSVC"; then
711 SKIP_COMPILER_CHECKS=1
712 SKIP_LIBRARY_CHECKS=1
714 # Since we're skipping compiler and library checks, hard-code
717 AC_DEFINE(HAVE_SETBUF)
718 AC_DEFINE(HAVE_ISATTY)
721 fi # COMPILE_ENVIRONMENT
734 AC_SUBST(WRAP_STL_INCLUDES)
735 AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
736 AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
738 dnl ========================================================
739 dnl Checks for programs.
740 dnl ========================================================
744 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
745 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
746 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
748 AC_MSG_RESULT([$_perl_version])
750 if test "$_perl_res" != 0; then
751 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
755 AC_MSG_CHECKING([for full perl installation])
756 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
758 if test "$_perl_res" != 0; then
760 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
765 if test -z "$COMPILE_ENVIRONMENT"; then
766 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
768 AC_SUBST(NSINSTALL_BIN)
770 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
771 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
772 MOZ_PATH_PROGS(UNZIP, unzip)
773 if test -z "$UNZIP" -o "$UNZIP" = ":"; then
774 AC_MSG_ERROR([unzip not found in \$PATH])
776 MOZ_PATH_PROGS(ZIP, zip)
777 if test -z "$ZIP" -o "$ZIP" = ":"; then
778 AC_MSG_ERROR([zip not found in \$PATH])
780 MOZ_PATH_PROG(XARGS, xargs)
781 if test -z "$XARGS" -o "$XARGS" = ":"; then
782 AC_MSG_ERROR([xargs not found in \$PATH .])
785 MOZ_PATH_PROG(RPMBUILD, rpmbuild, :)
788 if test "$COMPILE_ENVIRONMENT"; then
790 dnl ========================================================
791 dnl = Mac OS X toolchain support
792 dnl ========================================================
794 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
795 dnl that a universal binary is being produced and MOZ_CAN_RUN_PROGRAMS
796 dnl when we can run target binaries.
797 AC_SUBST(UNIVERSAL_BINARY)
798 AC_SUBST(MOZ_CAN_RUN_PROGRAMS)
800 MOZ_ARG_WITH_STRING(unify-dist,
801 [ --with-unify-dist=dir Location of the dist directory to unify with at packaging time (Mac OS X universal build only)],
803 if test -n "$UNIVERSAL_BINARY"; then
804 if test -z "$UNIFY_DIST"; then
805 AC_MSG_ERROR([You need to provide the --with-unify-dist=dir argument when performing a universal build])
807 case "$UNIFY_DIST" in
811 UNIFY_DIST="${MOZ_BUILD_ROOT}/${UNIFY_DIST}"
817 dnl ========================================================
818 dnl Check for MacOS deployment target version
819 dnl ========================================================
821 MOZ_ARG_ENABLE_STRING(macos-target,
822 [ --enable-macos-target=VER (default=10.6)
823 Set the minimum MacOS version needed at runtime],
824 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
828 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
829 dnl Use the specified value
830 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
832 dnl No value specified on the command line or in the environment,
833 dnl use architecture minimum.
834 export MACOSX_DEPLOYMENT_TARGET=10.6
839 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
841 dnl ========================================================
842 dnl = Mac OS X SDK support
843 dnl ========================================================
845 MOZ_ARG_WITH_STRING(macos-sdk,
846 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
847 MACOS_SDK_DIR=$withval)
849 MACOS_PRIVATE_FRAMEWORKS_DIR_DEFAULTED=
850 MOZ_ARG_WITH_STRING(macos-private-frameworks,
851 [ --with-macos-private-frameworks=dir Location of private frameworks to use (Mac OS X only)],
852 MACOS_PRIVATE_FRAMEWORKS_DIR=$withval,
853 MACOS_PRIVATE_FRAMEWORKS_DIR=/System/Library/PrivateFrameworks
854 MACOS_PRIVATE_FRAMEWORKS_DEFAULTED=1)
856 if test -z "${MACOS_PRIVATE_FRAMEWORKS_DEFAULTED}"; then
857 if test -z "$CROSS_COMPILE"; then
858 AC_MSG_WARN([You should only be using --with-macos-private-frameworks when cross-compiling.])
860 if test ! -d "$MACOS_PRIVATE_FRAMEWORKS_DIR"; then
861 AC_MSG_ERROR([PrivateFrameworks directory not found.])
865 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
866 AC_SUBST(MACOS_SDK_DIR)
867 AC_SUBST(MACOS_PRIVATE_FRAMEWORKS_DIR)
869 if test "$MACOS_SDK_DIR"; then
870 dnl Sync this section with the ones in NSPR and NSS.
871 dnl Changes to the cross environment here need to be accounted for in
872 dnl the libIDL checks (below) and xpidl build.
874 if test ! -d "$MACOS_SDK_DIR"; then
875 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
876 specify a valid SDK. SDKs are installed when the optional cross-development
877 tools are selected during the Xcode/Developer Tools installation.])
880 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
881 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
883 dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER.
884 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
885 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
888 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
890 AC_TRY_COMPILE([#include <new>],[],
894 AC_MSG_RESULT($result)
896 if test "$result" = "no" ; then
897 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
901 fi # COMPILE_ENVIRONMENT
903 if test -n "$MAKE"; then
904 if test `echo $MAKE | grep -c make.py` != 1; then
911 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
914 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
917 if test "$GMAKE" = ":"; then
918 AC_MSG_ERROR([GNU make not found])
922 if test -z "$MAKE"; then
926 if test "$COMPILE_ENVIRONMENT"; then
932 fi # COMPILE_ENVIRONMENT
934 dnl ========================================================
935 dnl set the defaults first
936 dnl ========================================================
952 MOZ_USER_DIR=".mozilla"
955 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/media/libjpeg)'
957 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
958 MOZ_PNG_CFLAGS="-I$_objdir/dist/include" # needed for freetype compilation
959 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/media/libpng)'
961 MOZ_JS_STATIC_LIBS='$(call EXPAND_LIBNAME_PATH,js_static,$(LIBXUL_DIST)/lib)'
962 MOZ_JS_SHARED_LIBS='$(call EXPAND_LIBNAME_PATH,mozjs,$(LIBXUL_DIST)/lib)'
963 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
964 XPCOM_FROZEN_LDOPTS='$(call EXPAND_LIBNAME_PATH,xul mozalloc,$(LIBXUL_DIST)/bin)'
965 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS)'
966 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
967 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
969 # These are specially defined on Windows only
972 XPCOM_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
973 XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime.$(LIB_SUFFIX)'
976 XPCOM_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_GLUE_LDOPTS
977 XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_STANDALONE_GLUE_LDOPTS
983 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
987 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
989 if test -n "$CROSS_COMPILE"; then
990 OS_TARGET="${target_os}"
991 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
993 case "${target_os}" in
994 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
995 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU/kFreeBSD ;;
997 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
998 mingw*) OS_ARCH=WINNT OS_TARGET=WINNT ;;
999 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
1000 dragonfly*) OS_ARCH=DragonFly OS_TARGET=DragonFly ;;
1001 freebsd*) OS_ARCH=FreeBSD OS_TARGET=FreeBSD ;;
1002 netbsd*) OS_ARCH=NetBSD OS_TARGET=NetBSD ;;
1003 openbsd*) OS_ARCH=OpenBSD OS_TARGET=OpenBSD ;;
1006 *-android*|*-linuxandroid*) OS_ARCH=Linux OS_TARGET=Android ;;
1009 OS_TARGET=`uname -s`
1010 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1011 OS_RELEASE=`uname -r`
1014 # Before this used `uname -m` when not cross compiling
1015 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1016 OS_TEST="${target_cpu}"
1018 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1020 #######################################################################
1021 # Master "Core Components" macros for getting the OS target #
1022 #######################################################################
1025 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1026 # cross-compilation.
1030 # Define and override various archtecture-specific variables, including
1039 case "$HOST_OS_ARCH" in
1050 HOST_OS_ARCH=GNU_kFreeBSD
1056 HOST_OS_ARCH=DragonFly
1059 HOST_OS_ARCH=FreeBSD
1065 HOST_OS_ARCH=OpenBSD
1071 if test -z "$GNU_CC"; then
1072 if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1077 if test -z "$GNU_CXX"; then
1078 if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1079 SOLARIS_SUNPRO_CXX=1
1082 AC_SUBST(SOLARIS_SUNPRO_CC)
1083 AC_SUBST(SOLARIS_SUNPRO_CXX)
1089 if test -z "$CROSS_COMPILE" ; then
1095 # If uname -s returns "Windows_NT", we assume that we are using
1096 # the uname.exe in MKS toolkit.
1098 # The -r option of MKS uname only returns the major version number.
1099 # So we need to use its -v option to get the minor version number.
1100 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1104 OS_MINOR_RELEASE=`uname -v`
1105 if test "$OS_MINOR_RELEASE" = "00"; then
1108 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1112 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1113 # the uname.exe in the MSYS tools.
1115 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1120 OS_RELEASE=`uname -v`.`uname -r`
1121 OS_TEST=${target_cpu}
1124 case "${target_cpu}" in
1135 if test -z "$CROSS_COMPILE" ; then
1143 # Only set CPU_ARCH if we recognize the value of OS_TEST
1150 powerpc64 | ppc64 | powerpc64le | ppc64le)
1154 powerpc | ppc | rs6000)
1158 Alpha | alpha | ALPHA)
1195 if test -z "$OS_TARGET"; then
1198 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1200 dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64.
1201 dnl ===============================================================
1205 INTEL_ARCHITECTURE=1
1208 dnl Configure platform-specific CPU architecture compiler options.
1209 dnl ==============================================================
1212 dnl =================================================================
1213 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1214 dnl which is bad when cross compiling.
1215 dnl =================================================================
1216 if test "$COMPILE_ENVIRONMENT"; then
1217 configure_static_assert_macros='
1218 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1219 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1220 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1223 dnl test that the macros actually work:
1224 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1225 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1228 ac_cv_static_assertion_macros_work="yes"
1229 AC_TRY_COMPILE([$configure_static_assert_macros],
1230 [CONFIGURE_STATIC_ASSERT(1)],
1232 ac_cv_static_assertion_macros_work="no")
1233 AC_TRY_COMPILE([$configure_static_assert_macros],
1234 [CONFIGURE_STATIC_ASSERT(0)],
1235 ac_cv_static_assertion_macros_work="no",
1238 AC_TRY_COMPILE([$configure_static_assert_macros],
1239 [CONFIGURE_STATIC_ASSERT(1)],
1241 ac_cv_static_assertion_macros_work="no")
1242 AC_TRY_COMPILE([$configure_static_assert_macros],
1243 [CONFIGURE_STATIC_ASSERT(0)],
1244 ac_cv_static_assertion_macros_work="no",
1248 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1249 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1250 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1252 fi # COMPILE_ENVIRONMENT
1254 dnl ========================================================
1255 dnl Android libstdc++, placed here so it can use MOZ_ARCH
1257 dnl ========================================================
1261 dnl ========================================================
1262 dnl Suppress Clang Argument Warnings
1263 dnl ========================================================
1264 if test -n "$CLANG_CC"; then
1265 _WARNINGS_CFLAGS="-Qunused-arguments ${_WARNINGS_CFLAGS}"
1266 CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
1268 if test -n "$CLANG_CXX"; then
1269 _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
1272 dnl ========================================================
1273 dnl = Use Address Sanitizer
1274 dnl ========================================================
1275 MOZ_ARG_ENABLE_BOOL(address-sanitizer,
1276 [ --enable-address-sanitizer Enable Address Sanitizer (default=no)],
1279 if test -n "$MOZ_ASAN"; then
1282 MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer)
1285 AC_SUBST(LLVM_SYMBOLIZER)
1287 dnl ========================================================
1288 dnl = Enable hacks required for LLVM instrumentations
1289 dnl ========================================================
1290 MOZ_ARG_ENABLE_BOOL(llvm-hacks,
1291 [ --enable-llvm-hacks Enable workarounds required for several LLVM instrumentations (default=no)],
1294 if test -n "$MOZ_LLVM_HACKS"; then
1298 AC_SUBST(MOZ_NO_WLZDEFS)
1299 AC_SUBST(MOZ_CFLAGS_NSS)
1301 dnl ========================================================
1302 dnl GNU specific defaults
1303 dnl ========================================================
1304 if test "$GNU_CC"; then
1308 # Per bug 719659 comment 2, some of the headers on ancient build machines
1309 # may require gnu89 inline semantics. But otherwise, we use C99.
1310 # But on OS X we just use C99 plus GNU extensions, in order to fix
1312 CFLAGS="$CFLAGS -std=gnu99"
1313 if test "${OS_ARCH}" != Darwin; then
1314 CFLAGS="$CFLAGS -fgnu89-inline"
1316 # FIXME: Let us build with strict aliasing. bug 414641.
1317 CFLAGS="$CFLAGS -fno-strict-aliasing"
1318 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(notdir $@) -o $@'
1319 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(notdir $@) -o $@'
1320 WARNINGS_AS_ERRORS='-Werror'
1322 DSO_PIC_CFLAGS='-fPIC'
1323 ASFLAGS="$ASFLAGS -fPIC"
1324 AC_MSG_CHECKING([for --noexecstack option to as])
1325 _SAVE_CFLAGS=$CFLAGS
1326 CFLAGS="$CFLAGS -Wa,--noexecstack"
1327 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
1328 [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
1329 AC_MSG_RESULT([no]))
1330 CFLAGS=$_SAVE_CFLAGS
1331 AC_MSG_CHECKING([for -z noexecstack option to ld])
1332 _SAVE_LDFLAGS=$LDFLAGS
1333 LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
1334 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
1336 LDFLAGS=$_SAVE_LDFLAGS)
1338 AC_MSG_CHECKING([for -z text option to ld])
1339 _SAVE_LDFLAGS=$LDFLAGS
1340 LDFLAGS="$LDFLAGS -Wl,-z,text"
1341 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
1342 [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,text"],
1344 LDFLAGS=$_SAVE_LDFLAGS)
1346 AC_MSG_CHECKING([for --build-id option to ld])
1347 _SAVE_LDFLAGS=$LDFLAGS
1348 LDFLAGS="$LDFLAGS -Wl,--build-id"
1349 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
1350 [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,--build-id"],
1352 LDFLAGS=$_SAVE_LDFLAGS)
1354 AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld])
1355 HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=
1356 _SAVE_LDFLAGS=$LDFLAGS
1357 LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ"
1358 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
1359 [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1],
1360 AC_MSG_RESULT([no]))
1361 LDFLAGS=$_SAVE_LDFLAGS
1363 # Check for -mssse3 on $CC
1364 AC_MSG_CHECKING([if toolchain supports -mssse3 option])
1365 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
1366 _SAVE_CFLAGS=$CFLAGS
1367 CFLAGS="$CFLAGS -mssse3"
1368 AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
1369 [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
1370 AC_MSG_RESULT([no]))
1371 CFLAGS=$_SAVE_CFLAGS
1373 # Check for -msse4.1 on $CC
1374 AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
1375 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
1376 _SAVE_CFLAGS=$CFLAGS
1377 CFLAGS="$CFLAGS -msse4.1"
1378 AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
1379 [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
1380 AC_MSG_RESULT([no]))
1381 CFLAGS=$_SAVE_CFLAGS
1383 case "${CPU_ARCH}" in
1385 AC_MSG_CHECKING(for x86 AVX2 asm support in compiler)
1387 [asm volatile ("vpermq \$0xd8,%ymm0,%ymm0 \n");],
1388 result="yes", result="no")
1389 AC_MSG_RESULT("$result")
1390 if test "$result" = "yes"; then
1392 AC_DEFINE(HAVE_X86_AVX2)
1393 AC_SUBST(HAVE_X86_AVX2)
1397 DSO_LDOPTS='-shared'
1398 if test "$GCC_USE_GNU_LD"; then
1399 # Some tools like ASan use a runtime library that is only
1400 # linked against executables, so we must allow undefined
1401 # symbols for shared objects in some cases.
1402 if test -z "$MOZ_NO_WLZDEFS"; then
1403 # Don't allow undefined symbols in libraries
1404 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1406 # BSDs need `environ' exposed for posix_spawn (bug 753046)
1407 case "$OS_TARGET" in
1408 DragonFly|FreeBSD|NetBSD|OpenBSD)
1409 if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then
1410 DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
1412 DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
1419 # Turn on GNU-specific warnings:
1420 # -Wall - turn on a lot of warnings
1421 # -Wpointer-arith - good to have
1422 # -Wdeclaration-after-statement - MSVC doesn't like these
1423 # -Werror=return-type - catches missing returns, zero false positives
1424 # -Werror=int-to-pointer-cast - catches cast to pointer from integer of different size
1425 # -Wtype-limits - catches overflow bugs, few false positives
1426 # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1427 # -Wsign-compare - catches comparison of signed and unsigned types
1429 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -Wpointer-arith -Wdeclaration-after-statement"
1430 MOZ_C_SUPPORTS_WARNING(-W, error=return-type, ac_c_has_werror_return_type)
1431 MOZ_C_SUPPORTS_WARNING(-W, error=int-to-pointer-cast, ac_c_has_werror_int_to_pointer_cast)
1432 MOZ_C_SUPPORTS_WARNING(-W, type-limits, ac_c_has_wtype_limits)
1433 MOZ_C_SUPPORTS_WARNING(-W, empty-body, ac_c_has_wempty_body)
1434 MOZ_C_SUPPORTS_WARNING(-W, sign-compare, ac_c_has_sign_compare)
1436 # Turn off the following warnings that -Wall turns on:
1437 # -Wno-unused - lots of violations in third-party code
1439 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-unused"
1441 if test -z "$INTEL_CC" -a -z "$CLANG_CC"; then
1442 # Don't use -Wcast-align with ICC or clang
1444 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1445 hppa | ia64 | sparc | arm)
1448 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1453 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1454 _USE_CPP_INCLUDE_FLAG=1
1455 ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
1457 elif test "$SOLARIS_SUNPRO_CC"; then
1459 if test "$CPU_ARCH" = "sparc"; then
1460 # for Sun Studio on Solaris/SPARC
1461 DSO_PIC_CFLAGS='-xcode=pic32'
1463 DSO_PIC_CFLAGS='-KPIC'
1465 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1467 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
1468 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
1470 DSO_LDOPTS='-shared'
1471 if test "$GNU_LD"; then
1472 # Don't allow undefined symbols in libraries
1473 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1477 DSO_PIC_CFLAGS='-KPIC'
1478 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1481 if test "$GNU_CXX"; then
1482 # FIXME: Let us build with strict aliasing. bug 414641.
1483 CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
1485 # Turn on GNU-specific warnings:
1486 # -Wall - turn on a lot of warnings
1487 # -Wpointer-arith - good to have
1488 # -Woverloaded-virtual - ???
1489 # -Werror=return-type - catches missing returns, zero false positives
1490 # -Werror=int-to-pointer-cast - catches cast to pointer from integer of different size
1491 # -Wtype-limits - catches overflow bugs, few false positives
1492 # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1493 # -Wsign-compare - catches comparison of signed and unsigned types
1495 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual"
1496 MOZ_CXX_SUPPORTS_WARNING(-W, error=return-type, ac_cxx_has_werror_return_type)
1497 MOZ_CXX_SUPPORTS_WARNING(-W, error=int-to-pointer-cast, ac_cxx_has_werror_int_to_pointer_cast)
1498 MOZ_CXX_SUPPORTS_WARNING(-W, type-limits, ac_cxx_has_wtype_limits)
1499 MOZ_CXX_SUPPORTS_WARNING(-W, empty-body, ac_cxx_has_wempty_body)
1500 MOZ_CXX_SUPPORTS_WARNING(-W, sign-compare, ac_cxx_has_sign_compare)
1502 # Turn off the following warnings that -Wall turns on:
1503 # -Wno-invalid-offsetof - we use offsetof on non-POD types frequently
1504 # -Wno-inline-new-delete - we inline 'new' and 'delete' in mozalloc
1505 # for performance reasons, and because GCC and clang accept it (though
1506 # clang warns about it).
1508 MOZ_CXX_SUPPORTS_WARNING(-Wno-, invalid-offsetof, ac_cxx_has_wno_invalid_offsetof)
1509 MOZ_CXX_SUPPORTS_WARNING(-Wno-, inline-new-delete, ac_cxx_has_wno_inline_new_delete)
1511 if test -z "$INTEL_CXX" -a -z "$CLANG_CXX"; then
1512 # Don't use -Wcast-align with ICC or clang
1514 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1515 hppa | ia64 | sparc | arm)
1518 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1523 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1524 _USE_CPP_INCLUDE_FLAG=1
1526 # Recent clang and gcc support C++11 deleted functions without warnings if
1527 # compiling with -std=c++0x or -std=gnu++0x (or c++11 or gnu++11 in very new
1528 # versions). We can't use -std=c++0x yet, so gcc's support must remain
1529 # unused. But clang's warning can be disabled, so when compiling with clang
1530 # we use it to opt out of the warning, enabling (macro-encapsulated) use of
1531 # deleted function syntax.
1532 if test "$CLANG_CXX"; then
1533 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-c++0x-extensions"
1534 MOZ_CXX_SUPPORTS_WARNING(-Wno-, extended-offsetof, ac_cxx_has_wno_extended_offsetof)
1538 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1541 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1542 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1543 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1544 dnl normal behavior.
1545 dnl ========================================================
1547 MKSHLIB_UNFORCE_ALL=
1549 if test "$COMPILE_ENVIRONMENT"; then
1550 if test "$GNU_CC"; then
1551 AC_MSG_CHECKING(whether ld has archive extraction flags)
1552 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1553 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1554 ac_cv_mkshlib_force_and_unforce="no"
1555 exec 3<&0 <<LOOP_INPUT
1556 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1557 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1558 force="-Wl,-all"; unforce="-Wl,-none"
1565 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1568 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1570 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1574 eval $ac_cv_mkshlib_force_and_unforce
1575 MKSHLIB_FORCE_ALL=$force
1576 MKSHLIB_UNFORCE_ALL=$unforce
1579 fi # COMPILE_ENVIRONMENT
1581 dnl ========================================================
1582 dnl Checking for 64-bit OS
1583 dnl ========================================================
1584 if test "$COMPILE_ENVIRONMENT"; then
1587 AC_MSG_CHECKING(for 64-bit OS)
1588 AC_TRY_COMPILE([$configure_static_assert_macros],
1589 [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1590 result="yes", result="no")
1591 AC_MSG_RESULT("$result")
1592 if test "$result" = "yes"; then
1593 AC_DEFINE(HAVE_64BIT_OS)
1596 AC_SUBST(HAVE_64BIT_OS)
1598 fi # COMPILE_ENVIRONMENT
1600 dnl ========================================================
1601 dnl = Use profiling compile flags
1602 dnl ========================================================
1603 MOZ_ARG_ENABLE_BOOL(profiling,
1604 [ --enable-profiling Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1608 dnl ========================================================
1609 dnl = Turn on systrace for android/b2g.
1610 dnl ========================================================
1611 MOZ_ARG_ENABLE_BOOL(systrace,
1612 [ --enable-systrace Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1615 if test -n "$MOZ_USE_SYSTRACE"; then
1616 AC_DEFINE(MOZ_USE_SYSTRACE)
1619 # For profiling builds keep the symbol information
1620 if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then
1621 case "$OS_TARGET" in
1622 Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
1623 STRIP_FLAGS="--strip-debug"
1628 dnl ========================================================
1630 dnl ========================================================
1631 MOZ_ARG_ENABLE_BOOL(valgrind,
1632 [ --enable-valgrind Enable Valgrind integration hooks (default=no)],
1635 if test -n "$MOZ_VALGRIND"; then
1636 MOZ_CHECK_HEADER([valgrind/valgrind.h], [],
1638 [--enable-valgrind specified but Valgrind is not installed]))
1639 AC_DEFINE(MOZ_VALGRIND)
1641 AC_SUBST(MOZ_VALGRIND)
1643 dnl ========================================================
1645 dnl ========================================================
1646 MOZ_ARG_ENABLE_BOOL(jprof,
1647 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.],
1650 if test -n "$MOZ_JPROF"; then
1652 AC_DEFINE(MOZ_JPROF)
1655 dnl ========================================================
1657 dnl ========================================================
1658 MOZ_ENABLE_PROFILER_SPS=1
1660 case "${OS_TARGET}" in
1662 case "${CPU_ARCH}" in
1665 MOZ_ENABLE_PROFILER_SPS=
1669 case "${CPU_ARCH}" in
1672 MOZ_ENABLE_PROFILER_SPS=
1677 MOZ_ENABLE_PROFILER_SPS=
1681 if test -n "$MOZ_ENABLE_PROFILER_SPS"; then
1682 AC_DEFINE(MOZ_ENABLE_PROFILER_SPS)
1685 dnl ========================================================
1687 dnl ========================================================
1688 MOZ_ARG_ENABLE_BOOL(shark,
1689 [ --enable-shark Enable shark remote profiling. Implies --enable-profiling.],
1692 if test -n "$MOZ_SHARK"; then
1694 AC_DEFINE(MOZ_SHARK)
1697 dnl ========================================================
1699 dnl ========================================================
1700 MOZ_ARG_ENABLE_BOOL(instruments,
1701 [ --enable-instruments Enable instruments remote profiling. Implies --enable-profiling.],
1704 if test -n "$MOZ_INSTRUMENTS"; then
1706 AC_DEFINE(MOZ_INSTRUMENTS)
1709 dnl ========================================================
1711 dnl ========================================================
1712 MOZ_ARG_ENABLE_BOOL(callgrind,
1713 [ --enable-callgrind Enable callgrind profiling. Implies --enable-profiling.],
1716 if test -n "$MOZ_CALLGRIND"; then
1718 AC_DEFINE(MOZ_CALLGRIND)
1721 dnl ========================================================
1723 dnl ========================================================
1724 MOZ_ARG_ENABLE_BOOL(vtune,
1725 [ --enable-vtune Enable vtune profiling. Implies --enable-profiling.],
1728 if test -n "$MOZ_VTUNE"; then
1730 AC_DEFINE(MOZ_VTUNE)
1733 dnl ========================================================
1735 dnl ========================================================
1736 if test -n "$MOZ_PROFILING"; then
1737 AC_DEFINE(MOZ_PROFILING)
1740 dnl ========================================================
1741 dnl System overrides of the defaults for host
1742 dnl ========================================================
1745 if test -n "$_WIN32_MSVC"; then
1747 HOST_AR_FLAGS='-NOLOGO -OUT:$@'
1748 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo"
1749 HOST_RANLIB='echo ranlib'
1751 HOST_CFLAGS="$HOST_CFLAGS -mwindows"
1753 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11 -D_CRT_SECURE_NO_WARNINGS"
1754 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1755 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1756 HOST_BIN_SUFFIX=.exe
1759 PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1763 case "${host_cpu}" in
1765 if test -n "$_WIN32_MSVC"; then
1766 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
1770 if test -n "$_WIN32_MSVC"; then
1771 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
1773 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1779 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1780 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1781 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1784 *-linux*|*-kfreebsd*-gnu|*-gnu*)
1785 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1786 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1787 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1791 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1792 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1796 dnl Check for using a custom <inttypes.h> implementation
1797 dnl ========================================================
1798 AC_MSG_CHECKING(for custom <inttypes.h> implementation)
1799 if test "$MOZ_CUSTOM_INTTYPES_H"; then
1800 AC_DEFINE_UNQUOTED(MOZ_CUSTOM_INTTYPES_H, "$MOZ_CUSTOM_INTTYPES_H")
1801 AC_MSG_RESULT(using $MOZ_CUSTOM_INTTYPES_H)
1803 AC_MSG_RESULT(none specified)
1806 dnl Get mozilla version from central milestone file
1807 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1808 MOZILLA_UAVERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir -uaversion`
1809 MOZILLA_SYMBOLVERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir -symbolversion`
1811 dnl Get version of various core apps from the version files.
1812 FIREFOX_VERSION=`cat $_topsrcdir/browser/config/version.txt`
1814 if test -z "$FIREFOX_VERSION"; then
1815 AC_MSG_ERROR([FIREFOX_VERSION is unexpectedly blank.])
1818 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1819 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1820 AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION")
1821 AC_SUBST(MOZILLA_SYMBOLVERSION)
1823 MOZ_DOING_LTO(lto_is_enabled)
1825 dnl ========================================================
1826 dnl System overrides of the defaults for target
1827 dnl ========================================================
1832 if test ! "$GNU_CC"; then
1833 if test ! "$HAVE_64BIT_OS"; then
1834 # Compiling with Visual Age C++ object model compat is the
1835 # default. To compile with object model ibm, add
1836 # AIX_OBJMODEL=ibm to .mozconfig.
1837 if test "$AIX_OBJMODEL" = "ibm"; then
1838 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1845 AC_SUBST(AIX_OBJMODEL)
1846 DSO_LDOPTS='-qmkshrobj=1'
1847 DSO_CFLAGS='-qflag=w:w'
1849 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1851 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1852 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1853 if test "$COMPILE_ENVIRONMENT"; then
1856 AC_MSG_CHECKING([for IBM XLC/C++ compiler version >= 9.0.0.7])
1858 [#if (__IBMCPP__ < 900)
1859 #error "Bad compiler"
1861 _BAD_COMPILER=,_BAD_COMPILER=1)
1862 if test -n "$_BAD_COMPILER"; then
1864 AC_MSG_ERROR([IBM XLC/C++ 9.0.0.7 or higher is required to build.])
1866 AC_MSG_RESULT([yes])
1869 TARGET_COMPILER_ABI="ibmc"
1870 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1871 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1874 case "${target_os}" in
1879 if test "$COMPILE_ENVIRONMENT"; then
1880 MOZ_CHECK_HEADERS(sys/inttypes.h)
1882 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1886 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1887 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1888 MOZ_OPTIMIZE_FLAGS="-O3"
1889 # Statically disable jemalloc on 10.5 and 32-bit 10.6. See bug 702250.
1890 if test "$HAVE_64BIT_OS"; then
1895 STRIP_FLAGS="$STRIP_FLAGS -x -S"
1896 # Check whether we're targeting OS X or iOS
1897 AC_CACHE_CHECK(for iOS target,
1899 [AC_TRY_COMPILE([#include <TargetConditionals.h>
1900 #if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
1904 ac_cv_ios_target="yes",
1905 ac_cv_ios_target="no")])
1906 if test "$ac_cv_ios_target" = "yes"; then
1908 AC_DEFINE(XP_DARWIN)
1909 _PLATFORM_DEFAULT_TOOLKIT='cairo-uikit'
1911 AC_DEFINE(XP_MACOSX)
1912 AC_DEFINE(XP_DARWIN)
1913 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1914 # The ExceptionHandling framework is needed for Objective-C exception
1915 # logging code in nsObjCExceptions.h. Currently we only use that in debug
1917 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
1919 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1921 if test "x$lto_is_enabled" = "xyes"; then
1922 echo "Skipping -dead_strip because lto is enabled."
1923 dnl DTrace and -dead_strip don't interact well. See bug 403132.
1924 dnl ===================================================================
1925 elif test "x$enable_dtrace" = "xyes"; then
1926 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1928 dnl check for the presence of the -dead_strip linker flag
1929 AC_MSG_CHECKING([for -dead_strip option to ld])
1930 _SAVE_LDFLAGS=$LDFLAGS
1931 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1932 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1933 if test -n "$_HAVE_DEAD_STRIP" ; then
1934 AC_MSG_RESULT([yes])
1935 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1940 LDFLAGS=$_SAVE_LDFLAGS
1943 dnl With newer linkers we need to pass -allow_heap_execute because of
1944 dnl Microsoft Silverlight (5.1.10411.0 at least).
1945 AC_MSG_CHECKING([for -allow_heap_execute option to ld])
1946 _SAVE_LDFLAGS=$LDFLAGS
1947 LDFLAGS="$LDFLAGS -Wl,-allow_heap_execute"
1948 AC_TRY_LINK(,[return 0;],_HAVE_ALLOW_HEAP_EXECUTE=1,
1949 _HAVE_ALLOW_HEAP_EXECUTE=)
1950 if test -n "$_HAVE_ALLOW_HEAP_EXECUTE" ; then
1951 AC_MSG_RESULT([yes])
1952 MOZ_ALLOW_HEAP_EXECUTE_FLAGS="-Wl,-allow_heap_execute"
1956 LDFLAGS=$_SAVE_LDFLAGS
1958 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1963 if test ! "$GNU_CC"; then
1967 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
1968 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
1969 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1972 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1973 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1976 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1977 AC_DEFINE(_LARGEFILE64_SOURCE)
1982 if test ! "$GNU_CC"; then
1983 DSO_LDOPTS='-b -Wl,+s'
1986 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1987 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1988 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1990 DSO_LDOPTS='-b -E +s'
1991 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1992 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1994 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
1995 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1998 *-android*|*-linuxandroid*)
1999 AC_DEFINE(NO_PW_GECOS)
2001 if test -n "$gonkdir"; then
2002 _PLATFORM_DEFAULT_TOOLKIT=cairo-gonk
2003 _PLATFORM_HAVE_RIL=1
2007 _PLATFORM_DEFAULT_TOOLKIT=cairo-android
2010 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2012 MOZ_GFX_OPTIMIZE_MOBILE=1
2013 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions"
2017 # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
2018 # Similarly for GNU_CXX and INTEL_CXX.
2019 if test "$INTEL_CC" -o "$INTEL_CXX"; then
2020 # -Os has been broken on Intel's C/C++ compilers for quite a
2021 # while; Intel recommends against using it.
2022 MOZ_OPTIMIZE_FLAGS="-O2"
2023 elif test "$GNU_CC" -o "$GNU_CXX"; then
2024 case $GCC_VERSION in
2026 # -Os is broken on gcc 4.5.x we need to tweak it to get good results.
2027 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
2029 MOZ_PGO_OPTIMIZE_FLAGS="-O3"
2030 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks $MOZ_OPTIMIZE_SIZE_TWEAK"
2033 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2037 case "${target_cpu}" in
2039 CFLAGS="$CFLAGS -mieee"
2040 CXXFLAGS="$CXXFLAGS -mieee"
2044 if test -z "$MC"; then
2054 # certain versions of cygwin's makedepend barf on the
2055 # #include <string> vs -I./dist/include/string issue so don't use it
2056 XPCOM_FROZEN_LDOPTS='$(call EXPAND_LIBNAME_PATH,xul mozalloc,$(LIBXUL_DIST)/lib)'
2057 if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
2059 CXX="$CXX -mwindows"
2060 CPP="$CPP -mwindows"
2061 CFLAGS="$CFLAGS -mms-bitfields"
2062 CXXFLAGS="$CXXFLAGS -mms-bitfields"
2063 DSO_LDOPTS='-shared'
2064 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2065 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2067 # Use static libgcc and libstdc++
2068 LDFLAGS="$LDFLAGS -static-libgcc -static-libstdc++"
2069 NSPR_LDFLAGS="$NSPR_LDFLAGS -static-libgcc"
2070 # Use temp file for windres (bug 213281)
2071 RCFLAGS='-O coff --use-temp-file'
2072 # mingw doesn't require kernel32, user32, and advapi32 explicitly
2073 LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32 -lnetapi32"
2076 IMPORT_LIB_SUFFIX=dll.a
2078 # We use mix of both POSIX and Win32 printf format across the tree, so format
2079 # warnings are useless on mingw.
2080 MOZ_C_SUPPORTS_WARNING(-Wno-, format, ac_c_has_wno_format)
2081 MOZ_CXX_SUPPORTS_WARNING(-Wno-, format, ac_cxx_has_wno_format)
2083 TARGET_COMPILER_ABI=msvc
2087 if test "$AS_BIN"; then
2088 AS="$(basename "$AS_BIN")"
2091 AR_FLAGS='-NOLOGO -OUT:$@'
2093 RANLIB='echo not_ranlib'
2094 STRIP='echo not_strip'
2105 IMPORT_LIB_SUFFIX=lib
2106 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2107 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2109 MKSHLIB_UNFORCE_ALL=
2110 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2111 _USE_CPP_INCLUDE_FLAG=1
2112 _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2113 _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2114 CFLAGS="$CFLAGS -W3 -Gy"
2115 CXXFLAGS="$CXXFLAGS -W3 -Gy"
2116 if test "$_CC_SUITE" -ge "12"; then
2117 dnl VS2013+ requires -FS when parallel building by make -jN.
2118 dnl If nothing, compiler sometimes causes C1041 error.
2120 dnl Visual Studio 2013 supports -Gw flags
2121 dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
2122 CFLAGS="$CFLAGS -FS -Gw"
2123 CXXFLAGS="$CXXFLAGS -FS -Gw"
2125 # khuey says we can safely ignore MSVC warning C4251
2126 # MSVC warning C4244 (implicit type conversion may lose data) warns
2127 # and requires workarounds for perfectly valid code. Also, GCC/clang
2128 # don't warn about it by default. So for consistency/sanity, we turn
2129 # it off on MSVC, too.
2130 # MSVC warning C4345 warns of newly conformant behavior as of VS2003.
2131 # MSVC warning C4351 warns of newly conformant behavior as of VS2005.
2132 # MSVC warning C4482 warns when an enum value is refered specifing the
2133 # name of the enum itself. This behavior is allowed in C++11, and the
2134 # warning has been removed in VS2012.
2135 # MSVC warning C4800 warns when a value is implicitly cast to bool,
2136 # because this also forces narrowing to a single byte, which can be a
2137 # perf hit. But this matters so little in practice (and often we want
2138 # that behavior) that it's better to turn it off.
2139 # MSVC warning C4819 warns some UTF-8 characters (e.g. copyright sign)
2140 # on non-Western system locales even if it is in a comment.
2141 CFLAGS="$CFLAGS -wd4244 -wd4819"
2142 CXXFLAGS="$CXXFLAGS -wd4251 -wd4244 -wd4345 -wd4351 -wd4482 -wd4800 -wd4819"
2143 # make 'foo == bar;' error out
2144 CFLAGS="$CFLAGS -we4553"
2145 CXXFLAGS="$CXXFLAGS -we4553"
2146 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib netapi32.lib"
2147 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2148 WARNINGS_AS_ERRORS='-WX'
2149 MOZ_OPTIMIZE_FLAGS='-O1 -Oi'
2151 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2152 # Disable these flags on clang-cl since it doesn't ignore unknown arguments by default, and
2153 # autoconf insists on passing $LDFLAGS to the compiler.
2154 if test -z "$CLANG_CL"; then
2155 LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT"
2157 if test -z "$DEVELOPER_OPTIONS"; then
2158 LDFLAGS="$LDFLAGS -RELEASE"
2160 dnl For profile-guided optimization
2161 PROFILE_GEN_CFLAGS="-GL"
2162 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2163 dnl XXX: PGO builds can fail with warnings treated as errors,
2164 dnl specifically "no profile data available" appears to be
2165 dnl treated as an error sometimes. This might be a consequence
2166 dnl of using WARNINGS_AS_ERRORS in some modules, combined
2167 dnl with the linker doing most of the work in the whole-program
2168 dnl optimization/PGO case. I think it's probably a compiler bug,
2169 dnl but we work around it here.
2170 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2171 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2172 dnl Probably also a compiler bug, but what can you do?
2173 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2174 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2175 dnl Minimum reqiurement of Gecko is VS2010 or later which supports
2176 dnl both SSSE3 and SSE4.1.
2177 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
2178 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
2181 AC_DEFINE(HAVE_SNPRINTF)
2186 AC_DEFINE(HW_THREADS)
2187 AC_DEFINE(STDC_HEADERS)
2188 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2189 TARGET_MD_ARCH=win32
2190 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2192 MOZ_USER_DIR="Mozilla"
2194 dnl Hardcode to win95 for now - cls
2195 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2197 dnl set NO_X11 defines here as the general check is skipped on win32
2203 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2204 if test -n "$L10NBASEDIR"; then
2205 L10NBASEDIR=`cd $L10NBASEDIR && pwd -W`
2212 if test -z "$MOZ_TOOLS"; then
2213 AC_MSG_ERROR([MOZ_TOOLS is not set])
2215 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2216 if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
2217 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2219 MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2220 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2221 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2228 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.])
2234 if test "$HAVE_64BIT_OS"; then
2235 AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2238 if test -n "$GNU_CC"; then
2239 CFLAGS="$CFLAGS -mstackrealign -fno-keep-inline-dllexport"
2240 CXXFLAGS="$CXXFLAGS -mstackrealign -fno-keep-inline-dllexport"
2241 LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup -Wl,--large-address-aware"
2243 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
2244 # Disable this flag on clang-cl since it doesn't ignore unknown arguments by default, and
2245 # autoconf insists on passing $LDFLAGS to the compiler.
2246 if test -z "$CLANG_CL"; then
2247 LDFLAGS="$LDFLAGS -SAFESEH"
2254 if test -n "$_WIN32_MSVC"; then
2255 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
2260 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2267 CFLAGS="$CFLAGS -Dunix"
2268 CXXFLAGS="$CXXFLAGS -Dunix"
2269 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2271 DSO_PIC_CFLAGS='-fPIC -DPIC'
2272 DSO_LDOPTS='-shared'
2273 BIN_FLAGS='-Wl,--export-dynamic'
2275 DSO_PIC_CFLAGS='-fPIC -DPIC'
2276 DLL_SUFFIX=".so.1.0"
2277 DSO_LDOPTS='-shared'
2279 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2280 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2281 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2282 if test "$LIBRUNPATH"; then
2283 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2285 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(notdir $@) -o $@'
2286 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(notdir $@)) -o $@'
2290 if test "$SO_VERSION"; then
2291 DLL_SUFFIX=".so.$SO_VERSION"
2293 DLL_SUFFIX=".so.1.0"
2295 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib -Wl,-rpath-link,$(if $(X11BASE),$(X11BASE),/usr/X11R6)/lib'
2297 DSO_PIC_CFLAGS='-fPIC'
2298 DSO_LDOPTS='-shared -fPIC'
2299 if test "$LIBRUNPATH"; then
2300 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2306 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2308 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2309 # libraries one level up (e.g. libnspr4.so)
2310 if test "$SOLARIS_SUNPRO_CC"; then
2311 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
2312 LIBS="-lCrun -lCstd -lc $LIBS"
2313 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2314 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
2315 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
2316 LDFLAGS="-xildoff $LDFLAGS"
2317 MMX_FLAGS="-xarch=mmx -xO4"
2318 SSE_FLAGS="-xarch=sse"
2319 SSE2_FLAGS="-xarch=ssei2 -xO4"
2320 if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
2321 _SAVE_LDFLAGS=$LDFLAGS
2322 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2323 AC_TRY_LINK([#include <stdio.h>],
2324 [printf("Hello World\n");],
2326 [LDFLAGS=$_SAVE_LDFLAGS])
2328 MOZ_OPTIMIZE_FLAGS="-xO4"
2329 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
2330 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
2331 MKSHLIB_FORCE_ALL='-z allextract'
2332 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2339 AS='/usr/ccs/bin/as'
2340 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2342 TARGET_COMPILER_ABI="sunc"
2343 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2344 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2345 AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2349 [#if (__SUNPRO_CC < 0x590)
2352 _BAD_COMPILER=,_BAD_COMPILER=1)
2353 if test -n "$_BAD_COMPILER"; then
2355 AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2360 [#if (__SUNPRO_CC >= 0x5100)
2361 #error "Sun C++ 5.10 or above"
2363 _ABOVE_SS12U1=,_ABOVE_SS12U1=1)
2364 if test "$_ABOVE_SS12U1"; then
2366 CXXFLAGS="$CXXFLAGS -xannotate=no"
2368 AC_MSG_RESULT([$_res])
2371 LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
2373 MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
2374 MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
2375 ASFLAGS="$ASFLAGS -fPIC"
2376 DSO_LDOPTS='-shared'
2377 WARNINGS_AS_ERRORS='-Werror'
2379 _WARNINGS_CXXFLAGS=''
2380 if test "$OS_RELEASE" = "5.3"; then
2381 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2384 if test "$OS_RELEASE" = "5.5.1"; then
2385 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2390 DSO_LDOPTS='-Bdynamic'
2391 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2392 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2394 AC_DEFINE(SPRINTF_RETURNS_STRING)
2395 case "$(target_os)" in
2397 DLL_SUFFIX='.so.1.0'
2404 AC_SUBST_LIST(MMX_FLAGS)
2405 AC_SUBST_LIST(SSE_FLAGS)
2406 AC_SUBST_LIST(SSE2_FLAGS)
2410 # Includes linux-android
2415 AC_SUBST(MOZ_LINKER)
2416 if test -n "$MOZ_LINKER"; then
2417 AC_DEFINE(MOZ_LINKER)
2420 dnl Only one oddball right now (QNX), but this gives us flexibility
2421 dnl if any other platforms need to override this in the future.
2422 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2424 dnl ========================================================
2425 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2426 dnl by now will not have any way to link most binaries (tests
2427 dnl as well as viewer, apprunner, etc.), because some symbols
2428 dnl will be left out of the "composite" .so's by ld as unneeded.
2429 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2430 dnl they can link in the static libs that provide the missing
2432 dnl ========================================================
2433 NO_LD_ARCHIVE_FLAGS=
2434 if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
2435 NO_LD_ARCHIVE_FLAGS=1
2439 NO_LD_ARCHIVE_FLAGS=
2442 if test -z "$GNU_CC"; then
2443 NO_LD_ARCHIVE_FLAGS=
2447 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2449 dnl ========================================================
2450 dnl = Flags to strip unused symbols from .so components and
2451 dnl = to export jemalloc symbols when linking a program
2452 dnl ========================================================
2454 *-linux*|*-kfreebsd*-gnu|*-gnu*)
2455 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2458 if test -z "$GNU_CC"; then
2459 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2461 if test -z "$GCC_USE_GNU_LD"; then
2462 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2464 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2469 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2472 if test -n "$GNU_CC"; then
2473 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2478 if test -z "$COMPILE_ENVIRONMENT"; then
2479 SKIP_COMPILER_CHECKS=1
2480 SKIP_LIBRARY_CHECKS=1
2485 if test -z "$SKIP_COMPILER_CHECKS"; then
2486 dnl Checks for typedefs, structures, and compiler characteristics.
2487 dnl ========================================================
2496 AC_MSG_CHECKING(for ssize_t)
2497 AC_CACHE_VAL(ac_cv_type_ssize_t,
2498 [AC_TRY_COMPILE([#include <stdio.h>
2499 #include <sys/types.h>],
2501 [ac_cv_type_ssize_t=true],
2502 [ac_cv_type_ssize_t=false])])
2503 if test "$ac_cv_type_ssize_t" = true ; then
2504 AC_DEFINE(HAVE_SSIZE_T)
2509 AC_STRUCT_ST_BLKSIZE
2510 AC_MSG_CHECKING(for siginfo_t)
2511 AC_CACHE_VAL(ac_cv_siginfo_t,
2512 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2513 #include <signal.h>],
2515 [ac_cv_siginfo_t=true],
2516 [ac_cv_siginfo_t=false])])
2517 if test "$ac_cv_siginfo_t" = true ; then
2518 AC_DEFINE(HAVE_SIGINFO_T)
2530 dnl Check for .hidden assembler directive and visibility attribute.
2531 dnl Borrowed from glibc configure.in
2532 dnl ===============================================================
2533 if test "$GNU_CC" -a "$OS_TARGET" != WINNT; then
2534 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2535 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2536 case "$OS_TARGET" in
2538 VISIBILITY_FLAGS='-fvisibility=hidden'
2541 case $GCC_VERSION in
2543 VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden_dso_handle.h'
2546 VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2549 WRAP_SYSTEM_INCLUDES=1
2554 # visibility hidden flag for Sun Studio on Solaris
2555 if test "$SOLARIS_SUNPRO_CC"; then
2556 VISIBILITY_FLAGS='-xldscope=hidden'
2557 fi # Sun Studio on Solaris
2559 case "${OS_TARGET}" in
2560 WINNT|Darwin|Android)
2563 STL_FLAGS='-I$(DIST)/stl_wrappers'
2568 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2569 AC_SUBST(VISIBILITY_FLAGS)
2573 if test "$OS_TARGET" != WINNT; then
2574 # Only run this test with clang on non-Windows platforms, because clang
2575 # cannot do enough code gen for now to make this test work correctly.
2579 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
2580 dnl ========================================================
2581 if test "$GNU_CC"; then
2582 CFLAGS_save="${CFLAGS}"
2583 CFLAGS="${CFLAGS} -Werror"
2584 AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
2585 ac_cv_force_align_arg_pointer,
2586 [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
2588 ac_cv_force_align_arg_pointer="yes",
2589 ac_cv_force_align_arg_pointer="no")])
2590 CFLAGS="${CFLAGS_save}"
2591 if test "$ac_cv_force_align_arg_pointer" = "yes"; then
2592 HAVE_GCC_ALIGN_ARG_POINTER=1
2594 HAVE_GCC_ALIGN_ARG_POINTER=
2597 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
2599 dnl Checks for header files.
2600 dnl ========================================================
2602 case "$target_os" in
2604 # for stuff like -lXshm
2605 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2608 MOZ_CHECK_COMMON_HEADERS
2610 dnl These are all the places some variant of statfs can be hiding.
2611 MOZ_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2614 MOZ_CHECK_HEADERS(sys/quota.h sys/sysmacros.h)
2615 MOZ_CHECK_HEADERS([linux/quota.h],,,[#include <sys/socket.h>])
2617 dnl SCTP support - needs various network include headers
2618 MOZ_CHECK_HEADERS([linux/if_addr.h linux/rtnetlink.h],,,[#include <sys/socket.h>])
2620 MOZ_CHECK_HEADERS(sys/types.h netinet/in.h byteswap.h)
2622 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
2623 AC_CACHE_CHECK(for sockaddr_in.sin_len,
2624 ac_cv_sockaddr_in_sin_len,
2625 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2626 #include <sys/types.h>
2628 #include <netinet/in.h>
2629 struct sockaddr_in x;
2630 void *foo = (void*) &x.sin_len;],
2632 [ac_cv_sockaddr_in_sin_len=true],
2633 [ac_cv_sockaddr_in_sin_len=false])])
2634 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
2635 AC_DEFINE(HAVE_SIN_LEN)
2636 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
2637 AC_DEFINE(HAVE_SCONN_LEN)
2640 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
2641 ac_cv_sockaddr_in6_sin6_len,
2642 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2643 #include <sys/types.h>
2645 #include <netinet/in.h>
2646 struct sockaddr_in6 x;
2647 void *foo = (void*) &x.sin6_len;],
2649 [ac_cv_sockaddr_in6_sin6_len=true],
2650 [ac_cv_sockaddr_in6_sin6_len=false])])
2651 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
2652 AC_DEFINE(HAVE_SIN6_LEN)
2655 AC_CACHE_CHECK(for sockaddr.sa_len,
2656 ac_cv_sockaddr_sa_len,
2657 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2658 #include <sys/types.h>
2660 #include <sys/socket.h>
2662 void *foo = (void*) &x.sa_len;],
2664 [ac_cv_sockaddr_sa_len=true],
2665 [ac_cv_sockaddr_sa_len=false])])
2666 if test "$ac_cv_sockaddr_sa_len" = true ; then
2667 AC_DEFINE(HAVE_SA_LEN)
2670 AC_ARG_ENABLE(dtrace,
2671 [ --enable-dtrace build with dtrace support if available (default=no)],
2672 [enable_dtrace="yes"],)
2673 if test "x$enable_dtrace" = "xyes"; then
2674 MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
2675 if test -n "$HAVE_DTRACE"; then
2676 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
2678 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
2681 AC_SUBST(HAVE_DTRACE)
2687 MOZ_CHECK_HEADERS(sys/cdefs.h)
2691 MOZ_LINUX_PERF_EVENT
2693 dnl Checks for libraries.
2694 dnl ========================================================
2699 AC_CHECK_LIB(c_r, gethostbyname_r)
2703 dnl We don't want to link with libdl even if it's present on OS X, since
2704 dnl it's not used and not part of the default installation. OS/2 has dlfcn
2706 dnl We don't want to link against libm or libpthread on Darwin since
2707 dnl they both are just symlinks to libSystem and explicitly linking
2708 dnl against libSystem causes issues when debugging (see bug 299601).
2713 AC_SEARCH_LIBS(dlopen, dl,
2714 MOZ_CHECK_HEADER(dlfcn.h,
2715 AC_DEFINE(HAVE_DLOPEN)))
2719 _SAVE_CFLAGS="$CFLAGS"
2720 CFLAGS="$CFLAGS -D_GNU_SOURCE"
2721 AC_CHECK_FUNCS(dladdr memmem)
2722 CFLAGS="$_SAVE_CFLAGS"
2724 if test ! "$GNU_CXX"; then
2728 AC_CHECK_LIB(C_r, demangle)
2731 AC_CHECK_LIB(C, demangle)
2736 AC_CHECK_LIB(socket, socket)
2739 XLIBS="$X_EXTRA_LIBS"
2741 dnl ========================================================
2742 dnl Checks for X libraries.
2743 dnl Ordering is important.
2744 dnl Xt is dependent upon SM as of X11R6
2745 dnl ========================================================
2746 if test "$no_x" = "yes"; then
2749 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
2750 XLIBS="-lX11 $XLIBS"
2751 _SAVE_LDFLAGS="$LDFLAGS"
2752 LDFLAGS="$XLDFLAGS $LDFLAGS"
2753 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
2754 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
2755 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
2756 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
2758 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
2759 unset ac_cv_lib_Xt_XtFree
2760 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
2761 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
2762 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
2763 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
2766 # AIX needs the motif library linked before libXt to prevent
2767 # crashes in plugins linked against Motif - Bug #98892
2768 case "${target_os}" in
2770 XT_LIBS="-lXm $XT_LIBS"
2774 dnl ========================================================
2775 dnl = Check for XShm
2776 dnl ========================================================
2777 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
2780 dnl ========================================================
2782 dnl ========================================================
2783 MOZ_CHECK_HEADER(X11/extensions/scrnsaver.h,
2784 AC_CHECK_LIB(Xss, XScreenSaverQueryInfo,
2785 [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS"
2786 AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS))
2788 LDFLAGS="$_SAVE_LDFLAGS"
2798 dnl ========================================================
2799 dnl = pthread support
2800 dnl = Start by checking whether the system support pthreads
2801 dnl ========================================================
2802 case "$target_os" in
2807 MOZ_CHECK_PTHREADS(pthreads,
2808 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
2809 MOZ_CHECK_PTHREADS(pthread,
2810 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
2811 MOZ_CHECK_PTHREADS(c_r,
2812 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
2813 MOZ_CHECK_PTHREADS(c,
2822 dnl ========================================================
2823 dnl Check the command line for --with-pthreads
2824 dnl ========================================================
2825 MOZ_ARG_WITH_BOOL(pthreads,
2826 [ --with-pthreads Force use of system pthread library with NSPR ],
2827 [ if test "$MOZ_USE_PTHREADS"x = x; then
2828 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
2834 dnl ========================================================
2835 dnl Do the platform specific pthread hackery
2836 dnl ========================================================
2837 if test "$MOZ_USE_PTHREADS"x != x
2840 dnl See if -pthread is supported.
2843 ac_cv_have_dash_pthread=no
2844 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
2845 echo 'int main() { return 0; }' | cat > conftest.c
2846 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
2847 if test $? -eq 0; then
2848 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2849 ac_cv_have_dash_pthread=yes
2850 case "$target_os" in
2852 # Freebsd doesn't use -pthread for compiles, it uses them for linking
2855 CFLAGS="$CFLAGS -pthread"
2856 CXXFLAGS="$CXXFLAGS -pthread"
2862 AC_MSG_RESULT($ac_cv_have_dash_pthread)
2865 dnl See if -pthreads is supported.
2867 ac_cv_have_dash_pthreads=no
2868 if test "$ac_cv_have_dash_pthread" = "no"; then
2869 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
2870 echo 'int main() { return 0; }' | cat > conftest.c
2871 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
2872 if test $? -eq 0; then
2873 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2874 ac_cv_have_dash_pthreads=yes
2875 CFLAGS="$CFLAGS -pthreads"
2876 CXXFLAGS="$CXXFLAGS -pthreads"
2880 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
2885 AC_DEFINE(_REENTRANT)
2886 AC_DEFINE(_THREAD_SAFE)
2887 dnl -pthread links in -lpthread, so don't specify it explicitly.
2888 if test "$ac_cv_have_dash_pthread" = "yes"; then
2889 _PTHREAD_LDFLAGS="-pthread"
2893 *-*-openbsd*|*-*-bsdi*)
2894 AC_DEFINE(_REENTRANT)
2895 AC_DEFINE(_THREAD_SAFE)
2896 dnl -pthread links in -lc_r, so don't specify it explicitly.
2897 if test "$ac_cv_have_dash_pthread" = "yes"; then
2898 _PTHREAD_LDFLAGS="-pthread"
2902 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
2903 AC_DEFINE(_REENTRANT)
2907 AC_DEFINE(_REENTRANT)
2911 AC_DEFINE(_REENTRANT)
2915 AC_DEFINE(_REENTRANT)
2916 if test "$SOLARIS_SUNPRO_CC"; then
2917 CFLAGS="$CFLAGS -mt"
2918 CXXFLAGS="$CXXFLAGS -mt"
2922 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
2923 AC_SUBST(MOZ_USE_PTHREADS)
2927 dnl Checks for library functions.
2928 dnl ========================================================
2929 AC_PROG_GCC_TRADITIONAL
2931 AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize localtime_r)
2933 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
2934 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
2935 ac_cv_clock_monotonic,
2936 [for libs in "" -lrt; do
2939 AC_TRY_LINK([#include <time.h>],
2940 [ struct timespec ts;
2941 clock_gettime(CLOCK_MONOTONIC, &ts); ],
2942 ac_cv_clock_monotonic=$libs
2945 ac_cv_clock_monotonic=no)
2948 if test "$ac_cv_clock_monotonic" != "no"; then
2949 HAVE_CLOCK_MONOTONIC=1
2950 REALTIME_LIBS=$ac_cv_clock_monotonic
2951 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
2952 AC_SUBST(HAVE_CLOCK_MONOTONIC)
2953 AC_SUBST(REALTIME_LIBS)
2956 dnl check for wcrtomb/mbrtowc
2957 dnl =======================================================================
2958 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
2961 AC_CACHE_CHECK(for wcrtomb,
2963 [AC_TRY_LINK([#include <wchar.h>],
2964 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
2965 ac_cv_have_wcrtomb="yes",
2966 ac_cv_have_wcrtomb="no")])
2967 if test "$ac_cv_have_wcrtomb" = "yes"; then
2968 AC_DEFINE(HAVE_WCRTOMB)
2970 AC_CACHE_CHECK(for mbrtowc,
2972 [AC_TRY_LINK([#include <wchar.h>],
2973 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
2974 ac_cv_have_mbrtowc="yes",
2975 ac_cv_have_mbrtowc="no")])
2976 if test "$ac_cv_have_mbrtowc" = "yes"; then
2977 AC_DEFINE(HAVE_MBRTOWC)
2984 ac_cv_func_res_ninit,
2985 [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
2986 dnl no need for res_ninit() on NetBSD and OpenBSD
2987 ac_cv_func_res_ninit=no
2991 #define _BSD_SOURCE 1
2993 #include <sys/types.h>
2994 #include <netinet/in.h>
2995 #include <arpa/nameser.h>
2998 [int foo = res_ninit(&_res);],
2999 [ac_cv_func_res_ninit=yes],
3000 [ac_cv_func_res_ninit=no])
3004 if test "$ac_cv_func_res_ninit" = "yes"; then
3005 AC_DEFINE(HAVE_RES_NINIT)
3006 dnl must add the link line we do something as foolish as this... dougt
3008 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3009 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3019 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3020 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3021 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3023 LIBS="$LIBS $_ICONV_LIBS"
3032 iconv_t h = iconv_open("", "");
3033 iconv(h, NULL, NULL, NULL, NULL);
3036 [ac_cv_func_iconv=yes],
3037 [ac_cv_func_iconv=no]
3040 if test "$ac_cv_func_iconv" = "yes"; then
3041 AC_DEFINE(HAVE_ICONV)
3042 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3043 LIBICONV="$_ICONV_LIBS"
3045 [for iconv() with const input],
3046 ac_cv_func_const_iconv,
3052 const char *input = "testing";
3053 iconv_t h = iconv_open("", "");
3054 iconv(h, &input, NULL, NULL, NULL);
3057 [ac_cv_func_const_iconv=yes],
3058 [ac_cv_func_const_iconv=no]
3061 if test "$ac_cv_func_const_iconv" = "yes"; then
3062 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3074 dnl **********************
3075 dnl *** va_copy checks ***
3076 AC_CACHE_CHECK([for an implementation of va_copy()],
3078 [AC_TRY_COMPILE([#include <stdarg.h>
3080 void f (int i, ...) {
3081 va_list args1, args2;
3082 va_start (args1, i);
3083 va_copy (args2, args1);
3084 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3086 va_end (args1); va_end (args2);
3088 [f(0, 42); return 0],
3089 [ac_cv_va_copy=yes],
3093 AC_CACHE_CHECK([whether va_list can be copied by value],
3095 [AC_TRY_COMPILE([#include <stdarg.h>
3097 void f (int i, ...) {
3098 va_list args1, args2;
3099 va_start (args1, i);
3101 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3103 va_end (args1); va_end (args2);
3105 [f(0, 42); return 0],
3106 [ac_cv_va_val_copy=yes],
3107 [ac_cv_va_val_copy=no],
3110 if test "x$ac_cv_va_copy" = "xyes"; then
3111 AC_DEFINE(VA_COPY, va_copy)
3112 AC_DEFINE(HAVE_VA_COPY)
3115 if test "x$ac_cv_va_val_copy" = "xno"; then
3116 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3119 dnl ===================================================================
3120 dnl ========================================================
3121 dnl Put your C++ language/feature checks below
3122 dnl ========================================================
3126 if test "$GNU_CC"; then
3127 if test "$CPU_ARCH" = "arm" ; then
3128 AC_CACHE_CHECK(for ARM EABI,
3132 #if defined(__ARM_EABI__)
3135 #error Not ARM EABI.
3138 ac_cv_gcc_arm_eabi="yes",
3139 ac_cv_gcc_arm_eabi="no")])
3140 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
3142 ARM_ABI_PREFIX=eabi-
3144 ARM_ABI_PREFIX=oabi-
3148 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
3151 dnl Check to see if we can resolve ambiguity with |using|.
3152 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3153 ac_cv_cpp_ambiguity_resolving_using,
3154 [AC_TRY_COMPILE(class X {
3155 public: int go(const X&) {return 3;}
3156 int jo(const X&) {return 3;}
3158 class Y : public X {
3159 public: int go(int) {return 2;}
3160 int jo(int) {return 2;}
3162 private: using X::go;
3165 ac_cv_cpp_ambiguity_resolving_using=yes,
3166 ac_cv_cpp_ambiguity_resolving_using=no)])
3167 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3168 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3171 dnl See if a dynamic_cast to void* gives the most derived object.
3172 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3173 ac_cv_cpp_dynamic_cast_void_ptr,
3174 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3175 class Y { int j; public: virtual ~Y() { } };
3176 class Z : public X, public Y { int k; };
3182 return !((((void*)&mdo != (void*)subx) &&
3183 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3184 (((void*)&mdo != (void*)suby) &&
3185 ((void*)&mdo == dynamic_cast<void*>(suby))));
3187 ac_cv_cpp_dynamic_cast_void_ptr=yes,
3188 ac_cv_cpp_dynamic_cast_void_ptr=no,
3189 ac_cv_cpp_dynamic_cast_void_ptr=no)])
3190 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3191 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3194 dnl note that this one is reversed - if the test fails, then
3195 dnl we require implementations of unused virtual methods. Which
3196 dnl really blows because it means we'll have useless vtable
3198 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3199 ac_cv_cpp_unused_required,
3200 [AC_TRY_LINK(class X {private: virtual void never_called();};,
3202 ac_cv_cpp_unused_required=no,
3203 ac_cv_cpp_unused_required=yes)])
3204 if test "$ac_cv_cpp_unused_required" = yes ; then
3205 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3209 dnl Some compilers have trouble comparing a constant reference to a templatized
3210 dnl class to zero, and require an explicit operator==() to be defined that takes
3211 dnl an int. This test separates the strong from the weak.
3213 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3214 ac_cv_trouble_comparing_to_zero,
3215 [AC_TRY_COMPILE([#include <algorithm>
3216 template <class T> class Foo {};
3218 template <class T> int operator==(const T2*, const T&) { return 0; }
3219 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3220 [Foo<int> f; return (0 != f);],
3221 ac_cv_trouble_comparing_to_zero=no,
3222 ac_cv_trouble_comparing_to_zero=yes)])
3223 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3224 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3227 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
3228 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
3229 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
3231 _SAVE_LDFLAGS=$LDFLAGS
3232 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
3233 AC_CACHE_CHECK(for __thread keyword for TLS variables,
3234 ac_cv_thread_keyword,
3235 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
3236 [return tlsIsMainThread;],
3237 ac_cv_thread_keyword=yes,
3238 ac_cv_thread_keyword=no)])
3239 LDFLAGS=$_SAVE_LDFLAGS
3240 # The custom dynamic linker doesn't support TLS variables
3242 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
3243 # mips builds fail with TLS variables because of a binutils bug.
3245 # OpenBSD doesn't have TLS support, and the test succeeds with clang++
3250 *-android*|*-linuxandroid*)
3257 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
3263 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
3264 if test -n "$MOZ_LINKER"; then
3265 if test "$CPU_ARCH" = arm; then
3266 dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
3267 if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
3268 LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
3269 _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
3274 dnl The custom linker doesn't support text relocations, but NDK >= r6b
3275 dnl creates some (http://code.google.com/p/android/issues/detail?id=23203)
3276 dnl We however want to avoid these text relocations, and this can be done
3277 dnl by making gcc not link crtbegin and crtend. In the broken NDKs, crtend
3278 dnl doesn't contain anything at all, beside placeholders for some sections,
3279 dnl and crtbegin only contains a finalizer function that calls
3280 dnl __cxa_finalize. The custom linker actually takes care of calling
3281 dnl __cxa_finalize when the library doesn't call it itself, which makes it
3282 dnl safe not to link crtbegin. Besides, previous versions of the NDK didn't
3283 dnl link crtbegin and crtend at all.
3284 if test -n "$MOZ_LINKER" -a "$OS_TARGET" = "Android"; then
3285 AC_CACHE_CHECK([whether the CRT objects have text relocations],
3286 ac_cv_crt_has_text_relocations,
3287 [echo 'int foo() { return 0; }' > conftest.cpp
3288 if AC_TRY_COMMAND(${CXX-g++} -o conftest${DLL_SUFFIX} $CXXFLAGS $DSO_LDOPTS $LDFLAGS conftest.cpp $LIBS 1>&5) &&
3289 test -s conftest${DLL_SUFFIX}; then
3290 if ${TOOLCHAIN_PREFIX}readelf -d conftest${DLL_SUFFIX} | grep TEXTREL > /dev/null; then
3291 ac_cv_crt_has_text_relocations=yes
3293 ac_cv_crt_has_text_relocations=no
3296 AC_ERROR([couldn't compile a simple C file])
3299 if test "$ac_cv_crt_has_text_relocations" = yes; then
3300 dnl While we want libraries to skip the CRT files, we don't want
3301 dnl executables to be treated the same way. We thus set the flag
3302 dnl in DSO_LDOPTS and not LDFLAGS. However, to pass it to nspr,
3303 dnl we need to use LDFLAGS because nspr doesn't inherit DSO_LDOPTS.
3304 dnl Using LDFLAGS in nspr is safe, since we only really build
3305 dnl libraries there.
3306 DSO_LDOPTS="$DSO_LDOPTS -nostartfiles"
3307 NSPR_LDFLAGS="$NSPR_LDFLAGS -nostartfiles"
3311 dnl Check for the existence of various allocation headers/functions
3313 MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h"
3316 for file in $MALLOC_HEADERS; do
3317 MOZ_CHECK_HEADER($file, [MALLOC_H=$file])
3318 if test "$MALLOC_H" != ""; then
3319 AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
3324 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
3326 AC_CHECK_FUNCS(malloc_usable_size)
3328 dnl See if compiler supports some gcc-style attributes
3330 AC_CACHE_CHECK(for __attribute__((always_inline)),
3331 ac_cv_attribute_always_inline,
3332 [AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));],
3334 ac_cv_attribute_always_inline=yes,
3335 ac_cv_attribute_always_inline=no)])
3337 AC_CACHE_CHECK(for __attribute__((malloc)),
3338 ac_cv_attribute_malloc,
3339 [AC_TRY_COMPILE([void* f(int) __attribute__((malloc));],
3341 ac_cv_attribute_malloc=yes,
3342 ac_cv_attribute_malloc=no)])
3344 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
3345 ac_cv_attribute_warn_unused,
3346 [AC_TRY_COMPILE([int f(void) __attribute__((warn_unused_result));],
3348 ac_cv_attribute_warn_unused=yes,
3349 ac_cv_attribute_warn_unused=no)])
3351 dnl End of C++ language/feature checks
3354 dnl ========================================================
3355 dnl = Internationalization checks
3356 dnl ========================================================
3358 dnl Internationalization and Locale support is different
3359 dnl on various UNIX platforms. Checks for specific i18n
3360 dnl features go here.
3362 dnl check for LC_MESSAGES
3363 AC_CACHE_CHECK(for LC_MESSAGES,
3364 ac_cv_i18n_lc_messages,
3365 [AC_TRY_COMPILE([#include <locale.h>],
3366 [int category = LC_MESSAGES;],
3367 ac_cv_i18n_lc_messages=yes,
3368 ac_cv_i18n_lc_messages=no)])
3369 if test "$ac_cv_i18n_lc_messages" = yes; then
3370 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3373 AC_HAVE_FUNCS(localeconv)
3374 fi # ! SKIP_COMPILER_CHECKS
3377 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3378 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3381 dnl Mozilla specific options
3382 dnl ========================================================
3383 dnl The macros used for command line options
3384 dnl are defined in build/autoconf/altoptions.m4.
3386 dnl If the compiler supports these attributes, define them as
3387 dnl convenience macros.
3388 if test "$ac_cv_attribute_malloc" = yes ; then
3389 AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
3391 AC_DEFINE(NS_ATTR_MALLOC,)
3394 if test "$ac_cv_attribute_warn_unused" = yes ; then
3395 AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
3397 AC_DEFINE(NS_WARN_UNUSED_RESULT,)
3400 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
3401 dnl features that Windows actually does support.
3403 if test -n "$SKIP_COMPILER_CHECKS"; then
3404 dnl Windows has malloc.h
3405 AC_DEFINE(MALLOC_H, [<malloc.h>])
3406 AC_DEFINE(HAVE_FORCEINLINE)
3407 AC_DEFINE(HAVE_LOCALECONV)
3408 fi # SKIP_COMPILER_CHECKS
3410 dnl ========================================================
3412 dnl = Check for external package dependencies
3414 dnl ========================================================
3415 MOZ_ARG_HEADER(External Packages)
3417 MOZ_ARG_WITH_STRING(libxul-sdk,
3418 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
3419 LIBXUL_SDK_DIR=$withval)
3421 if test "$LIBXUL_SDK_DIR" = "yes"; then
3422 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
3423 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
3424 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
3426 if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
3427 AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
3431 AC_SUBST(LIBXUL_SDK)
3433 if test -n "$LIBXUL_SDK"; then
3434 LIBXUL_DIST="$LIBXUL_SDK"
3436 LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
3438 AC_SUBST(LIBXUL_DIST)
3442 MOZ_ARG_WITH_BOOL(system-libxul,
3443 [ --with-system-libxul Use system installed libxul SDK],
3446 dnl ========================================================
3447 dnl = If NSPR was not detected in the system,
3448 dnl = use the one in the source tree (mozilla/nsprpub)
3449 dnl ========================================================
3450 MOZ_ARG_WITH_BOOL(system-nspr,
3451 [ --with-system-nspr Use system installed NSPR],
3452 _USE_SYSTEM_NSPR=1 )
3454 if test -n "$_USE_SYSTEM_NSPR"; then
3455 AM_PATH_NSPR(4.10.6, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([your don't have NSPR installed or your version is too old])])
3458 if test -n "$MOZ_NATIVE_NSPR"; then
3459 _SAVE_CFLAGS=$CFLAGS
3460 CFLAGS="$CFLAGS $NSPR_CFLAGS"
3461 AC_TRY_COMPILE([#include "prtypes.h"],
3462 [#ifndef PR_STATIC_ASSERT
3463 #error PR_STATIC_ASSERT not defined or requires including prtypes.h
3465 [MOZ_NATIVE_NSPR=1],
3466 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
3467 AC_TRY_COMPILE([#include "prtypes.h"],
3469 #error PR_UINT64 not defined or requires including prtypes.h
3471 [MOZ_NATIVE_NSPR=1],
3472 AC_MSG_ERROR([system NSPR does not support PR_UINT64 or including prtypes.h does not provide it]))
3473 CFLAGS=$_SAVE_CFLAGS
3475 if test -z "$LIBXUL_SDK"; then
3476 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
3477 if test -n "$GNU_CC"; then
3478 NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
3480 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
3483 NSPR_CFLAGS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --includedir="${LIBXUL_DIST}/include/nspr" --cflags`
3484 NSPR_LIBS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --libdir="${LIBXUL_DIST}"/lib --libs`
3488 dnl set GRE_MILESTONE
3489 dnl ========================================================
3490 if test -n "$LIBXUL_SDK"; then
3491 GRE_MILESTONE=`$PYTHON "$_topsrcdir"/config/printconfigsetting.py "$LIBXUL_DIST"/bin/platform.ini Build Milestone`
3493 GRE_MILESTONE=`tail -n 1 "$_topsrcdir"/config/milestone.txt 2>/dev/null || tail -1 "$_topsrcdir"/config/milestone.txt`
3495 AC_SUBST(GRE_MILESTONE)
3497 # set RELEASE_BUILD and NIGHTLY_BUILD variables depending on the cycle we're in
3498 # The logic works like this:
3499 # - if we have "a1" in GRE_MILESTONE, we're building Nightly (define NIGHTLY_BUILD)
3500 # - otherwise, if we have "a" in GRE_MILESTONE, we're building Nightly or Aurora
3501 # - otherwise, we're building Release/Beta (define RELEASE_BUILD)
3502 case "$GRE_MILESTONE" in
3505 AC_DEFINE(NIGHTLY_BUILD)
3511 AC_DEFINE(RELEASE_BUILD)
3514 AC_SUBST(NIGHTLY_BUILD)
3515 AC_SUBST(RELEASE_BUILD)
3517 dnl ========================================================
3518 dnl Disable compiling sources in unified mode.
3519 dnl ========================================================
3521 if test -z "$NIGHTLY_BUILD"; then
3522 MOZ_DISABLE_UNIFIED_COMPILATION=1
3525 MOZ_ARG_DISABLE_BOOL(unified-compilation,
3526 [ --disable-unified-compilation
3527 Disable unified compilation of some C/C++ sources],
3528 MOZ_DISABLE_UNIFIED_COMPILATION=1,
3529 MOZ_DISABLE_UNIFIED_COMPILATION=)
3530 AC_SUBST(MOZ_DISABLE_UNIFIED_COMPILATION)
3532 dnl ========================================================
3533 dnl Multiprocess Firefox Nightly Testing UI
3534 dnl To be removed in Bug 1003313
3535 dnl ========================================================
3536 if test -z "$NIGHTLY_BUILD"; then
3540 AC_SUBST(E10S_TESTING_ONLY)
3542 dnl ========================================================
3543 dnl system libevent Support
3544 dnl ========================================================
3545 MOZ_ARG_WITH_STRING(system-libevent,
3546 [ --with-system-libevent[=PFX]
3547 Use system libevent [installed at prefix PFX]],
3548 LIBEVENT_DIR=$withval)
3550 _SAVE_CFLAGS=$CFLAGS
3551 _SAVE_LDFLAGS=$LDFLAGS
3553 if test "$LIBEVENT_DIR" = yes; then
3554 PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
3555 MOZ_NATIVE_LIBEVENT=1,
3558 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
3559 MOZ_NATIVE_LIBEVENT=
3560 elif test -z "$MOZ_NATIVE_LIBEVENT"; then
3561 CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
3562 LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
3563 MOZ_CHECK_HEADER(event.h,
3564 [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
3565 AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
3567 AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
3568 AC_CHECK_LIB(event, event_init,
3569 [MOZ_NATIVE_LIBEVENT=1
3570 MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
3571 MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
3572 [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
3574 CFLAGS=$_SAVE_CFLAGS
3575 LDFLAGS=$_SAVE_LDFLAGS
3578 AC_SUBST(MOZ_NATIVE_LIBEVENT)
3579 AC_SUBST(MOZ_LIBEVENT_CFLAGS)
3580 AC_SUBST(MOZ_LIBEVENT_LIBS)
3582 dnl ========================================================
3583 dnl = If NSS was not detected in the system,
3584 dnl = use the one in the source tree (mozilla/security/nss)
3585 dnl ========================================================
3587 MOZ_ARG_WITH_BOOL(system-nss,
3588 [ --with-system-nss Use system installed NSS],
3591 if test -n "$_USE_SYSTEM_NSS"; then
3592 AM_PATH_NSS(3.16.2, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
3595 if test -n "$MOZ_NATIVE_NSS"; then
3596 NSS_LIBS="$NSS_LIBS -lcrmf"
3598 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
3600 if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT"; then
3602 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
3603 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
3604 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
3605 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
3606 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
3608 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
3612 dnl ======================
3614 dnl ======================
3616 AC_MSG_CHECKING([for YASM assembler])
3617 AC_CHECK_PROGS(YASM, yasm, "")
3619 if test -n "$YASM"; then
3620 dnl Pull out yasm's version string
3621 YASM_VERSION=`yasm --version | $AWK '/^yasm/ { print $2 }'`
3622 _YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'`
3623 _YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'`
3624 _YASM_RELEASE=` echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'`
3625 _YASM_BUILD=` echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
3628 if test -z "$SKIP_LIBRARY_CHECKS"; then
3629 dnl system JPEG support
3630 dnl ========================================================
3631 MOZ_ARG_WITH_STRING(system-jpeg,
3632 [ --with-system-jpeg[=PFX]
3633 Use system libjpeg [installed at prefix PFX]],
3636 _SAVE_CFLAGS=$CFLAGS
3637 _SAVE_LDFLAGS=$LDFLAGS
3639 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
3640 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
3641 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
3643 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
3646 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [MOZ_NATIVE_JPEG=1 MOZ_JPEG_LIBS="-ljpeg"], MOZ_NATIVE_JPEG=)
3649 if test "$MOZ_NATIVE_JPEG" = 1; then
3650 AC_TRY_COMPILE([ #include <stdio.h>
3651 #include <sys/types.h>
3652 #include <jpeglib.h> ],
3653 [ #if JPEG_LIB_VERSION < $MOZJPEG
3654 #error "Insufficient JPEG library version ($MOZJPEG required)."
3656 #ifndef JCS_EXTENSIONS
3657 #error "libjpeg-turbo JCS_EXTENSIONS required"
3661 AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg]))
3663 CFLAGS=$_SAVE_CFLAGS
3664 LDFLAGS=$_SAVE_LDFLAGS
3667 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$MOZ_NATIVE_JPEG" = 1; then
3668 MOZ_JPEG_CFLAGS="-I${JPEG_DIR}/include"
3669 MOZ_JPEG_LIBS="-L${JPEG_DIR}/lib ${MOZ_JPEG_LIBS}"
3671 fi # SKIP_LIBRARY_CHECKS
3673 dnl system ZLIB support
3674 dnl ========================================================
3675 MOZ_ZLIB_CHECK([1.2.3])
3677 if test "$MOZ_NATIVE_ZLIB" != 1; then
3678 MOZ_ZLIB_CFLAGS="-I${_topsrcdir}/modules/zlib/src"
3679 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,'"$MOZ_BUILD_ROOT"'/modules/zlib/src)'
3682 if test "$MOZ_LINKER" = 1 -a "$MOZ_NATIVE_ZLIB" != 1; then
3683 AC_MSG_ERROR([Custom dynamic linker requires --with-system-zlib])
3688 if test -z "$SKIP_LIBRARY_CHECKS"; then
3689 dnl system BZIP2 Support
3690 dnl ========================================================
3691 MOZ_ARG_WITH_STRING(system-bz2,
3692 [ --with-system-bz2[=PFX]
3693 Use system libbz2 [installed at prefix PFX]],
3696 _SAVE_CFLAGS=$CFLAGS
3697 _SAVE_LDFLAGS=$LDFLAGS
3699 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
3700 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
3701 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
3703 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
3706 AC_CHECK_LIB(bz2, BZ2_bzread, [MOZ_NATIVE_BZ2=1 MOZ_BZ2_LIBS="-lbz2"],
3707 [MOZ_NATIVE_BZ2= MOZ_BZ2_CFLAGS= MOZ_BZ2_LIBS=])
3709 CFLAGS=$_SAVE_CFLAGS
3710 LDFLAGS=$_SAVE_LDFLAGS
3713 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$MOZ_NATIVE_BZ2" = 1; then
3714 MOZ_BZ2_CFLAGS="-I${BZ2_DIR}/include"
3715 MOZ_BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
3718 dnl ========================================================
3719 dnl system PNG Support
3720 dnl ========================================================
3721 MOZ_ARG_WITH_STRING(system-png,
3722 [ --with-system-png[=PFX]
3723 Use system libpng [installed at prefix PFX]],
3726 _SAVE_CFLAGS=$CFLAGS
3727 _SAVE_LDFLAGS=$LDFLAGS
3729 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
3730 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
3731 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
3733 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
3736 AC_CHECK_LIB(png, png_get_valid, [MOZ_NATIVE_PNG=1 MOZ_PNG_LIBS="-lpng"],
3737 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
3738 AC_CHECK_LIB(png, png_get_acTL, ,
3739 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
3741 if test "$MOZ_NATIVE_PNG" = 1; then
3742 AC_TRY_COMPILE([ #include <stdio.h>
3743 #include <sys/types.h>
3745 [ #if PNG_LIBPNG_VER < $MOZPNG
3746 #error "Insufficient libpng version ($MOZPNG required)."
3748 #ifndef PNG_UINT_31_MAX
3749 #error "Insufficient libpng version."
3752 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
3754 CFLAGS=$_SAVE_CFLAGS
3755 LDFLAGS=$_SAVE_LDFLAGS
3758 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_NATIVE_PNG" = 1; then
3759 MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
3760 MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
3763 MOZ_PNG_ARM_NEON_CHECK=
3764 if test "$MOZ_NATIVE_PNG" != 1 -a "$CPU_ARCH" = "arm" ; then
3765 MOZ_ARG_ENABLE_STRING(png-arm-neon-support,
3766 [ --enable-png-arm-neon-support=TYPE
3770 nocheck (faster but unsafe)],
3771 [MOZ_PNG_ARM_NEON_SUPPORT=$enableval ] )
3772 case "$MOZ_PNG_ARM_NEON_SUPPORT" in
3774 # enable-png-arm-neon-support = no
3777 # enable-png-arm-neon-support = nocheck
3782 MOZ_PNG_ARM_NEON_CHECK=1
3787 AC_SUBST(MOZ_PNG_ARM_NEON_CHECK)
3789 fi # SKIP_LIBRARY_CHECKS
3791 AC_SUBST(MOZ_PNG_ARM_NEON)
3793 dnl ========================================================
3794 dnl system HunSpell Support
3795 dnl ========================================================
3796 MOZ_ARG_ENABLE_BOOL(system-hunspell,
3797 [ --enable-system-hunspell
3798 Use system hunspell (located with pkgconfig)],
3799 MOZ_NATIVE_HUNSPELL=1 )
3801 if test -n "$MOZ_NATIVE_HUNSPELL"; then
3802 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
3805 AC_SUBST(MOZ_NATIVE_HUNSPELL)
3807 dnl ========================================================
3808 dnl system libffi Support
3809 dnl ========================================================
3812 if test -n "$MOZ_NATIVE_FFI"; then
3813 MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_FFI_LIBS"
3816 # split JS out by default to avoid VS2005 PGO crash (bug 591836).
3817 if test "$OS_ARCH" = "WINNT"; then
3821 MOZ_ARG_ENABLE_BOOL(shared-js,
3822 [ --enable-shared-js
3823 Create a shared JavaScript library.],
3824 JS_SHARED_LIBRARY=1,
3827 dnl ========================================================
3828 dnl Java SDK support
3829 dnl ========================================================
3832 MOZ_ARG_WITH_STRING(java-bin-path,
3833 [ --with-java-bin-path=dir
3834 Location of Java binaries (java, javac, jar)],
3835 JAVA_BIN_PATH=$withval)
3837 dnl ========================================================
3841 dnl ========================================================
3843 MOZ_ARG_HEADER(Application)
3846 ENABLE_SYSTEM_EXTENSION_DIRS=1
3847 MOZ_BRANDING_DIRECTORY=
3848 MOZ_OFFICIAL_BRANDING=
3852 MOZ_AUTH_EXTENSION=1
3857 MOZ_SAMPLE_TYPE_FLOAT32=
3858 MOZ_SAMPLE_TYPE_S16=
3869 MOZ_WEBRTC_SIGNALING=
3870 MOZ_WEBRTC_ASSERT_ALWAYS=1
3873 MOZ_MEDIA_NAVIGATOR=
3876 MOZ_VPX_ERROR_CONCEALMENT=
3886 LIBJPEG_TURBO_ASFLAGS=
3887 LIBJPEG_TURBO_X86_ASM=
3888 LIBJPEG_TURBO_X64_ASM=
3889 LIBJPEG_TURBO_ARM_ASM=
3890 MOZ_LOOP=$NIGHTLY_BUILD
3894 MOZ_PREF_EXTENSIONS=1
3895 MOZ_PROFILELOCKING=1
3901 MOZ_TOOLKIT_SEARCH=1
3903 MOZ_UNIVERSALCHARDET=1
3909 MOZ_DISABLE_CRYPTOLEGACY=
3912 NECKO_PROTOCOLS_DEFAULT="about app data file ftp http res viewsource websocket wyciwyg device"
3913 if test -n "$MOZ_RTSP"; then
3914 NECKO_PROTOCOLS_DEFAULT="$NECKO_PROTOCOLS_DEFAULT rtsp"
3918 MOZ_USE_NATIVE_POPUP_WINDOWS=
3919 MOZ_ANDROID_HISTORY=
3922 MOZ_ANDROID_SYNTHAPKS=
3923 MOZ_LOCALE_SWITCHER=
3927 MOZ_AUDIO_CHANNEL_MANAGER=
3929 MOZ_CONTENT_SANDBOX=
3930 MOZ_CONTENT_SANDBOX_REPORTER=1
3931 JSGC_USE_EXACT_ROOTING=
3934 case "$target_os" in
3937 AC_DEFINE(NS_ENABLE_TSF)
3942 *-android*|*-linuxandroid*)
3943 if test "$CPU_ARCH" = "arm" ; then
3948 MOZ_THEME_FASTSTRIPE=1
3956 MOZ_ARG_WITH_STRING(external-source-dir,
3957 [ --with-external-source-dir=dir
3958 External directory containing additional build files.],
3959 [ EXTERNAL_SOURCE_DIR=$withval])
3960 AC_SUBST(EXTERNAL_SOURCE_DIR)
3962 MOZ_ARG_ENABLE_STRING(application,
3963 [ --enable-application=APP
3967 tools/update-packaging (AUS-related packaging tools)],
3968 [ MOZ_BUILD_APP=$enableval ] )
3970 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
3971 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
3972 XULRUNNER_STUB_NAME=$withval)
3974 if test -z "$XULRUNNER_STUB_NAME"; then
3975 case "$target_os" in
3977 XULRUNNER_STUB_NAME=xulrunner
3980 XULRUNNER_STUB_NAME=xulrunner-stub
3983 AC_SUBST(XULRUNNER_STUB_NAME)
3985 AC_MSG_CHECKING([for application to build])
3986 if test -z "$MOZ_BUILD_APP"; then
3987 AC_MSG_RESULT([browser])
3988 MOZ_BUILD_APP=browser
3990 # "mobile" no longer exists.
3991 if test "$MOZ_BUILD_APP" = "mobile" ; then
3992 AC_MSG_RESULT([none])
3993 AC_MSG_ERROR([--enable-application=mobile is no longer supported.])
3995 # We have a valid application only if it has a build.mk file in its top
3997 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
3998 AC_MSG_RESULT([none])
3999 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4001 AC_MSG_RESULT([$MOZ_BUILD_APP])
4005 # The app update channel is 'default' when not supplied. The value is used in
4006 # the application's confvars.sh so it must be set before confvars.sh is called.
4007 MOZ_ARG_ENABLE_STRING([update-channel],
4008 [ --enable-update-channel=CHANNEL
4009 Select application update channel (default=default)],
4010 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
4012 if test -z "$MOZ_UPDATE_CHANNEL"; then
4013 MOZ_UPDATE_CHANNEL=default
4015 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
4016 AC_SUBST(MOZ_UPDATE_CHANNEL)
4018 # Allow to specify a Mozilla API key file that contains the secret key to be
4019 # used for various Mozilla API requests.
4020 MOZ_ARG_WITH_STRING(mozilla-api-keyfile,
4021 [ --with-mozilla-api-keyfile=file Use the secret key contained in the given keyfile for Mozilla API requests],
4022 MOZ_MOZILLA_API_KEY=`cat $withval`)
4023 if test -z "$MOZ_MOZILLA_API_KEY"; then
4024 MOZ_MOZILLA_API_KEY=no-mozilla-api-key
4026 AC_SUBST(MOZ_MOZILLA_API_KEY)
4028 # Allow to specify a Google API key file that contains the secret key to be
4029 # used for various Google API requests.
4030 MOZ_ARG_WITH_STRING(google-api-keyfile,
4031 [ --with-google-api-keyfile=file Use the secret key contained in the given keyfile for Google API requests],
4032 MOZ_GOOGLE_API_KEY=`cat $withval`)
4033 if test -z "$MOZ_GOOGLE_API_KEY"; then
4034 MOZ_GOOGLE_API_KEY=no-google-api-key
4036 AC_SUBST(MOZ_GOOGLE_API_KEY)
4038 # Allow specifying a Bing API key file that contains the client ID and the
4039 # secret key to be used for the Bing Translation API requests.
4040 MOZ_ARG_WITH_STRING(bing-api-keyfile,
4041 [ --with-bing-api-keyfile=file Use the client id and secret key contained in the given keyfile for Bing API requests],
4042 [MOZ_BING_API_CLIENTID=`cat $withval | cut -f 1 -d " "`
4043 MOZ_BING_API_KEY=`cat $withval | cut -f 2 -d " "`])
4044 if test -z "$MOZ_BING_API_CLIENTID"; then
4045 MOZ_BING_API_CLIENTID=no-bing-api-clientid
4046 MOZ_BING_API_KEY=no-bing-api-key
4048 AC_SUBST(MOZ_BING_API_CLIENTID)
4049 AC_SUBST(MOZ_BING_API_KEY)
4051 # Allow the application to influence configure with a confvars.sh script.
4052 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4053 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4054 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4055 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4060 # Allow influencing configure with a defines.sh script.
4061 . "${srcdir}/build/defines.sh"
4063 # If we're not building a release build, define EARLY_BETA_OR_EARLIER if it is
4065 if test "$BUILDING_RELEASE"; then
4066 # Override value in defines.sh, if any
4067 EARLY_BETA_OR_EARLIER=
4068 elif test "$EARLY_BETA_OR_EARLIER"; then
4069 AC_DEFINE(EARLY_BETA_OR_EARLIER)
4071 AC_SUBST(EARLY_BETA_OR_EARLIER)
4073 # Allow the application to provide a subconfigure script
4074 if test -f "${srcdir}/${MOZ_BUILD_APP}/configure.in" ; then
4075 do_output_subdirs() {
4076 if test -n "$_subconfigure_subdirs"; then
4077 AC_MSG_ERROR([Cannot specify more than one sub-sub-configure])
4079 _subconfigure_subdir="$1"
4080 _subconfigure_config_args="$ac_configure_args"
4082 tmpscript=`$PYTHON -c 'import os, tempfile; print tempfile.mktemp(prefix="subscript.").replace(os.sep, "/")'` || exit 1
4083 m4 "${srcdir}/build/autoconf/subconfigure.m4" \
4084 "${srcdir}/build/autoconf/altoptions.m4" \
4085 "${srcdir}/${MOZ_BUILD_APP}/configure.in" > $tmpscript
4090 # Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig
4091 MOZ_ARG_WITH_STRING(app-name,
4092 [--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME],
4093 WITH_APP_NAME=$withval,
4096 if test -n "$WITH_APP_NAME" ; then
4097 MOZ_APP_NAME="$WITH_APP_NAME"
4100 MOZ_ARG_WITH_STRING(app-basename,
4101 [--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME],
4102 WITH_APP_BASENAME=$withval,
4105 if test -n "$WITH_APP_BASENAME" ; then
4106 MOZ_APP_BASENAME="$WITH_APP_BASENAME"
4109 # Now is a good time to test for logic errors, define mismatches, etc.
4110 case "$MOZ_BUILD_APP" in
4112 if test "$LIBXUL_SDK"; then
4113 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4118 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4119 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4121 case "$MOZ_BUILD_APP" in
4123 AC_DEFINE(MOZ_PHOENIX)
4127 AC_DEFINE(MOZ_XULRUNNER)
4134 AC_DEFINE(MOZ_MULET)
4138 AC_SUBST(MOZ_BUILD_APP)
4139 AC_SUBST(MOZ_PHOENIX)
4140 AC_SUBST(MOZ_XULRUNNER)
4143 AC_SUBST(MOZ_B2G_VERSION)
4145 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4147 dnl ========================================================
4148 dnl Check android sdk version depending on mobile target
4149 dnl ========================================================
4151 if test -z "$gonkdir" ; then
4152 # Minimum Android SDK API Level we require.
4153 case "$MOZ_BUILD_APP" in
4155 android_min_api_level=16
4157 *-android*|*-linuxandroid*)
4161 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])
4167 MOZ_ANDROID_SDK($android_min_api_level)
4170 dnl ========================================================
4172 dnl = Toolkit Options
4174 dnl ========================================================
4175 MOZ_ARG_HEADER(Toolkit Options)
4177 dnl ========================================================
4178 dnl = Select the default toolkit
4179 dnl ========================================================
4180 MOZ_ARG_ENABLE_STRING(default-toolkit,
4181 [ --enable-default-toolkit=TK
4182 Select default toolkit
4183 Platform specific defaults:
4184 Mac OS X - cairo-cocoa
4185 Win32 - cairo-windows
4189 [ _DEFAULT_TOOLKIT=$enableval ],
4190 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4192 if test "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4193 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4194 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4195 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk3" \
4196 -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4197 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
4198 -o "$_DEFAULT_TOOLKIT" = "cairo-uikit" \
4199 -o "$_DEFAULT_TOOLKIT" = "cairo-android" \
4200 -o "$_DEFAULT_TOOLKIT" = "cairo-gonk"
4202 dnl nglayout only supports building with one toolkit,
4203 dnl so ignore everything after the first comma (",").
4204 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4206 AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4209 MOZ_ARG_WITHOUT_BOOL(x,
4210 [ --without-x Build without X11],
4213 dnl ========================================================
4214 dnl = Enable the toolkit as needed =
4215 dnl ========================================================
4219 case "$MOZ_WIDGET_TOOLKIT" in
4222 MOZ_WIDGET_TOOLKIT=windows
4225 MOZ_INSTRUMENT_EVENT_LOOP=1
4226 if test -n "$GNU_CC"; then
4232 MOZ_WIDGET_TOOLKIT=gtk3
4235 MOZ_ENABLE_XREMOTE=1
4237 MOZ_GL_DEFAULT_PROVIDER=GLX
4243 TK_CFLAGS='$(MOZ_GTK3_CFLAGS)'
4244 TK_LIBS='$(MOZ_GTK3_LIBS)'
4246 AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK)
4248 MOZ_INSTRUMENT_EVENT_LOOP=1
4251 cairo-gtk2|cairo-gtk2-x11)
4252 MOZ_WIDGET_TOOLKIT=gtk2
4255 MOZ_ENABLE_XREMOTE=1
4257 MOZ_GL_DEFAULT_PROVIDER=GLX
4263 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4264 TK_LIBS='$(MOZ_GTK2_LIBS)'
4265 AC_DEFINE(MOZ_WIDGET_GTK2)
4267 AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK)
4269 MOZ_INSTRUMENT_EVENT_LOOP=1
4273 MOZ_WIDGET_TOOLKIT=qt
4275 if test -z "$WITHOUT_X11"; then
4276 MOZ_ENABLE_XREMOTE=1
4277 MOZ_GL_DEFAULT_PROVIDER=GLX
4285 TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4286 TK_LIBS='$(MOZ_QT_LIBS)'
4287 AC_DEFINE(MOZ_WIDGET_QT)
4289 AC_DEFINE(QT_NO_KEYWORDS)
4293 MOZ_WIDGET_TOOLKIT=cocoa
4294 AC_DEFINE(MOZ_WIDGET_COCOA)
4295 LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
4296 TK_LIBS='-framework CoreLocation -framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
4297 TK_CFLAGS="-DNO_X11"
4298 CFLAGS="$CFLAGS $TK_CFLAGS"
4299 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4300 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/bin/XUL $(call EXPAND_LIBNAME_PATH,mozalloc,$(LIBXUL_DIST)/bin)'
4301 MOZ_USER_DIR="Mozilla"
4302 MOZ_FS_LAYOUT=bundle
4304 MOZ_INSTRUMENT_EVENT_LOOP=1
4308 MOZ_WIDGET_TOOLKIT=uikit
4309 AC_DEFINE(MOZ_WIDGET_UIKIT)
4310 LDFLAGS="$LDFLAGS -framework UIKit -lobjc"
4311 TK_CFLAGS="-DNO_X11"
4312 TK_LIBS='-framework Foundation -framework CoreFoundation -framework CoreGraphics -framework CoreText'
4313 CFLAGS="$CFLAGS $TK_CFLAGS"
4314 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4315 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/bin/XUL $(call EXPAND_LIBNAME_PATH,mozalloc,$(LIBXUL_DIST)/bin)'
4316 MOZ_USER_DIR="Mozilla"
4317 MOZ_FS_LAYOUT=bundle
4321 AC_DEFINE(MOZ_WIDGET_ANDROID)
4322 MOZ_WIDGET_TOOLKIT=android
4323 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4324 TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4327 MOZ_INSTRUMENT_EVENT_LOOP=1
4331 XPCOM_FROZEN_LDOPTS='$(call EXPAND_LIBNAME_PATH,xul mozalloc,$(LIBXUL_DIST)/lib)'
4332 AC_DEFINE(MOZ_WIDGET_GONK)
4333 AC_DEFINE(MOZ_TOUCH)
4334 MOZ_WIDGET_TOOLKIT=gonk
4335 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4336 TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4340 MOZ_INSTRUMENT_EVENT_LOOP=1
4345 AC_SUBST(MOZ_PDF_PRINTING)
4346 if test "$MOZ_PDF_PRINTING"; then
4347 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
4348 AC_DEFINE(MOZ_PDF_PRINTING)
4351 if test "$MOZ_ENABLE_XREMOTE"; then
4352 AC_DEFINE(MOZ_ENABLE_XREMOTE)
4355 if test "$MOZ_INSTRUMENT_EVENT_LOOP"; then
4356 AC_DEFINE(MOZ_INSTRUMENT_EVENT_LOOP)
4359 if test "$COMPILE_ENVIRONMENT"; then
4360 if test "$MOZ_ENABLE_GTK3"; then
4361 PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4363 if test "$MOZ_ENABLE_GTK"; then
4364 if test "$MOZ_X11"; then
4365 GDK_PACKAGES=gdk-x11-2.0
4368 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4371 fi # COMPILE_ENVIRONMENT
4373 AC_SUBST(MOZ_FS_LAYOUT)
4375 dnl ========================================================
4376 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4377 dnl their usage and use them in spidermonkey.
4378 dnl ========================================================
4379 MOZ_ARG_WITH_BOOL(arm-kuser,
4380 [ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4382 if test -n "$USE_ARM_KUSER"; then
4383 AC_DEFINE(USE_ARM_KUSER)
4386 dnl ========================================================
4387 dnl = startup-notification support module
4388 dnl ========================================================
4390 if test "$MOZ_ENABLE_GTK"
4392 MOZ_ENABLE_STARTUP_NOTIFICATION=
4394 MOZ_ARG_ENABLE_BOOL(startup-notification,
4395 [ --enable-startup-notification
4396 Enable startup-notification support (default: disabled) ],
4397 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4398 MOZ_ENABLE_STARTUP_NOTIFICATION=)
4399 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4401 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4402 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4403 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4404 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4406 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4408 MOZ_ENABLE_STARTUP_NOTIFICATION=
4412 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4413 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4416 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4418 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4419 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4420 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4422 dnl ========================================================
4423 dnl Disable printing
4424 dnl ========================================================
4425 MOZ_ARG_DISABLE_BOOL(printing,
4426 [ --disable-printing Disable printing support],
4430 if test "$NS_PRINTING"; then
4431 AC_DEFINE(NS_PRINTING)
4432 AC_DEFINE(NS_PRINT_PREVIEW)
4435 dnl ========================================================
4437 dnl ========================================================
4438 if test "$MOZ_ENABLE_QT"
4440 MOZ_ARG_WITH_STRING(qtdir,
4441 [ --with-qtdir=\$dir Specify Qt directory ],
4444 if test -z "$QTDIR"; then
4445 AC_CHECK_PROGS(HOST_QMAKE, $HOST_QMAKE qmake, "")
4447 HOST_QMAKE="$QTDIR/bin/qmake"
4449 QT_VERSION=`$HOST_QMAKE -v | grep 'Using Qt version' | egrep -o '[[0-9]]+\.[[0-9]]+\.[[0-9]]+'`
4451 if test -z "$QTDIR"; then
4454 AC_MSG_RESULT("Using qt5: $QT_VERSION")
4455 PKG_CHECK_MODULES(MOZ_QT, Qt5Gui Qt5Network Qt5Core Qt5Quick, ,
4457 AC_MSG_ERROR([$MOZ_QT_PKG_ERRORS Need qtbase development packages, (On Ubuntu, you might try installing the packages qtbase5-dev libqt5opengl5-dev.)])
4459 QT5INCDIR=`pkg-config --variable=includedir Qt5Gui`
4460 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QT5INCDIR/QtGui/$QT_VERSION/QtGui"
4461 if test "$NS_PRINTING"; then
4462 PKG_CHECK_MODULES(MOZ_QT_WIDGETS, Qt5PrintSupport, ,
4464 AC_MSG_ERROR([$MOZ_QT_PKG_ERRORS Need qtbase widgets development package])
4466 MOZ_QT_LIBS="$MOZ_QT_LIBS $MOZ_QT_WIDGETS_LIBS"
4467 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $MOZ_QT_WIDGETS_CFLAGS"
4471 AC_MSG_ERROR([* * * Unsupported Qt Version: $QT_VERSION])
4475 AC_CHECK_PROGS(HOST_MOC, $MOC moc, "")
4476 AC_CHECK_PROGS(HOST_RCC, $RCC rcc, "")
4478 MOZ_QT_CFLAGS="-DQT_SHARED"
4479 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
4480 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
4481 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
4482 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
4483 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
4484 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDeclarative"
4487 AC_MSG_RESULT("Using qt5: $QT_VERSION")
4488 MOZ_QT_LIBS="$MOZ_QT_LIBS -L$QTDIR/lib/ -lQt5Gui -lQt5Network -lQt5Core -lQt5Xml"
4489 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui/$QT_VERSION/QtGui"
4490 if test "$NS_PRINTING"; then
4491 MOZ_QT_LIBS="$MOZ_QT_LIBS -lQt5Widgets -lQt5PrintSupport"
4492 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtPrintSupport"
4496 AC_MSG_ERROR([* * * Unsupported Qt Version: $QT_VERSION])
4500 HOST_MOC="$QTDIR/bin/moc"
4501 HOST_RCC="$QTDIR/bin/rcc"
4503 if test -z "$HOST_MOC"; then
4504 AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is incorrect])
4506 if test -z "$HOST_RCC"; then
4507 AC_MSG_ERROR([No acceptable rcc preprocessor found. Qt SDK is not installed or --with-qt is incorrect])
4513 MOZ_ENABLE_QMSYSTEM2=
4514 PKG_CHECK_MODULES(_QMSYSTEM2, qmsystem2,
4515 MOZ_ENABLE_QMSYSTEM2=1,
4516 MOZ_ENABLE_QMSYSTEM2=)
4518 if test "$MOZ_ENABLE_QMSYSTEM2"; then
4519 MOZ_ENABLE_QMSYSTEM2=1
4520 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QMSYSTEM2_CFLAGS"
4521 MOZ_QT_LIBS="$MOZ_QT_LIBS $_QMSYSTEM2_LIBS"
4522 AC_DEFINE(MOZ_ENABLE_QMSYSTEM2)
4525 MOZ_ENABLE_QTNETWORK=
4526 PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7,
4527 MOZ_ENABLE_QTNETWORK=1,
4528 MOZ_ENABLE_QTNETWORK=)
4530 if test "$MOZ_ENABLE_QTNETWORK"; then
4531 MOZ_ENABLE_QTNETWORK=1
4532 AC_DEFINE(MOZ_ENABLE_QTNETWORK)
4535 MOZ_ENABLE_QTMOBILITY=
4536 PKG_CHECK_MODULES(_QTMOBILITY, QtSensors QtFeedback QtLocation,
4537 MOZ_ENABLE_QTMOBILITY=1,
4538 MOZ_ENABLE_QTMOBILITY=)
4539 if test "$MOZ_ENABLE_QTMOBILITY"; then
4540 MOZ_ENABLE_QTMOBILITY=1
4541 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QTMOBILITY_CFLAGS"
4542 MOZ_QT_LIBS="$MOZ_QT_LIBS $_QTMOBILITY_LIBS"
4543 AC_DEFINE(MOZ_ENABLE_QTMOBILITY)
4544 AC_SUBST(MOZ_ENABLE_QTMOBILITY)
4546 AC_CHECK_LIB(QtSensors, main, [
4547 MOZ_ENABLE_QTMOBILITY=1
4548 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtMobility"
4549 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtSensors"
4550 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtFeedback"
4551 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtLocation"
4552 MOZ_QT_LIBS="$MOZ_QT_LIBS -lQtSensors -lQtFeedback -lQtLocation"
4556 MOZ_ENABLE_QT5FEEDBACK=
4557 PKG_CHECK_MODULES(_QT5FEEDBACK, Qt0Feedback,
4558 MOZ_ENABLE_QT5FEEDBACK=1,
4559 MOZ_ENABLE_QT5FEEDBACK=)
4560 if test "$MOZ_ENABLE_QT5FEEDBACK"; then
4561 MOZ_ENABLE_QT5FEEDBACK=1
4562 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QT5FEEDBACK_CFLAGS"
4563 MOZ_QT_LIBS="$MOZ_QT_LIBS $_QT5FEEDBACK_LIBS"
4564 AC_DEFINE(MOZ_ENABLE_QT5FEEDBACK)
4565 AC_SUBST(MOZ_ENABLE_QT5FEEDBACK)
4568 MOZ_ENABLE_QT5GEOPOSITION=
4569 PKG_CHECK_MODULES(_QT5GEOPOSITION, Qt5Positioning,
4570 MOZ_ENABLE_QT5GEOPOSITION=1,
4571 MOZ_ENABLE_QT5GEOPOSITION=)
4572 if test "$MOZ_ENABLE_QT5GEOPOSITION"; then
4573 MOZ_ENABLE_QT5GEOPOSITION=1
4574 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QT5GEOPOSITION_CFLAGS"
4575 MOZ_QT_LIBS="$MOZ_QT_LIBS $_QT5GEOPOSITION_LIBS"
4576 AC_DEFINE(MOZ_ENABLE_QT5GEOPOSITION)
4577 AC_SUBST(MOZ_ENABLE_QT5GEOPOSITION)
4580 if test "$MOZ_ENABLE_CONTENTACTION"; then
4581 MOZ_ENABLE_CONTENTACTION=1
4582 AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
4585 MOZ_ENABLE_CONTENTACTION=
4586 PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=)
4587 if test "$MOZ_ENABLE_CONTENTACTION"; then
4588 MOZ_ENABLE_CONTENTACTION=1
4589 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_CONTENTACTION_CFLAGS"
4590 MOZ_QT_LIBS="$MOZ_QT_LIBS $_CONTENTACTION_LIBS"
4591 AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
4592 AC_SUBST(MOZ_ENABLE_CONTENTACTION)
4596 AC_SUBST(GTK_CONFIG)
4600 AC_SUBST(MOZ_ENABLE_GTK2)
4601 AC_SUBST(MOZ_ENABLE_GTK3)
4602 AC_SUBST(MOZ_ENABLE_GTK)
4603 AC_SUBST(MOZ_ENABLE_QT)
4604 AC_SUBST(MOZ_ENABLE_QTNETWORK)
4605 AC_SUBST(MOZ_ENABLE_QMSYSTEM2)
4606 AC_SUBST(MOZ_ENABLE_QTMOBILITY)
4607 AC_SUBST(MOZ_ENABLE_XREMOTE)
4608 AC_SUBST(MOZ_GTK2_CFLAGS)
4609 AC_SUBST(MOZ_GTK2_LIBS)
4610 AC_SUBST(MOZ_GTK3_CFLAGS)
4611 AC_SUBST(MOZ_GTK3_LIBS)
4612 AC_SUBST(MOZ_WIDGET_GTK)
4613 AC_SUBST(MOZ_QT_CFLAGS)
4614 AC_SUBST(MOZ_QT_LIBS)
4621 dnl ========================================================
4623 dnl = Components & Features
4625 dnl ========================================================
4626 MOZ_ARG_HEADER(Components and Features)
4628 dnl ========================================================
4630 dnl ========================================================
4631 MOZ_ARG_ENABLE_STRING(ui-locale,
4632 [ --enable-ui-locale=ab-CD
4633 Select the user interface locale (default: en-US)],
4634 MOZ_UI_LOCALE=$enableval )
4635 AC_SUBST(MOZ_UI_LOCALE)
4637 dnl ========================================================
4638 dnl = Trademarked Branding
4639 dnl ========================================================
4640 MOZ_ARG_ENABLE_BOOL(official-branding,
4641 [ --enable-official-branding
4642 Enable Official mozilla.org Branding
4643 Do not distribute builds with
4644 --enable-official-branding unless you have
4645 permission to use trademarks per
4646 http://www.mozilla.org/foundation/trademarks/ .],
4648 if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
4649 AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
4651 MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
4652 MOZ_OFFICIAL_BRANDING=1
4654 ], MOZ_OFFICIAL_BRANDING=)
4656 AC_SUBST(MOZ_OFFICIAL_BRANDING)
4657 if test -n "$MOZ_OFFICIAL_BRANDING"; then
4658 AC_DEFINE(MOZ_OFFICIAL_BRANDING)
4661 MOZ_ARG_WITH_STRING(branding,
4662 [ --with-branding=dir Use branding from the specified directory.],
4663 MOZ_BRANDING_DIRECTORY=$withval)
4665 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4666 if test -z "$REAL_BRANDING_DIRECTORY"; then
4667 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4670 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4671 . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
4674 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4676 dnl ========================================================
4677 dnl = Distribution ID
4678 dnl ========================================================
4679 MOZ_ARG_WITH_STRING(distribution-id,
4680 [ --with-distribution-id=ID
4681 Set distribution-specific id (default=org.mozilla)],
4682 [ val=`echo $withval`
4683 MOZ_DISTRIBUTION_ID="$val"])
4685 if test -z "$MOZ_DISTRIBUTION_ID"; then
4686 MOZ_DISTRIBUTION_ID="org.mozilla"
4689 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4690 AC_SUBST(MOZ_DISTRIBUTION_ID)
4693 dnl ========================================================
4695 dnl ========================================================
4696 if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT"
4698 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4700 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION)
4701 AC_SUBST(MOZ_PANGO_CFLAGS)
4702 AC_SUBST(MOZ_PANGO_LIBS)
4705 dnl ========================================================
4706 dnl = GnomeVFS, GIO and GConf support module
4707 dnl ========================================================
4711 dnl build the GIO extension by default only when the
4712 dnl GTK2 toolkit is in use.
4713 if test "$MOZ_ENABLE_GTK"
4719 dnl ========================================================
4720 dnl = GnomeVFS support module
4721 dnl ========================================================
4722 MOZ_ARG_ENABLE_BOOL(gnomevfs,
4723 [ --enable-gnomevfs Enable GnomeVFS support (default: disabled)],
4724 MOZ_ENABLE_GNOMEVFS=force,
4725 MOZ_ENABLE_GNOMEVFS=)
4727 if test "$MOZ_ENABLE_GNOMEVFS"
4729 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
4730 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
4731 MOZ_ENABLE_GNOMEVFS=1
4732 AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
4734 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
4736 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
4738 MOZ_ENABLE_GNOMEVFS=
4742 AC_SUBST(MOZ_ENABLE_GNOMEVFS)
4743 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
4744 AC_SUBST(MOZ_GNOMEVFS_LIBS)
4746 dnl ========================================================
4747 dnl = GIO support module
4748 dnl ========================================================
4749 MOZ_ARG_DISABLE_BOOL(gio,
4750 [ --disable-gio Disable GIO support],
4752 MOZ_ENABLE_GIO=force)
4754 if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK"
4756 if test "$MOZ_ENABLE_GTK2"
4758 PKG_CHECK_MODULES(_GTKCHECK, gtk+-2.0 >= 2.14, ,
4759 [AC_MSG_ERROR([* * * Could not find gtk+-2.0 > 2.14. Required for build with gio.])])
4761 PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
4762 MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
4764 AC_DEFINE(MOZ_ENABLE_GIO)
4766 if test "$MOZ_ENABLE_GIO" = "force"
4768 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
4774 AC_SUBST(MOZ_ENABLE_GIO)
4775 AC_SUBST(MOZ_GIO_CFLAGS)
4776 AC_SUBST(MOZ_GIO_LIBS)
4778 dnl ========================================================
4779 dnl = GConf support module
4780 dnl ========================================================
4781 MOZ_ARG_DISABLE_BOOL(gconf,
4782 [ --disable-gconf Disable Gconf support ],
4784 MOZ_ENABLE_GCONF=force)
4786 if test "$MOZ_ENABLE_GCONF"
4788 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
4789 MOZ_GCONF_LIBS=`$PKG_CONFIG --libs gobject-2.0`
4792 if test "$MOZ_ENABLE_GCONF" = "force"
4794 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
4800 if test "$MOZ_ENABLE_GCONF"; then
4801 AC_DEFINE(MOZ_ENABLE_GCONF)
4804 AC_SUBST(MOZ_ENABLE_GCONF)
4805 AC_SUBST(MOZ_GCONF_CFLAGS)
4806 AC_SUBST(MOZ_GCONF_LIBS)
4809 dnl ========================================================
4810 dnl = libproxy support
4811 dnl ========================================================
4813 if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT"
4815 MOZ_ENABLE_LIBPROXY=
4817 MOZ_ARG_ENABLE_BOOL(libproxy,
4818 [ --enable-libproxy Enable libproxy support ],
4819 MOZ_ENABLE_LIBPROXY=1,
4820 MOZ_ENABLE_LIBPROXY=)
4822 if test "$MOZ_ENABLE_LIBPROXY"
4824 PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
4825 AC_DEFINE(MOZ_ENABLE_LIBPROXY)
4828 AC_SUBST(MOZ_ENABLE_LIBPROXY)
4829 AC_SUBST(MOZ_LIBPROXY_CFLAGS)
4830 AC_SUBST(MOZ_LIBPROXY_LIBS)
4832 dnl ========================================================
4833 dnl = GNOME component (mozgnome)
4834 dnl ========================================================
4836 if test "$MOZ_ENABLE_GTK"
4838 MOZ_ENABLE_GNOME_COMPONENT=1
4840 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
4842 dnl ========================================================
4843 dnl = libgnomeui support module
4844 dnl ========================================================
4846 if test "$MOZ_ENABLE_GTK"
4848 MOZ_ARG_ENABLE_BOOL(gnomeui,
4849 [ --enable-gnomeui Enable libgnomeui instead of GIO & GTK for icon theme support ],
4850 MOZ_ENABLE_GNOMEUI=force,
4851 MOZ_ENABLE_GNOMEUI=)
4853 if test "$MOZ_ENABLE_GNOMEUI"
4855 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
4857 MOZ_ENABLE_GNOMEUI=1
4859 if test "$MOZ_ENABLE_GNOMEUI" = "force"
4861 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
4867 if test "$MOZ_ENABLE_GNOMEUI"; then
4868 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
4872 AC_SUBST(MOZ_ENABLE_GNOMEUI)
4873 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
4875 dnl ========================================================
4877 dnl ========================================================
4879 if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT"
4883 MOZ_ARG_DISABLE_BOOL(dbus,
4884 [ --disable-dbus Disable dbus support ],
4888 if test "$MOZ_ENABLE_DBUS"
4890 PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
4891 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
4892 AC_DEFINE(MOZ_ENABLE_DBUS)
4895 AC_SUBST(MOZ_ENABLE_DBUS)
4896 AC_SUBST(MOZ_DBUS_CFLAGS)
4897 AC_SUBST(MOZ_DBUS_LIBS)
4898 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
4899 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
4901 dnl ========================================================
4902 dnl = Enable Android History instead of Places
4903 dnl ========================================================
4904 if test -n "$MOZ_ANDROID_HISTORY"; then
4905 if test -z "$MOZ_PLACES"; then
4906 AC_DEFINE(MOZ_ANDROID_HISTORY)
4908 AC_MSG_ERROR([Cannot use MOZ_ANDROID_HISTORY alongside MOZ_PLACES.])
4912 dnl ========================================================
4913 dnl = Build with the Android compositor
4914 dnl ========================================================
4915 if test -n "$MOZ_ANDROID_OMTC"; then
4916 dnl Do this if defined in confvars.sh
4917 AC_DEFINE(MOZ_ANDROID_OMTC)
4920 dnl ========================================================
4921 dnl = Disable WebSMS backend
4922 dnl ========================================================
4923 MOZ_ARG_DISABLE_BOOL(websms-backend,
4924 [ --disable-websms-backend
4925 Disable WebSMS backend],
4926 MOZ_WEBSMS_BACKEND=,
4927 MOZ_WEBSMS_BACKEND=1)
4929 if test -n "$MOZ_WEBSMS_BACKEND"; then
4930 AC_DEFINE(MOZ_WEBSMS_BACKEND)
4933 dnl ========================================================
4934 dnl = Enable runtime locale switching on Android
4935 dnl ========================================================
4936 if test -n "$MOZ_LOCALE_SWITCHER"; then
4937 AC_DEFINE(MOZ_LOCALE_SWITCHER)
4940 dnl ========================================================
4941 dnl = Enable NFC permission on Android
4942 dnl ========================================================
4943 if test -n "$MOZ_ANDROID_BEAM"; then
4944 AC_DEFINE(MOZ_ANDROID_BEAM)
4947 dnl ========================================================
4948 dnl = Synthesized Webapp APKs on Android
4949 dnl ========================================================
4950 MOZ_ARG_ENABLE_BOOL(android-synthapks,
4951 [ --enable-android-synthapks Enable synthesized APKs],
4952 MOZ_ANDROID_SYNTHAPKS=1,
4953 MOZ_ANDROID_SYNTHAPKS=)
4955 if test -n "$MOZ_ANDROID_SYNTHAPKS"; then
4956 AC_DEFINE(MOZ_ANDROID_SYNTHAPKS)
4959 dnl ========================================================
4960 dnl = JS Debugger XPCOM component (js/jsd)
4961 dnl ========================================================
4962 MOZ_ARG_DISABLE_BOOL(jsd,
4963 [ --disable-jsd Disable JavaScript debug library],
4968 dnl ========================================================
4969 dnl = Enable IPDL's "expensive" unit tests
4970 dnl ========================================================
4973 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
4974 [ --enable-ipdl-tests Enable expensive IPDL tests],
4978 if test -n "$MOZ_IPDL_TESTS"; then
4979 AC_DEFINE(MOZ_IPDL_TESTS)
4982 AC_SUBST(MOZ_IPDL_TESTS)
4984 dnl ========================================================
4985 dnl = Disable building dbm
4986 dnl ========================================================
4987 MOZ_ARG_DISABLE_BOOL(dbm,
4988 [ --disable-dbm Disable building dbm],
4992 dnl ========================================================
4993 dnl accessibility support on by default on all platforms
4994 dnl ========================================================
4995 MOZ_ARG_DISABLE_BOOL(accessibility,
4996 [ --disable-accessibility Disable accessibility support],
4999 if test "$ACCESSIBILITY"; then
5002 if test -z "$MIDL"; then
5003 if test "$GCC" != "yes"; then
5004 AC_MSG_ERROR([MIDL could not be found. Building accessibility without MIDL is not supported.])
5006 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.])
5010 AC_DEFINE(ACCESSIBILITY)
5013 dnl ========================================================
5014 dnl Accessibility is required for the linuxgl widget
5016 dnl ========================================================
5017 if test "${MOZ_WIDGET_TOOLKIT}" = "linuxgl" -a "$ACCESSIBILITY" != "1"; then
5018 AC_MSG_ERROR(["Accessibility is required for the linuxgl widget backend"])
5021 dnl Turn off webrtc for OS's we don't handle yet, but allow
5022 dnl --enable-webrtc to override. Can disable for everything in
5023 dnl the master list above.
5024 if test -n "$MOZ_WEBRTC"; then
5026 *-linux*|*-mingw*|*-darwin*|*-android*|*-linuxandroid*|*-dragonfly*|*-freebsd*|*-netbsd*|*-openbsd*)
5030 dnl default to disabled for all others
5036 AC_TRY_COMPILE([#include <linux/ethtool.h>],
5037 [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
5038 MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
5040 AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI)
5042 # target_arch is from {ia32|x64|arm|ppc}
5044 x86_64 | arm | x86 | ppc* | ia64)
5048 # unsupported arch for webrtc
5054 dnl ========================================================
5055 dnl = Disable WebRTC code
5056 dnl ========================================================
5057 MOZ_ARG_DISABLE_BOOL(webrtc,
5058 [ --disable-webrtc Disable support for WebRTC],
5062 if test -n "$MOZ_WEBRTC"; then
5063 AC_DEFINE(MOZ_WEBRTC)
5064 dnl MOZ_WEBRTC_ASSERT_ALWAYS turns on a number of safety asserts in
5065 dnl opt/production builds (via MOZ_CRASH())
5066 AC_DEFINE(MOZ_WEBRTC_ASSERT_ALWAYS)
5069 MOZ_VPX_ERROR_CONCEALMENT=1
5071 dnl enable once Signaling lands
5072 MOZ_WEBRTC_SIGNALING=1
5073 AC_DEFINE(MOZ_WEBRTC_SIGNALING)
5074 dnl enable once PeerConnection lands
5075 MOZ_PEERCONNECTION=1
5076 AC_DEFINE(MOZ_PEERCONNECTION)
5085 AC_SUBST(MOZ_WEBRTC)
5086 AC_SUBST(MOZ_WEBRTC_LEAKING_TESTS)
5087 AC_SUBST(MOZ_WEBRTC_SIGNALING)
5088 AC_SUBST(MOZ_PEERCONNECTION)
5089 AC_SUBST(MOZ_WEBRTC_ASSERT_ALWAYS)
5093 dnl Use integers over floats for audio on B2G and Android, because audio
5094 dnl backends for those platforms don't support floats.
5095 if test "$OS_TARGET" = "Android"; then
5096 MOZ_SAMPLE_TYPE_S16=1
5097 AC_DEFINE(MOZ_SAMPLE_TYPE_S16)
5098 AC_SUBST(MOZ_SAMPLE_TYPE_S16)
5100 MOZ_SAMPLE_TYPE_FLOAT32=1
5101 AC_DEFINE(MOZ_SAMPLE_TYPE_FLOAT32)
5102 AC_SUBST(MOZ_SAMPLE_TYPE_FLOAT32)
5105 dnl ========================================================
5106 dnl = Disable Speech API code
5107 dnl ========================================================
5108 MOZ_ARG_DISABLE_BOOL(webspeech,
5109 [ --disable-webspeech Disable support for HTML Speech API],
5113 if test -n "$MOZ_WEBSPEECH"; then
5114 AC_DEFINE(MOZ_WEBSPEECH)
5117 AC_SUBST(MOZ_WEBSPEECH)
5119 dnl ========================================================
5120 dnl = Enable Raw Codecs
5121 dnl ========================================================
5122 MOZ_ARG_ENABLE_BOOL(raw,
5123 [ --enable-raw Enable support for RAW media],
5127 if test -n "$MOZ_RAW"; then
5133 dnl Checks for __attribute__(aligned()) directive need by libogg
5134 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5135 [ac_cv_c_attribute_aligned],
5136 [ac_cv_c_attribute_aligned=0
5137 CFLAGS_save="${CFLAGS}"
5138 CFLAGS="${CFLAGS} -Werror"
5139 for ac_cv_c_attr_align_try in 64 32 16 8; do
5140 echo "trying $ac_cv_c_attr_align_try"
5142 [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
5143 [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
5144 if test "$ac_cv_c_attribute_aligned" != 0; then
5148 CFLAGS="${CFLAGS_save}"])
5149 if test "${ac_cv_c_attribute_aligned}" != "0"; then
5150 AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
5151 [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
5154 dnl ========================================================
5155 dnl = Disable Opus audio codec support
5156 dnl ========================================================
5157 MOZ_ARG_DISABLE_BOOL(opus,
5158 [ --disable-opus Disable support for Opus audio],
5162 dnl ========================================================
5163 dnl = Disable VP8 decoder support
5164 dnl ========================================================
5165 MOZ_ARG_DISABLE_BOOL(webm,
5166 [ --disable-webm Disable support for WebM media (VP8 video and Vorbis audio)],
5170 if test -n "$MOZ_WEBM"; then
5175 dnl ========================================================
5176 dnl = DirectShow support
5177 dnl ========================================================
5178 if test "$OS_ARCH" = "WINNT"; then
5179 dnl Enable DirectShow support by default.
5183 MOZ_ARG_DISABLE_BOOL(directshow,
5184 [ --disable-directshow Disable support for DirectShow],
5188 if test -n "$MOZ_DIRECTSHOW"; then
5189 AC_DEFINE(MOZ_DIRECTSHOW)
5192 dnl ========================================================
5193 dnl = Windows Media Foundation support
5194 dnl ========================================================
5195 if test "$OS_ARCH" = "WINNT"; then
5196 dnl Enable Windows Media Foundation support by default.
5197 dnl Note our minimum SDK version is Windows 7 SDK, so we are (currently)
5198 dnl guaranteed to have a recent-enough SDK to build WMF.
5202 MOZ_ARG_DISABLE_BOOL(wmf,
5203 [ --disable-wmf Disable support for Windows Media Foundation],
5207 if test -n "$MOZ_WMF"; then
5211 dnl ========================================================
5212 dnl FFmpeg H264/AAC Decoding Support
5213 dnl ========================================================
5214 case "$OS_TARGET" in
5215 WINNT|Darwin|Android)
5222 MOZ_ARG_DISABLE_BOOL(ffmpeg,
5223 [ --disable-ffmpeg Disable FFmpeg for fragmented H264/AAC decoding],
5228 if test -n "$MOZ_FFMPEG"; then
5229 AC_DEFINE(MOZ_FFMPEG)
5232 dnl ========================================================
5233 dnl = Built-in fragmented MP4 support.
5234 dnl ========================================================
5235 if test -n "$MOZ_WMF" -o -n "$MOZ_FFMPEG"; then
5236 dnl Enable fragmented MP4 parser on Windows by default.
5237 dnl We will also need to enable it on other platforms as we implement
5238 dnl platform decoder support there too.
5242 MOZ_ARG_DISABLE_BOOL(fmp4,
5243 [ --disable-fmp4 Disable support for in built Fragmented MP4 parsing],
5247 if test -n "$MOZ_FMP4"; then
5252 dnl ========================================================
5253 dnl = Enable media plugin support
5254 dnl ========================================================
5255 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5256 dnl Enable support on android by default
5260 MOZ_ARG_ENABLE_BOOL(media-plugins,
5261 [ --enable-media-plugins Enable support for media plugins],
5262 MOZ_MEDIA_PLUGINS=1,
5265 if test -n "$MOZ_MEDIA_PLUGINS"; then
5266 AC_DEFINE(MOZ_MEDIA_PLUGINS)
5269 dnl ========================================================
5270 dnl = Disable platform MP3 decoder on OSX
5271 dnl ========================================================
5272 if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
5276 MOZ_ARG_DISABLE_BOOL(apple-media,
5277 [ --disable-apple-media Disable support for Apple AudioToolbox/VideoToolbox],
5281 if test -n "$MOZ_APPLEMEDIA"; then
5282 AC_DEFINE(MOZ_APPLEMEDIA)
5285 dnl ========================================================
5286 dnl = Enable getUserMedia support
5287 dnl ========================================================
5288 MOZ_ARG_ENABLE_BOOL(media-navigator,
5289 [ --enable-media-navigator Enable support for getUserMedia],
5290 MOZ_MEDIA_NAVIGATOR=1,
5291 MOZ_MEDIA_NAVIGATOR=)
5293 if test -n "$MOZ_MEDIA_NAVIGATOR"; then
5294 AC_DEFINE(MOZ_MEDIA_NAVIGATOR)
5297 dnl ========================================================
5298 dnl = Enable building OMX media plugin (B2G or Android)
5299 dnl ========================================================
5300 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5301 dnl Enable support on android by default
5305 MOZ_ARG_ENABLE_BOOL(omx-plugin,
5306 [ --enable-omx-plugin Enable building OMX plugin (B2G)],
5310 if test -n "$MOZ_OMX_PLUGIN"; then
5311 if test "$OS_TARGET" = "Android"; then
5312 dnl Only allow building OMX plugin on Gonk (B2G) or Android
5313 AC_DEFINE(MOZ_OMX_PLUGIN)
5315 dnl fail if we're not building on Gonk or Android
5316 AC_MSG_ERROR([OMX media plugin can only be built on B2G or Android])
5320 dnl system libvpx Support
5321 dnl ========================================================
5322 MOZ_ARG_WITH_BOOL(system-libvpx,
5323 [ --with-system-libvpx Use system libvpx (located with pkgconfig)],
5324 MOZ_NATIVE_LIBVPX=1)
5329 if test -n "$MOZ_VPX"; then
5331 if test -n "$MOZ_VPX_ERROR_CONCEALMENT" ; then
5332 AC_DEFINE(MOZ_VPX_ERROR_CONCEALMENT)
5335 _SAVE_CFLAGS=$CFLAGS
5337 if test -n "$MOZ_NATIVE_LIBVPX"; then
5338 dnl ============================
5339 dnl === libvpx Version check ===
5340 dnl ============================
5341 dnl Check to see if we have a system libvpx package.
5342 PKG_CHECK_MODULES(MOZ_LIBVPX, vpx >= 1.3.0)
5344 CFLAGS="$CFLAGS $MOZ_LIBVPX_CFLAGS"
5345 LIBS="$LIBS $MOZ_LIBVPX_LIBS"
5347 MOZ_CHECK_HEADER([vpx/vpx_decoder.h], [],
5348 [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.])])
5350 AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver, [],
5351 [AC_MSG_ERROR([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found])])
5353 MOZ_CHECK_HEADER([vpx_mem/vpx_mem.h],
5354 [AC_CHECK_FUNC(vpx_mem_set_functions)])
5355 if test "$ac_cv_header_vpx_mem_vpx_mem_h" = no -o \
5356 "$ac_cv_func_vpx_mem_set_functions" = no; then
5357 AC_DEFINE(MOZ_VPX_NO_MEM_REPORTING)
5360 CFLAGS=$_SAVE_CFLAGS
5364 AC_SUBST(MOZ_NATIVE_LIBVPX)
5365 AC_SUBST(MOZ_LIBVPX_CFLAGS)
5366 AC_SUBST(MOZ_LIBVPX_LIBS)
5368 if test "$MOZ_WEBM"; then
5369 if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then
5376 if test -n "$MOZ_VPX" -a -z "$MOZ_NATIVE_LIBVPX"; then
5378 dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
5379 dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
5380 dnl We currently require gcc on all arm platforms.
5383 VPX_NEED_OBJ_INT_EXTRACT=
5385 dnl See if we have assembly on this platform.
5386 case "$OS_ARCH:$CPU_ARCH" in
5388 VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC"
5392 VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC"
5396 VPX_ASFLAGS="-f x64 -rnasm -pnasm"
5400 dnl Check for yasm 1.1 or greater.
5401 if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then
5402 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.])
5403 elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
5404 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.])
5406 VPX_ASFLAGS="-f win32 -rnasm -pnasm -DPIC"
5408 dnl The encoder needs obj_int_extract to get asm offsets.
5412 if test -n "$GNU_AS" ; then
5414 dnl These flags are a lie; they're just used to enable the requisite
5415 dnl opcodes; actual arch detection is done at runtime.
5416 VPX_ASFLAGS="-march=armv7-a -mfpu=neon"
5417 VPX_DASH_C_FLAG="-c"
5418 VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl'
5419 VPX_ASM_SUFFIX="$ASM_SUFFIX"
5424 if $CC -E -dM -</dev/null | grep -q __ELF__; then
5425 VPX_ASFLAGS="-f elf32 -rnasm -pnasm -DPIC"
5430 if $CC -E -dM -</dev/null | grep -q __ELF__; then
5431 VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
5437 if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_X86_ASM" -a -z "$VPX_AS"; then
5438 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.])
5441 if test -z "$GNU_CC" -a -z "$INTEL_CC" -a -z "$CLANG_CC" ; then
5442 dnl We prefer to get asm offsets using inline assembler, which the above
5443 dnl compilers can do. When we're not using one of those, we have to fall
5444 dnl back to obj_int_extract, which reads them from a compiled object
5445 dnl file. Unfortunately, that only works if we're compiling on a system
5446 dnl with the header files for the appropriate object file format.
5447 VPX_NEED_OBJ_INT_EXTRACT=1
5450 if test -n "$VPX_X86_ASM"; then
5451 AC_DEFINE(VPX_X86_ASM)
5452 elif test -n "$VPX_ARM_ASM"; then
5453 AC_DEFINE(VPX_ARM_ASM)
5455 AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.])
5459 dnl ========================================================
5460 dnl = Disable Wave decoder support
5461 dnl ========================================================
5462 MOZ_ARG_DISABLE_BOOL(wave,
5463 [ --disable-wave Disable Wave decoder support],
5467 if test -n "$MOZ_WAVE"; then
5471 dnl ========================================================
5472 dnl = Handle dependent MEDIA defines
5473 dnl ========================================================
5475 if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then
5476 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/])
5479 if test -n "$MOZ_WEBRTC" -a -z "$MOZ_OPUS"; then
5480 AC_MSG_ERROR([MOZ_WEBRTC requires MOZ_OPUS which is disabled.])
5483 if test -n "$MOZ_VORBIS"; then
5484 AC_DEFINE(MOZ_VORBIS)
5487 if test -n "$MOZ_TREMOR"; then
5488 AC_DEFINE(MOZ_TREMOR)
5491 if test -n "$MOZ_OPUS"; then
5495 if test -n "$MOZ_WEBM_ENCODER"; then
5496 AC_DEFINE(MOZ_WEBM_ENCODER)
5498 AC_SUBST(MOZ_WEBM_ENCODER)
5500 dnl ==================================
5501 dnl = Check alsa availability on Linux
5502 dnl ==================================
5504 dnl If using Linux, ensure that the alsa library is available
5505 if test "$OS_TARGET" = "Linux"; then
5509 MOZ_ARG_ENABLE_BOOL(alsa,
5510 [ --enable-alsa Enable Alsa support (default on Linux)],
5514 if test -n "$MOZ_ALSA"; then
5515 PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
5516 [echo "$MOZ_ALSA_PKG_ERRORS"
5517 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.)])])
5521 AC_SUBST(MOZ_ALSA_CFLAGS)
5522 AC_SUBST(MOZ_ALSA_LIBS)
5524 dnl ========================================================
5525 dnl = Disable PulseAudio
5526 dnl ========================================================
5528 dnl If using Linux, ensure that the PA library is available
5529 case "$OS_TARGET" in
5530 WINNT|Darwin|Android|OpenBSD)
5533 if test -z "$MOZ_B2G"; then
5539 MOZ_ARG_DISABLE_BOOL(pulseaudio,
5540 [ --disable-pulseaudio Disable PulseAudio support],
5544 if test -n "$MOZ_PULSEAUDIO"; then
5545 if test -z "$gonkdir"; then
5546 PKG_CHECK_MODULES(MOZ_PULSEAUDIO, libpulse, ,
5547 [echo "$MOZ_PULSEAUDIO_PKG_ERRORS"
5548 AC_MSG_ERROR([pulseaudio audio backend requires libpulse development package])])
5550 MOZ_PULSEAUDIO_CFLAGS="-I$gonkdir/external/pulseaudio/pulseaudio/src"
5554 AC_SUBST(MOZ_PULSEAUDIO)
5555 AC_SUBST(MOZ_PULSEAUDIO_CFLAGS)
5557 dnl ========================================================
5558 dnl = Enable GStreamer
5559 dnl ========================================================
5560 case "$OS_TARGET" in
5561 WINNT|Darwin|Android)
5565 GST_API_VERSION=0.10
5569 MOZ_ARG_ENABLE_STRING(gstreamer,
5570 [ --enable-gstreamer[=0.10] Enable GStreamer support],
5572 # API version, eg 0.10, 1.0 etc
5573 if test -z "$enableval" -o "$enableval" = "yes"; then
5574 GST_API_VERSION=0.10
5575 elif test "$enableval" = "no"; then
5578 GST_API_VERSION=$enableval
5582 if test -n "$MOZ_GSTREAMER"; then
5583 # core/base release number
5584 if test "$GST_API_VERSION" = "1.0"; then
5590 PKG_CHECK_MODULES(GSTREAMER,
5591 gstreamer-$GST_API_VERSION >= $GST_VERSION
5592 gstreamer-app-$GST_API_VERSION
5593 gstreamer-plugins-base-$GST_API_VERSION,
5594 [_HAVE_GSTREAMER=1],
5596 if test -z "$_HAVE_GSTREAMER"; then
5597 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])
5600 _SAVE_LDFLAGS=$LDFLAGS
5601 LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5602 AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=)
5603 if test -n "$_HAVE_LIBGSTVIDEO" ; then
5604 GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5606 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.])
5608 LDFLAGS=$_SAVE_LDFLAGS
5610 AC_SUBST(GSTREAMER_CFLAGS)
5611 AC_SUBST(GSTREAMER_LIBS)
5614 AC_SUBST(MOZ_GSTREAMER)
5615 AC_SUBST(GST_API_VERSION)
5617 if test -n "$MOZ_GSTREAMER"; then
5618 AC_DEFINE(MOZ_GSTREAMER)
5619 AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION")
5623 dnl ========================================================
5624 dnl Permissions System
5625 dnl ========================================================
5626 MOZ_ARG_DISABLE_BOOL(permissions,
5627 [ --disable-permissions Disable permissions (popup and cookie blocking)],
5632 dnl ========================================================
5633 dnl Child permissions, currently only used for b2g
5634 dnl ========================================================
5635 if test -n "$MOZ_B2G"; then
5636 if test -n "$MOZ_PERMISSIONS"; then
5637 MOZ_CHILD_PERMISSIONS=1
5639 AC_MSG_ERROR([You need to enable MOZ_PERMISSIONS for MOZ_CHILD_PERMISSIONS])
5642 AC_SUBST(MOZ_CHILD_PERMISSIONS)
5644 dnl ========================================================
5646 dnl ========================================================
5647 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5648 [ --disable-negotiateauth Disable GSS-API negotiation ],
5649 MOZ_AUTH_EXTENSION=,
5650 MOZ_AUTH_EXTENSION=1 )
5652 dnl ========================================================
5653 dnl Pref extensions (autoconfig)
5654 dnl ========================================================
5655 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5656 [ --disable-pref-extensions
5657 Disable pref extensions such as autoconfig],
5658 MOZ_PREF_EXTENSIONS=,
5659 MOZ_PREF_EXTENSIONS=1 )
5661 dnl ========================================================
5662 dnl Searching of system directories for extensions.
5663 dnl Note: this switch is meant to be used for test builds
5664 dnl whose behavior should not depend on what happens to be
5665 dnl installed on the local machine.
5666 dnl ========================================================
5667 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
5668 [ --disable-system-extension-dirs
5669 Disable searching system- and account-global
5670 directories for extensions of any kind; use
5671 only profile-specific extension directories],
5672 ENABLE_SYSTEM_EXTENSION_DIRS=,
5673 ENABLE_SYSTEM_EXTENSION_DIRS=1 )
5674 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
5675 AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
5678 dnl ========================================================
5679 dnl = Universalchardet
5680 dnl ========================================================
5681 MOZ_ARG_DISABLE_BOOL(universalchardet,
5682 [ --disable-universalchardet
5683 Disable universal encoding detection],
5684 MOZ_UNIVERSALCHARDET=,
5685 MOZ_UNIVERSALCHARDET=1 )
5687 if test -n "${JAVA_BIN_PATH}"; then
5688 dnl Look for javac and jar in the specified path.
5689 JAVA_PATH="$JAVA_BIN_PATH"
5691 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5692 JAVA_PATH="$JAVA_HOME/bin:$PATH"
5695 MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5696 MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5697 MOZ_PATH_PROG(JAVAH, javah, :, [$JAVA_PATH])
5698 MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5699 MOZ_PATH_PROG(JARSIGNER, jarsigner, :, [$JAVA_PATH])
5700 MOZ_PATH_PROG(KEYTOOL, keytool, :, [$JAVA_PATH])
5702 if test -n "${JAVA_BIN_PATH}" -o \
5703 \( "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk" \); then
5704 if test -z "$JAVA" -o "$JAVA" = ":"; then
5705 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}])
5707 if test -z "$JAVAC" -o "$JAVAC" = ":"; then
5708 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}])
5710 if test -z "$JAVAH" -o "$JAVAH" = ":"; then
5711 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}])
5713 if test -z "$JAR" -o "$JAR" = ":"; then
5714 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}])
5716 if test -z "$JARSIGNER" -o "$JARSIGNER" = ":"; then
5717 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}])
5719 if test -z "$KEYTOOL" -o "$KEYTOOL" = ":"; then
5720 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}])
5724 dnl ========================================================
5725 dnl = ANGLE OpenGL->D3D translator for WebGL
5726 dnl = * only applies to win32
5727 dnl = * enabled by default (shipping build); requires explicit --disable to disable
5728 dnl ========================================================
5732 MOZ_HAS_WINSDK_WITH_D3D=
5733 MOZ_D3DCOMPILER_VISTA_DLL=
5734 MOZ_D3DCOMPILER_VISTA_DLL_PATH=
5735 MOZ_DIRECTX_SDK_PATH=
5736 MOZ_D3DCOMPILER_XP_DLL=
5737 MOZ_D3DCOMPILER_XP_CAB=
5739 case "$target_os" in
5741 MOZ_ANGLE_RENDERER=1
5745 # The DirectX SDK libraries are split into x86 and x64 sub-directories
5746 case "${target_cpu}" in
5748 MOZ_D3D_CPU_SUFFIX=x86
5751 MOZ_D3D_CPU_SUFFIX=x64
5755 MOZ_ARG_DISABLE_BOOL(webgl,
5756 [ --disable-webgl Disable building of the WebGL implementation],
5757 MOZ_WEBGL_DISABLED=1,
5758 MOZ_WEBGL_DISABLED=)
5760 MOZ_ARG_ENABLE_BOOL(require-all-d3dc-versions,
5761 [ --enable-require-all-d3dc-versions Require all versions of the D3D compiler needed for supported Windows systems.],
5762 MOZ_REQUIRE_ALL_D3DCS=1,
5763 MOZ_REQUIRE_ALL_D3DCS=)
5765 if test -n "$MOZ_WEBGL_DISABLED"; then
5770 if test -n "$MOZ_WEBGL"; then
5771 AC_DEFINE(MOZ_WEBGL)
5774 if test -n "$MOZ_WEBGL_CONFORMANT"; then
5775 AC_DEFINE(MOZ_WEBGL_CONFORMANT)
5778 dnl ========================================================
5779 dnl D3D compiler DLL
5780 dnl ========================================================
5781 MOZ_FOUND_D3D_COMPILERS=
5783 if test -n "$MOZ_ANGLE_RENDERER"; then
5784 if test -z "$MOZ_D3D_CPU_SUFFIX"; then
5785 AC_MSG_ERROR([Couldn't determine MOZ_D3D_CPU_SUFFIX.])
5788 ######################################
5789 # Find _46+ for use by Vista+.
5791 # Find a D3D compiler DLL in a Windows SDK.
5792 MOZ_D3DCOMPILER_VISTA_DLL=
5793 case "$MOZ_WINSDK_MAXVER" in
5795 MOZ_D3DCOMPILER_VISTA_DLL=d3dcompiler_47.dll
5796 AC_MSG_RESULT([Found D3D compiler in Windows SDK 8.1.])
5799 MOZ_D3DCOMPILER_VISTA_DLL=d3dcompiler_46.dll
5800 AC_MSG_RESULT([Found D3D compiler in Windows SDK 8.0.])
5804 if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then
5805 # We have a name, now track down the path.
5806 if test -n "$WINDOWSSDKDIR"; then
5807 MOZ_D3DCOMPILER_VISTA_DLL_PATH="$WINDOWSSDKDIR/Redist/D3D/$MOZ_D3D_CPU_SUFFIX/$MOZ_D3DCOMPILER_VISTA_DLL"
5808 if test -f "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then
5809 AC_MSG_RESULT([Found MOZ_D3DCOMPILER_VISTA_DLL_PATH: $MOZ_D3DCOMPILER_VISTA_DLL_PATH])
5810 MOZ_HAS_WINSDK_WITH_D3D=1
5812 AC_MSG_RESULT([MOZ_D3DCOMPILER_VISTA_DLL_PATH doesn't exist: $MOZ_D3DCOMPILER_VISTA_DLL_PATH])
5813 AC_MSG_ERROR([Windows SDK at "$WINDOWSSDKDIR" appears broken. Try updating to MozillaBuild 1.9 final or higher.])
5814 MOZ_D3DCOMPILER_VISTA_DLL_PATH=
5817 AC_MSG_RESULT([Windows SDK not found.])
5821 if test -z "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then
5822 MOZ_D3DCOMPILER_VISTA_DLL=
5825 # On mingw, check if headers are provided by toolchain.
5826 if test -n "$GNU_CC"; then
5827 MOZ_CHECK_HEADER(d3d10.h, MOZ_HAS_WINSDK_WITH_D3D=1)
5830 ######################################
5831 # Find _43 for use by XP.
5833 # Get the SDK path from the registry.
5834 # First try to get the June 2010 SDK
5835 MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1`
5836 if test -z "$MOZ_DIRECTX_SDK_REG_KEY" ; then
5837 # Otherwise just take whatever comes first
5838 MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1`
5840 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'`
5842 if test -n "$MOZ_DIRECTX_SDK_PATH" &&
5843 test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/dxguid.lib ; then
5844 AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH])
5846 AC_MSG_RESULT([DirectX SDK not found.])
5847 MOZ_DIRECTX_SDK_PATH=
5850 # Check that our DirectX SDK is acceptable.
5851 if test -n "$MOZ_DIRECTX_SDK_PATH"; then
5852 if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then
5853 AC_MSG_RESULT([Found the February 2010 DirectX SDK, which is unacceptable to ANGLE.])
5854 MOZ_DIRECTX_SDK_PATH=
5858 if test -n "$MOZ_DIRECTX_SDK_PATH"; then
5859 # Find a D3D compiler DLL in the DirectX SDK, if we didn't find one already.
5860 # Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib
5861 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'`
5863 if test -n "$MOZ_D3DX9_VERSION" ; then
5864 MOZ_D3DCOMPILER_XP_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_D3D_CPU_SUFFIX}.cab | head -n1`
5866 if test -n "$MOZ_D3DCOMPILER_XP_CAB"; then
5867 MOZ_D3DCOMPILER_XP_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll
5869 AC_MSG_RESULT([Couldn't find a CAB containing the D3D compiler DLL.])
5870 AC_MSG_ERROR([DirectX SDK at "$MOZ_DIRECTX_SDK_PATH" appears broken.])
5871 MOZ_DIRECTX_SDK_PATH=
5874 AC_MSG_RESULT([Couldn't determine the D3DX9 version for the DirectX SDK.])
5875 MOZ_DIRECTX_SDK_PATH=
5878 AC_MSG_RESULT([Couldn't find an acceptable DirectX SDK for ANGLE, needed for d3dcompiler_43.])
5879 AC_MSG_RESULT([ Either ignore, install DirectX SDK (June 2010 version or newer), or reconfigure with --disable-webgl.])
5882 ######################################
5883 # Check that we found what we needed.
5884 MOZ_FOUND_A_D3D_COMPILER=
5885 MOZ_FOUND_BOTH_D3D_COMPILERS=1
5887 if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then
5888 MOZ_FOUND_A_D3D_COMPILER=1
5889 AC_MSG_RESULT([Found d3dcompiler DLL for Vista+: $MOZ_D3DCOMPILER_VISTA_DLL])
5891 MOZ_FOUND_BOTH_D3D_COMPILERS=
5894 if test -n "$MOZ_D3DCOMPILER_XP_DLL"; then
5895 MOZ_FOUND_A_D3D_COMPILER=1
5896 AC_MSG_RESULT([Found d3dcompiler DLL for XP: $MOZ_D3DCOMPILER_XP_DLL])
5898 MOZ_FOUND_BOTH_D3D_COMPILERS=
5901 if test -z "$CROSS_COMPILE"; then
5902 if test -z "MOZ_FOUND_A_D3D_COMPILER"; then
5903 AC_MSG_ERROR([Couldn't find an acceptable D3D compiler DLL.])
5904 AC_MSG_ERROR([ Either install Windows SDK 8.0+, install DirectX SDK (June 2010 version or newer), or reconfigure with --disable-webgl.])
5907 if test -n "$MOZ_REQUIRE_ALL_D3DCS" -a -z "$MOZ_FOUND_BOTH_D3D_COMPILERS"; then
5908 AC_MSG_ERROR([Both D3D compilers _43 and _46+ are required by --enable-require-d3d-compilers.])
5909 AC_MSG_ERROR([ Install Windows SDK 8.0+, as well as DirectX SDK (June 2010 version or newer), or reconfigure without this flag.])
5915 dnl ========================================================
5917 dnl ========================================================
5919 MOZ_GAMEPAD_BACKEND=stub
5921 # Gamepad DOM is built on supported platforms by default.
5922 case "$OS_TARGET" in
5927 if test "$MOZ_WIDGET_TOOLKIT" != "gonk"; then
5935 MOZ_ARG_DISABLE_BOOL(gamepad,
5936 [ --disable-gamepad Disable gamepad support],
5940 if test "$MOZ_GAMEPAD"; then
5941 case "$OS_TARGET" in
5943 MOZ_GAMEPAD_BACKEND=cocoa
5946 case "$MOZ_WINSDK_MAXVER" in
5947 # We support building with the Windows 7 SDK otherwise, but
5948 # Gamepad support requires the Windows 8 SDK for some HID headers.
5950 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.])
5955 MOZ_GAMEPAD_BACKEND=windows
5958 MOZ_CHECK_HEADER([linux/joystick.h])
5959 if test "$ac_cv_header_linux_joystick_h" != "yes"; then
5960 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.])
5962 MOZ_GAMEPAD_BACKEND=linux
5965 MOZ_GAMEPAD_BACKEND=android
5971 AC_DEFINE(MOZ_GAMEPAD)
5973 AC_SUBST(MOZ_GAMEPAD)
5974 AC_SUBST(MOZ_GAMEPAD_BACKEND)
5976 dnl ========================================================
5977 dnl = Breakpad crash reporting (on by default on supported platforms)
5978 dnl ========================================================
5981 i?86-*-mingw*|x86_64-*-mingw*)
5984 i?86-apple-darwin*|x86_64-apple-darwin*)
5987 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
5988 if test "$MOZ_ENABLE_GTK"; then
5992 *-android*|*-linuxandroid*)
6000 MOZ_ARG_DISABLE_BOOL(crashreporter,
6001 [ --disable-crashreporter Disable breakpad crash reporting],
6002 [MOZ_CRASHREPORTER=],
6003 [MOZ_CRASHREPORTER=F # Force enable breakpad])
6005 if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT"; then
6006 if test "$MOZ_CRASHREPORTER" = F; then
6007 AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
6012 if test -n "$MOZ_CRASHREPORTER"; then
6013 AC_DEFINE(MOZ_CRASHREPORTER)
6015 if test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS" && \
6016 test -z "$SKIP_LIBRARY_CHECKS"; then
6017 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
6018 AC_SUBST(MOZ_GTHREAD_CFLAGS)
6019 AC_SUBST(MOZ_GTHREAD_LIBS)
6022 if test "$OS_ARCH" = "WINNT"; then
6023 if test -z "$HAVE_64BIT_OS"; then
6024 MOZ_CRASHREPORTER_INJECTOR=1
6025 AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
6030 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
6031 [ --with-crashreporter-enable-percent=NN
6032 Enable sending crash reports by default on NN% of users. (default=100)],
6033 [ val=`echo $withval | sed 's/[^0-9]//g'`
6034 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
6036 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
6037 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
6039 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
6041 dnl ========================================================
6042 dnl = libjpeg-turbo configuration
6043 dnl ========================================================
6045 if test -z "$MOZ_NATIVE_JPEG"; then
6049 MOZ_ARG_DISABLE_BOOL(libjpeg_turbo,
6050 [ --disable-libjpeg-turbo Disable optimized jpeg decoding routines],
6052 MOZ_LIBJPEG_TURBO=1)
6054 if test "$MOZ_NATIVE_JPEG" = 1 -a "$MOZ_LIBJPEG_TURBO" = 1; then
6055 AC_MSG_ERROR([cannot use --with-system-jpeg with --enable-libjpeg-turbo.])
6058 dnl Detect if we can use yasm to compile libjpeg-turbo's optimized assembly
6061 if test -n "$MOZ_LIBJPEG_TURBO"; then
6063 dnl Do we support libjpeg-turbo on this platform?
6064 case "$OS_ARCH:$OS_TEST" in
6066 LIBJPEG_TURBO_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC -DMACHO"
6067 LIBJPEG_TURBO_X86_ASM=1
6070 LIBJPEG_TURBO_ASFLAGS="-f macho64 -rnasm -pnasm -D__x86_64__ -DPIC -DMACHO"
6071 LIBJPEG_TURBO_X64_ASM=1
6073 WINNT:x86|WINNT:i?86)
6074 LIBJPEG_TURBO_ASFLAGS="-f win32 -rnasm -pnasm -DPIC -DWIN32"
6075 LIBJPEG_TURBO_X86_ASM=1
6078 LIBJPEG_TURBO_ASFLAGS="-f win64 -rnasm -pnasm -D__x86_64__ -DPIC -DWIN64 -DMSVC"
6079 LIBJPEG_TURBO_X64_ASM=1
6082 LIBJPEG_TURBO_ASFLAGS="-march=armv7-a -mfpu=neon"
6083 LIBJPEG_TURBO_ARM_ASM=1
6086 if $CC -E -dM -</dev/null | grep -q __ELF__; then
6087 LIBJPEG_TURBO_ASFLAGS="-f elf32 -rnasm -pnasm -DPIC -DELF"
6088 LIBJPEG_TURBO_X86_ASM=1
6092 if $CC -E -dM -</dev/null | grep -q __ELF__; then
6093 LIBJPEG_TURBO_ASFLAGS="-f elf64 -rnasm -pnasm -D__x86_64__ -DPIC -DELF"
6094 LIBJPEG_TURBO_X64_ASM=1
6101 dnl If we're on an x86 or x64 system which supports libjpeg-turbo's asm routines
6102 dnl and --disable-libjpeg-turbo wasn't passed, check for Yasm, and error out if
6103 dnl it doesn't exist or we have too old of a version.
6104 if test -n "$LIBJPEG_TURBO_X86_ASM" -o -n "$LIBJPEG_TURBO_X64_ASM" ; then
6105 LIBJPEG_TURBO_AS=$YASM
6107 if test -z "$LIBJPEG_TURBO_AS" ; then
6108 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.])
6111 dnl Check that we have the right yasm version. We require 1.0.1 or newer
6112 dnl on Linux and 1.1 or newer everywhere else.
6113 if test "$OS_ARCH" = "Linux" ; then
6114 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
6115 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.])
6118 if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
6119 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.])
6124 dnl If we're on an ARM system which supports libjpeg-turbo's asm routines and
6125 dnl --disable-libjpeg-turbo wasn't passed, use the C compiler as the assembler.
6126 if test -n "$LIBJPEG_TURBO_ARM_ASM" ; then
6127 echo "Using $AS as the assembler for ARM code."
6128 LIBJPEG_TURBO_AS=$AS
6131 if test -n "$LIBJPEG_TURBO_X86_ASM"; then
6132 AC_DEFINE(LIBJPEG_TURBO_X86_ASM)
6133 elif test -n "$LIBJPEG_TURBO_X64_ASM"; then
6134 AC_DEFINE(LIBJPEG_TURBO_X64_ASM)
6135 elif test -n "$LIBJPEG_TURBO_ARM_ASM"; then
6136 AC_DEFINE(LIBJPEG_TURBO_ARM_ASM)
6137 elif test -n "$MOZ_LIBJPEG_TURBO"; then
6138 dnl Warn if we're not building the optimized routines, even though the user
6139 dnl didn't specify --disable-libjpeg-turbo.
6140 AC_MSG_WARN([No assembler or assembly support for libjpeg-turbo. Using unoptimized C routines.])
6143 dnl ========================================================
6144 dnl = Enable compilation of specific extension modules
6145 dnl ========================================================
6147 MOZ_ARG_ENABLE_STRING(extensions,
6148 [ --enable-extensions Enable extensions],
6149 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6150 if test "$option" = "yes" -o "$option" = "all"; then
6151 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6152 elif test "$option" = "no" -o "$option" = "none"; then
6154 elif test "$option" = "default"; then
6155 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6156 elif test `echo "$option" | grep -c \^-` != 0; then
6157 option=`echo $option | sed 's/^-//'`
6158 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6160 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6163 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6165 if test -z "$MOZ_ENABLE_GNOMEVFS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6166 # Suppress warning on non-X11 platforms
6167 if test -n "$MOZ_X11"; then
6168 AC_MSG_WARN([Removing gnomevfs from MOZ_EXTENSIONS due to no --enable-gnomevfs.])
6170 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6173 dnl Do not build gnomevfs with libxul based apps
6174 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6175 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6178 if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6179 # Suppress warning on non-X11 platforms
6180 if test -n "$MOZ_X11"; then
6181 AC_MSG_WARN([Removing gio from MOZ_EXTENSIONS due to --disable-gio.])
6183 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6186 dnl Do not build gio with libxul based apps
6187 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6188 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6191 if test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6193 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6195 AC_SUBST(MOZ_GIO_COMPONENT)
6197 if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6198 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6199 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6203 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6205 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6206 dnl when trying to build a nonexistent extension.
6207 for extension in $MOZ_EXTENSIONS; do
6208 if test ! -d "${srcdir}/extensions/${extension}"; then
6209 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6213 if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
6214 AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
6217 dnl ========================================================
6218 dnl Build Freetype in the tree
6219 dnl ========================================================
6220 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6221 [ --enable-tree-freetype Enable Tree FreeType],
6222 MOZ_TREE_FREETYPE=1,
6223 MOZ_TREE_FREETYPE= )
6224 if test -n "$MOZ_TREE_FREETYPE"; then
6225 if test -n "$_WIN32_MSVC"; then
6226 AC_ERROR("building with in-tree freetype is not supported on MSVC")
6228 AC_DEFINE(MOZ_TREE_FREETYPE)
6229 AC_SUBST(MOZ_TREE_FREETYPE)
6230 MOZ_ENABLE_CAIRO_FT=1
6231 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6232 FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6233 CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6234 FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6236 AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6237 AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6238 AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6239 AC_SUBST(CAIRO_FT_CFLAGS)
6242 dnl ========================================================
6244 dnl ========================================================
6245 dnl Abort Windows build if the required major version and
6246 dnl minimum minor version of Unicode NSIS isn't in the path
6247 dnl (unless in case of cross compiling, for which Unicode
6248 dnl is not yet sufficient).
6249 if test "$OS_ARCH" = "WINNT"; then
6250 MIN_NSIS_MAJOR_VER=2
6251 MIN_NSIS_MINOR_VER=46
6252 MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensisu-3.0a2.exe makensisu-2.46.exe makensis)
6253 if test -n "$MAKENSISU" -a "$MAKENSISU" != ":"; then
6254 AC_MSG_RESULT([yes])
6255 MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null`
6257 MAKENSISU_PARSED_VER=`echo "$MAKENSISU_VER" | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\).*\-Unicode$/\1/g'`
6259 if test "$MAKENSISU_PARSED_VER" = ""; then
6261 MAKENSISU_PARSED_VER=`echo "$MAKENSISU_VER" | sed -e 's/^v\([0-9]\+\.[0-9]\+\).*$/\1/g'`
6264 MAKENSISU_MAJOR_VER=0
6265 MAKENSISU_MINOR_VER=0
6266 if test ! "$MAKENSISU_PARSED_VER" = ""; then
6267 MAKENSISU_MAJOR_VER=`echo $MAKENSISU_PARSED_VER | $AWK -F\. '{ print $1 }'`
6268 MAKENSISU_MINOR_VER=`echo $MAKENSISU_PARSED_VER | $AWK -F\. '{ print $2 }'`
6270 AC_MSG_CHECKING([for Unicode NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER or greater])
6271 if test "$MAKENSISU_MAJOR_VER" -eq $MIN_NSIS_MAJOR_VER -a \
6272 "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER ||
6273 test "$MAKENSISU_MAJOR_VER" -gt $MIN_NSIS_MAJOR_VER; then
6274 AC_MSG_RESULT([yes])
6277 if test -z "$CROSS_COMPILE"; then
6278 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.])
6283 elif test -z "$CROSS_COMPILE"; then
6284 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.])
6290 dnl ========================================================
6292 dnl ========================================================
6293 MOZ_ARG_DISABLE_BOOL(webapp-runtime,
6294 [ --disable-webapp-runtime Disable Web App Runtime],
6295 MOZ_WEBAPP_RUNTIME=,
6296 MOZ_WEBAPP_RUNTIME=1)
6297 if test "$MOZ_WIDGET_TOOLKIT" != "windows" -a "$MOZ_WIDGET_TOOLKIT" != "cocoa" -a -z "$MOZ_WIDGET_GTK" ; then
6300 if test "$OS_ARCH" = "WINNT" -a -z "$MAKENSISU" -a -n "$CROSS_COMPILE"; then
6303 AC_SUBST(MOZ_WEBAPP_RUNTIME)
6304 if test "$MOZ_WEBAPP_RUNTIME"; then
6305 AC_DEFINE(MOZ_WEBAPP_RUNTIME)
6308 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6309 if test -z "$TAR"; then
6310 AC_MSG_ERROR([no tar archiver found in \$PATH])
6314 AC_CHECK_PROGS(WGET, wget, "")
6317 dnl ========================================================
6319 dnl ========================================================
6321 if test -n "$MOZ_SIGN_CMD"; then
6322 AC_DEFINE(MOZ_SIGNING)
6325 dnl ========================================================
6326 dnl Maintenance Service
6327 dnl ========================================================
6329 MOZ_ARG_ENABLE_BOOL(maintenance-service,
6330 [ --enable-maintenance-service Enable building of maintenanceservice],
6331 MOZ_MAINTENANCE_SERVICE=1,
6332 MOZ_MAINTENANCE_SERVICE= )
6334 if test -n "$MOZ_MAINTENANCE_SERVICE"; then
6335 if test "$OS_ARCH" = "WINNT"; then
6336 AC_DEFINE(MOZ_MAINTENANCE_SERVICE)
6338 AC_MSG_ERROR([Can only build with --enable-maintenance-service with a Windows target])
6342 dnl ========================================================
6343 dnl Bundled fonts on desktop platforms
6344 dnl ========================================================
6346 MOZ_ARG_ENABLE_BOOL(bundled-fonts,
6347 [ --enable-bundled-fonts Enable support for bundled fonts on desktop platforms],
6348 MOZ_BUNDLED_FONTS=1,
6351 if test -n "$MOZ_BUNDLED_FONTS"; then
6352 AC_DEFINE(MOZ_BUNDLED_FONTS)
6355 dnl ========================================================
6356 dnl Verify MAR signatures
6357 dnl ========================================================
6359 MOZ_ARG_ENABLE_BOOL(verify-mar,
6360 [ --enable-verify-mar Enable verifying MAR signatures],
6361 MOZ_VERIFY_MAR_SIGNATURE=1,
6362 MOZ_VERIFY_MAR_SIGNATURE= )
6364 if test -n "$MOZ_VERIFY_MAR_SIGNATURE"; then
6365 if test "$OS_ARCH" = "WINNT"; then
6366 AC_DEFINE(MOZ_VERIFY_MAR_SIGNATURE)
6368 AC_MSG_ERROR([Can only build with --enable-verify-mar with a Windows target])
6372 dnl ========================================================
6373 dnl Enable building the signmar program.
6374 dnl This option is much different than the --enable-verify-mar option.
6375 dnl --enable-verify-mar is for enabling the verification check on MAR
6376 dnl files in the updater. The --enable-signmar option is for building
6377 dnl the signmar program.
6378 dnl ========================================================
6380 MOZ_ARG_ENABLE_BOOL(signmar,
6381 [ --enable-signmar Enable building the signmar program],
6382 MOZ_ENABLE_SIGNMAR=1,
6383 MOZ_ENABLE_SIGNMAR= )
6385 if test -n "$MOZ_ENABLE_SIGNMAR"; then
6386 AC_DEFINE(MOZ_ENABLE_SIGNMAR)
6389 dnl ========================================================
6391 dnl ========================================================
6393 MOZ_ARG_DISABLE_BOOL(updater,
6394 [ --disable-updater Disable building of updater],
6398 if test -n "$MOZ_UPDATER"; then
6399 AC_DEFINE(MOZ_UPDATER)
6402 # tools/update-packaging is not checked out by default.
6403 MOZ_ARG_ENABLE_BOOL(update-packaging,
6404 [ --enable-update-packaging
6405 Enable tools/update-packaging],
6406 MOZ_UPDATE_PACKAGING=1,
6407 MOZ_UPDATE_PACKAGING= )
6408 AC_SUBST(MOZ_UPDATE_PACKAGING)
6410 dnl ========================================================
6411 dnl build the tests by default
6412 dnl ========================================================
6413 MOZ_ARG_DISABLE_BOOL(tests,
6414 [ --disable-tests Do not build test libraries & programs],
6418 if test -n "$ENABLE_TESTS"; then
6420 AC_DEFINE(ENABLE_TESTS)
6421 AC_DEFINE_UNQUOTED(GTEST_HAS_RTTI, 0)
6422 AC_SUBST(GTEST_HAS_RTTI)
6423 if test -n "$_WIN32_MSVC"; then
6424 AC_DEFINE_UNQUOTED(_VARIADIC_MAX, 10)
6426 if test "${OS_TARGET}" = "Android"; then
6427 AC_DEFINE(GTEST_OS_LINUX_ANDROID)
6428 AC_DEFINE(GTEST_USE_OWN_TR1_TUPLE)
6429 AC_DEFINE_UNQUOTED(GTEST_HAS_CLONE, 0)
6430 AC_SUBST(GTEST_OS_LINUX_ANDROID)
6431 AC_SUBST(GTEST_USE_OWN_TR1_TUPLE)
6432 AC_SUBST(GTEST_HAS_CLONE)
6436 dnl ========================================================
6437 dnl parental controls (for Windows Vista)
6438 dnl ========================================================
6439 MOZ_ARG_DISABLE_BOOL(parental-controls,
6440 [ --disable-parental-controls
6441 Do not build parental controls],
6442 MOZ_DISABLE_PARENTAL_CONTROLS=1,
6443 MOZ_DISABLE_PARENTAL_CONTROLS=)
6444 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6445 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6448 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6450 dnl ========================================================
6451 dnl = Disable DOMCrypto
6452 dnl ========================================================
6453 if test -n "$MOZ_DISABLE_CRYPTOLEGACY"; then
6454 AC_DEFINE(MOZ_DISABLE_CRYPTOLEGACY)
6456 AC_SUBST(MOZ_DISABLE_CRYPTOLEGACY)
6458 dnl ========================================================
6459 dnl = Disable EV certificate verification
6460 dnl ========================================================
6461 if test -n "$MOZ_NO_EV_CERTS"; then
6462 AC_DEFINE(MOZ_NO_EV_CERTS)
6464 AC_SUBST(MOZ_NO_EV_CERTS)
6466 dnl ========================================================
6467 dnl = Disable libpkix
6468 dnl ========================================================
6469 if test -n "$NSS_NO_LIBPKIX"; then
6470 AC_DEFINE(NSS_NO_LIBPKIX)
6472 AC_SUBST(NSS_NO_LIBPKIX)
6474 dnl ========================================================
6475 dnl = Content process sandboxing
6476 dnl ========================================================
6477 if test -n "$gonkdir"; then
6478 MOZ_CONTENT_SANDBOX=1
6481 MOZ_ARG_ENABLE_BOOL(content-sandbox,
6482 [ --enable-content-sandbox Enable sandboxing support for content-processes],
6483 MOZ_CONTENT_SANDBOX=1,
6484 MOZ_CONTENT_SANDBOX=)
6486 if test -n "$MOZ_CONTENT_SANDBOX"; then
6487 AC_DEFINE(MOZ_CONTENT_SANDBOX)
6490 AC_SUBST(MOZ_CONTENT_SANDBOX)
6492 MOZ_ARG_ENABLE_BOOL(content-sandbox-reporter,
6493 [ --enable-content-sandbox-reporter Enable syscall reporter to troubleshoot syscalls denied by the content-processes sandbox],
6494 MOZ_CONTENT_SANDBOX_REPORTER=1,
6495 MOZ_CONTENT_SANDBOX_REPORTER=)
6497 if test -n "$MOZ_CONTENT_SANDBOX_REPORTER"; then
6498 AC_DEFINE(MOZ_CONTENT_SANDBOX_REPORTER)
6501 AC_SUBST(MOZ_CONTENT_SANDBOX_REPORTER)
6503 dnl ========================================================
6505 dnl = Module specific options
6507 dnl ========================================================
6508 MOZ_ARG_HEADER(Individual module options)
6510 dnl ========================================================
6511 dnl = Disable feed handling components
6512 dnl ========================================================
6513 MOZ_ARG_DISABLE_BOOL(feeds,
6514 [ --disable-feeds Disable feed handling and processing components],
6517 if test -n "$MOZ_FEEDS"; then
6518 AC_DEFINE(MOZ_FEEDS)
6520 if test "$MOZ_BUILD_APP" = "browser"; then
6521 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6525 dnl ========================================================
6526 dnl Check for sqlite
6527 dnl ========================================================
6530 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6531 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
6532 MOZ_NATIVE_SQLITE=1,
6533 MOZ_NATIVE_SQLITE= )
6535 if test -z "$MOZ_NATIVE_SQLITE"
6538 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6540 dnl ============================
6541 dnl === SQLite Version check ===
6542 dnl ============================
6543 dnl Check to see if the system SQLite package is new enough.
6544 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6546 dnl ==================================
6547 dnl === SQLITE_SECURE_DELETE check ===
6548 dnl ==================================
6549 dnl Check to see if the system SQLite package is compiled with
6550 dnl SQLITE_SECURE_DELETE enabled.
6551 AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6552 _SAVE_CFLAGS="$CFLAGS"
6553 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6555 LIBS="$LIBS $SQLITE_LIBS"
6556 AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6558 #include "sqlite3.h"
6560 int main(int argc, char **argv){
6561 return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6563 ac_cv_sqlite_secure_delete=yes,
6564 ac_cv_sqlite_secure_delete=no,
6565 ac_cv_sqlite_secure_delete=no
6568 AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6569 CFLAGS="$_SAVE_CFLAGS"
6571 if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6572 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6575 dnl ===============================
6576 dnl === SQLITE_THREADSAFE check ===
6577 dnl ===============================
6578 dnl Check to see if the system SQLite package is compiled with
6579 dnl SQLITE_THREADSAFE enabled.
6580 AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6581 _SAVE_CFLAGS="$CFLAGS"
6582 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6584 LIBS="$LIBS $SQLITE_LIBS"
6585 AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6587 #include "sqlite3.h"
6589 int main(int argc, char **argv){
6590 return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6592 ac_cv_sqlite_threadsafe=yes,
6593 ac_cv_sqlite_threadsafe=no,
6594 ac_cv_sqlite_threadsafe=no
6597 AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6598 CFLAGS="$_SAVE_CFLAGS"
6600 if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6601 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6604 dnl ================================
6605 dnl === SQLITE_ENABLE_FTS3 check ===
6606 dnl ================================
6607 dnl check to see if the system SQLite package is compiled with
6608 dnl SQLITE_ENABLE_FTS3 enabled.
6609 AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6610 _SAVE_CFLAGS="$CFLAGS"
6611 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6613 LIBS="$LIBS $SQLITE_LIBS"
6614 AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6616 #include "sqlite3.h"
6618 int main(int argc, char **argv){
6619 return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6621 ac_cv_sqlite_enable_fts3=yes,
6622 ac_cv_sqlite_enable_fts3=no,
6623 ac_cv_sqlite_enable_fts3=no
6626 AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6627 CFLAGS="$_SAVE_CFLAGS"
6629 if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6630 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6633 dnl =========================================
6634 dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
6635 dnl =========================================
6636 dnl check to see if the system SQLite package is compiled with
6637 dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
6638 AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
6639 _SAVE_CFLAGS="$CFLAGS"
6640 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6642 LIBS="$LIBS $SQLITE_LIBS"
6643 AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
6645 #include "sqlite3.h"
6647 int main(int argc, char **argv){
6648 return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
6650 ac_cv_sqlite_enable_unlock_notify=yes,
6651 ac_cv_sqlite_enable_unlock_notify=no,
6652 ac_cv_sqlite_enable_unlock_notify=no
6655 AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
6656 CFLAGS="$_SAVE_CFLAGS"
6658 if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
6659 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
6663 if test -n "$MOZ_NATIVE_SQLITE"; then
6664 AC_DEFINE(MOZ_NATIVE_SQLITE)
6666 AC_SUBST(MOZ_NATIVE_SQLITE)
6668 dnl ========================================================
6669 dnl = Enable help viewer (off by default)
6670 dnl ========================================================
6671 if test -n "$MOZ_HELP_VIEWER"; then
6672 dnl Do this if defined in confvars.sh
6673 AC_DEFINE(MOZ_HELP_VIEWER)
6676 dnl ========================================================
6677 dnl = Enable safe browsing (anti-phishing)
6678 dnl ========================================================
6679 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6680 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
6681 MOZ_SAFE_BROWSING=1,
6682 MOZ_SAFE_BROWSING= )
6683 if test -n "$MOZ_SAFE_BROWSING"; then
6684 AC_DEFINE(MOZ_SAFE_BROWSING)
6686 AC_SUBST(MOZ_SAFE_BROWSING)
6688 dnl ========================================================
6689 dnl = Enable url-classifier
6690 dnl ========================================================
6691 dnl Implicitly enabled by default if building with safe-browsing
6692 if test -n "$MOZ_SAFE_BROWSING"; then
6693 MOZ_URL_CLASSIFIER=1
6695 MOZ_ARG_ENABLE_BOOL(url-classifier,
6696 [ --enable-url-classifier Enable url classifier module],
6697 MOZ_URL_CLASSIFIER=1,
6698 MOZ_URL_CLASSIFIER= )
6699 if test -n "$MOZ_URL_CLASSIFIER"; then
6700 AC_DEFINE(MOZ_URL_CLASSIFIER)
6702 AC_SUBST(MOZ_URL_CLASSIFIER)
6704 dnl ========================================================
6705 dnl = Disable zipwriter
6706 dnl ========================================================
6707 MOZ_ARG_DISABLE_BOOL(zipwriter,
6708 [ --disable-zipwriter Disable zipwriter component],
6711 AC_SUBST(MOZ_ZIPWRITER)
6713 dnl ========================================================
6715 dnl ========================================================
6717 MOZ_ARG_WITH_STRING(gl-provider,
6718 [ --with-gl-provider=ID
6719 Set GL provider backend type],
6720 [ val=`echo $withval`
6721 MOZ_GL_PROVIDER="$val"])
6723 if test -n "$MOZ_GL_PROVIDER"; then
6724 MOZ_GL_DEFAULT_PROVIDER=$MOZ_GL_PROVIDER
6725 AC_SUBST(MOZ_GL_PROVIDER)
6726 AC_DEFINE_UNQUOTED(MOZ_GL_PROVIDER, GLContextProvider$MOZ_GL_PROVIDER)
6728 AC_SUBST(MOZ_GL_DEFAULT_PROVIDER)
6729 AC_DEFINE_UNQUOTED(GL_PROVIDER_$MOZ_GL_DEFAULT_PROVIDER)
6731 dnl ========================================================
6732 dnl = faststripe theme
6733 dnl ========================================================
6734 MOZ_ARG_ENABLE_BOOL(faststripe,
6735 [ --enable-faststripe Use faststripe theme],
6736 MOZ_THEME_FASTSTRIPE=1,
6737 MOZ_THEME_FASTSTRIPE= )
6738 AC_SUBST(MOZ_THEME_FASTSTRIPE)
6740 dnl ========================================================
6742 dnl = Feature options that require extra sources to be pulled
6744 dnl ========================================================
6745 dnl MOZ_ARG_HEADER(Features that require extra sources)
6747 dnl ========================================================
6749 dnl = Runtime debugging and Optimization Options
6751 dnl ========================================================
6752 MOZ_ARG_HEADER(Runtime debugging and Optimizations)
6754 dnl ========================================================
6755 dnl enable mobile optimizations
6756 dnl ========================================================
6757 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
6758 [ --enable-mobile-optimize
6759 Enable mobile optimizations],
6760 MOZ_GFX_OPTIMIZE_MOBILE=1)
6762 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
6764 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
6765 AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
6768 dnl ========================================================
6769 dnl = Enable code optimization. ON by default.
6770 dnl ========================================================
6771 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6772 MOZ_OPTIMIZE_FLAGS="-O"
6775 MOZ_ARG_ENABLE_STRING(optimize,
6776 [ --disable-optimize Disable compiler optimization
6777 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6778 [ if test "$enableval" != "no"; then
6780 if test -n "$enableval" -a "$enableval" != "yes"; then
6781 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6786 fi ], MOZ_OPTIMIZE=1)
6788 MOZ_SET_FRAMEPTR_FLAGS
6790 if test "$COMPILE_ENVIRONMENT"; then
6791 if test -n "$MOZ_OPTIMIZE"; then
6792 AC_MSG_CHECKING([for valid optimization flags])
6793 _SAVE_CFLAGS=$CFLAGS
6794 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6795 AC_TRY_COMPILE([#include <stdio.h>],
6796 [printf("Hello World\n");],
6799 AC_MSG_RESULT([$_results])
6800 if test "$_results" = "no"; then
6801 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6803 CFLAGS=$_SAVE_CFLAGS
6805 fi # COMPILE_ENVIRONMENT
6807 AC_SUBST(MOZ_OPTIMIZE)
6808 AC_SUBST(MOZ_FRAMEPTR_FLAGS)
6809 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6810 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6811 AC_SUBST(MOZ_ALLOW_HEAP_EXECUTE_FLAGS)
6812 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6814 AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS)
6816 dnl ========================================================
6817 dnl = Enable any treating of compile warnings as errors
6818 dnl ========================================================
6819 MOZ_ARG_ENABLE_BOOL(warnings-as-errors,
6820 [ --enable-warnings-as-errors
6821 Enable treating of warnings as errors],
6822 MOZ_ENABLE_WARNINGS_AS_ERRORS=1,
6823 MOZ_ENABLE_WARNINGS_AS_ERRORS=)
6824 if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
6825 WARNINGS_AS_ERRORS=''
6826 elif test "$GNU_CC"; then
6827 # Prevent the following GCC warnings from being treated as errors:
6828 # -Wuninitialized - too many false positives
6829 # -Wmaybe-uninitialized - too many false positives
6830 # -Wdeprecated-declarations - we don't want our builds held hostage when a
6831 # platform-specific API becomes deprecated.
6832 MOZ_C_SUPPORTS_WARNING(-W, no-error=uninitialized, ac_c_has_noerror_uninitialized)
6833 MOZ_CXX_SUPPORTS_WARNING(-W, no-error=uninitialized, ac_cxx_has_noerror_uninitialized)
6834 MOZ_C_SUPPORTS_WARNING(-W, no-error=maybe-uninitialized, ac_c_has_noerror_maybe_uninitialized)
6835 MOZ_CXX_SUPPORTS_WARNING(-W, no-error=maybe-uninitialized, ac_cxx_has_noerror_maybe_uninitialized)
6836 MOZ_C_SUPPORTS_WARNING(-W, no-error=deprecated-declarations, ac_c_has_noerror_deprecated_declarations)
6837 MOZ_CXX_SUPPORTS_WARNING(-W, no-error=deprecated-declarations, ac_cxx_has_noerror_deprecated_declarations)
6840 dnl ========================================================
6841 dnl = Disable runtime logging checks
6842 dnl ========================================================
6843 MOZ_ARG_DISABLE_BOOL(logging,
6844 [ --disable-logging Disable logging facilities],
6845 NS_DISABLE_LOGGING=1,
6846 NS_DISABLE_LOGGING= )
6847 if test "$NS_DISABLE_LOGGING"; then
6848 AC_DEFINE(NS_DISABLE_LOGGING)
6850 AC_DEFINE(MOZ_LOGGING)
6853 dnl ========================================================
6854 dnl = This will enable logging of addref, release, ctor, dtor.
6855 dnl ========================================================
6856 _ENABLE_LOGREFCNT=42
6857 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6858 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
6859 _ENABLE_LOGREFCNT=1,
6860 _ENABLE_LOGREFCNT= )
6861 if test "$_ENABLE_LOGREFCNT" = "1"; then
6862 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6863 elif test -z "$_ENABLE_LOGREFCNT"; then
6864 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6867 dnl ========================================================
6868 dnl moz_dump_painting
6869 dnl ========================================================
6870 MOZ_ARG_ENABLE_BOOL(dump-painting,
6871 [ --enable-dump-painting Enable paint debugging.],
6872 MOZ_DUMP_PAINTING=1,
6873 MOZ_DUMP_PAINTING= )
6874 if test -n "$MOZ_DUMP_PAINTING"; then
6875 AC_DEFINE(MOZ_DUMP_PAINTING)
6876 AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
6878 if test -n "$MOZ_DEBUG"; then
6879 AC_DEFINE(MOZ_DUMP_PAINTING)
6882 dnl ========================================================
6883 dnl = Enable trace malloc
6884 dnl ========================================================
6885 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6886 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6887 [ --enable-trace-malloc Enable malloc tracing; also disables DMD and jemalloc],
6890 if test "$NS_TRACE_MALLOC"; then
6891 # Please, Mr. Linker Man, don't take away our symbol names
6892 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6893 AC_DEFINE(NS_TRACE_MALLOC)
6895 AC_SUBST(NS_TRACE_MALLOC)
6897 dnl ========================================================
6899 dnl ========================================================
6901 MOZ_ARG_ENABLE_BOOL(dmd,
6902 [ --enable-dmd Enable DMD; also enables jemalloc and replace-malloc],
6906 dnl The two options are conflicting. Fails the configure to alert the user.
6907 if test "$NS_TRACE_MALLOC" -a "$MOZ_DMD"; then
6908 AC_MSG_ERROR([--enable-trace-malloc and --enable-dmd are conflicting options])
6911 if test "$MOZ_DMD"; then
6914 if test "${CPU_ARCH}" = "arm"; then
6915 CFLAGS="$CFLAGS -funwind-tables"
6916 CXXFLAGS="$CXXFLAGS -funwind-tables"
6919 MOZ_MEMORY=1 # DMD enables jemalloc
6920 MOZ_REPLACE_MALLOC=1 # DMD enables replace-malloc
6924 dnl ========================================================
6925 dnl = Enable jemalloc
6926 dnl ========================================================
6927 MOZ_ARG_ENABLE_BOOL(jemalloc,
6928 [ --enable-jemalloc Replace memory allocator with jemalloc],
6932 if test "$NS_TRACE_MALLOC"; then
6936 if test "${OS_TARGET}" = "Android"; then
6937 dnl On Android, we use WRAP_LDFLAGS to link everything to mozglue
6939 elif test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin"; then
6940 dnl On Windows and OSX, we want to link all our binaries against mozglue
6941 if test -z "$GNU_CC"; then
6942 MOZ_GLUE_LDFLAGS='$(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
6944 MOZ_GLUE_LDFLAGS='-L$(LIBXUL_DIST)/lib $(call EXPAND_LIBNAME,mozglue)'
6947 dnl On other Unix systems, we only want to link executables against mozglue
6948 MOZ_GLUE_PROGRAM_LDFLAGS='$(MKSHLIB_FORCE_ALL) $(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
6949 dnl On other Unix systems, where mozglue is a static library, jemalloc is
6950 dnl separated for the SDK, so we need to add it here.
6951 if test "$MOZ_MEMORY" = 1 -o \( "$LIBXUL_SDK" -a -f "$LIBXUL_SDK/lib/${LIB_PREFIX}memory.${LIB_SUFFIX}" \); then
6952 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(call EXPAND_LIBNAME_PATH,memory,$(LIBXUL_DIST)/lib)'
6954 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(MKSHLIB_UNFORCE_ALL)'
6955 if test -n "$GNU_CC"; then
6956 dnl And we need mozglue symbols to be exported.
6957 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS -rdynamic"
6959 if test "$MOZ_LINKER" = 1; then
6960 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS $MOZ_ZLIB_LIBS"
6964 dnl ========================================================
6965 dnl = Enable dynamic replacement of malloc implementation
6966 dnl ========================================================
6967 if test -n "$NIGHTLY_BUILD" -a -n "$MOZ_MEMORY"; then
6968 # Enable on central for the debugging opportunities it adds.
6969 MOZ_REPLACE_MALLOC=1
6971 MOZ_ARG_ENABLE_BOOL(replace-malloc,
6972 [ --enable-replace-malloc Enable ability to dynamically replace the malloc implementation],
6973 MOZ_REPLACE_MALLOC=1,
6974 MOZ_REPLACE_MALLOC= )
6976 dnl The two options are conflicting. Fails the configure to alert the user.
6977 if test "$NS_TRACE_MALLOC" -a "$MOZ_REPLACE_MALLOC"; then
6978 AC_MSG_ERROR([--enable-trace-malloc and --enable-replace-malloc are conflicting options])
6981 if test -n "$MOZ_REPLACE_MALLOC" -a -z "$MOZ_MEMORY"; then
6982 dnl We don't want to enable jemalloc unconditionally because it may be a
6983 dnl deliberate choice not to enable it (bug 702250, for instance)
6984 AC_MSG_ERROR([--enable-replace-malloc requires --enable-jemalloc])
6985 elif test -n "$MOZ_REPLACE_MALLOC"; then
6986 MOZ_NATIVE_JEMALLOC=
6988 dnl Replace-malloc Mac linkage quirks
6989 if test -n "$MACOSX_DEPLOYMENT_TARGET"; then
6990 AC_CACHE_CHECK([how to do weak dynamic linking],
6991 ac_cv_weak_dynamic_linking,
6992 [echo 'extern void foo() __attribute__((weak_import));int bar() { if (foo) foo(); return 0; }' > conftest.c
6993 if AC_TRY_COMMAND([${CC-cc} -o conftest${DLL_SUFFIX} $CFLAGS -dynamiclib $LDFLAGS -Wl,-U,_foo conftest.c $LIBS 1>&5]) &&
6994 test -s conftest${DLL_SUFFIX}; then
6995 dnl There are several ways the linker can put link edit rules in a binary:
6996 dnl - classic info only (for OSX < 10.6)
6997 dnl - dyld info only
6999 if otool -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO_ONLY" > /dev/null; then
7004 if otool -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO" > /dev/null; then
7009 dnl With classic info, we need to build with -flat_namespace.
7010 dnl With dyld info, Xcode 4.5 does the right thing without additional flags,
7011 dnl but Xcode < 4.5 requires a dummy library and -flat_namespace because it
7012 dnl forgets to set the weak flag in the dyld info.
7013 dnl See http://glandium.org/blog/?p=2764 for more details.
7015 dnl Values for ac_cv_weak_dynamic_linking, and subsequently
7016 dnl MOZ_REPLACE_MALLOC_LINKAGE are thus:
7017 dnl - "flat namespace" when -flat_namespace alone is needed
7018 dnl - "dummy library" when a dummy library and -flat_namespace are needed
7019 dnl - "compiler support" when nothing is needed
7020 if test -n "$_DYLD_INFO" && dyldinfo -bind conftest${DLL_SUFFIX} 2> /dev/null | grep "_foo (weak import)" > /dev/null; then
7021 if test -n "$_CLASSIC_INFO"; then
7022 ac_cv_weak_dynamic_linking="flat namespace"
7024 ac_cv_weak_dynamic_linking="compiler support"
7027 if test -n "$_DYLD_INFO"; then
7028 ac_cv_weak_dynamic_linking="dummy library"
7030 ac_cv_weak_dynamic_linking="flat namespace"
7034 AC_ERROR([couldn't compile a simple C file])
7037 MOZ_REPLACE_MALLOC_LINKAGE="$ac_cv_weak_dynamic_linking"
7040 AC_SUBST(MOZ_REPLACE_MALLOC)
7041 AC_SUBST(MOZ_REPLACE_MALLOC_LINKAGE)
7043 dnl ========================================================
7044 dnl = Jemalloc build setup
7045 dnl ========================================================
7046 if test -z "$MOZ_MEMORY"; then
7047 if test -n "$MOZ_JEMALLOC3" -a -z "$MOZ_REPLACE_MALLOC"; then
7048 MOZ_NATIVE_JEMALLOC=1
7049 AC_CHECK_FUNCS(mallctl nallocm,,
7050 [MOZ_NATIVE_JEMALLOC=
7052 if test -n "$MOZ_NATIVE_JEMALLOC"; then
7054 AC_DEFINE(MOZ_MEMORY)
7055 AC_DEFINE(MOZ_JEMALLOC3)
7056 AC_DEFINE(MOZ_NATIVE_JEMALLOC)
7061 if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
7062 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.])
7067 AC_DEFINE(MOZ_MEMORY)
7068 if test -n "$MOZ_JEMALLOC3"; then
7069 AC_DEFINE(MOZ_JEMALLOC3)
7071 if test "x$MOZ_DEBUG" = "x1"; then
7072 AC_DEFINE(MOZ_MEMORY_DEBUG)
7074 dnl The generic feature tests that determine how to compute ncpus are long and
7075 dnl complicated. Therefore, simply define special cpp variables for the
7076 dnl platforms we have special knowledge of.
7079 AC_DEFINE(MOZ_MEMORY_DARWIN)
7082 AC_DEFINE(MOZ_MEMORY_BSD)
7084 *-android*|*-linuxandroid*)
7085 AC_DEFINE(MOZ_MEMORY_LINUX)
7086 AC_DEFINE(MOZ_MEMORY_ANDROID)
7087 if test -z "$gonkdir"; then
7090 AC_DEFINE(MOZ_MEMORY_GONK)
7095 AC_DEFINE(MOZ_MEMORY_LINUX)
7098 AC_DEFINE(MOZ_MEMORY_BSD)
7101 AC_DEFINE(MOZ_MEMORY_SOLARIS)
7104 AC_DEFINE(MOZ_MEMORY_WINDOWS)
7105 export MOZ_NO_DEBUG_RTL=1
7106 WIN32_CRT_LIBS="msvcrt.lib msvcprt.lib"
7107 dnl Look for a broken crtdll.obj
7108 WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj`
7109 lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH
7110 if grep -q '__imp__\{0,1\}free' crtdll.obj; then
7111 MOZ_GLUE_LDFLAGS='-LIBPATH:$(DIST)/lib -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcprt -DEFAULTLIB:mozcrt'
7112 dnl Also pass this to NSPR/NSS
7113 DLLFLAGS="$DLLFLAGS $MOZ_GLUE_LDFLAGS"
7115 DLLFLAGS="$DLLFLAGS -LIBPATH:\$(DIST)/lib -DEFAULTLIB:mozglue"
7122 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7126 AC_SUBST(MOZ_MEMORY)
7127 AC_SUBST(MOZ_JEMALLOC3)
7128 AC_SUBST(MOZ_NATIVE_JEMALLOC)
7129 AC_SUBST(MOZ_GLUE_LDFLAGS)
7130 AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS)
7131 AC_SUBST(WIN32_CRT_LIBS)
7132 dnl Need to set this for make because NSS doesn't have configure
7135 dnl We need to wrap dlopen and related functions on Android because we use
7137 if test "$OS_TARGET" = Android; then
7138 WRAP_LDFLAGS="${WRAP_LDFLAGS} -L$_objdir/dist/lib -lmozglue"
7139 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=PR_GetEnv,--wrap=PR_SetEnv"
7140 if test "$MOZ_WIDGET_TOOLKIT" = android; then
7141 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=getaddrinfo,--wrap=freeaddrinfo,--wrap=gai_strerror"
7143 if test -z "$gonkdir"; then
7144 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=fork,--wrap=pthread_atfork,--wrap=raise"
7145 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"
7147 if test "$MOZ_WIDGET_TOOLKIT" = gonk -a -n "$MOZ_NUWA_PROCESS"; then
7148 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"
7152 dnl ========================================================
7153 dnl = Use malloc wrapper lib
7154 dnl ========================================================
7155 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
7156 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
7160 if test -n "$_WRAP_MALLOC"; then
7161 if test -n "$GNU_CC"; then
7162 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=malloc,--wrap=calloc,--wrap=valloc,--wrap=free,--wrap=realloc,--wrap=memalign"
7163 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=__builtin_new,--wrap=__builtin_vec_new,--wrap=__builtin_delete,--wrap=__builtin_vec_delete"
7164 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=strdup,--wrap=strndup"
7165 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=vasprintf,--wrap=asprintf"
7166 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=posix_memalign,--wrap=malloc_usable_size"
7167 dnl Wrap operator new and operator delete on Android.
7168 if test "$OS_TARGET" = "Android"; then
7169 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_Znwj,--wrap=_Znaj,--wrap=_ZdlPv,--wrap=_ZdaPv"
7170 dnl Wrap the nothrow variants too.
7171 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_ZnwjRKSt9nothrow_t,--wrap=_ZnajRKSt9nothrow_t,--wrap=_ZdlPvRKSt9nothrow_t,--wrap=_ZdaPvRKSt9nothrow_t"
7174 AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains])
7178 dnl ========================================================
7179 dnl = Location of malloc wrapper lib
7180 dnl ========================================================
7181 MOZ_ARG_WITH_STRING(wrap-malloc,
7182 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
7183 WRAP_LDFLAGS="${WRAP_LDFLAGS} $withval")
7185 dnl ========================================================
7186 dnl = Use JS Call tracing
7187 dnl ========================================================
7188 MOZ_ARG_ENABLE_BOOL(trace-jscalls,
7189 [ --enable-trace-jscalls Enable JS call enter/exit callback (default=no)],
7190 MOZ_TRACE_JSCALLS=1,
7191 MOZ_TRACE_JSCALLS= )
7192 if test -n "$MOZ_TRACE_JSCALLS"; then
7193 AC_DEFINE(MOZ_TRACE_JSCALLS)
7196 dnl ========================================================
7197 dnl JS opt-mode assertions and minidump instrumentation
7198 dnl ========================================================
7199 MOZ_ARG_ENABLE_BOOL(js-diagnostics,
7200 [ --enable-js-diagnostics
7201 Enable JS diagnostic assertions and breakpad data],
7202 JS_CRASH_DIAGNOSTICS=1,
7203 JS_CRASH_DIAGNOSTICS= )
7204 if test -n "$JS_CRASH_DIAGNOSTICS"; then
7205 AC_DEFINE(JS_CRASH_DIAGNOSTICS)
7208 dnl ========================================================
7209 dnl = Use incremental GC
7210 dnl ========================================================
7212 MOZ_ARG_DISABLE_BOOL(gcincremental,
7213 [ --disable-gcincremental Disable incremental GC],
7215 if test -n "$JSGC_INCREMENTAL"; then
7216 AC_DEFINE(JSGC_INCREMENTAL)
7219 dnl ========================================================
7220 dnl = Use exact stack rooting for GC
7221 dnl ========================================================
7222 MOZ_ARG_DISABLE_BOOL(exact-rooting,
7223 [ --disable-exact-rooting Enable use of conservative stack scanning for GC],
7224 JSGC_USE_EXACT_ROOTING= ,
7225 JSGC_USE_EXACT_ROOTING=1 )
7226 if test -n "$JSGC_USE_EXACT_ROOTING"; then
7227 AC_DEFINE(JSGC_USE_EXACT_ROOTING)
7230 dnl ========================================================
7231 dnl = Use generational GC
7232 dnl ========================================================
7233 MOZ_ARG_DISABLE_BOOL(gcgenerational,
7234 [ --disable-gcgenerational Disable generational GC],
7235 JSGC_GENERATIONAL= ,
7236 JSGC_GENERATIONAL=1 )
7237 if test -n "$JSGC_GENERATIONAL"; then
7238 AC_DEFINE(JSGC_GENERATIONAL)
7241 dnl ========================================================
7242 dnl Zealous JavaScript GC
7243 dnl ========================================================
7244 MOZ_ARG_ENABLE_BOOL(gczeal,
7245 [ --enable-gczeal Enable zealous JavaScript GCing],
7248 if test -n "$JS_GC_ZEAL" -o -n "$MOZ_DEBUG"; then
7249 AC_DEFINE(JS_GC_ZEAL)
7252 dnl ========================================================
7253 dnl = Perform moving GC stack rooting analysis
7254 dnl ========================================================
7255 MOZ_ARG_ENABLE_BOOL(root-analysis,
7256 [ --enable-root-analysis Enable moving GC stack root analysis],
7257 JSGC_ROOT_ANALYSIS=1,
7258 JSGC_ROOT_ANALYSIS= )
7259 if test -n "$JSGC_ROOT_ANALYSIS"; then
7260 AC_DEFINE(JSGC_ROOT_ANALYSIS)
7265 dnl ========================================================
7266 dnl = Enable static checking using gcc-dehydra
7267 dnl ========================================================
7269 MOZ_ARG_WITH_STRING(static-checking,
7270 [ --with-static-checking=path/to/gcc_dehydra.so
7271 Enable static checking of code using GCC-dehydra],
7272 DEHYDRA_PATH=$withval,
7275 if test -n "$DEHYDRA_PATH"; then
7276 if test ! -f "$DEHYDRA_PATH"; then
7277 AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7279 AC_DEFINE(NS_STATIC_CHECKING)
7281 AC_SUBST(DEHYDRA_PATH)
7283 dnl ========================================================
7284 dnl = Enable using the clang plugin to build
7285 dnl ========================================================
7287 MOZ_ARG_ENABLE_BOOL(clang-plugin,
7288 [ --enable-clang-plugin Enable building with the mozilla clang plugin ],
7289 ENABLE_CLANG_PLUGIN=1,
7290 ENABLE_CLANG_PLUGIN= )
7291 if test -n "$ENABLE_CLANG_PLUGIN"; then
7292 if test -z "$CLANG_CC"; then
7293 AC_MSG_ERROR([Can't use clang plugin without clang.])
7295 AC_DEFINE(MOZ_CLANG_PLUGIN)
7298 AC_SUBST(ENABLE_CLANG_PLUGIN)
7300 dnl ========================================================
7301 dnl = Enable stripping of libs & executables
7302 dnl ========================================================
7303 MOZ_ARG_ENABLE_BOOL(strip,
7304 [ --enable-strip Enable stripping of libs & executables ],
7308 dnl ========================================================
7309 dnl = Enable stripping of libs & executables when packaging
7310 dnl ========================================================
7311 MOZ_ARG_ENABLE_BOOL(install-strip,
7312 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
7316 dnl ========================================================
7317 dnl = --disable-elf-hack
7318 dnl ========================================================
7321 MOZ_ARG_DISABLE_BOOL(elf-hack,
7322 [ --disable-elf-hack Disable elf hacks],
7324 [USE_ELF_HACK=F # Force enable elf-hack])
7326 # Disable elf hack for profiling because the built in profiler
7327 # doesn't read the segments properly with elf hack. This is
7328 # temporary and should be fixed soon in the profiler.
7329 if test "$MOZ_PROFILING" = 1; then
7330 if test "$USE_ELF_HACK" = F; then
7331 AC_ERROR([--enable-elf-hack is not compatible with --enable-profiling])
7336 # Only enable elfhack where supported
7337 if test "$USE_ELF_HACK" = 1; then
7338 case "${HOST_OS_ARCH},${OS_ARCH}" in
7340 case "${CPU_ARCH}" in
7355 if test -n "$COMPILE_ENVIRONMENT" -a -n "$USE_ELF_HACK"; then
7356 dnl PT_GNU_RELRO segment makes the dynamic linker set a read-only flag on
7357 dnl memory addresses it maps to. The result is that by the time elfhack
7358 dnl kicks in, it is not possible to apply relocations because of that,
7359 dnl thus elfhack effectively skips relocations inside the PT_GNU_RELRO
7360 dnl segment. It makes elfhack mostly useless, so considering the problems
7361 dnl we have we PT_GNU_RELRO (e.g. bug 664366), and until elfhack can deal
7362 dnl with PT_GNU_RELRO segments, it's just simpler to disable elfhack when
7363 dnl the linker creates PT_GNU_RELRO segments. However, when we do want
7364 dnl elfhack enabled, disable PT_GNU_RELRO instead.
7365 AC_CACHE_CHECK([whether linker creates PT_GNU_RELRO segments],
7366 LINK_WITH_PT_GNU_RELRO,
7367 [echo "int main() {return 0;}" > conftest.${ac_ext}
7368 if AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.${ac_ext} $LIBS 1>&2) &&
7369 test -s conftest${ac_exeext}; then
7370 if ${TOOLCHAIN_PREFIX}readelf -l conftest${ac_exeext} | grep GNU_RELRO > /dev/null; then
7371 LINK_WITH_PT_GNU_RELRO=yes
7373 LINK_WITH_PT_GNU_RELRO=no
7376 dnl We really don't expect to get here, but just in case
7377 AC_ERROR([couldn't compile a simple C file])
7380 if test "$LINK_WITH_PT_GNU_RELRO" = yes; then
7381 if test "$USE_ELF_HACK" = F; then
7382 AC_MSG_CHECKING([for -z norelro option to ld])
7383 _SAVE_LDFLAGS=$LDFLAGS
7384 LDFLAGS="$LDFLAGS -Wl,-z,norelro"
7385 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
7386 [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,norelro"],
7387 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.]))
7390 AC_MSG_WARN([Disabling elfhack])
7396 dnl ========================================================
7397 dnl = libstdc++ compatibility hacks
7398 dnl ========================================================
7401 MOZ_ARG_ENABLE_BOOL(stdcxx-compat,
7402 [ --enable-stdcxx-compat Enable compatibility with older libstdc++],
7405 if test -n "$STDCXX_COMPAT"; then
7406 eval $(CXX="$CXX" HOST_CXX="$HOST_CXX" $PYTHON -m mozbuild.configure.libstdcxx)
7407 AC_SUBST(MOZ_LIBSTDCXX_TARGET_VERSION)
7408 AC_SUBST(MOZ_LIBSTDCXX_HOST_VERSION)
7411 dnl ========================================================
7413 dnl = Profiling and Instrumenting
7415 dnl ========================================================
7416 MOZ_ARG_HEADER(Profiling and Instrumenting)
7418 dnl ========================================================
7419 dnl = Enable runtime visual profiling logger
7420 dnl ========================================================
7421 MOZ_ARG_ENABLE_BOOL(visual-event-tracer,
7422 [ --enable-visual-event-tracer Enable visual event tracer instrumentation],
7423 MOZ_VISUAL_EVENT_TRACER=1,
7424 MOZ_VISUAL_EVENT_TRACER=)
7425 if test -n "$MOZ_VISUAL_EVENT_TRACER"; then
7426 AC_DEFINE(MOZ_VISUAL_EVENT_TRACER)
7429 dnl ========================================================
7430 dnl = Enable TaskTracer
7431 dnl ========================================================
7432 MOZ_ARG_ENABLE_BOOL(tasktracer,
7433 [ --enable-tasktracer Set compile flags necessary for using TaskTracer],
7436 if test "$MOZ_WIDGET_TOOLKIT" = "gonk" -a -n "$MOZ_TASK_TRACER"; then
7437 AC_DEFINE(MOZ_TASK_TRACER)
7438 AC_SUBST(MOZ_TASK_TRACER)
7441 dnl ========================================================
7442 dnl Turn on reflow counting
7443 dnl ========================================================
7444 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7445 [ --enable-reflow-perf Enable reflow performance tracing],
7448 if test -n "$MOZ_REFLOW_PERF"; then
7449 AC_DEFINE(MOZ_REFLOW_PERF)
7452 dnl ========================================================
7453 dnl = Offer a way to disable the startup cache
7454 dnl ========================================================
7455 MOZ_DISABLE_STARTUPCACHE=
7457 MOZ_ARG_DISABLE_BOOL(startupcache,
7458 [ --disable-startupcache Disable startup cache ],
7459 MOZ_DISABLE_STARTUPCACHE=1,
7460 MOZ_DISABLE_STARTUPCACHE=)
7462 dnl bug 988880: disable startup cache on b2g
7463 if test -n "$MOZ_B2G"; then
7464 MOZ_DISABLE_STARTUPCACHE=1
7467 AC_SUBST(MOZ_DISABLE_STARTUPCACHE)
7469 dnl ========================================================
7470 dnl = Enable Radio Interface for B2G (Gonk usually)
7471 dnl ========================================================
7472 MOZ_ARG_ENABLE_BOOL(b2g-ril,
7473 [ --enable-b2g-ril Set compile flags necessary for testing B2G Radio Interface Layer via network sockets ],
7476 MOZ_B2G_RIL=$_PLATFORM_HAVE_RIL )
7477 if test -n "$MOZ_B2G_RIL"; then
7478 if test -n "$_PLATFORM_HAVE_RIL"; then
7479 AC_DEFINE(MOZ_B2G_RIL)
7481 AC_MSG_ERROR([b2g-ril cannot be enabled because target platform doesn't support it.])
7484 AC_SUBST(MOZ_B2G_RIL)
7486 dnl ========================================================
7487 dnl = Enable Radio FM for B2G (Gonk usually)
7488 dnl ========================================================
7489 if test -n "$MOZ_B2G_FM"; then
7490 AC_DEFINE(MOZ_B2G_FM)
7492 AC_SUBST(MOZ_B2G_FM)
7494 dnl ========================================================
7495 dnl = Enable Bluetooth Interface for B2G (Gonk usually)
7496 dnl ========================================================
7497 MOZ_ARG_ENABLE_BOOL(b2g-bt,
7498 [ --enable-b2g-bt Set compile flags necessary for compiling Bluetooth API for B2G ],
7501 if test -n "$MOZ_B2G_BT"; then
7502 AC_DEFINE(MOZ_B2G_BT)
7504 AC_SUBST(MOZ_B2G_BT)
7505 AC_SUBST(MOZ_B2G_BT_BLUEZ)
7506 AC_SUBST(MOZ_B2G_BT_BLUEDROID)
7508 dnl ========================================================
7509 dnl = Enable NFC Interface for B2G (Gonk usually)
7510 dnl ========================================================
7511 MOZ_ARG_ENABLE_BOOL(nfc,
7512 [ --enable-nfc Set compile flags necessary for compiling NFC API ],
7515 if test -n "$MOZ_NFC"; then
7520 dnl ========================================================
7521 dnl = Enable Pico Speech Synthesis (Gonk usually)
7522 dnl ========================================================
7523 MOZ_ARG_ENABLE_BOOL(synth-pico,
7524 [ --enable-synth-pico Set compile flags necessary for compiling Pico Web Speech API ],
7527 if test -n "$MOZ_SYNTH_PICO"; then
7528 AC_DEFINE(MOZ_SYNTH_PICO)
7530 AC_SUBST(MOZ_SYNTH_PICO)
7532 dnl ========================================================
7533 dnl = Enable Support for Time Manager API
7534 dnl ========================================================
7535 if test -n "$MOZ_TIME_MANAGER"; then
7536 AC_DEFINE(MOZ_TIME_MANAGER)
7538 AC_SUBST(MOZ_TIME_MANAGER)
7540 dnl ========================================================
7541 dnl = Enable Camera Interface for B2G (Gonk usually)
7542 dnl ========================================================
7543 MOZ_ARG_ENABLE_BOOL(b2g-camera,
7544 [ --enable-b2g-camera Set compile flags necessary for compiling camera API for B2G ],
7547 if test -n "$MOZ_B2G_CAMERA"; then
7548 AC_DEFINE(MOZ_B2G_CAMERA)
7550 AC_SUBST(MOZ_B2G_CAMERA)
7552 dnl ========================================================
7553 dnl = Enable Support for Payment API
7554 dnl ========================================================
7555 if test -n "$MOZ_PAY"; then
7560 dnl ========================================================
7561 dnl = Enable Browser Support for Activities
7562 dnl ========================================================
7563 if test -n "$MOZ_ACTIVITIES"; then
7564 AC_DEFINE(MOZ_ACTIVITIES)
7566 AC_SUBST(MOZ_ACTIVITIES)
7568 dnl ========================================================
7569 dnl = Enable Support for AudioChannelManager API
7570 dnl ========================================================
7571 if test -n "$MOZ_AUDIO_CHANNEL_MANAGER"; then
7572 AC_DEFINE(MOZ_AUDIO_CHANNEL_MANAGER)
7574 AC_SUBST(MOZ_AUDIO_CHANNEL_MANAGER)
7576 dnl ========================================================
7577 dnl = Enable Support for Firefox Accounts (services/fxaccounts)
7578 dnl ========================================================
7579 if test -n "$MOZ_SERVICES_FXACCOUNTS"; then
7580 AC_DEFINE(MOZ_SERVICES_FXACCOUNTS)
7582 AC_SUBST(MOZ_SERVICES_FXACCOUNTS)
7584 dnl ========================================================
7585 dnl = Support for demangling undefined symbols
7586 dnl ========================================================
7587 if test -z "$SKIP_LIBRARY_CHECKS"; then
7590 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7594 # Demangle only for debug or trace-malloc or DMD builds
7595 MOZ_DEMANGLE_SYMBOLS=
7596 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC" -o "$MOZ_DMD"; then
7597 MOZ_DEMANGLE_SYMBOLS=1
7598 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7600 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7602 dnl ========================================================
7603 dnl = Support for gcc stack unwinding (from gcc 3.3)
7604 dnl ========================================================
7605 if test -z "$SKIP_LIBRARY_CHECKS"; then
7608 MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7612 dnl ========================================================
7614 dnl ========================================================
7616 MOZ_ARG_WITH_STRING(jitreport-granularity,
7617 [ --jitreport-granularity=N
7618 Default granularity at which to report JIT code
7621 1 - code ranges for whole functions only
7622 2 - per-line information
7623 3 - per-op information],
7624 JITREPORT_GRANULARITY=$withval,
7625 JITREPORT_GRANULARITY=3)
7627 AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY)
7629 dnl ========================================================
7633 dnl ========================================================
7634 MOZ_ARG_HEADER(Misc. Options)
7636 dnl ========================================================
7637 dnl update xterm title
7638 dnl ========================================================
7639 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7640 [ --enable-xterm-updates Update XTERM titles with current command.],
7644 dnl =========================================================
7646 dnl =========================================================
7647 MOZ_ARG_ENABLE_STRING([chrome-format],
7648 [ --enable-chrome-format=jar|flat|omni
7649 Select FORMAT of chrome files during packaging],
7650 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7652 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7653 MOZ_CHROME_FILE_FORMAT=jar
7656 if test "$MOZ_CHROME_FILE_FORMAT" = "symlink"; then
7657 AC_MSG_ERROR([--enable-chrome-format=symlink has been deprecated. It is now used by default in $DIST/bin on platforms that support it])
7660 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
7661 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7662 test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7663 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, or omni])
7666 dnl ========================================================
7667 dnl = Enable Support for devtools webide
7668 dnl ========================================================
7669 MOZ_ARG_ENABLE_BOOL(devtools-webide,
7670 [ --enable-devtools-webide Set compile flags necessary for compiling devtools webide ],
7671 MOZ_DEVTOOLS_WEBIDE=1,
7672 MOZ_DEVTOOLS_WEBIDE= )
7674 if test -n "$MOZ_DEVTOOLS_WEBIDE"; then
7675 AC_DEFINE(MOZ_DEVTOOLS_WEBIDE)
7677 AC_SUBST(MOZ_DEVTOOLS_WEBIDE)
7679 dnl =========================================================
7680 dnl Omnijar packaging (bug 552121)
7681 dnl =========================================================
7682 dnl Omnijar packaging is compatible with flat packaging.
7683 dnl In unpackaged builds, omnijar looks for files as if
7684 dnl things were flat packaged. After packaging, all files
7685 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7686 dnl is set to flat since putting files into jars is only
7687 dnl done during packaging with omnijar.
7688 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7690 AC_DEFINE(MOZ_OMNIJAR)
7692 MOZ_PACKAGER_FORMAT="$MOZ_CHROME_FILE_FORMAT"
7693 if test "$OS_ARCH" = "WINNT" -o "$MOZ_WIDGET_TOOLKIT" = "android"; then
7694 MOZ_CHROME_FILE_FORMAT=flat
7696 MOZ_CHROME_FILE_FORMAT=symlink
7699 if test "$MOZ_WIDGET_TOOLKIT" = "android"; then
7700 dnl Fennec's static resources live in the assets/ folder of the
7701 dnl APK. Adding a path to the name here works because we only
7702 dnl have one omnijar file in the final package (which is not the
7703 dnl case on desktop), and necessitates some contortions during
7704 dnl packaging so that the resources in the omnijar are considered
7705 dnl as rooted at / and not as rooted at assets/ (which again is
7706 dnl not the case on desktop: there are omnijars rooted at webrtc/,
7707 dnl etc). packager.mk handles changing the rooting of the single
7709 OMNIJAR_NAME=assets/omni.ja
7711 OMNIJAR_NAME=omni.ja
7714 AC_SUBST(OMNIJAR_NAME)
7715 AC_SUBST(MOZ_OMNIJAR)
7716 AC_SUBST(MOZ_PACKAGER_FORMAT)
7718 dnl ========================================================
7719 dnl = Define default location for MOZILLA_FIVE_HOME
7720 dnl ========================================================
7721 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7722 [ --with-default-mozilla-five-home
7723 Set the default value for MOZILLA_FIVE_HOME],
7724 [ val=`echo $withval`
7725 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7727 dnl ========================================================
7728 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7729 dnl ========================================================
7730 MOZ_ARG_WITH_STRING(user-appdir,
7731 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
7732 [ val=`echo $withval`
7733 if echo "$val" | grep "\/" >/dev/null; then
7734 AC_MSG_ERROR("Homedir must be single relative path.")
7739 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7741 dnl ========================================================
7742 dnl = Doxygen configuration
7743 dnl ========================================================
7744 dnl Use commas to specify multiple dirs to this arg
7745 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7746 MOZ_ARG_WITH_STRING(doc-input-dirs,
7747 [ --with-doc-input-dirs=DIRS
7748 Header/idl dirs to create docs from],
7749 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7750 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7752 dnl Use commas to specify multiple dirs to this arg
7753 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7754 MOZ_ARG_WITH_STRING(doc-include-dirs,
7755 [ --with-doc-include-dirs=DIRS
7756 Include dirs to preprocess doc headers],
7757 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7758 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7760 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7761 MOZ_ARG_WITH_STRING(doc-output-dir,
7762 [ --with-doc-output-dir=DIR
7763 Dir to generate docs into],
7764 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7765 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7767 if test -z "$SKIP_COMPILER_CHECKS"; then
7768 dnl ========================================================
7770 dnl = Compiler Options
7772 dnl ========================================================
7773 MOZ_ARG_HEADER(Compiler Options)
7775 dnl ========================================================
7776 dnl Check for gcc -pipe support
7777 dnl ========================================================
7778 AC_MSG_CHECKING([for -pipe support])
7779 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
7780 dnl Any gcc that supports firefox supports -pipe.
7781 CFLAGS="$CFLAGS -pipe"
7782 CXXFLAGS="$CXXFLAGS -pipe"
7783 AC_MSG_RESULT([yes])
7788 dnl ========================================================
7789 dnl Profile guided optimization (gcc checks)
7790 dnl ========================================================
7791 dnl Test for profiling options
7792 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
7794 _SAVE_CFLAGS="$CFLAGS"
7795 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
7797 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
7798 AC_TRY_COMPILE([], [return 0;],
7799 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
7800 result="yes" ], result="no")
7801 AC_MSG_RESULT([$result])
7803 if test $result = "yes"; then
7804 PROFILE_GEN_LDFLAGS="-fprofile-generate"
7805 PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch"
7806 PROFILE_USE_LDFLAGS="-fprofile-use"
7809 CFLAGS="$_SAVE_CFLAGS"
7811 if test -n "$INTEL_CC"; then
7812 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
7813 PROFILE_GEN_LDFLAGS=
7814 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
7815 PROFILE_USE_LDFLAGS=
7818 dnl Sun Studio on Solaris
7819 if test "$SOLARIS_SUNPRO_CC"; then
7820 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
7821 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7822 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7823 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7826 AC_SUBST(PROFILE_GEN_CFLAGS)
7827 AC_SUBST(PROFILE_GEN_LDFLAGS)
7828 AC_SUBST(PROFILE_USE_CFLAGS)
7829 AC_SUBST(PROFILE_USE_LDFLAGS)
7833 dnl ========================================================
7834 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7835 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7836 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
7837 dnl ========================================================
7838 _SAVE_CXXFLAGS=$CXXFLAGS
7839 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7840 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7841 ac_nscap_nonconst_opeq_bug,
7850 template <class T, class U>
7851 int operator==(const Pointer<T>& rhs, U* lhs)
7853 return rhs.myPtr == lhs;
7856 template <class T, class U>
7857 int operator==(const Pointer<T>& rhs, const U* lhs)
7859 return rhs.myPtr == lhs;
7867 ac_nscap_nonconst_opeq_bug="no",
7868 ac_nscap_nonconst_opeq_bug="yes")])
7869 CXXFLAGS="$_SAVE_CXXFLAGS"
7871 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7872 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7874 fi # ! SKIP_COMPILER_CHECKS
7876 AC_DEFINE(CPP_THROW_NEW, [throw()])
7879 if test "$COMPILE_ENVIRONMENT"; then
7881 fi # COMPILE_ENVIRONMENT
7883 dnl ========================================================
7885 dnl = Build depencency options
7887 dnl ========================================================
7888 MOZ_ARG_HEADER(Build dependencies)
7890 if test "$GNU_CC" -a "$GNU_CXX"; then
7891 _DEPEND_CFLAGS='-MD -MP -MF $(MDDEPDIR)/$(@F).pp'
7892 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7893 elif test "$SOLARIS_SUNPRO_CC"; then
7896 dnl Don't override this for MSVC
7897 if test -z "$_WIN32_MSVC"; then
7898 _USE_CPP_INCLUDE_FLAG=
7899 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7900 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7902 echo '#include <stdio.h>' > dummy-hello.c
7904 dnl This output is localized, split at the first double space or colon and space.
7905 _CL_PREFIX_REGEX="^\([^:]*:.*[ :] \)\(.*stdio.h\)$"
7906 CL_INCLUDES_PREFIX=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\1/p'`
7907 _CL_STDIO_PATH=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\2/p'`
7909 if ! test -e "$_CL_STDIO_PATH"; then
7910 AC_MSG_ERROR([Unable to parse cl -showIncludes prefix. This compiler's locale has an unsupported formatting.])
7912 if test -z "$CL_INCLUDES_PREFIX"; then
7913 AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
7915 AC_SUBST(CL_INCLUDES_PREFIX)
7918 dnl Make sure that the build system can handle non-ASCII characters
7919 dnl in environment variables to prevent it from breaking silently on
7920 dnl non-English systems.
7921 NONASCII=$'\241\241'
7926 dnl ========================================================
7928 dnl = Static Build Options
7930 dnl ========================================================
7931 MOZ_ARG_HEADER(Static build options)
7933 AC_SUBST(LIBXUL_LIBS)
7934 XPCOM_LIBS="$LIBXUL_LIBS"
7936 if test "$OS_ARCH" = "WINNT"; then
7937 GKMEDIAS_SHARED_LIBRARY=1
7938 AC_DEFINE(GKMEDIAS_SHARED_LIBRARY)
7940 AC_SUBST(GKMEDIAS_SHARED_LIBRARY)
7942 if test -z "$MOZ_NATIVE_ZLIB"; then
7943 if test -n "$JS_SHARED_LIBRARY" -o "$GKMEDIAS_SHARED_LIBRARY"; then
7945 AC_DEFINE(ZLIB_IN_MOZGLUE)
7949 AC_SUBST(ZLIB_IN_MOZGLUE)
7951 dnl ========================================================
7953 dnl = Standalone module options
7955 dnl ========================================================
7956 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7959 dnl ========================================================
7961 if test -z "$SKIP_PATH_CHECKS"; then
7962 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
7963 if test "$MOZ_ENABLE_GTK" ; then
7964 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7969 if test -z "${GLIB_GMODULE_LIBS}" \
7970 -a -n "${GLIB_CONFIG}"\
7971 -a "${GLIB_CONFIG}" != no\
7973 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7976 AC_SUBST(GLIB_CFLAGS)
7978 AC_SUBST(GLIB_GMODULE_LIBS)
7980 dnl ========================================================
7981 dnl Graphics checks.
7982 dnl ========================================================
7984 if test "${OS_TARGET}" = "WINNT"; then
7985 if $PERL -e "exit($MOZ_WINSDK_MAXVER < 0x06020000)"; then
7986 MOZ_ENABLE_DIRECT2D1_1=1
7987 AC_SUBST(MOZ_ENABLE_DIRECT2D1_1)
7991 if test "${OS_TARGET}" = "WINNT" -o \
7992 "${OS_ARCH}" = "Darwin" -o \
7993 "${MOZ_WIDGET_TOOLKIT}" = "android" -o \
7994 "${MOZ_WIDGET_TOOLKIT}" = "gonk" -o \
7995 "${MOZ_WIDGET_TOOLKIT}" = "gtk2" -o \
7996 "${MOZ_WIDGET_TOOLKIT}" = "gtk3"; then
7997 case "${target_cpu}" in
8009 MOZ_ARG_ENABLE_BOOL(skia,
8010 [ --enable-skia Enable use of Skia],
8014 if test "$USE_FC_FREETYPE"; then
8015 if test "$COMPILE_ENVIRONMENT"; then
8016 dnl ========================================================
8017 dnl = Check for freetype2 and its functionality
8018 dnl ========================================================
8019 PKG_CHECK_MODULES(FT2, freetype2 >= 6.1.0, _HAVE_FREETYPE2=1, _HAVE_FREETYPE2=)
8021 if test "$_HAVE_FREETYPE2"; then
8023 _SAVE_CFLAGS="$CFLAGS"
8024 LIBS="$LIBS $FT2_LIBS"
8025 CFLAGS="$CFLAGS $FT2_CFLAGS"
8027 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
8028 ac_cv_member_FT_Bitmap_Size_y_ppem,
8029 [AC_TRY_COMPILE([#include <ft2build.h>
8030 #include FT_FREETYPE_H],
8032 if (sizeof s.y_ppem) return 0;
8034 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
8035 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
8036 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
8037 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
8039 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
8041 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
8042 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
8043 [FT_Bitmap_Size structure includes y_ppem field])
8045 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table)
8048 CFLAGS="$_SAVE_CFLAGS"
8051 _SAVE_CPPFLAGS="$CPPFLAGS"
8052 CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
8053 MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
8054 [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
8055 CPPFLAGS="$_SAVE_CPPFLAGS"
8057 AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
8060 PKG_CHECK_MODULES(_FONTCONFIG, fontconfig,
8062 if test "$MOZ_PANGO"; then
8063 MOZ_PANGO_CFLAGS="$MOZ_PANGO_CFLAGS $_FONTCONFIG_CFLAGS"
8064 MOZ_PANGO_LIBS="$MOZ_PANGO_LIBS $_FONTCONFIG_LIBS"
8066 FT2_CFLAGS="$FT2_CFLAGS $_FONTCONFIG_CFLAGS"
8067 FT2_LIBS="$FT2_LIBS $_FONTCONFIG_LIBS"
8072 dnl ========================================================
8073 dnl Check for pixman and cairo
8074 dnl ========================================================
8076 if test "$MOZ_WIDGET_TOOLKIT" = "gtk3" ; then
8077 # cairo-gtk3 can be build with system-cairo only
8083 MOZ_ARG_ENABLE_BOOL(system-cairo,
8084 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
8089 MOZ_ARG_ENABLE_BOOL(system-pixman,
8090 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
8092 MOZ_TREE_PIXMAN=force,
8095 # System cairo depends on system pixman
8096 if test "$MOZ_TREE_PIXMAN" = "force"; then
8097 if test -z "$MOZ_TREE_CAIRO"; then
8098 AC_MSG_ERROR([--disable-system-pixman is incompatible with --enable-system-cairo.])
8102 elif test -z "$MOZ_TREE_CAIRO"; then
8106 if test "$MOZ_TREE_PIXMAN"; then
8107 AC_DEFINE(MOZ_TREE_PIXMAN)
8108 MOZ_PIXMAN_CFLAGS=""
8109 MOZ_PIXMAN_LIBS='$(call EXPAND_LIBNAME_PATH,mozlibpixman,$(DEPTH)/gfx/cairo/libpixman/src)'
8111 PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.19.2)
8112 MOZ_PIXMAN_CFLAGS="$PIXMAN_CFLAGS"
8113 MOZ_PIXMAN_LIBS="$PIXMAN_LIBS"
8115 AC_SUBST(MOZ_PIXMAN_CFLAGS)
8116 AC_SUBST(MOZ_PIXMAN_LIBS)
8118 # Check for headers defining standard int types.
8119 if test -n "$COMPILE_ENVIRONMENT"; then
8120 MOZ_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
8122 if test "${ac_cv_header_inttypes_h}" = "yes"; then
8127 AC_SUBST(HAVE_INTTYPES_H)
8129 if test "$MOZ_TREE_CAIRO"; then
8130 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
8131 AC_DEFINE(MOZ_TREE_CAIRO)
8133 if test "$OS_ARCH" = "WINNT"; then
8134 # For now we assume that we will have a uint64_t available through
8135 # one of the above headers or mozstdint.h.
8136 AC_DEFINE(HAVE_UINT64_T)
8139 # Define macros for cairo-features.h
8140 TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
8141 if test "$MOZ_X11"; then
8142 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
8143 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
8144 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
8145 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8146 MOZ_ENABLE_CAIRO_FT=1
8147 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
8149 case "$MOZ_WIDGET_TOOLKIT" in
8151 QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
8154 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
8155 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
8156 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
8159 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
8160 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
8161 if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
8162 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
8163 WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
8164 MOZ_ENABLE_D2D_SURFACE=1
8165 MOZ_ENABLE_DWRITE_FONT=1
8167 WIN32_DWRITE_FONT_FEATURE=
8168 WIN32_D2D_SURFACE_FEATURE=
8171 MOZ_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
8173 dnl D3D10 Layers depend on D2D Surfaces.
8174 if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
8175 MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
8179 AC_MSG_ERROR([cairo-gtk3 toolkit is incompatible with in-tree cairo. Please add --enable-system-cairo to your build config.])
8182 if test "$USE_FC_FREETYPE"; then
8183 FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
8185 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
8186 AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
8187 AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
8188 AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
8189 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
8190 AC_SUBST(CAIRO_FT_CFLAGS)
8192 AC_SUBST(PS_SURFACE_FEATURE)
8193 AC_SUBST(PDF_SURFACE_FEATURE)
8194 AC_SUBST(SVG_SURFACE_FEATURE)
8195 AC_SUBST(XLIB_SURFACE_FEATURE)
8196 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
8197 AC_SUBST(QUARTZ_SURFACE_FEATURE)
8198 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
8199 AC_SUBST(WIN32_SURFACE_FEATURE)
8200 AC_SUBST(OS2_SURFACE_FEATURE)
8201 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
8202 AC_SUBST(FT_FONT_FEATURE)
8203 AC_SUBST(FC_FONT_FEATURE)
8204 AC_SUBST(WIN32_FONT_FEATURE)
8205 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
8206 AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
8207 AC_SUBST(QUARTZ_FONT_FEATURE)
8208 AC_SUBST(PNG_FUNCTIONS_FEATURE)
8209 AC_SUBST(QT_SURFACE_FEATURE)
8210 AC_SUBST(TEE_SURFACE_FEATURE)
8212 MOZ_CAIRO_OSLIBS='${CAIRO_FT_OSLIBS}'
8214 if test "$MOZ_X11"; then
8215 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
8218 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
8220 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION)
8221 MOZ_CAIRO_CFLAGS="$CAIRO_CFLAGS"
8222 MOZ_CAIRO_LIBS="$CAIRO_LIBS"
8223 PKG_CHECK_MODULES(CAIRO_TEE, cairo-tee >= $CAIRO_VERSION)
8224 if test "$MOZ_X11"; then
8225 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
8226 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
8227 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_LIBS"
8228 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
8232 AC_SUBST(MOZ_TREE_CAIRO)
8233 AC_SUBST(MOZ_CAIRO_CFLAGS)
8234 AC_SUBST(MOZ_CAIRO_LIBS)
8235 AC_SUBST(MOZ_CAIRO_OSLIBS)
8236 AC_SUBST(MOZ_TREE_PIXMAN)
8238 dnl ========================================================
8240 dnl ========================================================
8241 if test "$MOZ_ENABLE_SKIA"; then
8242 AC_DEFINE(MOZ_ENABLE_SKIA)
8244 if test "${MOZ_WIDGET_TOOLKIT}" = "android" -o x"$MOZ_WIDGET_TOOLKIT" = x"gonk"; then
8245 AC_DEFINE(SK_BUILD_FOR_ANDROID_NDK)
8248 if test "${CPU_ARCH}" != "ppc" -a "${CPU_ARCH}" != "ppc64" -a "${CPU_ARCH}" != "sparc" ; then
8249 MOZ_ENABLE_SKIA_GPU=1
8250 AC_DEFINE(USE_SKIA_GPU)
8251 AC_SUBST(MOZ_ENABLE_SKIA_GPU)
8254 AC_SUBST(MOZ_ENABLE_SKIA)
8256 dnl ========================================================
8258 dnl ========================================================
8259 MOZ_ARG_DISABLE_BOOL(xul,
8260 [ --disable-xul Disable XUL],
8262 if test "$MOZ_XUL"; then
8265 dnl remove extensions that require XUL
8266 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8271 dnl ========================================================
8272 dnl disable profile locking
8273 dnl do no use this in applications that can have more than
8274 dnl one process accessing the profile directory.
8275 dnl ========================================================
8276 MOZ_ARG_DISABLE_BOOL(profilelocking,
8277 [ --disable-profilelocking
8278 Disable profile locking],
8279 MOZ_PROFILELOCKING=,
8280 MOZ_PROFILELOCKING=1 )
8281 if test "$MOZ_PROFILELOCKING"; then
8282 AC_DEFINE(MOZ_PROFILELOCKING)
8285 dnl ========================================================
8286 dnl necko configuration options
8287 dnl ========================================================
8290 dnl option to disable various necko protocols
8292 MOZ_ARG_ENABLE_STRING(necko-protocols,
8293 [ --enable-necko-protocols[={http,ftp,default,all,none}]
8294 Enable/disable specific protocol handlers],
8295 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8296 if test "$option" = "yes" -o "$option" = "all"; then
8297 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8298 elif test "$option" = "no" -o "$option" = "none"; then
8300 elif test "$option" = "default"; then
8301 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8302 elif test `echo "$option" | grep -c \^-` != 0; then
8303 option=`echo $option | sed 's/^-//'`
8304 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8306 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8309 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8311 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8312 AC_SUBST_SET(NECKO_PROTOCOLS)
8313 for p in $NECKO_PROTOCOLS; do
8314 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8315 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_PROTOCOL_$p"
8319 dnl option to disable necko's wifi scanner
8322 case "$OS_TARGET" in
8324 if test -n "$gonkdir"; then
8328 Darwin|FreeBSD|SunOS|WINNT)
8337 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8338 [ --disable-necko-wifi Disable necko wifi scanner],
8342 if test "$NECKO_WIFI"; then
8343 if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
8344 AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
8346 AC_DEFINE(NECKO_WIFI)
8347 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
8349 AC_SUBST(NECKO_WIFI)
8350 AC_SUBST(NECKO_WIFI_DBUS)
8353 dnl option to disable cookies
8355 MOZ_ARG_DISABLE_BOOL(cookies,
8356 [ --disable-cookies Disable cookie support],
8359 AC_SUBST(NECKO_COOKIES)
8360 if test "$NECKO_COOKIES"; then
8361 AC_DEFINE(NECKO_COOKIES)
8362 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
8366 dnl Always build Marionette if not Android or B2G
8368 if test "$OS_TARGET" != Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
8369 AC_DEFINE(ENABLE_MARIONETTE)
8371 AC_SUBST(ENABLE_MARIONETTE)
8372 if test "$ENABLE_MARIONETTE"; then
8373 AC_DEFINE(ENABLE_MARIONETTE)
8377 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8379 MOZ_ARG_DISABLE_BOOL(ctypes,
8380 [ --disable-ctypes Disable js-ctypes],
8383 AC_SUBST(BUILD_CTYPES)
8384 if test "$BUILD_CTYPES"; then
8385 AC_DEFINE(BUILD_CTYPES)
8388 dnl Build Loop if required
8390 if test "$MOZ_LOOP"; then
8394 dnl Build Places if required
8395 if test "$MOZ_PLACES"; then
8396 AC_DEFINE(MOZ_PLACES)
8399 dnl Build SocialAPI if required
8400 if test "$MOZ_SOCIAL"; then
8401 AC_DEFINE(MOZ_SOCIAL)
8404 dnl Build Common JS modules provided by services.
8405 AC_SUBST(MOZ_SERVICES_COMMON)
8406 if test -n "$MOZ_SERVICES_COMMON"; then
8407 AC_DEFINE(MOZ_SERVICES_COMMON)
8410 dnl Build Services crypto component (used by Sync)
8411 AC_SUBST(MOZ_SERVICES_CRYPTO)
8412 if test -n "$MOZ_SERVICES_CRYPTO"; then
8413 AC_DEFINE(MOZ_SERVICES_CRYPTO)
8416 dnl Build Firefox Health Reporter Service
8417 AC_SUBST(MOZ_SERVICES_HEALTHREPORT)
8418 if test -n "$MOZ_SERVICES_HEALTHREPORT"; then
8419 AC_DEFINE(MOZ_SERVICES_HEALTHREPORT)
8422 dnl Build Services metrics component
8423 AC_SUBST(MOZ_SERVICES_METRICS)
8424 if test -n "$MOZ_SERVICES_METRICS"; then
8425 AC_DEFINE(MOZ_SERVICES_METRICS)
8428 dnl Build Notifications if required
8429 AC_SUBST(MOZ_SERVICES_NOTIFICATIONS)
8430 if test -n "$MOZ_SERVICES_NOTIFICATIONS"; then
8431 AC_DEFINE(MOZ_SERVICES_NOTIFICATIONS)
8434 dnl Build Sync Services if required
8435 AC_SUBST(MOZ_SERVICES_SYNC)
8436 if test -n "$MOZ_SERVICES_SYNC"; then
8437 AC_DEFINE(MOZ_SERVICES_SYNC)
8440 dnl Build Captive Portal Detector if required
8441 AC_SUBST(MOZ_CAPTIVEDETECT)
8442 if test -n "$MOZ_CAPTIVEDETECT"; then
8443 AC_DEFINE(MOZ_CAPTIVEDETECT)
8446 dnl Build second screen and casting features for external devices if required
8447 AC_SUBST(MOZ_DEVICES)
8448 if test -n "$MOZ_DEVICES"; then
8449 AC_DEFINE(MOZ_DEVICES)
8452 dnl ========================================================
8453 if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC" -o "$MOZ_DMD"; then
8454 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8457 if test "$MOZ_APP_COMPONENT_INCLUDE"; then
8458 AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_INCLUDE, "$MOZ_APP_COMPONENT_INCLUDE")
8461 if test "$MOZ_APP_COMPONENT_MODULES"; then
8462 AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_MODULES, $MOZ_APP_COMPONENT_MODULES)
8465 dnl ========================================================
8467 dnl = Maintainer debug option (no --enable equivalent)
8469 dnl ========================================================
8474 AC_SUBST(AR_EXTRACT)
8478 AC_SUBST(AS_DASH_C_FLAG)
8487 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8488 AC_SUBST(MOZ_UPDATE_XTERM)
8489 AC_SUBST(MOZ_AUTH_EXTENSION)
8490 AC_SUBST(MOZ_PERMISSIONS)
8491 AC_SUBST(MOZ_PREF_EXTENSIONS)
8492 AC_SUBST(MOZ_JS_LIBS)
8494 AC_SUBST(MOZ_DEBUG_SYMBOLS)
8495 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
8496 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
8497 AC_SUBST(MOZ_DEBUG_LDFLAGS)
8498 AC_SUBST(WARNINGS_AS_ERRORS)
8499 AC_SUBST(MOZ_EXTENSIONS)
8500 AC_SUBST(MOZ_JSDEBUGGER)
8501 AC_SUBST(MOZ_ENABLE_PROFILER_SPS)
8504 AC_SUBST(MOZ_INSTRUMENTS)
8505 AC_SUBST(MOZ_CALLGRIND)
8507 AC_SUBST(MOZ_PROFILING)
8509 AC_SUBST(MOZ_PLACES)
8510 AC_SUBST(MOZ_SOCIAL)
8511 AC_SUBST(MOZ_TOOLKIT_SEARCH)
8513 AC_SUBST(NS_PRINTING)
8515 AC_SUBST(MOZ_HELP_VIEWER)
8516 AC_SUBST(TOOLCHAIN_PREFIX)
8525 AC_SUBST(MOZ_PROFILELOCKING)
8527 AC_SUBST(ENABLE_TESTS)
8528 AC_SUBST(MOZ_UNIVERSALCHARDET)
8529 AC_SUBST(ACCESSIBILITY)
8530 AC_SUBST(MOZ_SPELLCHECK)
8531 AC_SUBST(MOZ_ANDROID_OMTC)
8532 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
8533 AC_SUBST(MOZ_CRASHREPORTER)
8534 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
8535 AC_SUBST(MOZ_CRASHREPORTER_UPLOAD_FULL_SYMBOLS)
8536 AC_SUBST(MOZ_MAINTENANCE_SERVICE)
8537 AC_SUBST(MOZ_STUB_INSTALLER)
8538 AC_SUBST(MOZ_VERIFY_MAR_SIGNATURE)
8539 AC_SUBST(MOZ_ENABLE_SIGNMAR)
8540 AC_SUBST(MOZ_UPDATER)
8542 AC_SUBST(MOZ_ANGLE_RENDERER)
8543 AC_SUBST(MOZ_D3D_CPU_SUFFIX)
8544 AC_SUBST(MOZ_HAS_WINSDK_WITH_D3D)
8545 AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL)
8546 AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL_PATH)
8547 AC_SUBST(MOZ_DIRECTX_SDK_PATH)
8548 AC_SUBST(MOZ_D3DCOMPILER_XP_DLL)
8549 AC_SUBST(MOZ_D3DCOMPILER_XP_CAB)
8553 AC_SUBST(MOZ_ANDROID_HISTORY)
8554 AC_SUBST(MOZ_WEBSMS_BACKEND)
8555 AC_SUBST(MOZ_ANDROID_BEAM)
8556 AC_SUBST(MOZ_ANDROID_SYNTHAPKS)
8557 AC_SUBST(MOZ_LOCALE_SWITCHER)
8558 AC_SUBST(MOZ_DISABLE_GECKOVIEW)
8559 AC_SUBST(ENABLE_STRIP)
8560 AC_SUBST(PKG_SKIP_STRIP)
8561 AC_SUBST(STRIP_FLAGS)
8562 AC_SUBST(USE_ELF_HACK)
8563 AC_SUBST(INCREMENTAL_LINKER)
8564 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
8565 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
8567 AC_SUBST(MOZ_FIX_LINK_PATHS)
8568 AC_SUBST(XPCOM_LIBS)
8569 AC_SUBST(XPCOM_FROZEN_LDOPTS)
8570 AC_SUBST(XPCOM_GLUE_LDOPTS)
8571 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
8572 AC_SUBST(XPCOM_STATICRUNTIME_GLUE_LDOPTS)
8573 AC_SUBST(XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS)
8575 AC_SUBST(USE_DEPENDENT_LIBS)
8577 AC_SUBST(MOZ_BUILD_ROOT)
8579 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
8580 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
8581 AC_SUBST(MOZ_LINKER_EXTRACT)
8583 AC_SUBST(MOZ_JSDOWNLOADS)
8584 if test -n "$MOZ_JSDOWNLOADS"; then
8585 AC_DEFINE(MOZ_JSDOWNLOADS)
8588 dnl ========================================================
8589 dnl = Mac bundle name prefix
8590 dnl ========================================================
8591 MOZ_ARG_WITH_STRING(macbundlename-prefix,
8592 [ --with-macbundlename-prefix=prefix
8593 Prefix for MOZ_MACBUNDLE_NAME],
8594 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
8596 MOZ_MACBUNDLE_NAME=`echo $MOZ_APP_DISPLAYNAME | tr -d ' '`
8597 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
8598 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
8601 if test "$MOZ_DEBUG"; then
8602 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}Debug.app
8604 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
8606 AC_SUBST(MOZ_MACBUNDLE_NAME)
8608 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
8609 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr '[A-Z]' '[a-z]'`
8610 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
8611 if test "$MOZ_DEBUG"; then
8612 MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
8615 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
8616 AC_SUBST(MOZ_MACBUNDLE_ID)
8618 dnl ========================================================
8619 dnl = Child Process Name for IPC
8620 dnl ========================================================
8621 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
8622 MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
8624 # We want to let Android unpack the file at install time, but it only does
8625 # so if the file is named libsomething.so. The lib/ path is also required
8626 # because the unpacked file will be under the lib/ subdirectory and will
8627 # need to be executed from that path.
8628 MOZ_CHILD_PROCESS_NAME="lib/libplugin-container.so"
8630 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
8632 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
8633 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
8635 # The following variables are available to branding and application
8636 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
8637 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
8638 # impacts profile location and user-visible fields.
8639 # - MOZ_APP_BASENAME: Typically stays consistent for multiple branded
8640 # versions of a given application (e.g. Aurora and Firefox both use
8641 # "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used
8642 # for application.ini's "Name" field, which controls profile location in
8643 # the absence of a "Profile" field (see below), and various system
8644 # integration hooks (Unix remoting, Windows MessageWindow name, etc.)
8645 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
8646 # Mac Bundle name, Updater, Installer), it is typically used for nightly
8647 # builds (e.g. Aurora for Firefox).
8648 # - MOZ_APP_VERSION: Defines the application version number.
8649 # - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set,
8650 # defaults to a lowercase form of MOZ_APP_BASENAME.
8651 # - MOZ_APP_PROFILE: When set, used for application.ini's
8652 # "Profile" field, which controls profile location.
8653 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
8654 # crash reporter server url.
8655 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
8656 # - MOZ_EXTENSION_MANAGER: When set, enabled extension manager.
8658 if test -z "$MOZ_APP_NAME"; then
8659 MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
8662 # For extensions and langpacks, we require a max version that is compatible
8663 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
8664 # 24.0a1 and 24.0a2 aren't affected
8666 # 24.1.1 becomes 24.*
8667 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
8668 if test -z "$IS_ALPHA"; then
8670 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
8673 MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
8676 MOZ_B2G_VERSION=${MOZ_B2G_VERSION:-"1.0.0"}
8677 AC_DEFINE_UNQUOTED(MOZ_B2G_VERSION,"$MOZ_B2G_VERSION")
8678 AC_DEFINE_UNQUOTED(MOZ_B2G_OS_NAME,"$MOZ_B2G_OS_NAME")
8680 AC_SUBST(MOZ_APP_NAME)
8681 AC_SUBST(MOZ_APP_DISPLAYNAME)
8682 AC_SUBST(MOZ_APP_BASENAME)
8683 AC_SUBST(MOZ_APP_VENDOR)
8684 AC_SUBST(MOZ_APP_PROFILE)
8685 AC_SUBST(MOZ_APP_ID)
8686 AC_SUBST(MAR_CHANNEL_ID)
8687 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
8688 AC_SUBST(MOZ_PROFILE_MIGRATOR)
8689 AC_SUBST(MOZ_EXTENSION_MANAGER)
8690 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
8691 AC_SUBST(MOZ_APP_UA_NAME)
8692 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
8693 AC_SUBST(MOZ_APP_VERSION)
8694 AC_SUBST(MOZ_APP_MAXVERSION)
8695 AC_DEFINE_UNQUOTED(FIREFOX_VERSION,$FIREFOX_VERSION)
8696 AC_SUBST(FIREFOX_VERSION)
8697 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
8698 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
8699 AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
8702 AC_SUBST(MOZ_APP_STATIC_INI)
8704 AC_SUBST(MOZ_PKG_SPECIAL)
8706 AC_SUBST(MOZILLA_OFFICIAL)
8708 AC_DEFINE_UNQUOTED(MOZ_TELEMETRY_DISPLAY_REV, 2)
8709 AC_SUBST(MOZ_TELEMETRY_DISPLAY_REV)
8711 if test "$MOZ_TELEMETRY_REPORTING"; then
8712 AC_DEFINE(MOZ_TELEMETRY_REPORTING)
8714 # Enable Telemetry by default for nightly and aurora channels
8715 if test -z "$RELEASE_BUILD"; then
8716 AC_DEFINE(MOZ_TELEMETRY_ON_BY_DEFAULT)
8720 dnl If we have any service that uploads data (and requires data submission
8721 dnl policy alert), set MOZ_DATA_REPORTING.
8722 dnl We need SUBST for build system and DEFINE for xul preprocessor.
8723 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"; then
8724 MOZ_DATA_REPORTING=1
8725 AC_DEFINE(MOZ_DATA_REPORTING)
8726 AC_SUBST(MOZ_DATA_REPORTING)
8730 AC_SUBST(MOZ_BROWSE_INFO)
8731 AC_SUBST(MOZ_TOOLS_DIR)
8732 AC_SUBST(WIN32_REDIST_DIR)
8735 dnl Echo the CFLAGS to remove extra whitespace.
8741 $_WARNINGS_CXXFLAGS \
8744 COMPILE_CFLAGS=`echo \
8749 COMPILE_CXXFLAGS=`echo \
8750 $_DEFINES_CXXFLAGS \
8758 HOST_CXXFLAGS=`echo \
8762 AC_SUBST(SYSTEM_LIBXUL)
8763 AC_SUBST(MOZ_NATIVE_JPEG)
8764 AC_SUBST(MOZ_NATIVE_PNG)
8765 AC_SUBST(MOZ_NATIVE_BZ2)
8767 AC_SUBST(MOZ_JPEG_CFLAGS)
8768 AC_SUBST(MOZ_JPEG_LIBS)
8769 AC_SUBST(MOZ_BZ2_CFLAGS)
8770 AC_SUBST(MOZ_BZ2_LIBS)
8771 AC_SUBST(MOZ_PNG_CFLAGS)
8772 AC_SUBST(MOZ_PNG_LIBS)
8774 if test "$MOZ_WIDGET_TOOLKIT" = gonk -a -n "$MOZ_NUWA_PROCESS"; then
8775 export MOZ_NUWA_PROCESS
8776 AC_DEFINE(MOZ_NUWA_PROCESS)
8778 AC_SUBST(MOZ_NUWA_PROCESS)
8780 AC_SUBST(NSPR_CFLAGS)
8782 AC_SUBST(MOZ_NATIVE_NSPR)
8784 AC_SUBST(NSS_CFLAGS)
8786 AC_SUBST(MOZ_NATIVE_NSS)
8787 AC_SUBST(NSS_DISABLE_DBM)
8790 OS_CXXFLAGS="$CXXFLAGS"
8791 OS_CPPFLAGS="$CPPFLAGS"
8792 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
8793 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
8794 OS_LDFLAGS="$LDFLAGS"
8797 AC_SUBST(OS_CXXFLAGS)
8798 AC_SUBST(OS_CPPFLAGS)
8799 AC_SUBST(OS_COMPILE_CFLAGS)
8800 AC_SUBST(OS_COMPILE_CXXFLAGS)
8801 AC_SUBST(OS_LDFLAGS)
8803 AC_SUBST(CROSS_COMPILE)
8804 AC_SUBST(WCHAR_CFLAGS)
8808 AC_SUBST(HOST_CFLAGS)
8809 AC_SUBST(HOST_CXXFLAGS)
8810 AC_SUBST(HOST_LDFLAGS)
8811 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8813 AC_SUBST(HOST_AR_FLAGS)
8815 AC_SUBST(HOST_RANLIB)
8816 AC_SUBST(HOST_NSPR_MDCPUCFG)
8817 AC_SUBST(HOST_BIN_SUFFIX)
8818 AC_SUBST(HOST_OS_ARCH)
8820 AC_SUBST(TARGET_CPU)
8821 AC_SUBST(TARGET_VENDOR)
8823 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8824 AC_SUBST(TARGET_MD_ARCH)
8825 AC_SUBST(TARGET_XPCOM_ABI)
8828 AC_SUBST(OS_RELEASE)
8831 AC_SUBST(INTEL_ARCHITECTURE)
8832 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
8833 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
8835 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8837 AC_SUBST(WRAP_LDFLAGS)
8840 AC_SUBST(MKSHLIB_FORCE_ALL)
8841 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8842 AC_SUBST(DSO_CFLAGS)
8843 AC_SUBST(DSO_PIC_CFLAGS)
8844 AC_SUBST(DSO_LDOPTS)
8845 AC_SUBST(LIB_PREFIX)
8846 AC_SUBST(DLL_PREFIX)
8847 AC_SUBST(DLL_SUFFIX)
8848 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8849 AC_SUBST(LIB_SUFFIX)
8850 AC_SUBST(OBJ_SUFFIX)
8851 AC_SUBST(BIN_SUFFIX)
8852 AC_SUBST(ASM_SUFFIX)
8853 AC_SUBST(IMPORT_LIB_SUFFIX)
8855 AC_SUBST(CC_VERSION)
8856 AC_SUBST(CXX_VERSION)
8857 AC_SUBST(MSMANIFEST_TOOL)
8858 AC_SUBST(NS_ENABLE_TSF)
8859 AC_SUBST(MOZ_APP_COMPONENT_LIBS)
8860 AC_SUBST(MOZ_APP_EXTRA_LIBS)
8863 AC_SUBST(MOZ_VORBIS)
8864 AC_SUBST(MOZ_TREMOR)
8868 AC_SUBST(MOZ_FFMPEG)
8870 AC_SUBST(MOZ_DIRECTSHOW)
8871 AC_SUBST(MOZ_MEDIA_PLUGINS)
8872 AC_SUBST(MOZ_APPLEMEDIA)
8873 AC_SUBST(MOZ_OMX_PLUGIN)
8874 AC_SUBST(MOZ_VPX_ERROR_CONCEALMENT)
8877 AC_SUBST(VPX_ASFLAGS)
8878 AC_SUBST(VPX_DASH_C_FLAG)
8879 AC_SUBST(VPX_AS_CONVERSION)
8880 AC_SUBST(VPX_ASM_SUFFIX)
8881 AC_SUBST(VPX_X86_ASM)
8882 AC_SUBST(VPX_ARM_ASM)
8883 AC_SUBST(VPX_NEED_OBJ_INT_EXTRACT)
8884 AC_SUBST(MOZ_INSTRUMENT_EVENT_LOOP)
8885 AC_SUBST(LIBJPEG_TURBO_AS)
8886 AC_SUBST(LIBJPEG_TURBO_ASFLAGS)
8887 AC_SUBST(LIBJPEG_TURBO_X86_ASM)
8888 AC_SUBST(LIBJPEG_TURBO_X64_ASM)
8889 AC_SUBST(LIBJPEG_TURBO_ARM_ASM)
8891 AC_SUBST(MOZ_PACKAGE_JSSHELL)
8892 AC_SUBST(MOZ_FOLD_LIBS)
8894 AC_SUBST(MOZ_ENABLE_SZIP)
8895 AC_SUBST(MOZ_SZIP_FLAGS)
8897 if test "$MOZ_DEBUG"; then
8900 AC_SUBST(MOZ_EM_DEBUG)
8902 if test -n "$COMPILE_ENVIRONMENT"; then
8903 AC_CHECK_FUNCS(posix_fadvise posix_fallocate)
8905 dnl Check for missing components
8906 if test "$MOZ_X11"; then
8907 if test "$WITHOUT_X11"; then
8908 AC_MSG_ERROR([--without-x specified and MOZ_X11 still defined])
8910 dnl ====================================================
8911 dnl = Check if X headers exist
8912 dnl ====================================================
8913 _SAVE_CFLAGS=$CFLAGS
8914 CFLAGS="$CFLAGS $XCFLAGS"
8918 #include <X11/Xlib.h>
8919 #include <X11/Intrinsic.h>
8920 #include <X11/extensions/XShm.h>
8924 if ((dpy = XOpenDisplay(NULL)) == NULL) {
8925 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8929 [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ])
8930 CFLAGS="$_SAVE_CFLAGS"
8932 if test -n "$MISSING_X"; then
8933 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8938 fi # COMPILE_ENVIRONMENT
8940 dnl Set various defines and substitutions
8941 dnl ========================================================
8943 if test "$OS_ARCH" != "WINNT"; then
8947 if test "$MOZ_DEBUG"; then
8948 AC_DEFINE(MOZ_REFLOW_PERF)
8949 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8952 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
8953 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8954 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8955 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8956 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8957 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8958 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8959 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8960 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8963 if test "$MOZ_DEBUG"; then
8966 case "$MOZ_UPDATE_CHANNEL" in
8967 aurora|beta|release|esr)
8974 if test -n "$A11Y_LOG"; then
8978 AC_SUBST(MOZILLA_VERSION)
8980 AC_SUBST(ac_configure_args)
8982 dnl Spit out some output
8983 dnl ========================================================
8985 dnl The following defines are used by xpcom
8986 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8988 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8989 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8990 HAVE_CPP_PARTIAL_SPECIALIZATION
8991 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8992 NEED_CPP_UNUSED_IMPLEMENTATIONS
8995 HAVE_ICONV_WITH_CONST_INPUT
9008 AC_SUBST(STLPORT_LIBS)
9010 dnl ========================================================
9012 dnl ========================================================
9014 # Internationalization isn't built or exposed by default in non-desktop
9015 # builds. Bugs to enable:
9017 # Android: bug 864843
9020 if test "$MOZ_WIDGET_TOOLKIT" = "android" ||
9021 test "$MOZ_BUILD_APP" = "b2g"; then
9029 if test -n "$MOZ_NATIVE_ICU"; then
9030 MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_ICU_LIBS"
9033 if test -n "$JS_SHARED_LIBRARY"; then
9034 MOZ_JS_LIBS="$MOZ_JS_SHARED_LIBS"
9036 MOZ_JS_LIBS="$MOZ_JS_STATIC_LIBS"
9037 AC_DEFINE(MOZ_STATIC_JS)
9039 AC_SUBST(JS_SHARED_LIBRARY)
9041 AC_SUBST(UPLOAD_EXTRA_FILES)
9043 MOZ_CREATE_CONFIG_STATUS()
9045 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9046 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9047 MOZ_SUBCONFIGURE_ICU()
9048 MOZ_SUBCONFIGURE_FFI()
9051 # Hack around an Apple bug that affects the egrep that comes with OS X 10.7.
9052 # "env ARCHPREFERENCE=i386,x86_64 arch egrep" first tries to use the 32-bit
9053 # Intel part of the egrep fat binary, even on 64-bit systems, and falls back on
9054 # the 64-bit part if it's not a fat binary, as can happen with MacPorts. We
9055 # (apparently) only need this hack when egrep's "pattern" is particularly long
9056 # (as in the following code) and the first egrep on our $PATH is Apple's. See
9060 FIXED_EGREP="env ARCHPREFERENCE=i386,x86_64 arch egrep"
9067 # Run jemalloc configure script
9069 if test -z "$MOZ_NATIVE_JEMALLOC" -a "$MOZ_MEMORY" && test -n "$MOZ_JEMALLOC3" -o -n "$MOZ_REPLACE_MALLOC"; then
9070 ac_configure_args="--build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_"
9071 if test -n "$MOZ_REPLACE_MALLOC"; then
9072 # When using replace_malloc, we always want memalign and valloc exported from jemalloc.
9073 ac_configure_args="$ac_configure_args ac_cv_func_memalign=yes"
9074 ac_configure_args="$ac_configure_args ac_cv_func_valloc=yes"
9076 if test -n "$MOZ_JEMALLOC3"; then
9077 case "${OS_ARCH}" in
9079 # We want jemalloc functions to be kept hidden on both Mac and Windows
9080 # See memory/build/mozmemory_wrap.h for details.
9081 ac_configure_args="$ac_configure_args --without-export"
9084 elif test "${OS_ARCH}" = Darwin; then
9085 # When building as a replace-malloc lib, disabling the zone allocator
9086 # forces to use pthread_atfork.
9087 ac_configure_args="$ac_configure_args --disable-zone-allocator"
9089 _MANGLE="malloc posix_memalign aligned_alloc calloc realloc free memalign valloc malloc_usable_size"
9091 if test -z "$MOZ_REPLACE_MALLOC"; then
9093 Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
9097 elif test -z "$MOZ_JEMALLOC3"; then
9099 JEMALLOC_WRAPPER=replace_
9101 if test -n "$MANGLE"; then
9103 if test -n "$_WRAP_MALLOC" -a -z "$JEMALLOC_WRAPPER"; then
9104 JEMALLOC_WRAPPER=__wrap_
9106 for mangle in ${MANGLE}; do
9107 if test -n "$MANGLED"; then
9108 MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle,$MANGLED"
9110 MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle"
9113 ac_configure_args="$ac_configure_args --with-mangling=$MANGLED"
9116 if test -z "$MOZ_TLS"; then
9117 ac_configure_args="$ac_configure_args --disable-tls"
9119 EXTRA_CFLAGS="$CFLAGS"
9120 for var in AS CC CXX CPP LD AR RANLIB STRIP CPPFLAGS EXTRA_CFLAGS LDFLAGS; do
9121 ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
9123 if test "$CROSS_COMPILE"; then
9124 ac_configure_args="$ac_configure_args je_cv_static_page_shift=12"
9126 _save_cache_file="$cache_file"
9127 cache_file=$_objdir/memory/jemalloc/src/config.cache
9129 if ! test -e memory/jemalloc; then
9130 mkdir -p memory/jemalloc
9133 dnl jemalloc's configure uses $srcdir in AC_CONFIG_HEADERS, which syntax uses
9134 dnl colons, conflicting with the windows-style path in $srcdir.
9135 dnl Turn it into a msys path just for jemalloc's configure
9136 _save_srcdir="$srcdir"
9137 srcdir=`cd $srcdir; pwd`
9138 AC_OUTPUT_SUBDIRS(memory/jemalloc/src)
9139 srcdir="$_save_srcdir"
9140 cache_file="$_save_cache_file"
9141 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9144 # Run freetype configure script
9146 if test "$MOZ_TREE_FREETYPE"; then
9147 export CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS -std=c99"
9148 export CPPFLAGS="$CPPFLAGS $MOZ_DEBUG_FLAGS"
9149 export CXXFLAGS="$CXXFLAGS $MOZ_DEBUG_FLAGS"
9150 export LDFLAGS="$LDFLAGS $MOZ_DEBUG_LDFLAGS"
9151 # Spaces in the *_CFLAGS and *_LIBS variables are intentionally placed
9152 # to force freetype to use our settings rather than autodetecting
9153 export LIBPNG_CFLAGS="$MOZ_PNG_CFLAGS "
9154 export LIBPNG_LIBS="$MOZ_PNG_LIBS "
9155 export ZLIB_CFLAGS="$MOZ_ZLIB_CFLAGS "
9156 export ZLIB_LIBS="$MOZ_ZLIB_LIBS "
9157 export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in"
9158 ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes --with-zlib=yes --without-bzip2 --with-png=yes --without-harfbuzz"
9160 if ! test -e modules; then
9164 AC_OUTPUT_SUBDIRS(modules/freetype2)
9167 if test -z "$direct_nspr_config"; then
9168 dnl ========================================================
9169 dnl = Setup a nice relatively clean build environment for
9170 dnl = sub-configures.
9171 dnl ========================================================
9174 CFLAGS="$_SUBDIR_CFLAGS"
9175 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9176 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9177 LDFLAGS="$_SUBDIR_LDFLAGS"
9178 HOST_CC="$_SUBDIR_HOST_CC"
9179 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9180 HOST_CXXFLAGS="$_SUBDIR_HOST_CXXFLAGS"
9181 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9188 # Run all configure scripts specified by a subconfigure
9189 if test -n "$_subconfigure_subdir"; then
9190 _save_ac_configure_args="$ac_configure_args"
9191 ac_configure_args="$_subconfigure_config_args"
9192 AC_OUTPUT_SUBDIRS("$_subconfigure_subdir")
9193 ac_configure_args="$_save_ac_configure_args"
9196 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9197 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9201 if test -n "$_WRAP_MALLOC"; then
9202 # Avoid doubling wrap malloc arguments
9203 _SUBDIR_CONFIG_ARGS="`echo $_SUBDIR_CONFIG_ARGS | sed -e 's/--enable-wrap-malloc *//'`"
9206 if test -z "$MOZ_NATIVE_NSPR"; then
9207 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9208 if test -z "$MOZ_DEBUG"; then
9209 ac_configure_args="$ac_configure_args --disable-debug"
9211 ac_configure_args="$ac_configure_args --enable-debug"
9212 if test -n "$MOZ_NO_DEBUG_RTL"; then
9213 ac_configure_args="$ac_configure_args --disable-debug-rtl"
9216 if test "$MOZ_OPTIMIZE" = "1"; then
9217 ac_configure_args="$ac_configure_args --enable-optimize"
9218 elif test -z "$MOZ_OPTIMIZE"; then
9219 ac_configure_args="$ac_configure_args --disable-optimize"
9221 if test -n "$HAVE_64BIT_OS"; then
9222 ac_configure_args="$ac_configure_args --enable-64bit"
9224 if test -n "$USE_ARM_KUSER"; then
9225 ac_configure_args="$ac_configure_args --with-arm-kuser"
9227 # A configure script generated by autoconf 2.68 does not allow the cached
9228 # values of "precious" variables such as CFLAGS and LDFLAGS to differ from
9229 # the values passed to the configure script. Since we modify CFLAGS and
9230 # LDFLAGS before passing them to NSPR's configure script, we cannot share
9231 # config.cache with NSPR. As a result, we cannot pass AS, CC, CXX, etc. to
9232 # NSPR via a shared config.cache file and must pass them to NSPR on the
9233 # configure command line.
9234 for var in AS CC CXX CPP LD AR RANLIB STRIP; do
9235 ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
9237 # A configure script generated by autoconf 2.68 warns if --host is
9238 # specified but --build isn't. So we always pass --build to NSPR's
9240 ac_configure_args="$ac_configure_args --build=$build"
9241 ac_configure_args="$ac_configure_args $NSPR_CONFIGURE_ARGS"
9243 # Save these, so we can mess with them for the subconfigure ..
9244 _SAVE_CFLAGS="$CFLAGS"
9245 _SAVE_CPPFLAGS="$CPPFLAGS"
9246 _SAVE_LDFLAGS="$LDFLAGS"
9248 if test -n "$MOZ_LINKER" -a "$ac_cv_func_dladdr" = no ; then
9249 # dladdr is supported by the new linker, even when the system linker doesn't
9250 # support it. Trick nspr into using dladdr when it's not supported.
9251 export CPPFLAGS="-include $_topsrcdir/mozglue/linker/dladdr.h $CPPFLAGS"
9253 export LDFLAGS="$LDFLAGS $NSPR_LDFLAGS"
9254 export CFLAGS="$CFLAGS $MOZ_FRAMEPTR_FLAGS"
9256 # Use a separate cache file for NSPR since it uses autoconf 2.68.
9257 _save_cache_file="$cache_file"
9258 cache_file=$_objdir/nsprpub/config.cache
9260 AC_OUTPUT_SUBDIRS(nsprpub)
9262 # .. and restore them
9263 cache_file="$_save_cache_file"
9264 CFLAGS="$_SAVE_CFLAGS"
9265 CPPFLAGS="$_SAVE_CPPFLAGS"
9266 LDFLAGS="$_SAVE_LDFLAGS"
9268 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9271 dnl ========================================================
9272 dnl = Setup a nice relatively clean build environment for
9273 dnl = sub-configures.
9274 dnl ========================================================
9277 CFLAGS="$_SUBDIR_CFLAGS"
9278 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9279 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9280 LDFLAGS="$_SUBDIR_LDFLAGS"
9281 HOST_CC="$_SUBDIR_HOST_CC"
9282 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9283 HOST_CXXFLAGS="$_SUBDIR_HOST_CXXFLAGS"
9284 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9287 if test -n "$ENABLE_CLANG_PLUGIN"; then
9288 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9289 AC_OUTPUT_SUBDIRS(build/clang-plugin)
9293 # Run the SpiderMonkey 'configure' script.
9294 dist=$MOZ_BUILD_ROOT/dist
9295 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9296 ac_configure_args="$ac_configure_args --enable-threadsafe"
9298 if test "$_INTL_API" = no; then
9299 ac_configure_args="$ac_configure_args --without-intl-api"
9302 if test "$BUILD_CTYPES"; then
9303 # Build js-ctypes on the platforms we can.
9304 ac_configure_args="$ac_configure_args --enable-ctypes"
9306 if test -z "$JS_SHARED_LIBRARY" ; then
9307 ac_configure_args="$ac_configure_args --disable-shared-js"
9308 if test -n "$MOZ_DISABLE_EXPORT_JS"; then
9309 ac_configure_args="$ac_configure_args --disable-export-js"
9312 if test -z "$JSGC_USE_EXACT_ROOTING" ; then
9313 ac_configure_args="$ac_configure_args --disable-exact-rooting"
9315 if test -z "$JSGC_GENERATIONAL" ; then
9316 ac_configure_args="$ac_configure_args --disable-gcgenerational"
9318 if test -z "$MOZ_NATIVE_NSPR"; then
9319 ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9320 ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9322 ac_configure_args="$ac_configure_args --prefix=$dist"
9323 if test "$MOZ_MEMORY"; then
9324 ac_configure_args="$ac_configure_args --enable-jemalloc"
9326 if test -n "$MOZ_GLUE_LDFLAGS"; then
9327 export MOZ_GLUE_LDFLAGS
9329 if test -n "$MOZ_GLUE_PROGRAM_LDFLAGS"; then
9330 export MOZ_GLUE_PROGRAM_LDFLAGS
9332 if test -n "$ZLIB_IN_MOZGLUE"; then
9335 export MOZ_NATIVE_ZLIB
9336 export MOZ_ZLIB_CFLAGS
9337 export MOZ_ZLIB_LIBS
9339 export DONT_POPULATE_VIRTUALENV=1
9341 export MOZILLA_CENTRAL_PATH=$_topsrcdir
9342 export STLPORT_CPPFLAGS
9343 export STLPORT_LDFLAGS
9345 export JS_STANDALONE=no
9347 export ZLIB_IN_MOZGLUE
9349 if ! test -e js; then
9353 AC_OUTPUT_SUBDIRS(js/src)
9354 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9356 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR
9358 export WRITE_MOZINFO=1
9359 dnl we need to run config.status after js/src subconfigure because we're
9360 dnl traversing its moz.build and we need its config.status for that.
9361 dnl However, writing our own config.status needs to happen before
9362 dnl subconfigures because the setup surrounding subconfigures alters
9363 dnl many AC_SUBSTed variables.
9364 MOZ_RUN_CONFIG_STATUS()