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 MOZ_DEB_TIMESTAMP=`date +"%a, %d %b %Y %T %z" 2>&1`
20 AC_SUBST(MOZ_DEB_TIMESTAMP)
22 dnl ========================================================
24 dnl = Don't change the following two lines. Doing so breaks:
26 dnl = CFLAGS="-foo" ./configure
28 dnl ========================================================
30 CPPFLAGS="${CPPFLAGS=}"
31 CXXFLAGS="${CXXFLAGS=}"
33 HOST_CFLAGS="${HOST_CFLAGS=}"
34 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
35 HOST_LDFLAGS="${HOST_LDFLAGS=}"
37 dnl ========================================================
38 dnl = Preserve certain environment flags passed to configure
39 dnl = We want sub projects to receive the same flags
40 dnl = untainted by this configure script
41 dnl ========================================================
44 _SUBDIR_CFLAGS="$CFLAGS"
45 _SUBDIR_CPPFLAGS="$CPPFLAGS"
46 _SUBDIR_CXXFLAGS="$CXXFLAGS"
47 _SUBDIR_LDFLAGS="$LDFLAGS"
48 _SUBDIR_HOST_CC="$HOST_CC"
49 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
50 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
51 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
52 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
54 dnl Set the version number of the libs included with mozilla
55 dnl ========================================================
61 dnl Set the minimum version of toolkit libs used by mozilla
62 dnl ========================================================
68 WINDRES_VERSION=2.14.90
74 STARTUP_NOTIFICATION_VERSION=0.8
76 SQLITE_VERSION=3.7.15.2
80 dnl Set various checks
81 dnl ========================================================
85 dnl Initialize the Pthread test variables early so they can be
86 dnl overridden by each platform.
87 dnl ========================================================
91 dnl Do not allow a separate objdir build if a srcdir build exists.
92 dnl ==============================================================
93 _topsrcdir=`cd \`dirname $0\`; pwd`
96 if test "$_topsrcdir" != "$_objdir"
98 # Check for a couple representative files in the source tree
100 for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
101 if test -f $file; then
102 _conflict_files="$_conflict_files $file"
105 if test "$_conflict_files"; then
107 echo "* Your source tree contains these files:"
108 for file in $_conflict_files; do
112 * This indicates that you previously built in the source tree.
113 * A source tree build can confuse the separate objdir build.
115 * To clean up the source tree:
126 dnl Do not allow building if a clobber is required
127 dnl ==============================================================
128 dnl TODO Make this better, ideally this would clobber automaticially
129 if test -e $_objdir/CLOBBER; then
130 if test $_topsrcdir/CLOBBER -nt $_objdir/CLOBBER; then
132 echo " * The CLOBBER file has been updated, indicating that an incremental build"
133 echo " * since your last build will probably not work. A full build is required."
134 echo " * The change that caused this is:"
135 cat $_topsrcdir/CLOBBER | sed '/^#/d' | sed 's/^/ * /'
137 echo " * The easiest way to fix this is to manually delete your objdir:"
138 echo " * rm -rf $_objdir"
140 echo " * Or, if you know this clobber doesn't apply to you, it can be ignored with:"
141 echo " * cp '$_topsrcdir/CLOBBER' $_objdir"
147 touch $_objdir/CLOBBER
154 COMPILE_ENVIRONMENT=1
155 MOZ_ARG_DISABLE_BOOL(compile-environment,
156 [ --disable-compile-environment
157 Disable compiler/library checks.],
158 COMPILE_ENVIRONMENT= )
159 AC_SUBST(COMPILE_ENVIRONMENT)
161 MOZ_ARG_WITH_STRING(l10n-base,
162 [ --with-l10n-base=DIR path to l10n repositories],
163 L10NBASEDIR=$withval)
164 if test -n "$L10NBASEDIR"; then
165 if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
166 AC_MSG_ERROR([--with-l10n-base must specify a path])
167 elif test -d "$L10NBASEDIR"; then
168 L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
170 AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
173 AC_SUBST(L10NBASEDIR)
175 dnl Check for Perl first -- needed for win32 SDK checks
176 MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
177 if test -z "$PERL" -o "$PERL" = ":"; then
178 AC_MSG_ERROR([perl not found in \$PATH])
182 if test -n "$GAIADIR" ; then
183 AC_DEFINE(PACKAGE_GAIA)
186 MOZ_ARG_WITH_STRING(gonk,
188 location of gonk dir],
191 MOZ_ARG_WITH_STRING(gonk-toolchain-prefix,
192 [ --with-gonk-toolchain-prefix=DIR
193 prefix to gonk toolchain commands],
194 gonk_toolchain_prefix=$withval)
196 if test -n "$gonkdir" ; then
197 kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"`
198 android_source="$gonkdir"
199 ANDROID_SOURCE="$android_source"
200 ANDROID_NDK="${ANDROID_SOURCE}/ndk"
203 TOOLCHAIN_PREFIX="$gonk_toolchain_prefix"
204 AS="$gonk_toolchain_prefix"as
205 CC="$gonk_toolchain_prefix"gcc
206 CXX="$gonk_toolchain_prefix"g++
207 CPP="$gonk_toolchain_prefix"cpp
208 LD="$gonk_toolchain_prefix"ld
209 AR="$gonk_toolchain_prefix"ar
210 RANLIB="$gonk_toolchain_prefix"ranlib
211 STRIP="$gonk_toolchain_prefix"strip
212 OBJCOPY="$gonk_toolchain_prefix"objcopy
214 STLPORT_CPPFLAGS="-I$gonkdir/ndk/sources/cxx-stl/stlport/stlport/ -I$gonkdir/external/stlport/stlport/"
215 STLPORT_LIBS="-lstlport"
217 case "$target_cpu" in
226 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"
227 CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS"
228 CXXFLAGS="-mandroid -fno-short-enums -fno-exceptions -Wno-psabi $CXXFLAGS $STLPORT_CPPFLAGS"
229 dnl Add -llog by default, since we use it all over the place.
230 LIBS="$LIBS -llog $STLPORT_LIBS"
232 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"
234 dnl prevent cross compile section from using these flags as host flags
235 if test -z "$HOST_CPPFLAGS" ; then
238 if test -z "$HOST_CFLAGS" ; then
241 if test -z "$HOST_CXXFLAGS" ; then
244 if test -z "$HOST_LDFLAGS" ; then
249 AC_DEFINE(HAVE_SYS_UIO_H)
250 AC_DEFINE(HAVE_PTHREADS)
252 MOZ_CHROME_FILE_FORMAT=omni
258 *-android*|*-linuxandroid*)
259 if test -z "$ANDROID_PACKAGE_NAME" ; then
260 ANDROID_PACKAGE_NAME='org.mozilla.$(MOZ_APP_NAME)'
262 MOZ_CHROME_FILE_FORMAT=omni
266 AC_PATH_PROG(OBJCOPY,objcopy)
271 AC_SUBST(ANDROID_SOURCE)
272 AC_SUBST(ANDROID_PACKAGE_NAME)
275 dnl ========================================================
276 dnl Checks for compilers.
277 dnl ========================================================
278 dnl Set CROSS_COMPILE in the environment when running configure
279 dnl to use the cross-compile setup for now
280 dnl ========================================================
282 dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
285 if test "$COMPILE_ENVIRONMENT"; then
287 if test -n "$CROSS_COMPILE" -a "$target" != "$host"; then
288 echo "cross compiling from $host to $target"
292 _SAVE_CFLAGS="$CFLAGS"
293 _SAVE_LDFLAGS="$LDFLAGS"
295 AC_MSG_CHECKING([for host c compiler])
296 AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
297 if test -z "$HOST_CC"; then
298 AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
300 AC_MSG_RESULT([$HOST_CC])
301 AC_MSG_CHECKING([for host c++ compiler])
302 AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
303 if test -z "$HOST_CXX"; then
304 AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
306 AC_MSG_RESULT([$HOST_CXX])
308 if test -z "$HOST_CFLAGS"; then
309 HOST_CFLAGS="$CFLAGS"
311 if test -z "$HOST_CXXFLAGS"; then
312 HOST_CXXFLAGS="$CXXFLAGS"
314 if test -z "$HOST_LDFLAGS"; then
315 HOST_LDFLAGS="$LDFLAGS"
317 if test -z "$HOST_AR_FLAGS"; then
318 HOST_AR_FLAGS="$AR_FLAGS"
320 AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
321 AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
323 CFLAGS="$HOST_CFLAGS"
324 LDFLAGS="$HOST_LDFLAGS"
326 AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
327 AC_TRY_COMPILE([], [return(0);],
328 [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
329 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
332 CFLAGS="$HOST_CXXFLAGS"
334 AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
335 AC_TRY_COMPILE([], [return(0);],
336 [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
337 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
341 LDFLAGS=$_SAVE_LDFLAGS
343 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
346 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
350 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
351 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
352 MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
353 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
354 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
355 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
356 AC_DEFINE(CROSS_COMPILE)
361 # Work around the conftest.exe access problem on Windows
366 MOZ_PATH_PROGS(AS, $AS as, $CC)
367 AC_CHECK_PROGS(AR, ar, :)
368 AC_CHECK_PROGS(LD, ld, :)
369 AC_CHECK_PROGS(STRIP, strip, :)
370 AC_CHECK_PROGS(WINDRES, windres, :)
371 if test -z "$HOST_CC"; then
374 if test -z "$HOST_CFLAGS"; then
375 HOST_CFLAGS="$CFLAGS"
377 if test -z "$HOST_CXX"; then
380 if test -z "$HOST_CXXFLAGS"; then
381 HOST_CXXFLAGS="$CXXFLAGS"
383 if test -z "$HOST_LDFLAGS"; then
384 HOST_LDFLAGS="$LDFLAGS"
386 if test -z "$HOST_RANLIB"; then
387 HOST_RANLIB="$RANLIB"
389 if test -z "$HOST_AR"; then
392 if test -z "$HOST_AR_FLAGS"; then
393 HOST_AR_FLAGS="$AR_FLAGS"
397 if test -n "$MOZ_WINCONSOLE"; then
398 AC_DEFINE(MOZ_WINCONSOLE)
403 if test -n "$GNU_CC" -a -z "$CLANG_CC" ; then
404 if test "$GCC_MAJOR_VERSION" -eq 4 -a "$GCC_MINOR_VERSION" -lt 4 ||
405 test "$GCC_MAJOR_VERSION" -lt 4; then
406 AC_MSG_ERROR([Only GCC 4.4 or newer supported])
410 dnl ========================================================
411 dnl Special win32 checks
412 dnl ========================================================
414 MOZ_ARG_ENABLE_BOOL(metro,
415 [ --enable-metro Enable Windows Metro build targets],
418 if test -n "$MOZ_METRO"; then
420 # Target the Windows 8 Kit
423 # toolkit/library/makefile.in needs these, see nsDllMain.
425 CRTEXPDLLVERSION=1-1-0
427 # Target the Windows 7 SDK by default
432 AC_SUBST(CRTDLLVERSION)
433 AC_SUBST(CRTEXPDLLVERSION)
435 MOZ_ARG_WITH_STRING(windows-version,
436 [ --with-windows-version=WINSDK_TARGETVER
437 Windows SDK version to target. Lowest version
438 currently allowed is 601 (Win7), highest is 602 (Win8)],
439 WINSDK_TARGETVER=$withval)
441 # Currently only two sdk versions allowed, 601 and 602
442 case "$WINSDK_TARGETVER" in
444 MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
448 AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER)]);
454 if test "$GCC" != "yes"; then
455 # Check to see if we are really running in a msvc environemnt
457 AC_CHECK_PROGS(MIDL, midl)
459 # Make sure compilers are valid
460 CFLAGS="$CFLAGS -TC -nologo"
461 CXXFLAGS="$CXXFLAGS -TP -nologo"
464 AC_TRY_COMPILE([#include <stdio.h>],
465 [ printf("Hello World\n"); ],,
466 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
469 AC_TRY_COMPILE([#include <new.h>],
470 [ unsigned *test = new unsigned(42); ],,
471 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
475 _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
478 # Determine compiler version
479 CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
480 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
481 _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
482 _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
483 _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
484 _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
486 CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
487 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
489 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
490 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
493 if test "$_CC_MAJOR_VERSION" = "14"; then
494 dnl Require VC8SP1 or newer.
495 dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762.
496 if test "$_CC_RELEASE" -lt 50727 -o \
497 \( "$_CC_RELEASE" -eq 50727 -a "$_CC_BUILD" -lt 762 \); then
498 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.])
503 AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
504 AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
505 elif test "$_CC_MAJOR_VERSION" = "15"; then
508 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
509 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
510 elif test "$_CC_MAJOR_VERSION" = "16"; then
513 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
514 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
515 elif test "$_CC_MAJOR_VERSION" = "17"; then
518 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
519 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
521 AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
524 AC_DEFINE(HAVE_SEH_EXCEPTIONS)
526 if test -n "$WIN32_REDIST_DIR"; then
527 if test ! -d "$WIN32_REDIST_DIR"; then
528 AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
530 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
533 dnl Confirm we have the pri tools on win8 builds
534 if test -n "$MOZ_METRO"; then
535 AC_MSG_CHECKING([for makepri])
536 AC_CHECK_PROGS(MAKEPRI, makepri, "")
537 if test -z "MAKEPRI" ; then
538 AC_MSG_ERROR([makepri.exe is required for generating metro browser install components. It should be in the Win8 SDK.])
543 dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool',
544 dnl not something else like "magnetic tape manipulation utility".
545 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
546 if test -z "$MSMT_TOOL"; then
547 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
551 _MSMT_VER_FILTER='s|.*[^!-~]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
553 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
554 if test -z "$MSMANIFEST_TOOL_VERSION"; then
555 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
561 # Check linker version
562 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
563 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
564 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
565 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
571 _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
572 _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
573 _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
574 _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
575 # Add flags if necessary
576 AC_MSG_CHECKING([for midl flags])
579 if test \( "$_MIDL_MAJOR_VERSION" = "7" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" = "0499" \); then
580 # MIDL version 7.00.0499 defaults /env win64 on x64 platforms.
581 # MIDL version 7.00.0500 or later has no problem.
582 MIDL_FLAGS="${MIDL_FLAGS} -env win32"
583 AC_MSG_RESULT([need -env win32])
585 AC_MSG_RESULT([none needed])
589 MIDL_FLAGS="${MIDL_FLAGS} -env x64"
592 AC_MSG_RESULT([none needed])
596 # Identify which version of the SDK we're building with
597 # Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
599 MOZ_CHECK_HEADERS([winsdkver.h])
600 if test "$ac_cv_header_winsdkver_h" = "yes"; then
601 # Get the highest _WIN32_WINNT and NTDDI versions supported
602 # Take the higher of the two
603 # This is done because the Windows 7 beta SDK reports its
604 # NTDDI_MAXVER to be 0x06000100 instead of 0x06010000, as it should
605 AC_CACHE_CHECK(for highest Windows version supported by this SDK,
607 [cat > conftest.h <<EOF
608 #include <winsdkver.h>
609 #include <sdkddkver.h>
611 #if (NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER) > NTDDI_MAXVER)
612 #define WINSDK_MAXVER NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER)
614 #define WINSDK_MAXVER NTDDI_MAXVER
619 ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
622 MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
624 # Any SDK which doesn't have WinSDKVer.h is too old.
625 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.])
628 unset _MSVC_VER_FILTER
630 AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
634 _SAVE_CXXFLAGS="$CXXFLAGS"
635 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
636 AC_TRY_COMPILE([#include <exception>],
637 [std::_Throw(std::exception()); return 0;],
638 ac_cv_have_std__Throw="yes",
639 ac_cv_have_std__Throw="no")
640 CXXFLAGS="$_SAVE_CXXFLAGS"
644 if test "$ac_cv_have_std__Throw" = "yes"; then
645 AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
646 ac_cv_have_dllimport_exception_bug,
650 _SAVE_CXXFLAGS="$CXXFLAGS"
651 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
652 AC_TRY_LINK([#include <vector>],
653 [std::vector<int> v; return v.at(1);],
654 ac_cv_have_dllimport_exception_bug="no",
655 ac_cv_have_dllimport_exception_bug="yes")
656 CXXFLAGS="$_SAVE_CXXFLAGS"
659 if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
661 MOZ_MSVC_STL_WRAP__Throw=1
662 AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
665 AC_CACHE_CHECK(for overridable _RAISE,
670 _SAVE_CXXFLAGS="$CXXFLAGS"
671 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
672 AC_TRY_COMPILE([#include <xstddef>
674 #define _RAISE(x) externallyDefinedFunction((x).what())
677 [std::vector<int> v; return v.at(1);],
678 ac_cv_have__RAISE="no",
679 ac_cv_have__RAISE="yes")
680 CXXFLAGS="$_SAVE_CXXFLAGS"
683 if test "$ac_cv_have__RAISE" = "yes"; then
685 MOZ_MSVC_STL_WRAP__RAISE=1
686 AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
688 AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK. Please file a bug describing this error and your build configuration.])
692 if test "$WRAP_STL_INCLUDES" = "1"; then
693 STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
696 # Check w32api version
697 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
698 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
699 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
700 AC_TRY_COMPILE([#include <w32api.h>],
701 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
702 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
703 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
704 #error "test failed."
706 , [ res=yes ], [ res=no ])
707 AC_MSG_RESULT([$res])
708 if test "$res" != "yes"; then
709 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
711 # Check windres version
712 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
713 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
714 AC_MSG_RESULT([$_WINDRES_VERSION])
715 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
716 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
717 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
718 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
719 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
720 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
721 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
722 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
723 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
724 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
725 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
726 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
728 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
731 AC_CHECK_PROGS(MIDL, $target-widl widl)
732 if test -n "$MIDL"; then
735 MIDL_FLAGS="$MIDL_FLAGS --win32 -m32"
738 MIDL_FLAGS="$MIDL_FLAGS --win64 -m64"
743 MOZ_WINSDK_MAXVER=0x06020000
746 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
747 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
748 # Require OS features provided by IE 6.0 SP2 (XP SP2)
749 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0603)
751 # If the maximum version supported by this SDK is lower than the target
753 AC_MSG_CHECKING([for Windows SDK being recent enough])
754 if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
758 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.])
761 AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
762 # Definitions matching sdkddkver.h
763 AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
770 if test -n "$_WIN32_MSVC"; then
772 SKIP_COMPILER_CHECKS=1
773 SKIP_LIBRARY_CHECKS=1
775 # Since we're skipping compiler and library checks, hard-code
778 AC_DEFINE(HAVE_SETBUF)
779 AC_DEFINE(HAVE_ISATTY)
782 fi # COMPILE_ENVIRONMENT
795 AC_SUBST(WRAP_STL_INCLUDES)
796 AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
797 AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
799 dnl ========================================================
800 dnl Checks for programs.
801 dnl ========================================================
805 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
806 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
807 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
809 AC_MSG_RESULT([$_perl_version])
811 if test "$_perl_res" != 0; then
812 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
816 AC_MSG_CHECKING([for full perl installation])
817 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
819 if test "$_perl_res" != 0; then
821 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
826 MOZ_ARG_WITH_BOOL(system-ply,
827 [ --with-system-ply Use system installed python ply library],
828 [if $PYTHON -c 'import ply' 2>&5; then
831 AC_MSG_ERROR([python ply library is not found but --with-system-ply was requested])
834 AC_SUBST(MOZ_SYSTEM_PLY)
836 if test -z "$COMPILE_ENVIRONMENT"; then
837 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
839 AC_SUBST(NSINSTALL_BIN)
841 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
842 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
843 MOZ_PATH_PROGS(UNZIP, unzip)
844 if test -z "$UNZIP" -o "$UNZIP" = ":"; then
845 AC_MSG_ERROR([unzip not found in \$PATH])
847 MOZ_PATH_PROGS(ZIP, zip)
848 if test -z "$ZIP" -o "$ZIP" = ":"; then
849 AC_MSG_ERROR([zip not found in \$PATH])
851 MOZ_PATH_PROG(XARGS, xargs)
852 if test -z "$XARGS" -o "$XARGS" = ":"; then
853 AC_MSG_ERROR([xargs not found in \$PATH .])
856 MOZ_PATH_PROG(RPMBUILD, rpmbuild, :)
859 if test "$COMPILE_ENVIRONMENT"; then
861 dnl ========================================================
862 dnl = Mac OS X toolchain support
863 dnl ========================================================
865 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
866 dnl that a universal binary is being produced and MOZ_CAN_RUN_PROGRAMS
867 dnl when we can run target binaries.
868 AC_SUBST(UNIVERSAL_BINARY)
869 AC_SUBST(MOZ_CAN_RUN_PROGRAMS)
871 MOZ_ARG_WITH_STRING(unify-dist,
872 [ --with-unify-dist=dir Location of the dist directory to unify with at packaging time (Mac OS X universal build only)],
874 if test -n "$UNIVERSAL_BINARY"; then
875 if test -z "$UNIFY_DIST"; then
876 AC_MSG_ERROR([You need to provide the --with-unify-dist=dir argument when performing a universal build])
878 case "$UNIFY_DIST" in
882 UNIFY_DIST="${MOZ_BUILD_ROOT}/${UNIFY_DIST}"
888 dnl ========================================================
889 dnl Check for MacOS deployment target version
890 dnl ========================================================
892 MOZ_ARG_ENABLE_STRING(macos-target,
893 [ --enable-macos-target=VER (default=10.6)
894 Set the minimum MacOS version needed at runtime],
895 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
899 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
900 dnl Use the specified value
901 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
903 dnl No value specified on the command line or in the environment,
904 dnl use architecture minimum.
905 export MACOSX_DEPLOYMENT_TARGET=10.6
910 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
912 dnl ========================================================
913 dnl = Mac OS X SDK support
914 dnl ========================================================
917 MOZ_ARG_WITH_STRING(macos-sdk,
918 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
919 MACOS_SDK_DIR=$withval)
921 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
922 dnl NEXT_ROOT will be set and exported only if it's needed.
923 AC_SUBST(MACOS_SDK_DIR)
926 if test "$MACOS_SDK_DIR"; then
927 dnl Sync this section with the ones in NSPR and NSS.
928 dnl Changes to the cross environment here need to be accounted for in
929 dnl the libIDL checks (below) and xpidl build.
931 if test ! -d "$MACOS_SDK_DIR"; then
932 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
933 specify a valid SDK. SDKs are installed when the optional cross-development
934 tools are selected during the Xcode/Developer Tools installation.])
937 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
938 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
940 dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER.
941 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
942 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
945 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
947 AC_TRY_COMPILE([#include <new>],[],
951 AC_MSG_RESULT($result)
953 if test "$result" = "no" ; then
954 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
958 fi # COMPILE_ENVIRONMENT
960 AC_MSG_CHECKING([compiler version])
961 # Just print it so it shows up in the logs.
962 cc_version=$($CC --version)
963 AC_MSG_RESULT([$cc_version])
965 if test -n "$MAKE"; then
966 if test `echo $MAKE | grep -c make.py` != 1; then
973 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
976 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
979 if test "$GMAKE" = ":"; then
980 AC_MSG_ERROR([GNU make not found])
984 if test -z "$MAKE"; then
988 if test "$COMPILE_ENVIRONMENT"; then
994 fi # COMPILE_ENVIRONMENT
996 dnl ========================================================
997 dnl set the defaults first
998 dnl ========================================================
1001 AR_EXTRACT='$(AR) x'
1014 MOZ_USER_DIR=".mozilla"
1017 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/media/libjpeg)'
1019 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
1021 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/media/libpng)'
1023 MOZ_JS_STATIC_LIBS='$(call EXPAND_LIBNAME_PATH,js_static,$(LIBXUL_DIST)/lib)'
1024 MOZ_JS_SHARED_LIBS='$(call EXPAND_LIBNAME_PATH,mozjs,$(LIBXUL_DIST)/lib)'
1025 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core -lmozalloc'
1026 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
1027 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom -lmozalloc'
1028 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
1029 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1030 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
1032 # These are specially defined on Windows only
1035 XPCOM_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1036 XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime.$(LIB_SUFFIX)'
1039 XPCOM_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_GLUE_LDOPTS
1040 XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_STANDALONE_GLUE_LDOPTS
1046 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
1048 USE_DEPENDENT_LIBS=1
1050 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
1052 if test -n "$CROSS_COMPILE"; then
1053 OS_TARGET="${target_os}"
1054 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
1056 case "${target_os}" in
1057 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
1058 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
1059 gnu*) OS_ARCH=GNU ;;
1060 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
1061 mingw*) OS_ARCH=WINNT OS_TARGET=WINNT ;;
1062 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
1065 *-android*|*-linuxandroid*) OS_ARCH=Linux OS_TARGET=Android ;;
1068 OS_TARGET=`uname -s`
1069 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1070 OS_RELEASE=`uname -r`
1073 # Before this used `uname -m` when not cross compiling
1074 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1075 OS_TEST="${target_cpu}"
1077 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1079 #######################################################################
1080 # Master "Core Components" macros for getting the OS target #
1081 #######################################################################
1084 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1085 # cross-compilation.
1089 # Define and override various archtecture-specific variables, including
1098 case "$HOST_OS_ARCH" in
1112 if test -z "$GNU_CC"; then
1113 if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1118 if test -z "$GNU_CXX"; then
1119 if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1120 SOLARIS_SUNPRO_CXX=1
1123 AC_SUBST(SOLARIS_SUNPRO_CC)
1124 AC_SUBST(SOLARIS_SUNPRO_CXX)
1133 if test -z "$CROSS_COMPILE" ; then
1139 # If uname -s returns "Windows_NT", we assume that we are using
1140 # the uname.exe in MKS toolkit.
1142 # The -r option of MKS uname only returns the major version number.
1143 # So we need to use its -v option to get the minor version number.
1144 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1148 OS_MINOR_RELEASE=`uname -v`
1149 if test "$OS_MINOR_RELEASE" = "00"; then
1152 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1156 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1157 # the uname.exe in the MSYS tools.
1159 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1164 OS_RELEASE=`uname -v`.`uname -r`
1165 OS_TEST=${target_cpu}
1170 OS_RELEASE=`uname -v`
1173 case "${target_cpu}" in
1184 if test -z "$CROSS_COMPILE" ; then
1192 # Only set CPU_ARCH if we recognize the value of OS_TEST
1203 powerpc | ppc | rs6000)
1207 Alpha | alpha | ALPHA)
1240 if test -z "$OS_TARGET"; then
1243 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1245 dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64.
1246 dnl ===============================================================
1250 INTEL_ARCHITECTURE=1
1253 dnl Configure platform-specific CPU architecture compiler options.
1254 dnl ==============================================================
1257 dnl =================================================================
1258 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1259 dnl which is bad when cross compiling.
1260 dnl =================================================================
1261 if test "$COMPILE_ENVIRONMENT"; then
1262 configure_static_assert_macros='
1263 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1264 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1265 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1268 dnl test that the macros actually work:
1269 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1270 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1273 ac_cv_static_assertion_macros_work="yes"
1274 AC_TRY_COMPILE([$configure_static_assert_macros],
1275 [CONFIGURE_STATIC_ASSERT(1)],
1277 ac_cv_static_assertion_macros_work="no")
1278 AC_TRY_COMPILE([$configure_static_assert_macros],
1279 [CONFIGURE_STATIC_ASSERT(0)],
1280 ac_cv_static_assertion_macros_work="no",
1283 AC_TRY_COMPILE([$configure_static_assert_macros],
1284 [CONFIGURE_STATIC_ASSERT(1)],
1286 ac_cv_static_assertion_macros_work="no")
1287 AC_TRY_COMPILE([$configure_static_assert_macros],
1288 [CONFIGURE_STATIC_ASSERT(0)],
1289 ac_cv_static_assertion_macros_work="no",
1293 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1294 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1295 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1297 fi # COMPILE_ENVIRONMENT
1299 dnl ========================================================
1300 dnl Android libstdc++, placed here so it can use MOZ_ARCH
1302 dnl ========================================================
1306 dnl ========================================================
1307 dnl Suppress Clang Argument Warnings
1308 dnl ========================================================
1309 if test -n "$CLANG_CC"; then
1310 _WARNINGS_CFLAGS="-Qunused-arguments ${_WARNINGS_CFLAGS}"
1311 CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
1313 if test -n "$CLANG_CXX"; then
1314 _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
1317 dnl ========================================================
1318 dnl = Use Address Sanitizer
1319 dnl ========================================================
1320 MOZ_ARG_ENABLE_BOOL(address-sanitizer,
1321 [ --enable-address-sanitizer Enable Address Sanitizer (default=no)],
1324 if test -n "$MOZ_ASAN"; then
1330 dnl ========================================================
1331 dnl = Enable hacks required for LLVM instrumentations
1332 dnl ========================================================
1333 MOZ_ARG_ENABLE_BOOL(llvm-hacks,
1334 [ --enable-llvm-hacks Enable workarounds required for several LLVM instrumentations (default=no)],
1337 if test -n "$MOZ_LLVM_HACKS"; then
1341 AC_SUBST(MOZ_NO_WLZDEFS)
1342 AC_SUBST(MOZ_CFLAGS_NSS)
1344 dnl ========================================================
1345 dnl GNU specific defaults
1346 dnl ========================================================
1347 if test "$GNU_CC"; then
1348 # Per bug 719659 comment 2, some of the headers on ancient build machines
1349 # may require gnu89 inline semantics. But otherwise, we use C99.
1350 CFLAGS="$CFLAGS -std=gnu99 -fgnu89-inline"
1351 # FIXME: Let us build with strict aliasing. bug 414641.
1352 CFLAGS="$CFLAGS -fno-strict-aliasing"
1353 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1354 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1355 DSO_LDOPTS='-shared'
1356 if test "$GCC_USE_GNU_LD"; then
1357 # Some tools like ASan use a runtime library that is only
1358 # linked against executables, so we must allow undefined
1359 # symbols for shared objects in some cases.
1360 if test -z "$MOZ_NO_WLZDEFS"; then
1361 # Don't allow undefined symbols in libraries
1362 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1365 WARNINGS_AS_ERRORS='-Werror'
1366 # Don't treat -Wuninitialized as error b/c it has lots of false positives.
1367 WARNINGS_AS_ERRORS="$WARNINGS_AS_ERRORS -Wno-error=uninitialized"
1368 # Don't treat -Wdeprecated-declarations as error b/c we don't want our
1369 # builds held hostage when a platform-specific API is suddenly deprecated.
1370 WARNINGS_AS_ERRORS="$WARNINGS_AS_ERRORS -Wno-error=deprecated-declarations"
1372 DSO_PIC_CFLAGS='-fPIC'
1373 ASFLAGS="$ASFLAGS -fPIC"
1374 AC_MSG_CHECKING([for --noexecstack option to as])
1375 _SAVE_CFLAGS=$CFLAGS
1376 CFLAGS="$CFLAGS -Wa,--noexecstack"
1377 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
1378 [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
1379 AC_MSG_RESULT([no]))
1380 CFLAGS=$_SAVE_CFLAGS
1381 AC_MSG_CHECKING([for -z noexecstack option to ld])
1382 _SAVE_LDFLAGS=$LDFLAGS
1383 LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
1384 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
1386 LDFLAGS=$_SAVE_LDFLAGS)
1387 AC_MSG_CHECKING([for --build-id option to ld])
1388 _SAVE_LDFLAGS=$LDFLAGS
1389 LDFLAGS="$LDFLAGS -Wl,--build-id"
1390 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
1391 [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,--build-id"],
1393 LDFLAGS=$_SAVE_LDFLAGS)
1396 # Check for -mssse3 on $CC
1397 AC_MSG_CHECKING([if toolchain supports -mssse3 option])
1398 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
1399 _SAVE_CFLAGS=$CFLAGS
1400 CFLAGS="$CFLAGS -mssse3"
1401 AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
1402 [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
1403 AC_MSG_RESULT([no]))
1404 CFLAGS=$_SAVE_CFLAGS
1405 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
1407 # Check for -msse4.1 on $CC
1408 AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
1409 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
1410 _SAVE_CFLAGS=$CFLAGS
1411 CFLAGS="$CFLAGS -msse4.1"
1412 AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
1413 [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
1414 AC_MSG_RESULT([no]))
1415 CFLAGS=$_SAVE_CFLAGS
1416 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
1418 # Turn on GNU-specific warnings:
1419 # -Wall - turn on a lot of warnings
1420 # -Wpointer-arith - good to have
1421 # -Wdeclaration-after-statement - MSVC doesn't like these
1422 # -Werror=return-type - catches missing returns, zero false positives
1423 # -Wtype-limits - catches overflow bugs, few false positives
1424 # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1426 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -Wpointer-arith -Wdeclaration-after-statement"
1427 MOZ_C_SUPPORTS_WARNING(-W, error=return-type, ac_c_has_werror_return_type)
1428 MOZ_C_SUPPORTS_WARNING(-W, type-limits, ac_c_has_wtype_limits)
1429 MOZ_C_SUPPORTS_WARNING(-W, empty-body, ac_c_has_wempty_body)
1431 # Turn off the following warnings that -Wall turns on:
1432 # -Wno-unused - lots of violations in third-party code
1434 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-unused"
1436 if test -z "$INTEL_CC" -a -z "$CLANG_CC"; then
1437 # Don't use -Wcast-align with ICC or clang
1439 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1440 hppa | ia64 | sparc | arm)
1443 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1448 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1449 _USE_CPP_INCLUDE_FLAG=1
1450 ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
1452 elif test "$SOLARIS_SUNPRO_CC"; then
1454 if test "$CPU_ARCH" = "sparc"; then
1455 # for Sun Studio on Solaris/SPARC
1456 DSO_PIC_CFLAGS='-xcode=pic32'
1458 DSO_PIC_CFLAGS='-KPIC'
1460 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1462 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1463 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1465 DSO_LDOPTS='-shared'
1466 if test "$GNU_LD"; then
1467 # Don't allow undefined symbols in libraries
1468 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1472 DSO_PIC_CFLAGS='-KPIC'
1473 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1476 if test "$GNU_CXX"; then
1477 # FIXME: Let us build with strict aliasing. bug 414641.
1478 CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
1480 # Turn on GNU-specific warnings:
1481 # -Wall - turn on a lot of warnings
1482 # -Wpointer-arith - good to have
1483 # -Woverloaded-virtual - ???
1484 # -Werror=return-type - catches missing returns, zero false positives
1485 # -Wtype-limits - catches overflow bugs, few false positives
1486 # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1488 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual"
1489 MOZ_CXX_SUPPORTS_WARNING(-W, error=return-type, ac_cxx_has_werror_return_type)
1490 MOZ_CXX_SUPPORTS_WARNING(-W, type-limits, ac_cxx_has_wtype_limits)
1491 MOZ_CXX_SUPPORTS_WARNING(-W, empty-body, ac_cxx_has_wempty_body)
1493 # Turn off the following warnings that -Wall turns on:
1494 # -Wno-invalid-offsetof - we use offsetof on non-POD types frequently
1496 MOZ_CXX_SUPPORTS_WARNING(-Wno-, invalid-offsetof, ac_cxx_has_wno_invalid_offsetof)
1498 if test -z "$INTEL_CXX" -a -z "$CLANG_CXX"; then
1499 # Don't use -Wcast-align with ICC or clang
1501 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1502 hppa | ia64 | sparc | arm)
1505 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1510 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1511 _USE_CPP_INCLUDE_FLAG=1
1513 # Recent clang and gcc support C++11 deleted functions without warnings if
1514 # compiling with -std=c++0x or -std=gnu++0x (or c++11 or gnu++11 in very new
1515 # versions). We can't use -std=c++0x yet, so gcc's support must remain
1516 # unused. But clang's warning can be disabled, so when compiling with clang
1517 # we use it to opt out of the warning, enabling (macro-encapsulated) use of
1518 # deleted function syntax.
1519 if test "$CLANG_CXX"; then
1520 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-c++0x-extensions"
1521 MOZ_CXX_SUPPORTS_WARNING(-Wno-, extended-offsetof, ac_cxx_has_wno_extended_offsetof)
1525 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1528 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1529 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1530 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1531 dnl normal behavior.
1532 dnl ========================================================
1534 MKSHLIB_UNFORCE_ALL=
1536 if test "$COMPILE_ENVIRONMENT"; then
1537 if test "$GNU_CC"; then
1538 AC_MSG_CHECKING(whether ld has archive extraction flags)
1539 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1540 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1541 ac_cv_mkshlib_force_and_unforce="no"
1542 exec 3<&0 <<LOOP_INPUT
1543 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1544 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1545 force="-Wl,-all"; unforce="-Wl,-none"
1552 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1555 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1557 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1561 eval $ac_cv_mkshlib_force_and_unforce
1562 MKSHLIB_FORCE_ALL=$force
1563 MKSHLIB_UNFORCE_ALL=$unforce
1566 fi # COMPILE_ENVIRONMENT
1568 dnl ========================================================
1569 dnl Checking for 64-bit OS
1570 dnl ========================================================
1571 if test "$COMPILE_ENVIRONMENT"; then
1574 AC_MSG_CHECKING(for 64-bit OS)
1575 AC_TRY_COMPILE([$configure_static_assert_macros],
1576 [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1577 result="yes", result="no")
1578 AC_MSG_RESULT("$result")
1579 if test "$result" = "yes"; then
1580 AC_DEFINE(HAVE_64BIT_OS)
1583 AC_SUBST(HAVE_64BIT_OS)
1585 fi # COMPILE_ENVIRONMENT
1587 dnl ========================================================
1588 dnl Enable high-memory support on OS/2 by default.
1589 dnl ========================================================
1590 MOZ_OS2_HIGH_MEMORY=1
1591 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1592 [ --disable-os2-high-mem Disable high-memory support on OS/2],
1593 MOZ_OS2_HIGH_MEMORY=,
1594 MOZ_OS2_HIGH_MEMORY=1 )
1595 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1597 dnl ========================================================
1598 dnl = Use profiling compile flags
1599 dnl ========================================================
1600 MOZ_ARG_ENABLE_BOOL(profiling,
1601 [ --enable-profiling Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1605 # For profiling builds keep the symbol information
1606 if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then
1607 case "$OS_TARGET" in
1608 Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
1609 STRIP_FLAGS="--strip-debug"
1614 dnl ========================================================
1615 dnl = Use incremental GC
1616 dnl ========================================================
1618 MOZ_ARG_DISABLE_BOOL(gcincremental,
1619 [ --disable-gcincremental Disable incremental GC],
1621 if test -n "$JSGC_INCREMENTAL"; then
1622 AC_DEFINE(JSGC_INCREMENTAL)
1625 dnl ========================================================
1626 dnl = Use generational GC
1627 dnl ========================================================
1628 MOZ_ARG_ENABLE_BOOL(gcgenerational,
1629 [ --enable-gcgenerational Enable generational GC],
1630 JSGC_GENERATIONAL=1,
1631 JSGC_GENERATIONAL= )
1632 if test -n "$JSGC_GENERATIONAL"; then
1633 AC_DEFINE(JSGC_GENERATIONAL)
1636 dnl ========================================================
1637 dnl = Perform moving GC stack rooting analysis
1638 dnl ========================================================
1639 MOZ_ARG_ENABLE_BOOL(root-analysis,
1640 [ --enable-root-analysis Enable moving GC stack root analysis],
1641 JSGC_ROOT_ANALYSIS=1,
1642 JSGC_ROOT_ANALYSIS= )
1643 if test -n "$JSGC_ROOT_ANALYSIS"; then
1644 AC_DEFINE(JSGC_ROOT_ANALYSIS)
1647 dnl ========================================================
1648 dnl = Use exact stack rooting for GC
1649 dnl ========================================================
1650 MOZ_ARG_ENABLE_BOOL(exact-rooting,
1651 [ --enable-exact-rooting Enable use of exact stack roots for GC],
1652 JSGC_USE_EXACT_ROOTING=1,
1653 JSGC_USE_EXACT_ROOTING= )
1654 if test -n "$JSGC_USE_EXACT_ROOTING"; then
1655 AC_DEFINE(JSGC_USE_EXACT_ROOTING)
1658 dnl ========================================================
1660 dnl ========================================================
1661 MOZ_ARG_ENABLE_BOOL(valgrind,
1662 [ --enable-valgrind Enable Valgrind integration hooks (default=no)],
1665 if test -n "$MOZ_VALGRIND"; then
1666 MOZ_CHECK_HEADER([valgrind/valgrind.h], [],
1668 [--enable-valgrind specified but Valgrind is not installed]))
1669 AC_DEFINE(MOZ_VALGRIND)
1671 AC_SUBST(MOZ_VALGRIND)
1673 dnl ========================================================
1675 dnl ========================================================
1676 MOZ_ARG_ENABLE_BOOL(jprof,
1677 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.],
1680 if test -n "$MOZ_JPROF"; then
1682 AC_DEFINE(MOZ_JPROF)
1685 dnl ========================================================
1687 dnl ========================================================
1688 MOZ_ENABLE_PROFILER_SPS=1
1690 case "${OS_TARGET}" in
1692 case "${CPU_ARCH}" in
1695 MOZ_ENABLE_PROFILER_SPS=
1699 case "${CPU_ARCH}" in
1702 MOZ_ENABLE_PROFILER_SPS=
1707 MOZ_ENABLE_PROFILER_SPS=
1711 if test -n "$MOZ_ENABLE_PROFILER_SPS"; then
1712 AC_DEFINE(MOZ_ENABLE_PROFILER_SPS)
1715 dnl ========================================================
1717 dnl ========================================================
1718 MOZ_ARG_ENABLE_BOOL(shark,
1719 [ --enable-shark Enable shark remote profiling. Implies --enable-profiling.],
1722 if test -n "$MOZ_SHARK"; then
1724 AC_DEFINE(MOZ_SHARK)
1727 dnl ========================================================
1729 dnl ========================================================
1730 MOZ_ARG_ENABLE_BOOL(callgrind,
1731 [ --enable-callgrind Enable callgrind profiling. Implies --enable-profiling.],
1734 if test -n "$MOZ_CALLGRIND"; then
1736 AC_DEFINE(MOZ_CALLGRIND)
1739 dnl ========================================================
1741 dnl ========================================================
1742 MOZ_ARG_ENABLE_BOOL(vtune,
1743 [ --enable-vtune Enable vtune profiling. Implies --enable-profiling.],
1746 if test -n "$MOZ_VTUNE"; then
1748 AC_DEFINE(MOZ_VTUNE)
1751 dnl ========================================================
1753 dnl ========================================================
1754 if test -n "$MOZ_PROFILING"; then
1755 AC_DEFINE(MOZ_PROFILING)
1758 dnl ========================================================
1759 dnl System overrides of the defaults for host
1760 dnl ========================================================
1763 if test -n "$_WIN32_MSVC"; then
1765 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1766 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1767 HOST_RANLIB='echo ranlib'
1769 HOST_CFLAGS="$HOST_CFLAGS -mwindows"
1771 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11 -D_CRT_SECURE_NO_WARNINGS"
1772 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1773 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1774 HOST_BIN_SUFFIX=.exe
1777 PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1781 case "${host_cpu}" in
1783 if test -n "$_WIN32_MSVC"; then
1784 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
1788 if test -n "$_WIN32_MSVC"; then
1789 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
1791 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1797 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1798 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1799 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1802 *-linux*|*-kfreebsd*-gnu|*-gnu*)
1803 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1804 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1805 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1809 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1810 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1811 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1812 HOST_BIN_SUFFIX=.exe
1817 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1818 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1822 dnl Check for using a custom <stdint.h> implementation
1823 dnl ========================================================
1824 AC_MSG_CHECKING(for custom <stdint.h> implementation)
1825 if test "$MOZ_CUSTOM_STDINT_H"; then
1826 AC_DEFINE_UNQUOTED(MOZ_CUSTOM_STDINT_H, "$MOZ_CUSTOM_STDINT_H")
1827 AC_MSG_RESULT(using $MOZ_CUSTOM_STDINT_H)
1829 AC_MSG_RESULT(none specified)
1832 dnl Get mozilla version from central milestone file
1833 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1834 MOZILLA_UAVERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir -uaversion`
1836 dnl Get version of various core apps from the version files.
1837 FIREFOX_VERSION=`cat $_topsrcdir/browser/config/version.txt`
1839 if test -z "$FIREFOX_VERSION"; then
1840 AC_MSG_ERROR([FIREFOX_VERSION is unexpectedly blank.])
1843 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1844 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1845 AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION")
1847 MOZ_DOING_LTO(lto_is_enabled)
1849 dnl ========================================================
1850 dnl System overrides of the defaults for target
1851 dnl ========================================================
1856 if test ! "$GNU_CC"; then
1857 if test ! "$HAVE_64BIT_OS"; then
1858 # Compiling with Visual Age C++ object model compat is the
1859 # default. To compile with object model ibm, add
1860 # AIX_OBJMODEL=ibm to .mozconfig.
1861 if test "$AIX_OBJMODEL" = "ibm"; then
1862 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1869 AC_SUBST(AIX_OBJMODEL)
1870 DSO_LDOPTS='-qmkshrobj=1'
1871 DSO_CFLAGS='-qflag=w:w'
1873 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1875 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1876 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1877 if test "$COMPILE_ENVIRONMENT"; then
1880 AC_MSG_CHECKING([for IBM XLC/C++ compiler version >= 9.0.0.7])
1882 [#if (__IBMCPP__ < 900)
1883 #error "Bad compiler"
1885 _BAD_COMPILER=,_BAD_COMPILER=1)
1886 if test -n "$_BAD_COMPILER"; then
1888 AC_MSG_ERROR([IBM XLC/C++ 9.0.0.7 or higher is required to build.])
1890 AC_MSG_RESULT([yes])
1893 TARGET_COMPILER_ABI="ibmc"
1894 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1895 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1898 case "${target_os}" in
1903 if test "$COMPILE_ENVIRONMENT"; then
1904 MOZ_CHECK_HEADERS(sys/inttypes.h)
1906 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1910 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1911 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1912 MOZ_OPTIMIZE_FLAGS="-O3"
1913 # Statically disable jemalloc on 10.5 and 32-bit 10.6. See bug 702250.
1914 if test "$HAVE_64BIT_OS"; then
1919 STRIP_FLAGS="$STRIP_FLAGS -x -S"
1920 # Check whether we're targeting OS X or iOS
1921 AC_CACHE_CHECK(for iOS target,
1923 [AC_TRY_COMPILE([#include <TargetConditionals.h>
1924 #if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
1928 ac_cv_ios_target="yes",
1929 ac_cv_ios_target="no")])
1930 if test "$ac_cv_ios_target" = "yes"; then
1932 AC_DEFINE(XP_DARWIN)
1933 _PLATFORM_DEFAULT_TOOLKIT='cairo-uikit'
1935 AC_DEFINE(XP_MACOSX)
1936 AC_DEFINE(XP_DARWIN)
1937 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1938 # The ExceptionHandling framework is needed for Objective-C exception
1939 # logging code in nsObjCExceptions.h. Currently we only use that in debug
1941 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
1943 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1946 if test "x$lto_is_enabled" = "xyes"; then
1947 echo "Skipping -dead_strip because lto is enabled."
1948 dnl DTrace and -dead_strip don't interact well. See bug 403132.
1949 dnl ===================================================================
1950 elif test "x$enable_dtrace" = "xyes"; then
1951 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1953 dnl check for the presence of the -dead_strip linker flag
1954 AC_MSG_CHECKING([for -dead_strip option to ld])
1955 _SAVE_LDFLAGS=$LDFLAGS
1956 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1957 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1958 if test -n "$_HAVE_DEAD_STRIP" ; then
1959 AC_MSG_RESULT([yes])
1960 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1965 LDFLAGS=$_SAVE_LDFLAGS
1968 dnl With newer linkers we need to pass -allow_heap_execute because of
1969 dnl Microsoft Silverlight (5.1.10411.0 at least).
1970 AC_MSG_CHECKING([for -allow_heap_execute option to ld])
1971 _SAVE_LDFLAGS=$LDFLAGS
1972 LDFLAGS="$LDFLAGS -Wl,-allow_heap_execute"
1973 AC_TRY_LINK(,[return 0;],_HAVE_ALLOW_HEAP_EXECUTE=1,
1974 _HAVE_ALLOW_HEAP_EXECUTE=)
1975 if test -n "$_HAVE_ALLOW_HEAP_EXECUTE" ; then
1976 AC_MSG_RESULT([yes])
1977 MOZ_ALLOW_HEAP_EXECUTE_FLAGS="-Wl,-allow_heap_execute"
1981 LDFLAGS=$_SAVE_LDFLAGS
1983 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1988 if test ! "$GNU_CC"; then
1992 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
1993 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
1994 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1997 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1998 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2001 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2002 AC_DEFINE(_LARGEFILE64_SOURCE)
2007 if test ! "$GNU_CC"; then
2008 DSO_LDOPTS='-b -Wl,+s'
2011 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
2012 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
2013 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2015 DSO_LDOPTS='-b -E +s'
2016 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2017 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2019 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
2020 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2023 *-android*|*-linuxandroid*)
2024 AC_DEFINE(NO_PW_GECOS)
2026 if test -n "$gonkdir"; then
2027 _PLATFORM_DEFAULT_TOOLKIT=cairo-gonk
2032 _PLATFORM_DEFAULT_TOOLKIT=cairo-android
2035 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2037 MOZ_GFX_OPTIMIZE_MOBILE=1
2038 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions"
2042 # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
2043 # Similarly for GNU_CXX and INTEL_CXX.
2044 if test "$INTEL_CC" -o "$INTEL_CXX"; then
2045 # -Os has been broken on Intel's C/C++ compilers for quite a
2046 # while; Intel recommends against using it.
2047 MOZ_OPTIMIZE_FLAGS="-O2"
2048 MOZ_DEBUG_FLAGS="-g"
2049 elif test "$GNU_CC" -o "$GNU_CXX"; then
2050 case $GCC_VERSION in
2052 # -Os is broken on gcc 4.5.x we need to tweak it to get good results.
2053 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
2055 MOZ_PGO_OPTIMIZE_FLAGS="-O3"
2056 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks $MOZ_OPTIMIZE_SIZE_TWEAK"
2057 MOZ_DEBUG_FLAGS="-g"
2060 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2064 case "${target_cpu}" in
2066 CFLAGS="$CFLAGS -mieee"
2067 CXXFLAGS="$CXXFLAGS -mieee"
2073 MOZ_DEBUG_FLAGS="-g" # We want inlining
2077 if test -z "$MC"; then
2087 # certain versions of cygwin's makedepend barf on the
2088 # #include <string> vs -I./dist/include/string issue so don't use it
2089 if test -n "$GNU_CC"; then
2091 CXX="$CXX -mwindows"
2092 CPP="$CPP -mwindows"
2093 CFLAGS="$CFLAGS -mms-bitfields"
2094 CXXFLAGS="$CXXFLAGS -mms-bitfields"
2095 DSO_LDOPTS='-shared'
2096 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2097 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2099 # Use static libgcc and libstdc++
2100 LDFLAGS="$LDFLAGS -static-libgcc -static-libstdc++"
2101 # Use temp file for windres (bug 213281)
2102 RCFLAGS='-O coff --use-temp-file'
2103 # mingw doesn't require kernel32, user32, and advapi32 explicitly
2104 LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32 -lnetapi32"
2106 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core -lmozalloc'
2107 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom -lmozalloc'
2109 IMPORT_LIB_SUFFIX=dll.a
2111 # We use mix of both POSIX and Win32 printf format across the tree, so format
2112 # warnings are useless on mingw.
2113 MOZ_C_SUPPORTS_WARNING(-Wno-, format, ac_c_has_wno_format)
2114 MOZ_CXX_SUPPORTS_WARNING(-Wno-, format, ac_cxx_has_wno_format)
2116 TARGET_COMPILER_ABI=msvc
2120 if test "$AS_BIN"; then
2121 AS="$(basename "$AS_BIN")"
2124 AR_FLAGS='-NOLOGO -OUT:"$@"'
2126 RANLIB='echo not_ranlib'
2127 STRIP='echo not_strip'
2138 IMPORT_LIB_SUFFIX=lib
2139 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2140 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2142 MKSHLIB_UNFORCE_ALL=
2143 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2144 _USE_CPP_INCLUDE_FLAG=1
2145 _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2146 _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2147 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2148 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2149 # MSVC warning C4345 warns of newly conformant behavior as of VS2003.
2150 # MSVC warning C4351 warns of newly conformant behavior as of VS2005.
2151 # MSVC warning C4482 warns when an enum value is refered specifing the
2152 # name of the enum itself. This behavior is allowed in C++11, and the
2153 # warning has been removed in VS2012.
2154 # MSVC warning C4800 warns when a value is implicitly cast to bool,
2155 # because this also forces narrowing to a single byte, which can be a
2156 # perf hit. But this matters so little in practice (and often we want
2157 # that behavior) that it's better to turn it off.
2158 # MSVC warning C4819 warns some UTF-8 characters (e.g. copyright sign)
2159 # on non-Western system locales even if it is in a comment.
2160 # khuey says we can safely ignore MSVC warning C4251
2161 CFLAGS="$CFLAGS -wd4819"
2162 CXXFLAGS="$CXXFLAGS -wd4251 -wd4345 -wd4351 -wd4482 -wd4800 -wd4819"
2163 # make 'foo == bar;' error out
2164 CFLAGS="$CFLAGS -we4553"
2165 CXXFLAGS="$CXXFLAGS -we4553"
2166 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib netapi32.lib"
2167 MOZ_DEBUG_FLAGS='-Zi'
2168 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2169 WARNINGS_AS_ERRORS='-WX'
2170 MOZ_OPTIMIZE_FLAGS='-O1'
2172 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2173 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2174 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2175 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2176 LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT"
2177 dnl For profile-guided optimization
2178 PROFILE_GEN_CFLAGS="-GL"
2179 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2180 dnl XXX: PGO builds can fail with warnings treated as errors,
2181 dnl specifically "no profile data available" appears to be
2182 dnl treated as an error sometimes. This might be a consequence
2183 dnl of using WARNINGS_AS_ERRORS in some modules, combined
2184 dnl with the linker doing most of the work in the whole-program
2185 dnl optimization/PGO case. I think it's probably a compiler bug,
2186 dnl but we work around it here.
2187 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2188 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2189 dnl Probably also a compiler bug, but what can you do?
2190 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2191 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2192 if test "$_MSC_VER" -ge 1500; then
2193 dnl VS2008 or later supports SSSE3
2194 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
2195 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
2198 AC_DEFINE(HAVE_SNPRINTF)
2203 AC_DEFINE(HW_THREADS)
2204 AC_DEFINE(STDC_HEADERS)
2205 AC_DEFINE(NEW_H, <new>)
2206 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2207 TARGET_MD_ARCH=win32
2208 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2210 MOZ_USER_DIR="Mozilla"
2212 dnl Hardcode to win95 for now - cls
2213 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2215 dnl set NO_X11 defines here as the general check is skipped on win32
2221 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2222 L10NBASEDIR=`cd $L10NBASEDIR && pwd -W`
2228 if test -z "$MOZ_TOOLS"; then
2229 AC_MSG_ERROR([MOZ_TOOLS is not set])
2231 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2232 if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
2233 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2235 MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2236 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2237 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2244 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.])
2250 if test "$HAVE_64BIT_OS"; then
2251 AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2254 if test -n "$GNU_CC"; then
2255 CFLAGS="$CFLAGS -mstackrealign -fno-keep-inline-dllexport"
2256 CXXFLAGS="$CXXFLAGS -mstackrealign -fno-keep-inline-dllexport"
2257 LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup"
2259 AC_DEFINE(HAVE_STDCALL)
2260 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
2261 LDFLAGS="$LDFLAGS -SAFESEH"
2267 if test -n "$_WIN32_MSVC"; then
2268 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
2273 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2277 if test "$HAVE_64BIT_OS"; then
2284 CFLAGS="$CFLAGS -Dunix"
2285 CXXFLAGS="$CXXFLAGS -Dunix"
2286 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2288 DSO_PIC_CFLAGS='-fPIC -DPIC'
2289 DSO_LDOPTS='-shared'
2290 BIN_FLAGS='-Wl,--export-dynamic'
2292 DSO_PIC_CFLAGS='-fPIC -DPIC'
2293 DLL_SUFFIX=".so.1.0"
2294 DSO_LDOPTS='-shared'
2296 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2297 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2298 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2299 if test "$LIBRUNPATH"; then
2300 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2302 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2303 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2307 if test "$SO_VERSION"; then
2308 DLL_SUFFIX=".so.$SO_VERSION"
2310 DLL_SUFFIX=".so.1.0"
2312 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib -Wl,-rpath-link,$(if $(X11BASE),$(X11BASE),/usr/X11R6)/lib'
2314 DSO_PIC_CFLAGS='-fPIC'
2315 DSO_LDOPTS='-shared -fPIC'
2316 if test "$LIBRUNPATH"; then
2317 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2322 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2323 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2326 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2327 AC_DEFINE(TCPV40HDRS)
2333 IMPORT_LIB_SUFFIX=lib
2337 CFLAGS="$CFLAGS -Zomf"
2338 CXXFLAGS="$CXXFLAGS -Zomf"
2340 BIN_FLAGS='-Zlinker /ST:0x100000'
2344 WARNINGS_AS_ERRORS='-Werror'
2345 MOZ_DEBUG_FLAGS="-g -fno-inline"
2346 MOZ_OPTIMIZE_FLAGS="-O2"
2347 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2348 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2349 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2351 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2355 MOZ_USER_DIR="Mozilla"
2358 STRIP_FLAGS="/yua /ydd /yxd /ynl /anp /b- /cs+ /d /i- /ml1 /mr2 /mf2 /r+ /u+ /x- /zs:0 /zx /zd"
2360 if test "$MOZTOOLS"; then
2361 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2363 AC_MSG_ERROR([MOZTOOLS is not set])
2365 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2366 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2367 LDFLAGS="$LDFLAGS -Zhigh-mem"
2368 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2369 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2372 # GCC for OS/2 currently predefines these, but we don't want them
2373 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2374 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2376 AC_CACHE_CHECK(for __declspec(dllexport),
2378 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2380 ac_os2_declspec="yes",
2381 ac_os2_declspec="no")])
2382 if test "$ac_os2_declspec" != "yes"; then
2383 AC_MSG_ERROR([Compiler does not support __declspec(dllexport), install GCC-4.3.2 or newer])
2389 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2391 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2392 # libraries one level up (e.g. libnspr4.so)
2393 if test "$SOLARIS_SUNPRO_CC"; then
2394 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
2395 LIBS="-lCrun -lCstd -lc $LIBS"
2396 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2397 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
2398 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
2399 LDFLAGS="-xildoff $LDFLAGS"
2400 if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
2401 _SAVE_LDFLAGS=$LDFLAGS
2402 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2403 AC_TRY_LINK([#include <stdio.h>],
2404 [printf("Hello World\n");],
2406 [LDFLAGS=$_SAVE_LDFLAGS])
2408 MOZ_OPTIMIZE_FLAGS="-xO4"
2409 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2410 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2411 MKSHLIB_FORCE_ALL='-z allextract'
2412 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2419 AS='/usr/ccs/bin/as'
2420 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2422 TARGET_COMPILER_ABI="sunc"
2423 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2424 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2425 AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2429 [#if (__SUNPRO_CC < 0x590)
2432 _BAD_COMPILER=,_BAD_COMPILER=1)
2433 if test -n "$_BAD_COMPILER"; then
2435 AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2440 [#if (__SUNPRO_CC >= 0x5100)
2441 #error "Sun C++ 5.10 or above"
2443 _ABOVE_SS12U1=,_ABOVE_SS12U1=1)
2444 if test "$_ABOVE_SS12U1"; then
2446 CXXFLAGS="$CXXFLAGS -xannotate=no"
2448 AC_MSG_RESULT([$_res])
2451 LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
2453 MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
2454 MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
2455 ASFLAGS="$ASFLAGS -fPIC"
2456 DSO_LDOPTS='-shared'
2457 WARNINGS_AS_ERRORS='-Werror'
2459 _WARNINGS_CXXFLAGS=''
2460 if test "$OS_RELEASE" = "5.3"; then
2461 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2464 if test "$OS_RELEASE" = "5.5.1"; then
2465 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2470 DSO_LDOPTS='-Bdynamic'
2471 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2472 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2474 AC_DEFINE(SPRINTF_RETURNS_STRING)
2475 case "$(target_os)" in
2477 DLL_SUFFIX='.so.1.0'
2483 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2488 AC_SUBST(MOZ_LINKER)
2489 if test -n "$MOZ_LINKER"; then
2490 AC_DEFINE(MOZ_LINKER)
2492 AC_SUBST(MOZ_ENABLE_SZIP)
2494 dnl Only one oddball right now (QNX), but this gives us flexibility
2495 dnl if any other platforms need to override this in the future.
2496 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2498 dnl ========================================================
2499 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2500 dnl by now will not have any way to link most binaries (tests
2501 dnl as well as viewer, apprunner, etc.), because some symbols
2502 dnl will be left out of the "composite" .so's by ld as unneeded.
2503 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2504 dnl they can link in the static libs that provide the missing
2506 dnl ========================================================
2507 NO_LD_ARCHIVE_FLAGS=
2508 if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
2509 NO_LD_ARCHIVE_FLAGS=1
2513 NO_LD_ARCHIVE_FLAGS=
2516 NO_LD_ARCHIVE_FLAGS=
2519 if test -z "$GNU_CC"; then
2520 NO_LD_ARCHIVE_FLAGS=
2524 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2526 dnl ========================================================
2527 dnl = Flags to strip unused symbols from .so components and
2528 dnl = to export jemalloc symbols when linking a program
2529 dnl ========================================================
2531 *-linux*|*-kfreebsd*-gnu|*-gnu*)
2532 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2535 if test -z "$GNU_CC"; then
2536 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2538 if test -z "$GCC_USE_GNU_LD"; then
2539 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2541 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2546 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2549 if test -n "$GNU_CC"; then
2550 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2555 if test -z "$COMPILE_ENVIRONMENT"; then
2556 SKIP_COMPILER_CHECKS=1
2557 SKIP_LIBRARY_CHECKS=1
2561 if test -z "$SKIP_COMPILER_CHECKS"; then
2562 dnl Checks for typedefs, structures, and compiler characteristics.
2563 dnl ========================================================
2571 AC_MSG_CHECKING(for __stdcall)
2572 AC_CACHE_VAL(ac_cv___stdcall,
2573 [AC_TRY_COMPILE([template <typename Method> struct foo;
2574 template <> struct foo<void (*)()> {};
2575 template <> struct foo<void (__stdcall*)()> {};],
2577 [ac_cv___stdcall=true],
2578 [ac_cv___stdcall=false])])
2579 if test "$ac_cv___stdcall" = true ; then
2580 AC_DEFINE(HAVE_STDCALL)
2586 AC_MSG_CHECKING(for ssize_t)
2587 AC_CACHE_VAL(ac_cv_type_ssize_t,
2588 [AC_TRY_COMPILE([#include <stdio.h>
2589 #include <sys/types.h>],
2591 [ac_cv_type_ssize_t=true],
2592 [ac_cv_type_ssize_t=false])])
2593 if test "$ac_cv_type_ssize_t" = true ; then
2594 AC_DEFINE(HAVE_SSIZE_T)
2599 AC_STRUCT_ST_BLKSIZE
2600 AC_MSG_CHECKING(for siginfo_t)
2601 AC_CACHE_VAL(ac_cv_siginfo_t,
2602 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2603 #include <signal.h>],
2605 [ac_cv_siginfo_t=true],
2606 [ac_cv_siginfo_t=false])])
2607 if test "$ac_cv_siginfo_t" = true ; then
2608 AC_DEFINE(HAVE_SIGINFO_T)
2614 dnl Check for int64, uint, and uint_t.
2615 dnl ========================================================
2616 AC_MSG_CHECKING(for int64)
2617 AC_CACHE_VAL(ac_cv_int64,
2618 [AC_TRY_COMPILE([#include <stdio.h>
2619 #include <sys/types.h>],
2622 [ac_cv_int64=false])])
2623 if test "$ac_cv_int64" = true ; then
2624 AC_DEFINE(HAVE_INT64)
2629 AC_MSG_CHECKING(for uint)
2630 AC_CACHE_VAL(ac_cv_uint,
2631 [AC_TRY_COMPILE([#include <stdio.h>
2632 #include <sys/types.h>],
2635 [ac_cv_uint=false])])
2636 if test "$ac_cv_uint" = true ; then
2637 AC_DEFINE(HAVE_UINT)
2642 AC_MSG_CHECKING(for uint_t)
2643 AC_CACHE_VAL(ac_cv_uint_t,
2644 [AC_TRY_COMPILE([#include <stdio.h>
2645 #include <sys/types.h>],
2647 [ac_cv_uint_t=true],
2648 [ac_cv_uint_t=false])])
2649 if test "$ac_cv_uint_t" = true ; then
2650 AC_DEFINE(HAVE_UINT_T)
2656 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2657 dnl are defined when compiling C++ but not C. Since the result of this
2658 dnl test is used only in C++, do it in C++.
2661 AC_MSG_CHECKING(for uname.domainname)
2662 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2663 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2664 [ struct utsname *res; char *domain;
2665 (void)uname(res); if (res != 0) { domain = res->domainname; } ],
2666 [ac_cv_have_uname_domainname_field=true],
2667 [ac_cv_have_uname_domainname_field=false])])
2669 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2670 AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2676 AC_MSG_CHECKING(for uname.__domainname)
2677 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2678 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2679 [ struct utsname *res; char *domain;
2680 (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
2681 [ac_cv_have_uname_us_domainname_field=true],
2682 [ac_cv_have_uname_us_domainname_field=false])])
2684 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2685 AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2691 dnl Check whether we can use gcc's c++0x mode
2694 if test "$GNU_CXX"; then
2695 _SAVE_CXXFLAGS=$CXXFLAGS
2696 CXXFLAGS="$CXXFLAGS -std=gnu++0x"
2698 AC_CACHE_CHECK(for gcc c++0x headers bug without rtti,
2699 ac_cv_cxx0x_headers_bug,
2700 [AC_TRY_COMPILE([#include <memory>], [],
2701 ac_cv_cxx0x_headers_bug="no",
2702 ac_cv_cxx0x_headers_bug="yes")])
2703 CXXFLAGS="$_SAVE_CXXFLAGS"
2704 if test "$ac_cv_cxx0x_headers_bug" = "no"; then
2705 CXXFLAGS="$CXXFLAGS -std=gnu++0x"
2709 dnl Check for usable char16_t (2 bytes, unsigned)
2710 dnl (we might not need the unsignedness check anymore)
2711 AC_CACHE_CHECK(for usable char16_t (2 bytes, unsigned),
2712 ac_cv_have_usable_char16_t,
2713 [AC_TRY_COMPILE([$configure_static_assert_macros],
2714 [CONFIGURE_STATIC_ASSERT(sizeof(char16_t) == 2);
2715 CONFIGURE_STATIC_ASSERT(char16_t(-1) > char16_t(0));
2716 CONFIGURE_STATIC_ASSERT(sizeof((u"hello")[0]) == 2);
2717 CONFIGURE_STATIC_ASSERT(sizeof(u'a') == 2);
2718 CONFIGURE_STATIC_ASSERT(u'\xFFFF' > u'\x0')],
2719 ac_cv_have_usable_char16_t="yes",
2720 ac_cv_have_usable_char16_t="no")])
2721 if test "$ac_cv_have_usable_char16_t" = "yes"; then
2722 AC_DEFINE(HAVE_CPP_CHAR16_T)
2724 elif test "$GNU_CXX"; then
2725 CXXFLAGS="$_SAVE_CXXFLAGS"
2728 dnl Check for usable wchar_t (2 bytes, unsigned)
2729 dnl (we really don't need the unsignedness check anymore)
2730 dnl ========================================================
2732 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2733 ac_cv_have_usable_wchar_v2,
2734 [AC_TRY_COMPILE([#include <stddef.h>
2735 $configure_static_assert_macros],
2736 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2737 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2738 ac_cv_have_usable_wchar_v2="yes",
2739 ac_cv_have_usable_wchar_v2="no")])
2740 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2741 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2742 HAVE_CPP_2BYTE_WCHAR_T=1
2743 elif test "$ac_cv_have_usable_char16_t" != "yes"; then
2744 dnl This is really gcc-only
2745 dnl Do this test using CXX only since some versions of gcc
2746 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2747 dnl only have short-wchar support for c++.
2748 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2750 _SAVE_CXXFLAGS=$CXXFLAGS
2751 CXXFLAGS="$CXXFLAGS -fshort-wchar"
2753 AC_CACHE_CHECK(for compiler -fshort-wchar option,
2754 ac_cv_have_usable_wchar_option_v2,
2755 [AC_TRY_LINK([#include <stddef.h>
2756 $configure_static_assert_macros],
2757 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2758 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2759 ac_cv_have_usable_wchar_option_v2="yes",
2760 ac_cv_have_usable_wchar_option_v2="no")])
2762 if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2763 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2764 HAVE_CPP_2BYTE_WCHAR_T=1
2765 if test "$OS_TARGET" = Android; then
2766 WCHAR_CFLAGS="-fshort-wchar -Wl,--no-wchar-size-warning"
2767 CXXFLAGS="$CXXFLAGS -Wl,--no-wchar-size-warning"
2768 CFLAGS="$CFLAGS -Wl,--no-wchar-size-warning"
2769 DSO_LDOPTS="$DSO_LDOPTS -Wl,--no-wchar-size-warning"
2771 WCHAR_CFLAGS="-fshort-wchar"
2774 CXXFLAGS=$_SAVE_CXXFLAGS
2780 dnl Check for .hidden assembler directive and visibility attribute.
2781 dnl Borrowed from glibc configure.in
2782 dnl ===============================================================
2783 if test "$GNU_CC"; then
2784 AC_CACHE_CHECK(for visibility(hidden) attribute,
2785 ac_cv_visibility_hidden,
2786 [cat > conftest.c <<EOF
2787 int foo __attribute__ ((visibility ("hidden"))) = 1;
2789 ac_cv_visibility_hidden=no
2790 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2791 if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2792 ac_cv_visibility_hidden=yes
2797 if test "$ac_cv_visibility_hidden" = "yes"; then
2798 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2800 AC_CACHE_CHECK(for visibility(default) attribute,
2801 ac_cv_visibility_default,
2802 [cat > conftest.c <<EOF
2803 int foo __attribute__ ((visibility ("default"))) = 1;
2805 ac_cv_visibility_default=no
2806 if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2807 if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2808 ac_cv_visibility_default=yes
2813 if test "$ac_cv_visibility_default" = "yes"; then
2814 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2816 AC_CACHE_CHECK(for visibility pragma support,
2817 ac_cv_visibility_pragma,
2818 [cat > conftest.c <<EOF
2819 #pragma GCC visibility push(hidden)
2821 #pragma GCC visibility push(default)
2822 int foo_default = 1;
2824 ac_cv_visibility_pragma=no
2825 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2826 if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2827 if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2828 ac_cv_visibility_pragma=yes
2834 if test "$ac_cv_visibility_pragma" = "yes"; then
2835 AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2836 ac_cv_have_visibility_class_bug,
2837 [cat > conftest.c <<EOF
2838 #pragma GCC visibility push(hidden)
2839 struct __attribute__ ((visibility ("default"))) TestStruct {
2842 __attribute__ ((visibility ("default"))) void TestFunc() {
2846 ac_cv_have_visibility_class_bug=no
2847 if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2848 ac_cv_have_visibility_class_bug=yes
2850 if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2851 ac_cv_have_visibility_class_bug=yes
2854 rm -rf conftest.{c,S}
2857 AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2858 ac_cv_have_visibility_builtin_bug,
2859 [cat > conftest.c <<EOF
2860 #pragma GCC visibility push(hidden)
2861 #pragma GCC visibility push(default)
2863 #pragma GCC visibility pop
2865 __attribute__ ((visibility ("default"))) void Func() {
2867 memset(c, 0, sizeof(c));
2870 ac_cv_have_visibility_builtin_bug=no
2871 if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2872 ac_cv_have_visibility_builtin_bug=yes
2874 if test `grep -c "@PLT" conftest.S` = 0; then
2875 ac_cv_visibility_builtin_bug=yes
2878 rm -f conftest.{c,S}
2880 if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2881 "$ac_cv_have_visibility_class_bug" = "no"; then
2882 VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2883 WRAP_SYSTEM_INCLUDES=1
2884 STL_FLAGS='-I$(DIST)/stl_wrappers'
2887 VISIBILITY_FLAGS='-fvisibility=hidden'
2888 fi # have visibility pragma bug
2889 fi # have visibility pragma
2890 fi # have visibility(default) attribute
2891 fi # have visibility(hidden) attribute
2894 # visibility hidden flag for Sun Studio on Solaris
2895 if test "$SOLARIS_SUNPRO_CC"; then
2896 VISIBILITY_FLAGS='-xldscope=hidden'
2897 fi # Sun Studio on Solaris
2899 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2900 AC_SUBST(VISIBILITY_FLAGS)
2906 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
2907 dnl ========================================================
2908 if test "$GNU_CC"; then
2909 CFLAGS_save="${CFLAGS}"
2910 CFLAGS="${CFLAGS} -Werror"
2911 AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
2912 ac_cv_force_align_arg_pointer,
2913 [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
2915 ac_cv_force_align_arg_pointer="yes",
2916 ac_cv_force_align_arg_pointer="no")])
2917 CFLAGS="${CFLAGS_save}"
2918 if test "$ac_cv_force_align_arg_pointer" = "yes"; then
2919 HAVE_GCC_ALIGN_ARG_POINTER=1
2921 HAVE_GCC_ALIGN_ARG_POINTER=
2924 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
2926 dnl Checks for header files.
2927 dnl ========================================================
2929 case "$target_os" in
2931 # for stuff like -lXshm
2932 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2935 MOZ_CHECK_COMMON_HEADERS
2937 dnl These are all the places some variant of statfs can be hiding.
2938 MOZ_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2941 MOZ_CHECK_HEADERS(sys/quota.h sys/sysmacros.h)
2942 MOZ_CHECK_HEADERS([linux/quota.h],,,[#include <sys/socket.h>])
2944 dnl SCTP support - needs various network include headers
2945 MOZ_CHECK_HEADERS([linux/if_addr.h linux/rtnetlink.h],,,[#include <sys/socket.h>])
2947 MOZ_CHECK_HEADERS(sys/types.h netinet/in.h byteswap.h)
2949 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
2950 AC_CACHE_CHECK(for sockaddr_in.sin_len,
2951 ac_cv_sockaddr_in_sin_len,
2952 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2953 #include <sys/types.h>
2955 #include <netinet/in.h>
2956 struct sockaddr_in x;
2957 void *foo = (void*) &x.sin_len;],
2959 [ac_cv_sockaddr_in_sin_len=true],
2960 [ac_cv_sockaddr_in_sin_len=false])])
2961 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
2962 AC_DEFINE(HAVE_SIN_LEN)
2963 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
2964 AC_DEFINE(HAVE_SCONN_LEN)
2967 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
2968 ac_cv_sockaddr_in6_sin6_len,
2969 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2970 #include <sys/types.h>
2972 #include <netinet/in.h>
2973 struct sockaddr_in6 x;
2974 void *foo = (void*) &x.sin6_len;],
2976 [ac_cv_sockaddr_in6_sin6_len=true],
2977 [ac_cv_sockaddr_in6_sin6_len=false])])
2978 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
2979 AC_DEFINE(HAVE_SIN6_LEN)
2982 AC_CACHE_CHECK(for sockaddr.sa_len,
2983 ac_cv_sockaddr_sa_len,
2984 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2985 #include <sys/types.h>
2987 #include <sys/socket.h>
2989 void *foo = (void*) &x.sa_len;],
2991 [ac_cv_sockaddr_sa_len=true],
2992 [ac_cv_sockaddr_sa_len=false])])
2993 if test "$ac_cv_sockaddr_sa_len" = true ; then
2994 AC_DEFINE(HAVE_SA_LEN)
2997 dnl Check whether the compiler supports the new-style C++ standard
2998 dnl library headers (i.e. <new>) or needs the old "new.h"
3001 MOZ_CHECK_HEADER(new, [NEW_H=new])
3002 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3005 AC_ARG_ENABLE(dtrace,
3006 [ --enable-dtrace build with dtrace support if available (default=no)],
3007 [enable_dtrace="yes"],)
3008 if test "x$enable_dtrace" = "xyes"; then
3009 MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3010 if test -n "$HAVE_DTRACE"; then
3011 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3013 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3016 AC_SUBST(HAVE_DTRACE)
3022 MOZ_CHECK_HEADERS(sys/cdefs.h)
3026 MOZ_LINUX_PERF_EVENT
3028 dnl Checks for libraries.
3029 dnl ========================================================
3034 AC_CHECK_LIB(c_r, gethostbyname_r)
3038 dnl We don't want to link with libdl even if it's present on OS X, since
3039 dnl it's not used and not part of the default installation. OS/2 has dlfcn
3041 dnl We don't want to link against libm or libpthread on Darwin since
3042 dnl they both are just symlinks to libSystem and explicitly linking
3043 dnl against libSystem causes issues when debugging (see bug 299601).
3050 AC_SEARCH_LIBS(dlopen, dl,
3051 MOZ_CHECK_HEADER(dlfcn.h,
3052 AC_DEFINE(HAVE_DLOPEN)))
3056 _SAVE_CFLAGS="$CFLAGS"
3057 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3058 AC_CHECK_FUNCS(dladdr memmem)
3059 CFLAGS="$_SAVE_CFLAGS"
3061 if test ! "$GNU_CXX"; then
3065 AC_CHECK_LIB(C_r, demangle)
3068 AC_CHECK_LIB(C, demangle)
3073 dnl OS/2 has socket in libc.
3078 AC_CHECK_LIB(socket, socket)
3082 XLIBS="$X_EXTRA_LIBS"
3084 dnl ========================================================
3085 dnl Checks for X libraries.
3086 dnl Ordering is important.
3087 dnl Xt is dependent upon SM as of X11R6
3088 dnl ========================================================
3089 if test "$no_x" = "yes"; then
3092 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3093 XLIBS="-lX11 $XLIBS"
3094 _SAVE_LDFLAGS="$LDFLAGS"
3095 LDFLAGS="$XLDFLAGS $LDFLAGS"
3096 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3097 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3098 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3099 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3101 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3102 unset ac_cv_lib_Xt_XtFree
3103 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3104 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3105 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3106 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3109 # AIX needs the motif library linked before libXt to prevent
3110 # crashes in plugins linked against Motif - Bug #98892
3111 case "${target_os}" in
3113 XT_LIBS="-lXm $XT_LIBS"
3117 dnl ========================================================
3118 dnl = Check for XShm
3119 dnl ========================================================
3120 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3123 dnl ========================================================
3125 dnl ========================================================
3126 MOZ_CHECK_HEADER(X11/extensions/scrnsaver.h,
3127 AC_CHECK_LIB(Xss, XScreenSaverQueryInfo,
3128 [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS"
3129 AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS))
3131 LDFLAGS="$_SAVE_LDFLAGS"
3141 dnl ========================================================
3142 dnl = pthread support
3143 dnl = Start by checking whether the system support pthreads
3144 dnl ========================================================
3145 case "$target_os" in
3150 MOZ_CHECK_PTHREADS(pthreads,
3151 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3152 MOZ_CHECK_PTHREADS(pthread,
3153 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3154 MOZ_CHECK_PTHREADS(c_r,
3155 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3156 MOZ_CHECK_PTHREADS(c,
3165 dnl ========================================================
3166 dnl Check the command line for --with-pthreads
3167 dnl ========================================================
3168 MOZ_ARG_WITH_BOOL(pthreads,
3169 [ --with-pthreads Force use of system pthread library with NSPR ],
3170 [ if test "$USE_PTHREADS"x = x; then
3171 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3177 dnl ========================================================
3178 dnl Do the platform specific pthread hackery
3179 dnl ========================================================
3180 if test "$USE_PTHREADS"x != x
3183 dnl See if -pthread is supported.
3186 ac_cv_have_dash_pthread=no
3187 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3188 echo 'int main() { return 0; }' | cat > conftest.c
3189 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3190 if test $? -eq 0; then
3191 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3192 ac_cv_have_dash_pthread=yes
3193 case "$target_os" in
3195 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3198 CFLAGS="$CFLAGS -pthread"
3199 CXXFLAGS="$CXXFLAGS -pthread"
3205 AC_MSG_RESULT($ac_cv_have_dash_pthread)
3208 dnl See if -pthreads is supported.
3210 ac_cv_have_dash_pthreads=no
3211 if test "$ac_cv_have_dash_pthread" = "no"; then
3212 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3213 echo 'int main() { return 0; }' | cat > conftest.c
3214 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3215 if test $? -eq 0; then
3216 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3217 ac_cv_have_dash_pthreads=yes
3218 CFLAGS="$CFLAGS -pthreads"
3219 CXXFLAGS="$CXXFLAGS -pthreads"
3223 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3228 AC_DEFINE(_REENTRANT)
3229 AC_DEFINE(_THREAD_SAFE)
3230 dnl -pthread links in -lpthread, so don't specify it explicitly.
3231 if test "$ac_cv_have_dash_pthread" = "yes"; then
3232 _PTHREAD_LDFLAGS="-pthread"
3236 *-*-openbsd*|*-*-bsdi*)
3237 AC_DEFINE(_REENTRANT)
3238 AC_DEFINE(_THREAD_SAFE)
3239 dnl -pthread links in -lc_r, so don't specify it explicitly.
3240 if test "$ac_cv_have_dash_pthread" = "yes"; then
3241 _PTHREAD_LDFLAGS="-pthread"
3245 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
3246 AC_DEFINE(_REENTRANT)
3250 AC_DEFINE(_REENTRANT)
3254 AC_DEFINE(_REENTRANT)
3258 AC_DEFINE(_REENTRANT)
3259 if test "$SOLARIS_SUNPRO_CC"; then
3260 CFLAGS="$CFLAGS -mt"
3261 CXXFLAGS="$CXXFLAGS -mt"
3265 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3269 dnl Checks for library functions.
3270 dnl ========================================================
3271 AC_PROG_GCC_TRADITIONAL
3273 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf memmove rint stat64 lstat64 truncate64 setbuf isatty)
3274 AC_CHECK_FUNCS(statvfs64 statvfs statfs64 statfs)
3275 AC_CHECK_FUNCS(flockfile getpagesize)
3276 AC_CHECK_FUNCS(localtime_r strtok_r)
3278 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
3279 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
3280 ac_cv_clock_monotonic,
3281 [for libs in "" -lrt; do
3284 AC_TRY_LINK([#include <time.h>],
3285 [ struct timespec ts;
3286 clock_gettime(CLOCK_MONOTONIC, &ts); ],
3287 ac_cv_clock_monotonic=$libs
3290 ac_cv_clock_monotonic=no)
3293 if test "$ac_cv_clock_monotonic" != "no"; then
3294 HAVE_CLOCK_MONOTONIC=1
3295 REALTIME_LIBS=$ac_cv_clock_monotonic
3296 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
3297 AC_SUBST(HAVE_CLOCK_MONOTONIC)
3298 AC_SUBST(REALTIME_LIBS)
3301 dnl check for wcrtomb/mbrtowc
3302 dnl =======================================================================
3303 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3306 AC_CACHE_CHECK(for wcrtomb,
3308 [AC_TRY_LINK([#include <wchar.h>],
3309 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3310 ac_cv_have_wcrtomb="yes",
3311 ac_cv_have_wcrtomb="no")])
3312 if test "$ac_cv_have_wcrtomb" = "yes"; then
3313 AC_DEFINE(HAVE_WCRTOMB)
3315 AC_CACHE_CHECK(for mbrtowc,
3317 [AC_TRY_LINK([#include <wchar.h>],
3318 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3319 ac_cv_have_mbrtowc="yes",
3320 ac_cv_have_mbrtowc="no")])
3321 if test "$ac_cv_have_mbrtowc" = "yes"; then
3322 AC_DEFINE(HAVE_MBRTOWC)
3329 ac_cv_func_res_ninit,
3332 #define _BSD_SOURCE 1
3336 [int foo = res_ninit(&_res);],
3337 [ac_cv_func_res_ninit=yes],
3338 [ac_cv_func_res_ninit=no])
3341 if test "$ac_cv_func_res_ninit" = "yes"; then
3342 AC_DEFINE(HAVE_RES_NINIT)
3343 dnl must add the link line we do something as foolish as this... dougt
3345 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3346 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3351 [for gnu_get_libc_version()],
3352 ac_cv_func_gnu_get_libc_version,
3354 #ifdef HAVE_GNU_LIBC_VERSION_H
3355 #include <gnu/libc-version.h>
3358 [const char *glibc_version = gnu_get_libc_version();],
3359 [ac_cv_func_gnu_get_libc_version=yes],
3360 [ac_cv_func_gnu_get_libc_version=no]
3364 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3365 AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3369 darwin*|mingw*|os2*)
3373 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3374 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3375 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3377 LIBS="$LIBS $_ICONV_LIBS"
3386 iconv_t h = iconv_open("", "");
3387 iconv(h, NULL, NULL, NULL, NULL);
3390 [ac_cv_func_iconv=yes],
3391 [ac_cv_func_iconv=no]
3394 if test "$ac_cv_func_iconv" = "yes"; then
3395 AC_DEFINE(HAVE_ICONV)
3396 DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3397 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3398 LIBICONV="$_ICONV_LIBS"
3400 [for iconv() with const input],
3401 ac_cv_func_const_iconv,
3407 const char *input = "testing";
3408 iconv_t h = iconv_open("", "");
3409 iconv(h, &input, NULL, NULL, NULL);
3412 [ac_cv_func_const_iconv=yes],
3413 [ac_cv_func_const_iconv=no]
3416 if test "$ac_cv_func_const_iconv" = "yes"; then
3417 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3429 dnl **********************
3430 dnl *** va_copy checks ***
3431 dnl **********************
3432 dnl we currently check for all three va_copy possibilities, so we get
3433 dnl all results in config.log for bug reports.
3434 AC_MSG_CHECKING(for an implementation of va_copy())
3435 AC_CACHE_VAL(ac_cv_va_copy,[
3438 void f (int i, ...) {
3439 va_list args1, args2;
3440 va_start (args1, i);
3441 va_copy (args2, args1);
3442 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3444 va_end (args1); va_end (args2);
3446 int main() { f (0, 42); return 0; }],
3452 AC_MSG_RESULT($ac_cv_va_copy)
3453 AC_MSG_CHECKING(for an implementation of __va_copy())
3454 AC_CACHE_VAL(ac_cv___va_copy,[
3457 void f (int i, ...) {
3458 va_list args1, args2;
3459 va_start (args1, i);
3460 __va_copy (args2, args1);
3461 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3463 va_end (args1); va_end (args2);
3465 int main() { f (0, 42); return 0; }],
3466 ac_cv___va_copy=yes,
3471 AC_MSG_RESULT($ac_cv___va_copy)
3472 AC_MSG_CHECKING(whether va_lists can be copied by value)
3473 AC_CACHE_VAL(ac_cv_va_val_copy,[
3476 void f (int i, ...) {
3477 va_list args1, args2;
3478 va_start (args1, i);
3480 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3482 va_end (args1); va_end (args2);
3484 int main() { f (0, 42); return 0; }],
3485 ac_cv_va_val_copy=yes,
3486 ac_cv_va_val_copy=no,
3487 ac_cv_va_val_copy=yes
3490 if test "x$ac_cv_va_copy" = "xyes"; then
3491 AC_DEFINE(VA_COPY, va_copy)
3492 AC_DEFINE(HAVE_VA_COPY)
3493 elif test "x$ac_cv___va_copy" = "xyes"; then
3494 AC_DEFINE(VA_COPY, __va_copy)
3495 AC_DEFINE(HAVE_VA_COPY)
3498 if test "x$ac_cv_va_val_copy" = "xno"; then
3499 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3501 AC_MSG_RESULT($ac_cv_va_val_copy)
3503 dnl ===================================================================
3504 dnl ========================================================
3505 dnl Put your C++ language/feature checks below
3506 dnl ========================================================
3510 if test "$GNU_CC"; then
3511 if test "$CPU_ARCH" = "arm" ; then
3512 AC_CACHE_CHECK(for ARM EABI,
3516 #if defined(__ARM_EABI__)
3519 #error Not ARM EABI.
3522 ac_cv_gcc_arm_eabi="yes",
3523 ac_cv_gcc_arm_eabi="no")])
3524 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
3526 ARM_ABI_PREFIX=eabi-
3528 ARM_ABI_PREFIX=oabi-
3532 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
3535 dnl Check for support of modern template specialization syntax
3536 dnl Test code and requirement from scc@netscape.com.
3537 dnl Autoconf cut-and-paste job by waterson@netscape.com
3538 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3539 ac_cv_cpp_modern_specialize_template_syntax,
3540 [AC_TRY_COMPILE(template <class T> struct X { int a; };
3542 template <> struct X<Y> { double a; };,
3545 ac_cv_cpp_modern_specialize_template_syntax=yes,
3546 ac_cv_cpp_modern_specialize_template_syntax=no)])
3547 if test "$ac_cv_cpp_modern_specialize_template_syntax" = no ; then
3548 AC_MSG_ERROR([The C++ compiler does not support template specialization])
3551 dnl Some compilers support only full specialization, and some don't.
3552 AC_CACHE_CHECK(whether partial template specialization works,
3553 ac_cv_cpp_partial_specialization,
3554 [AC_TRY_COMPILE(template <class T> class Foo {};
3555 template <class T> class Foo<T*> {};,
3557 ac_cv_cpp_partial_specialization=yes,
3558 ac_cv_cpp_partial_specialization=no)])
3559 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3560 AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3563 dnl Check to see if we can resolve ambiguity with |using|.
3564 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3565 ac_cv_cpp_ambiguity_resolving_using,
3566 [AC_TRY_COMPILE(class X {
3567 public: int go(const X&) {return 3;}
3568 int jo(const X&) {return 3;}
3570 class Y : public X {
3571 public: int go(int) {return 2;}
3572 int jo(int) {return 2;}
3574 private: using X::go;
3577 ac_cv_cpp_ambiguity_resolving_using=yes,
3578 ac_cv_cpp_ambiguity_resolving_using=no)])
3579 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3580 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3583 dnl See if a dynamic_cast to void* gives the most derived object.
3584 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3585 ac_cv_cpp_dynamic_cast_void_ptr,
3586 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3587 class Y { int j; public: virtual ~Y() { } };
3588 class Z : public X, public Y { int k; };
3594 return !((((void*)&mdo != (void*)subx) &&
3595 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3596 (((void*)&mdo != (void*)suby) &&
3597 ((void*)&mdo == dynamic_cast<void*>(suby))));
3599 ac_cv_cpp_dynamic_cast_void_ptr=yes,
3600 ac_cv_cpp_dynamic_cast_void_ptr=no,
3601 ac_cv_cpp_dynamic_cast_void_ptr=no)])
3602 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3603 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3607 dnl note that this one is reversed - if the test fails, then
3608 dnl we require implementations of unused virtual methods. Which
3609 dnl really blows because it means we'll have useless vtable
3611 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3612 ac_cv_cpp_unused_required,
3613 [AC_TRY_LINK(class X {private: virtual void never_called();};,
3615 ac_cv_cpp_unused_required=no,
3616 ac_cv_cpp_unused_required=yes)])
3617 if test "$ac_cv_cpp_unused_required" = yes ; then
3618 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3622 dnl Some compilers have trouble comparing a constant reference to a templatized
3623 dnl class to zero, and require an explicit operator==() to be defined that takes
3624 dnl an int. This test separates the strong from the weak.
3626 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3627 ac_cv_trouble_comparing_to_zero,
3628 [AC_TRY_COMPILE([#include <algorithm>
3629 template <class T> class Foo {};
3631 template <class T> int operator==(const T2*, const T&) { return 0; }
3632 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3633 [Foo<int> f; return (0 != f);],
3634 ac_cv_trouble_comparing_to_zero=no,
3635 ac_cv_trouble_comparing_to_zero=yes)])
3636 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3637 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3640 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
3641 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
3642 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
3644 _SAVE_LDFLAGS=$LDFLAGS
3645 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
3646 AC_CACHE_CHECK(for __thread keyword for TLS variables,
3647 ac_cv_thread_keyword,
3648 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
3649 [return tlsIsMainThread;],
3650 ac_cv_thread_keyword=yes,
3651 ac_cv_thread_keyword=no)])
3652 LDFLAGS=$_SAVE_LDFLAGS
3653 # The custom dynamic linker doesn't support TLS variables
3655 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
3656 # mips builds fail with TLS variables because of a binutils bug.
3658 # OpenBSD doesn't have TLS support, and the test succeeds with clang++
3663 *-android*|*-linuxandroid*)
3670 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
3676 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
3677 if test -n "$MOZ_LINKER"; then
3678 if test "$CPU_ARCH" = arm; then
3679 dnl Determine the target ARM architecture (5 for ARMv5, v5T, v5E, etc.; 6 for ARMv6, v6K, etc.)
3680 ARM_ARCH=`${CC-cc} ${CFLAGS} -dM -E - < /dev/null | sed -n 's/.*__ARM_ARCH_\([[0-9]]*\).*/\1/p'`
3681 dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
3682 if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
3683 LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
3684 _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
3689 dnl The custom linker doesn't support text relocations, but NDK >= r6b
3690 dnl creates some (http://code.google.com/p/android/issues/detail?id=23203)
3691 dnl We however want to avoid these text relocations, and this can be done
3692 dnl by making gcc not link crtbegin and crtend. In the broken NDKs, crtend
3693 dnl doesn't contain anything at all, beside placeholders for some sections,
3694 dnl and crtbegin only contains a finalizer function that calls
3695 dnl __cxa_finalize. The custom linker actually takes care of calling
3696 dnl __cxa_finalize when the library doesn't call it itself, which makes it
3697 dnl safe not to link crtbegin. Besides, previous versions of the NDK didn't
3698 dnl link crtbegin and crtend at all.
3699 if test -n "$MOZ_LINKER" -a "$OS_TARGET" = "Android"; then
3700 AC_CACHE_CHECK([whether the CRT objects have text relocations],
3701 ac_cv_crt_has_text_relocations,
3702 [echo 'int foo() { return 0; }' > conftest.cpp
3703 if AC_TRY_COMMAND(${CXX-g++} -o conftest${DLL_SUFFIX} $CXXFLAGS $DSO_LDOPTS $LDFLAGS conftest.cpp $LIBS 1>&5) &&
3704 test -s conftest${DLL_SUFFIX}; then
3705 if ${TOOLCHAIN_PREFIX}readelf -d conftest${DLL_SUFFIX} | grep TEXTREL > /dev/null; then
3706 ac_cv_crt_has_text_relocations=yes
3708 ac_cv_crt_has_text_relocations=no
3711 AC_ERROR([couldn't compile a simple C file])
3714 if test "$ac_cv_crt_has_text_relocations" = yes; then
3715 dnl While we want libraries to skip the CRT files, we don't want
3716 dnl executables to be treated the same way. We thus set the flag
3717 dnl in DSO_LDOPTS and not LDFLAGS. However, to pass it to nspr,
3718 dnl we need to use LDFLAGS because nspr doesn't inherit DSO_LDOPTS.
3719 dnl Using LDFLAGS in nspr is safe, since we only really build
3720 dnl libraries there.
3721 DSO_LDOPTS="$DSO_LDOPTS -nostartfiles"
3722 NSPR_LDFLAGS="$NSPR_LDFLAGS -nostartfiles"
3726 dnl Check for the existence of various allocation headers/functions
3728 MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h"
3731 for file in $MALLOC_HEADERS; do
3732 MOZ_CHECK_HEADER($file, [MALLOC_H=$file])
3733 if test "$MALLOC_H" != ""; then
3734 AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
3739 MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
3740 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
3742 AC_CHECK_FUNCS(malloc_usable_size)
3744 dnl See if compiler supports some gcc-style attributes
3746 AC_CACHE_CHECK(for __attribute__((always_inline)),
3747 ac_cv_attribute_always_inline,
3748 [AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));],
3750 ac_cv_attribute_always_inline=yes,
3751 ac_cv_attribute_always_inline=no)])
3753 AC_CACHE_CHECK(for __attribute__((malloc)),
3754 ac_cv_attribute_malloc,
3755 [AC_TRY_COMPILE([void* f(int) __attribute__((malloc));],
3757 ac_cv_attribute_malloc=yes,
3758 ac_cv_attribute_malloc=no)])
3760 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
3761 ac_cv_attribute_warn_unused,
3762 [AC_TRY_COMPILE([int f(void) __attribute__((warn_unused_result));],
3764 ac_cv_attribute_warn_unused=yes,
3765 ac_cv_attribute_warn_unused=no)])
3767 dnl End of C++ language/feature checks
3770 dnl ========================================================
3771 dnl = Internationalization checks
3772 dnl ========================================================
3774 dnl Internationalization and Locale support is different
3775 dnl on various UNIX platforms. Checks for specific i18n
3776 dnl features go here.
3778 dnl check for LC_MESSAGES
3779 AC_CACHE_CHECK(for LC_MESSAGES,
3780 ac_cv_i18n_lc_messages,
3781 [AC_TRY_COMPILE([#include <locale.h>],
3782 [int category = LC_MESSAGES;],
3783 ac_cv_i18n_lc_messages=yes,
3784 ac_cv_i18n_lc_messages=no)])
3785 if test "$ac_cv_i18n_lc_messages" = yes; then
3786 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3789 AC_HAVE_FUNCS(localeconv)
3790 fi # ! SKIP_COMPILER_CHECKS
3793 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3794 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3797 dnl Mozilla specific options
3798 dnl ========================================================
3799 dnl The macros used for command line options
3800 dnl are defined in build/autoconf/altoptions.m4.
3802 dnl If the compiler supports these attributes, define them as
3803 dnl convenience macros.
3804 if test "$ac_cv_attribute_malloc" = yes ; then
3805 AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
3807 AC_DEFINE(NS_ATTR_MALLOC,)
3810 if test "$ac_cv_attribute_warn_unused" = yes ; then
3811 AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
3813 AC_DEFINE(NS_WARN_UNUSED_RESULT,)
3816 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
3817 dnl features that Windows actually does support.
3819 if test -n "$SKIP_COMPILER_CHECKS"; then
3820 dnl Windows has malloc.h
3821 AC_DEFINE(MALLOC_H, [<malloc.h>])
3822 AC_DEFINE(HAVE_FORCEINLINE)
3823 AC_DEFINE(HAVE_LOCALECONV)
3824 fi # SKIP_COMPILER_CHECKS
3826 dnl ========================================================
3828 dnl = Check for external package dependencies
3830 dnl ========================================================
3831 MOZ_ARG_HEADER(External Packages)
3833 MOZ_ARG_WITH_STRING(libxul-sdk,
3834 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
3835 LIBXUL_SDK_DIR=$withval)
3837 if test "$LIBXUL_SDK_DIR" = "yes"; then
3838 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
3839 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
3840 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
3842 if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
3843 AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
3847 AC_SUBST(LIBXUL_SDK)
3849 if test -n "$LIBXUL_SDK"; then
3850 LIBXUL_DIST="$LIBXUL_SDK"
3852 LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
3854 AC_SUBST(LIBXUL_DIST)
3858 MOZ_ARG_WITH_BOOL(system-libxul,
3859 [ --with-system-libxul Use system installed libxul SDK],
3862 dnl ========================================================
3863 dnl = If NSPR was not detected in the system,
3864 dnl = use the one in the source tree (mozilla/nsprpub)
3865 dnl ========================================================
3866 MOZ_ARG_WITH_BOOL(system-nspr,
3867 [ --with-system-nspr Use system installed NSPR],
3868 _USE_SYSTEM_NSPR=1 )
3870 if test -n "$_USE_SYSTEM_NSPR"; then
3871 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])])
3874 if test -n "$MOZ_NATIVE_NSPR"; then
3875 _SAVE_CFLAGS=$CFLAGS
3876 CFLAGS="$CFLAGS $NSPR_CFLAGS"
3877 AC_TRY_COMPILE([#include "prtypes.h"],
3878 [#ifndef PR_STATIC_ASSERT
3879 #error PR_STATIC_ASSERT not defined or requires including prtypes.h
3881 [MOZ_NATIVE_NSPR=1],
3882 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
3883 AC_TRY_COMPILE([#include "prtypes.h"],
3885 #error PR_UINT64 not defined or requires including prtypes.h
3887 [MOZ_NATIVE_NSPR=1],
3888 AC_MSG_ERROR([system NSPR does not support PR_UINT64 or including prtypes.h does not provide it]))
3889 CFLAGS=$_SAVE_CFLAGS
3891 if test -z "$LIBXUL_SDK"; then
3892 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
3893 if test -n "$GNU_CC"; then
3894 NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
3896 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
3899 NSPR_CFLAGS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --includedir="${LIBXUL_DIST}/include/nspr" --cflags`
3900 NSPR_LIBS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --libdir="${LIBXUL_DIST}"/lib --libs`
3904 dnl set GRE_MILESTONE
3905 dnl ========================================================
3906 if test -n "$LIBXUL_SDK"; then
3907 GRE_MILESTONE=`$PYTHON "$_topsrcdir"/config/printconfigsetting.py "$LIBXUL_DIST"/bin/platform.ini Build Milestone`
3909 GRE_MILESTONE=`tail -n 1 "$_topsrcdir"/config/milestone.txt 2>/dev/null || tail -1 "$_topsrcdir"/config/milestone.txt`
3911 AC_SUBST(GRE_MILESTONE)
3913 dnl system libevent Support
3914 dnl ========================================================
3915 MOZ_ARG_WITH_STRING(system-libevent,
3916 [ --with-system-libevent[=PFX]
3917 Use system libevent [installed at prefix PFX]],
3918 LIBEVENT_DIR=$withval)
3920 _SAVE_CFLAGS=$CFLAGS
3921 _SAVE_LDFLAGS=$LDFLAGS
3923 if test "$LIBEVENT_DIR" = yes; then
3924 PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
3925 MOZ_NATIVE_LIBEVENT=1,
3928 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
3929 MOZ_NATIVE_LIBEVENT=
3930 elif test -z "$MOZ_NATIVE_LIBEVENT"; then
3931 CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
3932 LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
3933 MOZ_CHECK_HEADER(event.h,
3934 [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
3935 AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
3937 AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
3938 AC_CHECK_LIB(event, event_init,
3939 [MOZ_NATIVE_LIBEVENT=1
3940 MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
3941 MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
3942 [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
3944 CFLAGS=$_SAVE_CFLAGS
3945 LDFLAGS=$_SAVE_LDFLAGS
3948 AC_SUBST(MOZ_NATIVE_LIBEVENT)
3949 AC_SUBST(MOZ_LIBEVENT_CFLAGS)
3950 AC_SUBST(MOZ_LIBEVENT_LIBS)
3952 dnl ========================================================
3953 dnl = If NSS was not detected in the system,
3954 dnl = use the one in the source tree (mozilla/security/nss)
3955 dnl ========================================================
3957 MOZ_ARG_WITH_BOOL(system-nss,
3958 [ --with-system-nss Use system installed NSS],
3961 if test -n "$_USE_SYSTEM_NSS"; then
3962 AM_PATH_NSS(3.14.2, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
3965 if test -n "$MOZ_NATIVE_NSS"; then
3966 NSS_LIBS="$NSS_LIBS -lcrmf"
3968 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
3970 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
3971 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
3972 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
3973 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
3974 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX)"
3976 if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "OS2"; then
3978 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
3979 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
3980 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
3981 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
3982 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
3984 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
3988 dnl ======================
3990 dnl ======================
3992 AC_MSG_CHECKING([for YASM assembler])
3993 AC_CHECK_PROGS(YASM, yasm, "")
3995 if test -n "$YASM"; then
3996 dnl Pull out yasm's version string
3997 YASM_VERSION=`yasm --version | $AWK '/^yasm/ { print $2 }'`
3998 _YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'`
3999 _YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'`
4000 _YASM_RELEASE=` echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'`
4001 _YASM_BUILD=` echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
4004 if test -z "$SKIP_LIBRARY_CHECKS"; then
4005 dnl system JPEG support
4006 dnl ========================================================
4007 MOZ_ARG_WITH_STRING(system-jpeg,
4008 [ --with-system-jpeg[=PFX]
4009 Use system libjpeg [installed at prefix PFX]],
4012 _SAVE_CFLAGS=$CFLAGS
4013 _SAVE_LDFLAGS=$LDFLAGS
4015 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4016 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4017 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4019 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4022 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [MOZ_NATIVE_JPEG=1 MOZ_JPEG_LIBS="-ljpeg"], MOZ_NATIVE_JPEG=)
4025 if test "$MOZ_NATIVE_JPEG" = 1; then
4026 AC_TRY_COMPILE([ #include <stdio.h>
4027 #include <sys/types.h>
4028 #include <jpeglib.h> ],
4029 [ #if JPEG_LIB_VERSION < $MOZJPEG
4030 #error "Insufficient JPEG library version ($MOZJPEG required)."
4032 #ifndef JCS_EXTENSIONS
4033 #error "libjpeg-turbo JCS_EXTENSIONS required"
4037 AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg]))
4039 CFLAGS=$_SAVE_CFLAGS
4040 LDFLAGS=$_SAVE_LDFLAGS
4043 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$MOZ_NATIVE_JPEG" = 1; then
4044 MOZ_JPEG_CFLAGS="-I${JPEG_DIR}/include"
4045 MOZ_JPEG_LIBS="-L${JPEG_DIR}/lib ${MOZ_JPEG_LIBS}"
4047 fi # SKIP_LIBRARY_CHECKS
4049 dnl system ZLIB support
4050 dnl ========================================================
4051 MOZ_ZLIB_CHECK([1.2.3])
4053 if test "$MOZ_NATIVE_ZLIB" != 1; then
4055 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,'"$MOZ_BUILD_ROOT"'/modules/zlib/src)'
4058 if test "$MOZ_LINKER" = 1 -a "$MOZ_NATIVE_ZLIB" != 1; then
4059 AC_MSG_ERROR([Custom dynamic linker requires --with-system-zlib])
4062 if test -z "$SKIP_LIBRARY_CHECKS"; then
4063 dnl system BZIP2 Support
4064 dnl ========================================================
4065 MOZ_ARG_WITH_STRING(system-bz2,
4066 [ --with-system-bz2[=PFX]
4067 Use system libbz2 [installed at prefix PFX]],
4070 _SAVE_CFLAGS=$CFLAGS
4071 _SAVE_LDFLAGS=$LDFLAGS
4073 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4074 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4075 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4077 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4080 AC_CHECK_LIB(bz2, BZ2_bzread, [MOZ_NATIVE_BZ2=1 MOZ_BZ2_LIBS="-lbz2"],
4081 [MOZ_NATIVE_BZ2= MOZ_BZ2_CFLAGS= MOZ_BZ2_LIBS=])
4083 CFLAGS=$_SAVE_CFLAGS
4084 LDFLAGS=$_SAVE_LDFLAGS
4087 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$MOZ_NATIVE_BZ2" = 1; then
4088 MOZ_BZ2_CFLAGS="-I${BZ2_DIR}/include"
4089 MOZ_BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4092 dnl system PNG Support
4093 dnl ========================================================
4094 MOZ_ARG_WITH_STRING(system-png,
4095 [ --with-system-png[=PFX]
4096 Use system libpng [installed at prefix PFX]],
4099 _SAVE_CFLAGS=$CFLAGS
4100 _SAVE_LDFLAGS=$LDFLAGS
4102 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4103 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4104 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4106 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4109 AC_CHECK_LIB(png, png_get_valid, [MOZ_NATIVE_PNG=1 MOZ_PNG_LIBS="-lpng"],
4110 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4111 AC_CHECK_LIB(png, png_get_acTL, ,
4112 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
4114 if test "$MOZ_NATIVE_PNG" = 1; then
4115 AC_TRY_COMPILE([ #include <stdio.h>
4116 #include <sys/types.h>
4118 [ #if PNG_LIBPNG_VER < $MOZPNG
4119 #error "Insufficient libpng version ($MOZPNG required)."
4121 #ifndef PNG_UINT_31_MAX
4122 #error "Insufficient libpng version."
4125 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4127 CFLAGS=$_SAVE_CFLAGS
4128 LDFLAGS=$_SAVE_LDFLAGS
4131 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_NATIVE_PNG" = 1; then
4132 MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
4133 MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
4136 fi # SKIP_LIBRARY_CHECKS
4138 dnl system HunSpell Support
4139 dnl ========================================================
4140 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4141 [ --enable-system-hunspell
4142 Use system hunspell (located with pkgconfig)],
4143 MOZ_NATIVE_HUNSPELL=1 )
4145 if test -n "$MOZ_NATIVE_HUNSPELL"; then
4146 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4149 AC_SUBST(MOZ_NATIVE_HUNSPELL)
4151 dnl ========================================================
4152 dnl system libffi Support
4153 dnl ========================================================
4154 MOZ_ARG_ENABLE_BOOL(system-ffi,
4155 [ --enable-system-ffi Use system libffi (located with pkgconfig)],
4158 if test -n "$MOZ_NATIVE_FFI"; then
4159 # Vanilla libffi 3.0.9 needs a few patches from upcoming version 3.0.10
4160 # for non-GCC compilers.
4161 if test -z "$GNU_CC"; then
4162 PKG_CHECK_MODULES(MOZ_FFI, libffi > 3.0.9)
4164 PKG_CHECK_MODULES(MOZ_FFI, libffi >= 3.0.9)
4166 MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_FFI_LIBS"
4169 dnl ========================================================
4170 dnl Java SDK support
4171 dnl ========================================================
4174 MOZ_ARG_WITH_STRING(java-bin-path,
4175 [ --with-java-bin-path=dir
4176 Location of Java binaries (java, javac, jar)],
4177 JAVA_BIN_PATH=$withval)
4179 dnl ========================================================
4183 dnl ========================================================
4185 MOZ_ARG_HEADER(Application)
4188 ENABLE_SYSTEM_EXTENSION_DIRS=1
4189 MOZ_BRANDING_DIRECTORY=
4190 MOZ_OFFICIAL_BRANDING=
4195 MOZ_AUTH_EXTENSION=1
4199 MOZ_SPEEX_RESAMPLER=1
4205 MOZ_SAMPLE_TYPE_FLOAT32=
4206 MOZ_SAMPLE_TYPE_S16=
4215 MOZ_WEBRTC_SIGNALING=
4216 MOZ_WEBRTC_IN_LIBXUL=
4219 MOZ_MEDIA_NAVIGATOR=
4222 MOZ_VP8_ERROR_CONCEALMENT=
4232 LIBJPEG_TURBO_ASFLAGS=
4233 LIBJPEG_TURBO_X86_ASM=
4234 LIBJPEG_TURBO_X64_ASM=
4235 LIBJPEG_TURBO_ARM_ASM=
4239 MOZ_PREF_EXTENSIONS=1
4240 MOZ_PROFILELOCKING=1
4247 MOZ_ONLY_TOUCH_EVENTS=
4248 MOZ_TOOLKIT_SEARCH=1
4250 MOZ_UNIVERSALCHARDET=1
4256 MOZ_DISABLE_CRYPTOLEGACY=
4260 NECKO_PROTOCOLS_DEFAULT="about data file ftp http res viewsource websocket wyciwyg device"
4263 MOZ_USE_NATIVE_POPUP_WINDOWS=
4264 MOZ_ANDROID_HISTORY=
4270 MOZ_AUDIO_CHANNEL_MANAGER=
4272 case "$target_os" in
4275 AC_DEFINE(NS_ENABLE_TSF)
4280 *-android*|*-linuxandroid*)
4281 if test "$CPU_ARCH" = "arm" ; then
4286 if test -z "$gonkdir"; then
4291 MOZ_THEME_FASTSTRIPE=1
4299 MOZ_ARG_WITH_STRING(external-source-dir,
4300 [ --with-external-source-dir=dir
4301 External directory containing additional build files.],
4302 [ EXTERNAL_SOURCE_DIR=$withval])
4303 AC_SUBST(EXTERNAL_SOURCE_DIR)
4305 MOZ_ARG_ENABLE_STRING(application,
4306 [ --enable-application=APP
4310 tools/update-packaging (AUS-related packaging tools)],
4311 [ MOZ_BUILD_APP=$enableval ] )
4313 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4314 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
4315 XULRUNNER_STUB_NAME=$withval)
4317 if test -z "$XULRUNNER_STUB_NAME"; then
4318 case "$target_os" in
4320 XULRUNNER_STUB_NAME=xulrunner
4323 XULRUNNER_STUB_NAME=xulrunner-stub
4326 AC_SUBST(XULRUNNER_STUB_NAME)
4328 AC_MSG_CHECKING([for application to build])
4329 if test -z "$MOZ_BUILD_APP"; then
4330 AC_MSG_RESULT([browser])
4331 MOZ_BUILD_APP=browser
4333 # default mobile to be mobile/xul
4334 if test "$MOZ_BUILD_APP" = "mobile" ; then
4335 MOZ_BUILD_APP=mobile/xul
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=`mktemp -t subscript.XXXXXX` || 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=13
4449 android_min_api_level=16
4453 MOZ_ANDROID_SDK($android_min_api_level)
4456 dnl ========================================================
4458 dnl = Toolkit Options
4460 dnl ========================================================
4461 MOZ_ARG_HEADER(Toolkit Options)
4463 dnl ========================================================
4464 dnl = Select the default toolkit
4465 dnl ========================================================
4466 MOZ_ARG_ENABLE_STRING(default-toolkit,
4467 [ --enable-default-toolkit=TK
4468 Select default toolkit
4469 Platform specific defaults:
4470 Mac OS X - cairo-cocoa
4472 Win32 - cairo-windows
4475 [ _DEFAULT_TOOLKIT=$enableval ],
4476 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4478 if test "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4479 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4480 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4481 -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4482 -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4483 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
4484 -o "$_DEFAULT_TOOLKIT" = "cairo-uikit" \
4485 -o "$_DEFAULT_TOOLKIT" = "cairo-android" \
4486 -o "$_DEFAULT_TOOLKIT" = "cairo-gonk"
4488 dnl nglayout only supports building with one toolkit,
4489 dnl so ignore everything after the first comma (",").
4490 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4492 AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4495 MOZ_ARG_WITHOUT_BOOL(x,
4496 [ --without-x Build without X11],
4499 dnl ========================================================
4500 dnl = Enable the toolkit as needed =
4501 dnl ========================================================
4505 case "$MOZ_WIDGET_TOOLKIT" in
4508 MOZ_WIDGET_TOOLKIT=windows
4511 MOZ_INSTRUMENT_EVENT_LOOP=1
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 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL'
4572 MOZ_USER_DIR="Mozilla"
4573 MOZ_FS_LAYOUT=bundle
4575 MOZ_INSTRUMENT_EVENT_LOOP=1
4579 MOZ_WIDGET_TOOLKIT=uikit
4580 AC_DEFINE(MOZ_WIDGET_UIKIT)
4581 LDFLAGS="$LDFLAGS -framework UIKit -lobjc"
4582 TK_CFLAGS="-DNO_X11"
4583 TK_LIBS='-framework Foundation -framework CoreFoundation -framework CoreGraphics -framework CoreText'
4584 CFLAGS="$CFLAGS $TK_CFLAGS"
4585 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4586 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL'
4587 MOZ_USER_DIR="Mozilla"
4588 MOZ_FS_LAYOUT=bundle
4592 AC_DEFINE(MOZ_WIDGET_ANDROID)
4593 MOZ_WIDGET_TOOLKIT=android
4594 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4595 TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4598 MOZ_INSTRUMENT_EVENT_LOOP=1
4602 AC_DEFINE(MOZ_WIDGET_GONK)
4603 AC_DEFINE(MOZ_TOUCH)
4604 MOZ_WIDGET_TOOLKIT=gonk
4605 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4606 TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4614 AC_SUBST(MOZ_PDF_PRINTING)
4615 if test "$MOZ_PDF_PRINTING"; then
4616 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
4617 AC_DEFINE(MOZ_PDF_PRINTING)
4620 if test "$MOZ_ENABLE_XREMOTE"; then
4621 AC_DEFINE(MOZ_ENABLE_XREMOTE)
4624 if test "$MOZ_INSTRUMENT_EVENT_LOOP"; then
4625 AC_DEFINE(MOZ_INSTRUMENT_EVENT_LOOP)
4628 if test "$COMPILE_ENVIRONMENT"; then
4629 if test "$MOZ_ENABLE_GTK2"; then
4630 if test "$MOZ_X11"; then
4631 GDK_PACKAGES=gdk-x11-2.0
4634 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4637 fi # COMPILE_ENVIRONMENT
4639 AC_SUBST(MOZ_FS_LAYOUT)
4641 dnl ========================================================
4642 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4643 dnl their usage and use them in spidermonkey.
4644 dnl ========================================================
4645 MOZ_ARG_WITH_BOOL(arm-kuser,
4646 [ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4648 if test -n "$USE_ARM_KUSER"; then
4649 AC_DEFINE(USE_ARM_KUSER)
4652 dnl ========================================================
4653 dnl = startup-notification support module
4654 dnl ========================================================
4656 if test "$MOZ_ENABLE_GTK2"
4658 MOZ_ENABLE_STARTUP_NOTIFICATION=
4660 MOZ_ARG_ENABLE_BOOL(startup-notification,
4661 [ --enable-startup-notification
4662 Enable startup-notification support (default: disabled) ],
4663 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4664 MOZ_ENABLE_STARTUP_NOTIFICATION=)
4665 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4667 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4668 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4669 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4670 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4672 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4674 MOZ_ENABLE_STARTUP_NOTIFICATION=
4678 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4679 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4682 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4684 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4685 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4686 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4688 dnl ========================================================
4690 dnl ========================================================
4691 if test "$MOZ_ENABLE_QT"
4693 MOZ_ARG_WITH_STRING(qtdir,
4694 [ --with-qtdir=\$dir Specify Qt directory ],
4697 if test -z "$QTDIR"; then
4698 PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtCore QtOpenGL)
4699 PKG_CHECK_MODULES(MOZ_QT5, Qt5Widgets Qt5Multimedia Qt5PrintSupport,
4702 if test "$MOZ_ENABLE_QT5"; then
4704 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $MOZ_QT5_CFLAGS"
4705 MOZ_QT_LIBS="$MOZ_QT_LIBS $MOZ_QT5_LIBS"
4708 AC_CHECK_PROGS(HOST_MOC, $MOC moc, "")
4709 AC_CHECK_PROGS(HOST_RCC, $RCC rcc, "")
4711 MOZ_QT_CFLAGS="-DQT_SHARED"
4712 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
4713 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
4714 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
4715 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
4716 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
4717 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDeclarative"
4719 # QtWidgets was introduced only in Qt5
4720 if test -d $QTDIR/include/QtWidgets; then
4722 MOZ_QT_LIBS="-L$QTDIR/lib/ -lQt5Gui -lQt5Network -lQt5Core -lQt5Xml -lQt5OpenGL"
4723 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui/5.0.1/QtGui"
4724 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtWidgets"
4725 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtPrintSupport"
4726 MOZ_QT_LIBS="$MOZ_QT_LIBS -lQt5Widgets -lQt5PrintSupport"
4728 MOZ_QT_LIBS="-L$QTDIR/lib/ -lQtGui -lQtNetwork -lQtCore -lQtXml -lQtOpenGL"
4729 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/Qt"
4731 HOST_MOC="$QTDIR/bin/moc"
4732 HOST_RCC="$QTDIR/bin/rcc"
4734 if test -z "$HOST_MOC"; then
4735 AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is
4738 if test -z "$HOST_RCC"; then
4739 AC_MSG_ERROR([No acceptable rcc preprocessor found. Qt SDK is not installed or --with-qt is
4746 MOZ_ENABLE_QMSYSTEM2=
4747 PKG_CHECK_MODULES(_QMSYSTEM2, qmsystem2,
4748 MOZ_ENABLE_QMSYSTEM2=1,
4749 MOZ_ENABLE_QMSYSTEM2=)
4751 if test "$MOZ_ENABLE_QMSYSTEM2"; then
4752 MOZ_ENABLE_QMSYSTEM2=1
4753 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QMSYSTEM2_CFLAGS"
4754 MOZ_QT_LIBS="$MOZ_QT_LIBS $_QMSYSTEM2_LIBS"
4755 AC_DEFINE(MOZ_ENABLE_QMSYSTEM2)
4758 MOZ_ENABLE_QTNETWORK=
4759 PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7,
4760 MOZ_ENABLE_QTNETWORK=1,
4761 MOZ_ENABLE_QTNETWORK=)
4763 if test "$MOZ_ENABLE_QTNETWORK"; then
4764 MOZ_ENABLE_QTNETWORK=1
4765 AC_DEFINE(MOZ_ENABLE_QTNETWORK)
4768 MOZ_ENABLE_QTMOBILITY=
4769 PKG_CHECK_MODULES(_QTMOBILITY, QtSensors QtFeedback QtLocation,
4770 MOZ_ENABLE_QTMOBILITY=1,
4771 MOZ_ENABLE_QTMOBILITY=)
4772 if test "$MOZ_ENABLE_QTMOBILITY"; then
4773 MOZ_ENABLE_QTMOBILITY=1
4774 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QTMOBILITY_CFLAGS"
4775 MOZ_QT_LIBS="$MOZ_QT_LIBS $_QTMOBILITY_LIBS"
4777 AC_CHECK_LIB(QtSensors, main, [
4778 MOZ_ENABLE_QTMOBILITY=1
4779 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtMobility"
4780 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtSensors"
4781 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtFeedback"
4782 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtLocation"
4783 MOZ_QT_LIBS="$MOZ_QT_LIBS -lQtSensors -lQtFeedback -lQtLocation"
4786 if test "$MOZ_ENABLE_QTMOBILITY"; then
4787 AC_DEFINE(MOZ_ENABLE_QTMOBILITY)
4791 AC_SUBST(GTK_CONFIG)
4795 AC_SUBST(MOZ_ENABLE_GTK2)
4796 AC_SUBST(MOZ_ENABLE_QT)
4797 AC_SUBST(MOZ_ENABLE_QTNETWORK)
4798 AC_SUBST(MOZ_ENABLE_QMSYSTEM2)
4799 AC_SUBST(MOZ_ENABLE_QTMOBILITY)
4800 AC_SUBST(MOZ_ENABLE_XREMOTE)
4801 AC_SUBST(MOZ_GTK2_CFLAGS)
4802 AC_SUBST(MOZ_GTK2_LIBS)
4803 AC_SUBST(MOZ_WIDGET_GTK)
4804 AC_SUBST(MOZ_QT_CFLAGS)
4805 AC_SUBST(MOZ_QT_LIBS)
4812 dnl ========================================================
4814 dnl = Components & Features
4816 dnl ========================================================
4817 MOZ_ARG_HEADER(Components and Features)
4819 dnl ========================================================
4821 dnl ========================================================
4822 MOZ_ARG_ENABLE_STRING(ui-locale,
4823 [ --enable-ui-locale=ab-CD
4824 Select the user interface locale (default: en-US)],
4825 MOZ_UI_LOCALE=$enableval )
4826 AC_SUBST(MOZ_UI_LOCALE)
4828 dnl ========================================================
4829 dnl = Trademarked Branding
4830 dnl ========================================================
4831 MOZ_ARG_ENABLE_BOOL(official-branding,
4832 [ --enable-official-branding
4833 Enable Official mozilla.org Branding
4834 Do not distribute builds with
4835 --enable-official-branding unless you have
4836 permission to use trademarks per
4837 http://www.mozilla.org/foundation/trademarks/ .],
4839 if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
4840 AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
4842 MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
4843 MOZ_OFFICIAL_BRANDING=1
4845 ], MOZ_OFFICIAL_BRANDING=)
4847 AC_SUBST(MOZ_OFFICIAL_BRANDING)
4848 if test -n "$MOZ_OFFICIAL_BRANDING"; then
4849 AC_DEFINE(MOZ_OFFICIAL_BRANDING)
4852 MOZ_ARG_WITH_STRING(branding,
4853 [ --with-branding=dir Use branding from the specified directory.],
4854 MOZ_BRANDING_DIRECTORY=$withval)
4856 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4857 if test -z "$REAL_BRANDING_DIRECTORY"; then
4858 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4861 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4862 . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
4865 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4867 dnl ========================================================
4868 dnl = Distribution ID
4869 dnl ========================================================
4870 MOZ_ARG_WITH_STRING(distribution-id,
4871 [ --with-distribution-id=ID
4872 Set distribution-specific id (default=org.mozilla)],
4873 [ val=`echo $withval`
4874 MOZ_DISTRIBUTION_ID="$val"])
4876 if test -z "$MOZ_DISTRIBUTION_ID"; then
4877 MOZ_DISTRIBUTION_ID="org.mozilla"
4880 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4881 AC_SUBST(MOZ_DISTRIBUTION_ID)
4884 dnl ========================================================
4885 dnl complex text support off by default
4886 dnl ========================================================
4887 MOZ_ARG_DISABLE_BOOL(pango,
4888 [ --disable-pango Disable usage of Pango ],
4892 dnl ========================================================
4894 dnl ========================================================
4895 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
4899 if test "$MOZ_PANGO"
4901 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4903 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION)
4904 AC_SUBST(MOZ_PANGO_CFLAGS)
4905 AC_SUBST(MOZ_PANGO_LIBS)
4906 AC_DEFINE(MOZ_PANGO)
4908 PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0)
4909 AC_SUBST(FT2_CFLAGS)
4914 dnl ========================================================
4915 dnl = GnomeVFS, GIO and GConf support module
4916 dnl ========================================================
4920 dnl build the GIO extension by default only when the
4921 dnl GTK2 toolkit is in use.
4922 if test "$MOZ_ENABLE_GTK2"
4928 dnl ========================================================
4929 dnl = GnomeVFS support module
4930 dnl ========================================================
4931 MOZ_ARG_ENABLE_BOOL(gnomevfs,
4932 [ --enable-gnomevfs Enable GnomeVFS support (default: disabled)],
4933 MOZ_ENABLE_GNOMEVFS=force,
4934 MOZ_ENABLE_GNOMEVFS=)
4936 if test "$MOZ_ENABLE_GNOMEVFS"
4938 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
4939 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
4940 MOZ_ENABLE_GNOMEVFS=1
4941 AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
4943 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
4945 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
4947 MOZ_ENABLE_GNOMEVFS=
4951 AC_SUBST(MOZ_ENABLE_GNOMEVFS)
4952 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
4953 AC_SUBST(MOZ_GNOMEVFS_LIBS)
4955 dnl ========================================================
4956 dnl = GIO support module
4957 dnl ========================================================
4958 MOZ_ARG_DISABLE_BOOL(gio,
4959 [ --disable-gio Disable GIO support],
4961 MOZ_ENABLE_GIO=force)
4963 if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK2"
4965 PKG_CHECK_MODULES(_GTKCHECK, gtk+-2.0 >= 2.14, ,
4966 [AC_MSG_ERROR([* * * Could not find gtk+-2.0 > 2.14. Required for build with gio.])])
4967 PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
4968 MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
4970 AC_DEFINE(MOZ_ENABLE_GIO)
4972 if test "$MOZ_ENABLE_GIO" = "force"
4974 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
4980 AC_SUBST(MOZ_ENABLE_GIO)
4981 AC_SUBST(MOZ_GIO_CFLAGS)
4982 AC_SUBST(MOZ_GIO_LIBS)
4984 dnl ========================================================
4985 dnl = GConf support module
4986 dnl ========================================================
4987 MOZ_ARG_DISABLE_BOOL(gconf,
4988 [ --disable-gconf Disable Gconf support ],
4990 MOZ_ENABLE_GCONF=force)
4992 if test "$MOZ_ENABLE_GCONF"
4994 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
4995 MOZ_GCONF_LIBS=`$PKG_CONFIG --libs gobject-2.0`
4998 if test "$MOZ_ENABLE_GCONF" = "force"
5000 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
5006 if test "$MOZ_ENABLE_GCONF"; then
5007 AC_DEFINE(MOZ_ENABLE_GCONF)
5010 AC_SUBST(MOZ_ENABLE_GCONF)
5011 AC_SUBST(MOZ_GCONF_CFLAGS)
5012 AC_SUBST(MOZ_GCONF_LIBS)
5015 dnl ========================================================
5016 dnl = libproxy support
5017 dnl ========================================================
5019 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5021 MOZ_ENABLE_LIBPROXY=
5023 MOZ_ARG_ENABLE_BOOL(libproxy,
5024 [ --enable-libproxy Enable libproxy support ],
5025 MOZ_ENABLE_LIBPROXY=1,
5026 MOZ_ENABLE_LIBPROXY=)
5028 if test "$MOZ_ENABLE_LIBPROXY"
5030 PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
5031 AC_DEFINE(MOZ_ENABLE_LIBPROXY)
5034 AC_SUBST(MOZ_ENABLE_LIBPROXY)
5035 AC_SUBST(MOZ_LIBPROXY_CFLAGS)
5036 AC_SUBST(MOZ_LIBPROXY_LIBS)
5038 dnl ========================================================
5039 dnl = GNOME component (mozgnome)
5040 dnl ========================================================
5042 if test "$MOZ_ENABLE_GTK2"
5044 MOZ_ENABLE_GNOME_COMPONENT=1
5046 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5048 dnl ========================================================
5049 dnl = libgnomeui support module
5050 dnl ========================================================
5052 if test "$MOZ_ENABLE_GTK2"
5054 MOZ_ARG_ENABLE_BOOL(gnomeui,
5055 [ --enable-gnomeui Enable libgnomeui instead of GIO & GTK for icon theme support ],
5056 MOZ_ENABLE_GNOMEUI=force,
5057 MOZ_ENABLE_GNOMEUI=)
5059 if test "$MOZ_ENABLE_GNOMEUI"
5061 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5063 MOZ_ENABLE_GNOMEUI=1
5065 if test "$MOZ_ENABLE_GNOMEUI" = "force"
5067 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5073 if test "$MOZ_ENABLE_GNOMEUI"; then
5074 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5078 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5079 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5081 dnl ========================================================
5083 dnl ========================================================
5085 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5089 MOZ_ARG_DISABLE_BOOL(dbus,
5090 [ --disable-dbus Disable dbus support ],
5094 if test "$MOZ_ENABLE_DBUS"
5096 PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
5097 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5098 AC_DEFINE(MOZ_ENABLE_DBUS)
5101 AC_SUBST(MOZ_ENABLE_DBUS)
5102 AC_SUBST(MOZ_DBUS_CFLAGS)
5103 AC_SUBST(MOZ_DBUS_LIBS)
5104 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5105 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5107 dnl ========================================================
5108 dnl = Enable Android History instead of Places
5109 dnl ========================================================
5110 if test -n "$MOZ_ANDROID_HISTORY"; then
5111 if test -z "$MOZ_PLACES"; then
5112 AC_DEFINE(MOZ_ANDROID_HISTORY)
5114 AC_MSG_ERROR([Cannot use MOZ_ANDROID_HISTORY alongside MOZ_PLACES.])
5118 dnl ========================================================
5119 dnl = Build with the Android compositor
5120 dnl ========================================================
5121 if test -n "$MOZ_ANDROID_OMTC"; then
5122 dnl Do this if defined in confvars.sh
5123 AC_DEFINE(MOZ_ANDROID_OMTC)
5126 dnl ========================================================
5127 dnl = Disable WebSMS backend
5128 dnl ========================================================
5129 MOZ_ARG_DISABLE_BOOL(websms-backend,
5130 [ --disable-websms-backend
5131 Disable WebSMS backend],
5132 MOZ_WEBSMS_BACKEND=,
5133 MOZ_WEBSMS_BACKEND=1)
5135 if test -n "$MOZ_WEBSMS_BACKEND"; then
5136 AC_DEFINE(MOZ_WEBSMS_BACKEND)
5139 dnl ========================================================
5140 dnl = Build Personal Security Manager
5141 dnl ========================================================
5142 MOZ_ARG_DISABLE_BOOL(crypto,
5143 [ --disable-crypto Disable crypto support (Personal Security Manager)],
5147 dnl ========================================================
5148 dnl = JS Debugger XPCOM component (js/jsd)
5149 dnl ========================================================
5150 MOZ_ARG_DISABLE_BOOL(jsd,
5151 [ --disable-jsd Disable JavaScript debug library],
5156 dnl ========================================================
5157 dnl = Enable IPDL's "expensive" unit tests
5158 dnl ========================================================
5161 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
5162 [ --enable-ipdl-tests Enable expensive IPDL tests],
5166 if test -n "$MOZ_IPDL_TESTS"; then
5167 AC_DEFINE(MOZ_IPDL_TESTS)
5170 AC_SUBST(MOZ_IPDL_TESTS)
5172 dnl ========================================================
5173 dnl = Turns off code necessary for e10s compatibility
5174 dnl ========================================================
5175 dnl This is a temporary flag to be removed in bug 662601 when
5176 dnl it's no longer needed
5180 MOZ_ARG_ENABLE_BOOL(e10s-compat,
5181 [ --enable-e10s-compat Turns off code for e10s compat],
5185 if test -n "$MOZ_E10S_COMPAT"; then
5186 AC_DEFINE(MOZ_E10S_COMPAT)
5189 dnl ========================================================
5190 dnl = Disable building dbm
5191 dnl ========================================================
5192 MOZ_ARG_DISABLE_BOOL(dbm,
5193 [ --disable-dbm Disable building dbm],
5197 dnl bi-directional support always on
5201 dnl ========================================================
5202 dnl accessibility support on by default on all platforms
5203 dnl ========================================================
5204 MOZ_ARG_DISABLE_BOOL(accessibility,
5205 [ --disable-accessibility Disable accessibility support],
5208 if test "$ACCESSIBILITY"; then
5211 if test -z "$MIDL"; then
5212 if test "$GCC" != "yes"; then
5213 AC_MSG_ERROR([MIDL could not be found. Building accessibility without MIDL is not supported.])
5215 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.])
5219 AC_DEFINE(ACCESSIBILITY)
5222 dnl ========================================================
5223 dnl Accessibility is required for the linuxgl widget
5225 dnl ========================================================
5226 if test "${MOZ_WIDGET_TOOLKIT}" = "linuxgl" -a "$ACCESSIBILITY" != "1"; then
5227 AC_MSG_ERROR(["Accessibility is required for the linuxgl widget backend"])
5230 dnl ========================================================
5231 dnl Disable printing
5232 dnl ========================================================
5233 MOZ_ARG_DISABLE_BOOL(printing,
5234 [ --disable-printing Disable printing support],
5238 if test "$NS_PRINTING"; then
5239 AC_DEFINE(NS_PRINTING)
5240 AC_DEFINE(NS_PRINT_PREVIEW)
5243 dnl Turn off webrtc for OS's we don't handle yet, but allow
5244 dnl --enable-webrtc to override. Can disable for everything in
5245 dnl the master list above.
5246 if test -n "$MOZ_WEBRTC"; then
5248 *-android*|*-linuxandroid*)
5249 dnl Make sure doesn't get matched by *-linux*
5252 *-linux*|*-mingw*|*-darwin*)
5256 dnl default to disabled for all others
5262 dnl ========================================================
5263 dnl = Disable WebRTC code
5264 dnl ========================================================
5265 MOZ_ARG_DISABLE_BOOL(webrtc,
5266 [ --disable-webrtc Disable support for WebRTC],
5270 if test -n "$MOZ_WEBRTC"; then
5271 AC_DEFINE(MOZ_WEBRTC)
5276 MOZ_VP8_ERROR_CONCEALMENT=1
5278 dnl OpenSLES is only available in Android 2.3 and later; we'll change this
5279 dnl hard dependency to a dynamic load with graceful runtime failure before
5280 dnl we make --enable-webrtc on by default in Android (bug 815905)
5282 if test "$OS_TARGET" = "Android"; then
5283 LDFLAGS="$LDFLAGS -lOpenSLES"
5286 *-android*|*-linuxandroid*)
5287 LDFLAGS="$LDFLAGS -lOpenSLES"
5291 dnl enable once Signaling lands
5292 MOZ_WEBRTC_SIGNALING=1
5293 AC_DEFINE(MOZ_WEBRTC_SIGNALING)
5294 if test "${OS_TARGET}" = "WINNT"; then
5295 MOZ_WEBRTC_IN_LIBXUL=1
5297 dnl enable once PeerConnection lands
5298 MOZ_PEERCONNECTION=1
5299 AC_DEFINE(MOZ_PEERCONNECTION)
5306 AC_SUBST(MOZ_WEBRTC)
5307 AC_SUBST(MOZ_WEBRTC_LEAKING_TESTS)
5308 AC_SUBST(MOZ_WEBRTC_SIGNALING)
5309 AC_SUBST(MOZ_PEERCONNECTION)
5310 AC_SUBST(MOZ_WEBRTC_IN_LIBXUL)
5314 case "$target_cpu" in
5316 MOZ_SAMPLE_TYPE_S16=1
5317 AC_DEFINE(MOZ_SAMPLE_TYPE_S16)
5318 AC_SUBST(MOZ_SAMPLE_TYPE_S16)
5321 MOZ_SAMPLE_TYPE_FLOAT32=1
5322 AC_DEFINE(MOZ_SAMPLE_TYPE_FLOAT32)
5323 AC_SUBST(MOZ_SAMPLE_TYPE_FLOAT32)
5327 dnl ========================================================
5328 dnl = Enable Raw Codecs
5329 dnl ========================================================
5330 MOZ_ARG_ENABLE_BOOL(raw,
5331 [ --enable-raw Enable support for RAW media],
5335 if test -n "$MOZ_RAW"; then
5342 dnl ========================================================
5343 dnl = Disable Ogg Codecs
5344 dnl ========================================================
5345 MOZ_ARG_DISABLE_BOOL(ogg,
5346 [ --disable-ogg Disable support for OGG media (Theora video and Vorbis audio)],
5350 if test -n "$MOZ_OGG"; then
5356 dnl Checks for __attribute__(aligned()) directive
5357 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5358 [ac_cv_c_attribute_aligned],
5359 [ac_cv_c_attribute_aligned=0
5360 CFLAGS_save="${CFLAGS}"
5361 CFLAGS="${CFLAGS} -Werror"
5362 for ac_cv_c_attr_align_try in 64 32 16 8; do
5363 echo "trying $ac_cv_c_attr_align_try"
5365 [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
5366 [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
5367 if test "$ac_cv_c_attribute_aligned" != 0; then
5371 CFLAGS="${CFLAGS_save}"])
5372 if test "${ac_cv_c_attribute_aligned}" != "0"; then
5373 AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
5374 [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
5378 dnl ========================================================
5379 dnl = Disable Opus audio codec support
5380 dnl ========================================================
5381 MOZ_ARG_DISABLE_BOOL(opus,
5382 [ --disable-opus Disable support for Opus audio],
5386 dnl ========================================================
5387 dnl = Disable VP8 decoder support
5388 dnl ========================================================
5389 MOZ_ARG_DISABLE_BOOL(webm,
5390 [ --disable-webm Disable support for WebM media (VP8 video and Vorbis audio)],
5394 if test -n "$MOZ_WEBM"; then
5399 dnl ========================================================
5400 dnl = Disable DASH-WebM support
5401 dnl ========================================================
5402 MOZ_ARG_DISABLE_BOOL(dash,
5403 [ --disable-dash Disable support for DASH-WebM],
5407 if test -n "$MOZ_DASH"; then
5408 if test -n "$MOZ_WEBM"; then
5411 dnl Fail if WebM is not enabled as well as DASH.
5412 AC_MSG_ERROR([WebM is currently disabled and must be enabled for DASH
5418 dnl ========================================================
5419 dnl = Windows Media Foundation support
5420 dnl ========================================================
5421 if test "$OS_ARCH" = "WINNT"; then
5422 dnl Enable Windows Media Foundation support by default.
5423 dnl Note our minimum SDK version is Windows 7 SDK, so we are (currently)
5424 dnl guaranteed to have a recent-enough SDK to build WMF.
5428 MOZ_ARG_DISABLE_BOOL(wmf,
5429 [ --disable-wmf Disable support for Windows Media Foundation],
5433 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
5535 if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then
5542 if test -n "$MOZ_VP8" -a -z "$MOZ_NATIVE_LIBVPX"; then
5544 dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
5545 dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
5546 dnl We currently require gcc on all arm platforms.
5549 VPX_NEED_OBJ_INT_EXTRACT=
5551 dnl See if we have assembly on this platform.
5552 case "$OS_ARCH:$CPU_ARCH" in
5554 VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC"
5558 VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC"
5562 VPX_ASFLAGS="-f x64 -rnasm -pnasm"
5566 dnl Check for yasm 1.1 or greater.
5567 if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then
5568 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.])
5569 elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
5570 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.])
5572 VPX_ASFLAGS="-f win32 -rnasm -pnasm -DPIC"
5574 dnl The encoder needs obj_int_extract to get asm offsets.
5578 if test -n "$GNU_AS" ; then
5580 dnl These flags are a lie; they're just used to enable the requisite
5581 dnl opcodes; actual arch detection is done at runtime.
5582 VPX_ASFLAGS="-march=armv7-a -mfpu=neon"
5583 VPX_DASH_C_FLAG="-c"
5584 VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl'
5585 VPX_ASM_SUFFIX="$ASM_SUFFIX"
5590 if $CC -E -dM -</dev/null | grep -q __ELF__; then
5591 VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
5596 if $CC -E -dM -</dev/null | grep -q __ELF__; then
5597 VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
5603 if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_X86_ASM" -a -z "$VPX_AS"; then
5604 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.])
5607 if test -n "$MOZ_VP8_ENCODER" -a \
5608 -z "$GNU_CC" -a -z "$INTEL_CC" -a -z "$CLANG_CC" ; then
5609 dnl We prefer to get asm offsets using inline assembler, which the above
5610 dnl compilers can do. When we're not using one of those, we have to fall
5611 dnl back to obj_int_extract, which reads them from a compiled object
5612 dnl file. Unfortunately, that only works if we're compiling on a system
5613 dnl with the header files for the appropriate object file format.
5614 VPX_NEED_OBJ_INT_EXTRACT=1
5617 if test -n "$VPX_X86_ASM"; then
5618 AC_DEFINE(VPX_X86_ASM)
5619 elif test -n "$VPX_ARM_ASM"; then
5620 AC_DEFINE(VPX_ARM_ASM)
5622 AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.])
5626 dnl ========================================================
5627 dnl = Disable Wave decoder support
5628 dnl ========================================================
5629 MOZ_ARG_DISABLE_BOOL(wave,
5630 [ --disable-wave Disable Wave decoder support],
5634 if test -n "$MOZ_WAVE"; then
5641 dnl ========================================================
5642 dnl = Handle dependent SYDNEYAUDIO, CUBEB, and MEDIA defines
5643 dnl ========================================================
5645 if test -n "$MOZ_SYDNEYAUDIO"; then
5646 AC_DEFINE(MOZ_SYDNEYAUDIO)
5649 if test -n "$MOZ_SPEEX_RESAMPLER"; then
5650 AC_DEFINE(MOZ_SPEEX_RESAMPLER)
5653 if test -n "$MOZ_SOUNDTOUCH"; then
5654 AC_DEFINE(MOZ_SOUNDTOUCH)
5657 if test -n "$MOZ_CUBEB"; then
5659 *-android*|*-linuxandroid*)
5660 if test -n "$gonkdir"; then
5661 AC_DEFINE(MOZ_CUBEB)
5663 dnl No Android implementation of libcubeb yet.
5666 AC_DEFINE(MOZ_CUBEB)
5669 AC_DEFINE(MOZ_CUBEB)
5672 AC_DEFINE(MOZ_CUBEB)
5675 AC_DEFINE(MOZ_CUBEB)
5678 dnl Other targets will be enabled soon.
5683 if test -n "$MOZ_MEDIA"; then
5684 AC_DEFINE(MOZ_MEDIA)
5687 if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then
5688 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/])
5691 if test -n "$MOZ_VORBIS"; then
5692 AC_DEFINE(MOZ_VORBIS)
5695 if test -n "$MOZ_TREMOR"; then
5696 AC_DEFINE(MOZ_TREMOR)
5699 if test -n "$MOZ_OPUS"; then
5703 dnl ========================================================
5704 dnl = Check alsa availability on Linux if using sydneyaudio
5705 dnl ========================================================
5707 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
5708 if test -n "$MOZ_SYDNEYAUDIO" -a "$OS_TARGET" = "Linux"; then
5712 MOZ_ARG_ENABLE_BOOL(alsa,
5713 [ --enable-alsa Enable Alsa support (default on Linux)],
5717 if test -n "$MOZ_ALSA"; then
5718 AC_DEFINE(MOZ_CUBEB)
5719 PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
5720 [echo "$MOZ_ALSA_PKG_ERRORS"
5721 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.)])])
5725 AC_SUBST(MOZ_ALSA_CFLAGS)
5726 AC_SUBST(MOZ_ALSA_LIBS)
5728 dnl ========================================================
5729 dnl = Enable PulseAudio
5730 dnl ========================================================
5732 MOZ_ARG_ENABLE_BOOL(pulseaudio,
5733 [ --enable-pulseaudio Enable PulseAudio support (experimental)],
5737 if test -n "$MOZ_PULSEAUDIO"; then
5738 AC_DEFINE(MOZ_CUBEB)
5739 PKG_CHECK_MODULES(MOZ_PULSEAUDIO, libpulse, ,
5740 [echo "$MOZ_PULSEAUDIO_PKG_ERRORS"
5741 AC_MSG_ERROR([pulseaudio audio backend requires libpulse package])])
5744 AC_SUBST(MOZ_PULSEAUDIO)
5745 AC_SUBST(MOZ_PULSEAUDIO_CFLAGS)
5746 AC_SUBST(MOZ_PULSEAUDIO_LIBS)
5748 dnl ========================================================
5749 dnl = Enable GStreamer
5750 dnl ========================================================
5751 MOZ_ARG_ENABLE_BOOL(gstreamer,
5752 [ --enable-gstreamer Enable GStreamer support],
5756 if test "$MOZ_GSTREAMER"; then
5757 # API version, eg 0.10, 1.0 etc
5758 GST_API_VERSION=0.10
5759 # core/base release number
5761 PKG_CHECK_MODULES(GSTREAMER,
5762 gstreamer-$GST_API_VERSION >= $GST_VERSION
5763 gstreamer-app-$GST_API_VERSION
5764 gstreamer-plugins-base-$GST_API_VERSION)
5765 if test -n "$GSTREAMER_LIBS"; then
5766 _SAVE_LDFLAGS=$LDFLAGS
5767 LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5768 AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=)
5769 if test -n "$_HAVE_LIBGSTVIDEO" ; then
5770 GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5772 AC_MSG_ERROR([gstreamer video backend requires libgstvideo])
5774 LDFLAGS=$_SAVE_LDFLAGS
5776 AC_MSG_ERROR([gstreamer backend requires the gstreamer packages])
5779 AC_SUBST(GSTREAMER_CFLAGS)
5780 AC_SUBST(GSTREAMER_LIBS)
5781 AC_SUBST(MOZ_GSTREAMER)
5783 if test -n "$MOZ_GSTREAMER"; then
5784 AC_DEFINE(MOZ_GSTREAMER)
5789 dnl ========================================================
5790 dnl Permissions System
5791 dnl ========================================================
5792 MOZ_ARG_DISABLE_BOOL(permissions,
5793 [ --disable-permissions Disable permissions (popup and cookie blocking)],
5798 dnl ========================================================
5800 dnl ========================================================
5801 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5802 [ --disable-negotiateauth Disable GSS-API negotiation ],
5803 MOZ_AUTH_EXTENSION=,
5804 MOZ_AUTH_EXTENSION=1 )
5806 dnl ========================================================
5807 dnl Pref extensions (autoconfig)
5808 dnl ========================================================
5809 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5810 [ --disable-pref-extensions
5811 Disable pref extensions such as autoconfig],
5812 MOZ_PREF_EXTENSIONS=,
5813 MOZ_PREF_EXTENSIONS=1 )
5815 dnl ========================================================
5816 dnl Searching of system directories for extensions.
5817 dnl Note: this switch is meant to be used for test builds
5818 dnl whose behavior should not depend on what happens to be
5819 dnl installed on the local machine.
5820 dnl ========================================================
5821 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
5822 [ --disable-system-extension-dirs
5823 Disable searching system- and account-global
5824 directories for extensions of any kind; use
5825 only profile-specific extension directories],
5826 ENABLE_SYSTEM_EXTENSION_DIRS=,
5827 ENABLE_SYSTEM_EXTENSION_DIRS=1 )
5828 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
5829 AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
5832 dnl ========================================================
5833 dnl = Universalchardet
5834 dnl ========================================================
5835 MOZ_ARG_DISABLE_BOOL(universalchardet,
5836 [ --disable-universalchardet
5837 Disable universal encoding detection],
5838 MOZ_UNIVERSALCHARDET=,
5839 MOZ_UNIVERSALCHARDET=1 )
5841 if test -n "${JAVA_BIN_PATH}"; then
5842 dnl Look for javac and jar in the specified path.
5843 JAVA_PATH="$JAVA_BIN_PATH"
5845 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5846 JAVA_PATH="$JAVA_HOME/bin:$PATH"
5849 MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5850 MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5851 MOZ_PATH_PROG(JAVAH, javah, :, [$JAVA_PATH])
5852 MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5854 if test -n "${JAVA_BIN_PATH}" -o \
5855 \( "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk" \); then
5856 if test -z "$JAVA" -o "$JAVA" = ":" -o -z "$JAVAC" -o "$JAVAC" = ":" -o -z "$JAVAH" -o "$JAVAH" = ":" -o -z "$JAR" -o "$JAR" = ":"; then
5857 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}])
5861 dnl ========================================================
5862 dnl = ANGLE OpenGL->D3D translator for WebGL
5863 dnl = * only applies to win32
5864 dnl = * enabled by default (shipping build); requires explicit --disable to disable
5865 dnl ========================================================
5867 MOZ_DIRECTX_SDK_PATH=
5868 MOZ_DIRECTX_SDK_CPU_SUFFIX=
5869 MOZ_D3DCOMPILER_CAB=
5870 MOZ_D3DCOMPILER_DLL=
5871 case "$target_os" in
5873 MOZ_ANGLE_RENDERER=1
5877 # The DirectX SDK libraries are split into x86 and x64 sub-directories
5878 case "${target_cpu}" in
5880 MOZ_DIRECTX_SDK_CPU_SUFFIX=x86
5883 MOZ_DIRECTX_SDK_CPU_SUFFIX=x64
5887 MOZ_ARG_DISABLE_BOOL(webgl,
5888 [ --disable-webgl Disable building of the WebGL implementation],
5889 MOZ_WEBGL_DISABLED=1,
5890 MOZ_WEBGL_DISABLED=)
5892 if test -n "$MOZ_WEBGL_DISABLED"; then
5897 if test -n "$MOZ_ANGLE_RENDERER" -a -z "$CROSS_COMPILE"; then
5898 # Get the SDK path from the registry.
5899 # First try to get the June 2010 SDK
5900 MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1`
5901 if test -z "$MOZ_DIRECTX_SDK_REG_KEY" ; then
5902 # Otherwise just take whatever comes first
5903 MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1`
5906 if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then
5907 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.])
5909 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'`
5912 if test -n "$MOZ_DIRECTX_SDK_PATH" &&
5913 test -f "$MOZ_DIRECTX_SDK_PATH"/include/d3dx9.h &&
5914 test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_DIRECTX_SDK_CPU_SUFFIX/dxguid.lib ; then
5915 AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH])
5917 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.])
5920 # Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib
5921 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'`
5923 if test -z "$MOZ_D3DX9_VERSION" ; then
5924 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.])
5927 MOZ_D3DCOMPILER_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_DIRECTX_SDK_CPU_SUFFIX}.cab | head -n1`
5929 if test -z "$MOZ_D3DCOMPILER_CAB"; then
5930 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.])
5933 MOZ_D3DCOMPILER_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll
5936 dnl ========================================================
5937 dnl = Breakpad crash reporting (on by default on supported platforms)
5938 dnl ========================================================
5941 i?86-*-mingw*|x86_64-*-mingw*)
5944 i?86-apple-darwin*|x86_64-apple-darwin*)
5947 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
5948 if test "$MOZ_ENABLE_GTK2"; then
5952 *-android*|*-linuxandroid*)
5960 MOZ_ARG_DISABLE_BOOL(crashreporter,
5961 [ --disable-crashreporter Disable breakpad crash reporting],
5963 MOZ_CRASHREPORTER=1)
5965 if test -n "$MOZ_CRASHREPORTER"; then
5966 AC_DEFINE(MOZ_CRASHREPORTER)
5968 if test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS" && \
5969 test -z "$SKIP_LIBRARY_CHECKS"; then
5970 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5971 AC_SUBST(MOZ_GTHREAD_CFLAGS)
5972 AC_SUBST(MOZ_GTHREAD_LIBS)
5975 if test "$OS_ARCH" != "$HOST_OS_ARCH"; then
5976 AC_MSG_ERROR([Breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH. Use --disable-crashreporter.])
5979 if test "$OS_ARCH" = "WINNT" -a -z "$HAVE_64BIT_OS"; then
5980 MOZ_CRASHREPORTER_INJECTOR=1
5981 AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
5985 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5986 [ --with-crashreporter-enable-percent=NN
5987 Enable sending crash reports by default on NN% of users. (default=100)],
5988 [ val=`echo $withval | sed 's/[^0-9]//g'`
5989 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5991 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5992 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5994 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5996 dnl ========================================================
5997 dnl = libjpeg-turbo configuration
5998 dnl ========================================================
6000 if test -z "$MOZ_NATIVE_JPEG"; then
6004 MOZ_ARG_DISABLE_BOOL(libjpeg_turbo,
6005 [ --disable-libjpeg-turbo Disable optimized jpeg decoding routines],
6007 MOZ_LIBJPEG_TURBO=1)
6009 if test "$MOZ_NATIVE_JPEG" = 1 -a "$MOZ_LIBJPEG_TURBO" = 1; then
6010 AC_MSG_ERROR([cannot use --with-system-jpeg with --enable-libjpeg-turbo.])
6013 dnl Detect if we can use yasm to compile libjpeg-turbo's optimized assembly
6016 if test -n "$MOZ_LIBJPEG_TURBO"; then
6018 dnl Do we support libjpeg-turbo on this platform?
6019 case "$OS_ARCH:$OS_TEST" in
6021 LIBJPEG_TURBO_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC -DMACHO"
6022 LIBJPEG_TURBO_X86_ASM=1
6025 LIBJPEG_TURBO_ASFLAGS="-f macho64 -rnasm -pnasm -D__x86_64__ -DPIC -DMACHO"
6026 LIBJPEG_TURBO_X64_ASM=1
6028 WINNT:x86|WINNT:i?86)
6029 LIBJPEG_TURBO_ASFLAGS="-f win32 -rnasm -pnasm -DPIC -DWIN32"
6030 LIBJPEG_TURBO_X86_ASM=1
6033 LIBJPEG_TURBO_ASFLAGS="-f win64 -rnasm -pnasm -D__x86_64__ -DPIC -DWIN64 -DMSVC"
6034 LIBJPEG_TURBO_X64_ASM=1
6037 LIBJPEG_TURBO_ASFLAGS="-march=armv7-a -mfpu=neon"
6038 LIBJPEG_TURBO_ARM_ASM=1
6041 if $CC -E -dM -</dev/null | grep -q __ELF__; then
6042 LIBJPEG_TURBO_ASFLAGS="-f elf32 -rnasm -pnasm -DPIC -DELF"
6043 LIBJPEG_TURBO_X86_ASM=1
6047 if $CC -E -dM -</dev/null | grep -q __ELF__; then
6048 LIBJPEG_TURBO_ASFLAGS="-f elf64 -rnasm -pnasm -D__x86_64__ -DPIC -DELF"
6049 LIBJPEG_TURBO_X64_ASM=1
6056 dnl If we're on an x86 or x64 system which supports libjpeg-turbo's asm routines
6057 dnl and --disable-libjpeg-turbo wasn't passed, check for Yasm, and error out if
6058 dnl it doesn't exist or we have too old of a version.
6059 if test -n "$LIBJPEG_TURBO_X86_ASM" -o -n "$LIBJPEG_TURBO_X64_ASM" ; then
6060 AC_MSG_CHECKING([for Yasm assembler])
6061 AC_CHECK_PROGS(LIBJPEG_TURBO_AS, yasm, "")
6063 if test -z "$LIBJPEG_TURBO_AS" ; then
6064 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.])
6067 dnl Check that we have the right yasm version. We require 1.0.1 or newer
6068 dnl on Linux and 1.1 or newer everywhere else.
6069 if test "$OS_ARCH" = "Linux" ; then
6070 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
6071 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.])
6074 if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
6075 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.])
6080 dnl If we're on an ARM system which supports libjpeg-turbo's asm routines and
6081 dnl --disable-libjpeg-turbo wasn't passed, use the C compiler as the assembler.
6082 if test -n "$LIBJPEG_TURBO_ARM_ASM" ; then
6083 echo "Using $AS as the assembler for ARM code."
6084 LIBJPEG_TURBO_AS=$AS
6087 if test -n "$LIBJPEG_TURBO_X86_ASM"; then
6088 AC_DEFINE(LIBJPEG_TURBO_X86_ASM)
6089 elif test -n "$LIBJPEG_TURBO_X64_ASM"; then
6090 AC_DEFINE(LIBJPEG_TURBO_X64_ASM)
6091 elif test -n "$LIBJPEG_TURBO_ARM_ASM"; then
6092 AC_DEFINE(LIBJPEG_TURBO_ARM_ASM)
6093 elif test -n "$MOZ_LIBJPEG_TURBO"; then
6094 dnl Warn if we're not building the optimized routines, even though the user
6095 dnl didn't specify --disable-libjpeg-turbo.
6096 AC_MSG_WARN([No assembler or assembly support for libjpeg-turbo. Using unoptimized C routines.])
6099 dnl ========================================================
6100 dnl = Enable compilation of specific extension modules
6101 dnl ========================================================
6103 MOZ_ARG_ENABLE_STRING(extensions,
6104 [ --enable-extensions Enable extensions],
6105 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6106 if test "$option" = "yes" -o "$option" = "all"; then
6107 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6108 elif test "$option" = "no" -o "$option" = "none"; then
6110 elif test "$option" = "default"; then
6111 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6112 elif test `echo "$option" | grep -c \^-` != 0; then
6113 option=`echo $option | sed 's/^-//'`
6114 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6116 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6119 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6121 if test -z "$MOZ_ENABLE_GNOMEVFS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6122 # Suppress warning on non-X11 platforms
6123 if test -n "$MOZ_X11"; then
6124 AC_MSG_WARN([Removing gnomevfs from MOZ_EXTENSIONS due to no --enable-gnomevfs.])
6126 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6129 dnl Do not build gnomevfs with libxul based apps
6130 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6131 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6134 if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6135 # Suppress warning on non-X11 platforms
6136 if test -n "$MOZ_X11"; then
6137 AC_MSG_WARN([Removing gio from MOZ_EXTENSIONS due to --disable-gio.])
6139 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6142 dnl Do not build gio with libxul based apps
6143 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6144 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6147 if test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6149 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6151 AC_SUBST(MOZ_GIO_COMPONENT)
6153 if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6154 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6155 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6159 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6161 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6162 dnl when trying to build a nonexistent extension.
6163 for extension in $MOZ_EXTENSIONS; do
6164 if test ! -d "${srcdir}/extensions/${extension}"; then
6165 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6169 if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
6170 AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
6173 dnl ========================================================
6174 dnl CSS3 Flexbox Support
6175 dnl ========================================================
6176 if test -n "$MOZ_FLEXBOX"; then
6177 AC_DEFINE(MOZ_FLEXBOX)
6180 dnl ========================================================
6181 dnl Build Freetype in the tree
6182 dnl ========================================================
6183 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6184 [ --enable-tree-freetype Enable Tree FreeType],
6185 MOZ_TREE_FREETYPE=1,
6186 MOZ_TREE_FREETYPE= )
6187 if test -n "$MOZ_TREE_FREETYPE"; then
6188 if test -n "$_WIN32_MSVC"; then
6189 AC_ERROR("building with in-tree freetype is not supported on MSVC")
6191 AC_DEFINE(MOZ_TREE_FREETYPE)
6192 AC_SUBST(MOZ_TREE_FREETYPE)
6193 MOZ_ENABLE_CAIRO_FT=1
6194 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6195 FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6196 CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6197 FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6199 CAIRO_FT_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6200 AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6201 AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6202 AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6203 AC_SUBST(CAIRO_FT_CFLAGS)
6206 dnl ========================================================
6208 dnl ========================================================
6209 dnl Abort Windows build if the required major version and
6210 dnl minimum minor version of Unicode NSIS isn't in the path
6211 dnl (unless in case of cross compiling, for which Unicode
6212 dnl is not yet sufficient).
6213 if test "$OS_ARCH" = "WINNT"; then
6214 REQ_NSIS_MAJOR_VER=2
6215 MIN_NSIS_MINOR_VER=46
6216 MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensisu-2.46 makensis)
6217 if test -n "$MAKENSISU" -a "$MAKENSISU" != ":"; then
6218 AC_MSG_RESULT([yes])
6220 MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\).*\-Unicode$/\1/g'`
6222 if test ! "$MAKENSISU_VER" = ""; then
6223 MAKENSISU_MAJOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $1 }'`
6224 MAKENSISU_MINOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $2 }'`
6226 AC_MSG_CHECKING([for Unicode NSIS with major version == $REQ_NSIS_MAJOR_VER and minor version >= $MIN_NSIS_MINOR_VER])
6227 if test "$MAKENSISU_VER" = "" || \
6228 test ! "$MAKENSISU_MAJOR_VER" = "$REQ_NSIS_MAJOR_VER" -o \
6229 ! "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER; then
6231 if test -z "$CROSS_COMPILE"; then
6232 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.])
6237 elif test -z "$CROSS_COMPILE"; then
6238 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.])
6244 dnl ========================================================
6246 dnl ========================================================
6247 MOZ_ARG_DISABLE_BOOL(webapp-runtime,
6248 [ --disable-webapp-runtime Disable Web App Runtime],
6249 MOZ_WEBAPP_RUNTIME=,
6250 MOZ_WEBAPP_RUNTIME=1)
6251 if test "$MOZ_WIDGET_TOOLKIT" != "windows" -a "$MOZ_WIDGET_TOOLKIT" != "cocoa" -a "$MOZ_WIDGET_TOOLKIT" != "gtk2"; then
6254 if test "$OS_ARCH" = "WINNT" -a -z "$MAKENSISU" -a -n "$CROSS_COMPILE"; then
6257 AC_SUBST(MOZ_WEBAPP_RUNTIME)
6258 if test "$MOZ_WEBAPP_RUNTIME"; then
6259 AC_DEFINE(MOZ_WEBAPP_RUNTIME)
6262 AC_MSG_CHECKING([for tar archiver])
6263 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6264 if test -z "$TAR"; then
6265 AC_MSG_ERROR([no tar archiver found in \$PATH])
6267 AC_MSG_RESULT([$TAR])
6270 AC_MSG_CHECKING([for wget])
6271 AC_CHECK_PROGS(WGET, wget, "")
6272 AC_MSG_RESULT([$WGET])
6275 dnl ========================================================
6277 dnl ========================================================
6279 if test -n "$MOZ_SIGN_CMD"; then
6280 AC_DEFINE(MOZ_SIGNING)
6283 dnl ========================================================
6284 dnl Maintenance Service
6285 dnl ========================================================
6287 MOZ_ARG_ENABLE_BOOL(maintenance-service,
6288 [ --enable-maintenance-service Enable building of maintenanceservice],
6289 MOZ_MAINTENANCE_SERVICE=1,
6290 MOZ_MAINTENANCE_SERVICE= )
6292 if test -n "$MOZ_MAINTENANCE_SERVICE"; then
6293 if test "$OS_ARCH" = "WINNT"; then
6294 AC_DEFINE(MOZ_MAINTENANCE_SERVICE)
6296 AC_MSG_ERROR([Can only build with --enable-maintenance-service with a Windows target])
6300 dnl ========================================================
6301 dnl Verify MAR signatures
6302 dnl ========================================================
6304 MOZ_ARG_ENABLE_BOOL(verify-mar,
6305 [ --enable-verify-mar Enable verifying MAR signatures],
6306 MOZ_VERIFY_MAR_SIGNATURE=1,
6307 MOZ_VERIFY_MAR_SIGNATURE= )
6309 if test -n "$MOZ_VERIFY_MAR_SIGNATURE"; then
6310 if test "$OS_ARCH" = "WINNT"; then
6311 AC_DEFINE(MOZ_VERIFY_MAR_SIGNATURE)
6313 AC_MSG_ERROR([Can only build with --enable-verify-mar with a Windows target])
6317 dnl ========================================================
6318 dnl Enable building the signmar program.
6319 dnl This option is much different than the --enable-verify-mar option.
6320 dnl --enable-verify-mar is for enabling the verification check on MAR
6321 dnl files in the updater. The --enable-signmar option is for building
6322 dnl the signmar program.
6323 dnl ========================================================
6325 MOZ_ARG_ENABLE_BOOL(signmar,
6326 [ --enable-signmar Enable building the signmar program],
6327 MOZ_ENABLE_SIGNMAR=1,
6328 MOZ_ENABLE_SIGNMAR= )
6330 if test -n "$MOZ_ENABLE_SIGNMAR"; then
6331 AC_DEFINE(MOZ_ENABLE_SIGNMAR)
6334 dnl ========================================================
6336 dnl ========================================================
6338 MOZ_ARG_DISABLE_BOOL(updater,
6339 [ --disable-updater Disable building of updater],
6343 if test -n "$MOZ_UPDATER"; then
6344 AC_DEFINE(MOZ_UPDATER)
6347 # tools/update-packaging is not checked out by default.
6348 MOZ_ARG_ENABLE_BOOL(update-packaging,
6349 [ --enable-update-packaging
6350 Enable tools/update-packaging],
6351 MOZ_UPDATE_PACKAGING=1,
6352 MOZ_UPDATE_PACKAGING= )
6353 AC_SUBST(MOZ_UPDATE_PACKAGING)
6355 dnl ========================================================
6356 dnl build the tests by default
6357 dnl ========================================================
6358 MOZ_ARG_DISABLE_BOOL(tests,
6359 [ --disable-tests Do not build test libraries & programs],
6363 # Currently GTest is linked into libxul. This means it must be off by default.
6364 # Follow up will be to generate libxul.so and libxul-test.so to let GTest
6365 # be compiled along with ENABLE_TESTS
6366 MOZ_ARG_ENABLE_BOOL(gtest,
6368 Enable GTest libxul unit test.],
6372 if test -n "$MOZ_ENABLE_GTEST"; then
6373 if test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin" -o "${OS_TARGET}" = "Linux"; then
6376 AC_DEFINE(MOZ_ENABLE_GTEST)
6377 AC_DEFINE_UNQUOTED(GTEST_HAS_RTTI, 0)
6378 AC_SUBST(MOZ_ENABLE_GTEST)
6379 AC_SUBST(GTEST_HAS_RTTI)
6381 AC_MSG_ERROR([Cannot build with --enable-gtest on this platform.])
6385 dnl ========================================================
6386 dnl parental controls (for Windows Vista)
6387 dnl ========================================================
6388 MOZ_ARG_DISABLE_BOOL(parental-controls,
6389 [ --disable-parental-controls
6390 Do not build parental controls],
6391 MOZ_DISABLE_PARENTAL_CONTROLS=1,
6392 MOZ_DISABLE_PARENTAL_CONTROLS=)
6393 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6394 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6397 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6399 dnl ========================================================
6400 dnl = Disable DOMCrypto
6401 dnl ========================================================
6402 if test -n "$MOZ_DISABLE_CRYPTOLEGACY"; then
6403 AC_DEFINE(MOZ_DISABLE_CRYPTOLEGACY)
6405 AC_SUBST(MOZ_DISABLE_CRYPTOLEGACY)
6407 dnl ========================================================
6409 dnl = Module specific options
6411 dnl ========================================================
6412 MOZ_ARG_HEADER(Individual module options)
6414 dnl ========================================================
6415 dnl = Disable feed handling components
6416 dnl ========================================================
6417 MOZ_ARG_DISABLE_BOOL(feeds,
6418 [ --disable-feeds Disable feed handling and processing components],
6421 if test -n "$MOZ_FEEDS"; then
6422 AC_DEFINE(MOZ_FEEDS)
6424 if test "$MOZ_BUILD_APP" = "browser"; then
6425 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6429 dnl ========================================================
6430 dnl Check for sqlite
6431 dnl ========================================================
6434 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6435 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
6436 MOZ_NATIVE_SQLITE=1,
6437 MOZ_NATIVE_SQLITE= )
6439 if test -z "$MOZ_NATIVE_SQLITE"
6442 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6444 dnl ============================
6445 dnl === SQLite Version check ===
6446 dnl ============================
6447 dnl Check to see if the system SQLite package is new enough.
6448 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6450 dnl ==================================
6451 dnl === SQLITE_SECURE_DELETE check ===
6452 dnl ==================================
6453 dnl Check to see if the system SQLite package is compiled with
6454 dnl SQLITE_SECURE_DELETE enabled.
6455 AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6456 _SAVE_CFLAGS="$CFLAGS"
6457 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6459 LIBS="$LIBS $SQLITE_LIBS"
6460 AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6462 #include "sqlite3.h"
6464 int main(int argc, char **argv){
6465 return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6467 ac_cv_sqlite_secure_delete=yes,
6468 ac_cv_sqlite_secure_delete=no,
6469 ac_cv_sqlite_secure_delete=no
6472 AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6473 CFLAGS="$_SAVE_CFLAGS"
6475 if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6476 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6479 dnl ===============================
6480 dnl === SQLITE_THREADSAFE check ===
6481 dnl ===============================
6482 dnl Check to see if the system SQLite package is compiled with
6483 dnl SQLITE_THREADSAFE enabled.
6484 AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6485 _SAVE_CFLAGS="$CFLAGS"
6486 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6488 LIBS="$LIBS $SQLITE_LIBS"
6489 AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6491 #include "sqlite3.h"
6493 int main(int argc, char **argv){
6494 return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6496 ac_cv_sqlite_threadsafe=yes,
6497 ac_cv_sqlite_threadsafe=no,
6498 ac_cv_sqlite_threadsafe=no
6501 AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6502 CFLAGS="$_SAVE_CFLAGS"
6504 if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6505 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6508 dnl ================================
6509 dnl === SQLITE_ENABLE_FTS3 check ===
6510 dnl ================================
6511 dnl check to see if the system SQLite package is compiled with
6512 dnl SQLITE_ENABLE_FTS3 enabled.
6513 AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6514 _SAVE_CFLAGS="$CFLAGS"
6515 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6517 LIBS="$LIBS $SQLITE_LIBS"
6518 AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6520 #include "sqlite3.h"
6522 int main(int argc, char **argv){
6523 return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6525 ac_cv_sqlite_enable_fts3=yes,
6526 ac_cv_sqlite_enable_fts3=no,
6527 ac_cv_sqlite_enable_fts3=no
6530 AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6531 CFLAGS="$_SAVE_CFLAGS"
6533 if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6534 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6537 dnl =========================================
6538 dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
6539 dnl =========================================
6540 dnl check to see if the system SQLite package is compiled with
6541 dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
6542 AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
6543 _SAVE_CFLAGS="$CFLAGS"
6544 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6546 LIBS="$LIBS $SQLITE_LIBS"
6547 AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
6549 #include "sqlite3.h"
6551 int main(int argc, char **argv){
6552 return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
6554 ac_cv_sqlite_enable_unlock_notify=yes,
6555 ac_cv_sqlite_enable_unlock_notify=no,
6556 ac_cv_sqlite_enable_unlock_notify=no
6559 AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
6560 CFLAGS="$_SAVE_CFLAGS"
6562 if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
6563 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
6567 if test -n "$MOZ_NATIVE_SQLITE"; then
6568 AC_DEFINE(MOZ_NATIVE_SQLITE)
6570 AC_SUBST(MOZ_NATIVE_SQLITE)
6572 dnl ========================================================
6573 dnl = Enable help viewer (off by default)
6574 dnl ========================================================
6575 if test -n "$MOZ_HELP_VIEWER"; then
6576 dnl Do this if defined in confvars.sh
6577 AC_DEFINE(MOZ_HELP_VIEWER)
6580 dnl ========================================================
6581 dnl = Enable safe browsing (anti-phishing)
6582 dnl ========================================================
6583 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6584 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
6585 MOZ_SAFE_BROWSING=1,
6586 MOZ_SAFE_BROWSING= )
6587 if test -n "$MOZ_SAFE_BROWSING"; then
6588 AC_DEFINE(MOZ_SAFE_BROWSING)
6590 AC_SUBST(MOZ_SAFE_BROWSING)
6592 dnl ========================================================
6593 dnl = Enable url-classifier
6594 dnl ========================================================
6595 dnl Implicitly enabled by default if building with safe-browsing
6596 if test -n "$MOZ_SAFE_BROWSING"; then
6597 MOZ_URL_CLASSIFIER=1
6599 MOZ_ARG_ENABLE_BOOL(url-classifier,
6600 [ --enable-url-classifier Enable url classifier module],
6601 MOZ_URL_CLASSIFIER=1,
6602 MOZ_URL_CLASSIFIER= )
6603 if test -n "$MOZ_URL_CLASSIFIER"; then
6604 AC_DEFINE(MOZ_URL_CLASSIFIER)
6606 AC_SUBST(MOZ_URL_CLASSIFIER)
6608 dnl ========================================================
6609 dnl = Disable zipwriter
6610 dnl ========================================================
6611 MOZ_ARG_DISABLE_BOOL(zipwriter,
6612 [ --disable-zipwriter Disable zipwriter component],
6615 AC_SUBST(MOZ_ZIPWRITER)
6617 dnl ========================================================
6619 dnl ========================================================
6620 dnl superseded by QtNetwork starting from 4.7
6621 MOZ_ENABLE_LIBCONIC=1
6623 if test -n "$MOZ_ENABLE_QT"; then
6624 if test "$MOZ_ENABLE_QTNETWORK"; then
6625 MOZ_ENABLE_LIBCONIC=
6629 MOZ_ARG_DISABLE_BOOL(libconic,
6630 [ --disable-libconic Disable libconic],
6631 MOZ_ENABLE_LIBCONIC=,
6632 MOZ_ENABLE_LIBCONIC=1 )
6634 if test -n "$MOZ_ENABLE_LIBCONIC"; then
6635 PKG_CHECK_MODULES(LIBCONIC, conic,
6636 MOZ_ENABLE_LIBCONIC=1,
6637 MOZ_ENABLE_LIBCONIC=)
6639 if test "$MOZ_ENABLE_LIBCONIC"; then
6640 AC_DEFINE(MOZ_ENABLE_LIBCONIC)
6643 AC_SUBST(MOZ_ENABLE_LIBCONIC)
6644 AC_SUBST(LIBCONIC_CFLAGS)
6645 AC_SUBST(LIBCONIC_LIBS)
6647 dnl ========================================================
6649 dnl ========================================================
6651 MAEMO_SDK_TARGET_VER=-1
6653 MOZ_ARG_WITH_STRING(maemo-version,
6654 [ --with-maemo-version=MAEMO_SDK_TARGET_VER
6656 MAEMO_SDK_TARGET_VER=$withval)
6658 case "$MAEMO_SDK_TARGET_VER" in
6660 MOZ_PLATFORM_MAEMO=5
6664 MOZ_PLATFORM_MAEMO=6
6668 dnl We aren't compiling for Maemo, move on.
6671 AC_MSG_ERROR([Unknown Maemo Version. Try setting --with-maemo-version to 5 or 6.])
6675 if test $MOZ_PLATFORM_MAEMO; then
6676 AC_DEFINE_UNQUOTED([MOZ_PLATFORM_MAEMO], $MOZ_PLATFORM_MAEMO)
6678 if test -z "$MOZ_ENABLE_DBUS"; then
6679 AC_MSG_ERROR([DBus is required when building for Maemo])
6682 MOZ_GFX_OPTIMIZE_MOBILE=1
6683 MOZ_GL_DEFAULT_PROVIDER=EGL
6684 MOZ_MAEMO_LIBLOCATION=
6686 if test $MOZ_PLATFORM_MAEMO = 5; then
6687 dnl if we have Xcomposite we should also have Xdamage and Xfixes
6688 MOZ_CHECK_HEADERS([X11/extensions/Xdamage.h], [],
6689 [AC_MSG_ERROR([Couldn't find X11/extensions/Xdamage.h which is required for composited plugins.])])
6690 AC_CHECK_LIB(Xcomposite, XCompositeRedirectWindow, [XCOMPOSITE_LIBS="-lXcomposite -lXdamage -lXfixes"],
6691 [MISSING_X="$MISSING_X -lXcomposite"], $XLIBS)
6693 AC_SUBST(XCOMPOSITE_LIBS)
6695 PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime, _LIB_FOUND=1, _LIB_FOUND=)
6696 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONMIME_LIBS"
6697 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONMIME_CFLAGS"
6698 if test -z "$_LIB_FOUND"; then
6699 AC_MSG_ERROR([Hildon Mime is required when building for Maemo])
6703 PKG_CHECK_MODULES(LIBOSSO,libosso, _LIB_FOUND=1, _LIB_FOUND=)
6704 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBOSSO_LIBS"
6705 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBOSSO_CFLAGS"
6706 if test -z "$_LIB_FOUND"; then
6707 AC_MSG_ERROR([LibOSSO is required when building for Maemo])
6710 PKG_CHECK_MODULES(LIBHILDONFM,hildon-fm-2, _LIB_FOUND=1, _LIB_FOUND=)
6711 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONFM_LIBS"
6712 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONFM_CFLAGS"
6713 if test -z "$_LIB_FOUND"; then
6714 AC_MSG_ERROR([Hildon FM-2 is required when building for Maemo])
6718 if test $MOZ_PLATFORM_MAEMO = 6; then
6720 PKG_CHECK_MODULES(LIBCONTENTMANAGER, ContentManager QtSparql,
6723 if test "$_LIB_FOUND"; then
6724 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTMANAGER_LIBS"
6725 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTMANAGER_CFLAGS"
6726 MOZ_ENABLE_CONTENTMANAGER=1
6727 AC_DEFINE(MOZ_ENABLE_CONTENTMANAGER)
6729 AC_MSG_WARN([Cannot find libcontentmanager and or QtSparql building for Maemo 6])
6731 AC_SUBST(MOZ_ENABLE_CONTENTMANAGER)
6733 dnl ========================================================
6734 dnl = Enable meego libcontentaction
6735 dnl ========================================================
6736 MOZ_ARG_ENABLE_BOOL(meegocontentaction,
6737 [ --enable-meegocontentaction Enable meegocontentaction support],
6738 MOZ_MEEGOCONTENTACTION=1,
6739 MOZ_MEEGOCONTENTACTION=)
6741 if test -n "$MOZ_MEEGOCONTENTACTION"; then
6743 PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=)
6744 if test "$_LIB_FOUND"; then
6745 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTACTION_LIBS"
6746 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTACTION_CFLAGS"
6747 MOZ_ENABLE_CONTENTACTION=1
6748 AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
6749 AC_SUBST(MOZ_ENABLE_CONTENTACTION)
6753 MOZ_ARG_ENABLE_BOOL(meegotouch,
6754 [ --enable-meegotouch Enable meegotouch support],
6755 MOZ_MEEGOTOUCHENABLED=1,
6756 MOZ_MEEGOTOUCHENABLED=)
6758 if test -n "$MOZ_MEEGOTOUCHENABLED"; then
6759 PKG_CHECK_MODULES(MOZ_MEEGOTOUCH, meegotouchcore, _LIB_FOUND=1, _LIB_FOUND=)
6760 if test "$_LIB_FOUND"; then
6761 MOZ_QT_CFLAGS="$MOZ_MEEGOTOUCH_CFLAGS $MOZ_QT_CFLAGS"
6762 MOZ_QT_LIBS="$MOZ_MEEGOTOUCH_LIBS $MOZ_QT_LIBS"
6763 AC_DEFINE(MOZ_ENABLE_MEEGOTOUCH)
6765 AC_MSG_WARN([Cannot meegotouchcore-dev. Disabling Meegotouch support.])
6770 PKG_CHECK_MODULES(LIBLOCATION,liblocation, _LIB_FOUND=1, _LIB_FOUND=)
6771 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBLOCATION_LIBS"
6772 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBLOCATION_CFLAGS"
6773 if test "$_LIB_FOUND"; then
6774 MOZ_MAEMO_LIBLOCATION=1
6775 AC_DEFINE(MOZ_MAEMO_LIBLOCATION)
6777 AC_MSG_WARN([Cannot liblocation-dev. Disabling Maemo geolocation.])
6779 AC_SUBST(MOZ_MAEMO_LIBLOCATION)
6781 PKG_CHECK_MODULES(LIBMEEGOTOUCHSHARE, ShareUiInterface-maemo-meegotouch >= 0.3.31 mdatauri, _LIB_FOUND=1, _LIB_FOUND=)
6782 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBMEEGOTOUCHSHARE_LIBS"
6783 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBMEEGOTOUCHSHARE_CFLAGS"
6784 if test "$_LIB_FOUND"; then
6785 MOZ_ENABLE_MEEGOTOUCHSHARE=1
6786 AC_DEFINE(MOZ_ENABLE_MEEGOTOUCHSHARE)
6788 AC_MSG_WARN([Cannot find maemo-meegotouch-interfaces-dev or libmdatauri-dev. Disabling meegotouch share ui.])
6790 AC_SUBST(MOZ_ENABLE_MEEGOTOUCHSHARE)
6792 AC_SUBST(MOZ_PLATFORM_MAEMO_LIBS)
6793 AC_SUBST(MOZ_PLATFORM_MAEMO_CFLAGS)
6796 dnl ========================================================
6798 dnl ========================================================
6800 MOZ_ARG_WITH_STRING(gl-provider,
6801 [ --with-gl-provider=ID
6802 Set GL provider backend type],
6803 [ val=`echo $withval`
6804 MOZ_GL_PROVIDER="$val"])
6806 if test -n "$MOZ_GL_PROVIDER"; then
6807 MOZ_GL_DEFAULT_PROVIDER=$MOZ_GL_PROVIDER
6808 AC_SUBST(MOZ_GL_PROVIDER)
6809 AC_DEFINE_UNQUOTED(MOZ_GL_PROVIDER, GLContextProvider$MOZ_GL_PROVIDER)
6811 AC_SUBST(MOZ_GL_DEFAULT_PROVIDER)
6812 AC_DEFINE_UNQUOTED(GL_PROVIDER_$MOZ_GL_DEFAULT_PROVIDER)
6814 dnl ========================================================
6815 dnl = faststripe theme
6816 dnl ========================================================
6817 MOZ_ARG_ENABLE_BOOL(faststripe,
6818 [ --enable-faststripe Use faststripe theme],
6819 MOZ_THEME_FASTSTRIPE=1,
6820 MOZ_THEME_FASTSTRIPE= )
6821 AC_SUBST(MOZ_THEME_FASTSTRIPE)
6823 dnl ========================================================
6825 dnl = Feature options that require extra sources to be pulled
6827 dnl ========================================================
6828 dnl MOZ_ARG_HEADER(Features that require extra sources)
6830 dnl ========================================================
6832 dnl = Debugging Options
6834 dnl ========================================================
6835 MOZ_ARG_HEADER(Debugging and Optimizations)
6837 dnl ========================================================
6838 dnl = Disable building with debug info.
6839 dnl = Debugging is OFF by default
6840 dnl ========================================================
6841 if test -z "$MOZ_DEBUG_FLAGS"; then
6842 MOZ_DEBUG_FLAGS="-g"
6845 MOZ_ARG_ENABLE_STRING(debug,
6846 [ --enable-debug[=DBG] Enable building with developer debug info
6847 (using compiler flags DBG)],
6848 [ if test "$enableval" != "no"; then
6850 if test -n "$enableval" -a "$enableval" != "yes"; then
6851 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6852 _MOZ_DEBUG_FLAGS_SET=1
6859 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG -DTRACING"
6860 MOZ_ARG_WITH_STRING(debug-label,
6861 [ --with-debug-label=LABELS
6862 Define DEBUG_<value> for each comma-separated
6864 [ for option in `echo $withval | sed 's/,/ /g'`; do
6865 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${option}"
6868 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6870 if test -n "$MOZ_DEBUG"; then
6871 AC_MSG_CHECKING([for valid debug flags])
6872 _SAVE_CFLAGS=$CFLAGS
6873 CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6874 AC_TRY_COMPILE([#include <stdio.h>],
6875 [printf("Hello World\n");],
6878 AC_MSG_RESULT([$_results])
6879 if test "$_results" = "no"; then
6880 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6882 CFLAGS=$_SAVE_CFLAGS
6885 dnl ========================================================
6886 dnl enable mobile optimizations
6887 dnl ========================================================
6888 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
6889 [ --enable-mobile-optimize
6890 Enable mobile optimizations],
6891 MOZ_GFX_OPTIMIZE_MOBILE=1)
6893 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
6895 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
6896 AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
6899 dnl ========================================================
6900 dnl = Enable code optimization. ON by default.
6901 dnl ========================================================
6902 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6903 MOZ_OPTIMIZE_FLAGS="-O"
6906 MOZ_ARG_ENABLE_STRING(optimize,
6907 [ --disable-optimize Disable compiler optimization
6908 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6909 [ if test "$enableval" != "no"; then
6911 if test -n "$enableval" -a "$enableval" != "yes"; then
6912 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6917 fi ], MOZ_OPTIMIZE=1)
6919 MOZ_SET_FRAMEPTR_FLAGS
6921 if test "$COMPILE_ENVIRONMENT"; then
6922 if test -n "$MOZ_OPTIMIZE"; then
6923 AC_MSG_CHECKING([for valid optimization flags])
6924 _SAVE_CFLAGS=$CFLAGS
6925 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6926 AC_TRY_COMPILE([#include <stdio.h>],
6927 [printf("Hello World\n");],
6930 AC_MSG_RESULT([$_results])
6931 if test "$_results" = "no"; then
6932 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6934 CFLAGS=$_SAVE_CFLAGS
6936 fi # COMPILE_ENVIRONMENT
6938 AC_SUBST(MOZ_OPTIMIZE)
6939 AC_SUBST(MOZ_FRAMEPTR_FLAGS)
6940 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6941 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6942 AC_SUBST(MOZ_ALLOW_HEAP_EXECUTE_FLAGS)
6943 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6944 AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS)
6946 dnl ========================================================
6947 dnl = Enable generation of debug symbols
6948 dnl ========================================================
6949 MOZ_ARG_ENABLE_STRING(debug-symbols,
6950 [ --enable-debug-symbols[=DBG]
6951 Enable debugging symbols (using compiler flags DBG)],
6952 [ if test "$enableval" != "no"; then
6954 if test -n "$enableval" -a "$enableval" != "yes"; then
6955 if test -z "$_MOZ_DEBUG_FLAGS_SET"; then
6956 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6958 AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
6964 MOZ_DEBUG_SYMBOLS=1)
6966 if test -n "$MOZ_DEBUG" -o -n "$MOZ_DEBUG_SYMBOLS"; then
6967 AC_DEFINE(MOZ_DEBUG_SYMBOLS)
6968 export MOZ_DEBUG_SYMBOLS
6971 dnl ========================================================
6972 dnl = Enable any treating of compile warnings as errors
6973 dnl ========================================================
6974 MOZ_ARG_ENABLE_BOOL(warnings-as-errors,
6975 [ --enable-warnings-as-errors
6976 Enable treating of warnings as errors],
6977 MOZ_ENABLE_WARNINGS_AS_ERRORS=1,
6978 MOZ_ENABLE_WARNINGS_AS_ERRORS=)
6979 if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
6980 WARNINGS_AS_ERRORS=''
6983 dnl ========================================================
6984 dnl = Disable runtime logging checks
6985 dnl ========================================================
6986 MOZ_ARG_DISABLE_BOOL(logging,
6987 [ --disable-logging Disable logging facilities],
6988 NS_DISABLE_LOGGING=1,
6989 NS_DISABLE_LOGGING= )
6990 if test "$NS_DISABLE_LOGGING"; then
6991 AC_DEFINE(NS_DISABLE_LOGGING)
6993 AC_DEFINE(MOZ_LOGGING)
6996 dnl ========================================================
6997 dnl = This will enable logging of addref, release, ctor, dtor.
6998 dnl ========================================================
6999 _ENABLE_LOGREFCNT=42
7000 MOZ_ARG_ENABLE_BOOL(logrefcnt,
7001 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
7002 _ENABLE_LOGREFCNT=1,
7003 _ENABLE_LOGREFCNT= )
7004 if test "$_ENABLE_LOGREFCNT" = "1"; then
7005 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
7006 elif test -z "$_ENABLE_LOGREFCNT"; then
7007 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
7010 dnl ========================================================
7011 dnl moz_dump_painting
7012 dnl ========================================================
7013 MOZ_ARG_ENABLE_BOOL(dump-painting,
7014 [ --enable-dump-painting Enable paint debugging.],
7015 MOZ_DUMP_PAINTING=1,
7016 MOZ_DUMP_PAINTING= )
7017 if test -n "$MOZ_DUMP_PAINTING"; then
7018 AC_DEFINE(MOZ_DUMP_PAINTING)
7019 AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
7021 if test -n "$MOZ_DEBUG"; then
7022 AC_DEFINE(MOZ_DUMP_PAINTING)
7025 dnl ========================================================
7026 dnl = Enable trace malloc
7027 dnl ========================================================
7028 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
7029 MOZ_ARG_ENABLE_BOOL(trace-malloc,
7030 [ --enable-trace-malloc Enable malloc tracing; also disables DMD and jemalloc],
7033 if test "$NS_TRACE_MALLOC"; then
7034 # Please, Mr. Linker Man, don't take away our symbol names
7035 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7037 AC_DEFINE(NS_TRACE_MALLOC)
7039 AC_SUBST(NS_TRACE_MALLOC)
7041 dnl ========================================================
7043 dnl ========================================================
7045 MOZ_ARG_ENABLE_BOOL(dmd,
7046 [ --enable-dmd Enable DMD; also enables jemalloc and replace-malloc],
7050 if test "$NS_TRACE_MALLOC"; then # trace-malloc disables DMD
7053 if test "$MOZ_DMD"; then
7057 if test "${CPU_ARCH}" = "arm"; then
7058 CFLAGS="$CFLAGS -funwind-tables"
7059 CXXFLAGS="$CXXFLAGS -funwind-tables"
7062 MOZ_MEMORY=1 # DMD enables jemalloc
7063 MOZ_REPLACE_MALLOC=1 # DMD enables replace-malloc
7067 dnl ========================================================
7068 dnl = Enable jemalloc
7069 dnl ========================================================
7070 MOZ_ARG_ENABLE_BOOL(jemalloc,
7071 [ --enable-jemalloc Replace memory allocator with jemalloc],
7075 if test "$NS_TRACE_MALLOC"; then
7079 if test "${OS_TARGET}" = "Android"; then
7080 dnl On Android, we use WRAP_LDFLAGS to link everything to mozglue
7082 elif test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin" -o "${OS_TARGET}" = "OS2"; then
7083 dnl On Windows, OSX and OS2, we want to link all our binaries against mozglue
7084 if test -z "$GNU_CC"; then
7085 MOZ_GLUE_LDFLAGS='$(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
7087 MOZ_GLUE_LDFLAGS='-L$(LIBXUL_DIST)/lib $(call EXPAND_LIBNAME,mozglue)'
7090 dnl On other Unix systems, we only want to link executables against mozglue
7091 MOZ_GLUE_PROGRAM_LDFLAGS='$(MKSHLIB_FORCE_ALL) $(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
7092 dnl On other Unix systems, where mozglue is a static library, jemalloc is
7093 dnl separated for the SDK, so we need to add it here.
7094 if test "$MOZ_MEMORY" = 1 -o \( "$LIBXUL_SDK" -a -f "$LIBXUL_SDK/lib/${LIB_PREFIX}memory.${LIB_SUFFIX}" \); then
7095 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(call EXPAND_LIBNAME_PATH,memory,$(LIBXUL_DIST)/lib)'
7097 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(MKSHLIB_UNFORCE_ALL)'
7098 if test -n "$GNU_CC"; then
7099 dnl And we need mozglue symbols to be exported.
7100 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS -rdynamic"
7102 if test "$MOZ_LINKER" = 1; then
7103 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS $MOZ_ZLIB_LIBS"
7107 dnl ========================================================
7108 dnl = Enable dynamic replacement of malloc implementation
7109 dnl ========================================================
7110 MOZ_ARG_ENABLE_BOOL(replace-malloc,
7111 [ --enable-replace-malloc Enable ability to dynamically replace the malloc implementation],
7112 MOZ_REPLACE_MALLOC=1,
7113 MOZ_REPLACE_MALLOC= )
7115 if test -n "$MOZ_REPLACE_MALLOC" -a -z "$MOZ_MEMORY"; then
7116 dnl We don't want to enable jemalloc unconditionally because it may be a
7117 dnl deliberate choice not to enable it (bug 702250, for instance)
7118 AC_MSG_ERROR([--enable-replace-malloc requires --enable-jemalloc])
7119 elif test -n "$MOZ_REPLACE_MALLOC"; then
7120 MOZ_NATIVE_JEMALLOC=
7122 dnl Replace-malloc Mac linkage quirks
7123 if test -n "$MACOSX_DEPLOYMENT_TARGET"; then
7124 AC_CACHE_CHECK([how to do weak dynamic linking],
7125 ac_cv_weak_dynamic_linking,
7126 [echo 'extern void foo() __attribute__((weak_import));int bar() { if (foo) foo(); return 0; }' > conftest.c
7127 if AC_TRY_COMMAND([${CC-cc} -o conftest${DLL_SUFFIX} $CFLAGS -dynamiclib $LDFLAGS -Wl,-U,_foo conftest.c $LIBS 1>&5]) &&
7128 test -s conftest${DLL_SUFFIX}; then
7129 dnl There are several ways the linker can put link edit rules in a binary:
7130 dnl - classic info only (for OSX < 10.6)
7131 dnl - dyld info only
7133 if otool -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO_ONLY" > /dev/null; then
7138 if otool -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO" > /dev/null; then
7143 dnl With classic info, we need to build with -flat_namespace.
7144 dnl With dyld info, Xcode 4.5 does the right thing without additional flags,
7145 dnl but Xcode < 4.5 requires a dummy library and -flat_namespace because it
7146 dnl forgets to set the weak flag in the dyld info.
7147 dnl See http://glandium.org/blog/?p=2764 for more details.
7149 dnl Values for ac_cv_weak_dynamic_linking, and subsequently
7150 dnl MOZ_REPLACE_MALLOC_LINKAGE are thus:
7151 dnl - "flat namespace" when -flat_namespace alone is needed
7152 dnl - "dummy library" when a dummy library and -flat_namespace are needed
7153 dnl - "compiler support" when nothing is needed
7154 if test -n "$_DYLD_INFO" && dyldinfo -bind conftest${DLL_SUFFIX} 2> /dev/null | grep "_foo (weak import)" > /dev/null; then
7155 if test -n "$_CLASSIC_INFO"; then
7156 ac_cv_weak_dynamic_linking="flat namespace"
7158 ac_cv_weak_dynamic_linking="compiler support"
7161 if test -n "$_DYLD_INFO"; then
7162 ac_cv_weak_dynamic_linking="dummy library"
7164 ac_cv_weak_dynamic_linking="flat namespace"
7168 AC_ERROR([couldn't compile a simple C file])
7171 MOZ_REPLACE_MALLOC_LINKAGE="$ac_cv_weak_dynamic_linking"
7174 AC_SUBST(MOZ_REPLACE_MALLOC)
7175 AC_SUBST(MOZ_REPLACE_MALLOC_LINKAGE)
7177 dnl ========================================================
7178 dnl = Jemalloc build setup
7179 dnl ========================================================
7180 if test -z "$MOZ_MEMORY"; then
7181 if test -n "$MOZ_JEMALLOC3" -a -z "$MOZ_REPLACE_MALLOC"; then
7182 MOZ_NATIVE_JEMALLOC=1
7183 AC_CHECK_FUNCS(mallctl nallocm,,
7184 [MOZ_NATIVE_JEMALLOC=
7186 if test -n "$MOZ_NATIVE_JEMALLOC"; then
7188 AC_DEFINE(MOZ_MEMORY)
7189 AC_DEFINE(MOZ_JEMALLOC3)
7190 AC_DEFINE(MOZ_NATIVE_JEMALLOC)
7195 if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
7196 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.])
7201 dnl Don't try to run compiler tests on Windows
7202 if test "$OS_ARCH" = "WINNT"; then
7203 if test -z "$HAVE_64BIT_OS"; then
7204 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7206 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7209 AC_CHECK_SIZEOF([int *], [4])
7210 case "${ac_cv_sizeof_int_p}" in
7212 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7215 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7218 AC_MSG_ERROR([Unexpected pointer size])
7223 AC_DEFINE(MOZ_MEMORY)
7224 if test -n "$MOZ_JEMALLOC3"; then
7225 AC_DEFINE(MOZ_JEMALLOC3)
7227 if test "x$MOZ_DEBUG" = "x1"; then
7228 AC_DEFINE(MOZ_MEMORY_DEBUG)
7230 dnl The generic feature tests that determine how to compute ncpus are long and
7231 dnl complicated. Therefore, simply define special cpp variables for the
7232 dnl platforms we have special knowledge of.
7235 AC_DEFINE(MOZ_MEMORY_DARWIN)
7238 AC_DEFINE(MOZ_MEMORY_BSD)
7240 *-android*|*-linuxandroid*)
7241 AC_DEFINE(MOZ_MEMORY_LINUX)
7242 AC_DEFINE(MOZ_MEMORY_ANDROID)
7243 if test -z "$gonkdir"; then
7246 AC_DEFINE(MOZ_MEMORY_GONK)
7251 AC_DEFINE(MOZ_MEMORY_LINUX)
7254 AC_DEFINE(MOZ_MEMORY_BSD)
7257 AC_DEFINE(MOZ_MEMORY_SOLARIS)
7260 AC_DEFINE(MOZ_MEMORY_WINDOWS)
7261 if test -z "$MOZ_DEBUG"; then
7262 WIN32_CRT_LIBS="msvcrt.lib msvcprt.lib"
7264 WIN32_CRT_LIBS="msvcrtd.lib msvcprtd.lib"
7266 dnl Look for a broken crtdll.obj
7267 WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj`
7268 lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH
7269 if grep -q '__imp__\{0,1\}free' crtdll.obj; then
7270 MOZ_GLUE_LDFLAGS='-LIBPATH:$(DIST)/lib -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt'
7271 dnl Also pass this to NSPR/NSS
7272 DLLFLAGS="$DLLFLAGS $MOZ_GLUE_LDFLAGS"
7274 DLLFLAGS="$DLLFLAGS -LIBPATH:\$(DIST)/lib -DEFAULTLIB:mozglue"
7281 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7285 AC_SUBST(MOZ_MEMORY)
7286 AC_SUBST(MOZ_JEMALLOC3)
7287 AC_SUBST(MOZ_NATIVE_JEMALLOC)
7288 AC_SUBST(MOZ_GLUE_LDFLAGS)
7289 AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS)
7290 AC_SUBST(WIN32_CRT_LIBS)
7291 dnl Need to set this for make because NSS doesn't have configure
7294 dnl We need to wrap dlopen and related functions on Android because we use
7296 if test "$OS_TARGET" = Android; then
7297 WRAP_LDFLAGS="${WRAP_LDFLAGS} -L$_objdir/dist/lib -lmozglue"
7298 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=getaddrinfo,--wrap=freeaddrinfo,--wrap=gai_strerror"
7299 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=PR_GetEnv,--wrap=PR_SetEnv"
7300 if test -z "$gonkdir"; then
7301 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=fork,--wrap=pthread_atfork,--wrap=raise"
7302 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"
7306 dnl ========================================================
7307 dnl = Use malloc wrapper lib
7308 dnl ========================================================
7309 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
7310 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
7314 if test -n "$_WRAP_MALLOC"; then
7315 if test -n "$GNU_CC"; then
7316 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=malloc,--wrap=calloc,--wrap=valloc,--wrap=free,--wrap=realloc,--wrap=memalign"
7317 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=__builtin_new,--wrap=__builtin_vec_new,--wrap=__builtin_delete,--wrap=__builtin_vec_delete"
7318 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=strdup,--wrap=strndup"
7319 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=posix_memalign,--wrap=malloc_usable_size"
7320 dnl Wrap operator new and operator delete on Android.
7321 if test "$OS_TARGET" = "Android"; then
7322 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_Znwj,--wrap=_Znaj,--wrap=_ZdlPv,--wrap=_ZdaPv"
7323 dnl Wrap the nothrow variants too.
7324 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_ZnwjRKSt9nothrow_t,--wrap=_ZnajRKSt9nothrow_t,--wrap=_ZdlPvRKSt9nothrow_t,--wrap=_ZdaPvRKSt9nothrow_t"
7327 AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains])
7331 dnl ========================================================
7332 dnl = Location of malloc wrapper lib
7333 dnl ========================================================
7334 MOZ_ARG_WITH_STRING(wrap-malloc,
7335 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
7336 WRAP_LDFLAGS="${WRAP_LDFLAGS} $withval")
7338 dnl ========================================================
7339 dnl = Use JS Call tracing
7340 dnl ========================================================
7341 MOZ_ARG_ENABLE_BOOL(trace-jscalls,
7342 [ --enable-trace-jscalls Enable JS call enter/exit callback (default=no)],
7343 MOZ_TRACE_JSCALLS=1,
7344 MOZ_TRACE_JSCALLS= )
7345 if test -n "$MOZ_TRACE_JSCALLS"; then
7346 AC_DEFINE(MOZ_TRACE_JSCALLS)
7349 dnl ========================================================
7350 dnl = Use incremental GC
7351 dnl ========================================================
7353 MOZ_ARG_DISABLE_BOOL(gcincremental,
7354 [ --disable-gcincremental Disable incremental GC],
7356 if test -n "$JSGC_INCREMENTAL"; then
7357 AC_DEFINE(JSGC_INCREMENTAL)
7360 dnl ========================================================
7361 dnl ETW - Event Tracing for Windows
7362 dnl ========================================================
7363 MOZ_ARG_ENABLE_BOOL(ETW,
7364 [ --enable-ETW Enable ETW (Event Tracing for Windows) event reporting],
7367 if test -n "$MOZ_ETW"; then
7371 if test -n "$MOZ_ETW"; then
7372 if test -z "$MOZ_WINSDK_TARGETVER"; then
7373 AC_MSG_ERROR([--enable-ETW is only valid on Windows])
7377 dnl ========================================================
7378 dnl Zealous JavaScript GC
7379 dnl ========================================================
7380 MOZ_ARG_ENABLE_BOOL(gczeal,
7381 [ --enable-gczeal Enable zealous JavaScript GCing],
7384 if test -n "$JS_GC_ZEAL"; then
7385 AC_DEFINE(JS_GC_ZEAL)
7388 dnl ========================================================
7389 dnl JS opt-mode assertions and minidump instrumentation
7390 dnl ========================================================
7391 MOZ_ARG_ENABLE_BOOL(js-diagnostics,
7392 [ --enable-js-diagnostics
7393 Enable JS diagnostic assertions and breakpad data],
7394 JS_CRASH_DIAGNOSTICS=1,
7395 JS_CRASH_DIAGNOSTICS= )
7396 if test -n "$JS_CRASH_DIAGNOSTICS"; then
7397 AC_DEFINE(JS_CRASH_DIAGNOSTICS)
7402 dnl ========================================================
7403 dnl = Enable static checking using gcc-dehydra
7404 dnl ========================================================
7406 MOZ_ARG_WITH_STRING(static-checking,
7407 [ --with-static-checking=path/to/gcc_dehydra.so
7408 Enable static checking of code using GCC-dehydra],
7409 DEHYDRA_PATH=$withval,
7412 if test -n "$DEHYDRA_PATH"; then
7413 if test ! -f "$DEHYDRA_PATH"; then
7414 AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7416 AC_DEFINE(NS_STATIC_CHECKING)
7418 AC_SUBST(DEHYDRA_PATH)
7420 dnl ========================================================
7421 dnl = Enable stripping of libs & executables
7422 dnl ========================================================
7423 MOZ_ARG_ENABLE_BOOL(strip,
7424 [ --enable-strip Enable stripping of libs & executables ],
7428 dnl ========================================================
7429 dnl = Enable stripping of libs & executables when packaging
7430 dnl ========================================================
7431 MOZ_ARG_ENABLE_BOOL(install-strip,
7432 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
7436 dnl ========================================================
7437 dnl = --enable-elf-dynstr-gc
7438 dnl ========================================================
7439 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
7440 [ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
7441 USE_ELF_DYNSTR_GC=1,
7442 USE_ELF_DYNSTR_GC= )
7444 dnl ========================================================
7445 dnl = --disable-elf-hack
7446 dnl ========================================================
7449 MOZ_ARG_DISABLE_BOOL(elf-hack,
7450 [ --disable-elf-hack Disable elf hacks],
7454 # Disable elf hack for profiling because the built in profiler
7455 # doesn't read the segments properly with elf hack. This is
7456 # temporary and should be fixed soon in the profiler.
7457 if test "$MOZ_PROFILING" = 1; then
7461 # Only enable elfhack where supported
7462 if test "$USE_ELF_HACK" = 1; then
7463 case "${HOST_OS_ARCH},${OS_ARCH}" in
7465 case "${CPU_ARCH}" in
7480 if test "$USE_ELF_HACK" = 1; then
7481 dnl PT_GNU_RELRO segment makes the dynamic linker set a read-only flag on
7482 dnl memory addresses it maps to. The result is that by the time elfhack
7483 dnl kicks in, it is not possible to apply relocations because of that,
7484 dnl thus elfhack effectively skips relocations inside the PT_GNU_RELRO
7485 dnl segment. It makes elfhack mostly useless, so considering the problems
7486 dnl we have we PT_GNU_RELRO (e.g. bug 664366), and until elfhack can deal
7487 dnl with PT_GNU_RELRO segments, it's just simpler to disable elfhack when
7488 dnl the linker creates PT_GNU_RELRO segments.
7489 AC_CACHE_CHECK([whether linker creates PT_GNU_RELRO segments],
7490 LINK_WITH_PT_GNU_RELRO,
7491 [echo "int main() {return 0;}" > conftest.${ac_ext}
7492 if AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.${ac_ext} $LIBS 1>&2) &&
7493 test -s conftest${ac_exeext}; then
7494 if ${TOOLCHAIN_PREFIX}readelf -l conftest${ac_exeext} | grep GNU_RELRO > /dev/null; then
7495 LINK_WITH_PT_GNU_RELRO=yes
7497 LINK_WITH_PT_GNU_RELRO=no
7500 dnl We really don't expect to get here, but just in case
7501 AC_ERROR([couldn't compile a simple C file])
7504 if test "$LINK_WITH_PT_GNU_RELRO" = yes; then
7505 AC_MSG_WARN([Disabling elfhack])
7510 dnl ========================================================
7511 dnl = libstdc++ compatibility hacks
7512 dnl ========================================================
7515 MOZ_ARG_ENABLE_BOOL(stdcxx-compat,
7516 [ --enable-stdcxx-compat Enable compatibility with older libstdc++],
7519 AC_SUBST(STDCXX_COMPAT)
7521 if test -n "$STDCXX_COMPAT"; then
7522 eval $(CXX="$CXX" $PYTHON $_topsrcdir/build/autoconf/libstdcxx.py)
7523 AC_SUBST(MOZ_LIBSTDCXX_TARGET_VERSION)
7524 AC_SUBST(MOZ_LIBSTDCXX_HOST_VERSION)
7527 dnl ========================================================
7529 dnl = Profiling and Instrumenting
7531 dnl ========================================================
7532 MOZ_ARG_HEADER(Profiling and Instrumenting)
7534 dnl ========================================================
7535 dnl = Enable runtime visual profiling logger
7536 dnl ========================================================
7537 MOZ_ARG_ENABLE_BOOL(visual-event-tracer,
7538 [ --enable-visual-event-tracer Enable visual event tracer instrumentation],
7539 MOZ_VISUAL_EVENT_TRACER=1,
7540 MOZ_VISUAL_EVENT_TRACER=)
7541 if test -n "$MOZ_VISUAL_EVENT_TRACER"; then
7542 AC_DEFINE(MOZ_VISUAL_EVENT_TRACER)
7545 dnl ========================================================
7546 dnl Turn on reflow counting
7547 dnl ========================================================
7548 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7549 [ --enable-reflow-perf Enable reflow performance tracing],
7552 if test -n "$MOZ_REFLOW_PERF"; then
7553 AC_DEFINE(MOZ_REFLOW_PERF)
7556 dnl ========================================================
7557 dnl Enable code size metrics.
7558 dnl ========================================================
7559 MOZ_ARG_ENABLE_BOOL(codesighs,
7560 [ --enable-codesighs Enable code size analysis tools],
7561 _ENABLE_CODESIGHS=1,
7562 _ENABLE_CODESIGHS= )
7563 if test -n "$_ENABLE_CODESIGHS"; then
7564 if test -d $srcdir/tools/codesighs; then
7567 AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
7571 dnl ========================================================
7572 dnl = Enable Radio Interface for B2G (Gonk usually)
7573 dnl ========================================================
7574 MOZ_ARG_ENABLE_BOOL(b2g-ril,
7575 [ --enable-b2g-ril Set compile flags necessary for testing B2G Radio Interface Layer via network sockets ],
7578 if test -n "$MOZ_B2G_RIL"; then
7579 AC_DEFINE(MOZ_B2G_RIL)
7581 AC_SUBST(MOZ_B2G_RIL)
7583 dnl ========================================================
7584 dnl = Enable Radio FM for B2G (Gonk usually)
7585 dnl ========================================================
7586 if test -n "$MOZ_B2G_FM"; then
7587 AC_DEFINE(MOZ_B2G_FM)
7589 AC_SUBST(MOZ_B2G_FM)
7591 dnl ========================================================
7592 dnl = Enable Bluetooth Interface for B2G (Gonk usually)
7593 dnl ========================================================
7594 MOZ_ARG_ENABLE_BOOL(b2g-bt,
7595 [ --enable-b2g-bt Set compile flags necessary for compiling Bluetooth API for B2G ],
7598 if test -n "$MOZ_B2G_BT"; then
7599 AC_DEFINE(MOZ_B2G_BT)
7601 AC_SUBST(MOZ_B2G_BT)
7603 dnl ========================================================
7604 dnl = Enable Support for System Messages API
7605 dnl ========================================================
7606 if test -n "$MOZ_SYS_MSG"; then
7607 AC_DEFINE(MOZ_SYS_MSG)
7609 AC_SUBST(MOZ_SYS_MSG)
7611 dnl ========================================================
7612 dnl = Enable Support for Time Manager API
7613 dnl ========================================================
7614 if test -n "$MOZ_TIME_MANAGER"; then
7615 AC_DEFINE(MOZ_TIME_MANAGER)
7617 AC_SUBST(MOZ_TIME_MANAGER)
7619 dnl ========================================================
7620 dnl = Enable Camera Interface for B2G (Gonk usually)
7621 dnl ========================================================
7622 MOZ_ARG_ENABLE_BOOL(b2g-camera,
7623 [ --enable-b2g-camera Set compile flags necessary for compiling camera API for B2G ],
7626 if test -n "$MOZ_B2G_CAMERA"; then
7627 AC_DEFINE(MOZ_B2G_CAMERA)
7629 AC_SUBST(MOZ_B2G_CAMERA)
7631 dnl ========================================================
7632 dnl = Enable Support B2G-specific changes to the NSS
7633 dnl = certificate trust database.
7634 dnl ========================================================
7635 if test -n "$MOZ_B2G_CERTDATA"; then
7636 AC_DEFINE(MOZ_B2G_CERTDATA)
7638 AC_SUBST(MOZ_B2G_CERTDATA)
7640 dnl ========================================================
7641 dnl = Enable Support for Payment API
7642 dnl ========================================================
7643 if test -n "$MOZ_PAY"; then
7648 dnl ========================================================
7649 dnl = Enable Support for AudioChannelManager API
7650 dnl ========================================================
7651 if test -n "$MOZ_AUDIO_CHANNEL_MANAGER"; then
7652 AC_DEFINE(MOZ_AUDIO_CHANNEL_MANAGER)
7654 AC_SUBST(MOZ_AUDIO_CHANNEL_MANAGER)
7656 dnl ========================================================
7657 dnl = Support for demangling undefined symbols
7658 dnl ========================================================
7659 if test -z "$SKIP_LIBRARY_CHECKS"; then
7662 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7666 # Demangle only for debug or trace-malloc or DMD builds
7667 MOZ_DEMANGLE_SYMBOLS=
7668 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC" -o "$MOZ_DMD"; then
7669 MOZ_DEMANGLE_SYMBOLS=1
7670 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7672 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7674 dnl ========================================================
7675 dnl = Support for gcc stack unwinding (from gcc 3.3)
7676 dnl ========================================================
7677 if test -z "$SKIP_LIBRARY_CHECKS"; then
7678 MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7681 dnl ========================================================
7683 dnl ========================================================
7685 MOZ_ARG_WITH_STRING(jitreport-granularity,
7686 [ --jitreport-granularity=N
7687 Default granularity at which to report JIT code
7690 1 - code ranges for whole functions only
7691 2 - per-line information
7692 3 - per-op information],
7693 JITREPORT_GRANULARITY=$withval,
7694 JITREPORT_GRANULARITY=3)
7696 AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY)
7698 dnl ========================================================
7702 dnl ========================================================
7703 MOZ_ARG_HEADER(Misc. Options)
7705 dnl ========================================================
7706 dnl update xterm title
7707 dnl ========================================================
7708 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7709 [ --enable-xterm-updates Update XTERM titles with current command.],
7713 dnl =========================================================
7715 dnl =========================================================
7716 MOZ_ARG_ENABLE_STRING([chrome-format],
7717 [ --enable-chrome-format=jar|flat|both|symlink|omni
7718 Select FORMAT of chrome files (default=jar)],
7719 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7721 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7722 MOZ_CHROME_FILE_FORMAT=jar
7725 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
7726 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7727 test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
7728 test "$MOZ_CHROME_FILE_FORMAT" != "both" &&
7729 test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7730 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, symlink, or omni])
7733 dnl =========================================================
7734 dnl Omnijar packaging (bug 552121)
7735 dnl =========================================================
7736 dnl Omnijar packaging is compatible with flat packaging.
7737 dnl In unpackaged builds, omnijar looks for files as if
7738 dnl things were flat packaged. After packaging, all files
7739 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7740 dnl is set to flat since putting files into jars is only
7741 dnl done during packaging with omnijar.
7742 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7744 AC_DEFINE(MOZ_OMNIJAR)
7746 MOZ_PACKAGER_FORMAT="$MOZ_CHROME_FILE_FORMAT"
7747 if test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "OS2" -o "$MOZ_WIDGET_TOOLKIT" = "android"; then
7748 MOZ_CHROME_FILE_FORMAT=flat
7750 MOZ_CHROME_FILE_FORMAT=symlink
7753 OMNIJAR_NAME=omni.ja
7754 AC_SUBST(OMNIJAR_NAME)
7755 AC_SUBST(MOZ_OMNIJAR)
7756 AC_SUBST(MOZ_PACKAGER_FORMAT)
7758 dnl ========================================================
7759 dnl = Define default location for MOZILLA_FIVE_HOME
7760 dnl ========================================================
7761 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7762 [ --with-default-mozilla-five-home
7763 Set the default value for MOZILLA_FIVE_HOME],
7764 [ val=`echo $withval`
7765 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7767 dnl ========================================================
7768 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7769 dnl ========================================================
7770 MOZ_ARG_WITH_STRING(user-appdir,
7771 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
7772 [ val=`echo $withval`
7773 if echo "$val" | grep "\/" >/dev/null; then
7774 AC_MSG_ERROR("Homedir must be single relative path.")
7779 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7781 dnl ========================================================
7782 dnl = Doxygen configuration
7783 dnl ========================================================
7784 dnl Use commas to specify multiple dirs to this arg
7785 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7786 MOZ_ARG_WITH_STRING(doc-input-dirs,
7787 [ --with-doc-input-dirs=DIRS
7788 Header/idl dirs to create docs from],
7789 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7790 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7792 dnl Use commas to specify multiple dirs to this arg
7793 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7794 MOZ_ARG_WITH_STRING(doc-include-dirs,
7795 [ --with-doc-include-dirs=DIRS
7796 Include dirs to preprocess doc headers],
7797 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7798 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7800 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7801 MOZ_ARG_WITH_STRING(doc-output-dir,
7802 [ --with-doc-output-dir=DIR
7803 Dir to generate docs into],
7804 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7805 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7807 if test -z "$SKIP_COMPILER_CHECKS"; then
7808 dnl ========================================================
7810 dnl = Compiler Options
7812 dnl ========================================================
7813 MOZ_ARG_HEADER(Compiler Options)
7815 dnl ========================================================
7816 dnl Check for gcc -pipe support
7817 dnl ========================================================
7818 AC_MSG_CHECKING([for -pipe support])
7819 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
7820 dnl Any gcc that supports firefox supports -pipe.
7821 CFLAGS="$CFLAGS -pipe"
7822 CXXFLAGS="$CXXFLAGS -pipe"
7823 AC_MSG_RESULT([yes])
7828 dnl ========================================================
7829 dnl Profile guided optimization (gcc checks)
7830 dnl ========================================================
7831 dnl Test for profiling options
7832 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
7834 _SAVE_CFLAGS="$CFLAGS"
7835 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
7837 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
7838 AC_TRY_COMPILE([], [return 0;],
7839 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
7840 result="yes" ], result="no")
7841 AC_MSG_RESULT([$result])
7843 if test $result = "yes"; then
7844 PROFILE_GEN_LDFLAGS="-fprofile-generate"
7845 PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch"
7846 PROFILE_USE_LDFLAGS="-fprofile-use"
7849 CFLAGS="$_SAVE_CFLAGS"
7851 if test -n "$INTEL_CC"; then
7852 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
7853 PROFILE_GEN_LDFLAGS=
7854 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
7855 PROFILE_USE_LDFLAGS=
7858 dnl Sun Studio on Solaris
7859 if test "$SOLARIS_SUNPRO_CC"; then
7860 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
7861 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7862 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7863 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7866 AC_SUBST(PROFILE_GEN_CFLAGS)
7867 AC_SUBST(PROFILE_GEN_LDFLAGS)
7868 AC_SUBST(PROFILE_USE_CFLAGS)
7869 AC_SUBST(PROFILE_USE_LDFLAGS)
7873 dnl ========================================================
7874 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7875 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7876 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
7877 dnl ========================================================
7878 _SAVE_CXXFLAGS=$CXXFLAGS
7879 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7880 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7881 ac_nscap_nonconst_opeq_bug,
7890 template <class T, class U>
7891 int operator==(const Pointer<T>& rhs, U* lhs)
7893 return rhs.myPtr == lhs;
7896 template <class T, class U>
7897 int operator==(const Pointer<T>& rhs, const U* lhs)
7899 return rhs.myPtr == lhs;
7907 ac_nscap_nonconst_opeq_bug="no",
7908 ac_nscap_nonconst_opeq_bug="yes")])
7909 CXXFLAGS="$_SAVE_CXXFLAGS"
7911 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7912 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7914 fi # ! SKIP_COMPILER_CHECKS
7916 AC_DEFINE(CPP_THROW_NEW, [throw()])
7919 if test "$COMPILE_ENVIRONMENT"; then
7921 fi # COMPILE_ENVIRONMENT
7923 dnl ========================================================
7925 dnl = Build depencency options
7927 dnl ========================================================
7928 MOZ_ARG_HEADER(Build dependencies)
7930 if test "$GNU_CC" -a "$GNU_CXX"; then
7931 _DEPEND_CFLAGS='$(filter-out %/.pp,-MD -MF $(MDDEPDIR)/$(@F).pp)'
7932 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7933 elif test "$SOLARIS_SUNPRO_CC"; then
7936 dnl Don't override this for MSVC
7937 if test -z "$_WIN32_MSVC"; then
7938 _USE_CPP_INCLUDE_FLAG=
7939 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7940 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7942 echo '#include <stdio.h>' > dummy-hello.c
7944 CL_INCLUDES_PREFIX=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/^\([^:]*:[^:]*:\).*stdio.h$/\1/p'`
7946 if test -z "$CL_INCLUDES_PREFIX"; then
7947 AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
7949 AC_SUBST(CL_INCLUDES_PREFIX)
7954 dnl ========================================================
7956 dnl = Static Build Options
7958 dnl ========================================================
7959 MOZ_ARG_HEADER(Static build options)
7961 # split JS out by default to avoid VS2005 PGO crash (bug 591836).
7962 if test "$OS_ARCH" = "WINNT"; then
7966 MOZ_ARG_ENABLE_BOOL(shared-js,
7967 [ --enable-shared-js
7968 Create a shared JavaScript library.],
7972 if test -n "$ENABLE_SHARED_JS"; then
7974 MOZ_JS_LIBS="$MOZ_JS_SHARED_LIBS"
7976 MOZ_JS_LIBS="$MOZ_JS_STATIC_LIBS"
7977 AC_DEFINE(MOZ_STATIC_JS)
7979 AC_SUBST(JS_SHARED_LIBRARY)
7981 AC_SUBST(LIBXUL_LIBS)
7982 XPCOM_LIBS="$LIBXUL_LIBS"
7984 dnl ========================================================
7986 dnl = Standalone module options
7988 dnl ========================================================
7989 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7992 dnl ========================================================
7994 if test -z "$SKIP_PATH_CHECKS"; then
7995 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
7996 if test "$MOZ_ENABLE_GTK2" -o "$USE_ELF_DYNSTR_GC" ; then
7997 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
8002 if test -z "${GLIB_GMODULE_LIBS}" \
8003 -a -n "${GLIB_CONFIG}"\
8004 -a "${GLIB_CONFIG}" != no\
8006 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
8009 AC_SUBST(GLIB_CFLAGS)
8011 AC_SUBST(GLIB_GMODULE_LIBS)
8013 dnl ========================================================
8014 dnl Graphics checks.
8015 dnl ========================================================
8017 if test "${OS_TARGET}" = "WINNT" -o "${OS_ARCH}" = "Darwin" -o "${MOZ_WIDGET_TOOLKIT}" = "android" -o "${MOZ_WIDGET_TOOLKIT}" = "gtk2"; then
8023 MOZ_ARG_ENABLE_BOOL(skia,
8024 [ --enable-skia Enable use of Skia],
8028 if test "$USE_FC_FREETYPE"; then
8029 if test "$COMPILE_ENVIRONMENT"; then
8030 dnl ========================================================
8031 dnl = Check for freetype2 and its functionality
8032 dnl ========================================================
8033 PKG_CHECK_MODULES(FT2, freetype2 >= 6.1.0, _HAVE_FREETYPE2=1, _HAVE_FREETYPE2=)
8035 if test "$_HAVE_FREETYPE2"; then
8037 _SAVE_CFLAGS="$CFLAGS"
8038 LIBS="$LIBS $FT2_LIBS"
8039 CFLAGS="$CFLAGS $FT2_CFLAGS"
8041 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
8042 ac_cv_member_FT_Bitmap_Size_y_ppem,
8043 [AC_TRY_COMPILE([#include <ft2build.h>
8044 #include FT_FREETYPE_H],
8046 if (sizeof s.y_ppem) return 0;
8048 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
8049 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
8050 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
8051 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
8053 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
8055 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
8056 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
8057 [FT_Bitmap_Size structure includes y_ppem field])
8059 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
8062 CFLAGS="$_SAVE_CFLAGS"
8065 _SAVE_CPPFLAGS="$CPPFLAGS"
8066 CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
8067 MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
8068 [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
8069 CPPFLAGS="$_SAVE_CPPFLAGS"
8071 AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
8074 PKG_CHECK_MODULES(_FONTCONFIG, fontconfig,
8076 if test "$MOZ_PANGO"; then
8077 MOZ_PANGO_CFLAGS="$MOZ_PANGO_CFLAGS $_FONTCONFIG_CFLAGS"
8078 MOZ_PANGO_LIBS="$MOZ_PANGO_LIBS $_FONTCONFIG_LIBS"
8080 FT2_CFLAGS="$FT2_CFLAGS $_FONTCONFIG_CFLAGS"
8081 FT2_LIBS="$FT2_LIBS $_FONTCONFIG_LIBS"
8086 dnl ========================================================
8087 dnl Check for pixman and cairo
8088 dnl ========================================================
8091 MOZ_ARG_ENABLE_BOOL(system-cairo,
8092 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
8097 MOZ_ARG_ENABLE_BOOL(system-pixman,
8098 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
8100 MOZ_TREE_PIXMAN=force,
8103 # System cairo depends on system pixman
8104 if test "$MOZ_TREE_PIXMAN" = "force"; then
8105 if test -z "$MOZ_TREE_CAIRO"; then
8106 AC_MSG_ERROR([--disable-system-pixman is incompatible with --enable-system-cairo.])
8110 elif test -z "$MOZ_TREE_CAIRO"; then
8114 if test "$MOZ_TREE_PIXMAN"; then
8115 AC_DEFINE(MOZ_TREE_PIXMAN)
8116 MOZ_PIXMAN_CFLAGS=""
8117 MOZ_PIXMAN_LIBS='$(call EXPAND_LIBNAME_PATH,mozlibpixman,$(DEPTH)/gfx/cairo/libpixman/src)'
8119 PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.19.2)
8120 MOZ_PIXMAN_CFLAGS="$PIXMAN_CFLAGS"
8121 MOZ_PIXMAN_LIBS="$PIXMAN_LIBS"
8123 AC_SUBST(MOZ_PIXMAN_CFLAGS)
8124 AC_SUBST(MOZ_PIXMAN_LIBS)
8126 # Check for headers defining standard int types.
8127 MOZ_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
8129 if test "$MOZ_TREE_CAIRO"; then
8130 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
8131 AC_DEFINE(MOZ_TREE_CAIRO)
8133 # For now we assume that we will have a uint64_t available through
8134 # one of the above headers or mozstdint.h.
8135 AC_DEFINE(HAVE_UINT64_T)
8137 # Define macros for cairo-features.h
8138 TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
8139 if test "$MOZ_X11"; then
8140 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
8141 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
8142 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
8143 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8144 MOZ_ENABLE_CAIRO_FT=1
8145 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
8147 case "$MOZ_WIDGET_TOOLKIT" in
8149 QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
8152 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
8153 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
8154 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
8157 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
8158 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
8159 if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
8160 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
8161 WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
8162 MOZ_ENABLE_D2D_SURFACE=1
8163 MOZ_ENABLE_DWRITE_FONT=1
8165 WIN32_DWRITE_FONT_FEATURE=
8166 WIN32_D2D_SURFACE_FEATURE=
8169 MOZ_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
8171 dnl D3D10 Layers depend on D2D Surfaces.
8172 if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
8173 MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
8177 OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
8178 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8179 MOZ_ENABLE_CAIRO_FT=1
8180 CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
8181 CAIRO_FT_OSLIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
8185 if test "$USE_FC_FREETYPE"; then
8186 FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
8188 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
8189 AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
8190 AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
8191 AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
8192 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
8193 AC_SUBST(CAIRO_FT_CFLAGS)
8195 AC_SUBST(PS_SURFACE_FEATURE)
8196 AC_SUBST(PDF_SURFACE_FEATURE)
8197 AC_SUBST(SVG_SURFACE_FEATURE)
8198 AC_SUBST(XLIB_SURFACE_FEATURE)
8199 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
8200 AC_SUBST(QUARTZ_SURFACE_FEATURE)
8201 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
8202 AC_SUBST(WIN32_SURFACE_FEATURE)
8203 AC_SUBST(OS2_SURFACE_FEATURE)
8204 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
8205 AC_SUBST(FT_FONT_FEATURE)
8206 AC_SUBST(FC_FONT_FEATURE)
8207 AC_SUBST(WIN32_FONT_FEATURE)
8208 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
8209 AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
8210 AC_SUBST(QUARTZ_FONT_FEATURE)
8211 AC_SUBST(PNG_FUNCTIONS_FEATURE)
8212 AC_SUBST(QT_SURFACE_FEATURE)
8213 AC_SUBST(TEE_SURFACE_FEATURE)
8215 MOZ_CAIRO_LIBS='$(call EXPAND_LIBNAME_PATH,mozcairo,$(DEPTH)/gfx/cairo/cairo/src)'" $CAIRO_FT_LIBS"
8216 MOZ_CAIRO_OSLIBS='${CAIRO_FT_OSLIBS}'
8218 if test "$MOZ_X11"; then
8219 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
8222 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
8224 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION)
8225 MOZ_CAIRO_CFLAGS="$CAIRO_CFLAGS"
8226 MOZ_CAIRO_LIBS="$CAIRO_LIBS"
8227 PKG_CHECK_MODULES(CAIRO_TEE, cairo-tee >= $CAIRO_VERSION)
8228 if test "$MOZ_X11"; then
8229 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
8230 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
8231 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_LIBS"
8232 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
8236 AC_SUBST(MOZ_TREE_CAIRO)
8237 AC_SUBST(MOZ_CAIRO_CFLAGS)
8238 AC_SUBST(MOZ_CAIRO_LIBS)
8239 AC_SUBST(MOZ_CAIRO_OSLIBS)
8240 AC_SUBST(MOZ_TREE_PIXMAN)
8242 dnl ========================================================
8244 dnl ========================================================
8246 QCMS_LIBS='$(DEPTH)/gfx/qcms/$(LIB_PREFIX)mozqcms.$(LIB_SUFFIX)'
8249 dnl ========================================================
8251 dnl ========================================================
8252 MOZ_HARFBUZZ_LIBS='$(DEPTH)/gfx/harfbuzz/src/$(LIB_PREFIX)mozharfbuzz.$(LIB_SUFFIX)'
8253 AC_SUBST(MOZ_HARFBUZZ_LIBS)
8255 dnl ========================================================
8257 dnl ========================================================
8258 MOZ_GRAPHITE_LIBS='$(DEPTH)/gfx/graphite2/src/$(LIB_PREFIX)mozgraphite2.$(LIB_SUFFIX)'
8259 AC_SUBST(MOZ_GRAPHITE_LIBS)
8261 dnl ========================================================
8263 dnl ========================================================
8264 MOZ_OTS_LIBS='$(DEPTH)/gfx/ots/src/$(LIB_PREFIX)mozots.$(LIB_SUFFIX)'
8265 AC_SUBST(MOZ_OTS_LIBS)
8267 dnl ========================================================
8269 dnl ========================================================
8270 if test "$MOZ_ENABLE_SKIA"; then
8271 MOZ_SKIA_LIBS='$(DEPTH)/gfx/skia/$(LIB_PREFIX)skia.$(LIB_SUFFIX)'
8272 AC_DEFINE(MOZ_ENABLE_SKIA)
8276 AC_SUBST(MOZ_ENABLE_SKIA)
8277 AC_SUBST(MOZ_SKIA_LIBS)
8279 dnl ========================================================
8281 dnl ========================================================
8282 MOZ_ARG_DISABLE_BOOL(xul,
8283 [ --disable-xul Disable XUL],
8285 if test "$MOZ_XUL"; then
8288 dnl remove extensions that require XUL
8289 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8294 dnl ========================================================
8295 dnl disable profile locking
8296 dnl do no use this in applications that can have more than
8297 dnl one process accessing the profile directory.
8298 dnl ========================================================
8299 MOZ_ARG_DISABLE_BOOL(profilelocking,
8300 [ --disable-profilelocking
8301 Disable profile locking],
8302 MOZ_PROFILELOCKING=,
8303 MOZ_PROFILELOCKING=1 )
8304 if test "$MOZ_PROFILELOCKING"; then
8305 AC_DEFINE(MOZ_PROFILELOCKING)
8308 dnl ========================================================
8309 dnl necko configuration options
8310 dnl ========================================================
8313 dnl option to disable various necko protocols
8315 MOZ_ARG_ENABLE_STRING(necko-protocols,
8316 [ --enable-necko-protocols[={http,ftp,default,all,none}]
8317 Enable/disable specific protocol handlers],
8318 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8319 if test "$option" = "yes" -o "$option" = "all"; then
8320 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8321 elif test "$option" = "no" -o "$option" = "none"; then
8323 elif test "$option" = "default"; then
8324 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8325 elif test `echo "$option" | grep -c \^-` != 0; then
8326 option=`echo $option | sed 's/^-//'`
8327 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8329 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8332 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8334 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8335 AC_SUBST(NECKO_PROTOCOLS)
8336 for p in $NECKO_PROTOCOLS; do
8337 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8338 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_PROTOCOL_$p"
8342 dnl option to disable necko's wifi scanner
8344 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8345 [ --disable-necko-wifi Disable necko wifi scanner],
8349 if test "$OS_ARCH" = "OS2"; then
8350 dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
8353 if test "$NECKO_WIFI" -a \
8354 "$OS_ARCH" != "Linux" -a \
8355 "$OS_ARCH" != "Darwin" -a \
8356 "$OS_ARCH" != "SunOS" -a \
8357 "$OS_ARCH" != "WINNT"; then
8358 AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi])
8361 if test "$NECKO_WIFI"; then
8362 AC_DEFINE(NECKO_WIFI)
8363 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
8365 AC_SUBST(NECKO_WIFI)
8368 dnl option to disable cookies
8370 MOZ_ARG_DISABLE_BOOL(cookies,
8371 [ --disable-cookies Disable cookie support],
8374 AC_SUBST(NECKO_COOKIES)
8375 if test "$NECKO_COOKIES"; then
8376 AC_DEFINE(NECKO_COOKIES)
8377 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
8381 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8383 MOZ_ARG_DISABLE_BOOL(ctypes,
8384 [ --disable-ctypes Disable js-ctypes],
8387 AC_SUBST(BUILD_CTYPES)
8388 if test "$BUILD_CTYPES"; then
8389 AC_DEFINE(BUILD_CTYPES)
8392 dnl Build Places if required
8393 if test "$MOZ_PLACES"; then
8394 AC_DEFINE(MOZ_PLACES)
8397 dnl Build Common JS modules provided by services.
8398 AC_SUBST(MOZ_SERVICES_COMMON)
8399 if test -n "$MOZ_SERVICES_COMMON"; then
8400 AC_DEFINE(MOZ_SERVICES_COMMON)
8403 dnl Build Services crypto component (used by Sync)
8404 AC_SUBST(MOZ_SERVICES_CRYPTO)
8405 if test -n "$MOZ_SERVICES_CRYPTO"; then
8406 AC_DEFINE(MOZ_SERVICES_CRYPTO)
8409 dnl Build Firefox Health Reporter Service
8410 AC_SUBST(MOZ_SERVICES_HEALTHREPORT)
8411 if test -n "$MOZ_SERVICES_HEALTHREPORT"; then
8412 AC_DEFINE(MOZ_SERVICES_HEALTHREPORT)
8415 dnl Build Services metrics component
8416 AC_SUBST(MOZ_SERVICES_METRICS)
8417 if test -n "$MOZ_SERVICES_METRICS"; then
8418 AC_DEFINE(MOZ_SERVICES_METRICS)
8421 dnl Build Notifications if required
8422 AC_SUBST(MOZ_SERVICES_NOTIFICATIONS)
8423 if test -n "$MOZ_SERVICES_NOTIFICATIONS"; then
8424 AC_DEFINE(MOZ_SERVICES_NOTIFICATIONS)
8427 dnl Build Sync Services if required
8428 AC_SUBST(MOZ_SERVICES_SYNC)
8429 if test -n "$MOZ_SERVICES_SYNC"; then
8430 AC_DEFINE(MOZ_SERVICES_SYNC)
8433 dnl Build Captive Portal Detector if required
8434 AC_SUBST(MOZ_CAPTIVEDETECT)
8435 if test -n "$MOZ_CAPTIVEDETECT"; then
8436 AC_DEFINE(MOZ_CAPTIVEDETECT)
8439 dnl ========================================================
8440 if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC" -o "$MOZ_DMD"; then
8441 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8444 if test "$MOZ_APP_COMPONENT_INCLUDE"; then
8445 AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_INCLUDE, "$MOZ_APP_COMPONENT_INCLUDE")
8448 if test "$MOZ_APP_COMPONENT_MODULES"; then
8449 AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_MODULES, $MOZ_APP_COMPONENT_MODULES)
8452 dnl ========================================================
8454 dnl = Maintainer debug option (no --enable equivalent)
8456 dnl ========================================================
8461 AC_SUBST(AR_EXTRACT)
8465 AC_SUBST(AS_DASH_C_FLAG)
8474 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8475 AC_SUBST(MOZ_UPDATE_XTERM)
8476 AC_SUBST(MOZ_PLATFORM_MAEMO)
8477 AC_SUBST(MOZ_AUTH_EXTENSION)
8478 AC_SUBST(MOZ_PERMISSIONS)
8479 AC_SUBST(MOZ_PREF_EXTENSIONS)
8480 AC_SUBST(MOZ_JS_LIBS)
8483 AC_SUBST(MOZ_DEBUG_SYMBOLS)
8484 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
8485 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
8486 AC_SUBST(MOZ_DEBUG_FLAGS)
8487 AC_SUBST(MOZ_DEBUG_LDFLAGS)
8488 AC_SUBST(WARNINGS_AS_ERRORS)
8489 AC_SUBST(MOZ_EXTENSIONS)
8490 AC_SUBST(MOZ_JSDEBUGGER)
8491 AC_SUBST(MOZ_ENABLE_PROFILER_SPS)
8494 AC_SUBST(MOZ_CALLGRIND)
8497 AC_SUBST(MOZ_PROFILING)
8499 AC_SUBST(MOZ_PLACES)
8500 AC_SUBST(MOZ_TOOLKIT_SEARCH)
8502 AC_SUBST(NS_PRINTING)
8504 AC_SUBST(MOZ_HELP_VIEWER)
8505 AC_SUBST(TOOLCHAIN_PREFIX)
8512 AC_SUBST(MOZ_PROFILELOCKING)
8514 AC_SUBST(ENABLE_TESTS)
8515 AC_SUBST(ENABLE_MARIONETTE)
8517 AC_SUBST(MOZ_UNIVERSALCHARDET)
8518 AC_SUBST(ACCESSIBILITY)
8519 AC_SUBST(MOZ_SPELLCHECK)
8520 AC_SUBST(MOZ_ANDROID_OMTC)
8521 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
8522 AC_SUBST(MOZ_ONLY_TOUCH_EVENTS)
8523 AC_SUBST(MOZ_CRASHREPORTER)
8524 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
8525 AC_SUBST(MOZ_MAINTENANCE_SERVICE)
8526 AC_SUBST(MOZ_STUB_INSTALLER)
8527 AC_SUBST(MOZ_VERIFY_MAR_SIGNATURE)
8528 AC_SUBST(MOZ_ENABLE_SIGNMAR)
8529 AC_SUBST(MOZ_UPDATER)
8530 AC_SUBST(MOZ_ANGLE_RENDERER)
8531 AC_SUBST(MOZ_DIRECTX_SDK_PATH)
8532 AC_SUBST(MOZ_DIRECTX_SDK_CPU_SUFFIX)
8533 AC_SUBST(MOZ_D3DX9_VERSION)
8534 AC_SUBST(MOZ_D3DCOMPILER_CAB)
8535 AC_SUBST(MOZ_D3DCOMPILER_DLL)
8538 AC_SUBST(MOZ_ANDROID_HISTORY)
8539 AC_SUBST(MOZ_WEBSMS_BACKEND)
8540 AC_SUBST(ENABLE_STRIP)
8541 AC_SUBST(PKG_SKIP_STRIP)
8542 AC_SUBST(STRIP_FLAGS)
8543 AC_SUBST(USE_ELF_DYNSTR_GC)
8544 AC_SUBST(USE_ELF_HACK)
8545 AC_SUBST(INCREMENTAL_LINKER)
8546 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
8547 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
8549 AC_SUBST(MOZ_FIX_LINK_PATHS)
8550 AC_SUBST(XPCOM_LIBS)
8551 AC_SUBST(XPCOM_FROZEN_LDOPTS)
8552 AC_SUBST(XPCOM_GLUE_LDOPTS)
8553 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
8554 AC_SUBST(XPCOM_STATICRUNTIME_GLUE_LDOPTS)
8555 AC_SUBST(XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS)
8557 AC_SUBST(USE_DEPENDENT_LIBS)
8559 AC_SUBST(MOZ_BUILD_ROOT)
8560 AC_SUBST(MOZ_OS2_TOOLS)
8562 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
8563 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
8564 AC_SUBST(MOZ_LINKER_EXTRACT)
8566 AC_SUBST(MOZ_JSDOWNLOADS)
8568 if test -n "$MOZ_JSDOWNLOADS" ; then
8569 AC_DEFINE(MOZ_JSDOWNLOADS)
8572 dnl ========================================================
8573 dnl = Mac bundle name prefix
8574 dnl ========================================================
8575 MOZ_ARG_WITH_STRING(macbundlename-prefix,
8576 [ --with-macbundlename-prefix=prefix
8577 Prefix for MOZ_MACBUNDLE_NAME],
8578 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
8580 MOZ_MACBUNDLE_NAME=`echo $MOZ_APP_DISPLAYNAME | tr -d ' '`
8581 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
8582 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
8585 if test "$MOZ_DEBUG"; then
8586 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}Debug.app
8588 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
8590 AC_SUBST(MOZ_MACBUNDLE_NAME)
8592 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
8593 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr '[A-Z]' '[a-z]'`
8594 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
8595 if test "$MOZ_DEBUG"; then
8596 MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
8599 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
8600 AC_SUBST(MOZ_MACBUNDLE_ID)
8602 # The following variables are available to branding and application
8603 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
8604 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
8605 # impacts profile location and user-visible fields.
8606 # - MOZ_APP_BASENAME: Typically stays consistent for multiple branded
8607 # versions of a given application (e.g. Aurora and Firefox both use
8608 # "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used
8609 # for application.ini's "Name" field, which controls profile location in
8610 # the absence of a "Profile" field (see below), and various system
8611 # integration hooks (Unix remoting, Windows MessageWindow name, etc.)
8612 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
8613 # Mac Bundle name, Updater, Installer), it is typically used for nightly
8614 # builds (e.g. Aurora for Firefox).
8615 # - MOZ_APP_VERSION: Defines the application version number.
8616 # - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set,
8617 # defaults to a lowercase form of MOZ_APP_BASENAME.
8618 # - MOZ_APP_PROFILE: When set, used for application.ini's
8619 # "Profile" field, which controls profile location.
8620 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
8621 # crash reporter server url.
8622 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
8623 # - MOZ_EXTENSION_MANAGER: When set, enabled extension manager.
8625 if test -z "$MOZ_APP_NAME"; then
8626 MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
8629 # For extensions and langpacks, we require a max version that is compatible
8630 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
8631 # 10.0a1 and 10.0a2 aren't affected
8632 # 10.0 becomes 10.0.*
8633 # 10.0.1 becomes 10.0.*
8634 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
8635 if test -z "$IS_ALPHA"; then
8637 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*.[0-9]*\).*|\1|"`.*
8640 MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
8643 MOZ_B2G_VERSION=${MOZ_B2G_VERSION:-"1.0.0"}
8644 AC_DEFINE_UNQUOTED(MOZ_B2G_VERSION,"$MOZ_B2G_VERSION")
8645 AC_DEFINE_UNQUOTED(MOZ_B2G_OS_NAME,"$MOZ_B2G_OS_NAME")
8647 AC_SUBST(MOZ_APP_NAME)
8648 AC_SUBST(MOZ_APP_DISPLAYNAME)
8649 AC_SUBST(MOZ_APP_BASENAME)
8650 AC_SUBST(MOZ_APP_VENDOR)
8651 AC_SUBST(MOZ_APP_PROFILE)
8652 AC_SUBST(MOZ_APP_ID)
8653 AC_SUBST(MAR_CHANNEL_ID)
8654 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
8655 AC_SUBST(MOZ_PROFILE_MIGRATOR)
8656 AC_SUBST(MOZ_EXTENSION_MANAGER)
8657 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
8658 AC_SUBST(MOZ_APP_UA_NAME)
8659 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
8660 AC_SUBST(MOZ_APP_VERSION)
8661 AC_SUBST(MOZ_APP_MAXVERSION)
8662 AC_DEFINE_UNQUOTED(FIREFOX_VERSION,$FIREFOX_VERSION)
8663 AC_SUBST(FIREFOX_VERSION)
8664 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
8665 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
8666 AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
8668 AC_DEFINE_UNQUOTED(MOZ_UA_BUILDID, "$MOZ_UA_BUILDID")
8669 AC_SUBST(MOZ_UA_BUILDID)
8671 AC_SUBST(MOZ_APP_STATIC_INI)
8673 AC_SUBST(MOZ_PKG_SPECIAL)
8675 AC_SUBST(MOZILLA_OFFICIAL)
8677 AC_DEFINE_UNQUOTED(MOZ_TELEMETRY_DISPLAY_REV, 2)
8678 AC_SUBST(MOZ_TELEMETRY_DISPLAY_REV)
8680 if test "$MOZ_TELEMETRY_REPORTING"; then
8681 AC_DEFINE(MOZ_TELEMETRY_REPORTING)
8683 # Enable Telemetry by default for nightly and aurora channels
8684 if test "$MOZ_UPDATE_CHANNEL" = "nightly" -o \
8685 "$MOZ_UPDATE_CHANNEL" = "aurora"; then
8686 AC_DEFINE(MOZ_TELEMETRY_ON_BY_DEFAULT)
8690 dnl If we have any service that uploads data (and requires data submission
8691 dnl policy alert), set MOZ_DATA_REPORTING.
8692 dnl We need SUBST for build system and DEFINE for xul preprocessor.
8693 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"; then
8694 MOZ_DATA_REPORTING=1
8695 AC_DEFINE(MOZ_DATA_REPORTING)
8696 AC_SUBST(MOZ_DATA_REPORTING)
8700 AC_SUBST(MOZ_MAPINFO)
8701 AC_SUBST(MOZ_BROWSE_INFO)
8702 AC_SUBST(MOZ_TOOLS_DIR)
8703 AC_SUBST(WIN32_REDIST_DIR)
8706 dnl Echo the CFLAGS to remove extra whitespace.
8712 $_WARNINGS_CXXFLAGS \
8715 COMPILE_CFLAGS=`echo \
8720 COMPILE_CXXFLAGS=`echo \
8721 $_DEFINES_CXXFLAGS \
8725 AC_SUBST(SYSTEM_LIBXUL)
8726 AC_SUBST(MOZ_NATIVE_JPEG)
8727 AC_SUBST(MOZ_NATIVE_PNG)
8728 AC_SUBST(MOZ_NATIVE_BZ2)
8730 AC_SUBST(MOZ_FLEXBOX)
8731 AC_SUBST(MOZ_JPEG_CFLAGS)
8732 AC_SUBST(MOZ_JPEG_LIBS)
8733 AC_SUBST(MOZ_BZ2_CFLAGS)
8734 AC_SUBST(MOZ_BZ2_LIBS)
8735 AC_SUBST(MOZ_PNG_CFLAGS)
8736 AC_SUBST(MOZ_PNG_LIBS)
8738 AC_SUBST(NSPR_CFLAGS)
8740 AC_SUBST(MOZ_NATIVE_NSPR)
8742 AC_SUBST(NSS_CFLAGS)
8744 AC_SUBST(NSS_DEP_LIBS)
8745 AC_SUBST(MOZ_NATIVE_NSS)
8746 AC_SUBST(NSS_DISABLE_DBM)
8749 OS_CXXFLAGS="$CXXFLAGS"
8750 OS_CPPFLAGS="$CPPFLAGS"
8751 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
8752 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
8753 OS_LDFLAGS="$LDFLAGS"
8756 AC_SUBST(OS_CXXFLAGS)
8757 AC_SUBST(OS_CPPFLAGS)
8758 AC_SUBST(OS_COMPILE_CFLAGS)
8759 AC_SUBST(OS_COMPILE_CXXFLAGS)
8760 AC_SUBST(OS_LDFLAGS)
8762 AC_SUBST(CROSS_COMPILE)
8763 AC_SUBST(WCHAR_CFLAGS)
8767 AC_SUBST(HOST_CFLAGS)
8768 AC_SUBST(HOST_CXXFLAGS)
8769 AC_SUBST(HOST_LDFLAGS)
8770 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8772 AC_SUBST(HOST_AR_FLAGS)
8774 AC_SUBST(HOST_RANLIB)
8775 AC_SUBST(HOST_NSPR_MDCPUCFG)
8776 AC_SUBST(HOST_BIN_SUFFIX)
8777 AC_SUBST(HOST_OS_ARCH)
8779 AC_SUBST(TARGET_CPU)
8780 AC_SUBST(TARGET_VENDOR)
8782 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8783 AC_SUBST(TARGET_MD_ARCH)
8784 AC_SUBST(TARGET_XPCOM_ABI)
8787 AC_SUBST(OS_RELEASE)
8790 AC_SUBST(INTEL_ARCHITECTURE)
8792 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8794 AC_SUBST(WRAP_LDFLAGS)
8797 AC_SUBST(MKSHLIB_FORCE_ALL)
8798 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8799 AC_SUBST(DSO_CFLAGS)
8800 AC_SUBST(DSO_PIC_CFLAGS)
8801 AC_SUBST(DSO_LDOPTS)
8802 AC_SUBST(LIB_PREFIX)
8803 AC_SUBST(DLL_PREFIX)
8804 AC_SUBST(DLL_SUFFIX)
8805 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8806 AC_SUBST(LIB_SUFFIX)
8807 AC_SUBST(OBJ_SUFFIX)
8808 AC_SUBST(BIN_SUFFIX)
8809 AC_SUBST(ASM_SUFFIX)
8810 AC_SUBST(IMPORT_LIB_SUFFIX)
8812 AC_SUBST(CC_VERSION)
8813 AC_SUBST(CXX_VERSION)
8814 AC_SUBST(MSMANIFEST_TOOL)
8815 AC_SUBST(NS_ENABLE_TSF)
8816 AC_SUBST(MOZ_NSS_PATCH)
8817 AC_SUBST(MOZ_APP_COMPONENT_LIBS)
8818 AC_SUBST(MOZ_APP_EXTRA_LIBS)
8821 AC_SUBST(MOZ_SYDNEYAUDIO)
8822 AC_SUBST(MOZ_SPEEX_RESAMPLER)
8823 AC_SUBST(MOZ_SOUNDTOUCH)
8826 AC_SUBST(MOZ_VORBIS)
8827 AC_SUBST(MOZ_TREMOR)
8832 AC_SUBST(MOZ_MEDIA_PLUGINS)
8833 AC_SUBST(MOZ_OMX_PLUGIN)
8834 AC_SUBST(MOZ_VP8_ERROR_CONCEALMENT)
8835 AC_SUBST(MOZ_VP8_ENCODER)
8839 AC_SUBST(VPX_ASFLAGS)
8840 AC_SUBST(VPX_DASH_C_FLAG)
8841 AC_SUBST(VPX_AS_CONVERSION)
8842 AC_SUBST(VPX_ASM_SUFFIX)
8843 AC_SUBST(VPX_X86_ASM)
8844 AC_SUBST(VPX_ARM_ASM)
8845 AC_SUBST(VPX_NEED_OBJ_INT_EXTRACT)
8846 AC_SUBST(MOZ_INSTRUMENT_EVENT_LOOP)
8847 AC_SUBST(LIBJPEG_TURBO_AS)
8848 AC_SUBST(LIBJPEG_TURBO_ASFLAGS)
8849 AC_SUBST(LIBJPEG_TURBO_X86_ASM)
8850 AC_SUBST(LIBJPEG_TURBO_X64_ASM)
8851 AC_SUBST(LIBJPEG_TURBO_ARM_ASM)
8853 AC_SUBST(MOZ_PACKAGE_JSSHELL)
8855 AC_MSG_CHECKING([for posix_fallocate])
8856 AC_TRY_LINK([#define _XOPEN_SOURCE 600
8857 #include <fcntl.h>],
8858 [posix_fallocate(0, 0, 0);],
8859 [ac_cv___posix_fallocate=true],
8860 [ac_cv___posix_fallocate=false])
8862 if test "$ac_cv___posix_fallocate" = true ; then
8863 AC_DEFINE(HAVE_POSIX_FALLOCATE)
8869 dnl Check for missing components
8870 if test "$COMPILE_ENVIRONMENT"; then
8871 if test "$MOZ_X11"; then
8872 if test "$WITHOUT_X11"; then
8873 AC_MSG_ERROR([--without-x specified and MOZ_X11 still defined])
8875 dnl ====================================================
8876 dnl = Check if X headers exist
8877 dnl ====================================================
8878 _SAVE_CFLAGS=$CFLAGS
8879 CFLAGS="$CFLAGS $XCFLAGS"
8883 #include <X11/Xlib.h>
8884 #include <X11/Intrinsic.h>
8885 #include <X11/extensions/XShm.h>
8889 if ((dpy = XOpenDisplay(NULL)) == NULL) {
8890 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8894 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8895 CFLAGS="$_SAVE_CFLAGS"
8897 if test -n "$MISSING_X"; then
8898 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8903 dnl Check for headers, etc. needed by WebGL.
8904 if test "$MOZ_GL_DEFAULT_PROVIDER" = "GLX"; then
8905 MOZ_CHECK_HEADER(GL/glx.h)
8906 if test "$ac_cv_header_GL_glx_h" != "yes"; then
8907 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))])
8909 fi # MOZ_GL_DEFAULT_PROVIDER=GLX
8910 fi # COMPILE_ENVIRONMENT
8912 dnl Set various defines and substitutions
8913 dnl ========================================================
8915 if test "$OS_ARCH" = "Darwin"; then
8917 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2"; then
8921 if test "$MOZ_DEBUG"; then
8922 AC_DEFINE(MOZ_REFLOW_PERF)
8923 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8926 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8927 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8928 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8929 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8930 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8931 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8932 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8933 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8934 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8937 AC_SUBST(MOZILLA_VERSION)
8939 AC_SUBST(ac_configure_args)
8941 dnl Spit out some output
8942 dnl ========================================================
8944 dnl The following defines are used by xpcom
8945 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8947 HAVE_CPP_2BYTE_WCHAR_T
8948 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8950 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8951 HAVE_CPP_PARTIAL_SPECIALIZATION
8952 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8953 NEED_CPP_UNUSED_IMPLEMENTATIONS
8957 HAVE_ICONV_WITH_CONST_INPUT
8970 # FUTURE? Consider moving all these to moz.build files.
8972 netwerk/necko-config.h
8973 xpcom/xpcom-config.h
8974 xpcom/xpcom-private.h
8977 AC_OUTPUT([mozilla-config.h])
8979 # Hack around an Apple bug that affects the egrep that comes with OS X 10.7.
8980 # "env ARCHPREFERENCE=i386,x86_64 arch egrep" first tries to use the 32-bit
8981 # Intel part of the egrep fat binary, even on 64-bit systems, and falls back on
8982 # the 64-bit part if it's not a fat binary, as can happen with MacPorts. We
8983 # (apparently) only need this hack when egrep's "pattern" is particularly long
8984 # (as in the following code) and the first egrep on our $PATH is Apple's. See
8988 FIXED_EGREP="env ARCHPREFERENCE=i386,x86_64 arch egrep"
8995 # target_arch is from {ia32|x64|arm|ppc}
8998 WEBRTC_TARGET_ARCH=x64
9002 WEBRTC_TARGET_ARCH=arm
9006 WEBRTC_TARGET_ARCH=ia32
9010 WEBRTC_TARGET_ARCH=ppc
9013 # unsupported arch for webrtc
9014 WEBRTC_TARGET_ARCH=unknown
9020 # Generate Makefiles for WebRTC directly from .gyp files
9021 if test "${OS_TARGET}" = "WINNT"; then
9022 if test "$HAVE_64BIT_OS"; then
9027 EXTRA_GYP_DEFINES="-D MSVS_VERSION=${_MSVS_VERSION} -D MSVS_OS_BITS=${OS_BITS}"
9029 elif test "${OS_TARGET}" = "Android"; then
9030 EXTRA_GYP_DEFINES="-D gtest_target_type=executable -D android_toolchain=${android_toolchain} -G os=android "
9031 if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
9032 EXTRA_GYP_DEFINES="${EXTRA_GYP_DEFINES} -D armv7=0 "
9034 EXTRA_GYP_DEFINES="${EXTRA_GYP_DEFINES} -D armv7=1 "
9038 # Don't try to compile sse4.1 code if toolchain doesn't support
9039 if test -z "$HAVE_TOOLCHAIN_SUPPORT_MSSE4_1"; then
9040 EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D yuv_disable_asm=1"
9043 if test -n "$MOZ_WEBRTC"; then
9044 AC_MSG_RESULT("generating WebRTC Makefiles...")
9046 dnl Any --include files must also appear in -D FORCED_INCLUDE_FILE= entries
9047 dnl so that regeneration via dependencies works correctly
9048 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"
9050 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}"
9052 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
9053 $GYP_WEBRTC_OPTIONS \
9054 --generator-output=${_objdir}/media/webrtc/trunk \
9055 ${srcdir}/media/webrtc/trunk/peerconnection.gyp
9056 if test "$?" != 0; then
9057 AC_MSG_ERROR([failed to generate WebRTC Makefiles])
9060 # XXX disable until we land the tranche with signaling
9061 if test -n "$MOZ_WEBRTC_SIGNALING"; then
9062 AC_MSG_RESULT("generating WebRTC/Signaling Makefiles...")
9063 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
9064 $GYP_WEBRTC_OPTIONS \
9065 -D build_for_test=0 \
9066 --generator-output=${_objdir}/media/webrtc/signaling \
9067 ${srcdir}/media/webrtc/signaling/signaling.gyp
9068 if test "$?" != 0; then
9069 AC_MSG_ERROR([failed to generate WebRTC/Signaling Makefiles])
9072 AC_MSG_RESULT("generating WebRTC/SignalingTest Makefiles...")
9073 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
9074 $GYP_WEBRTC_OPTIONS \
9075 -D build_for_test=1 \
9076 --generator-output=${_objdir}/media/webrtc/signalingtest \
9077 ${srcdir}/media/webrtc/signaling/signaling.gyp
9078 if test "$?" != 0; then
9079 AC_MSG_ERROR([failed to generate WebRTC/SignalingTest Makefiles])
9083 AC_MSG_RESULT("generating gtest Makefiles...")
9084 # Ok to pass some extra -D's that are ignored here
9085 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
9086 $GYP_WEBRTC_OPTIONS \
9087 --generator-output=${_objdir}/media/webrtc/trunk/testing/ \
9088 ${srcdir}/media/webrtc/trunk/testing/gtest.gyp
9089 if test "$?" != 0; then
9090 AC_MSG_ERROR([failed to generate gtest Makefiles])
9093 AC_MSG_RESULT("generating nrappkit Makefiles...")
9094 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
9095 $GYP_WEBRTC_OPTIONS \
9096 --generator-output=${_objdir}/media/mtransport/third_party/nrappkit \
9097 ${srcdir}/media/mtransport/third_party/nrappkit/nrappkit.gyp
9098 if test "$?" != 0; then
9099 AC_MSG_ERROR([failed to generate nrappkit Makefiles])
9102 AC_MSG_RESULT("generating nICEr Makefiles...")
9103 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
9104 $GYP_WEBRTC_OPTIONS \
9105 --generator-output=${_objdir}/media/mtransport/third_party/nICEr \
9106 ${srcdir}/media/mtransport/third_party/nICEr/nicer.gyp
9107 if test "$?" != 0; then
9108 AC_MSG_ERROR([failed to generate nICEr Makefiles])
9112 # Generate a JSON config file for unittest harnesses etc to read
9113 # build configuration details from in a standardized way.
9114 OS_TARGET=${OS_TARGET} \
9115 TARGET_CPU=${TARGET_CPU} \
9116 MOZ_DEBUG=${MOZ_DEBUG} \
9117 MOZ_WIDGET_TOOLKIT=${MOZ_WIDGET_TOOLKIT} \
9118 UNIVERSAL_BINARY=${UNIVERSAL_BINARY} \
9119 MOZ_CRASHREPORTER=${MOZ_CRASHREPORTER} \
9120 MOZ_APP_NAME=${MOZ_APP_NAME} \
9121 $PYTHON ${_topsrcdir}/config/writemozinfo.py ./mozinfo.json.tmp
9122 if cmp -s ./mozinfo.json.tmp ./mozinfo.json; then
9123 rm ./mozinfo.json.tmp
9125 mv -f ./mozinfo.json.tmp ./mozinfo.json
9128 # Run jemalloc configure script
9130 if test -z "$MOZ_NATIVE_JEMALLOC" -a "$MOZ_MEMORY" && test -n "$MOZ_JEMALLOC3" -o -n "$MOZ_REPLACE_MALLOC"; then
9131 ac_configure_args="$_SUBDIR_CONFIG_ARGS --build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_"
9132 if test -n "$MOZ_REPLACE_MALLOC"; then
9133 # When using replace_malloc, we always want memalign and valloc exported from jemalloc.
9134 ac_configure_args="$ac_configure_args ac_cv_func_memalign=yes"
9135 ac_configure_args="$ac_configure_args ac_cv_func_valloc=yes"
9137 if test -n "$MOZ_JEMALLOC3"; then
9138 case "${OS_ARCH}" in
9140 # We want jemalloc functions to be kept hidden on both Mac and Windows
9141 # See memory/build/mozmemory_wrap.h for details.
9142 ac_configure_args="$ac_configure_args --without-export"
9145 elif test "${OS_ARCH}" = Darwin; then
9146 # When building as a replace-malloc lib, disabling the zone allocator
9147 # forces to use pthread_atfork.
9148 ac_configure_args="$ac_configure_args --disable-zone-allocator"
9150 _MANGLE="malloc posix_memalign aligned_alloc calloc realloc free memalign valloc malloc_usable_size"
9152 if test -z "$MOZ_REPLACE_MALLOC"; then
9154 Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
9158 elif test -z "$MOZ_JEMALLOC3"; then
9160 JEMALLOC_WRAPPER=replace_
9162 if test -n "$MANGLE"; then
9164 if test -n "$_WRAP_MALLOC" -a -z "$JEMALLOC_WRAPPER"; then
9165 JEMALLOC_WRAPPER=__wrap_
9167 for mangle in ${MANGLE}; do
9168 if test -n "$MANGLED"; then
9169 MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle,$MANGLED"
9171 MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle"
9174 ac_configure_args="$ac_configure_args --with-mangling=$MANGLED"
9177 if test -z "$MOZ_TLS"; then
9178 ac_configure_args="$ac_configure_args --disable-tls"
9180 EXTRA_CFLAGS="$CFLAGS"
9181 for var in AS CC CXX CPP LD AR RANLIB STRIP CPPFLAGS EXTRA_CFLAGS LDFLAGS; do
9182 ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
9184 if test "$CROSS_COMPILE"; then
9185 ac_configure_args="$ac_configure_args je_cv_static_page_shift=12"
9187 _save_cache_file="$cache_file"
9188 cache_file=$_objdir/memory/jemalloc/src/config.cache
9190 if ! test -e memory/jemalloc; then
9191 mkdir -p memory/jemalloc
9194 AC_OUTPUT_SUBDIRS(memory/jemalloc/src)
9195 cache_file="$_save_cache_file"
9196 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9199 # Run freetype configure script
9201 if test "$MOZ_TREE_FREETYPE"; then
9202 export CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS -std=c99"
9203 export CPPFLAGS="$CPPFLAGS $MOZ_DEBUG_FLAGS"
9204 export CXXFLAGS="$CXXFLAGS $MOZ_DEBUG_FLAGS"
9205 export LDFLAGS="$LDFLAGS $MOZ_DEBUG_LDFLAGS"
9206 export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in"
9207 ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes"
9209 if ! test -e modules; then
9213 AC_OUTPUT_SUBDIRS(modules/freetype2)
9216 if test -z "$direct_nspr_config"; then
9217 dnl ========================================================
9218 dnl = Setup a nice relatively clean build environment for
9219 dnl = sub-configures.
9220 dnl ========================================================
9223 CFLAGS="$_SUBDIR_CFLAGS"
9224 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9225 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9226 LDFLAGS="$_SUBDIR_LDFLAGS"
9227 HOST_CC="$_SUBDIR_HOST_CC"
9228 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9229 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9236 # Run all configure scripts specified by a subconfigure
9237 if test -n "$_subconfigure_subdir"; then
9238 _save_ac_configure_args="$ac_configure_args"
9239 ac_configure_args="$_subconfigure_config_args"
9240 AC_OUTPUT_SUBDIRS("$_subconfigure_subdir")
9241 ac_configure_args="$_save_ac_configure_args"
9244 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9245 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9249 if test -n "$_WRAP_MALLOC"; then
9250 # Avoid doubling wrap malloc arguments
9251 _SUBDIR_CONFIG_ARGS="`echo $_SUBDIR_CONFIG_ARGS | sed -e 's/--enable-wrap-malloc *//'`"
9254 if test -z "$MOZ_NATIVE_NSPR"; then
9255 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9256 if test -z "$MOZ_DEBUG"; then
9257 ac_configure_args="$ac_configure_args --disable-debug"
9259 ac_configure_args="$ac_configure_args --enable-debug"
9261 if test "$MOZ_OPTIMIZE" = "1"; then
9262 ac_configure_args="$ac_configure_args --enable-optimize"
9263 elif test -z "$MOZ_OPTIMIZE"; then
9264 ac_configure_args="$ac_configure_args --disable-optimize"
9266 if test -n "$HAVE_64BIT_OS"; then
9267 ac_configure_args="$ac_configure_args --enable-64bit"
9269 if test -n "$USE_ARM_KUSER"; then
9270 ac_configure_args="$ac_configure_args --with-arm-kuser"
9272 ac_configure_args="$ac_configure_args $NSPR_CONFIGURE_ARGS"
9273 if test -n "$MOZ_LINKER" -a "$ac_cv_func_dladdr" = no ; then
9274 # dladdr is supported by the new linker, even when the system linker doesn't
9275 # support it. Trick nspr into using dladdr when it's not supported.
9276 _SAVE_CPPFLAGS="$CPPFLAGS"
9277 export CPPFLAGS="-include $_topsrcdir/mozglue/linker/dladdr.h $CPPFLAGS"
9279 _SAVE_LDFLAGS="$LDFLAGS"
9280 export LDFLAGS="$LDFLAGS $NSPR_LDFLAGS"
9281 AC_OUTPUT_SUBDIRS(nsprpub)
9282 LDFLAGS="$_SAVE_LDFLAGS"
9283 if test -n "$MOZ_LINKER" -a "$ac_cv_func_dladdr" = no; then
9285 CPPFLAGS="$_SAVE_CFLAGS"
9287 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9290 dnl ========================================================
9291 dnl = Setup a nice relatively clean build environment for
9292 dnl = sub-configures.
9293 dnl ========================================================
9296 CFLAGS="$_SUBDIR_CFLAGS"
9297 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9298 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9299 LDFLAGS="$_SUBDIR_LDFLAGS"
9300 HOST_CC="$_SUBDIR_HOST_CC"
9301 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9302 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9305 # Run the SpiderMonkey 'configure' script.
9306 dist=$MOZ_BUILD_ROOT/dist
9307 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9308 ac_configure_args="$ac_configure_args --enable-threadsafe"
9309 if test "$BUILD_CTYPES"; then
9310 # Build js-ctypes on the platforms we can.
9311 ac_configure_args="$ac_configure_args --enable-ctypes"
9313 if test -z "$JS_SHARED_LIBRARY" ; then
9314 ac_configure_args="$ac_configure_args --disable-shared-js"
9316 if test -z "$MOZ_NATIVE_NSPR"; then
9317 ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9318 ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9320 ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
9321 ac_configure_args="$ac_configure_args --prefix=$dist"
9322 if test "$MOZ_MEMORY"; then
9323 ac_configure_args="$ac_configure_args --enable-jemalloc"
9325 if test -n "$MOZ_GLUE_LDFLAGS"; then
9326 export MOZ_GLUE_LDFLAGS
9328 if test -n "$MOZ_GLUE_PROGRAM_LDFLAGS"; then
9329 export MOZ_GLUE_PROGRAM_LDFLAGS
9331 if test "$MOZ_NATIVE_ZLIB" != 1 -a "$OS_ARCH" = "WINNT"; then
9334 export MOZ_NATIVE_ZLIB
9335 export MOZ_ZLIB_CFLAGS
9336 export MOZ_ZLIB_LIBS
9338 export DONT_POPULATE_VIRTUALENV=1
9340 export MOZILLA_CENTRAL_PATH=$_topsrcdir
9341 export STLPORT_CPPFLAGS
9342 export STLPORT_LDFLAGS
9344 export JS_STANDALONE=no
9346 if ! test -e js; then
9350 AC_OUTPUT_SUBDIRS(js/src)
9351 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9353 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR