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_VERSION=`${CC} -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
469 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
470 _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
471 _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
472 _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
473 _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
475 CXX_VERSION=`${CXX} -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
476 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
478 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
479 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
482 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
483 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
485 if test "$_CC_MAJOR_VERSION" = "16"; then
488 elif test "$_CC_MAJOR_VERSION" = "17"; then
491 elif test "$_CC_MAJOR_VERSION" = "18"; then
495 AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
497 AC_SUBST(MSVS_VERSION)
499 AC_DEFINE(HAVE_SEH_EXCEPTIONS)
501 if test -n "$WIN32_REDIST_DIR"; then
502 if test ! -d "$WIN32_REDIST_DIR"; then
503 AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
505 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
508 dnl Confirm we have the pri tools on win8 builds
509 if test -n "$MOZ_METRO"; then
510 AC_MSG_CHECKING([for makepri])
511 AC_CHECK_PROGS(MAKEPRI, makepri, "")
512 if test -z "MAKEPRI" ; then
513 AC_MSG_ERROR([makepri.exe is required for generating metro browser install components. It should be in the Win8 SDK.])
518 dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool',
519 dnl not something else like "magnetic tape manipulation utility".
520 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
521 if test -z "$MSMT_TOOL"; then
522 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
526 _MSMT_VER_FILTER='s|.*[^!-~]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
528 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
529 if test -z "$MSMANIFEST_TOOL_VERSION"; then
530 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
536 # Check linker version
537 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
538 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
539 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
540 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
545 # Set midl environment
548 MIDL_FLAGS="${MIDL_FLAGS} -env win32"
551 MIDL_FLAGS="${MIDL_FLAGS} -env x64"
555 unset _MSVC_VER_FILTER
557 AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
561 _SAVE_CXXFLAGS="$CXXFLAGS"
562 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
563 AC_TRY_COMPILE([#include <exception>],
564 [std::_Throw(std::exception()); return 0;],
565 ac_cv_have_std__Throw="yes",
566 ac_cv_have_std__Throw="no")
567 CXXFLAGS="$_SAVE_CXXFLAGS"
571 if test "$ac_cv_have_std__Throw" = "yes"; then
572 AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
573 ac_cv_have_dllimport_exception_bug,
577 _SAVE_CXXFLAGS="$CXXFLAGS"
578 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
579 AC_TRY_LINK([#include <vector>],
580 [std::vector<int> v; return v.at(1);],
581 ac_cv_have_dllimport_exception_bug="no",
582 ac_cv_have_dllimport_exception_bug="yes")
583 CXXFLAGS="$_SAVE_CXXFLAGS"
586 if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
588 MOZ_MSVC_STL_WRAP__Throw=1
589 AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
592 AC_CACHE_CHECK(for overridable _RAISE,
597 _SAVE_CXXFLAGS="$CXXFLAGS"
598 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
599 AC_TRY_COMPILE([#include <xstddef>
601 #define _RAISE(x) externallyDefinedFunction((x).what())
604 [std::vector<int> v; return v.at(1);],
605 ac_cv_have__RAISE="no",
606 ac_cv_have__RAISE="yes")
607 CXXFLAGS="$_SAVE_CXXFLAGS"
610 if test "$ac_cv_have__RAISE" = "yes"; then
612 MOZ_MSVC_STL_WRAP__RAISE=1
613 AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
615 AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK. Please file a bug describing this error and your build configuration.])
619 if test "$WRAP_STL_INCLUDES" = "1"; then
620 STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
622 elif test -z "$CLANG_CC"; then
623 # Check w32api version
624 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
625 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
626 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
627 AC_TRY_COMPILE([#include <w32api.h>],
628 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
629 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
630 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
631 #error "test failed."
633 , [ res=yes ], [ res=no ])
634 AC_MSG_RESULT([$res])
635 if test "$res" != "yes"; then
636 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
638 # Check windres version
639 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
640 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
641 AC_MSG_RESULT([$_WINDRES_VERSION])
642 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
643 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
644 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
645 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
646 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
647 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
648 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
649 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
650 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
651 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
652 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
653 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
655 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
658 AC_CHECK_PROGS(MIDL, $target-widl widl)
659 if test -n "$MIDL"; then
662 MIDL_FLAGS="$MIDL_FLAGS --win32 -m32"
665 MIDL_FLAGS="$MIDL_FLAGS --win64 -m64"
670 # strsafe.h on mingw uses macros for function deprecation that pollutes namespace
671 # causing problems with local implementations with the same name.
672 AC_DEFINE(STRSAFE_NO_DEPRECATE)
674 MOZ_WINSDK_MAXVER=0x06020000
678 if test "$GCC" != "yes" -o -n "$CLANG_CC" ; then
679 MOZ_FIND_WINSDK_VERSION
682 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
683 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
684 # Require OS features provided by IE 6.0 SP2 (XP SP2)
685 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0603)
687 # If the maximum version supported by this SDK is lower than the target
689 AC_MSG_CHECKING([for Windows SDK being recent enough])
690 if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
694 AC_MSG_ERROR([You are targeting Windows version 0x$MOZ_WINSDK_TARGETVER, but your SDK only supports up to version $MOZ_WINSDK_MAXVER. Install and use an updated SDK, or target a lower version using --with-windows-version. Alternatively, try running the Windows SDK Configuration Tool and selecting a newer SDK. See https://developer.mozilla.org/En/Windows_SDK_versions for more details on fixing this.])
697 AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
698 # Definitions matching sdkddkver.h
699 AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
700 AC_DEFINE_UNQUOTED(MOZ_WINSDK_MAXVER,$MOZ_WINSDK_MAXVER)
701 AC_SUBST(MOZ_WINSDK_MAXVER)
708 if test -n "$_WIN32_MSVC"; then
710 SKIP_COMPILER_CHECKS=1
711 SKIP_LIBRARY_CHECKS=1
713 # Since we're skipping compiler and library checks, hard-code
716 AC_DEFINE(HAVE_SETBUF)
717 AC_DEFINE(HAVE_ISATTY)
720 fi # COMPILE_ENVIRONMENT
733 AC_SUBST(WRAP_STL_INCLUDES)
734 AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
735 AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
737 dnl ========================================================
738 dnl Checks for programs.
739 dnl ========================================================
743 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
744 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
745 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
747 AC_MSG_RESULT([$_perl_version])
749 if test "$_perl_res" != 0; then
750 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
754 AC_MSG_CHECKING([for full perl installation])
755 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
757 if test "$_perl_res" != 0; then
759 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
764 if test -z "$COMPILE_ENVIRONMENT"; then
765 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
767 AC_SUBST(NSINSTALL_BIN)
769 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
770 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
771 MOZ_PATH_PROGS(UNZIP, unzip)
772 if test -z "$UNZIP" -o "$UNZIP" = ":"; then
773 AC_MSG_ERROR([unzip not found in \$PATH])
775 MOZ_PATH_PROGS(ZIP, zip)
776 if test -z "$ZIP" -o "$ZIP" = ":"; then
777 AC_MSG_ERROR([zip not found in \$PATH])
779 MOZ_PATH_PROG(XARGS, xargs)
780 if test -z "$XARGS" -o "$XARGS" = ":"; then
781 AC_MSG_ERROR([xargs not found in \$PATH .])
784 MOZ_PATH_PROG(RPMBUILD, rpmbuild, :)
787 if test "$COMPILE_ENVIRONMENT"; then
789 dnl ========================================================
790 dnl = Mac OS X toolchain support
791 dnl ========================================================
793 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
794 dnl that a universal binary is being produced and MOZ_CAN_RUN_PROGRAMS
795 dnl when we can run target binaries.
796 AC_SUBST(UNIVERSAL_BINARY)
797 AC_SUBST(MOZ_CAN_RUN_PROGRAMS)
799 MOZ_ARG_WITH_STRING(unify-dist,
800 [ --with-unify-dist=dir Location of the dist directory to unify with at packaging time (Mac OS X universal build only)],
802 if test -n "$UNIVERSAL_BINARY"; then
803 if test -z "$UNIFY_DIST"; then
804 AC_MSG_ERROR([You need to provide the --with-unify-dist=dir argument when performing a universal build])
806 case "$UNIFY_DIST" in
810 UNIFY_DIST="${MOZ_BUILD_ROOT}/${UNIFY_DIST}"
816 dnl ========================================================
817 dnl Check for MacOS deployment target version
818 dnl ========================================================
820 MOZ_ARG_ENABLE_STRING(macos-target,
821 [ --enable-macos-target=VER (default=10.6)
822 Set the minimum MacOS version needed at runtime],
823 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
827 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
828 dnl Use the specified value
829 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
831 dnl No value specified on the command line or in the environment,
832 dnl use architecture minimum.
833 export MACOSX_DEPLOYMENT_TARGET=10.6
838 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
840 dnl ========================================================
841 dnl = Mac OS X SDK support
842 dnl ========================================================
844 MOZ_ARG_WITH_STRING(macos-sdk,
845 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
846 MACOS_SDK_DIR=$withval)
848 MACOS_PRIVATE_FRAMEWORKS_DIR_DEFAULTED=
849 MOZ_ARG_WITH_STRING(macos-private-frameworks,
850 [ --with-macos-private-frameworks=dir Location of private frameworks to use (Mac OS X only)],
851 MACOS_PRIVATE_FRAMEWORKS_DIR=$withval,
852 MACOS_PRIVATE_FRAMEWORKS_DIR=/System/Library/PrivateFrameworks
853 MACOS_PRIVATE_FRAMEWORKS_DEFAULTED=1)
855 if test -z "${MACOS_PRIVATE_FRAMEWORKS_DEFAULTED}"; then
856 if test -z "$CROSS_COMPILE"; then
857 AC_MSG_WARN([You should only be using --with-macos-private-frameworks when cross-compiling.])
859 if test ! -d "$MACOS_PRIVATE_FRAMEWORKS_DIR"; then
860 AC_MSG_ERROR([PrivateFrameworks directory not found.])
864 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
865 AC_SUBST(MACOS_SDK_DIR)
866 AC_SUBST(MACOS_PRIVATE_FRAMEWORKS_DIR)
868 if test "$MACOS_SDK_DIR"; then
869 dnl Sync this section with the ones in NSPR and NSS.
870 dnl Changes to the cross environment here need to be accounted for in
871 dnl the libIDL checks (below) and xpidl build.
873 if test ! -d "$MACOS_SDK_DIR"; then
874 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
875 specify a valid SDK. SDKs are installed when the optional cross-development
876 tools are selected during the Xcode/Developer Tools installation.])
879 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
880 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
882 dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER.
883 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
884 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
887 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
889 AC_TRY_COMPILE([#include <new>],[],
893 AC_MSG_RESULT($result)
895 if test "$result" = "no" ; then
896 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
900 fi # COMPILE_ENVIRONMENT
902 AC_MSG_CHECKING([compiler version])
903 # Just print it so it shows up in the logs.
904 cc_version=$($CC --version)
905 AC_MSG_RESULT([$cc_version])
907 if test -n "$MAKE"; then
908 if test `echo $MAKE | grep -c make.py` != 1; then
915 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
918 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
921 if test "$GMAKE" = ":"; then
922 AC_MSG_ERROR([GNU make not found])
926 if test -z "$MAKE"; then
930 if test "$COMPILE_ENVIRONMENT"; then
936 fi # COMPILE_ENVIRONMENT
938 dnl ========================================================
939 dnl set the defaults first
940 dnl ========================================================
956 MOZ_USER_DIR=".mozilla"
959 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/media/libjpeg)'
961 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
962 MOZ_PNG_CFLAGS="-I$_objdir/dist/include" # needed for freetype compilation
963 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/media/libpng)'
965 MOZ_JS_STATIC_LIBS='$(call EXPAND_LIBNAME_PATH,js_static,$(LIBXUL_DIST)/lib)'
966 MOZ_JS_SHARED_LIBS='$(call EXPAND_LIBNAME_PATH,mozjs,$(LIBXUL_DIST)/lib)'
967 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
968 XPCOM_FROZEN_LDOPTS='$(call EXPAND_LIBNAME_PATH,xul mozalloc,$(LIBXUL_DIST)/bin)'
969 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS)'
970 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
971 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
973 # These are specially defined on Windows only
976 XPCOM_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
977 XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime.$(LIB_SUFFIX)'
980 XPCOM_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_GLUE_LDOPTS
981 XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_STANDALONE_GLUE_LDOPTS
987 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
991 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
993 if test -n "$CROSS_COMPILE"; then
994 OS_TARGET="${target_os}"
995 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
997 case "${target_os}" in
998 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
999 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU/kFreeBSD ;;
1000 gnu*) OS_ARCH=GNU ;;
1001 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
1002 mingw*) OS_ARCH=WINNT OS_TARGET=WINNT ;;
1003 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
1004 dragonfly*) OS_ARCH=DragonFly OS_TARGET=DragonFly ;;
1005 freebsd*) OS_ARCH=FreeBSD OS_TARGET=FreeBSD ;;
1006 netbsd*) OS_ARCH=NetBSD OS_TARGET=NetBSD ;;
1007 openbsd*) OS_ARCH=OpenBSD OS_TARGET=OpenBSD ;;
1010 *-android*|*-linuxandroid*) OS_ARCH=Linux OS_TARGET=Android ;;
1013 OS_TARGET=`uname -s`
1014 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1015 OS_RELEASE=`uname -r`
1018 # Before this used `uname -m` when not cross compiling
1019 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1020 OS_TEST="${target_cpu}"
1022 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1024 #######################################################################
1025 # Master "Core Components" macros for getting the OS target #
1026 #######################################################################
1029 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1030 # cross-compilation.
1034 # Define and override various archtecture-specific variables, including
1043 case "$HOST_OS_ARCH" in
1054 HOST_OS_ARCH=GNU_kFreeBSD
1060 HOST_OS_ARCH=DragonFly
1063 HOST_OS_ARCH=FreeBSD
1069 HOST_OS_ARCH=OpenBSD
1075 if test -z "$GNU_CC"; then
1076 if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1081 if test -z "$GNU_CXX"; then
1082 if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1083 SOLARIS_SUNPRO_CXX=1
1086 AC_SUBST(SOLARIS_SUNPRO_CC)
1087 AC_SUBST(SOLARIS_SUNPRO_CXX)
1093 if test -z "$CROSS_COMPILE" ; then
1099 # If uname -s returns "Windows_NT", we assume that we are using
1100 # the uname.exe in MKS toolkit.
1102 # The -r option of MKS uname only returns the major version number.
1103 # So we need to use its -v option to get the minor version number.
1104 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1108 OS_MINOR_RELEASE=`uname -v`
1109 if test "$OS_MINOR_RELEASE" = "00"; then
1112 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1116 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1117 # the uname.exe in the MSYS tools.
1119 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1124 OS_RELEASE=`uname -v`.`uname -r`
1125 OS_TEST=${target_cpu}
1128 case "${target_cpu}" in
1139 if test -z "$CROSS_COMPILE" ; then
1147 # Only set CPU_ARCH if we recognize the value of OS_TEST
1154 powerpc64 | ppc64 | powerpc64le | ppc64le)
1158 powerpc | ppc | rs6000)
1162 Alpha | alpha | ALPHA)
1199 if test -z "$OS_TARGET"; then
1202 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1204 dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64.
1205 dnl ===============================================================
1209 INTEL_ARCHITECTURE=1
1212 dnl Configure platform-specific CPU architecture compiler options.
1213 dnl ==============================================================
1216 dnl =================================================================
1217 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1218 dnl which is bad when cross compiling.
1219 dnl =================================================================
1220 if test "$COMPILE_ENVIRONMENT"; then
1221 configure_static_assert_macros='
1222 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1223 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1224 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1227 dnl test that the macros actually work:
1228 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1229 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1232 ac_cv_static_assertion_macros_work="yes"
1233 AC_TRY_COMPILE([$configure_static_assert_macros],
1234 [CONFIGURE_STATIC_ASSERT(1)],
1236 ac_cv_static_assertion_macros_work="no")
1237 AC_TRY_COMPILE([$configure_static_assert_macros],
1238 [CONFIGURE_STATIC_ASSERT(0)],
1239 ac_cv_static_assertion_macros_work="no",
1242 AC_TRY_COMPILE([$configure_static_assert_macros],
1243 [CONFIGURE_STATIC_ASSERT(1)],
1245 ac_cv_static_assertion_macros_work="no")
1246 AC_TRY_COMPILE([$configure_static_assert_macros],
1247 [CONFIGURE_STATIC_ASSERT(0)],
1248 ac_cv_static_assertion_macros_work="no",
1252 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1253 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1254 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1256 fi # COMPILE_ENVIRONMENT
1258 dnl ========================================================
1259 dnl Android libstdc++, placed here so it can use MOZ_ARCH
1261 dnl ========================================================
1265 dnl ========================================================
1266 dnl Suppress Clang Argument Warnings
1267 dnl ========================================================
1268 if test -n "$CLANG_CC"; then
1269 _WARNINGS_CFLAGS="-Qunused-arguments ${_WARNINGS_CFLAGS}"
1270 CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
1272 if test -n "$CLANG_CXX"; then
1273 _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
1276 dnl ========================================================
1277 dnl = Use Address Sanitizer
1278 dnl ========================================================
1279 MOZ_ARG_ENABLE_BOOL(address-sanitizer,
1280 [ --enable-address-sanitizer Enable Address Sanitizer (default=no)],
1283 if test -n "$MOZ_ASAN"; then
1286 MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer)
1289 AC_SUBST(LLVM_SYMBOLIZER)
1291 dnl ========================================================
1292 dnl = Enable hacks required for LLVM instrumentations
1293 dnl ========================================================
1294 MOZ_ARG_ENABLE_BOOL(llvm-hacks,
1295 [ --enable-llvm-hacks Enable workarounds required for several LLVM instrumentations (default=no)],
1298 if test -n "$MOZ_LLVM_HACKS"; then
1302 AC_SUBST(MOZ_NO_WLZDEFS)
1303 AC_SUBST(MOZ_CFLAGS_NSS)
1305 dnl ========================================================
1306 dnl GNU specific defaults
1307 dnl ========================================================
1308 if test "$GNU_CC"; then
1309 # Per bug 719659 comment 2, some of the headers on ancient build machines
1310 # may require gnu89 inline semantics. But otherwise, we use C99.
1311 # But on OS X we just use C99 plus GNU extensions, in order to fix
1313 CFLAGS="$CFLAGS -std=gnu99"
1314 if test "${OS_ARCH}" != Darwin; then
1315 CFLAGS="$CFLAGS -fgnu89-inline"
1317 # FIXME: Let us build with strict aliasing. bug 414641.
1318 CFLAGS="$CFLAGS -fno-strict-aliasing"
1319 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(notdir $@) -o $@'
1320 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(notdir $@) -o $@'
1321 WARNINGS_AS_ERRORS='-Werror'
1323 DSO_PIC_CFLAGS='-fPIC'
1324 ASFLAGS="$ASFLAGS -fPIC"
1325 AC_MSG_CHECKING([for --noexecstack option to as])
1326 _SAVE_CFLAGS=$CFLAGS
1327 CFLAGS="$CFLAGS -Wa,--noexecstack"
1328 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
1329 [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
1330 AC_MSG_RESULT([no]))
1331 CFLAGS=$_SAVE_CFLAGS
1332 AC_MSG_CHECKING([for -z noexecstack option to ld])
1333 _SAVE_LDFLAGS=$LDFLAGS
1334 LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
1335 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
1337 LDFLAGS=$_SAVE_LDFLAGS)
1339 AC_MSG_CHECKING([for -z text option to ld])
1340 _SAVE_LDFLAGS=$LDFLAGS
1341 LDFLAGS="$LDFLAGS -Wl,-z,text"
1342 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
1343 [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,text"],
1345 LDFLAGS=$_SAVE_LDFLAGS)
1347 AC_MSG_CHECKING([for --build-id option to ld])
1348 _SAVE_LDFLAGS=$LDFLAGS
1349 LDFLAGS="$LDFLAGS -Wl,--build-id"
1350 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
1351 [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,--build-id"],
1353 LDFLAGS=$_SAVE_LDFLAGS)
1355 AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld])
1356 HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=
1357 _SAVE_LDFLAGS=$LDFLAGS
1358 LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ"
1359 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
1360 [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1],
1361 AC_MSG_RESULT([no]))
1362 LDFLAGS=$_SAVE_LDFLAGS
1364 # Check for -mssse3 on $CC
1365 AC_MSG_CHECKING([if toolchain supports -mssse3 option])
1366 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
1367 _SAVE_CFLAGS=$CFLAGS
1368 CFLAGS="$CFLAGS -mssse3"
1369 AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
1370 [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
1371 AC_MSG_RESULT([no]))
1372 CFLAGS=$_SAVE_CFLAGS
1374 # Check for -msse4.1 on $CC
1375 AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
1376 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
1377 _SAVE_CFLAGS=$CFLAGS
1378 CFLAGS="$CFLAGS -msse4.1"
1379 AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
1380 [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
1381 AC_MSG_RESULT([no]))
1382 CFLAGS=$_SAVE_CFLAGS
1384 case "${CPU_ARCH}" in
1386 AC_MSG_CHECKING(for x86 AVX2 asm support in compiler)
1388 [asm volatile ("vpermq \$0xd8,%ymm0,%ymm0 \n");],
1389 result="yes", result="no")
1390 AC_MSG_RESULT("$result")
1391 if test "$result" = "yes"; then
1393 AC_DEFINE(HAVE_X86_AVX2)
1394 AC_SUBST(HAVE_X86_AVX2)
1398 DSO_LDOPTS='-shared'
1399 if test "$GCC_USE_GNU_LD"; then
1400 # Some tools like ASan use a runtime library that is only
1401 # linked against executables, so we must allow undefined
1402 # symbols for shared objects in some cases.
1403 if test -z "$MOZ_NO_WLZDEFS"; then
1404 # Don't allow undefined symbols in libraries
1405 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1407 # BSDs need `environ' exposed for posix_spawn (bug 753046)
1408 case "$OS_TARGET" in
1409 DragonFly|FreeBSD|NetBSD|OpenBSD)
1410 if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then
1411 DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
1413 DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
1420 # Turn on GNU-specific warnings:
1421 # -Wall - turn on a lot of warnings
1422 # -Wpointer-arith - good to have
1423 # -Wdeclaration-after-statement - MSVC doesn't like these
1424 # -Werror=return-type - catches missing returns, zero false positives
1425 # -Werror=int-to-pointer-cast - catches cast to pointer from integer of different size
1426 # -Wtype-limits - catches overflow bugs, few false positives
1427 # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1428 # -Wsign-compare - catches comparison of signed and unsigned types
1430 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -Wpointer-arith -Wdeclaration-after-statement"
1431 MOZ_C_SUPPORTS_WARNING(-W, error=return-type, ac_c_has_werror_return_type)
1432 MOZ_C_SUPPORTS_WARNING(-W, error=int-to-pointer-cast, ac_c_has_werror_int_to_pointer_cast)
1433 MOZ_C_SUPPORTS_WARNING(-W, type-limits, ac_c_has_wtype_limits)
1434 MOZ_C_SUPPORTS_WARNING(-W, empty-body, ac_c_has_wempty_body)
1435 MOZ_C_SUPPORTS_WARNING(-W, sign-compare, ac_c_has_sign_compare)
1437 # Turn off the following warnings that -Wall turns on:
1438 # -Wno-unused - lots of violations in third-party code
1440 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-unused"
1442 if test -z "$INTEL_CC" -a -z "$CLANG_CC"; then
1443 # Don't use -Wcast-align with ICC or clang
1445 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1446 hppa | ia64 | sparc | arm)
1449 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1454 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1455 _USE_CPP_INCLUDE_FLAG=1
1456 ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
1458 elif test "$SOLARIS_SUNPRO_CC"; then
1460 if test "$CPU_ARCH" = "sparc"; then
1461 # for Sun Studio on Solaris/SPARC
1462 DSO_PIC_CFLAGS='-xcode=pic32'
1464 DSO_PIC_CFLAGS='-KPIC'
1466 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1468 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
1469 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
1471 DSO_LDOPTS='-shared'
1472 if test "$GNU_LD"; then
1473 # Don't allow undefined symbols in libraries
1474 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1478 DSO_PIC_CFLAGS='-KPIC'
1479 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1482 if test "$GNU_CXX"; then
1483 # FIXME: Let us build with strict aliasing. bug 414641.
1484 CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
1486 # Turn on GNU-specific warnings:
1487 # -Wall - turn on a lot of warnings
1488 # -Wpointer-arith - good to have
1489 # -Woverloaded-virtual - ???
1490 # -Werror=return-type - catches missing returns, zero false positives
1491 # -Werror=int-to-pointer-cast - catches cast to pointer from integer of different size
1492 # -Wtype-limits - catches overflow bugs, few false positives
1493 # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1494 # -Wsign-compare - catches comparison of signed and unsigned types
1496 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual"
1497 MOZ_CXX_SUPPORTS_WARNING(-W, error=return-type, ac_cxx_has_werror_return_type)
1498 MOZ_CXX_SUPPORTS_WARNING(-W, error=int-to-pointer-cast, ac_cxx_has_werror_int_to_pointer_cast)
1499 MOZ_CXX_SUPPORTS_WARNING(-W, type-limits, ac_cxx_has_wtype_limits)
1500 MOZ_CXX_SUPPORTS_WARNING(-W, empty-body, ac_cxx_has_wempty_body)
1501 MOZ_CXX_SUPPORTS_WARNING(-W, sign-compare, ac_cxx_has_sign_compare)
1503 # Turn off the following warnings that -Wall turns on:
1504 # -Wno-invalid-offsetof - we use offsetof on non-POD types frequently
1505 # -Wno-inline-new-delete - we inline 'new' and 'delete' in mozalloc
1506 # for performance reasons, and because GCC and clang accept it (though
1507 # clang warns about it).
1509 MOZ_CXX_SUPPORTS_WARNING(-Wno-, invalid-offsetof, ac_cxx_has_wno_invalid_offsetof)
1510 MOZ_CXX_SUPPORTS_WARNING(-Wno-, inline-new-delete, ac_cxx_has_wno_inline_new_delete)
1512 if test -z "$INTEL_CXX" -a -z "$CLANG_CXX"; then
1513 # Don't use -Wcast-align with ICC or clang
1515 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1516 hppa | ia64 | sparc | arm)
1519 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1524 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1525 _USE_CPP_INCLUDE_FLAG=1
1527 # Recent clang and gcc support C++11 deleted functions without warnings if
1528 # compiling with -std=c++0x or -std=gnu++0x (or c++11 or gnu++11 in very new
1529 # versions). We can't use -std=c++0x yet, so gcc's support must remain
1530 # unused. But clang's warning can be disabled, so when compiling with clang
1531 # we use it to opt out of the warning, enabling (macro-encapsulated) use of
1532 # deleted function syntax.
1533 if test "$CLANG_CXX"; then
1534 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-c++0x-extensions"
1535 MOZ_CXX_SUPPORTS_WARNING(-Wno-, extended-offsetof, ac_cxx_has_wno_extended_offsetof)
1539 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1542 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1543 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1544 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1545 dnl normal behavior.
1546 dnl ========================================================
1548 MKSHLIB_UNFORCE_ALL=
1550 if test "$COMPILE_ENVIRONMENT"; then
1551 if test "$GNU_CC"; then
1552 AC_MSG_CHECKING(whether ld has archive extraction flags)
1553 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1554 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1555 ac_cv_mkshlib_force_and_unforce="no"
1556 exec 3<&0 <<LOOP_INPUT
1557 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1558 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1559 force="-Wl,-all"; unforce="-Wl,-none"
1566 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1569 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1571 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1575 eval $ac_cv_mkshlib_force_and_unforce
1576 MKSHLIB_FORCE_ALL=$force
1577 MKSHLIB_UNFORCE_ALL=$unforce
1580 fi # COMPILE_ENVIRONMENT
1582 dnl ========================================================
1583 dnl Checking for 64-bit OS
1584 dnl ========================================================
1585 if test "$COMPILE_ENVIRONMENT"; then
1588 AC_MSG_CHECKING(for 64-bit OS)
1589 AC_TRY_COMPILE([$configure_static_assert_macros],
1590 [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1591 result="yes", result="no")
1592 AC_MSG_RESULT("$result")
1593 if test "$result" = "yes"; then
1594 AC_DEFINE(HAVE_64BIT_OS)
1597 AC_SUBST(HAVE_64BIT_OS)
1599 fi # COMPILE_ENVIRONMENT
1601 dnl ========================================================
1602 dnl = Use profiling compile flags
1603 dnl ========================================================
1604 MOZ_ARG_ENABLE_BOOL(profiling,
1605 [ --enable-profiling Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1609 dnl ========================================================
1610 dnl = Turn on systrace for android/b2g.
1611 dnl ========================================================
1612 MOZ_ARG_ENABLE_BOOL(systrace,
1613 [ --enable-systrace Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1616 if test -n "$MOZ_USE_SYSTRACE"; then
1617 AC_DEFINE(MOZ_USE_SYSTRACE)
1620 # For profiling builds keep the symbol information
1621 if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then
1622 case "$OS_TARGET" in
1623 Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
1624 STRIP_FLAGS="--strip-debug"
1629 dnl ========================================================
1631 dnl ========================================================
1632 MOZ_ARG_ENABLE_BOOL(valgrind,
1633 [ --enable-valgrind Enable Valgrind integration hooks (default=no)],
1636 if test -n "$MOZ_VALGRIND"; then
1637 MOZ_CHECK_HEADER([valgrind/valgrind.h], [],
1639 [--enable-valgrind specified but Valgrind is not installed]))
1640 AC_DEFINE(MOZ_VALGRIND)
1642 AC_SUBST(MOZ_VALGRIND)
1644 dnl ========================================================
1646 dnl ========================================================
1647 MOZ_ARG_ENABLE_BOOL(jprof,
1648 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.],
1651 if test -n "$MOZ_JPROF"; then
1653 AC_DEFINE(MOZ_JPROF)
1656 dnl ========================================================
1658 dnl ========================================================
1659 MOZ_ENABLE_PROFILER_SPS=1
1661 case "${OS_TARGET}" in
1663 case "${CPU_ARCH}" in
1666 MOZ_ENABLE_PROFILER_SPS=
1670 case "${CPU_ARCH}" in
1673 MOZ_ENABLE_PROFILER_SPS=
1678 MOZ_ENABLE_PROFILER_SPS=
1682 if test -n "$MOZ_ENABLE_PROFILER_SPS"; then
1683 AC_DEFINE(MOZ_ENABLE_PROFILER_SPS)
1686 dnl ========================================================
1688 dnl ========================================================
1689 MOZ_ARG_ENABLE_BOOL(shark,
1690 [ --enable-shark Enable shark remote profiling. Implies --enable-profiling.],
1693 if test -n "$MOZ_SHARK"; then
1695 AC_DEFINE(MOZ_SHARK)
1698 dnl ========================================================
1700 dnl ========================================================
1701 MOZ_ARG_ENABLE_BOOL(instruments,
1702 [ --enable-instruments Enable instruments remote profiling. Implies --enable-profiling.],
1705 if test -n "$MOZ_INSTRUMENTS"; then
1707 AC_DEFINE(MOZ_INSTRUMENTS)
1710 dnl ========================================================
1712 dnl ========================================================
1713 MOZ_ARG_ENABLE_BOOL(callgrind,
1714 [ --enable-callgrind Enable callgrind profiling. Implies --enable-profiling.],
1717 if test -n "$MOZ_CALLGRIND"; then
1719 AC_DEFINE(MOZ_CALLGRIND)
1722 dnl ========================================================
1724 dnl ========================================================
1725 MOZ_ARG_ENABLE_BOOL(vtune,
1726 [ --enable-vtune Enable vtune profiling. Implies --enable-profiling.],
1729 if test -n "$MOZ_VTUNE"; then
1731 AC_DEFINE(MOZ_VTUNE)
1734 dnl ========================================================
1736 dnl ========================================================
1737 if test -n "$MOZ_PROFILING"; then
1738 AC_DEFINE(MOZ_PROFILING)
1741 dnl ========================================================
1742 dnl System overrides of the defaults for host
1743 dnl ========================================================
1746 if test -n "$_WIN32_MSVC"; then
1748 HOST_AR_FLAGS='-NOLOGO -OUT:$@'
1749 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo"
1750 HOST_RANLIB='echo ranlib'
1752 HOST_CFLAGS="$HOST_CFLAGS -mwindows"
1754 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11 -D_CRT_SECURE_NO_WARNINGS"
1755 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1756 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1757 HOST_BIN_SUFFIX=.exe
1760 PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1764 case "${host_cpu}" in
1766 if test -n "$_WIN32_MSVC"; then
1767 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
1771 if test -n "$_WIN32_MSVC"; then
1772 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
1774 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1780 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1781 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1782 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1785 *-linux*|*-kfreebsd*-gnu|*-gnu*)
1786 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1787 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1788 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1792 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1793 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1797 dnl Check for using a custom <inttypes.h> implementation
1798 dnl ========================================================
1799 AC_MSG_CHECKING(for custom <inttypes.h> implementation)
1800 if test "$MOZ_CUSTOM_INTTYPES_H"; then
1801 AC_DEFINE_UNQUOTED(MOZ_CUSTOM_INTTYPES_H, "$MOZ_CUSTOM_INTTYPES_H")
1802 AC_MSG_RESULT(using $MOZ_CUSTOM_INTTYPES_H)
1804 AC_MSG_RESULT(none specified)
1807 dnl Get mozilla version from central milestone file
1808 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1809 MOZILLA_UAVERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir -uaversion`
1810 MOZILLA_SYMBOLVERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir -symbolversion`
1812 dnl Get version of various core apps from the version files.
1813 FIREFOX_VERSION=`cat $_topsrcdir/browser/config/version.txt`
1815 if test -z "$FIREFOX_VERSION"; then
1816 AC_MSG_ERROR([FIREFOX_VERSION is unexpectedly blank.])
1819 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1820 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1821 AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION")
1822 AC_SUBST(MOZILLA_SYMBOLVERSION)
1824 MOZ_DOING_LTO(lto_is_enabled)
1826 dnl ========================================================
1827 dnl System overrides of the defaults for target
1828 dnl ========================================================
1833 if test ! "$GNU_CC"; then
1834 if test ! "$HAVE_64BIT_OS"; then
1835 # Compiling with Visual Age C++ object model compat is the
1836 # default. To compile with object model ibm, add
1837 # AIX_OBJMODEL=ibm to .mozconfig.
1838 if test "$AIX_OBJMODEL" = "ibm"; then
1839 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1846 AC_SUBST(AIX_OBJMODEL)
1847 DSO_LDOPTS='-qmkshrobj=1'
1848 DSO_CFLAGS='-qflag=w:w'
1850 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1852 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1853 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1854 if test "$COMPILE_ENVIRONMENT"; then
1857 AC_MSG_CHECKING([for IBM XLC/C++ compiler version >= 9.0.0.7])
1859 [#if (__IBMCPP__ < 900)
1860 #error "Bad compiler"
1862 _BAD_COMPILER=,_BAD_COMPILER=1)
1863 if test -n "$_BAD_COMPILER"; then
1865 AC_MSG_ERROR([IBM XLC/C++ 9.0.0.7 or higher is required to build.])
1867 AC_MSG_RESULT([yes])
1870 TARGET_COMPILER_ABI="ibmc"
1871 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1872 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1875 case "${target_os}" in
1880 if test "$COMPILE_ENVIRONMENT"; then
1881 MOZ_CHECK_HEADERS(sys/inttypes.h)
1883 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1887 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1888 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1889 MOZ_OPTIMIZE_FLAGS="-O3"
1890 # Statically disable jemalloc on 10.5 and 32-bit 10.6. See bug 702250.
1891 if test "$HAVE_64BIT_OS"; then
1896 STRIP_FLAGS="$STRIP_FLAGS -x -S"
1897 # Check whether we're targeting OS X or iOS
1898 AC_CACHE_CHECK(for iOS target,
1900 [AC_TRY_COMPILE([#include <TargetConditionals.h>
1901 #if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
1905 ac_cv_ios_target="yes",
1906 ac_cv_ios_target="no")])
1907 if test "$ac_cv_ios_target" = "yes"; then
1909 AC_DEFINE(XP_DARWIN)
1910 _PLATFORM_DEFAULT_TOOLKIT='cairo-uikit'
1912 AC_DEFINE(XP_MACOSX)
1913 AC_DEFINE(XP_DARWIN)
1914 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1915 # The ExceptionHandling framework is needed for Objective-C exception
1916 # logging code in nsObjCExceptions.h. Currently we only use that in debug
1918 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
1920 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1926 if test "x$lto_is_enabled" = "xyes"; then
1927 echo "Skipping -dead_strip because lto is enabled."
1928 dnl DTrace and -dead_strip don't interact well. See bug 403132.
1929 dnl ===================================================================
1930 elif test "x$enable_dtrace" = "xyes"; then
1931 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1933 dnl check for the presence of the -dead_strip linker flag
1934 AC_MSG_CHECKING([for -dead_strip option to ld])
1935 _SAVE_LDFLAGS=$LDFLAGS
1936 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1937 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1938 if test -n "$_HAVE_DEAD_STRIP" ; then
1939 AC_MSG_RESULT([yes])
1940 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1945 LDFLAGS=$_SAVE_LDFLAGS
1948 dnl With newer linkers we need to pass -allow_heap_execute because of
1949 dnl Microsoft Silverlight (5.1.10411.0 at least).
1950 AC_MSG_CHECKING([for -allow_heap_execute option to ld])
1951 _SAVE_LDFLAGS=$LDFLAGS
1952 LDFLAGS="$LDFLAGS -Wl,-allow_heap_execute"
1953 AC_TRY_LINK(,[return 0;],_HAVE_ALLOW_HEAP_EXECUTE=1,
1954 _HAVE_ALLOW_HEAP_EXECUTE=)
1955 if test -n "$_HAVE_ALLOW_HEAP_EXECUTE" ; then
1956 AC_MSG_RESULT([yes])
1957 MOZ_ALLOW_HEAP_EXECUTE_FLAGS="-Wl,-allow_heap_execute"
1961 LDFLAGS=$_SAVE_LDFLAGS
1963 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1968 if test ! "$GNU_CC"; then
1972 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
1973 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
1974 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1977 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1978 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1981 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1982 AC_DEFINE(_LARGEFILE64_SOURCE)
1987 if test ! "$GNU_CC"; then
1988 DSO_LDOPTS='-b -Wl,+s'
1991 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1992 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1993 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1995 DSO_LDOPTS='-b -E +s'
1996 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1997 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1999 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
2000 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2003 *-android*|*-linuxandroid*)
2004 AC_DEFINE(NO_PW_GECOS)
2006 if test -n "$gonkdir"; then
2007 _PLATFORM_DEFAULT_TOOLKIT=cairo-gonk
2008 _PLATFORM_HAVE_RIL=1
2012 _PLATFORM_DEFAULT_TOOLKIT=cairo-android
2015 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2021 MOZ_GFX_OPTIMIZE_MOBILE=1
2022 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions"
2026 # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
2027 # Similarly for GNU_CXX and INTEL_CXX.
2028 if test "$INTEL_CC" -o "$INTEL_CXX"; then
2029 # -Os has been broken on Intel's C/C++ compilers for quite a
2030 # while; Intel recommends against using it.
2031 MOZ_OPTIMIZE_FLAGS="-O2"
2032 elif test "$GNU_CC" -o "$GNU_CXX"; then
2033 case $GCC_VERSION in
2035 # -Os is broken on gcc 4.5.x we need to tweak it to get good results.
2036 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
2038 MOZ_PGO_OPTIMIZE_FLAGS="-O3"
2039 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks $MOZ_OPTIMIZE_SIZE_TWEAK"
2046 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2050 case "${target_cpu}" in
2052 CFLAGS="$CFLAGS -mieee"
2053 CXXFLAGS="$CXXFLAGS -mieee"
2057 if test -z "$MC"; then
2067 # certain versions of cygwin's makedepend barf on the
2068 # #include <string> vs -I./dist/include/string issue so don't use it
2069 XPCOM_FROZEN_LDOPTS='$(call EXPAND_LIBNAME_PATH,xul mozalloc,$(LIBXUL_DIST)/lib)'
2070 if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
2072 CXX="$CXX -mwindows"
2073 CPP="$CPP -mwindows"
2074 CFLAGS="$CFLAGS -mms-bitfields"
2075 CXXFLAGS="$CXXFLAGS -mms-bitfields"
2076 DSO_LDOPTS='-shared'
2077 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2078 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2080 # Use static libgcc and libstdc++
2081 LDFLAGS="$LDFLAGS -static-libgcc -static-libstdc++"
2082 NSPR_LDFLAGS="$NSPR_LDFLAGS -static-libgcc"
2083 # Use temp file for windres (bug 213281)
2084 RCFLAGS='-O coff --use-temp-file'
2085 # mingw doesn't require kernel32, user32, and advapi32 explicitly
2086 LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32 -lnetapi32"
2089 IMPORT_LIB_SUFFIX=dll.a
2095 # We use mix of both POSIX and Win32 printf format across the tree, so format
2096 # warnings are useless on mingw.
2097 MOZ_C_SUPPORTS_WARNING(-Wno-, format, ac_c_has_wno_format)
2098 MOZ_CXX_SUPPORTS_WARNING(-Wno-, format, ac_cxx_has_wno_format)
2100 TARGET_COMPILER_ABI=msvc
2104 if test "$AS_BIN"; then
2105 AS="$(basename "$AS_BIN")"
2108 AR_FLAGS='-NOLOGO -OUT:$@'
2110 RANLIB='echo not_ranlib'
2111 STRIP='echo not_strip'
2122 IMPORT_LIB_SUFFIX=lib
2123 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2124 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2126 MKSHLIB_UNFORCE_ALL=
2127 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2128 _USE_CPP_INCLUDE_FLAG=1
2129 _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2130 _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2131 CFLAGS="$CFLAGS -W3 -Gy"
2132 CXXFLAGS="$CXXFLAGS -W3 -Gy"
2133 if test "$_CC_SUITE" -ge "12"; then
2134 dnl VS2013+ requires -FS when parallel building by make -jN.
2135 dnl If nothing, compiler sometimes causes C1041 error.
2137 dnl Visual Studio 2013 supports -Gw flags
2138 dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
2139 CFLAGS="$CFLAGS -FS -Gw"
2140 CXXFLAGS="$CXXFLAGS -FS -Gw"
2142 # khuey says we can safely ignore MSVC warning C4251
2143 # MSVC warning C4244 (implicit type conversion may lose data) warns
2144 # and requires workarounds for perfectly valid code. Also, GCC/clang
2145 # don't warn about it by default. So for consistency/sanity, we turn
2146 # it off on MSVC, too.
2147 # MSVC warning C4345 warns of newly conformant behavior as of VS2003.
2148 # MSVC warning C4351 warns of newly conformant behavior as of VS2005.
2149 # MSVC warning C4482 warns when an enum value is refered specifing the
2150 # name of the enum itself. This behavior is allowed in C++11, and the
2151 # warning has been removed in VS2012.
2152 # MSVC warning C4800 warns when a value is implicitly cast to bool,
2153 # because this also forces narrowing to a single byte, which can be a
2154 # perf hit. But this matters so little in practice (and often we want
2155 # that behavior) that it's better to turn it off.
2156 # MSVC warning C4819 warns some UTF-8 characters (e.g. copyright sign)
2157 # on non-Western system locales even if it is in a comment.
2158 CFLAGS="$CFLAGS -wd4244 -wd4819"
2159 CXXFLAGS="$CXXFLAGS -wd4251 -wd4244 -wd4345 -wd4351 -wd4482 -wd4800 -wd4819"
2160 # make 'foo == bar;' error out
2161 CFLAGS="$CFLAGS -we4553"
2162 CXXFLAGS="$CXXFLAGS -we4553"
2163 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib netapi32.lib"
2164 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2165 WARNINGS_AS_ERRORS='-WX'
2166 MOZ_OPTIMIZE_FLAGS='-O1 -Oi'
2168 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2169 LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT"
2170 if test -z "$DEVELOPER_OPTIONS"; then
2171 LDFLAGS="$LDFLAGS -RELEASE"
2173 dnl For profile-guided optimization
2174 PROFILE_GEN_CFLAGS="-GL"
2175 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2176 dnl XXX: PGO builds can fail with warnings treated as errors,
2177 dnl specifically "no profile data available" appears to be
2178 dnl treated as an error sometimes. This might be a consequence
2179 dnl of using WARNINGS_AS_ERRORS in some modules, combined
2180 dnl with the linker doing most of the work in the whole-program
2181 dnl optimization/PGO case. I think it's probably a compiler bug,
2182 dnl but we work around it here.
2183 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2184 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2185 dnl Probably also a compiler bug, but what can you do?
2186 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2187 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2188 dnl Minimum reqiurement of Gecko is VS2010 or later which supports
2189 dnl both SSSE3 and SSE4.1.
2190 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
2191 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
2193 AC_DEFINE(HAVE_SNPRINTF)
2198 AC_DEFINE(HW_THREADS)
2199 AC_DEFINE(STDC_HEADERS)
2200 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2201 TARGET_MD_ARCH=win32
2202 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2204 MOZ_USER_DIR="Mozilla"
2206 dnl Hardcode to win95 for now - cls
2207 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2209 dnl set NO_X11 defines here as the general check is skipped on win32
2215 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2216 if test -n "$L10NBASEDIR"; then
2217 L10NBASEDIR=`cd $L10NBASEDIR && pwd -W`
2224 if test -z "$MOZ_TOOLS"; then
2225 AC_MSG_ERROR([MOZ_TOOLS is not set])
2227 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2228 if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
2229 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2231 MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2232 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2233 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2240 AC_MSG_ERROR([Using a Cygwin build environment is unsupported. Configure cannot check for presence of necessary headers. Please upgrade to MozillaBuild; see https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
2246 if test "$HAVE_64BIT_OS"; then
2247 AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2250 if test -n "$GNU_CC"; then
2251 CFLAGS="$CFLAGS -mstackrealign -fno-keep-inline-dllexport"
2252 CXXFLAGS="$CXXFLAGS -mstackrealign -fno-keep-inline-dllexport"
2253 LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup -Wl,--large-address-aware"
2255 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
2256 LDFLAGS="$LDFLAGS -SAFESEH"
2262 if test -n "$_WIN32_MSVC"; then
2263 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
2268 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2275 CFLAGS="$CFLAGS -Dunix"
2276 CXXFLAGS="$CXXFLAGS -Dunix"
2277 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2279 DSO_PIC_CFLAGS='-fPIC -DPIC'
2280 DSO_LDOPTS='-shared'
2281 BIN_FLAGS='-Wl,--export-dynamic'
2283 DSO_PIC_CFLAGS='-fPIC -DPIC'
2284 DLL_SUFFIX=".so.1.0"
2285 DSO_LDOPTS='-shared'
2287 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2288 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2289 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2290 if test "$LIBRUNPATH"; then
2291 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2293 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(notdir $@) -o $@'
2294 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(notdir $@)) -o $@'
2301 if test "$SO_VERSION"; then
2302 DLL_SUFFIX=".so.$SO_VERSION"
2304 DLL_SUFFIX=".so.1.0"
2306 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib -Wl,-rpath-link,$(if $(X11BASE),$(X11BASE),/usr/X11R6)/lib'
2308 DSO_PIC_CFLAGS='-fPIC'
2309 DSO_LDOPTS='-shared -fPIC'
2310 if test "$LIBRUNPATH"; then
2311 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2320 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2322 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2323 # libraries one level up (e.g. libnspr4.so)
2324 if test "$SOLARIS_SUNPRO_CC"; then
2325 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
2326 LIBS="-lCrun -lCstd -lc $LIBS"
2327 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2328 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
2329 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
2330 LDFLAGS="-xildoff $LDFLAGS"
2331 MMX_FLAGS="-xarch=mmx -xO4"
2332 SSE_FLAGS="-xarch=sse"
2333 SSE2_FLAGS="-xarch=ssei2 -xO4"
2334 if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
2335 _SAVE_LDFLAGS=$LDFLAGS
2336 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2337 AC_TRY_LINK([#include <stdio.h>],
2338 [printf("Hello World\n");],
2340 [LDFLAGS=$_SAVE_LDFLAGS])
2342 MOZ_OPTIMIZE_FLAGS="-xO4"
2343 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
2344 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
2345 MKSHLIB_FORCE_ALL='-z allextract'
2346 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2353 AS='/usr/ccs/bin/as'
2354 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2356 TARGET_COMPILER_ABI="sunc"
2357 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2358 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2359 AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2363 [#if (__SUNPRO_CC < 0x590)
2366 _BAD_COMPILER=,_BAD_COMPILER=1)
2367 if test -n "$_BAD_COMPILER"; then
2369 AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2374 [#if (__SUNPRO_CC >= 0x5100)
2375 #error "Sun C++ 5.10 or above"
2377 _ABOVE_SS12U1=,_ABOVE_SS12U1=1)
2378 if test "$_ABOVE_SS12U1"; then
2380 CXXFLAGS="$CXXFLAGS -xannotate=no"
2382 AC_MSG_RESULT([$_res])
2385 LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
2387 MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
2388 MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
2389 ASFLAGS="$ASFLAGS -fPIC"
2390 DSO_LDOPTS='-shared'
2391 WARNINGS_AS_ERRORS='-Werror'
2393 _WARNINGS_CXXFLAGS=''
2394 if test "$OS_RELEASE" = "5.3"; then
2395 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2401 if test "$OS_RELEASE" = "5.5.1"; then
2402 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2407 DSO_LDOPTS='-Bdynamic'
2408 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2409 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2411 AC_DEFINE(SPRINTF_RETURNS_STRING)
2412 case "$(target_os)" in
2414 DLL_SUFFIX='.so.1.0'
2421 AC_SUBST_LIST(MMX_FLAGS)
2422 AC_SUBST_LIST(SSE_FLAGS)
2423 AC_SUBST_LIST(SSE2_FLAGS)
2427 # Includes linux-android
2432 AC_SUBST(MOZ_LINKER)
2433 if test -n "$MOZ_LINKER"; then
2434 AC_DEFINE(MOZ_LINKER)
2437 dnl Only one oddball right now (QNX), but this gives us flexibility
2438 dnl if any other platforms need to override this in the future.
2439 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2441 dnl ========================================================
2442 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2443 dnl by now will not have any way to link most binaries (tests
2444 dnl as well as viewer, apprunner, etc.), because some symbols
2445 dnl will be left out of the "composite" .so's by ld as unneeded.
2446 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2447 dnl they can link in the static libs that provide the missing
2449 dnl ========================================================
2450 NO_LD_ARCHIVE_FLAGS=
2451 if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
2452 NO_LD_ARCHIVE_FLAGS=1
2456 NO_LD_ARCHIVE_FLAGS=
2459 if test -z "$GNU_CC"; then
2460 NO_LD_ARCHIVE_FLAGS=
2464 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2466 dnl ========================================================
2467 dnl = Flags to strip unused symbols from .so components and
2468 dnl = to export jemalloc symbols when linking a program
2469 dnl ========================================================
2471 *-linux*|*-kfreebsd*-gnu|*-gnu*)
2472 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2475 if test -z "$GNU_CC"; then
2476 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2478 if test -z "$GCC_USE_GNU_LD"; then
2479 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2481 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2486 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2489 if test -n "$GNU_CC"; then
2490 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2495 if test -z "$COMPILE_ENVIRONMENT"; then
2496 SKIP_COMPILER_CHECKS=1
2497 SKIP_LIBRARY_CHECKS=1
2502 if test -z "$SKIP_COMPILER_CHECKS"; then
2503 dnl Checks for typedefs, structures, and compiler characteristics.
2504 dnl ========================================================
2513 AC_MSG_CHECKING(for ssize_t)
2514 AC_CACHE_VAL(ac_cv_type_ssize_t,
2515 [AC_TRY_COMPILE([#include <stdio.h>
2516 #include <sys/types.h>],
2518 [ac_cv_type_ssize_t=true],
2519 [ac_cv_type_ssize_t=false])])
2520 if test "$ac_cv_type_ssize_t" = true ; then
2521 AC_DEFINE(HAVE_SSIZE_T)
2526 AC_STRUCT_ST_BLKSIZE
2527 AC_MSG_CHECKING(for siginfo_t)
2528 AC_CACHE_VAL(ac_cv_siginfo_t,
2529 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2530 #include <signal.h>],
2532 [ac_cv_siginfo_t=true],
2533 [ac_cv_siginfo_t=false])])
2534 if test "$ac_cv_siginfo_t" = true ; then
2535 AC_DEFINE(HAVE_SIGINFO_T)
2547 dnl Check for .hidden assembler directive and visibility attribute.
2548 dnl Borrowed from glibc configure.in
2549 dnl ===============================================================
2550 if test "$GNU_CC" -a "$OS_TARGET" != WINNT; then
2551 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2552 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2553 if test -n "$gonkdir"; then
2554 visibility_target=Gonk
2556 visibility_target=$OS_TARGET
2558 case "$visibility_target" in
2560 VISIBILITY_FLAGS='-fvisibility=hidden'
2563 VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2564 WRAP_SYSTEM_INCLUDES=1
2569 # visibility hidden flag for Sun Studio on Solaris
2570 if test "$SOLARIS_SUNPRO_CC"; then
2571 VISIBILITY_FLAGS='-xldscope=hidden'
2572 fi # Sun Studio on Solaris
2574 case "${OS_TARGET}" in
2575 WINNT|Darwin|Android)
2578 STL_FLAGS='-I$(DIST)/stl_wrappers'
2583 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2584 AC_SUBST(VISIBILITY_FLAGS)
2588 if test "$OS_TARGET" != WINNT; then
2589 # Only run this test with clang on non-Windows platforms, because clang
2590 # cannot do enough code gen for now to make this test work correctly.
2594 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
2595 dnl ========================================================
2596 if test "$GNU_CC"; then
2597 CFLAGS_save="${CFLAGS}"
2598 CFLAGS="${CFLAGS} -Werror"
2599 AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
2600 ac_cv_force_align_arg_pointer,
2601 [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
2603 ac_cv_force_align_arg_pointer="yes",
2604 ac_cv_force_align_arg_pointer="no")])
2605 CFLAGS="${CFLAGS_save}"
2606 if test "$ac_cv_force_align_arg_pointer" = "yes"; then
2607 HAVE_GCC_ALIGN_ARG_POINTER=1
2609 HAVE_GCC_ALIGN_ARG_POINTER=
2612 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
2614 dnl Checks for header files.
2615 dnl ========================================================
2617 case "$target_os" in
2619 # for stuff like -lXshm
2620 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2623 MOZ_CHECK_COMMON_HEADERS
2625 dnl These are all the places some variant of statfs can be hiding.
2626 MOZ_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2629 MOZ_CHECK_HEADERS(sys/quota.h sys/sysmacros.h)
2630 MOZ_CHECK_HEADERS([linux/quota.h],,,[#include <sys/socket.h>])
2632 dnl SCTP support - needs various network include headers
2633 MOZ_CHECK_HEADERS([linux/if_addr.h linux/rtnetlink.h],,,[#include <sys/socket.h>])
2635 MOZ_CHECK_HEADERS(sys/types.h netinet/in.h byteswap.h)
2637 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
2638 AC_CACHE_CHECK(for sockaddr_in.sin_len,
2639 ac_cv_sockaddr_in_sin_len,
2640 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2641 #include <sys/types.h>
2643 #include <netinet/in.h>
2644 struct sockaddr_in x;
2645 void *foo = (void*) &x.sin_len;],
2647 [ac_cv_sockaddr_in_sin_len=true],
2648 [ac_cv_sockaddr_in_sin_len=false])])
2649 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
2650 AC_DEFINE(HAVE_SIN_LEN)
2651 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
2652 AC_DEFINE(HAVE_SCONN_LEN)
2655 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
2656 ac_cv_sockaddr_in6_sin6_len,
2657 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2658 #include <sys/types.h>
2660 #include <netinet/in.h>
2661 struct sockaddr_in6 x;
2662 void *foo = (void*) &x.sin6_len;],
2664 [ac_cv_sockaddr_in6_sin6_len=true],
2665 [ac_cv_sockaddr_in6_sin6_len=false])])
2666 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
2667 AC_DEFINE(HAVE_SIN6_LEN)
2670 AC_CACHE_CHECK(for sockaddr.sa_len,
2671 ac_cv_sockaddr_sa_len,
2672 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2673 #include <sys/types.h>
2675 #include <sys/socket.h>
2677 void *foo = (void*) &x.sa_len;],
2679 [ac_cv_sockaddr_sa_len=true],
2680 [ac_cv_sockaddr_sa_len=false])])
2681 if test "$ac_cv_sockaddr_sa_len" = true ; then
2682 AC_DEFINE(HAVE_SA_LEN)
2685 AC_ARG_ENABLE(dtrace,
2686 [ --enable-dtrace build with dtrace support if available (default=no)],
2687 [enable_dtrace="yes"],)
2688 if test "x$enable_dtrace" = "xyes"; then
2689 MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
2690 if test -n "$HAVE_DTRACE"; then
2691 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
2693 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
2696 AC_SUBST(HAVE_DTRACE)
2702 MOZ_CHECK_HEADERS(sys/cdefs.h)
2706 MOZ_LINUX_PERF_EVENT
2708 dnl Checks for libraries.
2709 dnl ========================================================
2714 AC_CHECK_LIB(c_r, gethostbyname_r)
2718 dnl We don't want to link with libdl even if it's present on OS X, since
2719 dnl it's not used and not part of the default installation. OS/2 has dlfcn
2721 dnl We don't want to link against libm or libpthread on Darwin since
2722 dnl they both are just symlinks to libSystem and explicitly linking
2723 dnl against libSystem causes issues when debugging (see bug 299601).
2728 AC_SEARCH_LIBS(dlopen, dl,
2729 MOZ_CHECK_HEADER(dlfcn.h,
2730 AC_DEFINE(HAVE_DLOPEN)))
2734 _SAVE_CFLAGS="$CFLAGS"
2735 CFLAGS="$CFLAGS -D_GNU_SOURCE"
2736 AC_CHECK_FUNCS(dladdr memmem)
2737 CFLAGS="$_SAVE_CFLAGS"
2739 if test ! "$GNU_CXX"; then
2743 AC_CHECK_LIB(C_r, demangle)
2746 AC_CHECK_LIB(C, demangle)
2751 AC_CHECK_LIB(socket, socket)
2754 XLIBS="$X_EXTRA_LIBS"
2756 dnl ========================================================
2757 dnl Checks for X libraries.
2758 dnl Ordering is important.
2759 dnl Xt is dependent upon SM as of X11R6
2760 dnl ========================================================
2761 if test "$no_x" = "yes"; then
2764 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
2765 XLIBS="-lX11 $XLIBS"
2766 _SAVE_LDFLAGS="$LDFLAGS"
2767 LDFLAGS="$XLDFLAGS $LDFLAGS"
2768 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
2769 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
2770 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
2771 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
2773 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
2774 unset ac_cv_lib_Xt_XtFree
2775 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
2776 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
2777 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
2778 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
2781 # AIX needs the motif library linked before libXt to prevent
2782 # crashes in plugins linked against Motif - Bug #98892
2783 case "${target_os}" in
2785 XT_LIBS="-lXm $XT_LIBS"
2789 dnl ========================================================
2790 dnl = Check for XShm
2791 dnl ========================================================
2792 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
2795 dnl ========================================================
2797 dnl ========================================================
2798 MOZ_CHECK_HEADER(X11/extensions/scrnsaver.h,
2799 AC_CHECK_LIB(Xss, XScreenSaverQueryInfo,
2800 [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS"
2801 AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS))
2803 LDFLAGS="$_SAVE_LDFLAGS"
2813 dnl ========================================================
2814 dnl = pthread support
2815 dnl = Start by checking whether the system support pthreads
2816 dnl ========================================================
2817 case "$target_os" in
2822 MOZ_CHECK_PTHREADS(pthreads,
2823 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
2824 MOZ_CHECK_PTHREADS(pthread,
2825 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
2826 MOZ_CHECK_PTHREADS(c_r,
2827 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
2828 MOZ_CHECK_PTHREADS(c,
2837 dnl ========================================================
2838 dnl Check the command line for --with-pthreads
2839 dnl ========================================================
2840 MOZ_ARG_WITH_BOOL(pthreads,
2841 [ --with-pthreads Force use of system pthread library with NSPR ],
2842 [ if test "$MOZ_USE_PTHREADS"x = x; then
2843 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
2849 dnl ========================================================
2850 dnl Do the platform specific pthread hackery
2851 dnl ========================================================
2852 if test "$MOZ_USE_PTHREADS"x != x
2855 dnl See if -pthread is supported.
2858 ac_cv_have_dash_pthread=no
2859 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
2860 echo 'int main() { return 0; }' | cat > conftest.c
2861 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
2862 if test $? -eq 0; then
2863 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2864 ac_cv_have_dash_pthread=yes
2865 case "$target_os" in
2867 # Freebsd doesn't use -pthread for compiles, it uses them for linking
2870 CFLAGS="$CFLAGS -pthread"
2871 CXXFLAGS="$CXXFLAGS -pthread"
2877 AC_MSG_RESULT($ac_cv_have_dash_pthread)
2880 dnl See if -pthreads is supported.
2882 ac_cv_have_dash_pthreads=no
2883 if test "$ac_cv_have_dash_pthread" = "no"; then
2884 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
2885 echo 'int main() { return 0; }' | cat > conftest.c
2886 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
2887 if test $? -eq 0; then
2888 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2889 ac_cv_have_dash_pthreads=yes
2890 CFLAGS="$CFLAGS -pthreads"
2891 CXXFLAGS="$CXXFLAGS -pthreads"
2895 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
2900 AC_DEFINE(_REENTRANT)
2901 AC_DEFINE(_THREAD_SAFE)
2902 dnl -pthread links in -lpthread, so don't specify it explicitly.
2903 if test "$ac_cv_have_dash_pthread" = "yes"; then
2904 _PTHREAD_LDFLAGS="-pthread"
2908 *-*-openbsd*|*-*-bsdi*)
2909 AC_DEFINE(_REENTRANT)
2910 AC_DEFINE(_THREAD_SAFE)
2911 dnl -pthread links in -lc_r, so don't specify it explicitly.
2912 if test "$ac_cv_have_dash_pthread" = "yes"; then
2913 _PTHREAD_LDFLAGS="-pthread"
2917 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
2918 AC_DEFINE(_REENTRANT)
2922 AC_DEFINE(_REENTRANT)
2926 AC_DEFINE(_REENTRANT)
2930 AC_DEFINE(_REENTRANT)
2931 if test "$SOLARIS_SUNPRO_CC"; then
2932 CFLAGS="$CFLAGS -mt"
2933 CXXFLAGS="$CXXFLAGS -mt"
2937 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
2938 AC_SUBST(MOZ_USE_PTHREADS)
2942 dnl Checks for library functions.
2943 dnl ========================================================
2944 AC_PROG_GCC_TRADITIONAL
2946 AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize localtime_r)
2948 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
2949 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
2950 ac_cv_clock_monotonic,
2951 [for libs in "" -lrt; do
2954 AC_TRY_LINK([#include <time.h>],
2955 [ struct timespec ts;
2956 clock_gettime(CLOCK_MONOTONIC, &ts); ],
2957 ac_cv_clock_monotonic=$libs
2960 ac_cv_clock_monotonic=no)
2963 if test "$ac_cv_clock_monotonic" != "no"; then
2964 HAVE_CLOCK_MONOTONIC=1
2965 REALTIME_LIBS=$ac_cv_clock_monotonic
2966 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
2967 AC_SUBST(HAVE_CLOCK_MONOTONIC)
2968 AC_SUBST(REALTIME_LIBS)
2971 dnl check for wcrtomb/mbrtowc
2972 dnl =======================================================================
2973 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
2976 AC_CACHE_CHECK(for wcrtomb,
2978 [AC_TRY_LINK([#include <wchar.h>],
2979 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
2980 ac_cv_have_wcrtomb="yes",
2981 ac_cv_have_wcrtomb="no")])
2982 if test "$ac_cv_have_wcrtomb" = "yes"; then
2983 AC_DEFINE(HAVE_WCRTOMB)
2985 AC_CACHE_CHECK(for mbrtowc,
2987 [AC_TRY_LINK([#include <wchar.h>],
2988 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
2989 ac_cv_have_mbrtowc="yes",
2990 ac_cv_have_mbrtowc="no")])
2991 if test "$ac_cv_have_mbrtowc" = "yes"; then
2992 AC_DEFINE(HAVE_MBRTOWC)
2999 ac_cv_func_res_ninit,
3000 [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
3001 dnl no need for res_ninit() on NetBSD and OpenBSD
3002 ac_cv_func_res_ninit=no
3006 #define _BSD_SOURCE 1
3008 #include <sys/types.h>
3009 #include <netinet/in.h>
3010 #include <arpa/nameser.h>
3013 [int foo = res_ninit(&_res);],
3014 [ac_cv_func_res_ninit=yes],
3015 [ac_cv_func_res_ninit=no])
3019 if test "$ac_cv_func_res_ninit" = "yes"; then
3020 AC_DEFINE(HAVE_RES_NINIT)
3021 dnl must add the link line we do something as foolish as this... dougt
3023 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3024 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3034 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3035 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3036 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3038 LIBS="$LIBS $_ICONV_LIBS"
3047 iconv_t h = iconv_open("", "");
3048 iconv(h, NULL, NULL, NULL, NULL);
3051 [ac_cv_func_iconv=yes],
3052 [ac_cv_func_iconv=no]
3055 if test "$ac_cv_func_iconv" = "yes"; then
3056 AC_DEFINE(HAVE_ICONV)
3057 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3058 LIBICONV="$_ICONV_LIBS"
3060 [for iconv() with const input],
3061 ac_cv_func_const_iconv,
3067 const char *input = "testing";
3068 iconv_t h = iconv_open("", "");
3069 iconv(h, &input, NULL, NULL, NULL);
3072 [ac_cv_func_const_iconv=yes],
3073 [ac_cv_func_const_iconv=no]
3076 if test "$ac_cv_func_const_iconv" = "yes"; then
3077 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3089 dnl **********************
3090 dnl *** va_copy checks ***
3091 AC_CACHE_CHECK([for an implementation of va_copy()],
3093 [AC_TRY_COMPILE([#include <stdarg.h>
3095 void f (int i, ...) {
3096 va_list args1, args2;
3097 va_start (args1, i);
3098 va_copy (args2, args1);
3099 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3101 va_end (args1); va_end (args2);
3103 [f(0, 42); return 0],
3104 [ac_cv_va_copy=yes],
3108 AC_CACHE_CHECK([whether va_list can be copied by value],
3110 [AC_TRY_COMPILE([#include <stdarg.h>
3112 void f (int i, ...) {
3113 va_list args1, args2;
3114 va_start (args1, i);
3116 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3118 va_end (args1); va_end (args2);
3120 [f(0, 42); return 0],
3121 [ac_cv_va_val_copy=yes],
3122 [ac_cv_va_val_copy=no],
3125 if test "x$ac_cv_va_copy" = "xyes"; then
3126 AC_DEFINE(VA_COPY, va_copy)
3127 AC_DEFINE(HAVE_VA_COPY)
3130 if test "x$ac_cv_va_val_copy" = "xno"; then
3131 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3134 dnl ===================================================================
3135 dnl ========================================================
3136 dnl Put your C++ language/feature checks below
3137 dnl ========================================================
3141 if test "$GNU_CC"; then
3142 if test "$CPU_ARCH" = "arm" ; then
3143 AC_CACHE_CHECK(for ARM EABI,
3147 #if defined(__ARM_EABI__)
3150 #error Not ARM EABI.
3153 ac_cv_gcc_arm_eabi="yes",
3154 ac_cv_gcc_arm_eabi="no")])
3155 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
3157 ARM_ABI_PREFIX=eabi-
3159 ARM_ABI_PREFIX=oabi-
3163 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
3166 dnl Check to see if we can resolve ambiguity with |using|.
3167 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3168 ac_cv_cpp_ambiguity_resolving_using,
3169 [AC_TRY_COMPILE(class X {
3170 public: int go(const X&) {return 3;}
3171 int jo(const X&) {return 3;}
3173 class Y : public X {
3174 public: int go(int) {return 2;}
3175 int jo(int) {return 2;}
3177 private: using X::go;
3180 ac_cv_cpp_ambiguity_resolving_using=yes,
3181 ac_cv_cpp_ambiguity_resolving_using=no)])
3182 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3183 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3186 dnl See if a dynamic_cast to void* gives the most derived object.
3187 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3188 ac_cv_cpp_dynamic_cast_void_ptr,
3189 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3190 class Y { int j; public: virtual ~Y() { } };
3191 class Z : public X, public Y { int k; };
3197 return !((((void*)&mdo != (void*)subx) &&
3198 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3199 (((void*)&mdo != (void*)suby) &&
3200 ((void*)&mdo == dynamic_cast<void*>(suby))));
3202 ac_cv_cpp_dynamic_cast_void_ptr=yes,
3203 ac_cv_cpp_dynamic_cast_void_ptr=no,
3204 ac_cv_cpp_dynamic_cast_void_ptr=no)])
3205 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3206 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3210 dnl note that this one is reversed - if the test fails, then
3211 dnl we require implementations of unused virtual methods. Which
3212 dnl really blows because it means we'll have useless vtable
3214 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3215 ac_cv_cpp_unused_required,
3216 [AC_TRY_LINK(class X {private: virtual void never_called();};,
3218 ac_cv_cpp_unused_required=no,
3219 ac_cv_cpp_unused_required=yes)])
3220 if test "$ac_cv_cpp_unused_required" = yes ; then
3221 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3225 dnl Some compilers have trouble comparing a constant reference to a templatized
3226 dnl class to zero, and require an explicit operator==() to be defined that takes
3227 dnl an int. This test separates the strong from the weak.
3229 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3230 ac_cv_trouble_comparing_to_zero,
3231 [AC_TRY_COMPILE([#include <algorithm>
3232 template <class T> class Foo {};
3234 template <class T> int operator==(const T2*, const T&) { return 0; }
3235 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3236 [Foo<int> f; return (0 != f);],
3237 ac_cv_trouble_comparing_to_zero=no,
3238 ac_cv_trouble_comparing_to_zero=yes)])
3239 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3240 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3243 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
3244 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
3245 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
3247 _SAVE_LDFLAGS=$LDFLAGS
3248 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
3249 AC_CACHE_CHECK(for __thread keyword for TLS variables,
3250 ac_cv_thread_keyword,
3251 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
3252 [return tlsIsMainThread;],
3253 ac_cv_thread_keyword=yes,
3254 ac_cv_thread_keyword=no)])
3255 LDFLAGS=$_SAVE_LDFLAGS
3256 # The custom dynamic linker doesn't support TLS variables
3258 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
3259 # mips builds fail with TLS variables because of a binutils bug.
3261 # OpenBSD doesn't have TLS support, and the test succeeds with clang++
3266 *-android*|*-linuxandroid*)
3273 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
3279 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
3280 if test -n "$MOZ_LINKER"; then
3281 if test "$CPU_ARCH" = arm; then
3282 dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
3283 if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
3284 LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
3285 _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
3290 dnl The custom linker doesn't support text relocations, but NDK >= r6b
3291 dnl creates some (http://code.google.com/p/android/issues/detail?id=23203)
3292 dnl We however want to avoid these text relocations, and this can be done
3293 dnl by making gcc not link crtbegin and crtend. In the broken NDKs, crtend
3294 dnl doesn't contain anything at all, beside placeholders for some sections,
3295 dnl and crtbegin only contains a finalizer function that calls
3296 dnl __cxa_finalize. The custom linker actually takes care of calling
3297 dnl __cxa_finalize when the library doesn't call it itself, which makes it
3298 dnl safe not to link crtbegin. Besides, previous versions of the NDK didn't
3299 dnl link crtbegin and crtend at all.
3300 if test -n "$MOZ_LINKER" -a "$OS_TARGET" = "Android"; then
3301 AC_CACHE_CHECK([whether the CRT objects have text relocations],
3302 ac_cv_crt_has_text_relocations,
3303 [echo 'int foo() { return 0; }' > conftest.cpp
3304 if AC_TRY_COMMAND(${CXX-g++} -o conftest${DLL_SUFFIX} $CXXFLAGS $DSO_LDOPTS $LDFLAGS conftest.cpp $LIBS 1>&5) &&
3305 test -s conftest${DLL_SUFFIX}; then
3306 if ${TOOLCHAIN_PREFIX}readelf -d conftest${DLL_SUFFIX} | grep TEXTREL > /dev/null; then
3307 ac_cv_crt_has_text_relocations=yes
3309 ac_cv_crt_has_text_relocations=no
3312 AC_ERROR([couldn't compile a simple C file])
3315 if test "$ac_cv_crt_has_text_relocations" = yes; then
3316 dnl While we want libraries to skip the CRT files, we don't want
3317 dnl executables to be treated the same way. We thus set the flag
3318 dnl in DSO_LDOPTS and not LDFLAGS. However, to pass it to nspr,
3319 dnl we need to use LDFLAGS because nspr doesn't inherit DSO_LDOPTS.
3320 dnl Using LDFLAGS in nspr is safe, since we only really build
3321 dnl libraries there.
3322 DSO_LDOPTS="$DSO_LDOPTS -nostartfiles"
3323 NSPR_LDFLAGS="$NSPR_LDFLAGS -nostartfiles"
3327 dnl Check for the existence of various allocation headers/functions
3329 MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h"
3332 for file in $MALLOC_HEADERS; do
3333 MOZ_CHECK_HEADER($file, [MALLOC_H=$file])
3334 if test "$MALLOC_H" != ""; then
3335 AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
3340 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
3342 AC_CHECK_FUNCS(malloc_usable_size)
3344 dnl See if compiler supports some gcc-style attributes
3346 AC_CACHE_CHECK(for __attribute__((always_inline)),
3347 ac_cv_attribute_always_inline,
3348 [AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));],
3350 ac_cv_attribute_always_inline=yes,
3351 ac_cv_attribute_always_inline=no)])
3353 AC_CACHE_CHECK(for __attribute__((malloc)),
3354 ac_cv_attribute_malloc,
3355 [AC_TRY_COMPILE([void* f(int) __attribute__((malloc));],
3357 ac_cv_attribute_malloc=yes,
3358 ac_cv_attribute_malloc=no)])
3360 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
3361 ac_cv_attribute_warn_unused,
3362 [AC_TRY_COMPILE([int f(void) __attribute__((warn_unused_result));],
3364 ac_cv_attribute_warn_unused=yes,
3365 ac_cv_attribute_warn_unused=no)])
3367 dnl End of C++ language/feature checks
3370 dnl ========================================================
3371 dnl = Internationalization checks
3372 dnl ========================================================
3374 dnl Internationalization and Locale support is different
3375 dnl on various UNIX platforms. Checks for specific i18n
3376 dnl features go here.
3378 dnl check for LC_MESSAGES
3379 AC_CACHE_CHECK(for LC_MESSAGES,
3380 ac_cv_i18n_lc_messages,
3381 [AC_TRY_COMPILE([#include <locale.h>],
3382 [int category = LC_MESSAGES;],
3383 ac_cv_i18n_lc_messages=yes,
3384 ac_cv_i18n_lc_messages=no)])
3385 if test "$ac_cv_i18n_lc_messages" = yes; then
3386 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3389 AC_HAVE_FUNCS(localeconv)
3390 fi # ! SKIP_COMPILER_CHECKS
3393 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3394 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3397 dnl Mozilla specific options
3398 dnl ========================================================
3399 dnl The macros used for command line options
3400 dnl are defined in build/autoconf/altoptions.m4.
3402 dnl If the compiler supports these attributes, define them as
3403 dnl convenience macros.
3404 if test "$ac_cv_attribute_malloc" = yes ; then
3405 AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
3407 AC_DEFINE(NS_ATTR_MALLOC,)
3410 if test "$ac_cv_attribute_warn_unused" = yes ; then
3411 AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
3413 AC_DEFINE(NS_WARN_UNUSED_RESULT,)
3416 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
3417 dnl features that Windows actually does support.
3419 if test -n "$SKIP_COMPILER_CHECKS"; then
3420 dnl Windows has malloc.h
3421 AC_DEFINE(MALLOC_H, [<malloc.h>])
3422 AC_DEFINE(HAVE_FORCEINLINE)
3423 AC_DEFINE(HAVE_LOCALECONV)
3424 fi # SKIP_COMPILER_CHECKS
3426 dnl ========================================================
3428 dnl = Check for external package dependencies
3430 dnl ========================================================
3431 MOZ_ARG_HEADER(External Packages)
3433 MOZ_ARG_WITH_STRING(libxul-sdk,
3434 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
3435 LIBXUL_SDK_DIR=$withval)
3437 if test "$LIBXUL_SDK_DIR" = "yes"; then
3438 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
3439 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
3440 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
3442 if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
3443 AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
3447 AC_SUBST(LIBXUL_SDK)
3449 if test -n "$LIBXUL_SDK"; then
3450 LIBXUL_DIST="$LIBXUL_SDK"
3452 LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
3454 AC_SUBST(LIBXUL_DIST)
3458 MOZ_ARG_WITH_BOOL(system-libxul,
3459 [ --with-system-libxul Use system installed libxul SDK],
3462 dnl ========================================================
3463 dnl = If NSPR was not detected in the system,
3464 dnl = use the one in the source tree (mozilla/nsprpub)
3465 dnl ========================================================
3466 MOZ_ARG_WITH_BOOL(system-nspr,
3467 [ --with-system-nspr Use system installed NSPR],
3468 _USE_SYSTEM_NSPR=1 )
3470 if test -n "$_USE_SYSTEM_NSPR"; then
3471 AM_PATH_NSPR(4.10.3, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([your don't have NSPR installed or your version is too old])])
3474 if test -n "$MOZ_NATIVE_NSPR"; then
3475 _SAVE_CFLAGS=$CFLAGS
3476 CFLAGS="$CFLAGS $NSPR_CFLAGS"
3477 AC_TRY_COMPILE([#include "prtypes.h"],
3478 [#ifndef PR_STATIC_ASSERT
3479 #error PR_STATIC_ASSERT not defined or requires including prtypes.h
3481 [MOZ_NATIVE_NSPR=1],
3482 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
3483 AC_TRY_COMPILE([#include "prtypes.h"],
3485 #error PR_UINT64 not defined or requires including prtypes.h
3487 [MOZ_NATIVE_NSPR=1],
3488 AC_MSG_ERROR([system NSPR does not support PR_UINT64 or including prtypes.h does not provide it]))
3489 CFLAGS=$_SAVE_CFLAGS
3491 if test -z "$LIBXUL_SDK"; then
3492 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
3493 if test -n "$GNU_CC"; then
3494 NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
3496 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
3499 NSPR_CFLAGS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --includedir="${LIBXUL_DIST}/include/nspr" --cflags`
3500 NSPR_LIBS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --libdir="${LIBXUL_DIST}"/lib --libs`
3504 dnl set GRE_MILESTONE
3505 dnl ========================================================
3506 if test -n "$LIBXUL_SDK"; then
3507 GRE_MILESTONE=`$PYTHON "$_topsrcdir"/config/printconfigsetting.py "$LIBXUL_DIST"/bin/platform.ini Build Milestone`
3509 GRE_MILESTONE=`tail -n 1 "$_topsrcdir"/config/milestone.txt 2>/dev/null || tail -1 "$_topsrcdir"/config/milestone.txt`
3511 AC_SUBST(GRE_MILESTONE)
3513 # set RELEASE_BUILD and NIGHTLY_BUILD variables depending on the cycle we're in
3514 # The logic works like this:
3515 # - if we have "a1" in GRE_MILESTONE, we're building Nightly (define NIGHTLY_BUILD)
3516 # - otherwise, if we have "a" in GRE_MILESTONE, we're building Nightly or Aurora
3517 # - otherwise, we're building Release/Beta (define RELEASE_BUILD)
3518 case "$GRE_MILESTONE" in
3521 AC_DEFINE(NIGHTLY_BUILD)
3527 AC_DEFINE(RELEASE_BUILD)
3530 AC_SUBST(NIGHTLY_BUILD)
3531 AC_SUBST(RELEASE_BUILD)
3533 dnl ========================================================
3534 dnl Disable compiling sources in unified mode.
3535 dnl ========================================================
3537 if test -z "$NIGHTLY_BUILD"; then
3538 MOZ_DISABLE_UNIFIED_COMPILATION=1
3541 MOZ_ARG_DISABLE_BOOL(unified-compilation,
3542 [ --disable-unified-compilation
3543 Disable unified compilation of some C/C++ sources],
3544 MOZ_DISABLE_UNIFIED_COMPILATION=1,
3545 MOZ_DISABLE_UNIFIED_COMPILATION=)
3546 AC_SUBST(MOZ_DISABLE_UNIFIED_COMPILATION)
3548 dnl system libevent Support
3549 dnl ========================================================
3550 MOZ_ARG_WITH_STRING(system-libevent,
3551 [ --with-system-libevent[=PFX]
3552 Use system libevent [installed at prefix PFX]],
3553 LIBEVENT_DIR=$withval)
3555 _SAVE_CFLAGS=$CFLAGS
3556 _SAVE_LDFLAGS=$LDFLAGS
3558 if test "$LIBEVENT_DIR" = yes; then
3559 PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
3560 MOZ_NATIVE_LIBEVENT=1,
3563 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
3564 MOZ_NATIVE_LIBEVENT=
3565 elif test -z "$MOZ_NATIVE_LIBEVENT"; then
3566 CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
3567 LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
3568 MOZ_CHECK_HEADER(event.h,
3569 [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
3570 AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
3572 AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
3573 AC_CHECK_LIB(event, event_init,
3574 [MOZ_NATIVE_LIBEVENT=1
3575 MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
3576 MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
3577 [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
3579 CFLAGS=$_SAVE_CFLAGS
3580 LDFLAGS=$_SAVE_LDFLAGS
3583 AC_SUBST(MOZ_NATIVE_LIBEVENT)
3584 AC_SUBST(MOZ_LIBEVENT_CFLAGS)
3585 AC_SUBST(MOZ_LIBEVENT_LIBS)
3587 dnl ========================================================
3588 dnl = If NSS was not detected in the system,
3589 dnl = use the one in the source tree (mozilla/security/nss)
3590 dnl ========================================================
3592 MOZ_ARG_WITH_BOOL(system-nss,
3593 [ --with-system-nss Use system installed NSS],
3596 if test -n "$_USE_SYSTEM_NSS"; then
3597 AM_PATH_NSS(3.16, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
3600 if test -n "$MOZ_NATIVE_NSS"; then
3601 NSS_LIBS="$NSS_LIBS -lcrmf"
3603 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
3605 if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT"; then
3607 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
3608 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
3609 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
3610 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
3611 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
3613 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
3617 dnl ======================
3619 dnl ======================
3621 AC_MSG_CHECKING([for YASM assembler])
3622 AC_CHECK_PROGS(YASM, yasm, "")
3624 if test -n "$YASM"; then
3625 dnl Pull out yasm's version string
3626 YASM_VERSION=`yasm --version | $AWK '/^yasm/ { print $2 }'`
3627 _YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'`
3628 _YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'`
3629 _YASM_RELEASE=` echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'`
3630 _YASM_BUILD=` echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
3633 if test -z "$SKIP_LIBRARY_CHECKS"; then
3634 dnl system JPEG support
3635 dnl ========================================================
3636 MOZ_ARG_WITH_STRING(system-jpeg,
3637 [ --with-system-jpeg[=PFX]
3638 Use system libjpeg [installed at prefix PFX]],
3641 _SAVE_CFLAGS=$CFLAGS
3642 _SAVE_LDFLAGS=$LDFLAGS
3644 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
3645 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
3646 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
3648 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
3651 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [MOZ_NATIVE_JPEG=1 MOZ_JPEG_LIBS="-ljpeg"], MOZ_NATIVE_JPEG=)
3654 if test "$MOZ_NATIVE_JPEG" = 1; then
3655 AC_TRY_COMPILE([ #include <stdio.h>
3656 #include <sys/types.h>
3657 #include <jpeglib.h> ],
3658 [ #if JPEG_LIB_VERSION < $MOZJPEG
3659 #error "Insufficient JPEG library version ($MOZJPEG required)."
3661 #ifndef JCS_EXTENSIONS
3662 #error "libjpeg-turbo JCS_EXTENSIONS required"
3666 AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg]))
3668 CFLAGS=$_SAVE_CFLAGS
3669 LDFLAGS=$_SAVE_LDFLAGS
3672 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$MOZ_NATIVE_JPEG" = 1; then
3673 MOZ_JPEG_CFLAGS="-I${JPEG_DIR}/include"
3674 MOZ_JPEG_LIBS="-L${JPEG_DIR}/lib ${MOZ_JPEG_LIBS}"
3676 fi # SKIP_LIBRARY_CHECKS
3678 dnl system ZLIB support
3679 dnl ========================================================
3680 MOZ_ZLIB_CHECK([1.2.3])
3682 if test "$MOZ_NATIVE_ZLIB" != 1; then
3683 MOZ_ZLIB_CFLAGS="-I${_topsrcdir}/modules/zlib/src"
3684 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,'"$MOZ_BUILD_ROOT"'/modules/zlib/src)'
3687 if test "$MOZ_LINKER" = 1 -a "$MOZ_NATIVE_ZLIB" != 1; then
3688 AC_MSG_ERROR([Custom dynamic linker requires --with-system-zlib])
3693 if test -z "$SKIP_LIBRARY_CHECKS"; then
3694 dnl system BZIP2 Support
3695 dnl ========================================================
3696 MOZ_ARG_WITH_STRING(system-bz2,
3697 [ --with-system-bz2[=PFX]
3698 Use system libbz2 [installed at prefix PFX]],
3701 _SAVE_CFLAGS=$CFLAGS
3702 _SAVE_LDFLAGS=$LDFLAGS
3704 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
3705 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
3706 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
3708 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
3711 AC_CHECK_LIB(bz2, BZ2_bzread, [MOZ_NATIVE_BZ2=1 MOZ_BZ2_LIBS="-lbz2"],
3712 [MOZ_NATIVE_BZ2= MOZ_BZ2_CFLAGS= MOZ_BZ2_LIBS=])
3714 CFLAGS=$_SAVE_CFLAGS
3715 LDFLAGS=$_SAVE_LDFLAGS
3718 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$MOZ_NATIVE_BZ2" = 1; then
3719 MOZ_BZ2_CFLAGS="-I${BZ2_DIR}/include"
3720 MOZ_BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
3723 dnl ========================================================
3724 dnl system PNG Support
3725 dnl ========================================================
3726 MOZ_ARG_WITH_STRING(system-png,
3727 [ --with-system-png[=PFX]
3728 Use system libpng [installed at prefix PFX]],
3731 _SAVE_CFLAGS=$CFLAGS
3732 _SAVE_LDFLAGS=$LDFLAGS
3734 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
3735 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
3736 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
3738 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
3741 AC_CHECK_LIB(png, png_get_valid, [MOZ_NATIVE_PNG=1 MOZ_PNG_LIBS="-lpng"],
3742 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
3743 AC_CHECK_LIB(png, png_get_acTL, ,
3744 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
3746 if test "$MOZ_NATIVE_PNG" = 1; then
3747 AC_TRY_COMPILE([ #include <stdio.h>
3748 #include <sys/types.h>
3750 [ #if PNG_LIBPNG_VER < $MOZPNG
3751 #error "Insufficient libpng version ($MOZPNG required)."
3753 #ifndef PNG_UINT_31_MAX
3754 #error "Insufficient libpng version."
3757 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
3759 CFLAGS=$_SAVE_CFLAGS
3760 LDFLAGS=$_SAVE_LDFLAGS
3763 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_NATIVE_PNG" = 1; then
3764 MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
3765 MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
3768 MOZ_PNG_ARM_NEON_CHECK=
3769 if test "$MOZ_NATIVE_PNG" != 1 -a "$CPU_ARCH" = "arm" ; then
3770 MOZ_ARG_ENABLE_STRING(png-arm-neon-support,
3771 [ --enable-png-arm-neon-support=TYPE
3775 nocheck (faster but unsafe)],
3776 [MOZ_PNG_ARM_NEON_SUPPORT=$enableval ] )
3777 case "$MOZ_PNG_ARM_NEON_SUPPORT" in
3779 # enable-png-arm-neon-support = no
3782 # enable-png-arm-neon-support = nocheck
3787 MOZ_PNG_ARM_NEON_CHECK=1
3792 AC_SUBST(MOZ_PNG_ARM_NEON_CHECK)
3794 fi # SKIP_LIBRARY_CHECKS
3796 AC_SUBST(MOZ_PNG_ARM_NEON)
3798 dnl ========================================================
3799 dnl system HunSpell Support
3800 dnl ========================================================
3801 MOZ_ARG_ENABLE_BOOL(system-hunspell,
3802 [ --enable-system-hunspell
3803 Use system hunspell (located with pkgconfig)],
3804 MOZ_NATIVE_HUNSPELL=1 )
3806 if test -n "$MOZ_NATIVE_HUNSPELL"; then
3807 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
3810 AC_SUBST(MOZ_NATIVE_HUNSPELL)
3812 dnl ========================================================
3813 dnl system libffi Support
3814 dnl ========================================================
3817 if test -n "$MOZ_NATIVE_FFI"; then
3818 MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_FFI_LIBS"
3821 # split JS out by default to avoid VS2005 PGO crash (bug 591836).
3822 if test "$OS_ARCH" = "WINNT"; then
3826 MOZ_ARG_ENABLE_BOOL(shared-js,
3827 [ --enable-shared-js
3828 Create a shared JavaScript library.],
3829 JS_SHARED_LIBRARY=1,
3832 dnl ========================================================
3833 dnl Java SDK support
3834 dnl ========================================================
3837 MOZ_ARG_WITH_STRING(java-bin-path,
3838 [ --with-java-bin-path=dir
3839 Location of Java binaries (java, javac, jar)],
3840 JAVA_BIN_PATH=$withval)
3842 dnl ========================================================
3846 dnl ========================================================
3848 MOZ_ARG_HEADER(Application)
3851 ENABLE_SYSTEM_EXTENSION_DIRS=1
3852 MOZ_BRANDING_DIRECTORY=
3853 MOZ_OFFICIAL_BRANDING=
3857 MOZ_AUTH_EXTENSION=1
3862 MOZ_SAMPLE_TYPE_FLOAT32=
3863 MOZ_SAMPLE_TYPE_S16=
3874 MOZ_WEBRTC_SIGNALING=
3875 MOZ_WEBRTC_ASSERT_ALWAYS=1
3878 MOZ_MEDIA_NAVIGATOR=
3881 MOZ_VPX_ERROR_CONCEALMENT=
3891 LIBJPEG_TURBO_ASFLAGS=
3892 LIBJPEG_TURBO_X86_ASM=
3893 LIBJPEG_TURBO_X64_ASM=
3894 LIBJPEG_TURBO_ARM_ASM=
3895 MOZ_LOOP=$NIGHTLY_BUILD
3899 MOZ_PREF_EXTENSIONS=1
3900 MOZ_PROFILELOCKING=1
3906 MOZ_TOOLKIT_SEARCH=1
3908 MOZ_UNIVERSALCHARDET=1
3914 MOZ_DISABLE_CRYPTOLEGACY=
3917 NECKO_PROTOCOLS_DEFAULT="about app data file ftp http res viewsource websocket wyciwyg device"
3918 if test -n "$MOZ_RTSP"; then
3919 NECKO_PROTOCOLS_DEFAULT="$NECKO_PROTOCOLS_DEFAULT rtsp"
3923 MOZ_USE_NATIVE_POPUP_WINDOWS=
3924 MOZ_ANDROID_HISTORY=
3927 MOZ_ANDROID_SYNTHAPKS=
3931 MOZ_AUDIO_CHANNEL_MANAGER=
3933 MOZ_CONTENT_SANDBOX=
3934 MOZ_CONTENT_SANDBOX_REPORTER=1
3935 JSGC_USE_EXACT_ROOTING=
3938 case "$target_os" in
3941 AC_DEFINE(NS_ENABLE_TSF)
3946 *-android*|*-linuxandroid*)
3947 if test "$CPU_ARCH" = "arm" ; then
3952 MOZ_THEME_FASTSTRIPE=1
3960 MOZ_ARG_WITH_STRING(external-source-dir,
3961 [ --with-external-source-dir=dir
3962 External directory containing additional build files.],
3963 [ EXTERNAL_SOURCE_DIR=$withval])
3964 AC_SUBST(EXTERNAL_SOURCE_DIR)
3966 MOZ_ARG_ENABLE_STRING(application,
3967 [ --enable-application=APP
3971 tools/update-packaging (AUS-related packaging tools)],
3972 [ MOZ_BUILD_APP=$enableval ] )
3974 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
3975 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
3976 XULRUNNER_STUB_NAME=$withval)
3978 if test -z "$XULRUNNER_STUB_NAME"; then
3979 case "$target_os" in
3981 XULRUNNER_STUB_NAME=xulrunner
3984 XULRUNNER_STUB_NAME=xulrunner-stub
3987 AC_SUBST(XULRUNNER_STUB_NAME)
3989 AC_MSG_CHECKING([for application to build])
3990 if test -z "$MOZ_BUILD_APP"; then
3991 AC_MSG_RESULT([browser])
3992 MOZ_BUILD_APP=browser
3994 # "mobile" no longer exists.
3995 if test "$MOZ_BUILD_APP" = "mobile" ; then
3996 AC_MSG_RESULT([none])
3997 AC_MSG_ERROR([--enable-application=mobile is no longer supported.])
3999 # We have a valid application only if it has a build.mk file in its top
4001 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4002 AC_MSG_RESULT([none])
4003 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4005 AC_MSG_RESULT([$MOZ_BUILD_APP])
4009 # The app update channel is 'default' when not supplied. The value is used in
4010 # the application's confvars.sh so it must be set before confvars.sh is called.
4011 MOZ_ARG_ENABLE_STRING([update-channel],
4012 [ --enable-update-channel=CHANNEL
4013 Select application update channel (default=default)],
4014 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
4016 if test -z "$MOZ_UPDATE_CHANNEL"; then
4017 MOZ_UPDATE_CHANNEL=default
4019 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
4020 AC_SUBST(MOZ_UPDATE_CHANNEL)
4022 # Allow to specify a Mozilla API key file that contains the secret key to be
4023 # used for various Mozilla API requests.
4024 MOZ_ARG_WITH_STRING(mozilla-api-keyfile,
4025 [ --with-mozilla-api-keyfile=file Use the secret key contained in the given keyfile for Mozilla API requests],
4026 MOZ_MOZILLA_API_KEY=`cat $withval`)
4027 if test -z "$MOZ_MOZILLA_API_KEY"; then
4028 MOZ_MOZILLA_API_KEY=no-mozilla-api-key
4030 AC_SUBST(MOZ_MOZILLA_API_KEY)
4032 # Allow to specify a Google API key file that contains the secret key to be
4033 # used for various Google API requests.
4034 MOZ_ARG_WITH_STRING(google-api-keyfile,
4035 [ --with-google-api-keyfile=file Use the secret key contained in the given keyfile for Google API requests],
4036 MOZ_GOOGLE_API_KEY=`cat $withval`)
4037 if test -z "$MOZ_GOOGLE_API_KEY"; then
4038 MOZ_GOOGLE_API_KEY=no-google-api-key
4040 AC_SUBST(MOZ_GOOGLE_API_KEY)
4042 # Allow the application to influence configure with a confvars.sh script.
4043 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4044 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4045 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4046 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4051 # Allow influencing configure with a defines.sh script.
4052 . "${srcdir}/build/defines.sh"
4054 # If we're not building a release build, define EARLY_BETA_OR_EARLIER if it is
4056 if test "$BUILDING_RELEASE"; then
4057 # Override value in defines.sh, if any
4058 EARLY_BETA_OR_EARLIER=
4059 elif test "$EARLY_BETA_OR_EARLIER"; then
4060 AC_DEFINE(EARLY_BETA_OR_EARLIER)
4062 AC_SUBST(EARLY_BETA_OR_EARLIER)
4064 # Allow the application to provide a subconfigure script
4065 if test -f "${srcdir}/${MOZ_BUILD_APP}/configure.in" ; then
4066 do_output_subdirs() {
4067 if test -n "$_subconfigure_subdirs"; then
4068 AC_MSG_ERROR([Cannot specify more than one sub-sub-configure])
4070 _subconfigure_subdir="$1"
4071 _subconfigure_config_args="$ac_configure_args"
4073 tmpscript=`$PYTHON -c 'import os, tempfile; print tempfile.mktemp(prefix="subscript.").replace(os.sep, "/")'` || exit 1
4074 m4 "${srcdir}/build/autoconf/subconfigure.m4" \
4075 "${srcdir}/build/autoconf/altoptions.m4" \
4076 "${srcdir}/${MOZ_BUILD_APP}/configure.in" > $tmpscript
4081 # Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig
4082 MOZ_ARG_WITH_STRING(app-name,
4083 [--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME],
4084 WITH_APP_NAME=$withval,
4087 if test -n "$WITH_APP_NAME" ; then
4088 MOZ_APP_NAME="$WITH_APP_NAME"
4091 MOZ_ARG_WITH_STRING(app-basename,
4092 [--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME],
4093 WITH_APP_BASENAME=$withval,
4096 if test -n "$WITH_APP_BASENAME" ; then
4097 MOZ_APP_BASENAME="$WITH_APP_BASENAME"
4100 # Now is a good time to test for logic errors, define mismatches, etc.
4101 case "$MOZ_BUILD_APP" in
4103 if test "$LIBXUL_SDK"; then
4104 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4109 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4110 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4112 case "$MOZ_BUILD_APP" in
4114 AC_DEFINE(MOZ_PHOENIX)
4118 AC_DEFINE(MOZ_XULRUNNER)
4125 AC_DEFINE(MOZ_MULET)
4129 AC_SUBST(MOZ_BUILD_APP)
4130 AC_SUBST(MOZ_PHOENIX)
4131 AC_SUBST(MOZ_XULRUNNER)
4134 AC_SUBST(MOZ_B2G_VERSION)
4136 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4138 dnl ========================================================
4139 dnl Check android sdk version depending on mobile target
4140 dnl ========================================================
4142 if test -z "$gonkdir" ; then
4143 # Minimum Android SDK API Level we require.
4144 case "$MOZ_BUILD_APP" in
4146 android_min_api_level=16
4148 *-android*|*-linuxandroid*)
4152 AC_MSG_ERROR([You must specify --target=arm-linux-androideabi (or some other valid android target) when building with --enable-application=mobile/android. See https://wiki.mozilla.org/Mobile/Fennec/Android#Setup_Fennec_mozconfig for more information about the necessary options])
4158 MOZ_ANDROID_SDK($android_min_api_level)
4161 dnl ========================================================
4163 dnl = Toolkit Options
4165 dnl ========================================================
4166 MOZ_ARG_HEADER(Toolkit Options)
4168 dnl ========================================================
4169 dnl = Select the default toolkit
4170 dnl ========================================================
4171 MOZ_ARG_ENABLE_STRING(default-toolkit,
4172 [ --enable-default-toolkit=TK
4173 Select default toolkit
4174 Platform specific defaults:
4175 Mac OS X - cairo-cocoa
4176 Win32 - cairo-windows
4180 [ _DEFAULT_TOOLKIT=$enableval ],
4181 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4183 if test "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4184 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4185 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4186 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk3" \
4187 -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4188 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
4189 -o "$_DEFAULT_TOOLKIT" = "cairo-uikit" \
4190 -o "$_DEFAULT_TOOLKIT" = "cairo-android" \
4191 -o "$_DEFAULT_TOOLKIT" = "cairo-gonk"
4193 dnl nglayout only supports building with one toolkit,
4194 dnl so ignore everything after the first comma (",").
4195 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4197 AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4200 MOZ_ARG_WITHOUT_BOOL(x,
4201 [ --without-x Build without X11],
4204 dnl ========================================================
4205 dnl = Enable the toolkit as needed =
4206 dnl ========================================================
4210 case "$MOZ_WIDGET_TOOLKIT" in
4213 MOZ_WIDGET_TOOLKIT=windows
4216 MOZ_INSTRUMENT_EVENT_LOOP=1
4217 if test -n "$GNU_CC"; then
4223 MOZ_WIDGET_TOOLKIT=gtk3
4226 MOZ_ENABLE_XREMOTE=1
4228 MOZ_GL_DEFAULT_PROVIDER=GLX
4234 TK_CFLAGS='$(MOZ_GTK3_CFLAGS)'
4235 TK_LIBS='$(MOZ_GTK3_LIBS)'
4237 AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK)
4239 MOZ_INSTRUMENT_EVENT_LOOP=1
4242 cairo-gtk2|cairo-gtk2-x11)
4243 MOZ_WIDGET_TOOLKIT=gtk2
4246 MOZ_ENABLE_XREMOTE=1
4248 MOZ_GL_DEFAULT_PROVIDER=GLX
4254 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4255 TK_LIBS='$(MOZ_GTK2_LIBS)'
4256 AC_DEFINE(MOZ_WIDGET_GTK2)
4258 AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK)
4260 MOZ_INSTRUMENT_EVENT_LOOP=1
4264 MOZ_WIDGET_TOOLKIT=qt
4266 if test -z "$WITHOUT_X11"; then
4267 MOZ_ENABLE_XREMOTE=1
4268 MOZ_GL_DEFAULT_PROVIDER=GLX
4276 TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4277 TK_LIBS='$(MOZ_QT_LIBS)'
4278 AC_DEFINE(MOZ_WIDGET_QT)
4280 AC_DEFINE(QT_NO_KEYWORDS)
4284 MOZ_WIDGET_TOOLKIT=cocoa
4285 AC_DEFINE(MOZ_WIDGET_COCOA)
4286 LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
4287 TK_LIBS='-framework CoreLocation -framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
4288 TK_CFLAGS="-DNO_X11"
4289 CFLAGS="$CFLAGS $TK_CFLAGS"
4290 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4291 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/bin/XUL $(call EXPAND_LIBNAME_PATH,mozalloc,$(LIBXUL_DIST)/bin)'
4292 MOZ_USER_DIR="Mozilla"
4293 MOZ_FS_LAYOUT=bundle
4295 MOZ_INSTRUMENT_EVENT_LOOP=1
4299 MOZ_WIDGET_TOOLKIT=uikit
4300 AC_DEFINE(MOZ_WIDGET_UIKIT)
4301 LDFLAGS="$LDFLAGS -framework UIKit -lobjc"
4302 TK_CFLAGS="-DNO_X11"
4303 TK_LIBS='-framework Foundation -framework CoreFoundation -framework CoreGraphics -framework CoreText'
4304 CFLAGS="$CFLAGS $TK_CFLAGS"
4305 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4306 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/bin/XUL $(call EXPAND_LIBNAME_PATH,mozalloc,$(LIBXUL_DIST)/bin)'
4307 MOZ_USER_DIR="Mozilla"
4308 MOZ_FS_LAYOUT=bundle
4312 AC_DEFINE(MOZ_WIDGET_ANDROID)
4313 MOZ_WIDGET_TOOLKIT=android
4314 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4315 TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4318 MOZ_INSTRUMENT_EVENT_LOOP=1
4322 XPCOM_FROZEN_LDOPTS='$(call EXPAND_LIBNAME_PATH,xul mozalloc,$(LIBXUL_DIST)/lib)'
4323 AC_DEFINE(MOZ_WIDGET_GONK)
4324 AC_DEFINE(MOZ_TOUCH)
4325 MOZ_WIDGET_TOOLKIT=gonk
4326 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4327 TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4331 MOZ_INSTRUMENT_EVENT_LOOP=1
4336 AC_SUBST(MOZ_PDF_PRINTING)
4337 if test "$MOZ_PDF_PRINTING"; then
4338 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
4339 AC_DEFINE(MOZ_PDF_PRINTING)
4342 if test "$MOZ_ENABLE_XREMOTE"; then
4343 AC_DEFINE(MOZ_ENABLE_XREMOTE)
4346 if test "$MOZ_INSTRUMENT_EVENT_LOOP"; then
4347 AC_DEFINE(MOZ_INSTRUMENT_EVENT_LOOP)
4350 if test "$COMPILE_ENVIRONMENT"; then
4351 if test "$MOZ_ENABLE_GTK3"; then
4352 PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4354 if test "$MOZ_ENABLE_GTK2"; then
4355 if test "$MOZ_X11"; then
4356 GDK_PACKAGES=gdk-x11-2.0
4359 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4362 fi # COMPILE_ENVIRONMENT
4364 AC_SUBST(MOZ_FS_LAYOUT)
4366 dnl ========================================================
4367 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4368 dnl their usage and use them in spidermonkey.
4369 dnl ========================================================
4370 MOZ_ARG_WITH_BOOL(arm-kuser,
4371 [ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4373 if test -n "$USE_ARM_KUSER"; then
4374 AC_DEFINE(USE_ARM_KUSER)
4377 dnl ========================================================
4378 dnl = startup-notification support module
4379 dnl ========================================================
4381 if test "$MOZ_ENABLE_GTK"
4383 MOZ_ENABLE_STARTUP_NOTIFICATION=
4385 MOZ_ARG_ENABLE_BOOL(startup-notification,
4386 [ --enable-startup-notification
4387 Enable startup-notification support (default: disabled) ],
4388 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4389 MOZ_ENABLE_STARTUP_NOTIFICATION=)
4390 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4392 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4393 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4394 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4395 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4397 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4399 MOZ_ENABLE_STARTUP_NOTIFICATION=
4403 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4404 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4407 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4409 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4410 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4411 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4413 dnl ========================================================
4414 dnl Disable printing
4415 dnl ========================================================
4416 MOZ_ARG_DISABLE_BOOL(printing,
4417 [ --disable-printing Disable printing support],
4421 if test "$NS_PRINTING"; then
4422 AC_DEFINE(NS_PRINTING)
4423 AC_DEFINE(NS_PRINT_PREVIEW)
4426 dnl ========================================================
4428 dnl ========================================================
4429 if test "$MOZ_ENABLE_QT"
4431 MOZ_ARG_WITH_STRING(qtdir,
4432 [ --with-qtdir=\$dir Specify Qt directory ],
4435 if test -z "$QTDIR"; then
4436 AC_CHECK_PROGS(HOST_QMAKE, $HOST_QMAKE qmake, "")
4438 HOST_QMAKE="$QTDIR/bin/qmake"
4440 QT_VERSION=`$HOST_QMAKE -v | grep 'Using Qt version' | egrep -o '[[0-9]]+\.[[0-9]]+\.[[0-9]]+'`
4442 if test -z "$QTDIR"; then
4445 AC_MSG_RESULT("Using qt5: $QT_VERSION")
4446 PKG_CHECK_MODULES(MOZ_QT, Qt5Gui Qt5Network Qt5Core Qt5Quick, ,
4448 AC_MSG_ERROR([$MOZ_QT_PKG_ERRORS Need qtbase development packages, (On Ubuntu, you might try installing the packages qtbase5-dev libqt5opengl5-dev.)])
4450 QT5INCDIR=`pkg-config --variable=includedir Qt5Gui`
4451 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QT5INCDIR/QtGui/$QT_VERSION/QtGui"
4452 if test "$NS_PRINTING"; then
4453 PKG_CHECK_MODULES(MOZ_QT_WIDGETS, Qt5PrintSupport, ,
4455 AC_MSG_ERROR([$MOZ_QT_PKG_ERRORS Need qtbase widgets development package])
4457 MOZ_QT_LIBS="$MOZ_QT_LIBS $MOZ_QT_WIDGETS_LIBS"
4458 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $MOZ_QT_WIDGETS_CFLAGS"
4462 AC_MSG_ERROR([* * * Unsupported Qt Version: $QT_VERSION])
4466 AC_CHECK_PROGS(HOST_MOC, $MOC moc, "")
4467 AC_CHECK_PROGS(HOST_RCC, $RCC rcc, "")
4469 MOZ_QT_CFLAGS="-DQT_SHARED"
4470 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
4471 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
4472 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
4473 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
4474 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
4475 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDeclarative"
4478 AC_MSG_RESULT("Using qt5: $QT_VERSION")
4479 MOZ_QT_LIBS="$MOZ_QT_LIBS -L$QTDIR/lib/ -lQt5Gui -lQt5Network -lQt5Core -lQt5Xml"
4480 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui/$QT_VERSION/QtGui"
4481 if test "$NS_PRINTING"; then
4482 MOZ_QT_LIBS="$MOZ_QT_LIBS -lQt5Widgets -lQt5PrintSupport"
4483 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtPrintSupport"
4487 AC_MSG_ERROR([* * * Unsupported Qt Version: $QT_VERSION])
4491 HOST_MOC="$QTDIR/bin/moc"
4492 HOST_RCC="$QTDIR/bin/rcc"
4494 if test -z "$HOST_MOC"; then
4495 AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is incorrect])
4497 if test -z "$HOST_RCC"; then
4498 AC_MSG_ERROR([No acceptable rcc preprocessor found. Qt SDK is not installed or --with-qt is incorrect])
4504 MOZ_ENABLE_QMSYSTEM2=
4505 PKG_CHECK_MODULES(_QMSYSTEM2, qmsystem2,
4506 MOZ_ENABLE_QMSYSTEM2=1,
4507 MOZ_ENABLE_QMSYSTEM2=)
4509 if test "$MOZ_ENABLE_QMSYSTEM2"; then
4510 MOZ_ENABLE_QMSYSTEM2=1
4511 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QMSYSTEM2_CFLAGS"
4512 MOZ_QT_LIBS="$MOZ_QT_LIBS $_QMSYSTEM2_LIBS"
4513 AC_DEFINE(MOZ_ENABLE_QMSYSTEM2)
4516 MOZ_ENABLE_QTNETWORK=
4517 PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7,
4518 MOZ_ENABLE_QTNETWORK=1,
4519 MOZ_ENABLE_QTNETWORK=)
4521 if test "$MOZ_ENABLE_QTNETWORK"; then
4522 MOZ_ENABLE_QTNETWORK=1
4523 AC_DEFINE(MOZ_ENABLE_QTNETWORK)
4526 MOZ_ENABLE_QTMOBILITY=
4527 PKG_CHECK_MODULES(_QTMOBILITY, QtSensors QtFeedback QtLocation,
4528 MOZ_ENABLE_QTMOBILITY=1,
4529 MOZ_ENABLE_QTMOBILITY=)
4530 if test "$MOZ_ENABLE_QTMOBILITY"; then
4531 MOZ_ENABLE_QTMOBILITY=1
4532 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QTMOBILITY_CFLAGS"
4533 MOZ_QT_LIBS="$MOZ_QT_LIBS $_QTMOBILITY_LIBS"
4534 AC_DEFINE(MOZ_ENABLE_QTMOBILITY)
4535 AC_SUBST(MOZ_ENABLE_QTMOBILITY)
4537 AC_CHECK_LIB(QtSensors, main, [
4538 MOZ_ENABLE_QTMOBILITY=1
4539 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtMobility"
4540 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtSensors"
4541 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtFeedback"
4542 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtLocation"
4543 MOZ_QT_LIBS="$MOZ_QT_LIBS -lQtSensors -lQtFeedback -lQtLocation"
4547 MOZ_ENABLE_QT5FEEDBACK=
4548 PKG_CHECK_MODULES(_QT5FEEDBACK, Qt0Feedback,
4549 MOZ_ENABLE_QT5FEEDBACK=1,
4550 MOZ_ENABLE_QT5FEEDBACK=)
4551 if test "$MOZ_ENABLE_QT5FEEDBACK"; then
4552 MOZ_ENABLE_QT5FEEDBACK=1
4553 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QT5FEEDBACK_CFLAGS"
4554 MOZ_QT_LIBS="$MOZ_QT_LIBS $_QT5FEEDBACK_LIBS"
4555 AC_DEFINE(MOZ_ENABLE_QT5FEEDBACK)
4556 AC_SUBST(MOZ_ENABLE_QT5FEEDBACK)
4559 MOZ_ENABLE_QT5GEOPOSITION=
4560 PKG_CHECK_MODULES(_QT5GEOPOSITION, Qt5Positioning,
4561 MOZ_ENABLE_QT5GEOPOSITION=1,
4562 MOZ_ENABLE_QT5GEOPOSITION=)
4563 if test "$MOZ_ENABLE_QT5GEOPOSITION"; then
4564 MOZ_ENABLE_QT5GEOPOSITION=1
4565 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QT5GEOPOSITION_CFLAGS"
4566 MOZ_QT_LIBS="$MOZ_QT_LIBS $_QT5GEOPOSITION_LIBS"
4567 AC_DEFINE(MOZ_ENABLE_QT5GEOPOSITION)
4568 AC_SUBST(MOZ_ENABLE_QT5GEOPOSITION)
4571 if test "$MOZ_ENABLE_CONTENTACTION"; then
4572 MOZ_ENABLE_CONTENTACTION=1
4573 AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
4576 MOZ_ENABLE_CONTENTACTION=
4577 PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=)
4578 if test "$MOZ_ENABLE_CONTENTACTION"; then
4579 MOZ_ENABLE_CONTENTACTION=1
4580 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_CONTENTACTION_CFLAGS"
4581 MOZ_QT_LIBS="$MOZ_QT_LIBS $_CONTENTACTION_LIBS"
4582 AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
4583 AC_SUBST(MOZ_ENABLE_CONTENTACTION)
4587 AC_SUBST(GTK_CONFIG)
4591 AC_SUBST(MOZ_ENABLE_GTK2)
4592 AC_SUBST(MOZ_ENABLE_GTK3)
4593 AC_SUBST(MOZ_ENABLE_GTK)
4594 AC_SUBST(MOZ_ENABLE_QT)
4595 AC_SUBST(MOZ_ENABLE_QTNETWORK)
4596 AC_SUBST(MOZ_ENABLE_QMSYSTEM2)
4597 AC_SUBST(MOZ_ENABLE_QTMOBILITY)
4598 AC_SUBST(MOZ_ENABLE_XREMOTE)
4599 AC_SUBST(MOZ_GTK2_CFLAGS)
4600 AC_SUBST(MOZ_GTK2_LIBS)
4601 AC_SUBST(MOZ_GTK3_CFLAGS)
4602 AC_SUBST(MOZ_GTK3_LIBS)
4603 AC_SUBST(MOZ_WIDGET_GTK)
4604 AC_SUBST(MOZ_QT_CFLAGS)
4605 AC_SUBST(MOZ_QT_LIBS)
4612 dnl ========================================================
4614 dnl = Components & Features
4616 dnl ========================================================
4617 MOZ_ARG_HEADER(Components and Features)
4619 dnl ========================================================
4621 dnl ========================================================
4622 MOZ_ARG_ENABLE_STRING(ui-locale,
4623 [ --enable-ui-locale=ab-CD
4624 Select the user interface locale (default: en-US)],
4625 MOZ_UI_LOCALE=$enableval )
4626 AC_SUBST(MOZ_UI_LOCALE)
4628 dnl ========================================================
4629 dnl = Trademarked Branding
4630 dnl ========================================================
4631 MOZ_ARG_ENABLE_BOOL(official-branding,
4632 [ --enable-official-branding
4633 Enable Official mozilla.org Branding
4634 Do not distribute builds with
4635 --enable-official-branding unless you have
4636 permission to use trademarks per
4637 http://www.mozilla.org/foundation/trademarks/ .],
4639 if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
4640 AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
4642 MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
4643 MOZ_OFFICIAL_BRANDING=1
4645 ], MOZ_OFFICIAL_BRANDING=)
4647 AC_SUBST(MOZ_OFFICIAL_BRANDING)
4648 if test -n "$MOZ_OFFICIAL_BRANDING"; then
4649 AC_DEFINE(MOZ_OFFICIAL_BRANDING)
4652 MOZ_ARG_WITH_STRING(branding,
4653 [ --with-branding=dir Use branding from the specified directory.],
4654 MOZ_BRANDING_DIRECTORY=$withval)
4656 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4657 if test -z "$REAL_BRANDING_DIRECTORY"; then
4658 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4661 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4662 . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
4665 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4667 dnl ========================================================
4668 dnl = Distribution ID
4669 dnl ========================================================
4670 MOZ_ARG_WITH_STRING(distribution-id,
4671 [ --with-distribution-id=ID
4672 Set distribution-specific id (default=org.mozilla)],
4673 [ val=`echo $withval`
4674 MOZ_DISTRIBUTION_ID="$val"])
4676 if test -z "$MOZ_DISTRIBUTION_ID"; then
4677 MOZ_DISTRIBUTION_ID="org.mozilla"
4680 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4681 AC_SUBST(MOZ_DISTRIBUTION_ID)
4684 dnl ========================================================
4686 dnl ========================================================
4687 if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT"
4689 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4691 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION)
4692 AC_SUBST(MOZ_PANGO_CFLAGS)
4693 AC_SUBST(MOZ_PANGO_LIBS)
4696 dnl ========================================================
4697 dnl = GnomeVFS, GIO and GConf support module
4698 dnl ========================================================
4702 dnl build the GIO extension by default only when the
4703 dnl GTK2 toolkit is in use.
4704 if test "$MOZ_ENABLE_GTK"
4710 dnl ========================================================
4711 dnl = GnomeVFS support module
4712 dnl ========================================================
4713 MOZ_ARG_ENABLE_BOOL(gnomevfs,
4714 [ --enable-gnomevfs Enable GnomeVFS support (default: disabled)],
4715 MOZ_ENABLE_GNOMEVFS=force,
4716 MOZ_ENABLE_GNOMEVFS=)
4718 if test "$MOZ_ENABLE_GNOMEVFS"
4720 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
4721 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
4722 MOZ_ENABLE_GNOMEVFS=1
4723 AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
4725 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
4727 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
4729 MOZ_ENABLE_GNOMEVFS=
4733 AC_SUBST(MOZ_ENABLE_GNOMEVFS)
4734 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
4735 AC_SUBST(MOZ_GNOMEVFS_LIBS)
4737 dnl ========================================================
4738 dnl = GIO support module
4739 dnl ========================================================
4740 MOZ_ARG_DISABLE_BOOL(gio,
4741 [ --disable-gio Disable GIO support],
4743 MOZ_ENABLE_GIO=force)
4745 if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK"
4747 if test "$MOZ_ENABLE_GTK2"
4749 PKG_CHECK_MODULES(_GTKCHECK, gtk+-2.0 >= 2.14, ,
4750 [AC_MSG_ERROR([* * * Could not find gtk+-2.0 > 2.14. Required for build with gio.])])
4752 PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
4753 MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
4755 AC_DEFINE(MOZ_ENABLE_GIO)
4757 if test "$MOZ_ENABLE_GIO" = "force"
4759 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
4765 AC_SUBST(MOZ_ENABLE_GIO)
4766 AC_SUBST(MOZ_GIO_CFLAGS)
4767 AC_SUBST(MOZ_GIO_LIBS)
4769 dnl ========================================================
4770 dnl = GConf support module
4771 dnl ========================================================
4772 MOZ_ARG_DISABLE_BOOL(gconf,
4773 [ --disable-gconf Disable Gconf support ],
4775 MOZ_ENABLE_GCONF=force)
4777 if test "$MOZ_ENABLE_GCONF"
4779 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
4780 MOZ_GCONF_LIBS=`$PKG_CONFIG --libs gobject-2.0`
4783 if test "$MOZ_ENABLE_GCONF" = "force"
4785 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
4791 if test "$MOZ_ENABLE_GCONF"; then
4792 AC_DEFINE(MOZ_ENABLE_GCONF)
4795 AC_SUBST(MOZ_ENABLE_GCONF)
4796 AC_SUBST(MOZ_GCONF_CFLAGS)
4797 AC_SUBST(MOZ_GCONF_LIBS)
4800 dnl ========================================================
4801 dnl = libproxy support
4802 dnl ========================================================
4804 if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT"
4806 MOZ_ENABLE_LIBPROXY=
4808 MOZ_ARG_ENABLE_BOOL(libproxy,
4809 [ --enable-libproxy Enable libproxy support ],
4810 MOZ_ENABLE_LIBPROXY=1,
4811 MOZ_ENABLE_LIBPROXY=)
4813 if test "$MOZ_ENABLE_LIBPROXY"
4815 PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
4816 AC_DEFINE(MOZ_ENABLE_LIBPROXY)
4819 AC_SUBST(MOZ_ENABLE_LIBPROXY)
4820 AC_SUBST(MOZ_LIBPROXY_CFLAGS)
4821 AC_SUBST(MOZ_LIBPROXY_LIBS)
4823 dnl ========================================================
4824 dnl = GNOME component (mozgnome)
4825 dnl ========================================================
4827 if test "$MOZ_ENABLE_GTK"
4829 MOZ_ENABLE_GNOME_COMPONENT=1
4831 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
4833 dnl ========================================================
4834 dnl = libgnomeui support module
4835 dnl ========================================================
4837 if test "$MOZ_ENABLE_GTK"
4839 MOZ_ARG_ENABLE_BOOL(gnomeui,
4840 [ --enable-gnomeui Enable libgnomeui instead of GIO & GTK for icon theme support ],
4841 MOZ_ENABLE_GNOMEUI=force,
4842 MOZ_ENABLE_GNOMEUI=)
4844 if test "$MOZ_ENABLE_GNOMEUI"
4846 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
4848 MOZ_ENABLE_GNOMEUI=1
4850 if test "$MOZ_ENABLE_GNOMEUI" = "force"
4852 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
4858 if test "$MOZ_ENABLE_GNOMEUI"; then
4859 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
4863 AC_SUBST(MOZ_ENABLE_GNOMEUI)
4864 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
4866 dnl ========================================================
4868 dnl ========================================================
4870 if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT"
4874 MOZ_ARG_DISABLE_BOOL(dbus,
4875 [ --disable-dbus Disable dbus support ],
4879 if test "$MOZ_ENABLE_DBUS"
4881 PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
4882 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
4883 AC_DEFINE(MOZ_ENABLE_DBUS)
4886 AC_SUBST(MOZ_ENABLE_DBUS)
4887 AC_SUBST(MOZ_DBUS_CFLAGS)
4888 AC_SUBST(MOZ_DBUS_LIBS)
4889 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
4890 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
4892 dnl ========================================================
4893 dnl = Enable Android History instead of Places
4894 dnl ========================================================
4895 if test -n "$MOZ_ANDROID_HISTORY"; then
4896 if test -z "$MOZ_PLACES"; then
4897 AC_DEFINE(MOZ_ANDROID_HISTORY)
4899 AC_MSG_ERROR([Cannot use MOZ_ANDROID_HISTORY alongside MOZ_PLACES.])
4903 dnl ========================================================
4904 dnl = Build with the Android compositor
4905 dnl ========================================================
4906 if test -n "$MOZ_ANDROID_OMTC"; then
4907 dnl Do this if defined in confvars.sh
4908 AC_DEFINE(MOZ_ANDROID_OMTC)
4911 dnl ========================================================
4912 dnl = Disable WebSMS backend
4913 dnl ========================================================
4914 MOZ_ARG_DISABLE_BOOL(websms-backend,
4915 [ --disable-websms-backend
4916 Disable WebSMS backend],
4917 MOZ_WEBSMS_BACKEND=,
4918 MOZ_WEBSMS_BACKEND=1)
4920 if test -n "$MOZ_WEBSMS_BACKEND"; then
4921 AC_DEFINE(MOZ_WEBSMS_BACKEND)
4924 dnl ========================================================
4925 dnl = Enable NFC permission on Android
4926 dnl ========================================================
4927 if test -n "$MOZ_ANDROID_BEAM"; then
4928 AC_DEFINE(MOZ_ANDROID_BEAM)
4931 dnl ========================================================
4932 dnl = Synthesized Webapp APKs on Android
4933 dnl ========================================================
4934 MOZ_ARG_ENABLE_BOOL(android-synthapks,
4935 [ --enable-android-synthapks Enable synthesized APKs],
4936 MOZ_ANDROID_SYNTHAPKS=1,
4937 MOZ_ANDROID_SYNTHAPKS=)
4939 if test -n "$MOZ_ANDROID_SYNTHAPKS"; then
4940 AC_DEFINE(MOZ_ANDROID_SYNTHAPKS)
4943 dnl ========================================================
4944 dnl = JS Debugger XPCOM component (js/jsd)
4945 dnl ========================================================
4946 MOZ_ARG_DISABLE_BOOL(jsd,
4947 [ --disable-jsd Disable JavaScript debug library],
4952 dnl ========================================================
4953 dnl = Enable IPDL's "expensive" unit tests
4954 dnl ========================================================
4957 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
4958 [ --enable-ipdl-tests Enable expensive IPDL tests],
4962 if test -n "$MOZ_IPDL_TESTS"; then
4963 AC_DEFINE(MOZ_IPDL_TESTS)
4966 AC_SUBST(MOZ_IPDL_TESTS)
4968 dnl ========================================================
4969 dnl = Disable building dbm
4970 dnl ========================================================
4971 MOZ_ARG_DISABLE_BOOL(dbm,
4972 [ --disable-dbm Disable building dbm],
4976 dnl ========================================================
4977 dnl accessibility support on by default on all platforms
4978 dnl ========================================================
4979 MOZ_ARG_DISABLE_BOOL(accessibility,
4980 [ --disable-accessibility Disable accessibility support],
4983 if test "$ACCESSIBILITY"; then
4986 if test -z "$MIDL"; then
4987 if test "$GCC" != "yes"; then
4988 AC_MSG_ERROR([MIDL could not be found. Building accessibility without MIDL is not supported.])
4990 AC_MSG_ERROR([You have accessibility enabled, but widl could not be found. Add --disable-accessibility to your mozconfig or install widl. See https://developer.mozilla.org/en-US/docs/Cross_Compile_Mozilla_for_Mingw32 for details.])
4994 AC_DEFINE(ACCESSIBILITY)
4997 dnl ========================================================
4998 dnl Accessibility is required for the linuxgl widget
5000 dnl ========================================================
5001 if test "${MOZ_WIDGET_TOOLKIT}" = "linuxgl" -a "$ACCESSIBILITY" != "1"; then
5002 AC_MSG_ERROR(["Accessibility is required for the linuxgl widget backend"])
5005 dnl Turn off webrtc for OS's we don't handle yet, but allow
5006 dnl --enable-webrtc to override. Can disable for everything in
5007 dnl the master list above.
5008 if test -n "$MOZ_WEBRTC"; then
5010 *-linux*|*-mingw*|*-darwin*|*-android*|*-linuxandroid*|*-dragonfly*|*-freebsd*|*-netbsd*|*-openbsd*)
5014 dnl default to disabled for all others
5020 AC_TRY_COMPILE([#include <linux/ethtool.h>],
5021 [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
5022 MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
5024 AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI)
5026 # target_arch is from {ia32|x64|arm|ppc}
5028 x86_64 | arm | x86 | ppc* | ia64)
5032 # unsupported arch for webrtc
5038 dnl ========================================================
5039 dnl = Disable WebRTC code
5040 dnl ========================================================
5041 MOZ_ARG_DISABLE_BOOL(webrtc,
5042 [ --disable-webrtc Disable support for WebRTC],
5046 if test -n "$MOZ_WEBRTC"; then
5047 AC_DEFINE(MOZ_WEBRTC)
5048 dnl MOZ_WEBRTC_ASSERT_ALWAYS turns on a number of safety asserts in
5049 dnl opt/production builds (via MOZ_CRASH())
5050 AC_DEFINE(MOZ_WEBRTC_ASSERT_ALWAYS)
5053 MOZ_VPX_ERROR_CONCEALMENT=1
5055 dnl enable once Signaling lands
5056 MOZ_WEBRTC_SIGNALING=1
5057 AC_DEFINE(MOZ_WEBRTC_SIGNALING)
5058 dnl enable once PeerConnection lands
5059 MOZ_PEERCONNECTION=1
5060 AC_DEFINE(MOZ_PEERCONNECTION)
5069 AC_SUBST(MOZ_WEBRTC)
5070 AC_SUBST(MOZ_WEBRTC_LEAKING_TESTS)
5071 AC_SUBST(MOZ_WEBRTC_SIGNALING)
5072 AC_SUBST(MOZ_PEERCONNECTION)
5073 AC_SUBST(MOZ_WEBRTC_ASSERT_ALWAYS)
5077 dnl Use integers over floats for audio on B2G and Android, because audio
5078 dnl backends for those platforms don't support floats.
5079 if test "$OS_TARGET" = "Android"; then
5080 MOZ_SAMPLE_TYPE_S16=1
5081 AC_DEFINE(MOZ_SAMPLE_TYPE_S16)
5082 AC_SUBST(MOZ_SAMPLE_TYPE_S16)
5084 MOZ_SAMPLE_TYPE_FLOAT32=1
5085 AC_DEFINE(MOZ_SAMPLE_TYPE_FLOAT32)
5086 AC_SUBST(MOZ_SAMPLE_TYPE_FLOAT32)
5089 dnl ========================================================
5090 dnl = Disable Speech API code
5091 dnl ========================================================
5092 MOZ_ARG_DISABLE_BOOL(webspeech,
5093 [ --disable-webspeech Disable support for HTML Speech API],
5097 if test -n "$MOZ_WEBSPEECH"; then
5098 AC_DEFINE(MOZ_WEBSPEECH)
5101 AC_SUBST(MOZ_WEBSPEECH)
5103 dnl ========================================================
5104 dnl = Enable Raw Codecs
5105 dnl ========================================================
5106 MOZ_ARG_ENABLE_BOOL(raw,
5107 [ --enable-raw Enable support for RAW media],
5111 if test -n "$MOZ_RAW"; then
5117 dnl Checks for __attribute__(aligned()) directive need by libogg
5118 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5119 [ac_cv_c_attribute_aligned],
5120 [ac_cv_c_attribute_aligned=0
5121 CFLAGS_save="${CFLAGS}"
5122 CFLAGS="${CFLAGS} -Werror"
5123 for ac_cv_c_attr_align_try in 64 32 16 8; do
5124 echo "trying $ac_cv_c_attr_align_try"
5126 [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
5127 [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
5128 if test "$ac_cv_c_attribute_aligned" != 0; then
5132 CFLAGS="${CFLAGS_save}"])
5133 if test "${ac_cv_c_attribute_aligned}" != "0"; then
5134 AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
5135 [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
5138 dnl ========================================================
5139 dnl = Disable Opus audio codec support
5140 dnl ========================================================
5141 MOZ_ARG_DISABLE_BOOL(opus,
5142 [ --disable-opus Disable support for Opus audio],
5146 dnl ========================================================
5147 dnl = Disable VP8 decoder support
5148 dnl ========================================================
5149 MOZ_ARG_DISABLE_BOOL(webm,
5150 [ --disable-webm Disable support for WebM media (VP8 video and Vorbis audio)],
5154 if test -n "$MOZ_WEBM"; then
5159 dnl ========================================================
5160 dnl = DirectShow support
5161 dnl ========================================================
5162 if test "$OS_ARCH" = "WINNT"; then
5163 dnl Enable DirectShow support by default.
5167 MOZ_ARG_DISABLE_BOOL(directshow,
5168 [ --disable-directshow Disable support for DirectShow],
5172 if test -n "$MOZ_DIRECTSHOW"; then
5173 AC_DEFINE(MOZ_DIRECTSHOW)
5176 dnl ========================================================
5177 dnl = Windows Media Foundation support
5178 dnl ========================================================
5179 if test "$OS_ARCH" = "WINNT"; then
5180 dnl Enable Windows Media Foundation support by default.
5181 dnl Note our minimum SDK version is Windows 7 SDK, so we are (currently)
5182 dnl guaranteed to have a recent-enough SDK to build WMF.
5186 MOZ_ARG_DISABLE_BOOL(wmf,
5187 [ --disable-wmf Disable support for Windows Media Foundation],
5191 if test -n "$MOZ_WMF"; then
5195 dnl ========================================================
5196 dnl FFmpeg H264/AAC Decoding Support
5197 dnl ========================================================
5198 case "$OS_TARGET" in
5199 WINNT|Darwin|Android)
5206 MOZ_ARG_DISABLE_BOOL(ffmpeg,
5207 [ --disable-ffmpeg Disable FFmpeg for fragmented H264/AAC decoding],
5212 if test -n "$MOZ_FFMPEG"; then
5213 AC_DEFINE(MOZ_FFMPEG)
5216 dnl ========================================================
5217 dnl = Built-in fragmented MP4 support.
5218 dnl ========================================================
5219 if test -n "$MOZ_WMF" -o -n "$MOZ_FFMPEG"; then
5220 dnl Enable fragmented MP4 parser on Windows by default.
5221 dnl We will also need to enable it on other platforms as we implement
5222 dnl platform decoder support there too.
5226 MOZ_ARG_DISABLE_BOOL(fmp4,
5227 [ --disable-fmp4 Disable support for in built Fragmented MP4 parsing],
5231 if test -n "$MOZ_FMP4"; then
5236 dnl ========================================================
5237 dnl = Enable media plugin support
5238 dnl ========================================================
5239 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5240 dnl Enable support on android by default
5244 MOZ_ARG_ENABLE_BOOL(media-plugins,
5245 [ --enable-media-plugins Enable support for media plugins],
5246 MOZ_MEDIA_PLUGINS=1,
5249 if test -n "$MOZ_MEDIA_PLUGINS"; then
5250 AC_DEFINE(MOZ_MEDIA_PLUGINS)
5253 dnl ========================================================
5254 dnl = Disable platform MP3 decoder on OSX
5255 dnl ========================================================
5256 if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
5260 MOZ_ARG_DISABLE_BOOL(apple-media,
5261 [ --disable-apple-media Disable support for Apple AudioToolbox/VideoToolbox],
5265 if test -n "$MOZ_APPLEMEDIA"; then
5266 AC_DEFINE(MOZ_APPLEMEDIA)
5269 dnl ========================================================
5270 dnl = Enable getUserMedia support
5271 dnl ========================================================
5272 MOZ_ARG_ENABLE_BOOL(media-navigator,
5273 [ --enable-media-navigator Enable support for getUserMedia],
5274 MOZ_MEDIA_NAVIGATOR=1,
5275 MOZ_MEDIA_NAVIGATOR=)
5277 if test -n "$MOZ_MEDIA_NAVIGATOR"; then
5278 AC_DEFINE(MOZ_MEDIA_NAVIGATOR)
5281 dnl ========================================================
5282 dnl = Enable building OMX media plugin (B2G or Android)
5283 dnl ========================================================
5284 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5285 dnl Enable support on android by default
5289 MOZ_ARG_ENABLE_BOOL(omx-plugin,
5290 [ --enable-omx-plugin Enable building OMX plugin (B2G)],
5294 if test -n "$MOZ_OMX_PLUGIN"; then
5295 if test "$OS_TARGET" = "Android"; then
5296 dnl Only allow building OMX plugin on Gonk (B2G) or Android
5297 AC_DEFINE(MOZ_OMX_PLUGIN)
5299 dnl fail if we're not building on Gonk or Android
5300 AC_MSG_ERROR([OMX media plugin can only be built on B2G or Android])
5304 dnl system libvpx Support
5305 dnl ========================================================
5306 MOZ_ARG_WITH_BOOL(system-libvpx,
5307 [ --with-system-libvpx Use system libvpx (located with pkgconfig)],
5308 MOZ_NATIVE_LIBVPX=1)
5313 if test -n "$MOZ_VPX"; then
5315 if test -n "$MOZ_VPX_ERROR_CONCEALMENT" ; then
5316 AC_DEFINE(MOZ_VPX_ERROR_CONCEALMENT)
5319 _SAVE_CFLAGS=$CFLAGS
5321 if test -n "$MOZ_NATIVE_LIBVPX"; then
5322 dnl ============================
5323 dnl === libvpx Version check ===
5324 dnl ============================
5325 dnl Check to see if we have a system libvpx package.
5326 PKG_CHECK_MODULES(MOZ_LIBVPX, vpx >= 1.3.0)
5328 CFLAGS="$CFLAGS $MOZ_LIBVPX_CFLAGS"
5329 LIBS="$LIBS $MOZ_LIBVPX_LIBS"
5331 MOZ_CHECK_HEADER([vpx/vpx_decoder.h], [],
5332 [AC_MSG_ERROR([Couldn't find vpx/vpx_decoder.h which is required for build with system libvpx. Use --without-system-libvpx to build with in-tree libvpx.])])
5334 AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver, [],
5335 [AC_MSG_ERROR([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found])])
5337 MOZ_CHECK_HEADER([vpx_mem/vpx_mem.h],
5338 [AC_CHECK_FUNC(vpx_mem_set_functions)])
5339 if test "$ac_cv_header_vpx_mem_vpx_mem_h" = no -o \
5340 "$ac_cv_func_vpx_mem_set_functions" = no; then
5341 AC_DEFINE(MOZ_VPX_NO_MEM_REPORTING)
5344 CFLAGS=$_SAVE_CFLAGS
5348 AC_SUBST(MOZ_NATIVE_LIBVPX)
5349 AC_SUBST(MOZ_LIBVPX_CFLAGS)
5350 AC_SUBST(MOZ_LIBVPX_LIBS)
5352 if test "$MOZ_WEBM"; then
5353 if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then
5360 if test -n "$MOZ_VPX" -a -z "$MOZ_NATIVE_LIBVPX"; then
5362 dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
5363 dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
5364 dnl We currently require gcc on all arm platforms.
5367 VPX_NEED_OBJ_INT_EXTRACT=
5369 dnl See if we have assembly on this platform.
5370 case "$OS_ARCH:$CPU_ARCH" in
5372 VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC"
5376 VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC"
5380 VPX_ASFLAGS="-f x64 -rnasm -pnasm"
5384 dnl Check for yasm 1.1 or greater.
5385 if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then
5386 AC_MSG_ERROR([yasm 1.1 or greater is required to build libvpx on Win32, but it appears not to be installed. Install it (included in MozillaBuild 1.5.1 and newer) or configure with --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
5387 elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
5388 AC_MSG_ERROR([yasm 1.1 or greater is required to build libvpx on Win32, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION. Upgrade to the newest version (included in MozillaBuild 1.5.1 and newer) or configure with --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
5390 VPX_ASFLAGS="-f win32 -rnasm -pnasm -DPIC"
5392 dnl The encoder needs obj_int_extract to get asm offsets.
5396 if test -n "$GNU_AS" ; then
5398 dnl These flags are a lie; they're just used to enable the requisite
5399 dnl opcodes; actual arch detection is done at runtime.
5400 VPX_ASFLAGS="-march=armv7-a -mfpu=neon"
5401 VPX_DASH_C_FLAG="-c"
5402 VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl'
5403 VPX_ASM_SUFFIX="$ASM_SUFFIX"
5408 if $CC -E -dM -</dev/null | grep -q __ELF__; then
5409 VPX_ASFLAGS="-f elf32 -rnasm -pnasm -DPIC"
5414 if $CC -E -dM -</dev/null | grep -q __ELF__; then
5415 VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
5421 if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_X86_ASM" -a -z "$VPX_AS"; then
5422 AC_MSG_ERROR([yasm is a required build tool for this architecture when webm is enabled. You may either install yasm or --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
5425 if test -z "$GNU_CC" -a -z "$INTEL_CC" -a -z "$CLANG_CC" ; then
5426 dnl We prefer to get asm offsets using inline assembler, which the above
5427 dnl compilers can do. When we're not using one of those, we have to fall
5428 dnl back to obj_int_extract, which reads them from a compiled object
5429 dnl file. Unfortunately, that only works if we're compiling on a system
5430 dnl with the header files for the appropriate object file format.
5431 VPX_NEED_OBJ_INT_EXTRACT=1
5434 if test -n "$VPX_X86_ASM"; then
5435 AC_DEFINE(VPX_X86_ASM)
5436 elif test -n "$VPX_ARM_ASM"; then
5437 AC_DEFINE(VPX_ARM_ASM)
5439 AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.])
5443 dnl ========================================================
5444 dnl = Disable Wave decoder support
5445 dnl ========================================================
5446 MOZ_ARG_DISABLE_BOOL(wave,
5447 [ --disable-wave Disable Wave decoder support],
5451 if test -n "$MOZ_WAVE"; then
5455 dnl ========================================================
5456 dnl = Handle dependent MEDIA defines
5457 dnl ========================================================
5459 if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then
5460 AC_MSG_ERROR([MOZ_VORBIS and MOZ_TREMOR are mutually exclusive! The build system should not allow them both to be set, but they are. Please file a bug at https://bugzilla.mozilla.org/])
5463 if test -n "$MOZ_WEBRTC" -a -z "$MOZ_OPUS"; then
5464 AC_MSG_ERROR([MOZ_WEBRTC requires MOZ_OPUS which is disabled.])
5467 if test -n "$MOZ_VORBIS"; then
5468 AC_DEFINE(MOZ_VORBIS)
5471 if test -n "$MOZ_TREMOR"; then
5472 AC_DEFINE(MOZ_TREMOR)
5475 if test -n "$MOZ_OPUS"; then
5479 if test -n "$MOZ_WEBM_ENCODER"; then
5480 AC_DEFINE(MOZ_WEBM_ENCODER)
5482 AC_SUBST(MOZ_WEBM_ENCODER)
5484 dnl ==================================
5485 dnl = Check alsa availability on Linux
5486 dnl ==================================
5488 dnl If using Linux, ensure that the alsa library is available
5489 if test "$OS_TARGET" = "Linux"; then
5493 MOZ_ARG_ENABLE_BOOL(alsa,
5494 [ --enable-alsa Enable Alsa support (default on Linux)],
5498 if test -n "$MOZ_ALSA"; then
5499 PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
5500 [echo "$MOZ_ALSA_PKG_ERRORS"
5501 AC_MSG_ERROR([Need alsa for Ogg, Wave or WebM decoding on Linux. Disable with --disable-ogg --disable-wave --disable-webm. (On Ubuntu, you might try installing the package libasound2-dev.)])])
5505 AC_SUBST(MOZ_ALSA_CFLAGS)
5506 AC_SUBST(MOZ_ALSA_LIBS)
5508 dnl ========================================================
5509 dnl = Disable PulseAudio
5510 dnl ========================================================
5512 dnl If using Linux, ensure that the PA library is available
5513 case "$OS_TARGET" in
5514 WINNT|Darwin|Android|OpenBSD)
5517 if test -z "$MOZ_B2G"; then
5523 MOZ_ARG_DISABLE_BOOL(pulseaudio,
5524 [ --disable-pulseaudio Disable PulseAudio support],
5528 if test -n "$MOZ_PULSEAUDIO"; then
5529 if test -z "$gonkdir"; then
5530 PKG_CHECK_MODULES(MOZ_PULSEAUDIO, libpulse, ,
5531 [echo "$MOZ_PULSEAUDIO_PKG_ERRORS"
5532 AC_MSG_ERROR([pulseaudio audio backend requires libpulse development package])])
5534 MOZ_PULSEAUDIO_CFLAGS="-I$gonkdir/external/pulseaudio/pulseaudio/src"
5538 AC_SUBST(MOZ_PULSEAUDIO)
5539 AC_SUBST(MOZ_PULSEAUDIO_CFLAGS)
5541 dnl ========================================================
5542 dnl = Enable GStreamer
5543 dnl ========================================================
5544 case "$OS_TARGET" in
5545 WINNT|Darwin|Android)
5549 GST_API_VERSION=0.10
5553 MOZ_ARG_ENABLE_STRING(gstreamer,
5554 [ --enable-gstreamer[=0.10] Enable GStreamer support],
5556 # API version, eg 0.10, 1.0 etc
5557 if test -z "$enableval" -o "$enableval" = "yes"; then
5558 GST_API_VERSION=0.10
5559 elif test "$enableval" = "no"; then
5562 GST_API_VERSION=$enableval
5566 if test -n "$MOZ_GSTREAMER"; then
5567 # core/base release number
5568 if test "$GST_API_VERSION" = "1.0"; then
5574 PKG_CHECK_MODULES(GSTREAMER,
5575 gstreamer-$GST_API_VERSION >= $GST_VERSION
5576 gstreamer-app-$GST_API_VERSION
5577 gstreamer-plugins-base-$GST_API_VERSION,
5578 [_HAVE_GSTREAMER=1],
5580 if test -z "$_HAVE_GSTREAMER"; then
5581 AC_MSG_ERROR([gstreamer and gstreamer-plugins-base development packages are needed to build gstreamer backend. Install them or disable gstreamer support with --disable-gstreamer])
5584 _SAVE_LDFLAGS=$LDFLAGS
5585 LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5586 AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=)
5587 if test -n "$_HAVE_LIBGSTVIDEO" ; then
5588 GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5590 AC_MSG_ERROR([gstreamer-plugins-base found, but no libgstvideo. Something has gone terribly wrong. Try reinstalling gstreamer-plugins-base; failing that, disable the gstreamer backend with --disable-gstreamer.])
5592 LDFLAGS=$_SAVE_LDFLAGS
5594 AC_SUBST(GSTREAMER_CFLAGS)
5595 AC_SUBST(GSTREAMER_LIBS)
5598 AC_SUBST(MOZ_GSTREAMER)
5599 AC_SUBST(GST_API_VERSION)
5601 if test -n "$MOZ_GSTREAMER"; then
5602 AC_DEFINE(MOZ_GSTREAMER)
5603 AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION")
5607 dnl ========================================================
5608 dnl Permissions System
5609 dnl ========================================================
5610 MOZ_ARG_DISABLE_BOOL(permissions,
5611 [ --disable-permissions Disable permissions (popup and cookie blocking)],
5616 dnl ========================================================
5617 dnl Child permissions, currently only used for b2g
5618 dnl ========================================================
5619 if test -n "$MOZ_B2G"; then
5620 if test -n "$MOZ_PERMISSIONS"; then
5621 MOZ_CHILD_PERMISSIONS=1
5623 AC_MSG_ERROR([You need to enable MOZ_PERMISSIONS for MOZ_CHILD_PERMISSIONS])
5626 AC_SUBST(MOZ_CHILD_PERMISSIONS)
5628 dnl ========================================================
5630 dnl ========================================================
5631 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5632 [ --disable-negotiateauth Disable GSS-API negotiation ],
5633 MOZ_AUTH_EXTENSION=,
5634 MOZ_AUTH_EXTENSION=1 )
5636 dnl ========================================================
5637 dnl Pref extensions (autoconfig)
5638 dnl ========================================================
5639 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5640 [ --disable-pref-extensions
5641 Disable pref extensions such as autoconfig],
5642 MOZ_PREF_EXTENSIONS=,
5643 MOZ_PREF_EXTENSIONS=1 )
5645 dnl ========================================================
5646 dnl Searching of system directories for extensions.
5647 dnl Note: this switch is meant to be used for test builds
5648 dnl whose behavior should not depend on what happens to be
5649 dnl installed on the local machine.
5650 dnl ========================================================
5651 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
5652 [ --disable-system-extension-dirs
5653 Disable searching system- and account-global
5654 directories for extensions of any kind; use
5655 only profile-specific extension directories],
5656 ENABLE_SYSTEM_EXTENSION_DIRS=,
5657 ENABLE_SYSTEM_EXTENSION_DIRS=1 )
5658 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
5659 AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
5662 dnl ========================================================
5663 dnl = Universalchardet
5664 dnl ========================================================
5665 MOZ_ARG_DISABLE_BOOL(universalchardet,
5666 [ --disable-universalchardet
5667 Disable universal encoding detection],
5668 MOZ_UNIVERSALCHARDET=,
5669 MOZ_UNIVERSALCHARDET=1 )
5671 if test -n "${JAVA_BIN_PATH}"; then
5672 dnl Look for javac and jar in the specified path.
5673 JAVA_PATH="$JAVA_BIN_PATH"
5675 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5676 JAVA_PATH="$JAVA_HOME/bin:$PATH"
5679 MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5680 MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5681 MOZ_PATH_PROG(JAVAH, javah, :, [$JAVA_PATH])
5682 MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5683 MOZ_PATH_PROG(JARSIGNER, jarsigner, :, [$JAVA_PATH])
5684 MOZ_PATH_PROG(KEYTOOL, keytool, :, [$JAVA_PATH])
5686 if test -n "${JAVA_BIN_PATH}" -o \
5687 \( "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk" \); then
5688 if test -z "$JAVA" -o "$JAVA" = ":"; then
5689 AC_MSG_ERROR([The program java was not found. Set \$JAVA_HOME to your Java SDK directory or use --with-java-bin-path={java-bin-dir}])
5691 if test -z "$JAVAC" -o "$JAVAC" = ":"; then
5692 AC_MSG_ERROR([The program javac was not found. Set \$JAVA_HOME to your Java SDK directory or use --with-java-bin-path={java-bin-dir}])
5694 if test -z "$JAVAH" -o "$JAVAH" = ":"; then
5695 AC_MSG_ERROR([The program javah was not found. Set \$JAVA_HOME to your Java SDK directory or use --with-java-bin-path={java-bin-dir}])
5697 if test -z "$JAR" -o "$JAR" = ":"; then
5698 AC_MSG_ERROR([The program jar was not found. Set \$JAVA_HOME to your Java SDK directory or use --with-java-bin-path={java-bin-dir}])
5700 if test -z "$JARSIGNER" -o "$JARSIGNER" = ":"; then
5701 AC_MSG_ERROR([The program jarsigner was not found. Set \$JAVA_HOME to your Java SDK directory or use --with-java-bin-path={java-bin-dir}])
5703 if test -z "$KEYTOOL" -o "$KEYTOOL" = ":"; then
5704 AC_MSG_ERROR([The program keytool was not found. Set \$JAVA_HOME to your Java SDK directory or use --with-java-bin-path={java-bin-dir}])
5708 dnl ========================================================
5709 dnl = ANGLE OpenGL->D3D translator for WebGL
5710 dnl = * only applies to win32
5711 dnl = * enabled by default (shipping build); requires explicit --disable to disable
5712 dnl ========================================================
5716 MOZ_HAS_WINSDK_WITH_D3D=
5717 MOZ_D3DCOMPILER_VISTA_DLL=
5718 MOZ_D3DCOMPILER_VISTA_DLL_PATH=
5719 MOZ_DIRECTX_SDK_PATH=
5720 MOZ_D3DCOMPILER_XP_DLL=
5721 MOZ_D3DCOMPILER_XP_CAB=
5723 case "$target_os" in
5725 MOZ_ANGLE_RENDERER=1
5729 # The DirectX SDK libraries are split into x86 and x64 sub-directories
5730 case "${target_cpu}" in
5732 MOZ_D3D_CPU_SUFFIX=x86
5735 MOZ_D3D_CPU_SUFFIX=x64
5739 MOZ_ARG_DISABLE_BOOL(webgl,
5740 [ --disable-webgl Disable building of the WebGL implementation],
5741 MOZ_WEBGL_DISABLED=1,
5742 MOZ_WEBGL_DISABLED=)
5744 MOZ_ARG_ENABLE_BOOL(require-all-d3dc-versions,
5745 [ --enable-require-all-d3dc-versions Require all versions of the D3D compiler needed for supported Windows systems.],
5746 MOZ_REQUIRE_ALL_D3DCS=1,
5747 MOZ_REQUIRE_ALL_D3DCS=)
5749 if test -n "$MOZ_WEBGL_DISABLED"; then
5754 if test -n "$MOZ_WEBGL"; then
5755 AC_DEFINE(MOZ_WEBGL)
5758 if test -n "$MOZ_WEBGL_CONFORMANT"; then
5759 AC_DEFINE(MOZ_WEBGL_CONFORMANT)
5762 dnl ========================================================
5763 dnl D3D compiler DLL
5764 dnl ========================================================
5765 MOZ_FOUND_D3D_COMPILERS=
5767 if test -n "$MOZ_ANGLE_RENDERER"; then
5768 if test -z "$MOZ_D3D_CPU_SUFFIX"; then
5769 AC_MSG_ERROR([Couldn't determine MOZ_D3D_CPU_SUFFIX.])
5772 ######################################
5773 # Find _46+ for use by Vista+.
5775 # Find a D3D compiler DLL in a Windows SDK.
5776 MOZ_D3DCOMPILER_VISTA_DLL=
5777 case "$MOZ_WINSDK_MAXVER" in
5779 MOZ_D3DCOMPILER_VISTA_DLL=d3dcompiler_47.dll
5780 AC_MSG_RESULT([Found D3D compiler in Windows SDK 8.1.])
5783 MOZ_D3DCOMPILER_VISTA_DLL=d3dcompiler_46.dll
5784 AC_MSG_RESULT([Found D3D compiler in Windows SDK 8.0.])
5788 if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then
5789 # We have a name, now track down the path.
5790 if test -n "$WINDOWSSDKDIR"; then
5791 MOZ_D3DCOMPILER_VISTA_DLL_PATH="$WINDOWSSDKDIR/Redist/D3D/$MOZ_D3D_CPU_SUFFIX/$MOZ_D3DCOMPILER_VISTA_DLL"
5792 if test -f "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then
5793 AC_MSG_RESULT([Found MOZ_D3DCOMPILER_VISTA_DLL_PATH: $MOZ_D3DCOMPILER_VISTA_DLL_PATH])
5794 MOZ_HAS_WINSDK_WITH_D3D=1
5796 AC_MSG_RESULT([MOZ_D3DCOMPILER_VISTA_DLL_PATH doesn't exist: $MOZ_D3DCOMPILER_VISTA_DLL_PATH])
5797 AC_MSG_ERROR([Windows SDK at "$WINDOWSSDKDIR" appears broken. Try updating to MozillaBuild 1.9 final or higher.])
5798 MOZ_D3DCOMPILER_VISTA_DLL_PATH=
5801 AC_MSG_RESULT([Windows SDK not found.])
5805 if test -z "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then
5806 MOZ_D3DCOMPILER_VISTA_DLL=
5809 # On mingw, check if headers are provided by toolchain.
5810 if test -n "$GNU_CC"; then
5811 MOZ_CHECK_HEADER(d3d10.h, MOZ_HAS_WINSDK_WITH_D3D=1)
5814 ######################################
5815 # Find _43 for use by XP.
5817 # Get the SDK path from the registry.
5818 # First try to get the June 2010 SDK
5819 MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1`
5820 if test -z "$MOZ_DIRECTX_SDK_REG_KEY" ; then
5821 # Otherwise just take whatever comes first
5822 MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1`
5824 MOZ_DIRECTX_SDK_PATH=`reg query "$MOZ_DIRECTX_SDK_REG_KEY" //v InstallPath | grep REG_SZ | sed 's/.*\([[a-zA-Z]]\)\\:\\\\/\\1\\:\\\\/' | sed 's,\\\\,/,g'`
5826 if test -n "$MOZ_DIRECTX_SDK_PATH" &&
5827 test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/dxguid.lib ; then
5828 AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH])
5830 AC_MSG_RESULT([DirectX SDK not found.])
5831 MOZ_DIRECTX_SDK_PATH=
5834 # Check that our DirectX SDK is acceptable.
5835 if test -n "$MOZ_DIRECTX_SDK_PATH"; then
5836 if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then
5837 AC_MSG_RESULT([Found the February 2010 DirectX SDK, which is unacceptable to ANGLE.])
5838 MOZ_DIRECTX_SDK_PATH=
5842 if test -n "$MOZ_DIRECTX_SDK_PATH"; then
5843 # Find a D3D compiler DLL in the DirectX SDK, if we didn't find one already.
5844 # Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib
5845 MOZ_D3DX9_VERSION=`dumpbin //headers "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/d3dx9.lib | egrep d3dx9_[[0-9]][[0-9]]\.dll | head -n1 | sed 's/.*\([[0-9]][[0-9]]\).*/\\1/g'`
5847 if test -n "$MOZ_D3DX9_VERSION" ; then
5848 MOZ_D3DCOMPILER_XP_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_D3D_CPU_SUFFIX}.cab | head -n1`
5850 if test -n "$MOZ_D3DCOMPILER_XP_CAB"; then
5851 MOZ_D3DCOMPILER_XP_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll
5853 AC_MSG_RESULT([Couldn't find a CAB containing the D3D compiler DLL.])
5854 AC_MSG_ERROR([DirectX SDK at "$MOZ_DIRECTX_SDK_PATH" appears broken.])
5855 MOZ_DIRECTX_SDK_PATH=
5858 AC_MSG_RESULT([Couldn't determine the D3DX9 version for the DirectX SDK.])
5859 MOZ_DIRECTX_SDK_PATH=
5862 AC_MSG_RESULT([Couldn't find an acceptable DirectX SDK for ANGLE, needed for d3dcompiler_43.])
5863 AC_MSG_RESULT([ Either ignore, install DirectX SDK (June 2010 version or newer), or reconfigure with --disable-webgl.])
5866 ######################################
5867 # Check that we found what we needed.
5868 MOZ_FOUND_A_D3D_COMPILER=
5869 MOZ_FOUND_BOTH_D3D_COMPILERS=1
5871 if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then
5872 MOZ_FOUND_A_D3D_COMPILER=1
5873 AC_MSG_RESULT([Found d3dcompiler DLL for Vista+: $MOZ_D3DCOMPILER_VISTA_DLL])
5875 MOZ_FOUND_BOTH_D3D_COMPILERS=
5878 if test -n "$MOZ_D3DCOMPILER_XP_DLL"; then
5879 MOZ_FOUND_A_D3D_COMPILER=1
5880 AC_MSG_RESULT([Found d3dcompiler DLL for XP: $MOZ_D3DCOMPILER_XP_DLL])
5882 MOZ_FOUND_BOTH_D3D_COMPILERS=
5885 if test -z "$CROSS_COMPILE"; then
5886 if test -z "MOZ_FOUND_A_D3D_COMPILER"; then
5887 AC_MSG_ERROR([Couldn't find an acceptable D3D compiler DLL.])
5888 AC_MSG_ERROR([ Either install Windows SDK 8.0+, install DirectX SDK (June 2010 version or newer), or reconfigure with --disable-webgl.])
5891 if test -n "$MOZ_REQUIRE_ALL_D3DCS" -a -z "$MOZ_FOUND_BOTH_D3D_COMPILERS"; then
5892 AC_MSG_ERROR([Both D3D compilers _43 and _46+ are required by --enable-require-d3d-compilers.])
5893 AC_MSG_ERROR([ Install Windows SDK 8.0+, as well as DirectX SDK (June 2010 version or newer), or reconfigure without this flag.])
5899 dnl ========================================================
5901 dnl ========================================================
5903 MOZ_GAMEPAD_BACKEND=stub
5905 # Gamepad DOM is built on supported platforms by default.
5906 case "$OS_TARGET" in
5911 if test "$MOZ_WIDGET_TOOLKIT" != "gonk"; then
5919 MOZ_ARG_DISABLE_BOOL(gamepad,
5920 [ --disable-gamepad Disable gamepad support],
5924 if test "$MOZ_GAMEPAD"; then
5925 case "$OS_TARGET" in
5927 MOZ_GAMEPAD_BACKEND=cocoa
5930 case "$MOZ_WINSDK_MAXVER" in
5931 # We support building with the Windows 7 SDK otherwise, but
5932 # Gamepad support requires the Windows 8 SDK for some HID headers.
5934 AC_MSG_ERROR([The Windows 8 SDK or newer is required to build Gamepad support. Please install a newer Windows SDK or reconfigure with --disable-gamepad to disable gamepad support.])
5939 MOZ_GAMEPAD_BACKEND=windows
5942 MOZ_CHECK_HEADER([linux/joystick.h])
5943 if test "$ac_cv_header_linux_joystick_h" != "yes"; then
5944 AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers or reconfigure with --disable-gamepad to disable gamepad support.])
5946 MOZ_GAMEPAD_BACKEND=linux
5949 MOZ_GAMEPAD_BACKEND=android
5955 AC_DEFINE(MOZ_GAMEPAD)
5957 AC_SUBST(MOZ_GAMEPAD)
5958 AC_SUBST(MOZ_GAMEPAD_BACKEND)
5960 dnl ========================================================
5961 dnl = Breakpad crash reporting (on by default on supported platforms)
5962 dnl ========================================================
5965 i?86-*-mingw*|x86_64-*-mingw*)
5968 i?86-apple-darwin*|x86_64-apple-darwin*)
5971 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
5972 if test "$MOZ_ENABLE_GTK"; then
5976 *-android*|*-linuxandroid*)
5984 MOZ_ARG_DISABLE_BOOL(crashreporter,
5985 [ --disable-crashreporter Disable breakpad crash reporting],
5986 [MOZ_CRASHREPORTER=],
5987 [MOZ_CRASHREPORTER=F # Force enable breakpad])
5989 if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT"; then
5990 if test "$MOZ_CRASHREPORTER" = F; then
5991 AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
5996 if test -n "$MOZ_CRASHREPORTER"; then
5997 AC_DEFINE(MOZ_CRASHREPORTER)
5999 if test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS" && \
6000 test -z "$SKIP_LIBRARY_CHECKS"; then
6001 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
6002 AC_SUBST(MOZ_GTHREAD_CFLAGS)
6003 AC_SUBST(MOZ_GTHREAD_LIBS)
6006 if test "$OS_ARCH" = "WINNT"; then
6007 if test -z "$HAVE_64BIT_OS"; then
6008 MOZ_CRASHREPORTER_INJECTOR=1
6009 AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
6014 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
6015 [ --with-crashreporter-enable-percent=NN
6016 Enable sending crash reports by default on NN% of users. (default=100)],
6017 [ val=`echo $withval | sed 's/[^0-9]//g'`
6018 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
6020 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
6021 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
6023 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
6025 dnl ========================================================
6026 dnl = libjpeg-turbo configuration
6027 dnl ========================================================
6029 if test -z "$MOZ_NATIVE_JPEG"; then
6033 MOZ_ARG_DISABLE_BOOL(libjpeg_turbo,
6034 [ --disable-libjpeg-turbo Disable optimized jpeg decoding routines],
6036 MOZ_LIBJPEG_TURBO=1)
6038 if test "$MOZ_NATIVE_JPEG" = 1 -a "$MOZ_LIBJPEG_TURBO" = 1; then
6039 AC_MSG_ERROR([cannot use --with-system-jpeg with --enable-libjpeg-turbo.])
6042 dnl Detect if we can use yasm to compile libjpeg-turbo's optimized assembly
6045 if test -n "$MOZ_LIBJPEG_TURBO"; then
6047 dnl Do we support libjpeg-turbo on this platform?
6048 case "$OS_ARCH:$OS_TEST" in
6050 LIBJPEG_TURBO_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC -DMACHO"
6051 LIBJPEG_TURBO_X86_ASM=1
6054 LIBJPEG_TURBO_ASFLAGS="-f macho64 -rnasm -pnasm -D__x86_64__ -DPIC -DMACHO"
6055 LIBJPEG_TURBO_X64_ASM=1
6057 WINNT:x86|WINNT:i?86)
6058 LIBJPEG_TURBO_ASFLAGS="-f win32 -rnasm -pnasm -DPIC -DWIN32"
6059 LIBJPEG_TURBO_X86_ASM=1
6062 LIBJPEG_TURBO_ASFLAGS="-f win64 -rnasm -pnasm -D__x86_64__ -DPIC -DWIN64 -DMSVC"
6063 LIBJPEG_TURBO_X64_ASM=1
6066 LIBJPEG_TURBO_ASFLAGS="-march=armv7-a -mfpu=neon"
6067 LIBJPEG_TURBO_ARM_ASM=1
6070 if $CC -E -dM -</dev/null | grep -q __ELF__; then
6071 LIBJPEG_TURBO_ASFLAGS="-f elf32 -rnasm -pnasm -DPIC -DELF"
6072 LIBJPEG_TURBO_X86_ASM=1
6076 if $CC -E -dM -</dev/null | grep -q __ELF__; then
6077 LIBJPEG_TURBO_ASFLAGS="-f elf64 -rnasm -pnasm -D__x86_64__ -DPIC -DELF"
6078 LIBJPEG_TURBO_X64_ASM=1
6085 dnl If we're on an x86 or x64 system which supports libjpeg-turbo's asm routines
6086 dnl and --disable-libjpeg-turbo wasn't passed, check for Yasm, and error out if
6087 dnl it doesn't exist or we have too old of a version.
6088 if test -n "$LIBJPEG_TURBO_X86_ASM" -o -n "$LIBJPEG_TURBO_X64_ASM" ; then
6089 LIBJPEG_TURBO_AS=$YASM
6091 if test -z "$LIBJPEG_TURBO_AS" ; then
6092 AC_MSG_ERROR([Yasm is required to build with libjpeg-turbo's optimized JPEG decoding routines, but you do not appear to have Yasm installed. Either install it or configure with --disable-libjpeg-turbo to use the pure C JPEG decoder. See https://developer.mozilla.org/en/YASM for more details.])
6095 dnl Check that we have the right yasm version. We require 1.0.1 or newer
6096 dnl on Linux and 1.1 or newer everywhere else.
6097 if test "$OS_ARCH" = "Linux" ; then
6098 if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -eq "0" -a "$_YASM_RELEASE" -lt "1" \) ; then
6099 AC_MSG_ERROR([Yasm 1.0.1 or greater is required to build with libjpeg-turbo's optimized JPEG decoding routines, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION.$_YASM_RELEASE. Upgrade to the newest version or configure with --disable-libjpeg-turbo to use the pure C JPEG decoder. See https://developer.mozilla.org/en/YASM for more details.])
6102 if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
6103 AC_MSG_ERROR([Yasm 1.1 or greater is required to build with libjpeg-turbo's optimized JPEG decoding routines, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION. Upgrade to the newest version or configure with --disable-libjpeg-turbo to use the pure C JPEG decoder. See https://developer.mozilla.org/en/YASM for more details.])
6108 dnl If we're on an ARM system which supports libjpeg-turbo's asm routines and
6109 dnl --disable-libjpeg-turbo wasn't passed, use the C compiler as the assembler.
6110 if test -n "$LIBJPEG_TURBO_ARM_ASM" ; then
6111 echo "Using $AS as the assembler for ARM code."
6112 LIBJPEG_TURBO_AS=$AS
6115 if test -n "$LIBJPEG_TURBO_X86_ASM"; then
6116 AC_DEFINE(LIBJPEG_TURBO_X86_ASM)
6117 elif test -n "$LIBJPEG_TURBO_X64_ASM"; then
6118 AC_DEFINE(LIBJPEG_TURBO_X64_ASM)
6119 elif test -n "$LIBJPEG_TURBO_ARM_ASM"; then
6120 AC_DEFINE(LIBJPEG_TURBO_ARM_ASM)
6121 elif test -n "$MOZ_LIBJPEG_TURBO"; then
6122 dnl Warn if we're not building the optimized routines, even though the user
6123 dnl didn't specify --disable-libjpeg-turbo.
6124 AC_MSG_WARN([No assembler or assembly support for libjpeg-turbo. Using unoptimized C routines.])
6127 dnl ========================================================
6128 dnl = Enable compilation of specific extension modules
6129 dnl ========================================================
6131 MOZ_ARG_ENABLE_STRING(extensions,
6132 [ --enable-extensions Enable extensions],
6133 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6134 if test "$option" = "yes" -o "$option" = "all"; then
6135 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6136 elif test "$option" = "no" -o "$option" = "none"; then
6138 elif test "$option" = "default"; then
6139 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6140 elif test `echo "$option" | grep -c \^-` != 0; then
6141 option=`echo $option | sed 's/^-//'`
6142 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6144 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6147 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6149 if test -z "$MOZ_ENABLE_GNOMEVFS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6150 # Suppress warning on non-X11 platforms
6151 if test -n "$MOZ_X11"; then
6152 AC_MSG_WARN([Removing gnomevfs from MOZ_EXTENSIONS due to no --enable-gnomevfs.])
6154 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6157 dnl Do not build gnomevfs with libxul based apps
6158 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6159 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6162 if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6163 # Suppress warning on non-X11 platforms
6164 if test -n "$MOZ_X11"; then
6165 AC_MSG_WARN([Removing gio from MOZ_EXTENSIONS due to --disable-gio.])
6167 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6170 dnl Do not build gio with libxul based apps
6171 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6172 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6175 if test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6177 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6179 AC_SUBST(MOZ_GIO_COMPONENT)
6181 if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6182 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6183 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6187 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6189 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6190 dnl when trying to build a nonexistent extension.
6191 for extension in $MOZ_EXTENSIONS; do
6192 if test ! -d "${srcdir}/extensions/${extension}"; then
6193 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6197 if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
6198 AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
6201 dnl ========================================================
6202 dnl Build Freetype in the tree
6203 dnl ========================================================
6204 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6205 [ --enable-tree-freetype Enable Tree FreeType],
6206 MOZ_TREE_FREETYPE=1,
6207 MOZ_TREE_FREETYPE= )
6208 if test -n "$MOZ_TREE_FREETYPE"; then
6209 if test -n "$_WIN32_MSVC"; then
6210 AC_ERROR("building with in-tree freetype is not supported on MSVC")
6212 AC_DEFINE(MOZ_TREE_FREETYPE)
6213 AC_SUBST(MOZ_TREE_FREETYPE)
6214 MOZ_ENABLE_CAIRO_FT=1
6215 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6216 FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6217 CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6218 FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6220 AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6221 AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6222 AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6223 AC_SUBST(CAIRO_FT_CFLAGS)
6226 dnl ========================================================
6228 dnl ========================================================
6229 dnl Abort Windows build if the required major version and
6230 dnl minimum minor version of Unicode NSIS isn't in the path
6231 dnl (unless in case of cross compiling, for which Unicode
6232 dnl is not yet sufficient).
6233 if test "$OS_ARCH" = "WINNT"; then
6234 MIN_NSIS_MAJOR_VER=2
6235 MIN_NSIS_MINOR_VER=46
6236 MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensisu-3.0a2.exe makensisu-2.46.exe makensis)
6237 if test -n "$MAKENSISU" -a "$MAKENSISU" != ":"; then
6238 AC_MSG_RESULT([yes])
6239 MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null`
6241 MAKENSISU_PARSED_VER=`echo "$MAKENSISU_VER" | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\).*\-Unicode$/\1/g'`
6243 if test "$MAKENSISU_PARSED_VER" = ""; then
6245 MAKENSISU_PARSED_VER=`echo "$MAKENSISU_VER" | sed -e 's/^v\([0-9]\+\.[0-9]\+\).*$/\1/g'`
6248 MAKENSISU_MAJOR_VER=0
6249 MAKENSISU_MINOR_VER=0
6250 if test ! "$MAKENSISU_PARSED_VER" = ""; then
6251 MAKENSISU_MAJOR_VER=`echo $MAKENSISU_PARSED_VER | $AWK -F\. '{ print $1 }'`
6252 MAKENSISU_MINOR_VER=`echo $MAKENSISU_PARSED_VER | $AWK -F\. '{ print $2 }'`
6254 AC_MSG_CHECKING([for Unicode NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER or greater])
6255 if test "$MAKENSISU_MAJOR_VER" -eq $MIN_NSIS_MAJOR_VER -a \
6256 "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER ||
6257 test "$MAKENSISU_MAJOR_VER" -gt $MIN_NSIS_MAJOR_VER; then
6258 AC_MSG_RESULT([yes])
6261 if test -z "$CROSS_COMPILE"; then
6262 AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS version $REQ_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER or greater in your path.])
6267 elif test -z "$CROSS_COMPILE"; then
6268 AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS version $REQ_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER or greater in your path.])
6274 dnl ========================================================
6276 dnl ========================================================
6277 MOZ_ARG_DISABLE_BOOL(webapp-runtime,
6278 [ --disable-webapp-runtime Disable Web App Runtime],
6279 MOZ_WEBAPP_RUNTIME=,
6280 MOZ_WEBAPP_RUNTIME=1)
6281 if test "$MOZ_WIDGET_TOOLKIT" != "windows" -a "$MOZ_WIDGET_TOOLKIT" != "cocoa" -a "$MOZ_WIDGET_TOOLKIT" != "gtk2"; then
6284 if test "$OS_ARCH" = "WINNT" -a -z "$MAKENSISU" -a -n "$CROSS_COMPILE"; then
6287 AC_SUBST(MOZ_WEBAPP_RUNTIME)
6288 if test "$MOZ_WEBAPP_RUNTIME"; then
6289 AC_DEFINE(MOZ_WEBAPP_RUNTIME)
6292 AC_MSG_CHECKING([for tar archiver])
6293 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6294 if test -z "$TAR"; then
6295 AC_MSG_ERROR([no tar archiver found in \$PATH])
6297 AC_MSG_RESULT([$TAR])
6300 AC_MSG_CHECKING([for wget])
6301 AC_CHECK_PROGS(WGET, wget, "")
6302 AC_MSG_RESULT([$WGET])
6305 dnl ========================================================
6307 dnl ========================================================
6309 if test -n "$MOZ_SIGN_CMD"; then
6310 AC_DEFINE(MOZ_SIGNING)
6313 dnl ========================================================
6314 dnl Maintenance Service
6315 dnl ========================================================
6317 MOZ_ARG_ENABLE_BOOL(maintenance-service,
6318 [ --enable-maintenance-service Enable building of maintenanceservice],
6319 MOZ_MAINTENANCE_SERVICE=1,
6320 MOZ_MAINTENANCE_SERVICE= )
6322 if test -n "$MOZ_MAINTENANCE_SERVICE"; then
6323 if test "$OS_ARCH" = "WINNT"; then
6324 AC_DEFINE(MOZ_MAINTENANCE_SERVICE)
6326 AC_MSG_ERROR([Can only build with --enable-maintenance-service with a Windows target])
6330 dnl ========================================================
6331 dnl Verify MAR signatures
6332 dnl ========================================================
6334 MOZ_ARG_ENABLE_BOOL(verify-mar,
6335 [ --enable-verify-mar Enable verifying MAR signatures],
6336 MOZ_VERIFY_MAR_SIGNATURE=1,
6337 MOZ_VERIFY_MAR_SIGNATURE= )
6339 if test -n "$MOZ_VERIFY_MAR_SIGNATURE"; then
6340 if test "$OS_ARCH" = "WINNT"; then
6341 AC_DEFINE(MOZ_VERIFY_MAR_SIGNATURE)
6343 AC_MSG_ERROR([Can only build with --enable-verify-mar with a Windows target])
6347 dnl ========================================================
6348 dnl Enable building the signmar program.
6349 dnl This option is much different than the --enable-verify-mar option.
6350 dnl --enable-verify-mar is for enabling the verification check on MAR
6351 dnl files in the updater. The --enable-signmar option is for building
6352 dnl the signmar program.
6353 dnl ========================================================
6355 MOZ_ARG_ENABLE_BOOL(signmar,
6356 [ --enable-signmar Enable building the signmar program],
6357 MOZ_ENABLE_SIGNMAR=1,
6358 MOZ_ENABLE_SIGNMAR= )
6360 if test -n "$MOZ_ENABLE_SIGNMAR"; then
6361 AC_DEFINE(MOZ_ENABLE_SIGNMAR)
6364 dnl ========================================================
6366 dnl ========================================================
6368 MOZ_ARG_DISABLE_BOOL(updater,
6369 [ --disable-updater Disable building of updater],
6373 if test -n "$MOZ_UPDATER"; then
6374 AC_DEFINE(MOZ_UPDATER)
6377 # tools/update-packaging is not checked out by default.
6378 MOZ_ARG_ENABLE_BOOL(update-packaging,
6379 [ --enable-update-packaging
6380 Enable tools/update-packaging],
6381 MOZ_UPDATE_PACKAGING=1,
6382 MOZ_UPDATE_PACKAGING= )
6383 AC_SUBST(MOZ_UPDATE_PACKAGING)
6385 dnl ========================================================
6386 dnl build the tests by default
6387 dnl ========================================================
6388 MOZ_ARG_DISABLE_BOOL(tests,
6389 [ --disable-tests Do not build test libraries & programs],
6393 if test -n "$ENABLE_TESTS"; then
6395 AC_DEFINE(ENABLE_TESTS)
6396 AC_DEFINE_UNQUOTED(GTEST_HAS_RTTI, 0)
6397 AC_SUBST(GTEST_HAS_RTTI)
6398 if test -n "$_WIN32_MSVC"; then
6399 AC_DEFINE_UNQUOTED(_VARIADIC_MAX, 10)
6401 if test "${OS_TARGET}" = "Android"; then
6402 AC_DEFINE(GTEST_OS_LINUX_ANDROID)
6403 AC_DEFINE(GTEST_USE_OWN_TR1_TUPLE)
6404 AC_DEFINE_UNQUOTED(GTEST_HAS_CLONE, 0)
6405 AC_SUBST(GTEST_OS_LINUX_ANDROID)
6406 AC_SUBST(GTEST_USE_OWN_TR1_TUPLE)
6407 AC_SUBST(GTEST_HAS_CLONE)
6411 dnl ========================================================
6412 dnl parental controls (for Windows Vista)
6413 dnl ========================================================
6414 MOZ_ARG_DISABLE_BOOL(parental-controls,
6415 [ --disable-parental-controls
6416 Do not build parental controls],
6417 MOZ_DISABLE_PARENTAL_CONTROLS=1,
6418 MOZ_DISABLE_PARENTAL_CONTROLS=)
6419 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6420 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6423 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6425 dnl ========================================================
6426 dnl = Disable DOMCrypto
6427 dnl ========================================================
6428 if test -n "$MOZ_DISABLE_CRYPTOLEGACY"; then
6429 AC_DEFINE(MOZ_DISABLE_CRYPTOLEGACY)
6431 AC_SUBST(MOZ_DISABLE_CRYPTOLEGACY)
6433 dnl ========================================================
6434 dnl = Disable EV certificate verification
6435 dnl ========================================================
6436 if test -n "$MOZ_NO_EV_CERTS"; then
6437 AC_DEFINE(MOZ_NO_EV_CERTS)
6439 AC_SUBST(MOZ_NO_EV_CERTS)
6441 dnl ========================================================
6442 dnl = Disable libpkix
6443 dnl ========================================================
6444 if test -n "$NSS_NO_LIBPKIX"; then
6445 AC_DEFINE(NSS_NO_LIBPKIX)
6447 AC_SUBST(NSS_NO_LIBPKIX)
6449 dnl ========================================================
6450 dnl = Content process sandboxing
6451 dnl ========================================================
6452 if test -n "$gonkdir"; then
6453 MOZ_CONTENT_SANDBOX=1
6456 MOZ_ARG_ENABLE_BOOL(content-sandbox,
6457 [ --enable-content-sandbox Enable sandboxing support for content-processes],
6458 MOZ_CONTENT_SANDBOX=1,
6459 MOZ_CONTENT_SANDBOX=)
6461 if test -n "$MOZ_CONTENT_SANDBOX"; then
6462 AC_DEFINE(MOZ_CONTENT_SANDBOX)
6465 AC_SUBST(MOZ_CONTENT_SANDBOX)
6467 MOZ_ARG_ENABLE_BOOL(content-sandbox-reporter,
6468 [ --enable-content-sandbox-reporter Enable syscall reporter to troubleshoot syscalls denied by the content-processes sandbox],
6469 MOZ_CONTENT_SANDBOX_REPORTER=1,
6470 MOZ_CONTENT_SANDBOX_REPORTER=)
6472 if test -n "$MOZ_CONTENT_SANDBOX_REPORTER"; then
6473 AC_DEFINE(MOZ_CONTENT_SANDBOX_REPORTER)
6476 AC_SUBST(MOZ_CONTENT_SANDBOX_REPORTER)
6478 dnl ========================================================
6480 dnl = Module specific options
6482 dnl ========================================================
6483 MOZ_ARG_HEADER(Individual module options)
6485 dnl ========================================================
6486 dnl = Disable feed handling components
6487 dnl ========================================================
6488 MOZ_ARG_DISABLE_BOOL(feeds,
6489 [ --disable-feeds Disable feed handling and processing components],
6492 if test -n "$MOZ_FEEDS"; then
6493 AC_DEFINE(MOZ_FEEDS)
6495 if test "$MOZ_BUILD_APP" = "browser"; then
6496 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6500 dnl ========================================================
6501 dnl Check for sqlite
6502 dnl ========================================================
6505 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6506 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
6507 MOZ_NATIVE_SQLITE=1,
6508 MOZ_NATIVE_SQLITE= )
6510 if test -z "$MOZ_NATIVE_SQLITE"
6513 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6515 dnl ============================
6516 dnl === SQLite Version check ===
6517 dnl ============================
6518 dnl Check to see if the system SQLite package is new enough.
6519 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6521 dnl ==================================
6522 dnl === SQLITE_SECURE_DELETE check ===
6523 dnl ==================================
6524 dnl Check to see if the system SQLite package is compiled with
6525 dnl SQLITE_SECURE_DELETE enabled.
6526 AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6527 _SAVE_CFLAGS="$CFLAGS"
6528 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6530 LIBS="$LIBS $SQLITE_LIBS"
6531 AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6533 #include "sqlite3.h"
6535 int main(int argc, char **argv){
6536 return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6538 ac_cv_sqlite_secure_delete=yes,
6539 ac_cv_sqlite_secure_delete=no,
6540 ac_cv_sqlite_secure_delete=no
6543 AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6544 CFLAGS="$_SAVE_CFLAGS"
6546 if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6547 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6550 dnl ===============================
6551 dnl === SQLITE_THREADSAFE check ===
6552 dnl ===============================
6553 dnl Check to see if the system SQLite package is compiled with
6554 dnl SQLITE_THREADSAFE enabled.
6555 AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6556 _SAVE_CFLAGS="$CFLAGS"
6557 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6559 LIBS="$LIBS $SQLITE_LIBS"
6560 AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6562 #include "sqlite3.h"
6564 int main(int argc, char **argv){
6565 return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6567 ac_cv_sqlite_threadsafe=yes,
6568 ac_cv_sqlite_threadsafe=no,
6569 ac_cv_sqlite_threadsafe=no
6572 AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6573 CFLAGS="$_SAVE_CFLAGS"
6575 if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6576 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6579 dnl ================================
6580 dnl === SQLITE_ENABLE_FTS3 check ===
6581 dnl ================================
6582 dnl check to see if the system SQLite package is compiled with
6583 dnl SQLITE_ENABLE_FTS3 enabled.
6584 AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6585 _SAVE_CFLAGS="$CFLAGS"
6586 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6588 LIBS="$LIBS $SQLITE_LIBS"
6589 AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6591 #include "sqlite3.h"
6593 int main(int argc, char **argv){
6594 return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6596 ac_cv_sqlite_enable_fts3=yes,
6597 ac_cv_sqlite_enable_fts3=no,
6598 ac_cv_sqlite_enable_fts3=no
6601 AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6602 CFLAGS="$_SAVE_CFLAGS"
6604 if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6605 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6608 dnl =========================================
6609 dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
6610 dnl =========================================
6611 dnl check to see if the system SQLite package is compiled with
6612 dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
6613 AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
6614 _SAVE_CFLAGS="$CFLAGS"
6615 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6617 LIBS="$LIBS $SQLITE_LIBS"
6618 AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
6620 #include "sqlite3.h"
6622 int main(int argc, char **argv){
6623 return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
6625 ac_cv_sqlite_enable_unlock_notify=yes,
6626 ac_cv_sqlite_enable_unlock_notify=no,
6627 ac_cv_sqlite_enable_unlock_notify=no
6630 AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
6631 CFLAGS="$_SAVE_CFLAGS"
6633 if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
6634 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
6638 if test -n "$MOZ_NATIVE_SQLITE"; then
6639 AC_DEFINE(MOZ_NATIVE_SQLITE)
6641 AC_SUBST(MOZ_NATIVE_SQLITE)
6643 dnl ========================================================
6644 dnl = Enable help viewer (off by default)
6645 dnl ========================================================
6646 if test -n "$MOZ_HELP_VIEWER"; then
6647 dnl Do this if defined in confvars.sh
6648 AC_DEFINE(MOZ_HELP_VIEWER)
6651 dnl ========================================================
6652 dnl = Enable safe browsing (anti-phishing)
6653 dnl ========================================================
6654 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6655 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
6656 MOZ_SAFE_BROWSING=1,
6657 MOZ_SAFE_BROWSING= )
6658 if test -n "$MOZ_SAFE_BROWSING"; then
6659 AC_DEFINE(MOZ_SAFE_BROWSING)
6661 AC_SUBST(MOZ_SAFE_BROWSING)
6663 dnl ========================================================
6664 dnl = Enable url-classifier
6665 dnl ========================================================
6666 dnl Implicitly enabled by default if building with safe-browsing
6667 if test -n "$MOZ_SAFE_BROWSING"; then
6668 MOZ_URL_CLASSIFIER=1
6670 MOZ_ARG_ENABLE_BOOL(url-classifier,
6671 [ --enable-url-classifier Enable url classifier module],
6672 MOZ_URL_CLASSIFIER=1,
6673 MOZ_URL_CLASSIFIER= )
6674 if test -n "$MOZ_URL_CLASSIFIER"; then
6675 AC_DEFINE(MOZ_URL_CLASSIFIER)
6677 AC_SUBST(MOZ_URL_CLASSIFIER)
6679 dnl ========================================================
6680 dnl = Disable zipwriter
6681 dnl ========================================================
6682 MOZ_ARG_DISABLE_BOOL(zipwriter,
6683 [ --disable-zipwriter Disable zipwriter component],
6686 AC_SUBST(MOZ_ZIPWRITER)
6688 dnl ========================================================
6690 dnl ========================================================
6692 MOZ_ARG_WITH_STRING(gl-provider,
6693 [ --with-gl-provider=ID
6694 Set GL provider backend type],
6695 [ val=`echo $withval`
6696 MOZ_GL_PROVIDER="$val"])
6698 if test -n "$MOZ_GL_PROVIDER"; then
6699 MOZ_GL_DEFAULT_PROVIDER=$MOZ_GL_PROVIDER
6700 AC_SUBST(MOZ_GL_PROVIDER)
6701 AC_DEFINE_UNQUOTED(MOZ_GL_PROVIDER, GLContextProvider$MOZ_GL_PROVIDER)
6703 AC_SUBST(MOZ_GL_DEFAULT_PROVIDER)
6704 AC_DEFINE_UNQUOTED(GL_PROVIDER_$MOZ_GL_DEFAULT_PROVIDER)
6706 dnl ========================================================
6707 dnl = faststripe theme
6708 dnl ========================================================
6709 MOZ_ARG_ENABLE_BOOL(faststripe,
6710 [ --enable-faststripe Use faststripe theme],
6711 MOZ_THEME_FASTSTRIPE=1,
6712 MOZ_THEME_FASTSTRIPE= )
6713 AC_SUBST(MOZ_THEME_FASTSTRIPE)
6715 dnl ========================================================
6717 dnl = Feature options that require extra sources to be pulled
6719 dnl ========================================================
6720 dnl MOZ_ARG_HEADER(Features that require extra sources)
6722 dnl ========================================================
6724 dnl = Runtime debugging and Optimization Options
6726 dnl ========================================================
6727 MOZ_ARG_HEADER(Runtime debugging and Optimizations)
6729 dnl ========================================================
6730 dnl enable mobile optimizations
6731 dnl ========================================================
6732 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
6733 [ --enable-mobile-optimize
6734 Enable mobile optimizations],
6735 MOZ_GFX_OPTIMIZE_MOBILE=1)
6737 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
6739 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
6740 AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
6743 dnl ========================================================
6744 dnl = Enable code optimization. ON by default.
6745 dnl ========================================================
6746 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6747 MOZ_OPTIMIZE_FLAGS="-O"
6750 MOZ_ARG_ENABLE_STRING(optimize,
6751 [ --disable-optimize Disable compiler optimization
6752 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6753 [ if test "$enableval" != "no"; then
6755 if test -n "$enableval" -a "$enableval" != "yes"; then
6756 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6761 fi ], MOZ_OPTIMIZE=1)
6763 MOZ_SET_FRAMEPTR_FLAGS
6765 if test "$COMPILE_ENVIRONMENT"; then
6766 if test -n "$MOZ_OPTIMIZE"; then
6767 AC_MSG_CHECKING([for valid optimization flags])
6768 _SAVE_CFLAGS=$CFLAGS
6769 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6770 AC_TRY_COMPILE([#include <stdio.h>],
6771 [printf("Hello World\n");],
6774 AC_MSG_RESULT([$_results])
6775 if test "$_results" = "no"; then
6776 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6778 CFLAGS=$_SAVE_CFLAGS
6780 fi # COMPILE_ENVIRONMENT
6782 AC_SUBST(MOZ_OPTIMIZE)
6783 AC_SUBST(MOZ_FRAMEPTR_FLAGS)
6784 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6785 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6786 AC_SUBST(MOZ_ALLOW_HEAP_EXECUTE_FLAGS)
6787 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6788 AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS)
6790 dnl ========================================================
6791 dnl = Enable any treating of compile warnings as errors
6792 dnl ========================================================
6793 MOZ_ARG_ENABLE_BOOL(warnings-as-errors,
6794 [ --enable-warnings-as-errors
6795 Enable treating of warnings as errors],
6796 MOZ_ENABLE_WARNINGS_AS_ERRORS=1,
6797 MOZ_ENABLE_WARNINGS_AS_ERRORS=)
6798 if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
6799 WARNINGS_AS_ERRORS=''
6800 elif test "$GNU_CC"; then
6801 # Prevent the following GCC warnings from being treated as errors:
6802 # -Wuninitialized - too many false positives
6803 # -Wmaybe-uninitialized - too many false positives
6804 # -Wdeprecated-declarations - we don't want our builds held hostage when a
6805 # platform-specific API becomes deprecated.
6806 MOZ_C_SUPPORTS_WARNING(-W, no-error=uninitialized, ac_c_has_noerror_uninitialized)
6807 MOZ_CXX_SUPPORTS_WARNING(-W, no-error=uninitialized, ac_cxx_has_noerror_uninitialized)
6808 MOZ_C_SUPPORTS_WARNING(-W, no-error=maybe-uninitialized, ac_c_has_noerror_maybe_uninitialized)
6809 MOZ_CXX_SUPPORTS_WARNING(-W, no-error=maybe-uninitialized, ac_cxx_has_noerror_maybe_uninitialized)
6810 MOZ_C_SUPPORTS_WARNING(-W, no-error=deprecated-declarations, ac_c_has_noerror_deprecated_declarations)
6811 MOZ_CXX_SUPPORTS_WARNING(-W, no-error=deprecated-declarations, ac_cxx_has_noerror_deprecated_declarations)
6814 dnl ========================================================
6815 dnl = Disable runtime logging checks
6816 dnl ========================================================
6817 MOZ_ARG_DISABLE_BOOL(logging,
6818 [ --disable-logging Disable logging facilities],
6819 NS_DISABLE_LOGGING=1,
6820 NS_DISABLE_LOGGING= )
6821 if test "$NS_DISABLE_LOGGING"; then
6822 AC_DEFINE(NS_DISABLE_LOGGING)
6824 AC_DEFINE(MOZ_LOGGING)
6827 dnl ========================================================
6828 dnl = This will enable logging of addref, release, ctor, dtor.
6829 dnl ========================================================
6830 _ENABLE_LOGREFCNT=42
6831 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6832 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
6833 _ENABLE_LOGREFCNT=1,
6834 _ENABLE_LOGREFCNT= )
6835 if test "$_ENABLE_LOGREFCNT" = "1"; then
6836 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6837 elif test -z "$_ENABLE_LOGREFCNT"; then
6838 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6841 dnl ========================================================
6842 dnl moz_dump_painting
6843 dnl ========================================================
6844 MOZ_ARG_ENABLE_BOOL(dump-painting,
6845 [ --enable-dump-painting Enable paint debugging.],
6846 MOZ_DUMP_PAINTING=1,
6847 MOZ_DUMP_PAINTING= )
6848 if test -n "$MOZ_DUMP_PAINTING"; then
6849 AC_DEFINE(MOZ_DUMP_PAINTING)
6850 AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
6852 if test -n "$MOZ_DEBUG"; then
6853 AC_DEFINE(MOZ_DUMP_PAINTING)
6856 dnl ========================================================
6857 dnl = Enable trace malloc
6858 dnl ========================================================
6859 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6860 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6861 [ --enable-trace-malloc Enable malloc tracing; also disables DMD and jemalloc],
6864 if test "$NS_TRACE_MALLOC"; then
6865 # Please, Mr. Linker Man, don't take away our symbol names
6866 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6867 AC_DEFINE(NS_TRACE_MALLOC)
6869 AC_SUBST(NS_TRACE_MALLOC)
6871 dnl ========================================================
6873 dnl ========================================================
6875 MOZ_ARG_ENABLE_BOOL(dmd,
6876 [ --enable-dmd Enable DMD; also enables jemalloc and replace-malloc],
6880 dnl The two options are conflicting. Fails the configure to alert the user.
6881 if test "$NS_TRACE_MALLOC" -a "$MOZ_DMD"; then
6882 AC_MSG_ERROR([--enable-trace-malloc and --enable-dmd are conflicting options])
6885 if test "$MOZ_DMD"; then
6888 if test "${CPU_ARCH}" = "arm"; then
6889 CFLAGS="$CFLAGS -funwind-tables"
6890 CXXFLAGS="$CXXFLAGS -funwind-tables"
6893 MOZ_MEMORY=1 # DMD enables jemalloc
6894 MOZ_REPLACE_MALLOC=1 # DMD enables replace-malloc
6898 dnl ========================================================
6899 dnl = Enable jemalloc
6900 dnl ========================================================
6901 MOZ_ARG_ENABLE_BOOL(jemalloc,
6902 [ --enable-jemalloc Replace memory allocator with jemalloc],
6906 if test "$NS_TRACE_MALLOC"; then
6910 if test "${OS_TARGET}" = "Android"; then
6911 dnl On Android, we use WRAP_LDFLAGS to link everything to mozglue
6913 elif test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin"; then
6914 dnl On Windows and OSX, we want to link all our binaries against mozglue
6915 if test -z "$GNU_CC"; then
6916 MOZ_GLUE_LDFLAGS='$(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
6918 MOZ_GLUE_LDFLAGS='-L$(LIBXUL_DIST)/lib $(call EXPAND_LIBNAME,mozglue)'
6921 dnl On other Unix systems, we only want to link executables against mozglue
6922 MOZ_GLUE_PROGRAM_LDFLAGS='$(MKSHLIB_FORCE_ALL) $(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
6923 dnl On other Unix systems, where mozglue is a static library, jemalloc is
6924 dnl separated for the SDK, so we need to add it here.
6925 if test "$MOZ_MEMORY" = 1 -o \( "$LIBXUL_SDK" -a -f "$LIBXUL_SDK/lib/${LIB_PREFIX}memory.${LIB_SUFFIX}" \); then
6926 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(call EXPAND_LIBNAME_PATH,memory,$(LIBXUL_DIST)/lib)'
6928 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(MKSHLIB_UNFORCE_ALL)'
6929 if test -n "$GNU_CC"; then
6930 dnl And we need mozglue symbols to be exported.
6931 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS -rdynamic"
6933 if test "$MOZ_LINKER" = 1; then
6934 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS $MOZ_ZLIB_LIBS"
6938 dnl ========================================================
6939 dnl = Enable dynamic replacement of malloc implementation
6940 dnl ========================================================
6941 MOZ_ARG_ENABLE_BOOL(replace-malloc,
6942 [ --enable-replace-malloc Enable ability to dynamically replace the malloc implementation],
6943 MOZ_REPLACE_MALLOC=1,
6944 MOZ_REPLACE_MALLOC= )
6946 dnl The two options are conflicting. Fails the configure to alert the user.
6947 if test "$NS_TRACE_MALLOC" -a "$MOZ_REPLACE_MALLOC"; then
6948 AC_MSG_ERROR([--enable-trace-malloc and --enable-replace-malloc are conflicting options])
6951 if test -n "$MOZ_REPLACE_MALLOC" -a -z "$MOZ_MEMORY"; then
6952 dnl We don't want to enable jemalloc unconditionally because it may be a
6953 dnl deliberate choice not to enable it (bug 702250, for instance)
6954 AC_MSG_ERROR([--enable-replace-malloc requires --enable-jemalloc])
6955 elif test -n "$MOZ_REPLACE_MALLOC"; then
6956 MOZ_NATIVE_JEMALLOC=
6958 dnl Replace-malloc Mac linkage quirks
6959 if test -n "$MACOSX_DEPLOYMENT_TARGET"; then
6960 AC_CACHE_CHECK([how to do weak dynamic linking],
6961 ac_cv_weak_dynamic_linking,
6962 [echo 'extern void foo() __attribute__((weak_import));int bar() { if (foo) foo(); return 0; }' > conftest.c
6963 if AC_TRY_COMMAND([${CC-cc} -o conftest${DLL_SUFFIX} $CFLAGS -dynamiclib $LDFLAGS -Wl,-U,_foo conftest.c $LIBS 1>&5]) &&
6964 test -s conftest${DLL_SUFFIX}; then
6965 dnl There are several ways the linker can put link edit rules in a binary:
6966 dnl - classic info only (for OSX < 10.6)
6967 dnl - dyld info only
6969 if otool -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO_ONLY" > /dev/null; then
6974 if otool -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO" > /dev/null; then
6979 dnl With classic info, we need to build with -flat_namespace.
6980 dnl With dyld info, Xcode 4.5 does the right thing without additional flags,
6981 dnl but Xcode < 4.5 requires a dummy library and -flat_namespace because it
6982 dnl forgets to set the weak flag in the dyld info.
6983 dnl See http://glandium.org/blog/?p=2764 for more details.
6985 dnl Values for ac_cv_weak_dynamic_linking, and subsequently
6986 dnl MOZ_REPLACE_MALLOC_LINKAGE are thus:
6987 dnl - "flat namespace" when -flat_namespace alone is needed
6988 dnl - "dummy library" when a dummy library and -flat_namespace are needed
6989 dnl - "compiler support" when nothing is needed
6990 if test -n "$_DYLD_INFO" && dyldinfo -bind conftest${DLL_SUFFIX} 2> /dev/null | grep "_foo (weak import)" > /dev/null; then
6991 if test -n "$_CLASSIC_INFO"; then
6992 ac_cv_weak_dynamic_linking="flat namespace"
6994 ac_cv_weak_dynamic_linking="compiler support"
6997 if test -n "$_DYLD_INFO"; then
6998 ac_cv_weak_dynamic_linking="dummy library"
7000 ac_cv_weak_dynamic_linking="flat namespace"
7004 AC_ERROR([couldn't compile a simple C file])
7007 MOZ_REPLACE_MALLOC_LINKAGE="$ac_cv_weak_dynamic_linking"
7010 AC_SUBST(MOZ_REPLACE_MALLOC)
7011 AC_SUBST(MOZ_REPLACE_MALLOC_LINKAGE)
7013 dnl ========================================================
7014 dnl = Jemalloc build setup
7015 dnl ========================================================
7016 if test -z "$MOZ_MEMORY"; then
7017 if test -n "$MOZ_JEMALLOC3" -a -z "$MOZ_REPLACE_MALLOC"; then
7018 MOZ_NATIVE_JEMALLOC=1
7019 AC_CHECK_FUNCS(mallctl nallocm,,
7020 [MOZ_NATIVE_JEMALLOC=
7022 if test -n "$MOZ_NATIVE_JEMALLOC"; then
7024 AC_DEFINE(MOZ_MEMORY)
7025 AC_DEFINE(MOZ_JEMALLOC3)
7026 AC_DEFINE(MOZ_NATIVE_JEMALLOC)
7031 if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
7032 AC_MSG_WARN([When not building jemalloc, you need to set WIN32_REDIST_DIR to the path to the Visual C++ Redist (usually VCINSTALLDIR\redist\x86\Microsoft.VC80.CRT, for VC++ v8) if you intend to distribute your build.])
7037 AC_DEFINE(MOZ_MEMORY)
7038 if test -n "$MOZ_JEMALLOC3"; then
7039 AC_DEFINE(MOZ_JEMALLOC3)
7041 if test "x$MOZ_DEBUG" = "x1"; then
7042 AC_DEFINE(MOZ_MEMORY_DEBUG)
7044 dnl The generic feature tests that determine how to compute ncpus are long and
7045 dnl complicated. Therefore, simply define special cpp variables for the
7046 dnl platforms we have special knowledge of.
7049 AC_DEFINE(MOZ_MEMORY_DARWIN)
7052 AC_DEFINE(MOZ_MEMORY_BSD)
7054 *-android*|*-linuxandroid*)
7055 AC_DEFINE(MOZ_MEMORY_LINUX)
7056 AC_DEFINE(MOZ_MEMORY_ANDROID)
7057 if test -z "$gonkdir"; then
7060 AC_DEFINE(MOZ_MEMORY_GONK)
7065 AC_DEFINE(MOZ_MEMORY_LINUX)
7068 AC_DEFINE(MOZ_MEMORY_BSD)
7071 AC_DEFINE(MOZ_MEMORY_SOLARIS)
7074 AC_DEFINE(MOZ_MEMORY_WINDOWS)
7075 if test -z "$MOZ_DEBUG"; then
7076 WIN32_CRT_LIBS="msvcrt.lib msvcprt.lib"
7078 WIN32_CRT_LIBS="msvcrtd.lib msvcprtd.lib"
7080 dnl Look for a broken crtdll.obj
7081 WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj`
7082 lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH
7083 if grep -q '__imp__\{0,1\}free' crtdll.obj; then
7084 MOZ_GLUE_LDFLAGS='-LIBPATH:$(DIST)/lib -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt'
7085 dnl Also pass this to NSPR/NSS
7086 DLLFLAGS="$DLLFLAGS $MOZ_GLUE_LDFLAGS"
7088 DLLFLAGS="$DLLFLAGS -LIBPATH:\$(DIST)/lib -DEFAULTLIB:mozglue"
7095 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7099 AC_SUBST(MOZ_MEMORY)
7100 AC_SUBST(MOZ_JEMALLOC3)
7101 AC_SUBST(MOZ_NATIVE_JEMALLOC)
7102 AC_SUBST(MOZ_GLUE_LDFLAGS)
7103 AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS)
7104 AC_SUBST(WIN32_CRT_LIBS)
7105 dnl Need to set this for make because NSS doesn't have configure
7108 dnl We need to wrap dlopen and related functions on Android because we use
7110 if test "$OS_TARGET" = Android; then
7111 WRAP_LDFLAGS="${WRAP_LDFLAGS} -L$_objdir/dist/lib -lmozglue"
7112 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=PR_GetEnv,--wrap=PR_SetEnv"
7113 if test "$MOZ_WIDGET_TOOLKIT" = android; then
7114 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=getaddrinfo,--wrap=freeaddrinfo,--wrap=gai_strerror"
7116 if test -z "$gonkdir"; then
7117 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=fork,--wrap=pthread_atfork,--wrap=raise"
7118 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=memccpy,--wrap=memchr,--wrap=memrchr,--wrap=memcmp,--wrap=memcpy,--wrap=memmove,--wrap=memset,--wrap=memmem,--wrap=index,--wrap=strchr,--wrap=strrchr,--wrap=strlen,--wrap=strcmp,--wrap=strcpy,--wrap=strcat,--wrap=strcasecmp,--wrap=strncasecmp,--wrap=strstr,--wrap=strcasestr,--wrap=strtok,--wrap=strtok_r,--wrap=strerror,--wrap=strerror_r,--wrap=strnlen,--wrap=strncat,--wrap=strncmp,--wrap=strncpy,--wrap=strlcat,--wrap=strlcpy,--wrap=strcspn,--wrap=strpbrk,--wrap=strsep,--wrap=strspn,--wrap=strcoll,--wrap=strxfrm"
7120 if test "$MOZ_WIDGET_TOOLKIT" = gonk -a -n "$MOZ_NUWA_PROCESS"; then
7121 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=pthread_create,--wrap=epoll_wait,--wrap=poll,--wrap=pthread_cond_timedwait,--wrap=__pthread_cond_timedwait,--wrap=pthread_cond_wait,--wrap=epoll_create,--wrap=epoll_ctl,--wrap=close,--wrap=pthread_key_create,--wrap=pthread_key_delete,--wrap=socketpair,--wrap=pthread_self,--wrap=pthread_mutex_lock,--wrap=pthread_join,--wrap=pipe,--wrap=pipe2,--wrap=tgkill"
7125 dnl ========================================================
7126 dnl = Use malloc wrapper lib
7127 dnl ========================================================
7128 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
7129 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
7133 if test -n "$_WRAP_MALLOC"; then
7134 if test -n "$GNU_CC"; then
7135 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=malloc,--wrap=calloc,--wrap=valloc,--wrap=free,--wrap=realloc,--wrap=memalign"
7136 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=__builtin_new,--wrap=__builtin_vec_new,--wrap=__builtin_delete,--wrap=__builtin_vec_delete"
7137 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=strdup,--wrap=strndup"
7138 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=vasprintf,--wrap=asprintf"
7139 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=posix_memalign,--wrap=malloc_usable_size"
7140 dnl Wrap operator new and operator delete on Android.
7141 if test "$OS_TARGET" = "Android"; then
7142 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_Znwj,--wrap=_Znaj,--wrap=_ZdlPv,--wrap=_ZdaPv"
7143 dnl Wrap the nothrow variants too.
7144 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_ZnwjRKSt9nothrow_t,--wrap=_ZnajRKSt9nothrow_t,--wrap=_ZdlPvRKSt9nothrow_t,--wrap=_ZdaPvRKSt9nothrow_t"
7147 AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains])
7151 dnl ========================================================
7152 dnl = Location of malloc wrapper lib
7153 dnl ========================================================
7154 MOZ_ARG_WITH_STRING(wrap-malloc,
7155 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
7156 WRAP_LDFLAGS="${WRAP_LDFLAGS} $withval")
7158 dnl ========================================================
7159 dnl = Use JS Call tracing
7160 dnl ========================================================
7161 MOZ_ARG_ENABLE_BOOL(trace-jscalls,
7162 [ --enable-trace-jscalls Enable JS call enter/exit callback (default=no)],
7163 MOZ_TRACE_JSCALLS=1,
7164 MOZ_TRACE_JSCALLS= )
7165 if test -n "$MOZ_TRACE_JSCALLS"; then
7166 AC_DEFINE(MOZ_TRACE_JSCALLS)
7169 dnl ========================================================
7170 dnl JS opt-mode assertions and minidump instrumentation
7171 dnl ========================================================
7172 MOZ_ARG_ENABLE_BOOL(js-diagnostics,
7173 [ --enable-js-diagnostics
7174 Enable JS diagnostic assertions and breakpad data],
7175 JS_CRASH_DIAGNOSTICS=1,
7176 JS_CRASH_DIAGNOSTICS= )
7177 if test -n "$JS_CRASH_DIAGNOSTICS"; then
7178 AC_DEFINE(JS_CRASH_DIAGNOSTICS)
7181 dnl ========================================================
7182 dnl = Use incremental GC
7183 dnl ========================================================
7185 MOZ_ARG_DISABLE_BOOL(gcincremental,
7186 [ --disable-gcincremental Disable incremental GC],
7188 if test -n "$JSGC_INCREMENTAL"; then
7189 AC_DEFINE(JSGC_INCREMENTAL)
7192 dnl ========================================================
7193 dnl = Use exact stack rooting for GC
7194 dnl ========================================================
7195 MOZ_ARG_DISABLE_BOOL(exact-rooting,
7196 [ --disable-exact-rooting Enable use of conservative stack scanning for GC],
7197 JSGC_USE_EXACT_ROOTING= ,
7198 JSGC_USE_EXACT_ROOTING=1 )
7199 if test -n "$JSGC_USE_EXACT_ROOTING"; then
7200 AC_DEFINE(JSGC_USE_EXACT_ROOTING)
7203 dnl ========================================================
7204 dnl = Use generational GC
7205 dnl ========================================================
7206 MOZ_ARG_DISABLE_BOOL(gcgenerational,
7207 [ --disable-gcgenerational Disable generational GC],
7208 JSGC_GENERATIONAL= ,
7209 JSGC_GENERATIONAL=1 )
7210 if test -n "$JSGC_GENERATIONAL"; then
7211 AC_DEFINE(JSGC_GENERATIONAL)
7214 dnl ========================================================
7215 dnl Zealous JavaScript GC
7216 dnl ========================================================
7217 MOZ_ARG_ENABLE_BOOL(gczeal,
7218 [ --enable-gczeal Enable zealous JavaScript GCing],
7221 if test -n "$JS_GC_ZEAL" -o -n "$MOZ_DEBUG"; then
7222 AC_DEFINE(JS_GC_ZEAL)
7225 dnl ========================================================
7226 dnl = Perform moving GC stack rooting analysis
7227 dnl ========================================================
7228 MOZ_ARG_ENABLE_BOOL(root-analysis,
7229 [ --enable-root-analysis Enable moving GC stack root analysis],
7230 JSGC_ROOT_ANALYSIS=1,
7231 JSGC_ROOT_ANALYSIS= )
7232 if test -n "$JSGC_ROOT_ANALYSIS"; then
7233 AC_DEFINE(JSGC_ROOT_ANALYSIS)
7238 dnl ========================================================
7239 dnl = Enable static checking using gcc-dehydra
7240 dnl ========================================================
7242 MOZ_ARG_WITH_STRING(static-checking,
7243 [ --with-static-checking=path/to/gcc_dehydra.so
7244 Enable static checking of code using GCC-dehydra],
7245 DEHYDRA_PATH=$withval,
7248 if test -n "$DEHYDRA_PATH"; then
7249 if test ! -f "$DEHYDRA_PATH"; then
7250 AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7252 AC_DEFINE(NS_STATIC_CHECKING)
7254 AC_SUBST(DEHYDRA_PATH)
7256 dnl ========================================================
7257 dnl = Enable using the clang plugin to build
7258 dnl ========================================================
7260 MOZ_ARG_ENABLE_BOOL(clang-plugin,
7261 [ --enable-clang-plugin Enable building with the mozilla clang plugin ],
7262 ENABLE_CLANG_PLUGIN=1,
7263 ENABLE_CLANG_PLUGIN= )
7264 if test -n "$ENABLE_CLANG_PLUGIN"; then
7265 if test -z "$CLANG_CC"; then
7266 AC_MSG_ERROR([Can't use clang plugin without clang.])
7268 AC_DEFINE(MOZ_CLANG_PLUGIN)
7271 AC_SUBST(ENABLE_CLANG_PLUGIN)
7273 dnl ========================================================
7274 dnl = Enable stripping of libs & executables
7275 dnl ========================================================
7276 MOZ_ARG_ENABLE_BOOL(strip,
7277 [ --enable-strip Enable stripping of libs & executables ],
7281 dnl ========================================================
7282 dnl = Enable stripping of libs & executables when packaging
7283 dnl ========================================================
7284 MOZ_ARG_ENABLE_BOOL(install-strip,
7285 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
7289 dnl ========================================================
7290 dnl = --disable-elf-hack
7291 dnl ========================================================
7294 MOZ_ARG_DISABLE_BOOL(elf-hack,
7295 [ --disable-elf-hack Disable elf hacks],
7297 [USE_ELF_HACK=F # Force enable elf-hack])
7299 # Disable elf hack for profiling because the built in profiler
7300 # doesn't read the segments properly with elf hack. This is
7301 # temporary and should be fixed soon in the profiler.
7302 if test "$MOZ_PROFILING" = 1; then
7303 if test "$USE_ELF_HACK" = F; then
7304 AC_ERROR([--enable-elf-hack is not compatible with --enable-profiling])
7309 # Only enable elfhack where supported
7310 if test "$USE_ELF_HACK" = 1; then
7311 case "${HOST_OS_ARCH},${OS_ARCH}" in
7313 case "${CPU_ARCH}" in
7328 if test -n "$COMPILE_ENVIRONMENT" -a -n "$USE_ELF_HACK"; then
7329 dnl PT_GNU_RELRO segment makes the dynamic linker set a read-only flag on
7330 dnl memory addresses it maps to. The result is that by the time elfhack
7331 dnl kicks in, it is not possible to apply relocations because of that,
7332 dnl thus elfhack effectively skips relocations inside the PT_GNU_RELRO
7333 dnl segment. It makes elfhack mostly useless, so considering the problems
7334 dnl we have we PT_GNU_RELRO (e.g. bug 664366), and until elfhack can deal
7335 dnl with PT_GNU_RELRO segments, it's just simpler to disable elfhack when
7336 dnl the linker creates PT_GNU_RELRO segments. However, when we do want
7337 dnl elfhack enabled, disable PT_GNU_RELRO instead.
7338 AC_CACHE_CHECK([whether linker creates PT_GNU_RELRO segments],
7339 LINK_WITH_PT_GNU_RELRO,
7340 [echo "int main() {return 0;}" > conftest.${ac_ext}
7341 if AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.${ac_ext} $LIBS 1>&2) &&
7342 test -s conftest${ac_exeext}; then
7343 if ${TOOLCHAIN_PREFIX}readelf -l conftest${ac_exeext} | grep GNU_RELRO > /dev/null; then
7344 LINK_WITH_PT_GNU_RELRO=yes
7346 LINK_WITH_PT_GNU_RELRO=no
7349 dnl We really don't expect to get here, but just in case
7350 AC_ERROR([couldn't compile a simple C file])
7353 if test "$LINK_WITH_PT_GNU_RELRO" = yes; then
7354 if test "$USE_ELF_HACK" = F; then
7355 AC_MSG_CHECKING([for -z norelro option to ld])
7356 _SAVE_LDFLAGS=$LDFLAGS
7357 LDFLAGS="$LDFLAGS -Wl,-z,norelro"
7358 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
7359 [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,norelro"],
7360 AC_ERROR([--enable-elf-hack is not compatible with a linker creating a PT_GNU_RELRO segment and that doesn't support the "-z norelro" option.]))
7363 AC_MSG_WARN([Disabling elfhack])
7369 dnl ========================================================
7370 dnl = libstdc++ compatibility hacks
7371 dnl ========================================================
7374 MOZ_ARG_ENABLE_BOOL(stdcxx-compat,
7375 [ --enable-stdcxx-compat Enable compatibility with older libstdc++],
7378 if test -n "$STDCXX_COMPAT"; then
7379 eval $(CXX="$CXX" HOST_CXX="$HOST_CXX" $PYTHON -m mozbuild.configure.libstdcxx)
7380 AC_SUBST(MOZ_LIBSTDCXX_TARGET_VERSION)
7381 AC_SUBST(MOZ_LIBSTDCXX_HOST_VERSION)
7384 dnl ========================================================
7386 dnl = Profiling and Instrumenting
7388 dnl ========================================================
7389 MOZ_ARG_HEADER(Profiling and Instrumenting)
7391 dnl ========================================================
7392 dnl = Enable runtime visual profiling logger
7393 dnl ========================================================
7394 MOZ_ARG_ENABLE_BOOL(visual-event-tracer,
7395 [ --enable-visual-event-tracer Enable visual event tracer instrumentation],
7396 MOZ_VISUAL_EVENT_TRACER=1,
7397 MOZ_VISUAL_EVENT_TRACER=)
7398 if test -n "$MOZ_VISUAL_EVENT_TRACER"; then
7399 AC_DEFINE(MOZ_VISUAL_EVENT_TRACER)
7402 dnl ========================================================
7403 dnl = Enable TaskTracer
7404 dnl ========================================================
7405 MOZ_ARG_ENABLE_BOOL(tasktracer,
7406 [ --enable-tasktracer Set compile flags necessary for using TaskTracer],
7409 if test "$MOZ_WIDGET_TOOLKIT" = "gonk" -a -n "$MOZ_TASK_TRACER"; then
7410 AC_DEFINE(MOZ_TASK_TRACER)
7411 AC_SUBST(MOZ_TASK_TRACER)
7414 dnl ========================================================
7415 dnl Turn on reflow counting
7416 dnl ========================================================
7417 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7418 [ --enable-reflow-perf Enable reflow performance tracing],
7421 if test -n "$MOZ_REFLOW_PERF"; then
7422 AC_DEFINE(MOZ_REFLOW_PERF)
7425 dnl ========================================================
7426 dnl = Offer a way to disable the startup cache
7427 dnl ========================================================
7428 MOZ_DISABLE_STARTUPCACHE=
7430 MOZ_ARG_DISABLE_BOOL(startupcache,
7431 [ --disable-startupcache Disable startup cache ],
7432 MOZ_DISABLE_STARTUPCACHE=1,
7433 MOZ_DISABLE_STARTUPCACHE=)
7435 dnl bug 988880: disable startup cache on b2g
7436 if test -n "$MOZ_B2G"; then
7437 MOZ_DISABLE_STARTUPCACHE=1
7440 AC_SUBST(MOZ_DISABLE_STARTUPCACHE)
7442 dnl ========================================================
7443 dnl = Enable Radio Interface for B2G (Gonk usually)
7444 dnl ========================================================
7445 MOZ_ARG_ENABLE_BOOL(b2g-ril,
7446 [ --enable-b2g-ril Set compile flags necessary for testing B2G Radio Interface Layer via network sockets ],
7449 MOZ_B2G_RIL=$_PLATFORM_HAVE_RIL )
7450 if test -n "$MOZ_B2G_RIL"; then
7451 if test -n "$_PLATFORM_HAVE_RIL"; then
7452 AC_DEFINE(MOZ_B2G_RIL)
7454 AC_MSG_ERROR([b2g-ril cannot be enabled because target platform doesn't support it.])
7457 AC_SUBST(MOZ_B2G_RIL)
7459 dnl ========================================================
7460 dnl = Enable Radio FM for B2G (Gonk usually)
7461 dnl ========================================================
7462 if test -n "$MOZ_B2G_FM"; then
7463 AC_DEFINE(MOZ_B2G_FM)
7465 AC_SUBST(MOZ_B2G_FM)
7467 dnl ========================================================
7468 dnl = Enable Bluetooth Interface for B2G (Gonk usually)
7469 dnl ========================================================
7470 MOZ_ARG_ENABLE_BOOL(b2g-bt,
7471 [ --enable-b2g-bt Set compile flags necessary for compiling Bluetooth API for B2G ],
7474 if test -n "$MOZ_B2G_BT"; then
7475 AC_DEFINE(MOZ_B2G_BT)
7477 AC_SUBST(MOZ_B2G_BT)
7478 AC_SUBST(MOZ_B2G_BT_BLUEZ)
7479 AC_SUBST(MOZ_B2G_BT_BLUEDROID)
7481 dnl ========================================================
7482 dnl = Enable NFC Interface for B2G (Gonk usually)
7483 dnl ========================================================
7484 MOZ_ARG_ENABLE_BOOL(nfc,
7485 [ --enable-nfc Set compile flags necessary for compiling NFC API ],
7488 if test -n "$MOZ_NFC"; then
7493 dnl ========================================================
7494 dnl = Enable Pico Speech Synthesis (Gonk usually)
7495 dnl ========================================================
7496 MOZ_ARG_ENABLE_BOOL(synth-pico,
7497 [ --enable-synth-pico Set compile flags necessary for compiling Pico Web Speech API ],
7500 if test -n "$MOZ_SYNTH_PICO"; then
7501 AC_DEFINE(MOZ_SYNTH_PICO)
7503 AC_SUBST(MOZ_SYNTH_PICO)
7505 dnl ========================================================
7506 dnl = Enable Support for Time Manager API
7507 dnl ========================================================
7508 if test -n "$MOZ_TIME_MANAGER"; then
7509 AC_DEFINE(MOZ_TIME_MANAGER)
7511 AC_SUBST(MOZ_TIME_MANAGER)
7513 dnl ========================================================
7514 dnl = Enable Camera Interface for B2G (Gonk usually)
7515 dnl ========================================================
7516 MOZ_ARG_ENABLE_BOOL(b2g-camera,
7517 [ --enable-b2g-camera Set compile flags necessary for compiling camera API for B2G ],
7520 if test -n "$MOZ_B2G_CAMERA"; then
7521 AC_DEFINE(MOZ_B2G_CAMERA)
7523 AC_SUBST(MOZ_B2G_CAMERA)
7525 dnl ========================================================
7526 dnl = Enable Support for Payment API
7527 dnl ========================================================
7528 if test -n "$MOZ_PAY"; then
7533 dnl ========================================================
7534 dnl = Enable Browser Support for Activities
7535 dnl ========================================================
7536 if test -n "$MOZ_ACTIVITIES"; then
7537 AC_DEFINE(MOZ_ACTIVITIES)
7539 AC_SUBST(MOZ_ACTIVITIES)
7541 dnl ========================================================
7542 dnl = Enable Support for AudioChannelManager API
7543 dnl ========================================================
7544 if test -n "$MOZ_AUDIO_CHANNEL_MANAGER"; then
7545 AC_DEFINE(MOZ_AUDIO_CHANNEL_MANAGER)
7547 AC_SUBST(MOZ_AUDIO_CHANNEL_MANAGER)
7549 dnl ========================================================
7550 dnl = Enable Support for Firefox Accounts (services/fxaccounts)
7551 dnl ========================================================
7552 if test -n "$MOZ_SERVICES_FXACCOUNTS"; then
7553 AC_DEFINE(MOZ_SERVICES_FXACCOUNTS)
7555 AC_SUBST(MOZ_SERVICES_FXACCOUNTS)
7557 dnl ========================================================
7558 dnl = Support for demangling undefined symbols
7559 dnl ========================================================
7560 if test -z "$SKIP_LIBRARY_CHECKS"; then
7563 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7567 # Demangle only for debug or trace-malloc or DMD builds
7568 MOZ_DEMANGLE_SYMBOLS=
7569 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC" -o "$MOZ_DMD"; then
7570 MOZ_DEMANGLE_SYMBOLS=1
7571 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7573 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7575 dnl ========================================================
7576 dnl = Support for gcc stack unwinding (from gcc 3.3)
7577 dnl ========================================================
7578 if test -z "$SKIP_LIBRARY_CHECKS"; then
7581 MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7585 dnl ========================================================
7587 dnl ========================================================
7589 MOZ_ARG_WITH_STRING(jitreport-granularity,
7590 [ --jitreport-granularity=N
7591 Default granularity at which to report JIT code
7594 1 - code ranges for whole functions only
7595 2 - per-line information
7596 3 - per-op information],
7597 JITREPORT_GRANULARITY=$withval,
7598 JITREPORT_GRANULARITY=3)
7600 AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY)
7602 dnl ========================================================
7606 dnl ========================================================
7607 MOZ_ARG_HEADER(Misc. Options)
7609 dnl ========================================================
7610 dnl update xterm title
7611 dnl ========================================================
7612 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7613 [ --enable-xterm-updates Update XTERM titles with current command.],
7617 dnl =========================================================
7619 dnl =========================================================
7620 MOZ_ARG_ENABLE_STRING([chrome-format],
7621 [ --enable-chrome-format=jar|flat|omni
7622 Select FORMAT of chrome files during packaging],
7623 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7625 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7626 MOZ_CHROME_FILE_FORMAT=jar
7629 if test "$MOZ_CHROME_FILE_FORMAT" = "symlink"; then
7630 AC_MSG_ERROR([--enable-chrome-format=symlink has been deprecated. It is now used by default in $DIST/bin on platforms that support it])
7633 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
7634 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7635 test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7636 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, or omni])
7639 dnl ========================================================
7640 dnl = Enable Support for devtools webide
7641 dnl ========================================================
7642 MOZ_ARG_ENABLE_BOOL(devtools-webide,
7643 [ --enable-devtools-webide Set compile flags necessary for compiling devtools webide ],
7644 MOZ_DEVTOOLS_WEBIDE=1,
7645 MOZ_DEVTOOLS_WEBIDE= )
7647 if test -n "$MOZ_DEVTOOLS_WEBIDE"; then
7648 AC_DEFINE(MOZ_DEVTOOLS_WEBIDE)
7650 AC_SUBST(MOZ_DEVTOOLS_WEBIDE)
7652 dnl =========================================================
7653 dnl Omnijar packaging (bug 552121)
7654 dnl =========================================================
7655 dnl Omnijar packaging is compatible with flat packaging.
7656 dnl In unpackaged builds, omnijar looks for files as if
7657 dnl things were flat packaged. After packaging, all files
7658 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7659 dnl is set to flat since putting files into jars is only
7660 dnl done during packaging with omnijar.
7661 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7663 AC_DEFINE(MOZ_OMNIJAR)
7665 MOZ_PACKAGER_FORMAT="$MOZ_CHROME_FILE_FORMAT"
7666 if test "$OS_ARCH" = "WINNT" -o "$MOZ_WIDGET_TOOLKIT" = "android"; then
7667 MOZ_CHROME_FILE_FORMAT=flat
7669 MOZ_CHROME_FILE_FORMAT=symlink
7672 if test "$MOZ_WIDGET_TOOLKIT" = "android"; then
7673 dnl Fennec's static resources live in the assets/ folder of the
7674 dnl APK. Adding a path to the name here works because we only
7675 dnl have one omnijar file in the final package (which is not the
7676 dnl case on desktop), and necessitates some contortions during
7677 dnl packaging so that the resources in the omnijar are considered
7678 dnl as rooted at / and not as rooted at assets/ (which again is
7679 dnl not the case on desktop: there are omnijars rooted at webrtc/,
7680 dnl etc). packager.mk handles changing the rooting of the single
7682 OMNIJAR_NAME=assets/omni.ja
7684 OMNIJAR_NAME=omni.ja
7687 AC_SUBST(OMNIJAR_NAME)
7688 AC_SUBST(MOZ_OMNIJAR)
7689 AC_SUBST(MOZ_PACKAGER_FORMAT)
7691 dnl ========================================================
7692 dnl = Define default location for MOZILLA_FIVE_HOME
7693 dnl ========================================================
7694 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7695 [ --with-default-mozilla-five-home
7696 Set the default value for MOZILLA_FIVE_HOME],
7697 [ val=`echo $withval`
7698 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7700 dnl ========================================================
7701 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7702 dnl ========================================================
7703 MOZ_ARG_WITH_STRING(user-appdir,
7704 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
7705 [ val=`echo $withval`
7706 if echo "$val" | grep "\/" >/dev/null; then
7707 AC_MSG_ERROR("Homedir must be single relative path.")
7712 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7714 dnl ========================================================
7715 dnl = Doxygen configuration
7716 dnl ========================================================
7717 dnl Use commas to specify multiple dirs to this arg
7718 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7719 MOZ_ARG_WITH_STRING(doc-input-dirs,
7720 [ --with-doc-input-dirs=DIRS
7721 Header/idl dirs to create docs from],
7722 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7723 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7725 dnl Use commas to specify multiple dirs to this arg
7726 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7727 MOZ_ARG_WITH_STRING(doc-include-dirs,
7728 [ --with-doc-include-dirs=DIRS
7729 Include dirs to preprocess doc headers],
7730 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7731 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7733 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7734 MOZ_ARG_WITH_STRING(doc-output-dir,
7735 [ --with-doc-output-dir=DIR
7736 Dir to generate docs into],
7737 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7738 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7740 if test -z "$SKIP_COMPILER_CHECKS"; then
7741 dnl ========================================================
7743 dnl = Compiler Options
7745 dnl ========================================================
7746 MOZ_ARG_HEADER(Compiler Options)
7748 dnl ========================================================
7749 dnl Check for gcc -pipe support
7750 dnl ========================================================
7751 AC_MSG_CHECKING([for -pipe support])
7752 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
7753 dnl Any gcc that supports firefox supports -pipe.
7754 CFLAGS="$CFLAGS -pipe"
7755 CXXFLAGS="$CXXFLAGS -pipe"
7756 AC_MSG_RESULT([yes])
7761 dnl ========================================================
7762 dnl Profile guided optimization (gcc checks)
7763 dnl ========================================================
7764 dnl Test for profiling options
7765 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
7767 _SAVE_CFLAGS="$CFLAGS"
7768 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
7770 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
7771 AC_TRY_COMPILE([], [return 0;],
7772 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
7773 result="yes" ], result="no")
7774 AC_MSG_RESULT([$result])
7776 if test $result = "yes"; then
7777 PROFILE_GEN_LDFLAGS="-fprofile-generate"
7778 PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch"
7779 PROFILE_USE_LDFLAGS="-fprofile-use"
7782 CFLAGS="$_SAVE_CFLAGS"
7784 if test -n "$INTEL_CC"; then
7785 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
7786 PROFILE_GEN_LDFLAGS=
7787 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
7788 PROFILE_USE_LDFLAGS=
7791 dnl Sun Studio on Solaris
7792 if test "$SOLARIS_SUNPRO_CC"; then
7793 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
7794 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7795 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7796 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7799 AC_SUBST(PROFILE_GEN_CFLAGS)
7800 AC_SUBST(PROFILE_GEN_LDFLAGS)
7801 AC_SUBST(PROFILE_USE_CFLAGS)
7802 AC_SUBST(PROFILE_USE_LDFLAGS)
7806 dnl ========================================================
7807 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7808 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7809 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
7810 dnl ========================================================
7811 _SAVE_CXXFLAGS=$CXXFLAGS
7812 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7813 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7814 ac_nscap_nonconst_opeq_bug,
7823 template <class T, class U>
7824 int operator==(const Pointer<T>& rhs, U* lhs)
7826 return rhs.myPtr == lhs;
7829 template <class T, class U>
7830 int operator==(const Pointer<T>& rhs, const U* lhs)
7832 return rhs.myPtr == lhs;
7840 ac_nscap_nonconst_opeq_bug="no",
7841 ac_nscap_nonconst_opeq_bug="yes")])
7842 CXXFLAGS="$_SAVE_CXXFLAGS"
7844 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7845 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7847 fi # ! SKIP_COMPILER_CHECKS
7849 AC_DEFINE(CPP_THROW_NEW, [throw()])
7852 if test "$COMPILE_ENVIRONMENT"; then
7854 fi # COMPILE_ENVIRONMENT
7856 dnl ========================================================
7858 dnl = Build depencency options
7860 dnl ========================================================
7861 MOZ_ARG_HEADER(Build dependencies)
7863 if test "$GNU_CC" -a "$GNU_CXX"; then
7864 _DEPEND_CFLAGS='-MD -MP -MF $(MDDEPDIR)/$(@F).pp'
7865 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7866 elif test "$SOLARIS_SUNPRO_CC"; then
7869 dnl Don't override this for MSVC
7870 if test -z "$_WIN32_MSVC"; then
7871 _USE_CPP_INCLUDE_FLAG=
7872 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7873 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7875 echo '#include <stdio.h>' > dummy-hello.c
7877 dnl This output is localized, split at the first double space or colon and space.
7878 _CL_PREFIX_REGEX="^\([^:]*:.*[ :] \)\(.*stdio.h\)$"
7879 CL_INCLUDES_PREFIX=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\1/p'`
7880 _CL_STDIO_PATH=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\2/p'`
7882 if ! test -e "$_CL_STDIO_PATH"; then
7883 AC_MSG_ERROR([Unable to parse cl -showIncludes prefix. This compiler's locale has an unsupported formatting.])
7885 if test -z "$CL_INCLUDES_PREFIX"; then
7886 AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
7888 AC_SUBST(CL_INCLUDES_PREFIX)
7891 dnl Make sure that the build system can handle non-ASCII characters
7892 dnl in environment variables to prevent it from breaking silently on
7893 dnl non-English systems.
7894 NONASCII=$'\241\241'
7899 dnl ========================================================
7901 dnl = Static Build Options
7903 dnl ========================================================
7904 MOZ_ARG_HEADER(Static build options)
7906 AC_SUBST(LIBXUL_LIBS)
7907 XPCOM_LIBS="$LIBXUL_LIBS"
7909 if test "$OS_ARCH" = "WINNT"; then
7910 GKMEDIAS_SHARED_LIBRARY=1
7911 AC_DEFINE(GKMEDIAS_SHARED_LIBRARY)
7913 AC_SUBST(GKMEDIAS_SHARED_LIBRARY)
7915 if test -z "$MOZ_NATIVE_ZLIB"; then
7916 if test -n "$JS_SHARED_LIBRARY" -o "$GKMEDIAS_SHARED_LIBRARY"; then
7918 AC_DEFINE(ZLIB_IN_MOZGLUE)
7922 AC_SUBST(ZLIB_IN_MOZGLUE)
7924 dnl ========================================================
7926 dnl = Standalone module options
7928 dnl ========================================================
7929 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7932 dnl ========================================================
7934 if test -z "$SKIP_PATH_CHECKS"; then
7935 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
7936 if test "$MOZ_ENABLE_GTK" ; then
7937 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7942 if test -z "${GLIB_GMODULE_LIBS}" \
7943 -a -n "${GLIB_CONFIG}"\
7944 -a "${GLIB_CONFIG}" != no\
7946 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7949 AC_SUBST(GLIB_CFLAGS)
7951 AC_SUBST(GLIB_GMODULE_LIBS)
7953 dnl ========================================================
7954 dnl Graphics checks.
7955 dnl ========================================================
7957 if test "${OS_TARGET}" = "WINNT"; then
7958 if $PERL -e "exit($MOZ_WINSDK_MAXVER < 0x06020000)"; then
7959 MOZ_ENABLE_DIRECT2D1_1=1
7960 AC_SUBST(MOZ_ENABLE_DIRECT2D1_1)
7964 if test "${OS_TARGET}" = "WINNT" -o \
7965 "${OS_ARCH}" = "Darwin" -o \
7966 "${MOZ_WIDGET_TOOLKIT}" = "android" -o \
7967 "${MOZ_WIDGET_TOOLKIT}" = "gonk" -o \
7968 "${MOZ_WIDGET_TOOLKIT}" = "gtk2" -o \
7969 "${MOZ_WIDGET_TOOLKIT}" = "gtk3"; then
7970 case "${target_cpu}" in
7982 MOZ_ARG_ENABLE_BOOL(skia,
7983 [ --enable-skia Enable use of Skia],
7987 if test "$USE_FC_FREETYPE"; then
7988 if test "$COMPILE_ENVIRONMENT"; then
7989 dnl ========================================================
7990 dnl = Check for freetype2 and its functionality
7991 dnl ========================================================
7992 PKG_CHECK_MODULES(FT2, freetype2 >= 6.1.0, _HAVE_FREETYPE2=1, _HAVE_FREETYPE2=)
7994 if test "$_HAVE_FREETYPE2"; then
7996 _SAVE_CFLAGS="$CFLAGS"
7997 LIBS="$LIBS $FT2_LIBS"
7998 CFLAGS="$CFLAGS $FT2_CFLAGS"
8000 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
8001 ac_cv_member_FT_Bitmap_Size_y_ppem,
8002 [AC_TRY_COMPILE([#include <ft2build.h>
8003 #include FT_FREETYPE_H],
8005 if (sizeof s.y_ppem) return 0;
8007 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
8008 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
8009 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
8010 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
8012 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
8014 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
8015 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
8016 [FT_Bitmap_Size structure includes y_ppem field])
8018 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table)
8021 CFLAGS="$_SAVE_CFLAGS"
8024 _SAVE_CPPFLAGS="$CPPFLAGS"
8025 CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
8026 MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
8027 [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
8028 CPPFLAGS="$_SAVE_CPPFLAGS"
8030 AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
8033 PKG_CHECK_MODULES(_FONTCONFIG, fontconfig,
8035 if test "$MOZ_PANGO"; then
8036 MOZ_PANGO_CFLAGS="$MOZ_PANGO_CFLAGS $_FONTCONFIG_CFLAGS"
8037 MOZ_PANGO_LIBS="$MOZ_PANGO_LIBS $_FONTCONFIG_LIBS"
8039 FT2_CFLAGS="$FT2_CFLAGS $_FONTCONFIG_CFLAGS"
8040 FT2_LIBS="$FT2_LIBS $_FONTCONFIG_LIBS"
8045 dnl ========================================================
8046 dnl Check for pixman and cairo
8047 dnl ========================================================
8049 if test "$MOZ_WIDGET_TOOLKIT" = "gtk3" ; then
8050 # cairo-gtk3 can be build with system-cairo only
8056 MOZ_ARG_ENABLE_BOOL(system-cairo,
8057 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
8062 MOZ_ARG_ENABLE_BOOL(system-pixman,
8063 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
8065 MOZ_TREE_PIXMAN=force,
8068 # System cairo depends on system pixman
8069 if test "$MOZ_TREE_PIXMAN" = "force"; then
8070 if test -z "$MOZ_TREE_CAIRO"; then
8071 AC_MSG_ERROR([--disable-system-pixman is incompatible with --enable-system-cairo.])
8075 elif test -z "$MOZ_TREE_CAIRO"; then
8079 if test "$MOZ_TREE_PIXMAN"; then
8080 AC_DEFINE(MOZ_TREE_PIXMAN)
8081 MOZ_PIXMAN_CFLAGS=""
8082 MOZ_PIXMAN_LIBS='$(call EXPAND_LIBNAME_PATH,mozlibpixman,$(DEPTH)/gfx/cairo/libpixman/src)'
8084 PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.19.2)
8085 MOZ_PIXMAN_CFLAGS="$PIXMAN_CFLAGS"
8086 MOZ_PIXMAN_LIBS="$PIXMAN_LIBS"
8088 AC_SUBST(MOZ_PIXMAN_CFLAGS)
8089 AC_SUBST(MOZ_PIXMAN_LIBS)
8091 # Check for headers defining standard int types.
8092 if test -n "$COMPILE_ENVIRONMENT"; then
8093 MOZ_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
8096 if test "$MOZ_TREE_CAIRO"; then
8097 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
8098 AC_DEFINE(MOZ_TREE_CAIRO)
8100 if test "$OS_ARCH" = "WINNT"; then
8101 # For now we assume that we will have a uint64_t available through
8102 # one of the above headers or mozstdint.h.
8103 AC_DEFINE(HAVE_UINT64_T)
8106 # Define macros for cairo-features.h
8107 TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
8108 if test "$MOZ_X11"; then
8109 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
8110 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
8111 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
8112 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8113 MOZ_ENABLE_CAIRO_FT=1
8114 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
8116 case "$MOZ_WIDGET_TOOLKIT" in
8118 QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
8121 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
8122 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
8123 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
8126 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
8127 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
8128 if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
8129 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
8130 WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
8131 MOZ_ENABLE_D2D_SURFACE=1
8132 MOZ_ENABLE_DWRITE_FONT=1
8134 WIN32_DWRITE_FONT_FEATURE=
8135 WIN32_D2D_SURFACE_FEATURE=
8138 MOZ_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
8140 dnl D3D10 Layers depend on D2D Surfaces.
8141 if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
8142 MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
8146 AC_MSG_ERROR([cairo-gtk3 toolkit is incompatible with in-tree cairo. Please add --enable-system-cairo to your build config.])
8149 if test "$USE_FC_FREETYPE"; then
8150 FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
8152 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
8153 AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
8154 AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
8155 AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
8156 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
8157 AC_SUBST(CAIRO_FT_CFLAGS)
8159 AC_SUBST(PS_SURFACE_FEATURE)
8160 AC_SUBST(PDF_SURFACE_FEATURE)
8161 AC_SUBST(SVG_SURFACE_FEATURE)
8162 AC_SUBST(XLIB_SURFACE_FEATURE)
8163 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
8164 AC_SUBST(QUARTZ_SURFACE_FEATURE)
8165 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
8166 AC_SUBST(WIN32_SURFACE_FEATURE)
8167 AC_SUBST(OS2_SURFACE_FEATURE)
8168 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
8169 AC_SUBST(FT_FONT_FEATURE)
8170 AC_SUBST(FC_FONT_FEATURE)
8171 AC_SUBST(WIN32_FONT_FEATURE)
8172 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
8173 AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
8174 AC_SUBST(QUARTZ_FONT_FEATURE)
8175 AC_SUBST(PNG_FUNCTIONS_FEATURE)
8176 AC_SUBST(QT_SURFACE_FEATURE)
8177 AC_SUBST(TEE_SURFACE_FEATURE)
8179 MOZ_CAIRO_OSLIBS='${CAIRO_FT_OSLIBS}'
8181 if test "$MOZ_X11"; then
8182 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
8185 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
8187 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION)
8188 MOZ_CAIRO_CFLAGS="$CAIRO_CFLAGS"
8189 MOZ_CAIRO_LIBS="$CAIRO_LIBS"
8190 PKG_CHECK_MODULES(CAIRO_TEE, cairo-tee >= $CAIRO_VERSION)
8191 if test "$MOZ_X11"; then
8192 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
8193 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
8194 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_LIBS"
8195 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
8199 AC_SUBST(MOZ_TREE_CAIRO)
8200 AC_SUBST(MOZ_CAIRO_CFLAGS)
8201 AC_SUBST(MOZ_CAIRO_LIBS)
8202 AC_SUBST(MOZ_CAIRO_OSLIBS)
8203 AC_SUBST(MOZ_TREE_PIXMAN)
8205 dnl ========================================================
8207 dnl ========================================================
8208 if test "$MOZ_ENABLE_SKIA"; then
8209 AC_DEFINE(MOZ_ENABLE_SKIA)
8211 if test "${MOZ_WIDGET_TOOLKIT}" = "android" -o x"$MOZ_WIDGET_TOOLKIT" = x"gonk"; then
8212 AC_DEFINE(SK_BUILD_FOR_ANDROID_NDK)
8215 if test "${CPU_ARCH}" != "ppc" -a "${CPU_ARCH}" != "ppc64" -a "${CPU_ARCH}" != "sparc" ; then
8216 MOZ_ENABLE_SKIA_GPU=1
8217 AC_DEFINE(USE_SKIA_GPU)
8218 AC_SUBST(MOZ_ENABLE_SKIA_GPU)
8221 AC_SUBST(MOZ_ENABLE_SKIA)
8223 dnl ========================================================
8225 dnl ========================================================
8226 MOZ_ARG_DISABLE_BOOL(xul,
8227 [ --disable-xul Disable XUL],
8229 if test "$MOZ_XUL"; then
8232 dnl remove extensions that require XUL
8233 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8238 dnl ========================================================
8239 dnl disable profile locking
8240 dnl do no use this in applications that can have more than
8241 dnl one process accessing the profile directory.
8242 dnl ========================================================
8243 MOZ_ARG_DISABLE_BOOL(profilelocking,
8244 [ --disable-profilelocking
8245 Disable profile locking],
8246 MOZ_PROFILELOCKING=,
8247 MOZ_PROFILELOCKING=1 )
8248 if test "$MOZ_PROFILELOCKING"; then
8249 AC_DEFINE(MOZ_PROFILELOCKING)
8252 dnl ========================================================
8253 dnl necko configuration options
8254 dnl ========================================================
8257 dnl option to disable various necko protocols
8259 MOZ_ARG_ENABLE_STRING(necko-protocols,
8260 [ --enable-necko-protocols[={http,ftp,default,all,none}]
8261 Enable/disable specific protocol handlers],
8262 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8263 if test "$option" = "yes" -o "$option" = "all"; then
8264 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8265 elif test "$option" = "no" -o "$option" = "none"; then
8267 elif test "$option" = "default"; then
8268 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8269 elif test `echo "$option" | grep -c \^-` != 0; then
8270 option=`echo $option | sed 's/^-//'`
8271 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8273 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8276 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8278 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8279 AC_SUBST_SET(NECKO_PROTOCOLS)
8280 for p in $NECKO_PROTOCOLS; do
8281 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8282 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_PROTOCOL_$p"
8286 dnl option to disable necko's wifi scanner
8289 case "$OS_TARGET" in
8291 if test -n "$gonkdir"; then
8295 Darwin|FreeBSD|SunOS|WINNT)
8304 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8305 [ --disable-necko-wifi Disable necko wifi scanner],
8309 if test "$NECKO_WIFI"; then
8310 if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
8311 AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
8313 AC_DEFINE(NECKO_WIFI)
8314 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
8316 AC_SUBST(NECKO_WIFI)
8317 AC_SUBST(NECKO_WIFI_DBUS)
8320 dnl option to disable cookies
8322 MOZ_ARG_DISABLE_BOOL(cookies,
8323 [ --disable-cookies Disable cookie support],
8326 AC_SUBST(NECKO_COOKIES)
8327 if test "$NECKO_COOKIES"; then
8328 AC_DEFINE(NECKO_COOKIES)
8329 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
8333 dnl Always build Marionette if not Android or B2G
8335 if test "$OS_TARGET" != Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
8336 AC_DEFINE(ENABLE_MARIONETTE)
8338 AC_SUBST(ENABLE_MARIONETTE)
8339 if test "$ENABLE_MARIONETTE"; then
8340 AC_DEFINE(ENABLE_MARIONETTE)
8344 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8346 MOZ_ARG_DISABLE_BOOL(ctypes,
8347 [ --disable-ctypes Disable js-ctypes],
8350 AC_SUBST(BUILD_CTYPES)
8351 if test "$BUILD_CTYPES"; then
8352 AC_DEFINE(BUILD_CTYPES)
8355 dnl Build Loop if required
8357 if test "$MOZ_LOOP"; then
8361 dnl Build Places if required
8362 if test "$MOZ_PLACES"; then
8363 AC_DEFINE(MOZ_PLACES)
8366 dnl Build SocialAPI if required
8367 if test "$MOZ_SOCIAL"; then
8368 AC_DEFINE(MOZ_SOCIAL)
8371 dnl Build Common JS modules provided by services.
8372 AC_SUBST(MOZ_SERVICES_COMMON)
8373 if test -n "$MOZ_SERVICES_COMMON"; then
8374 AC_DEFINE(MOZ_SERVICES_COMMON)
8377 dnl Build Services crypto component (used by Sync)
8378 AC_SUBST(MOZ_SERVICES_CRYPTO)
8379 if test -n "$MOZ_SERVICES_CRYPTO"; then
8380 AC_DEFINE(MOZ_SERVICES_CRYPTO)
8383 dnl Build Firefox Health Reporter Service
8384 AC_SUBST(MOZ_SERVICES_HEALTHREPORT)
8385 if test -n "$MOZ_SERVICES_HEALTHREPORT"; then
8386 AC_DEFINE(MOZ_SERVICES_HEALTHREPORT)
8389 dnl Build Services metrics component
8390 AC_SUBST(MOZ_SERVICES_METRICS)
8391 if test -n "$MOZ_SERVICES_METRICS"; then
8392 AC_DEFINE(MOZ_SERVICES_METRICS)
8395 dnl Build Notifications if required
8396 AC_SUBST(MOZ_SERVICES_NOTIFICATIONS)
8397 if test -n "$MOZ_SERVICES_NOTIFICATIONS"; then
8398 AC_DEFINE(MOZ_SERVICES_NOTIFICATIONS)
8401 dnl Build Sync Services if required
8402 AC_SUBST(MOZ_SERVICES_SYNC)
8403 if test -n "$MOZ_SERVICES_SYNC"; then
8404 AC_DEFINE(MOZ_SERVICES_SYNC)
8407 dnl Build Captive Portal Detector if required
8408 AC_SUBST(MOZ_CAPTIVEDETECT)
8409 if test -n "$MOZ_CAPTIVEDETECT"; then
8410 AC_DEFINE(MOZ_CAPTIVEDETECT)
8413 dnl Build second screen and casting features for external devices if required
8414 AC_SUBST(MOZ_DEVICES)
8415 if test -n "$MOZ_DEVICES"; then
8416 AC_DEFINE(MOZ_DEVICES)
8419 dnl ========================================================
8420 if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC" -o "$MOZ_DMD"; then
8421 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8424 if test "$MOZ_APP_COMPONENT_INCLUDE"; then
8425 AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_INCLUDE, "$MOZ_APP_COMPONENT_INCLUDE")
8428 if test "$MOZ_APP_COMPONENT_MODULES"; then
8429 AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_MODULES, $MOZ_APP_COMPONENT_MODULES)
8432 dnl ========================================================
8434 dnl = Maintainer debug option (no --enable equivalent)
8436 dnl ========================================================
8441 AC_SUBST(AR_EXTRACT)
8445 AC_SUBST(AS_DASH_C_FLAG)
8454 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8455 AC_SUBST(MOZ_UPDATE_XTERM)
8456 AC_SUBST(MOZ_AUTH_EXTENSION)
8457 AC_SUBST(MOZ_PERMISSIONS)
8458 AC_SUBST(MOZ_PREF_EXTENSIONS)
8459 AC_SUBST(MOZ_JS_LIBS)
8461 AC_SUBST(MOZ_DEBUG_SYMBOLS)
8462 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
8463 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
8464 AC_SUBST(MOZ_DEBUG_LDFLAGS)
8465 AC_SUBST(WARNINGS_AS_ERRORS)
8466 AC_SUBST(MOZ_EXTENSIONS)
8467 AC_SUBST(MOZ_JSDEBUGGER)
8468 AC_SUBST(MOZ_ENABLE_PROFILER_SPS)
8471 AC_SUBST(MOZ_INSTRUMENTS)
8472 AC_SUBST(MOZ_CALLGRIND)
8474 AC_SUBST(MOZ_PROFILING)
8476 AC_SUBST(MOZ_PLACES)
8477 AC_SUBST(MOZ_SOCIAL)
8478 AC_SUBST(MOZ_TOOLKIT_SEARCH)
8480 AC_SUBST(NS_PRINTING)
8482 AC_SUBST(MOZ_HELP_VIEWER)
8483 AC_SUBST(TOOLCHAIN_PREFIX)
8492 AC_SUBST(MOZ_PROFILELOCKING)
8494 AC_SUBST(ENABLE_TESTS)
8495 AC_SUBST(MOZ_UNIVERSALCHARDET)
8496 AC_SUBST(ACCESSIBILITY)
8497 AC_SUBST(MOZ_SPELLCHECK)
8498 AC_SUBST(MOZ_ANDROID_OMTC)
8499 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
8500 AC_SUBST(MOZ_CRASHREPORTER)
8501 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
8502 AC_SUBST(MOZ_CRASHREPORTER_UPLOAD_FULL_SYMBOLS)
8503 AC_SUBST(MOZ_MAINTENANCE_SERVICE)
8504 AC_SUBST(MOZ_STUB_INSTALLER)
8505 AC_SUBST(MOZ_VERIFY_MAR_SIGNATURE)
8506 AC_SUBST(MOZ_ENABLE_SIGNMAR)
8507 AC_SUBST(MOZ_UPDATER)
8509 AC_SUBST(MOZ_ANGLE_RENDERER)
8510 AC_SUBST(MOZ_D3D_CPU_SUFFIX)
8511 AC_SUBST(MOZ_HAS_WINSDK_WITH_D3D)
8512 AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL)
8513 AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL_PATH)
8514 AC_SUBST(MOZ_DIRECTX_SDK_PATH)
8515 AC_SUBST(MOZ_D3DCOMPILER_XP_DLL)
8516 AC_SUBST(MOZ_D3DCOMPILER_XP_CAB)
8520 AC_SUBST(MOZ_ANDROID_HISTORY)
8521 AC_SUBST(MOZ_WEBSMS_BACKEND)
8522 AC_SUBST(MOZ_ANDROID_BEAM)
8523 AC_SUBST(MOZ_ANDROID_SYNTHAPKS)
8524 AC_SUBST(MOZ_DISABLE_GECKOVIEW)
8525 AC_SUBST(ENABLE_STRIP)
8526 AC_SUBST(PKG_SKIP_STRIP)
8527 AC_SUBST(STRIP_FLAGS)
8528 AC_SUBST(USE_ELF_HACK)
8529 AC_SUBST(INCREMENTAL_LINKER)
8530 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
8531 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
8533 AC_SUBST(MOZ_FIX_LINK_PATHS)
8534 AC_SUBST(XPCOM_LIBS)
8535 AC_SUBST(XPCOM_FROZEN_LDOPTS)
8536 AC_SUBST(XPCOM_GLUE_LDOPTS)
8537 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
8538 AC_SUBST(XPCOM_STATICRUNTIME_GLUE_LDOPTS)
8539 AC_SUBST(XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS)
8541 AC_SUBST(USE_DEPENDENT_LIBS)
8543 AC_SUBST(MOZ_BUILD_ROOT)
8545 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
8546 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
8547 AC_SUBST(MOZ_LINKER_EXTRACT)
8549 AC_SUBST(MOZ_JSDOWNLOADS)
8550 if test -n "$MOZ_JSDOWNLOADS"; then
8551 AC_DEFINE(MOZ_JSDOWNLOADS)
8554 dnl ========================================================
8555 dnl = Mac bundle name prefix
8556 dnl ========================================================
8557 MOZ_ARG_WITH_STRING(macbundlename-prefix,
8558 [ --with-macbundlename-prefix=prefix
8559 Prefix for MOZ_MACBUNDLE_NAME],
8560 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
8562 MOZ_MACBUNDLE_NAME=`echo $MOZ_APP_DISPLAYNAME | tr -d ' '`
8563 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
8564 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
8567 if test "$MOZ_DEBUG"; then
8568 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}Debug.app
8570 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
8572 AC_SUBST(MOZ_MACBUNDLE_NAME)
8574 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
8575 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr '[A-Z]' '[a-z]'`
8576 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
8577 if test "$MOZ_DEBUG"; then
8578 MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
8581 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
8582 AC_SUBST(MOZ_MACBUNDLE_ID)
8584 dnl ========================================================
8585 dnl = Child Process Name for IPC
8586 dnl ========================================================
8587 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
8588 MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
8590 # We want to let Android unpack the file at install time, but it only does
8591 # so if the file is named libsomething.so. The lib/ path is also required
8592 # because the unpacked file will be under the lib/ subdirectory and will
8593 # need to be executed from that path.
8594 MOZ_CHILD_PROCESS_NAME="lib/libplugin-container.so"
8596 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
8598 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
8599 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
8601 # The following variables are available to branding and application
8602 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
8603 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
8604 # impacts profile location and user-visible fields.
8605 # - MOZ_APP_BASENAME: Typically stays consistent for multiple branded
8606 # versions of a given application (e.g. Aurora and Firefox both use
8607 # "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used
8608 # for application.ini's "Name" field, which controls profile location in
8609 # the absence of a "Profile" field (see below), and various system
8610 # integration hooks (Unix remoting, Windows MessageWindow name, etc.)
8611 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
8612 # Mac Bundle name, Updater, Installer), it is typically used for nightly
8613 # builds (e.g. Aurora for Firefox).
8614 # - MOZ_APP_VERSION: Defines the application version number.
8615 # - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set,
8616 # defaults to a lowercase form of MOZ_APP_BASENAME.
8617 # - MOZ_APP_PROFILE: When set, used for application.ini's
8618 # "Profile" field, which controls profile location.
8619 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
8620 # crash reporter server url.
8621 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
8622 # - MOZ_EXTENSION_MANAGER: When set, enabled extension manager.
8624 if test -z "$MOZ_APP_NAME"; then
8625 MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
8628 # For extensions and langpacks, we require a max version that is compatible
8629 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
8630 # 24.0a1 and 24.0a2 aren't affected
8632 # 24.1.1 becomes 24.*
8633 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
8634 if test -z "$IS_ALPHA"; then
8636 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
8639 MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
8642 MOZ_B2G_VERSION=${MOZ_B2G_VERSION:-"1.0.0"}
8643 AC_DEFINE_UNQUOTED(MOZ_B2G_VERSION,"$MOZ_B2G_VERSION")
8644 AC_DEFINE_UNQUOTED(MOZ_B2G_OS_NAME,"$MOZ_B2G_OS_NAME")
8646 AC_SUBST(MOZ_APP_NAME)
8647 AC_SUBST(MOZ_APP_DISPLAYNAME)
8648 AC_SUBST(MOZ_APP_BASENAME)
8649 AC_SUBST(MOZ_APP_VENDOR)
8650 AC_SUBST(MOZ_APP_PROFILE)
8651 AC_SUBST(MOZ_APP_ID)
8652 AC_SUBST(MAR_CHANNEL_ID)
8653 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
8654 AC_SUBST(MOZ_PROFILE_MIGRATOR)
8655 AC_SUBST(MOZ_EXTENSION_MANAGER)
8656 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
8657 AC_SUBST(MOZ_APP_UA_NAME)
8658 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
8659 AC_SUBST(MOZ_APP_VERSION)
8660 AC_SUBST(MOZ_APP_MAXVERSION)
8661 AC_DEFINE_UNQUOTED(FIREFOX_VERSION,$FIREFOX_VERSION)
8662 AC_SUBST(FIREFOX_VERSION)
8663 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
8664 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
8665 AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
8668 AC_SUBST(MOZ_APP_STATIC_INI)
8670 AC_SUBST(MOZ_PKG_SPECIAL)
8672 AC_SUBST(MOZILLA_OFFICIAL)
8674 AC_DEFINE_UNQUOTED(MOZ_TELEMETRY_DISPLAY_REV, 2)
8675 AC_SUBST(MOZ_TELEMETRY_DISPLAY_REV)
8677 if test "$MOZ_TELEMETRY_REPORTING"; then
8678 AC_DEFINE(MOZ_TELEMETRY_REPORTING)
8680 # Enable Telemetry by default for nightly and aurora channels
8681 if test -z "$RELEASE_BUILD"; then
8682 AC_DEFINE(MOZ_TELEMETRY_ON_BY_DEFAULT)
8686 dnl If we have any service that uploads data (and requires data submission
8687 dnl policy alert), set MOZ_DATA_REPORTING.
8688 dnl We need SUBST for build system and DEFINE for xul preprocessor.
8689 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"; then
8690 MOZ_DATA_REPORTING=1
8691 AC_DEFINE(MOZ_DATA_REPORTING)
8692 AC_SUBST(MOZ_DATA_REPORTING)
8696 AC_SUBST(MOZ_BROWSE_INFO)
8697 AC_SUBST(MOZ_TOOLS_DIR)
8698 AC_SUBST(WIN32_REDIST_DIR)
8701 dnl Echo the CFLAGS to remove extra whitespace.
8707 $_WARNINGS_CXXFLAGS \
8710 COMPILE_CFLAGS=`echo \
8715 COMPILE_CXXFLAGS=`echo \
8716 $_DEFINES_CXXFLAGS \
8724 HOST_CXXFLAGS=`echo \
8728 AC_SUBST(SYSTEM_LIBXUL)
8729 AC_SUBST(MOZ_NATIVE_JPEG)
8730 AC_SUBST(MOZ_NATIVE_PNG)
8731 AC_SUBST(MOZ_NATIVE_BZ2)
8733 AC_SUBST(MOZ_JPEG_CFLAGS)
8734 AC_SUBST(MOZ_JPEG_LIBS)
8735 AC_SUBST(MOZ_BZ2_CFLAGS)
8736 AC_SUBST(MOZ_BZ2_LIBS)
8737 AC_SUBST(MOZ_PNG_CFLAGS)
8738 AC_SUBST(MOZ_PNG_LIBS)
8740 if test "$MOZ_WIDGET_TOOLKIT" = gonk -a -n "$MOZ_NUWA_PROCESS"; then
8741 export MOZ_NUWA_PROCESS
8742 AC_DEFINE(MOZ_NUWA_PROCESS)
8744 AC_SUBST(MOZ_NUWA_PROCESS)
8746 AC_SUBST(NSPR_CFLAGS)
8748 AC_SUBST(MOZ_NATIVE_NSPR)
8750 AC_SUBST(NSS_CFLAGS)
8752 AC_SUBST(MOZ_NATIVE_NSS)
8753 AC_SUBST(NSS_DISABLE_DBM)
8756 OS_CXXFLAGS="$CXXFLAGS"
8757 OS_CPPFLAGS="$CPPFLAGS"
8758 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
8759 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
8760 OS_LDFLAGS="$LDFLAGS"
8763 AC_SUBST(OS_CXXFLAGS)
8764 AC_SUBST(OS_CPPFLAGS)
8765 AC_SUBST(OS_COMPILE_CFLAGS)
8766 AC_SUBST(OS_COMPILE_CXXFLAGS)
8767 AC_SUBST(OS_LDFLAGS)
8769 AC_SUBST(CROSS_COMPILE)
8770 AC_SUBST(WCHAR_CFLAGS)
8774 AC_SUBST(HOST_CFLAGS)
8775 AC_SUBST(HOST_CXXFLAGS)
8776 AC_SUBST(HOST_LDFLAGS)
8777 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8779 AC_SUBST(HOST_AR_FLAGS)
8781 AC_SUBST(HOST_RANLIB)
8782 AC_SUBST(HOST_NSPR_MDCPUCFG)
8783 AC_SUBST(HOST_BIN_SUFFIX)
8784 AC_SUBST(HOST_OS_ARCH)
8786 AC_SUBST(TARGET_CPU)
8787 AC_SUBST(TARGET_VENDOR)
8789 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8790 AC_SUBST(TARGET_MD_ARCH)
8791 AC_SUBST(TARGET_XPCOM_ABI)
8794 AC_SUBST(OS_RELEASE)
8797 AC_SUBST(INTEL_ARCHITECTURE)
8798 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
8799 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
8801 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8803 AC_SUBST(WRAP_LDFLAGS)
8806 AC_SUBST(MKSHLIB_FORCE_ALL)
8807 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8808 AC_SUBST(DSO_CFLAGS)
8809 AC_SUBST(DSO_PIC_CFLAGS)
8810 AC_SUBST(DSO_LDOPTS)
8811 AC_SUBST(LIB_PREFIX)
8812 AC_SUBST(DLL_PREFIX)
8813 AC_SUBST(DLL_SUFFIX)
8814 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8815 AC_SUBST(LIB_SUFFIX)
8816 AC_SUBST(OBJ_SUFFIX)
8817 AC_SUBST(BIN_SUFFIX)
8818 AC_SUBST(ASM_SUFFIX)
8819 AC_SUBST(IMPORT_LIB_SUFFIX)
8821 AC_SUBST(CC_VERSION)
8822 AC_SUBST(CXX_VERSION)
8823 AC_SUBST(MSMANIFEST_TOOL)
8824 AC_SUBST(NS_ENABLE_TSF)
8825 AC_SUBST(MOZ_NSS_PATCH)
8826 AC_SUBST(MOZ_APP_COMPONENT_LIBS)
8827 AC_SUBST(MOZ_APP_EXTRA_LIBS)
8830 AC_SUBST(MOZ_VORBIS)
8831 AC_SUBST(MOZ_TREMOR)
8835 AC_SUBST(MOZ_FFMPEG)
8837 AC_SUBST(MOZ_DIRECTSHOW)
8838 AC_SUBST(MOZ_MEDIA_PLUGINS)
8839 AC_SUBST(MOZ_APPLEMEDIA)
8840 AC_SUBST(MOZ_OMX_PLUGIN)
8841 AC_SUBST(MOZ_VPX_ERROR_CONCEALMENT)
8844 AC_SUBST(VPX_ASFLAGS)
8845 AC_SUBST(VPX_DASH_C_FLAG)
8846 AC_SUBST(VPX_AS_CONVERSION)
8847 AC_SUBST(VPX_ASM_SUFFIX)
8848 AC_SUBST(VPX_X86_ASM)
8849 AC_SUBST(VPX_ARM_ASM)
8850 AC_SUBST(VPX_NEED_OBJ_INT_EXTRACT)
8851 AC_SUBST(MOZ_INSTRUMENT_EVENT_LOOP)
8852 AC_SUBST(LIBJPEG_TURBO_AS)
8853 AC_SUBST(LIBJPEG_TURBO_ASFLAGS)
8854 AC_SUBST(LIBJPEG_TURBO_X86_ASM)
8855 AC_SUBST(LIBJPEG_TURBO_X64_ASM)
8856 AC_SUBST(LIBJPEG_TURBO_ARM_ASM)
8858 AC_SUBST(MOZ_PACKAGE_JSSHELL)
8859 AC_SUBST(MOZ_FOLD_LIBS)
8861 AC_SUBST(MOZ_ENABLE_SZIP)
8862 AC_SUBST(MOZ_SZIP_FLAGS)
8864 if test "$MOZ_DEBUG"; then
8867 AC_SUBST(MOZ_EM_DEBUG)
8869 if test -n "$COMPILE_ENVIRONMENT"; then
8870 AC_CHECK_FUNCS(posix_fadvise posix_fallocate)
8872 dnl Check for missing components
8873 if test "$MOZ_X11"; then
8874 if test "$WITHOUT_X11"; then
8875 AC_MSG_ERROR([--without-x specified and MOZ_X11 still defined])
8877 dnl ====================================================
8878 dnl = Check if X headers exist
8879 dnl ====================================================
8880 _SAVE_CFLAGS=$CFLAGS
8881 CFLAGS="$CFLAGS $XCFLAGS"
8885 #include <X11/Xlib.h>
8886 #include <X11/Intrinsic.h>
8887 #include <X11/extensions/XShm.h>
8891 if ((dpy = XOpenDisplay(NULL)) == NULL) {
8892 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8896 [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ])
8897 CFLAGS="$_SAVE_CFLAGS"
8899 if test -n "$MISSING_X"; then
8900 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8905 fi # COMPILE_ENVIRONMENT
8907 dnl Set various defines and substitutions
8908 dnl ========================================================
8910 if test "$OS_ARCH" != "WINNT"; then
8914 if test "$MOZ_DEBUG"; then
8915 AC_DEFINE(MOZ_REFLOW_PERF)
8916 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8919 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
8920 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8921 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8922 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8923 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8924 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8925 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8926 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8927 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8930 if test "$MOZ_DEBUG"; then
8933 case "$MOZ_UPDATE_CHANNEL" in
8934 aurora|beta|release|esr)
8941 if test -n "$A11Y_LOG"; then
8945 AC_SUBST(MOZILLA_VERSION)
8947 AC_SUBST(ac_configure_args)
8949 dnl Spit out some output
8950 dnl ========================================================
8952 dnl The following defines are used by xpcom
8953 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8955 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8956 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8957 HAVE_CPP_PARTIAL_SPECIALIZATION
8958 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8959 NEED_CPP_UNUSED_IMPLEMENTATIONS
8962 HAVE_ICONV_WITH_CONST_INPUT
8975 AC_SUBST(STLPORT_LIBS)
8977 dnl ========================================================
8979 dnl ========================================================
8981 if test "$MOZ_BUILD_APP" = "browser"; then
8984 # Internationalization isn't built or exposed by default in non-desktop
8985 # builds. Bugs to enable:
8987 # Android: bug 864843
8994 if test -n "$MOZ_NATIVE_ICU"; then
8995 MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_ICU_LIBS"
8998 if test -n "$JS_SHARED_LIBRARY"; then
8999 MOZ_JS_LIBS="$MOZ_JS_SHARED_LIBS"
9001 MOZ_JS_LIBS="$MOZ_JS_STATIC_LIBS"
9002 AC_DEFINE(MOZ_STATIC_JS)
9004 AC_SUBST(JS_SHARED_LIBRARY)
9006 AC_SUBST(UPLOAD_EXTRA_FILES)
9008 MOZ_CREATE_CONFIG_STATUS()
9010 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9011 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9012 MOZ_SUBCONFIGURE_ICU()
9013 MOZ_SUBCONFIGURE_FFI()
9016 # Hack around an Apple bug that affects the egrep that comes with OS X 10.7.
9017 # "env ARCHPREFERENCE=i386,x86_64 arch egrep" first tries to use the 32-bit
9018 # Intel part of the egrep fat binary, even on 64-bit systems, and falls back on
9019 # the 64-bit part if it's not a fat binary, as can happen with MacPorts. We
9020 # (apparently) only need this hack when egrep's "pattern" is particularly long
9021 # (as in the following code) and the first egrep on our $PATH is Apple's. See
9025 FIXED_EGREP="env ARCHPREFERENCE=i386,x86_64 arch egrep"
9032 # Run jemalloc configure script
9034 if test -z "$MOZ_NATIVE_JEMALLOC" -a "$MOZ_MEMORY" && test -n "$MOZ_JEMALLOC3" -o -n "$MOZ_REPLACE_MALLOC"; then
9035 ac_configure_args="--build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_"
9036 if test -n "$MOZ_REPLACE_MALLOC"; then
9037 # When using replace_malloc, we always want memalign and valloc exported from jemalloc.
9038 ac_configure_args="$ac_configure_args ac_cv_func_memalign=yes"
9039 ac_configure_args="$ac_configure_args ac_cv_func_valloc=yes"
9041 if test -n "$MOZ_JEMALLOC3"; then
9042 case "${OS_ARCH}" in
9044 # We want jemalloc functions to be kept hidden on both Mac and Windows
9045 # See memory/build/mozmemory_wrap.h for details.
9046 ac_configure_args="$ac_configure_args --without-export"
9049 elif test "${OS_ARCH}" = Darwin; then
9050 # When building as a replace-malloc lib, disabling the zone allocator
9051 # forces to use pthread_atfork.
9052 ac_configure_args="$ac_configure_args --disable-zone-allocator"
9054 _MANGLE="malloc posix_memalign aligned_alloc calloc realloc free memalign valloc malloc_usable_size"
9056 if test -z "$MOZ_REPLACE_MALLOC"; then
9058 Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
9062 elif test -z "$MOZ_JEMALLOC3"; then
9064 JEMALLOC_WRAPPER=replace_
9066 if test -n "$MANGLE"; then
9068 if test -n "$_WRAP_MALLOC" -a -z "$JEMALLOC_WRAPPER"; then
9069 JEMALLOC_WRAPPER=__wrap_
9071 for mangle in ${MANGLE}; do
9072 if test -n "$MANGLED"; then
9073 MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle,$MANGLED"
9075 MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle"
9078 ac_configure_args="$ac_configure_args --with-mangling=$MANGLED"
9081 if test -z "$MOZ_TLS"; then
9082 ac_configure_args="$ac_configure_args --disable-tls"
9084 EXTRA_CFLAGS="$CFLAGS"
9085 for var in AS CC CXX CPP LD AR RANLIB STRIP CPPFLAGS EXTRA_CFLAGS LDFLAGS; do
9086 ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
9088 if test "$CROSS_COMPILE"; then
9089 ac_configure_args="$ac_configure_args je_cv_static_page_shift=12"
9091 _save_cache_file="$cache_file"
9092 cache_file=$_objdir/memory/jemalloc/src/config.cache
9094 if ! test -e memory/jemalloc; then
9095 mkdir -p memory/jemalloc
9098 AC_OUTPUT_SUBDIRS(memory/jemalloc/src)
9099 cache_file="$_save_cache_file"
9100 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9103 # Run freetype configure script
9105 if test "$MOZ_TREE_FREETYPE"; then
9106 export CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS -std=c99"
9107 export CPPFLAGS="$CPPFLAGS $MOZ_DEBUG_FLAGS"
9108 export CXXFLAGS="$CXXFLAGS $MOZ_DEBUG_FLAGS"
9109 export LDFLAGS="$LDFLAGS $MOZ_DEBUG_LDFLAGS"
9110 # Spaces in the *_CFLAGS and *_LIBS variables are intentionally placed
9111 # to force freetype to use our settings rather than autodetecting
9112 export LIBPNG_CFLAGS="$MOZ_PNG_CFLAGS "
9113 export LIBPNG_LIBS="$MOZ_PNG_LIBS "
9114 export ZLIB_CFLAGS="$MOZ_ZLIB_CFLAGS "
9115 export ZLIB_LIBS="$MOZ_ZLIB_LIBS "
9116 export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in"
9117 ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes --with-zlib=yes --without-bzip2 --with-png=yes --without-harfbuzz"
9119 if ! test -e modules; then
9123 AC_OUTPUT_SUBDIRS(modules/freetype2)
9126 if test -z "$direct_nspr_config"; then
9127 dnl ========================================================
9128 dnl = Setup a nice relatively clean build environment for
9129 dnl = sub-configures.
9130 dnl ========================================================
9133 CFLAGS="$_SUBDIR_CFLAGS"
9134 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9135 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9136 LDFLAGS="$_SUBDIR_LDFLAGS"
9137 HOST_CC="$_SUBDIR_HOST_CC"
9138 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9139 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9146 # Run all configure scripts specified by a subconfigure
9147 if test -n "$_subconfigure_subdir"; then
9148 _save_ac_configure_args="$ac_configure_args"
9149 ac_configure_args="$_subconfigure_config_args"
9150 AC_OUTPUT_SUBDIRS("$_subconfigure_subdir")
9151 ac_configure_args="$_save_ac_configure_args"
9154 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9155 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9159 if test -n "$_WRAP_MALLOC"; then
9160 # Avoid doubling wrap malloc arguments
9161 _SUBDIR_CONFIG_ARGS="`echo $_SUBDIR_CONFIG_ARGS | sed -e 's/--enable-wrap-malloc *//'`"
9164 if test -z "$MOZ_NATIVE_NSPR"; then
9165 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9166 if test -z "$MOZ_DEBUG"; then
9167 ac_configure_args="$ac_configure_args --disable-debug"
9169 ac_configure_args="$ac_configure_args --enable-debug"
9171 if test "$MOZ_OPTIMIZE" = "1"; then
9172 ac_configure_args="$ac_configure_args --enable-optimize"
9173 elif test -z "$MOZ_OPTIMIZE"; then
9174 ac_configure_args="$ac_configure_args --disable-optimize"
9176 if test -n "$HAVE_64BIT_OS"; then
9177 ac_configure_args="$ac_configure_args --enable-64bit"
9179 if test -n "$USE_ARM_KUSER"; then
9180 ac_configure_args="$ac_configure_args --with-arm-kuser"
9182 # A configure script generated by autoconf 2.68 does not allow the cached
9183 # values of "precious" variables such as CFLAGS and LDFLAGS to differ from
9184 # the values passed to the configure script. Since we modify CFLAGS and
9185 # LDFLAGS before passing them to NSPR's configure script, we cannot share
9186 # config.cache with NSPR. As a result, we cannot pass AS, CC, CXX, etc. to
9187 # NSPR via a shared config.cache file and must pass them to NSPR on the
9188 # configure command line.
9189 for var in AS CC CXX CPP LD AR RANLIB STRIP; do
9190 ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
9192 # A configure script generated by autoconf 2.68 warns if --host is
9193 # specified but --build isn't. So we always pass --build to NSPR's
9195 ac_configure_args="$ac_configure_args --build=$build"
9196 ac_configure_args="$ac_configure_args $NSPR_CONFIGURE_ARGS"
9198 # Save these, so we can mess with them for the subconfigure ..
9199 _SAVE_CFLAGS="$CFLAGS"
9200 _SAVE_CPPFLAGS="$CPPFLAGS"
9201 _SAVE_LDFLAGS="$LDFLAGS"
9203 if test -n "$MOZ_LINKER" -a "$ac_cv_func_dladdr" = no ; then
9204 # dladdr is supported by the new linker, even when the system linker doesn't
9205 # support it. Trick nspr into using dladdr when it's not supported.
9206 export CPPFLAGS="-include $_topsrcdir/mozglue/linker/dladdr.h $CPPFLAGS"
9208 export LDFLAGS="$LDFLAGS $NSPR_LDFLAGS"
9209 export CFLAGS="$CFLAGS $MOZ_FRAMEPTR_FLAGS"
9211 # Use a separate cache file for NSPR since it uses autoconf 2.68.
9212 _save_cache_file="$cache_file"
9213 cache_file=$_objdir/nsprpub/config.cache
9215 AC_OUTPUT_SUBDIRS(nsprpub)
9217 # .. and restore them
9218 cache_file="$_save_cache_file"
9219 CFLAGS="$_SAVE_CFLAGS"
9220 CPPFLAGS="$_SAVE_CPPFLAGS"
9221 LDFLAGS="$_SAVE_LDFLAGS"
9223 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9226 dnl ========================================================
9227 dnl = Setup a nice relatively clean build environment for
9228 dnl = sub-configures.
9229 dnl ========================================================
9232 CFLAGS="$_SUBDIR_CFLAGS"
9233 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9234 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9235 LDFLAGS="$_SUBDIR_LDFLAGS"
9236 HOST_CC="$_SUBDIR_HOST_CC"
9237 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9238 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9241 if test -n "$ENABLE_CLANG_PLUGIN"; then
9242 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9243 AC_OUTPUT_SUBDIRS(build/clang-plugin)
9247 # Run the SpiderMonkey 'configure' script.
9248 dist=$MOZ_BUILD_ROOT/dist
9249 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9250 ac_configure_args="$ac_configure_args --enable-threadsafe"
9252 if test "$_INTL_API" = no; then
9253 ac_configure_args="$ac_configure_args --without-intl-api"
9256 if test "$BUILD_CTYPES"; then
9257 # Build js-ctypes on the platforms we can.
9258 ac_configure_args="$ac_configure_args --enable-ctypes"
9260 if test -z "$JS_SHARED_LIBRARY" ; then
9261 ac_configure_args="$ac_configure_args --disable-shared-js"
9262 if test -n "$MOZ_DISABLE_EXPORT_JS"; then
9263 ac_configure_args="$ac_configure_args --disable-export-js"
9266 if test -z "$JSGC_USE_EXACT_ROOTING" ; then
9267 ac_configure_args="$ac_configure_args --disable-exact-rooting"
9269 if test -z "$JSGC_GENERATIONAL" ; then
9270 ac_configure_args="$ac_configure_args --disable-gcgenerational"
9272 if test -z "$MOZ_NATIVE_NSPR"; then
9273 ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9274 ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9276 ac_configure_args="$ac_configure_args --prefix=$dist"
9277 if test "$MOZ_MEMORY"; then
9278 ac_configure_args="$ac_configure_args --enable-jemalloc"
9280 if test -n "$MOZ_GLUE_LDFLAGS"; then
9281 export MOZ_GLUE_LDFLAGS
9283 if test -n "$MOZ_GLUE_PROGRAM_LDFLAGS"; then
9284 export MOZ_GLUE_PROGRAM_LDFLAGS
9286 if test -n "$ZLIB_IN_MOZGLUE"; then
9289 export MOZ_NATIVE_ZLIB
9290 export MOZ_ZLIB_CFLAGS
9291 export MOZ_ZLIB_LIBS
9293 export DONT_POPULATE_VIRTUALENV=1
9295 export MOZILLA_CENTRAL_PATH=$_topsrcdir
9296 export STLPORT_CPPFLAGS
9297 export STLPORT_LDFLAGS
9299 export JS_STANDALONE=no
9301 export ZLIB_IN_MOZGLUE
9303 if ! test -e js; then
9307 AC_OUTPUT_SUBDIRS(js/src)
9308 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9310 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR
9312 export WRITE_MOZINFO=1
9313 dnl we need to run config.status after js/src subconfigure because we're
9314 dnl traversing its moz.build and we need its config.status for that.
9315 dnl However, writing our own config.status needs to happen before
9316 dnl subconfigures because the setup surrounding subconfigures alters
9317 dnl many AC_SUBSTed variables.
9318 MOZ_RUN_CONFIG_STATUS()