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.0.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`
96 dnl TODO Don't exempt L10N builds once bug 842760 is resolved.
97 if test "$_topsrcdir" = "$_objdir" -a "${with_l10n_base+set}" != set; then
99 echo " * Building directly in the main source directory is not allowed."
101 echo " * To build, you must run configure from a separate directory"
102 echo " * (referred to as an object directory)."
104 echo " * If you are building with a mozconfig, you will need to change your"
105 echo " * mozconfig to point to a different object directory."
110 # Check for a couple representative files in the source tree
112 for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
113 if test -f $file; then
114 _conflict_files="$_conflict_files $file"
117 if test "$_conflict_files"; then
119 echo "* Your source tree contains these files:"
120 for file in $_conflict_files; do
124 * This indicates that you previously built in the source tree.
125 * A source tree build can confuse the separate objdir build.
127 * To clean up the source tree:
141 COMPILE_ENVIRONMENT=1
142 MOZ_ARG_DISABLE_BOOL(compile-environment,
143 [ --disable-compile-environment
144 Disable compiler/library checks.],
145 COMPILE_ENVIRONMENT= )
146 AC_SUBST(COMPILE_ENVIRONMENT)
148 MOZ_ARG_WITH_STRING(l10n-base,
149 [ --with-l10n-base=DIR path to l10n repositories],
150 L10NBASEDIR=$withval)
151 if test -n "$L10NBASEDIR"; then
152 if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
153 AC_MSG_ERROR([--with-l10n-base must specify a path])
154 elif test -d "$L10NBASEDIR"; then
155 L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
157 AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
160 AC_SUBST(L10NBASEDIR)
162 dnl Check for Perl first -- needed for win32 SDK checks
163 MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
164 if test -z "$PERL" -o "$PERL" = ":"; then
165 AC_MSG_ERROR([perl not found in \$PATH])
169 if test -n "$GAIADIR" ; then
170 AC_DEFINE(PACKAGE_GAIA)
173 MOZ_ARG_WITH_STRING(gonk,
175 location of gonk dir],
178 MOZ_ARG_WITH_STRING(gonk-toolchain-prefix,
179 [ --with-gonk-toolchain-prefix=DIR
180 prefix to gonk toolchain commands],
181 gonk_toolchain_prefix=$withval)
183 if test -n "$gonkdir" ; then
184 kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"`
185 android_source="$gonkdir"
186 ANDROID_SOURCE="$android_source"
187 ANDROID_NDK="${ANDROID_SOURCE}/ndk"
190 if test -n "${PLATFORM_SDK_VERSION}"; then
191 ANDROID_VERSION="${PLATFORM_SDK_VERSION}"
195 TOOLCHAIN_PREFIX="$gonk_toolchain_prefix"
196 AS="$gonk_toolchain_prefix"as
197 CC="$gonk_toolchain_prefix"gcc
198 CXX="$gonk_toolchain_prefix"g++
199 CPP="$gonk_toolchain_prefix"cpp
200 LD="$gonk_toolchain_prefix"ld
201 AR="$gonk_toolchain_prefix"ar
202 RANLIB="$gonk_toolchain_prefix"ranlib
203 STRIP="$gonk_toolchain_prefix"strip
204 OBJCOPY="$gonk_toolchain_prefix"objcopy
206 if ! test -e "$gonkdir/ndk/sources/cxx-stl/stlport/src/iostream.cpp"; then
207 AC_MSG_ERROR([Couldn't find path to stlport sources in the gonk tree])
209 STLPORT_CPPFLAGS="-I$_topsrcdir/build/stlport/stlport -I$gonkdir/ndk/sources/cxx-stl/system/include"
210 STLPORT_LIBS="$_objdir/build/stlport/libstlport_static.a"
212 case "$target_cpu" in
221 case "$ANDROID_VERSION" in
223 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/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"
227 AC_SUBST(MOZ_OMX_DECODER)
231 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"
232 if test -d "$gonkdir/external/bluetooth/bluez"; then
233 GONK_INCLUDES+=" -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib"
238 AC_SUBST(MOZ_OMX_DECODER)
241 AC_MSG_ERROR([Unsupported platform version: $ANDROID_VERSION])
244 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"
245 CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS"
246 CXXFLAGS="-mandroid -fno-short-enums -fno-exceptions -Wno-psabi $CXXFLAGS $STLPORT_CPPFLAGS"
247 dnl Add -llog by default, since we use it all over the place.
250 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"
252 dnl prevent cross compile section from using these flags as host flags
253 if test -z "$HOST_CPPFLAGS" ; then
256 if test -z "$HOST_CFLAGS" ; then
259 if test -z "$HOST_CXXFLAGS" ; then
262 if test -z "$HOST_LDFLAGS" ; then
267 AC_DEFINE_UNQUOTED(ANDROID_VERSION, $ANDROID_VERSION)
268 AC_SUBST(ANDROID_VERSION)
269 AC_DEFINE(HAVE_SYS_UIO_H)
270 AC_DEFINE(HAVE_PTHREADS)
272 MOZ_CHROME_FILE_FORMAT=omni
278 *-android*|*-linuxandroid*)
279 if test -z "$ANDROID_PACKAGE_NAME" ; then
280 ANDROID_PACKAGE_NAME='org.mozilla.$(MOZ_APP_NAME)'
282 MOZ_CHROME_FILE_FORMAT=omni
286 AC_PATH_PROG(OBJCOPY,objcopy)
291 AC_SUBST(ANDROID_SOURCE)
292 AC_SUBST(ANDROID_PACKAGE_NAME)
295 dnl ========================================================
296 dnl Checks for compilers.
297 dnl ========================================================
298 dnl Set CROSS_COMPILE in the environment when running configure
299 dnl to use the cross-compile setup for now
300 dnl ========================================================
302 dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
305 if test "$COMPILE_ENVIRONMENT"; then
307 if test -n "$CROSS_COMPILE" -a "$target" != "$host"; then
313 # Work around the conftest.exe access problem on Windows
318 MOZ_PATH_PROGS(AS, $AS as, $CC)
319 AC_CHECK_PROGS(AR, ar, :)
320 AC_CHECK_PROGS(LD, ld, :)
321 AC_CHECK_PROGS(STRIP, strip, :)
322 AC_CHECK_PROGS(WINDRES, windres, :)
323 if test -z "$HOST_CC"; then
326 if test -z "$HOST_CFLAGS"; then
327 HOST_CFLAGS="$CFLAGS"
329 if test -z "$HOST_CXX"; then
332 if test -z "$HOST_CXXFLAGS"; then
333 HOST_CXXFLAGS="$CXXFLAGS"
335 if test -z "$HOST_LDFLAGS"; then
336 HOST_LDFLAGS="$LDFLAGS"
338 if test -z "$HOST_RANLIB"; then
339 HOST_RANLIB="$RANLIB"
341 if test -z "$HOST_AR"; then
344 if test -z "$HOST_AR_FLAGS"; then
345 HOST_AR_FLAGS="$AR_FLAGS"
349 if test -n "$MOZ_WINCONSOLE"; then
350 AC_DEFINE(MOZ_WINCONSOLE)
355 if test -n "$GNU_CC" -a -z "$CLANG_CC" ; then
356 if test "$GCC_MAJOR_VERSION" -eq 4 -a "$GCC_MINOR_VERSION" -lt 4 ||
357 test "$GCC_MAJOR_VERSION" -lt 4; then
358 AC_MSG_ERROR([Only GCC 4.4 or newer supported])
362 dnl ========================================================
363 dnl Special win32 checks
364 dnl ========================================================
366 MOZ_ARG_ENABLE_BOOL(metro,
367 [ --enable-metro Enable Windows Metro build targets],
370 if test -n "$MOZ_METRO"; then
372 # Target the Windows 8 Kit
375 # toolkit/library/makefile.in needs these, see nsDllMain.
377 CRTEXPDLLVERSION=1-1-0
379 # Target the Windows 7 SDK by default
384 AC_SUBST(CRTDLLVERSION)
385 AC_SUBST(CRTEXPDLLVERSION)
387 MOZ_ARG_WITH_STRING(windows-version,
388 [ --with-windows-version=WINSDK_TARGETVER
389 Windows SDK version to target. Lowest version
390 currently allowed is 601 (Win7), highest is 602 (Win8)],
391 WINSDK_TARGETVER=$withval)
393 # Currently only two sdk versions allowed, 601 and 602
394 case "$WINSDK_TARGETVER" in
396 MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
400 AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER)]);
406 if test "$GCC" != "yes" -a -z "$CLANG_CC"; then
407 # Check to see if we are really running in a msvc environemnt
409 AC_CHECK_PROGS(MIDL, midl)
411 # Make sure compilers are valid
412 CFLAGS="$CFLAGS -TC -nologo"
413 CXXFLAGS="$CXXFLAGS -TP -nologo"
416 AC_TRY_COMPILE([#include <stdio.h>],
417 [ printf("Hello World\n"); ],,
418 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
421 AC_TRY_COMPILE([#include <new.h>],
422 [ unsigned *test = new unsigned(42); ],,
423 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
427 _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
430 # Determine compiler version
431 CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
432 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
433 _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
434 _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
435 _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
436 _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
438 CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
439 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
441 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
442 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
445 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
446 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
448 if test "$_CC_MAJOR_VERSION" = "16"; then
451 elif test "$_CC_MAJOR_VERSION" = "17"; then
454 elif test "$_CC_MAJOR_VERSION" = "18"; then
458 AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
461 AC_DEFINE(HAVE_SEH_EXCEPTIONS)
463 if test -n "$WIN32_REDIST_DIR"; then
464 if test ! -d "$WIN32_REDIST_DIR"; then
465 AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
467 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
470 dnl Confirm we have the pri tools on win8 builds
471 if test -n "$MOZ_METRO"; then
472 AC_MSG_CHECKING([for makepri])
473 AC_CHECK_PROGS(MAKEPRI, makepri, "")
474 if test -z "MAKEPRI" ; then
475 AC_MSG_ERROR([makepri.exe is required for generating metro browser install components. It should be in the Win8 SDK.])
480 dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool',
481 dnl not something else like "magnetic tape manipulation utility".
482 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
483 if test -z "$MSMT_TOOL"; then
484 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
488 _MSMT_VER_FILTER='s|.*[^!-~]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
490 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
491 if test -z "$MSMANIFEST_TOOL_VERSION"; then
492 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
498 # Check linker version
499 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
500 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
501 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
502 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
507 # Set midl environment
510 MIDL_FLAGS="${MIDL_FLAGS} -env win32"
513 MIDL_FLAGS="${MIDL_FLAGS} -env x64"
517 unset _MSVC_VER_FILTER
519 AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
523 _SAVE_CXXFLAGS="$CXXFLAGS"
524 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
525 AC_TRY_COMPILE([#include <exception>],
526 [std::_Throw(std::exception()); return 0;],
527 ac_cv_have_std__Throw="yes",
528 ac_cv_have_std__Throw="no")
529 CXXFLAGS="$_SAVE_CXXFLAGS"
533 if test "$ac_cv_have_std__Throw" = "yes"; then
534 AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
535 ac_cv_have_dllimport_exception_bug,
539 _SAVE_CXXFLAGS="$CXXFLAGS"
540 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
541 AC_TRY_LINK([#include <vector>],
542 [std::vector<int> v; return v.at(1);],
543 ac_cv_have_dllimport_exception_bug="no",
544 ac_cv_have_dllimport_exception_bug="yes")
545 CXXFLAGS="$_SAVE_CXXFLAGS"
548 if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
550 MOZ_MSVC_STL_WRAP__Throw=1
551 AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
554 AC_CACHE_CHECK(for overridable _RAISE,
559 _SAVE_CXXFLAGS="$CXXFLAGS"
560 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
561 AC_TRY_COMPILE([#include <xstddef>
563 #define _RAISE(x) externallyDefinedFunction((x).what())
566 [std::vector<int> v; return v.at(1);],
567 ac_cv_have__RAISE="no",
568 ac_cv_have__RAISE="yes")
569 CXXFLAGS="$_SAVE_CXXFLAGS"
572 if test "$ac_cv_have__RAISE" = "yes"; then
574 MOZ_MSVC_STL_WRAP__RAISE=1
575 AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
577 AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK. Please file a bug describing this error and your build configuration.])
581 if test "$WRAP_STL_INCLUDES" = "1"; then
582 STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
584 elif test -z "$CLANG_CC"; then
585 # Check w32api version
586 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
587 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
588 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
589 AC_TRY_COMPILE([#include <w32api.h>],
590 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
591 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
592 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
593 #error "test failed."
595 , [ res=yes ], [ res=no ])
596 AC_MSG_RESULT([$res])
597 if test "$res" != "yes"; then
598 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
600 # Check windres version
601 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
602 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
603 AC_MSG_RESULT([$_WINDRES_VERSION])
604 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
605 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
606 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
607 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
608 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
609 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
610 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
611 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
612 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
613 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
614 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
615 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
617 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
620 AC_CHECK_PROGS(MIDL, $target-widl widl)
621 if test -n "$MIDL"; then
624 MIDL_FLAGS="$MIDL_FLAGS --win32 -m32"
627 MIDL_FLAGS="$MIDL_FLAGS --win64 -m64"
632 MOZ_WINSDK_MAXVER=0x06020000
636 if test "$GCC" != "yes" -o -n "$CLANG_CC" ; then
637 MOZ_FIND_WINSDK_VERSION
640 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
641 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
642 # Require OS features provided by IE 6.0 SP2 (XP SP2)
643 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0603)
645 # If the maximum version supported by this SDK is lower than the target
647 AC_MSG_CHECKING([for Windows SDK being recent enough])
648 if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
652 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.])
655 AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
656 # Definitions matching sdkddkver.h
657 AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
658 AC_DEFINE_UNQUOTED(MOZ_WINSDK_MAXVER,$MOZ_WINSDK_MAXVER)
659 AC_SUBST(MOZ_WINSDK_MAXVER)
666 if test -n "$_WIN32_MSVC"; then
668 SKIP_COMPILER_CHECKS=1
669 SKIP_LIBRARY_CHECKS=1
671 # Since we're skipping compiler and library checks, hard-code
674 AC_DEFINE(HAVE_SETBUF)
675 AC_DEFINE(HAVE_ISATTY)
678 fi # COMPILE_ENVIRONMENT
691 AC_SUBST(WRAP_STL_INCLUDES)
692 AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
693 AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
695 dnl ========================================================
696 dnl Checks for programs.
697 dnl ========================================================
701 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
702 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
703 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
705 AC_MSG_RESULT([$_perl_version])
707 if test "$_perl_res" != 0; then
708 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
712 AC_MSG_CHECKING([for full perl installation])
713 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
715 if test "$_perl_res" != 0; then
717 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
722 if test -z "$COMPILE_ENVIRONMENT"; then
723 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
725 AC_SUBST(NSINSTALL_BIN)
727 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
728 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
729 MOZ_PATH_PROGS(UNZIP, unzip)
730 if test -z "$UNZIP" -o "$UNZIP" = ":"; then
731 AC_MSG_ERROR([unzip not found in \$PATH])
733 MOZ_PATH_PROGS(ZIP, zip)
734 if test -z "$ZIP" -o "$ZIP" = ":"; then
735 AC_MSG_ERROR([zip not found in \$PATH])
737 MOZ_PATH_PROG(XARGS, xargs)
738 if test -z "$XARGS" -o "$XARGS" = ":"; then
739 AC_MSG_ERROR([xargs not found in \$PATH .])
742 MOZ_PATH_PROG(RPMBUILD, rpmbuild, :)
745 if test "$COMPILE_ENVIRONMENT"; then
747 dnl ========================================================
748 dnl = Mac OS X toolchain support
749 dnl ========================================================
751 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
752 dnl that a universal binary is being produced and MOZ_CAN_RUN_PROGRAMS
753 dnl when we can run target binaries.
754 AC_SUBST(UNIVERSAL_BINARY)
755 AC_SUBST(MOZ_CAN_RUN_PROGRAMS)
757 MOZ_ARG_WITH_STRING(unify-dist,
758 [ --with-unify-dist=dir Location of the dist directory to unify with at packaging time (Mac OS X universal build only)],
760 if test -n "$UNIVERSAL_BINARY"; then
761 if test -z "$UNIFY_DIST"; then
762 AC_MSG_ERROR([You need to provide the --with-unify-dist=dir argument when performing a universal build])
764 case "$UNIFY_DIST" in
768 UNIFY_DIST="${MOZ_BUILD_ROOT}/${UNIFY_DIST}"
774 dnl ========================================================
775 dnl Check for MacOS deployment target version
776 dnl ========================================================
778 MOZ_ARG_ENABLE_STRING(macos-target,
779 [ --enable-macos-target=VER (default=10.6)
780 Set the minimum MacOS version needed at runtime],
781 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
785 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
786 dnl Use the specified value
787 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
789 dnl No value specified on the command line or in the environment,
790 dnl use architecture minimum.
791 export MACOSX_DEPLOYMENT_TARGET=10.6
796 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
798 dnl ========================================================
799 dnl = Mac OS X SDK support
800 dnl ========================================================
803 MOZ_ARG_WITH_STRING(macos-sdk,
804 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
805 MACOS_SDK_DIR=$withval)
807 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
808 dnl NEXT_ROOT will be set and exported only if it's needed.
809 AC_SUBST(MACOS_SDK_DIR)
812 if test "$MACOS_SDK_DIR"; then
813 dnl Sync this section with the ones in NSPR and NSS.
814 dnl Changes to the cross environment here need to be accounted for in
815 dnl the libIDL checks (below) and xpidl build.
817 if test ! -d "$MACOS_SDK_DIR"; then
818 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
819 specify a valid SDK. SDKs are installed when the optional cross-development
820 tools are selected during the Xcode/Developer Tools installation.])
823 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
824 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
826 dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER.
827 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
828 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
831 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
833 AC_TRY_COMPILE([#include <new>],[],
837 AC_MSG_RESULT($result)
839 if test "$result" = "no" ; then
840 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
844 fi # COMPILE_ENVIRONMENT
846 AC_MSG_CHECKING([compiler version])
847 # Just print it so it shows up in the logs.
848 cc_version=$($CC --version)
849 AC_MSG_RESULT([$cc_version])
851 if test -n "$MAKE"; then
852 if test `echo $MAKE | grep -c make.py` != 1; then
859 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
862 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
865 if test "$GMAKE" = ":"; then
866 AC_MSG_ERROR([GNU make not found])
870 if test -z "$MAKE"; then
874 if test "$COMPILE_ENVIRONMENT"; then
880 fi # COMPILE_ENVIRONMENT
882 dnl ========================================================
883 dnl set the defaults first
884 dnl ========================================================
900 MOZ_USER_DIR=".mozilla"
903 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/media/libjpeg)'
905 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
907 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/media/libpng)'
909 MOZ_JS_STATIC_LIBS='$(call EXPAND_LIBNAME_PATH,js_static,$(LIBXUL_DIST)/lib)'
910 MOZ_JS_SHARED_LIBS='$(call EXPAND_LIBNAME_PATH,mozjs,$(LIBXUL_DIST)/lib)'
911 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
912 XPCOM_FROZEN_LDOPTS='$(call EXPAND_LIBNAME_PATH,xul mozalloc,$(LIBXUL_DIST)/bin)'
913 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS)'
914 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
915 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
917 # These are specially defined on Windows only
920 XPCOM_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
921 XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime.$(LIB_SUFFIX)'
924 XPCOM_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_GLUE_LDOPTS
925 XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_STANDALONE_GLUE_LDOPTS
931 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
935 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
937 if test -n "$CROSS_COMPILE"; then
938 OS_TARGET="${target_os}"
939 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
941 case "${target_os}" in
942 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
943 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
945 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
946 mingw*) OS_ARCH=WINNT OS_TARGET=WINNT ;;
947 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
950 *-android*|*-linuxandroid*) OS_ARCH=Linux OS_TARGET=Android ;;
954 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
955 OS_RELEASE=`uname -r`
958 # Before this used `uname -m` when not cross compiling
959 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
960 OS_TEST="${target_cpu}"
962 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
964 #######################################################################
965 # Master "Core Components" macros for getting the OS target #
966 #######################################################################
969 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
974 # Define and override various archtecture-specific variables, including
983 case "$HOST_OS_ARCH" in
997 if test -z "$GNU_CC"; then
998 if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1003 if test -z "$GNU_CXX"; then
1004 if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1005 SOLARIS_SUNPRO_CXX=1
1008 AC_SUBST(SOLARIS_SUNPRO_CC)
1009 AC_SUBST(SOLARIS_SUNPRO_CXX)
1018 if test -z "$CROSS_COMPILE" ; then
1024 # If uname -s returns "Windows_NT", we assume that we are using
1025 # the uname.exe in MKS toolkit.
1027 # The -r option of MKS uname only returns the major version number.
1028 # So we need to use its -v option to get the minor version number.
1029 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1033 OS_MINOR_RELEASE=`uname -v`
1034 if test "$OS_MINOR_RELEASE" = "00"; then
1037 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1041 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1042 # the uname.exe in the MSYS tools.
1044 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1049 OS_RELEASE=`uname -v`.`uname -r`
1050 OS_TEST=${target_cpu}
1055 OS_RELEASE=`uname -v`
1058 case "${target_cpu}" in
1069 if test -z "$CROSS_COMPILE" ; then
1077 # Only set CPU_ARCH if we recognize the value of OS_TEST
1088 powerpc | ppc | rs6000)
1092 Alpha | alpha | ALPHA)
1125 if test -z "$OS_TARGET"; then
1128 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1130 dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64.
1131 dnl ===============================================================
1135 INTEL_ARCHITECTURE=1
1138 dnl Configure platform-specific CPU architecture compiler options.
1139 dnl ==============================================================
1142 dnl =================================================================
1143 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1144 dnl which is bad when cross compiling.
1145 dnl =================================================================
1146 if test "$COMPILE_ENVIRONMENT"; then
1147 configure_static_assert_macros='
1148 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1149 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1150 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1153 dnl test that the macros actually work:
1154 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1155 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1158 ac_cv_static_assertion_macros_work="yes"
1159 AC_TRY_COMPILE([$configure_static_assert_macros],
1160 [CONFIGURE_STATIC_ASSERT(1)],
1162 ac_cv_static_assertion_macros_work="no")
1163 AC_TRY_COMPILE([$configure_static_assert_macros],
1164 [CONFIGURE_STATIC_ASSERT(0)],
1165 ac_cv_static_assertion_macros_work="no",
1168 AC_TRY_COMPILE([$configure_static_assert_macros],
1169 [CONFIGURE_STATIC_ASSERT(1)],
1171 ac_cv_static_assertion_macros_work="no")
1172 AC_TRY_COMPILE([$configure_static_assert_macros],
1173 [CONFIGURE_STATIC_ASSERT(0)],
1174 ac_cv_static_assertion_macros_work="no",
1178 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1179 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1180 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1182 fi # COMPILE_ENVIRONMENT
1184 dnl ========================================================
1185 dnl Android libstdc++, placed here so it can use MOZ_ARCH
1187 dnl ========================================================
1191 dnl ========================================================
1192 dnl Suppress Clang Argument Warnings
1193 dnl ========================================================
1194 if test -n "$CLANG_CC"; then
1195 _WARNINGS_CFLAGS="-Qunused-arguments ${_WARNINGS_CFLAGS}"
1196 CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
1198 if test -n "$CLANG_CXX"; then
1199 _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
1202 dnl ========================================================
1203 dnl = Use Address Sanitizer
1204 dnl ========================================================
1205 MOZ_ARG_ENABLE_BOOL(address-sanitizer,
1206 [ --enable-address-sanitizer Enable Address Sanitizer (default=no)],
1209 if test -n "$MOZ_ASAN"; then
1212 MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer)
1215 AC_SUBST(LLVM_SYMBOLIZER)
1217 dnl ========================================================
1218 dnl = Enable hacks required for LLVM instrumentations
1219 dnl ========================================================
1220 MOZ_ARG_ENABLE_BOOL(llvm-hacks,
1221 [ --enable-llvm-hacks Enable workarounds required for several LLVM instrumentations (default=no)],
1224 if test -n "$MOZ_LLVM_HACKS"; then
1228 AC_SUBST(MOZ_NO_WLZDEFS)
1229 AC_SUBST(MOZ_CFLAGS_NSS)
1231 dnl ========================================================
1232 dnl GNU specific defaults
1233 dnl ========================================================
1234 if test "$GNU_CC"; then
1235 # Per bug 719659 comment 2, some of the headers on ancient build machines
1236 # may require gnu89 inline semantics. But otherwise, we use C99.
1237 # But on OS X we just use C99 plus GNU extensions, in order to fix
1239 CFLAGS="$CFLAGS -std=gnu99"
1240 if test "${OS_ARCH}" != Darwin; then
1241 CFLAGS="$CFLAGS -fgnu89-inline"
1243 # FIXME: Let us build with strict aliasing. bug 414641.
1244 CFLAGS="$CFLAGS -fno-strict-aliasing"
1245 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(notdir $@) -o $@'
1246 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(notdir $@) -o $@'
1247 DSO_LDOPTS='-shared'
1248 if test "$GCC_USE_GNU_LD"; then
1249 # Some tools like ASan use a runtime library that is only
1250 # linked against executables, so we must allow undefined
1251 # symbols for shared objects in some cases.
1252 if test -z "$MOZ_NO_WLZDEFS"; then
1253 # Don't allow undefined symbols in libraries
1254 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1257 WARNINGS_AS_ERRORS='-Werror'
1259 DSO_PIC_CFLAGS='-fPIC'
1260 ASFLAGS="$ASFLAGS -fPIC"
1261 AC_MSG_CHECKING([for --noexecstack option to as])
1262 _SAVE_CFLAGS=$CFLAGS
1263 CFLAGS="$CFLAGS -Wa,--noexecstack"
1264 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
1265 [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
1266 AC_MSG_RESULT([no]))
1267 CFLAGS=$_SAVE_CFLAGS
1268 AC_MSG_CHECKING([for -z noexecstack option to ld])
1269 _SAVE_LDFLAGS=$LDFLAGS
1270 LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
1271 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
1273 LDFLAGS=$_SAVE_LDFLAGS)
1275 AC_MSG_CHECKING([for -z text option to ld])
1276 _SAVE_LDFLAGS=$LDFLAGS
1277 LDFLAGS="$LDFLAGS -Wl,-z,text"
1278 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
1279 [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,text"],
1281 LDFLAGS=$_SAVE_LDFLAGS)
1283 AC_MSG_CHECKING([for --build-id option to ld])
1284 _SAVE_LDFLAGS=$LDFLAGS
1285 LDFLAGS="$LDFLAGS -Wl,--build-id"
1286 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
1287 [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,--build-id"],
1289 LDFLAGS=$_SAVE_LDFLAGS)
1292 # Check for -mssse3 on $CC
1293 AC_MSG_CHECKING([if toolchain supports -mssse3 option])
1294 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
1295 _SAVE_CFLAGS=$CFLAGS
1296 CFLAGS="$CFLAGS -mssse3"
1297 AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
1298 [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
1299 AC_MSG_RESULT([no]))
1300 CFLAGS=$_SAVE_CFLAGS
1302 # Check for -msse4.1 on $CC
1303 AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
1304 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
1305 _SAVE_CFLAGS=$CFLAGS
1306 CFLAGS="$CFLAGS -msse4.1"
1307 AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
1308 [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
1309 AC_MSG_RESULT([no]))
1310 CFLAGS=$_SAVE_CFLAGS
1312 # Turn on GNU-specific warnings:
1313 # -Wall - turn on a lot of warnings
1314 # -Wpointer-arith - good to have
1315 # -Wdeclaration-after-statement - MSVC doesn't like these
1316 # -Werror=return-type - catches missing returns, zero false positives
1317 # -Wtype-limits - catches overflow bugs, few false positives
1318 # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1319 # -Wsign-compare - catches comparison of signed and unsigned types
1321 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -Wpointer-arith -Wdeclaration-after-statement"
1322 MOZ_C_SUPPORTS_WARNING(-W, error=return-type, ac_c_has_werror_return_type)
1323 MOZ_C_SUPPORTS_WARNING(-W, type-limits, ac_c_has_wtype_limits)
1324 MOZ_C_SUPPORTS_WARNING(-W, empty-body, ac_c_has_wempty_body)
1325 MOZ_C_SUPPORTS_WARNING(-W, sign-compare, ac_c_has_sign_compare)
1327 # Turn off the following warnings that -Wall turns on:
1328 # -Wno-unused - lots of violations in third-party code
1330 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-unused"
1332 if test -z "$INTEL_CC" -a -z "$CLANG_CC"; then
1333 # Don't use -Wcast-align with ICC or clang
1335 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1336 hppa | ia64 | sparc | arm)
1339 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1344 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1345 _USE_CPP_INCLUDE_FLAG=1
1346 ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
1348 elif test "$SOLARIS_SUNPRO_CC"; then
1350 if test "$CPU_ARCH" = "sparc"; then
1351 # for Sun Studio on Solaris/SPARC
1352 DSO_PIC_CFLAGS='-xcode=pic32'
1354 DSO_PIC_CFLAGS='-KPIC'
1356 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1358 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
1359 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
1361 DSO_LDOPTS='-shared'
1362 if test "$GNU_LD"; then
1363 # Don't allow undefined symbols in libraries
1364 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1368 DSO_PIC_CFLAGS='-KPIC'
1369 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1372 if test "$GNU_CXX"; then
1373 # FIXME: Let us build with strict aliasing. bug 414641.
1374 CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
1376 # Turn on GNU-specific warnings:
1377 # -Wall - turn on a lot of warnings
1378 # -Wpointer-arith - good to have
1379 # -Woverloaded-virtual - ???
1380 # -Werror=return-type - catches missing returns, zero false positives
1381 # -Wtype-limits - catches overflow bugs, few false positives
1382 # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1383 # -Wsign-compare - catches comparison of signed and unsigned types
1385 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual"
1386 MOZ_CXX_SUPPORTS_WARNING(-W, error=return-type, ac_cxx_has_werror_return_type)
1387 MOZ_CXX_SUPPORTS_WARNING(-W, type-limits, ac_cxx_has_wtype_limits)
1388 MOZ_CXX_SUPPORTS_WARNING(-W, empty-body, ac_cxx_has_wempty_body)
1389 MOZ_CXX_SUPPORTS_WARNING(-W, sign-compare, ac_cxx_has_sign_compare)
1391 # Turn off the following warnings that -Wall turns on:
1392 # -Wno-invalid-offsetof - we use offsetof on non-POD types frequently
1394 MOZ_CXX_SUPPORTS_WARNING(-Wno-, invalid-offsetof, ac_cxx_has_wno_invalid_offsetof)
1396 if test -z "$INTEL_CXX" -a -z "$CLANG_CXX"; then
1397 # Don't use -Wcast-align with ICC or clang
1399 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1400 hppa | ia64 | sparc | arm)
1403 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1408 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1409 _USE_CPP_INCLUDE_FLAG=1
1411 # Recent clang and gcc support C++11 deleted functions without warnings if
1412 # compiling with -std=c++0x or -std=gnu++0x (or c++11 or gnu++11 in very new
1413 # versions). We can't use -std=c++0x yet, so gcc's support must remain
1414 # unused. But clang's warning can be disabled, so when compiling with clang
1415 # we use it to opt out of the warning, enabling (macro-encapsulated) use of
1416 # deleted function syntax.
1417 if test "$CLANG_CXX"; then
1418 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-c++0x-extensions"
1419 MOZ_CXX_SUPPORTS_WARNING(-Wno-, extended-offsetof, ac_cxx_has_wno_extended_offsetof)
1423 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1426 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1427 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1428 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1429 dnl normal behavior.
1430 dnl ========================================================
1432 MKSHLIB_UNFORCE_ALL=
1434 if test "$COMPILE_ENVIRONMENT"; then
1435 if test "$GNU_CC"; then
1436 AC_MSG_CHECKING(whether ld has archive extraction flags)
1437 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1438 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1439 ac_cv_mkshlib_force_and_unforce="no"
1440 exec 3<&0 <<LOOP_INPUT
1441 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1442 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1443 force="-Wl,-all"; unforce="-Wl,-none"
1450 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1453 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1455 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1459 eval $ac_cv_mkshlib_force_and_unforce
1460 MKSHLIB_FORCE_ALL=$force
1461 MKSHLIB_UNFORCE_ALL=$unforce
1464 fi # COMPILE_ENVIRONMENT
1466 dnl ========================================================
1467 dnl Checking for 64-bit OS
1468 dnl ========================================================
1469 if test "$COMPILE_ENVIRONMENT"; then
1472 AC_MSG_CHECKING(for 64-bit OS)
1473 AC_TRY_COMPILE([$configure_static_assert_macros],
1474 [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1475 result="yes", result="no")
1476 AC_MSG_RESULT("$result")
1477 if test "$result" = "yes"; then
1478 AC_DEFINE(HAVE_64BIT_OS)
1481 AC_SUBST(HAVE_64BIT_OS)
1483 fi # COMPILE_ENVIRONMENT
1485 dnl ========================================================
1486 dnl Enable high-memory support on OS/2 by default.
1487 dnl ========================================================
1488 MOZ_OS2_HIGH_MEMORY=1
1489 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1490 [ --disable-os2-high-mem Disable high-memory support on OS/2],
1491 MOZ_OS2_HIGH_MEMORY=,
1492 MOZ_OS2_HIGH_MEMORY=1 )
1493 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1495 dnl ========================================================
1496 dnl = Use profiling compile flags
1497 dnl ========================================================
1498 MOZ_ARG_ENABLE_BOOL(profiling,
1499 [ --enable-profiling Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1503 # For profiling builds keep the symbol information
1504 if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then
1505 case "$OS_TARGET" in
1506 Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
1507 STRIP_FLAGS="--strip-debug"
1512 dnl ========================================================
1513 dnl = Use incremental GC
1514 dnl ========================================================
1516 MOZ_ARG_DISABLE_BOOL(gcincremental,
1517 [ --disable-gcincremental Disable incremental GC],
1519 if test -n "$JSGC_INCREMENTAL"; then
1520 AC_DEFINE(JSGC_INCREMENTAL)
1523 dnl ========================================================
1524 dnl = Use generational GC
1525 dnl ========================================================
1526 MOZ_ARG_ENABLE_BOOL(gcgenerational,
1527 [ --enable-gcgenerational Enable generational GC],
1528 JSGC_GENERATIONAL=1,
1529 JSGC_GENERATIONAL= )
1530 if test -n "$JSGC_GENERATIONAL"; then
1531 AC_DEFINE(JSGC_GENERATIONAL)
1534 dnl ========================================================
1535 dnl = Perform moving GC stack rooting analysis
1536 dnl ========================================================
1537 MOZ_ARG_ENABLE_BOOL(root-analysis,
1538 [ --enable-root-analysis Enable moving GC stack root analysis],
1539 JSGC_ROOT_ANALYSIS=1,
1540 JSGC_ROOT_ANALYSIS= )
1541 if test -n "$JSGC_ROOT_ANALYSIS"; then
1542 AC_DEFINE(JSGC_ROOT_ANALYSIS)
1545 dnl ========================================================
1546 dnl = Use exact stack rooting for GC
1547 dnl ========================================================
1548 MOZ_ARG_ENABLE_BOOL(exact-rooting,
1549 [ --enable-exact-rooting Enable use of exact stack roots for GC],
1550 JSGC_USE_EXACT_ROOTING=1,
1551 JSGC_USE_EXACT_ROOTING= )
1552 if test -n "$JSGC_USE_EXACT_ROOTING"; then
1553 AC_DEFINE(JSGC_USE_EXACT_ROOTING)
1556 dnl ========================================================
1558 dnl ========================================================
1559 MOZ_ARG_ENABLE_BOOL(valgrind,
1560 [ --enable-valgrind Enable Valgrind integration hooks (default=no)],
1563 if test -n "$MOZ_VALGRIND"; then
1564 MOZ_CHECK_HEADER([valgrind/valgrind.h], [],
1566 [--enable-valgrind specified but Valgrind is not installed]))
1567 AC_DEFINE(MOZ_VALGRIND)
1569 AC_SUBST(MOZ_VALGRIND)
1571 dnl ========================================================
1573 dnl ========================================================
1574 MOZ_ARG_ENABLE_BOOL(jprof,
1575 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.],
1578 if test -n "$MOZ_JPROF"; then
1580 AC_DEFINE(MOZ_JPROF)
1583 dnl ========================================================
1585 dnl ========================================================
1586 MOZ_ENABLE_PROFILER_SPS=1
1588 case "${OS_TARGET}" in
1590 case "${CPU_ARCH}" in
1593 MOZ_ENABLE_PROFILER_SPS=
1597 case "${CPU_ARCH}" in
1600 MOZ_ENABLE_PROFILER_SPS=
1605 MOZ_ENABLE_PROFILER_SPS=
1609 if test -n "$MOZ_ENABLE_PROFILER_SPS"; then
1610 AC_DEFINE(MOZ_ENABLE_PROFILER_SPS)
1613 dnl ========================================================
1615 dnl ========================================================
1616 MOZ_ARG_ENABLE_BOOL(shark,
1617 [ --enable-shark Enable shark remote profiling. Implies --enable-profiling.],
1620 if test -n "$MOZ_SHARK"; then
1622 AC_DEFINE(MOZ_SHARK)
1625 dnl ========================================================
1627 dnl ========================================================
1628 MOZ_ARG_ENABLE_BOOL(instruments,
1629 [ --enable-instruments Enable instruments remote profiling. Implies --enable-profiling.],
1632 if test -n "$MOZ_INSTRUMENTS"; then
1634 AC_DEFINE(MOZ_INSTRUMENTS)
1637 dnl ========================================================
1639 dnl ========================================================
1640 MOZ_ARG_ENABLE_BOOL(callgrind,
1641 [ --enable-callgrind Enable callgrind profiling. Implies --enable-profiling.],
1644 if test -n "$MOZ_CALLGRIND"; then
1646 AC_DEFINE(MOZ_CALLGRIND)
1649 dnl ========================================================
1651 dnl ========================================================
1652 MOZ_ARG_ENABLE_BOOL(vtune,
1653 [ --enable-vtune Enable vtune profiling. Implies --enable-profiling.],
1656 if test -n "$MOZ_VTUNE"; then
1658 AC_DEFINE(MOZ_VTUNE)
1661 dnl ========================================================
1663 dnl ========================================================
1664 if test -n "$MOZ_PROFILING"; then
1665 AC_DEFINE(MOZ_PROFILING)
1668 dnl ========================================================
1669 dnl System overrides of the defaults for host
1670 dnl ========================================================
1673 if test -n "$_WIN32_MSVC"; then
1675 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1676 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1677 HOST_RANLIB='echo ranlib'
1679 HOST_CFLAGS="$HOST_CFLAGS -mwindows"
1681 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11 -D_CRT_SECURE_NO_WARNINGS"
1682 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1683 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1684 HOST_BIN_SUFFIX=.exe
1687 PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1691 case "${host_cpu}" in
1693 if test -n "$_WIN32_MSVC"; then
1694 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
1698 if test -n "$_WIN32_MSVC"; then
1699 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
1701 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1707 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1708 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1709 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1712 *-linux*|*-kfreebsd*-gnu|*-gnu*)
1713 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1714 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1715 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1719 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1720 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1721 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1722 HOST_BIN_SUFFIX=.exe
1727 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1728 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1732 dnl Check for using a custom <inttypes.h> implementation
1733 dnl ========================================================
1734 AC_MSG_CHECKING(for custom <inttypes.h> implementation)
1735 if test "$MOZ_CUSTOM_INTTYPES_H"; then
1736 AC_DEFINE_UNQUOTED(MOZ_CUSTOM_INTTYPES_H, "$MOZ_CUSTOM_INTTYPES_H")
1737 AC_MSG_RESULT(using $MOZ_CUSTOM_INTTYPES_H)
1739 AC_MSG_RESULT(none specified)
1742 dnl Get mozilla version from central milestone file
1743 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1744 MOZILLA_UAVERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir -uaversion`
1746 dnl Get version of various core apps from the version files.
1747 FIREFOX_VERSION=`cat $_topsrcdir/browser/config/version.txt`
1749 if test -z "$FIREFOX_VERSION"; then
1750 AC_MSG_ERROR([FIREFOX_VERSION is unexpectedly blank.])
1753 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1754 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1755 AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION")
1757 MOZ_DOING_LTO(lto_is_enabled)
1759 dnl ========================================================
1760 dnl System overrides of the defaults for target
1761 dnl ========================================================
1766 if test ! "$GNU_CC"; then
1767 if test ! "$HAVE_64BIT_OS"; then
1768 # Compiling with Visual Age C++ object model compat is the
1769 # default. To compile with object model ibm, add
1770 # AIX_OBJMODEL=ibm to .mozconfig.
1771 if test "$AIX_OBJMODEL" = "ibm"; then
1772 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1779 AC_SUBST(AIX_OBJMODEL)
1780 DSO_LDOPTS='-qmkshrobj=1'
1781 DSO_CFLAGS='-qflag=w:w'
1783 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1785 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1786 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1787 if test "$COMPILE_ENVIRONMENT"; then
1790 AC_MSG_CHECKING([for IBM XLC/C++ compiler version >= 9.0.0.7])
1792 [#if (__IBMCPP__ < 900)
1793 #error "Bad compiler"
1795 _BAD_COMPILER=,_BAD_COMPILER=1)
1796 if test -n "$_BAD_COMPILER"; then
1798 AC_MSG_ERROR([IBM XLC/C++ 9.0.0.7 or higher is required to build.])
1800 AC_MSG_RESULT([yes])
1803 TARGET_COMPILER_ABI="ibmc"
1804 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1805 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1808 case "${target_os}" in
1813 if test "$COMPILE_ENVIRONMENT"; then
1814 MOZ_CHECK_HEADERS(sys/inttypes.h)
1816 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1820 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1821 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1822 MOZ_OPTIMIZE_FLAGS="-O3"
1823 # Statically disable jemalloc on 10.5 and 32-bit 10.6. See bug 702250.
1824 if test "$HAVE_64BIT_OS"; then
1829 STRIP_FLAGS="$STRIP_FLAGS -x -S"
1830 # Check whether we're targeting OS X or iOS
1831 AC_CACHE_CHECK(for iOS target,
1833 [AC_TRY_COMPILE([#include <TargetConditionals.h>
1834 #if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
1838 ac_cv_ios_target="yes",
1839 ac_cv_ios_target="no")])
1840 if test "$ac_cv_ios_target" = "yes"; then
1842 AC_DEFINE(XP_DARWIN)
1843 _PLATFORM_DEFAULT_TOOLKIT='cairo-uikit'
1845 AC_DEFINE(XP_MACOSX)
1846 AC_DEFINE(XP_DARWIN)
1847 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1848 # The ExceptionHandling framework is needed for Objective-C exception
1849 # logging code in nsObjCExceptions.h. Currently we only use that in debug
1851 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
1853 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1856 if test "x$lto_is_enabled" = "xyes"; then
1857 echo "Skipping -dead_strip because lto is enabled."
1858 dnl DTrace and -dead_strip don't interact well. See bug 403132.
1859 dnl ===================================================================
1860 elif test "x$enable_dtrace" = "xyes"; then
1861 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1863 dnl check for the presence of the -dead_strip linker flag
1864 AC_MSG_CHECKING([for -dead_strip option to ld])
1865 _SAVE_LDFLAGS=$LDFLAGS
1866 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1867 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1868 if test -n "$_HAVE_DEAD_STRIP" ; then
1869 AC_MSG_RESULT([yes])
1870 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1875 LDFLAGS=$_SAVE_LDFLAGS
1878 dnl With newer linkers we need to pass -allow_heap_execute because of
1879 dnl Microsoft Silverlight (5.1.10411.0 at least).
1880 AC_MSG_CHECKING([for -allow_heap_execute option to ld])
1881 _SAVE_LDFLAGS=$LDFLAGS
1882 LDFLAGS="$LDFLAGS -Wl,-allow_heap_execute"
1883 AC_TRY_LINK(,[return 0;],_HAVE_ALLOW_HEAP_EXECUTE=1,
1884 _HAVE_ALLOW_HEAP_EXECUTE=)
1885 if test -n "$_HAVE_ALLOW_HEAP_EXECUTE" ; then
1886 AC_MSG_RESULT([yes])
1887 MOZ_ALLOW_HEAP_EXECUTE_FLAGS="-Wl,-allow_heap_execute"
1891 LDFLAGS=$_SAVE_LDFLAGS
1893 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1898 if test ! "$GNU_CC"; then
1902 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
1903 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
1904 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1907 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1908 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1911 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1912 AC_DEFINE(_LARGEFILE64_SOURCE)
1917 if test ! "$GNU_CC"; then
1918 DSO_LDOPTS='-b -Wl,+s'
1921 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1922 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1923 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1925 DSO_LDOPTS='-b -E +s'
1926 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1927 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1929 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
1930 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1933 *-android*|*-linuxandroid*)
1934 AC_DEFINE(NO_PW_GECOS)
1936 if test -n "$gonkdir"; then
1937 _PLATFORM_DEFAULT_TOOLKIT=cairo-gonk
1942 _PLATFORM_DEFAULT_TOOLKIT=cairo-android
1945 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1947 MOZ_GFX_OPTIMIZE_MOBILE=1
1948 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions"
1952 # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
1953 # Similarly for GNU_CXX and INTEL_CXX.
1954 if test "$INTEL_CC" -o "$INTEL_CXX"; then
1955 # -Os has been broken on Intel's C/C++ compilers for quite a
1956 # while; Intel recommends against using it.
1957 MOZ_OPTIMIZE_FLAGS="-O2"
1958 elif test "$GNU_CC" -o "$GNU_CXX"; then
1959 case $GCC_VERSION in
1961 # -Os is broken on gcc 4.5.x we need to tweak it to get good results.
1962 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
1964 MOZ_PGO_OPTIMIZE_FLAGS="-O3"
1965 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks $MOZ_OPTIMIZE_SIZE_TWEAK"
1968 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1972 case "${target_cpu}" in
1974 CFLAGS="$CFLAGS -mieee"
1975 CXXFLAGS="$CXXFLAGS -mieee"
1982 if test -z "$MC"; then
1992 # certain versions of cygwin's makedepend barf on the
1993 # #include <string> vs -I./dist/include/string issue so don't use it
1994 XPCOM_FROZEN_LDOPTS='$(call EXPAND_LIBNAME_PATH,xul mozalloc,$(LIBXUL_DIST)/lib)'
1995 if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
1997 CXX="$CXX -mwindows"
1998 CPP="$CPP -mwindows"
1999 CFLAGS="$CFLAGS -mms-bitfields"
2000 CXXFLAGS="$CXXFLAGS -mms-bitfields"
2001 DSO_LDOPTS='-shared'
2002 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2003 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2005 # Use static libgcc and libstdc++
2006 LDFLAGS="$LDFLAGS -static-libgcc -static-libstdc++"
2007 NSPR_LDFLAGS="$NSPR_LDFLAGS -static-libgcc"
2008 # Use temp file for windres (bug 213281)
2009 RCFLAGS='-O coff --use-temp-file'
2010 # mingw doesn't require kernel32, user32, and advapi32 explicitly
2011 LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32 -lnetapi32"
2014 IMPORT_LIB_SUFFIX=dll.a
2016 # We use mix of both POSIX and Win32 printf format across the tree, so format
2017 # warnings are useless on mingw.
2018 MOZ_C_SUPPORTS_WARNING(-Wno-, format, ac_c_has_wno_format)
2019 MOZ_CXX_SUPPORTS_WARNING(-Wno-, format, ac_cxx_has_wno_format)
2021 TARGET_COMPILER_ABI=msvc
2025 if test "$AS_BIN"; then
2026 AS="$(basename "$AS_BIN")"
2029 AR_FLAGS='-NOLOGO -OUT:"$@"'
2031 RANLIB='echo not_ranlib'
2032 STRIP='echo not_strip'
2043 IMPORT_LIB_SUFFIX=lib
2044 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2045 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2047 MKSHLIB_UNFORCE_ALL=
2048 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2049 _USE_CPP_INCLUDE_FLAG=1
2050 _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2051 _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2052 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2053 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2054 if test "$_CC_SUITE" -ge "12"; then
2055 dnl VS2013+ requires -FS when parallel building by make -jN.
2056 dnl If nothing, compiler sometimes causes C1041 error.
2057 CFLAGS="$CFLAGS -FS"
2058 CXXFLAGS="$CXXFLAGS -FS"
2060 # khuey says we can safely ignore MSVC warning C4251
2061 # MSVC warning C4244 (implicit type conversion may lose data) warns
2062 # and requires workarounds for perfectly valid code. Also, GCC/clang
2063 # don't warn about it by default. So for consistency/sanity, we turn
2064 # it off on MSVC, too.
2065 # MSVC warning C4345 warns of newly conformant behavior as of VS2003.
2066 # MSVC warning C4351 warns of newly conformant behavior as of VS2005.
2067 # MSVC warning C4482 warns when an enum value is refered specifing the
2068 # name of the enum itself. This behavior is allowed in C++11, and the
2069 # warning has been removed in VS2012.
2070 # MSVC warning C4800 warns when a value is implicitly cast to bool,
2071 # because this also forces narrowing to a single byte, which can be a
2072 # perf hit. But this matters so little in practice (and often we want
2073 # that behavior) that it's better to turn it off.
2074 # MSVC warning C4819 warns some UTF-8 characters (e.g. copyright sign)
2075 # on non-Western system locales even if it is in a comment.
2076 CFLAGS="$CFLAGS -wd4244 -wd4819"
2077 CXXFLAGS="$CXXFLAGS -wd4251 -wd4244 -wd4345 -wd4351 -wd4482 -wd4800 -wd4819"
2078 # make 'foo == bar;' error out
2079 CFLAGS="$CFLAGS -we4553"
2080 CXXFLAGS="$CXXFLAGS -we4553"
2081 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib netapi32.lib"
2082 MOZ_DEBUG_FLAGS='-Zi'
2083 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2084 WARNINGS_AS_ERRORS='-WX'
2085 MOZ_OPTIMIZE_FLAGS='-O1'
2087 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2088 LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT"
2089 if test -z "$DEVELOPER_OPTIONS"; then
2090 LDFLAGS="$LDFLAGS -RELEASE"
2092 dnl For profile-guided optimization
2093 PROFILE_GEN_CFLAGS="-GL"
2094 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2095 dnl XXX: PGO builds can fail with warnings treated as errors,
2096 dnl specifically "no profile data available" appears to be
2097 dnl treated as an error sometimes. This might be a consequence
2098 dnl of using WARNINGS_AS_ERRORS in some modules, combined
2099 dnl with the linker doing most of the work in the whole-program
2100 dnl optimization/PGO case. I think it's probably a compiler bug,
2101 dnl but we work around it here.
2102 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2103 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2104 dnl Probably also a compiler bug, but what can you do?
2105 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2106 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2107 dnl Minimum reqiurement of Gecko is VS2010 or later which supports
2108 dnl both SSSE3 and SSE4.1.
2109 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
2110 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
2112 AC_DEFINE(HAVE_SNPRINTF)
2117 AC_DEFINE(HW_THREADS)
2118 AC_DEFINE(STDC_HEADERS)
2119 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2120 TARGET_MD_ARCH=win32
2121 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2123 MOZ_USER_DIR="Mozilla"
2125 dnl Hardcode to win95 for now - cls
2126 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2128 dnl set NO_X11 defines here as the general check is skipped on win32
2134 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2135 if test -n "$L10NBASEDIR"; then
2136 L10NBASEDIR=`cd $L10NBASEDIR && pwd -W`
2143 if test -z "$MOZ_TOOLS"; then
2144 AC_MSG_ERROR([MOZ_TOOLS is not set])
2146 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2147 if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
2148 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2150 MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2151 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2152 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2159 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.])
2165 if test "$HAVE_64BIT_OS"; then
2166 AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2169 if test -n "$GNU_CC"; then
2170 CFLAGS="$CFLAGS -mstackrealign -fno-keep-inline-dllexport"
2171 CXXFLAGS="$CXXFLAGS -mstackrealign -fno-keep-inline-dllexport"
2172 LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup -Wl,--large-address-aware"
2174 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
2175 LDFLAGS="$LDFLAGS -SAFESEH"
2181 if test -n "$_WIN32_MSVC"; then
2182 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
2187 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2194 CFLAGS="$CFLAGS -Dunix"
2195 CXXFLAGS="$CXXFLAGS -Dunix"
2196 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2198 DSO_PIC_CFLAGS='-fPIC -DPIC'
2199 DSO_LDOPTS='-shared'
2200 BIN_FLAGS='-Wl,--export-dynamic'
2202 DSO_PIC_CFLAGS='-fPIC -DPIC'
2203 DLL_SUFFIX=".so.1.0"
2204 DSO_LDOPTS='-shared'
2206 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2207 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2208 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2209 if test "$LIBRUNPATH"; then
2210 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2212 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(notdir $@) -o $@'
2213 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(notdir $@)) -o $@'
2217 if test "$SO_VERSION"; then
2218 DLL_SUFFIX=".so.$SO_VERSION"
2220 DLL_SUFFIX=".so.1.0"
2222 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib -Wl,-rpath-link,$(if $(X11BASE),$(X11BASE),/usr/X11R6)/lib'
2224 DSO_PIC_CFLAGS='-fPIC'
2225 DSO_LDOPTS='-shared -fPIC'
2226 if test "$LIBRUNPATH"; then
2227 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2232 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2233 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2236 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2237 AC_DEFINE(TCPV40HDRS)
2243 IMPORT_LIB_SUFFIX=lib
2247 CFLAGS="$CFLAGS -Zomf"
2248 CXXFLAGS="$CXXFLAGS -Zomf"
2250 BIN_FLAGS='-Zlinker /ST:0x100000'
2254 WARNINGS_AS_ERRORS='-Werror'
2255 MOZ_DEBUG_FLAGS="-g -fno-inline"
2256 MOZ_OPTIMIZE_FLAGS="-O2"
2257 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2258 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2260 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2264 MOZ_USER_DIR="Mozilla"
2267 STRIP_FLAGS="/yua /ydd /yxd /ynl /anp /b- /cs+ /d /i- /ml1 /mr2 /mf2 /r+ /u+ /x- /zs:0 /zx /zd"
2269 if test "$MOZTOOLS"; then
2270 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2272 AC_MSG_ERROR([MOZTOOLS is not set])
2274 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2275 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2276 LDFLAGS="$LDFLAGS -Zhigh-mem"
2277 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2278 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2281 # GCC for OS/2 currently predefines these, but we don't want them
2282 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2283 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2285 AC_CACHE_CHECK(for __declspec(dllexport),
2287 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2289 ac_os2_declspec="yes",
2290 ac_os2_declspec="no")])
2291 if test "$ac_os2_declspec" != "yes"; then
2292 AC_MSG_ERROR([Compiler does not support __declspec(dllexport), install GCC-4.3.2 or newer])
2298 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2300 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2301 # libraries one level up (e.g. libnspr4.so)
2302 if test "$SOLARIS_SUNPRO_CC"; then
2303 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
2304 LIBS="-lCrun -lCstd -lc $LIBS"
2305 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2306 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
2307 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
2308 LDFLAGS="-xildoff $LDFLAGS"
2309 if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
2310 _SAVE_LDFLAGS=$LDFLAGS
2311 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2312 AC_TRY_LINK([#include <stdio.h>],
2313 [printf("Hello World\n");],
2315 [LDFLAGS=$_SAVE_LDFLAGS])
2317 MOZ_OPTIMIZE_FLAGS="-xO4"
2318 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
2319 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(notdir $@) -o $@'
2320 MKSHLIB_FORCE_ALL='-z allextract'
2321 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2328 AS='/usr/ccs/bin/as'
2329 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2331 TARGET_COMPILER_ABI="sunc"
2332 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2333 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2334 AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2338 [#if (__SUNPRO_CC < 0x590)
2341 _BAD_COMPILER=,_BAD_COMPILER=1)
2342 if test -n "$_BAD_COMPILER"; then
2344 AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2349 [#if (__SUNPRO_CC >= 0x5100)
2350 #error "Sun C++ 5.10 or above"
2352 _ABOVE_SS12U1=,_ABOVE_SS12U1=1)
2353 if test "$_ABOVE_SS12U1"; then
2355 CXXFLAGS="$CXXFLAGS -xannotate=no"
2357 AC_MSG_RESULT([$_res])
2360 LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
2362 MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
2363 MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
2364 ASFLAGS="$ASFLAGS -fPIC"
2365 DSO_LDOPTS='-shared'
2366 WARNINGS_AS_ERRORS='-Werror'
2368 _WARNINGS_CXXFLAGS=''
2369 if test "$OS_RELEASE" = "5.3"; then
2370 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2373 if test "$OS_RELEASE" = "5.5.1"; then
2374 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2379 DSO_LDOPTS='-Bdynamic'
2380 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2381 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2383 AC_DEFINE(SPRINTF_RETURNS_STRING)
2384 case "$(target_os)" in
2386 DLL_SUFFIX='.so.1.0'
2392 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2399 # Includes linux-android
2404 AC_SUBST(MOZ_LINKER)
2405 if test -n "$MOZ_LINKER"; then
2406 AC_DEFINE(MOZ_LINKER)
2409 dnl Only one oddball right now (QNX), but this gives us flexibility
2410 dnl if any other platforms need to override this in the future.
2411 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2413 dnl ========================================================
2414 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2415 dnl by now will not have any way to link most binaries (tests
2416 dnl as well as viewer, apprunner, etc.), because some symbols
2417 dnl will be left out of the "composite" .so's by ld as unneeded.
2418 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2419 dnl they can link in the static libs that provide the missing
2421 dnl ========================================================
2422 NO_LD_ARCHIVE_FLAGS=
2423 if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
2424 NO_LD_ARCHIVE_FLAGS=1
2428 NO_LD_ARCHIVE_FLAGS=
2431 NO_LD_ARCHIVE_FLAGS=
2434 if test -z "$GNU_CC"; then
2435 NO_LD_ARCHIVE_FLAGS=
2439 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2441 dnl ========================================================
2442 dnl = Flags to strip unused symbols from .so components and
2443 dnl = to export jemalloc symbols when linking a program
2444 dnl ========================================================
2446 *-linux*|*-kfreebsd*-gnu|*-gnu*)
2447 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2450 if test -z "$GNU_CC"; then
2451 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2453 if test -z "$GCC_USE_GNU_LD"; then
2454 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2456 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2461 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2464 if test -n "$GNU_CC"; then
2465 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2470 if test -z "$COMPILE_ENVIRONMENT"; then
2471 SKIP_COMPILER_CHECKS=1
2472 SKIP_LIBRARY_CHECKS=1
2476 if test -z "$SKIP_COMPILER_CHECKS"; then
2477 dnl Checks for typedefs, structures, and compiler characteristics.
2478 dnl ========================================================
2487 AC_MSG_CHECKING(for ssize_t)
2488 AC_CACHE_VAL(ac_cv_type_ssize_t,
2489 [AC_TRY_COMPILE([#include <stdio.h>
2490 #include <sys/types.h>],
2492 [ac_cv_type_ssize_t=true],
2493 [ac_cv_type_ssize_t=false])])
2494 if test "$ac_cv_type_ssize_t" = true ; then
2495 AC_DEFINE(HAVE_SSIZE_T)
2500 AC_STRUCT_ST_BLKSIZE
2501 AC_MSG_CHECKING(for siginfo_t)
2502 AC_CACHE_VAL(ac_cv_siginfo_t,
2503 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2504 #include <signal.h>],
2506 [ac_cv_siginfo_t=true],
2507 [ac_cv_siginfo_t=false])])
2508 if test "$ac_cv_siginfo_t" = true ; then
2509 AC_DEFINE(HAVE_SIGINFO_T)
2521 dnl Check for .hidden assembler directive and visibility attribute.
2522 dnl Borrowed from glibc configure.in
2523 dnl ===============================================================
2524 if test "$GNU_CC"; then
2525 AC_CACHE_CHECK(for visibility(hidden) attribute,
2526 ac_cv_visibility_hidden,
2527 [cat > conftest.c <<EOF
2528 int foo __attribute__ ((visibility ("hidden"))) = 1;
2530 ac_cv_visibility_hidden=no
2531 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2532 if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2533 ac_cv_visibility_hidden=yes
2538 if test "$ac_cv_visibility_hidden" = "yes"; then
2539 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2541 AC_CACHE_CHECK(for visibility(default) attribute,
2542 ac_cv_visibility_default,
2543 [cat > conftest.c <<EOF
2544 int foo __attribute__ ((visibility ("default"))) = 1;
2546 ac_cv_visibility_default=no
2547 if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2548 if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2549 ac_cv_visibility_default=yes
2554 if test "$ac_cv_visibility_default" = "yes"; then
2555 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2557 AC_CACHE_CHECK(for visibility pragma support,
2558 ac_cv_visibility_pragma,
2559 [cat > conftest.c <<EOF
2560 #pragma GCC visibility push(hidden)
2562 #pragma GCC visibility push(default)
2563 int foo_default = 1;
2565 ac_cv_visibility_pragma=no
2566 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2567 if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2568 if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2569 ac_cv_visibility_pragma=yes
2575 if test "$ac_cv_visibility_pragma" = "yes"; then
2576 AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2577 ac_cv_have_visibility_class_bug,
2578 [cat > conftest.c <<EOF
2579 #pragma GCC visibility push(hidden)
2580 struct __attribute__ ((visibility ("default"))) TestStruct {
2583 __attribute__ ((visibility ("default"))) void TestFunc() {
2587 ac_cv_have_visibility_class_bug=no
2588 if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2589 ac_cv_have_visibility_class_bug=yes
2591 if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2592 ac_cv_have_visibility_class_bug=yes
2595 rm -rf conftest.{c,S}
2598 AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2599 ac_cv_have_visibility_builtin_bug,
2600 [cat > conftest.c <<EOF
2601 #pragma GCC visibility push(hidden)
2602 #pragma GCC visibility push(default)
2604 #pragma GCC visibility pop
2606 __attribute__ ((visibility ("default"))) void Func() {
2608 memset(c, 0, sizeof(c));
2611 ac_cv_have_visibility_builtin_bug=no
2612 if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2613 ac_cv_have_visibility_builtin_bug=yes
2615 if test `grep -c "@PLT" conftest.S` = 0; then
2616 ac_cv_visibility_builtin_bug=yes
2619 rm -f conftest.{c,S}
2621 if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2622 "$ac_cv_have_visibility_class_bug" = "no"; then
2623 VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2624 WRAP_SYSTEM_INCLUDES=1
2625 STL_FLAGS='-I$(DIST)/stl_wrappers'
2628 VISIBILITY_FLAGS='-fvisibility=hidden'
2629 fi # have visibility pragma bug
2630 fi # have visibility pragma
2631 fi # have visibility(default) attribute
2632 fi # have visibility(hidden) attribute
2635 # visibility hidden flag for Sun Studio on Solaris
2636 if test "$SOLARIS_SUNPRO_CC"; then
2637 VISIBILITY_FLAGS='-xldscope=hidden'
2638 fi # Sun Studio on Solaris
2640 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2641 AC_SUBST(VISIBILITY_FLAGS)
2645 if test "$OS_TARGET" != WINNT; then
2646 # Only run this test with clang on non-Windows platforms, because clang
2647 # cannot do enough code gen for now to make this test work correctly.
2651 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
2652 dnl ========================================================
2653 if test "$GNU_CC"; then
2654 CFLAGS_save="${CFLAGS}"
2655 CFLAGS="${CFLAGS} -Werror"
2656 AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
2657 ac_cv_force_align_arg_pointer,
2658 [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
2660 ac_cv_force_align_arg_pointer="yes",
2661 ac_cv_force_align_arg_pointer="no")])
2662 CFLAGS="${CFLAGS_save}"
2663 if test "$ac_cv_force_align_arg_pointer" = "yes"; then
2664 HAVE_GCC_ALIGN_ARG_POINTER=1
2666 HAVE_GCC_ALIGN_ARG_POINTER=
2669 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
2671 dnl Checks for header files.
2672 dnl ========================================================
2674 case "$target_os" in
2676 # for stuff like -lXshm
2677 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2680 MOZ_CHECK_COMMON_HEADERS
2682 dnl These are all the places some variant of statfs can be hiding.
2683 MOZ_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2686 MOZ_CHECK_HEADERS(sys/quota.h sys/sysmacros.h)
2687 MOZ_CHECK_HEADERS([linux/quota.h],,,[#include <sys/socket.h>])
2689 dnl SCTP support - needs various network include headers
2690 MOZ_CHECK_HEADERS([linux/if_addr.h linux/rtnetlink.h],,,[#include <sys/socket.h>])
2692 MOZ_CHECK_HEADERS(sys/types.h netinet/in.h byteswap.h)
2694 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
2695 AC_CACHE_CHECK(for sockaddr_in.sin_len,
2696 ac_cv_sockaddr_in_sin_len,
2697 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2698 #include <sys/types.h>
2700 #include <netinet/in.h>
2701 struct sockaddr_in x;
2702 void *foo = (void*) &x.sin_len;],
2704 [ac_cv_sockaddr_in_sin_len=true],
2705 [ac_cv_sockaddr_in_sin_len=false])])
2706 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
2707 AC_DEFINE(HAVE_SIN_LEN)
2708 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
2709 AC_DEFINE(HAVE_SCONN_LEN)
2712 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
2713 ac_cv_sockaddr_in6_sin6_len,
2714 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2715 #include <sys/types.h>
2717 #include <netinet/in.h>
2718 struct sockaddr_in6 x;
2719 void *foo = (void*) &x.sin6_len;],
2721 [ac_cv_sockaddr_in6_sin6_len=true],
2722 [ac_cv_sockaddr_in6_sin6_len=false])])
2723 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
2724 AC_DEFINE(HAVE_SIN6_LEN)
2727 AC_CACHE_CHECK(for sockaddr.sa_len,
2728 ac_cv_sockaddr_sa_len,
2729 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2730 #include <sys/types.h>
2732 #include <sys/socket.h>
2734 void *foo = (void*) &x.sa_len;],
2736 [ac_cv_sockaddr_sa_len=true],
2737 [ac_cv_sockaddr_sa_len=false])])
2738 if test "$ac_cv_sockaddr_sa_len" = true ; then
2739 AC_DEFINE(HAVE_SA_LEN)
2742 AC_ARG_ENABLE(dtrace,
2743 [ --enable-dtrace build with dtrace support if available (default=no)],
2744 [enable_dtrace="yes"],)
2745 if test "x$enable_dtrace" = "xyes"; then
2746 MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
2747 if test -n "$HAVE_DTRACE"; then
2748 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
2750 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
2753 AC_SUBST(HAVE_DTRACE)
2759 MOZ_CHECK_HEADERS(sys/cdefs.h)
2763 MOZ_LINUX_PERF_EVENT
2765 dnl Checks for libraries.
2766 dnl ========================================================
2771 AC_CHECK_LIB(c_r, gethostbyname_r)
2775 dnl We don't want to link with libdl even if it's present on OS X, since
2776 dnl it's not used and not part of the default installation. OS/2 has dlfcn
2778 dnl We don't want to link against libm or libpthread on Darwin since
2779 dnl they both are just symlinks to libSystem and explicitly linking
2780 dnl against libSystem causes issues when debugging (see bug 299601).
2787 AC_SEARCH_LIBS(dlopen, dl,
2788 MOZ_CHECK_HEADER(dlfcn.h,
2789 AC_DEFINE(HAVE_DLOPEN)))
2793 _SAVE_CFLAGS="$CFLAGS"
2794 CFLAGS="$CFLAGS -D_GNU_SOURCE"
2795 AC_CHECK_FUNCS(dladdr memmem)
2796 CFLAGS="$_SAVE_CFLAGS"
2798 if test ! "$GNU_CXX"; then
2802 AC_CHECK_LIB(C_r, demangle)
2805 AC_CHECK_LIB(C, demangle)
2810 dnl OS/2 has socket in libc.
2815 AC_CHECK_LIB(socket, socket)
2819 XLIBS="$X_EXTRA_LIBS"
2821 dnl ========================================================
2822 dnl Checks for X libraries.
2823 dnl Ordering is important.
2824 dnl Xt is dependent upon SM as of X11R6
2825 dnl ========================================================
2826 if test "$no_x" = "yes"; then
2829 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
2830 XLIBS="-lX11 $XLIBS"
2831 _SAVE_LDFLAGS="$LDFLAGS"
2832 LDFLAGS="$XLDFLAGS $LDFLAGS"
2833 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
2834 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
2835 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
2836 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
2838 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
2839 unset ac_cv_lib_Xt_XtFree
2840 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
2841 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
2842 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
2843 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
2846 # AIX needs the motif library linked before libXt to prevent
2847 # crashes in plugins linked against Motif - Bug #98892
2848 case "${target_os}" in
2850 XT_LIBS="-lXm $XT_LIBS"
2854 dnl ========================================================
2855 dnl = Check for XShm
2856 dnl ========================================================
2857 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
2860 dnl ========================================================
2862 dnl ========================================================
2863 MOZ_CHECK_HEADER(X11/extensions/scrnsaver.h,
2864 AC_CHECK_LIB(Xss, XScreenSaverQueryInfo,
2865 [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS"
2866 AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS))
2868 LDFLAGS="$_SAVE_LDFLAGS"
2878 dnl ========================================================
2879 dnl = pthread support
2880 dnl = Start by checking whether the system support pthreads
2881 dnl ========================================================
2882 case "$target_os" in
2887 MOZ_CHECK_PTHREADS(pthreads,
2888 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
2889 MOZ_CHECK_PTHREADS(pthread,
2890 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
2891 MOZ_CHECK_PTHREADS(c_r,
2892 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
2893 MOZ_CHECK_PTHREADS(c,
2902 dnl ========================================================
2903 dnl Check the command line for --with-pthreads
2904 dnl ========================================================
2905 MOZ_ARG_WITH_BOOL(pthreads,
2906 [ --with-pthreads Force use of system pthread library with NSPR ],
2907 [ if test "$MOZ_USE_PTHREADS"x = x; then
2908 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
2914 dnl ========================================================
2915 dnl Do the platform specific pthread hackery
2916 dnl ========================================================
2917 if test "$MOZ_USE_PTHREADS"x != x
2920 dnl See if -pthread is supported.
2923 ac_cv_have_dash_pthread=no
2924 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
2925 echo 'int main() { return 0; }' | cat > conftest.c
2926 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
2927 if test $? -eq 0; then
2928 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2929 ac_cv_have_dash_pthread=yes
2930 case "$target_os" in
2932 # Freebsd doesn't use -pthread for compiles, it uses them for linking
2935 CFLAGS="$CFLAGS -pthread"
2936 CXXFLAGS="$CXXFLAGS -pthread"
2942 AC_MSG_RESULT($ac_cv_have_dash_pthread)
2945 dnl See if -pthreads is supported.
2947 ac_cv_have_dash_pthreads=no
2948 if test "$ac_cv_have_dash_pthread" = "no"; then
2949 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
2950 echo 'int main() { return 0; }' | cat > conftest.c
2951 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
2952 if test $? -eq 0; then
2953 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2954 ac_cv_have_dash_pthreads=yes
2955 CFLAGS="$CFLAGS -pthreads"
2956 CXXFLAGS="$CXXFLAGS -pthreads"
2960 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
2965 AC_DEFINE(_REENTRANT)
2966 AC_DEFINE(_THREAD_SAFE)
2967 dnl -pthread links in -lpthread, so don't specify it explicitly.
2968 if test "$ac_cv_have_dash_pthread" = "yes"; then
2969 _PTHREAD_LDFLAGS="-pthread"
2973 *-*-openbsd*|*-*-bsdi*)
2974 AC_DEFINE(_REENTRANT)
2975 AC_DEFINE(_THREAD_SAFE)
2976 dnl -pthread links in -lc_r, so don't specify it explicitly.
2977 if test "$ac_cv_have_dash_pthread" = "yes"; then
2978 _PTHREAD_LDFLAGS="-pthread"
2982 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
2983 AC_DEFINE(_REENTRANT)
2987 AC_DEFINE(_REENTRANT)
2991 AC_DEFINE(_REENTRANT)
2995 AC_DEFINE(_REENTRANT)
2996 if test "$SOLARIS_SUNPRO_CC"; then
2997 CFLAGS="$CFLAGS -mt"
2998 CXXFLAGS="$CXXFLAGS -mt"
3002 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3003 AC_SUBST(MOZ_USE_PTHREADS)
3007 dnl Checks for library functions.
3008 dnl ========================================================
3009 AC_PROG_GCC_TRADITIONAL
3011 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf memmove stat64 lstat64 truncate64 setbuf isatty)
3012 AC_CHECK_FUNCS(statvfs64 statvfs statfs64 statfs)
3013 AC_CHECK_FUNCS(flockfile getpagesize)
3014 AC_CHECK_FUNCS(localtime_r strtok_r)
3016 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
3017 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
3018 ac_cv_clock_monotonic,
3019 [for libs in "" -lrt; do
3022 AC_TRY_LINK([#include <time.h>],
3023 [ struct timespec ts;
3024 clock_gettime(CLOCK_MONOTONIC, &ts); ],
3025 ac_cv_clock_monotonic=$libs
3028 ac_cv_clock_monotonic=no)
3031 if test "$ac_cv_clock_monotonic" != "no"; then
3032 HAVE_CLOCK_MONOTONIC=1
3033 REALTIME_LIBS=$ac_cv_clock_monotonic
3034 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
3035 AC_SUBST(HAVE_CLOCK_MONOTONIC)
3036 AC_SUBST(REALTIME_LIBS)
3039 dnl check for wcrtomb/mbrtowc
3040 dnl =======================================================================
3041 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3044 AC_CACHE_CHECK(for wcrtomb,
3046 [AC_TRY_LINK([#include <wchar.h>],
3047 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3048 ac_cv_have_wcrtomb="yes",
3049 ac_cv_have_wcrtomb="no")])
3050 if test "$ac_cv_have_wcrtomb" = "yes"; then
3051 AC_DEFINE(HAVE_WCRTOMB)
3053 AC_CACHE_CHECK(for mbrtowc,
3055 [AC_TRY_LINK([#include <wchar.h>],
3056 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3057 ac_cv_have_mbrtowc="yes",
3058 ac_cv_have_mbrtowc="no")])
3059 if test "$ac_cv_have_mbrtowc" = "yes"; then
3060 AC_DEFINE(HAVE_MBRTOWC)
3067 ac_cv_func_res_ninit,
3070 #define _BSD_SOURCE 1
3074 [int foo = res_ninit(&_res);],
3075 [ac_cv_func_res_ninit=yes],
3076 [ac_cv_func_res_ninit=no])
3079 if test "$ac_cv_func_res_ninit" = "yes"; then
3080 AC_DEFINE(HAVE_RES_NINIT)
3081 dnl must add the link line we do something as foolish as this... dougt
3083 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3084 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3090 darwin*|mingw*|os2*)
3094 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3095 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3096 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3098 LIBS="$LIBS $_ICONV_LIBS"
3107 iconv_t h = iconv_open("", "");
3108 iconv(h, NULL, NULL, NULL, NULL);
3111 [ac_cv_func_iconv=yes],
3112 [ac_cv_func_iconv=no]
3115 if test "$ac_cv_func_iconv" = "yes"; then
3116 AC_DEFINE(HAVE_ICONV)
3117 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3118 LIBICONV="$_ICONV_LIBS"
3120 [for iconv() with const input],
3121 ac_cv_func_const_iconv,
3127 const char *input = "testing";
3128 iconv_t h = iconv_open("", "");
3129 iconv(h, &input, NULL, NULL, NULL);
3132 [ac_cv_func_const_iconv=yes],
3133 [ac_cv_func_const_iconv=no]
3136 if test "$ac_cv_func_const_iconv" = "yes"; then
3137 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3149 dnl **********************
3150 dnl *** va_copy checks ***
3151 dnl **********************
3152 dnl we currently check for all three va_copy possibilities, so we get
3153 dnl all results in config.log for bug reports.
3154 AC_MSG_CHECKING(for an implementation of va_copy())
3155 AC_CACHE_VAL(ac_cv_va_copy,[
3158 void f (int i, ...) {
3159 va_list args1, args2;
3160 va_start (args1, i);
3161 va_copy (args2, args1);
3162 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3164 va_end (args1); va_end (args2);
3166 int main() { f (0, 42); return 0; }],
3172 AC_MSG_RESULT($ac_cv_va_copy)
3173 AC_MSG_CHECKING(for an implementation of __va_copy())
3174 AC_CACHE_VAL(ac_cv___va_copy,[
3177 void f (int i, ...) {
3178 va_list args1, args2;
3179 va_start (args1, i);
3180 __va_copy (args2, args1);
3181 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3183 va_end (args1); va_end (args2);
3185 int main() { f (0, 42); return 0; }],
3186 ac_cv___va_copy=yes,
3191 AC_MSG_RESULT($ac_cv___va_copy)
3192 AC_MSG_CHECKING(whether va_lists can be copied by value)
3193 AC_CACHE_VAL(ac_cv_va_val_copy,[
3196 void f (int i, ...) {
3197 va_list args1, args2;
3198 va_start (args1, i);
3200 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3202 va_end (args1); va_end (args2);
3204 int main() { f (0, 42); return 0; }],
3205 ac_cv_va_val_copy=yes,
3206 ac_cv_va_val_copy=no,
3207 ac_cv_va_val_copy=yes
3210 if test "x$ac_cv_va_copy" = "xyes"; then
3211 AC_DEFINE(VA_COPY, va_copy)
3212 AC_DEFINE(HAVE_VA_COPY)
3213 elif test "x$ac_cv___va_copy" = "xyes"; then
3214 AC_DEFINE(VA_COPY, __va_copy)
3215 AC_DEFINE(HAVE_VA_COPY)
3218 if test "x$ac_cv_va_val_copy" = "xno"; then
3219 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3221 AC_MSG_RESULT($ac_cv_va_val_copy)
3223 dnl ===================================================================
3224 dnl ========================================================
3225 dnl Put your C++ language/feature checks below
3226 dnl ========================================================
3230 if test "$GNU_CC"; then
3231 if test "$CPU_ARCH" = "arm" ; then
3232 AC_CACHE_CHECK(for ARM EABI,
3236 #if defined(__ARM_EABI__)
3239 #error Not ARM EABI.
3242 ac_cv_gcc_arm_eabi="yes",
3243 ac_cv_gcc_arm_eabi="no")])
3244 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
3246 ARM_ABI_PREFIX=eabi-
3248 ARM_ABI_PREFIX=oabi-
3252 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
3255 dnl Check to see if we can resolve ambiguity with |using|.
3256 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3257 ac_cv_cpp_ambiguity_resolving_using,
3258 [AC_TRY_COMPILE(class X {
3259 public: int go(const X&) {return 3;}
3260 int jo(const X&) {return 3;}
3262 class Y : public X {
3263 public: int go(int) {return 2;}
3264 int jo(int) {return 2;}
3266 private: using X::go;
3269 ac_cv_cpp_ambiguity_resolving_using=yes,
3270 ac_cv_cpp_ambiguity_resolving_using=no)])
3271 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3272 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3275 dnl See if a dynamic_cast to void* gives the most derived object.
3276 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3277 ac_cv_cpp_dynamic_cast_void_ptr,
3278 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3279 class Y { int j; public: virtual ~Y() { } };
3280 class Z : public X, public Y { int k; };
3286 return !((((void*)&mdo != (void*)subx) &&
3287 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3288 (((void*)&mdo != (void*)suby) &&
3289 ((void*)&mdo == dynamic_cast<void*>(suby))));
3291 ac_cv_cpp_dynamic_cast_void_ptr=yes,
3292 ac_cv_cpp_dynamic_cast_void_ptr=no,
3293 ac_cv_cpp_dynamic_cast_void_ptr=no)])
3294 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3295 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3299 dnl note that this one is reversed - if the test fails, then
3300 dnl we require implementations of unused virtual methods. Which
3301 dnl really blows because it means we'll have useless vtable
3303 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3304 ac_cv_cpp_unused_required,
3305 [AC_TRY_LINK(class X {private: virtual void never_called();};,
3307 ac_cv_cpp_unused_required=no,
3308 ac_cv_cpp_unused_required=yes)])
3309 if test "$ac_cv_cpp_unused_required" = yes ; then
3310 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3314 dnl Some compilers have trouble comparing a constant reference to a templatized
3315 dnl class to zero, and require an explicit operator==() to be defined that takes
3316 dnl an int. This test separates the strong from the weak.
3318 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3319 ac_cv_trouble_comparing_to_zero,
3320 [AC_TRY_COMPILE([#include <algorithm>
3321 template <class T> class Foo {};
3323 template <class T> int operator==(const T2*, const T&) { return 0; }
3324 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3325 [Foo<int> f; return (0 != f);],
3326 ac_cv_trouble_comparing_to_zero=no,
3327 ac_cv_trouble_comparing_to_zero=yes)])
3328 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3329 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3332 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
3333 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
3334 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
3336 _SAVE_LDFLAGS=$LDFLAGS
3337 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
3338 AC_CACHE_CHECK(for __thread keyword for TLS variables,
3339 ac_cv_thread_keyword,
3340 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
3341 [return tlsIsMainThread;],
3342 ac_cv_thread_keyword=yes,
3343 ac_cv_thread_keyword=no)])
3344 LDFLAGS=$_SAVE_LDFLAGS
3345 # The custom dynamic linker doesn't support TLS variables
3347 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
3348 # mips builds fail with TLS variables because of a binutils bug.
3350 # OpenBSD doesn't have TLS support, and the test succeeds with clang++
3355 *-android*|*-linuxandroid*)
3362 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
3368 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
3369 if test -n "$MOZ_LINKER"; then
3370 if test "$CPU_ARCH" = arm; then
3371 dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
3372 if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
3373 LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
3374 _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
3379 dnl The custom linker doesn't support text relocations, but NDK >= r6b
3380 dnl creates some (http://code.google.com/p/android/issues/detail?id=23203)
3381 dnl We however want to avoid these text relocations, and this can be done
3382 dnl by making gcc not link crtbegin and crtend. In the broken NDKs, crtend
3383 dnl doesn't contain anything at all, beside placeholders for some sections,
3384 dnl and crtbegin only contains a finalizer function that calls
3385 dnl __cxa_finalize. The custom linker actually takes care of calling
3386 dnl __cxa_finalize when the library doesn't call it itself, which makes it
3387 dnl safe not to link crtbegin. Besides, previous versions of the NDK didn't
3388 dnl link crtbegin and crtend at all.
3389 if test -n "$MOZ_LINKER" -a "$OS_TARGET" = "Android"; then
3390 AC_CACHE_CHECK([whether the CRT objects have text relocations],
3391 ac_cv_crt_has_text_relocations,
3392 [echo 'int foo() { return 0; }' > conftest.cpp
3393 if AC_TRY_COMMAND(${CXX-g++} -o conftest${DLL_SUFFIX} $CXXFLAGS $DSO_LDOPTS $LDFLAGS conftest.cpp $LIBS 1>&5) &&
3394 test -s conftest${DLL_SUFFIX}; then
3395 if ${TOOLCHAIN_PREFIX}readelf -d conftest${DLL_SUFFIX} | grep TEXTREL > /dev/null; then
3396 ac_cv_crt_has_text_relocations=yes
3398 ac_cv_crt_has_text_relocations=no
3401 AC_ERROR([couldn't compile a simple C file])
3404 if test "$ac_cv_crt_has_text_relocations" = yes; then
3405 dnl While we want libraries to skip the CRT files, we don't want
3406 dnl executables to be treated the same way. We thus set the flag
3407 dnl in DSO_LDOPTS and not LDFLAGS. However, to pass it to nspr,
3408 dnl we need to use LDFLAGS because nspr doesn't inherit DSO_LDOPTS.
3409 dnl Using LDFLAGS in nspr is safe, since we only really build
3410 dnl libraries there.
3411 DSO_LDOPTS="$DSO_LDOPTS -nostartfiles"
3412 NSPR_LDFLAGS="$NSPR_LDFLAGS -nostartfiles"
3416 dnl Check for the existence of various allocation headers/functions
3418 MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h"
3421 for file in $MALLOC_HEADERS; do
3422 MOZ_CHECK_HEADER($file, [MALLOC_H=$file])
3423 if test "$MALLOC_H" != ""; then
3424 AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
3429 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
3431 AC_CHECK_FUNCS(malloc_usable_size)
3433 dnl See if compiler supports some gcc-style attributes
3435 AC_CACHE_CHECK(for __attribute__((always_inline)),
3436 ac_cv_attribute_always_inline,
3437 [AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));],
3439 ac_cv_attribute_always_inline=yes,
3440 ac_cv_attribute_always_inline=no)])
3442 AC_CACHE_CHECK(for __attribute__((malloc)),
3443 ac_cv_attribute_malloc,
3444 [AC_TRY_COMPILE([void* f(int) __attribute__((malloc));],
3446 ac_cv_attribute_malloc=yes,
3447 ac_cv_attribute_malloc=no)])
3449 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
3450 ac_cv_attribute_warn_unused,
3451 [AC_TRY_COMPILE([int f(void) __attribute__((warn_unused_result));],
3453 ac_cv_attribute_warn_unused=yes,
3454 ac_cv_attribute_warn_unused=no)])
3456 dnl End of C++ language/feature checks
3459 dnl ========================================================
3460 dnl = Internationalization checks
3461 dnl ========================================================
3463 dnl Internationalization and Locale support is different
3464 dnl on various UNIX platforms. Checks for specific i18n
3465 dnl features go here.
3467 dnl check for LC_MESSAGES
3468 AC_CACHE_CHECK(for LC_MESSAGES,
3469 ac_cv_i18n_lc_messages,
3470 [AC_TRY_COMPILE([#include <locale.h>],
3471 [int category = LC_MESSAGES;],
3472 ac_cv_i18n_lc_messages=yes,
3473 ac_cv_i18n_lc_messages=no)])
3474 if test "$ac_cv_i18n_lc_messages" = yes; then
3475 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3478 AC_HAVE_FUNCS(localeconv)
3479 fi # ! SKIP_COMPILER_CHECKS
3482 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3483 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3486 dnl Mozilla specific options
3487 dnl ========================================================
3488 dnl The macros used for command line options
3489 dnl are defined in build/autoconf/altoptions.m4.
3491 dnl If the compiler supports these attributes, define them as
3492 dnl convenience macros.
3493 if test "$ac_cv_attribute_malloc" = yes ; then
3494 AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
3496 AC_DEFINE(NS_ATTR_MALLOC,)
3499 if test "$ac_cv_attribute_warn_unused" = yes ; then
3500 AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
3502 AC_DEFINE(NS_WARN_UNUSED_RESULT,)
3505 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
3506 dnl features that Windows actually does support.
3508 if test -n "$SKIP_COMPILER_CHECKS"; then
3509 dnl Windows has malloc.h
3510 AC_DEFINE(MALLOC_H, [<malloc.h>])
3511 AC_DEFINE(HAVE_FORCEINLINE)
3512 AC_DEFINE(HAVE_LOCALECONV)
3513 fi # SKIP_COMPILER_CHECKS
3515 dnl ========================================================
3517 dnl = Check for external package dependencies
3519 dnl ========================================================
3520 MOZ_ARG_HEADER(External Packages)
3522 MOZ_ARG_WITH_STRING(libxul-sdk,
3523 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
3524 LIBXUL_SDK_DIR=$withval)
3526 if test "$LIBXUL_SDK_DIR" = "yes"; then
3527 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
3528 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
3529 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
3531 if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
3532 AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
3536 AC_SUBST(LIBXUL_SDK)
3538 if test -n "$LIBXUL_SDK"; then
3539 LIBXUL_DIST="$LIBXUL_SDK"
3541 LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
3543 AC_SUBST(LIBXUL_DIST)
3547 MOZ_ARG_WITH_BOOL(system-libxul,
3548 [ --with-system-libxul Use system installed libxul SDK],
3551 dnl ========================================================
3552 dnl = If NSPR was not detected in the system,
3553 dnl = use the one in the source tree (mozilla/nsprpub)
3554 dnl ========================================================
3555 MOZ_ARG_WITH_BOOL(system-nspr,
3556 [ --with-system-nspr Use system installed NSPR],
3557 _USE_SYSTEM_NSPR=1 )
3559 if test -n "$_USE_SYSTEM_NSPR"; then
3560 AM_PATH_NSPR(4.9.6, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([your don't have NSPR installed or your version is too old])])
3563 if test -n "$MOZ_NATIVE_NSPR"; then
3564 _SAVE_CFLAGS=$CFLAGS
3565 CFLAGS="$CFLAGS $NSPR_CFLAGS"
3566 AC_TRY_COMPILE([#include "prtypes.h"],
3567 [#ifndef PR_STATIC_ASSERT
3568 #error PR_STATIC_ASSERT not defined or requires including prtypes.h
3570 [MOZ_NATIVE_NSPR=1],
3571 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
3572 AC_TRY_COMPILE([#include "prtypes.h"],
3574 #error PR_UINT64 not defined or requires including prtypes.h
3576 [MOZ_NATIVE_NSPR=1],
3577 AC_MSG_ERROR([system NSPR does not support PR_UINT64 or including prtypes.h does not provide it]))
3578 CFLAGS=$_SAVE_CFLAGS
3580 if test -z "$LIBXUL_SDK"; then
3581 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
3582 if test -n "$GNU_CC"; then
3583 NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
3585 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
3588 NSPR_CFLAGS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --includedir="${LIBXUL_DIST}/include/nspr" --cflags`
3589 NSPR_LIBS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --libdir="${LIBXUL_DIST}"/lib --libs`
3593 dnl set GRE_MILESTONE
3594 dnl ========================================================
3595 if test -n "$LIBXUL_SDK"; then
3596 GRE_MILESTONE=`$PYTHON "$_topsrcdir"/config/printconfigsetting.py "$LIBXUL_DIST"/bin/platform.ini Build Milestone`
3598 GRE_MILESTONE=`tail -n 1 "$_topsrcdir"/config/milestone.txt 2>/dev/null || tail -1 "$_topsrcdir"/config/milestone.txt`
3600 AC_SUBST(GRE_MILESTONE)
3602 # set RELEASE_BUILD and NIGHTLY_BUILD variables depending on the cycle we're in
3603 # The logic works like this:
3604 # - if we have "a1" in GRE_MILESTONE, we're building Nightly (define NIGHTLY_BUILD)
3605 # - otherwise, if we have "a" in GRE_MILESTONE, we're building Nightly or Aurora
3606 # - otherwise, we're building Release/Beta (define RELEASE_BUILD)
3607 case "$GRE_MILESTONE" in
3610 AC_DEFINE(NIGHTLY_BUILD)
3616 AC_DEFINE(RELEASE_BUILD)
3619 AC_SUBST(NIGHTLY_BUILD)
3620 AC_SUBST(RELEASE_BUILD)
3622 dnl system libevent Support
3623 dnl ========================================================
3624 MOZ_ARG_WITH_STRING(system-libevent,
3625 [ --with-system-libevent[=PFX]
3626 Use system libevent [installed at prefix PFX]],
3627 LIBEVENT_DIR=$withval)
3629 _SAVE_CFLAGS=$CFLAGS
3630 _SAVE_LDFLAGS=$LDFLAGS
3632 if test "$LIBEVENT_DIR" = yes; then
3633 PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
3634 MOZ_NATIVE_LIBEVENT=1,
3637 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
3638 MOZ_NATIVE_LIBEVENT=
3639 elif test -z "$MOZ_NATIVE_LIBEVENT"; then
3640 CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
3641 LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
3642 MOZ_CHECK_HEADER(event.h,
3643 [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
3644 AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
3646 AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
3647 AC_CHECK_LIB(event, event_init,
3648 [MOZ_NATIVE_LIBEVENT=1
3649 MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
3650 MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
3651 [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
3653 CFLAGS=$_SAVE_CFLAGS
3654 LDFLAGS=$_SAVE_LDFLAGS
3657 AC_SUBST(MOZ_NATIVE_LIBEVENT)
3658 AC_SUBST(MOZ_LIBEVENT_CFLAGS)
3659 AC_SUBST(MOZ_LIBEVENT_LIBS)
3661 dnl ========================================================
3662 dnl = If NSS was not detected in the system,
3663 dnl = use the one in the source tree (mozilla/security/nss)
3664 dnl ========================================================
3666 MOZ_ARG_WITH_BOOL(system-nss,
3667 [ --with-system-nss Use system installed NSS],
3670 if test -n "$_USE_SYSTEM_NSS"; then
3671 AM_PATH_NSS(3.15, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
3674 if test -n "$MOZ_NATIVE_NSS"; then
3675 NSS_LIBS="$NSS_LIBS -lcrmf"
3677 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
3679 if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "OS2"; then
3681 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
3682 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
3683 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
3684 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
3685 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
3687 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
3691 dnl ======================
3693 dnl ======================
3695 AC_MSG_CHECKING([for YASM assembler])
3696 AC_CHECK_PROGS(YASM, yasm, "")
3698 if test -n "$YASM"; then
3699 dnl Pull out yasm's version string
3700 YASM_VERSION=`yasm --version | $AWK '/^yasm/ { print $2 }'`
3701 _YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'`
3702 _YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'`
3703 _YASM_RELEASE=` echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'`
3704 _YASM_BUILD=` echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
3707 if test -z "$SKIP_LIBRARY_CHECKS"; then
3708 dnl system JPEG support
3709 dnl ========================================================
3710 MOZ_ARG_WITH_STRING(system-jpeg,
3711 [ --with-system-jpeg[=PFX]
3712 Use system libjpeg [installed at prefix PFX]],
3715 _SAVE_CFLAGS=$CFLAGS
3716 _SAVE_LDFLAGS=$LDFLAGS
3718 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
3719 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
3720 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
3722 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
3725 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [MOZ_NATIVE_JPEG=1 MOZ_JPEG_LIBS="-ljpeg"], MOZ_NATIVE_JPEG=)
3728 if test "$MOZ_NATIVE_JPEG" = 1; then
3729 AC_TRY_COMPILE([ #include <stdio.h>
3730 #include <sys/types.h>
3731 #include <jpeglib.h> ],
3732 [ #if JPEG_LIB_VERSION < $MOZJPEG
3733 #error "Insufficient JPEG library version ($MOZJPEG required)."
3735 #ifndef JCS_EXTENSIONS
3736 #error "libjpeg-turbo JCS_EXTENSIONS required"
3740 AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg]))
3742 CFLAGS=$_SAVE_CFLAGS
3743 LDFLAGS=$_SAVE_LDFLAGS
3746 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$MOZ_NATIVE_JPEG" = 1; then
3747 MOZ_JPEG_CFLAGS="-I${JPEG_DIR}/include"
3748 MOZ_JPEG_LIBS="-L${JPEG_DIR}/lib ${MOZ_JPEG_LIBS}"
3750 fi # SKIP_LIBRARY_CHECKS
3752 dnl system ZLIB support
3753 dnl ========================================================
3754 MOZ_ZLIB_CHECK([1.2.3])
3756 if test "$MOZ_NATIVE_ZLIB" != 1; then
3758 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,'"$MOZ_BUILD_ROOT"'/modules/zlib/src)'
3761 if test "$MOZ_LINKER" = 1 -a "$MOZ_NATIVE_ZLIB" != 1; then
3762 AC_MSG_ERROR([Custom dynamic linker requires --with-system-zlib])
3765 if test -z "$SKIP_LIBRARY_CHECKS"; then
3766 dnl system BZIP2 Support
3767 dnl ========================================================
3768 MOZ_ARG_WITH_STRING(system-bz2,
3769 [ --with-system-bz2[=PFX]
3770 Use system libbz2 [installed at prefix PFX]],
3773 _SAVE_CFLAGS=$CFLAGS
3774 _SAVE_LDFLAGS=$LDFLAGS
3776 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
3777 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
3778 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
3780 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
3783 AC_CHECK_LIB(bz2, BZ2_bzread, [MOZ_NATIVE_BZ2=1 MOZ_BZ2_LIBS="-lbz2"],
3784 [MOZ_NATIVE_BZ2= MOZ_BZ2_CFLAGS= MOZ_BZ2_LIBS=])
3786 CFLAGS=$_SAVE_CFLAGS
3787 LDFLAGS=$_SAVE_LDFLAGS
3790 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$MOZ_NATIVE_BZ2" = 1; then
3791 MOZ_BZ2_CFLAGS="-I${BZ2_DIR}/include"
3792 MOZ_BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
3795 dnl system PNG Support
3796 dnl ========================================================
3797 MOZ_ARG_WITH_STRING(system-png,
3798 [ --with-system-png[=PFX]
3799 Use system libpng [installed at prefix PFX]],
3802 _SAVE_CFLAGS=$CFLAGS
3803 _SAVE_LDFLAGS=$LDFLAGS
3805 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
3806 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
3807 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
3809 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
3812 AC_CHECK_LIB(png, png_get_valid, [MOZ_NATIVE_PNG=1 MOZ_PNG_LIBS="-lpng"],
3813 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
3814 AC_CHECK_LIB(png, png_get_acTL, ,
3815 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
3817 if test "$MOZ_NATIVE_PNG" = 1; then
3818 AC_TRY_COMPILE([ #include <stdio.h>
3819 #include <sys/types.h>
3821 [ #if PNG_LIBPNG_VER < $MOZPNG
3822 #error "Insufficient libpng version ($MOZPNG required)."
3824 #ifndef PNG_UINT_31_MAX
3825 #error "Insufficient libpng version."
3828 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
3830 CFLAGS=$_SAVE_CFLAGS
3831 LDFLAGS=$_SAVE_LDFLAGS
3834 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_NATIVE_PNG" = 1; then
3835 MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
3836 MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
3840 if test "$MOZ_NATIVE_PNG" != 1 -a "$CPU_ARCH" = "arm" ; then
3843 AC_SUBST(MOZ_PNG_ARM_NEON)
3845 fi # SKIP_LIBRARY_CHECKS
3847 dnl system HunSpell Support
3848 dnl ========================================================
3849 MOZ_ARG_ENABLE_BOOL(system-hunspell,
3850 [ --enable-system-hunspell
3851 Use system hunspell (located with pkgconfig)],
3852 MOZ_NATIVE_HUNSPELL=1 )
3854 if test -n "$MOZ_NATIVE_HUNSPELL"; then
3855 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
3858 AC_SUBST(MOZ_NATIVE_HUNSPELL)
3860 dnl ========================================================
3861 dnl system libffi Support
3862 dnl ========================================================
3863 MOZ_ARG_ENABLE_BOOL(system-ffi,
3864 [ --enable-system-ffi Use system libffi (located with pkgconfig)],
3867 if test -n "$MOZ_NATIVE_FFI"; then
3868 # Vanilla libffi 3.0.9 needs a few patches from upcoming version 3.0.10
3869 # for non-GCC compilers.
3870 if test -z "$GNU_CC"; then
3871 PKG_CHECK_MODULES(MOZ_FFI, libffi > 3.0.9)
3873 PKG_CHECK_MODULES(MOZ_FFI, libffi >= 3.0.9)
3875 MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_FFI_LIBS"
3878 dnl ========================================================
3879 dnl System ICU Support
3880 dnl ========================================================
3882 MOZ_ARG_WITH_BOOL(system-icu,
3884 Use system ICU (located with pkgconfig)],
3887 if test -n "$MOZ_NATIVE_ICU"; then
3888 PKG_CHECK_MODULES(MOZ_ICU, icu-i18n >= 50.1)
3889 MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_ICU_LIBS"
3892 AC_SUBST(MOZ_NATIVE_ICU)
3894 dnl ========================================================
3895 dnl Java SDK support
3896 dnl ========================================================
3899 MOZ_ARG_WITH_STRING(java-bin-path,
3900 [ --with-java-bin-path=dir
3901 Location of Java binaries (java, javac, jar)],
3902 JAVA_BIN_PATH=$withval)
3904 dnl ========================================================
3908 dnl ========================================================
3910 MOZ_ARG_HEADER(Application)
3913 ENABLE_SYSTEM_EXTENSION_DIRS=1
3914 MOZ_BRANDING_DIRECTORY=
3915 MOZ_OFFICIAL_BRANDING=
3919 MOZ_AUTH_EXTENSION=1
3922 MOZ_SPEEX_RESAMPLER=1
3928 MOZ_SAMPLE_TYPE_FLOAT32=
3929 MOZ_SAMPLE_TYPE_S16=
3938 MOZ_WEBRTC_SIGNALING=
3939 MOZ_WEBRTC_ASSERT_ALWAYS=1
3942 MOZ_MEDIA_NAVIGATOR=
3945 MOZ_VP8_ERROR_CONCEALMENT=
3956 LIBJPEG_TURBO_ASFLAGS=
3957 LIBJPEG_TURBO_X86_ASM=
3958 LIBJPEG_TURBO_X64_ASM=
3959 LIBJPEG_TURBO_ARM_ASM=
3964 MOZ_PREF_EXTENSIONS=1
3965 MOZ_PROFILELOCKING=1
3971 MOZ_TOOLKIT_SEARCH=1
3973 MOZ_UNIVERSALCHARDET=1
3979 MOZ_DISABLE_CRYPTOLEGACY=
3982 NECKO_PROTOCOLS_DEFAULT="about data file ftp http res viewsource websocket wyciwyg device"
3985 MOZ_USE_NATIVE_POPUP_WINDOWS=
3986 MOZ_ANDROID_HISTORY=
3992 MOZ_AUDIO_CHANNEL_MANAGER=
3994 MOZ_CONTENT_SANDBOX=
3995 MOZ_CONTENT_SANDBOX_REPORTER=
3997 case "$target_os" in
4000 AC_DEFINE(NS_ENABLE_TSF)
4005 *-android*|*-linuxandroid*)
4006 if test "$CPU_ARCH" = "arm" ; then
4011 MOZ_THEME_FASTSTRIPE=1
4019 MOZ_ARG_WITH_STRING(external-source-dir,
4020 [ --with-external-source-dir=dir
4021 External directory containing additional build files.],
4022 [ EXTERNAL_SOURCE_DIR=$withval])
4023 AC_SUBST(EXTERNAL_SOURCE_DIR)
4025 MOZ_ARG_ENABLE_STRING(application,
4026 [ --enable-application=APP
4030 tools/update-packaging (AUS-related packaging tools)],
4031 [ MOZ_BUILD_APP=$enableval ] )
4033 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4034 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
4035 XULRUNNER_STUB_NAME=$withval)
4037 if test -z "$XULRUNNER_STUB_NAME"; then
4038 case "$target_os" in
4040 XULRUNNER_STUB_NAME=xulrunner
4043 XULRUNNER_STUB_NAME=xulrunner-stub
4046 AC_SUBST(XULRUNNER_STUB_NAME)
4048 AC_MSG_CHECKING([for application to build])
4049 if test -z "$MOZ_BUILD_APP"; then
4050 AC_MSG_RESULT([browser])
4051 MOZ_BUILD_APP=browser
4053 # "mobile" no longer exists.
4054 if test "$MOZ_BUILD_APP" = "mobile" ; then
4055 AC_MSG_RESULT([none])
4056 AC_MSG_ERROR([--enable-application=mobile is no longer supported.])
4058 # We have a valid application only if it has a build.mk file in its top
4060 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4061 AC_MSG_RESULT([none])
4062 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4064 AC_MSG_RESULT([$MOZ_BUILD_APP])
4068 # The app update channel is 'default' when not supplied. The value is used in
4069 # the application's confvars.sh so it must be set before confvars.sh is called.
4070 MOZ_ARG_ENABLE_STRING([update-channel],
4071 [ --enable-update-channel=CHANNEL
4072 Select application update channel (default=default)],
4073 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
4075 if test -z "$MOZ_UPDATE_CHANNEL"; then
4076 MOZ_UPDATE_CHANNEL=default
4078 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
4079 AC_SUBST(MOZ_UPDATE_CHANNEL)
4081 # Allow to specify a Google API key file that contains the secret key to be
4082 # used for various Google API requests.
4083 MOZ_ARG_WITH_STRING(google-api-keyfile,
4084 [ --with-google-api-keyfile=file Use the secret key contained in the given keyfile for Google API requests],
4085 MOZ_GOOGLE_API_KEY=`cat $withval`)
4086 if test -z "$MOZ_GOOGLE_API_KEY"; then
4087 MOZ_GOOGLE_API_KEY=no-google-api-key
4089 AC_SUBST(MOZ_GOOGLE_API_KEY)
4091 # Allow the application to influence configure with a confvars.sh script.
4092 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4093 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4094 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4095 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4100 # Allow influencing configure with a defines.sh script.
4101 . "${srcdir}/build/defines.sh"
4103 # If we're not building a release build, define EARLY_BETA_OR_EARLIER if it is
4105 if test "$BUILDING_RELEASE"; then
4106 # Override value in defines.sh, if any
4107 EARLY_BETA_OR_EARLIER=
4108 elif test "$EARLY_BETA_OR_EARLIER"; then
4109 AC_DEFINE(EARLY_BETA_OR_EARLIER)
4111 AC_SUBST(EARLY_BETA_OR_EARLIER)
4113 # Allow the application to provide a subconfigure script
4114 if test -f "${srcdir}/${MOZ_BUILD_APP}/configure.in" ; then
4115 do_output_subdirs() {
4116 if test -n "$_subconfigure_subdirs"; then
4117 AC_MSG_ERROR([Cannot specify more than one sub-sub-configure])
4119 _subconfigure_subdir="$1"
4120 _subconfigure_config_args="$ac_configure_args"
4122 tmpscript=`$PYTHON -c 'import os, tempfile; print tempfile.mktemp(prefix="subscript.").replace(os.sep, "/")'` || exit 1
4123 m4 "${srcdir}/build/autoconf/subconfigure.m4" \
4124 "${srcdir}/build/autoconf/altoptions.m4" \
4125 "${srcdir}/${MOZ_BUILD_APP}/configure.in" > $tmpscript
4130 # Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig
4131 MOZ_ARG_WITH_STRING(app-name,
4132 [--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME],
4133 WITH_APP_NAME=$withval,
4136 if test -n "$WITH_APP_NAME" ; then
4137 MOZ_APP_NAME="$WITH_APP_NAME"
4140 MOZ_ARG_WITH_STRING(app-basename,
4141 [--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME],
4142 WITH_APP_BASENAME=$withval,
4145 if test -n "$WITH_APP_BASENAME" ; then
4146 MOZ_APP_BASENAME="$WITH_APP_BASENAME"
4149 # Now is a good time to test for logic errors, define mismatches, etc.
4150 case "$MOZ_BUILD_APP" in
4152 if test "$LIBXUL_SDK"; then
4153 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4158 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4159 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4161 case "$MOZ_BUILD_APP" in
4163 AC_DEFINE(MOZ_PHOENIX)
4167 AC_DEFINE(MOZ_XULRUNNER)
4174 AC_SUBST(MOZ_BUILD_APP)
4175 AC_SUBST(MOZ_PHOENIX)
4176 AC_SUBST(MOZ_XULRUNNER)
4179 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4181 dnl ========================================================
4182 dnl Check android sdk version depending on mobile target
4183 dnl ========================================================
4185 if test -z "$gonkdir" ; then
4186 # Minimum Android SDK API Level we require.
4187 case "$MOZ_BUILD_APP" in
4189 android_min_api_level=16
4191 *-android*|*-linuxandroid*)
4195 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])
4201 MOZ_ANDROID_SDK($android_min_api_level)
4204 dnl ========================================================
4206 dnl = Toolkit Options
4208 dnl ========================================================
4209 MOZ_ARG_HEADER(Toolkit Options)
4211 dnl ========================================================
4212 dnl = Select the default toolkit
4213 dnl ========================================================
4214 MOZ_ARG_ENABLE_STRING(default-toolkit,
4215 [ --enable-default-toolkit=TK
4216 Select default toolkit
4217 Platform specific defaults:
4218 Mac OS X - cairo-cocoa
4220 Win32 - cairo-windows
4224 [ _DEFAULT_TOOLKIT=$enableval ],
4225 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4227 if test "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4228 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4229 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4230 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk3" \
4231 -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4232 -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4233 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
4234 -o "$_DEFAULT_TOOLKIT" = "cairo-uikit" \
4235 -o "$_DEFAULT_TOOLKIT" = "cairo-android" \
4236 -o "$_DEFAULT_TOOLKIT" = "cairo-gonk"
4238 dnl nglayout only supports building with one toolkit,
4239 dnl so ignore everything after the first comma (",").
4240 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4242 AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4245 MOZ_ARG_WITHOUT_BOOL(x,
4246 [ --without-x Build without X11],
4249 dnl ========================================================
4250 dnl = Enable the toolkit as needed =
4251 dnl ========================================================
4255 case "$MOZ_WIDGET_TOOLKIT" in
4258 MOZ_WIDGET_TOOLKIT=windows
4261 MOZ_INSTRUMENT_EVENT_LOOP=1
4262 if test -n "$GNU_CC"; then
4268 MOZ_WIDGET_TOOLKIT=gtk3
4271 MOZ_ENABLE_XREMOTE=1
4273 MOZ_GL_DEFAULT_PROVIDER=GLX
4279 TK_CFLAGS='$(MOZ_GTK3_CFLAGS)'
4280 TK_LIBS='$(MOZ_GTK3_LIBS)'
4282 AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK)
4284 MOZ_INSTRUMENT_EVENT_LOOP=1
4287 cairo-gtk2|cairo-gtk2-x11)
4288 MOZ_WIDGET_TOOLKIT=gtk2
4291 MOZ_ENABLE_XREMOTE=1
4293 MOZ_GL_DEFAULT_PROVIDER=GLX
4299 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4300 TK_LIBS='$(MOZ_GTK2_LIBS)'
4301 AC_DEFINE(MOZ_WIDGET_GTK2)
4303 AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK)
4305 MOZ_INSTRUMENT_EVENT_LOOP=1
4309 MOZ_WIDGET_TOOLKIT=qt
4311 if test -z "$WITHOUT_X11"; then
4312 MOZ_ENABLE_XREMOTE=1
4313 MOZ_GL_DEFAULT_PROVIDER=GLX
4322 TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4323 TK_LIBS='$(MOZ_QT_LIBS)'
4324 AC_DEFINE(MOZ_WIDGET_QT)
4326 AC_DEFINE(QT_NO_KEYWORDS)
4330 MOZ_WIDGET_TOOLKIT=os2
4332 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4333 TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4338 MOZ_WIDGET_TOOLKIT=cocoa
4339 AC_DEFINE(MOZ_WIDGET_COCOA)
4340 LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
4341 TK_LIBS='-framework CoreLocation -framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
4342 TK_CFLAGS="-DNO_X11"
4343 CFLAGS="$CFLAGS $TK_CFLAGS"
4344 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4345 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/bin/XUL $(call EXPAND_LIBNAME_PATH,mozalloc,$(LIBXUL_DIST)/bin)'
4346 MOZ_USER_DIR="Mozilla"
4347 MOZ_FS_LAYOUT=bundle
4349 MOZ_INSTRUMENT_EVENT_LOOP=1
4353 MOZ_WIDGET_TOOLKIT=uikit
4354 AC_DEFINE(MOZ_WIDGET_UIKIT)
4355 LDFLAGS="$LDFLAGS -framework UIKit -lobjc"
4356 TK_CFLAGS="-DNO_X11"
4357 TK_LIBS='-framework Foundation -framework CoreFoundation -framework CoreGraphics -framework CoreText'
4358 CFLAGS="$CFLAGS $TK_CFLAGS"
4359 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4360 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/bin/XUL $(call EXPAND_LIBNAME_PATH,mozalloc,$(LIBXUL_DIST)/bin)'
4361 MOZ_USER_DIR="Mozilla"
4362 MOZ_FS_LAYOUT=bundle
4366 AC_DEFINE(MOZ_WIDGET_ANDROID)
4367 MOZ_WIDGET_TOOLKIT=android
4368 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4369 TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4372 MOZ_INSTRUMENT_EVENT_LOOP=1
4376 XPCOM_FROZEN_LDOPTS='$(call EXPAND_LIBNAME_PATH,xul mozalloc,$(LIBXUL_DIST)/lib)'
4377 AC_DEFINE(MOZ_WIDGET_GONK)
4378 AC_DEFINE(MOZ_TOUCH)
4379 MOZ_WIDGET_TOOLKIT=gonk
4380 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4381 TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4389 AC_SUBST(MOZ_PDF_PRINTING)
4390 if test "$MOZ_PDF_PRINTING"; then
4391 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
4392 AC_DEFINE(MOZ_PDF_PRINTING)
4395 if test "$MOZ_ENABLE_XREMOTE"; then
4396 AC_DEFINE(MOZ_ENABLE_XREMOTE)
4399 if test "$MOZ_INSTRUMENT_EVENT_LOOP"; then
4400 AC_DEFINE(MOZ_INSTRUMENT_EVENT_LOOP)
4403 if test "$COMPILE_ENVIRONMENT"; then
4404 if test "$MOZ_ENABLE_GTK3"; then
4405 PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4407 if test "$MOZ_ENABLE_GTK2"; then
4408 if test "$MOZ_X11"; then
4409 GDK_PACKAGES=gdk-x11-2.0
4412 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4415 fi # COMPILE_ENVIRONMENT
4417 AC_SUBST(MOZ_FS_LAYOUT)
4419 dnl ========================================================
4420 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4421 dnl their usage and use them in spidermonkey.
4422 dnl ========================================================
4423 MOZ_ARG_WITH_BOOL(arm-kuser,
4424 [ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4426 if test -n "$USE_ARM_KUSER"; then
4427 AC_DEFINE(USE_ARM_KUSER)
4430 dnl ========================================================
4431 dnl = startup-notification support module
4432 dnl ========================================================
4434 if test "$MOZ_ENABLE_GTK"
4436 MOZ_ENABLE_STARTUP_NOTIFICATION=
4438 MOZ_ARG_ENABLE_BOOL(startup-notification,
4439 [ --enable-startup-notification
4440 Enable startup-notification support (default: disabled) ],
4441 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4442 MOZ_ENABLE_STARTUP_NOTIFICATION=)
4443 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4445 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4446 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4447 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4448 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4450 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4452 MOZ_ENABLE_STARTUP_NOTIFICATION=
4456 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4457 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4460 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4462 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4463 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4464 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4466 dnl ========================================================
4468 dnl ========================================================
4469 if test "$MOZ_ENABLE_QT"
4471 MOZ_ARG_WITH_STRING(qtdir,
4472 [ --with-qtdir=\$dir Specify Qt directory ],
4475 if test -z "$QTDIR"; then
4476 AC_CHECK_PROGS(HOST_QMAKE, $HOST_QMAKE qmake, "")
4478 HOST_QMAKE="$QTDIR/bin/qmake"
4480 QT_VERSION=`$HOST_QMAKE -v | grep 'Using Qt version' | egrep -o '[[0-9]]+\.[[0-9]]+\.[[0-9]]+'`
4482 if test -z "$QTDIR"; then
4485 AC_MSG_RESULT("Using qt5: $QT_VERSION")
4486 PKG_CHECK_MODULES(MOZ_QT, Qt5Gui Qt5Network Qt5Core Qt5OpenGL Qt5Widgets Qt5PrintSupport, ,
4488 AC_MSG_ERROR([$MOZ_QT_PKG_ERRORS Need qtbase development packages, (On Ubuntu, you might try installing the packages qtbase5-dev libqt5opengl5-dev.)])
4490 QT5INCDIR=`pkg-config --variable=includedir Qt5Gui`
4491 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QT5INCDIR/QtGui/$QT_VERSION/QtGui"
4494 AC_MSG_RESULT("Using qt4: $QT_VERSION")
4495 PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtCore QtOpenGL, ,
4497 AC_MSG_ERROR([$MOZ_QT_PKG_ERRORS Need qt4 development package, (On Ubuntu, you might try installing the packages libqt4-dev libqt4-opengl-dev.)])
4501 AC_MSG_ERROR([* * * Unsupported Qt Version: $QT_VERSION])
4505 AC_CHECK_PROGS(HOST_MOC, $MOC moc, "")
4506 AC_CHECK_PROGS(HOST_RCC, $RCC rcc, "")
4508 MOZ_QT_CFLAGS="-DQT_SHARED"
4509 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
4510 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
4511 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
4512 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
4513 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
4514 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDeclarative"
4518 AC_MSG_RESULT("Using qt5: $QT_VERSION")
4519 MOZ_QT_LIBS="-L$QTDIR/lib/ -lQt5Gui -lQt5Network -lQt5Core -lQt5Xml -lQt5OpenGL"
4520 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui/$QT_VERSION/QtGui"
4521 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtWidgets"
4522 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtPrintSupport"
4523 MOZ_QT_LIBS="$MOZ_QT_LIBS -lQt5Widgets -lQt5PrintSupport"
4526 AC_MSG_RESULT("Using qt4: $QT_VERSION")
4527 MOZ_QT_LIBS="-L$QTDIR/lib/ -lQtGui -lQtNetwork -lQtCore -lQtXml -lQtOpenGL"
4528 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/Qt"
4531 AC_MSG_ERROR([* * * Unsupported Qt Version: $QT_VERSION])
4535 HOST_MOC="$QTDIR/bin/moc"
4536 HOST_RCC="$QTDIR/bin/rcc"
4538 if test -z "$HOST_MOC"; then
4539 AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is
4542 if test -z "$HOST_RCC"; then
4543 AC_MSG_ERROR([No acceptable rcc preprocessor found. Qt SDK is not installed or --with-qt is
4550 MOZ_ENABLE_QMSYSTEM2=
4551 PKG_CHECK_MODULES(_QMSYSTEM2, qmsystem2,
4552 MOZ_ENABLE_QMSYSTEM2=1,
4553 MOZ_ENABLE_QMSYSTEM2=)
4555 if test "$MOZ_ENABLE_QMSYSTEM2"; then
4556 MOZ_ENABLE_QMSYSTEM2=1
4557 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QMSYSTEM2_CFLAGS"
4558 MOZ_QT_LIBS="$MOZ_QT_LIBS $_QMSYSTEM2_LIBS"
4559 AC_DEFINE(MOZ_ENABLE_QMSYSTEM2)
4562 MOZ_ENABLE_QTNETWORK=
4563 PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7,
4564 MOZ_ENABLE_QTNETWORK=1,
4565 MOZ_ENABLE_QTNETWORK=)
4567 if test "$MOZ_ENABLE_QTNETWORK"; then
4568 MOZ_ENABLE_QTNETWORK=1
4569 AC_DEFINE(MOZ_ENABLE_QTNETWORK)
4572 MOZ_ENABLE_QTMOBILITY=
4573 PKG_CHECK_MODULES(_QTMOBILITY, QtSensors QtFeedback QtLocation,
4574 MOZ_ENABLE_QTMOBILITY=1,
4575 MOZ_ENABLE_QTMOBILITY=)
4576 if test "$MOZ_ENABLE_QTMOBILITY"; then
4577 MOZ_ENABLE_QTMOBILITY=1
4578 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QTMOBILITY_CFLAGS"
4579 MOZ_QT_LIBS="$MOZ_QT_LIBS $_QTMOBILITY_LIBS"
4580 AC_DEFINE(MOZ_ENABLE_QTMOBILITY)
4581 AC_SUBST(MOZ_ENABLE_QTMOBILITY)
4583 AC_CHECK_LIB(QtSensors, main, [
4584 MOZ_ENABLE_QTMOBILITY=1
4585 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtMobility"
4586 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtSensors"
4587 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtFeedback"
4588 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtLocation"
4589 MOZ_QT_LIBS="$MOZ_QT_LIBS -lQtSensors -lQtFeedback -lQtLocation"
4593 if test "$MOZ_ENABLE_CONTENTACTION"; then
4594 MOZ_ENABLE_CONTENTACTION=1
4595 AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
4598 MOZ_ENABLE_CONTENTACTION=
4599 PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=)
4600 if test "$MOZ_ENABLE_CONTENTACTION"; then
4601 MOZ_ENABLE_CONTENTACTION=1
4602 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_CONTENTACTION_CFLAGS"
4603 MOZ_QT_LIBS="$MOZ_QT_LIBS $_CONTENTACTION_LIBS"
4604 AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
4605 AC_SUBST(MOZ_ENABLE_CONTENTACTION)
4609 AC_SUBST(GTK_CONFIG)
4613 AC_SUBST(MOZ_ENABLE_GTK2)
4614 AC_SUBST(MOZ_ENABLE_GTK3)
4615 AC_SUBST(MOZ_ENABLE_GTK)
4616 AC_SUBST(MOZ_ENABLE_QT)
4617 AC_SUBST(MOZ_ENABLE_QTNETWORK)
4618 AC_SUBST(MOZ_ENABLE_QMSYSTEM2)
4619 AC_SUBST(MOZ_ENABLE_QTMOBILITY)
4620 AC_SUBST(MOZ_ENABLE_XREMOTE)
4621 AC_SUBST(MOZ_GTK2_CFLAGS)
4622 AC_SUBST(MOZ_GTK2_LIBS)
4623 AC_SUBST(MOZ_GTK3_CFLAGS)
4624 AC_SUBST(MOZ_GTK3_LIBS)
4625 AC_SUBST(MOZ_WIDGET_GTK)
4626 AC_SUBST(MOZ_QT_CFLAGS)
4627 AC_SUBST(MOZ_QT_LIBS)
4634 dnl ========================================================
4636 dnl = Components & Features
4638 dnl ========================================================
4639 MOZ_ARG_HEADER(Components and Features)
4641 dnl ========================================================
4643 dnl ========================================================
4644 MOZ_ARG_ENABLE_STRING(ui-locale,
4645 [ --enable-ui-locale=ab-CD
4646 Select the user interface locale (default: en-US)],
4647 MOZ_UI_LOCALE=$enableval )
4648 AC_SUBST(MOZ_UI_LOCALE)
4650 dnl ========================================================
4651 dnl = Trademarked Branding
4652 dnl ========================================================
4653 MOZ_ARG_ENABLE_BOOL(official-branding,
4654 [ --enable-official-branding
4655 Enable Official mozilla.org Branding
4656 Do not distribute builds with
4657 --enable-official-branding unless you have
4658 permission to use trademarks per
4659 http://www.mozilla.org/foundation/trademarks/ .],
4661 if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
4662 AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
4664 MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
4665 MOZ_OFFICIAL_BRANDING=1
4667 ], MOZ_OFFICIAL_BRANDING=)
4669 AC_SUBST(MOZ_OFFICIAL_BRANDING)
4670 if test -n "$MOZ_OFFICIAL_BRANDING"; then
4671 AC_DEFINE(MOZ_OFFICIAL_BRANDING)
4674 MOZ_ARG_WITH_STRING(branding,
4675 [ --with-branding=dir Use branding from the specified directory.],
4676 MOZ_BRANDING_DIRECTORY=$withval)
4678 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4679 if test -z "$REAL_BRANDING_DIRECTORY"; then
4680 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4683 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4684 . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
4687 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4689 dnl ========================================================
4690 dnl = Distribution ID
4691 dnl ========================================================
4692 MOZ_ARG_WITH_STRING(distribution-id,
4693 [ --with-distribution-id=ID
4694 Set distribution-specific id (default=org.mozilla)],
4695 [ val=`echo $withval`
4696 MOZ_DISTRIBUTION_ID="$val"])
4698 if test -z "$MOZ_DISTRIBUTION_ID"; then
4699 MOZ_DISTRIBUTION_ID="org.mozilla"
4702 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4703 AC_SUBST(MOZ_DISTRIBUTION_ID)
4706 dnl ========================================================
4707 dnl complex text support off by default
4708 dnl ========================================================
4709 MOZ_ARG_DISABLE_BOOL(pango,
4710 [ --disable-pango Disable usage of Pango ],
4714 dnl ========================================================
4716 dnl ========================================================
4717 if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT"
4721 if test "$MOZ_PANGO"
4723 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4725 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION)
4726 AC_SUBST(MOZ_PANGO_CFLAGS)
4727 AC_SUBST(MOZ_PANGO_LIBS)
4728 AC_DEFINE(MOZ_PANGO)
4730 PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0)
4731 AC_SUBST(FT2_CFLAGS)
4736 dnl ========================================================
4737 dnl = GnomeVFS, GIO and GConf support module
4738 dnl ========================================================
4742 dnl build the GIO extension by default only when the
4743 dnl GTK2 toolkit is in use.
4744 if test "$MOZ_ENABLE_GTK"
4750 dnl ========================================================
4751 dnl = GnomeVFS support module
4752 dnl ========================================================
4753 MOZ_ARG_ENABLE_BOOL(gnomevfs,
4754 [ --enable-gnomevfs Enable GnomeVFS support (default: disabled)],
4755 MOZ_ENABLE_GNOMEVFS=force,
4756 MOZ_ENABLE_GNOMEVFS=)
4758 if test "$MOZ_ENABLE_GNOMEVFS"
4760 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
4761 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
4762 MOZ_ENABLE_GNOMEVFS=1
4763 AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
4765 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
4767 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
4769 MOZ_ENABLE_GNOMEVFS=
4773 AC_SUBST(MOZ_ENABLE_GNOMEVFS)
4774 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
4775 AC_SUBST(MOZ_GNOMEVFS_LIBS)
4777 dnl ========================================================
4778 dnl = GIO support module
4779 dnl ========================================================
4780 MOZ_ARG_DISABLE_BOOL(gio,
4781 [ --disable-gio Disable GIO support],
4783 MOZ_ENABLE_GIO=force)
4785 if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK"
4787 PKG_CHECK_MODULES(_GTKCHECK, gtk+-2.0 >= 2.14, ,
4788 [AC_MSG_ERROR([* * * Could not find gtk+-2.0 > 2.14. Required for build with gio.])])
4789 PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
4790 MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
4792 AC_DEFINE(MOZ_ENABLE_GIO)
4794 if test "$MOZ_ENABLE_GIO" = "force"
4796 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
4802 AC_SUBST(MOZ_ENABLE_GIO)
4803 AC_SUBST(MOZ_GIO_CFLAGS)
4804 AC_SUBST(MOZ_GIO_LIBS)
4806 dnl ========================================================
4807 dnl = GConf support module
4808 dnl ========================================================
4809 MOZ_ARG_DISABLE_BOOL(gconf,
4810 [ --disable-gconf Disable Gconf support ],
4812 MOZ_ENABLE_GCONF=force)
4814 if test "$MOZ_ENABLE_GCONF"
4816 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
4817 MOZ_GCONF_LIBS=`$PKG_CONFIG --libs gobject-2.0`
4820 if test "$MOZ_ENABLE_GCONF" = "force"
4822 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
4828 if test "$MOZ_ENABLE_GCONF"; then
4829 AC_DEFINE(MOZ_ENABLE_GCONF)
4832 AC_SUBST(MOZ_ENABLE_GCONF)
4833 AC_SUBST(MOZ_GCONF_CFLAGS)
4834 AC_SUBST(MOZ_GCONF_LIBS)
4837 dnl ========================================================
4838 dnl = libproxy support
4839 dnl ========================================================
4841 if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT"
4843 MOZ_ENABLE_LIBPROXY=
4845 MOZ_ARG_ENABLE_BOOL(libproxy,
4846 [ --enable-libproxy Enable libproxy support ],
4847 MOZ_ENABLE_LIBPROXY=1,
4848 MOZ_ENABLE_LIBPROXY=)
4850 if test "$MOZ_ENABLE_LIBPROXY"
4852 PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
4853 AC_DEFINE(MOZ_ENABLE_LIBPROXY)
4856 AC_SUBST(MOZ_ENABLE_LIBPROXY)
4857 AC_SUBST(MOZ_LIBPROXY_CFLAGS)
4858 AC_SUBST(MOZ_LIBPROXY_LIBS)
4860 dnl ========================================================
4861 dnl = GNOME component (mozgnome)
4862 dnl ========================================================
4864 if test "$MOZ_ENABLE_GTK2"
4866 MOZ_ENABLE_GNOME_COMPONENT=1
4868 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
4870 dnl ========================================================
4871 dnl = libgnomeui support module
4872 dnl ========================================================
4874 if test "$MOZ_ENABLE_GTK"
4876 MOZ_ARG_ENABLE_BOOL(gnomeui,
4877 [ --enable-gnomeui Enable libgnomeui instead of GIO & GTK for icon theme support ],
4878 MOZ_ENABLE_GNOMEUI=force,
4879 MOZ_ENABLE_GNOMEUI=)
4881 if test "$MOZ_ENABLE_GNOMEUI"
4883 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
4885 MOZ_ENABLE_GNOMEUI=1
4887 if test "$MOZ_ENABLE_GNOMEUI" = "force"
4889 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
4895 if test "$MOZ_ENABLE_GNOMEUI"; then
4896 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
4900 AC_SUBST(MOZ_ENABLE_GNOMEUI)
4901 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
4903 dnl ========================================================
4905 dnl ========================================================
4907 if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT"
4911 MOZ_ARG_DISABLE_BOOL(dbus,
4912 [ --disable-dbus Disable dbus support ],
4916 if test "$MOZ_ENABLE_DBUS"
4918 PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
4919 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
4920 AC_DEFINE(MOZ_ENABLE_DBUS)
4923 AC_SUBST(MOZ_ENABLE_DBUS)
4924 AC_SUBST(MOZ_DBUS_CFLAGS)
4925 AC_SUBST(MOZ_DBUS_LIBS)
4926 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
4927 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
4929 dnl ========================================================
4930 dnl = Enable Android History instead of Places
4931 dnl ========================================================
4932 if test -n "$MOZ_ANDROID_HISTORY"; then
4933 if test -z "$MOZ_PLACES"; then
4934 AC_DEFINE(MOZ_ANDROID_HISTORY)
4936 AC_MSG_ERROR([Cannot use MOZ_ANDROID_HISTORY alongside MOZ_PLACES.])
4940 dnl ========================================================
4941 dnl = Build with the Android compositor
4942 dnl ========================================================
4943 if test -n "$MOZ_ANDROID_OMTC"; then
4944 dnl Do this if defined in confvars.sh
4945 AC_DEFINE(MOZ_ANDROID_OMTC)
4948 dnl ========================================================
4949 dnl = Disable WebSMS backend
4950 dnl ========================================================
4951 MOZ_ARG_DISABLE_BOOL(websms-backend,
4952 [ --disable-websms-backend
4953 Disable WebSMS backend],
4954 MOZ_WEBSMS_BACKEND=,
4955 MOZ_WEBSMS_BACKEND=1)
4957 if test -n "$MOZ_WEBSMS_BACKEND"; then
4958 AC_DEFINE(MOZ_WEBSMS_BACKEND)
4961 dnl ========================================================
4962 dnl = Enable NFC permission on Android
4963 dnl ========================================================
4964 if test -n "$MOZ_ANDROID_BEAM"; then
4965 AC_DEFINE(MOZ_ANDROID_BEAM)
4968 dnl ========================================================
4969 dnl = JS Debugger XPCOM component (js/jsd)
4970 dnl ========================================================
4971 MOZ_ARG_DISABLE_BOOL(jsd,
4972 [ --disable-jsd Disable JavaScript debug library],
4977 dnl ========================================================
4978 dnl = Enable IPDL's "expensive" unit tests
4979 dnl ========================================================
4982 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
4983 [ --enable-ipdl-tests Enable expensive IPDL tests],
4987 if test -n "$MOZ_IPDL_TESTS"; then
4988 AC_DEFINE(MOZ_IPDL_TESTS)
4991 AC_SUBST(MOZ_IPDL_TESTS)
4993 dnl ========================================================
4994 dnl = Disable building dbm
4995 dnl ========================================================
4996 MOZ_ARG_DISABLE_BOOL(dbm,
4997 [ --disable-dbm Disable building dbm],
5001 dnl bi-directional support always on
5005 dnl ========================================================
5006 dnl accessibility support on by default on all platforms
5007 dnl ========================================================
5008 MOZ_ARG_DISABLE_BOOL(accessibility,
5009 [ --disable-accessibility Disable accessibility support],
5012 if test "$ACCESSIBILITY"; then
5015 if test -z "$MIDL"; then
5016 if test "$GCC" != "yes"; then
5017 AC_MSG_ERROR([MIDL could not be found. Building accessibility without MIDL is not supported.])
5019 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.])
5023 AC_DEFINE(ACCESSIBILITY)
5026 dnl ========================================================
5027 dnl Accessibility is required for the linuxgl widget
5029 dnl ========================================================
5030 if test "${MOZ_WIDGET_TOOLKIT}" = "linuxgl" -a "$ACCESSIBILITY" != "1"; then
5031 AC_MSG_ERROR(["Accessibility is required for the linuxgl widget backend"])
5034 dnl ========================================================
5035 dnl Disable printing
5036 dnl ========================================================
5037 MOZ_ARG_DISABLE_BOOL(printing,
5038 [ --disable-printing Disable printing support],
5042 if test "$NS_PRINTING"; then
5043 AC_DEFINE(NS_PRINTING)
5044 AC_DEFINE(NS_PRINT_PREVIEW)
5047 dnl Turn off webrtc for OS's we don't handle yet, but allow
5048 dnl --enable-webrtc to override. Can disable for everything in
5049 dnl the master list above.
5050 if test -n "$MOZ_WEBRTC"; then
5052 *-linux*|*-mingw*|*-darwin*|*-android*|*-linuxandroid*|*-dragonfly*|*-freebsd*|*-netbsd*|*-openbsd*)
5056 dnl default to disabled for all others
5062 AC_TRY_COMPILE([#include <linux/ethtool.h>],
5063 [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
5064 MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
5066 # target_arch is from {ia32|x64|arm|ppc}
5069 WEBRTC_TARGET_ARCH=x64
5073 WEBRTC_TARGET_ARCH=arm
5077 WEBRTC_TARGET_ARCH=ia32
5081 WEBRTC_TARGET_ARCH=ppc
5084 WEBRTC_TARGET_ARCH=ia64
5087 # unsupported arch for webrtc
5088 WEBRTC_TARGET_ARCH=unknown
5094 dnl ========================================================
5095 dnl = Disable WebRTC code
5096 dnl ========================================================
5097 MOZ_ARG_DISABLE_BOOL(webrtc,
5098 [ --disable-webrtc Disable support for WebRTC],
5102 if test -n "$MOZ_WEBRTC"; then
5103 AC_DEFINE(MOZ_WEBRTC)
5104 dnl MOZ_WEBRTC_ASSERT_ALWAYS turns on a number of safety asserts in
5105 dnl opt/production builds (via MOZ_CRASH())
5106 AC_DEFINE(MOZ_WEBRTC_ASSERT_ALWAYS)
5110 MOZ_VP8_ERROR_CONCEALMENT=1
5112 dnl enable once Signaling lands
5113 MOZ_WEBRTC_SIGNALING=1
5114 AC_DEFINE(MOZ_WEBRTC_SIGNALING)
5115 dnl enable once PeerConnection lands
5116 MOZ_PEERCONNECTION=1
5117 AC_DEFINE(MOZ_PEERCONNECTION)
5124 AC_SUBST(MOZ_WEBRTC)
5125 AC_SUBST(MOZ_WEBRTC_LEAKING_TESTS)
5126 AC_SUBST(MOZ_WEBRTC_SIGNALING)
5127 AC_SUBST(MOZ_PEERCONNECTION)
5128 AC_SUBST(MOZ_WEBRTC_ASSERT_ALWAYS)
5132 dnl Use integers over floats for audio on B2G and Android, because audio
5133 dnl backends for those platforms don't support floats.
5134 if test "$OS_TARGET" = "Android"; then
5135 MOZ_SAMPLE_TYPE_S16=1
5136 AC_DEFINE(MOZ_SAMPLE_TYPE_S16)
5137 AC_SUBST(MOZ_SAMPLE_TYPE_S16)
5139 MOZ_SAMPLE_TYPE_FLOAT32=1
5140 AC_DEFINE(MOZ_SAMPLE_TYPE_FLOAT32)
5141 AC_SUBST(MOZ_SAMPLE_TYPE_FLOAT32)
5144 dnl ========================================================
5145 dnl = Disable Speech API code
5146 dnl ========================================================
5147 MOZ_ARG_DISABLE_BOOL(webspeech,
5148 [ --disable-webspeech Disable support for HTML Speech API],
5152 if test -n "$MOZ_WEBSPEECH"; then
5153 AC_DEFINE(MOZ_WEBSPEECH)
5156 AC_SUBST(MOZ_WEBSPEECH)
5158 dnl ========================================================
5159 dnl = Enable Raw Codecs
5160 dnl ========================================================
5161 MOZ_ARG_ENABLE_BOOL(raw,
5162 [ --enable-raw Enable support for RAW media],
5166 if test -n "$MOZ_RAW"; then
5172 dnl ========================================================
5173 dnl = Disable Ogg Codecs
5174 dnl ========================================================
5175 MOZ_ARG_DISABLE_BOOL(ogg,
5176 [ --disable-ogg Disable support for OGG media (Theora video and Vorbis audio)],
5180 if test -n "$MOZ_OGG"; then
5184 dnl Checks for __attribute__(aligned()) directive
5185 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5186 [ac_cv_c_attribute_aligned],
5187 [ac_cv_c_attribute_aligned=0
5188 CFLAGS_save="${CFLAGS}"
5189 CFLAGS="${CFLAGS} -Werror"
5190 for ac_cv_c_attr_align_try in 64 32 16 8; do
5191 echo "trying $ac_cv_c_attr_align_try"
5193 [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
5194 [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
5195 if test "$ac_cv_c_attribute_aligned" != 0; then
5199 CFLAGS="${CFLAGS_save}"])
5200 if test "${ac_cv_c_attribute_aligned}" != "0"; then
5201 AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
5202 [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
5206 dnl ========================================================
5207 dnl = Disable Opus audio codec support
5208 dnl ========================================================
5209 MOZ_ARG_DISABLE_BOOL(opus,
5210 [ --disable-opus Disable support for Opus audio],
5214 dnl ========================================================
5215 dnl = Disable VP8 decoder support
5216 dnl ========================================================
5217 MOZ_ARG_DISABLE_BOOL(webm,
5218 [ --disable-webm Disable support for WebM media (VP8 video and Vorbis audio)],
5222 if test -n "$MOZ_WEBM"; then
5227 dnl ========================================================
5228 dnl = DirectShow support
5229 dnl ========================================================
5230 if test "$OS_ARCH" = "WINNT"; then
5231 dnl Enable DirectShow support by default.
5235 MOZ_ARG_DISABLE_BOOL(directshow,
5236 [ --disable-directshow Disable support for DirectShow],
5240 if test -n "$MOZ_DIRECTSHOW"; then
5241 AC_DEFINE(MOZ_DIRECTSHOW)
5245 dnl ========================================================
5246 dnl = Windows Media Foundation support
5247 dnl ========================================================
5248 if test "$OS_ARCH" = "WINNT"; then
5249 dnl Enable Windows Media Foundation support by default.
5250 dnl Note our minimum SDK version is Windows 7 SDK, so we are (currently)
5251 dnl guaranteed to have a recent-enough SDK to build WMF.
5255 MOZ_ARG_DISABLE_BOOL(wmf,
5256 [ --disable-wmf Disable support for Windows Media Foundation],
5260 if test -n "$MOZ_WMF"; then
5265 dnl ========================================================
5266 dnl = Enable media plugin support
5267 dnl ========================================================
5268 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5269 dnl Enable support on android by default
5273 MOZ_ARG_ENABLE_BOOL(media-plugins,
5274 [ --enable-media-plugins Enable support for media plugins],
5275 MOZ_MEDIA_PLUGINS=1,
5278 if test -n "$MOZ_MEDIA_PLUGINS"; then
5279 AC_DEFINE(MOZ_MEDIA_PLUGINS)
5282 dnl ========================================================
5283 dnl = Disable platform MP3 decoder on OSX
5284 dnl ========================================================
5285 if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
5289 MOZ_ARG_DISABLE_BOOL(apple-media,
5290 [ --disable-apple-media Disable support for Apple AudioToolbox/VideoToolbox],
5294 if test -n "$MOZ_APPLEMEDIA"; then
5295 AC_DEFINE(MOZ_APPLEMEDIA)
5298 dnl ========================================================
5299 dnl = Enable getUserMedia support
5300 dnl ========================================================
5301 MOZ_ARG_ENABLE_BOOL(media-navigator,
5302 [ --enable-media-navigator Enable support for getUserMedia],
5303 MOZ_MEDIA_NAVIGATOR=1,
5304 MOZ_MEDIA_NAVIGATOR=)
5306 if test -n "$MOZ_MEDIA_NAVIGATOR"; then
5307 AC_DEFINE(MOZ_MEDIA_NAVIGATOR)
5310 dnl ========================================================
5311 dnl = Enable building OMX media plugin (B2G or Android)
5312 dnl ========================================================
5313 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5314 dnl Enable support on android by default
5318 MOZ_ARG_ENABLE_BOOL(omx-plugin,
5319 [ --enable-omx-plugin Enable building OMX plugin (B2G)],
5323 if test -n "$MOZ_OMX_PLUGIN"; then
5324 if test "$OS_TARGET" = "Android"; then
5325 dnl Only allow building OMX plugin on Gonk (B2G) or Android
5326 AC_DEFINE(MOZ_OMX_PLUGIN)
5328 dnl fail if we're not building on Gonk or Android
5329 AC_MSG_ERROR([OMX media plugin can only be built on B2G or Android])
5333 dnl system libvpx Support
5334 dnl ========================================================
5335 MOZ_ARG_WITH_BOOL(system-libvpx,
5336 [ --with-system-libvpx Use system libvpx (located with pkgconfig)],
5337 MOZ_NATIVE_LIBVPX=1)
5342 if test -n "$MOZ_VP8"; then
5344 if test -n "$MOZ_VP8_ERROR_CONCEALMENT" ; then
5345 AC_DEFINE(MOZ_VP8_ERROR_CONCEALMENT)
5347 if test -n "$MOZ_VP8_ENCODER" ; then
5348 AC_DEFINE(MOZ_VP8_ENCODER)
5351 if test -n "$MOZ_NATIVE_LIBVPX"; then
5352 dnl ============================
5353 dnl === libvpx Version check ===
5354 dnl ============================
5355 dnl Check to see if we have a system libvpx package.
5356 PKG_CHECK_MODULES(MOZ_LIBVPX, vpx >= 1.0.0)
5358 MOZ_CHECK_HEADER([vpx/vpx_decoder.h], [],
5359 [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.])])
5362 AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver, [],
5363 [AC_MSG_ERROR([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found])])
5368 AC_SUBST(MOZ_NATIVE_LIBVPX)
5369 AC_SUBST(MOZ_LIBVPX_CFLAGS)
5370 AC_SUBST(MOZ_LIBVPX_LIBS)
5372 if test "$MOZ_WEBM"; then
5374 if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then
5381 if test -n "$MOZ_VP8" -a -z "$MOZ_NATIVE_LIBVPX"; then
5383 dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
5384 dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
5385 dnl We currently require gcc on all arm platforms.
5388 VPX_NEED_OBJ_INT_EXTRACT=
5390 dnl See if we have assembly on this platform.
5391 case "$OS_ARCH:$CPU_ARCH" in
5393 VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC"
5397 VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC"
5401 VPX_ASFLAGS="-f x64 -rnasm -pnasm"
5405 dnl Check for yasm 1.1 or greater.
5406 if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then
5407 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.])
5408 elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
5409 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.])
5411 VPX_ASFLAGS="-f win32 -rnasm -pnasm -DPIC"
5413 dnl The encoder needs obj_int_extract to get asm offsets.
5417 if test -n "$GNU_AS" ; then
5419 dnl These flags are a lie; they're just used to enable the requisite
5420 dnl opcodes; actual arch detection is done at runtime.
5421 VPX_ASFLAGS="-march=armv7-a -mfpu=neon"
5422 VPX_DASH_C_FLAG="-c"
5423 VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl'
5424 VPX_ASM_SUFFIX="$ASM_SUFFIX"
5429 if $CC -E -dM -</dev/null | grep -q __ELF__; then
5430 VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
5435 if $CC -E -dM -</dev/null | grep -q __ELF__; then
5436 VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
5442 if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_X86_ASM" -a -z "$VPX_AS"; then
5443 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.])
5446 if test -n "$MOZ_VP8_ENCODER" -a \
5447 -z "$GNU_CC" -a -z "$INTEL_CC" -a -z "$CLANG_CC" ; then
5448 dnl We prefer to get asm offsets using inline assembler, which the above
5449 dnl compilers can do. When we're not using one of those, we have to fall
5450 dnl back to obj_int_extract, which reads them from a compiled object
5451 dnl file. Unfortunately, that only works if we're compiling on a system
5452 dnl with the header files for the appropriate object file format.
5453 VPX_NEED_OBJ_INT_EXTRACT=1
5456 if test -n "$VPX_X86_ASM"; then
5457 AC_DEFINE(VPX_X86_ASM)
5458 elif test -n "$VPX_ARM_ASM"; then
5459 AC_DEFINE(VPX_ARM_ASM)
5461 AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.])
5465 dnl ========================================================
5466 dnl = Disable Wave decoder support
5467 dnl ========================================================
5468 MOZ_ARG_DISABLE_BOOL(wave,
5469 [ --disable-wave Disable Wave decoder support],
5473 if test -n "$MOZ_WAVE"; then
5478 dnl ========================================================
5479 dnl = Handle dependent CUBEB and MEDIA defines
5480 dnl ========================================================
5482 if test -n "$MOZ_SPEEX_RESAMPLER"; then
5483 AC_DEFINE(MOZ_SPEEX_RESAMPLER)
5486 if test -n "$MOZ_SOUNDTOUCH"; then
5487 AC_DEFINE(MOZ_SOUNDTOUCH)
5490 if test -n "$MOZ_CUBEB"; then
5491 AC_DEFINE(MOZ_CUBEB)
5494 if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then
5495 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/])
5498 if test -n "$MOZ_VORBIS"; then
5499 AC_DEFINE(MOZ_VORBIS)
5502 if test -n "$MOZ_TREMOR"; then
5503 AC_DEFINE(MOZ_TREMOR)
5506 if test -n "$MOZ_OPUS"; then
5510 dnl ========================================================
5511 dnl = Check alsa availability on Linux if using sydneyaudio
5512 dnl ========================================================
5514 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
5515 if test -n "$MOZ_CUBEB" -a "$OS_TARGET" = "Linux"; then
5519 MOZ_ARG_ENABLE_BOOL(alsa,
5520 [ --enable-alsa Enable Alsa support (default on Linux)],
5524 if test -n "$MOZ_ALSA"; then
5525 AC_DEFINE(MOZ_CUBEB)
5526 PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
5527 [echo "$MOZ_ALSA_PKG_ERRORS"
5528 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.)])])
5532 AC_SUBST(MOZ_ALSA_CFLAGS)
5533 AC_SUBST(MOZ_ALSA_LIBS)
5535 dnl ========================================================
5536 dnl = Enable PulseAudio
5537 dnl ========================================================
5539 MOZ_ARG_ENABLE_BOOL(pulseaudio,
5540 [ --enable-pulseaudio Enable PulseAudio support (experimental)],
5544 if test -n "$MOZ_PULSEAUDIO"; then
5545 AC_DEFINE(MOZ_CUBEB)
5546 if test -z "$gonkdir"; then
5547 PKG_CHECK_MODULES(MOZ_PULSEAUDIO, libpulse, ,
5548 [echo "$MOZ_PULSEAUDIO_PKG_ERRORS"
5549 AC_MSG_ERROR([pulseaudio audio backend requires libpulse development package])])
5551 MOZ_PULSEAUDIO_CFLAGS="-I$gonkdir/external/pulseaudio/pulseaudio/src"
5552 MOZ_PULSEAUDIO_LIBS="-lpulse"
5556 AC_SUBST(MOZ_PULSEAUDIO)
5557 AC_SUBST(MOZ_PULSEAUDIO_CFLAGS)
5558 AC_SUBST(MOZ_PULSEAUDIO_LIBS)
5560 dnl ========================================================
5561 dnl = Enable GStreamer
5562 dnl ========================================================
5563 if test "$OS_TARGET" = "Linux"; then
5567 MOZ_ARG_ENABLE_BOOL(gstreamer,
5568 [ --enable-gstreamer Enable GStreamer support],
5572 if test "$MOZ_GSTREAMER"; then
5573 # API version, eg 0.10, 1.0 etc
5574 GST_API_VERSION=0.10
5575 # core/base release number
5577 PKG_CHECK_MODULES(GSTREAMER,
5578 gstreamer-$GST_API_VERSION >= $GST_VERSION
5579 gstreamer-app-$GST_API_VERSION
5580 gstreamer-plugins-base-$GST_API_VERSION, ,
5581 AC_MSG_ERROR([gstreamer and gstreamer-plugins-base development packages are needed to build gstreamer backend. Install them or disable gstreamer support with --disable-gstreamer]))
5582 if test -n "$GSTREAMER_LIBS"; then
5583 _SAVE_LDFLAGS=$LDFLAGS
5584 LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5585 AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=)
5586 if test -n "$_HAVE_LIBGSTVIDEO" ; then
5587 GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5589 AC_MSG_ERROR([gstreamer-plugins-base found, but no libgstvideo. Something has gone terribly wrong. Try reinstalling gstreamer-plugins-base; failing that, disable the gstreamer backend with --disable-gstreamer.])
5591 LDFLAGS=$_SAVE_LDFLAGS
5593 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])
5596 AC_SUBST(GSTREAMER_CFLAGS)
5597 AC_SUBST(GSTREAMER_LIBS)
5598 AC_SUBST(MOZ_GSTREAMER)
5600 if test -n "$MOZ_GSTREAMER"; then
5601 AC_DEFINE(MOZ_GSTREAMER)
5605 dnl ========================================================
5606 dnl Permissions System
5607 dnl ========================================================
5608 MOZ_ARG_DISABLE_BOOL(permissions,
5609 [ --disable-permissions Disable permissions (popup and cookie blocking)],
5614 dnl ========================================================
5615 dnl Child permissions, currently only used for b2g
5616 dnl ========================================================
5617 if test -n "$MOZ_B2G"; then
5618 if test -n "$MOZ_PERMISSIONS"; then
5619 MOZ_CHILD_PERMISSIONS=1
5621 AC_MSG_ERROR([You need to enable MOZ_PERMISSIONS for MOZ_CHILD_PERMISSIONS])
5624 AC_SUBST(MOZ_CHILD_PERMISSIONS)
5626 dnl ========================================================
5628 dnl ========================================================
5629 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5630 [ --disable-negotiateauth Disable GSS-API negotiation ],
5631 MOZ_AUTH_EXTENSION=,
5632 MOZ_AUTH_EXTENSION=1 )
5634 dnl ========================================================
5635 dnl Pref extensions (autoconfig)
5636 dnl ========================================================
5637 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5638 [ --disable-pref-extensions
5639 Disable pref extensions such as autoconfig],
5640 MOZ_PREF_EXTENSIONS=,
5641 MOZ_PREF_EXTENSIONS=1 )
5643 dnl ========================================================
5644 dnl Searching of system directories for extensions.
5645 dnl Note: this switch is meant to be used for test builds
5646 dnl whose behavior should not depend on what happens to be
5647 dnl installed on the local machine.
5648 dnl ========================================================
5649 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
5650 [ --disable-system-extension-dirs
5651 Disable searching system- and account-global
5652 directories for extensions of any kind; use
5653 only profile-specific extension directories],
5654 ENABLE_SYSTEM_EXTENSION_DIRS=,
5655 ENABLE_SYSTEM_EXTENSION_DIRS=1 )
5656 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
5657 AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
5660 dnl ========================================================
5661 dnl = Universalchardet
5662 dnl ========================================================
5663 MOZ_ARG_DISABLE_BOOL(universalchardet,
5664 [ --disable-universalchardet
5665 Disable universal encoding detection],
5666 MOZ_UNIVERSALCHARDET=,
5667 MOZ_UNIVERSALCHARDET=1 )
5669 if test -n "${JAVA_BIN_PATH}"; then
5670 dnl Look for javac and jar in the specified path.
5671 JAVA_PATH="$JAVA_BIN_PATH"
5673 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5674 JAVA_PATH="$JAVA_HOME/bin:$PATH"
5677 MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5678 MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5679 MOZ_PATH_PROG(JAVAH, javah, :, [$JAVA_PATH])
5680 MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5681 MOZ_PATH_PROG(JARSIGNER, jarsigner, :, [$JAVA_PATH])
5682 MOZ_PATH_PROG(KEYTOOL, keytool, :, [$JAVA_PATH])
5684 if test -n "${JAVA_BIN_PATH}" -o \
5685 \( "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk" \); then
5686 if test -z "$JAVA" -o "$JAVA" = ":"; then
5687 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}])
5689 if test -z "$JAVAC" -o "$JAVAC" = ":"; then
5690 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}])
5692 if test -z "$JAVAH" -o "$JAVAH" = ":"; then
5693 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}])
5695 if test -z "$JAR" -o "$JAR" = ":"; then
5696 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}])
5698 if test -z "$JARSIGNER" -o "$JARSIGNER" = ":"; then
5699 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}])
5701 if test -z "$KEYTOOL" -o "$KEYTOOL" = ":"; then
5702 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}])
5706 dnl ========================================================
5707 dnl = ANGLE OpenGL->D3D translator for WebGL
5708 dnl = * only applies to win32
5709 dnl = * enabled by default (shipping build); requires explicit --disable to disable
5710 dnl ========================================================
5712 MOZ_DIRECTX_SDK_PATH=
5713 MOZ_DIRECTX_SDK_CPU_SUFFIX=
5714 MOZ_D3DCOMPILER_CAB=
5715 MOZ_D3DCOMPILER_DLL=
5716 case "$target_os" in
5718 MOZ_ANGLE_RENDERER=1
5722 # The DirectX SDK libraries are split into x86 and x64 sub-directories
5723 case "${target_cpu}" in
5725 MOZ_DIRECTX_SDK_CPU_SUFFIX=x86
5728 MOZ_DIRECTX_SDK_CPU_SUFFIX=x64
5732 MOZ_ARG_DISABLE_BOOL(webgl,
5733 [ --disable-webgl Disable building of the WebGL implementation],
5734 MOZ_WEBGL_DISABLED=1,
5735 MOZ_WEBGL_DISABLED=)
5737 if test -n "$MOZ_WEBGL_DISABLED"; then
5742 if test -n "$MOZ_WEBGL"; then
5743 AC_DEFINE(MOZ_WEBGL)
5746 if test -n "$MOZ_WEBGL_CONFORMANT"; then
5747 AC_DEFINE(MOZ_WEBGL_CONFORMANT)
5750 # Locate a DirectX SDK here so we can use it for both ANGLE and
5752 if test "$OS_TARGET" = "WINNT" -a -z "$CROSS_COMPILE"; then
5753 # Get the SDK path from the registry.
5754 # First try to get the June 2010 SDK
5755 MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1`
5756 if test -z "$MOZ_DIRECTX_SDK_REG_KEY" ; then
5757 # Otherwise just take whatever comes first
5758 MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1`
5760 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'`
5763 if test -n "$MOZ_ANGLE_RENDERER" -a -z "$CROSS_COMPILE"; then
5764 if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then
5765 AC_MSG_ERROR([Found the February 2010 DirectX SDK. Need the June 2010 DirectX SDK, or newer. Upgrade your SDK or reconfigure with --disable-webgl.])
5768 if test -n "$MOZ_DIRECTX_SDK_PATH" &&
5769 test -f "$MOZ_DIRECTX_SDK_PATH"/include/d3dx9.h &&
5770 test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_DIRECTX_SDK_CPU_SUFFIX/dxguid.lib ; then
5771 AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH])
5773 AC_MSG_ERROR([Couldn't find the DirectX SDK, needed for WebGL. Either install it (June 2010 version or newer), or reconfigure with --disable-webgl.])
5776 # Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib
5777 MOZ_D3DX9_VERSION=`dumpbin //headers "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_DIRECTX_SDK_CPU_SUFFIX/d3dx9.lib | egrep d3dx9_[[0-9]][[0-9]]\.dll | head -n1 | sed 's/.*\([[0-9]][[0-9]]\).*/\\1/g'`
5779 if test -z "$MOZ_D3DX9_VERSION" ; then
5780 AC_MSG_ERROR([Couldn't determine the D3DX9 version, needed for WebGL. Either reinstall the DirectX SDK (June 2010 version or newer), or reconfigure with --disable-webgl.])
5783 MOZ_D3DCOMPILER_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_DIRECTX_SDK_CPU_SUFFIX}.cab | head -n1`
5785 if test -z "$MOZ_D3DCOMPILER_CAB"; then
5786 AC_MSG_ERROR([Couldn't find the DirectX redistributable files. Either reinstall the DirectX SDK (making sure the "DirectX Redistributable Files" option is selected), or reconfigure with --disable-webgl.])
5789 MOZ_D3DCOMPILER_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll
5792 dnl ========================================================
5794 dnl ========================================================
5796 MOZ_GAMEPAD_BACKEND=stub
5798 # Gamepad DOM is built on supported platforms by default.
5799 case "$OS_TARGET" in
5807 MOZ_ARG_DISABLE_BOOL(gamepad,
5808 [ --disable-gamepad Disable gamepad support],
5812 if test "$MOZ_GAMEPAD"; then
5813 case "$OS_TARGET" in
5815 MOZ_GAMEPAD_BACKEND=cocoa
5818 if test -n "$MOZ_DIRECTX_SDK_PATH" ; then
5819 if ! test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_DIRECTX_SDK_CPU_SUFFIX/dxguid.lib ; then
5822 elif test "$GCC" != "yes"; then
5825 if test -z "$MOZ_GAMEPAD"; then
5826 AC_MSG_ERROR([Couldn't find the DirectX SDK, needed for gamepad support. Please install it or, reconfigure with --disable-gamepad to disable gamepad support.])
5828 MOZ_GAMEPAD_BACKEND=windows
5831 MOZ_CHECK_HEADER([linux/joystick.h])
5832 if test "$ac_cv_header_linux_joystick_h" != "yes"; then
5833 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.])
5835 MOZ_GAMEPAD_BACKEND=linux
5841 AC_DEFINE(MOZ_GAMEPAD)
5843 AC_SUBST(MOZ_GAMEPAD)
5844 AC_SUBST(MOZ_GAMEPAD_BACKEND)
5846 dnl ========================================================
5847 dnl = Breakpad crash reporting (on by default on supported platforms)
5848 dnl ========================================================
5851 i?86-*-mingw*|x86_64-*-mingw*)
5854 i?86-apple-darwin*|x86_64-apple-darwin*)
5857 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
5858 if test "$MOZ_ENABLE_GTK"; then
5862 *-android*|*-linuxandroid*)
5870 MOZ_ARG_DISABLE_BOOL(crashreporter,
5871 [ --disable-crashreporter Disable breakpad crash reporting],
5872 [MOZ_CRASHREPORTER=],
5873 [MOZ_CRASHREPORTER=F # Force enable breakpad])
5875 if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT"; then
5876 if test "$MOZ_CRASHREPORTER" = F; then
5877 AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
5882 if test -n "$MOZ_CRASHREPORTER"; then
5883 AC_DEFINE(MOZ_CRASHREPORTER)
5885 if test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS" && \
5886 test -z "$SKIP_LIBRARY_CHECKS"; then
5887 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5888 AC_SUBST(MOZ_GTHREAD_CFLAGS)
5889 AC_SUBST(MOZ_GTHREAD_LIBS)
5892 if test "$OS_ARCH" = "WINNT"; then
5893 if test -z "$HAVE_64BIT_OS"; then
5894 MOZ_CRASHREPORTER_INJECTOR=1
5895 AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
5900 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5901 [ --with-crashreporter-enable-percent=NN
5902 Enable sending crash reports by default on NN% of users. (default=100)],
5903 [ val=`echo $withval | sed 's/[^0-9]//g'`
5904 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5906 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5907 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5909 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5911 dnl ========================================================
5912 dnl = libjpeg-turbo configuration
5913 dnl ========================================================
5915 if test -z "$MOZ_NATIVE_JPEG"; then
5919 MOZ_ARG_DISABLE_BOOL(libjpeg_turbo,
5920 [ --disable-libjpeg-turbo Disable optimized jpeg decoding routines],
5922 MOZ_LIBJPEG_TURBO=1)
5924 if test "$MOZ_NATIVE_JPEG" = 1 -a "$MOZ_LIBJPEG_TURBO" = 1; then
5925 AC_MSG_ERROR([cannot use --with-system-jpeg with --enable-libjpeg-turbo.])
5928 dnl Detect if we can use yasm to compile libjpeg-turbo's optimized assembly
5931 if test -n "$MOZ_LIBJPEG_TURBO"; then
5933 dnl Do we support libjpeg-turbo on this platform?
5934 case "$OS_ARCH:$OS_TEST" in
5936 LIBJPEG_TURBO_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC -DMACHO"
5937 LIBJPEG_TURBO_X86_ASM=1
5940 LIBJPEG_TURBO_ASFLAGS="-f macho64 -rnasm -pnasm -D__x86_64__ -DPIC -DMACHO"
5941 LIBJPEG_TURBO_X64_ASM=1
5943 WINNT:x86|WINNT:i?86)
5944 LIBJPEG_TURBO_ASFLAGS="-f win32 -rnasm -pnasm -DPIC -DWIN32"
5945 LIBJPEG_TURBO_X86_ASM=1
5948 LIBJPEG_TURBO_ASFLAGS="-f win64 -rnasm -pnasm -D__x86_64__ -DPIC -DWIN64 -DMSVC"
5949 LIBJPEG_TURBO_X64_ASM=1
5952 LIBJPEG_TURBO_ASFLAGS="-march=armv7-a -mfpu=neon"
5953 LIBJPEG_TURBO_ARM_ASM=1
5956 if $CC -E -dM -</dev/null | grep -q __ELF__; then
5957 LIBJPEG_TURBO_ASFLAGS="-f elf32 -rnasm -pnasm -DPIC -DELF"
5958 LIBJPEG_TURBO_X86_ASM=1
5962 if $CC -E -dM -</dev/null | grep -q __ELF__; then
5963 LIBJPEG_TURBO_ASFLAGS="-f elf64 -rnasm -pnasm -D__x86_64__ -DPIC -DELF"
5964 LIBJPEG_TURBO_X64_ASM=1
5971 dnl If we're on an x86 or x64 system which supports libjpeg-turbo's asm routines
5972 dnl and --disable-libjpeg-turbo wasn't passed, check for Yasm, and error out if
5973 dnl it doesn't exist or we have too old of a version.
5974 if test -n "$LIBJPEG_TURBO_X86_ASM" -o -n "$LIBJPEG_TURBO_X64_ASM" ; then
5975 LIBJPEG_TURBO_AS=$YASM
5977 if test -z "$LIBJPEG_TURBO_AS" ; then
5978 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.])
5981 dnl Check that we have the right yasm version. We require 1.0.1 or newer
5982 dnl on Linux and 1.1 or newer everywhere else.
5983 if test "$OS_ARCH" = "Linux" ; then
5984 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
5985 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.])
5988 if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
5989 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.])
5994 dnl If we're on an ARM system which supports libjpeg-turbo's asm routines and
5995 dnl --disable-libjpeg-turbo wasn't passed, use the C compiler as the assembler.
5996 if test -n "$LIBJPEG_TURBO_ARM_ASM" ; then
5997 echo "Using $AS as the assembler for ARM code."
5998 LIBJPEG_TURBO_AS=$AS
6001 if test -n "$LIBJPEG_TURBO_X86_ASM"; then
6002 AC_DEFINE(LIBJPEG_TURBO_X86_ASM)
6003 elif test -n "$LIBJPEG_TURBO_X64_ASM"; then
6004 AC_DEFINE(LIBJPEG_TURBO_X64_ASM)
6005 elif test -n "$LIBJPEG_TURBO_ARM_ASM"; then
6006 AC_DEFINE(LIBJPEG_TURBO_ARM_ASM)
6007 elif test -n "$MOZ_LIBJPEG_TURBO"; then
6008 dnl Warn if we're not building the optimized routines, even though the user
6009 dnl didn't specify --disable-libjpeg-turbo.
6010 AC_MSG_WARN([No assembler or assembly support for libjpeg-turbo. Using unoptimized C routines.])
6013 dnl ========================================================
6014 dnl = Enable compilation of specific extension modules
6015 dnl ========================================================
6017 MOZ_ARG_ENABLE_STRING(extensions,
6018 [ --enable-extensions Enable extensions],
6019 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6020 if test "$option" = "yes" -o "$option" = "all"; then
6021 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6022 elif test "$option" = "no" -o "$option" = "none"; then
6024 elif test "$option" = "default"; then
6025 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6026 elif test `echo "$option" | grep -c \^-` != 0; then
6027 option=`echo $option | sed 's/^-//'`
6028 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6030 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6033 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6035 if test -z "$MOZ_ENABLE_GNOMEVFS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6036 # Suppress warning on non-X11 platforms
6037 if test -n "$MOZ_X11"; then
6038 AC_MSG_WARN([Removing gnomevfs from MOZ_EXTENSIONS due to no --enable-gnomevfs.])
6040 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6043 dnl Do not build gnomevfs with libxul based apps
6044 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6045 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6048 if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6049 # Suppress warning on non-X11 platforms
6050 if test -n "$MOZ_X11"; then
6051 AC_MSG_WARN([Removing gio from MOZ_EXTENSIONS due to --disable-gio.])
6053 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6056 dnl Do not build gio with libxul based apps
6057 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6058 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6061 if test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6063 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6065 AC_SUBST(MOZ_GIO_COMPONENT)
6067 if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6068 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6069 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6073 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6075 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6076 dnl when trying to build a nonexistent extension.
6077 for extension in $MOZ_EXTENSIONS; do
6078 if test ! -d "${srcdir}/extensions/${extension}"; then
6079 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6083 if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
6084 AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
6087 dnl ========================================================
6088 dnl Build Freetype in the tree
6089 dnl ========================================================
6090 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6091 [ --enable-tree-freetype Enable Tree FreeType],
6092 MOZ_TREE_FREETYPE=1,
6093 MOZ_TREE_FREETYPE= )
6094 if test -n "$MOZ_TREE_FREETYPE"; then
6095 if test -n "$_WIN32_MSVC"; then
6096 AC_ERROR("building with in-tree freetype is not supported on MSVC")
6098 AC_DEFINE(MOZ_TREE_FREETYPE)
6099 AC_SUBST(MOZ_TREE_FREETYPE)
6100 MOZ_ENABLE_CAIRO_FT=1
6101 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6102 FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6103 CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6104 FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6106 CAIRO_FT_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6107 AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6108 AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6109 AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6110 AC_SUBST(CAIRO_FT_CFLAGS)
6113 dnl ========================================================
6115 dnl ========================================================
6116 dnl Abort Windows build if the required major version and
6117 dnl minimum minor version of Unicode NSIS isn't in the path
6118 dnl (unless in case of cross compiling, for which Unicode
6119 dnl is not yet sufficient).
6120 if test "$OS_ARCH" = "WINNT"; then
6121 REQ_NSIS_MAJOR_VER=2
6122 MIN_NSIS_MINOR_VER=46
6123 MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensisu-2.46 makensis)
6124 if test -n "$MAKENSISU" -a "$MAKENSISU" != ":"; then
6125 AC_MSG_RESULT([yes])
6127 MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\).*\-Unicode$/\1/g'`
6129 if test ! "$MAKENSISU_VER" = ""; then
6130 MAKENSISU_MAJOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $1 }'`
6131 MAKENSISU_MINOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $2 }'`
6133 AC_MSG_CHECKING([for Unicode NSIS with major version == $REQ_NSIS_MAJOR_VER and minor version >= $MIN_NSIS_MINOR_VER])
6134 if test "$MAKENSISU_VER" = "" || \
6135 test ! "$MAKENSISU_MAJOR_VER" = "$REQ_NSIS_MAJOR_VER" -o \
6136 ! "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER; then
6138 if test -z "$CROSS_COMPILE"; then
6139 AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS with a major version of $REQ_NSIS_MAJOR_VER and a minimum minor version of $MIN_NSIS_MINOR_VER in your path.])
6144 elif test -z "$CROSS_COMPILE"; then
6145 AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS with a major version of $REQ_NSIS_MAJOR_VER and a minimum minor version of $MIN_NSIS_MINOR_VER in your path.])
6151 dnl ========================================================
6153 dnl ========================================================
6154 MOZ_ARG_DISABLE_BOOL(webapp-runtime,
6155 [ --disable-webapp-runtime Disable Web App Runtime],
6156 MOZ_WEBAPP_RUNTIME=,
6157 MOZ_WEBAPP_RUNTIME=1)
6158 if test "$MOZ_WIDGET_TOOLKIT" != "windows" -a "$MOZ_WIDGET_TOOLKIT" != "cocoa" -a "$MOZ_WIDGET_TOOLKIT" != "gtk2"; then
6161 if test "$OS_ARCH" = "WINNT" -a -z "$MAKENSISU" -a -n "$CROSS_COMPILE"; then
6164 AC_SUBST(MOZ_WEBAPP_RUNTIME)
6165 if test "$MOZ_WEBAPP_RUNTIME"; then
6166 AC_DEFINE(MOZ_WEBAPP_RUNTIME)
6169 AC_MSG_CHECKING([for tar archiver])
6170 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6171 if test -z "$TAR"; then
6172 AC_MSG_ERROR([no tar archiver found in \$PATH])
6174 AC_MSG_RESULT([$TAR])
6177 AC_MSG_CHECKING([for wget])
6178 AC_CHECK_PROGS(WGET, wget, "")
6179 AC_MSG_RESULT([$WGET])
6182 dnl ========================================================
6184 dnl ========================================================
6186 if test -n "$MOZ_SIGN_CMD"; then
6187 AC_DEFINE(MOZ_SIGNING)
6190 dnl ========================================================
6191 dnl Maintenance Service
6192 dnl ========================================================
6194 MOZ_ARG_ENABLE_BOOL(maintenance-service,
6195 [ --enable-maintenance-service Enable building of maintenanceservice],
6196 MOZ_MAINTENANCE_SERVICE=1,
6197 MOZ_MAINTENANCE_SERVICE= )
6199 if test -n "$MOZ_MAINTENANCE_SERVICE"; then
6200 if test "$OS_ARCH" = "WINNT"; then
6201 AC_DEFINE(MOZ_MAINTENANCE_SERVICE)
6203 AC_MSG_ERROR([Can only build with --enable-maintenance-service with a Windows target])
6207 dnl ========================================================
6208 dnl Verify MAR signatures
6209 dnl ========================================================
6211 MOZ_ARG_ENABLE_BOOL(verify-mar,
6212 [ --enable-verify-mar Enable verifying MAR signatures],
6213 MOZ_VERIFY_MAR_SIGNATURE=1,
6214 MOZ_VERIFY_MAR_SIGNATURE= )
6216 if test -n "$MOZ_VERIFY_MAR_SIGNATURE"; then
6217 if test "$OS_ARCH" = "WINNT"; then
6218 AC_DEFINE(MOZ_VERIFY_MAR_SIGNATURE)
6220 AC_MSG_ERROR([Can only build with --enable-verify-mar with a Windows target])
6224 dnl ========================================================
6225 dnl Enable building the signmar program.
6226 dnl This option is much different than the --enable-verify-mar option.
6227 dnl --enable-verify-mar is for enabling the verification check on MAR
6228 dnl files in the updater. The --enable-signmar option is for building
6229 dnl the signmar program.
6230 dnl ========================================================
6232 MOZ_ARG_ENABLE_BOOL(signmar,
6233 [ --enable-signmar Enable building the signmar program],
6234 MOZ_ENABLE_SIGNMAR=1,
6235 MOZ_ENABLE_SIGNMAR= )
6237 if test -n "$MOZ_ENABLE_SIGNMAR"; then
6238 AC_DEFINE(MOZ_ENABLE_SIGNMAR)
6241 dnl ========================================================
6243 dnl ========================================================
6245 MOZ_ARG_DISABLE_BOOL(updater,
6246 [ --disable-updater Disable building of updater],
6250 if test -n "$MOZ_UPDATER"; then
6251 AC_DEFINE(MOZ_UPDATER)
6254 # tools/update-packaging is not checked out by default.
6255 MOZ_ARG_ENABLE_BOOL(update-packaging,
6256 [ --enable-update-packaging
6257 Enable tools/update-packaging],
6258 MOZ_UPDATE_PACKAGING=1,
6259 MOZ_UPDATE_PACKAGING= )
6260 AC_SUBST(MOZ_UPDATE_PACKAGING)
6262 dnl ========================================================
6263 dnl build the tests by default
6264 dnl ========================================================
6265 MOZ_ARG_DISABLE_BOOL(tests,
6266 [ --disable-tests Do not build test libraries & programs],
6270 if test -n "$ENABLE_TESTS"; then
6273 AC_DEFINE(MOZ_ENABLE_GTEST)
6274 AC_DEFINE_UNQUOTED(GTEST_HAS_RTTI, 0)
6275 AC_SUBST(MOZ_ENABLE_GTEST)
6276 AC_SUBST(GTEST_HAS_RTTI)
6277 if test -n "$_WIN32_MSVC"; then
6278 AC_DEFINE_UNQUOTED(_VARIADIC_MAX, 10)
6280 if test "${OS_TARGET}" = "Android"; then
6281 AC_DEFINE(GTEST_OS_LINUX_ANDROID)
6282 AC_DEFINE(GTEST_USE_OWN_TR1_TUPLE)
6283 AC_DEFINE_UNQUOTED(GTEST_HAS_CLONE, 0)
6284 AC_SUBST(GTEST_OS_LINUX_ANDROID)
6285 AC_SUBST(GTEST_USE_OWN_TR1_TUPLE)
6286 AC_SUBST(GTEST_HAS_CLONE)
6290 dnl ========================================================
6291 dnl parental controls (for Windows Vista)
6292 dnl ========================================================
6293 MOZ_ARG_DISABLE_BOOL(parental-controls,
6294 [ --disable-parental-controls
6295 Do not build parental controls],
6296 MOZ_DISABLE_PARENTAL_CONTROLS=1,
6297 MOZ_DISABLE_PARENTAL_CONTROLS=)
6298 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6299 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6302 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6304 dnl ========================================================
6305 dnl = Disable DOMCrypto
6306 dnl ========================================================
6307 if test -n "$MOZ_DISABLE_CRYPTOLEGACY"; then
6308 AC_DEFINE(MOZ_DISABLE_CRYPTOLEGACY)
6310 AC_SUBST(MOZ_DISABLE_CRYPTOLEGACY)
6312 dnl ========================================================
6313 dnl = Disable libpkix
6314 dnl ========================================================
6315 if test -n "$NSS_NO_LIBPKIX"; then
6316 AC_DEFINE(NSS_NO_LIBPKIX)
6318 AC_SUBST(NSS_NO_LIBPKIX)
6320 dnl ========================================================
6321 dnl = Content process sandboxing
6322 dnl ========================================================
6323 if test -n "$gonkdir"; then
6324 MOZ_CONTENT_SANDBOX=1
6327 MOZ_ARG_ENABLE_BOOL(content-sandbox,
6328 [ --enable-content-sandbox Enable sandboxing support for content-processes],
6329 MOZ_CONTENT_SANDBOX=1,
6330 MOZ_CONTENT_SANDBOX=)
6332 if test -n "$MOZ_CONTENT_SANDBOX"; then
6333 AC_DEFINE(MOZ_CONTENT_SANDBOX)
6336 AC_SUBST(MOZ_CONTENT_SANDBOX)
6338 MOZ_ARG_ENABLE_BOOL(content-sandbox-reporter,
6339 [ --enable-content-sandbox-reporter Enable syscall reporter to troubleshoot syscalls denied by the content-processes sandbox],
6340 MOZ_CONTENT_SANDBOX_REPORTER=1,
6341 MOZ_CONTENT_SANDBOX_REPORTER=)
6343 if test -n "$MOZ_CONTENT_SANDBOX_REPORTER"; then
6344 AC_DEFINE(MOZ_CONTENT_SANDBOX_REPORTER)
6347 AC_SUBST(MOZ_CONTENT_SANDBOX_REPORTER)
6349 dnl ========================================================
6351 dnl = Module specific options
6353 dnl ========================================================
6354 MOZ_ARG_HEADER(Individual module options)
6356 dnl ========================================================
6357 dnl = Disable feed handling components
6358 dnl ========================================================
6359 MOZ_ARG_DISABLE_BOOL(feeds,
6360 [ --disable-feeds Disable feed handling and processing components],
6363 if test -n "$MOZ_FEEDS"; then
6364 AC_DEFINE(MOZ_FEEDS)
6366 if test "$MOZ_BUILD_APP" = "browser"; then
6367 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6371 dnl ========================================================
6372 dnl Check for sqlite
6373 dnl ========================================================
6376 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6377 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
6378 MOZ_NATIVE_SQLITE=1,
6379 MOZ_NATIVE_SQLITE= )
6381 if test -z "$MOZ_NATIVE_SQLITE"
6384 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6386 dnl ============================
6387 dnl === SQLite Version check ===
6388 dnl ============================
6389 dnl Check to see if the system SQLite package is new enough.
6390 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6392 dnl ==================================
6393 dnl === SQLITE_SECURE_DELETE check ===
6394 dnl ==================================
6395 dnl Check to see if the system SQLite package is compiled with
6396 dnl SQLITE_SECURE_DELETE enabled.
6397 AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6398 _SAVE_CFLAGS="$CFLAGS"
6399 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6401 LIBS="$LIBS $SQLITE_LIBS"
6402 AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6404 #include "sqlite3.h"
6406 int main(int argc, char **argv){
6407 return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6409 ac_cv_sqlite_secure_delete=yes,
6410 ac_cv_sqlite_secure_delete=no,
6411 ac_cv_sqlite_secure_delete=no
6414 AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6415 CFLAGS="$_SAVE_CFLAGS"
6417 if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6418 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6421 dnl ===============================
6422 dnl === SQLITE_THREADSAFE check ===
6423 dnl ===============================
6424 dnl Check to see if the system SQLite package is compiled with
6425 dnl SQLITE_THREADSAFE enabled.
6426 AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6427 _SAVE_CFLAGS="$CFLAGS"
6428 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6430 LIBS="$LIBS $SQLITE_LIBS"
6431 AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6433 #include "sqlite3.h"
6435 int main(int argc, char **argv){
6436 return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6438 ac_cv_sqlite_threadsafe=yes,
6439 ac_cv_sqlite_threadsafe=no,
6440 ac_cv_sqlite_threadsafe=no
6443 AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6444 CFLAGS="$_SAVE_CFLAGS"
6446 if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6447 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6450 dnl ================================
6451 dnl === SQLITE_ENABLE_FTS3 check ===
6452 dnl ================================
6453 dnl check to see if the system SQLite package is compiled with
6454 dnl SQLITE_ENABLE_FTS3 enabled.
6455 AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6456 _SAVE_CFLAGS="$CFLAGS"
6457 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6459 LIBS="$LIBS $SQLITE_LIBS"
6460 AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6462 #include "sqlite3.h"
6464 int main(int argc, char **argv){
6465 return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6467 ac_cv_sqlite_enable_fts3=yes,
6468 ac_cv_sqlite_enable_fts3=no,
6469 ac_cv_sqlite_enable_fts3=no
6472 AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6473 CFLAGS="$_SAVE_CFLAGS"
6475 if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6476 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6479 dnl =========================================
6480 dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
6481 dnl =========================================
6482 dnl check to see if the system SQLite package is compiled with
6483 dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
6484 AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
6485 _SAVE_CFLAGS="$CFLAGS"
6486 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6488 LIBS="$LIBS $SQLITE_LIBS"
6489 AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
6491 #include "sqlite3.h"
6493 int main(int argc, char **argv){
6494 return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
6496 ac_cv_sqlite_enable_unlock_notify=yes,
6497 ac_cv_sqlite_enable_unlock_notify=no,
6498 ac_cv_sqlite_enable_unlock_notify=no
6501 AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
6502 CFLAGS="$_SAVE_CFLAGS"
6504 if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
6505 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
6509 if test -n "$MOZ_NATIVE_SQLITE"; then
6510 AC_DEFINE(MOZ_NATIVE_SQLITE)
6512 AC_SUBST(MOZ_NATIVE_SQLITE)
6514 dnl ========================================================
6515 dnl = Enable help viewer (off by default)
6516 dnl ========================================================
6517 if test -n "$MOZ_HELP_VIEWER"; then
6518 dnl Do this if defined in confvars.sh
6519 AC_DEFINE(MOZ_HELP_VIEWER)
6522 dnl ========================================================
6523 dnl = Enable safe browsing (anti-phishing)
6524 dnl ========================================================
6525 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6526 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
6527 MOZ_SAFE_BROWSING=1,
6528 MOZ_SAFE_BROWSING= )
6529 if test -n "$MOZ_SAFE_BROWSING"; then
6530 AC_DEFINE(MOZ_SAFE_BROWSING)
6532 AC_SUBST(MOZ_SAFE_BROWSING)
6534 dnl ========================================================
6535 dnl = Enable url-classifier
6536 dnl ========================================================
6537 dnl Implicitly enabled by default if building with safe-browsing
6538 if test -n "$MOZ_SAFE_BROWSING"; then
6539 MOZ_URL_CLASSIFIER=1
6541 MOZ_ARG_ENABLE_BOOL(url-classifier,
6542 [ --enable-url-classifier Enable url classifier module],
6543 MOZ_URL_CLASSIFIER=1,
6544 MOZ_URL_CLASSIFIER= )
6545 if test -n "$MOZ_URL_CLASSIFIER"; then
6546 AC_DEFINE(MOZ_URL_CLASSIFIER)
6548 AC_SUBST(MOZ_URL_CLASSIFIER)
6550 dnl ========================================================
6551 dnl = Disable zipwriter
6552 dnl ========================================================
6553 MOZ_ARG_DISABLE_BOOL(zipwriter,
6554 [ --disable-zipwriter Disable zipwriter component],
6557 AC_SUBST(MOZ_ZIPWRITER)
6559 dnl ========================================================
6561 dnl ========================================================
6563 MOZ_ARG_WITH_STRING(gl-provider,
6564 [ --with-gl-provider=ID
6565 Set GL provider backend type],
6566 [ val=`echo $withval`
6567 MOZ_GL_PROVIDER="$val"])
6569 if test -n "$MOZ_GL_PROVIDER"; then
6570 MOZ_GL_DEFAULT_PROVIDER=$MOZ_GL_PROVIDER
6571 AC_SUBST(MOZ_GL_PROVIDER)
6572 AC_DEFINE_UNQUOTED(MOZ_GL_PROVIDER, GLContextProvider$MOZ_GL_PROVIDER)
6574 AC_SUBST(MOZ_GL_DEFAULT_PROVIDER)
6575 AC_DEFINE_UNQUOTED(GL_PROVIDER_$MOZ_GL_DEFAULT_PROVIDER)
6577 dnl ========================================================
6578 dnl = faststripe theme
6579 dnl ========================================================
6580 MOZ_ARG_ENABLE_BOOL(faststripe,
6581 [ --enable-faststripe Use faststripe theme],
6582 MOZ_THEME_FASTSTRIPE=1,
6583 MOZ_THEME_FASTSTRIPE= )
6584 AC_SUBST(MOZ_THEME_FASTSTRIPE)
6586 dnl ========================================================
6588 dnl = Feature options that require extra sources to be pulled
6590 dnl ========================================================
6591 dnl MOZ_ARG_HEADER(Features that require extra sources)
6593 dnl ========================================================
6595 dnl = Runtime debugging and Optimization Options
6597 dnl ========================================================
6598 MOZ_ARG_HEADER(Runtime debugging and Optimizations)
6600 dnl ========================================================
6601 dnl enable mobile optimizations
6602 dnl ========================================================
6603 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
6604 [ --enable-mobile-optimize
6605 Enable mobile optimizations],
6606 MOZ_GFX_OPTIMIZE_MOBILE=1)
6608 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
6610 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
6611 AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
6614 dnl ========================================================
6615 dnl = Enable code optimization. ON by default.
6616 dnl ========================================================
6617 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6618 MOZ_OPTIMIZE_FLAGS="-O"
6621 MOZ_ARG_ENABLE_STRING(optimize,
6622 [ --disable-optimize Disable compiler optimization
6623 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6624 [ if test "$enableval" != "no"; then
6626 if test -n "$enableval" -a "$enableval" != "yes"; then
6627 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6632 fi ], MOZ_OPTIMIZE=1)
6634 MOZ_SET_FRAMEPTR_FLAGS
6636 if test "$COMPILE_ENVIRONMENT"; then
6637 if test -n "$MOZ_OPTIMIZE"; then
6638 AC_MSG_CHECKING([for valid optimization flags])
6639 _SAVE_CFLAGS=$CFLAGS
6640 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6641 AC_TRY_COMPILE([#include <stdio.h>],
6642 [printf("Hello World\n");],
6645 AC_MSG_RESULT([$_results])
6646 if test "$_results" = "no"; then
6647 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6649 CFLAGS=$_SAVE_CFLAGS
6651 fi # COMPILE_ENVIRONMENT
6653 AC_SUBST(MOZ_OPTIMIZE)
6654 AC_SUBST(MOZ_FRAMEPTR_FLAGS)
6655 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6656 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6657 AC_SUBST(MOZ_ALLOW_HEAP_EXECUTE_FLAGS)
6658 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6659 AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS)
6661 dnl ========================================================
6662 dnl = Enable any treating of compile warnings as errors
6663 dnl ========================================================
6664 MOZ_ARG_ENABLE_BOOL(warnings-as-errors,
6665 [ --enable-warnings-as-errors
6666 Enable treating of warnings as errors],
6667 MOZ_ENABLE_WARNINGS_AS_ERRORS=1,
6668 MOZ_ENABLE_WARNINGS_AS_ERRORS=)
6669 if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
6670 WARNINGS_AS_ERRORS=''
6671 elif test "$GNU_CC"; then
6672 # Prevent the following GCC warnings from being treated as errors:
6673 # -Wuninitialized - too many false positives
6674 # -Wmaybe-uninitialized - too many false positives
6675 # -Wdeprecated-declarations - we don't want our builds held hostage when a
6676 # platform-specific API becomes deprecated.
6677 MOZ_C_SUPPORTS_WARNING(-W, no-error=uninitialized, ac_c_has_noerror_uninitialized)
6678 MOZ_CXX_SUPPORTS_WARNING(-W, no-error=uninitialized, ac_cxx_has_noerror_uninitialized)
6679 MOZ_C_SUPPORTS_WARNING(-W, no-error=maybe-uninitialized, ac_c_has_noerror_maybe_uninitialized)
6680 MOZ_CXX_SUPPORTS_WARNING(-W, no-error=maybe-uninitialized, ac_cxx_has_noerror_maybe_uninitialized)
6681 MOZ_C_SUPPORTS_WARNING(-W, no-error=deprecated-declarations, ac_c_has_noerror_deprecated_declarations)
6682 MOZ_CXX_SUPPORTS_WARNING(-W, no-error=deprecated-declarations, ac_cxx_has_noerror_deprecated_declarations)
6685 dnl ========================================================
6686 dnl = Disable runtime logging checks
6687 dnl ========================================================
6688 MOZ_ARG_DISABLE_BOOL(logging,
6689 [ --disable-logging Disable logging facilities],
6690 NS_DISABLE_LOGGING=1,
6691 NS_DISABLE_LOGGING= )
6692 if test "$NS_DISABLE_LOGGING"; then
6693 AC_DEFINE(NS_DISABLE_LOGGING)
6695 AC_DEFINE(MOZ_LOGGING)
6698 dnl ========================================================
6699 dnl = This will enable logging of addref, release, ctor, dtor.
6700 dnl ========================================================
6701 _ENABLE_LOGREFCNT=42
6702 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6703 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
6704 _ENABLE_LOGREFCNT=1,
6705 _ENABLE_LOGREFCNT= )
6706 if test "$_ENABLE_LOGREFCNT" = "1"; then
6707 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6708 elif test -z "$_ENABLE_LOGREFCNT"; then
6709 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6712 dnl ========================================================
6713 dnl moz_dump_painting
6714 dnl ========================================================
6715 MOZ_ARG_ENABLE_BOOL(dump-painting,
6716 [ --enable-dump-painting Enable paint debugging.],
6717 MOZ_DUMP_PAINTING=1,
6718 MOZ_DUMP_PAINTING= )
6719 if test -n "$MOZ_DUMP_PAINTING"; then
6720 AC_DEFINE(MOZ_DUMP_PAINTING)
6721 AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
6723 if test -n "$MOZ_DEBUG"; then
6724 AC_DEFINE(MOZ_DUMP_PAINTING)
6727 dnl ========================================================
6728 dnl = Enable trace malloc
6729 dnl ========================================================
6730 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6731 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6732 [ --enable-trace-malloc Enable malloc tracing; also disables DMD and jemalloc],
6735 if test "$NS_TRACE_MALLOC"; then
6736 # Please, Mr. Linker Man, don't take away our symbol names
6737 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6739 AC_DEFINE(NS_TRACE_MALLOC)
6741 AC_SUBST(NS_TRACE_MALLOC)
6743 dnl ========================================================
6745 dnl ========================================================
6747 MOZ_ARG_ENABLE_BOOL(dmd,
6748 [ --enable-dmd Enable DMD; also enables jemalloc and replace-malloc],
6752 if test "$NS_TRACE_MALLOC"; then # trace-malloc disables DMD
6755 if test "$MOZ_DMD"; then
6759 if test "${CPU_ARCH}" = "arm"; then
6760 CFLAGS="$CFLAGS -funwind-tables"
6761 CXXFLAGS="$CXXFLAGS -funwind-tables"
6764 MOZ_MEMORY=1 # DMD enables jemalloc
6765 MOZ_REPLACE_MALLOC=1 # DMD enables replace-malloc
6769 dnl ========================================================
6770 dnl = Enable jemalloc
6771 dnl ========================================================
6772 MOZ_ARG_ENABLE_BOOL(jemalloc,
6773 [ --enable-jemalloc Replace memory allocator with jemalloc],
6777 if test "$NS_TRACE_MALLOC"; then
6781 if test "${OS_TARGET}" = "Android"; then
6782 dnl On Android, we use WRAP_LDFLAGS to link everything to mozglue
6784 elif test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin" -o "${OS_TARGET}" = "OS2"; then
6785 dnl On Windows, OSX and OS2, we want to link all our binaries against mozglue
6786 if test -z "$GNU_CC"; then
6787 MOZ_GLUE_LDFLAGS='$(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
6789 MOZ_GLUE_LDFLAGS='-L$(LIBXUL_DIST)/lib $(call EXPAND_LIBNAME,mozglue)'
6792 dnl On other Unix systems, we only want to link executables against mozglue
6793 MOZ_GLUE_PROGRAM_LDFLAGS='$(MKSHLIB_FORCE_ALL) $(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
6794 dnl On other Unix systems, where mozglue is a static library, jemalloc is
6795 dnl separated for the SDK, so we need to add it here.
6796 if test "$MOZ_MEMORY" = 1 -o \( "$LIBXUL_SDK" -a -f "$LIBXUL_SDK/lib/${LIB_PREFIX}memory.${LIB_SUFFIX}" \); then
6797 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(call EXPAND_LIBNAME_PATH,memory,$(LIBXUL_DIST)/lib)'
6799 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(MKSHLIB_UNFORCE_ALL)'
6800 if test -n "$GNU_CC"; then
6801 dnl And we need mozglue symbols to be exported.
6802 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS -rdynamic"
6804 if test "$MOZ_LINKER" = 1; then
6805 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS $MOZ_ZLIB_LIBS"
6809 dnl ========================================================
6810 dnl = Enable dynamic replacement of malloc implementation
6811 dnl ========================================================
6812 MOZ_ARG_ENABLE_BOOL(replace-malloc,
6813 [ --enable-replace-malloc Enable ability to dynamically replace the malloc implementation],
6814 MOZ_REPLACE_MALLOC=1,
6815 MOZ_REPLACE_MALLOC= )
6817 if test -n "$MOZ_REPLACE_MALLOC" -a -z "$MOZ_MEMORY"; then
6818 dnl We don't want to enable jemalloc unconditionally because it may be a
6819 dnl deliberate choice not to enable it (bug 702250, for instance)
6820 AC_MSG_ERROR([--enable-replace-malloc requires --enable-jemalloc])
6821 elif test -n "$MOZ_REPLACE_MALLOC"; then
6822 MOZ_NATIVE_JEMALLOC=
6824 dnl Replace-malloc Mac linkage quirks
6825 if test -n "$MACOSX_DEPLOYMENT_TARGET"; then
6826 AC_CACHE_CHECK([how to do weak dynamic linking],
6827 ac_cv_weak_dynamic_linking,
6828 [echo 'extern void foo() __attribute__((weak_import));int bar() { if (foo) foo(); return 0; }' > conftest.c
6829 if AC_TRY_COMMAND([${CC-cc} -o conftest${DLL_SUFFIX} $CFLAGS -dynamiclib $LDFLAGS -Wl,-U,_foo conftest.c $LIBS 1>&5]) &&
6830 test -s conftest${DLL_SUFFIX}; then
6831 dnl There are several ways the linker can put link edit rules in a binary:
6832 dnl - classic info only (for OSX < 10.6)
6833 dnl - dyld info only
6835 if otool -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO_ONLY" > /dev/null; then
6840 if otool -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO" > /dev/null; then
6845 dnl With classic info, we need to build with -flat_namespace.
6846 dnl With dyld info, Xcode 4.5 does the right thing without additional flags,
6847 dnl but Xcode < 4.5 requires a dummy library and -flat_namespace because it
6848 dnl forgets to set the weak flag in the dyld info.
6849 dnl See http://glandium.org/blog/?p=2764 for more details.
6851 dnl Values for ac_cv_weak_dynamic_linking, and subsequently
6852 dnl MOZ_REPLACE_MALLOC_LINKAGE are thus:
6853 dnl - "flat namespace" when -flat_namespace alone is needed
6854 dnl - "dummy library" when a dummy library and -flat_namespace are needed
6855 dnl - "compiler support" when nothing is needed
6856 if test -n "$_DYLD_INFO" && dyldinfo -bind conftest${DLL_SUFFIX} 2> /dev/null | grep "_foo (weak import)" > /dev/null; then
6857 if test -n "$_CLASSIC_INFO"; then
6858 ac_cv_weak_dynamic_linking="flat namespace"
6860 ac_cv_weak_dynamic_linking="compiler support"
6863 if test -n "$_DYLD_INFO"; then
6864 ac_cv_weak_dynamic_linking="dummy library"
6866 ac_cv_weak_dynamic_linking="flat namespace"
6870 AC_ERROR([couldn't compile a simple C file])
6873 MOZ_REPLACE_MALLOC_LINKAGE="$ac_cv_weak_dynamic_linking"
6876 AC_SUBST(MOZ_REPLACE_MALLOC)
6877 AC_SUBST(MOZ_REPLACE_MALLOC_LINKAGE)
6879 dnl ========================================================
6880 dnl = Jemalloc build setup
6881 dnl ========================================================
6882 if test -z "$MOZ_MEMORY"; then
6883 if test -n "$MOZ_JEMALLOC3" -a -z "$MOZ_REPLACE_MALLOC"; then
6884 MOZ_NATIVE_JEMALLOC=1
6885 AC_CHECK_FUNCS(mallctl nallocm,,
6886 [MOZ_NATIVE_JEMALLOC=
6888 if test -n "$MOZ_NATIVE_JEMALLOC"; then
6890 AC_DEFINE(MOZ_MEMORY)
6891 AC_DEFINE(MOZ_JEMALLOC3)
6892 AC_DEFINE(MOZ_NATIVE_JEMALLOC)
6897 if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
6898 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.])
6903 AC_DEFINE(MOZ_MEMORY)
6904 if test -n "$MOZ_JEMALLOC3"; then
6905 AC_DEFINE(MOZ_JEMALLOC3)
6907 if test "x$MOZ_DEBUG" = "x1"; then
6908 AC_DEFINE(MOZ_MEMORY_DEBUG)
6910 dnl The generic feature tests that determine how to compute ncpus are long and
6911 dnl complicated. Therefore, simply define special cpp variables for the
6912 dnl platforms we have special knowledge of.
6915 AC_DEFINE(MOZ_MEMORY_DARWIN)
6918 AC_DEFINE(MOZ_MEMORY_BSD)
6920 *-android*|*-linuxandroid*)
6921 AC_DEFINE(MOZ_MEMORY_LINUX)
6922 AC_DEFINE(MOZ_MEMORY_ANDROID)
6923 if test -z "$gonkdir"; then
6926 AC_DEFINE(MOZ_MEMORY_GONK)
6931 AC_DEFINE(MOZ_MEMORY_LINUX)
6934 AC_DEFINE(MOZ_MEMORY_BSD)
6937 AC_DEFINE(MOZ_MEMORY_SOLARIS)
6940 AC_DEFINE(MOZ_MEMORY_WINDOWS)
6941 if test -z "$MOZ_DEBUG"; then
6942 WIN32_CRT_LIBS="msvcrt.lib msvcprt.lib"
6944 WIN32_CRT_LIBS="msvcrtd.lib msvcprtd.lib"
6946 dnl Look for a broken crtdll.obj
6947 WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj`
6948 lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH
6949 if grep -q '__imp__\{0,1\}free' crtdll.obj; then
6950 MOZ_GLUE_LDFLAGS='-LIBPATH:$(DIST)/lib -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt'
6951 dnl Also pass this to NSPR/NSS
6952 DLLFLAGS="$DLLFLAGS $MOZ_GLUE_LDFLAGS"
6954 DLLFLAGS="$DLLFLAGS -LIBPATH:\$(DIST)/lib -DEFAULTLIB:mozglue"
6961 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
6965 AC_SUBST(MOZ_MEMORY)
6966 AC_SUBST(MOZ_JEMALLOC3)
6967 AC_SUBST(MOZ_NATIVE_JEMALLOC)
6968 AC_SUBST(MOZ_GLUE_LDFLAGS)
6969 AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS)
6970 AC_SUBST(WIN32_CRT_LIBS)
6971 dnl Need to set this for make because NSS doesn't have configure
6974 dnl We need to wrap dlopen and related functions on Android because we use
6976 if test "$OS_TARGET" = Android; then
6977 WRAP_LDFLAGS="${WRAP_LDFLAGS} -L$_objdir/dist/lib -lmozglue"
6978 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=getaddrinfo,--wrap=freeaddrinfo,--wrap=gai_strerror"
6979 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=PR_GetEnv,--wrap=PR_SetEnv"
6980 if test -z "$gonkdir"; then
6981 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=fork,--wrap=pthread_atfork,--wrap=raise"
6982 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=memccpy,--wrap=memchr,--wrap=memrchr,--wrap=memcmp,--wrap=memcpy,--wrap=memmove,--wrap=memset,--wrap=memmem,--wrap=memswap,--wrap=index,--wrap=strchr,--wrap=strrchr,--wrap=strlen,--wrap=strcmp,--wrap=strcpy,--wrap=strcat,--wrap=strcasecmp,--wrap=strncasecmp,--wrap=strstr,--wrap=strcasestr,--wrap=strtok,--wrap=strtok_r,--wrap=strerror,--wrap=strerror_r,--wrap=strnlen,--wrap=strncat,--wrap=strncmp,--wrap=strncpy,--wrap=strlcat,--wrap=strlcpy,--wrap=strcspn,--wrap=strpbrk,--wrap=strsep,--wrap=strspn,--wrap=strcoll,--wrap=strxfrm"
6984 if test "$MOZ_WIDGET_TOOLKIT" = gonk -a -n "$MOZ_NUWA_PROCESS"; then
6985 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"
6989 dnl ========================================================
6990 dnl = Use malloc wrapper lib
6991 dnl ========================================================
6992 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
6993 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
6997 if test -n "$_WRAP_MALLOC"; then
6998 if test -n "$GNU_CC"; then
6999 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=malloc,--wrap=calloc,--wrap=valloc,--wrap=free,--wrap=realloc,--wrap=memalign"
7000 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=__builtin_new,--wrap=__builtin_vec_new,--wrap=__builtin_delete,--wrap=__builtin_vec_delete"
7001 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=strdup,--wrap=strndup"
7002 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=posix_memalign,--wrap=malloc_usable_size"
7003 dnl Wrap operator new and operator delete on Android.
7004 if test "$OS_TARGET" = "Android"; then
7005 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_Znwj,--wrap=_Znaj,--wrap=_ZdlPv,--wrap=_ZdaPv"
7006 dnl Wrap the nothrow variants too.
7007 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_ZnwjRKSt9nothrow_t,--wrap=_ZnajRKSt9nothrow_t,--wrap=_ZdlPvRKSt9nothrow_t,--wrap=_ZdaPvRKSt9nothrow_t"
7010 AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains])
7014 dnl ========================================================
7015 dnl = Location of malloc wrapper lib
7016 dnl ========================================================
7017 MOZ_ARG_WITH_STRING(wrap-malloc,
7018 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
7019 WRAP_LDFLAGS="${WRAP_LDFLAGS} $withval")
7021 dnl ========================================================
7022 dnl = Use JS Call tracing
7023 dnl ========================================================
7024 MOZ_ARG_ENABLE_BOOL(trace-jscalls,
7025 [ --enable-trace-jscalls Enable JS call enter/exit callback (default=no)],
7026 MOZ_TRACE_JSCALLS=1,
7027 MOZ_TRACE_JSCALLS= )
7028 if test -n "$MOZ_TRACE_JSCALLS"; then
7029 AC_DEFINE(MOZ_TRACE_JSCALLS)
7032 dnl ========================================================
7033 dnl = Use incremental GC
7034 dnl ========================================================
7036 MOZ_ARG_DISABLE_BOOL(gcincremental,
7037 [ --disable-gcincremental Disable incremental GC],
7039 if test -n "$JSGC_INCREMENTAL"; then
7040 AC_DEFINE(JSGC_INCREMENTAL)
7043 dnl ========================================================
7044 dnl Zealous JavaScript GC
7045 dnl ========================================================
7046 MOZ_ARG_ENABLE_BOOL(gczeal,
7047 [ --enable-gczeal Enable zealous JavaScript GCing],
7050 if test -n "$JS_GC_ZEAL" -o -n "$MOZ_DEBUG"; then
7051 AC_DEFINE(JS_GC_ZEAL)
7054 dnl ========================================================
7055 dnl JS opt-mode assertions and minidump instrumentation
7056 dnl ========================================================
7057 MOZ_ARG_ENABLE_BOOL(js-diagnostics,
7058 [ --enable-js-diagnostics
7059 Enable JS diagnostic assertions and breakpad data],
7060 JS_CRASH_DIAGNOSTICS=1,
7061 JS_CRASH_DIAGNOSTICS= )
7062 if test -n "$JS_CRASH_DIAGNOSTICS"; then
7063 AC_DEFINE(JS_CRASH_DIAGNOSTICS)
7067 MOZ_CHECK_COMPILER_WRAPPER
7069 dnl ========================================================
7070 dnl = Enable static checking using gcc-dehydra
7071 dnl ========================================================
7073 MOZ_ARG_WITH_STRING(static-checking,
7074 [ --with-static-checking=path/to/gcc_dehydra.so
7075 Enable static checking of code using GCC-dehydra],
7076 DEHYDRA_PATH=$withval,
7079 if test -n "$DEHYDRA_PATH"; then
7080 if test ! -f "$DEHYDRA_PATH"; then
7081 AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7083 AC_DEFINE(NS_STATIC_CHECKING)
7085 AC_SUBST(DEHYDRA_PATH)
7087 dnl ========================================================
7088 dnl = Enable using the clang plugin to build
7089 dnl ========================================================
7091 MOZ_ARG_ENABLE_BOOL(clang-plugin,
7092 [ --enable-clang-plugin Enable building with the mozilla clang plugin ],
7093 ENABLE_CLANG_PLUGIN=1,
7094 ENABLE_CLANG_PLUGIN= )
7095 if test -n "$ENABLE_CLANG_PLUGIN"; then
7096 if test -z "$CLANG_CC"; then
7097 AC_MSG_ERROR([Can't use clang plugin without clang.])
7099 AC_DEFINE(MOZ_CLANG_PLUGIN)
7102 AC_SUBST(ENABLE_CLANG_PLUGIN)
7104 dnl ========================================================
7105 dnl = Enable stripping of libs & executables
7106 dnl ========================================================
7107 MOZ_ARG_ENABLE_BOOL(strip,
7108 [ --enable-strip Enable stripping of libs & executables ],
7112 dnl ========================================================
7113 dnl = Enable stripping of libs & executables when packaging
7114 dnl ========================================================
7115 MOZ_ARG_ENABLE_BOOL(install-strip,
7116 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
7120 dnl ========================================================
7121 dnl = --enable-elf-dynstr-gc
7122 dnl ========================================================
7123 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
7124 [ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
7125 USE_ELF_DYNSTR_GC=1,
7126 USE_ELF_DYNSTR_GC= )
7128 dnl ========================================================
7129 dnl = --disable-elf-hack
7130 dnl ========================================================
7133 MOZ_ARG_DISABLE_BOOL(elf-hack,
7134 [ --disable-elf-hack Disable elf hacks],
7136 [USE_ELF_HACK=F # Force enable elf-hack])
7138 # Disable elf hack for profiling because the built in profiler
7139 # doesn't read the segments properly with elf hack. This is
7140 # temporary and should be fixed soon in the profiler.
7141 if test "$MOZ_PROFILING" = 1; then
7142 if test "$USE_ELF_HACK" = F; then
7143 AC_ERROR([--enable-elf-hack is not compatible with --enable-profiling])
7148 # Only enable elfhack where supported
7149 if test "$USE_ELF_HACK" = 1; then
7150 case "${HOST_OS_ARCH},${OS_ARCH}" in
7152 case "${CPU_ARCH}" in
7167 if test -n "$USE_ELF_HACK"; then
7168 dnl PT_GNU_RELRO segment makes the dynamic linker set a read-only flag on
7169 dnl memory addresses it maps to. The result is that by the time elfhack
7170 dnl kicks in, it is not possible to apply relocations because of that,
7171 dnl thus elfhack effectively skips relocations inside the PT_GNU_RELRO
7172 dnl segment. It makes elfhack mostly useless, so considering the problems
7173 dnl we have we PT_GNU_RELRO (e.g. bug 664366), and until elfhack can deal
7174 dnl with PT_GNU_RELRO segments, it's just simpler to disable elfhack when
7175 dnl the linker creates PT_GNU_RELRO segments. However, when we do want
7176 dnl elfhack enabled, disable PT_GNU_RELRO instead.
7177 AC_CACHE_CHECK([whether linker creates PT_GNU_RELRO segments],
7178 LINK_WITH_PT_GNU_RELRO,
7179 [echo "int main() {return 0;}" > conftest.${ac_ext}
7180 if AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.${ac_ext} $LIBS 1>&2) &&
7181 test -s conftest${ac_exeext}; then
7182 if ${TOOLCHAIN_PREFIX}readelf -l conftest${ac_exeext} | grep GNU_RELRO > /dev/null; then
7183 LINK_WITH_PT_GNU_RELRO=yes
7185 LINK_WITH_PT_GNU_RELRO=no
7188 dnl We really don't expect to get here, but just in case
7189 AC_ERROR([couldn't compile a simple C file])
7192 if test "$LINK_WITH_PT_GNU_RELRO" = yes; then
7193 if test "$USE_ELF_HACK" = F; then
7194 AC_MSG_CHECKING([for -z norelro option to ld])
7195 _SAVE_LDFLAGS=$LDFLAGS
7196 LDFLAGS="$LDFLAGS -Wl,-z,norelro"
7197 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
7198 [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,norelro"],
7199 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.]))
7202 AC_MSG_WARN([Disabling elfhack])
7208 dnl ========================================================
7209 dnl = libstdc++ compatibility hacks
7210 dnl ========================================================
7213 MOZ_ARG_ENABLE_BOOL(stdcxx-compat,
7214 [ --enable-stdcxx-compat Enable compatibility with older libstdc++],
7217 if test -n "$STDCXX_COMPAT"; then
7218 eval $(CXX="$CXX" HOST_CXX="$HOST_CXX" $PYTHON $_topsrcdir/build/autoconf/libstdcxx.py)
7219 AC_SUBST(MOZ_LIBSTDCXX_TARGET_VERSION)
7220 AC_SUBST(MOZ_LIBSTDCXX_HOST_VERSION)
7223 dnl ========================================================
7225 dnl = Profiling and Instrumenting
7227 dnl ========================================================
7228 MOZ_ARG_HEADER(Profiling and Instrumenting)
7230 dnl ========================================================
7231 dnl = Enable runtime visual profiling logger
7232 dnl ========================================================
7233 MOZ_ARG_ENABLE_BOOL(visual-event-tracer,
7234 [ --enable-visual-event-tracer Enable visual event tracer instrumentation],
7235 MOZ_VISUAL_EVENT_TRACER=1,
7236 MOZ_VISUAL_EVENT_TRACER=)
7237 if test -n "$MOZ_VISUAL_EVENT_TRACER"; then
7238 AC_DEFINE(MOZ_VISUAL_EVENT_TRACER)
7241 dnl ========================================================
7242 dnl Turn on reflow counting
7243 dnl ========================================================
7244 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7245 [ --enable-reflow-perf Enable reflow performance tracing],
7248 if test -n "$MOZ_REFLOW_PERF"; then
7249 AC_DEFINE(MOZ_REFLOW_PERF)
7252 dnl ========================================================
7253 dnl = Enable Radio Interface for B2G (Gonk usually)
7254 dnl ========================================================
7255 MOZ_ARG_ENABLE_BOOL(b2g-ril,
7256 [ --enable-b2g-ril Set compile flags necessary for testing B2G Radio Interface Layer via network sockets ],
7259 if test -n "$MOZ_B2G_RIL"; then
7260 AC_DEFINE(MOZ_B2G_RIL)
7262 AC_SUBST(MOZ_B2G_RIL)
7264 dnl ========================================================
7265 dnl = Enable Radio FM for B2G (Gonk usually)
7266 dnl ========================================================
7267 if test -n "$MOZ_B2G_FM"; then
7268 AC_DEFINE(MOZ_B2G_FM)
7270 AC_SUBST(MOZ_B2G_FM)
7272 dnl ========================================================
7273 dnl = Enable Rtsp Protocol for B2G (Gonk usually)
7274 dnl ========================================================
7275 if test -n "$MOZ_RTSP"; then
7280 dnl ========================================================
7281 dnl = Enable Bluetooth Interface for B2G (Gonk usually)
7282 dnl ========================================================
7283 MOZ_ARG_ENABLE_BOOL(b2g-bt,
7284 [ --enable-b2g-bt Set compile flags necessary for compiling Bluetooth API for B2G ],
7287 if test -n "$MOZ_B2G_BT"; then
7288 AC_DEFINE(MOZ_B2G_BT)
7290 AC_SUBST(MOZ_B2G_BT)
7292 dnl ========================================================
7293 dnl = Enable Pico Speech Synthesis (Gonk usually)
7294 dnl ========================================================
7295 MOZ_ARG_ENABLE_BOOL(synth-pico,
7296 [ --enable-synth-pico Set compile flags necessary for compiling Pico Web Speech API ],
7299 if test -n "$MOZ_SYNTH_PICO"; then
7300 AC_DEFINE(MOZ_SYNTH_PICO)
7302 AC_SUBST(MOZ_SYNTH_PICO)
7304 dnl ========================================================
7305 dnl = Enable Support for Time Manager API
7306 dnl ========================================================
7307 if test -n "$MOZ_TIME_MANAGER"; then
7308 AC_DEFINE(MOZ_TIME_MANAGER)
7310 AC_SUBST(MOZ_TIME_MANAGER)
7312 dnl ========================================================
7313 dnl = Enable Camera Interface for B2G (Gonk usually)
7314 dnl ========================================================
7315 MOZ_ARG_ENABLE_BOOL(b2g-camera,
7316 [ --enable-b2g-camera Set compile flags necessary for compiling camera API for B2G ],
7319 if test -n "$MOZ_B2G_CAMERA"; then
7320 AC_DEFINE(MOZ_B2G_CAMERA)
7322 AC_SUBST(MOZ_B2G_CAMERA)
7324 dnl ========================================================
7325 dnl = Enable Support B2G-specific changes to the NSS
7326 dnl = certificate trust database.
7327 dnl ========================================================
7328 if test -n "$MOZ_B2G_CERTDATA"; then
7329 AC_DEFINE(MOZ_B2G_CERTDATA)
7331 AC_SUBST(MOZ_B2G_CERTDATA)
7333 dnl ========================================================
7334 dnl = Enable Support for Payment API
7335 dnl ========================================================
7336 if test -n "$MOZ_PAY"; then
7341 dnl ========================================================
7342 dnl = Enable Support for AudioChannelManager API
7343 dnl ========================================================
7344 if test -n "$MOZ_AUDIO_CHANNEL_MANAGER"; then
7345 AC_DEFINE(MOZ_AUDIO_CHANNEL_MANAGER)
7347 AC_SUBST(MOZ_AUDIO_CHANNEL_MANAGER)
7349 dnl ========================================================
7350 dnl = Support for demangling undefined symbols
7351 dnl ========================================================
7352 if test -z "$SKIP_LIBRARY_CHECKS"; then
7355 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7359 # Demangle only for debug or trace-malloc or DMD builds
7360 MOZ_DEMANGLE_SYMBOLS=
7361 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC" -o "$MOZ_DMD"; then
7362 MOZ_DEMANGLE_SYMBOLS=1
7363 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7365 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7367 dnl ========================================================
7368 dnl = Support for gcc stack unwinding (from gcc 3.3)
7369 dnl ========================================================
7370 if test -z "$SKIP_LIBRARY_CHECKS"; then
7371 MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7374 dnl ========================================================
7376 dnl ========================================================
7378 MOZ_ARG_WITH_STRING(jitreport-granularity,
7379 [ --jitreport-granularity=N
7380 Default granularity at which to report JIT code
7383 1 - code ranges for whole functions only
7384 2 - per-line information
7385 3 - per-op information],
7386 JITREPORT_GRANULARITY=$withval,
7387 JITREPORT_GRANULARITY=3)
7389 AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY)
7391 dnl ========================================================
7395 dnl ========================================================
7396 MOZ_ARG_HEADER(Misc. Options)
7398 dnl ========================================================
7399 dnl update xterm title
7400 dnl ========================================================
7401 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7402 [ --enable-xterm-updates Update XTERM titles with current command.],
7406 dnl =========================================================
7408 dnl =========================================================
7409 MOZ_ARG_ENABLE_STRING([chrome-format],
7410 [ --enable-chrome-format=jar|flat|omni
7411 Select FORMAT of chrome files during packaging],
7412 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7414 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7415 MOZ_CHROME_FILE_FORMAT=jar
7418 if test "$MOZ_CHROME_FILE_FORMAT" = "symlink"; then
7419 AC_MSG_ERROR([--enable-chrome-format=symlink has been deprecated. It is now used by default in $DIST/bin on platforms that support it])
7422 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
7423 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7424 test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7425 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, or omni])
7428 dnl =========================================================
7429 dnl Omnijar packaging (bug 552121)
7430 dnl =========================================================
7431 dnl Omnijar packaging is compatible with flat packaging.
7432 dnl In unpackaged builds, omnijar looks for files as if
7433 dnl things were flat packaged. After packaging, all files
7434 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7435 dnl is set to flat since putting files into jars is only
7436 dnl done during packaging with omnijar.
7437 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7439 AC_DEFINE(MOZ_OMNIJAR)
7441 MOZ_PACKAGER_FORMAT="$MOZ_CHROME_FILE_FORMAT"
7442 if test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "OS2" -o "$MOZ_WIDGET_TOOLKIT" = "android"; then
7443 MOZ_CHROME_FILE_FORMAT=flat
7445 MOZ_CHROME_FILE_FORMAT=symlink
7448 if test "$MOZ_WIDGET_TOOLKIT" = "android"; then
7449 dnl Fennec's static resources live in the assets/ folder of the
7450 dnl APK. Adding a path to the name here works because we only
7451 dnl have one omnijar file in the final package (which is not the
7452 dnl case on desktop), and necessitates some contortions during
7453 dnl packaging so that the resources in the omnijar are considered
7454 dnl as rooted at / and not as rooted at assets/ (which again is
7455 dnl not the case on desktop: there are omnijars rooted at webrtc/,
7456 dnl etc). packager.mk handles changing the rooting of the single
7458 OMNIJAR_NAME=assets/omni.ja
7460 OMNIJAR_NAME=omni.ja
7463 AC_SUBST(OMNIJAR_NAME)
7464 AC_SUBST(MOZ_OMNIJAR)
7465 AC_SUBST(MOZ_PACKAGER_FORMAT)
7467 dnl ========================================================
7468 dnl = Define default location for MOZILLA_FIVE_HOME
7469 dnl ========================================================
7470 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7471 [ --with-default-mozilla-five-home
7472 Set the default value for MOZILLA_FIVE_HOME],
7473 [ val=`echo $withval`
7474 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7476 dnl ========================================================
7477 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7478 dnl ========================================================
7479 MOZ_ARG_WITH_STRING(user-appdir,
7480 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
7481 [ val=`echo $withval`
7482 if echo "$val" | grep "\/" >/dev/null; then
7483 AC_MSG_ERROR("Homedir must be single relative path.")
7488 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7490 dnl ========================================================
7491 dnl = Doxygen configuration
7492 dnl ========================================================
7493 dnl Use commas to specify multiple dirs to this arg
7494 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7495 MOZ_ARG_WITH_STRING(doc-input-dirs,
7496 [ --with-doc-input-dirs=DIRS
7497 Header/idl dirs to create docs from],
7498 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7499 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7501 dnl Use commas to specify multiple dirs to this arg
7502 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7503 MOZ_ARG_WITH_STRING(doc-include-dirs,
7504 [ --with-doc-include-dirs=DIRS
7505 Include dirs to preprocess doc headers],
7506 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7507 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7509 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7510 MOZ_ARG_WITH_STRING(doc-output-dir,
7511 [ --with-doc-output-dir=DIR
7512 Dir to generate docs into],
7513 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7514 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7516 if test -z "$SKIP_COMPILER_CHECKS"; then
7517 dnl ========================================================
7519 dnl = Compiler Options
7521 dnl ========================================================
7522 MOZ_ARG_HEADER(Compiler Options)
7524 dnl ========================================================
7525 dnl Check for gcc -pipe support
7526 dnl ========================================================
7527 AC_MSG_CHECKING([for -pipe support])
7528 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
7529 dnl Any gcc that supports firefox supports -pipe.
7530 CFLAGS="$CFLAGS -pipe"
7531 CXXFLAGS="$CXXFLAGS -pipe"
7532 AC_MSG_RESULT([yes])
7537 dnl ========================================================
7538 dnl Profile guided optimization (gcc checks)
7539 dnl ========================================================
7540 dnl Test for profiling options
7541 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
7543 _SAVE_CFLAGS="$CFLAGS"
7544 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
7546 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
7547 AC_TRY_COMPILE([], [return 0;],
7548 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
7549 result="yes" ], result="no")
7550 AC_MSG_RESULT([$result])
7552 if test $result = "yes"; then
7553 PROFILE_GEN_LDFLAGS="-fprofile-generate"
7554 PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch"
7555 PROFILE_USE_LDFLAGS="-fprofile-use"
7558 CFLAGS="$_SAVE_CFLAGS"
7560 if test -n "$INTEL_CC"; then
7561 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
7562 PROFILE_GEN_LDFLAGS=
7563 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
7564 PROFILE_USE_LDFLAGS=
7567 dnl Sun Studio on Solaris
7568 if test "$SOLARIS_SUNPRO_CC"; then
7569 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
7570 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7571 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7572 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7575 AC_SUBST(PROFILE_GEN_CFLAGS)
7576 AC_SUBST(PROFILE_GEN_LDFLAGS)
7577 AC_SUBST(PROFILE_USE_CFLAGS)
7578 AC_SUBST(PROFILE_USE_LDFLAGS)
7582 dnl ========================================================
7583 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7584 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7585 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
7586 dnl ========================================================
7587 _SAVE_CXXFLAGS=$CXXFLAGS
7588 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7589 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7590 ac_nscap_nonconst_opeq_bug,
7599 template <class T, class U>
7600 int operator==(const Pointer<T>& rhs, U* lhs)
7602 return rhs.myPtr == lhs;
7605 template <class T, class U>
7606 int operator==(const Pointer<T>& rhs, const U* lhs)
7608 return rhs.myPtr == lhs;
7616 ac_nscap_nonconst_opeq_bug="no",
7617 ac_nscap_nonconst_opeq_bug="yes")])
7618 CXXFLAGS="$_SAVE_CXXFLAGS"
7620 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7621 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7623 fi # ! SKIP_COMPILER_CHECKS
7625 AC_DEFINE(CPP_THROW_NEW, [throw()])
7628 if test "$COMPILE_ENVIRONMENT"; then
7630 fi # COMPILE_ENVIRONMENT
7632 dnl ========================================================
7634 dnl = Build depencency options
7636 dnl ========================================================
7637 MOZ_ARG_HEADER(Build dependencies)
7639 if test "$GNU_CC" -a "$GNU_CXX"; then
7640 _DEPEND_CFLAGS='-MD -MP -MF $(MDDEPDIR)/$(@F).pp'
7641 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7642 elif test "$SOLARIS_SUNPRO_CC"; then
7645 dnl Don't override this for MSVC
7646 if test -z "$_WIN32_MSVC"; then
7647 _USE_CPP_INCLUDE_FLAG=
7648 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7649 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7651 echo '#include <stdio.h>' > dummy-hello.c
7653 CL_INCLUDES_PREFIX=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/^\([^:]*:[^:]*:\).*stdio.h$/\1/p'`
7655 if test -z "$CL_INCLUDES_PREFIX"; then
7656 AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
7658 AC_SUBST(CL_INCLUDES_PREFIX)
7663 dnl ========================================================
7665 dnl = Static Build Options
7667 dnl ========================================================
7668 MOZ_ARG_HEADER(Static build options)
7670 # split JS out by default to avoid VS2005 PGO crash (bug 591836).
7671 if test "$OS_ARCH" = "WINNT"; then
7675 MOZ_ARG_ENABLE_BOOL(shared-js,
7676 [ --enable-shared-js
7677 Create a shared JavaScript library.],
7681 if test -n "$ENABLE_SHARED_JS"; then
7683 MOZ_JS_LIBS="$MOZ_JS_SHARED_LIBS"
7685 MOZ_JS_LIBS="$MOZ_JS_STATIC_LIBS"
7686 AC_DEFINE(MOZ_STATIC_JS)
7688 AC_SUBST(JS_SHARED_LIBRARY)
7690 AC_SUBST(LIBXUL_LIBS)
7691 XPCOM_LIBS="$LIBXUL_LIBS"
7693 dnl ========================================================
7695 dnl = Standalone module options
7697 dnl ========================================================
7698 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7701 dnl ========================================================
7703 if test -z "$SKIP_PATH_CHECKS"; then
7704 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
7705 if test "$MOZ_ENABLE_GTK2" -o "$USE_ELF_DYNSTR_GC" ; then
7706 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7711 if test -z "${GLIB_GMODULE_LIBS}" \
7712 -a -n "${GLIB_CONFIG}"\
7713 -a "${GLIB_CONFIG}" != no\
7715 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7718 AC_SUBST(GLIB_CFLAGS)
7720 AC_SUBST(GLIB_GMODULE_LIBS)
7722 dnl ========================================================
7723 dnl Graphics checks.
7724 dnl ========================================================
7726 if test "${OS_TARGET}" = "WINNT"; then
7727 if $PERL -e "exit($MOZ_WINSDK_MAXVER < 0x06020000)"; then
7728 MOZ_ENABLE_DIRECT2D1_1=1
7729 AC_SUBST(MOZ_ENABLE_DIRECT2D1_1)
7733 if test "${OS_TARGET}" = "WINNT" -o \
7734 "${OS_ARCH}" = "Darwin" -o \
7735 "${MOZ_WIDGET_TOOLKIT}" = "android" -o \
7736 "${MOZ_WIDGET_TOOLKIT}" = "gonk" -o \
7737 "${MOZ_WIDGET_TOOLKIT}" = "gtk2" -o \
7738 "${MOZ_WIDGET_TOOLKIT}" = "gtk3"; then
7739 case "${target_cpu}" in
7751 MOZ_ARG_ENABLE_BOOL(skia,
7752 [ --enable-skia Enable use of Skia],
7756 if test "$USE_FC_FREETYPE"; then
7757 if test "$COMPILE_ENVIRONMENT"; then
7758 dnl ========================================================
7759 dnl = Check for freetype2 and its functionality
7760 dnl ========================================================
7761 PKG_CHECK_MODULES(FT2, freetype2 >= 6.1.0, _HAVE_FREETYPE2=1, _HAVE_FREETYPE2=)
7763 if test "$_HAVE_FREETYPE2"; then
7765 _SAVE_CFLAGS="$CFLAGS"
7766 LIBS="$LIBS $FT2_LIBS"
7767 CFLAGS="$CFLAGS $FT2_CFLAGS"
7769 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
7770 ac_cv_member_FT_Bitmap_Size_y_ppem,
7771 [AC_TRY_COMPILE([#include <ft2build.h>
7772 #include FT_FREETYPE_H],
7774 if (sizeof s.y_ppem) return 0;
7776 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
7777 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
7778 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
7779 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
7781 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
7783 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
7784 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
7785 [FT_Bitmap_Size structure includes y_ppem field])
7787 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
7790 CFLAGS="$_SAVE_CFLAGS"
7793 _SAVE_CPPFLAGS="$CPPFLAGS"
7794 CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
7795 MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
7796 [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
7797 CPPFLAGS="$_SAVE_CPPFLAGS"
7799 AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
7802 PKG_CHECK_MODULES(_FONTCONFIG, fontconfig,
7804 if test "$MOZ_PANGO"; then
7805 MOZ_PANGO_CFLAGS="$MOZ_PANGO_CFLAGS $_FONTCONFIG_CFLAGS"
7806 MOZ_PANGO_LIBS="$MOZ_PANGO_LIBS $_FONTCONFIG_LIBS"
7808 FT2_CFLAGS="$FT2_CFLAGS $_FONTCONFIG_CFLAGS"
7809 FT2_LIBS="$FT2_LIBS $_FONTCONFIG_LIBS"
7814 dnl ========================================================
7815 dnl Check for pixman and cairo
7816 dnl ========================================================
7819 MOZ_ARG_ENABLE_BOOL(system-cairo,
7820 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
7825 MOZ_ARG_ENABLE_BOOL(system-pixman,
7826 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
7828 MOZ_TREE_PIXMAN=force,
7831 # System cairo depends on system pixman
7832 if test "$MOZ_TREE_PIXMAN" = "force"; then
7833 if test -z "$MOZ_TREE_CAIRO"; then
7834 AC_MSG_ERROR([--disable-system-pixman is incompatible with --enable-system-cairo.])
7838 elif test -z "$MOZ_TREE_CAIRO"; then
7842 if test "$MOZ_TREE_PIXMAN"; then
7843 AC_DEFINE(MOZ_TREE_PIXMAN)
7844 MOZ_PIXMAN_CFLAGS=""
7845 MOZ_PIXMAN_LIBS='$(call EXPAND_LIBNAME_PATH,mozlibpixman,$(DEPTH)/gfx/cairo/libpixman/src)'
7847 PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.19.2)
7848 MOZ_PIXMAN_CFLAGS="$PIXMAN_CFLAGS"
7849 MOZ_PIXMAN_LIBS="$PIXMAN_LIBS"
7851 AC_SUBST(MOZ_PIXMAN_CFLAGS)
7852 AC_SUBST(MOZ_PIXMAN_LIBS)
7854 # Check for headers defining standard int types.
7855 MOZ_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
7857 if test "$MOZ_TREE_CAIRO"; then
7858 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
7859 AC_DEFINE(MOZ_TREE_CAIRO)
7861 # For now we assume that we will have a uint64_t available through
7862 # one of the above headers or mozstdint.h.
7863 AC_DEFINE(HAVE_UINT64_T)
7865 # Define macros for cairo-features.h
7866 TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
7867 if test "$MOZ_X11"; then
7868 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
7869 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
7870 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
7871 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7872 MOZ_ENABLE_CAIRO_FT=1
7873 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
7875 case "$MOZ_WIDGET_TOOLKIT" in
7877 QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
7880 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
7881 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
7882 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
7885 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
7886 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
7887 if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
7888 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
7889 WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
7890 MOZ_ENABLE_D2D_SURFACE=1
7891 MOZ_ENABLE_DWRITE_FONT=1
7893 WIN32_DWRITE_FONT_FEATURE=
7894 WIN32_D2D_SURFACE_FEATURE=
7897 MOZ_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
7899 dnl D3D10 Layers depend on D2D Surfaces.
7900 if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
7901 MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
7905 OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
7906 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7907 MOZ_ENABLE_CAIRO_FT=1
7908 CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
7909 CAIRO_FT_OSLIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
7913 if test "$USE_FC_FREETYPE"; then
7914 FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
7916 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
7917 AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
7918 AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
7919 AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
7920 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
7921 AC_SUBST(CAIRO_FT_CFLAGS)
7923 AC_SUBST(PS_SURFACE_FEATURE)
7924 AC_SUBST(PDF_SURFACE_FEATURE)
7925 AC_SUBST(SVG_SURFACE_FEATURE)
7926 AC_SUBST(XLIB_SURFACE_FEATURE)
7927 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
7928 AC_SUBST(QUARTZ_SURFACE_FEATURE)
7929 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
7930 AC_SUBST(WIN32_SURFACE_FEATURE)
7931 AC_SUBST(OS2_SURFACE_FEATURE)
7932 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
7933 AC_SUBST(FT_FONT_FEATURE)
7934 AC_SUBST(FC_FONT_FEATURE)
7935 AC_SUBST(WIN32_FONT_FEATURE)
7936 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
7937 AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
7938 AC_SUBST(QUARTZ_FONT_FEATURE)
7939 AC_SUBST(PNG_FUNCTIONS_FEATURE)
7940 AC_SUBST(QT_SURFACE_FEATURE)
7941 AC_SUBST(TEE_SURFACE_FEATURE)
7943 MOZ_CAIRO_LIBS='$(call EXPAND_LIBNAME_PATH,mozcairo,$(DEPTH)/gfx/cairo/cairo/src)'" $CAIRO_FT_LIBS"
7944 MOZ_CAIRO_OSLIBS='${CAIRO_FT_OSLIBS}'
7946 if test "$MOZ_X11"; then
7947 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
7950 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
7952 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION)
7953 MOZ_CAIRO_CFLAGS="$CAIRO_CFLAGS"
7954 MOZ_CAIRO_LIBS="$CAIRO_LIBS"
7955 PKG_CHECK_MODULES(CAIRO_TEE, cairo-tee >= $CAIRO_VERSION)
7956 if test "$MOZ_X11"; then
7957 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
7958 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
7959 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_LIBS"
7960 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
7964 AC_SUBST(MOZ_TREE_CAIRO)
7965 AC_SUBST(MOZ_CAIRO_CFLAGS)
7966 AC_SUBST(MOZ_CAIRO_LIBS)
7967 AC_SUBST(MOZ_CAIRO_OSLIBS)
7968 AC_SUBST(MOZ_TREE_PIXMAN)
7970 dnl ========================================================
7972 dnl ========================================================
7974 QCMS_LIBS='$(DEPTH)/gfx/qcms/$(LIB_PREFIX)mozqcms.$(LIB_SUFFIX)'
7977 dnl ========================================================
7979 dnl ========================================================
7980 MOZ_HARFBUZZ_LIBS='$(DEPTH)/gfx/harfbuzz/src/$(LIB_PREFIX)mozharfbuzz.$(LIB_SUFFIX)'
7981 AC_SUBST(MOZ_HARFBUZZ_LIBS)
7983 dnl ========================================================
7985 dnl ========================================================
7986 MOZ_GRAPHITE_LIBS='$(DEPTH)/gfx/graphite2/src/$(LIB_PREFIX)mozgraphite2.$(LIB_SUFFIX)'
7987 AC_SUBST(MOZ_GRAPHITE_LIBS)
7989 dnl ========================================================
7991 dnl ========================================================
7992 MOZ_OTS_LIBS='$(DEPTH)/gfx/ots/src/$(LIB_PREFIX)mozots.$(LIB_SUFFIX)'
7993 AC_SUBST(MOZ_OTS_LIBS)
7995 dnl ========================================================
7997 dnl ========================================================
7998 if test "$MOZ_ENABLE_SKIA"; then
7999 MOZ_SKIA_LIBS='$(DEPTH)/gfx/skia/$(LIB_PREFIX)skia.$(LIB_SUFFIX)'
8000 AC_DEFINE(MOZ_ENABLE_SKIA)
8002 if test "${MOZ_WIDGET_TOOLKIT}" = "android" -o x"$MOZ_WIDGET_TOOLKIT" = x"gonk"; then
8003 AC_DEFINE(SK_BUILD_FOR_ANDROID_NDK)
8004 elif test "$OS_ARCH" = "WINNT"; then
8009 if test "${CPU_ARCH}" != "ppc" -a "${CPU_ARCH}" != "ppc64"; then
8010 MOZ_ENABLE_SKIA_GPU=1
8011 AC_DEFINE(USE_SKIA_GPU)
8012 AC_SUBST(MOZ_ENABLE_SKIA_GPU)
8017 AC_SUBST(MOZ_ENABLE_SKIA)
8018 AC_SUBST(MOZ_SKIA_LIBS)
8020 dnl ========================================================
8022 dnl ========================================================
8023 MOZ_ARG_DISABLE_BOOL(xul,
8024 [ --disable-xul Disable XUL],
8026 if test "$MOZ_XUL"; then
8029 dnl remove extensions that require XUL
8030 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8035 dnl ========================================================
8036 dnl disable profile locking
8037 dnl do no use this in applications that can have more than
8038 dnl one process accessing the profile directory.
8039 dnl ========================================================
8040 MOZ_ARG_DISABLE_BOOL(profilelocking,
8041 [ --disable-profilelocking
8042 Disable profile locking],
8043 MOZ_PROFILELOCKING=,
8044 MOZ_PROFILELOCKING=1 )
8045 if test "$MOZ_PROFILELOCKING"; then
8046 AC_DEFINE(MOZ_PROFILELOCKING)
8049 dnl ========================================================
8050 dnl necko configuration options
8051 dnl ========================================================
8054 dnl option to disable various necko protocols
8056 MOZ_ARG_ENABLE_STRING(necko-protocols,
8057 [ --enable-necko-protocols[={http,ftp,default,all,none}]
8058 Enable/disable specific protocol handlers],
8059 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8060 if test "$option" = "yes" -o "$option" = "all"; then
8061 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8062 elif test "$option" = "no" -o "$option" = "none"; then
8064 elif test "$option" = "default"; then
8065 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8066 elif test `echo "$option" | grep -c \^-` != 0; then
8067 option=`echo $option | sed 's/^-//'`
8068 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8070 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8073 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8075 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8076 AC_SUBST(NECKO_PROTOCOLS)
8077 for p in $NECKO_PROTOCOLS; do
8078 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8079 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_PROTOCOL_$p"
8083 dnl option to disable necko's wifi scanner
8086 case "$OS_TARGET" in
8088 if test -n "$gonkdir"; then
8101 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8102 [ --disable-necko-wifi Disable necko wifi scanner],
8106 if test "$NECKO_WIFI"; then
8107 if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
8108 AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
8110 AC_DEFINE(NECKO_WIFI)
8111 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
8113 AC_SUBST(NECKO_WIFI)
8114 AC_SUBST(NECKO_WIFI_DBUS)
8117 dnl option to disable cookies
8119 MOZ_ARG_DISABLE_BOOL(cookies,
8120 [ --disable-cookies Disable cookie support],
8123 AC_SUBST(NECKO_COOKIES)
8124 if test "$NECKO_COOKIES"; then
8125 AC_DEFINE(NECKO_COOKIES)
8126 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
8130 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8132 MOZ_ARG_DISABLE_BOOL(ctypes,
8133 [ --disable-ctypes Disable js-ctypes],
8136 AC_SUBST(BUILD_CTYPES)
8137 if test "$BUILD_CTYPES"; then
8138 AC_DEFINE(BUILD_CTYPES)
8141 dnl Build Places if required
8142 if test "$MOZ_PLACES"; then
8143 AC_DEFINE(MOZ_PLACES)
8146 dnl Build SocialAPI if required
8147 if test "$MOZ_SOCIAL"; then
8148 AC_DEFINE(MOZ_SOCIAL)
8151 dnl Build Common JS modules provided by services.
8152 AC_SUBST(MOZ_SERVICES_COMMON)
8153 if test -n "$MOZ_SERVICES_COMMON"; then
8154 AC_DEFINE(MOZ_SERVICES_COMMON)
8157 dnl Build Services crypto component (used by Sync)
8158 AC_SUBST(MOZ_SERVICES_CRYPTO)
8159 if test -n "$MOZ_SERVICES_CRYPTO"; then
8160 AC_DEFINE(MOZ_SERVICES_CRYPTO)
8163 dnl Build Firefox Health Reporter Service
8164 AC_SUBST(MOZ_SERVICES_HEALTHREPORT)
8165 if test -n "$MOZ_SERVICES_HEALTHREPORT"; then
8166 AC_DEFINE(MOZ_SERVICES_HEALTHREPORT)
8169 dnl Build Services metrics component
8170 AC_SUBST(MOZ_SERVICES_METRICS)
8171 if test -n "$MOZ_SERVICES_METRICS"; then
8172 AC_DEFINE(MOZ_SERVICES_METRICS)
8175 dnl Build Notifications if required
8176 AC_SUBST(MOZ_SERVICES_NOTIFICATIONS)
8177 if test -n "$MOZ_SERVICES_NOTIFICATIONS"; then
8178 AC_DEFINE(MOZ_SERVICES_NOTIFICATIONS)
8181 dnl Build Sync Services if required
8182 AC_SUBST(MOZ_SERVICES_SYNC)
8183 if test -n "$MOZ_SERVICES_SYNC"; then
8184 AC_DEFINE(MOZ_SERVICES_SYNC)
8187 dnl Build Captive Portal Detector if required
8188 AC_SUBST(MOZ_CAPTIVEDETECT)
8189 if test -n "$MOZ_CAPTIVEDETECT"; then
8190 AC_DEFINE(MOZ_CAPTIVEDETECT)
8193 dnl ========================================================
8194 if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC" -o "$MOZ_DMD"; then
8195 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8198 if test "$MOZ_APP_COMPONENT_INCLUDE"; then
8199 AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_INCLUDE, "$MOZ_APP_COMPONENT_INCLUDE")
8202 if test "$MOZ_APP_COMPONENT_MODULES"; then
8203 AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_MODULES, $MOZ_APP_COMPONENT_MODULES)
8206 dnl ========================================================
8208 dnl = Maintainer debug option (no --enable equivalent)
8210 dnl ========================================================
8215 AC_SUBST(AR_EXTRACT)
8219 AC_SUBST(AS_DASH_C_FLAG)
8228 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8229 AC_SUBST(MOZ_UPDATE_XTERM)
8230 AC_SUBST(MOZ_AUTH_EXTENSION)
8231 AC_SUBST(MOZ_PERMISSIONS)
8232 AC_SUBST(MOZ_PREF_EXTENSIONS)
8233 AC_SUBST(MOZ_JS_LIBS)
8235 AC_SUBST(MOZ_DEBUG_SYMBOLS)
8236 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
8237 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
8238 AC_SUBST(MOZ_DEBUG_FLAGS)
8239 AC_SUBST(MOZ_DEBUG_LDFLAGS)
8240 AC_SUBST(WARNINGS_AS_ERRORS)
8241 AC_SUBST(MOZ_EXTENSIONS)
8242 AC_SUBST(MOZ_JSDEBUGGER)
8243 AC_SUBST(MOZ_ENABLE_PROFILER_SPS)
8246 AC_SUBST(MOZ_INSTRUMENTS)
8247 AC_SUBST(MOZ_CALLGRIND)
8249 AC_SUBST(MOZ_PROFILING)
8251 AC_SUBST(MOZ_PLACES)
8252 AC_SUBST(MOZ_SOCIAL)
8253 AC_SUBST(MOZ_TOOLKIT_SEARCH)
8255 AC_SUBST(NS_PRINTING)
8257 AC_SUBST(MOZ_HELP_VIEWER)
8258 AC_SUBST(TOOLCHAIN_PREFIX)
8267 AC_SUBST(MOZ_PROFILELOCKING)
8269 AC_SUBST(ENABLE_TESTS)
8270 AC_SUBST(ENABLE_MARIONETTE)
8272 AC_SUBST(MOZ_UNIVERSALCHARDET)
8273 AC_SUBST(ACCESSIBILITY)
8274 AC_SUBST(MOZ_SPELLCHECK)
8275 AC_SUBST(MOZ_ANDROID_OMTC)
8276 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
8277 AC_SUBST(MOZ_CRASHREPORTER)
8278 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
8279 AC_SUBST(MOZ_CRASHREPORTER_UPLOAD_FULL_SYMBOLS)
8280 AC_SUBST(MOZ_MAINTENANCE_SERVICE)
8281 AC_SUBST(MOZ_STUB_INSTALLER)
8282 AC_SUBST(MOZ_VERIFY_MAR_SIGNATURE)
8283 AC_SUBST(MOZ_ENABLE_SIGNMAR)
8284 AC_SUBST(MOZ_UPDATER)
8285 AC_SUBST(MOZ_ANGLE_RENDERER)
8286 AC_SUBST(MOZ_DIRECTX_SDK_PATH)
8287 AC_SUBST(MOZ_DIRECTX_SDK_CPU_SUFFIX)
8288 AC_SUBST(MOZ_D3DX9_VERSION)
8289 AC_SUBST(MOZ_D3DCOMPILER_CAB)
8290 AC_SUBST(MOZ_D3DCOMPILER_DLL)
8293 AC_SUBST(MOZ_ANDROID_HISTORY)
8294 AC_SUBST(MOZ_WEBSMS_BACKEND)
8295 AC_SUBST(MOZ_ANDROID_BEAM)
8296 AC_SUBST(MOZ_DISABLE_GECKOVIEW)
8297 AC_SUBST(ENABLE_STRIP)
8298 AC_SUBST(PKG_SKIP_STRIP)
8299 AC_SUBST(STRIP_FLAGS)
8300 AC_SUBST(USE_ELF_DYNSTR_GC)
8301 AC_SUBST(USE_ELF_HACK)
8302 AC_SUBST(INCREMENTAL_LINKER)
8303 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
8304 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
8306 AC_SUBST(MOZ_FIX_LINK_PATHS)
8307 AC_SUBST(XPCOM_LIBS)
8308 AC_SUBST(XPCOM_FROZEN_LDOPTS)
8309 AC_SUBST(XPCOM_GLUE_LDOPTS)
8310 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
8311 AC_SUBST(XPCOM_STATICRUNTIME_GLUE_LDOPTS)
8312 AC_SUBST(XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS)
8314 AC_SUBST(USE_DEPENDENT_LIBS)
8316 AC_SUBST(MOZ_BUILD_ROOT)
8317 AC_SUBST(MOZ_OS2_TOOLS)
8319 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
8320 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
8321 AC_SUBST(MOZ_LINKER_EXTRACT)
8323 dnl ========================================================
8324 dnl = Mac bundle name prefix
8325 dnl ========================================================
8326 MOZ_ARG_WITH_STRING(macbundlename-prefix,
8327 [ --with-macbundlename-prefix=prefix
8328 Prefix for MOZ_MACBUNDLE_NAME],
8329 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
8331 MOZ_MACBUNDLE_NAME=`echo $MOZ_APP_DISPLAYNAME | tr -d ' '`
8332 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
8333 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
8336 if test "$MOZ_DEBUG"; then
8337 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}Debug.app
8339 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
8341 AC_SUBST(MOZ_MACBUNDLE_NAME)
8343 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
8344 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr '[A-Z]' '[a-z]'`
8345 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
8346 if test "$MOZ_DEBUG"; then
8347 MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
8350 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
8351 AC_SUBST(MOZ_MACBUNDLE_ID)
8353 dnl ========================================================
8354 dnl = Child Process Name for IPC
8355 dnl ========================================================
8356 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
8357 MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
8359 # We want to let Android unpack the file at install time, but it only does
8360 # so if the file is named libsomething.so. The lib/ path is also required
8361 # because the unpacked file will be under the lib/ subdirectory and will
8362 # need to be executed from that path.
8363 MOZ_CHILD_PROCESS_NAME="lib/libplugin-container.so"
8365 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
8367 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
8368 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
8370 # The following variables are available to branding and application
8371 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
8372 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
8373 # impacts profile location and user-visible fields.
8374 # - MOZ_APP_BASENAME: Typically stays consistent for multiple branded
8375 # versions of a given application (e.g. Aurora and Firefox both use
8376 # "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used
8377 # for application.ini's "Name" field, which controls profile location in
8378 # the absence of a "Profile" field (see below), and various system
8379 # integration hooks (Unix remoting, Windows MessageWindow name, etc.)
8380 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
8381 # Mac Bundle name, Updater, Installer), it is typically used for nightly
8382 # builds (e.g. Aurora for Firefox).
8383 # - MOZ_APP_VERSION: Defines the application version number.
8384 # - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set,
8385 # defaults to a lowercase form of MOZ_APP_BASENAME.
8386 # - MOZ_APP_PROFILE: When set, used for application.ini's
8387 # "Profile" field, which controls profile location.
8388 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
8389 # crash reporter server url.
8390 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
8391 # - MOZ_EXTENSION_MANAGER: When set, enabled extension manager.
8393 if test -z "$MOZ_APP_NAME"; then
8394 MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
8397 # For extensions and langpacks, we require a max version that is compatible
8398 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
8399 # 10.0a1 and 10.0a2 aren't affected
8400 # 10.0 becomes 10.0.*
8401 # 10.0.1 becomes 10.0.*
8402 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
8403 if test -z "$IS_ALPHA"; then
8405 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*.[0-9]*\).*|\1|"`.*
8408 MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
8411 MOZ_B2G_VERSION=${MOZ_B2G_VERSION:-"1.0.0"}
8412 AC_DEFINE_UNQUOTED(MOZ_B2G_VERSION,"$MOZ_B2G_VERSION")
8413 AC_DEFINE_UNQUOTED(MOZ_B2G_OS_NAME,"$MOZ_B2G_OS_NAME")
8415 AC_SUBST(MOZ_APP_NAME)
8416 AC_SUBST(MOZ_APP_DISPLAYNAME)
8417 AC_SUBST(MOZ_APP_BASENAME)
8418 AC_SUBST(MOZ_APP_VENDOR)
8419 AC_SUBST(MOZ_APP_PROFILE)
8420 AC_SUBST(MOZ_APP_ID)
8421 AC_SUBST(MAR_CHANNEL_ID)
8422 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
8423 AC_SUBST(MOZ_PROFILE_MIGRATOR)
8424 AC_SUBST(MOZ_EXTENSION_MANAGER)
8425 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
8426 AC_SUBST(MOZ_APP_UA_NAME)
8427 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
8428 AC_SUBST(MOZ_APP_VERSION)
8429 AC_SUBST(MOZ_APP_MAXVERSION)
8430 AC_DEFINE_UNQUOTED(FIREFOX_VERSION,$FIREFOX_VERSION)
8431 AC_SUBST(FIREFOX_VERSION)
8432 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
8433 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
8434 AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
8437 AC_SUBST(MOZ_APP_STATIC_INI)
8439 AC_SUBST(MOZ_PKG_SPECIAL)
8441 AC_SUBST(MOZILLA_OFFICIAL)
8443 AC_DEFINE_UNQUOTED(MOZ_TELEMETRY_DISPLAY_REV, 2)
8444 AC_SUBST(MOZ_TELEMETRY_DISPLAY_REV)
8446 if test "$MOZ_TELEMETRY_REPORTING"; then
8447 AC_DEFINE(MOZ_TELEMETRY_REPORTING)
8449 # Enable Telemetry by default for nightly and aurora channels
8450 if test -z "$RELEASE_BUILD"; then
8451 AC_DEFINE(MOZ_TELEMETRY_ON_BY_DEFAULT)
8455 dnl If we have any service that uploads data (and requires data submission
8456 dnl policy alert), set MOZ_DATA_REPORTING.
8457 dnl We need SUBST for build system and DEFINE for xul preprocessor.
8458 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"; then
8459 MOZ_DATA_REPORTING=1
8460 AC_DEFINE(MOZ_DATA_REPORTING)
8461 AC_SUBST(MOZ_DATA_REPORTING)
8465 AC_SUBST(MOZ_BROWSE_INFO)
8466 AC_SUBST(MOZ_TOOLS_DIR)
8467 AC_SUBST(WIN32_REDIST_DIR)
8470 dnl Echo the CFLAGS to remove extra whitespace.
8476 $_WARNINGS_CXXFLAGS \
8479 COMPILE_CFLAGS=`echo \
8484 COMPILE_CXXFLAGS=`echo \
8485 $_DEFINES_CXXFLAGS \
8489 AC_SUBST(SYSTEM_LIBXUL)
8490 AC_SUBST(MOZ_NATIVE_JPEG)
8491 AC_SUBST(MOZ_NATIVE_PNG)
8492 AC_SUBST(MOZ_NATIVE_BZ2)
8494 AC_SUBST(MOZ_JPEG_CFLAGS)
8495 AC_SUBST(MOZ_JPEG_LIBS)
8496 AC_SUBST(MOZ_BZ2_CFLAGS)
8497 AC_SUBST(MOZ_BZ2_LIBS)
8498 AC_SUBST(MOZ_PNG_CFLAGS)
8499 AC_SUBST(MOZ_PNG_LIBS)
8501 if test "$MOZ_WIDGET_TOOLKIT" = gonk -a -n "$MOZ_NUWA_PROCESS"; then
8502 export MOZ_NUWA_PROCESS
8503 AC_DEFINE(MOZ_NUWA_PROCESS)
8505 AC_SUBST(MOZ_NUWA_PROCESS)
8507 AC_SUBST(NSPR_CFLAGS)
8509 AC_SUBST(MOZ_NATIVE_NSPR)
8511 AC_SUBST(NSS_CFLAGS)
8513 AC_SUBST(MOZ_NATIVE_NSS)
8514 AC_SUBST(NSS_DISABLE_DBM)
8517 OS_CXXFLAGS="$CXXFLAGS"
8518 OS_CPPFLAGS="$CPPFLAGS"
8519 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
8520 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
8521 OS_LDFLAGS="$LDFLAGS"
8524 AC_SUBST(OS_CXXFLAGS)
8525 AC_SUBST(OS_CPPFLAGS)
8526 AC_SUBST(OS_COMPILE_CFLAGS)
8527 AC_SUBST(OS_COMPILE_CXXFLAGS)
8528 AC_SUBST(OS_LDFLAGS)
8530 AC_SUBST(CROSS_COMPILE)
8531 AC_SUBST(WCHAR_CFLAGS)
8535 AC_SUBST(HOST_CFLAGS)
8536 AC_SUBST(HOST_CXXFLAGS)
8537 AC_SUBST(HOST_LDFLAGS)
8538 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8540 AC_SUBST(HOST_AR_FLAGS)
8542 AC_SUBST(HOST_RANLIB)
8543 AC_SUBST(HOST_NSPR_MDCPUCFG)
8544 AC_SUBST(HOST_BIN_SUFFIX)
8545 AC_SUBST(HOST_OS_ARCH)
8547 AC_SUBST(TARGET_CPU)
8548 AC_SUBST(TARGET_VENDOR)
8550 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8551 AC_SUBST(TARGET_MD_ARCH)
8552 AC_SUBST(TARGET_XPCOM_ABI)
8555 AC_SUBST(OS_RELEASE)
8558 AC_SUBST(INTEL_ARCHITECTURE)
8559 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
8560 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
8562 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8564 AC_SUBST(WRAP_LDFLAGS)
8567 AC_SUBST(MKSHLIB_FORCE_ALL)
8568 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8569 AC_SUBST(DSO_CFLAGS)
8570 AC_SUBST(DSO_PIC_CFLAGS)
8571 AC_SUBST(DSO_LDOPTS)
8572 AC_SUBST(LIB_PREFIX)
8573 AC_SUBST(DLL_PREFIX)
8574 AC_SUBST(DLL_SUFFIX)
8575 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8576 AC_SUBST(LIB_SUFFIX)
8577 AC_SUBST(OBJ_SUFFIX)
8578 AC_SUBST(BIN_SUFFIX)
8579 AC_SUBST(ASM_SUFFIX)
8580 AC_SUBST(IMPORT_LIB_SUFFIX)
8582 AC_SUBST(CC_VERSION)
8583 AC_SUBST(CXX_VERSION)
8584 AC_SUBST(MSMANIFEST_TOOL)
8585 AC_SUBST(NS_ENABLE_TSF)
8586 AC_SUBST(MOZ_NSS_PATCH)
8587 AC_SUBST(MOZ_APP_COMPONENT_LIBS)
8588 AC_SUBST(MOZ_APP_EXTRA_LIBS)
8590 AC_SUBST(MOZ_SPEEX_RESAMPLER)
8591 AC_SUBST(MOZ_SOUNDTOUCH)
8594 AC_SUBST(MOZ_VORBIS)
8595 AC_SUBST(MOZ_TREMOR)
8600 AC_SUBST(MOZ_DIRECTSHOW)
8601 AC_SUBST(MOZ_MEDIA_PLUGINS)
8602 AC_SUBST(MOZ_APPLEMEDIA)
8603 AC_SUBST(MOZ_OMX_PLUGIN)
8604 AC_SUBST(MOZ_VP8_ERROR_CONCEALMENT)
8605 AC_SUBST(MOZ_VP8_ENCODER)
8609 AC_SUBST(VPX_ASFLAGS)
8610 AC_SUBST(VPX_DASH_C_FLAG)
8611 AC_SUBST(VPX_AS_CONVERSION)
8612 AC_SUBST(VPX_ASM_SUFFIX)
8613 AC_SUBST(VPX_X86_ASM)
8614 AC_SUBST(VPX_ARM_ASM)
8615 AC_SUBST(VPX_NEED_OBJ_INT_EXTRACT)
8616 AC_SUBST(MOZ_INSTRUMENT_EVENT_LOOP)
8617 AC_SUBST(LIBJPEG_TURBO_AS)
8618 AC_SUBST(LIBJPEG_TURBO_ASFLAGS)
8619 AC_SUBST(LIBJPEG_TURBO_X86_ASM)
8620 AC_SUBST(LIBJPEG_TURBO_X64_ASM)
8621 AC_SUBST(LIBJPEG_TURBO_ARM_ASM)
8623 AC_SUBST(MOZ_PACKAGE_JSSHELL)
8624 AC_SUBST(MOZ_FOLD_LIBS)
8626 AC_SUBST(MOZ_ENABLE_SZIP)
8627 AC_SUBST(MOZ_SZIP_FLAGS)
8629 AC_MSG_CHECKING([for posix_fallocate])
8630 AC_TRY_LINK([#define _XOPEN_SOURCE 600
8631 #include <fcntl.h>],
8632 [posix_fallocate(0, 0, 0);],
8633 [ac_cv___posix_fallocate=true],
8634 [ac_cv___posix_fallocate=false])
8636 if test "$ac_cv___posix_fallocate" = true ; then
8637 AC_DEFINE(HAVE_POSIX_FALLOCATE)
8643 dnl Check for missing components
8644 if test "$COMPILE_ENVIRONMENT"; then
8645 if test "$MOZ_X11"; then
8646 if test "$WITHOUT_X11"; then
8647 AC_MSG_ERROR([--without-x specified and MOZ_X11 still defined])
8649 dnl ====================================================
8650 dnl = Check if X headers exist
8651 dnl ====================================================
8652 _SAVE_CFLAGS=$CFLAGS
8653 CFLAGS="$CFLAGS $XCFLAGS"
8657 #include <X11/Xlib.h>
8658 #include <X11/Intrinsic.h>
8659 #include <X11/extensions/XShm.h>
8663 if ((dpy = XOpenDisplay(NULL)) == NULL) {
8664 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8668 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8669 CFLAGS="$_SAVE_CFLAGS"
8671 if test -n "$MISSING_X"; then
8672 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8677 dnl Check for headers, etc. needed by WebGL.
8678 if test "$MOZ_GL_DEFAULT_PROVIDER" = "GLX"; then
8679 MOZ_CHECK_HEADER(GL/glx.h)
8680 if test "$ac_cv_header_GL_glx_h" != "yes"; then
8681 AC_MSG_ERROR([Can't find header GL/glx.h for WebGL (install mesa-common-dev (Ubuntu), mesa-libGL-devel (Fedora), or Mesa-devel (openSUSE))])
8683 fi # MOZ_GL_DEFAULT_PROVIDER=GLX
8684 fi # COMPILE_ENVIRONMENT
8686 dnl Set various defines and substitutions
8687 dnl ========================================================
8689 if test "$OS_ARCH" = "Darwin"; then
8691 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2"; then
8695 if test "$MOZ_DEBUG"; then
8696 AC_DEFINE(MOZ_REFLOW_PERF)
8697 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8700 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
8701 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8702 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8703 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8704 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8705 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8706 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8707 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8708 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8711 AC_SUBST(MOZILLA_VERSION)
8713 AC_SUBST(ac_configure_args)
8715 dnl Spit out some output
8716 dnl ========================================================
8718 dnl The following defines are used by xpcom
8719 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8721 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8722 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8723 HAVE_CPP_PARTIAL_SPECIALIZATION
8724 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8725 NEED_CPP_UNUSED_IMPLEMENTATIONS
8728 HAVE_ICONV_WITH_CONST_INPUT
8741 # FUTURE? Consider moving all these to moz.build files.
8743 netwerk/necko-config.h
8744 xpcom/xpcom-config.h
8745 xpcom/xpcom-private.h
8748 AC_SUBST(STLPORT_LIBS)
8750 export WRITE_MOZINFO=1
8751 AC_OUTPUT([mozilla-config.h])
8754 # Hack around an Apple bug that affects the egrep that comes with OS X 10.7.
8755 # "env ARCHPREFERENCE=i386,x86_64 arch egrep" first tries to use the 32-bit
8756 # Intel part of the egrep fat binary, even on 64-bit systems, and falls back on
8757 # the 64-bit part if it's not a fat binary, as can happen with MacPorts. We
8758 # (apparently) only need this hack when egrep's "pattern" is particularly long
8759 # (as in the following code) and the first egrep on our $PATH is Apple's. See
8763 FIXED_EGREP="env ARCHPREFERENCE=i386,x86_64 arch egrep"
8770 # Generate Makefiles for WebRTC directly from .gyp files
8771 if test "${OS_TARGET}" = "WINNT"; then
8772 if test "$HAVE_64BIT_OS"; then
8777 EXTRA_GYP_DEFINES="-D MSVS_VERSION=${_MSVS_VERSION} -D MSVS_OS_BITS=${OS_BITS}"
8779 elif test "${OS_TARGET}" = "Android"; then
8780 if test "${MOZ_WIDGET_TOOLKIT}" = "gonk"; then
8781 EXTRA_GYP_DEFINES="-G os=linux "
8783 EXTRA_GYP_DEFINES="-D gtest_target_type=executable -D android_toolchain=${android_toolchain} -G os=android "
8787 if test -n "$ARM_ARCH"; then
8788 if test "$ARM_ARCH" -lt 7; then
8789 EXTRA_GYP_DEFINES="${EXTRA_GYP_DEFINES} -D armv7=0 "
8791 if test "${OS_TARGET}" = "Android"; then
8792 EXTRA_GYP_DEFINES="${EXTRA_GYP_DEFINES} -D armv7=1 "
8794 dnl CPU detection for ARM works on Android only. armv7 always uses CPU detection, so
8795 dnl we have to set armv7=0 for non-Android target
8796 EXTRA_GYP_DEFINES="${EXTRA_GYP_DEFINES} -D armv7=0 "
8801 # Keep libcubeb and audio_device backends in sync
8802 if test -n "$MOZ_ALSA"; then
8803 EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D include_alsa_audio=1"
8805 EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D include_alsa_audio=0"
8807 if test -n "$MOZ_PULSEAUDIO"; then
8808 EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D include_pulse_audio=1"
8810 EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D include_pulse_audio=0"
8813 # Don't try to compile ssse3/sse4.1 code if toolchain doesn't support
8814 if test -n "$INTEL_ARCHITECTURE"; then
8815 if test -z "$HAVE_TOOLCHAIN_SUPPORT_MSSSE3" -o -z "$HAVE_TOOLCHAIN_SUPPORT_MSSE4_1"; then
8816 EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D yuv_disable_asm=1"
8820 if test -n "$MOZ_WEBRTC"; then
8821 AC_MSG_RESULT("generating WebRTC Makefiles...")
8823 if test "${MOZ_WIDGET_TOOLKIT}" = "gonk"; then
8824 EXTRA_GYP_DEFINES="${EXTRA_GYP_DEFINES} -D build_with_gonk=1"
8827 dnl Any --include files must also appear in -D FORCED_INCLUDE_FILE= entries
8828 dnl so that regeneration via dependencies works correctly
8829 WEBRTC_CONFIG="-D build_with_mozilla=1 -D build_with_chromium=0 --include ${srcdir}/media/webrtc/webrtc_config.gypi -D FORCED_INCLUDE_FILE=${srcdir}/media/webrtc/webrtc_config.gypi"
8831 if test -n HAVE_CLOCK_MONOTONIC; then
8832 WEBRTC_CONFIG="${WEBRTC_CONFIG} -D have_clock_monotonic=1"
8834 WEBRTC_CONFIG="${WEBRTC_CONFIG} -D have_clock_monotonic=0"
8837 if test -n "$MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI"; then
8838 WEBRTC_CONFIG="${WEBRTC_CONFIG} -D have_ethtool_cmd_speed_hi=1"
8840 WEBRTC_CONFIG="${WEBRTC_CONFIG} -D have_ethtool_cmd_speed_hi=0"
8843 GYP_WEBRTC_OPTIONS="--format=mozmake ${WEBRTC_CONFIG} -D target_arch=${WEBRTC_TARGET_ARCH} ${EXTRA_GYP_DEFINES} --depth=${srcdir}/media/webrtc/trunk --toplevel-dir=${srcdir} -G OBJDIR=${_objdir}"
8845 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
8846 $GYP_WEBRTC_OPTIONS \
8847 --generator-output=${_objdir}/media/webrtc/trunk \
8848 ${srcdir}/media/webrtc/trunk/peerconnection.gyp
8849 if test "$?" != 0; then
8850 AC_MSG_ERROR([failed to generate WebRTC Makefiles])
8853 # XXX disable until we land the tranche with signaling
8854 if test -n "$MOZ_WEBRTC_SIGNALING"; then
8855 AC_MSG_RESULT("generating WebRTC/Signaling Makefiles...")
8856 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
8857 $GYP_WEBRTC_OPTIONS \
8858 -D build_for_test=0 \
8859 --generator-output=${_objdir}/media/webrtc/signaling \
8860 ${srcdir}/media/webrtc/signaling/signaling.gyp
8861 if test "$?" != 0; then
8862 AC_MSG_ERROR([failed to generate WebRTC/Signaling Makefiles])
8865 AC_MSG_RESULT("generating WebRTC/SignalingTest Makefiles...")
8866 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
8867 $GYP_WEBRTC_OPTIONS \
8868 -D build_for_test=1 \
8869 --generator-output=${_objdir}/media/webrtc/signalingtest \
8870 ${srcdir}/media/webrtc/signaling/signaling.gyp
8871 if test "$?" != 0; then
8872 AC_MSG_ERROR([failed to generate WebRTC/SignalingTest Makefiles])
8876 AC_MSG_RESULT("generating gtest Makefiles...")
8877 # Ok to pass some extra -D's that are ignored here
8878 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
8879 $GYP_WEBRTC_OPTIONS \
8880 --generator-output=${_objdir}/media/webrtc/trunk/testing/ \
8881 ${srcdir}/media/webrtc/trunk/testing/gtest.gyp
8882 if test "$?" != 0; then
8883 AC_MSG_ERROR([failed to generate gtest Makefiles])
8886 AC_MSG_RESULT("generating nrappkit Makefiles...")
8887 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
8888 $GYP_WEBRTC_OPTIONS \
8889 --generator-output=${_objdir}/media/mtransport/third_party/nrappkit \
8890 ${srcdir}/media/mtransport/third_party/nrappkit/nrappkit.gyp
8891 if test "$?" != 0; then
8892 AC_MSG_ERROR([failed to generate nrappkit Makefiles])
8895 AC_MSG_RESULT("generating nICEr Makefiles...")
8896 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
8897 $GYP_WEBRTC_OPTIONS \
8898 --generator-output=${_objdir}/media/mtransport/third_party/nICEr \
8899 ${srcdir}/media/mtransport/third_party/nICEr/nicer.gyp
8900 if test "$?" != 0; then
8901 AC_MSG_ERROR([failed to generate nICEr Makefiles])
8905 # Run jemalloc configure script
8907 if test -z "$MOZ_NATIVE_JEMALLOC" -a "$MOZ_MEMORY" && test -n "$MOZ_JEMALLOC3" -o -n "$MOZ_REPLACE_MALLOC"; then
8908 ac_configure_args="$_SUBDIR_CONFIG_ARGS --build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_"
8909 if test -n "$MOZ_REPLACE_MALLOC"; then
8910 # When using replace_malloc, we always want memalign and valloc exported from jemalloc.
8911 ac_configure_args="$ac_configure_args ac_cv_func_memalign=yes"
8912 ac_configure_args="$ac_configure_args ac_cv_func_valloc=yes"
8914 if test -n "$MOZ_JEMALLOC3"; then
8915 case "${OS_ARCH}" in
8917 # We want jemalloc functions to be kept hidden on both Mac and Windows
8918 # See memory/build/mozmemory_wrap.h for details.
8919 ac_configure_args="$ac_configure_args --without-export"
8922 elif test "${OS_ARCH}" = Darwin; then
8923 # When building as a replace-malloc lib, disabling the zone allocator
8924 # forces to use pthread_atfork.
8925 ac_configure_args="$ac_configure_args --disable-zone-allocator"
8927 _MANGLE="malloc posix_memalign aligned_alloc calloc realloc free memalign valloc malloc_usable_size"
8929 if test -z "$MOZ_REPLACE_MALLOC"; then
8931 Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
8935 elif test -z "$MOZ_JEMALLOC3"; then
8937 JEMALLOC_WRAPPER=replace_
8939 if test -n "$MANGLE"; then
8941 if test -n "$_WRAP_MALLOC" -a -z "$JEMALLOC_WRAPPER"; then
8942 JEMALLOC_WRAPPER=__wrap_
8944 for mangle in ${MANGLE}; do
8945 if test -n "$MANGLED"; then
8946 MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle,$MANGLED"
8948 MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle"
8951 ac_configure_args="$ac_configure_args --with-mangling=$MANGLED"
8954 if test -z "$MOZ_TLS"; then
8955 ac_configure_args="$ac_configure_args --disable-tls"
8957 EXTRA_CFLAGS="$CFLAGS"
8958 for var in AS CC CXX CPP LD AR RANLIB STRIP CPPFLAGS EXTRA_CFLAGS LDFLAGS; do
8959 ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
8961 if test "$CROSS_COMPILE"; then
8962 ac_configure_args="$ac_configure_args je_cv_static_page_shift=12"
8964 _save_cache_file="$cache_file"
8965 cache_file=$_objdir/memory/jemalloc/src/config.cache
8967 if ! test -e memory/jemalloc; then
8968 mkdir -p memory/jemalloc
8971 AC_OUTPUT_SUBDIRS(memory/jemalloc/src)
8972 cache_file="$_save_cache_file"
8973 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8976 # Run freetype configure script
8978 if test "$MOZ_TREE_FREETYPE"; then
8979 export CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS -std=c99"
8980 export CPPFLAGS="$CPPFLAGS $MOZ_DEBUG_FLAGS"
8981 export CXXFLAGS="$CXXFLAGS $MOZ_DEBUG_FLAGS"
8982 export LDFLAGS="$LDFLAGS $MOZ_DEBUG_LDFLAGS"
8983 export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in"
8984 ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes --without-png"
8986 if ! test -e modules; then
8990 AC_OUTPUT_SUBDIRS(modules/freetype2)
8993 if test -z "$direct_nspr_config"; then
8994 dnl ========================================================
8995 dnl = Setup a nice relatively clean build environment for
8996 dnl = sub-configures.
8997 dnl ========================================================
9000 CFLAGS="$_SUBDIR_CFLAGS"
9001 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9002 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9003 LDFLAGS="$_SUBDIR_LDFLAGS"
9004 HOST_CC="$_SUBDIR_HOST_CC"
9005 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9006 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9013 # Run all configure scripts specified by a subconfigure
9014 if test -n "$_subconfigure_subdir"; then
9015 _save_ac_configure_args="$ac_configure_args"
9016 ac_configure_args="$_subconfigure_config_args"
9017 AC_OUTPUT_SUBDIRS("$_subconfigure_subdir")
9018 ac_configure_args="$_save_ac_configure_args"
9021 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9022 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9026 if test -n "$_WRAP_MALLOC"; then
9027 # Avoid doubling wrap malloc arguments
9028 _SUBDIR_CONFIG_ARGS="`echo $_SUBDIR_CONFIG_ARGS | sed -e 's/--enable-wrap-malloc *//'`"
9031 if test -z "$MOZ_NATIVE_NSPR"; then
9032 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9033 if test -z "$MOZ_DEBUG"; then
9034 ac_configure_args="$ac_configure_args --disable-debug"
9036 ac_configure_args="$ac_configure_args --enable-debug"
9038 if test "$MOZ_OPTIMIZE" = "1"; then
9039 ac_configure_args="$ac_configure_args --enable-optimize"
9040 elif test -z "$MOZ_OPTIMIZE"; then
9041 ac_configure_args="$ac_configure_args --disable-optimize"
9043 if test -n "$HAVE_64BIT_OS"; then
9044 ac_configure_args="$ac_configure_args --enable-64bit"
9046 if test -n "$USE_ARM_KUSER"; then
9047 ac_configure_args="$ac_configure_args --with-arm-kuser"
9049 ac_configure_args="$ac_configure_args $NSPR_CONFIGURE_ARGS"
9051 # Save these, so we can mess with them for the subconfigure ..
9052 _SAVE_CFLAGS="$CFLAGS"
9053 _SAVE_CPPFLAGS="$CPPFLAGS"
9054 _SAVE_LDFLAGS="$LDFLAGS"
9056 if test -n "$MOZ_LINKER" -a "$ac_cv_func_dladdr" = no ; then
9057 # dladdr is supported by the new linker, even when the system linker doesn't
9058 # support it. Trick nspr into using dladdr when it's not supported.
9059 export CPPFLAGS="-include $_topsrcdir/mozglue/linker/dladdr.h $CPPFLAGS"
9061 export LDFLAGS="$LDFLAGS $NSPR_LDFLAGS"
9062 export CFLAGS="$CFLAGS $MOZ_FRAMEPTR_FLAGS"
9064 AC_OUTPUT_SUBDIRS(nsprpub)
9066 # .. and restore them
9070 CFLAGS="$_SAVE_CFLAGS"
9071 CPPFLAGS="$_SAVE_CPPFLAGS"
9072 LDFLAGS="$_SAVE_LDFLAGS"
9074 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9077 dnl ========================================================
9078 dnl = Setup a nice relatively clean build environment for
9079 dnl = sub-configures.
9080 dnl ========================================================
9083 CFLAGS="$_SUBDIR_CFLAGS"
9084 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9085 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9086 LDFLAGS="$_SUBDIR_LDFLAGS"
9087 HOST_CC="$_SUBDIR_HOST_CC"
9088 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9089 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9092 if test -n "$ENABLE_CLANG_PLUGIN"; then
9093 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9094 AC_OUTPUT_SUBDIRS(build/clang-plugin)
9098 # Run the SpiderMonkey 'configure' script.
9099 dist=$MOZ_BUILD_ROOT/dist
9100 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9101 ac_configure_args="$ac_configure_args --enable-threadsafe"
9103 MOZ_ARG_WITH_STRING(intl-api,
9104 [ --with-intl-api, --with-intl-api=build, --without-intl-api
9105 Determine the status of the ECMAScript Internationalization API. The first
9106 (or lack of any of these) builds and exposes the API. The second builds it
9107 but doesn't use ICU or expose the API to script. The third doesn't build
9109 WITH_INTL="--with-intl-api=$withval"
9111 if test -z "$WITH_INTL"; then
9112 if test "$MOZ_BUILD_APP" = "browser"; then
9113 WITH_INTL="--with-intl-api"
9115 # Internationalization isn't built or exposed by default in non-desktop
9116 # builds. Bugs to enable:
9118 # Android: bug 864843
9120 WITH_INTL="--without-intl-api"
9123 ac_configure_args="$ac_configure_args $WITH_INTL"
9125 if test "$BUILD_CTYPES"; then
9126 # Build js-ctypes on the platforms we can.
9127 ac_configure_args="$ac_configure_args --enable-ctypes"
9129 if test -z "$JS_SHARED_LIBRARY" ; then
9130 ac_configure_args="$ac_configure_args --disable-shared-js"
9131 if test -n "$MOZ_DISABLE_EXPORT_JS"; then
9132 ac_configure_args="$ac_configure_args --disable-export-js"
9135 if test -z "$MOZ_NATIVE_NSPR"; then
9136 ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9137 ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9139 ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
9140 ac_configure_args="$ac_configure_args --prefix=$dist"
9141 if test "$MOZ_MEMORY"; then
9142 ac_configure_args="$ac_configure_args --enable-jemalloc"
9144 if test -n "$MOZ_GLUE_LDFLAGS"; then
9145 export MOZ_GLUE_LDFLAGS
9147 if test -n "$MOZ_GLUE_PROGRAM_LDFLAGS"; then
9148 export MOZ_GLUE_PROGRAM_LDFLAGS
9150 if test "$MOZ_NATIVE_ZLIB" != 1 -a "$OS_ARCH" = "WINNT"; then
9153 export MOZ_NATIVE_ZLIB
9154 export MOZ_ZLIB_CFLAGS
9155 export MOZ_ZLIB_LIBS
9157 export DONT_POPULATE_VIRTUALENV=1
9159 export MOZILLA_CENTRAL_PATH=$_topsrcdir
9160 export STLPORT_CPPFLAGS
9161 export STLPORT_LDFLAGS
9163 export JS_STANDALONE=no
9166 if ! test -e js; then
9170 AC_OUTPUT_SUBDIRS(js/src)
9171 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9173 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR