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 ========================================================
65 WINDRES_VERSION=2.14.90
71 STARTUP_NOTIFICATION_VERSION=0.8
73 SQLITE_VERSION=3.7.16.1
77 dnl Set various checks
78 dnl ========================================================
82 dnl Initialize the Pthread test variables early so they can be
83 dnl overridden by each platform.
84 dnl ========================================================
88 dnl Do not allow a separate objdir build if a srcdir build exists.
89 dnl ==============================================================
90 _topsrcdir=`cd \`dirname $0\`; pwd`
93 if test "$_topsrcdir" != "$_objdir"
95 # Check for a couple representative files in the source tree
97 for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
98 if test -f $file; then
99 _conflict_files="$_conflict_files $file"
102 if test "$_conflict_files"; then
104 echo "* Your source tree contains these files:"
105 for file in $_conflict_files; do
109 * This indicates that you previously built in the source tree.
110 * A source tree build can confuse the separate objdir build.
112 * To clean up the source tree:
127 COMPILE_ENVIRONMENT=1
128 MOZ_ARG_DISABLE_BOOL(compile-environment,
129 [ --disable-compile-environment
130 Disable compiler/library checks.],
131 COMPILE_ENVIRONMENT= )
132 AC_SUBST(COMPILE_ENVIRONMENT)
134 MOZ_ARG_WITH_STRING(l10n-base,
135 [ --with-l10n-base=DIR path to l10n repositories],
136 L10NBASEDIR=$withval)
137 if test -n "$L10NBASEDIR"; then
138 if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
139 AC_MSG_ERROR([--with-l10n-base must specify a path])
140 elif test -d "$L10NBASEDIR"; then
141 L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
143 AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
146 AC_SUBST(L10NBASEDIR)
148 dnl Check for Perl first -- needed for win32 SDK checks
149 MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
150 if test -z "$PERL" -o "$PERL" = ":"; then
151 AC_MSG_ERROR([perl not found in \$PATH])
155 if test -n "$GAIADIR" ; then
156 AC_DEFINE(PACKAGE_GAIA)
159 MOZ_ARG_WITH_STRING(gonk,
161 location of gonk dir],
164 MOZ_ARG_WITH_STRING(gonk-toolchain-prefix,
165 [ --with-gonk-toolchain-prefix=DIR
166 prefix to gonk toolchain commands],
167 gonk_toolchain_prefix=$withval)
169 if test -n "$gonkdir" ; then
170 kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"`
171 android_source="$gonkdir"
172 ANDROID_SOURCE="$android_source"
173 ANDROID_NDK="${ANDROID_SOURCE}/ndk"
176 TOOLCHAIN_PREFIX="$gonk_toolchain_prefix"
177 AS="$gonk_toolchain_prefix"as
178 CC="$gonk_toolchain_prefix"gcc
179 CXX="$gonk_toolchain_prefix"g++
180 CPP="$gonk_toolchain_prefix"cpp
181 LD="$gonk_toolchain_prefix"ld
182 AR="$gonk_toolchain_prefix"ar
183 RANLIB="$gonk_toolchain_prefix"ranlib
184 STRIP="$gonk_toolchain_prefix"strip
185 OBJCOPY="$gonk_toolchain_prefix"objcopy
187 STLPORT_CPPFLAGS="-I$gonkdir/ndk/sources/cxx-stl/stlport/stlport/ -I$gonkdir/external/stlport/stlport/"
188 STLPORT_LIBS="-lstlport"
190 case "$target_cpu" in
199 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/frameworks/base/opengl/include -I$gonkdir/frameworks/base/native/include -I$gonkdir/hardware/libhardware/include -I$gonkdir/hardware/libhardware_legacy/include -I$gonkdir/system -I$gonkdir/system/core/include -isystem $gonkdir/bionic -I$gonkdir/frameworks/base/include -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib $CPPFLAGS -I$gonkdir/frameworks/base/services/sensorservice -I$gonkdir/frameworks/base/services/camera -I$gonkdir/system/media/wilhelm/include -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/dalvik/libnativehelper/include/nativehelper"
200 CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS"
201 CXXFLAGS="-mandroid -fno-short-enums -fno-exceptions -Wno-psabi $CXXFLAGS $STLPORT_CPPFLAGS"
202 dnl Add -llog by default, since we use it all over the place.
203 LIBS="$LIBS -llog $STLPORT_LIBS"
205 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"
207 dnl prevent cross compile section from using these flags as host flags
208 if test -z "$HOST_CPPFLAGS" ; then
211 if test -z "$HOST_CFLAGS" ; then
214 if test -z "$HOST_CXXFLAGS" ; then
217 if test -z "$HOST_LDFLAGS" ; then
222 AC_DEFINE(HAVE_SYS_UIO_H)
223 AC_DEFINE(HAVE_PTHREADS)
225 MOZ_CHROME_FILE_FORMAT=omni
231 *-android*|*-linuxandroid*)
232 if test -z "$ANDROID_PACKAGE_NAME" ; then
233 ANDROID_PACKAGE_NAME='org.mozilla.$(MOZ_APP_NAME)'
235 MOZ_CHROME_FILE_FORMAT=omni
239 AC_PATH_PROG(OBJCOPY,objcopy)
244 AC_SUBST(ANDROID_SOURCE)
245 AC_SUBST(ANDROID_PACKAGE_NAME)
248 dnl ========================================================
249 dnl Checks for compilers.
250 dnl ========================================================
251 dnl Set CROSS_COMPILE in the environment when running configure
252 dnl to use the cross-compile setup for now
253 dnl ========================================================
255 dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
258 if test "$COMPILE_ENVIRONMENT"; then
260 if test -n "$CROSS_COMPILE" -a "$target" != "$host"; then
261 echo "cross compiling from $host to $target"
265 _SAVE_CFLAGS="$CFLAGS"
266 _SAVE_LDFLAGS="$LDFLAGS"
268 AC_MSG_CHECKING([for host c compiler])
269 AC_CHECK_PROGS(HOST_CC, $HOST_CC cc gcc /usr/ucb/cc cl icc, "")
270 if test -z "$HOST_CC"; then
271 AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
273 AC_MSG_RESULT([$HOST_CC])
274 AC_MSG_CHECKING([for host c++ compiler])
275 AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
276 if test -z "$HOST_CXX"; then
277 AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
279 AC_MSG_RESULT([$HOST_CXX])
281 if test -z "$HOST_CFLAGS"; then
282 HOST_CFLAGS="$CFLAGS"
284 if test -z "$HOST_CXXFLAGS"; then
285 HOST_CXXFLAGS="$CXXFLAGS"
287 if test -z "$HOST_LDFLAGS"; then
288 HOST_LDFLAGS="$LDFLAGS"
290 if test -z "$HOST_AR_FLAGS"; then
291 HOST_AR_FLAGS="$AR_FLAGS"
293 AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
294 AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
296 CFLAGS="$HOST_CFLAGS"
297 LDFLAGS="$HOST_LDFLAGS"
299 AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
300 AC_TRY_COMPILE([], [return(0);],
301 [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
302 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
305 CFLAGS="$HOST_CXXFLAGS"
307 AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
308 AC_TRY_COMPILE([], [return(0);],
309 [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
310 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
314 LDFLAGS=$_SAVE_LDFLAGS
316 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
319 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
323 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
324 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
325 MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
326 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
327 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
328 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
329 AC_DEFINE(CROSS_COMPILE)
334 # Work around the conftest.exe access problem on Windows
339 MOZ_PATH_PROGS(AS, $AS as, $CC)
340 AC_CHECK_PROGS(AR, ar, :)
341 AC_CHECK_PROGS(LD, ld, :)
342 AC_CHECK_PROGS(STRIP, strip, :)
343 AC_CHECK_PROGS(WINDRES, windres, :)
344 if test -z "$HOST_CC"; then
347 if test -z "$HOST_CFLAGS"; then
348 HOST_CFLAGS="$CFLAGS"
350 if test -z "$HOST_CXX"; then
353 if test -z "$HOST_CXXFLAGS"; then
354 HOST_CXXFLAGS="$CXXFLAGS"
356 if test -z "$HOST_LDFLAGS"; then
357 HOST_LDFLAGS="$LDFLAGS"
359 if test -z "$HOST_RANLIB"; then
360 HOST_RANLIB="$RANLIB"
362 if test -z "$HOST_AR"; then
365 if test -z "$HOST_AR_FLAGS"; then
366 HOST_AR_FLAGS="$AR_FLAGS"
370 if test -n "$MOZ_WINCONSOLE"; then
371 AC_DEFINE(MOZ_WINCONSOLE)
376 if test -n "$GNU_CC" -a -z "$CLANG_CC" ; then
377 if test "$GCC_MAJOR_VERSION" -eq 4 -a "$GCC_MINOR_VERSION" -lt 4 ||
378 test "$GCC_MAJOR_VERSION" -lt 4; then
379 AC_MSG_ERROR([Only GCC 4.4 or newer supported])
383 dnl ========================================================
384 dnl Special win32 checks
385 dnl ========================================================
387 MOZ_ARG_ENABLE_BOOL(metro,
388 [ --enable-metro Enable Windows Metro build targets],
391 if test -n "$MOZ_METRO"; then
393 # Target the Windows 8 Kit
396 # toolkit/library/makefile.in needs these, see nsDllMain.
398 CRTEXPDLLVERSION=1-1-0
400 # Target the Windows 7 SDK by default
405 AC_SUBST(CRTDLLVERSION)
406 AC_SUBST(CRTEXPDLLVERSION)
408 MOZ_ARG_WITH_STRING(windows-version,
409 [ --with-windows-version=WINSDK_TARGETVER
410 Windows SDK version to target. Lowest version
411 currently allowed is 601 (Win7), highest is 602 (Win8)],
412 WINSDK_TARGETVER=$withval)
414 # Currently only two sdk versions allowed, 601 and 602
415 case "$WINSDK_TARGETVER" in
417 MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
421 AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER)]);
427 if test "$GCC" != "yes"; then
428 # Check to see if we are really running in a msvc environemnt
430 AC_CHECK_PROGS(MIDL, midl)
432 # Make sure compilers are valid
433 CFLAGS="$CFLAGS -TC -nologo"
434 CXXFLAGS="$CXXFLAGS -TP -nologo"
437 AC_TRY_COMPILE([#include <stdio.h>],
438 [ printf("Hello World\n"); ],,
439 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
442 AC_TRY_COMPILE([#include <new.h>],
443 [ unsigned *test = new unsigned(42); ],,
444 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
448 _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
451 # Determine compiler version
452 CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
453 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
454 _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
455 _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
456 _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
457 _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
459 CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
460 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
462 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
463 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
466 if test "$_CC_MAJOR_VERSION" = "14"; then
467 dnl Require VC8SP1 or newer.
468 dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762.
469 if test "$_CC_RELEASE" -lt 50727 -o \
470 \( "$_CC_RELEASE" -eq 50727 -a "$_CC_BUILD" -lt 762 \); then
471 AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. You probably need to install Service Pack 1 of Visual Studio 2005. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
476 AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
477 AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
478 elif test "$_CC_MAJOR_VERSION" = "15"; then
481 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
482 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
483 elif test "$_CC_MAJOR_VERSION" = "16"; then
486 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
487 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
488 elif test "$_CC_MAJOR_VERSION" = "17"; then
491 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
492 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
494 AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
497 AC_DEFINE(HAVE_SEH_EXCEPTIONS)
499 if test -n "$WIN32_REDIST_DIR"; then
500 if test ! -d "$WIN32_REDIST_DIR"; then
501 AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
503 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
506 dnl Confirm we have the pri tools on win8 builds
507 if test -n "$MOZ_METRO"; then
508 AC_MSG_CHECKING([for makepri])
509 AC_CHECK_PROGS(MAKEPRI, makepri, "")
510 if test -z "MAKEPRI" ; then
511 AC_MSG_ERROR([makepri.exe is required for generating metro browser install components. It should be in the Win8 SDK.])
516 dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool',
517 dnl not something else like "magnetic tape manipulation utility".
518 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
519 if test -z "$MSMT_TOOL"; then
520 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
524 _MSMT_VER_FILTER='s|.*[^!-~]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
526 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
527 if test -z "$MSMANIFEST_TOOL_VERSION"; then
528 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
534 # Check linker version
535 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
536 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
537 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
538 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
544 _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
545 _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
546 _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
547 _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
548 # Add flags if necessary
549 AC_MSG_CHECKING([for midl flags])
552 if test \( "$_MIDL_MAJOR_VERSION" = "7" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" = "0499" \); then
553 # MIDL version 7.00.0499 defaults /env win64 on x64 platforms.
554 # MIDL version 7.00.0500 or later has no problem.
555 MIDL_FLAGS="${MIDL_FLAGS} -env win32"
556 AC_MSG_RESULT([need -env win32])
558 AC_MSG_RESULT([none needed])
562 MIDL_FLAGS="${MIDL_FLAGS} -env x64"
565 AC_MSG_RESULT([none needed])
569 # Identify which version of the SDK we're building with
570 # Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
572 MOZ_CHECK_HEADERS([winsdkver.h])
573 if test "$ac_cv_header_winsdkver_h" = "yes"; then
574 # Get the highest _WIN32_WINNT and NTDDI versions supported
575 # Take the higher of the two
576 # This is done because the Windows 7 beta SDK reports its
577 # NTDDI_MAXVER to be 0x06000100 instead of 0x06010000, as it should
578 AC_CACHE_CHECK(for highest Windows version supported by this SDK,
580 [cat > conftest.h <<EOF
581 #include <winsdkver.h>
582 #include <sdkddkver.h>
584 #if (NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER) > NTDDI_MAXVER)
585 #define WINSDK_MAXVER NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER)
587 #define WINSDK_MAXVER NTDDI_MAXVER
592 ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
595 MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
597 # Any SDK which doesn't have WinSDKVer.h is too old.
598 AC_MSG_ERROR([Your SDK does not have WinSDKVer.h. It is probably too old. Please upgrade to a newer SDK or 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.])
601 unset _MSVC_VER_FILTER
603 AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
607 _SAVE_CXXFLAGS="$CXXFLAGS"
608 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
609 AC_TRY_COMPILE([#include <exception>],
610 [std::_Throw(std::exception()); return 0;],
611 ac_cv_have_std__Throw="yes",
612 ac_cv_have_std__Throw="no")
613 CXXFLAGS="$_SAVE_CXXFLAGS"
617 if test "$ac_cv_have_std__Throw" = "yes"; then
618 AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
619 ac_cv_have_dllimport_exception_bug,
623 _SAVE_CXXFLAGS="$CXXFLAGS"
624 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
625 AC_TRY_LINK([#include <vector>],
626 [std::vector<int> v; return v.at(1);],
627 ac_cv_have_dllimport_exception_bug="no",
628 ac_cv_have_dllimport_exception_bug="yes")
629 CXXFLAGS="$_SAVE_CXXFLAGS"
632 if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
634 MOZ_MSVC_STL_WRAP__Throw=1
635 AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
638 AC_CACHE_CHECK(for overridable _RAISE,
643 _SAVE_CXXFLAGS="$CXXFLAGS"
644 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
645 AC_TRY_COMPILE([#include <xstddef>
647 #define _RAISE(x) externallyDefinedFunction((x).what())
650 [std::vector<int> v; return v.at(1);],
651 ac_cv_have__RAISE="no",
652 ac_cv_have__RAISE="yes")
653 CXXFLAGS="$_SAVE_CXXFLAGS"
656 if test "$ac_cv_have__RAISE" = "yes"; then
658 MOZ_MSVC_STL_WRAP__RAISE=1
659 AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
661 AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK. Please file a bug describing this error and your build configuration.])
665 if test "$WRAP_STL_INCLUDES" = "1"; then
666 STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
669 # Check w32api version
670 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
671 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
672 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
673 AC_TRY_COMPILE([#include <w32api.h>],
674 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
675 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
676 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
677 #error "test failed."
679 , [ res=yes ], [ res=no ])
680 AC_MSG_RESULT([$res])
681 if test "$res" != "yes"; then
682 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
684 # Check windres version
685 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
686 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
687 AC_MSG_RESULT([$_WINDRES_VERSION])
688 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
689 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
690 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
691 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
692 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
693 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
694 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
695 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
696 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
697 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
698 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
699 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
701 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
704 AC_CHECK_PROGS(MIDL, $target-widl widl)
705 if test -n "$MIDL"; then
708 MIDL_FLAGS="$MIDL_FLAGS --win32 -m32"
711 MIDL_FLAGS="$MIDL_FLAGS --win64 -m64"
716 MOZ_WINSDK_MAXVER=0x06020000
719 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
720 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
721 # Require OS features provided by IE 6.0 SP2 (XP SP2)
722 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0603)
724 # If the maximum version supported by this SDK is lower than the target
726 AC_MSG_CHECKING([for Windows SDK being recent enough])
727 if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
731 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.])
734 AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
735 # Definitions matching sdkddkver.h
736 AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
743 if test -n "$_WIN32_MSVC"; then
745 SKIP_COMPILER_CHECKS=1
746 SKIP_LIBRARY_CHECKS=1
748 # Since we're skipping compiler and library checks, hard-code
751 AC_DEFINE(HAVE_SETBUF)
752 AC_DEFINE(HAVE_ISATTY)
755 fi # COMPILE_ENVIRONMENT
768 AC_SUBST(WRAP_STL_INCLUDES)
769 AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
770 AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
772 dnl ========================================================
773 dnl Checks for programs.
774 dnl ========================================================
778 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
779 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
780 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
782 AC_MSG_RESULT([$_perl_version])
784 if test "$_perl_res" != 0; then
785 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
789 AC_MSG_CHECKING([for full perl installation])
790 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
792 if test "$_perl_res" != 0; then
794 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
799 MOZ_ARG_WITH_BOOL(system-ply,
800 [ --with-system-ply Use system installed python ply library],
801 [if $PYTHON -c 'import ply' 2>&5; then
804 AC_MSG_ERROR([python ply library is not found but --with-system-ply was requested])
807 AC_SUBST(MOZ_SYSTEM_PLY)
809 if test -z "$COMPILE_ENVIRONMENT"; then
810 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
812 AC_SUBST(NSINSTALL_BIN)
814 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
815 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
816 MOZ_PATH_PROGS(UNZIP, unzip)
817 if test -z "$UNZIP" -o "$UNZIP" = ":"; then
818 AC_MSG_ERROR([unzip not found in \$PATH])
820 MOZ_PATH_PROGS(ZIP, zip)
821 if test -z "$ZIP" -o "$ZIP" = ":"; then
822 AC_MSG_ERROR([zip not found in \$PATH])
824 MOZ_PATH_PROG(XARGS, xargs)
825 if test -z "$XARGS" -o "$XARGS" = ":"; then
826 AC_MSG_ERROR([xargs not found in \$PATH .])
829 MOZ_PATH_PROG(RPMBUILD, rpmbuild, :)
832 if test "$COMPILE_ENVIRONMENT"; then
834 dnl ========================================================
835 dnl = Mac OS X toolchain support
836 dnl ========================================================
838 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
839 dnl that a universal binary is being produced and MOZ_CAN_RUN_PROGRAMS
840 dnl when we can run target binaries.
841 AC_SUBST(UNIVERSAL_BINARY)
842 AC_SUBST(MOZ_CAN_RUN_PROGRAMS)
844 MOZ_ARG_WITH_STRING(unify-dist,
845 [ --with-unify-dist=dir Location of the dist directory to unify with at packaging time (Mac OS X universal build only)],
847 if test -n "$UNIVERSAL_BINARY"; then
848 if test -z "$UNIFY_DIST"; then
849 AC_MSG_ERROR([You need to provide the --with-unify-dist=dir argument when performing a universal build])
851 case "$UNIFY_DIST" in
855 UNIFY_DIST="${MOZ_BUILD_ROOT}/${UNIFY_DIST}"
861 dnl ========================================================
862 dnl Check for MacOS deployment target version
863 dnl ========================================================
865 MOZ_ARG_ENABLE_STRING(macos-target,
866 [ --enable-macos-target=VER (default=10.6)
867 Set the minimum MacOS version needed at runtime],
868 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
872 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
873 dnl Use the specified value
874 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
876 dnl No value specified on the command line or in the environment,
877 dnl use architecture minimum.
878 export MACOSX_DEPLOYMENT_TARGET=10.6
883 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
885 dnl ========================================================
886 dnl = Mac OS X SDK support
887 dnl ========================================================
890 MOZ_ARG_WITH_STRING(macos-sdk,
891 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
892 MACOS_SDK_DIR=$withval)
894 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
895 dnl NEXT_ROOT will be set and exported only if it's needed.
896 AC_SUBST(MACOS_SDK_DIR)
899 if test "$MACOS_SDK_DIR"; then
900 dnl Sync this section with the ones in NSPR and NSS.
901 dnl Changes to the cross environment here need to be accounted for in
902 dnl the libIDL checks (below) and xpidl build.
904 if test ! -d "$MACOS_SDK_DIR"; then
905 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
906 specify a valid SDK. SDKs are installed when the optional cross-development
907 tools are selected during the Xcode/Developer Tools installation.])
910 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
911 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
913 dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER.
914 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
915 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
918 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
920 AC_TRY_COMPILE([#include <new>],[],
924 AC_MSG_RESULT($result)
926 if test "$result" = "no" ; then
927 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
931 fi # COMPILE_ENVIRONMENT
933 AC_MSG_CHECKING([compiler version])
934 # Just print it so it shows up in the logs.
935 cc_version=$($CC --version)
936 AC_MSG_RESULT([$cc_version])
938 if test -n "$MAKE"; then
939 if test `echo $MAKE | grep -c make.py` != 1; then
946 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
949 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
952 if test "$GMAKE" = ":"; then
953 AC_MSG_ERROR([GNU make not found])
957 if test -z "$MAKE"; then
961 if test "$COMPILE_ENVIRONMENT"; then
967 fi # COMPILE_ENVIRONMENT
969 dnl ========================================================
970 dnl set the defaults first
971 dnl ========================================================
987 MOZ_USER_DIR=".mozilla"
990 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/media/libjpeg)'
992 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
994 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/media/libpng)'
996 MOZ_JS_STATIC_LIBS='$(call EXPAND_LIBNAME_PATH,js_static,$(LIBXUL_DIST)/lib)'
997 MOZ_JS_SHARED_LIBS='$(call EXPAND_LIBNAME_PATH,mozjs,$(LIBXUL_DIST)/lib)'
998 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxul -lxpcom_core -lmozalloc'
999 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
1000 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxul -lmozalloc'
1001 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS)'
1002 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1003 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
1005 # These are specially defined on Windows only
1008 XPCOM_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1009 XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime.$(LIB_SUFFIX)'
1012 XPCOM_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_GLUE_LDOPTS
1013 XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_STANDALONE_GLUE_LDOPTS
1019 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
1021 USE_DEPENDENT_LIBS=1
1023 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
1025 if test -n "$CROSS_COMPILE"; then
1026 OS_TARGET="${target_os}"
1027 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
1029 case "${target_os}" in
1030 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
1031 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
1032 gnu*) OS_ARCH=GNU ;;
1033 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
1034 mingw*) OS_ARCH=WINNT OS_TARGET=WINNT ;;
1035 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
1038 *-android*|*-linuxandroid*) OS_ARCH=Linux OS_TARGET=Android ;;
1041 OS_TARGET=`uname -s`
1042 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1043 OS_RELEASE=`uname -r`
1046 # Before this used `uname -m` when not cross compiling
1047 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1048 OS_TEST="${target_cpu}"
1050 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1052 #######################################################################
1053 # Master "Core Components" macros for getting the OS target #
1054 #######################################################################
1057 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1058 # cross-compilation.
1062 # Define and override various archtecture-specific variables, including
1071 case "$HOST_OS_ARCH" in
1085 if test -z "$GNU_CC"; then
1086 if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1091 if test -z "$GNU_CXX"; then
1092 if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1093 SOLARIS_SUNPRO_CXX=1
1096 AC_SUBST(SOLARIS_SUNPRO_CC)
1097 AC_SUBST(SOLARIS_SUNPRO_CXX)
1106 if test -z "$CROSS_COMPILE" ; then
1112 # If uname -s returns "Windows_NT", we assume that we are using
1113 # the uname.exe in MKS toolkit.
1115 # The -r option of MKS uname only returns the major version number.
1116 # So we need to use its -v option to get the minor version number.
1117 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1121 OS_MINOR_RELEASE=`uname -v`
1122 if test "$OS_MINOR_RELEASE" = "00"; then
1125 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1129 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1130 # the uname.exe in the MSYS tools.
1132 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1137 OS_RELEASE=`uname -v`.`uname -r`
1138 OS_TEST=${target_cpu}
1143 OS_RELEASE=`uname -v`
1146 case "${target_cpu}" in
1157 if test -z "$CROSS_COMPILE" ; then
1165 # Only set CPU_ARCH if we recognize the value of OS_TEST
1176 powerpc | ppc | rs6000)
1180 Alpha | alpha | ALPHA)
1213 if test -z "$OS_TARGET"; then
1216 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1218 dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64.
1219 dnl ===============================================================
1223 INTEL_ARCHITECTURE=1
1226 dnl Configure platform-specific CPU architecture compiler options.
1227 dnl ==============================================================
1230 dnl =================================================================
1231 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1232 dnl which is bad when cross compiling.
1233 dnl =================================================================
1234 if test "$COMPILE_ENVIRONMENT"; then
1235 configure_static_assert_macros='
1236 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1237 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1238 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1241 dnl test that the macros actually work:
1242 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1243 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1246 ac_cv_static_assertion_macros_work="yes"
1247 AC_TRY_COMPILE([$configure_static_assert_macros],
1248 [CONFIGURE_STATIC_ASSERT(1)],
1250 ac_cv_static_assertion_macros_work="no")
1251 AC_TRY_COMPILE([$configure_static_assert_macros],
1252 [CONFIGURE_STATIC_ASSERT(0)],
1253 ac_cv_static_assertion_macros_work="no",
1256 AC_TRY_COMPILE([$configure_static_assert_macros],
1257 [CONFIGURE_STATIC_ASSERT(1)],
1259 ac_cv_static_assertion_macros_work="no")
1260 AC_TRY_COMPILE([$configure_static_assert_macros],
1261 [CONFIGURE_STATIC_ASSERT(0)],
1262 ac_cv_static_assertion_macros_work="no",
1266 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1267 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1268 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1270 fi # COMPILE_ENVIRONMENT
1272 dnl ========================================================
1273 dnl Android libstdc++, placed here so it can use MOZ_ARCH
1275 dnl ========================================================
1279 dnl ========================================================
1280 dnl Suppress Clang Argument Warnings
1281 dnl ========================================================
1282 if test -n "$CLANG_CC"; then
1283 _WARNINGS_CFLAGS="-Qunused-arguments ${_WARNINGS_CFLAGS}"
1284 CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
1286 if test -n "$CLANG_CXX"; then
1287 _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
1290 dnl ========================================================
1291 dnl = Use Address Sanitizer
1292 dnl ========================================================
1293 MOZ_ARG_ENABLE_BOOL(address-sanitizer,
1294 [ --enable-address-sanitizer Enable Address Sanitizer (default=no)],
1297 if test -n "$MOZ_ASAN"; then
1303 dnl ========================================================
1304 dnl = Enable hacks required for LLVM instrumentations
1305 dnl ========================================================
1306 MOZ_ARG_ENABLE_BOOL(llvm-hacks,
1307 [ --enable-llvm-hacks Enable workarounds required for several LLVM instrumentations (default=no)],
1310 if test -n "$MOZ_LLVM_HACKS"; then
1314 AC_SUBST(MOZ_NO_WLZDEFS)
1315 AC_SUBST(MOZ_CFLAGS_NSS)
1317 dnl ========================================================
1318 dnl GNU specific defaults
1319 dnl ========================================================
1320 if test "$GNU_CC"; then
1321 # Per bug 719659 comment 2, some of the headers on ancient build machines
1322 # may require gnu89 inline semantics. But otherwise, we use C99.
1323 CFLAGS="$CFLAGS -std=gnu99 -fgnu89-inline"
1324 # FIXME: Let us build with strict aliasing. bug 414641.
1325 CFLAGS="$CFLAGS -fno-strict-aliasing"
1326 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1327 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1328 DSO_LDOPTS='-shared'
1329 if test "$GCC_USE_GNU_LD"; then
1330 # Some tools like ASan use a runtime library that is only
1331 # linked against executables, so we must allow undefined
1332 # symbols for shared objects in some cases.
1333 if test -z "$MOZ_NO_WLZDEFS"; then
1334 # Don't allow undefined symbols in libraries
1335 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1338 WARNINGS_AS_ERRORS='-Werror'
1339 # Don't treat -Wuninitialized as error b/c it has lots of false positives.
1340 WARNINGS_AS_ERRORS="$WARNINGS_AS_ERRORS -Wno-error=uninitialized"
1341 # Don't treat -Wdeprecated-declarations as error b/c we don't want our
1342 # builds held hostage when a platform-specific API is suddenly deprecated.
1343 WARNINGS_AS_ERRORS="$WARNINGS_AS_ERRORS -Wno-error=deprecated-declarations"
1345 DSO_PIC_CFLAGS='-fPIC'
1346 ASFLAGS="$ASFLAGS -fPIC"
1347 AC_MSG_CHECKING([for --noexecstack option to as])
1348 _SAVE_CFLAGS=$CFLAGS
1349 CFLAGS="$CFLAGS -Wa,--noexecstack"
1350 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
1351 [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
1352 AC_MSG_RESULT([no]))
1353 CFLAGS=$_SAVE_CFLAGS
1354 AC_MSG_CHECKING([for -z noexecstack option to ld])
1355 _SAVE_LDFLAGS=$LDFLAGS
1356 LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
1357 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
1359 LDFLAGS=$_SAVE_LDFLAGS)
1360 AC_MSG_CHECKING([for --build-id option to ld])
1361 _SAVE_LDFLAGS=$LDFLAGS
1362 LDFLAGS="$LDFLAGS -Wl,--build-id"
1363 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
1364 [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,--build-id"],
1366 LDFLAGS=$_SAVE_LDFLAGS)
1369 # Check for -mssse3 on $CC
1370 AC_MSG_CHECKING([if toolchain supports -mssse3 option])
1371 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
1372 _SAVE_CFLAGS=$CFLAGS
1373 CFLAGS="$CFLAGS -mssse3"
1374 AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
1375 [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
1376 AC_MSG_RESULT([no]))
1377 CFLAGS=$_SAVE_CFLAGS
1378 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
1380 # Check for -msse4.1 on $CC
1381 AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
1382 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
1383 _SAVE_CFLAGS=$CFLAGS
1384 CFLAGS="$CFLAGS -msse4.1"
1385 AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
1386 [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
1387 AC_MSG_RESULT([no]))
1388 CFLAGS=$_SAVE_CFLAGS
1389 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
1391 # Turn on GNU-specific warnings:
1392 # -Wall - turn on a lot of warnings
1393 # -Wpointer-arith - good to have
1394 # -Wdeclaration-after-statement - MSVC doesn't like these
1395 # -Werror=return-type - catches missing returns, zero false positives
1396 # -Wtype-limits - catches overflow bugs, few false positives
1397 # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1398 # -Wsign-compare - catches comparison of signed and unsigned types
1400 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -Wpointer-arith -Wdeclaration-after-statement"
1401 MOZ_C_SUPPORTS_WARNING(-W, error=return-type, ac_c_has_werror_return_type)
1402 MOZ_C_SUPPORTS_WARNING(-W, type-limits, ac_c_has_wtype_limits)
1403 MOZ_C_SUPPORTS_WARNING(-W, empty-body, ac_c_has_wempty_body)
1404 MOZ_C_SUPPORTS_WARNING(-W, sign-compare, ac_c_has_sign_compare)
1406 # Turn off the following warnings that -Wall turns on:
1407 # -Wno-unused - lots of violations in third-party code
1409 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-unused"
1411 if test -z "$INTEL_CC" -a -z "$CLANG_CC"; then
1412 # Don't use -Wcast-align with ICC or clang
1414 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1415 hppa | ia64 | sparc | arm)
1418 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1423 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1424 _USE_CPP_INCLUDE_FLAG=1
1425 ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
1427 elif test "$SOLARIS_SUNPRO_CC"; then
1429 if test "$CPU_ARCH" = "sparc"; then
1430 # for Sun Studio on Solaris/SPARC
1431 DSO_PIC_CFLAGS='-xcode=pic32'
1433 DSO_PIC_CFLAGS='-KPIC'
1435 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1437 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1438 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1440 DSO_LDOPTS='-shared'
1441 if test "$GNU_LD"; then
1442 # Don't allow undefined symbols in libraries
1443 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1447 DSO_PIC_CFLAGS='-KPIC'
1448 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1451 if test "$GNU_CXX"; then
1452 # FIXME: Let us build with strict aliasing. bug 414641.
1453 CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
1455 # Turn on GNU-specific warnings:
1456 # -Wall - turn on a lot of warnings
1457 # -Wpointer-arith - good to have
1458 # -Woverloaded-virtual - ???
1459 # -Werror=return-type - catches missing returns, zero false positives
1460 # -Wtype-limits - catches overflow bugs, few false positives
1461 # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1462 # -Wsign-compare - catches comparison of signed and unsigned types
1464 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual"
1465 MOZ_CXX_SUPPORTS_WARNING(-W, error=return-type, ac_cxx_has_werror_return_type)
1466 MOZ_CXX_SUPPORTS_WARNING(-W, type-limits, ac_cxx_has_wtype_limits)
1467 MOZ_CXX_SUPPORTS_WARNING(-W, empty-body, ac_cxx_has_wempty_body)
1468 MOZ_CXX_SUPPORTS_WARNING(-W, sign-compare, ac_cxx_has_sign_compare)
1470 # Turn off the following warnings that -Wall turns on:
1471 # -Wno-invalid-offsetof - we use offsetof on non-POD types frequently
1473 MOZ_CXX_SUPPORTS_WARNING(-Wno-, invalid-offsetof, ac_cxx_has_wno_invalid_offsetof)
1475 if test -z "$INTEL_CXX" -a -z "$CLANG_CXX"; then
1476 # Don't use -Wcast-align with ICC or clang
1478 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1479 hppa | ia64 | sparc | arm)
1482 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1487 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1488 _USE_CPP_INCLUDE_FLAG=1
1490 # Recent clang and gcc support C++11 deleted functions without warnings if
1491 # compiling with -std=c++0x or -std=gnu++0x (or c++11 or gnu++11 in very new
1492 # versions). We can't use -std=c++0x yet, so gcc's support must remain
1493 # unused. But clang's warning can be disabled, so when compiling with clang
1494 # we use it to opt out of the warning, enabling (macro-encapsulated) use of
1495 # deleted function syntax.
1496 if test "$CLANG_CXX"; then
1497 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-c++0x-extensions"
1498 MOZ_CXX_SUPPORTS_WARNING(-Wno-, extended-offsetof, ac_cxx_has_wno_extended_offsetof)
1502 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1505 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1506 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1507 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1508 dnl normal behavior.
1509 dnl ========================================================
1511 MKSHLIB_UNFORCE_ALL=
1513 if test "$COMPILE_ENVIRONMENT"; then
1514 if test "$GNU_CC"; then
1515 AC_MSG_CHECKING(whether ld has archive extraction flags)
1516 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1517 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1518 ac_cv_mkshlib_force_and_unforce="no"
1519 exec 3<&0 <<LOOP_INPUT
1520 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1521 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1522 force="-Wl,-all"; unforce="-Wl,-none"
1529 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1532 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1534 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1538 eval $ac_cv_mkshlib_force_and_unforce
1539 MKSHLIB_FORCE_ALL=$force
1540 MKSHLIB_UNFORCE_ALL=$unforce
1543 fi # COMPILE_ENVIRONMENT
1545 dnl ========================================================
1546 dnl Checking for 64-bit OS
1547 dnl ========================================================
1548 if test "$COMPILE_ENVIRONMENT"; then
1551 AC_MSG_CHECKING(for 64-bit OS)
1552 AC_TRY_COMPILE([$configure_static_assert_macros],
1553 [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1554 result="yes", result="no")
1555 AC_MSG_RESULT("$result")
1556 if test "$result" = "yes"; then
1557 AC_DEFINE(HAVE_64BIT_OS)
1560 AC_SUBST(HAVE_64BIT_OS)
1562 fi # COMPILE_ENVIRONMENT
1564 dnl ========================================================
1565 dnl Enable high-memory support on OS/2 by default.
1566 dnl ========================================================
1567 MOZ_OS2_HIGH_MEMORY=1
1568 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1569 [ --disable-os2-high-mem Disable high-memory support on OS/2],
1570 MOZ_OS2_HIGH_MEMORY=,
1571 MOZ_OS2_HIGH_MEMORY=1 )
1572 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1574 dnl ========================================================
1575 dnl = Use profiling compile flags
1576 dnl ========================================================
1577 MOZ_ARG_ENABLE_BOOL(profiling,
1578 [ --enable-profiling Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1582 # For profiling builds keep the symbol information
1583 if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then
1584 case "$OS_TARGET" in
1585 Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
1586 STRIP_FLAGS="--strip-debug"
1591 dnl ========================================================
1592 dnl = Use incremental GC
1593 dnl ========================================================
1595 MOZ_ARG_DISABLE_BOOL(gcincremental,
1596 [ --disable-gcincremental Disable incremental GC],
1598 if test -n "$JSGC_INCREMENTAL"; then
1599 AC_DEFINE(JSGC_INCREMENTAL)
1602 dnl ========================================================
1603 dnl = Use generational GC
1604 dnl ========================================================
1605 MOZ_ARG_ENABLE_BOOL(gcgenerational,
1606 [ --enable-gcgenerational Enable generational GC],
1607 JSGC_GENERATIONAL=1,
1608 JSGC_GENERATIONAL= )
1609 if test -n "$JSGC_GENERATIONAL"; then
1610 AC_DEFINE(JSGC_GENERATIONAL)
1613 dnl ========================================================
1614 dnl = Perform moving GC stack rooting analysis
1615 dnl ========================================================
1616 MOZ_ARG_ENABLE_BOOL(root-analysis,
1617 [ --enable-root-analysis Enable moving GC stack root analysis],
1618 JSGC_ROOT_ANALYSIS=1,
1619 JSGC_ROOT_ANALYSIS= )
1620 if test -n "$JSGC_ROOT_ANALYSIS"; then
1621 AC_DEFINE(JSGC_ROOT_ANALYSIS)
1624 dnl ========================================================
1625 dnl = Use exact stack rooting for GC
1626 dnl ========================================================
1627 MOZ_ARG_ENABLE_BOOL(exact-rooting,
1628 [ --enable-exact-rooting Enable use of exact stack roots for GC],
1629 JSGC_USE_EXACT_ROOTING=1,
1630 JSGC_USE_EXACT_ROOTING= )
1631 if test -n "$JSGC_USE_EXACT_ROOTING"; then
1632 AC_DEFINE(JSGC_USE_EXACT_ROOTING)
1635 dnl ========================================================
1637 dnl ========================================================
1638 MOZ_ARG_ENABLE_BOOL(valgrind,
1639 [ --enable-valgrind Enable Valgrind integration hooks (default=no)],
1642 if test -n "$MOZ_VALGRIND"; then
1643 MOZ_CHECK_HEADER([valgrind/valgrind.h], [],
1645 [--enable-valgrind specified but Valgrind is not installed]))
1646 AC_DEFINE(MOZ_VALGRIND)
1648 AC_SUBST(MOZ_VALGRIND)
1650 dnl ========================================================
1652 dnl ========================================================
1653 MOZ_ARG_ENABLE_BOOL(jprof,
1654 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.],
1657 if test -n "$MOZ_JPROF"; then
1659 AC_DEFINE(MOZ_JPROF)
1662 dnl ========================================================
1664 dnl ========================================================
1665 MOZ_ENABLE_PROFILER_SPS=1
1667 case "${OS_TARGET}" in
1669 case "${CPU_ARCH}" in
1672 MOZ_ENABLE_PROFILER_SPS=
1676 case "${CPU_ARCH}" in
1679 MOZ_ENABLE_PROFILER_SPS=
1684 MOZ_ENABLE_PROFILER_SPS=
1688 if test -n "$MOZ_ENABLE_PROFILER_SPS"; then
1689 AC_DEFINE(MOZ_ENABLE_PROFILER_SPS)
1692 dnl ========================================================
1694 dnl ========================================================
1695 MOZ_ARG_ENABLE_BOOL(shark,
1696 [ --enable-shark Enable shark remote profiling. Implies --enable-profiling.],
1699 if test -n "$MOZ_SHARK"; then
1701 AC_DEFINE(MOZ_SHARK)
1704 dnl ========================================================
1706 dnl ========================================================
1707 MOZ_ARG_ENABLE_BOOL(instruments,
1708 [ --enable-instruments Enable instruments remote profiling. Implies --enable-profiling.],
1711 if test -n "$MOZ_INSTRUMENTS"; then
1713 AC_DEFINE(MOZ_INSTRUMENTS)
1716 dnl ========================================================
1718 dnl ========================================================
1719 MOZ_ARG_ENABLE_BOOL(callgrind,
1720 [ --enable-callgrind Enable callgrind profiling. Implies --enable-profiling.],
1723 if test -n "$MOZ_CALLGRIND"; then
1725 AC_DEFINE(MOZ_CALLGRIND)
1728 dnl ========================================================
1730 dnl ========================================================
1731 MOZ_ARG_ENABLE_BOOL(vtune,
1732 [ --enable-vtune Enable vtune profiling. Implies --enable-profiling.],
1735 if test -n "$MOZ_VTUNE"; then
1737 AC_DEFINE(MOZ_VTUNE)
1740 dnl ========================================================
1742 dnl ========================================================
1743 if test -n "$MOZ_PROFILING"; then
1744 AC_DEFINE(MOZ_PROFILING)
1747 dnl ========================================================
1748 dnl System overrides of the defaults for host
1749 dnl ========================================================
1752 if test -n "$_WIN32_MSVC"; then
1754 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1755 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1756 HOST_RANLIB='echo ranlib'
1758 HOST_CFLAGS="$HOST_CFLAGS -mwindows"
1760 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11 -D_CRT_SECURE_NO_WARNINGS"
1761 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1762 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1763 HOST_BIN_SUFFIX=.exe
1766 PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1770 case "${host_cpu}" in
1772 if test -n "$_WIN32_MSVC"; then
1773 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
1777 if test -n "$_WIN32_MSVC"; then
1778 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
1780 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1786 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1787 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1788 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1791 *-linux*|*-kfreebsd*-gnu|*-gnu*)
1792 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1793 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1794 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1798 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1799 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1800 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1801 HOST_BIN_SUFFIX=.exe
1806 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1807 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1811 dnl Check for using a custom <stdint.h> implementation
1812 dnl ========================================================
1813 AC_MSG_CHECKING(for custom <stdint.h> implementation)
1814 if test "$MOZ_CUSTOM_STDINT_H"; then
1815 AC_DEFINE_UNQUOTED(MOZ_CUSTOM_STDINT_H, "$MOZ_CUSTOM_STDINT_H")
1816 AC_MSG_RESULT(using $MOZ_CUSTOM_STDINT_H)
1818 AC_MSG_RESULT(none specified)
1821 dnl Get mozilla version from central milestone file
1822 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1823 MOZILLA_UAVERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir -uaversion`
1825 dnl Get version of various core apps from the version files.
1826 FIREFOX_VERSION=`cat $_topsrcdir/browser/config/version.txt`
1828 if test -z "$FIREFOX_VERSION"; then
1829 AC_MSG_ERROR([FIREFOX_VERSION is unexpectedly blank.])
1832 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1833 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1834 AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION")
1836 MOZ_DOING_LTO(lto_is_enabled)
1838 dnl ========================================================
1839 dnl System overrides of the defaults for target
1840 dnl ========================================================
1845 if test ! "$GNU_CC"; then
1846 if test ! "$HAVE_64BIT_OS"; then
1847 # Compiling with Visual Age C++ object model compat is the
1848 # default. To compile with object model ibm, add
1849 # AIX_OBJMODEL=ibm to .mozconfig.
1850 if test "$AIX_OBJMODEL" = "ibm"; then
1851 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1858 AC_SUBST(AIX_OBJMODEL)
1859 DSO_LDOPTS='-qmkshrobj=1'
1860 DSO_CFLAGS='-qflag=w:w'
1862 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1864 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1865 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1866 if test "$COMPILE_ENVIRONMENT"; then
1869 AC_MSG_CHECKING([for IBM XLC/C++ compiler version >= 9.0.0.7])
1871 [#if (__IBMCPP__ < 900)
1872 #error "Bad compiler"
1874 _BAD_COMPILER=,_BAD_COMPILER=1)
1875 if test -n "$_BAD_COMPILER"; then
1877 AC_MSG_ERROR([IBM XLC/C++ 9.0.0.7 or higher is required to build.])
1879 AC_MSG_RESULT([yes])
1882 TARGET_COMPILER_ABI="ibmc"
1883 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1884 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1887 case "${target_os}" in
1892 if test "$COMPILE_ENVIRONMENT"; then
1893 MOZ_CHECK_HEADERS(sys/inttypes.h)
1895 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1899 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1900 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1901 MOZ_OPTIMIZE_FLAGS="-O3"
1902 # Statically disable jemalloc on 10.5 and 32-bit 10.6. See bug 702250.
1903 if test "$HAVE_64BIT_OS"; then
1908 STRIP_FLAGS="$STRIP_FLAGS -x -S"
1909 # Check whether we're targeting OS X or iOS
1910 AC_CACHE_CHECK(for iOS target,
1912 [AC_TRY_COMPILE([#include <TargetConditionals.h>
1913 #if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
1917 ac_cv_ios_target="yes",
1918 ac_cv_ios_target="no")])
1919 if test "$ac_cv_ios_target" = "yes"; then
1921 AC_DEFINE(XP_DARWIN)
1922 _PLATFORM_DEFAULT_TOOLKIT='cairo-uikit'
1924 AC_DEFINE(XP_MACOSX)
1925 AC_DEFINE(XP_DARWIN)
1926 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1927 # The ExceptionHandling framework is needed for Objective-C exception
1928 # logging code in nsObjCExceptions.h. Currently we only use that in debug
1930 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
1932 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1935 if test "x$lto_is_enabled" = "xyes"; then
1936 echo "Skipping -dead_strip because lto is enabled."
1937 dnl DTrace and -dead_strip don't interact well. See bug 403132.
1938 dnl ===================================================================
1939 elif test "x$enable_dtrace" = "xyes"; then
1940 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1942 dnl check for the presence of the -dead_strip linker flag
1943 AC_MSG_CHECKING([for -dead_strip option to ld])
1944 _SAVE_LDFLAGS=$LDFLAGS
1945 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1946 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1947 if test -n "$_HAVE_DEAD_STRIP" ; then
1948 AC_MSG_RESULT([yes])
1949 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1954 LDFLAGS=$_SAVE_LDFLAGS
1957 dnl With newer linkers we need to pass -allow_heap_execute because of
1958 dnl Microsoft Silverlight (5.1.10411.0 at least).
1959 AC_MSG_CHECKING([for -allow_heap_execute option to ld])
1960 _SAVE_LDFLAGS=$LDFLAGS
1961 LDFLAGS="$LDFLAGS -Wl,-allow_heap_execute"
1962 AC_TRY_LINK(,[return 0;],_HAVE_ALLOW_HEAP_EXECUTE=1,
1963 _HAVE_ALLOW_HEAP_EXECUTE=)
1964 if test -n "$_HAVE_ALLOW_HEAP_EXECUTE" ; then
1965 AC_MSG_RESULT([yes])
1966 MOZ_ALLOW_HEAP_EXECUTE_FLAGS="-Wl,-allow_heap_execute"
1970 LDFLAGS=$_SAVE_LDFLAGS
1972 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1977 if test ! "$GNU_CC"; then
1981 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
1982 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
1983 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1986 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1987 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1990 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1991 AC_DEFINE(_LARGEFILE64_SOURCE)
1996 if test ! "$GNU_CC"; then
1997 DSO_LDOPTS='-b -Wl,+s'
2000 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
2001 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
2002 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2004 DSO_LDOPTS='-b -E +s'
2005 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2006 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2008 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
2009 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2012 *-android*|*-linuxandroid*)
2013 AC_DEFINE(NO_PW_GECOS)
2015 if test -n "$gonkdir"; then
2016 _PLATFORM_DEFAULT_TOOLKIT=cairo-gonk
2021 _PLATFORM_DEFAULT_TOOLKIT=cairo-android
2024 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2026 MOZ_GFX_OPTIMIZE_MOBILE=1
2027 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions"
2031 # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
2032 # Similarly for GNU_CXX and INTEL_CXX.
2033 if test "$INTEL_CC" -o "$INTEL_CXX"; then
2034 # -Os has been broken on Intel's C/C++ compilers for quite a
2035 # while; Intel recommends against using it.
2036 MOZ_OPTIMIZE_FLAGS="-O2"
2037 MOZ_DEBUG_FLAGS="-g"
2038 elif test "$GNU_CC" -o "$GNU_CXX"; then
2039 case $GCC_VERSION in
2041 # -Os is broken on gcc 4.5.x we need to tweak it to get good results.
2042 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
2044 MOZ_PGO_OPTIMIZE_FLAGS="-O3"
2045 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks $MOZ_OPTIMIZE_SIZE_TWEAK"
2046 MOZ_DEBUG_FLAGS="-g"
2049 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2053 case "${target_cpu}" in
2055 CFLAGS="$CFLAGS -mieee"
2056 CXXFLAGS="$CXXFLAGS -mieee"
2062 MOZ_DEBUG_FLAGS="-g" # We want inlining
2066 if test -z "$MC"; then
2076 # certain versions of cygwin's makedepend barf on the
2077 # #include <string> vs -I./dist/include/string issue so don't use it
2078 if test -n "$GNU_CC"; then
2080 CXX="$CXX -mwindows"
2081 CPP="$CPP -mwindows"
2082 CFLAGS="$CFLAGS -mms-bitfields"
2083 CXXFLAGS="$CXXFLAGS -mms-bitfields"
2084 DSO_LDOPTS='-shared'
2085 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2086 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2088 # Use static libgcc and libstdc++
2089 LDFLAGS="$LDFLAGS -static-libgcc -static-libstdc++"
2090 # Use temp file for windres (bug 213281)
2091 RCFLAGS='-O coff --use-temp-file'
2092 # mingw doesn't require kernel32, user32, and advapi32 explicitly
2093 LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32 -lnetapi32"
2095 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxul -lxpcom_core -lmozalloc'
2096 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxul -lmozalloc'
2098 IMPORT_LIB_SUFFIX=dll.a
2100 # We use mix of both POSIX and Win32 printf format across the tree, so format
2101 # warnings are useless on mingw.
2102 MOZ_C_SUPPORTS_WARNING(-Wno-, format, ac_c_has_wno_format)
2103 MOZ_CXX_SUPPORTS_WARNING(-Wno-, format, ac_cxx_has_wno_format)
2105 TARGET_COMPILER_ABI=msvc
2109 if test "$AS_BIN"; then
2110 AS="$(basename "$AS_BIN")"
2113 AR_FLAGS='-NOLOGO -OUT:"$@"'
2115 RANLIB='echo not_ranlib'
2116 STRIP='echo not_strip'
2127 IMPORT_LIB_SUFFIX=lib
2128 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2129 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2131 MKSHLIB_UNFORCE_ALL=
2132 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2133 _USE_CPP_INCLUDE_FLAG=1
2134 _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2135 _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2136 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2137 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2138 # khuey says we can safely ignore MSVC warning C4251
2139 # MSVC warning C4244 (implicit type conversion may lose data) warns
2140 # and requires workarounds for perfectly valid code. Also, GCC/clang
2141 # don't warn about it by default. So for consistency/sanity, we turn
2142 # it off on MSVC, too.
2143 # MSVC warning C4345 warns of newly conformant behavior as of VS2003.
2144 # MSVC warning C4351 warns of newly conformant behavior as of VS2005.
2145 # MSVC warning C4482 warns when an enum value is refered specifing the
2146 # name of the enum itself. This behavior is allowed in C++11, and the
2147 # warning has been removed in VS2012.
2148 # MSVC warning C4800 warns when a value is implicitly cast to bool,
2149 # because this also forces narrowing to a single byte, which can be a
2150 # perf hit. But this matters so little in practice (and often we want
2151 # that behavior) that it's better to turn it off.
2152 # MSVC warning C4819 warns some UTF-8 characters (e.g. copyright sign)
2153 # on non-Western system locales even if it is in a comment.
2154 CFLAGS="$CFLAGS -wd4244 -wd4819"
2155 CXXFLAGS="$CXXFLAGS -wd4251 -wd4244 -wd4345 -wd4351 -wd4482 -wd4800 -wd4819"
2156 # make 'foo == bar;' error out
2157 CFLAGS="$CFLAGS -we4553"
2158 CXXFLAGS="$CXXFLAGS -we4553"
2159 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib netapi32.lib"
2160 MOZ_DEBUG_FLAGS='-Zi'
2161 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2162 WARNINGS_AS_ERRORS='-WX'
2163 MOZ_OPTIMIZE_FLAGS='-O1'
2165 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2166 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2167 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2168 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2169 LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT"
2170 dnl For profile-guided optimization
2171 PROFILE_GEN_CFLAGS="-GL"
2172 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2173 dnl XXX: PGO builds can fail with warnings treated as errors,
2174 dnl specifically "no profile data available" appears to be
2175 dnl treated as an error sometimes. This might be a consequence
2176 dnl of using WARNINGS_AS_ERRORS in some modules, combined
2177 dnl with the linker doing most of the work in the whole-program
2178 dnl optimization/PGO case. I think it's probably a compiler bug,
2179 dnl but we work around it here.
2180 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2181 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2182 dnl Probably also a compiler bug, but what can you do?
2183 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2184 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2185 if test "$_MSC_VER" -ge 1500; then
2186 dnl VS2008 or later supports SSSE3
2187 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
2188 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
2191 AC_DEFINE(HAVE_SNPRINTF)
2196 AC_DEFINE(HW_THREADS)
2197 AC_DEFINE(STDC_HEADERS)
2198 AC_DEFINE(NEW_H, <new>)
2199 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2200 TARGET_MD_ARCH=win32
2201 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2203 MOZ_USER_DIR="Mozilla"
2205 dnl Hardcode to win95 for now - cls
2206 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2208 dnl set NO_X11 defines here as the general check is skipped on win32
2214 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2215 if test -n "$L10NBASEDIR"; then
2216 L10NBASEDIR=`cd $L10NBASEDIR && pwd -W`
2223 if test -z "$MOZ_TOOLS"; then
2224 AC_MSG_ERROR([MOZ_TOOLS is not set])
2226 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2227 if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
2228 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2230 MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2231 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2232 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2239 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.])
2245 if test "$HAVE_64BIT_OS"; then
2246 AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2249 if test -n "$GNU_CC"; then
2250 CFLAGS="$CFLAGS -mstackrealign -fno-keep-inline-dllexport"
2251 CXXFLAGS="$CXXFLAGS -mstackrealign -fno-keep-inline-dllexport"
2252 LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup -Wl,--large-address-aware"
2254 AC_DEFINE(HAVE_STDCALL)
2255 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
2256 LDFLAGS="$LDFLAGS -SAFESEH"
2262 if test -n "$_WIN32_MSVC"; then
2263 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
2268 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2272 if test "$HAVE_64BIT_OS"; then
2279 CFLAGS="$CFLAGS -Dunix"
2280 CXXFLAGS="$CXXFLAGS -Dunix"
2281 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2283 DSO_PIC_CFLAGS='-fPIC -DPIC'
2284 DSO_LDOPTS='-shared'
2285 BIN_FLAGS='-Wl,--export-dynamic'
2287 DSO_PIC_CFLAGS='-fPIC -DPIC'
2288 DLL_SUFFIX=".so.1.0"
2289 DSO_LDOPTS='-shared'
2291 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2292 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2293 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2294 if test "$LIBRUNPATH"; then
2295 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2297 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2298 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2302 if test "$SO_VERSION"; then
2303 DLL_SUFFIX=".so.$SO_VERSION"
2305 DLL_SUFFIX=".so.1.0"
2307 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib -Wl,-rpath-link,$(if $(X11BASE),$(X11BASE),/usr/X11R6)/lib'
2309 DSO_PIC_CFLAGS='-fPIC'
2310 DSO_LDOPTS='-shared -fPIC'
2311 if test "$LIBRUNPATH"; then
2312 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2317 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2318 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2321 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2322 AC_DEFINE(TCPV40HDRS)
2328 IMPORT_LIB_SUFFIX=lib
2332 CFLAGS="$CFLAGS -Zomf"
2333 CXXFLAGS="$CXXFLAGS -Zomf"
2335 BIN_FLAGS='-Zlinker /ST:0x100000'
2339 WARNINGS_AS_ERRORS='-Werror'
2340 MOZ_DEBUG_FLAGS="-g -fno-inline"
2341 MOZ_OPTIMIZE_FLAGS="-O2"
2342 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2343 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2344 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2346 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2350 MOZ_USER_DIR="Mozilla"
2353 STRIP_FLAGS="/yua /ydd /yxd /ynl /anp /b- /cs+ /d /i- /ml1 /mr2 /mf2 /r+ /u+ /x- /zs:0 /zx /zd"
2355 if test "$MOZTOOLS"; then
2356 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2358 AC_MSG_ERROR([MOZTOOLS is not set])
2360 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2361 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2362 LDFLAGS="$LDFLAGS -Zhigh-mem"
2363 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2364 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2367 # GCC for OS/2 currently predefines these, but we don't want them
2368 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2369 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2371 AC_CACHE_CHECK(for __declspec(dllexport),
2373 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2375 ac_os2_declspec="yes",
2376 ac_os2_declspec="no")])
2377 if test "$ac_os2_declspec" != "yes"; then
2378 AC_MSG_ERROR([Compiler does not support __declspec(dllexport), install GCC-4.3.2 or newer])
2384 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2386 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2387 # libraries one level up (e.g. libnspr4.so)
2388 if test "$SOLARIS_SUNPRO_CC"; then
2389 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
2390 LIBS="-lCrun -lCstd -lc $LIBS"
2391 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2392 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
2393 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
2394 LDFLAGS="-xildoff $LDFLAGS"
2395 if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
2396 _SAVE_LDFLAGS=$LDFLAGS
2397 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2398 AC_TRY_LINK([#include <stdio.h>],
2399 [printf("Hello World\n");],
2401 [LDFLAGS=$_SAVE_LDFLAGS])
2403 MOZ_OPTIMIZE_FLAGS="-xO4"
2404 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2405 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2406 MKSHLIB_FORCE_ALL='-z allextract'
2407 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2414 AS='/usr/ccs/bin/as'
2415 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2417 TARGET_COMPILER_ABI="sunc"
2418 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2419 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2420 AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2424 [#if (__SUNPRO_CC < 0x590)
2427 _BAD_COMPILER=,_BAD_COMPILER=1)
2428 if test -n "$_BAD_COMPILER"; then
2430 AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2435 [#if (__SUNPRO_CC >= 0x5100)
2436 #error "Sun C++ 5.10 or above"
2438 _ABOVE_SS12U1=,_ABOVE_SS12U1=1)
2439 if test "$_ABOVE_SS12U1"; then
2441 CXXFLAGS="$CXXFLAGS -xannotate=no"
2443 AC_MSG_RESULT([$_res])
2446 LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
2448 MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
2449 MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
2450 ASFLAGS="$ASFLAGS -fPIC"
2451 DSO_LDOPTS='-shared'
2452 WARNINGS_AS_ERRORS='-Werror'
2454 _WARNINGS_CXXFLAGS=''
2455 if test "$OS_RELEASE" = "5.3"; then
2456 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2459 if test "$OS_RELEASE" = "5.5.1"; then
2460 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2465 DSO_LDOPTS='-Bdynamic'
2466 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2467 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2469 AC_DEFINE(SPRINTF_RETURNS_STRING)
2470 case "$(target_os)" in
2472 DLL_SUFFIX='.so.1.0'
2478 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2483 AC_SUBST(MOZ_LINKER)
2484 if test -n "$MOZ_LINKER"; then
2485 AC_DEFINE(MOZ_LINKER)
2488 dnl Only one oddball right now (QNX), but this gives us flexibility
2489 dnl if any other platforms need to override this in the future.
2490 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2492 dnl ========================================================
2493 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2494 dnl by now will not have any way to link most binaries (tests
2495 dnl as well as viewer, apprunner, etc.), because some symbols
2496 dnl will be left out of the "composite" .so's by ld as unneeded.
2497 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2498 dnl they can link in the static libs that provide the missing
2500 dnl ========================================================
2501 NO_LD_ARCHIVE_FLAGS=
2502 if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
2503 NO_LD_ARCHIVE_FLAGS=1
2507 NO_LD_ARCHIVE_FLAGS=
2510 NO_LD_ARCHIVE_FLAGS=
2513 if test -z "$GNU_CC"; then
2514 NO_LD_ARCHIVE_FLAGS=
2518 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2520 dnl ========================================================
2521 dnl = Flags to strip unused symbols from .so components and
2522 dnl = to export jemalloc symbols when linking a program
2523 dnl ========================================================
2525 *-linux*|*-kfreebsd*-gnu|*-gnu*)
2526 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2529 if test -z "$GNU_CC"; then
2530 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2532 if test -z "$GCC_USE_GNU_LD"; then
2533 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2535 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2540 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2543 if test -n "$GNU_CC"; then
2544 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2549 if test -z "$COMPILE_ENVIRONMENT"; then
2550 SKIP_COMPILER_CHECKS=1
2551 SKIP_LIBRARY_CHECKS=1
2555 if test -z "$SKIP_COMPILER_CHECKS"; then
2556 dnl Checks for typedefs, structures, and compiler characteristics.
2557 dnl ========================================================
2565 AC_MSG_CHECKING(for __stdcall)
2566 AC_CACHE_VAL(ac_cv___stdcall,
2567 [AC_TRY_COMPILE([template <typename Method> struct foo;
2568 template <> struct foo<void (*)()> {};
2569 template <> struct foo<void (__stdcall*)()> {};],
2571 [ac_cv___stdcall=true],
2572 [ac_cv___stdcall=false])])
2573 if test "$ac_cv___stdcall" = true ; then
2574 AC_DEFINE(HAVE_STDCALL)
2580 AC_MSG_CHECKING(for ssize_t)
2581 AC_CACHE_VAL(ac_cv_type_ssize_t,
2582 [AC_TRY_COMPILE([#include <stdio.h>
2583 #include <sys/types.h>],
2585 [ac_cv_type_ssize_t=true],
2586 [ac_cv_type_ssize_t=false])])
2587 if test "$ac_cv_type_ssize_t" = true ; then
2588 AC_DEFINE(HAVE_SSIZE_T)
2593 AC_STRUCT_ST_BLKSIZE
2594 AC_MSG_CHECKING(for siginfo_t)
2595 AC_CACHE_VAL(ac_cv_siginfo_t,
2596 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2597 #include <signal.h>],
2599 [ac_cv_siginfo_t=true],
2600 [ac_cv_siginfo_t=false])])
2601 if test "$ac_cv_siginfo_t" = true ; then
2602 AC_DEFINE(HAVE_SIGINFO_T)
2608 dnl Check for int64, uint, and uint_t.
2609 dnl ========================================================
2610 AC_MSG_CHECKING(for int64)
2611 AC_CACHE_VAL(ac_cv_int64,
2612 [AC_TRY_COMPILE([#include <stdio.h>
2613 #include <sys/types.h>],
2616 [ac_cv_int64=false])])
2617 if test "$ac_cv_int64" = true ; then
2618 AC_DEFINE(HAVE_INT64)
2623 AC_MSG_CHECKING(for uint)
2624 AC_CACHE_VAL(ac_cv_uint,
2625 [AC_TRY_COMPILE([#include <stdio.h>
2626 #include <sys/types.h>],
2629 [ac_cv_uint=false])])
2630 if test "$ac_cv_uint" = true ; then
2631 AC_DEFINE(HAVE_UINT)
2636 AC_MSG_CHECKING(for uint_t)
2637 AC_CACHE_VAL(ac_cv_uint_t,
2638 [AC_TRY_COMPILE([#include <stdio.h>
2639 #include <sys/types.h>],
2641 [ac_cv_uint_t=true],
2642 [ac_cv_uint_t=false])])
2643 if test "$ac_cv_uint_t" = true ; then
2644 AC_DEFINE(HAVE_UINT_T)
2650 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2651 dnl are defined when compiling C++ but not C. Since the result of this
2652 dnl test is used only in C++, do it in C++.
2655 AC_MSG_CHECKING(for uname.domainname)
2656 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2657 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2658 [ struct utsname *res; char *domain;
2659 (void)uname(res); if (res != 0) { domain = res->domainname; } ],
2660 [ac_cv_have_uname_domainname_field=true],
2661 [ac_cv_have_uname_domainname_field=false])])
2663 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2664 AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2670 AC_MSG_CHECKING(for uname.__domainname)
2671 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2672 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2673 [ struct utsname *res; char *domain;
2674 (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
2675 [ac_cv_have_uname_us_domainname_field=true],
2676 [ac_cv_have_uname_us_domainname_field=false])])
2678 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2679 AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2685 dnl Check whether we can use gcc's c++0x mode
2688 if test "$GNU_CXX"; then
2689 _SAVE_CXXFLAGS=$CXXFLAGS
2690 CXXFLAGS="$CXXFLAGS -std=gnu++0x"
2692 AC_CACHE_CHECK(for gcc c++0x headers bug without rtti,
2693 ac_cv_cxx0x_headers_bug,
2694 [AC_TRY_COMPILE([#include <memory>], [],
2695 ac_cv_cxx0x_headers_bug="no",
2696 ac_cv_cxx0x_headers_bug="yes")])
2698 if test "$CLANG_CXX" -a "$ac_cv_cxx0x_headers_bug" = "yes"; then
2699 CXXFLAGS="$CXXFLAGS -I$_topsrcdir/build/unix/headers"
2700 AC_CACHE_CHECK(whether workaround for gcc c++0x headers conflict with clang works,
2701 ac_cv_cxx0x_clang_workaround,
2702 [AC_TRY_COMPILE([#include <memory>], [],
2703 ac_cv_cxx0x_clang_workaround="yes",
2704 ac_cv_cxx0x_clang_workaround="no")])
2706 if test "ac_cv_cxx0x_clang_workaround" = "no"; then
2707 CXXFLAGS="$_SAVE_CXXFLAGS"
2709 elif test "$ac_cv_cxx0x_headers_bug" = "yes"; then
2710 CXXFLAGS="$_SAVE_CXXFLAGS"
2714 dnl Check for usable char16_t (2 bytes, unsigned)
2715 dnl (we might not need the unsignedness check anymore)
2716 AC_CACHE_CHECK(for usable char16_t (2 bytes, unsigned),
2717 ac_cv_have_usable_char16_t,
2718 [AC_TRY_COMPILE([$configure_static_assert_macros],
2719 [CONFIGURE_STATIC_ASSERT(sizeof(char16_t) == 2);
2720 CONFIGURE_STATIC_ASSERT(char16_t(-1) > char16_t(0));
2721 CONFIGURE_STATIC_ASSERT(sizeof((u"hello")[0]) == 2);
2722 CONFIGURE_STATIC_ASSERT(sizeof(u'a') == 2);
2723 CONFIGURE_STATIC_ASSERT(u'\xFFFF' > u'\x0')],
2724 ac_cv_have_usable_char16_t="yes",
2725 ac_cv_have_usable_char16_t="no")])
2726 if test "$ac_cv_have_usable_char16_t" = "yes"; then
2727 AC_DEFINE(HAVE_CPP_CHAR16_T)
2729 elif test "$GNU_CXX"; then
2730 CXXFLAGS="$_SAVE_CXXFLAGS"
2733 dnl Check for usable wchar_t (2 bytes, unsigned)
2734 dnl (we really don't need the unsignedness check anymore)
2735 dnl ========================================================
2737 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2738 ac_cv_have_usable_wchar_v2,
2739 [AC_TRY_COMPILE([#include <stddef.h>
2740 $configure_static_assert_macros],
2741 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2742 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2743 ac_cv_have_usable_wchar_v2="yes",
2744 ac_cv_have_usable_wchar_v2="no")])
2745 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2746 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2747 HAVE_CPP_2BYTE_WCHAR_T=1
2748 elif test "$ac_cv_have_usable_char16_t" != "yes"; then
2749 dnl This is really gcc-only
2750 dnl Do this test using CXX only since some versions of gcc
2751 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2752 dnl only have short-wchar support for c++.
2753 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2755 _SAVE_CXXFLAGS=$CXXFLAGS
2756 CXXFLAGS="$CXXFLAGS -fshort-wchar"
2758 AC_CACHE_CHECK(for compiler -fshort-wchar option,
2759 ac_cv_have_usable_wchar_option_v2,
2760 [AC_TRY_LINK([#include <stddef.h>
2761 $configure_static_assert_macros],
2762 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2763 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2764 ac_cv_have_usable_wchar_option_v2="yes",
2765 ac_cv_have_usable_wchar_option_v2="no")])
2767 if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2768 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2769 HAVE_CPP_2BYTE_WCHAR_T=1
2770 if test "$OS_TARGET" = Android; then
2771 WCHAR_CFLAGS="-fshort-wchar -Wl,--no-wchar-size-warning"
2772 CXXFLAGS="$CXXFLAGS -Wl,--no-wchar-size-warning"
2773 CFLAGS="$CFLAGS -Wl,--no-wchar-size-warning"
2774 DSO_LDOPTS="$DSO_LDOPTS -Wl,--no-wchar-size-warning"
2776 WCHAR_CFLAGS="-fshort-wchar"
2779 CXXFLAGS=$_SAVE_CXXFLAGS
2785 dnl Check for .hidden assembler directive and visibility attribute.
2786 dnl Borrowed from glibc configure.in
2787 dnl ===============================================================
2788 if test "$GNU_CC"; then
2789 AC_CACHE_CHECK(for visibility(hidden) attribute,
2790 ac_cv_visibility_hidden,
2791 [cat > conftest.c <<EOF
2792 int foo __attribute__ ((visibility ("hidden"))) = 1;
2794 ac_cv_visibility_hidden=no
2795 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2796 if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2797 ac_cv_visibility_hidden=yes
2802 if test "$ac_cv_visibility_hidden" = "yes"; then
2803 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2805 AC_CACHE_CHECK(for visibility(default) attribute,
2806 ac_cv_visibility_default,
2807 [cat > conftest.c <<EOF
2808 int foo __attribute__ ((visibility ("default"))) = 1;
2810 ac_cv_visibility_default=no
2811 if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2812 if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2813 ac_cv_visibility_default=yes
2818 if test "$ac_cv_visibility_default" = "yes"; then
2819 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2821 AC_CACHE_CHECK(for visibility pragma support,
2822 ac_cv_visibility_pragma,
2823 [cat > conftest.c <<EOF
2824 #pragma GCC visibility push(hidden)
2826 #pragma GCC visibility push(default)
2827 int foo_default = 1;
2829 ac_cv_visibility_pragma=no
2830 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2831 if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2832 if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2833 ac_cv_visibility_pragma=yes
2839 if test "$ac_cv_visibility_pragma" = "yes"; then
2840 AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2841 ac_cv_have_visibility_class_bug,
2842 [cat > conftest.c <<EOF
2843 #pragma GCC visibility push(hidden)
2844 struct __attribute__ ((visibility ("default"))) TestStruct {
2847 __attribute__ ((visibility ("default"))) void TestFunc() {
2851 ac_cv_have_visibility_class_bug=no
2852 if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2853 ac_cv_have_visibility_class_bug=yes
2855 if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2856 ac_cv_have_visibility_class_bug=yes
2859 rm -rf conftest.{c,S}
2862 AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2863 ac_cv_have_visibility_builtin_bug,
2864 [cat > conftest.c <<EOF
2865 #pragma GCC visibility push(hidden)
2866 #pragma GCC visibility push(default)
2868 #pragma GCC visibility pop
2870 __attribute__ ((visibility ("default"))) void Func() {
2872 memset(c, 0, sizeof(c));
2875 ac_cv_have_visibility_builtin_bug=no
2876 if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2877 ac_cv_have_visibility_builtin_bug=yes
2879 if test `grep -c "@PLT" conftest.S` = 0; then
2880 ac_cv_visibility_builtin_bug=yes
2883 rm -f conftest.{c,S}
2885 if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2886 "$ac_cv_have_visibility_class_bug" = "no"; then
2887 VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2888 WRAP_SYSTEM_INCLUDES=1
2889 STL_FLAGS='-I$(DIST)/stl_wrappers'
2892 VISIBILITY_FLAGS='-fvisibility=hidden'
2893 fi # have visibility pragma bug
2894 fi # have visibility pragma
2895 fi # have visibility(default) attribute
2896 fi # have visibility(hidden) attribute
2899 # visibility hidden flag for Sun Studio on Solaris
2900 if test "$SOLARIS_SUNPRO_CC"; then
2901 VISIBILITY_FLAGS='-xldscope=hidden'
2902 fi # Sun Studio on Solaris
2904 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2905 AC_SUBST(VISIBILITY_FLAGS)
2911 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
2912 dnl ========================================================
2913 if test "$GNU_CC"; then
2914 CFLAGS_save="${CFLAGS}"
2915 CFLAGS="${CFLAGS} -Werror"
2916 AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
2917 ac_cv_force_align_arg_pointer,
2918 [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
2920 ac_cv_force_align_arg_pointer="yes",
2921 ac_cv_force_align_arg_pointer="no")])
2922 CFLAGS="${CFLAGS_save}"
2923 if test "$ac_cv_force_align_arg_pointer" = "yes"; then
2924 HAVE_GCC_ALIGN_ARG_POINTER=1
2926 HAVE_GCC_ALIGN_ARG_POINTER=
2929 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
2931 dnl Checks for header files.
2932 dnl ========================================================
2934 case "$target_os" in
2936 # for stuff like -lXshm
2937 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2940 MOZ_CHECK_COMMON_HEADERS
2942 dnl These are all the places some variant of statfs can be hiding.
2943 MOZ_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2946 MOZ_CHECK_HEADERS(sys/quota.h sys/sysmacros.h)
2947 MOZ_CHECK_HEADERS([linux/quota.h],,,[#include <sys/socket.h>])
2949 dnl SCTP support - needs various network include headers
2950 MOZ_CHECK_HEADERS([linux/if_addr.h linux/rtnetlink.h],,,[#include <sys/socket.h>])
2952 MOZ_CHECK_HEADERS(sys/types.h netinet/in.h byteswap.h)
2954 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
2955 AC_CACHE_CHECK(for sockaddr_in.sin_len,
2956 ac_cv_sockaddr_in_sin_len,
2957 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2958 #include <sys/types.h>
2960 #include <netinet/in.h>
2961 struct sockaddr_in x;
2962 void *foo = (void*) &x.sin_len;],
2964 [ac_cv_sockaddr_in_sin_len=true],
2965 [ac_cv_sockaddr_in_sin_len=false])])
2966 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
2967 AC_DEFINE(HAVE_SIN_LEN)
2968 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
2969 AC_DEFINE(HAVE_SCONN_LEN)
2972 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
2973 ac_cv_sockaddr_in6_sin6_len,
2974 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2975 #include <sys/types.h>
2977 #include <netinet/in.h>
2978 struct sockaddr_in6 x;
2979 void *foo = (void*) &x.sin6_len;],
2981 [ac_cv_sockaddr_in6_sin6_len=true],
2982 [ac_cv_sockaddr_in6_sin6_len=false])])
2983 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
2984 AC_DEFINE(HAVE_SIN6_LEN)
2987 AC_CACHE_CHECK(for sockaddr.sa_len,
2988 ac_cv_sockaddr_sa_len,
2989 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2990 #include <sys/types.h>
2992 #include <sys/socket.h>
2994 void *foo = (void*) &x.sa_len;],
2996 [ac_cv_sockaddr_sa_len=true],
2997 [ac_cv_sockaddr_sa_len=false])])
2998 if test "$ac_cv_sockaddr_sa_len" = true ; then
2999 AC_DEFINE(HAVE_SA_LEN)
3002 dnl Check whether the compiler supports the new-style C++ standard
3003 dnl library headers (i.e. <new>) or needs the old "new.h"
3006 MOZ_CHECK_HEADER(new, [NEW_H=new])
3007 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3010 AC_ARG_ENABLE(dtrace,
3011 [ --enable-dtrace build with dtrace support if available (default=no)],
3012 [enable_dtrace="yes"],)
3013 if test "x$enable_dtrace" = "xyes"; then
3014 MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3015 if test -n "$HAVE_DTRACE"; then
3016 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3018 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3021 AC_SUBST(HAVE_DTRACE)
3027 MOZ_CHECK_HEADERS(sys/cdefs.h)
3031 MOZ_LINUX_PERF_EVENT
3033 dnl Checks for libraries.
3034 dnl ========================================================
3039 AC_CHECK_LIB(c_r, gethostbyname_r)
3043 dnl We don't want to link with libdl even if it's present on OS X, since
3044 dnl it's not used and not part of the default installation. OS/2 has dlfcn
3046 dnl We don't want to link against libm or libpthread on Darwin since
3047 dnl they both are just symlinks to libSystem and explicitly linking
3048 dnl against libSystem causes issues when debugging (see bug 299601).
3055 AC_SEARCH_LIBS(dlopen, dl,
3056 MOZ_CHECK_HEADER(dlfcn.h,
3057 AC_DEFINE(HAVE_DLOPEN)))
3061 _SAVE_CFLAGS="$CFLAGS"
3062 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3063 AC_CHECK_FUNCS(dladdr memmem)
3064 CFLAGS="$_SAVE_CFLAGS"
3066 if test ! "$GNU_CXX"; then
3070 AC_CHECK_LIB(C_r, demangle)
3073 AC_CHECK_LIB(C, demangle)
3078 dnl OS/2 has socket in libc.
3083 AC_CHECK_LIB(socket, socket)
3087 XLIBS="$X_EXTRA_LIBS"
3089 dnl ========================================================
3090 dnl Checks for X libraries.
3091 dnl Ordering is important.
3092 dnl Xt is dependent upon SM as of X11R6
3093 dnl ========================================================
3094 if test "$no_x" = "yes"; then
3097 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3098 XLIBS="-lX11 $XLIBS"
3099 _SAVE_LDFLAGS="$LDFLAGS"
3100 LDFLAGS="$XLDFLAGS $LDFLAGS"
3101 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3102 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3103 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3104 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3106 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3107 unset ac_cv_lib_Xt_XtFree
3108 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3109 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3110 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3111 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3114 # AIX needs the motif library linked before libXt to prevent
3115 # crashes in plugins linked against Motif - Bug #98892
3116 case "${target_os}" in
3118 XT_LIBS="-lXm $XT_LIBS"
3122 dnl ========================================================
3123 dnl = Check for XShm
3124 dnl ========================================================
3125 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3128 dnl ========================================================
3130 dnl ========================================================
3131 MOZ_CHECK_HEADER(X11/extensions/scrnsaver.h,
3132 AC_CHECK_LIB(Xss, XScreenSaverQueryInfo,
3133 [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS"
3134 AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS))
3136 LDFLAGS="$_SAVE_LDFLAGS"
3146 dnl ========================================================
3147 dnl = pthread support
3148 dnl = Start by checking whether the system support pthreads
3149 dnl ========================================================
3150 case "$target_os" in
3155 MOZ_CHECK_PTHREADS(pthreads,
3156 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3157 MOZ_CHECK_PTHREADS(pthread,
3158 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3159 MOZ_CHECK_PTHREADS(c_r,
3160 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3161 MOZ_CHECK_PTHREADS(c,
3170 dnl ========================================================
3171 dnl Check the command line for --with-pthreads
3172 dnl ========================================================
3173 MOZ_ARG_WITH_BOOL(pthreads,
3174 [ --with-pthreads Force use of system pthread library with NSPR ],
3175 [ if test "$USE_PTHREADS"x = x; then
3176 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3182 dnl ========================================================
3183 dnl Do the platform specific pthread hackery
3184 dnl ========================================================
3185 if test "$USE_PTHREADS"x != x
3188 dnl See if -pthread is supported.
3191 ac_cv_have_dash_pthread=no
3192 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3193 echo 'int main() { return 0; }' | cat > conftest.c
3194 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3195 if test $? -eq 0; then
3196 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3197 ac_cv_have_dash_pthread=yes
3198 case "$target_os" in
3200 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3203 CFLAGS="$CFLAGS -pthread"
3204 CXXFLAGS="$CXXFLAGS -pthread"
3210 AC_MSG_RESULT($ac_cv_have_dash_pthread)
3213 dnl See if -pthreads is supported.
3215 ac_cv_have_dash_pthreads=no
3216 if test "$ac_cv_have_dash_pthread" = "no"; then
3217 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3218 echo 'int main() { return 0; }' | cat > conftest.c
3219 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3220 if test $? -eq 0; then
3221 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3222 ac_cv_have_dash_pthreads=yes
3223 CFLAGS="$CFLAGS -pthreads"
3224 CXXFLAGS="$CXXFLAGS -pthreads"
3228 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3233 AC_DEFINE(_REENTRANT)
3234 AC_DEFINE(_THREAD_SAFE)
3235 dnl -pthread links in -lpthread, so don't specify it explicitly.
3236 if test "$ac_cv_have_dash_pthread" = "yes"; then
3237 _PTHREAD_LDFLAGS="-pthread"
3241 *-*-openbsd*|*-*-bsdi*)
3242 AC_DEFINE(_REENTRANT)
3243 AC_DEFINE(_THREAD_SAFE)
3244 dnl -pthread links in -lc_r, so don't specify it explicitly.
3245 if test "$ac_cv_have_dash_pthread" = "yes"; then
3246 _PTHREAD_LDFLAGS="-pthread"
3250 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
3251 AC_DEFINE(_REENTRANT)
3255 AC_DEFINE(_REENTRANT)
3259 AC_DEFINE(_REENTRANT)
3263 AC_DEFINE(_REENTRANT)
3264 if test "$SOLARIS_SUNPRO_CC"; then
3265 CFLAGS="$CFLAGS -mt"
3266 CXXFLAGS="$CXXFLAGS -mt"
3270 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3274 dnl Checks for library functions.
3275 dnl ========================================================
3276 AC_PROG_GCC_TRADITIONAL
3278 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf memmove rint stat64 lstat64 truncate64 setbuf isatty)
3279 AC_CHECK_FUNCS(statvfs64 statvfs statfs64 statfs)
3280 AC_CHECK_FUNCS(flockfile getpagesize)
3281 AC_CHECK_FUNCS(localtime_r strtok_r)
3283 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
3284 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
3285 ac_cv_clock_monotonic,
3286 [for libs in "" -lrt; do
3289 AC_TRY_LINK([#include <time.h>],
3290 [ struct timespec ts;
3291 clock_gettime(CLOCK_MONOTONIC, &ts); ],
3292 ac_cv_clock_monotonic=$libs
3295 ac_cv_clock_monotonic=no)
3298 if test "$ac_cv_clock_monotonic" != "no"; then
3299 HAVE_CLOCK_MONOTONIC=1
3300 REALTIME_LIBS=$ac_cv_clock_monotonic
3301 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
3302 AC_SUBST(HAVE_CLOCK_MONOTONIC)
3303 AC_SUBST(REALTIME_LIBS)
3306 dnl check for wcrtomb/mbrtowc
3307 dnl =======================================================================
3308 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3311 AC_CACHE_CHECK(for wcrtomb,
3313 [AC_TRY_LINK([#include <wchar.h>],
3314 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3315 ac_cv_have_wcrtomb="yes",
3316 ac_cv_have_wcrtomb="no")])
3317 if test "$ac_cv_have_wcrtomb" = "yes"; then
3318 AC_DEFINE(HAVE_WCRTOMB)
3320 AC_CACHE_CHECK(for mbrtowc,
3322 [AC_TRY_LINK([#include <wchar.h>],
3323 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3324 ac_cv_have_mbrtowc="yes",
3325 ac_cv_have_mbrtowc="no")])
3326 if test "$ac_cv_have_mbrtowc" = "yes"; then
3327 AC_DEFINE(HAVE_MBRTOWC)
3334 ac_cv_func_res_ninit,
3337 #define _BSD_SOURCE 1
3341 [int foo = res_ninit(&_res);],
3342 [ac_cv_func_res_ninit=yes],
3343 [ac_cv_func_res_ninit=no])
3346 if test "$ac_cv_func_res_ninit" = "yes"; then
3347 AC_DEFINE(HAVE_RES_NINIT)
3348 dnl must add the link line we do something as foolish as this... dougt
3350 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3351 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3356 [for gnu_get_libc_version()],
3357 ac_cv_func_gnu_get_libc_version,
3359 #ifdef HAVE_GNU_LIBC_VERSION_H
3360 #include <gnu/libc-version.h>
3363 [const char *glibc_version = gnu_get_libc_version();],
3364 [ac_cv_func_gnu_get_libc_version=yes],
3365 [ac_cv_func_gnu_get_libc_version=no]
3369 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3370 AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3374 darwin*|mingw*|os2*)
3378 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3379 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3380 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3382 LIBS="$LIBS $_ICONV_LIBS"
3391 iconv_t h = iconv_open("", "");
3392 iconv(h, NULL, NULL, NULL, NULL);
3395 [ac_cv_func_iconv=yes],
3396 [ac_cv_func_iconv=no]
3399 if test "$ac_cv_func_iconv" = "yes"; then
3400 AC_DEFINE(HAVE_ICONV)
3401 DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3402 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3403 LIBICONV="$_ICONV_LIBS"
3405 [for iconv() with const input],
3406 ac_cv_func_const_iconv,
3412 const char *input = "testing";
3413 iconv_t h = iconv_open("", "");
3414 iconv(h, &input, NULL, NULL, NULL);
3417 [ac_cv_func_const_iconv=yes],
3418 [ac_cv_func_const_iconv=no]
3421 if test "$ac_cv_func_const_iconv" = "yes"; then
3422 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3434 dnl **********************
3435 dnl *** va_copy checks ***
3436 dnl **********************
3437 dnl we currently check for all three va_copy possibilities, so we get
3438 dnl all results in config.log for bug reports.
3439 AC_MSG_CHECKING(for an implementation of va_copy())
3440 AC_CACHE_VAL(ac_cv_va_copy,[
3443 void f (int i, ...) {
3444 va_list args1, args2;
3445 va_start (args1, i);
3446 va_copy (args2, args1);
3447 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3449 va_end (args1); va_end (args2);
3451 int main() { f (0, 42); return 0; }],
3457 AC_MSG_RESULT($ac_cv_va_copy)
3458 AC_MSG_CHECKING(for an implementation of __va_copy())
3459 AC_CACHE_VAL(ac_cv___va_copy,[
3462 void f (int i, ...) {
3463 va_list args1, args2;
3464 va_start (args1, i);
3465 __va_copy (args2, args1);
3466 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3468 va_end (args1); va_end (args2);
3470 int main() { f (0, 42); return 0; }],
3471 ac_cv___va_copy=yes,
3476 AC_MSG_RESULT($ac_cv___va_copy)
3477 AC_MSG_CHECKING(whether va_lists can be copied by value)
3478 AC_CACHE_VAL(ac_cv_va_val_copy,[
3481 void f (int i, ...) {
3482 va_list args1, args2;
3483 va_start (args1, i);
3485 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3487 va_end (args1); va_end (args2);
3489 int main() { f (0, 42); return 0; }],
3490 ac_cv_va_val_copy=yes,
3491 ac_cv_va_val_copy=no,
3492 ac_cv_va_val_copy=yes
3495 if test "x$ac_cv_va_copy" = "xyes"; then
3496 AC_DEFINE(VA_COPY, va_copy)
3497 AC_DEFINE(HAVE_VA_COPY)
3498 elif test "x$ac_cv___va_copy" = "xyes"; then
3499 AC_DEFINE(VA_COPY, __va_copy)
3500 AC_DEFINE(HAVE_VA_COPY)
3503 if test "x$ac_cv_va_val_copy" = "xno"; then
3504 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3506 AC_MSG_RESULT($ac_cv_va_val_copy)
3508 dnl ===================================================================
3509 dnl ========================================================
3510 dnl Put your C++ language/feature checks below
3511 dnl ========================================================
3515 if test "$GNU_CC"; then
3516 if test "$CPU_ARCH" = "arm" ; then
3517 AC_CACHE_CHECK(for ARM EABI,
3521 #if defined(__ARM_EABI__)
3524 #error Not ARM EABI.
3527 ac_cv_gcc_arm_eabi="yes",
3528 ac_cv_gcc_arm_eabi="no")])
3529 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
3531 ARM_ABI_PREFIX=eabi-
3533 ARM_ABI_PREFIX=oabi-
3537 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
3540 dnl Check for support of modern template specialization syntax
3541 dnl Test code and requirement from scc@netscape.com.
3542 dnl Autoconf cut-and-paste job by waterson@netscape.com
3543 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3544 ac_cv_cpp_modern_specialize_template_syntax,
3545 [AC_TRY_COMPILE(template <class T> struct X { int a; };
3547 template <> struct X<Y> { double a; };,
3550 ac_cv_cpp_modern_specialize_template_syntax=yes,
3551 ac_cv_cpp_modern_specialize_template_syntax=no)])
3552 if test "$ac_cv_cpp_modern_specialize_template_syntax" = no ; then
3553 AC_MSG_ERROR([The C++ compiler does not support template specialization])
3556 dnl Some compilers support only full specialization, and some don't.
3557 AC_CACHE_CHECK(whether partial template specialization works,
3558 ac_cv_cpp_partial_specialization,
3559 [AC_TRY_COMPILE(template <class T> class Foo {};
3560 template <class T> class Foo<T*> {};,
3562 ac_cv_cpp_partial_specialization=yes,
3563 ac_cv_cpp_partial_specialization=no)])
3564 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3565 AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3568 dnl Check to see if we can resolve ambiguity with |using|.
3569 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3570 ac_cv_cpp_ambiguity_resolving_using,
3571 [AC_TRY_COMPILE(class X {
3572 public: int go(const X&) {return 3;}
3573 int jo(const X&) {return 3;}
3575 class Y : public X {
3576 public: int go(int) {return 2;}
3577 int jo(int) {return 2;}
3579 private: using X::go;
3582 ac_cv_cpp_ambiguity_resolving_using=yes,
3583 ac_cv_cpp_ambiguity_resolving_using=no)])
3584 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3585 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3588 dnl See if a dynamic_cast to void* gives the most derived object.
3589 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3590 ac_cv_cpp_dynamic_cast_void_ptr,
3591 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3592 class Y { int j; public: virtual ~Y() { } };
3593 class Z : public X, public Y { int k; };
3599 return !((((void*)&mdo != (void*)subx) &&
3600 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3601 (((void*)&mdo != (void*)suby) &&
3602 ((void*)&mdo == dynamic_cast<void*>(suby))));
3604 ac_cv_cpp_dynamic_cast_void_ptr=yes,
3605 ac_cv_cpp_dynamic_cast_void_ptr=no,
3606 ac_cv_cpp_dynamic_cast_void_ptr=no)])
3607 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3608 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3612 dnl note that this one is reversed - if the test fails, then
3613 dnl we require implementations of unused virtual methods. Which
3614 dnl really blows because it means we'll have useless vtable
3616 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3617 ac_cv_cpp_unused_required,
3618 [AC_TRY_LINK(class X {private: virtual void never_called();};,
3620 ac_cv_cpp_unused_required=no,
3621 ac_cv_cpp_unused_required=yes)])
3622 if test "$ac_cv_cpp_unused_required" = yes ; then
3623 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3627 dnl Some compilers have trouble comparing a constant reference to a templatized
3628 dnl class to zero, and require an explicit operator==() to be defined that takes
3629 dnl an int. This test separates the strong from the weak.
3631 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3632 ac_cv_trouble_comparing_to_zero,
3633 [AC_TRY_COMPILE([#include <algorithm>
3634 template <class T> class Foo {};
3636 template <class T> int operator==(const T2*, const T&) { return 0; }
3637 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3638 [Foo<int> f; return (0 != f);],
3639 ac_cv_trouble_comparing_to_zero=no,
3640 ac_cv_trouble_comparing_to_zero=yes)])
3641 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3642 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3645 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
3646 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
3647 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
3649 _SAVE_LDFLAGS=$LDFLAGS
3650 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
3651 AC_CACHE_CHECK(for __thread keyword for TLS variables,
3652 ac_cv_thread_keyword,
3653 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
3654 [return tlsIsMainThread;],
3655 ac_cv_thread_keyword=yes,
3656 ac_cv_thread_keyword=no)])
3657 LDFLAGS=$_SAVE_LDFLAGS
3658 # The custom dynamic linker doesn't support TLS variables
3660 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
3661 # mips builds fail with TLS variables because of a binutils bug.
3663 # OpenBSD doesn't have TLS support, and the test succeeds with clang++
3668 *-android*|*-linuxandroid*)
3675 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
3681 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
3682 if test -n "$MOZ_LINKER"; then
3683 if test "$CPU_ARCH" = arm; then
3684 dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
3685 if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
3686 LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
3687 _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
3692 dnl The custom linker doesn't support text relocations, but NDK >= r6b
3693 dnl creates some (http://code.google.com/p/android/issues/detail?id=23203)
3694 dnl We however want to avoid these text relocations, and this can be done
3695 dnl by making gcc not link crtbegin and crtend. In the broken NDKs, crtend
3696 dnl doesn't contain anything at all, beside placeholders for some sections,
3697 dnl and crtbegin only contains a finalizer function that calls
3698 dnl __cxa_finalize. The custom linker actually takes care of calling
3699 dnl __cxa_finalize when the library doesn't call it itself, which makes it
3700 dnl safe not to link crtbegin. Besides, previous versions of the NDK didn't
3701 dnl link crtbegin and crtend at all.
3702 if test -n "$MOZ_LINKER" -a "$OS_TARGET" = "Android"; then
3703 AC_CACHE_CHECK([whether the CRT objects have text relocations],
3704 ac_cv_crt_has_text_relocations,
3705 [echo 'int foo() { return 0; }' > conftest.cpp
3706 if AC_TRY_COMMAND(${CXX-g++} -o conftest${DLL_SUFFIX} $CXXFLAGS $DSO_LDOPTS $LDFLAGS conftest.cpp $LIBS 1>&5) &&
3707 test -s conftest${DLL_SUFFIX}; then
3708 if ${TOOLCHAIN_PREFIX}readelf -d conftest${DLL_SUFFIX} | grep TEXTREL > /dev/null; then
3709 ac_cv_crt_has_text_relocations=yes
3711 ac_cv_crt_has_text_relocations=no
3714 AC_ERROR([couldn't compile a simple C file])
3717 if test "$ac_cv_crt_has_text_relocations" = yes; then
3718 dnl While we want libraries to skip the CRT files, we don't want
3719 dnl executables to be treated the same way. We thus set the flag
3720 dnl in DSO_LDOPTS and not LDFLAGS. However, to pass it to nspr,
3721 dnl we need to use LDFLAGS because nspr doesn't inherit DSO_LDOPTS.
3722 dnl Using LDFLAGS in nspr is safe, since we only really build
3723 dnl libraries there.
3724 DSO_LDOPTS="$DSO_LDOPTS -nostartfiles"
3725 NSPR_LDFLAGS="$NSPR_LDFLAGS -nostartfiles"
3729 dnl Check for the existence of various allocation headers/functions
3731 MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h"
3734 for file in $MALLOC_HEADERS; do
3735 MOZ_CHECK_HEADER($file, [MALLOC_H=$file])
3736 if test "$MALLOC_H" != ""; then
3737 AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
3742 MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
3743 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
3745 AC_CHECK_FUNCS(malloc_usable_size)
3747 dnl See if compiler supports some gcc-style attributes
3749 AC_CACHE_CHECK(for __attribute__((always_inline)),
3750 ac_cv_attribute_always_inline,
3751 [AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));],
3753 ac_cv_attribute_always_inline=yes,
3754 ac_cv_attribute_always_inline=no)])
3756 AC_CACHE_CHECK(for __attribute__((malloc)),
3757 ac_cv_attribute_malloc,
3758 [AC_TRY_COMPILE([void* f(int) __attribute__((malloc));],
3760 ac_cv_attribute_malloc=yes,
3761 ac_cv_attribute_malloc=no)])
3763 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
3764 ac_cv_attribute_warn_unused,
3765 [AC_TRY_COMPILE([int f(void) __attribute__((warn_unused_result));],
3767 ac_cv_attribute_warn_unused=yes,
3768 ac_cv_attribute_warn_unused=no)])
3770 dnl End of C++ language/feature checks
3773 dnl ========================================================
3774 dnl = Internationalization checks
3775 dnl ========================================================
3777 dnl Internationalization and Locale support is different
3778 dnl on various UNIX platforms. Checks for specific i18n
3779 dnl features go here.
3781 dnl check for LC_MESSAGES
3782 AC_CACHE_CHECK(for LC_MESSAGES,
3783 ac_cv_i18n_lc_messages,
3784 [AC_TRY_COMPILE([#include <locale.h>],
3785 [int category = LC_MESSAGES;],
3786 ac_cv_i18n_lc_messages=yes,
3787 ac_cv_i18n_lc_messages=no)])
3788 if test "$ac_cv_i18n_lc_messages" = yes; then
3789 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3792 AC_HAVE_FUNCS(localeconv)
3793 fi # ! SKIP_COMPILER_CHECKS
3796 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3797 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3800 dnl Mozilla specific options
3801 dnl ========================================================
3802 dnl The macros used for command line options
3803 dnl are defined in build/autoconf/altoptions.m4.
3805 dnl If the compiler supports these attributes, define them as
3806 dnl convenience macros.
3807 if test "$ac_cv_attribute_malloc" = yes ; then
3808 AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
3810 AC_DEFINE(NS_ATTR_MALLOC,)
3813 if test "$ac_cv_attribute_warn_unused" = yes ; then
3814 AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
3816 AC_DEFINE(NS_WARN_UNUSED_RESULT,)
3819 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
3820 dnl features that Windows actually does support.
3822 if test -n "$SKIP_COMPILER_CHECKS"; then
3823 dnl Windows has malloc.h
3824 AC_DEFINE(MALLOC_H, [<malloc.h>])
3825 AC_DEFINE(HAVE_FORCEINLINE)
3826 AC_DEFINE(HAVE_LOCALECONV)
3827 fi # SKIP_COMPILER_CHECKS
3829 dnl ========================================================
3831 dnl = Check for external package dependencies
3833 dnl ========================================================
3834 MOZ_ARG_HEADER(External Packages)
3836 MOZ_ARG_WITH_STRING(libxul-sdk,
3837 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
3838 LIBXUL_SDK_DIR=$withval)
3840 if test "$LIBXUL_SDK_DIR" = "yes"; then
3841 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
3842 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
3843 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
3845 if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
3846 AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
3850 AC_SUBST(LIBXUL_SDK)
3852 if test -n "$LIBXUL_SDK"; then
3853 LIBXUL_DIST="$LIBXUL_SDK"
3855 LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
3857 AC_SUBST(LIBXUL_DIST)
3861 MOZ_ARG_WITH_BOOL(system-libxul,
3862 [ --with-system-libxul Use system installed libxul SDK],
3865 dnl ========================================================
3866 dnl = If NSPR was not detected in the system,
3867 dnl = use the one in the source tree (mozilla/nsprpub)
3868 dnl ========================================================
3869 MOZ_ARG_WITH_BOOL(system-nspr,
3870 [ --with-system-nspr Use system installed NSPR],
3871 _USE_SYSTEM_NSPR=1 )
3873 if test -n "$_USE_SYSTEM_NSPR"; then
3874 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])])
3877 if test -n "$MOZ_NATIVE_NSPR"; then
3878 _SAVE_CFLAGS=$CFLAGS
3879 CFLAGS="$CFLAGS $NSPR_CFLAGS"
3880 AC_TRY_COMPILE([#include "prtypes.h"],
3881 [#ifndef PR_STATIC_ASSERT
3882 #error PR_STATIC_ASSERT not defined or requires including prtypes.h
3884 [MOZ_NATIVE_NSPR=1],
3885 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
3886 AC_TRY_COMPILE([#include "prtypes.h"],
3888 #error PR_UINT64 not defined or requires including prtypes.h
3890 [MOZ_NATIVE_NSPR=1],
3891 AC_MSG_ERROR([system NSPR does not support PR_UINT64 or including prtypes.h does not provide it]))
3892 CFLAGS=$_SAVE_CFLAGS
3894 if test -z "$LIBXUL_SDK"; then
3895 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
3896 if test -n "$GNU_CC"; then
3897 NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
3899 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
3902 NSPR_CFLAGS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --includedir="${LIBXUL_DIST}/include/nspr" --cflags`
3903 NSPR_LIBS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --libdir="${LIBXUL_DIST}"/lib --libs`
3907 dnl set GRE_MILESTONE
3908 dnl ========================================================
3909 if test -n "$LIBXUL_SDK"; then
3910 GRE_MILESTONE=`$PYTHON "$_topsrcdir"/config/printconfigsetting.py "$LIBXUL_DIST"/bin/platform.ini Build Milestone`
3912 GRE_MILESTONE=`tail -n 1 "$_topsrcdir"/config/milestone.txt 2>/dev/null || tail -1 "$_topsrcdir"/config/milestone.txt`
3914 AC_SUBST(GRE_MILESTONE)
3916 dnl system libevent Support
3917 dnl ========================================================
3918 MOZ_ARG_WITH_STRING(system-libevent,
3919 [ --with-system-libevent[=PFX]
3920 Use system libevent [installed at prefix PFX]],
3921 LIBEVENT_DIR=$withval)
3923 _SAVE_CFLAGS=$CFLAGS
3924 _SAVE_LDFLAGS=$LDFLAGS
3926 if test "$LIBEVENT_DIR" = yes; then
3927 PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
3928 MOZ_NATIVE_LIBEVENT=1,
3931 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
3932 MOZ_NATIVE_LIBEVENT=
3933 elif test -z "$MOZ_NATIVE_LIBEVENT"; then
3934 CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
3935 LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
3936 MOZ_CHECK_HEADER(event.h,
3937 [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
3938 AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
3940 AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
3941 AC_CHECK_LIB(event, event_init,
3942 [MOZ_NATIVE_LIBEVENT=1
3943 MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
3944 MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
3945 [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
3947 CFLAGS=$_SAVE_CFLAGS
3948 LDFLAGS=$_SAVE_LDFLAGS
3951 AC_SUBST(MOZ_NATIVE_LIBEVENT)
3952 AC_SUBST(MOZ_LIBEVENT_CFLAGS)
3953 AC_SUBST(MOZ_LIBEVENT_LIBS)
3955 dnl ========================================================
3956 dnl = If NSS was not detected in the system,
3957 dnl = use the one in the source tree (mozilla/security/nss)
3958 dnl ========================================================
3960 MOZ_ARG_WITH_BOOL(system-nss,
3961 [ --with-system-nss Use system installed NSS],
3964 if test -n "$_USE_SYSTEM_NSS"; then
3965 AM_PATH_NSS(3.15, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
3968 if test -n "$MOZ_NATIVE_NSS"; then
3969 NSS_LIBS="$NSS_LIBS -lcrmf"
3971 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
3973 if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "OS2"; then
3975 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
3976 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
3977 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
3978 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
3979 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
3981 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
3985 dnl ======================
3987 dnl ======================
3989 AC_MSG_CHECKING([for YASM assembler])
3990 AC_CHECK_PROGS(YASM, yasm, "")
3992 if test -n "$YASM"; then
3993 dnl Pull out yasm's version string
3994 YASM_VERSION=`yasm --version | $AWK '/^yasm/ { print $2 }'`
3995 _YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'`
3996 _YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'`
3997 _YASM_RELEASE=` echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'`
3998 _YASM_BUILD=` echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
4001 if test -z "$SKIP_LIBRARY_CHECKS"; then
4002 dnl system JPEG support
4003 dnl ========================================================
4004 MOZ_ARG_WITH_STRING(system-jpeg,
4005 [ --with-system-jpeg[=PFX]
4006 Use system libjpeg [installed at prefix PFX]],
4009 _SAVE_CFLAGS=$CFLAGS
4010 _SAVE_LDFLAGS=$LDFLAGS
4012 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4013 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4014 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4016 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4019 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [MOZ_NATIVE_JPEG=1 MOZ_JPEG_LIBS="-ljpeg"], MOZ_NATIVE_JPEG=)
4022 if test "$MOZ_NATIVE_JPEG" = 1; then
4023 AC_TRY_COMPILE([ #include <stdio.h>
4024 #include <sys/types.h>
4025 #include <jpeglib.h> ],
4026 [ #if JPEG_LIB_VERSION < $MOZJPEG
4027 #error "Insufficient JPEG library version ($MOZJPEG required)."
4029 #ifndef JCS_EXTENSIONS
4030 #error "libjpeg-turbo JCS_EXTENSIONS required"
4034 AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg]))
4036 CFLAGS=$_SAVE_CFLAGS
4037 LDFLAGS=$_SAVE_LDFLAGS
4040 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$MOZ_NATIVE_JPEG" = 1; then
4041 MOZ_JPEG_CFLAGS="-I${JPEG_DIR}/include"
4042 MOZ_JPEG_LIBS="-L${JPEG_DIR}/lib ${MOZ_JPEG_LIBS}"
4044 fi # SKIP_LIBRARY_CHECKS
4046 dnl system ZLIB support
4047 dnl ========================================================
4048 MOZ_ZLIB_CHECK([1.2.3])
4050 if test "$MOZ_NATIVE_ZLIB" != 1; then
4052 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,'"$MOZ_BUILD_ROOT"'/modules/zlib/src)'
4055 if test "$MOZ_LINKER" = 1 -a "$MOZ_NATIVE_ZLIB" != 1; then
4056 AC_MSG_ERROR([Custom dynamic linker requires --with-system-zlib])
4059 if test -z "$SKIP_LIBRARY_CHECKS"; then
4060 dnl system BZIP2 Support
4061 dnl ========================================================
4062 MOZ_ARG_WITH_STRING(system-bz2,
4063 [ --with-system-bz2[=PFX]
4064 Use system libbz2 [installed at prefix PFX]],
4067 _SAVE_CFLAGS=$CFLAGS
4068 _SAVE_LDFLAGS=$LDFLAGS
4070 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4071 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4072 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4074 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4077 AC_CHECK_LIB(bz2, BZ2_bzread, [MOZ_NATIVE_BZ2=1 MOZ_BZ2_LIBS="-lbz2"],
4078 [MOZ_NATIVE_BZ2= MOZ_BZ2_CFLAGS= MOZ_BZ2_LIBS=])
4080 CFLAGS=$_SAVE_CFLAGS
4081 LDFLAGS=$_SAVE_LDFLAGS
4084 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$MOZ_NATIVE_BZ2" = 1; then
4085 MOZ_BZ2_CFLAGS="-I${BZ2_DIR}/include"
4086 MOZ_BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4089 dnl system PNG Support
4090 dnl ========================================================
4091 MOZ_ARG_WITH_STRING(system-png,
4092 [ --with-system-png[=PFX]
4093 Use system libpng [installed at prefix PFX]],
4096 _SAVE_CFLAGS=$CFLAGS
4097 _SAVE_LDFLAGS=$LDFLAGS
4099 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4100 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4101 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4103 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4106 AC_CHECK_LIB(png, png_get_valid, [MOZ_NATIVE_PNG=1 MOZ_PNG_LIBS="-lpng"],
4107 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4108 AC_CHECK_LIB(png, png_get_acTL, ,
4109 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
4111 if test "$MOZ_NATIVE_PNG" = 1; then
4112 AC_TRY_COMPILE([ #include <stdio.h>
4113 #include <sys/types.h>
4115 [ #if PNG_LIBPNG_VER < $MOZPNG
4116 #error "Insufficient libpng version ($MOZPNG required)."
4118 #ifndef PNG_UINT_31_MAX
4119 #error "Insufficient libpng version."
4122 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4124 CFLAGS=$_SAVE_CFLAGS
4125 LDFLAGS=$_SAVE_LDFLAGS
4128 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_NATIVE_PNG" = 1; then
4129 MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
4130 MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
4133 fi # SKIP_LIBRARY_CHECKS
4135 dnl system HunSpell Support
4136 dnl ========================================================
4137 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4138 [ --enable-system-hunspell
4139 Use system hunspell (located with pkgconfig)],
4140 MOZ_NATIVE_HUNSPELL=1 )
4142 if test -n "$MOZ_NATIVE_HUNSPELL"; then
4143 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4146 AC_SUBST(MOZ_NATIVE_HUNSPELL)
4148 dnl ========================================================
4149 dnl system libffi Support
4150 dnl ========================================================
4151 MOZ_ARG_ENABLE_BOOL(system-ffi,
4152 [ --enable-system-ffi Use system libffi (located with pkgconfig)],
4155 if test -n "$MOZ_NATIVE_FFI"; then
4156 # Vanilla libffi 3.0.9 needs a few patches from upcoming version 3.0.10
4157 # for non-GCC compilers.
4158 if test -z "$GNU_CC"; then
4159 PKG_CHECK_MODULES(MOZ_FFI, libffi > 3.0.9)
4161 PKG_CHECK_MODULES(MOZ_FFI, libffi >= 3.0.9)
4163 MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_FFI_LIBS"
4166 dnl ========================================================
4167 dnl Java SDK support
4168 dnl ========================================================
4171 MOZ_ARG_WITH_STRING(java-bin-path,
4172 [ --with-java-bin-path=dir
4173 Location of Java binaries (java, javac, jar)],
4174 JAVA_BIN_PATH=$withval)
4176 dnl ========================================================
4180 dnl ========================================================
4182 MOZ_ARG_HEADER(Application)
4185 ENABLE_SYSTEM_EXTENSION_DIRS=1
4186 MOZ_BRANDING_DIRECTORY=
4187 MOZ_OFFICIAL_BRANDING=
4192 MOZ_AUTH_EXTENSION=1
4195 MOZ_SPEEX_RESAMPLER=1
4201 MOZ_SAMPLE_TYPE_FLOAT32=
4202 MOZ_SAMPLE_TYPE_S16=
4210 MOZ_WEBRTC_SIGNALING=
4211 MOZ_WEBRTC_IN_LIBXUL=
4212 MOZ_WEBRTC_ASSERT_ALWAYS=1
4215 MOZ_MEDIA_NAVIGATOR=
4218 MOZ_VP8_ERROR_CONCEALMENT=
4229 LIBJPEG_TURBO_ASFLAGS=
4230 LIBJPEG_TURBO_X86_ASM=
4231 LIBJPEG_TURBO_X64_ASM=
4232 LIBJPEG_TURBO_ARM_ASM=
4236 MOZ_PREF_EXTENSIONS=1
4237 MOZ_PROFILELOCKING=1
4244 MOZ_ONLY_TOUCH_EVENTS=
4245 MOZ_TOOLKIT_SEARCH=1
4247 MOZ_UNIVERSALCHARDET=1
4253 MOZ_DISABLE_CRYPTOLEGACY=
4257 NECKO_PROTOCOLS_DEFAULT="about data file ftp http res viewsource websocket wyciwyg device"
4260 MOZ_USE_NATIVE_POPUP_WINDOWS=
4261 MOZ_ANDROID_HISTORY=
4263 MOZ_ANDROID_WALLPAPER=
4268 MOZ_AUDIO_CHANNEL_MANAGER=
4271 case "$target_os" in
4274 AC_DEFINE(NS_ENABLE_TSF)
4279 *-android*|*-linuxandroid*)
4280 if test "$CPU_ARCH" = "arm" ; then
4285 if test -z "$gonkdir"; then
4290 MOZ_THEME_FASTSTRIPE=1
4298 MOZ_ARG_WITH_STRING(external-source-dir,
4299 [ --with-external-source-dir=dir
4300 External directory containing additional build files.],
4301 [ EXTERNAL_SOURCE_DIR=$withval])
4302 AC_SUBST(EXTERNAL_SOURCE_DIR)
4304 MOZ_ARG_ENABLE_STRING(application,
4305 [ --enable-application=APP
4309 tools/update-packaging (AUS-related packaging tools)],
4310 [ MOZ_BUILD_APP=$enableval ] )
4312 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4313 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
4314 XULRUNNER_STUB_NAME=$withval)
4316 if test -z "$XULRUNNER_STUB_NAME"; then
4317 case "$target_os" in
4319 XULRUNNER_STUB_NAME=xulrunner
4322 XULRUNNER_STUB_NAME=xulrunner-stub
4325 AC_SUBST(XULRUNNER_STUB_NAME)
4327 AC_MSG_CHECKING([for application to build])
4328 if test -z "$MOZ_BUILD_APP"; then
4329 AC_MSG_RESULT([browser])
4330 MOZ_BUILD_APP=browser
4332 # "mobile" no longer exists.
4333 if test "$MOZ_BUILD_APP" = "mobile" ; then
4334 AC_MSG_RESULT([none])
4335 AC_MSG_ERROR([--enable-application=mobile is no longer supported.])
4337 # We have a valid application only if it has a build.mk file in its top
4339 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4340 AC_MSG_RESULT([none])
4341 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4343 AC_MSG_RESULT([$MOZ_BUILD_APP])
4347 # The app update channel is 'default' when not supplied. The value is used in
4348 # the application's confvars.sh so it must be set before confvars.sh is called.
4349 MOZ_ARG_ENABLE_STRING([update-channel],
4350 [ --enable-update-channel=CHANNEL
4351 Select application update channel (default=default)],
4352 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
4354 if test -z "$MOZ_UPDATE_CHANNEL"; then
4355 MOZ_UPDATE_CHANNEL=default
4357 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
4358 AC_SUBST(MOZ_UPDATE_CHANNEL)
4360 # Allow the application to influence configure with a confvars.sh script.
4362 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4363 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4364 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4365 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4370 # Allow the application to provide a subconfigure script
4371 if test -f "${srcdir}/${MOZ_BUILD_APP}/configure.in" ; then
4372 do_output_subdirs() {
4373 if test -n "$_subconfigure_subdirs"; then
4374 AC_MSG_ERROR([Cannot specify more than one sub-sub-configure])
4376 _subconfigure_subdir="$1"
4377 _subconfigure_config_args="$ac_configure_args"
4379 tmpscript=`$PYTHON -c 'import os, tempfile; print tempfile.mktemp(prefix="subscript.").replace(os.sep, "/")'` || exit 1
4380 m4 "${srcdir}/build/autoconf/subconfigure.m4" \
4381 "${srcdir}/build/autoconf/altoptions.m4" \
4382 "${srcdir}/${MOZ_BUILD_APP}/configure.in" > $tmpscript
4387 # Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig
4388 MOZ_ARG_WITH_STRING(app-name,
4389 [--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME],
4390 WITH_APP_NAME=$withval,
4393 if test -n "$WITH_APP_NAME" ; then
4394 MOZ_APP_NAME="$WITH_APP_NAME"
4397 MOZ_ARG_WITH_STRING(app-basename,
4398 [--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME],
4399 WITH_APP_BASENAME=$withval,
4402 if test -n "$WITH_APP_BASENAME" ; then
4403 MOZ_APP_BASENAME="$WITH_APP_BASENAME"
4406 # Now is a good time to test for logic errors, define mismatches, etc.
4407 case "$MOZ_BUILD_APP" in
4409 if test "$LIBXUL_SDK"; then
4410 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4415 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4416 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4418 case "$MOZ_BUILD_APP" in
4420 AC_DEFINE(MOZ_PHOENIX)
4424 AC_DEFINE(MOZ_XULRUNNER)
4431 AC_SUBST(MOZ_BUILD_APP)
4432 AC_SUBST(MOZ_PHOENIX)
4433 AC_SUBST(MOZ_XULRUNNER)
4436 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4438 dnl ========================================================
4439 dnl Check android sdk version depending on mobile target
4440 dnl ========================================================
4442 if test -z "$gonkdir" ; then
4443 # Minimum Android SDK API Level we require.
4444 case "$MOZ_BUILD_APP" in
4446 android_min_api_level=16
4450 MOZ_ANDROID_SDK($android_min_api_level)
4453 dnl ========================================================
4455 dnl = Toolkit Options
4457 dnl ========================================================
4458 MOZ_ARG_HEADER(Toolkit Options)
4460 dnl ========================================================
4461 dnl = Select the default toolkit
4462 dnl ========================================================
4463 MOZ_ARG_ENABLE_STRING(default-toolkit,
4464 [ --enable-default-toolkit=TK
4465 Select default toolkit
4466 Platform specific defaults:
4467 Mac OS X - cairo-cocoa
4469 Win32 - cairo-windows
4472 [ _DEFAULT_TOOLKIT=$enableval ],
4473 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4475 if test "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4476 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4477 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4478 -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4479 -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4480 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
4481 -o "$_DEFAULT_TOOLKIT" = "cairo-uikit" \
4482 -o "$_DEFAULT_TOOLKIT" = "cairo-android" \
4483 -o "$_DEFAULT_TOOLKIT" = "cairo-gonk"
4485 dnl nglayout only supports building with one toolkit,
4486 dnl so ignore everything after the first comma (",").
4487 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4489 AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4492 MOZ_ARG_WITHOUT_BOOL(x,
4493 [ --without-x Build without X11],
4496 dnl ========================================================
4497 dnl = Enable the toolkit as needed =
4498 dnl ========================================================
4502 case "$MOZ_WIDGET_TOOLKIT" in
4505 MOZ_WIDGET_TOOLKIT=windows
4508 MOZ_INSTRUMENT_EVENT_LOOP=1
4509 if test -n "$GNU_CC"; then
4514 cairo-gtk2|cairo-gtk2-x11)
4515 MOZ_WIDGET_TOOLKIT=gtk2
4517 MOZ_ENABLE_XREMOTE=1
4519 MOZ_GL_DEFAULT_PROVIDER=GLX
4525 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4526 TK_LIBS='$(MOZ_GTK2_LIBS)'
4527 AC_DEFINE(MOZ_WIDGET_GTK2)
4529 AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK)
4531 MOZ_INSTRUMENT_EVENT_LOOP=1
4535 MOZ_WIDGET_TOOLKIT=qt
4537 if test -z "$WITHOUT_X11"; then
4538 MOZ_ENABLE_XREMOTE=1
4539 MOZ_GL_DEFAULT_PROVIDER=GLX
4548 TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4549 TK_LIBS='$(MOZ_QT_LIBS)'
4550 AC_DEFINE(MOZ_WIDGET_QT)
4552 AC_DEFINE(QT_NO_KEYWORDS)
4556 MOZ_WIDGET_TOOLKIT=os2
4558 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4559 TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4564 MOZ_WIDGET_TOOLKIT=cocoa
4565 AC_DEFINE(MOZ_WIDGET_COCOA)
4566 LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
4567 TK_LIBS='-framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
4568 TK_CFLAGS="-DNO_X11"
4569 CFLAGS="$CFLAGS $TK_CFLAGS"
4570 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4571 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/bin/XUL -lxpcom_core -lmozalloc'
4572 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/bin/XUL -lmozalloc'
4573 MOZ_USER_DIR="Mozilla"
4574 MOZ_FS_LAYOUT=bundle
4576 MOZ_INSTRUMENT_EVENT_LOOP=1
4580 MOZ_WIDGET_TOOLKIT=uikit
4581 AC_DEFINE(MOZ_WIDGET_UIKIT)
4582 LDFLAGS="$LDFLAGS -framework UIKit -lobjc"
4583 TK_CFLAGS="-DNO_X11"
4584 TK_LIBS='-framework Foundation -framework CoreFoundation -framework CoreGraphics -framework CoreText'
4585 CFLAGS="$CFLAGS $TK_CFLAGS"
4586 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4587 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/bin/XUL -lxpcom_core -lmozalloc'
4588 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/bin/XUL -lmozalloc'
4589 MOZ_USER_DIR="Mozilla"
4590 MOZ_FS_LAYOUT=bundle
4594 AC_DEFINE(MOZ_WIDGET_ANDROID)
4595 MOZ_WIDGET_TOOLKIT=android
4596 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4597 TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4600 MOZ_INSTRUMENT_EVENT_LOOP=1
4604 AC_DEFINE(MOZ_WIDGET_GONK)
4605 AC_DEFINE(MOZ_TOUCH)
4606 MOZ_WIDGET_TOOLKIT=gonk
4607 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4608 TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4616 AC_SUBST(MOZ_PDF_PRINTING)
4617 if test "$MOZ_PDF_PRINTING"; then
4618 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
4619 AC_DEFINE(MOZ_PDF_PRINTING)
4622 if test "$MOZ_ENABLE_XREMOTE"; then
4623 AC_DEFINE(MOZ_ENABLE_XREMOTE)
4626 if test "$MOZ_INSTRUMENT_EVENT_LOOP"; then
4627 AC_DEFINE(MOZ_INSTRUMENT_EVENT_LOOP)
4630 if test "$COMPILE_ENVIRONMENT"; then
4631 if test "$MOZ_ENABLE_GTK2"; then
4632 if test "$MOZ_X11"; then
4633 GDK_PACKAGES=gdk-x11-2.0
4636 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4639 fi # COMPILE_ENVIRONMENT
4641 AC_SUBST(MOZ_FS_LAYOUT)
4643 dnl ========================================================
4644 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4645 dnl their usage and use them in spidermonkey.
4646 dnl ========================================================
4647 MOZ_ARG_WITH_BOOL(arm-kuser,
4648 [ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4650 if test -n "$USE_ARM_KUSER"; then
4651 AC_DEFINE(USE_ARM_KUSER)
4654 dnl ========================================================
4655 dnl = startup-notification support module
4656 dnl ========================================================
4658 if test "$MOZ_ENABLE_GTK2"
4660 MOZ_ENABLE_STARTUP_NOTIFICATION=
4662 MOZ_ARG_ENABLE_BOOL(startup-notification,
4663 [ --enable-startup-notification
4664 Enable startup-notification support (default: disabled) ],
4665 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4666 MOZ_ENABLE_STARTUP_NOTIFICATION=)
4667 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4669 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4670 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4671 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4672 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4674 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4676 MOZ_ENABLE_STARTUP_NOTIFICATION=
4680 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4681 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4684 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4686 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4687 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4688 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4690 dnl ========================================================
4692 dnl ========================================================
4693 if test "$MOZ_ENABLE_QT"
4695 MOZ_ARG_WITH_STRING(qtdir,
4696 [ --with-qtdir=\$dir Specify Qt directory ],
4699 if test -z "$QTDIR"; then
4700 PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtCore QtOpenGL)
4701 PKG_CHECK_MODULES(MOZ_QT5, Qt5Widgets Qt5Multimedia Qt5PrintSupport,
4704 if test "$MOZ_ENABLE_QT5"; then
4706 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $MOZ_QT5_CFLAGS"
4707 MOZ_QT_LIBS="$MOZ_QT_LIBS $MOZ_QT5_LIBS"
4710 AC_CHECK_PROGS(HOST_MOC, $MOC moc, "")
4711 AC_CHECK_PROGS(HOST_RCC, $RCC rcc, "")
4713 MOZ_QT_CFLAGS="-DQT_SHARED"
4714 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
4715 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
4716 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
4717 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
4718 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
4719 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDeclarative"
4721 # QtWidgets was introduced only in Qt5
4722 if test -d $QTDIR/include/QtWidgets; then
4724 MOZ_QT_LIBS="-L$QTDIR/lib/ -lQt5Gui -lQt5Network -lQt5Core -lQt5Xml -lQt5OpenGL"
4725 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui/5.0.1/QtGui"
4726 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtWidgets"
4727 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtPrintSupport"
4728 MOZ_QT_LIBS="$MOZ_QT_LIBS -lQt5Widgets -lQt5PrintSupport"
4730 MOZ_QT_LIBS="-L$QTDIR/lib/ -lQtGui -lQtNetwork -lQtCore -lQtXml -lQtOpenGL"
4731 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/Qt"
4733 HOST_MOC="$QTDIR/bin/moc"
4734 HOST_RCC="$QTDIR/bin/rcc"
4736 if test -z "$HOST_MOC"; then
4737 AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is
4740 if test -z "$HOST_RCC"; then
4741 AC_MSG_ERROR([No acceptable rcc preprocessor found. Qt SDK is not installed or --with-qt is
4748 MOZ_ENABLE_QMSYSTEM2=
4749 PKG_CHECK_MODULES(_QMSYSTEM2, qmsystem2,
4750 MOZ_ENABLE_QMSYSTEM2=1,
4751 MOZ_ENABLE_QMSYSTEM2=)
4753 if test "$MOZ_ENABLE_QMSYSTEM2"; then
4754 MOZ_ENABLE_QMSYSTEM2=1
4755 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QMSYSTEM2_CFLAGS"
4756 MOZ_QT_LIBS="$MOZ_QT_LIBS $_QMSYSTEM2_LIBS"
4757 AC_DEFINE(MOZ_ENABLE_QMSYSTEM2)
4760 MOZ_ENABLE_QTNETWORK=
4761 PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7,
4762 MOZ_ENABLE_QTNETWORK=1,
4763 MOZ_ENABLE_QTNETWORK=)
4765 if test "$MOZ_ENABLE_QTNETWORK"; then
4766 MOZ_ENABLE_QTNETWORK=1
4767 AC_DEFINE(MOZ_ENABLE_QTNETWORK)
4770 MOZ_ENABLE_QTMOBILITY=
4771 PKG_CHECK_MODULES(_QTMOBILITY, QtSensors QtFeedback QtLocation,
4772 MOZ_ENABLE_QTMOBILITY=1,
4773 MOZ_ENABLE_QTMOBILITY=)
4774 if test "$MOZ_ENABLE_QTMOBILITY"; then
4775 MOZ_ENABLE_QTMOBILITY=1
4776 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QTMOBILITY_CFLAGS"
4777 MOZ_QT_LIBS="$MOZ_QT_LIBS $_QTMOBILITY_LIBS"
4779 AC_CHECK_LIB(QtSensors, main, [
4780 MOZ_ENABLE_QTMOBILITY=1
4781 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtMobility"
4782 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtSensors"
4783 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtFeedback"
4784 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtLocation"
4785 MOZ_QT_LIBS="$MOZ_QT_LIBS -lQtSensors -lQtFeedback -lQtLocation"
4788 if test "$MOZ_ENABLE_QTMOBILITY"; then
4789 AC_DEFINE(MOZ_ENABLE_QTMOBILITY)
4793 AC_SUBST(GTK_CONFIG)
4797 AC_SUBST(MOZ_ENABLE_GTK2)
4798 AC_SUBST(MOZ_ENABLE_QT)
4799 AC_SUBST(MOZ_ENABLE_QTNETWORK)
4800 AC_SUBST(MOZ_ENABLE_QMSYSTEM2)
4801 AC_SUBST(MOZ_ENABLE_QTMOBILITY)
4802 AC_SUBST(MOZ_ENABLE_XREMOTE)
4803 AC_SUBST(MOZ_GTK2_CFLAGS)
4804 AC_SUBST(MOZ_GTK2_LIBS)
4805 AC_SUBST(MOZ_WIDGET_GTK)
4806 AC_SUBST(MOZ_QT_CFLAGS)
4807 AC_SUBST(MOZ_QT_LIBS)
4814 dnl ========================================================
4816 dnl = Components & Features
4818 dnl ========================================================
4819 MOZ_ARG_HEADER(Components and Features)
4821 dnl ========================================================
4823 dnl ========================================================
4824 MOZ_ARG_ENABLE_STRING(ui-locale,
4825 [ --enable-ui-locale=ab-CD
4826 Select the user interface locale (default: en-US)],
4827 MOZ_UI_LOCALE=$enableval )
4828 AC_SUBST(MOZ_UI_LOCALE)
4830 dnl ========================================================
4831 dnl = Trademarked Branding
4832 dnl ========================================================
4833 MOZ_ARG_ENABLE_BOOL(official-branding,
4834 [ --enable-official-branding
4835 Enable Official mozilla.org Branding
4836 Do not distribute builds with
4837 --enable-official-branding unless you have
4838 permission to use trademarks per
4839 http://www.mozilla.org/foundation/trademarks/ .],
4841 if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
4842 AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
4844 MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
4845 MOZ_OFFICIAL_BRANDING=1
4847 ], MOZ_OFFICIAL_BRANDING=)
4849 AC_SUBST(MOZ_OFFICIAL_BRANDING)
4850 if test -n "$MOZ_OFFICIAL_BRANDING"; then
4851 AC_DEFINE(MOZ_OFFICIAL_BRANDING)
4854 MOZ_ARG_WITH_STRING(branding,
4855 [ --with-branding=dir Use branding from the specified directory.],
4856 MOZ_BRANDING_DIRECTORY=$withval)
4858 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4859 if test -z "$REAL_BRANDING_DIRECTORY"; then
4860 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4863 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4864 . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
4867 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4869 dnl ========================================================
4870 dnl = Distribution ID
4871 dnl ========================================================
4872 MOZ_ARG_WITH_STRING(distribution-id,
4873 [ --with-distribution-id=ID
4874 Set distribution-specific id (default=org.mozilla)],
4875 [ val=`echo $withval`
4876 MOZ_DISTRIBUTION_ID="$val"])
4878 if test -z "$MOZ_DISTRIBUTION_ID"; then
4879 MOZ_DISTRIBUTION_ID="org.mozilla"
4882 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4883 AC_SUBST(MOZ_DISTRIBUTION_ID)
4886 dnl ========================================================
4887 dnl complex text support off by default
4888 dnl ========================================================
4889 MOZ_ARG_DISABLE_BOOL(pango,
4890 [ --disable-pango Disable usage of Pango ],
4894 dnl ========================================================
4896 dnl ========================================================
4897 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
4901 if test "$MOZ_PANGO"
4903 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4905 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION)
4906 AC_SUBST(MOZ_PANGO_CFLAGS)
4907 AC_SUBST(MOZ_PANGO_LIBS)
4908 AC_DEFINE(MOZ_PANGO)
4910 PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0)
4911 AC_SUBST(FT2_CFLAGS)
4916 dnl ========================================================
4917 dnl = GnomeVFS, GIO and GConf support module
4918 dnl ========================================================
4922 dnl build the GIO extension by default only when the
4923 dnl GTK2 toolkit is in use.
4924 if test "$MOZ_ENABLE_GTK2"
4930 dnl ========================================================
4931 dnl = GnomeVFS support module
4932 dnl ========================================================
4933 MOZ_ARG_ENABLE_BOOL(gnomevfs,
4934 [ --enable-gnomevfs Enable GnomeVFS support (default: disabled)],
4935 MOZ_ENABLE_GNOMEVFS=force,
4936 MOZ_ENABLE_GNOMEVFS=)
4938 if test "$MOZ_ENABLE_GNOMEVFS"
4940 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
4941 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
4942 MOZ_ENABLE_GNOMEVFS=1
4943 AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
4945 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
4947 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
4949 MOZ_ENABLE_GNOMEVFS=
4953 AC_SUBST(MOZ_ENABLE_GNOMEVFS)
4954 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
4955 AC_SUBST(MOZ_GNOMEVFS_LIBS)
4957 dnl ========================================================
4958 dnl = GIO support module
4959 dnl ========================================================
4960 MOZ_ARG_DISABLE_BOOL(gio,
4961 [ --disable-gio Disable GIO support],
4963 MOZ_ENABLE_GIO=force)
4965 if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK2"
4967 PKG_CHECK_MODULES(_GTKCHECK, gtk+-2.0 >= 2.14, ,
4968 [AC_MSG_ERROR([* * * Could not find gtk+-2.0 > 2.14. Required for build with gio.])])
4969 PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
4970 MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
4972 AC_DEFINE(MOZ_ENABLE_GIO)
4974 if test "$MOZ_ENABLE_GIO" = "force"
4976 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
4982 AC_SUBST(MOZ_ENABLE_GIO)
4983 AC_SUBST(MOZ_GIO_CFLAGS)
4984 AC_SUBST(MOZ_GIO_LIBS)
4986 dnl ========================================================
4987 dnl = GConf support module
4988 dnl ========================================================
4989 MOZ_ARG_DISABLE_BOOL(gconf,
4990 [ --disable-gconf Disable Gconf support ],
4992 MOZ_ENABLE_GCONF=force)
4994 if test "$MOZ_ENABLE_GCONF"
4996 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
4997 MOZ_GCONF_LIBS=`$PKG_CONFIG --libs gobject-2.0`
5000 if test "$MOZ_ENABLE_GCONF" = "force"
5002 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
5008 if test "$MOZ_ENABLE_GCONF"; then
5009 AC_DEFINE(MOZ_ENABLE_GCONF)
5012 AC_SUBST(MOZ_ENABLE_GCONF)
5013 AC_SUBST(MOZ_GCONF_CFLAGS)
5014 AC_SUBST(MOZ_GCONF_LIBS)
5017 dnl ========================================================
5018 dnl = libproxy support
5019 dnl ========================================================
5021 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5023 MOZ_ENABLE_LIBPROXY=
5025 MOZ_ARG_ENABLE_BOOL(libproxy,
5026 [ --enable-libproxy Enable libproxy support ],
5027 MOZ_ENABLE_LIBPROXY=1,
5028 MOZ_ENABLE_LIBPROXY=)
5030 if test "$MOZ_ENABLE_LIBPROXY"
5032 PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
5033 AC_DEFINE(MOZ_ENABLE_LIBPROXY)
5036 AC_SUBST(MOZ_ENABLE_LIBPROXY)
5037 AC_SUBST(MOZ_LIBPROXY_CFLAGS)
5038 AC_SUBST(MOZ_LIBPROXY_LIBS)
5040 dnl ========================================================
5041 dnl = GNOME component (mozgnome)
5042 dnl ========================================================
5044 if test "$MOZ_ENABLE_GTK2"
5046 MOZ_ENABLE_GNOME_COMPONENT=1
5048 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5050 dnl ========================================================
5051 dnl = libgnomeui support module
5052 dnl ========================================================
5054 if test "$MOZ_ENABLE_GTK2"
5056 MOZ_ARG_ENABLE_BOOL(gnomeui,
5057 [ --enable-gnomeui Enable libgnomeui instead of GIO & GTK for icon theme support ],
5058 MOZ_ENABLE_GNOMEUI=force,
5059 MOZ_ENABLE_GNOMEUI=)
5061 if test "$MOZ_ENABLE_GNOMEUI"
5063 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5065 MOZ_ENABLE_GNOMEUI=1
5067 if test "$MOZ_ENABLE_GNOMEUI" = "force"
5069 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5075 if test "$MOZ_ENABLE_GNOMEUI"; then
5076 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5080 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5081 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5083 dnl ========================================================
5085 dnl ========================================================
5087 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5091 MOZ_ARG_DISABLE_BOOL(dbus,
5092 [ --disable-dbus Disable dbus support ],
5096 if test "$MOZ_ENABLE_DBUS"
5098 PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
5099 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5100 AC_DEFINE(MOZ_ENABLE_DBUS)
5103 AC_SUBST(MOZ_ENABLE_DBUS)
5104 AC_SUBST(MOZ_DBUS_CFLAGS)
5105 AC_SUBST(MOZ_DBUS_LIBS)
5106 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5107 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5109 dnl ========================================================
5110 dnl = Enable Android History instead of Places
5111 dnl ========================================================
5112 if test -n "$MOZ_ANDROID_HISTORY"; then
5113 if test -z "$MOZ_PLACES"; then
5114 AC_DEFINE(MOZ_ANDROID_HISTORY)
5116 AC_MSG_ERROR([Cannot use MOZ_ANDROID_HISTORY alongside MOZ_PLACES.])
5120 dnl ========================================================
5121 dnl = Build with the Android compositor
5122 dnl ========================================================
5123 if test -n "$MOZ_ANDROID_OMTC"; then
5124 dnl Do this if defined in confvars.sh
5125 AC_DEFINE(MOZ_ANDROID_OMTC)
5128 dnl ========================================================
5129 dnl = Disable WebSMS backend
5130 dnl ========================================================
5131 MOZ_ARG_DISABLE_BOOL(websms-backend,
5132 [ --disable-websms-backend
5133 Disable WebSMS backend],
5134 MOZ_WEBSMS_BACKEND=,
5135 MOZ_WEBSMS_BACKEND=1)
5137 if test -n "$MOZ_WEBSMS_BACKEND"; then
5138 AC_DEFINE(MOZ_WEBSMS_BACKEND)
5141 dnl ========================================================
5142 dnl = Enable SET_WALLPAPER permission on Android
5143 dnl ========================================================
5144 if test -n "$MOZ_ANDROID_WALLPAPER"; then
5145 AC_DEFINE(MOZ_ANDROID_WALLPAPER)
5148 dnl ========================================================
5149 dnl = Enable NFC permission on Android
5150 dnl ========================================================
5151 if test -n "$MOZ_ANDROID_BEAM"; then
5152 AC_DEFINE(MOZ_ANDROID_BEAM)
5155 dnl ========================================================
5156 dnl = Build Personal Security Manager
5157 dnl ========================================================
5158 MOZ_ARG_DISABLE_BOOL(crypto,
5159 [ --disable-crypto Disable crypto support (Personal Security Manager)],
5163 dnl ========================================================
5164 dnl = JS Debugger XPCOM component (js/jsd)
5165 dnl ========================================================
5166 MOZ_ARG_DISABLE_BOOL(jsd,
5167 [ --disable-jsd Disable JavaScript debug library],
5172 dnl ========================================================
5173 dnl = Enable IPDL's "expensive" unit tests
5174 dnl ========================================================
5177 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
5178 [ --enable-ipdl-tests Enable expensive IPDL tests],
5182 if test -n "$MOZ_IPDL_TESTS"; then
5183 AC_DEFINE(MOZ_IPDL_TESTS)
5186 AC_SUBST(MOZ_IPDL_TESTS)
5188 dnl ========================================================
5189 dnl = Disable building dbm
5190 dnl ========================================================
5191 MOZ_ARG_DISABLE_BOOL(dbm,
5192 [ --disable-dbm Disable building dbm],
5196 dnl bi-directional support always on
5200 dnl ========================================================
5201 dnl accessibility support on by default on all platforms
5202 dnl ========================================================
5203 MOZ_ARG_DISABLE_BOOL(accessibility,
5204 [ --disable-accessibility Disable accessibility support],
5207 if test "$ACCESSIBILITY"; then
5210 if test -z "$MIDL"; then
5211 if test "$GCC" != "yes"; then
5212 AC_MSG_ERROR([MIDL could not be found. Building accessibility without MIDL is not supported.])
5214 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.])
5218 AC_DEFINE(ACCESSIBILITY)
5221 dnl ========================================================
5222 dnl Accessibility is required for the linuxgl widget
5224 dnl ========================================================
5225 if test "${MOZ_WIDGET_TOOLKIT}" = "linuxgl" -a "$ACCESSIBILITY" != "1"; then
5226 AC_MSG_ERROR(["Accessibility is required for the linuxgl widget backend"])
5229 dnl ========================================================
5230 dnl Disable printing
5231 dnl ========================================================
5232 MOZ_ARG_DISABLE_BOOL(printing,
5233 [ --disable-printing Disable printing support],
5237 if test "$NS_PRINTING"; then
5238 AC_DEFINE(NS_PRINTING)
5239 AC_DEFINE(NS_PRINT_PREVIEW)
5242 dnl Turn off webrtc for OS's we don't handle yet, but allow
5243 dnl --enable-webrtc to override. Can disable for everything in
5244 dnl the master list above.
5245 if test -n "$MOZ_WEBRTC"; then
5247 *-linux*|*-mingw*|*-darwin*|*-android*|*-linuxandroid*)
5251 dnl default to disabled for all others
5257 # target_arch is from {ia32|x64|arm|ppc}
5260 WEBRTC_TARGET_ARCH=x64
5264 WEBRTC_TARGET_ARCH=arm
5268 WEBRTC_TARGET_ARCH=ia32
5272 WEBRTC_TARGET_ARCH=ppc
5275 # unsupported arch for webrtc
5276 WEBRTC_TARGET_ARCH=unknown
5282 dnl ========================================================
5283 dnl = Disable WebRTC code
5284 dnl ========================================================
5285 MOZ_ARG_DISABLE_BOOL(webrtc,
5286 [ --disable-webrtc Disable support for WebRTC],
5290 if test -n "$MOZ_WEBRTC"; then
5291 AC_DEFINE(MOZ_WEBRTC)
5292 dnl MOZ_WEBRTC_ASSERT_ALWAYS turns on a number of safety asserts in
5293 dnl opt/production builds (via MOZ_CRASH())
5294 AC_DEFINE(MOZ_WEBRTC_ASSERT_ALWAYS)
5298 MOZ_VP8_ERROR_CONCEALMENT=1
5300 dnl enable once Signaling lands
5301 MOZ_WEBRTC_SIGNALING=1
5302 AC_DEFINE(MOZ_WEBRTC_SIGNALING)
5303 if test "${OS_TARGET}" = "WINNT"; then
5304 MOZ_WEBRTC_IN_LIBXUL=1
5306 dnl enable once PeerConnection lands
5307 MOZ_PEERCONNECTION=1
5308 AC_DEFINE(MOZ_PEERCONNECTION)
5315 AC_SUBST(MOZ_WEBRTC)
5316 AC_SUBST(MOZ_WEBRTC_LEAKING_TESTS)
5317 AC_SUBST(MOZ_WEBRTC_SIGNALING)
5318 AC_SUBST(MOZ_PEERCONNECTION)
5319 AC_SUBST(MOZ_WEBRTC_IN_LIBXUL)
5320 AC_SUBST(MOZ_WEBRTC_ASSERT_ALWAYS)
5324 case "$target_cpu" in
5326 MOZ_SAMPLE_TYPE_S16=1
5327 AC_DEFINE(MOZ_SAMPLE_TYPE_S16)
5328 AC_SUBST(MOZ_SAMPLE_TYPE_S16)
5331 MOZ_SAMPLE_TYPE_FLOAT32=1
5332 AC_DEFINE(MOZ_SAMPLE_TYPE_FLOAT32)
5333 AC_SUBST(MOZ_SAMPLE_TYPE_FLOAT32)
5337 dnl ========================================================
5338 dnl = Disable Speech API code
5339 dnl ========================================================
5340 MOZ_ARG_DISABLE_BOOL(webspeech,
5341 [ --disable-webspeech Disable support for HTML Speech API],
5345 if test -n "$MOZ_WEBSPEECH"; then
5346 AC_DEFINE(MOZ_WEBSPEECH)
5349 AC_SUBST(MOZ_WEBSPEECH)
5351 dnl ========================================================
5352 dnl = Enable Raw Codecs
5353 dnl ========================================================
5354 MOZ_ARG_ENABLE_BOOL(raw,
5355 [ --enable-raw Enable support for RAW media],
5359 if test -n "$MOZ_RAW"; then
5365 dnl ========================================================
5366 dnl = Disable Ogg Codecs
5367 dnl ========================================================
5368 MOZ_ARG_DISABLE_BOOL(ogg,
5369 [ --disable-ogg Disable support for OGG media (Theora video and Vorbis audio)],
5373 if test -n "$MOZ_OGG"; then
5377 dnl Checks for __attribute__(aligned()) directive
5378 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5379 [ac_cv_c_attribute_aligned],
5380 [ac_cv_c_attribute_aligned=0
5381 CFLAGS_save="${CFLAGS}"
5382 CFLAGS="${CFLAGS} -Werror"
5383 for ac_cv_c_attr_align_try in 64 32 16 8; do
5384 echo "trying $ac_cv_c_attr_align_try"
5386 [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
5387 [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
5388 if test "$ac_cv_c_attribute_aligned" != 0; then
5392 CFLAGS="${CFLAGS_save}"])
5393 if test "${ac_cv_c_attribute_aligned}" != "0"; then
5394 AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
5395 [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
5399 dnl ========================================================
5400 dnl = Disable Opus audio codec support
5401 dnl ========================================================
5402 MOZ_ARG_DISABLE_BOOL(opus,
5403 [ --disable-opus Disable support for Opus audio],
5407 dnl ========================================================
5408 dnl = Disable VP8 decoder support
5409 dnl ========================================================
5410 MOZ_ARG_DISABLE_BOOL(webm,
5411 [ --disable-webm Disable support for WebM media (VP8 video and Vorbis audio)],
5415 if test -n "$MOZ_WEBM"; then
5420 dnl ========================================================
5421 dnl = Windows Media Foundation support
5422 dnl ========================================================
5423 if test "$OS_ARCH" = "WINNT"; then
5424 dnl Enable Windows Media Foundation support by default.
5425 dnl Note our minimum SDK version is Windows 7 SDK, so we are (currently)
5426 dnl guaranteed to have a recent-enough SDK to build WMF.
5430 MOZ_ARG_DISABLE_BOOL(wmf,
5431 [ --disable-wmf Disable support for Windows Media Foundation],
5435 if test -n "$MOZ_WMF"; then
5440 dnl ========================================================
5441 dnl = Enable media plugin support
5442 dnl ========================================================
5443 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5444 dnl Enable support on android by default
5448 MOZ_ARG_ENABLE_BOOL(media-plugins,
5449 [ --enable-media-plugins Enable support for media plugins],
5450 MOZ_MEDIA_PLUGINS=1,
5453 if test -n "$MOZ_MEDIA_PLUGINS"; then
5454 AC_DEFINE(MOZ_MEDIA_PLUGINS)
5457 dnl ========================================================
5458 dnl = Enable getUserMedia support
5459 dnl ========================================================
5460 MOZ_ARG_ENABLE_BOOL(media-navigator,
5461 [ --enable-media-navigator Enable support for getUserMedia],
5462 MOZ_MEDIA_NAVIGATOR=1,
5463 MOZ_MEDIA_NAVIGATOR=)
5465 if test -n "$MOZ_MEDIA_NAVIGATOR"; then
5466 AC_DEFINE(MOZ_MEDIA_NAVIGATOR)
5469 dnl ========================================================
5470 dnl = Enable building OMX media plugin (B2G or Android)
5471 dnl ========================================================
5472 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5473 dnl Enable support on android by default
5477 MOZ_ARG_ENABLE_BOOL(omx-plugin,
5478 [ --enable-omx-plugin Enable building OMX plugin (B2G)],
5482 if test -n "$MOZ_OMX_PLUGIN"; then
5483 if test "$OS_TARGET" = "Android"; then
5484 dnl Only allow building OMX plugin on Gonk (B2G) or Android
5485 AC_DEFINE(MOZ_OMX_PLUGIN)
5487 dnl fail if we're not building on Gonk or Android
5488 AC_MSG_ERROR([OMX media plugin can only be built on B2G or Android])
5492 dnl system libvpx Support
5493 dnl ========================================================
5494 MOZ_ARG_WITH_BOOL(system-libvpx,
5495 [ --with-system-libvpx Use system libvpx (located with pkgconfig)],
5496 MOZ_NATIVE_LIBVPX=1)
5501 if test -n "$MOZ_VP8"; then
5503 if test -n "$MOZ_VP8_ERROR_CONCEALMENT" ; then
5504 AC_DEFINE(MOZ_VP8_ERROR_CONCEALMENT)
5506 if test -n "$MOZ_VP8_ENCODER" ; then
5507 AC_DEFINE(MOZ_VP8_ENCODER)
5510 if test -n "$MOZ_NATIVE_LIBVPX"; then
5511 dnl ============================
5512 dnl === libvpx Version check ===
5513 dnl ============================
5514 dnl Check to see if we have a system libvpx package.
5515 PKG_CHECK_MODULES(MOZ_LIBVPX, vpx >= 1.0.0)
5517 MOZ_CHECK_HEADER([vpx/vpx_decoder.h], [],
5518 [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.])])
5521 AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver, [],
5522 [AC_MSG_ERROR([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found])])
5527 AC_SUBST(MOZ_NATIVE_LIBVPX)
5528 AC_SUBST(MOZ_LIBVPX_CFLAGS)
5529 AC_SUBST(MOZ_LIBVPX_LIBS)
5531 if test "$MOZ_WEBM"; then
5533 if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then
5540 if test -n "$MOZ_VP8" -a -z "$MOZ_NATIVE_LIBVPX"; then
5542 dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
5543 dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
5544 dnl We currently require gcc on all arm platforms.
5547 VPX_NEED_OBJ_INT_EXTRACT=
5549 dnl See if we have assembly on this platform.
5550 case "$OS_ARCH:$CPU_ARCH" in
5552 VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC"
5556 VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC"
5560 VPX_ASFLAGS="-f x64 -rnasm -pnasm"
5564 dnl Check for yasm 1.1 or greater.
5565 if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then
5566 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.])
5567 elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
5568 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.])
5570 VPX_ASFLAGS="-f win32 -rnasm -pnasm -DPIC"
5572 dnl The encoder needs obj_int_extract to get asm offsets.
5576 if test -n "$GNU_AS" ; then
5578 dnl These flags are a lie; they're just used to enable the requisite
5579 dnl opcodes; actual arch detection is done at runtime.
5580 VPX_ASFLAGS="-march=armv7-a -mfpu=neon"
5581 VPX_DASH_C_FLAG="-c"
5582 VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl'
5583 VPX_ASM_SUFFIX="$ASM_SUFFIX"
5588 if $CC -E -dM -</dev/null | grep -q __ELF__; then
5589 VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
5594 if $CC -E -dM -</dev/null | grep -q __ELF__; then
5595 VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
5601 if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_X86_ASM" -a -z "$VPX_AS"; then
5602 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.])
5605 if test -n "$MOZ_VP8_ENCODER" -a \
5606 -z "$GNU_CC" -a -z "$INTEL_CC" -a -z "$CLANG_CC" ; then
5607 dnl We prefer to get asm offsets using inline assembler, which the above
5608 dnl compilers can do. When we're not using one of those, we have to fall
5609 dnl back to obj_int_extract, which reads them from a compiled object
5610 dnl file. Unfortunately, that only works if we're compiling on a system
5611 dnl with the header files for the appropriate object file format.
5612 VPX_NEED_OBJ_INT_EXTRACT=1
5615 if test -n "$VPX_X86_ASM"; then
5616 AC_DEFINE(VPX_X86_ASM)
5617 elif test -n "$VPX_ARM_ASM"; then
5618 AC_DEFINE(VPX_ARM_ASM)
5620 AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.])
5624 dnl ========================================================
5625 dnl = Disable Wave decoder support
5626 dnl ========================================================
5627 MOZ_ARG_DISABLE_BOOL(wave,
5628 [ --disable-wave Disable Wave decoder support],
5632 if test -n "$MOZ_WAVE"; then
5637 dnl ========================================================
5638 dnl = Handle dependent CUBEB and MEDIA defines
5639 dnl ========================================================
5641 if test -n "$MOZ_SPEEX_RESAMPLER"; then
5642 AC_DEFINE(MOZ_SPEEX_RESAMPLER)
5645 if test -n "$MOZ_SOUNDTOUCH"; then
5646 AC_DEFINE(MOZ_SOUNDTOUCH)
5649 if test -n "$MOZ_CUBEB"; then
5650 AC_DEFINE(MOZ_CUBEB)
5653 if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then
5654 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/])
5657 if test -n "$MOZ_VORBIS"; then
5658 AC_DEFINE(MOZ_VORBIS)
5661 if test -n "$MOZ_TREMOR"; then
5662 AC_DEFINE(MOZ_TREMOR)
5665 if test -n "$MOZ_OPUS"; then
5669 dnl ========================================================
5670 dnl = Check alsa availability on Linux if using sydneyaudio
5671 dnl ========================================================
5673 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
5674 if test -n "$MOZ_CUBEB" -a "$OS_TARGET" = "Linux"; then
5678 MOZ_ARG_ENABLE_BOOL(alsa,
5679 [ --enable-alsa Enable Alsa support (default on Linux)],
5683 if test -n "$MOZ_ALSA"; then
5684 AC_DEFINE(MOZ_CUBEB)
5685 PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
5686 [echo "$MOZ_ALSA_PKG_ERRORS"
5687 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.)])])
5691 AC_SUBST(MOZ_ALSA_CFLAGS)
5692 AC_SUBST(MOZ_ALSA_LIBS)
5694 dnl ========================================================
5695 dnl = Enable PulseAudio
5696 dnl ========================================================
5698 MOZ_ARG_ENABLE_BOOL(pulseaudio,
5699 [ --enable-pulseaudio Enable PulseAudio support (experimental)],
5703 if test -n "$MOZ_PULSEAUDIO"; then
5704 AC_DEFINE(MOZ_CUBEB)
5705 PKG_CHECK_MODULES(MOZ_PULSEAUDIO, libpulse, ,
5706 [echo "$MOZ_PULSEAUDIO_PKG_ERRORS"
5707 AC_MSG_ERROR([pulseaudio audio backend requires libpulse package])])
5710 AC_SUBST(MOZ_PULSEAUDIO)
5711 AC_SUBST(MOZ_PULSEAUDIO_CFLAGS)
5712 AC_SUBST(MOZ_PULSEAUDIO_LIBS)
5714 dnl ========================================================
5715 dnl = Enable GStreamer
5716 dnl ========================================================
5717 MOZ_ARG_ENABLE_BOOL(gstreamer,
5718 [ --enable-gstreamer Enable GStreamer support],
5722 if test "$MOZ_GSTREAMER"; then
5723 # API version, eg 0.10, 1.0 etc
5724 GST_API_VERSION=0.10
5725 # core/base release number
5727 PKG_CHECK_MODULES(GSTREAMER,
5728 gstreamer-$GST_API_VERSION >= $GST_VERSION
5729 gstreamer-app-$GST_API_VERSION
5730 gstreamer-plugins-base-$GST_API_VERSION)
5731 if test -n "$GSTREAMER_LIBS"; then
5732 _SAVE_LDFLAGS=$LDFLAGS
5733 LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5734 AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=)
5735 if test -n "$_HAVE_LIBGSTVIDEO" ; then
5736 GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5738 AC_MSG_ERROR([gstreamer video backend requires libgstvideo])
5740 LDFLAGS=$_SAVE_LDFLAGS
5742 AC_MSG_ERROR([gstreamer backend requires the gstreamer packages])
5745 AC_SUBST(GSTREAMER_CFLAGS)
5746 AC_SUBST(GSTREAMER_LIBS)
5747 AC_SUBST(MOZ_GSTREAMER)
5749 if test -n "$MOZ_GSTREAMER"; then
5750 AC_DEFINE(MOZ_GSTREAMER)
5754 dnl ========================================================
5755 dnl Permissions System
5756 dnl ========================================================
5757 MOZ_ARG_DISABLE_BOOL(permissions,
5758 [ --disable-permissions Disable permissions (popup and cookie blocking)],
5763 dnl ========================================================
5765 dnl ========================================================
5766 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5767 [ --disable-negotiateauth Disable GSS-API negotiation ],
5768 MOZ_AUTH_EXTENSION=,
5769 MOZ_AUTH_EXTENSION=1 )
5771 dnl ========================================================
5772 dnl Pref extensions (autoconfig)
5773 dnl ========================================================
5774 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5775 [ --disable-pref-extensions
5776 Disable pref extensions such as autoconfig],
5777 MOZ_PREF_EXTENSIONS=,
5778 MOZ_PREF_EXTENSIONS=1 )
5780 dnl ========================================================
5781 dnl Searching of system directories for extensions.
5782 dnl Note: this switch is meant to be used for test builds
5783 dnl whose behavior should not depend on what happens to be
5784 dnl installed on the local machine.
5785 dnl ========================================================
5786 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
5787 [ --disable-system-extension-dirs
5788 Disable searching system- and account-global
5789 directories for extensions of any kind; use
5790 only profile-specific extension directories],
5791 ENABLE_SYSTEM_EXTENSION_DIRS=,
5792 ENABLE_SYSTEM_EXTENSION_DIRS=1 )
5793 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
5794 AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
5797 dnl ========================================================
5798 dnl = Universalchardet
5799 dnl ========================================================
5800 MOZ_ARG_DISABLE_BOOL(universalchardet,
5801 [ --disable-universalchardet
5802 Disable universal encoding detection],
5803 MOZ_UNIVERSALCHARDET=,
5804 MOZ_UNIVERSALCHARDET=1 )
5806 if test -n "${JAVA_BIN_PATH}"; then
5807 dnl Look for javac and jar in the specified path.
5808 JAVA_PATH="$JAVA_BIN_PATH"
5810 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5811 JAVA_PATH="$JAVA_HOME/bin:$PATH"
5814 MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5815 MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5816 MOZ_PATH_PROG(JAVAH, javah, :, [$JAVA_PATH])
5817 MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5819 if test -n "${JAVA_BIN_PATH}" -o \
5820 \( "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk" \); then
5821 if test -z "$JAVA" -o "$JAVA" = ":" -o -z "$JAVAC" -o "$JAVAC" = ":" -o -z "$JAVAH" -o "$JAVAH" = ":" -o -z "$JAR" -o "$JAR" = ":"; then
5822 AC_MSG_ERROR([The programs java, javac, javah and jar were not found. Set \$JAVA_HOME to your java sdk directory or use --with-java-bin-path={java-bin-dir}])
5826 dnl ========================================================
5827 dnl = ANGLE OpenGL->D3D translator for WebGL
5828 dnl = * only applies to win32
5829 dnl = * enabled by default (shipping build); requires explicit --disable to disable
5830 dnl ========================================================
5832 MOZ_DIRECTX_SDK_PATH=
5833 MOZ_DIRECTX_SDK_CPU_SUFFIX=
5834 MOZ_D3DCOMPILER_CAB=
5835 MOZ_D3DCOMPILER_DLL=
5836 case "$target_os" in
5838 MOZ_ANGLE_RENDERER=1
5842 # The DirectX SDK libraries are split into x86 and x64 sub-directories
5843 case "${target_cpu}" in
5845 MOZ_DIRECTX_SDK_CPU_SUFFIX=x86
5848 MOZ_DIRECTX_SDK_CPU_SUFFIX=x64
5852 MOZ_ARG_DISABLE_BOOL(webgl,
5853 [ --disable-webgl Disable building of the WebGL implementation],
5854 MOZ_WEBGL_DISABLED=1,
5855 MOZ_WEBGL_DISABLED=)
5857 if test -n "$MOZ_WEBGL_DISABLED"; then
5862 # Locate a DirectX SDK here so we can use it for both ANGLE and
5864 if test "$OS_TARGET" = "WINNT" -a -z "$CROSS_COMPILE"; then
5865 # Get the SDK path from the registry.
5866 # First try to get the June 2010 SDK
5867 MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1`
5868 if test -z "$MOZ_DIRECTX_SDK_REG_KEY" ; then
5869 # Otherwise just take whatever comes first
5870 MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1`
5872 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'`
5875 if test -n "$MOZ_ANGLE_RENDERER" -a -z "$CROSS_COMPILE"; then
5876 if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then
5877 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.])
5880 if test -n "$MOZ_DIRECTX_SDK_PATH" &&
5881 test -f "$MOZ_DIRECTX_SDK_PATH"/include/d3dx9.h &&
5882 test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_DIRECTX_SDK_CPU_SUFFIX/dxguid.lib ; then
5883 AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH])
5885 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.])
5888 # Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib
5889 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'`
5891 if test -z "$MOZ_D3DX9_VERSION" ; then
5892 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.])
5895 MOZ_D3DCOMPILER_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_DIRECTX_SDK_CPU_SUFFIX}.cab | head -n1`
5897 if test -z "$MOZ_D3DCOMPILER_CAB"; then
5898 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.])
5901 MOZ_D3DCOMPILER_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll
5904 dnl ========================================================
5906 dnl ========================================================
5908 MOZ_GAMEPAD_BACKEND=stub
5910 # Gamepad DOM is built on supported platforms by default.
5911 case "$OS_TARGET" in
5919 MOZ_ARG_DISABLE_BOOL(gamepad,
5920 [ --disable-gamepad Disable gamepad support],
5924 if test "$MOZ_GAMEPAD"; then
5925 case "$OS_TARGET" in
5927 MOZ_GAMEPAD_BACKEND=cocoa
5930 if test -n "$MOZ_DIRECTX_SDK_PATH" ; then
5931 if ! test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_DIRECTX_SDK_CPU_SUFFIX/dxguid.lib ; then
5934 elif test "$GCC" != "yes"; then
5937 if test -z "$MOZ_GAMEPAD"; then
5938 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.])
5940 MOZ_GAMEPAD_BACKEND=windows
5943 MOZ_CHECK_HEADER([linux/joystick.h])
5944 if test "$ac_cv_header_linux_joystick_h" != "yes"; then
5945 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.])
5947 MOZ_GAMEPAD_BACKEND=linux
5953 AC_DEFINE(MOZ_GAMEPAD)
5955 AC_SUBST(MOZ_GAMEPAD)
5956 AC_SUBST(MOZ_GAMEPAD_BACKEND)
5958 dnl ========================================================
5959 dnl = Breakpad crash reporting (on by default on supported platforms)
5960 dnl ========================================================
5963 i?86-*-mingw*|x86_64-*-mingw*)
5966 i?86-apple-darwin*|x86_64-apple-darwin*)
5969 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
5970 if test "$MOZ_ENABLE_GTK2"; then
5974 *-android*|*-linuxandroid*)
5982 MOZ_ARG_DISABLE_BOOL(crashreporter,
5983 [ --disable-crashreporter Disable breakpad crash reporting],
5985 MOZ_CRASHREPORTER=1)
5987 if test -n "$MOZ_CRASHREPORTER"; then
5988 AC_DEFINE(MOZ_CRASHREPORTER)
5990 if test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS" && \
5991 test -z "$SKIP_LIBRARY_CHECKS"; then
5992 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5993 AC_SUBST(MOZ_GTHREAD_CFLAGS)
5994 AC_SUBST(MOZ_GTHREAD_LIBS)
5997 if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT"; then
5998 AC_MSG_ERROR([Breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH. Use --disable-crashreporter.])
6001 if test "$OS_ARCH" = "WINNT"; then
6002 if test -z "$HAVE_64BIT_OS"; then
6003 MOZ_CRASHREPORTER_INJECTOR=1
6004 AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
6008 AC_DEFINE_UNQUOTED(BREAKPAD_CUSTOM_STDINT_H, "mozilla/StandardInteger.h")
6010 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
6011 [ --with-crashreporter-enable-percent=NN
6012 Enable sending crash reports by default on NN% of users. (default=100)],
6013 [ val=`echo $withval | sed 's/[^0-9]//g'`
6014 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
6016 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
6017 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
6019 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
6021 dnl ========================================================
6022 dnl = libjpeg-turbo configuration
6023 dnl ========================================================
6025 if test -z "$MOZ_NATIVE_JPEG"; then
6029 MOZ_ARG_DISABLE_BOOL(libjpeg_turbo,
6030 [ --disable-libjpeg-turbo Disable optimized jpeg decoding routines],
6032 MOZ_LIBJPEG_TURBO=1)
6034 if test "$MOZ_NATIVE_JPEG" = 1 -a "$MOZ_LIBJPEG_TURBO" = 1; then
6035 AC_MSG_ERROR([cannot use --with-system-jpeg with --enable-libjpeg-turbo.])
6038 dnl Detect if we can use yasm to compile libjpeg-turbo's optimized assembly
6041 if test -n "$MOZ_LIBJPEG_TURBO"; then
6043 dnl Do we support libjpeg-turbo on this platform?
6044 case "$OS_ARCH:$OS_TEST" in
6046 LIBJPEG_TURBO_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC -DMACHO"
6047 LIBJPEG_TURBO_X86_ASM=1
6050 LIBJPEG_TURBO_ASFLAGS="-f macho64 -rnasm -pnasm -D__x86_64__ -DPIC -DMACHO"
6051 LIBJPEG_TURBO_X64_ASM=1
6053 WINNT:x86|WINNT:i?86)
6054 LIBJPEG_TURBO_ASFLAGS="-f win32 -rnasm -pnasm -DPIC -DWIN32"
6055 LIBJPEG_TURBO_X86_ASM=1
6058 LIBJPEG_TURBO_ASFLAGS="-f win64 -rnasm -pnasm -D__x86_64__ -DPIC -DWIN64 -DMSVC"
6059 LIBJPEG_TURBO_X64_ASM=1
6062 LIBJPEG_TURBO_ASFLAGS="-march=armv7-a -mfpu=neon"
6063 LIBJPEG_TURBO_ARM_ASM=1
6066 if $CC -E -dM -</dev/null | grep -q __ELF__; then
6067 LIBJPEG_TURBO_ASFLAGS="-f elf32 -rnasm -pnasm -DPIC -DELF"
6068 LIBJPEG_TURBO_X86_ASM=1
6072 if $CC -E -dM -</dev/null | grep -q __ELF__; then
6073 LIBJPEG_TURBO_ASFLAGS="-f elf64 -rnasm -pnasm -D__x86_64__ -DPIC -DELF"
6074 LIBJPEG_TURBO_X64_ASM=1
6081 dnl If we're on an x86 or x64 system which supports libjpeg-turbo's asm routines
6082 dnl and --disable-libjpeg-turbo wasn't passed, check for Yasm, and error out if
6083 dnl it doesn't exist or we have too old of a version.
6084 if test -n "$LIBJPEG_TURBO_X86_ASM" -o -n "$LIBJPEG_TURBO_X64_ASM" ; then
6085 LIBJPEG_TURBO_AS=$YASM
6087 if test -z "$LIBJPEG_TURBO_AS" ; then
6088 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.])
6091 dnl Check that we have the right yasm version. We require 1.0.1 or newer
6092 dnl on Linux and 1.1 or newer everywhere else.
6093 if test "$OS_ARCH" = "Linux" ; then
6094 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
6095 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.])
6098 if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
6099 AC_MSG_ERROR([Yasm 1.1 or greater is required to build with libjpeg-turbo's optimized JPEG decoding routines, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION. Upgrade to the newest version or configure with --disable-libjpeg-turbo to use the pure C JPEG decoder. See https://developer.mozilla.org/en/YASM for more details.])
6104 dnl If we're on an ARM system which supports libjpeg-turbo's asm routines and
6105 dnl --disable-libjpeg-turbo wasn't passed, use the C compiler as the assembler.
6106 if test -n "$LIBJPEG_TURBO_ARM_ASM" ; then
6107 echo "Using $AS as the assembler for ARM code."
6108 LIBJPEG_TURBO_AS=$AS
6111 if test -n "$LIBJPEG_TURBO_X86_ASM"; then
6112 AC_DEFINE(LIBJPEG_TURBO_X86_ASM)
6113 elif test -n "$LIBJPEG_TURBO_X64_ASM"; then
6114 AC_DEFINE(LIBJPEG_TURBO_X64_ASM)
6115 elif test -n "$LIBJPEG_TURBO_ARM_ASM"; then
6116 AC_DEFINE(LIBJPEG_TURBO_ARM_ASM)
6117 elif test -n "$MOZ_LIBJPEG_TURBO"; then
6118 dnl Warn if we're not building the optimized routines, even though the user
6119 dnl didn't specify --disable-libjpeg-turbo.
6120 AC_MSG_WARN([No assembler or assembly support for libjpeg-turbo. Using unoptimized C routines.])
6123 dnl ========================================================
6124 dnl = Enable compilation of specific extension modules
6125 dnl ========================================================
6127 MOZ_ARG_ENABLE_STRING(extensions,
6128 [ --enable-extensions Enable extensions],
6129 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6130 if test "$option" = "yes" -o "$option" = "all"; then
6131 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6132 elif test "$option" = "no" -o "$option" = "none"; then
6134 elif test "$option" = "default"; then
6135 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6136 elif test `echo "$option" | grep -c \^-` != 0; then
6137 option=`echo $option | sed 's/^-//'`
6138 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6140 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6143 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6145 if test -z "$MOZ_ENABLE_GNOMEVFS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6146 # Suppress warning on non-X11 platforms
6147 if test -n "$MOZ_X11"; then
6148 AC_MSG_WARN([Removing gnomevfs from MOZ_EXTENSIONS due to no --enable-gnomevfs.])
6150 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6153 dnl Do not build gnomevfs with libxul based apps
6154 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6155 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6158 if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6159 # Suppress warning on non-X11 platforms
6160 if test -n "$MOZ_X11"; then
6161 AC_MSG_WARN([Removing gio from MOZ_EXTENSIONS due to --disable-gio.])
6163 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6166 dnl Do not build gio with libxul based apps
6167 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6168 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6171 if test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6173 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6175 AC_SUBST(MOZ_GIO_COMPONENT)
6177 if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6178 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6179 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6183 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6185 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6186 dnl when trying to build a nonexistent extension.
6187 for extension in $MOZ_EXTENSIONS; do
6188 if test ! -d "${srcdir}/extensions/${extension}"; then
6189 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6193 if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
6194 AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
6197 dnl ========================================================
6198 dnl CSS3 Flexbox Support
6199 dnl ========================================================
6200 if test -n "$MOZ_FLEXBOX"; then
6201 AC_DEFINE(MOZ_FLEXBOX)
6204 dnl ========================================================
6205 dnl Build Freetype in the tree
6206 dnl ========================================================
6207 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6208 [ --enable-tree-freetype Enable Tree FreeType],
6209 MOZ_TREE_FREETYPE=1,
6210 MOZ_TREE_FREETYPE= )
6211 if test -n "$MOZ_TREE_FREETYPE"; then
6212 if test -n "$_WIN32_MSVC"; then
6213 AC_ERROR("building with in-tree freetype is not supported on MSVC")
6215 AC_DEFINE(MOZ_TREE_FREETYPE)
6216 AC_SUBST(MOZ_TREE_FREETYPE)
6217 MOZ_ENABLE_CAIRO_FT=1
6218 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6219 FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6220 CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6221 FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6223 CAIRO_FT_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6224 AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6225 AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6226 AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6227 AC_SUBST(CAIRO_FT_CFLAGS)
6230 dnl ========================================================
6232 dnl ========================================================
6233 dnl Abort Windows build if the required major version and
6234 dnl minimum minor version of Unicode NSIS isn't in the path
6235 dnl (unless in case of cross compiling, for which Unicode
6236 dnl is not yet sufficient).
6237 if test "$OS_ARCH" = "WINNT"; then
6238 REQ_NSIS_MAJOR_VER=2
6239 MIN_NSIS_MINOR_VER=46
6240 MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensisu-2.46 makensis)
6241 if test -n "$MAKENSISU" -a "$MAKENSISU" != ":"; then
6242 AC_MSG_RESULT([yes])
6244 MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\).*\-Unicode$/\1/g'`
6246 if test ! "$MAKENSISU_VER" = ""; then
6247 MAKENSISU_MAJOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $1 }'`
6248 MAKENSISU_MINOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $2 }'`
6250 AC_MSG_CHECKING([for Unicode NSIS with major version == $REQ_NSIS_MAJOR_VER and minor version >= $MIN_NSIS_MINOR_VER])
6251 if test "$MAKENSISU_VER" = "" || \
6252 test ! "$MAKENSISU_MAJOR_VER" = "$REQ_NSIS_MAJOR_VER" -o \
6253 ! "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER; then
6255 if test -z "$CROSS_COMPILE"; then
6256 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.])
6261 elif test -z "$CROSS_COMPILE"; then
6262 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.])
6268 dnl ========================================================
6270 dnl ========================================================
6271 MOZ_ARG_DISABLE_BOOL(webapp-runtime,
6272 [ --disable-webapp-runtime Disable Web App Runtime],
6273 MOZ_WEBAPP_RUNTIME=,
6274 MOZ_WEBAPP_RUNTIME=1)
6275 if test "$MOZ_WIDGET_TOOLKIT" != "windows" -a "$MOZ_WIDGET_TOOLKIT" != "cocoa" -a "$MOZ_WIDGET_TOOLKIT" != "gtk2"; then
6278 if test "$OS_ARCH" = "WINNT" -a -z "$MAKENSISU" -a -n "$CROSS_COMPILE"; then
6281 AC_SUBST(MOZ_WEBAPP_RUNTIME)
6282 if test "$MOZ_WEBAPP_RUNTIME"; then
6283 AC_DEFINE(MOZ_WEBAPP_RUNTIME)
6286 AC_MSG_CHECKING([for tar archiver])
6287 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6288 if test -z "$TAR"; then
6289 AC_MSG_ERROR([no tar archiver found in \$PATH])
6291 AC_MSG_RESULT([$TAR])
6294 AC_MSG_CHECKING([for wget])
6295 AC_CHECK_PROGS(WGET, wget, "")
6296 AC_MSG_RESULT([$WGET])
6299 dnl ========================================================
6301 dnl ========================================================
6303 if test -n "$MOZ_SIGN_CMD"; then
6304 AC_DEFINE(MOZ_SIGNING)
6307 dnl ========================================================
6308 dnl Maintenance Service
6309 dnl ========================================================
6311 MOZ_ARG_ENABLE_BOOL(maintenance-service,
6312 [ --enable-maintenance-service Enable building of maintenanceservice],
6313 MOZ_MAINTENANCE_SERVICE=1,
6314 MOZ_MAINTENANCE_SERVICE= )
6316 if test -n "$MOZ_MAINTENANCE_SERVICE"; then
6317 if test "$OS_ARCH" = "WINNT"; then
6318 AC_DEFINE(MOZ_MAINTENANCE_SERVICE)
6320 AC_MSG_ERROR([Can only build with --enable-maintenance-service with a Windows target])
6324 dnl ========================================================
6325 dnl Verify MAR signatures
6326 dnl ========================================================
6328 MOZ_ARG_ENABLE_BOOL(verify-mar,
6329 [ --enable-verify-mar Enable verifying MAR signatures],
6330 MOZ_VERIFY_MAR_SIGNATURE=1,
6331 MOZ_VERIFY_MAR_SIGNATURE= )
6333 if test -n "$MOZ_VERIFY_MAR_SIGNATURE"; then
6334 if test "$OS_ARCH" = "WINNT"; then
6335 AC_DEFINE(MOZ_VERIFY_MAR_SIGNATURE)
6337 AC_MSG_ERROR([Can only build with --enable-verify-mar with a Windows target])
6341 dnl ========================================================
6342 dnl Enable building the signmar program.
6343 dnl This option is much different than the --enable-verify-mar option.
6344 dnl --enable-verify-mar is for enabling the verification check on MAR
6345 dnl files in the updater. The --enable-signmar option is for building
6346 dnl the signmar program.
6347 dnl ========================================================
6349 MOZ_ARG_ENABLE_BOOL(signmar,
6350 [ --enable-signmar Enable building the signmar program],
6351 MOZ_ENABLE_SIGNMAR=1,
6352 MOZ_ENABLE_SIGNMAR= )
6354 if test -n "$MOZ_ENABLE_SIGNMAR"; then
6355 AC_DEFINE(MOZ_ENABLE_SIGNMAR)
6358 dnl ========================================================
6360 dnl ========================================================
6362 MOZ_ARG_DISABLE_BOOL(updater,
6363 [ --disable-updater Disable building of updater],
6367 if test -n "$MOZ_UPDATER"; then
6368 AC_DEFINE(MOZ_UPDATER)
6371 # tools/update-packaging is not checked out by default.
6372 MOZ_ARG_ENABLE_BOOL(update-packaging,
6373 [ --enable-update-packaging
6374 Enable tools/update-packaging],
6375 MOZ_UPDATE_PACKAGING=1,
6376 MOZ_UPDATE_PACKAGING= )
6377 AC_SUBST(MOZ_UPDATE_PACKAGING)
6379 dnl ========================================================
6380 dnl build the tests by default
6381 dnl ========================================================
6382 MOZ_ARG_DISABLE_BOOL(tests,
6383 [ --disable-tests Do not build test libraries & programs],
6387 # Currently GTest is linked into libxul. This means it must be off by default.
6388 # Follow up will be to generate libxul.so and libxul-test.so to let GTest
6389 # be compiled along with ENABLE_TESTS
6390 MOZ_ARG_ENABLE_BOOL(gtest,
6392 Enable GTest libxul unit test.],
6396 if test -n "$MOZ_ENABLE_GTEST"; then
6397 if test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin" -o "${OS_TARGET}" = "Linux" -o "${OS_TARGET}" = "Android"; then
6400 AC_DEFINE(MOZ_ENABLE_GTEST)
6401 AC_DEFINE_UNQUOTED(GTEST_HAS_RTTI, 0)
6402 AC_SUBST(MOZ_ENABLE_GTEST)
6403 AC_SUBST(GTEST_HAS_RTTI)
6405 AC_MSG_ERROR([Cannot build with --enable-gtest on this platform.])
6407 if test "${OS_TARGET}" = "Android"; then
6408 AC_DEFINE(GTEST_OS_LINUX_ANDROID)
6409 AC_DEFINE(GTEST_USE_OWN_TR1_TUPLE)
6410 AC_DEFINE_UNQUOTED(GTEST_HAS_CLONE, 0)
6411 AC_SUBST(GTEST_OS_LINUX_ANDROID)
6412 AC_SUBST(GTEST_USE_OWN_TR1_TUPLE)
6413 AC_SUBST(GTEST_HAS_CLONE)
6417 dnl ========================================================
6418 dnl parental controls (for Windows Vista)
6419 dnl ========================================================
6420 MOZ_ARG_DISABLE_BOOL(parental-controls,
6421 [ --disable-parental-controls
6422 Do not build parental controls],
6423 MOZ_DISABLE_PARENTAL_CONTROLS=1,
6424 MOZ_DISABLE_PARENTAL_CONTROLS=)
6425 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6426 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6429 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6431 dnl ========================================================
6432 dnl = Disable DOMCrypto
6433 dnl ========================================================
6434 if test -n "$MOZ_DISABLE_CRYPTOLEGACY"; then
6435 AC_DEFINE(MOZ_DISABLE_CRYPTOLEGACY)
6437 AC_SUBST(MOZ_DISABLE_CRYPTOLEGACY)
6439 dnl ========================================================
6440 dnl = Disable libpkix
6441 dnl ========================================================
6442 if test -n "$NSS_NO_LIBPKIX"; then
6443 AC_DEFINE(NSS_NO_LIBPKIX)
6445 AC_SUBST(NSS_NO_LIBPKIX)
6448 dnl ========================================================
6450 dnl = Module specific options
6452 dnl ========================================================
6453 MOZ_ARG_HEADER(Individual module options)
6455 dnl ========================================================
6456 dnl = Disable feed handling components
6457 dnl ========================================================
6458 MOZ_ARG_DISABLE_BOOL(feeds,
6459 [ --disable-feeds Disable feed handling and processing components],
6462 if test -n "$MOZ_FEEDS"; then
6463 AC_DEFINE(MOZ_FEEDS)
6465 if test "$MOZ_BUILD_APP" = "browser"; then
6466 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6470 dnl ========================================================
6471 dnl Check for sqlite
6472 dnl ========================================================
6475 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6476 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
6477 MOZ_NATIVE_SQLITE=1,
6478 MOZ_NATIVE_SQLITE= )
6480 if test -z "$MOZ_NATIVE_SQLITE"
6483 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6485 dnl ============================
6486 dnl === SQLite Version check ===
6487 dnl ============================
6488 dnl Check to see if the system SQLite package is new enough.
6489 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6491 dnl ==================================
6492 dnl === SQLITE_SECURE_DELETE check ===
6493 dnl ==================================
6494 dnl Check to see if the system SQLite package is compiled with
6495 dnl SQLITE_SECURE_DELETE enabled.
6496 AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6497 _SAVE_CFLAGS="$CFLAGS"
6498 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6500 LIBS="$LIBS $SQLITE_LIBS"
6501 AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6503 #include "sqlite3.h"
6505 int main(int argc, char **argv){
6506 return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6508 ac_cv_sqlite_secure_delete=yes,
6509 ac_cv_sqlite_secure_delete=no,
6510 ac_cv_sqlite_secure_delete=no
6513 AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6514 CFLAGS="$_SAVE_CFLAGS"
6516 if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6517 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6520 dnl ===============================
6521 dnl === SQLITE_THREADSAFE check ===
6522 dnl ===============================
6523 dnl Check to see if the system SQLite package is compiled with
6524 dnl SQLITE_THREADSAFE enabled.
6525 AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6526 _SAVE_CFLAGS="$CFLAGS"
6527 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6529 LIBS="$LIBS $SQLITE_LIBS"
6530 AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6532 #include "sqlite3.h"
6534 int main(int argc, char **argv){
6535 return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6537 ac_cv_sqlite_threadsafe=yes,
6538 ac_cv_sqlite_threadsafe=no,
6539 ac_cv_sqlite_threadsafe=no
6542 AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6543 CFLAGS="$_SAVE_CFLAGS"
6545 if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6546 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6549 dnl ================================
6550 dnl === SQLITE_ENABLE_FTS3 check ===
6551 dnl ================================
6552 dnl check to see if the system SQLite package is compiled with
6553 dnl SQLITE_ENABLE_FTS3 enabled.
6554 AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6555 _SAVE_CFLAGS="$CFLAGS"
6556 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6558 LIBS="$LIBS $SQLITE_LIBS"
6559 AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6561 #include "sqlite3.h"
6563 int main(int argc, char **argv){
6564 return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6566 ac_cv_sqlite_enable_fts3=yes,
6567 ac_cv_sqlite_enable_fts3=no,
6568 ac_cv_sqlite_enable_fts3=no
6571 AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6572 CFLAGS="$_SAVE_CFLAGS"
6574 if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6575 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6578 dnl =========================================
6579 dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
6580 dnl =========================================
6581 dnl check to see if the system SQLite package is compiled with
6582 dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
6583 AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
6584 _SAVE_CFLAGS="$CFLAGS"
6585 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6587 LIBS="$LIBS $SQLITE_LIBS"
6588 AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
6590 #include "sqlite3.h"
6592 int main(int argc, char **argv){
6593 return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
6595 ac_cv_sqlite_enable_unlock_notify=yes,
6596 ac_cv_sqlite_enable_unlock_notify=no,
6597 ac_cv_sqlite_enable_unlock_notify=no
6600 AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
6601 CFLAGS="$_SAVE_CFLAGS"
6603 if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
6604 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
6608 if test -n "$MOZ_NATIVE_SQLITE"; then
6609 AC_DEFINE(MOZ_NATIVE_SQLITE)
6611 AC_SUBST(MOZ_NATIVE_SQLITE)
6613 dnl ========================================================
6614 dnl = Enable help viewer (off by default)
6615 dnl ========================================================
6616 if test -n "$MOZ_HELP_VIEWER"; then
6617 dnl Do this if defined in confvars.sh
6618 AC_DEFINE(MOZ_HELP_VIEWER)
6621 dnl ========================================================
6622 dnl = Enable safe browsing (anti-phishing)
6623 dnl ========================================================
6624 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6625 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
6626 MOZ_SAFE_BROWSING=1,
6627 MOZ_SAFE_BROWSING= )
6628 if test -n "$MOZ_SAFE_BROWSING"; then
6629 AC_DEFINE(MOZ_SAFE_BROWSING)
6631 AC_SUBST(MOZ_SAFE_BROWSING)
6633 dnl ========================================================
6634 dnl = Enable url-classifier
6635 dnl ========================================================
6636 dnl Implicitly enabled by default if building with safe-browsing
6637 if test -n "$MOZ_SAFE_BROWSING"; then
6638 MOZ_URL_CLASSIFIER=1
6640 MOZ_ARG_ENABLE_BOOL(url-classifier,
6641 [ --enable-url-classifier Enable url classifier module],
6642 MOZ_URL_CLASSIFIER=1,
6643 MOZ_URL_CLASSIFIER= )
6644 if test -n "$MOZ_URL_CLASSIFIER"; then
6645 AC_DEFINE(MOZ_URL_CLASSIFIER)
6647 AC_SUBST(MOZ_URL_CLASSIFIER)
6649 dnl ========================================================
6650 dnl = Disable zipwriter
6651 dnl ========================================================
6652 MOZ_ARG_DISABLE_BOOL(zipwriter,
6653 [ --disable-zipwriter Disable zipwriter component],
6656 AC_SUBST(MOZ_ZIPWRITER)
6658 dnl ========================================================
6660 dnl ========================================================
6661 dnl superseded by QtNetwork starting from 4.7
6662 MOZ_ENABLE_LIBCONIC=1
6664 if test -n "$MOZ_ENABLE_QT"; then
6665 if test "$MOZ_ENABLE_QTNETWORK"; then
6666 MOZ_ENABLE_LIBCONIC=
6670 MOZ_ARG_DISABLE_BOOL(libconic,
6671 [ --disable-libconic Disable libconic],
6672 MOZ_ENABLE_LIBCONIC=,
6673 MOZ_ENABLE_LIBCONIC=1 )
6675 if test -n "$MOZ_ENABLE_LIBCONIC"; then
6676 PKG_CHECK_MODULES(LIBCONIC, conic,
6677 MOZ_ENABLE_LIBCONIC=1,
6678 MOZ_ENABLE_LIBCONIC=)
6680 if test "$MOZ_ENABLE_LIBCONIC"; then
6681 AC_DEFINE(MOZ_ENABLE_LIBCONIC)
6684 AC_SUBST(MOZ_ENABLE_LIBCONIC)
6685 AC_SUBST(LIBCONIC_CFLAGS)
6686 AC_SUBST(LIBCONIC_LIBS)
6688 dnl ========================================================
6690 dnl ========================================================
6692 MAEMO_SDK_TARGET_VER=-1
6694 MOZ_ARG_WITH_STRING(maemo-version,
6695 [ --with-maemo-version=MAEMO_SDK_TARGET_VER
6697 MAEMO_SDK_TARGET_VER=$withval)
6699 case "$MAEMO_SDK_TARGET_VER" in
6701 MOZ_PLATFORM_MAEMO=5
6705 MOZ_PLATFORM_MAEMO=6
6709 dnl We aren't compiling for Maemo, move on.
6712 AC_MSG_ERROR([Unknown Maemo Version. Try setting --with-maemo-version to 5 or 6.])
6716 if test $MOZ_PLATFORM_MAEMO; then
6717 AC_DEFINE_UNQUOTED([MOZ_PLATFORM_MAEMO], $MOZ_PLATFORM_MAEMO)
6719 if test -z "$MOZ_ENABLE_DBUS"; then
6720 AC_MSG_ERROR([DBus is required when building for Maemo])
6723 MOZ_GFX_OPTIMIZE_MOBILE=1
6724 MOZ_GL_DEFAULT_PROVIDER=EGL
6725 MOZ_MAEMO_LIBLOCATION=
6727 if test $MOZ_PLATFORM_MAEMO = 5; then
6728 dnl if we have Xcomposite we should also have Xdamage and Xfixes
6729 MOZ_CHECK_HEADERS([X11/extensions/Xdamage.h], [],
6730 [AC_MSG_ERROR([Couldn't find X11/extensions/Xdamage.h which is required for composited plugins.])])
6731 AC_CHECK_LIB(Xcomposite, XCompositeRedirectWindow, [XCOMPOSITE_LIBS="-lXcomposite -lXdamage -lXfixes"],
6732 [MISSING_X="$MISSING_X -lXcomposite"], $XLIBS)
6734 AC_SUBST(XCOMPOSITE_LIBS)
6736 PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime, _LIB_FOUND=1, _LIB_FOUND=)
6737 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONMIME_LIBS"
6738 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONMIME_CFLAGS"
6739 if test -z "$_LIB_FOUND"; then
6740 AC_MSG_ERROR([Hildon Mime is required when building for Maemo])
6744 PKG_CHECK_MODULES(LIBOSSO,libosso, _LIB_FOUND=1, _LIB_FOUND=)
6745 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBOSSO_LIBS"
6746 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBOSSO_CFLAGS"
6747 if test -z "$_LIB_FOUND"; then
6748 AC_MSG_ERROR([LibOSSO is required when building for Maemo])
6751 PKG_CHECK_MODULES(LIBHILDONFM,hildon-fm-2, _LIB_FOUND=1, _LIB_FOUND=)
6752 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONFM_LIBS"
6753 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONFM_CFLAGS"
6754 if test -z "$_LIB_FOUND"; then
6755 AC_MSG_ERROR([Hildon FM-2 is required when building for Maemo])
6759 if test $MOZ_PLATFORM_MAEMO = 6; then
6761 PKG_CHECK_MODULES(LIBCONTENTMANAGER, ContentManager QtSparql,
6764 if test "$_LIB_FOUND"; then
6765 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTMANAGER_LIBS"
6766 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTMANAGER_CFLAGS"
6767 MOZ_ENABLE_CONTENTMANAGER=1
6768 AC_DEFINE(MOZ_ENABLE_CONTENTMANAGER)
6770 AC_MSG_WARN([Cannot find libcontentmanager and or QtSparql building for Maemo 6])
6772 AC_SUBST(MOZ_ENABLE_CONTENTMANAGER)
6774 dnl ========================================================
6775 dnl = Enable meego libcontentaction
6776 dnl ========================================================
6777 MOZ_ARG_ENABLE_BOOL(meegocontentaction,
6778 [ --enable-meegocontentaction Enable meegocontentaction support],
6779 MOZ_MEEGOCONTENTACTION=1,
6780 MOZ_MEEGOCONTENTACTION=)
6782 if test -n "$MOZ_MEEGOCONTENTACTION"; then
6784 PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=)
6785 if test "$_LIB_FOUND"; then
6786 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTACTION_LIBS"
6787 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTACTION_CFLAGS"
6788 MOZ_ENABLE_CONTENTACTION=1
6789 AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
6790 AC_SUBST(MOZ_ENABLE_CONTENTACTION)
6794 MOZ_ARG_ENABLE_BOOL(meegotouch,
6795 [ --enable-meegotouch Enable meegotouch support],
6796 MOZ_MEEGOTOUCHENABLED=1,
6797 MOZ_MEEGOTOUCHENABLED=)
6799 if test -n "$MOZ_MEEGOTOUCHENABLED"; then
6800 PKG_CHECK_MODULES(MOZ_MEEGOTOUCH, meegotouchcore, _LIB_FOUND=1, _LIB_FOUND=)
6801 if test "$_LIB_FOUND"; then
6802 MOZ_QT_CFLAGS="$MOZ_MEEGOTOUCH_CFLAGS $MOZ_QT_CFLAGS"
6803 MOZ_QT_LIBS="$MOZ_MEEGOTOUCH_LIBS $MOZ_QT_LIBS"
6804 AC_DEFINE(MOZ_ENABLE_MEEGOTOUCH)
6806 AC_MSG_WARN([Cannot meegotouchcore-dev. Disabling Meegotouch support.])
6811 PKG_CHECK_MODULES(LIBLOCATION,liblocation, _LIB_FOUND=1, _LIB_FOUND=)
6812 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBLOCATION_LIBS"
6813 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBLOCATION_CFLAGS"
6814 if test "$_LIB_FOUND"; then
6815 MOZ_MAEMO_LIBLOCATION=1
6816 AC_DEFINE(MOZ_MAEMO_LIBLOCATION)
6818 AC_MSG_WARN([Cannot liblocation-dev. Disabling Maemo geolocation.])
6820 AC_SUBST(MOZ_MAEMO_LIBLOCATION)
6822 PKG_CHECK_MODULES(LIBMEEGOTOUCHSHARE, ShareUiInterface-maemo-meegotouch >= 0.3.31 mdatauri, _LIB_FOUND=1, _LIB_FOUND=)
6823 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBMEEGOTOUCHSHARE_LIBS"
6824 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBMEEGOTOUCHSHARE_CFLAGS"
6825 if test "$_LIB_FOUND"; then
6826 MOZ_ENABLE_MEEGOTOUCHSHARE=1
6827 AC_DEFINE(MOZ_ENABLE_MEEGOTOUCHSHARE)
6829 AC_MSG_WARN([Cannot find maemo-meegotouch-interfaces-dev or libmdatauri-dev. Disabling meegotouch share ui.])
6831 AC_SUBST(MOZ_ENABLE_MEEGOTOUCHSHARE)
6833 AC_SUBST(MOZ_PLATFORM_MAEMO_LIBS)
6834 AC_SUBST(MOZ_PLATFORM_MAEMO_CFLAGS)
6837 dnl ========================================================
6839 dnl ========================================================
6841 MOZ_ARG_WITH_STRING(gl-provider,
6842 [ --with-gl-provider=ID
6843 Set GL provider backend type],
6844 [ val=`echo $withval`
6845 MOZ_GL_PROVIDER="$val"])
6847 if test -n "$MOZ_GL_PROVIDER"; then
6848 MOZ_GL_DEFAULT_PROVIDER=$MOZ_GL_PROVIDER
6849 AC_SUBST(MOZ_GL_PROVIDER)
6850 AC_DEFINE_UNQUOTED(MOZ_GL_PROVIDER, GLContextProvider$MOZ_GL_PROVIDER)
6852 AC_SUBST(MOZ_GL_DEFAULT_PROVIDER)
6853 AC_DEFINE_UNQUOTED(GL_PROVIDER_$MOZ_GL_DEFAULT_PROVIDER)
6855 dnl ========================================================
6856 dnl = faststripe theme
6857 dnl ========================================================
6858 MOZ_ARG_ENABLE_BOOL(faststripe,
6859 [ --enable-faststripe Use faststripe theme],
6860 MOZ_THEME_FASTSTRIPE=1,
6861 MOZ_THEME_FASTSTRIPE= )
6862 AC_SUBST(MOZ_THEME_FASTSTRIPE)
6864 dnl ========================================================
6866 dnl = Feature options that require extra sources to be pulled
6868 dnl ========================================================
6869 dnl MOZ_ARG_HEADER(Features that require extra sources)
6871 dnl ========================================================
6873 dnl = Debugging Options
6875 dnl ========================================================
6876 MOZ_ARG_HEADER(Debugging and Optimizations)
6878 dnl ========================================================
6879 dnl = Disable building with debug info.
6880 dnl = Debugging is OFF by default
6881 dnl ========================================================
6882 if test -z "$MOZ_DEBUG_FLAGS"; then
6883 MOZ_DEBUG_FLAGS="-g"
6886 MOZ_ARG_ENABLE_STRING(debug,
6887 [ --enable-debug[=DBG] Enable building with developer debug info
6888 (using compiler flags DBG)],
6889 [ if test "$enableval" != "no"; then
6891 if test -n "$enableval" -a "$enableval" != "yes"; then
6892 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6893 _MOZ_DEBUG_FLAGS_SET=1
6900 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG -DTRACING"
6901 MOZ_ARG_WITH_STRING(debug-label,
6902 [ --with-debug-label=LABELS
6903 Define DEBUG_<value> for each comma-separated
6905 [ for option in `echo $withval | sed 's/,/ /g'`; do
6906 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${option}"
6909 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6911 if test -n "$MOZ_DEBUG"; then
6912 AC_MSG_CHECKING([for valid debug flags])
6913 _SAVE_CFLAGS=$CFLAGS
6914 CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6915 AC_TRY_COMPILE([#include <stdio.h>],
6916 [printf("Hello World\n");],
6919 AC_MSG_RESULT([$_results])
6920 if test "$_results" = "no"; then
6921 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6923 CFLAGS=$_SAVE_CFLAGS
6926 dnl ========================================================
6927 dnl enable mobile optimizations
6928 dnl ========================================================
6929 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
6930 [ --enable-mobile-optimize
6931 Enable mobile optimizations],
6932 MOZ_GFX_OPTIMIZE_MOBILE=1)
6934 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
6936 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
6937 AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
6940 dnl ========================================================
6941 dnl = Enable code optimization. ON by default.
6942 dnl ========================================================
6943 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6944 MOZ_OPTIMIZE_FLAGS="-O"
6947 MOZ_ARG_ENABLE_STRING(optimize,
6948 [ --disable-optimize Disable compiler optimization
6949 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6950 [ if test "$enableval" != "no"; then
6952 if test -n "$enableval" -a "$enableval" != "yes"; then
6953 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6958 fi ], MOZ_OPTIMIZE=1)
6960 MOZ_SET_FRAMEPTR_FLAGS
6962 if test "$COMPILE_ENVIRONMENT"; then
6963 if test -n "$MOZ_OPTIMIZE"; then
6964 AC_MSG_CHECKING([for valid optimization flags])
6965 _SAVE_CFLAGS=$CFLAGS
6966 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6967 AC_TRY_COMPILE([#include <stdio.h>],
6968 [printf("Hello World\n");],
6971 AC_MSG_RESULT([$_results])
6972 if test "$_results" = "no"; then
6973 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6975 CFLAGS=$_SAVE_CFLAGS
6977 fi # COMPILE_ENVIRONMENT
6979 AC_SUBST(MOZ_OPTIMIZE)
6980 AC_SUBST(MOZ_FRAMEPTR_FLAGS)
6981 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6982 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6983 AC_SUBST(MOZ_ALLOW_HEAP_EXECUTE_FLAGS)
6984 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6985 AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS)
6987 dnl ========================================================
6988 dnl = Enable generation of debug symbols
6989 dnl ========================================================
6990 MOZ_ARG_ENABLE_STRING(debug-symbols,
6991 [ --enable-debug-symbols[=DBG]
6992 Enable debugging symbols (using compiler flags DBG)],
6993 [ if test "$enableval" != "no"; then
6995 if test -n "$enableval" -a "$enableval" != "yes"; then
6996 if test -z "$_MOZ_DEBUG_FLAGS_SET"; then
6997 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6999 AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
7005 MOZ_DEBUG_SYMBOLS=1)
7007 if test -n "$MOZ_DEBUG" -o -n "$MOZ_DEBUG_SYMBOLS"; then
7008 AC_DEFINE(MOZ_DEBUG_SYMBOLS)
7009 export MOZ_DEBUG_SYMBOLS
7012 dnl ========================================================
7013 dnl = Enable any treating of compile warnings as errors
7014 dnl ========================================================
7015 MOZ_ARG_ENABLE_BOOL(warnings-as-errors,
7016 [ --enable-warnings-as-errors
7017 Enable treating of warnings as errors],
7018 MOZ_ENABLE_WARNINGS_AS_ERRORS=1,
7019 MOZ_ENABLE_WARNINGS_AS_ERRORS=)
7020 if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
7021 WARNINGS_AS_ERRORS=''
7024 dnl ========================================================
7025 dnl = Disable runtime logging checks
7026 dnl ========================================================
7027 MOZ_ARG_DISABLE_BOOL(logging,
7028 [ --disable-logging Disable logging facilities],
7029 NS_DISABLE_LOGGING=1,
7030 NS_DISABLE_LOGGING= )
7031 if test "$NS_DISABLE_LOGGING"; then
7032 AC_DEFINE(NS_DISABLE_LOGGING)
7034 AC_DEFINE(MOZ_LOGGING)
7037 dnl ========================================================
7038 dnl = This will enable logging of addref, release, ctor, dtor.
7039 dnl ========================================================
7040 _ENABLE_LOGREFCNT=42
7041 MOZ_ARG_ENABLE_BOOL(logrefcnt,
7042 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
7043 _ENABLE_LOGREFCNT=1,
7044 _ENABLE_LOGREFCNT= )
7045 if test "$_ENABLE_LOGREFCNT" = "1"; then
7046 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
7047 elif test -z "$_ENABLE_LOGREFCNT"; then
7048 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
7051 dnl ========================================================
7052 dnl moz_dump_painting
7053 dnl ========================================================
7054 MOZ_ARG_ENABLE_BOOL(dump-painting,
7055 [ --enable-dump-painting Enable paint debugging.],
7056 MOZ_DUMP_PAINTING=1,
7057 MOZ_DUMP_PAINTING= )
7058 if test -n "$MOZ_DUMP_PAINTING"; then
7059 AC_DEFINE(MOZ_DUMP_PAINTING)
7060 AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
7062 if test -n "$MOZ_DEBUG"; then
7063 AC_DEFINE(MOZ_DUMP_PAINTING)
7066 dnl ========================================================
7067 dnl = Enable trace malloc
7068 dnl ========================================================
7069 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
7070 MOZ_ARG_ENABLE_BOOL(trace-malloc,
7071 [ --enable-trace-malloc Enable malloc tracing; also disables DMD and jemalloc],
7074 if test "$NS_TRACE_MALLOC"; then
7075 # Please, Mr. Linker Man, don't take away our symbol names
7076 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7078 AC_DEFINE(NS_TRACE_MALLOC)
7080 AC_SUBST(NS_TRACE_MALLOC)
7082 dnl ========================================================
7084 dnl ========================================================
7086 MOZ_ARG_ENABLE_BOOL(dmd,
7087 [ --enable-dmd Enable DMD; also enables jemalloc and replace-malloc],
7091 if test "$NS_TRACE_MALLOC"; then # trace-malloc disables DMD
7094 if test "$MOZ_DMD"; then
7098 if test "${CPU_ARCH}" = "arm"; then
7099 CFLAGS="$CFLAGS -funwind-tables"
7100 CXXFLAGS="$CXXFLAGS -funwind-tables"
7103 MOZ_MEMORY=1 # DMD enables jemalloc
7104 MOZ_REPLACE_MALLOC=1 # DMD enables replace-malloc
7108 dnl ========================================================
7109 dnl = Enable jemalloc
7110 dnl ========================================================
7111 MOZ_ARG_ENABLE_BOOL(jemalloc,
7112 [ --enable-jemalloc Replace memory allocator with jemalloc],
7116 if test "$NS_TRACE_MALLOC"; then
7120 if test "${OS_TARGET}" = "Android"; then
7121 dnl On Android, we use WRAP_LDFLAGS to link everything to mozglue
7123 elif test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin" -o "${OS_TARGET}" = "OS2"; then
7124 dnl On Windows, OSX and OS2, we want to link all our binaries against mozglue
7125 if test -z "$GNU_CC"; then
7126 MOZ_GLUE_LDFLAGS='$(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
7128 MOZ_GLUE_LDFLAGS='-L$(LIBXUL_DIST)/lib $(call EXPAND_LIBNAME,mozglue)'
7131 dnl On other Unix systems, we only want to link executables against mozglue
7132 MOZ_GLUE_PROGRAM_LDFLAGS='$(MKSHLIB_FORCE_ALL) $(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
7133 dnl On other Unix systems, where mozglue is a static library, jemalloc is
7134 dnl separated for the SDK, so we need to add it here.
7135 if test "$MOZ_MEMORY" = 1 -o \( "$LIBXUL_SDK" -a -f "$LIBXUL_SDK/lib/${LIB_PREFIX}memory.${LIB_SUFFIX}" \); then
7136 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(call EXPAND_LIBNAME_PATH,memory,$(LIBXUL_DIST)/lib)'
7138 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(MKSHLIB_UNFORCE_ALL)'
7139 if test -n "$GNU_CC"; then
7140 dnl And we need mozglue symbols to be exported.
7141 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS -rdynamic"
7143 if test "$MOZ_LINKER" = 1; then
7144 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS $MOZ_ZLIB_LIBS"
7148 dnl ========================================================
7149 dnl = Enable dynamic replacement of malloc implementation
7150 dnl ========================================================
7151 MOZ_ARG_ENABLE_BOOL(replace-malloc,
7152 [ --enable-replace-malloc Enable ability to dynamically replace the malloc implementation],
7153 MOZ_REPLACE_MALLOC=1,
7154 MOZ_REPLACE_MALLOC= )
7156 if test -n "$MOZ_REPLACE_MALLOC" -a -z "$MOZ_MEMORY"; then
7157 dnl We don't want to enable jemalloc unconditionally because it may be a
7158 dnl deliberate choice not to enable it (bug 702250, for instance)
7159 AC_MSG_ERROR([--enable-replace-malloc requires --enable-jemalloc])
7160 elif test -n "$MOZ_REPLACE_MALLOC"; then
7161 MOZ_NATIVE_JEMALLOC=
7163 dnl Replace-malloc Mac linkage quirks
7164 if test -n "$MACOSX_DEPLOYMENT_TARGET"; then
7165 AC_CACHE_CHECK([how to do weak dynamic linking],
7166 ac_cv_weak_dynamic_linking,
7167 [echo 'extern void foo() __attribute__((weak_import));int bar() { if (foo) foo(); return 0; }' > conftest.c
7168 if AC_TRY_COMMAND([${CC-cc} -o conftest${DLL_SUFFIX} $CFLAGS -dynamiclib $LDFLAGS -Wl,-U,_foo conftest.c $LIBS 1>&5]) &&
7169 test -s conftest${DLL_SUFFIX}; then
7170 dnl There are several ways the linker can put link edit rules in a binary:
7171 dnl - classic info only (for OSX < 10.6)
7172 dnl - dyld info only
7174 if otool -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO_ONLY" > /dev/null; then
7179 if otool -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO" > /dev/null; then
7184 dnl With classic info, we need to build with -flat_namespace.
7185 dnl With dyld info, Xcode 4.5 does the right thing without additional flags,
7186 dnl but Xcode < 4.5 requires a dummy library and -flat_namespace because it
7187 dnl forgets to set the weak flag in the dyld info.
7188 dnl See http://glandium.org/blog/?p=2764 for more details.
7190 dnl Values for ac_cv_weak_dynamic_linking, and subsequently
7191 dnl MOZ_REPLACE_MALLOC_LINKAGE are thus:
7192 dnl - "flat namespace" when -flat_namespace alone is needed
7193 dnl - "dummy library" when a dummy library and -flat_namespace are needed
7194 dnl - "compiler support" when nothing is needed
7195 if test -n "$_DYLD_INFO" && dyldinfo -bind conftest${DLL_SUFFIX} 2> /dev/null | grep "_foo (weak import)" > /dev/null; then
7196 if test -n "$_CLASSIC_INFO"; then
7197 ac_cv_weak_dynamic_linking="flat namespace"
7199 ac_cv_weak_dynamic_linking="compiler support"
7202 if test -n "$_DYLD_INFO"; then
7203 ac_cv_weak_dynamic_linking="dummy library"
7205 ac_cv_weak_dynamic_linking="flat namespace"
7209 AC_ERROR([couldn't compile a simple C file])
7212 MOZ_REPLACE_MALLOC_LINKAGE="$ac_cv_weak_dynamic_linking"
7215 AC_SUBST(MOZ_REPLACE_MALLOC)
7216 AC_SUBST(MOZ_REPLACE_MALLOC_LINKAGE)
7218 dnl ========================================================
7219 dnl = Jemalloc build setup
7220 dnl ========================================================
7221 if test -z "$MOZ_MEMORY"; then
7222 if test -n "$MOZ_JEMALLOC3" -a -z "$MOZ_REPLACE_MALLOC"; then
7223 MOZ_NATIVE_JEMALLOC=1
7224 AC_CHECK_FUNCS(mallctl nallocm,,
7225 [MOZ_NATIVE_JEMALLOC=
7227 if test -n "$MOZ_NATIVE_JEMALLOC"; then
7229 AC_DEFINE(MOZ_MEMORY)
7230 AC_DEFINE(MOZ_JEMALLOC3)
7231 AC_DEFINE(MOZ_NATIVE_JEMALLOC)
7236 if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
7237 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.])
7242 dnl Don't try to run compiler tests on Windows
7243 if test "$OS_ARCH" = "WINNT"; then
7244 if test -z "$HAVE_64BIT_OS"; then
7245 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7247 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7250 AC_CHECK_SIZEOF([int *], [4])
7251 case "${ac_cv_sizeof_int_p}" in
7253 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7256 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7259 AC_MSG_ERROR([Unexpected pointer size])
7264 AC_DEFINE(MOZ_MEMORY)
7265 if test -n "$MOZ_JEMALLOC3"; then
7266 AC_DEFINE(MOZ_JEMALLOC3)
7268 if test "x$MOZ_DEBUG" = "x1"; then
7269 AC_DEFINE(MOZ_MEMORY_DEBUG)
7271 dnl The generic feature tests that determine how to compute ncpus are long and
7272 dnl complicated. Therefore, simply define special cpp variables for the
7273 dnl platforms we have special knowledge of.
7276 AC_DEFINE(MOZ_MEMORY_DARWIN)
7279 AC_DEFINE(MOZ_MEMORY_BSD)
7281 *-android*|*-linuxandroid*)
7282 AC_DEFINE(MOZ_MEMORY_LINUX)
7283 AC_DEFINE(MOZ_MEMORY_ANDROID)
7284 if test -z "$gonkdir"; then
7287 AC_DEFINE(MOZ_MEMORY_GONK)
7292 AC_DEFINE(MOZ_MEMORY_LINUX)
7295 AC_DEFINE(MOZ_MEMORY_BSD)
7298 AC_DEFINE(MOZ_MEMORY_SOLARIS)
7301 AC_DEFINE(MOZ_MEMORY_WINDOWS)
7302 if test -z "$MOZ_DEBUG"; then
7303 WIN32_CRT_LIBS="msvcrt.lib msvcprt.lib"
7305 WIN32_CRT_LIBS="msvcrtd.lib msvcprtd.lib"
7307 dnl Look for a broken crtdll.obj
7308 WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj`
7309 lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH
7310 if grep -q '__imp__\{0,1\}free' crtdll.obj; then
7311 MOZ_GLUE_LDFLAGS='-LIBPATH:$(DIST)/lib -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt'
7312 dnl Also pass this to NSPR/NSS
7313 DLLFLAGS="$DLLFLAGS $MOZ_GLUE_LDFLAGS"
7315 DLLFLAGS="$DLLFLAGS -LIBPATH:\$(DIST)/lib -DEFAULTLIB:mozglue"
7322 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7326 AC_SUBST(MOZ_MEMORY)
7327 AC_SUBST(MOZ_JEMALLOC3)
7328 AC_SUBST(MOZ_NATIVE_JEMALLOC)
7329 AC_SUBST(MOZ_GLUE_LDFLAGS)
7330 AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS)
7331 AC_SUBST(WIN32_CRT_LIBS)
7332 dnl Need to set this for make because NSS doesn't have configure
7335 dnl We need to wrap dlopen and related functions on Android because we use
7337 if test "$OS_TARGET" = Android; then
7338 WRAP_LDFLAGS="${WRAP_LDFLAGS} -L$_objdir/dist/lib -lmozglue"
7339 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=getaddrinfo,--wrap=freeaddrinfo,--wrap=gai_strerror"
7340 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=PR_GetEnv,--wrap=PR_SetEnv"
7341 if test -z "$gonkdir"; then
7342 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=fork,--wrap=pthread_atfork,--wrap=raise"
7343 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"
7347 dnl ========================================================
7348 dnl = Use malloc wrapper lib
7349 dnl ========================================================
7350 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
7351 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
7355 if test -n "$_WRAP_MALLOC"; then
7356 if test -n "$GNU_CC"; then
7357 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=malloc,--wrap=calloc,--wrap=valloc,--wrap=free,--wrap=realloc,--wrap=memalign"
7358 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=__builtin_new,--wrap=__builtin_vec_new,--wrap=__builtin_delete,--wrap=__builtin_vec_delete"
7359 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=strdup,--wrap=strndup"
7360 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=posix_memalign,--wrap=malloc_usable_size"
7361 dnl Wrap operator new and operator delete on Android.
7362 if test "$OS_TARGET" = "Android"; then
7363 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_Znwj,--wrap=_Znaj,--wrap=_ZdlPv,--wrap=_ZdaPv"
7364 dnl Wrap the nothrow variants too.
7365 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_ZnwjRKSt9nothrow_t,--wrap=_ZnajRKSt9nothrow_t,--wrap=_ZdlPvRKSt9nothrow_t,--wrap=_ZdaPvRKSt9nothrow_t"
7368 AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains])
7372 dnl ========================================================
7373 dnl = Location of malloc wrapper lib
7374 dnl ========================================================
7375 MOZ_ARG_WITH_STRING(wrap-malloc,
7376 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
7377 WRAP_LDFLAGS="${WRAP_LDFLAGS} $withval")
7379 dnl ========================================================
7380 dnl = Use JS Call tracing
7381 dnl ========================================================
7382 MOZ_ARG_ENABLE_BOOL(trace-jscalls,
7383 [ --enable-trace-jscalls Enable JS call enter/exit callback (default=no)],
7384 MOZ_TRACE_JSCALLS=1,
7385 MOZ_TRACE_JSCALLS= )
7386 if test -n "$MOZ_TRACE_JSCALLS"; then
7387 AC_DEFINE(MOZ_TRACE_JSCALLS)
7390 dnl ========================================================
7391 dnl = Use incremental GC
7392 dnl ========================================================
7394 MOZ_ARG_DISABLE_BOOL(gcincremental,
7395 [ --disable-gcincremental Disable incremental GC],
7397 if test -n "$JSGC_INCREMENTAL"; then
7398 AC_DEFINE(JSGC_INCREMENTAL)
7401 dnl ========================================================
7402 dnl Zealous JavaScript GC
7403 dnl ========================================================
7404 MOZ_ARG_ENABLE_BOOL(gczeal,
7405 [ --enable-gczeal Enable zealous JavaScript GCing],
7408 if test -n "$JS_GC_ZEAL"; then
7409 AC_DEFINE(JS_GC_ZEAL)
7412 dnl ========================================================
7413 dnl JS opt-mode assertions and minidump instrumentation
7414 dnl ========================================================
7415 MOZ_ARG_ENABLE_BOOL(js-diagnostics,
7416 [ --enable-js-diagnostics
7417 Enable JS diagnostic assertions and breakpad data],
7418 JS_CRASH_DIAGNOSTICS=1,
7419 JS_CRASH_DIAGNOSTICS= )
7420 if test -n "$JS_CRASH_DIAGNOSTICS"; then
7421 AC_DEFINE(JS_CRASH_DIAGNOSTICS)
7426 dnl ========================================================
7427 dnl = Enable static checking using gcc-dehydra
7428 dnl ========================================================
7430 MOZ_ARG_WITH_STRING(static-checking,
7431 [ --with-static-checking=path/to/gcc_dehydra.so
7432 Enable static checking of code using GCC-dehydra],
7433 DEHYDRA_PATH=$withval,
7436 if test -n "$DEHYDRA_PATH"; then
7437 if test ! -f "$DEHYDRA_PATH"; then
7438 AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7440 AC_DEFINE(NS_STATIC_CHECKING)
7442 AC_SUBST(DEHYDRA_PATH)
7444 dnl ========================================================
7445 dnl = Enable using the clang plugin to build
7446 dnl ========================================================
7448 MOZ_ARG_ENABLE_BOOL(clang-plugin,
7449 [ --enable-clang-plugin Enable building with the mozilla clang plugin ],
7450 ENABLE_CLANG_PLUGIN=1,
7451 ENABLE_CLANG_PLUGIN= )
7452 if test -n "$ENABLE_CLANG_PLUGIN"; then
7453 if test -z "$CLANG_CC"; then
7454 AC_MSG_ERROR([Can't use clang plugin without clang.])
7456 AC_DEFINE(MOZ_CLANG_PLUGIN)
7459 AC_SUBST(ENABLE_CLANG_PLUGIN)
7461 dnl ========================================================
7462 dnl = Enable stripping of libs & executables
7463 dnl ========================================================
7464 MOZ_ARG_ENABLE_BOOL(strip,
7465 [ --enable-strip Enable stripping of libs & executables ],
7469 dnl ========================================================
7470 dnl = Enable stripping of libs & executables when packaging
7471 dnl ========================================================
7472 MOZ_ARG_ENABLE_BOOL(install-strip,
7473 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
7477 dnl ========================================================
7478 dnl = --enable-elf-dynstr-gc
7479 dnl ========================================================
7480 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
7481 [ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
7482 USE_ELF_DYNSTR_GC=1,
7483 USE_ELF_DYNSTR_GC= )
7485 dnl ========================================================
7486 dnl = --disable-elf-hack
7487 dnl ========================================================
7490 MOZ_ARG_DISABLE_BOOL(elf-hack,
7491 [ --disable-elf-hack Disable elf hacks],
7495 # Disable elf hack for profiling because the built in profiler
7496 # doesn't read the segments properly with elf hack. This is
7497 # temporary and should be fixed soon in the profiler.
7498 if test "$MOZ_PROFILING" = 1; then
7502 # Only enable elfhack where supported
7503 if test "$USE_ELF_HACK" = 1; then
7504 case "${HOST_OS_ARCH},${OS_ARCH}" in
7506 case "${CPU_ARCH}" in
7521 if test "$USE_ELF_HACK" = 1; then
7522 dnl PT_GNU_RELRO segment makes the dynamic linker set a read-only flag on
7523 dnl memory addresses it maps to. The result is that by the time elfhack
7524 dnl kicks in, it is not possible to apply relocations because of that,
7525 dnl thus elfhack effectively skips relocations inside the PT_GNU_RELRO
7526 dnl segment. It makes elfhack mostly useless, so considering the problems
7527 dnl we have we PT_GNU_RELRO (e.g. bug 664366), and until elfhack can deal
7528 dnl with PT_GNU_RELRO segments, it's just simpler to disable elfhack when
7529 dnl the linker creates PT_GNU_RELRO segments.
7530 AC_CACHE_CHECK([whether linker creates PT_GNU_RELRO segments],
7531 LINK_WITH_PT_GNU_RELRO,
7532 [echo "int main() {return 0;}" > conftest.${ac_ext}
7533 if AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.${ac_ext} $LIBS 1>&2) &&
7534 test -s conftest${ac_exeext}; then
7535 if ${TOOLCHAIN_PREFIX}readelf -l conftest${ac_exeext} | grep GNU_RELRO > /dev/null; then
7536 LINK_WITH_PT_GNU_RELRO=yes
7538 LINK_WITH_PT_GNU_RELRO=no
7541 dnl We really don't expect to get here, but just in case
7542 AC_ERROR([couldn't compile a simple C file])
7545 if test "$LINK_WITH_PT_GNU_RELRO" = yes; then
7546 AC_MSG_WARN([Disabling elfhack])
7551 dnl ========================================================
7552 dnl = libstdc++ compatibility hacks
7553 dnl ========================================================
7556 MOZ_ARG_ENABLE_BOOL(stdcxx-compat,
7557 [ --enable-stdcxx-compat Enable compatibility with older libstdc++],
7560 AC_SUBST(STDCXX_COMPAT)
7562 if test -n "$STDCXX_COMPAT"; then
7563 eval $(CXX="$CXX" $PYTHON $_topsrcdir/build/autoconf/libstdcxx.py)
7564 AC_SUBST(MOZ_LIBSTDCXX_TARGET_VERSION)
7565 AC_SUBST(MOZ_LIBSTDCXX_HOST_VERSION)
7568 dnl ========================================================
7570 dnl = Profiling and Instrumenting
7572 dnl ========================================================
7573 MOZ_ARG_HEADER(Profiling and Instrumenting)
7575 dnl ========================================================
7576 dnl = Enable runtime visual profiling logger
7577 dnl ========================================================
7578 MOZ_ARG_ENABLE_BOOL(visual-event-tracer,
7579 [ --enable-visual-event-tracer Enable visual event tracer instrumentation],
7580 MOZ_VISUAL_EVENT_TRACER=1,
7581 MOZ_VISUAL_EVENT_TRACER=)
7582 if test -n "$MOZ_VISUAL_EVENT_TRACER"; then
7583 AC_DEFINE(MOZ_VISUAL_EVENT_TRACER)
7586 dnl ========================================================
7587 dnl Turn on reflow counting
7588 dnl ========================================================
7589 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7590 [ --enable-reflow-perf Enable reflow performance tracing],
7593 if test -n "$MOZ_REFLOW_PERF"; then
7594 AC_DEFINE(MOZ_REFLOW_PERF)
7597 dnl ========================================================
7598 dnl Enable code size metrics.
7599 dnl ========================================================
7600 MOZ_ARG_ENABLE_BOOL(codesighs,
7601 [ --enable-codesighs Enable code size analysis tools],
7602 _ENABLE_CODESIGHS=1,
7603 _ENABLE_CODESIGHS= )
7604 if test -n "$_ENABLE_CODESIGHS"; then
7605 if test -d $srcdir/tools/codesighs; then
7608 AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
7612 dnl ========================================================
7613 dnl = Enable Radio Interface for B2G (Gonk usually)
7614 dnl ========================================================
7615 MOZ_ARG_ENABLE_BOOL(b2g-ril,
7616 [ --enable-b2g-ril Set compile flags necessary for testing B2G Radio Interface Layer via network sockets ],
7619 if test -n "$MOZ_B2G_RIL"; then
7620 AC_DEFINE(MOZ_B2G_RIL)
7622 AC_SUBST(MOZ_B2G_RIL)
7624 dnl ========================================================
7625 dnl = Enable Radio FM for B2G (Gonk usually)
7626 dnl ========================================================
7627 if test -n "$MOZ_B2G_FM"; then
7628 AC_DEFINE(MOZ_B2G_FM)
7630 AC_SUBST(MOZ_B2G_FM)
7632 dnl ========================================================
7633 dnl = Enable Bluetooth Interface for B2G (Gonk usually)
7634 dnl ========================================================
7635 MOZ_ARG_ENABLE_BOOL(b2g-bt,
7636 [ --enable-b2g-bt Set compile flags necessary for compiling Bluetooth API for B2G ],
7639 if test -n "$MOZ_B2G_BT"; then
7640 AC_DEFINE(MOZ_B2G_BT)
7642 AC_SUBST(MOZ_B2G_BT)
7644 dnl ========================================================
7645 dnl = Enable Support for Time Manager API
7646 dnl ========================================================
7647 if test -n "$MOZ_TIME_MANAGER"; then
7648 AC_DEFINE(MOZ_TIME_MANAGER)
7650 AC_SUBST(MOZ_TIME_MANAGER)
7652 dnl ========================================================
7653 dnl = Enable Camera Interface for B2G (Gonk usually)
7654 dnl ========================================================
7655 MOZ_ARG_ENABLE_BOOL(b2g-camera,
7656 [ --enable-b2g-camera Set compile flags necessary for compiling camera API for B2G ],
7659 if test -n "$MOZ_B2G_CAMERA"; then
7660 AC_DEFINE(MOZ_B2G_CAMERA)
7662 AC_SUBST(MOZ_B2G_CAMERA)
7664 dnl ========================================================
7665 dnl = Enable Support B2G-specific changes to the NSS
7666 dnl = certificate trust database.
7667 dnl ========================================================
7668 if test -n "$MOZ_B2G_CERTDATA"; then
7669 AC_DEFINE(MOZ_B2G_CERTDATA)
7671 AC_SUBST(MOZ_B2G_CERTDATA)
7673 dnl ========================================================
7674 dnl = Enable Support for Payment API
7675 dnl ========================================================
7676 if test -n "$MOZ_PAY"; then
7681 dnl ========================================================
7682 dnl = Enable Support for AudioChannelManager API
7683 dnl ========================================================
7684 if test -n "$MOZ_AUDIO_CHANNEL_MANAGER"; then
7685 AC_DEFINE(MOZ_AUDIO_CHANNEL_MANAGER)
7687 AC_SUBST(MOZ_AUDIO_CHANNEL_MANAGER)
7689 dnl ========================================================
7690 dnl = Support for demangling undefined symbols
7691 dnl ========================================================
7692 if test -z "$SKIP_LIBRARY_CHECKS"; then
7695 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7699 # Demangle only for debug or trace-malloc or DMD builds
7700 MOZ_DEMANGLE_SYMBOLS=
7701 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC" -o "$MOZ_DMD"; then
7702 MOZ_DEMANGLE_SYMBOLS=1
7703 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7705 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7707 dnl ========================================================
7708 dnl = Support for gcc stack unwinding (from gcc 3.3)
7709 dnl ========================================================
7710 if test -z "$SKIP_LIBRARY_CHECKS"; then
7711 MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7714 dnl ========================================================
7716 dnl ========================================================
7718 MOZ_ARG_WITH_STRING(jitreport-granularity,
7719 [ --jitreport-granularity=N
7720 Default granularity at which to report JIT code
7723 1 - code ranges for whole functions only
7724 2 - per-line information
7725 3 - per-op information],
7726 JITREPORT_GRANULARITY=$withval,
7727 JITREPORT_GRANULARITY=3)
7729 AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY)
7731 dnl ========================================================
7735 dnl ========================================================
7736 MOZ_ARG_HEADER(Misc. Options)
7738 dnl ========================================================
7739 dnl update xterm title
7740 dnl ========================================================
7741 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7742 [ --enable-xterm-updates Update XTERM titles with current command.],
7746 dnl =========================================================
7748 dnl =========================================================
7749 MOZ_ARG_ENABLE_STRING([chrome-format],
7750 [ --enable-chrome-format=jar|flat|omni
7751 Select FORMAT of chrome files during packaging],
7752 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7754 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7755 MOZ_CHROME_FILE_FORMAT=jar
7758 if test "$MOZ_CHROME_FILE_FORMAT" = "symlink"; then
7759 AC_MSG_ERROR([--enable-chrome-format=symlink has been deprecated. It is now used by default in $DIST/bin on platforms that support it])
7762 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
7763 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7764 test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7765 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, or omni])
7768 dnl =========================================================
7769 dnl Omnijar packaging (bug 552121)
7770 dnl =========================================================
7771 dnl Omnijar packaging is compatible with flat packaging.
7772 dnl In unpackaged builds, omnijar looks for files as if
7773 dnl things were flat packaged. After packaging, all files
7774 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7775 dnl is set to flat since putting files into jars is only
7776 dnl done during packaging with omnijar.
7777 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7779 AC_DEFINE(MOZ_OMNIJAR)
7781 MOZ_PACKAGER_FORMAT="$MOZ_CHROME_FILE_FORMAT"
7782 if test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "OS2" -o "$MOZ_WIDGET_TOOLKIT" = "android"; then
7783 MOZ_CHROME_FILE_FORMAT=flat
7785 MOZ_CHROME_FILE_FORMAT=symlink
7788 OMNIJAR_NAME=omni.ja
7789 AC_SUBST(OMNIJAR_NAME)
7790 AC_SUBST(MOZ_OMNIJAR)
7791 AC_SUBST(MOZ_PACKAGER_FORMAT)
7793 dnl ========================================================
7794 dnl = Define default location for MOZILLA_FIVE_HOME
7795 dnl ========================================================
7796 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7797 [ --with-default-mozilla-five-home
7798 Set the default value for MOZILLA_FIVE_HOME],
7799 [ val=`echo $withval`
7800 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7802 dnl ========================================================
7803 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7804 dnl ========================================================
7805 MOZ_ARG_WITH_STRING(user-appdir,
7806 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
7807 [ val=`echo $withval`
7808 if echo "$val" | grep "\/" >/dev/null; then
7809 AC_MSG_ERROR("Homedir must be single relative path.")
7814 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7816 dnl ========================================================
7817 dnl = Doxygen configuration
7818 dnl ========================================================
7819 dnl Use commas to specify multiple dirs to this arg
7820 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7821 MOZ_ARG_WITH_STRING(doc-input-dirs,
7822 [ --with-doc-input-dirs=DIRS
7823 Header/idl dirs to create docs from],
7824 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7825 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7827 dnl Use commas to specify multiple dirs to this arg
7828 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7829 MOZ_ARG_WITH_STRING(doc-include-dirs,
7830 [ --with-doc-include-dirs=DIRS
7831 Include dirs to preprocess doc headers],
7832 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7833 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7835 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7836 MOZ_ARG_WITH_STRING(doc-output-dir,
7837 [ --with-doc-output-dir=DIR
7838 Dir to generate docs into],
7839 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7840 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7842 if test -z "$SKIP_COMPILER_CHECKS"; then
7843 dnl ========================================================
7845 dnl = Compiler Options
7847 dnl ========================================================
7848 MOZ_ARG_HEADER(Compiler Options)
7850 dnl ========================================================
7851 dnl Check for gcc -pipe support
7852 dnl ========================================================
7853 AC_MSG_CHECKING([for -pipe support])
7854 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
7855 dnl Any gcc that supports firefox supports -pipe.
7856 CFLAGS="$CFLAGS -pipe"
7857 CXXFLAGS="$CXXFLAGS -pipe"
7858 AC_MSG_RESULT([yes])
7863 dnl ========================================================
7864 dnl Profile guided optimization (gcc checks)
7865 dnl ========================================================
7866 dnl Test for profiling options
7867 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
7869 _SAVE_CFLAGS="$CFLAGS"
7870 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
7872 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
7873 AC_TRY_COMPILE([], [return 0;],
7874 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
7875 result="yes" ], result="no")
7876 AC_MSG_RESULT([$result])
7878 if test $result = "yes"; then
7879 PROFILE_GEN_LDFLAGS="-fprofile-generate"
7880 PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch"
7881 PROFILE_USE_LDFLAGS="-fprofile-use"
7884 CFLAGS="$_SAVE_CFLAGS"
7886 if test -n "$INTEL_CC"; then
7887 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
7888 PROFILE_GEN_LDFLAGS=
7889 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
7890 PROFILE_USE_LDFLAGS=
7893 dnl Sun Studio on Solaris
7894 if test "$SOLARIS_SUNPRO_CC"; then
7895 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
7896 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7897 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7898 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7901 AC_SUBST(PROFILE_GEN_CFLAGS)
7902 AC_SUBST(PROFILE_GEN_LDFLAGS)
7903 AC_SUBST(PROFILE_USE_CFLAGS)
7904 AC_SUBST(PROFILE_USE_LDFLAGS)
7908 dnl ========================================================
7909 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7910 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7911 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
7912 dnl ========================================================
7913 _SAVE_CXXFLAGS=$CXXFLAGS
7914 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7915 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7916 ac_nscap_nonconst_opeq_bug,
7925 template <class T, class U>
7926 int operator==(const Pointer<T>& rhs, U* lhs)
7928 return rhs.myPtr == lhs;
7931 template <class T, class U>
7932 int operator==(const Pointer<T>& rhs, const U* lhs)
7934 return rhs.myPtr == lhs;
7942 ac_nscap_nonconst_opeq_bug="no",
7943 ac_nscap_nonconst_opeq_bug="yes")])
7944 CXXFLAGS="$_SAVE_CXXFLAGS"
7946 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7947 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7949 fi # ! SKIP_COMPILER_CHECKS
7951 AC_DEFINE(CPP_THROW_NEW, [throw()])
7954 if test "$COMPILE_ENVIRONMENT"; then
7956 fi # COMPILE_ENVIRONMENT
7958 dnl ========================================================
7960 dnl = Build depencency options
7962 dnl ========================================================
7963 MOZ_ARG_HEADER(Build dependencies)
7965 if test "$GNU_CC" -a "$GNU_CXX"; then
7966 _DEPEND_CFLAGS='-MD -MP -MF $(MDDEPDIR)/$(@F).pp'
7967 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7968 elif test "$SOLARIS_SUNPRO_CC"; then
7971 dnl Don't override this for MSVC
7972 if test -z "$_WIN32_MSVC"; then
7973 _USE_CPP_INCLUDE_FLAG=
7974 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7975 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7977 echo '#include <stdio.h>' > dummy-hello.c
7979 CL_INCLUDES_PREFIX=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/^\([^:]*:[^:]*:\).*stdio.h$/\1/p'`
7981 if test -z "$CL_INCLUDES_PREFIX"; then
7982 AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
7984 AC_SUBST(CL_INCLUDES_PREFIX)
7989 dnl ========================================================
7991 dnl = Static Build Options
7993 dnl ========================================================
7994 MOZ_ARG_HEADER(Static build options)
7996 # split JS out by default to avoid VS2005 PGO crash (bug 591836).
7997 if test "$OS_ARCH" = "WINNT"; then
8001 MOZ_ARG_ENABLE_BOOL(shared-js,
8002 [ --enable-shared-js
8003 Create a shared JavaScript library.],
8007 if test -n "$ENABLE_SHARED_JS"; then
8009 MOZ_JS_LIBS="$MOZ_JS_SHARED_LIBS"
8011 MOZ_JS_LIBS="$MOZ_JS_STATIC_LIBS"
8012 AC_DEFINE(MOZ_STATIC_JS)
8014 AC_SUBST(JS_SHARED_LIBRARY)
8016 AC_SUBST(LIBXUL_LIBS)
8017 XPCOM_LIBS="$LIBXUL_LIBS"
8019 dnl ========================================================
8021 dnl = Standalone module options
8023 dnl ========================================================
8024 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
8027 dnl ========================================================
8029 if test -z "$SKIP_PATH_CHECKS"; then
8030 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
8031 if test "$MOZ_ENABLE_GTK2" -o "$USE_ELF_DYNSTR_GC" ; then
8032 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
8037 if test -z "${GLIB_GMODULE_LIBS}" \
8038 -a -n "${GLIB_CONFIG}"\
8039 -a "${GLIB_CONFIG}" != no\
8041 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
8044 AC_SUBST(GLIB_CFLAGS)
8046 AC_SUBST(GLIB_GMODULE_LIBS)
8048 dnl ========================================================
8049 dnl Graphics checks.
8050 dnl ========================================================
8052 if test "${OS_TARGET}" = "WINNT" -o "${MOZ_WIDGET_TOOLKIT}" = "android" -o "${MOZ_WIDGET_TOOLKIT}" = "gtk2"; then
8058 MOZ_ARG_ENABLE_BOOL(skia,
8059 [ --enable-skia Enable use of Skia],
8063 if test "$USE_FC_FREETYPE"; then
8064 if test "$COMPILE_ENVIRONMENT"; then
8065 dnl ========================================================
8066 dnl = Check for freetype2 and its functionality
8067 dnl ========================================================
8068 PKG_CHECK_MODULES(FT2, freetype2 >= 6.1.0, _HAVE_FREETYPE2=1, _HAVE_FREETYPE2=)
8070 if test "$_HAVE_FREETYPE2"; then
8072 _SAVE_CFLAGS="$CFLAGS"
8073 LIBS="$LIBS $FT2_LIBS"
8074 CFLAGS="$CFLAGS $FT2_CFLAGS"
8076 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
8077 ac_cv_member_FT_Bitmap_Size_y_ppem,
8078 [AC_TRY_COMPILE([#include <ft2build.h>
8079 #include FT_FREETYPE_H],
8081 if (sizeof s.y_ppem) return 0;
8083 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
8084 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
8085 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
8086 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
8088 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
8090 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
8091 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
8092 [FT_Bitmap_Size structure includes y_ppem field])
8094 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
8097 CFLAGS="$_SAVE_CFLAGS"
8100 _SAVE_CPPFLAGS="$CPPFLAGS"
8101 CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
8102 MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
8103 [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
8104 CPPFLAGS="$_SAVE_CPPFLAGS"
8106 AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
8109 PKG_CHECK_MODULES(_FONTCONFIG, fontconfig,
8111 if test "$MOZ_PANGO"; then
8112 MOZ_PANGO_CFLAGS="$MOZ_PANGO_CFLAGS $_FONTCONFIG_CFLAGS"
8113 MOZ_PANGO_LIBS="$MOZ_PANGO_LIBS $_FONTCONFIG_LIBS"
8115 FT2_CFLAGS="$FT2_CFLAGS $_FONTCONFIG_CFLAGS"
8116 FT2_LIBS="$FT2_LIBS $_FONTCONFIG_LIBS"
8121 dnl ========================================================
8122 dnl Check for pixman and cairo
8123 dnl ========================================================
8126 MOZ_ARG_ENABLE_BOOL(system-cairo,
8127 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
8132 MOZ_ARG_ENABLE_BOOL(system-pixman,
8133 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
8135 MOZ_TREE_PIXMAN=force,
8138 # System cairo depends on system pixman
8139 if test "$MOZ_TREE_PIXMAN" = "force"; then
8140 if test -z "$MOZ_TREE_CAIRO"; then
8141 AC_MSG_ERROR([--disable-system-pixman is incompatible with --enable-system-cairo.])
8145 elif test -z "$MOZ_TREE_CAIRO"; then
8149 if test "$MOZ_TREE_PIXMAN"; then
8150 AC_DEFINE(MOZ_TREE_PIXMAN)
8151 MOZ_PIXMAN_CFLAGS=""
8152 MOZ_PIXMAN_LIBS='$(call EXPAND_LIBNAME_PATH,mozlibpixman,$(DEPTH)/gfx/cairo/libpixman/src)'
8154 PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.19.2)
8155 MOZ_PIXMAN_CFLAGS="$PIXMAN_CFLAGS"
8156 MOZ_PIXMAN_LIBS="$PIXMAN_LIBS"
8158 AC_SUBST(MOZ_PIXMAN_CFLAGS)
8159 AC_SUBST(MOZ_PIXMAN_LIBS)
8161 # Check for headers defining standard int types.
8162 MOZ_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
8164 if test "$MOZ_TREE_CAIRO"; then
8165 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
8166 AC_DEFINE(MOZ_TREE_CAIRO)
8168 # For now we assume that we will have a uint64_t available through
8169 # one of the above headers or mozstdint.h.
8170 AC_DEFINE(HAVE_UINT64_T)
8172 # Define macros for cairo-features.h
8173 TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
8174 if test "$MOZ_X11"; then
8175 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
8176 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
8177 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
8178 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8179 MOZ_ENABLE_CAIRO_FT=1
8180 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
8182 case "$MOZ_WIDGET_TOOLKIT" in
8184 QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
8187 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
8188 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
8189 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
8192 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
8193 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
8194 if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
8195 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
8196 WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
8197 MOZ_ENABLE_D2D_SURFACE=1
8198 MOZ_ENABLE_DWRITE_FONT=1
8200 WIN32_DWRITE_FONT_FEATURE=
8201 WIN32_D2D_SURFACE_FEATURE=
8204 MOZ_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
8206 dnl D3D10 Layers depend on D2D Surfaces.
8207 if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
8208 MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
8212 OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
8213 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8214 MOZ_ENABLE_CAIRO_FT=1
8215 CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
8216 CAIRO_FT_OSLIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
8220 if test "$USE_FC_FREETYPE"; then
8221 FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
8223 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
8224 AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
8225 AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
8226 AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
8227 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
8228 AC_SUBST(CAIRO_FT_CFLAGS)
8230 AC_SUBST(PS_SURFACE_FEATURE)
8231 AC_SUBST(PDF_SURFACE_FEATURE)
8232 AC_SUBST(SVG_SURFACE_FEATURE)
8233 AC_SUBST(XLIB_SURFACE_FEATURE)
8234 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
8235 AC_SUBST(QUARTZ_SURFACE_FEATURE)
8236 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
8237 AC_SUBST(WIN32_SURFACE_FEATURE)
8238 AC_SUBST(OS2_SURFACE_FEATURE)
8239 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
8240 AC_SUBST(FT_FONT_FEATURE)
8241 AC_SUBST(FC_FONT_FEATURE)
8242 AC_SUBST(WIN32_FONT_FEATURE)
8243 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
8244 AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
8245 AC_SUBST(QUARTZ_FONT_FEATURE)
8246 AC_SUBST(PNG_FUNCTIONS_FEATURE)
8247 AC_SUBST(QT_SURFACE_FEATURE)
8248 AC_SUBST(TEE_SURFACE_FEATURE)
8250 MOZ_CAIRO_LIBS='$(call EXPAND_LIBNAME_PATH,mozcairo,$(DEPTH)/gfx/cairo/cairo/src)'" $CAIRO_FT_LIBS"
8251 MOZ_CAIRO_OSLIBS='${CAIRO_FT_OSLIBS}'
8253 if test "$MOZ_X11"; then
8254 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
8257 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
8259 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION)
8260 MOZ_CAIRO_CFLAGS="$CAIRO_CFLAGS"
8261 MOZ_CAIRO_LIBS="$CAIRO_LIBS"
8262 PKG_CHECK_MODULES(CAIRO_TEE, cairo-tee >= $CAIRO_VERSION)
8263 if test "$MOZ_X11"; then
8264 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
8265 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
8266 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_LIBS"
8267 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
8271 AC_SUBST(MOZ_TREE_CAIRO)
8272 AC_SUBST(MOZ_CAIRO_CFLAGS)
8273 AC_SUBST(MOZ_CAIRO_LIBS)
8274 AC_SUBST(MOZ_CAIRO_OSLIBS)
8275 AC_SUBST(MOZ_TREE_PIXMAN)
8277 dnl ========================================================
8279 dnl ========================================================
8281 QCMS_LIBS='$(DEPTH)/gfx/qcms/$(LIB_PREFIX)mozqcms.$(LIB_SUFFIX)'
8284 dnl ========================================================
8286 dnl ========================================================
8287 MOZ_HARFBUZZ_LIBS='$(DEPTH)/gfx/harfbuzz/src/$(LIB_PREFIX)mozharfbuzz.$(LIB_SUFFIX)'
8288 AC_SUBST(MOZ_HARFBUZZ_LIBS)
8290 dnl ========================================================
8292 dnl ========================================================
8293 MOZ_GRAPHITE_LIBS='$(DEPTH)/gfx/graphite2/src/$(LIB_PREFIX)mozgraphite2.$(LIB_SUFFIX)'
8294 AC_SUBST(MOZ_GRAPHITE_LIBS)
8296 dnl ========================================================
8298 dnl ========================================================
8299 MOZ_OTS_LIBS='$(DEPTH)/gfx/ots/src/$(LIB_PREFIX)mozots.$(LIB_SUFFIX)'
8300 AC_SUBST(MOZ_OTS_LIBS)
8302 dnl ========================================================
8304 dnl ========================================================
8305 if test "$MOZ_ENABLE_SKIA"; then
8306 MOZ_SKIA_LIBS='$(DEPTH)/gfx/skia/$(LIB_PREFIX)skia.$(LIB_SUFFIX)'
8307 AC_DEFINE(MOZ_ENABLE_SKIA)
8309 if test "${MOZ_WIDGET_TOOLKIT}" = "android" -o x"$MOZ_WIDGET_TOOLKIT" = x"gonk"; then
8310 AC_DEFINE(SK_BUILD_FOR_ANDROID_NDK)
8311 elif test "$OS_ARCH" = "WINNT"; then
8316 if test "${CPU_ARCH}" != "ppc" -a "${CPU_ARCH}" != "ppc64"; then
8317 MOZ_ENABLE_SKIA_GPU=1
8318 AC_DEFINE(USE_SKIA_GPU)
8319 AC_SUBST(MOZ_ENABLE_SKIA_GPU)
8324 AC_SUBST(MOZ_ENABLE_SKIA)
8325 AC_SUBST(MOZ_SKIA_LIBS)
8327 dnl ========================================================
8329 dnl ========================================================
8330 MOZ_ARG_DISABLE_BOOL(xul,
8331 [ --disable-xul Disable XUL],
8333 if test "$MOZ_XUL"; then
8336 dnl remove extensions that require XUL
8337 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8342 dnl ========================================================
8343 dnl disable profile locking
8344 dnl do no use this in applications that can have more than
8345 dnl one process accessing the profile directory.
8346 dnl ========================================================
8347 MOZ_ARG_DISABLE_BOOL(profilelocking,
8348 [ --disable-profilelocking
8349 Disable profile locking],
8350 MOZ_PROFILELOCKING=,
8351 MOZ_PROFILELOCKING=1 )
8352 if test "$MOZ_PROFILELOCKING"; then
8353 AC_DEFINE(MOZ_PROFILELOCKING)
8356 dnl ========================================================
8357 dnl necko configuration options
8358 dnl ========================================================
8361 dnl option to disable various necko protocols
8363 MOZ_ARG_ENABLE_STRING(necko-protocols,
8364 [ --enable-necko-protocols[={http,ftp,default,all,none}]
8365 Enable/disable specific protocol handlers],
8366 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8367 if test "$option" = "yes" -o "$option" = "all"; then
8368 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8369 elif test "$option" = "no" -o "$option" = "none"; then
8371 elif test "$option" = "default"; then
8372 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8373 elif test `echo "$option" | grep -c \^-` != 0; then
8374 option=`echo $option | sed 's/^-//'`
8375 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8377 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8380 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8382 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8383 AC_SUBST(NECKO_PROTOCOLS)
8384 for p in $NECKO_PROTOCOLS; do
8385 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8386 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_PROTOCOL_$p"
8390 dnl option to disable necko's wifi scanner
8392 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8393 [ --disable-necko-wifi Disable necko wifi scanner],
8397 if test "$OS_ARCH" = "OS2"; then
8398 dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
8401 if test "$NECKO_WIFI" -a \
8402 "$OS_ARCH" != "Linux" -a \
8403 "$OS_ARCH" != "Darwin" -a \
8404 "$OS_ARCH" != "SunOS" -a \
8405 "$OS_ARCH" != "WINNT"; then
8406 AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi])
8409 if test "$NECKO_WIFI"; then
8410 AC_DEFINE(NECKO_WIFI)
8411 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
8413 AC_SUBST(NECKO_WIFI)
8416 dnl option to disable cookies
8418 MOZ_ARG_DISABLE_BOOL(cookies,
8419 [ --disable-cookies Disable cookie support],
8422 AC_SUBST(NECKO_COOKIES)
8423 if test "$NECKO_COOKIES"; then
8424 AC_DEFINE(NECKO_COOKIES)
8425 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
8429 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8431 MOZ_ARG_DISABLE_BOOL(ctypes,
8432 [ --disable-ctypes Disable js-ctypes],
8435 AC_SUBST(BUILD_CTYPES)
8436 if test "$BUILD_CTYPES"; then
8437 AC_DEFINE(BUILD_CTYPES)
8440 dnl Build Places if required
8441 if test "$MOZ_PLACES"; then
8442 AC_DEFINE(MOZ_PLACES)
8445 dnl Build Common JS modules provided by services.
8446 AC_SUBST(MOZ_SERVICES_COMMON)
8447 if test -n "$MOZ_SERVICES_COMMON"; then
8448 AC_DEFINE(MOZ_SERVICES_COMMON)
8451 dnl Build Services crypto component (used by Sync)
8452 AC_SUBST(MOZ_SERVICES_CRYPTO)
8453 if test -n "$MOZ_SERVICES_CRYPTO"; then
8454 AC_DEFINE(MOZ_SERVICES_CRYPTO)
8457 dnl Build Firefox Health Reporter Service
8458 AC_SUBST(MOZ_SERVICES_HEALTHREPORT)
8459 if test -n "$MOZ_SERVICES_HEALTHREPORT"; then
8460 AC_DEFINE(MOZ_SERVICES_HEALTHREPORT)
8463 dnl Build Services metrics component
8464 AC_SUBST(MOZ_SERVICES_METRICS)
8465 if test -n "$MOZ_SERVICES_METRICS"; then
8466 AC_DEFINE(MOZ_SERVICES_METRICS)
8469 dnl Build Notifications if required
8470 AC_SUBST(MOZ_SERVICES_NOTIFICATIONS)
8471 if test -n "$MOZ_SERVICES_NOTIFICATIONS"; then
8472 AC_DEFINE(MOZ_SERVICES_NOTIFICATIONS)
8475 dnl Build Sync Services if required
8476 AC_SUBST(MOZ_SERVICES_SYNC)
8477 if test -n "$MOZ_SERVICES_SYNC"; then
8478 AC_DEFINE(MOZ_SERVICES_SYNC)
8481 dnl Build Captive Portal Detector if required
8482 AC_SUBST(MOZ_CAPTIVEDETECT)
8483 if test -n "$MOZ_CAPTIVEDETECT"; then
8484 AC_DEFINE(MOZ_CAPTIVEDETECT)
8487 dnl Build WBMP decoder if required
8489 if test -n "$MOZ_WBMP"; then
8493 dnl ========================================================
8494 if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC" -o "$MOZ_DMD"; then
8495 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8498 if test "$MOZ_APP_COMPONENT_INCLUDE"; then
8499 AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_INCLUDE, "$MOZ_APP_COMPONENT_INCLUDE")
8502 if test "$MOZ_APP_COMPONENT_MODULES"; then
8503 AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_MODULES, $MOZ_APP_COMPONENT_MODULES)
8506 dnl ========================================================
8508 dnl = Maintainer debug option (no --enable equivalent)
8510 dnl ========================================================
8515 AC_SUBST(AR_EXTRACT)
8519 AC_SUBST(AS_DASH_C_FLAG)
8528 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8529 AC_SUBST(MOZ_UPDATE_XTERM)
8530 AC_SUBST(MOZ_PLATFORM_MAEMO)
8531 AC_SUBST(MOZ_AUTH_EXTENSION)
8532 AC_SUBST(MOZ_PERMISSIONS)
8533 AC_SUBST(MOZ_PREF_EXTENSIONS)
8534 AC_SUBST(MOZ_JS_LIBS)
8537 AC_SUBST(MOZ_DEBUG_SYMBOLS)
8538 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
8539 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
8540 AC_SUBST(MOZ_DEBUG_FLAGS)
8541 AC_SUBST(MOZ_DEBUG_LDFLAGS)
8542 AC_SUBST(WARNINGS_AS_ERRORS)
8543 AC_SUBST(MOZ_EXTENSIONS)
8544 AC_SUBST(MOZ_JSDEBUGGER)
8545 AC_SUBST(MOZ_ENABLE_PROFILER_SPS)
8548 AC_SUBST(MOZ_INSTRUMENTS)
8549 AC_SUBST(MOZ_CALLGRIND)
8551 AC_SUBST(MOZ_PROFILING)
8553 AC_SUBST(MOZ_PLACES)
8554 AC_SUBST(MOZ_TOOLKIT_SEARCH)
8556 AC_SUBST(NS_PRINTING)
8558 AC_SUBST(MOZ_HELP_VIEWER)
8559 AC_SUBST(TOOLCHAIN_PREFIX)
8566 AC_SUBST(MOZ_PROFILELOCKING)
8568 AC_SUBST(ENABLE_TESTS)
8569 AC_SUBST(ENABLE_MARIONETTE)
8571 AC_SUBST(MOZ_UNIVERSALCHARDET)
8572 AC_SUBST(ACCESSIBILITY)
8573 AC_SUBST(MOZ_SPELLCHECK)
8574 AC_SUBST(MOZ_ANDROID_OMTC)
8575 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
8576 AC_SUBST(MOZ_ONLY_TOUCH_EVENTS)
8577 AC_SUBST(MOZ_CRASHREPORTER)
8578 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
8579 AC_SUBST(MOZ_CRASHREPORTER_UPLOAD_FULL_SYMBOLS)
8580 AC_SUBST(MOZ_MAINTENANCE_SERVICE)
8581 AC_SUBST(MOZ_STUB_INSTALLER)
8582 AC_SUBST(MOZ_VERIFY_MAR_SIGNATURE)
8583 AC_SUBST(MOZ_ENABLE_SIGNMAR)
8584 AC_SUBST(MOZ_UPDATER)
8585 AC_SUBST(MOZ_ANGLE_RENDERER)
8586 AC_SUBST(MOZ_DIRECTX_SDK_PATH)
8587 AC_SUBST(MOZ_DIRECTX_SDK_CPU_SUFFIX)
8588 AC_SUBST(MOZ_D3DX9_VERSION)
8589 AC_SUBST(MOZ_D3DCOMPILER_CAB)
8590 AC_SUBST(MOZ_D3DCOMPILER_DLL)
8593 AC_SUBST(MOZ_ANDROID_HISTORY)
8594 AC_SUBST(MOZ_WEBSMS_BACKEND)
8595 AC_SUBST(MOZ_ANDROID_WALLPAPER)
8596 AC_SUBST(MOZ_ANDROID_BEAM)
8597 AC_SUBST(ENABLE_STRIP)
8598 AC_SUBST(PKG_SKIP_STRIP)
8599 AC_SUBST(STRIP_FLAGS)
8600 AC_SUBST(USE_ELF_DYNSTR_GC)
8601 AC_SUBST(USE_ELF_HACK)
8602 AC_SUBST(INCREMENTAL_LINKER)
8603 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
8604 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
8606 AC_SUBST(MOZ_FIX_LINK_PATHS)
8607 AC_SUBST(XPCOM_LIBS)
8608 AC_SUBST(XPCOM_FROZEN_LDOPTS)
8609 AC_SUBST(XPCOM_GLUE_LDOPTS)
8610 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
8611 AC_SUBST(XPCOM_STATICRUNTIME_GLUE_LDOPTS)
8612 AC_SUBST(XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS)
8614 AC_SUBST(USE_DEPENDENT_LIBS)
8616 AC_SUBST(MOZ_BUILD_ROOT)
8617 AC_SUBST(MOZ_OS2_TOOLS)
8619 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
8620 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
8621 AC_SUBST(MOZ_LINKER_EXTRACT)
8623 dnl ========================================================
8624 dnl = Mac bundle name prefix
8625 dnl ========================================================
8626 MOZ_ARG_WITH_STRING(macbundlename-prefix,
8627 [ --with-macbundlename-prefix=prefix
8628 Prefix for MOZ_MACBUNDLE_NAME],
8629 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
8631 MOZ_MACBUNDLE_NAME=`echo $MOZ_APP_DISPLAYNAME | tr -d ' '`
8632 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
8633 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
8636 if test "$MOZ_DEBUG"; then
8637 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}Debug.app
8639 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
8641 AC_SUBST(MOZ_MACBUNDLE_NAME)
8643 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
8644 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr '[A-Z]' '[a-z]'`
8645 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
8646 if test "$MOZ_DEBUG"; then
8647 MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
8650 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
8651 AC_SUBST(MOZ_MACBUNDLE_ID)
8653 # The following variables are available to branding and application
8654 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
8655 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
8656 # impacts profile location and user-visible fields.
8657 # - MOZ_APP_BASENAME: Typically stays consistent for multiple branded
8658 # versions of a given application (e.g. Aurora and Firefox both use
8659 # "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used
8660 # for application.ini's "Name" field, which controls profile location in
8661 # the absence of a "Profile" field (see below), and various system
8662 # integration hooks (Unix remoting, Windows MessageWindow name, etc.)
8663 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
8664 # Mac Bundle name, Updater, Installer), it is typically used for nightly
8665 # builds (e.g. Aurora for Firefox).
8666 # - MOZ_APP_VERSION: Defines the application version number.
8667 # - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set,
8668 # defaults to a lowercase form of MOZ_APP_BASENAME.
8669 # - MOZ_APP_PROFILE: When set, used for application.ini's
8670 # "Profile" field, which controls profile location.
8671 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
8672 # crash reporter server url.
8673 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
8674 # - MOZ_EXTENSION_MANAGER: When set, enabled extension manager.
8676 if test -z "$MOZ_APP_NAME"; then
8677 MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
8680 # For extensions and langpacks, we require a max version that is compatible
8681 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
8682 # 10.0a1 and 10.0a2 aren't affected
8683 # 10.0 becomes 10.0.*
8684 # 10.0.1 becomes 10.0.*
8685 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
8686 if test -z "$IS_ALPHA"; then
8688 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*.[0-9]*\).*|\1|"`.*
8691 MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
8694 MOZ_B2G_VERSION=${MOZ_B2G_VERSION:-"1.0.0"}
8695 AC_DEFINE_UNQUOTED(MOZ_B2G_VERSION,"$MOZ_B2G_VERSION")
8696 AC_DEFINE_UNQUOTED(MOZ_B2G_OS_NAME,"$MOZ_B2G_OS_NAME")
8698 AC_SUBST(MOZ_APP_NAME)
8699 AC_SUBST(MOZ_APP_DISPLAYNAME)
8700 AC_SUBST(MOZ_APP_BASENAME)
8701 AC_SUBST(MOZ_APP_VENDOR)
8702 AC_SUBST(MOZ_APP_PROFILE)
8703 AC_SUBST(MOZ_APP_ID)
8704 AC_SUBST(MAR_CHANNEL_ID)
8705 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
8706 AC_SUBST(MOZ_PROFILE_MIGRATOR)
8707 AC_SUBST(MOZ_EXTENSION_MANAGER)
8708 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
8709 AC_SUBST(MOZ_APP_UA_NAME)
8710 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
8711 AC_SUBST(MOZ_APP_VERSION)
8712 AC_SUBST(MOZ_APP_MAXVERSION)
8713 AC_DEFINE_UNQUOTED(FIREFOX_VERSION,$FIREFOX_VERSION)
8714 AC_SUBST(FIREFOX_VERSION)
8715 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
8716 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
8717 AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
8719 AC_DEFINE_UNQUOTED(MOZ_UA_BUILDID, "$MOZ_UA_BUILDID")
8720 AC_SUBST(MOZ_UA_BUILDID)
8722 AC_SUBST(MOZ_APP_STATIC_INI)
8724 AC_SUBST(MOZ_PKG_SPECIAL)
8726 AC_SUBST(MOZILLA_OFFICIAL)
8728 AC_DEFINE_UNQUOTED(MOZ_TELEMETRY_DISPLAY_REV, 2)
8729 AC_SUBST(MOZ_TELEMETRY_DISPLAY_REV)
8731 if test "$MOZ_TELEMETRY_REPORTING"; then
8732 AC_DEFINE(MOZ_TELEMETRY_REPORTING)
8734 # Enable Telemetry by default for nightly and aurora channels
8735 if test "$MOZ_UPDATE_CHANNEL" = "nightly" -o \
8736 "$MOZ_UPDATE_CHANNEL" = "aurora"; then
8737 AC_DEFINE(MOZ_TELEMETRY_ON_BY_DEFAULT)
8741 dnl If we have any service that uploads data (and requires data submission
8742 dnl policy alert), set MOZ_DATA_REPORTING.
8743 dnl We need SUBST for build system and DEFINE for xul preprocessor.
8744 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"; then
8745 MOZ_DATA_REPORTING=1
8746 AC_DEFINE(MOZ_DATA_REPORTING)
8747 AC_SUBST(MOZ_DATA_REPORTING)
8751 AC_SUBST(MOZ_MAPINFO)
8752 AC_SUBST(MOZ_BROWSE_INFO)
8753 AC_SUBST(MOZ_TOOLS_DIR)
8754 AC_SUBST(WIN32_REDIST_DIR)
8757 dnl Echo the CFLAGS to remove extra whitespace.
8763 $_WARNINGS_CXXFLAGS \
8766 COMPILE_CFLAGS=`echo \
8771 COMPILE_CXXFLAGS=`echo \
8772 $_DEFINES_CXXFLAGS \
8776 AC_SUBST(SYSTEM_LIBXUL)
8777 AC_SUBST(MOZ_NATIVE_JPEG)
8778 AC_SUBST(MOZ_NATIVE_PNG)
8779 AC_SUBST(MOZ_NATIVE_BZ2)
8781 AC_SUBST(MOZ_FLEXBOX)
8782 AC_SUBST(MOZ_JPEG_CFLAGS)
8783 AC_SUBST(MOZ_JPEG_LIBS)
8784 AC_SUBST(MOZ_BZ2_CFLAGS)
8785 AC_SUBST(MOZ_BZ2_LIBS)
8786 AC_SUBST(MOZ_PNG_CFLAGS)
8787 AC_SUBST(MOZ_PNG_LIBS)
8789 AC_SUBST(NSPR_CFLAGS)
8791 AC_SUBST(MOZ_NATIVE_NSPR)
8793 AC_SUBST(NSS_CFLAGS)
8795 AC_SUBST(MOZ_NATIVE_NSS)
8796 AC_SUBST(NSS_DISABLE_DBM)
8799 OS_CXXFLAGS="$CXXFLAGS"
8800 OS_CPPFLAGS="$CPPFLAGS"
8801 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
8802 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
8803 OS_LDFLAGS="$LDFLAGS"
8806 AC_SUBST(OS_CXXFLAGS)
8807 AC_SUBST(OS_CPPFLAGS)
8808 AC_SUBST(OS_COMPILE_CFLAGS)
8809 AC_SUBST(OS_COMPILE_CXXFLAGS)
8810 AC_SUBST(OS_LDFLAGS)
8812 AC_SUBST(CROSS_COMPILE)
8813 AC_SUBST(WCHAR_CFLAGS)
8817 AC_SUBST(HOST_CFLAGS)
8818 AC_SUBST(HOST_CXXFLAGS)
8819 AC_SUBST(HOST_LDFLAGS)
8820 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8822 AC_SUBST(HOST_AR_FLAGS)
8824 AC_SUBST(HOST_RANLIB)
8825 AC_SUBST(HOST_NSPR_MDCPUCFG)
8826 AC_SUBST(HOST_BIN_SUFFIX)
8827 AC_SUBST(HOST_OS_ARCH)
8829 AC_SUBST(TARGET_CPU)
8830 AC_SUBST(TARGET_VENDOR)
8832 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8833 AC_SUBST(TARGET_MD_ARCH)
8834 AC_SUBST(TARGET_XPCOM_ABI)
8837 AC_SUBST(OS_RELEASE)
8840 AC_SUBST(INTEL_ARCHITECTURE)
8842 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8844 AC_SUBST(WRAP_LDFLAGS)
8847 AC_SUBST(MKSHLIB_FORCE_ALL)
8848 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8849 AC_SUBST(DSO_CFLAGS)
8850 AC_SUBST(DSO_PIC_CFLAGS)
8851 AC_SUBST(DSO_LDOPTS)
8852 AC_SUBST(LIB_PREFIX)
8853 AC_SUBST(DLL_PREFIX)
8854 AC_SUBST(DLL_SUFFIX)
8855 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8856 AC_SUBST(LIB_SUFFIX)
8857 AC_SUBST(OBJ_SUFFIX)
8858 AC_SUBST(BIN_SUFFIX)
8859 AC_SUBST(ASM_SUFFIX)
8860 AC_SUBST(IMPORT_LIB_SUFFIX)
8862 AC_SUBST(CC_VERSION)
8863 AC_SUBST(CXX_VERSION)
8864 AC_SUBST(MSMANIFEST_TOOL)
8865 AC_SUBST(NS_ENABLE_TSF)
8866 AC_SUBST(MOZ_NSS_PATCH)
8867 AC_SUBST(MOZ_APP_COMPONENT_LIBS)
8868 AC_SUBST(MOZ_APP_EXTRA_LIBS)
8870 AC_SUBST(MOZ_SPEEX_RESAMPLER)
8871 AC_SUBST(MOZ_SOUNDTOUCH)
8874 AC_SUBST(MOZ_VORBIS)
8875 AC_SUBST(MOZ_TREMOR)
8880 AC_SUBST(MOZ_MEDIA_PLUGINS)
8881 AC_SUBST(MOZ_OMX_PLUGIN)
8882 AC_SUBST(MOZ_VP8_ERROR_CONCEALMENT)
8883 AC_SUBST(MOZ_VP8_ENCODER)
8887 AC_SUBST(VPX_ASFLAGS)
8888 AC_SUBST(VPX_DASH_C_FLAG)
8889 AC_SUBST(VPX_AS_CONVERSION)
8890 AC_SUBST(VPX_ASM_SUFFIX)
8891 AC_SUBST(VPX_X86_ASM)
8892 AC_SUBST(VPX_ARM_ASM)
8893 AC_SUBST(VPX_NEED_OBJ_INT_EXTRACT)
8894 AC_SUBST(MOZ_INSTRUMENT_EVENT_LOOP)
8895 AC_SUBST(LIBJPEG_TURBO_AS)
8896 AC_SUBST(LIBJPEG_TURBO_ASFLAGS)
8897 AC_SUBST(LIBJPEG_TURBO_X86_ASM)
8898 AC_SUBST(LIBJPEG_TURBO_X64_ASM)
8899 AC_SUBST(LIBJPEG_TURBO_ARM_ASM)
8901 AC_SUBST(MOZ_PACKAGE_JSSHELL)
8902 AC_SUBST(MOZ_FOLD_LIBS)
8904 AC_SUBST(MOZ_ENABLE_SZIP)
8905 AC_SUBST(MOZ_SZIP_FLAGS)
8907 AC_MSG_CHECKING([for posix_fallocate])
8908 AC_TRY_LINK([#define _XOPEN_SOURCE 600
8909 #include <fcntl.h>],
8910 [posix_fallocate(0, 0, 0);],
8911 [ac_cv___posix_fallocate=true],
8912 [ac_cv___posix_fallocate=false])
8914 if test "$ac_cv___posix_fallocate" = true ; then
8915 AC_DEFINE(HAVE_POSIX_FALLOCATE)
8921 dnl Check for missing components
8922 if test "$COMPILE_ENVIRONMENT"; then
8923 if test "$MOZ_X11"; then
8924 if test "$WITHOUT_X11"; then
8925 AC_MSG_ERROR([--without-x specified and MOZ_X11 still defined])
8927 dnl ====================================================
8928 dnl = Check if X headers exist
8929 dnl ====================================================
8930 _SAVE_CFLAGS=$CFLAGS
8931 CFLAGS="$CFLAGS $XCFLAGS"
8935 #include <X11/Xlib.h>
8936 #include <X11/Intrinsic.h>
8937 #include <X11/extensions/XShm.h>
8941 if ((dpy = XOpenDisplay(NULL)) == NULL) {
8942 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8946 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8947 CFLAGS="$_SAVE_CFLAGS"
8949 if test -n "$MISSING_X"; then
8950 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8955 dnl Check for headers, etc. needed by WebGL.
8956 if test "$MOZ_GL_DEFAULT_PROVIDER" = "GLX"; then
8957 MOZ_CHECK_HEADER(GL/glx.h)
8958 if test "$ac_cv_header_GL_glx_h" != "yes"; then
8959 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))])
8961 fi # MOZ_GL_DEFAULT_PROVIDER=GLX
8962 fi # COMPILE_ENVIRONMENT
8964 dnl Set various defines and substitutions
8965 dnl ========================================================
8967 if test "$OS_ARCH" = "Darwin"; then
8969 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2"; then
8973 if test "$MOZ_DEBUG"; then
8974 AC_DEFINE(MOZ_REFLOW_PERF)
8975 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8978 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8979 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8980 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8981 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8982 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8983 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8984 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8985 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8986 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8989 AC_SUBST(MOZILLA_VERSION)
8991 AC_SUBST(ac_configure_args)
8993 dnl Spit out some output
8994 dnl ========================================================
8996 dnl The following defines are used by xpcom
8997 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8999 HAVE_CPP_2BYTE_WCHAR_T
9000 HAVE_CPP_AMBIGUITY_RESOLVING_USING
9002 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
9003 HAVE_CPP_PARTIAL_SPECIALIZATION
9004 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
9005 NEED_CPP_UNUSED_IMPLEMENTATIONS
9009 HAVE_ICONV_WITH_CONST_INPUT
9022 # FUTURE? Consider moving all these to moz.build files.
9024 netwerk/necko-config.h
9025 xpcom/xpcom-config.h
9026 xpcom/xpcom-private.h
9029 AC_OUTPUT([mozilla-config.h])
9031 # Hack around an Apple bug that affects the egrep that comes with OS X 10.7.
9032 # "env ARCHPREFERENCE=i386,x86_64 arch egrep" first tries to use the 32-bit
9033 # Intel part of the egrep fat binary, even on 64-bit systems, and falls back on
9034 # the 64-bit part if it's not a fat binary, as can happen with MacPorts. We
9035 # (apparently) only need this hack when egrep's "pattern" is particularly long
9036 # (as in the following code) and the first egrep on our $PATH is Apple's. See
9040 FIXED_EGREP="env ARCHPREFERENCE=i386,x86_64 arch egrep"
9047 # Generate Makefiles for WebRTC directly from .gyp files
9048 if test "${OS_TARGET}" = "WINNT"; then
9049 if test "$HAVE_64BIT_OS"; then
9054 EXTRA_GYP_DEFINES="-D MSVS_VERSION=${_MSVS_VERSION} -D MSVS_OS_BITS=${OS_BITS}"
9056 elif test "${OS_TARGET}" = "Android"; then
9057 if test "${MOZ_WIDGET_TOOLKIT}" = "gonk"; then
9058 EXTRA_GYP_DEFINES="-G os=linux "
9060 EXTRA_GYP_DEFINES="-D gtest_target_type=executable -D android_toolchain=${android_toolchain} -G os=android "
9064 if test -n "$ARM_ARCH"; then
9065 if test "$ARM_ARCH" -lt 7; then
9066 EXTRA_GYP_DEFINES="${EXTRA_GYP_DEFINES} -D armv7=0 "
9068 if test "${OS_TARGET}" = "Android"; then
9069 EXTRA_GYP_DEFINES="${EXTRA_GYP_DEFINES} -D armv7=1 "
9071 dnl CPU detection for ARM works on Android only. armv7 always uses CPU detection, so
9072 dnl we have to set armv7=0 for non-Android target
9073 EXTRA_GYP_DEFINES="${EXTRA_GYP_DEFINES} -D armv7=0 "
9078 # Don't try to compile sse4.1 code if toolchain doesn't support
9079 if test -z "$HAVE_TOOLCHAIN_SUPPORT_MSSE4_1"; then
9080 EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D yuv_disable_asm=1"
9083 if test -n "$MOZ_WEBRTC"; then
9084 AC_MSG_RESULT("generating WebRTC Makefiles...")
9086 if test "${MOZ_WIDGET_TOOLKIT}" = "gonk"; then
9087 EXTRA_GYP_DEFINES="${EXTRA_GYP_DEFINES} -D build_with_gonk=1 -D include_internal_audio_device=0"
9090 dnl Any --include files must also appear in -D FORCED_INCLUDE_FILE= entries
9091 dnl so that regeneration via dependencies works correctly
9092 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"
9094 if test -n HAVE_CLOCK_MONOTONIC; then
9095 WEBRTC_CONFIG="${WEBRTC_CONFIG} -D have_clock_monotonic=1"
9097 WEBRTC_CONFIG="${WEBRTC_CONFIG} -D have_clock_monotonic=0"
9100 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}"
9102 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
9103 $GYP_WEBRTC_OPTIONS \
9104 --generator-output=${_objdir}/media/webrtc/trunk \
9105 ${srcdir}/media/webrtc/trunk/peerconnection.gyp
9106 if test "$?" != 0; then
9107 AC_MSG_ERROR([failed to generate WebRTC Makefiles])
9110 # XXX disable until we land the tranche with signaling
9111 if test -n "$MOZ_WEBRTC_SIGNALING"; then
9112 AC_MSG_RESULT("generating WebRTC/Signaling Makefiles...")
9113 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
9114 $GYP_WEBRTC_OPTIONS \
9115 -D build_for_test=0 \
9116 --generator-output=${_objdir}/media/webrtc/signaling \
9117 ${srcdir}/media/webrtc/signaling/signaling.gyp
9118 if test "$?" != 0; then
9119 AC_MSG_ERROR([failed to generate WebRTC/Signaling Makefiles])
9122 AC_MSG_RESULT("generating WebRTC/SignalingTest Makefiles...")
9123 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
9124 $GYP_WEBRTC_OPTIONS \
9125 -D build_for_test=1 \
9126 --generator-output=${_objdir}/media/webrtc/signalingtest \
9127 ${srcdir}/media/webrtc/signaling/signaling.gyp
9128 if test "$?" != 0; then
9129 AC_MSG_ERROR([failed to generate WebRTC/SignalingTest Makefiles])
9133 AC_MSG_RESULT("generating gtest Makefiles...")
9134 # Ok to pass some extra -D's that are ignored here
9135 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
9136 $GYP_WEBRTC_OPTIONS \
9137 --generator-output=${_objdir}/media/webrtc/trunk/testing/ \
9138 ${srcdir}/media/webrtc/trunk/testing/gtest.gyp
9139 if test "$?" != 0; then
9140 AC_MSG_ERROR([failed to generate gtest Makefiles])
9143 AC_MSG_RESULT("generating nrappkit Makefiles...")
9144 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
9145 $GYP_WEBRTC_OPTIONS \
9146 --generator-output=${_objdir}/media/mtransport/third_party/nrappkit \
9147 ${srcdir}/media/mtransport/third_party/nrappkit/nrappkit.gyp
9148 if test "$?" != 0; then
9149 AC_MSG_ERROR([failed to generate nrappkit Makefiles])
9152 AC_MSG_RESULT("generating nICEr Makefiles...")
9153 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
9154 $GYP_WEBRTC_OPTIONS \
9155 --generator-output=${_objdir}/media/mtransport/third_party/nICEr \
9156 ${srcdir}/media/mtransport/third_party/nICEr/nicer.gyp
9157 if test "$?" != 0; then
9158 AC_MSG_ERROR([failed to generate nICEr Makefiles])
9162 # Generate a JSON config file for unittest harnesses etc to read
9163 # build configuration details from in a standardized way.
9164 OS_TARGET=${OS_TARGET} \
9165 TARGET_CPU=${TARGET_CPU} \
9166 MOZ_DEBUG=${MOZ_DEBUG} \
9167 MOZ_WIDGET_TOOLKIT=${MOZ_WIDGET_TOOLKIT} \
9168 UNIVERSAL_BINARY=${UNIVERSAL_BINARY} \
9169 MOZ_CRASHREPORTER=${MOZ_CRASHREPORTER} \
9170 MOZ_APP_NAME=${MOZ_APP_NAME} \
9171 TOPSRCDIR=${_topsrcdir} \
9172 $PYTHON ${_topsrcdir}/config/writemozinfo.py ./mozinfo.json.tmp
9173 if cmp -s ./mozinfo.json.tmp ./mozinfo.json; then
9174 rm ./mozinfo.json.tmp
9176 mv -f ./mozinfo.json.tmp ./mozinfo.json
9179 # Run jemalloc configure script
9181 if test -z "$MOZ_NATIVE_JEMALLOC" -a "$MOZ_MEMORY" && test -n "$MOZ_JEMALLOC3" -o -n "$MOZ_REPLACE_MALLOC"; then
9182 ac_configure_args="$_SUBDIR_CONFIG_ARGS --build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_"
9183 if test -n "$MOZ_REPLACE_MALLOC"; then
9184 # When using replace_malloc, we always want memalign and valloc exported from jemalloc.
9185 ac_configure_args="$ac_configure_args ac_cv_func_memalign=yes"
9186 ac_configure_args="$ac_configure_args ac_cv_func_valloc=yes"
9188 if test -n "$MOZ_JEMALLOC3"; then
9189 case "${OS_ARCH}" in
9191 # We want jemalloc functions to be kept hidden on both Mac and Windows
9192 # See memory/build/mozmemory_wrap.h for details.
9193 ac_configure_args="$ac_configure_args --without-export"
9196 elif test "${OS_ARCH}" = Darwin; then
9197 # When building as a replace-malloc lib, disabling the zone allocator
9198 # forces to use pthread_atfork.
9199 ac_configure_args="$ac_configure_args --disable-zone-allocator"
9201 _MANGLE="malloc posix_memalign aligned_alloc calloc realloc free memalign valloc malloc_usable_size"
9203 if test -z "$MOZ_REPLACE_MALLOC"; then
9205 Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
9209 elif test -z "$MOZ_JEMALLOC3"; then
9211 JEMALLOC_WRAPPER=replace_
9213 if test -n "$MANGLE"; then
9215 if test -n "$_WRAP_MALLOC" -a -z "$JEMALLOC_WRAPPER"; then
9216 JEMALLOC_WRAPPER=__wrap_
9218 for mangle in ${MANGLE}; do
9219 if test -n "$MANGLED"; then
9220 MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle,$MANGLED"
9222 MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle"
9225 ac_configure_args="$ac_configure_args --with-mangling=$MANGLED"
9228 if test -z "$MOZ_TLS"; then
9229 ac_configure_args="$ac_configure_args --disable-tls"
9231 EXTRA_CFLAGS="$CFLAGS"
9232 for var in AS CC CXX CPP LD AR RANLIB STRIP CPPFLAGS EXTRA_CFLAGS LDFLAGS; do
9233 ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
9235 if test "$CROSS_COMPILE"; then
9236 ac_configure_args="$ac_configure_args je_cv_static_page_shift=12"
9238 _save_cache_file="$cache_file"
9239 cache_file=$_objdir/memory/jemalloc/src/config.cache
9241 if ! test -e memory/jemalloc; then
9242 mkdir -p memory/jemalloc
9245 AC_OUTPUT_SUBDIRS(memory/jemalloc/src)
9246 cache_file="$_save_cache_file"
9247 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9250 # Run freetype configure script
9252 if test "$MOZ_TREE_FREETYPE"; then
9253 export CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS -std=c99"
9254 export CPPFLAGS="$CPPFLAGS $MOZ_DEBUG_FLAGS"
9255 export CXXFLAGS="$CXXFLAGS $MOZ_DEBUG_FLAGS"
9256 export LDFLAGS="$LDFLAGS $MOZ_DEBUG_LDFLAGS"
9257 export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in"
9258 ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes"
9260 if ! test -e modules; then
9264 AC_OUTPUT_SUBDIRS(modules/freetype2)
9267 if test -z "$direct_nspr_config"; then
9268 dnl ========================================================
9269 dnl = Setup a nice relatively clean build environment for
9270 dnl = sub-configures.
9271 dnl ========================================================
9274 CFLAGS="$_SUBDIR_CFLAGS"
9275 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9276 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9277 LDFLAGS="$_SUBDIR_LDFLAGS"
9278 HOST_CC="$_SUBDIR_HOST_CC"
9279 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9280 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9287 # Run all configure scripts specified by a subconfigure
9288 if test -n "$_subconfigure_subdir"; then
9289 _save_ac_configure_args="$ac_configure_args"
9290 ac_configure_args="$_subconfigure_config_args"
9291 AC_OUTPUT_SUBDIRS("$_subconfigure_subdir")
9292 ac_configure_args="$_save_ac_configure_args"
9295 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9296 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9300 if test -n "$_WRAP_MALLOC"; then
9301 # Avoid doubling wrap malloc arguments
9302 _SUBDIR_CONFIG_ARGS="`echo $_SUBDIR_CONFIG_ARGS | sed -e 's/--enable-wrap-malloc *//'`"
9305 if test -z "$MOZ_NATIVE_NSPR"; then
9306 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9307 if test -z "$MOZ_DEBUG"; then
9308 ac_configure_args="$ac_configure_args --disable-debug"
9310 ac_configure_args="$ac_configure_args --enable-debug"
9312 if test "$MOZ_OPTIMIZE" = "1"; then
9313 ac_configure_args="$ac_configure_args --enable-optimize"
9314 elif test -z "$MOZ_OPTIMIZE"; then
9315 ac_configure_args="$ac_configure_args --disable-optimize"
9317 if test -n "$HAVE_64BIT_OS"; then
9318 ac_configure_args="$ac_configure_args --enable-64bit"
9320 if test -n "$USE_ARM_KUSER"; then
9321 ac_configure_args="$ac_configure_args --with-arm-kuser"
9323 ac_configure_args="$ac_configure_args $NSPR_CONFIGURE_ARGS"
9324 if test -n "$MOZ_LINKER" -a "$ac_cv_func_dladdr" = no ; then
9325 # dladdr is supported by the new linker, even when the system linker doesn't
9326 # support it. Trick nspr into using dladdr when it's not supported.
9327 _SAVE_CPPFLAGS="$CPPFLAGS"
9328 export CPPFLAGS="-include $_topsrcdir/mozglue/linker/dladdr.h $CPPFLAGS"
9330 _SAVE_LDFLAGS="$LDFLAGS"
9331 export LDFLAGS="$LDFLAGS $NSPR_LDFLAGS"
9332 AC_OUTPUT_SUBDIRS(nsprpub)
9333 LDFLAGS="$_SAVE_LDFLAGS"
9334 if test -n "$MOZ_LINKER" -a "$ac_cv_func_dladdr" = no; then
9336 CPPFLAGS="$_SAVE_CFLAGS"
9338 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9341 dnl ========================================================
9342 dnl = Setup a nice relatively clean build environment for
9343 dnl = sub-configures.
9344 dnl ========================================================
9347 CFLAGS="$_SUBDIR_CFLAGS"
9348 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9349 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9350 LDFLAGS="$_SUBDIR_LDFLAGS"
9351 HOST_CC="$_SUBDIR_HOST_CC"
9352 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9353 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9356 if test -n "$ENABLE_CLANG_PLUGIN"; then
9357 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9358 AC_OUTPUT_SUBDIRS(build/clang-plugin)
9362 # Run the SpiderMonkey 'configure' script.
9363 dist=$MOZ_BUILD_ROOT/dist
9364 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9365 ac_configure_args="$ac_configure_args --enable-threadsafe"
9366 if test "$BUILD_CTYPES"; then
9367 # Build js-ctypes on the platforms we can.
9368 ac_configure_args="$ac_configure_args --enable-ctypes"
9370 if test -z "$JS_SHARED_LIBRARY" ; then
9371 ac_configure_args="$ac_configure_args --disable-shared-js"
9373 if test -z "$MOZ_NATIVE_NSPR"; then
9374 ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9375 ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9377 ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
9378 ac_configure_args="$ac_configure_args --prefix=$dist"
9379 if test "$MOZ_MEMORY"; then
9380 ac_configure_args="$ac_configure_args --enable-jemalloc"
9382 if test -n "$MOZ_GLUE_LDFLAGS"; then
9383 export MOZ_GLUE_LDFLAGS
9385 if test -n "$MOZ_GLUE_PROGRAM_LDFLAGS"; then
9386 export MOZ_GLUE_PROGRAM_LDFLAGS
9388 if test "$MOZ_NATIVE_ZLIB" != 1 -a "$OS_ARCH" = "WINNT"; then
9391 export MOZ_NATIVE_ZLIB
9392 export MOZ_ZLIB_CFLAGS
9393 export MOZ_ZLIB_LIBS
9395 export DONT_POPULATE_VIRTUALENV=1
9397 export MOZILLA_CENTRAL_PATH=$_topsrcdir
9398 export STLPORT_CPPFLAGS
9399 export STLPORT_LDFLAGS
9401 export JS_STANDALONE=no
9403 if ! test -e js; then
9407 AC_OUTPUT_SUBDIRS(js/src)
9408 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9410 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR