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 ========================================================
65 PYTHON_VERSION_MAJOR=2
66 PYTHON_VERSION_MINOR=5
70 WINDRES_VERSION=2.14.90
76 STARTUP_NOTIFICATION_VERSION=0.8
82 dnl Set various checks
83 dnl ========================================================
87 dnl Initialize the Pthread test variables early so they can be
88 dnl overridden by each platform.
89 dnl ========================================================
93 dnl Do not allow a separate objdir build if a srcdir build exists.
94 dnl ==============================================================
95 _topsrcdir=`cd \`dirname $0\`; pwd`
98 if test "$_topsrcdir" != "$_objdir"
100 # Check for a couple representative files in the source tree
102 for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
103 if test -f $file; then
104 _conflict_files="$_conflict_files $file"
107 if test "$_conflict_files"; then
109 echo "* Your source tree contains these files:"
110 for file in $_conflict_files; do
114 * This indicates that you previously built in the source tree.
115 * A source tree build can confuse the separate objdir build.
117 * To clean up the source tree:
130 COMPILE_ENVIRONMENT=1
131 MOZ_ARG_DISABLE_BOOL(compile-environment,
132 [ --disable-compile-environment
133 Disable compiler/library checks.],
134 COMPILE_ENVIRONMENT= )
135 AC_SUBST(COMPILE_ENVIRONMENT)
137 MOZ_ARG_WITH_STRING(l10n-base,
138 [ --with-l10n-base=DIR path to l10n repositories],
139 L10NBASEDIR=$withval)
140 if test -n "$L10NBASEDIR"; then
141 if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
142 AC_MSG_ERROR([--with-l10n-base must specify a path])
143 elif test -d "$L10NBASEDIR"; then
144 L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
146 AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
149 AC_SUBST(L10NBASEDIR)
151 dnl Check for Perl first -- needed for win32 SDK checks
152 MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
153 if test -z "$PERL" -o "$PERL" = ":"; then
154 AC_MSG_ERROR([perl not found in \$PATH])
158 if test -n "$GAIADIR" ; then
159 AC_DEFINE(PACKAGE_GAIA)
162 MOZ_ARG_WITH_STRING(gonk,
164 location of gonk dir],
167 MOZ_ARG_WITH_STRING(gonk-toolchain-prefix,
168 [ --with-gonk-toolchain-prefix=DIR
169 prefix to gonk toolchain commands],
170 gonk_toolchain_prefix=$withval)
172 if test -n "$gonkdir" ; then
173 kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"`
174 android_source="$gonkdir"
175 ANDROID_SOURCE="$android_source"
176 ANDROID_NDK="${ANDROID_SOURCE}/ndk"
179 TOOLCHAIN_PREFIX="$gonk_toolchain_prefix"
180 AS="$gonk_toolchain_prefix"as
181 CC="$gonk_toolchain_prefix"gcc
182 CXX="$gonk_toolchain_prefix"g++
183 CPP="$gonk_toolchain_prefix"cpp
184 LD="$gonk_toolchain_prefix"ld
185 AR="$gonk_toolchain_prefix"ar
186 RANLIB="$gonk_toolchain_prefix"ranlib
187 STRIP="$gonk_toolchain_prefix"strip
189 STLPORT_CPPFLAGS="-I$gonkdir/ndk/sources/cxx-stl/stlport/stlport/ -I$gonkdir/external/stlport/stlport/"
190 STLPORT_LIBS="-lstlport"
192 case "$target_cpu" in
201 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"
202 CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS"
203 CXXFLAGS="-mandroid -fno-short-enums -fno-exceptions -Wno-psabi $CXXFLAGS $STLPORT_CPPFLAGS"
204 dnl Add -llog by default, since we use it all over the place.
205 LIBS="$LIBS -llog $STLPORT_LIBS"
207 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"
209 dnl prevent cross compile section from using these flags as host flags
210 if test -z "$HOST_CPPFLAGS" ; then
213 if test -z "$HOST_CFLAGS" ; then
216 if test -z "$HOST_CXXFLAGS" ; then
219 if test -z "$HOST_LDFLAGS" ; then
224 AC_DEFINE(HAVE_SYS_UIO_H)
225 AC_DEFINE(HAVE_PTHREADS)
227 MOZ_CHROME_FILE_FORMAT=omni
233 *-android*|*-linuxandroid*)
234 if test -z "$ANDROID_PACKAGE_NAME" ; then
235 ANDROID_PACKAGE_NAME='org.mozilla.$(MOZ_APP_NAME)'
237 MOZ_CHROME_FILE_FORMAT=omni
241 AC_PATH_PROG(OBJCOPY,objcopy)
246 AC_SUBST(ANDROID_SOURCE)
247 AC_SUBST(ANDROID_PACKAGE_NAME)
250 dnl ========================================================
251 dnl Checks for compilers.
252 dnl ========================================================
253 dnl Set CROSS_COMPILE in the environment when running configure
254 dnl to use the cross-compile setup for now
255 dnl ========================================================
257 dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
260 if test "$COMPILE_ENVIRONMENT"; then
262 if test -n "$CROSS_COMPILE" -a "$target" != "$host"; then
263 echo "cross compiling from $host to $target"
267 _SAVE_CFLAGS="$CFLAGS"
268 _SAVE_LDFLAGS="$LDFLAGS"
270 AC_MSG_CHECKING([for host c compiler])
271 AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
272 if test -z "$HOST_CC"; then
273 AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
275 AC_MSG_RESULT([$HOST_CC])
276 AC_MSG_CHECKING([for host c++ compiler])
277 AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
278 if test -z "$HOST_CXX"; then
279 AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
281 AC_MSG_RESULT([$HOST_CXX])
283 if test -z "$HOST_CFLAGS"; then
284 HOST_CFLAGS="$CFLAGS"
286 if test -z "$HOST_CXXFLAGS"; then
287 HOST_CXXFLAGS="$CXXFLAGS"
289 if test -z "$HOST_LDFLAGS"; then
290 HOST_LDFLAGS="$LDFLAGS"
292 if test -z "$HOST_AR_FLAGS"; then
293 HOST_AR_FLAGS="$AR_FLAGS"
295 AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
296 AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
298 CFLAGS="$HOST_CFLAGS"
299 LDFLAGS="$HOST_LDFLAGS"
301 AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
302 AC_TRY_COMPILE([], [return(0);],
303 [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
304 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
307 CFLAGS="$HOST_CXXFLAGS"
309 AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
310 AC_TRY_COMPILE([], [return(0);],
311 [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
312 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
316 LDFLAGS=$_SAVE_LDFLAGS
318 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
321 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
325 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
326 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
327 MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
328 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
329 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
330 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
331 AC_DEFINE(CROSS_COMPILE)
336 # Work around the conftest.exe access problem on Windows
341 MOZ_PATH_PROGS(AS, $AS as, $CC)
342 AC_CHECK_PROGS(AR, ar, :)
343 AC_CHECK_PROGS(LD, ld, :)
344 AC_CHECK_PROGS(STRIP, strip, :)
345 AC_CHECK_PROGS(WINDRES, windres, :)
346 if test -z "$HOST_CC"; then
349 if test -z "$HOST_CFLAGS"; then
350 HOST_CFLAGS="$CFLAGS"
352 if test -z "$HOST_CXX"; then
355 if test -z "$HOST_CXXFLAGS"; then
356 HOST_CXXFLAGS="$CXXFLAGS"
358 if test -z "$HOST_LDFLAGS"; then
359 HOST_LDFLAGS="$LDFLAGS"
361 if test -z "$HOST_RANLIB"; then
362 HOST_RANLIB="$RANLIB"
364 if test -z "$HOST_AR"; then
367 if test -z "$HOST_AR_FLAGS"; then
368 HOST_AR_FLAGS="$AR_FLAGS"
372 if test -n "$MOZ_WINCONSOLE"; then
373 AC_DEFINE(MOZ_WINCONSOLE)
378 dnl ========================================================
379 dnl Special win32 checks
380 dnl ========================================================
382 # With win8, sdk target=602, WINVER=602
383 MOZ_ARG_ENABLE_BOOL(metro,
384 [ --enable-metro Enable Windows Metro build targets],
387 if test -n "$MOZ_METRO"; then
389 # Target the Windows 8 Kit
391 # Allow a higher api set
393 # toolkit/library/makefile.in needs these, see nsDllMain.
395 CRTEXPDLLVERSION=1-1-0
397 # Target the Windows 7 SDK by default
402 AC_SUBST(CRTDLLVERSION)
403 AC_SUBST(CRTEXPDLLVERSION)
405 if test -n "$MOZ_METRO"; then
410 AC_MSG_ERROR([Metro builds only valid on the windows platform.]);
415 MOZ_ARG_WITH_STRING(windows-version,
416 [ --with-windows-version=WINSDK_TARGETVER
417 Windows SDK version to target. Lowest version
418 currently allowed is 601 (Win7), highest is 602 (Win8)],
419 WINSDK_TARGETVER=$withval)
421 # Currently only two sdk versions allowed, 601 and 602
422 case "$WINSDK_TARGETVER" in
424 MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
428 AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER)]);
434 if test "$GCC" != "yes"; then
435 # Check to see if we are really running in a msvc environemnt
437 AC_CHECK_PROGS(MIDL, midl)
439 # Make sure compilers are valid
440 CFLAGS="$CFLAGS -TC -nologo"
441 CXXFLAGS="$CXXFLAGS -TP -nologo"
444 AC_TRY_COMPILE([#include <stdio.h>],
445 [ printf("Hello World\n"); ],,
446 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
449 AC_TRY_COMPILE([#include <new.h>],
450 [ unsigned *test = new unsigned(42); ],,
451 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
455 _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
458 # Determine compiler version
459 CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
460 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
461 _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
462 _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
463 _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
464 _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
466 CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
467 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
469 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
470 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
473 if test "$_CC_MAJOR_VERSION" = "14"; then
474 dnl Require VC8SP1 or newer.
475 dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762.
476 if test "$_CC_RELEASE" -lt 50727 -o \
477 \( "$_CC_RELEASE" -eq 50727 -a "$_CC_BUILD" -lt 762 \); then
478 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.])
483 AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
484 AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
485 elif test "$_CC_MAJOR_VERSION" = "15"; then
488 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
489 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
490 elif test "$_CC_MAJOR_VERSION" = "16"; then
493 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
494 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
495 elif test "$_CC_MAJOR_VERSION" = "17"; then
498 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
499 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
501 AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
504 AC_DEFINE(HAVE_SEH_EXCEPTIONS)
506 if test -n "$WIN32_REDIST_DIR"; then
507 if test ! -d "$WIN32_REDIST_DIR"; then
508 AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
510 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
513 dnl Confirm we have the pri tools on win8 builds
514 if test -n "$MOZ_METRO"; then
515 AC_MSG_CHECKING([for makepri])
516 AC_CHECK_PROGS(MAKEPRI, makepri, "")
517 if test -z "MAKEPRI" ; then
518 AC_MSG_ERROR([makepri.exe is required for generating metro browser install components. It should be in the Win8 SDK.])
523 dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool',
524 dnl not something else like "magnetic tape manipulation utility".
525 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
526 if test -z "$MSMT_TOOL"; then
527 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
531 _MSMT_VER_FILTER='s|.*[^!-~]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
533 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
534 if test -z "$MSMANIFEST_TOOL_VERSION"; then
535 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
541 # Check linker version
542 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
543 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
544 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
545 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
551 _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
552 _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
553 _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
554 _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
555 # Add flags if necessary
556 AC_MSG_CHECKING([for midl flags])
559 if test \( "$_MIDL_MAJOR_VERSION" = "7" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" = "0499" \); then
560 # MIDL version 7.00.0499 defaults /env win64 on x64 platforms.
561 # MIDL version 7.00.0500 or later has no problem.
562 MIDL_FLAGS="${MIDL_FLAGS} -env win32"
563 AC_MSG_RESULT([need -env win32])
565 AC_MSG_RESULT([none needed])
569 MIDL_FLAGS="${MIDL_FLAGS} -env x64"
572 AC_MSG_RESULT([none needed])
576 # Identify which version of the SDK we're building with
577 # Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
579 MOZ_CHECK_HEADERS([winsdkver.h])
580 if test "$ac_cv_header_winsdkver_h" = "yes"; then
581 # Get the highest _WIN32_WINNT and NTDDI versions supported
582 # Take the higher of the two
583 # This is done because the Windows 7 beta SDK reports its
584 # NTDDI_MAXVER to be 0x06000100 instead of 0x06010000, as it should
585 AC_CACHE_CHECK(for highest Windows version supported by this SDK,
587 [cat > conftest.h <<EOF
588 #include <winsdkver.h>
589 #include <sdkddkver.h>
591 #if (NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER) > NTDDI_MAXVER)
592 #define WINSDK_MAXVER NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER)
594 #define WINSDK_MAXVER NTDDI_MAXVER
599 ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
602 MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
604 # Any SDK which doesn't have WinSDKVer.h is too old.
605 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.])
608 unset _MSVC_VER_FILTER
610 AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
614 _SAVE_CXXFLAGS="$CXXFLAGS"
615 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
616 AC_TRY_COMPILE([#include <exception>],
617 [std::_Throw(std::exception()); return 0;],
618 ac_cv_have_std__Throw="yes",
619 ac_cv_have_std__Throw="no")
620 CXXFLAGS="$_SAVE_CXXFLAGS"
624 if test "$ac_cv_have_std__Throw" = "yes"; then
625 AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
626 ac_cv_have_dllimport_exception_bug,
630 _SAVE_CXXFLAGS="$CXXFLAGS"
631 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
632 AC_TRY_LINK([#include <vector>],
633 [std::vector<int> v; return v.at(1);],
634 ac_cv_have_dllimport_exception_bug="no",
635 ac_cv_have_dllimport_exception_bug="yes")
636 CXXFLAGS="$_SAVE_CXXFLAGS"
639 if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
641 MOZ_MSVC_STL_WRAP__Throw=1
642 AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
645 AC_CACHE_CHECK(for overridable _RAISE,
650 _SAVE_CXXFLAGS="$CXXFLAGS"
651 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
652 AC_TRY_COMPILE([#include <xstddef>
654 #define _RAISE(x) externallyDefinedFunction((x).what())
657 [std::vector<int> v; return v.at(1);],
658 ac_cv_have__RAISE="no",
659 ac_cv_have__RAISE="yes")
660 CXXFLAGS="$_SAVE_CXXFLAGS"
663 if test "$ac_cv_have__RAISE" = "yes"; then
665 MOZ_MSVC_STL_WRAP__RAISE=1
666 AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
668 AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK. Please file a bug describing this error and your build configuration.])
672 if test "$WRAP_STL_INCLUDES" = "1"; then
673 STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
676 # Check w32api version
677 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
678 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
679 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
680 AC_TRY_COMPILE([#include <w32api.h>],
681 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
682 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
683 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
684 #error "test failed."
686 , [ res=yes ], [ res=no ])
687 AC_MSG_RESULT([$res])
688 if test "$res" != "yes"; then
689 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
691 # Check windres version
692 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
693 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
694 AC_MSG_RESULT([$_WINDRES_VERSION])
695 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
696 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
697 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
698 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
699 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
700 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
701 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
702 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
703 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
704 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
705 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
706 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
708 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
711 MOZ_WINSDK_MAXVER=0x06020000
714 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
715 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
716 # Require OS features provided by IE 6.0 SP2 (XP SP2)
717 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0603)
719 # If the maximum version supported by this SDK is lower than the target
721 AC_MSG_CHECKING([for Windows SDK being recent enough])
722 if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
726 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.])
729 # Make sure the sdk / code we're targeting has the right toolset
730 AC_MSG_CHECKING([SDK and tools are in sync])
731 if test -n "$MOZ_METRO"; then
732 if test "$MOZ_MSVCVERSION" -gt "10"; then
736 AC_MSG_ERROR([Your MOZ_MSVCVERSION equals $MOZ_MSVCVERSION and you've enabled metro build support. You can't target metro without msvc 11 or higher. Disable metro support or switch to a newer set of tools.])
740 AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
741 # Definitions matching sdkddkver.h
742 AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
749 if test -n "$_WIN32_MSVC"; then
751 SKIP_COMPILER_CHECKS=1
752 SKIP_LIBRARY_CHECKS=1
754 # Since we're skipping compiler and library checks, hard-code
757 AC_DEFINE(HAVE_SETBUF)
758 AC_DEFINE(HAVE_ISATTY)
761 fi # COMPILE_ENVIRONMENT
774 AC_SUBST(WRAP_STL_INCLUDES)
775 AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
776 AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
778 dnl ========================================================
779 dnl Checks for programs.
780 dnl ========================================================
784 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
785 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
786 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
788 AC_MSG_RESULT([$_perl_version])
790 if test "$_perl_res" != 0; then
791 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
795 AC_MSG_CHECKING([for full perl installation])
796 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
798 if test "$_perl_res" != 0; then
800 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
805 MOZ_PATH_PROGS(PYTHON, $PYTHON python2.7 python2.6 python2.5 python)
806 if test -z "$PYTHON"; then
807 AC_MSG_ERROR([python was not found in \$PATH])
810 MOZ_ARG_WITH_BOOL(system-ply,
811 [ --with-system-ply Use system installed python ply library],
812 [if $PYTHON -c 'import ply' 2>&5; then
815 AC_MSG_ERROR([python ply library is not found but --with-system-ply was requested])
818 AC_SUBST(MOZ_SYSTEM_PLY)
820 if test -z "$COMPILE_ENVIRONMENT"; then
821 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
823 AC_SUBST(NSINSTALL_BIN)
825 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
826 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
827 MOZ_PATH_PROGS(UNZIP, unzip)
828 if test -z "$UNZIP" -o "$UNZIP" = ":"; then
829 AC_MSG_ERROR([unzip not found in \$PATH])
831 MOZ_PATH_PROGS(ZIP, zip)
832 if test -z "$ZIP" -o "$ZIP" = ":"; then
833 AC_MSG_ERROR([zip not found in \$PATH])
835 MOZ_PATH_PROG(XARGS, xargs)
836 if test -z "$XARGS" -o "$XARGS" = ":"; then
837 AC_MSG_ERROR([xargs not found in \$PATH .])
840 MOZ_PATH_PROG(RPMBUILD, rpmbuild, :)
843 if test "$COMPILE_ENVIRONMENT"; then
845 dnl ========================================================
846 dnl = Mac OS X toolchain support
847 dnl ========================================================
851 dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
852 dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
853 dnl the environment and includedir purposes (when using an SDK, below),
854 dnl but remember the full version number for the libdir (SDK).
856 GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
857 GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
859 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
860 dnl Bug 280479, but this keeps popping up in bug 292530 too because
861 dnl 4.0.0/4061 is the default compiler in Tiger.
863 GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
865 if test "$GCC_BUILD" = "4061" ; then
866 AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
867 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
868 from building Mozilla. Upgrade to Xcode 2.1 or later.])
872 dnl xcodebuild needs GCC_VERSION defined in the environment, since it
873 dnl doesn't respect the CC/CXX setting. With GCC_VERSION set, it will use
874 dnl /usr/bin/g(cc|++)-$GCC_VERSION.
875 MOZ_PATH_PROGS(PBBUILD_BIN, pbbuild xcodebuild pbxbuild)
877 dnl sdp was formerly in /Developer/Tools. As of Mac OS X 10.4 (Darwin 8),
878 dnl it has moved into /usr/bin.
879 MOZ_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
883 AC_SUBST(GCC_VERSION)
885 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
886 dnl that a universal binary is being produced and MOZ_CAN_RUN_PROGRAMS
887 dnl when we can run target binaries.
888 AC_SUBST(UNIVERSAL_BINARY)
889 AC_SUBST(MOZ_CAN_RUN_PROGRAMS)
891 dnl ========================================================
892 dnl Check for MacOS deployment target version
893 dnl ========================================================
895 MOZ_ARG_ENABLE_STRING(macos-target,
896 [ --enable-macos-target=VER (default=10.6)
897 Set the minimum MacOS version needed at runtime],
898 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
902 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
903 dnl Use the specified value
904 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
906 dnl No value specified on the command line or in the environment,
907 dnl use architecture minimum.
908 export MACOSX_DEPLOYMENT_TARGET=10.6
913 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
915 dnl ========================================================
916 dnl = Mac OS X SDK support
917 dnl ========================================================
920 MOZ_ARG_WITH_STRING(macos-sdk,
921 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
922 MACOS_SDK_DIR=$withval)
924 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
925 dnl NEXT_ROOT will be set and exported only if it's needed.
926 AC_SUBST(MACOS_SDK_DIR)
929 if test "$MACOS_SDK_DIR"; then
930 dnl Sync this section with the ones in NSPR and NSS.
931 dnl Changes to the cross environment here need to be accounted for in
932 dnl the libIDL checks (below) and xpidl build.
934 if test ! -d "$MACOS_SDK_DIR"; then
935 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
936 specify a valid SDK. SDKs are installed when the optional cross-development
937 tools are selected during the Xcode/Developer Tools installation.])
940 GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
941 if test "$GCC_VERSION_MAJOR" -lt "4" ; then
942 AC_MSG_ERROR([You need to upgrade the compiler version to 4.x])
944 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
945 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
947 dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER.
948 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
949 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
951 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
952 dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
953 dnl that supports -syslibroot. Don't set NEXT_ROOT because it will
954 dnl be ignored and cause warnings when -syslibroot is specified.
955 dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
956 dnl the -isysroot it receives, so this is only needed with 4.0.0.
957 LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
962 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
964 AC_TRY_COMPILE([#include <new>],[],
968 AC_MSG_RESULT($result)
970 if test "$result" = "no" ; then
971 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
975 fi # COMPILE_ENVIRONMENT
977 AC_MSG_CHECKING([compiler version])
978 # Just print it so it shows up in the logs.
979 cc_version=$($CC --version)
980 AC_MSG_RESULT([$cc_version])
982 if test -n "$MAKE"; then
983 if test `echo $MAKE | grep -c make.py` != 1; then
990 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
993 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
996 if test "$GMAKE" = ":"; then
997 AC_MSG_ERROR([GNU make not found])
1001 if test -z "$MAKE"; then
1005 if test "$COMPILE_ENVIRONMENT"; then
1011 fi # COMPILE_ENVIRONMENT
1013 dnl ========================================================
1014 dnl set the defaults first
1015 dnl ========================================================
1018 AR_EXTRACT='$(AR) x'
1031 MOZ_USER_DIR=".mozilla"
1034 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/media/libjpeg)'
1036 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
1038 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/media/libpng)'
1040 MOZ_JS_STATIC_LIBS='$(call EXPAND_LIBNAME_PATH,js_static,$(LIBXUL_DIST)/lib)'
1041 MOZ_JS_SHARED_LIBS='$(call EXPAND_LIBNAME_PATH,mozjs,$(LIBXUL_DIST)/lib)'
1042 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core -lmozalloc'
1043 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
1044 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom -lmozalloc'
1045 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
1046 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1047 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
1049 # These are specially defined on Windows only
1052 XPCOM_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1053 XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime.$(LIB_SUFFIX)'
1056 XPCOM_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_GLUE_LDOPTS
1057 XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_STANDALONE_GLUE_LDOPTS
1063 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
1065 USE_DEPENDENT_LIBS=1
1067 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
1069 if test -n "$CROSS_COMPILE"; then
1070 OS_TARGET="${target_os}"
1071 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
1073 case "${target_os}" in
1074 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
1075 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
1076 gnu*) OS_ARCH=GNU ;;
1077 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
1078 mingw*) OS_ARCH=WINNT OS_TARGET=WINNT ;;
1079 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
1082 *-android*|*-linuxandroid*) OS_ARCH=Linux OS_TARGET=Android ;;
1085 OS_TARGET=`uname -s`
1086 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1087 OS_RELEASE=`uname -r`
1090 # Before this used `uname -m` when not cross compiling
1091 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1092 OS_TEST="${target_cpu}"
1094 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1096 #######################################################################
1097 # Master "Core Components" macros for getting the OS target #
1098 #######################################################################
1101 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1102 # cross-compilation.
1106 # Define and override various archtecture-specific variables, including
1115 case "$HOST_OS_ARCH" in
1129 if test -z "$GNU_CC"; then
1130 if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1135 if test -z "$GNU_CXX"; then
1136 if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1137 SOLARIS_SUNPRO_CXX=1
1140 AC_SUBST(SOLARIS_SUNPRO_CC)
1141 AC_SUBST(SOLARIS_SUNPRO_CXX)
1153 if test -z "$CROSS_COMPILE" ; then
1159 # If uname -s returns "Windows_NT", we assume that we are using
1160 # the uname.exe in MKS toolkit.
1162 # The -r option of MKS uname only returns the major version number.
1163 # So we need to use its -v option to get the minor version number.
1164 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1168 OS_MINOR_RELEASE=`uname -v`
1169 if test "$OS_MINOR_RELEASE" = "00"; then
1172 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1176 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1177 # the uname.exe in the MSYS tools.
1179 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1184 OS_RELEASE=`uname -v`.`uname -r`
1185 OS_TEST=${target_cpu}
1193 OS_RELEASE=`uname -v`
1196 case "${target_cpu}" in
1207 if test -z "$CROSS_COMPILE" ; then
1215 # Only set CPU_ARCH if we recognize the value of OS_TEST
1226 powerpc | ppc | rs6000)
1230 Alpha | alpha | ALPHA)
1263 if test -z "$OS_TARGET"; then
1266 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1268 dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64.
1269 dnl ===============================================================
1273 INTEL_ARCHITECTURE=1
1276 dnl Configure platform-specific CPU architecture compiler options.
1277 dnl ==============================================================
1280 dnl =================================================================
1281 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1282 dnl which is bad when cross compiling.
1283 dnl =================================================================
1284 if test "$COMPILE_ENVIRONMENT"; then
1285 configure_static_assert_macros='
1286 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1287 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1288 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1291 dnl test that the macros actually work:
1292 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1293 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1296 ac_cv_static_assertion_macros_work="yes"
1297 AC_TRY_COMPILE([$configure_static_assert_macros],
1298 [CONFIGURE_STATIC_ASSERT(1)],
1300 ac_cv_static_assertion_macros_work="no")
1301 AC_TRY_COMPILE([$configure_static_assert_macros],
1302 [CONFIGURE_STATIC_ASSERT(0)],
1303 ac_cv_static_assertion_macros_work="no",
1306 AC_TRY_COMPILE([$configure_static_assert_macros],
1307 [CONFIGURE_STATIC_ASSERT(1)],
1309 ac_cv_static_assertion_macros_work="no")
1310 AC_TRY_COMPILE([$configure_static_assert_macros],
1311 [CONFIGURE_STATIC_ASSERT(0)],
1312 ac_cv_static_assertion_macros_work="no",
1316 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1317 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1318 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1320 fi # COMPILE_ENVIRONMENT
1322 dnl ========================================================
1323 dnl Android libstdc++, placed here so it can use MOZ_ARCH
1325 dnl ========================================================
1329 dnl ========================================================
1330 dnl Suppress Clang Argument Warnings
1331 dnl ========================================================
1332 if test -n "$CLANG_CC"; then
1333 _WARNINGS_CFLAGS="-Qunused-arguments ${_WARNINGS_CFLAGS}"
1334 CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
1336 if test -n "$CLANG_CXX"; then
1337 _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
1340 dnl ========================================================
1341 dnl = Use Address Sanitizer
1342 dnl ========================================================
1343 MOZ_ARG_ENABLE_BOOL(address-sanitizer,
1344 [ --enable-address-sanitizer Enable Address Sanitizer (default=no)],
1347 if test -n "$MOZ_ASAN"; then
1353 dnl ========================================================
1354 dnl = Enable hacks required for LLVM instrumentations
1355 dnl ========================================================
1356 MOZ_ARG_ENABLE_BOOL(llvm-hacks,
1357 [ --enable-llvm-hacks Enable workarounds required for several LLVM instrumentations (default=no)],
1360 if test -n "$MOZ_LLVM_HACKS"; then
1364 AC_SUBST(MOZ_NO_WLZDEFS)
1365 AC_SUBST(MOZ_CFLAGS_NSS)
1367 dnl ========================================================
1368 dnl GNU specific defaults
1369 dnl ========================================================
1370 if test "$GNU_CC"; then
1371 # FIXME: Let us build with strict aliasing. bug 414641.
1372 CFLAGS="$CFLAGS -fno-strict-aliasing"
1373 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1374 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1375 DSO_LDOPTS='-shared'
1376 if test "$GCC_USE_GNU_LD"; then
1377 # Some tools like ASan use a runtime library that is only
1378 # linked against executables, so we must allow undefined
1379 # symbols for shared objects in some cases.
1380 if test -z "$MOZ_NO_WLZDEFS"; then
1381 # Don't allow undefined symbols in libraries
1382 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1385 WARNINGS_AS_ERRORS='-Werror -Wno-error=uninitialized'
1387 DSO_PIC_CFLAGS='-fPIC'
1388 ASFLAGS="$ASFLAGS -fPIC"
1389 AC_MSG_CHECKING([for --noexecstack option to as])
1390 _SAVE_CFLAGS=$CFLAGS
1391 CFLAGS="$CFLAGS -Wa,--noexecstack"
1392 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
1393 [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
1394 AC_MSG_RESULT([no]))
1395 CFLAGS=$_SAVE_CFLAGS
1396 AC_MSG_CHECKING([for -z noexecstack option to ld])
1397 _SAVE_LDFLAGS=$LDFLAGS
1398 LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
1399 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
1401 LDFLAGS=$_SAVE_LDFLAGS)
1403 # Check for -mssse3 on $CC
1404 AC_MSG_CHECKING([if toolchain supports -mssse3 option])
1405 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
1406 _SAVE_CFLAGS=$CFLAGS
1407 CFLAGS="$CFLAGS -mssse3"
1408 AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
1409 [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
1410 AC_MSG_RESULT([no]))
1411 CFLAGS=$_SAVE_CFLAGS
1412 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
1414 # Turn on GNU-specific warnings:
1415 # -Wall - turn on a lot of warnings
1416 # -pedantic - this is turned on below
1417 # -Wpointer-arith - enabled with -pedantic, but good to have even if not
1418 # -Wdeclaration-after-statement - MSVC doesn't like these
1419 # -Werror=return-type - catches missing returns, zero false positives
1420 # -Wtype-limits - catches overflow bugs, few false positives
1421 # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1423 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -Wpointer-arith -Wdeclaration-after-statement"
1424 MOZ_C_SUPPORTS_WARNING(-W, error=return-type, ac_c_has_werror_return_type)
1425 MOZ_C_SUPPORTS_WARNING(-W, type-limits, ac_c_has_wtype_limits)
1426 MOZ_C_SUPPORTS_WARNING(-W, empty-body, ac_c_has_wempty_body)
1428 # Turn off the following warnings that -Wall/-pedantic turn on:
1429 # -Wno-unused - lots of violations in third-party code
1430 # -Wno-overlength-strings - we exceed the minimum maximum length frequently
1432 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-unused"
1433 MOZ_C_SUPPORTS_WARNING(-Wno-, overlength-strings, ac_c_has_wno_overlength_strings)
1435 if test -z "$INTEL_CC" -a -z "$CLANG_CC"; then
1436 # Don't use -Wcast-align with ICC or clang
1438 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1439 hppa | ia64 | sparc | arm)
1442 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1447 dnl Turn pedantic on but disable the warnings for long long
1450 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1451 _USE_CPP_INCLUDE_FLAG=1
1453 elif test "$SOLARIS_SUNPRO_CC"; then
1455 if test "$CPU_ARCH" = "sparc"; then
1456 # for Sun Studio on Solaris/SPARC
1457 DSO_PIC_CFLAGS='-xcode=pic32'
1459 DSO_PIC_CFLAGS='-KPIC'
1461 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1463 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1464 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1466 DSO_LDOPTS='-shared'
1467 if test "$GNU_LD"; then
1468 # Don't allow undefined symbols in libraries
1469 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1473 DSO_PIC_CFLAGS='-KPIC'
1474 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1477 if test "$GNU_CXX"; then
1478 # FIXME: Let us build with strict aliasing. bug 414641.
1479 CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
1481 # Turn on GNU-specific warnings:
1482 # -Wall - turn on a lot of warnings
1483 # -pedantic - this is turned on below
1484 # -Wpointer-arith - enabled with -pedantic, but good to have even if not
1485 # -Woverloaded-virtual - ???
1486 # -Werror=return-type - catches missing returns, zero false positives
1487 # -Wtype-limits - catches overflow bugs, few false positives
1488 # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
1489 # -Werror=conversion-null - catches conversions between NULL and non-pointer types
1491 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual"
1492 MOZ_CXX_SUPPORTS_WARNING(-W, error=return-type, ac_cxx_has_werror_return_type)
1493 MOZ_CXX_SUPPORTS_WARNING(-W, type-limits, ac_cxx_has_wtype_limits)
1494 MOZ_CXX_SUPPORTS_WARNING(-W, empty-body, ac_cxx_has_wempty_body)
1495 MOZ_CXX_SUPPORTS_WARNING(-W, error=conversion-null, ac_cxx_has_werror_conversion_null)
1497 # Turn off the following warnings that -Wall/-pedantic turn on:
1498 # -Wno-ctor-dtor-privacy - ???
1499 # -Wno-overlength-strings - we exceed the minimum maximum length frequently
1500 # -Wno-invalid-offsetof - we use offsetof on non-POD types frequently
1501 # -Wno-variadic-macros - ???
1503 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-ctor-dtor-privacy"
1504 MOZ_CXX_SUPPORTS_WARNING(-Wno-, overlength-strings, ac_cxx_has_wno_overlength_strings)
1505 MOZ_CXX_SUPPORTS_WARNING(-Wno-, invalid-offsetof, ac_cxx_has_wno_invalid_offsetof)
1506 MOZ_CXX_SUPPORTS_WARNING(-Wno-, variadic-macros, ac_cxx_has_wno_variadic_macros)
1508 if test -z "$INTEL_CXX" -a -z "$CLANG_CXX"; then
1509 # Don't use -Wcast-align with ICC or clang
1511 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1512 hppa | ia64 | sparc | arm)
1515 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1520 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1521 _USE_CPP_INCLUDE_FLAG=1
1523 # Recent clang and gcc support C++11 deleted functions without warnings if
1524 # compiling with -std=c++0x or -std=gnu++0x (or c++11 or gnu++11 in very new
1525 # versions). We can't use -std=c++0x yet, so gcc's support must remain
1526 # unused. But clang's warning can be disabled, so when compiling with clang
1527 # we use it to opt out of the warning, enabling (macro-encapsulated) use of
1528 # deleted function syntax.
1529 if test "$CLANG_CXX"; then
1530 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-c++0x-extensions"
1531 MOZ_CXX_SUPPORTS_WARNING(-Wno-, extended-offsetof, ac_cxx_has_wno_extended_offsetof)
1535 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1538 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1539 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1540 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1541 dnl normal behavior.
1542 dnl ========================================================
1544 MKSHLIB_UNFORCE_ALL=
1546 if test "$COMPILE_ENVIRONMENT"; then
1547 if test "$GNU_CC"; then
1548 AC_MSG_CHECKING(whether ld has archive extraction flags)
1549 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1550 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1551 ac_cv_mkshlib_force_and_unforce="no"
1552 exec 3<&0 <<LOOP_INPUT
1553 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1554 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1555 force="-Wl,-all"; unforce="-Wl,-none"
1562 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1565 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1567 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1571 eval $ac_cv_mkshlib_force_and_unforce
1572 MKSHLIB_FORCE_ALL=$force
1573 MKSHLIB_UNFORCE_ALL=$unforce
1576 fi # COMPILE_ENVIRONMENT
1578 dnl ========================================================
1579 dnl Checking for 64-bit OS
1580 dnl ========================================================
1581 if test "$COMPILE_ENVIRONMENT"; then
1584 AC_MSG_CHECKING(for 64-bit OS)
1585 AC_TRY_COMPILE([$configure_static_assert_macros],
1586 [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1587 result="yes", result="no")
1588 AC_MSG_RESULT("$result")
1589 if test "$result" = "yes"; then
1590 AC_DEFINE(HAVE_64BIT_OS)
1593 AC_SUBST(HAVE_64BIT_OS)
1595 fi # COMPILE_ENVIRONMENT
1597 dnl ========================================================
1598 dnl Enable high-memory support on OS/2 by default.
1599 dnl ========================================================
1600 MOZ_OS2_HIGH_MEMORY=1
1601 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1602 [ --disable-os2-high-mem Disable high-memory support on OS/2],
1603 MOZ_OS2_HIGH_MEMORY=,
1604 MOZ_OS2_HIGH_MEMORY=1 )
1605 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1607 dnl ========================================================
1608 dnl = Use profiling compile flags
1609 dnl ========================================================
1610 MOZ_ARG_ENABLE_BOOL(profiling,
1611 [ --enable-profiling Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1615 # For profiling builds keep the symbol information
1616 if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then
1617 STRIP_FLAGS="--strip-debug"
1620 dnl ========================================================
1621 dnl = Use incremental GC
1622 dnl ========================================================
1624 MOZ_ARG_DISABLE_BOOL(gcincremental,
1625 [ --disable-gcincremental Disable incremental GC],
1627 if test -n "$JSGC_INCREMENTAL"; then
1628 AC_DEFINE(JSGC_INCREMENTAL)
1631 dnl ========================================================
1632 dnl = Use generational GC
1633 dnl ========================================================
1634 MOZ_ARG_ENABLE_BOOL(gcgenerational,
1635 [ --enable-gcgenerational Enable generational GC],
1636 JSGC_GENERATIONAL=1,
1637 JSGC_GENERATIONAL= )
1638 if test -n "$JSGC_GENERATIONAL"; then
1639 AC_DEFINE(JSGC_GENERATIONAL)
1642 dnl ========================================================
1643 dnl = Perform moving GC stack rooting analysis
1644 dnl ========================================================
1645 MOZ_ARG_ENABLE_BOOL(root-analysis,
1646 [ --enable-root-analysis Enable moving GC stack root analysis],
1647 JSGC_ROOT_ANALYSIS=1,
1648 JSGC_ROOT_ANALYSIS= )
1649 if test -n "$JSGC_ROOT_ANALYSIS"; then
1650 AC_DEFINE(JSGC_ROOT_ANALYSIS)
1653 dnl ========================================================
1654 dnl = Use exact stack rooting for GC
1655 dnl ========================================================
1656 MOZ_ARG_ENABLE_BOOL(exact-rooting,
1657 [ --enable-exact-rooting Enable use of exact stack roots for GC],
1658 JSGC_USE_EXACT_ROOTING=1,
1659 JSGC_USE_EXACT_ROOTING= )
1660 if test -n "$JSGC_USE_EXACT_ROOTING"; then
1661 AC_DEFINE(JSGC_USE_EXACT_ROOTING)
1664 dnl ========================================================
1666 dnl ========================================================
1667 MOZ_ARG_ENABLE_BOOL(valgrind,
1668 [ --enable-valgrind Enable Valgrind integration hooks (default=no)],
1671 if test -n "$MOZ_VALGRIND"; then
1672 MOZ_CHECK_HEADER([valgrind/valgrind.h], [],
1674 [--enable-valgrind specified but Valgrind is not installed]))
1675 AC_DEFINE(MOZ_VALGRIND)
1677 AC_SUBST(MOZ_VALGRIND)
1679 dnl ========================================================
1681 dnl ========================================================
1682 MOZ_ARG_ENABLE_BOOL(dmd,
1683 [ --enable-dmd Enable DMD; also disables jemalloc (default=no)],
1686 if test -n "$MOZ_DMD"; then
1687 MOZ_CHECK_HEADER([valgrind/valgrind.h], [],
1689 [--enable-dmd specified but Valgrind is not installed]))
1693 dnl ========================================================
1695 dnl ========================================================
1696 MOZ_ARG_ENABLE_BOOL(jprof,
1697 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.],
1700 if test -n "$MOZ_JPROF"; then
1702 AC_DEFINE(MOZ_JPROF)
1705 dnl ========================================================
1707 dnl ========================================================
1708 MOZ_ENABLE_PROFILER_SPS=1
1710 case "${OS_TARGET}" in
1712 case "${CPU_ARCH}" in
1715 MOZ_ENABLE_PROFILER_SPS=
1719 case "${CPU_ARCH}" in
1722 MOZ_ENABLE_PROFILER_SPS=
1727 MOZ_ENABLE_PROFILER_SPS=
1731 if test -n "$MOZ_ENABLE_PROFILER_SPS"; then
1732 AC_DEFINE(MOZ_ENABLE_PROFILER_SPS)
1735 dnl ========================================================
1737 dnl ========================================================
1738 MOZ_ARG_ENABLE_BOOL(shark,
1739 [ --enable-shark Enable shark remote profiling. Implies --enable-profiling.],
1742 if test -n "$MOZ_SHARK"; then
1744 AC_DEFINE(MOZ_SHARK)
1747 dnl ========================================================
1749 dnl ========================================================
1750 MOZ_ARG_ENABLE_BOOL(callgrind,
1751 [ --enable-callgrind Enable callgrind profiling. Implies --enable-profiling.],
1754 if test -n "$MOZ_CALLGRIND"; then
1756 AC_DEFINE(MOZ_CALLGRIND)
1759 dnl ========================================================
1761 dnl ========================================================
1762 MOZ_ARG_ENABLE_BOOL(vtune,
1763 [ --enable-vtune Enable vtune profiling. Implies --enable-profiling.],
1766 if test -n "$MOZ_VTUNE"; then
1768 AC_DEFINE(MOZ_VTUNE)
1771 dnl ========================================================
1773 dnl ========================================================
1774 if test -n "$MOZ_PROFILING"; then
1775 AC_DEFINE(MOZ_PROFILING)
1778 dnl ========================================================
1779 dnl System overrides of the defaults for host
1780 dnl ========================================================
1783 if test -n "$_WIN32_MSVC"; then
1785 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1786 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1787 HOST_RANLIB='echo ranlib'
1789 HOST_CFLAGS="$HOST_CFLAGS -mwindows"
1791 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11 -D_CRT_SECURE_NO_WARNINGS"
1792 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1793 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1794 HOST_BIN_SUFFIX=.exe
1797 PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1801 case "${host_cpu}" in
1803 if test -n "$_WIN32_MSVC"; then
1804 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
1808 if test -n "$_WIN32_MSVC"; then
1809 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
1811 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1817 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1818 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1819 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1822 *-linux*|*-kfreebsd*-gnu|*-gnu*)
1823 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1824 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1825 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1829 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1830 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1831 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1832 HOST_BIN_SUFFIX=.exe
1837 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1838 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1842 dnl We require version 2.5 or newer of Python to build.
1843 AC_MSG_CHECKING([for Python version >= $PYTHON_VERSION_MAJOR.$PYTHON_VERSION_MINOR but not 3.x])
1846 read python_version_major python_version_minor python_version_micro <<EOF
1847 `$PYTHON -c 'import sys; print sys.version_info[0], sys.version_info[1], sys.version_info[2]'`
1851 if test $python_version_major -ne $PYTHON_VERSION_MAJOR; then
1852 AC_MSG_ERROR([Cannot build on Python $python_version_major.])
1854 if test $python_version_minor -lt $PYTHON_VERSION_MINOR; then
1855 AC_MSG_ERROR([Cannot build on Python $python_version_major.$python_version_minor. You need at least $PYTHON_VERSION_MAJOR.$PYTHON_VERSION_MINOR.])
1858 AC_MSG_RESULT([yes])
1860 dnl Check for using a custom <stdint.h> implementation
1861 dnl ========================================================
1862 AC_MSG_CHECKING(for custom <stdint.h> implementation)
1863 if test "$MOZ_CUSTOM_STDINT_H"; then
1864 AC_DEFINE_UNQUOTED(MOZ_CUSTOM_STDINT_H, "$MOZ_CUSTOM_STDINT_H")
1865 AC_MSG_RESULT(using $MOZ_CUSTOM_STDINT_H)
1867 AC_MSG_RESULT(none specified)
1870 dnl Get mozilla version from central milestone file
1871 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1872 MOZILLA_UAVERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir -uaversion`
1874 dnl Get version of various core apps from the version files.
1875 FIREFOX_VERSION=`cat $_topsrcdir/browser/config/version.txt`
1877 if test -z "$FIREFOX_VERSION"; then
1878 AC_MSG_ERROR([FIREFOX_VERSION is unexpectedly blank.])
1881 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1882 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1883 AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION")
1885 MOZ_DOING_LTO(lto_is_enabled)
1887 dnl ========================================================
1888 dnl System overrides of the defaults for target
1889 dnl ========================================================
1894 if test ! "$GNU_CC"; then
1895 if test ! "$HAVE_64BIT_OS"; then
1896 # Compiling with Visual Age C++ object model compat is the
1897 # default. To compile with object model ibm, add
1898 # AIX_OBJMODEL=ibm to .mozconfig.
1899 if test "$AIX_OBJMODEL" = "ibm"; then
1900 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1907 AC_SUBST(AIX_OBJMODEL)
1908 DSO_LDOPTS='-qmkshrobj=1'
1909 DSO_CFLAGS='-qflag=w:w'
1911 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1913 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1914 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1915 if test "$COMPILE_ENVIRONMENT"; then
1918 AC_MSG_CHECKING([for IBM XLC/C++ compiler version >= 9.0.0.7])
1920 [#if (__IBMCPP__ < 900)
1921 #error "Bad compiler"
1923 _BAD_COMPILER=,_BAD_COMPILER=1)
1924 if test -n "$_BAD_COMPILER"; then
1926 AC_MSG_ERROR([IBM XLC/C++ 9.0.0.7 or higher is required to build.])
1928 AC_MSG_RESULT([yes])
1931 TARGET_COMPILER_ABI="ibmc"
1932 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1933 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1936 case "${target_os}" in
1941 if test "$COMPILE_ENVIRONMENT"; then
1942 MOZ_CHECK_HEADERS(sys/inttypes.h)
1944 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1948 dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
1957 _WARNINGS_CFLAGS="-Wall"
1958 _WARNINGS_CXXFLAGS="-Wall"
1959 # The test above doesn't work properly, at least on 3.1.
1960 MKSHLIB_FORCE_ALL=''
1961 MKSHLIB_UNFORCE_ALL=''
1967 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1968 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1969 MOZ_OPTIMIZE_FLAGS="-O3"
1971 # Statically disable jemalloc on 10.5 and 32-bit 10.6. See bug 702250.
1972 if test "$HAVE_64BIT_OS"; then
1977 STRIP="$STRIP -x -S"
1978 # Check whether we're targeting OS X or iOS
1979 AC_CACHE_CHECK(for iOS target,
1981 [AC_TRY_COMPILE([#include <TargetConditionals.h>
1982 #if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
1986 ac_cv_ios_target="yes",
1987 ac_cv_ios_target="no")])
1988 if test "$ac_cv_ios_target" = "yes"; then
1990 AC_DEFINE(XP_DARWIN)
1991 _PLATFORM_DEFAULT_TOOLKIT='cairo-uikit'
1993 AC_DEFINE(XP_MACOSX)
1994 AC_DEFINE(XP_DARWIN)
1995 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1996 # The ExceptionHandling framework is needed for Objective-C exception
1997 # logging code in nsObjCExceptions.h. Currently we only use that in debug
1999 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
2001 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
2004 if test "x$lto_is_enabled" = "xyes"; then
2005 echo "Skipping -dead_strip because lto is enabled."
2006 dnl DTrace and -dead_strip don't interact well. See bug 403132.
2007 dnl ===================================================================
2008 elif test "x$enable_dtrace" = "xyes"; then
2009 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
2011 dnl check for the presence of the -dead_strip linker flag
2012 AC_MSG_CHECKING([for -dead_strip option to ld])
2013 _SAVE_LDFLAGS=$LDFLAGS
2014 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
2015 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
2016 if test -n "$_HAVE_DEAD_STRIP" ; then
2017 AC_MSG_RESULT([yes])
2018 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
2023 LDFLAGS=$_SAVE_LDFLAGS
2026 dnl With newer linkers we need to pass -allow_heap_execute because of
2027 dnl Microsoft Silverlight (5.1.10411.0 at least).
2028 AC_MSG_CHECKING([for -allow_heap_execute option to ld])
2029 _SAVE_LDFLAGS=$LDFLAGS
2030 LDFLAGS="$LDFLAGS -Wl,-allow_heap_execute"
2031 AC_TRY_LINK(,[return 0;],_HAVE_ALLOW_HEAP_EXECUTE=1,
2032 _HAVE_ALLOW_HEAP_EXECUTE=)
2033 if test -n "$_HAVE_ALLOW_HEAP_EXECUTE" ; then
2034 AC_MSG_RESULT([yes])
2035 MOZ_ALLOW_HEAP_EXECUTE_FLAGS="-Wl,-allow_heap_execute"
2039 LDFLAGS=$_SAVE_LDFLAGS
2041 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
2046 if test ! "$GNU_CC"; then
2050 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
2051 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
2052 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2055 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2056 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2059 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2060 AC_DEFINE(_LARGEFILE64_SOURCE)
2065 if test ! "$GNU_CC"; then
2066 DSO_LDOPTS='-b -Wl,+s'
2069 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
2070 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
2071 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2073 DSO_LDOPTS='-b -E +s'
2074 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2075 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2077 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
2078 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2081 *-android*|*-linuxandroid*)
2082 AC_DEFINE(NO_PW_GECOS)
2084 if test -n "$gonkdir"; then
2085 _PLATFORM_DEFAULT_TOOLKIT=cairo-gonk
2090 _PLATFORM_DEFAULT_TOOLKIT=cairo-android
2093 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2095 MOZ_GFX_OPTIMIZE_MOBILE=1
2096 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions"
2100 # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
2101 # Similarly for GNU_CXX and INTEL_CXX.
2102 if test "$INTEL_CC" -o "$INTEL_CXX"; then
2103 # -Os has been broken on Intel's C/C++ compilers for quite a
2104 # while; Intel recommends against using it.
2105 MOZ_OPTIMIZE_FLAGS="-O2"
2106 MOZ_DEBUG_FLAGS="-g"
2107 elif test "$GNU_CC" -o "$GNU_CXX"; then
2108 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2109 case $GCC_VERSION in
2111 # -Os is broken on gcc 4.1.x 4.2.x, 4.5.x we need to tweak it to get good results.
2112 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
2114 MOZ_PGO_OPTIMIZE_FLAGS="-O3"
2115 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks $MOZ_OPTIMIZE_SIZE_TWEAK"
2116 MOZ_DEBUG_FLAGS="-g"
2119 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2123 case "${target_cpu}" in
2125 CFLAGS="$CFLAGS -mieee"
2126 CXXFLAGS="$CXXFLAGS -mieee"
2132 MOZ_DEBUG_FLAGS="-g" # We want inlining
2136 if test -z "$MC"; then
2146 # certain versions of cygwin's makedepend barf on the
2147 # #include <string> vs -I./dist/include/string issue so don't use it
2148 if test -n "$GNU_CC"; then
2150 CXX="$CXX -mwindows"
2151 CPP="$CPP -mwindows"
2152 CFLAGS="$CFLAGS -mms-bitfields"
2153 CXXFLAGS="$CXXFLAGS -mms-bitfields"
2154 DSO_LDOPTS='-shared'
2155 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2156 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2158 # Use temp file for windres (bug 213281)
2159 RCFLAGS='-O coff --use-temp-file'
2160 # mingw doesn't require kernel32, user32, and advapi32 explicitly
2161 LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32 -luserenv"
2163 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core -lmozalloc'
2164 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom -lmozalloc'
2166 IMPORT_LIB_SUFFIX=dll.a
2167 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2169 TARGET_COMPILER_ABI=msvc
2173 if test "$AS_BIN"; then
2174 AS="$(basename "$AS_BIN")"
2177 AR_FLAGS='-NOLOGO -OUT:"$@"'
2179 RANLIB='echo not_ranlib'
2180 STRIP='echo not_strip'
2191 IMPORT_LIB_SUFFIX=lib
2192 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2193 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2195 MKSHLIB_UNFORCE_ALL=
2196 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2197 _USE_CPP_INCLUDE_FLAG=1
2198 _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2199 _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2200 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2201 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2202 # MSVC warning C4345 warns of newly conformant behavior as of VS2003.
2203 # MSVC warning C4351 warns of newly conformant behavior as of VS2005.
2204 # MSVC warning C4800 warns when a value is implicitly cast to bool,
2205 # because this also forces narrowing to a single byte, which can be a
2206 # perf hit. But this matters so little in practice (and often we want
2207 # that behavior) that it's better to turn it off.
2208 CXXFLAGS="$CXXFLAGS -wd4345 -wd4351 -wd4800"
2209 # make 'foo == bar;' error out
2210 CFLAGS="$CFLAGS -we4553"
2211 CXXFLAGS="$CXXFLAGS -we4553"
2212 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2213 MOZ_DEBUG_FLAGS='-Zi'
2214 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2215 WARNINGS_AS_ERRORS='-WX'
2216 MOZ_OPTIMIZE_FLAGS='-O1'
2218 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2219 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2220 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2221 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2222 LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT"
2223 dnl For profile-guided optimization
2224 PROFILE_GEN_CFLAGS="-GL"
2225 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2226 dnl XXX: PGO builds can fail with warnings treated as errors,
2227 dnl specifically "no profile data available" appears to be
2228 dnl treated as an error sometimes. This might be a consequence
2229 dnl of using WARNINGS_AS_ERRORS in some modules, combined
2230 dnl with the linker doing most of the work in the whole-program
2231 dnl optimization/PGO case. I think it's probably a compiler bug,
2232 dnl but we work around it here.
2233 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2234 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2235 dnl Probably also a compiler bug, but what can you do?
2236 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2237 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2239 AC_DEFINE(HAVE_SNPRINTF)
2244 AC_DEFINE(HW_THREADS)
2245 AC_DEFINE(STDC_HEADERS)
2246 AC_DEFINE(NEW_H, <new>)
2247 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2248 TARGET_MD_ARCH=win32
2249 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2251 MOZ_USER_DIR="Mozilla"
2253 dnl Hardcode to win95 for now - cls
2254 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2256 dnl set NO_X11 defines here as the general check is skipped on win32
2262 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2263 L10NBASEDIR=`cd $L10NBASEDIR && pwd -W`
2269 if test -z "$MOZ_TOOLS"; then
2270 AC_MSG_ERROR([MOZ_TOOLS is not set])
2272 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2273 if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
2274 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2276 MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2277 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2278 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2285 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.])
2291 if test "$HAVE_64BIT_OS"; then
2292 AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2295 if test -n "$GNU_CC"; then
2296 CFLAGS="$CFLAGS -mstackrealign -fno-keep-inline-dllexport"
2297 CXXFLAGS="$CXXFLAGS -mstackrealign -fno-keep-inline-dllexport"
2298 LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup"
2300 AC_DEFINE(HAVE_STDCALL)
2301 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
2302 LDFLAGS="$LDFLAGS -SAFESEH"
2308 if test -n "$_WIN32_MSVC"; then
2309 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
2314 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2318 if test "$HAVE_64BIT_OS"; then
2325 CFLAGS="$CFLAGS -Dunix"
2326 CXXFLAGS="$CXXFLAGS -Dunix"
2327 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2329 DSO_PIC_CFLAGS='-fPIC -DPIC'
2330 DSO_LDOPTS='-shared'
2331 BIN_FLAGS='-Wl,--export-dynamic'
2333 DSO_PIC_CFLAGS='-fPIC -DPIC'
2334 DLL_SUFFIX=".so.1.0"
2335 DSO_LDOPTS='-shared'
2337 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2338 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2339 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2340 if test "$LIBRUNPATH"; then
2341 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2343 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2344 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2348 if test "$SO_VERSION"; then
2349 DLL_SUFFIX=".so.$SO_VERSION"
2351 DLL_SUFFIX=".so.1.0"
2353 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib -Wl,-rpath-link,$(if $(X11BASE),$(X11BASE),/usr/X11R6)/lib'
2355 DSO_PIC_CFLAGS='-fPIC'
2356 DSO_LDOPTS='-shared -fPIC'
2357 if test "$LIBRUNPATH"; then
2358 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2363 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2364 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2367 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2368 AC_DEFINE(TCPV40HDRS)
2374 IMPORT_LIB_SUFFIX=lib
2378 CFLAGS="$CFLAGS -Zomf"
2379 CXXFLAGS="$CXXFLAGS -Zomf"
2381 BIN_FLAGS='-Zlinker /ST:0x100000'
2385 WARNINGS_AS_ERRORS='-Werror'
2386 MOZ_DEBUG_FLAGS="-g -fno-inline"
2387 MOZ_OPTIMIZE_FLAGS="-O2"
2388 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2389 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2390 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2392 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2396 MOZ_USER_DIR="Mozilla"
2399 if test "$MOZTOOLS"; then
2400 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2402 AC_MSG_ERROR([MOZTOOLS is not set])
2404 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2405 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2406 LDFLAGS="$LDFLAGS -Zhigh-mem"
2407 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2408 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2411 # GCC for OS/2 currently predefines these, but we don't want them
2412 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2413 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2415 AC_CACHE_CHECK(for __declspec(dllexport),
2417 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2419 ac_os2_declspec="yes",
2420 ac_os2_declspec="no")])
2421 if test "$ac_os2_declspec" != "yes"; then
2422 AC_MSG_ERROR([Compiler does not support __declspec(dllexport), install GCC-4.3.2 or newer])
2428 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2430 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2431 # libraries one level up (e.g. libnspr4.so)
2432 if test "$SOLARIS_SUNPRO_CC"; then
2433 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
2434 LIBS="-lCrun -lCstd -lc $LIBS"
2435 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2436 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
2437 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
2438 LDFLAGS="-xildoff $LDFLAGS"
2439 if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
2440 _SAVE_LDFLAGS=$LDFLAGS
2441 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2442 AC_TRY_LINK([#include <stdio.h>],
2443 [printf("Hello World\n");],
2445 [LDFLAGS=$_SAVE_LDFLAGS])
2447 MOZ_OPTIMIZE_FLAGS="-xO4"
2448 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2449 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2450 MKSHLIB_FORCE_ALL='-z allextract'
2451 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2458 AS='/usr/ccs/bin/as'
2459 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2461 TARGET_COMPILER_ABI="sunc"
2462 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2463 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2464 AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2468 [#if (__SUNPRO_CC < 0x590)
2471 _BAD_COMPILER=,_BAD_COMPILER=1)
2472 if test -n "$_BAD_COMPILER"; then
2474 AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2479 [#if (__SUNPRO_CC >= 0x5100)
2480 #error "Sun C++ 5.10 or above"
2482 _ABOVE_SS12U1=,_ABOVE_SS12U1=1)
2483 if test "$_ABOVE_SS12U1"; then
2485 CXXFLAGS="$CXXFLAGS -xannotate=no"
2487 AC_MSG_RESULT([$_res])
2490 LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
2492 MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
2493 MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
2494 ASFLAGS="$ASFLAGS -fPIC"
2495 DSO_LDOPTS='-shared'
2496 WARNINGS_AS_ERRORS='-Werror'
2498 _WARNINGS_CXXFLAGS=''
2499 if test "$OS_RELEASE" = "5.3"; then
2500 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2503 if test "$OS_RELEASE" = "5.5.1"; then
2504 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2509 DSO_LDOPTS='-Bdynamic'
2510 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2511 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2513 AC_DEFINE(SPRINTF_RETURNS_STRING)
2514 case "$(target_os)" in
2516 DLL_SUFFIX='.so.1.0'
2522 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2527 AC_SUBST(MOZ_LINKER)
2528 if test -n "$MOZ_LINKER"; then
2529 AC_DEFINE(MOZ_LINKER)
2531 AC_SUBST(MOZ_ENABLE_SZIP)
2533 dnl Only one oddball right now (QNX), but this gives us flexibility
2534 dnl if any other platforms need to override this in the future.
2535 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2537 dnl ========================================================
2538 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2539 dnl by now will not have any way to link most binaries (tests
2540 dnl as well as viewer, apprunner, etc.), because some symbols
2541 dnl will be left out of the "composite" .so's by ld as unneeded.
2542 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2543 dnl they can link in the static libs that provide the missing
2545 dnl ========================================================
2546 NO_LD_ARCHIVE_FLAGS=
2547 if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
2548 NO_LD_ARCHIVE_FLAGS=1
2552 NO_LD_ARCHIVE_FLAGS=
2555 NO_LD_ARCHIVE_FLAGS=
2558 if test -z "$GNU_CC"; then
2559 NO_LD_ARCHIVE_FLAGS=
2563 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2565 dnl ========================================================
2566 dnl = Flags to strip unused symbols from .so components and
2567 dnl = to export jemalloc symbols when linking a program
2568 dnl ========================================================
2570 *-linux*|*-kfreebsd*-gnu|*-gnu*)
2571 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2574 if test -z "$GNU_CC"; then
2575 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2577 if test -z "$GCC_USE_GNU_LD"; then
2578 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2580 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2585 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2588 if test -n "$GNU_CC"; then
2589 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2594 if test -z "$COMPILE_ENVIRONMENT"; then
2595 SKIP_COMPILER_CHECKS=1
2596 SKIP_LIBRARY_CHECKS=1
2600 if test -z "$SKIP_COMPILER_CHECKS"; then
2601 dnl Checks for typedefs, structures, and compiler characteristics.
2602 dnl ========================================================
2610 AC_MSG_CHECKING(for __stdcall)
2611 AC_CACHE_VAL(ac_cv___stdcall,
2612 [AC_TRY_COMPILE([template <typename Method> struct foo;
2613 template <> struct foo<void (*)()> {};
2614 template <> struct foo<void (__stdcall*)()> {};],
2616 [ac_cv___stdcall=true],
2617 [ac_cv___stdcall=false])])
2618 if test "$ac_cv___stdcall" = true ; then
2619 AC_DEFINE(HAVE_STDCALL)
2625 AC_MSG_CHECKING(for ssize_t)
2626 AC_CACHE_VAL(ac_cv_type_ssize_t,
2627 [AC_TRY_COMPILE([#include <stdio.h>
2628 #include <sys/types.h>],
2630 [ac_cv_type_ssize_t=true],
2631 [ac_cv_type_ssize_t=false])])
2632 if test "$ac_cv_type_ssize_t" = true ; then
2633 AC_DEFINE(HAVE_SSIZE_T)
2638 AC_STRUCT_ST_BLKSIZE
2639 AC_MSG_CHECKING(for siginfo_t)
2640 AC_CACHE_VAL(ac_cv_siginfo_t,
2641 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2642 #include <signal.h>],
2644 [ac_cv_siginfo_t=true],
2645 [ac_cv_siginfo_t=false])])
2646 if test "$ac_cv_siginfo_t" = true ; then
2647 AC_DEFINE(HAVE_SIGINFO_T)
2653 dnl Check for int64, uint, and uint_t.
2654 dnl ========================================================
2655 AC_MSG_CHECKING(for int64)
2656 AC_CACHE_VAL(ac_cv_int64,
2657 [AC_TRY_COMPILE([#include <stdio.h>
2658 #include <sys/types.h>],
2661 [ac_cv_int64=false])])
2662 if test "$ac_cv_int64" = true ; then
2663 AC_DEFINE(HAVE_INT64)
2668 AC_MSG_CHECKING(for uint)
2669 AC_CACHE_VAL(ac_cv_uint,
2670 [AC_TRY_COMPILE([#include <stdio.h>
2671 #include <sys/types.h>],
2674 [ac_cv_uint=false])])
2675 if test "$ac_cv_uint" = true ; then
2676 AC_DEFINE(HAVE_UINT)
2681 AC_MSG_CHECKING(for uint_t)
2682 AC_CACHE_VAL(ac_cv_uint_t,
2683 [AC_TRY_COMPILE([#include <stdio.h>
2684 #include <sys/types.h>],
2686 [ac_cv_uint_t=true],
2687 [ac_cv_uint_t=false])])
2688 if test "$ac_cv_uint_t" = true ; then
2689 AC_DEFINE(HAVE_UINT_T)
2695 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2696 dnl are defined when compiling C++ but not C. Since the result of this
2697 dnl test is used only in C++, do it in C++.
2700 AC_MSG_CHECKING(for uname.domainname)
2701 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2702 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2703 [ struct utsname *res; char *domain;
2704 (void)uname(res); if (res != 0) { domain = res->domainname; } ],
2705 [ac_cv_have_uname_domainname_field=true],
2706 [ac_cv_have_uname_domainname_field=false])])
2708 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2709 AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2715 AC_MSG_CHECKING(for uname.__domainname)
2716 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2717 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2718 [ struct utsname *res; char *domain;
2719 (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
2720 [ac_cv_have_uname_us_domainname_field=true],
2721 [ac_cv_have_uname_us_domainname_field=false])])
2723 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2724 AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2730 dnl Check whether we can use gcc's c++0x mode
2733 if test "$GNU_CXX"; then
2734 _SAVE_CXXFLAGS=$CXXFLAGS
2735 CXXFLAGS="$CXXFLAGS -std=gnu++0x"
2737 AC_CACHE_CHECK(for gcc c++0x headers bug without rtti,
2738 ac_cv_cxx0x_headers_bug,
2739 [AC_TRY_COMPILE([#include <memory>], [],
2740 ac_cv_cxx0x_headers_bug="no",
2741 ac_cv_cxx0x_headers_bug="yes")])
2742 CXXFLAGS="$_SAVE_CXXFLAGS"
2743 if test "$ac_cv_cxx0x_headers_bug" = "no"; then
2744 CXXFLAGS="$CXXFLAGS -std=gnu++0x"
2748 dnl Check for usable char16_t (2 bytes, unsigned)
2749 dnl (we might not need the unsignedness check anymore)
2750 AC_CACHE_CHECK(for usable char16_t (2 bytes, unsigned),
2751 ac_cv_have_usable_char16_t,
2752 [AC_TRY_COMPILE([$configure_static_assert_macros],
2753 [CONFIGURE_STATIC_ASSERT(sizeof(char16_t) == 2);
2754 CONFIGURE_STATIC_ASSERT(char16_t(-1) > char16_t(0));
2755 CONFIGURE_STATIC_ASSERT(sizeof((u"hello")[0]) == 2);
2756 CONFIGURE_STATIC_ASSERT(sizeof(u'a') == 2);
2757 CONFIGURE_STATIC_ASSERT(u'\xFFFF' > u'\x0')],
2758 ac_cv_have_usable_char16_t="yes",
2759 ac_cv_have_usable_char16_t="no")])
2760 if test "$ac_cv_have_usable_char16_t" = "yes"; then
2761 AC_DEFINE(HAVE_CPP_CHAR16_T)
2763 elif test "$GNU_CXX"; then
2764 CXXFLAGS="$_SAVE_CXXFLAGS"
2767 dnl Check for usable wchar_t (2 bytes, unsigned)
2768 dnl (we really don't need the unsignedness check anymore)
2769 dnl ========================================================
2771 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2772 ac_cv_have_usable_wchar_v2,
2773 [AC_TRY_COMPILE([#include <stddef.h>
2774 $configure_static_assert_macros],
2775 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2776 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2777 ac_cv_have_usable_wchar_v2="yes",
2778 ac_cv_have_usable_wchar_v2="no")])
2779 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2780 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2781 HAVE_CPP_2BYTE_WCHAR_T=1
2782 elif test "$ac_cv_have_usable_char16_t" != "yes"; then
2783 dnl This is really gcc-only
2784 dnl Do this test using CXX only since some versions of gcc
2785 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2786 dnl only have short-wchar support for c++.
2787 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2789 _SAVE_CXXFLAGS=$CXXFLAGS
2790 CXXFLAGS="$CXXFLAGS -fshort-wchar"
2792 AC_CACHE_CHECK(for compiler -fshort-wchar option,
2793 ac_cv_have_usable_wchar_option_v2,
2794 [AC_TRY_LINK([#include <stddef.h>
2795 $configure_static_assert_macros],
2796 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2797 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2798 ac_cv_have_usable_wchar_option_v2="yes",
2799 ac_cv_have_usable_wchar_option_v2="no")])
2801 if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2802 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2803 HAVE_CPP_2BYTE_WCHAR_T=1
2804 if test "$OS_TARGET" = Android; then
2805 WCHAR_CFLAGS="-fshort-wchar -Wl,--no-wchar-size-warning"
2806 CXXFLAGS="$CXXFLAGS -Wl,--no-wchar-size-warning"
2807 CFLAGS="$CFLAGS -Wl,--no-wchar-size-warning"
2808 DSO_LDOPTS="$DSO_LDOPTS -Wl,--no-wchar-size-warning"
2810 WCHAR_CFLAGS="-fshort-wchar"
2813 CXXFLAGS=$_SAVE_CXXFLAGS
2819 dnl Check for .hidden assembler directive and visibility attribute.
2820 dnl Borrowed from glibc configure.in
2821 dnl ===============================================================
2822 if test "$GNU_CC"; then
2823 AC_CACHE_CHECK(for visibility(hidden) attribute,
2824 ac_cv_visibility_hidden,
2825 [cat > conftest.c <<EOF
2826 int foo __attribute__ ((visibility ("hidden"))) = 1;
2828 ac_cv_visibility_hidden=no
2829 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2830 if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2831 ac_cv_visibility_hidden=yes
2836 if test "$ac_cv_visibility_hidden" = "yes"; then
2837 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2839 AC_CACHE_CHECK(for visibility(default) attribute,
2840 ac_cv_visibility_default,
2841 [cat > conftest.c <<EOF
2842 int foo __attribute__ ((visibility ("default"))) = 1;
2844 ac_cv_visibility_default=no
2845 if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2846 if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2847 ac_cv_visibility_default=yes
2852 if test "$ac_cv_visibility_default" = "yes"; then
2853 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2855 AC_CACHE_CHECK(for visibility pragma support,
2856 ac_cv_visibility_pragma,
2857 [cat > conftest.c <<EOF
2858 #pragma GCC visibility push(hidden)
2860 #pragma GCC visibility push(default)
2861 int foo_default = 1;
2863 ac_cv_visibility_pragma=no
2864 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2865 if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2866 if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2867 ac_cv_visibility_pragma=yes
2873 if test "$ac_cv_visibility_pragma" = "yes"; then
2874 AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2875 ac_cv_have_visibility_class_bug,
2876 [cat > conftest.c <<EOF
2877 #pragma GCC visibility push(hidden)
2878 struct __attribute__ ((visibility ("default"))) TestStruct {
2881 __attribute__ ((visibility ("default"))) void TestFunc() {
2885 ac_cv_have_visibility_class_bug=no
2886 if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2887 ac_cv_have_visibility_class_bug=yes
2889 if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2890 ac_cv_have_visibility_class_bug=yes
2893 rm -rf conftest.{c,S}
2896 AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2897 ac_cv_have_visibility_builtin_bug,
2898 [cat > conftest.c <<EOF
2899 #pragma GCC visibility push(hidden)
2900 #pragma GCC visibility push(default)
2902 #pragma GCC visibility pop
2904 __attribute__ ((visibility ("default"))) void Func() {
2906 memset(c, 0, sizeof(c));
2909 ac_cv_have_visibility_builtin_bug=no
2910 if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2911 ac_cv_have_visibility_builtin_bug=yes
2913 if test `grep -c "@PLT" conftest.S` = 0; then
2914 ac_cv_visibility_builtin_bug=yes
2917 rm -f conftest.{c,S}
2919 if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2920 "$ac_cv_have_visibility_class_bug" = "no"; then
2921 VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2922 WRAP_SYSTEM_INCLUDES=1
2923 STL_FLAGS='-I$(DIST)/stl_wrappers'
2926 VISIBILITY_FLAGS='-fvisibility=hidden'
2927 fi # have visibility pragma bug
2928 fi # have visibility pragma
2929 fi # have visibility(default) attribute
2930 fi # have visibility(hidden) attribute
2933 # visibility hidden flag for Sun Studio on Solaris
2934 if test "$SOLARIS_SUNPRO_CC"; then
2935 VISIBILITY_FLAGS='-xldscope=hidden'
2936 fi # Sun Studio on Solaris
2938 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2939 AC_SUBST(VISIBILITY_FLAGS)
2945 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
2946 dnl ========================================================
2947 if test "$GNU_CC"; then
2948 CFLAGS_save="${CFLAGS}"
2949 CFLAGS="${CFLAGS} -Werror"
2950 AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
2951 ac_cv_force_align_arg_pointer,
2952 [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
2954 ac_cv_force_align_arg_pointer="yes",
2955 ac_cv_force_align_arg_pointer="no")])
2956 CFLAGS="${CFLAGS_save}"
2957 if test "$ac_cv_force_align_arg_pointer" = "yes"; then
2958 HAVE_GCC_ALIGN_ARG_POINTER=1
2960 HAVE_GCC_ALIGN_ARG_POINTER=
2963 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
2965 dnl Checks for header files.
2966 dnl ========================================================
2968 case "$target_os" in
2970 # for stuff like -lXshm
2971 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2974 MOZ_CHECK_COMMON_HEADERS
2976 dnl These are all the places some variant of statfs can be hiding.
2977 MOZ_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2980 MOZ_CHECK_HEADERS(sys/quota.h sys/sysmacros.h)
2981 MOZ_CHECK_HEADERS([linux/quota.h],,,[#include <sys/socket.h>])
2983 dnl SCTP support - needs various network include headers
2984 MOZ_CHECK_HEADERS([linux/if_addr.h linux/rtnetlink.h],,,[#include <sys/socket.h>])
2986 MOZ_CHECK_HEADERS(sys/types.h netinet/in.h byteswap.h)
2988 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
2989 AC_CACHE_CHECK(for sockaddr_in.sin_len,
2990 ac_cv_sockaddr_in_sin_len,
2991 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
2992 #include <sys/types.h>
2994 #include <netinet/in.h>
2995 struct sockaddr_in x;
2996 void *foo = (void*) &x.sin_len;],
2998 [ac_cv_sockaddr_in_sin_len=true],
2999 [ac_cv_sockaddr_in_sin_len=false])])
3000 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
3001 AC_DEFINE(HAVE_SIN_LEN)
3002 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
3003 AC_DEFINE(HAVE_SCONN_LEN)
3006 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
3007 ac_cv_sockaddr_in6_sin6_len,
3008 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
3009 #include <sys/types.h>
3011 #include <netinet/in.h>
3012 struct sockaddr_in6 x;
3013 void *foo = (void*) &x.sin6_len;],
3015 [ac_cv_sockaddr_in6_sin6_len=true],
3016 [ac_cv_sockaddr_in6_sin6_len=false])])
3017 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
3018 AC_DEFINE(HAVE_SIN6_LEN)
3021 AC_CACHE_CHECK(for sockaddr.sa_len,
3022 ac_cv_sockaddr_sa_len,
3023 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
3024 #include <sys/types.h>
3026 #include <sys/socket.h>
3028 void *foo = (void*) &x.sa_len;],
3030 [ac_cv_sockaddr_sa_len=true],
3031 [ac_cv_sockaddr_sa_len=false])])
3032 if test "$ac_cv_sockaddr_sa_len" = true ; then
3033 AC_DEFINE(HAVE_SA_LEN)
3036 dnl Check whether the compiler supports the new-style C++ standard
3037 dnl library headers (i.e. <new>) or needs the old "new.h"
3040 MOZ_CHECK_HEADER(new, [NEW_H=new])
3041 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3044 AC_ARG_ENABLE(dtrace,
3045 [ --enable-dtrace build with dtrace support if available (default=no)],
3046 [enable_dtrace="yes"],)
3047 if test "x$enable_dtrace" = "xyes"; then
3048 MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3049 if test -n "$HAVE_DTRACE"; then
3050 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3052 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3055 AC_SUBST(HAVE_DTRACE)
3061 MOZ_CHECK_HEADERS(sys/cdefs.h)
3065 MOZ_LINUX_PERF_EVENT
3067 dnl Checks for libraries.
3068 dnl ========================================================
3073 AC_CHECK_LIB(c_r, gethostbyname_r)
3077 dnl We don't want to link with libdl even if it's present on OS X, since
3078 dnl it's not used and not part of the default installation. OS/2 has dlfcn
3080 dnl We don't want to link against libm or libpthread on Darwin since
3081 dnl they both are just symlinks to libSystem and explicitly linking
3082 dnl against libSystem causes issues when debugging (see bug 299601).
3089 AC_SEARCH_LIBS(dlopen, dl,
3090 MOZ_CHECK_HEADER(dlfcn.h,
3091 AC_DEFINE(HAVE_DLOPEN)))
3095 _SAVE_CFLAGS="$CFLAGS"
3096 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3097 AC_CHECK_FUNCS(dladdr memmem)
3098 CFLAGS="$_SAVE_CFLAGS"
3100 if test ! "$GNU_CXX"; then
3104 AC_CHECK_LIB(C_r, demangle)
3107 AC_CHECK_LIB(C, demangle)
3112 dnl OS/2 has socket in libc.
3117 AC_CHECK_LIB(socket, socket)
3121 XLIBS="$X_EXTRA_LIBS"
3123 dnl ========================================================
3124 dnl Checks for X libraries.
3125 dnl Ordering is important.
3126 dnl Xt is dependent upon SM as of X11R6
3127 dnl ========================================================
3128 if test "$no_x" = "yes"; then
3131 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3132 XLIBS="-lX11 $XLIBS"
3133 _SAVE_LDFLAGS="$LDFLAGS"
3134 LDFLAGS="$XLDFLAGS $LDFLAGS"
3135 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3136 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3137 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3138 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3140 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3141 unset ac_cv_lib_Xt_XtFree
3142 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3143 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3144 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3145 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3148 # AIX needs the motif library linked before libXt to prevent
3149 # crashes in plugins linked against Motif - Bug #98892
3150 case "${target_os}" in
3152 XT_LIBS="-lXm $XT_LIBS"
3156 dnl ========================================================
3157 dnl = Check for XShm
3158 dnl ========================================================
3159 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3162 dnl ========================================================
3164 dnl ========================================================
3165 MOZ_CHECK_HEADER(X11/extensions/scrnsaver.h,
3166 AC_CHECK_LIB(Xss, XScreenSaverQueryInfo,
3167 [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS"
3168 AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS))
3170 LDFLAGS="$_SAVE_LDFLAGS"
3180 dnl ========================================================
3181 dnl = pthread support
3182 dnl = Start by checking whether the system support pthreads
3183 dnl ========================================================
3184 case "$target_os" in
3189 MOZ_CHECK_PTHREADS(pthreads,
3190 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3191 MOZ_CHECK_PTHREADS(pthread,
3192 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3193 MOZ_CHECK_PTHREADS(c_r,
3194 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3195 MOZ_CHECK_PTHREADS(c,
3204 dnl ========================================================
3205 dnl Check the command line for --with-pthreads
3206 dnl ========================================================
3207 MOZ_ARG_WITH_BOOL(pthreads,
3208 [ --with-pthreads Force use of system pthread library with NSPR ],
3209 [ if test "$USE_PTHREADS"x = x; then
3210 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3216 dnl ========================================================
3217 dnl Do the platform specific pthread hackery
3218 dnl ========================================================
3219 if test "$USE_PTHREADS"x != x
3222 dnl See if -pthread is supported.
3225 ac_cv_have_dash_pthread=no
3226 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3227 echo 'int main() { return 0; }' | cat > conftest.c
3228 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3229 if test $? -eq 0; then
3230 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3231 ac_cv_have_dash_pthread=yes
3232 case "$target_os" in
3234 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3237 CFLAGS="$CFLAGS -pthread"
3238 CXXFLAGS="$CXXFLAGS -pthread"
3244 AC_MSG_RESULT($ac_cv_have_dash_pthread)
3247 dnl See if -pthreads is supported.
3249 ac_cv_have_dash_pthreads=no
3250 if test "$ac_cv_have_dash_pthread" = "no"; then
3251 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3252 echo 'int main() { return 0; }' | cat > conftest.c
3253 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3254 if test $? -eq 0; then
3255 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3256 ac_cv_have_dash_pthreads=yes
3257 CFLAGS="$CFLAGS -pthreads"
3258 CXXFLAGS="$CXXFLAGS -pthreads"
3262 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3267 AC_DEFINE(_REENTRANT)
3268 AC_DEFINE(_THREAD_SAFE)
3269 dnl -pthread links in -lpthread, so don't specify it explicitly.
3270 if test "$ac_cv_have_dash_pthread" = "yes"; then
3271 _PTHREAD_LDFLAGS="-pthread"
3275 *-*-openbsd*|*-*-bsdi*)
3276 AC_DEFINE(_REENTRANT)
3277 AC_DEFINE(_THREAD_SAFE)
3278 dnl -pthread links in -lc_r, so don't specify it explicitly.
3279 if test "$ac_cv_have_dash_pthread" = "yes"; then
3280 _PTHREAD_LDFLAGS="-pthread"
3284 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
3285 AC_DEFINE(_REENTRANT)
3289 AC_DEFINE(_REENTRANT)
3293 AC_DEFINE(_REENTRANT)
3297 AC_DEFINE(_REENTRANT)
3298 if test "$SOLARIS_SUNPRO_CC"; then
3299 CFLAGS="$CFLAGS -mt"
3300 CXXFLAGS="$CXXFLAGS -mt"
3304 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3308 dnl Checks for library functions.
3309 dnl ========================================================
3310 AC_PROG_GCC_TRADITIONAL
3312 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf memmove rint stat64 lstat64 truncate64 setbuf isatty)
3313 AC_CHECK_FUNCS(statvfs64 statvfs statfs64 statfs)
3314 AC_CHECK_FUNCS(flockfile getpagesize)
3315 AC_CHECK_FUNCS(localtime_r strtok_r)
3317 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
3318 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
3319 ac_cv_clock_monotonic,
3320 [for libs in "" -lrt; do
3323 AC_TRY_LINK([#include <time.h>],
3324 [ struct timespec ts;
3325 clock_gettime(CLOCK_MONOTONIC, &ts); ],
3326 ac_cv_clock_monotonic=$libs
3329 ac_cv_clock_monotonic=no)
3332 if test "$ac_cv_clock_monotonic" != "no"; then
3333 HAVE_CLOCK_MONOTONIC=1
3334 REALTIME_LIBS=$ac_cv_clock_monotonic
3335 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
3336 AC_SUBST(HAVE_CLOCK_MONOTONIC)
3337 AC_SUBST(REALTIME_LIBS)
3340 dnl check for wcrtomb/mbrtowc
3341 dnl =======================================================================
3342 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3345 AC_CACHE_CHECK(for wcrtomb,
3347 [AC_TRY_LINK([#include <wchar.h>],
3348 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3349 ac_cv_have_wcrtomb="yes",
3350 ac_cv_have_wcrtomb="no")])
3351 if test "$ac_cv_have_wcrtomb" = "yes"; then
3352 AC_DEFINE(HAVE_WCRTOMB)
3354 AC_CACHE_CHECK(for mbrtowc,
3356 [AC_TRY_LINK([#include <wchar.h>],
3357 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3358 ac_cv_have_mbrtowc="yes",
3359 ac_cv_have_mbrtowc="no")])
3360 if test "$ac_cv_have_mbrtowc" = "yes"; then
3361 AC_DEFINE(HAVE_MBRTOWC)
3368 ac_cv_func_res_ninit,
3371 #define _BSD_SOURCE 1
3375 [int foo = res_ninit(&_res);],
3376 [ac_cv_func_res_ninit=yes],
3377 [ac_cv_func_res_ninit=no])
3380 if test "$ac_cv_func_res_ninit" = "yes"; then
3381 AC_DEFINE(HAVE_RES_NINIT)
3382 dnl must add the link line we do something as foolish as this... dougt
3384 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3385 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3390 [for gnu_get_libc_version()],
3391 ac_cv_func_gnu_get_libc_version,
3393 #ifdef HAVE_GNU_LIBC_VERSION_H
3394 #include <gnu/libc-version.h>
3397 [const char *glibc_version = gnu_get_libc_version();],
3398 [ac_cv_func_gnu_get_libc_version=yes],
3399 [ac_cv_func_gnu_get_libc_version=no]
3403 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3404 AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3408 darwin*|mingw*|os2*)
3412 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3413 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3414 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3416 LIBS="$LIBS $_ICONV_LIBS"
3425 iconv_t h = iconv_open("", "");
3426 iconv(h, NULL, NULL, NULL, NULL);
3429 [ac_cv_func_iconv=yes],
3430 [ac_cv_func_iconv=no]
3433 if test "$ac_cv_func_iconv" = "yes"; then
3434 AC_DEFINE(HAVE_ICONV)
3435 DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3436 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3437 LIBICONV="$_ICONV_LIBS"
3439 [for iconv() with const input],
3440 ac_cv_func_const_iconv,
3446 const char *input = "testing";
3447 iconv_t h = iconv_open("", "");
3448 iconv(h, &input, NULL, NULL, NULL);
3451 [ac_cv_func_const_iconv=yes],
3452 [ac_cv_func_const_iconv=no]
3455 if test "$ac_cv_func_const_iconv" = "yes"; then
3456 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3468 dnl **********************
3469 dnl *** va_copy checks ***
3470 dnl **********************
3471 dnl we currently check for all three va_copy possibilities, so we get
3472 dnl all results in config.log for bug reports.
3473 AC_MSG_CHECKING(for an implementation of va_copy())
3474 AC_CACHE_VAL(ac_cv_va_copy,[
3477 void f (int i, ...) {
3478 va_list args1, args2;
3479 va_start (args1, i);
3480 va_copy (args2, args1);
3481 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3483 va_end (args1); va_end (args2);
3485 int main() { f (0, 42); return 0; }],
3491 AC_MSG_RESULT($ac_cv_va_copy)
3492 AC_MSG_CHECKING(for an implementation of __va_copy())
3493 AC_CACHE_VAL(ac_cv___va_copy,[
3496 void f (int i, ...) {
3497 va_list args1, args2;
3498 va_start (args1, i);
3499 __va_copy (args2, args1);
3500 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3502 va_end (args1); va_end (args2);
3504 int main() { f (0, 42); return 0; }],
3505 ac_cv___va_copy=yes,
3510 AC_MSG_RESULT($ac_cv___va_copy)
3511 AC_MSG_CHECKING(whether va_lists can be copied by value)
3512 AC_CACHE_VAL(ac_cv_va_val_copy,[
3515 void f (int i, ...) {
3516 va_list args1, args2;
3517 va_start (args1, i);
3519 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3521 va_end (args1); va_end (args2);
3523 int main() { f (0, 42); return 0; }],
3524 ac_cv_va_val_copy=yes,
3525 ac_cv_va_val_copy=no,
3526 ac_cv_va_val_copy=yes
3529 if test "x$ac_cv_va_copy" = "xyes"; then
3530 AC_DEFINE(VA_COPY, va_copy)
3531 AC_DEFINE(HAVE_VA_COPY)
3532 elif test "x$ac_cv___va_copy" = "xyes"; then
3533 AC_DEFINE(VA_COPY, __va_copy)
3534 AC_DEFINE(HAVE_VA_COPY)
3537 if test "x$ac_cv_va_val_copy" = "xno"; then
3538 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3540 AC_MSG_RESULT($ac_cv_va_val_copy)
3542 dnl ===================================================================
3543 dnl ========================================================
3544 dnl Put your C++ language/feature checks below
3545 dnl ========================================================
3549 if test "$GNU_CC"; then
3550 if test "$CPU_ARCH" = "arm" ; then
3551 AC_CACHE_CHECK(for ARM EABI,
3555 #if defined(__ARM_EABI__)
3558 #error Not ARM EABI.
3561 ac_cv_gcc_arm_eabi="yes",
3562 ac_cv_gcc_arm_eabi="no")])
3563 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
3565 ARM_ABI_PREFIX=eabi-
3567 ARM_ABI_PREFIX=oabi-
3571 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
3574 dnl Check for support of modern template specialization syntax
3575 dnl Test code and requirement from scc@netscape.com.
3576 dnl Autoconf cut-and-paste job by waterson@netscape.com
3577 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3578 ac_cv_cpp_modern_specialize_template_syntax,
3579 [AC_TRY_COMPILE(template <class T> struct X { int a; };
3581 template <> struct X<Y> { double a; };,
3584 ac_cv_cpp_modern_specialize_template_syntax=yes,
3585 ac_cv_cpp_modern_specialize_template_syntax=no)])
3586 if test "$ac_cv_cpp_modern_specialize_template_syntax" = no ; then
3587 AC_MSG_ERROR([The C++ compiler does not support template specialization])
3590 dnl Some compilers support only full specialization, and some don't.
3591 AC_CACHE_CHECK(whether partial template specialization works,
3592 ac_cv_cpp_partial_specialization,
3593 [AC_TRY_COMPILE(template <class T> class Foo {};
3594 template <class T> class Foo<T*> {};,
3596 ac_cv_cpp_partial_specialization=yes,
3597 ac_cv_cpp_partial_specialization=no)])
3598 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3599 AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3602 dnl Check to see if we can resolve ambiguity with |using|.
3603 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3604 ac_cv_cpp_ambiguity_resolving_using,
3605 [AC_TRY_COMPILE(class X {
3606 public: int go(const X&) {return 3;}
3607 int jo(const X&) {return 3;}
3609 class Y : public X {
3610 public: int go(int) {return 2;}
3611 int jo(int) {return 2;}
3613 private: using X::go;
3616 ac_cv_cpp_ambiguity_resolving_using=yes,
3617 ac_cv_cpp_ambiguity_resolving_using=no)])
3618 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3619 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3622 dnl See if a dynamic_cast to void* gives the most derived object.
3623 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3624 ac_cv_cpp_dynamic_cast_void_ptr,
3625 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3626 class Y { int j; public: virtual ~Y() { } };
3627 class Z : public X, public Y { int k; };
3633 return !((((void*)&mdo != (void*)subx) &&
3634 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3635 (((void*)&mdo != (void*)suby) &&
3636 ((void*)&mdo == dynamic_cast<void*>(suby))));
3638 ac_cv_cpp_dynamic_cast_void_ptr=yes,
3639 ac_cv_cpp_dynamic_cast_void_ptr=no,
3640 ac_cv_cpp_dynamic_cast_void_ptr=no)])
3641 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3642 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3646 dnl note that this one is reversed - if the test fails, then
3647 dnl we require implementations of unused virtual methods. Which
3648 dnl really blows because it means we'll have useless vtable
3650 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3651 ac_cv_cpp_unused_required,
3652 [AC_TRY_LINK(class X {private: virtual void never_called();};,
3654 ac_cv_cpp_unused_required=no,
3655 ac_cv_cpp_unused_required=yes)])
3656 if test "$ac_cv_cpp_unused_required" = yes ; then
3657 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3661 dnl Some compilers have trouble comparing a constant reference to a templatized
3662 dnl class to zero, and require an explicit operator==() to be defined that takes
3663 dnl an int. This test separates the strong from the weak.
3665 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3666 ac_cv_trouble_comparing_to_zero,
3667 [AC_TRY_COMPILE([#include <algorithm>
3668 template <class T> class Foo {};
3670 template <class T> int operator==(const T2*, const T&) { return 0; }
3671 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3672 [Foo<int> f; return (0 != f);],
3673 ac_cv_trouble_comparing_to_zero=no,
3674 ac_cv_trouble_comparing_to_zero=yes)])
3675 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3676 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3679 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
3680 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
3681 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
3683 _SAVE_LDFLAGS=$LDFLAGS
3684 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
3685 AC_CACHE_CHECK(for __thread keyword for TLS variables,
3686 ac_cv_thread_keyword,
3687 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
3688 [return tlsIsMainThread;],
3689 ac_cv_thread_keyword=yes,
3690 ac_cv_thread_keyword=no)])
3691 LDFLAGS=$_SAVE_LDFLAGS
3692 # The custom dynamic linker doesn't support TLS variables
3694 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
3695 # mips builds fail with TLS variables because of a binutils bug.
3697 # OpenBSD doesn't have TLS support, and the test succeeds with clang++
3702 *-android*|*-linuxandroid*)
3709 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
3715 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
3716 if test -n "$MOZ_LINKER"; then
3717 if test "$CPU_ARCH" = arm; then
3718 dnl Determine the target ARM architecture (5 for ARMv5, v5T, v5E, etc.; 6 for ARMv6, v6K, etc.)
3719 ARM_ARCH=`${CC-cc} ${CFLAGS} -dM -E - < /dev/null | sed -n 's/.*__ARM_ARCH_\([[0-9]]*\).*/\1/p'`
3720 dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
3721 if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
3722 LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000"
3723 _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000"
3728 dnl The custom linker doesn't support text relocations, but NDK >= r6b
3729 dnl creates some (http://code.google.com/p/android/issues/detail?id=23203)
3730 dnl We however want to avoid these text relocations, and this can be done
3731 dnl by making gcc not link crtbegin and crtend. In the broken NDKs, crtend
3732 dnl doesn't contain anything at all, beside placeholders for some sections,
3733 dnl and crtbegin only contains a finalizer function that calls
3734 dnl __cxa_finalize. The custom linker actually takes care of calling
3735 dnl __cxa_finalize when the library doesn't call it itself, which makes it
3736 dnl safe not to link crtbegin. Besides, previous versions of the NDK didn't
3737 dnl link crtbegin and crtend at all.
3738 if test -n "$MOZ_LINKER" -a -z "$MOZ_OLD_LINKER" -a "$OS_TARGET" = "Android"; then
3739 AC_CACHE_CHECK([whether the CRT objects have text relocations],
3740 ac_cv_crt_has_text_relocations,
3741 [echo 'int foo() { return 0; }' > conftest.cpp
3742 if AC_TRY_COMMAND(${CXX-g++} -o conftest${DLL_SUFFIX} $CXXFLAGS $DSO_LDOPTS $LDFLAGS conftest.cpp $LIBS 1>&5) &&
3743 test -s conftest${DLL_SUFFIX}; then
3744 if ${TOOLCHAIN_PREFIX}readelf -d conftest${DLL_SUFFIX} | grep TEXTREL > /dev/null; then
3745 ac_cv_crt_has_text_relocations=yes
3747 ac_cv_crt_has_text_relocations=no
3750 AC_ERROR([couldn't compile a simple C file])
3753 if test "$ac_cv_crt_has_text_relocations" = yes; then
3754 dnl While we want libraries to skip the CRT files, we don't want
3755 dnl executables to be treated the same way. We thus set the flag
3756 dnl in DSO_LDOPTS and not LDFLAGS. However, to pass it to nspr,
3757 dnl we need to use LDFLAGS because nspr doesn't inherit DSO_LDOPTS.
3758 dnl Using LDFLAGS in nspr is safe, since we only really build
3759 dnl libraries there.
3760 DSO_LDOPTS="$DSO_LDOPTS -nostartfiles"
3761 NSPR_LDFLAGS=-nostartfiles
3765 dnl Check for the existence of various allocation headers/functions
3768 MOZ_CHECK_HEADER(malloc.h, [MALLOC_H=malloc.h])
3769 if test "$MALLOC_H" = ""; then
3770 MOZ_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h])
3771 if test "$MALLOC_H" = ""; then
3772 MOZ_CHECK_HEADER(sys/malloc.h, [MALLOC_H=sys/malloc.h])
3775 if test "$MALLOC_H" != ""; then
3776 AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
3779 MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
3780 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
3782 dnl See if compiler supports some gcc-style attributes
3784 AC_CACHE_CHECK(for __attribute__((always_inline)),
3785 ac_cv_attribute_always_inline,
3786 [AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));],
3788 ac_cv_attribute_always_inline=yes,
3789 ac_cv_attribute_always_inline=no)])
3791 AC_CACHE_CHECK(for __attribute__((malloc)),
3792 ac_cv_attribute_malloc,
3793 [AC_TRY_COMPILE([void* f(int) __attribute__((malloc));],
3795 ac_cv_attribute_malloc=yes,
3796 ac_cv_attribute_malloc=no)])
3798 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
3799 ac_cv_attribute_warn_unused,
3800 [AC_TRY_COMPILE([int f(void) __attribute__((warn_unused_result));],
3802 ac_cv_attribute_warn_unused=yes,
3803 ac_cv_attribute_warn_unused=no)])
3805 dnl End of C++ language/feature checks
3808 dnl ========================================================
3809 dnl = Internationalization checks
3810 dnl ========================================================
3812 dnl Internationalization and Locale support is different
3813 dnl on various UNIX platforms. Checks for specific i18n
3814 dnl features go here.
3816 dnl check for LC_MESSAGES
3817 AC_CACHE_CHECK(for LC_MESSAGES,
3818 ac_cv_i18n_lc_messages,
3819 [AC_TRY_COMPILE([#include <locale.h>],
3820 [int category = LC_MESSAGES;],
3821 ac_cv_i18n_lc_messages=yes,
3822 ac_cv_i18n_lc_messages=no)])
3823 if test "$ac_cv_i18n_lc_messages" = yes; then
3824 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3827 AC_HAVE_FUNCS(localeconv)
3828 fi # ! SKIP_COMPILER_CHECKS
3831 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3832 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3835 dnl Mozilla specific options
3836 dnl ========================================================
3837 dnl The macros used for command line options
3838 dnl are defined in build/autoconf/altoptions.m4.
3840 dnl If the compiler supports these attributes, define them as
3841 dnl convenience macros.
3842 if test "$ac_cv_attribute_always_inline" = yes ; then
3843 AC_DEFINE(NS_ALWAYS_INLINE, [__attribute__((always_inline))])
3845 AC_DEFINE(NS_ALWAYS_INLINE,)
3848 if test "$ac_cv_attribute_malloc" = yes ; then
3849 AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
3851 AC_DEFINE(NS_ATTR_MALLOC,)
3854 if test "$ac_cv_attribute_warn_unused" = yes ; then
3855 AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
3857 AC_DEFINE(NS_WARN_UNUSED_RESULT,)
3860 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
3861 dnl features that Windows actually does support.
3863 if test -n "$SKIP_COMPILER_CHECKS"; then
3864 dnl Windows has malloc.h
3865 AC_DEFINE(MALLOC_H, [<malloc.h>])
3866 AC_DEFINE(HAVE_FORCEINLINE)
3867 AC_DEFINE(HAVE_LOCALECONV)
3868 fi # SKIP_COMPILER_CHECKS
3870 dnl ========================================================
3872 dnl = Check for external package dependencies
3874 dnl ========================================================
3875 MOZ_ARG_HEADER(External Packages)
3877 MOZ_ARG_WITH_STRING(libxul-sdk,
3878 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
3879 LIBXUL_SDK_DIR=$withval)
3881 if test "$LIBXUL_SDK_DIR" = "yes"; then
3882 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
3883 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
3884 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
3886 if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
3887 AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
3891 AC_SUBST(LIBXUL_SDK)
3893 if test -n "$LIBXUL_SDK"; then
3894 LIBXUL_DIST="$LIBXUL_SDK"
3896 LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
3898 AC_SUBST(LIBXUL_DIST)
3902 MOZ_ARG_WITH_BOOL(system-libxul,
3903 [ --with-system-libxul Use system installed libxul SDK],
3906 dnl ========================================================
3907 dnl = If NSPR was not detected in the system,
3908 dnl = use the one in the source tree (mozilla/nsprpub)
3909 dnl ========================================================
3910 MOZ_ARG_WITH_BOOL(system-nspr,
3911 [ --with-system-nspr Use system installed NSPR],
3912 _USE_SYSTEM_NSPR=1 )
3914 if test -n "$_USE_SYSTEM_NSPR"; then
3915 AM_PATH_NSPR(4.9.3, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([your don't have NSPR installed or your version is too old])])
3918 if test -n "$MOZ_NATIVE_NSPR"; then
3919 _SAVE_CFLAGS=$CFLAGS
3920 CFLAGS="$CFLAGS $NSPR_CFLAGS"
3921 AC_TRY_COMPILE([#include "prtypes.h"],
3922 [#ifndef PR_STATIC_ASSERT
3923 #error PR_STATIC_ASSERT not defined or requires including prtypes.h
3925 [MOZ_NATIVE_NSPR=1],
3926 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
3927 AC_TRY_COMPILE([#include "prtypes.h"],
3929 #error PR_UINT64 not defined or requires including prtypes.h
3931 [MOZ_NATIVE_NSPR=1],
3932 AC_MSG_ERROR([system NSPR does not support PR_UINT64 or including prtypes.h does not provide it]))
3933 CFLAGS=$_SAVE_CFLAGS
3935 if test -z "$LIBXUL_SDK"; then
3936 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
3937 if test -n "$GNU_CC"; then
3938 NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
3940 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
3943 NSPR_CFLAGS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --includedir="${LIBXUL_DIST}/include/nspr" --cflags`
3944 NSPR_LIBS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --libdir="${LIBXUL_DIST}"/lib --libs`
3948 dnl system libevent Support
3949 dnl ========================================================
3950 MOZ_ARG_WITH_STRING(system-libevent,
3951 [ --with-system-libevent[=PFX]
3952 Use system libevent [installed at prefix PFX]],
3953 LIBEVENT_DIR=$withval)
3955 _SAVE_CFLAGS=$CFLAGS
3956 _SAVE_LDFLAGS=$LDFLAGS
3958 if test "$LIBEVENT_DIR" = yes; then
3959 PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
3960 MOZ_NATIVE_LIBEVENT=1,
3963 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
3964 MOZ_NATIVE_LIBEVENT=
3965 elif test -z "$MOZ_NATIVE_LIBEVENT"; then
3966 CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
3967 LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
3968 MOZ_CHECK_HEADER(event.h,
3969 [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
3970 AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
3972 AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
3973 AC_CHECK_LIB(event, event_init,
3974 [MOZ_NATIVE_LIBEVENT=1
3975 MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
3976 MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
3977 [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
3979 CFLAGS=$_SAVE_CFLAGS
3980 LDFLAGS=$_SAVE_LDFLAGS
3983 AC_SUBST(MOZ_NATIVE_LIBEVENT)
3984 AC_SUBST(MOZ_LIBEVENT_CFLAGS)
3985 AC_SUBST(MOZ_LIBEVENT_LIBS)
3987 dnl ========================================================
3988 dnl = If NSS was not detected in the system,
3989 dnl = use the one in the source tree (mozilla/security/nss)
3990 dnl ========================================================
3992 MOZ_ARG_WITH_BOOL(system-nss,
3993 [ --with-system-nss Use system installed NSS],
3996 if test -n "$_USE_SYSTEM_NSS"; then
3997 AM_PATH_NSS(3.14, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
4000 if test -n "$MOZ_NATIVE_NSS"; then
4001 NSS_LIBS="$NSS_LIBS -lcrmf"
4003 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4005 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4006 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4007 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4008 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4009 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX)"
4011 if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "OS2"; then
4013 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4014 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
4015 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
4016 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
4017 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
4019 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
4023 dnl ======================
4025 dnl ======================
4027 AC_MSG_CHECKING([for YASM assembler])
4028 AC_CHECK_PROGS(YASM, yasm, "")
4030 if test -n "$YASM"; then
4031 dnl Pull out yasm's version string
4032 YASM_VERSION=`yasm --version | $AWK '/^yasm/ { print $2 }'`
4033 _YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'`
4034 _YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'`
4035 _YASM_RELEASE=` echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'`
4036 _YASM_BUILD=` echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
4039 if test -z "$SKIP_LIBRARY_CHECKS"; then
4040 dnl system JPEG support
4041 dnl ========================================================
4042 MOZ_ARG_WITH_STRING(system-jpeg,
4043 [ --with-system-jpeg[=PFX]
4044 Use system libjpeg [installed at prefix PFX]],
4047 _SAVE_CFLAGS=$CFLAGS
4048 _SAVE_LDFLAGS=$LDFLAGS
4050 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4051 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4052 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4054 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4057 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [MOZ_NATIVE_JPEG=1 MOZ_JPEG_LIBS="-ljpeg"], MOZ_NATIVE_JPEG=)
4060 if test "$MOZ_NATIVE_JPEG" = 1; then
4061 AC_TRY_COMPILE([ #include <stdio.h>
4062 #include <sys/types.h>
4063 #include <jpeglib.h> ],
4064 [ #if JPEG_LIB_VERSION < $MOZJPEG
4065 #error "Insufficient JPEG library version ($MOZJPEG required)."
4067 #ifndef JCS_EXTENSIONS
4068 #error "libjpeg-turbo JCS_EXTENSIONS required"
4072 AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg]))
4074 CFLAGS=$_SAVE_CFLAGS
4075 LDFLAGS=$_SAVE_LDFLAGS
4078 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$MOZ_NATIVE_JPEG" = 1; then
4079 MOZ_JPEG_CFLAGS="-I${JPEG_DIR}/include"
4080 MOZ_JPEG_LIBS="-L${JPEG_DIR}/lib ${MOZ_JPEG_LIBS}"
4082 fi # SKIP_LIBRARY_CHECKS
4084 dnl system ZLIB support
4085 dnl ========================================================
4086 MOZ_ZLIB_CHECK([1.2.3])
4088 if test "$MOZ_NATIVE_ZLIB" != 1; then
4090 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,'"$MOZ_BUILD_ROOT"'/modules/zlib/src)'
4093 if test "$MOZ_LINKER" = 1 -a "$MOZ_NATIVE_ZLIB" != 1; then
4094 AC_MSG_ERROR([Custom dynamic linker requires --with-system-zlib])
4097 if test -z "$SKIP_LIBRARY_CHECKS"; then
4098 dnl system BZIP2 Support
4099 dnl ========================================================
4100 MOZ_ARG_WITH_STRING(system-bz2,
4101 [ --with-system-bz2[=PFX]
4102 Use system libbz2 [installed at prefix PFX]],
4105 _SAVE_CFLAGS=$CFLAGS
4106 _SAVE_LDFLAGS=$LDFLAGS
4108 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4109 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4110 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4112 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4115 AC_CHECK_LIB(bz2, BZ2_bzread, [MOZ_NATIVE_BZ2=1 MOZ_BZ2_LIBS="-lbz2"],
4116 [MOZ_NATIVE_BZ2= MOZ_BZ2_CFLAGS= MOZ_BZ2_LIBS=])
4118 CFLAGS=$_SAVE_CFLAGS
4119 LDFLAGS=$_SAVE_LDFLAGS
4122 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$MOZ_NATIVE_BZ2" = 1; then
4123 MOZ_BZ2_CFLAGS="-I${BZ2_DIR}/include"
4124 MOZ_BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4127 dnl system PNG Support
4128 dnl ========================================================
4129 MOZ_ARG_WITH_STRING(system-png,
4130 [ --with-system-png[=PFX]
4131 Use system libpng [installed at prefix PFX]],
4134 _SAVE_CFLAGS=$CFLAGS
4135 _SAVE_LDFLAGS=$LDFLAGS
4137 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4138 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4139 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4141 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4144 AC_CHECK_LIB(png, png_get_valid, [MOZ_NATIVE_PNG=1 MOZ_PNG_LIBS="-lpng"],
4145 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4146 AC_CHECK_LIB(png, png_get_acTL, ,
4147 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
4149 if test "$MOZ_NATIVE_PNG" = 1; then
4150 AC_TRY_COMPILE([ #include <stdio.h>
4151 #include <sys/types.h>
4153 [ #if PNG_LIBPNG_VER < $MOZPNG
4154 #error "Insufficient libpng version ($MOZPNG required)."
4156 #ifndef PNG_UINT_31_MAX
4157 #error "Insufficient libpng version."
4160 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4162 CFLAGS=$_SAVE_CFLAGS
4163 LDFLAGS=$_SAVE_LDFLAGS
4166 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_NATIVE_PNG" = 1; then
4167 MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
4168 MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
4171 fi # SKIP_LIBRARY_CHECKS
4173 dnl system HunSpell Support
4174 dnl ========================================================
4175 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4176 [ --enable-system-hunspell
4177 Use system hunspell (located with pkgconfig)],
4178 MOZ_NATIVE_HUNSPELL=1 )
4180 if test -n "$MOZ_NATIVE_HUNSPELL"; then
4181 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4184 AC_SUBST(MOZ_NATIVE_HUNSPELL)
4186 dnl ========================================================
4187 dnl system libffi Support
4188 dnl ========================================================
4189 MOZ_ARG_ENABLE_BOOL(system-ffi,
4190 [ --enable-system-ffi Use system libffi (located with pkgconfig)],
4193 if test -n "$MOZ_NATIVE_FFI"; then
4194 # Vanilla libffi 3.0.9 needs a few patches from upcoming version 3.0.10
4195 # for non-GCC compilers.
4196 if test -z "$GNU_CC"; then
4197 PKG_CHECK_MODULES(MOZ_FFI, libffi > 3.0.9)
4199 PKG_CHECK_MODULES(MOZ_FFI, libffi >= 3.0.9)
4201 MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_FFI_LIBS"
4204 dnl ========================================================
4205 dnl Java SDK support
4206 dnl ========================================================
4209 MOZ_ARG_WITH_STRING(java-bin-path,
4210 [ --with-java-bin-path=dir
4211 Location of Java binaries (java, javac, jar)],
4212 JAVA_BIN_PATH=$withval)
4214 dnl ========================================================
4218 dnl ========================================================
4220 MOZ_ARG_HEADER(Application)
4223 ENABLE_SYSTEM_EXTENSION_DIRS=1
4224 MOZ_BRANDING_DIRECTORY=
4225 MOZ_OFFICIAL_BRANDING=
4230 MOZ_AUTH_EXTENSION=1
4234 MOZ_SPEEX_RESAMPLER=1
4239 MOZ_SAMPLE_TYPE_FLOAT32=
4240 MOZ_SAMPLE_TYPE_S16=
4248 MOZ_WEBRTC_SIGNALING=
4249 MOZ_WEBRTC_IN_LIBXUL=
4252 MOZ_MEDIA_NAVIGATOR=
4255 MOZ_VP8_ERROR_CONCEALMENT=
4265 LIBJPEG_TURBO_ASFLAGS=
4266 LIBJPEG_TURBO_X86_ASM=
4267 LIBJPEG_TURBO_X64_ASM=
4268 LIBJPEG_TURBO_ARM_ASM=
4272 MOZ_PREF_EXTENSIONS=1
4273 MOZ_PROFILELOCKING=1
4280 MOZ_ONLY_TOUCH_EVENTS=
4281 MOZ_TOOLKIT_SEARCH=1
4283 MOZ_UNIVERSALCHARDET=1
4290 MOZ_DISABLE_DOMCRYPTO=
4294 NECKO_PROTOCOLS_DEFAULT="about data file ftp http res viewsource websocket wyciwyg device"
4297 MOZ_USE_NATIVE_POPUP_WINDOWS=
4298 MOZ_ANDROID_HISTORY=
4305 case "$target_os" in
4308 AC_DEFINE(NS_ENABLE_TSF)
4313 *-android*|*-linuxandroid*)
4314 if test "$CPU_ARCH" = "arm" ; then
4320 MOZ_THEME_FASTSTRIPE=1
4328 MOZ_ARG_ENABLE_STRING(application,
4329 [ --enable-application=APP
4333 tools/update-packaging (AUS-related packaging tools)],
4334 [ MOZ_BUILD_APP=$enableval ] )
4336 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4337 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
4338 XULRUNNER_STUB_NAME=$withval)
4340 if test -z "$XULRUNNER_STUB_NAME"; then
4341 case "$target_os" in
4343 XULRUNNER_STUB_NAME=xulrunner
4346 XULRUNNER_STUB_NAME=xulrunner-stub
4349 AC_SUBST(XULRUNNER_STUB_NAME)
4351 AC_MSG_CHECKING([for application to build])
4352 if test -z "$MOZ_BUILD_APP"; then
4353 AC_MSG_RESULT([browser])
4354 MOZ_BUILD_APP=browser
4356 # default mobile to be mobile/xul
4357 if test "$MOZ_BUILD_APP" = "mobile" ; then
4358 MOZ_BUILD_APP=mobile/xul
4360 # We have a valid application only if it has a build.mk file in its top
4362 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4363 AC_MSG_RESULT([none])
4364 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4366 AC_MSG_RESULT([$MOZ_BUILD_APP])
4370 # Allow the application to influence configure with a confvars.sh script.
4372 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4373 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4374 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4375 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4380 # Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig
4381 MOZ_ARG_WITH_STRING(app-name,
4382 [--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME],
4383 WITH_APP_NAME=$withval,
4386 if test -n "$WITH_APP_NAME" ; then
4387 MOZ_APP_NAME="$WITH_APP_NAME"
4390 MOZ_ARG_WITH_STRING(app-basename,
4391 [--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME],
4392 WITH_APP_BASENAME=$withval,
4395 if test -n "$WITH_APP_BASENAME" ; then
4396 MOZ_APP_BASENAME="$WITH_APP_BASENAME"
4399 # Now is a good time to test for logic errors, define mismatches, etc.
4400 case "$MOZ_BUILD_APP" in
4402 if test "$LIBXUL_SDK"; then
4403 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4408 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4409 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4411 case "$MOZ_BUILD_APP" in
4413 AC_DEFINE(MOZ_PHOENIX)
4417 AC_DEFINE(MOZ_XULRUNNER)
4421 AC_SUBST(MOZ_BUILD_APP)
4422 AC_SUBST(MOZ_PHOENIX)
4423 AC_SUBST(MOZ_XULRUNNER)
4425 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4427 dnl ========================================================
4428 dnl Check android sdk version depending on mobile target
4429 dnl ========================================================
4431 if test -z "$gonkdir" ; then
4432 # Minimum Android SDK API Level we require.
4433 case "$MOZ_BUILD_APP" in
4435 android_min_api_level=13
4438 android_min_api_level=16
4442 MOZ_ANDROID_SDK($android_min_api_level)
4445 dnl ========================================================
4447 dnl = Toolkit Options
4449 dnl ========================================================
4450 MOZ_ARG_HEADER(Toolkit Options)
4452 dnl ========================================================
4453 dnl = Select the default toolkit
4454 dnl ========================================================
4455 MOZ_ARG_ENABLE_STRING(default-toolkit,
4456 [ --enable-default-toolkit=TK
4457 Select default toolkit
4458 Platform specific defaults:
4459 Mac OS X - cairo-cocoa
4461 Win32 - cairo-windows
4464 [ _DEFAULT_TOOLKIT=$enableval ],
4465 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4467 if test "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4468 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4469 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4470 -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4471 -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4472 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
4473 -o "$_DEFAULT_TOOLKIT" = "cairo-uikit" \
4474 -o "$_DEFAULT_TOOLKIT" = "cairo-android" \
4475 -o "$_DEFAULT_TOOLKIT" = "cairo-gonk"
4477 dnl nglayout only supports building with one toolkit,
4478 dnl so ignore everything after the first comma (",").
4479 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4481 AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4484 MOZ_ARG_WITHOUT_BOOL(x,
4485 [ --without-x Build without X11],
4488 dnl ========================================================
4489 dnl = Enable the toolkit as needed =
4490 dnl ========================================================
4494 case "$MOZ_WIDGET_TOOLKIT" in
4497 MOZ_WIDGET_TOOLKIT=windows
4500 MOZ_INSTRUMENT_EVENT_LOOP=1
4503 cairo-gtk2|cairo-gtk2-x11)
4504 MOZ_WIDGET_TOOLKIT=gtk2
4506 MOZ_ENABLE_XREMOTE=1
4508 MOZ_GL_DEFAULT_PROVIDER=GLX
4514 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4515 TK_LIBS='$(MOZ_GTK2_LIBS)'
4516 AC_DEFINE(MOZ_WIDGET_GTK2)
4518 AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK)
4520 MOZ_INSTRUMENT_EVENT_LOOP=1
4524 MOZ_WIDGET_TOOLKIT=qt
4526 if test -z "$WITHOUT_X11"; then
4527 MOZ_ENABLE_XREMOTE=1
4528 MOZ_GL_DEFAULT_PROVIDER=GLX
4537 TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4538 TK_LIBS='$(MOZ_QT_LIBS)'
4539 AC_DEFINE(MOZ_WIDGET_QT)
4544 MOZ_WIDGET_TOOLKIT=os2
4546 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4547 TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4552 MOZ_WIDGET_TOOLKIT=cocoa
4553 AC_DEFINE(MOZ_WIDGET_COCOA)
4554 LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
4555 TK_LIBS='-framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
4556 TK_CFLAGS="-DNO_X11"
4557 CFLAGS="$CFLAGS $TK_CFLAGS"
4558 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4559 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL'
4560 MOZ_USER_DIR="Mozilla"
4561 MOZ_FS_LAYOUT=bundle
4563 MOZ_INSTRUMENT_EVENT_LOOP=1
4567 MOZ_WIDGET_TOOLKIT=uikit
4568 AC_DEFINE(MOZ_WIDGET_UIKIT)
4569 LDFLAGS="$LDFLAGS -framework UIKit -lobjc"
4570 TK_CFLAGS="-DNO_X11"
4571 TK_LIBS='-framework Foundation -framework CoreFoundation -framework CoreGraphics -framework CoreText'
4572 CFLAGS="$CFLAGS $TK_CFLAGS"
4573 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4574 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL'
4575 MOZ_USER_DIR="Mozilla"
4576 MOZ_FS_LAYOUT=bundle
4580 AC_DEFINE(MOZ_WIDGET_ANDROID)
4581 MOZ_WIDGET_TOOLKIT=android
4582 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4583 TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4586 MOZ_INSTRUMENT_EVENT_LOOP=1
4587 if test "$MOZ_BUILD_APP" = "mobile/xul"; then
4593 AC_DEFINE(MOZ_WIDGET_GONK)
4594 AC_DEFINE(MOZ_TOUCH)
4595 MOZ_WIDGET_TOOLKIT=gonk
4596 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
4597 TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
4605 AC_SUBST(MOZ_OLD_LINKER)
4606 AC_SUBST(MOZ_PDF_PRINTING)
4607 if test "$MOZ_PDF_PRINTING"; then
4608 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
4609 AC_DEFINE(MOZ_PDF_PRINTING)
4612 if test "$MOZ_ENABLE_XREMOTE"; then
4613 AC_DEFINE(MOZ_ENABLE_XREMOTE)
4616 if test "$MOZ_INSTRUMENT_EVENT_LOOP"; then
4617 AC_DEFINE(MOZ_INSTRUMENT_EVENT_LOOP)
4620 if test "$COMPILE_ENVIRONMENT"; then
4621 if test "$MOZ_ENABLE_GTK2"; then
4622 if test "$MOZ_X11"; then
4623 GDK_PACKAGES=gdk-x11-2.0
4626 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4629 fi # COMPILE_ENVIRONMENT
4631 AC_SUBST(MOZ_FS_LAYOUT)
4633 dnl ========================================================
4634 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4635 dnl their usage and use them in spidermonkey.
4636 dnl ========================================================
4637 MOZ_ARG_WITH_BOOL(arm-kuser,
4638 [ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4640 if test -n "$USE_ARM_KUSER"; then
4641 AC_DEFINE(USE_ARM_KUSER)
4644 dnl ========================================================
4645 dnl = startup-notification support module
4646 dnl ========================================================
4648 if test "$MOZ_ENABLE_GTK2"
4650 MOZ_ENABLE_STARTUP_NOTIFICATION=
4652 MOZ_ARG_ENABLE_BOOL(startup-notification,
4653 [ --enable-startup-notification
4654 Enable startup-notification support (default: disabled) ],
4655 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4656 MOZ_ENABLE_STARTUP_NOTIFICATION=)
4657 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4659 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4660 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4661 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4662 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4664 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4666 MOZ_ENABLE_STARTUP_NOTIFICATION=
4670 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4671 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4674 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4676 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4677 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4678 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4680 dnl ========================================================
4682 dnl ========================================================
4683 if test "$MOZ_ENABLE_QT"
4685 MOZ_ARG_WITH_STRING(qtdir,
4686 [ --with-qtdir=\$dir Specify Qt directory ],
4689 if test -z "$QTDIR"; then
4690 PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtCore QtOpenGL)
4691 PKG_CHECK_MODULES(MOZ_QT5, QtWidgets QtMultimedia QtPrintSupport,
4694 if test "$MOZ_ENABLE_QT5"; then
4696 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $MOZ_QT5_CFLAGS"
4697 MOZ_QT_LIBS="$MOZ_QT_LIBS $MOZ_QT5_LIBS"
4700 AC_CHECK_PROGS(HOST_MOC, $MOC moc, "")
4701 AC_CHECK_PROGS(HOST_RCC, $RCC rcc, "")
4703 MOZ_QT_LIBS="-L$QTDIR/lib/ -lQtGui -lQtNetwork -lQtCore -lQtXml -lQtOpenGL"
4705 MOZ_QT_CFLAGS="-DQT_SHARED"
4706 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
4707 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/Qt"
4708 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
4709 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
4710 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
4711 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
4712 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDeclarative"
4713 HOST_MOC="$QTDIR/bin/moc"
4714 HOST_RCC="$QTDIR/bin/rcc"
4716 # QtWidgets was introduced only in Qt5
4717 if test -d $QTDIR/include/QtWidgets; then
4718 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtWidgets"
4719 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtPrintSupport"
4720 MOZ_QT_LIBS="$MOZ_QT_LIBS -lQtWidgets -lQtPrintSupport"
4723 if test -z "$HOST_MOC"; then
4724 AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is
4727 if test -z "$HOST_RCC"; then
4728 AC_MSG_ERROR([No acceptable rcc preprocessor found. Qt SDK is not installed or --with-qt is
4735 MOZ_ENABLE_QMSYSTEM2=
4736 PKG_CHECK_MODULES(_QMSYSTEM2, qmsystem2,
4737 MOZ_ENABLE_QMSYSTEM2=1,
4738 MOZ_ENABLE_QMSYSTEM2=)
4740 if test "$MOZ_ENABLE_QMSYSTEM2"; then
4741 MOZ_ENABLE_QMSYSTEM2=1
4742 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QMSYSTEM2_CFLAGS"
4743 MOZ_QT_LIBS="$MOZ_QT_LIBS $_QMSYSTEM2_LIBS"
4744 AC_DEFINE(MOZ_ENABLE_QMSYSTEM2)
4747 MOZ_ENABLE_QTNETWORK=
4748 PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7,
4749 MOZ_ENABLE_QTNETWORK=1,
4750 MOZ_ENABLE_QTNETWORK=)
4752 if test "$MOZ_ENABLE_QTNETWORK"; then
4753 MOZ_ENABLE_QTNETWORK=1
4754 AC_DEFINE(MOZ_ENABLE_QTNETWORK)
4757 MOZ_ENABLE_QTMOBILITY=
4758 PKG_CHECK_MODULES(_QTMOBILITY, QtSensors QtFeedback QtLocation,
4759 MOZ_ENABLE_QTMOBILITY=1,
4760 MOZ_ENABLE_QTMOBILITY=)
4761 if test "$MOZ_ENABLE_QTMOBILITY"; then
4762 MOZ_ENABLE_QTMOBILITY=1
4763 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QTMOBILITY_CFLAGS"
4764 MOZ_QT_LIBS="$MOZ_QT_LIBS $_QTMOBILITY_LIBS"
4766 AC_CHECK_LIB(QtSensors, main, [
4767 MOZ_ENABLE_QTMOBILITY=1
4768 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtMobility"
4769 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtSensors"
4770 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtFeedback"
4771 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtLocation"
4772 MOZ_QT_LIBS="$MOZ_QT_LIBS -lQtSensors -lQtFeedback -lQtLocation"
4775 if test "$MOZ_ENABLE_QTMOBILITY"; then
4776 AC_DEFINE(MOZ_ENABLE_QTMOBILITY)
4780 AC_SUBST(GTK_CONFIG)
4784 AC_SUBST(MOZ_ENABLE_GTK2)
4785 AC_SUBST(MOZ_ENABLE_QT)
4786 AC_SUBST(MOZ_ENABLE_QTNETWORK)
4787 AC_SUBST(MOZ_ENABLE_QMSYSTEM2)
4788 AC_SUBST(MOZ_ENABLE_QTMOBILITY)
4789 AC_SUBST(MOZ_ENABLE_XREMOTE)
4790 AC_SUBST(MOZ_GTK2_CFLAGS)
4791 AC_SUBST(MOZ_GTK2_LIBS)
4792 AC_SUBST(MOZ_WIDGET_GTK)
4793 AC_SUBST(MOZ_QT_CFLAGS)
4794 AC_SUBST(MOZ_QT_LIBS)
4801 dnl ========================================================
4803 dnl = Components & Features
4805 dnl ========================================================
4806 MOZ_ARG_HEADER(Components and Features)
4808 dnl ========================================================
4810 dnl ========================================================
4811 MOZ_ARG_ENABLE_STRING(ui-locale,
4812 [ --enable-ui-locale=ab-CD
4813 Select the user interface locale (default: en-US)],
4814 MOZ_UI_LOCALE=$enableval )
4815 AC_SUBST(MOZ_UI_LOCALE)
4817 dnl ========================================================
4818 dnl = Trademarked Branding
4819 dnl ========================================================
4820 MOZ_ARG_ENABLE_BOOL(official-branding,
4821 [ --enable-official-branding
4822 Enable Official mozilla.org Branding
4823 Do not distribute builds with
4824 --enable-official-branding unless you have
4825 permission to use trademarks per
4826 http://www.mozilla.org/foundation/trademarks/ .],
4828 if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
4829 AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
4831 MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
4832 MOZ_OFFICIAL_BRANDING=1
4834 ], MOZ_OFFICIAL_BRANDING=)
4836 AC_SUBST(MOZ_OFFICIAL_BRANDING)
4837 if test -n "$MOZ_OFFICIAL_BRANDING"; then
4838 AC_DEFINE(MOZ_OFFICIAL_BRANDING)
4841 MOZ_ARG_WITH_STRING(branding,
4842 [ --with-branding=dir Use branding from the specified directory.],
4843 MOZ_BRANDING_DIRECTORY=$withval)
4845 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4846 if test -z "$REAL_BRANDING_DIRECTORY"; then
4847 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4850 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4851 . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
4854 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4856 dnl ========================================================
4857 dnl = Distribution ID
4858 dnl ========================================================
4859 MOZ_ARG_WITH_STRING(distribution-id,
4860 [ --with-distribution-id=ID
4861 Set distribution-specific id (default=org.mozilla)],
4862 [ val=`echo $withval`
4863 MOZ_DISTRIBUTION_ID="$val"])
4865 if test -z "$MOZ_DISTRIBUTION_ID"; then
4866 MOZ_DISTRIBUTION_ID="org.mozilla"
4869 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4870 AC_SUBST(MOZ_DISTRIBUTION_ID)
4873 dnl ========================================================
4874 dnl complex text support off by default
4875 dnl ========================================================
4876 MOZ_ARG_DISABLE_BOOL(pango,
4877 [ --disable-pango Disable usage of Pango ],
4881 dnl ========================================================
4883 dnl ========================================================
4884 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
4888 if test "$MOZ_PANGO"
4890 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4892 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION)
4893 AC_SUBST(MOZ_PANGO_CFLAGS)
4894 AC_SUBST(MOZ_PANGO_LIBS)
4895 AC_DEFINE(MOZ_PANGO)
4897 PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0)
4898 AC_SUBST(FT2_CFLAGS)
4903 dnl ========================================================
4904 dnl = GnomeVFS, GIO and GConf support module
4905 dnl ========================================================
4909 dnl build the GIO extension by default only when the
4910 dnl GTK2 toolkit is in use.
4911 if test "$MOZ_ENABLE_GTK2"
4917 dnl ========================================================
4918 dnl = GnomeVFS support module
4919 dnl ========================================================
4920 MOZ_ARG_ENABLE_BOOL(gnomevfs,
4921 [ --enable-gnomevfs Enable GnomeVFS support (default: disabled)],
4922 MOZ_ENABLE_GNOMEVFS=force,
4923 MOZ_ENABLE_GNOMEVFS=)
4925 if test "$MOZ_ENABLE_GNOMEVFS"
4927 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
4928 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
4929 MOZ_ENABLE_GNOMEVFS=1
4930 AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
4932 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
4934 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
4936 MOZ_ENABLE_GNOMEVFS=
4940 AC_SUBST(MOZ_ENABLE_GNOMEVFS)
4941 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
4942 AC_SUBST(MOZ_GNOMEVFS_LIBS)
4944 dnl ========================================================
4945 dnl = GIO support module
4946 dnl ========================================================
4947 MOZ_ARG_DISABLE_BOOL(gio,
4948 [ --disable-gio Disable GIO support],
4950 MOZ_ENABLE_GIO=force)
4952 if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK2"
4954 PKG_CHECK_MODULES(_GTKCHECK, gtk+-2.0 >= 2.14, ,
4955 [AC_MSG_ERROR([* * * Could not find gtk+-2.0 > 2.14. Required for build with gio.])])
4956 PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
4957 MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
4959 AC_DEFINE(MOZ_ENABLE_GIO)
4961 if test "$MOZ_ENABLE_GIO" = "force"
4963 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
4969 AC_SUBST(MOZ_ENABLE_GIO)
4970 AC_SUBST(MOZ_GIO_CFLAGS)
4971 AC_SUBST(MOZ_GIO_LIBS)
4973 dnl ========================================================
4974 dnl = GConf support module
4975 dnl ========================================================
4976 MOZ_ARG_DISABLE_BOOL(gconf,
4977 [ --disable-gconf Disable Gconf support ],
4979 MOZ_ENABLE_GCONF=force)
4981 if test "$MOZ_ENABLE_GCONF"
4983 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
4984 MOZ_GCONF_LIBS=`$PKG_CONFIG --libs gobject-2.0`
4987 if test "$MOZ_ENABLE_GCONF" = "force"
4989 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
4995 if test "$MOZ_ENABLE_GCONF"; then
4996 AC_DEFINE(MOZ_ENABLE_GCONF)
4999 AC_SUBST(MOZ_ENABLE_GCONF)
5000 AC_SUBST(MOZ_GCONF_CFLAGS)
5001 AC_SUBST(MOZ_GCONF_LIBS)
5004 dnl ========================================================
5005 dnl = libproxy support
5006 dnl ========================================================
5008 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5010 MOZ_ENABLE_LIBPROXY=
5012 MOZ_ARG_ENABLE_BOOL(libproxy,
5013 [ --enable-libproxy Enable libproxy support ],
5014 MOZ_ENABLE_LIBPROXY=1,
5015 MOZ_ENABLE_LIBPROXY=)
5017 if test "$MOZ_ENABLE_LIBPROXY"
5019 PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
5020 AC_DEFINE(MOZ_ENABLE_LIBPROXY)
5023 AC_SUBST(MOZ_ENABLE_LIBPROXY)
5024 AC_SUBST(MOZ_LIBPROXY_CFLAGS)
5025 AC_SUBST(MOZ_LIBPROXY_LIBS)
5027 dnl ========================================================
5028 dnl = GNOME component (mozgnome)
5029 dnl ========================================================
5031 if test "$MOZ_ENABLE_GTK2"
5033 MOZ_ENABLE_GNOME_COMPONENT=1
5035 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5037 dnl ========================================================
5038 dnl = libgnomeui support module
5039 dnl ========================================================
5041 if test "$MOZ_ENABLE_GTK2"
5043 MOZ_ARG_ENABLE_BOOL(gnomeui,
5044 [ --enable-gnomeui Enable libgnomeui instead of GIO & GTK for icon theme support ],
5045 MOZ_ENABLE_GNOMEUI=force,
5046 MOZ_ENABLE_GNOMEUI=)
5048 if test "$MOZ_ENABLE_GNOMEUI"
5050 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5052 MOZ_ENABLE_GNOMEUI=1
5054 if test "$MOZ_ENABLE_GNOMEUI" = "force"
5056 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5062 if test "$MOZ_ENABLE_GNOMEUI"; then
5063 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5067 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5068 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5070 dnl ========================================================
5072 dnl ========================================================
5074 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5078 MOZ_ARG_DISABLE_BOOL(dbus,
5079 [ --disable-dbus Disable dbus support ],
5083 if test "$MOZ_ENABLE_DBUS"
5085 PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
5086 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5087 AC_DEFINE(MOZ_ENABLE_DBUS)
5090 AC_SUBST(MOZ_ENABLE_DBUS)
5091 AC_SUBST(MOZ_DBUS_CFLAGS)
5092 AC_SUBST(MOZ_DBUS_LIBS)
5093 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5094 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5096 dnl ========================================================
5097 dnl = Enable Android History instead of Places
5098 dnl ========================================================
5099 if test -n "$MOZ_ANDROID_HISTORY"; then
5100 dnl Do this if defined in confvars.sh
5101 AC_DEFINE(MOZ_ANDROID_HISTORY)
5105 dnl ========================================================
5106 dnl = Build with the Android compositor
5107 dnl ========================================================
5108 if test -n "$MOZ_ANDROID_OMTC"; then
5109 dnl Do this if defined in confvars.sh
5110 AC_DEFINE(MOZ_ANDROID_OMTC)
5113 dnl ========================================================
5114 dnl = Disable WebSMS backend
5115 dnl ========================================================
5116 MOZ_ARG_DISABLE_BOOL(websms-backend,
5117 [ --disable-websms-backend
5118 Disable WebSMS backend],
5119 MOZ_WEBSMS_BACKEND=,
5120 MOZ_WEBSMS_BACKEND=1)
5122 if test -n "$MOZ_WEBSMS_BACKEND"; then
5123 AC_DEFINE(MOZ_WEBSMS_BACKEND)
5126 dnl ========================================================
5127 dnl = Build Personal Security Manager
5128 dnl ========================================================
5129 MOZ_ARG_DISABLE_BOOL(crypto,
5130 [ --disable-crypto Disable crypto support (Personal Security Manager)],
5134 dnl ========================================================
5135 dnl = JS Debugger XPCOM component (js/jsd)
5136 dnl ========================================================
5137 MOZ_ARG_DISABLE_BOOL(jsd,
5138 [ --disable-jsd Disable JavaScript debug library],
5143 dnl ========================================================
5144 dnl = Enable IPDL's "expensive" unit tests
5145 dnl ========================================================
5148 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
5149 [ --enable-ipdl-tests Enable expensive IPDL tests],
5153 if test -n "$MOZ_IPDL_TESTS"; then
5154 AC_DEFINE(MOZ_IPDL_TESTS)
5157 AC_SUBST(MOZ_IPDL_TESTS)
5159 dnl ========================================================
5160 dnl = Turns off code necessary for e10s compatibility
5161 dnl ========================================================
5162 dnl This is a temporary flag to be removed in bug 662601 when
5163 dnl it's no longer needed
5167 MOZ_ARG_ENABLE_BOOL(e10s-compat,
5168 [ --enable-e10s-compat Turns off code for e10s compat],
5172 if test -n "$MOZ_E10S_COMPAT"; then
5173 AC_DEFINE(MOZ_E10S_COMPAT)
5176 dnl ========================================================
5177 dnl = Disable building dbm
5178 dnl ========================================================
5179 MOZ_ARG_DISABLE_BOOL(dbm,
5180 [ --disable-dbm Disable building dbm],
5184 dnl bi-directional support always on
5188 dnl ========================================================
5189 dnl accessibility support on by default on all platforms
5190 dnl ========================================================
5191 MOZ_ARG_DISABLE_BOOL(accessibility,
5192 [ --disable-accessibility Disable accessibility support],
5195 if test "$ACCESSIBILITY"; then
5196 AC_DEFINE(ACCESSIBILITY)
5199 dnl ========================================================
5200 dnl Disable printing
5201 dnl ========================================================
5202 MOZ_ARG_DISABLE_BOOL(printing,
5203 [ --disable-printing Disable printing support],
5207 if test "$NS_PRINTING"; then
5208 AC_DEFINE(NS_PRINTING)
5209 AC_DEFINE(NS_PRINT_PREVIEW)
5212 dnl Turn off webrtc for OS's we don't handle yet, but allow
5213 dnl --enable-webrtc to override. Can disable for everything in
5214 dnl the master list above.
5215 if test -n "$MOZ_WEBRTC"; then
5217 *-android*|*-linuxandroid*)
5218 dnl Make sure doesn't get matched by *-linux*
5221 *-linux*|*-mingw*|*-darwin*)
5225 dnl default to disabled for all others
5231 dnl ========================================================
5232 dnl = Disable WebRTC code
5233 dnl ========================================================
5234 MOZ_ARG_DISABLE_BOOL(webrtc,
5235 [ --disable-webrtc Disable support for WebRTC],
5239 if test -n "$MOZ_WEBRTC"; then
5240 AC_DEFINE(MOZ_WEBRTC)
5245 MOZ_VP8_ERROR_CONCEALMENT=1
5246 dnl enable once Signaling lands
5247 MOZ_WEBRTC_SIGNALING=1
5248 AC_DEFINE(MOZ_WEBRTC_SIGNALING)
5249 if test "${OS_TARGET}" = "WINNT"; then
5250 MOZ_WEBRTC_IN_LIBXUL=1
5252 dnl enable once PeerConnection lands
5253 MOZ_PEERCONNECTION=1
5254 AC_DEFINE(MOZ_PEERCONNECTION)
5261 AC_SUBST(MOZ_WEBRTC)
5262 AC_SUBST(MOZ_WEBRTC_SIGNALING)
5263 AC_SUBST(MOZ_PEERCONNECTION)
5264 AC_SUBST(MOZ_WEBRTC_IN_LIBXUL)
5268 case "$target_cpu" in
5270 MOZ_SAMPLE_TYPE_S16=1
5271 AC_DEFINE(MOZ_SAMPLE_TYPE_S16)
5272 AC_SUBST(MOZ_SAMPLE_TYPE_S16)
5275 MOZ_SAMPLE_TYPE_FLOAT32=1
5276 AC_DEFINE(MOZ_SAMPLE_TYPE_FLOAT32)
5277 AC_SUBST(MOZ_SAMPLE_TYPE_FLOAT32)
5281 dnl ========================================================
5282 dnl = Enable Raw Codecs
5283 dnl ========================================================
5284 MOZ_ARG_ENABLE_BOOL(raw,
5285 [ --enable-raw Enable support for RAW media],
5289 if test -n "$MOZ_RAW"; then
5296 dnl ========================================================
5297 dnl = Disable Ogg Codecs
5298 dnl ========================================================
5299 MOZ_ARG_DISABLE_BOOL(ogg,
5300 [ --disable-ogg Disable support for OGG media (Theora video and Vorbis audio)],
5304 if test -n "$MOZ_OGG"; then
5310 dnl Checks for __attribute__(aligned()) directive
5311 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5312 [ac_cv_c_attribute_aligned],
5313 [ac_cv_c_attribute_aligned=0
5314 CFLAGS_save="${CFLAGS}"
5315 CFLAGS="${CFLAGS} -Werror"
5316 for ac_cv_c_attr_align_try in 64 32 16 8; do
5317 echo "trying $ac_cv_c_attr_align_try"
5319 [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
5320 [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
5321 if test "$ac_cv_c_attribute_aligned" != 0; then
5325 CFLAGS="${CFLAGS_save}"])
5326 if test "${ac_cv_c_attribute_aligned}" != "0"; then
5327 AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
5328 [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
5332 dnl ========================================================
5333 dnl = Disable Opus audio codec support
5334 dnl ========================================================
5335 MOZ_ARG_DISABLE_BOOL(opus,
5336 [ --disable-opus Disable support for Opus audio],
5340 dnl ========================================================
5341 dnl = Disable VP8 decoder support
5342 dnl ========================================================
5343 MOZ_ARG_DISABLE_BOOL(webm,
5344 [ --disable-webm Disable support for WebM media (VP8 video and Vorbis audio)],
5348 if test -n "$MOZ_WEBM"; then
5353 dnl ========================================================
5354 dnl = Enable DASH-WebM support
5355 dnl ========================================================
5356 MOZ_ARG_ENABLE_BOOL(dash,
5357 [ --enable-dash Enable support for DASH-WebM],
5361 if test -n "$MOZ_DASH"; then
5362 if test -n "$MOZ_WEBM"; then
5365 dnl Fail if WebM is not enabled as well as DASH.
5366 AC_MSG_ERROR([WebM is currently disabled and must be enabled for DASH
5371 dnl ========================================================
5372 dnl = Enable media plugin support
5373 dnl ========================================================
5374 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5375 dnl Enable support on android by default
5379 MOZ_ARG_ENABLE_BOOL(media-plugins,
5380 [ --enable-media-plugins Enable support for media plugins],
5381 MOZ_MEDIA_PLUGINS=1,
5384 if test -n "$MOZ_MEDIA_PLUGINS"; then
5385 AC_DEFINE(MOZ_MEDIA_PLUGINS)
5388 dnl ========================================================
5389 dnl = Enable getUserMedia support
5390 dnl ========================================================
5391 MOZ_ARG_ENABLE_BOOL(media-navigator,
5392 [ --enable-media-navigator Enable support for getUserMedia],
5393 MOZ_MEDIA_NAVIGATOR=1,
5394 MOZ_MEDIA_NAVIGATOR=)
5396 if test -n "$MOZ_MEDIA_NAVIGATOR"; then
5397 AC_DEFINE(MOZ_MEDIA_NAVIGATOR)
5400 dnl ========================================================
5401 dnl = Enable building OMX media plugin (B2G or Android)
5402 dnl ========================================================
5403 if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
5404 dnl Enable support on android by default
5408 MOZ_ARG_ENABLE_BOOL(omx-plugin,
5409 [ --enable-omx-plugin Enable building OMX plugin (B2G)],
5413 if test -n "$MOZ_OMX_PLUGIN"; then
5414 if test "$OS_TARGET" = "Android"; then
5415 dnl Only allow building OMX plugin on Gonk (B2G) or Android
5416 AC_DEFINE(MOZ_OMX_PLUGIN)
5418 dnl fail if we're not building on Gonk or Android
5419 AC_MSG_ERROR([OMX media plugin can only be built on B2G or Android])
5423 dnl system libvpx Support
5424 dnl ========================================================
5425 MOZ_ARG_WITH_BOOL(system-libvpx,
5426 [ --with-system-libvpx Use system libvpx (located with pkgconfig)],
5427 MOZ_NATIVE_LIBVPX=1)
5432 if test -n "$MOZ_VP8"; then
5434 if test -n "$MOZ_VP8_ERROR_CONCEALMENT" ; then
5435 AC_DEFINE(MOZ_VP8_ERROR_CONCEALMENT)
5437 if test -n "$MOZ_VP8_ENCODER" ; then
5438 AC_DEFINE(MOZ_VP8_ENCODER)
5441 if test -n "$MOZ_NATIVE_LIBVPX"; then
5442 dnl ============================
5443 dnl === libvpx Version check ===
5444 dnl ============================
5445 dnl Check to see if we have a system libvpx package.
5446 PKG_CHECK_MODULES(MOZ_LIBVPX, vpx >= 1.0.0)
5448 MOZ_CHECK_HEADER([vpx/vpx_decoder.h], [],
5449 [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.])])
5452 AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver, [],
5453 [AC_MSG_ERROR([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found])])
5458 AC_SUBST(MOZ_NATIVE_LIBVPX)
5459 AC_SUBST(MOZ_LIBVPX_CFLAGS)
5460 AC_SUBST(MOZ_LIBVPX_LIBS)
5462 if test "$MOZ_WEBM"; then
5466 if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then
5473 if test -n "$MOZ_VP8" -a -z "$MOZ_NATIVE_LIBVPX"; then
5475 dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
5476 dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
5477 dnl We currently require gcc on all arm platforms.
5480 VPX_NEED_OBJ_INT_EXTRACT=
5482 dnl See if we have assembly on this platform.
5483 case "$OS_ARCH:$CPU_ARCH" in
5485 VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC"
5489 VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC"
5493 VPX_ASFLAGS="-f x64 -rnasm -pnasm"
5497 dnl Check for yasm 1.1 or greater.
5498 if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then
5499 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.])
5500 elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
5501 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.])
5503 VPX_ASFLAGS="-f win32 -rnasm -pnasm -DPIC"
5505 dnl The encoder needs obj_int_extract to get asm offsets.
5509 if test -n "$GNU_AS" ; then
5511 dnl These flags are a lie; they're just used to enable the requisite
5512 dnl opcodes; actual arch detection is done at runtime.
5513 VPX_ASFLAGS="-march=armv7-a -mfpu=neon"
5514 VPX_DASH_C_FLAG="-c"
5515 VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl'
5516 VPX_ASM_SUFFIX="$ASM_SUFFIX"
5521 if $CC -E -dM -</dev/null | grep -q __ELF__; then
5522 VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
5527 if $CC -E -dM -</dev/null | grep -q __ELF__; then
5528 VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
5534 if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_X86_ASM" -a -z "$VPX_AS"; then
5535 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.])
5538 if test -n "$MOZ_VP8_ENCODER" -a \
5539 -z "$GNU_CC" -a -z "$INTEL_CC" -a -z "$CLANG_CC" ; then
5540 dnl We prefer to get asm offsets using inline assembler, which the above
5541 dnl compilers can do. When we're not using one of those, we have to fall
5542 dnl back to obj_int_extract, which reads them from a compiled object
5543 dnl file. Unfortunately, that only works if we're compiling on a system
5544 dnl with the header files for the appropriate object file format.
5545 VPX_NEED_OBJ_INT_EXTRACT=1
5548 if test -n "$VPX_X86_ASM"; then
5549 AC_DEFINE(VPX_X86_ASM)
5550 elif test -n "$VPX_ARM_ASM"; then
5551 AC_DEFINE(VPX_ARM_ASM)
5553 AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.])
5557 dnl ========================================================
5558 dnl = Disable Wave decoder support
5559 dnl ========================================================
5560 MOZ_ARG_DISABLE_BOOL(wave,
5561 [ --disable-wave Disable Wave decoder support],
5565 if test -n "$MOZ_WAVE"; then
5572 dnl ========================================================
5573 dnl = Handle dependent SYDNEYAUDIO, CUBEB, and MEDIA defines
5574 dnl ========================================================
5576 if test -n "$MOZ_SYDNEYAUDIO"; then
5577 AC_DEFINE(MOZ_SYDNEYAUDIO)
5580 if test -n "$MOZ_SPEEX_RESAMPLER"; then
5581 AC_DEFINE(MOZ_SPEEX_RESAMPLER)
5584 if test -n "$MOZ_CUBEB"; then
5586 *-android*|*-linuxandroid*)
5587 if test -n "$gonkdir"; then
5588 AC_DEFINE(MOZ_CUBEB)
5590 dnl No Android implementation of libcubeb yet.
5593 AC_DEFINE(MOZ_CUBEB)
5596 AC_DEFINE(MOZ_CUBEB)
5599 AC_DEFINE(MOZ_CUBEB)
5602 AC_DEFINE(MOZ_CUBEB)
5605 dnl Other targets will be enabled soon.
5610 if test -n "$MOZ_MEDIA"; then
5611 AC_DEFINE(MOZ_MEDIA)
5614 if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then
5615 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/])
5618 if test -n "$MOZ_VORBIS"; then
5619 AC_DEFINE(MOZ_VORBIS)
5622 if test -n "$MOZ_TREMOR"; then
5623 AC_DEFINE(MOZ_TREMOR)
5626 if test -n "$MOZ_OPUS"; then
5630 dnl ========================================================
5631 dnl = Check alsa availability on Linux if using sydneyaudio
5632 dnl ========================================================
5634 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
5635 if test -n "$MOZ_SYDNEYAUDIO" -a "$OS_TARGET" = "Linux"; then
5636 PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
5637 [echo "$MOZ_ALSA_PKG_ERRORS"
5638 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.)])])
5641 dnl ========================================================
5642 dnl = Enable PulseAudio
5643 dnl ========================================================
5645 MOZ_ARG_ENABLE_BOOL(pulseaudio,
5646 [ --enable-pulseaudio Enable PulseAudio support (experimental)],
5650 if test -n "$MOZ_PULSEAUDIO"; then
5651 AC_DEFINE(MOZ_CUBEB)
5652 PKG_CHECK_MODULES(MOZ_PULSEAUDIO, libpulse, ,
5653 [echo "$MOZ_PULSEAUDIO_PKG_ERRORS"
5654 AC_MSG_ERROR([pulseaudio audio backend requires libpulse package])])
5657 AC_SUBST(MOZ_PULSEAUDIO)
5658 AC_SUBST(MOZ_PULSEAUDIO_CFLAGS)
5659 AC_SUBST(MOZ_PULSEAUDIO_LIBS)
5661 dnl ========================================================
5662 dnl = Enable GStreamer
5663 dnl ========================================================
5664 MOZ_ARG_ENABLE_BOOL(gstreamer,
5665 [ --enable-gstreamer Enable GStreamer support],
5669 if test "$MOZ_GSTREAMER"; then
5670 # API version, eg 0.10, 1.0 etc
5671 GST_API_VERSION=0.10
5672 # core/base release number
5673 # depend on >= 0.10.33 as that's when the playbin2 source-setup signal was
5676 PKG_CHECK_MODULES(GSTREAMER,
5677 gstreamer-$GST_API_VERSION >= $GST_VERSION
5678 gstreamer-app-$GST_API_VERSION
5679 gstreamer-plugins-base-$GST_API_VERSION)
5680 if test -n "$GSTREAMER_LIBS"; then
5681 _SAVE_LDFLAGS=$LDFLAGS
5682 LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5683 AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=)
5684 if test -n "$_HAVE_LIBGSTVIDEO" ; then
5685 GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
5687 AC_MSG_ERROR([gstreamer video backend requires libgstvideo])
5689 LDFLAGS=$_SAVE_LDFLAGS
5691 AC_MSG_ERROR([gstreamer backend requires the gstreamer packages])
5694 AC_SUBST(GSTREAMER_CFLAGS)
5695 AC_SUBST(GSTREAMER_LIBS)
5696 AC_SUBST(MOZ_GSTREAMER)
5698 if test -n "$MOZ_GSTREAMER"; then
5699 AC_DEFINE(MOZ_GSTREAMER)
5704 dnl ========================================================
5705 dnl Permissions System
5706 dnl ========================================================
5707 MOZ_ARG_DISABLE_BOOL(permissions,
5708 [ --disable-permissions Disable permissions (popup and cookie blocking)],
5713 dnl ========================================================
5715 dnl ========================================================
5716 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5717 [ --disable-negotiateauth Disable GSS-API negotiation ],
5718 MOZ_AUTH_EXTENSION=,
5719 MOZ_AUTH_EXTENSION=1 )
5721 dnl ========================================================
5723 dnl ========================================================
5724 MOZ_ARG_DISABLE_BOOL(xtf,
5725 [ --disable-xtf Disable XTF (pluggable xml tags) support],
5728 if test "$MOZ_XTF"; then
5732 dnl ========================================================
5733 dnl Pref extensions (autoconfig)
5734 dnl ========================================================
5735 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5736 [ --disable-pref-extensions
5737 Disable pref extensions such as autoconfig],
5738 MOZ_PREF_EXTENSIONS=,
5739 MOZ_PREF_EXTENSIONS=1 )
5741 dnl ========================================================
5742 dnl Searching of system directories for extensions.
5743 dnl Note: this switch is meant to be used for test builds
5744 dnl whose behavior should not depend on what happens to be
5745 dnl installed on the local machine.
5746 dnl ========================================================
5747 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
5748 [ --disable-system-extension-dirs
5749 Disable searching system- and account-global
5750 directories for extensions of any kind; use
5751 only profile-specific extension directories],
5752 ENABLE_SYSTEM_EXTENSION_DIRS=,
5753 ENABLE_SYSTEM_EXTENSION_DIRS=1 )
5754 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
5755 AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
5758 dnl ========================================================
5759 dnl = Universalchardet
5760 dnl ========================================================
5761 MOZ_ARG_DISABLE_BOOL(universalchardet,
5762 [ --disable-universalchardet
5763 Disable universal encoding detection],
5764 MOZ_UNIVERSALCHARDET=,
5765 MOZ_UNIVERSALCHARDET=1 )
5767 if test -n "${JAVA_BIN_PATH}"; then
5768 dnl Look for javac and jar in the specified path.
5769 JAVA_PATH="$JAVA_BIN_PATH"
5771 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5772 JAVA_PATH="$JAVA_HOME/bin:$PATH"
5775 MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5776 MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5777 MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5779 if test -n "${JAVA_BIN_PATH}" -o \
5780 \( "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk" \); then
5781 if test -z "$JAVA" -o "$JAVA" = ":" -o -z "$JAVAC" -o "$JAVAC" = ":" -o -z "$JAR" -o "$JAR" = ":"; then
5782 AC_MSG_ERROR([The programs java, javac and jar were not found. Set \$JAVA_HOME to your java sdk directory or use --with-java-bin-path={java-bin-dir}])
5786 dnl ========================================================
5787 dnl = ANGLE OpenGL->D3D translator for WebGL
5788 dnl = * only applies to win32
5789 dnl = * enabled by default (shipping build); requires explicit --disable to disable
5790 dnl ========================================================
5792 MOZ_DIRECTX_SDK_PATH=
5793 MOZ_DIRECTX_SDK_CPU_SUFFIX=
5796 MOZ_D3DCOMPILER_CAB=
5798 MOZ_D3DCOMPILER_DLL=
5799 case "$target_os" in
5801 MOZ_ANGLE_RENDERER=1
5805 # The DirectX SDK libraries are split into x86 and x64 sub-directories
5806 case "${target_cpu}" in
5808 MOZ_DIRECTX_SDK_CPU_SUFFIX=x86
5811 MOZ_DIRECTX_SDK_CPU_SUFFIX=x64
5815 MOZ_ARG_DISABLE_BOOL(webgl,
5816 [ --disable-webgl Disable building of the WebGL implementation],
5817 MOZ_WEBGL_DISABLED=1,
5818 MOZ_WEBGL_DISABLED=)
5820 if test -n "$MOZ_WEBGL_DISABLED"; then
5825 if test -n "$MOZ_ANGLE_RENDERER" -a -z "$CROSS_COMPILE"; then
5826 # Get the SDK path from the registry.
5827 # First try to get the June 2010 SDK
5828 MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1`
5829 if test -z "$MOZ_DIRECTX_SDK_REG_KEY" ; then
5830 # Otherwise just take whatever comes first
5831 MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1`
5834 if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then
5835 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.])
5837 MOZ_DIRECTX_SDK_PATH=`reg query "$MOZ_DIRECTX_SDK_REG_KEY" //v InstallPath | grep REG_SZ | sed 's/.*\([[a-zA-Z]]\)\\:\\\\/\\1\\:\\\\/'`
5840 if test -n "$MOZ_DIRECTX_SDK_PATH" &&
5841 test -f "$MOZ_DIRECTX_SDK_PATH"/include/d3dx9.h &&
5842 test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_DIRECTX_SDK_CPU_SUFFIX/dxguid.lib ; then
5843 AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH])
5845 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.])
5848 # Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib
5849 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'`
5851 if test -z "$MOZ_D3DX9_VERSION" ; then
5852 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.])
5855 MOZ_D3DX9_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *d3dx9_${MOZ_D3DX9_VERSION}_${MOZ_DIRECTX_SDK_CPU_SUFFIX}.cab | head -n1`
5856 MOZ_D3DCOMPILER_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_DIRECTX_SDK_CPU_SUFFIX}.cab | head -n1`
5858 if test -z "$MOZ_D3DX9_CAB" -o -z "$MOZ_D3DCOMPILER_CAB"; then
5859 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.])
5862 MOZ_D3DX9_DLL=d3dx9_$MOZ_D3DX9_VERSION.dll
5863 MOZ_D3DCOMPILER_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll
5866 dnl ========================================================
5867 dnl = Breakpad crash reporting (on by default on supported platforms)
5868 dnl ========================================================
5871 i?86-*-mingw*|x86_64-*-mingw*)
5874 i?86-apple-darwin*|x86_64-apple-darwin*)
5877 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
5878 if test "$MOZ_ENABLE_GTK2"; then
5882 *-android*|*-linuxandroid*)
5890 MOZ_ARG_DISABLE_BOOL(crashreporter,
5891 [ --disable-crashreporter Disable breakpad crash reporting],
5893 MOZ_CRASHREPORTER=1)
5895 if test -n "$MOZ_CRASHREPORTER"; then
5896 AC_DEFINE(MOZ_CRASHREPORTER)
5898 if test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS" && \
5899 test -z "$SKIP_LIBRARY_CHECKS"; then
5900 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5901 AC_SUBST(MOZ_GTHREAD_CFLAGS)
5902 AC_SUBST(MOZ_GTHREAD_LIBS)
5904 MOZ_CHECK_HEADERS([curl/curl.h], [], [AC_MSG_ERROR([Couldn't find curl/curl.h which is required for the crash reporter. Use --disable-crashreporter to disable the crash reporter.])])
5907 if test "$OS_ARCH" != "$HOST_OS_ARCH"; then
5908 AC_MSG_ERROR([Breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH. Use --disable-crashreporter.])
5911 if test "$OS_ARCH" = "WINNT" -a -z "$HAVE_64BIT_OS"; then
5912 MOZ_CRASHREPORTER_INJECTOR=1
5913 AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
5917 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5918 [ --with-crashreporter-enable-percent=NN
5919 Enable sending crash reports by default on NN% of users. (default=100)],
5920 [ val=`echo $withval | sed 's/[^0-9]//g'`
5921 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5923 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5924 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5926 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5928 dnl ========================================================
5929 dnl = libjpeg-turbo configuration
5930 dnl ========================================================
5932 if test -z "$MOZ_NATIVE_JPEG"; then
5936 MOZ_ARG_DISABLE_BOOL(libjpeg_turbo,
5937 [ --disable-libjpeg-turbo Disable optimized jpeg decoding routines],
5939 MOZ_LIBJPEG_TURBO=1)
5941 if test "$MOZ_NATIVE_JPEG" = 1 -a "$MOZ_LIBJPEG_TURBO" = 1; then
5942 AC_MSG_ERROR([cannot use --with-system-jpeg with --enable-libjpeg-turbo.])
5945 dnl Detect if we can use yasm to compile libjpeg-turbo's optimized assembly
5948 if test -n "$MOZ_LIBJPEG_TURBO"; then
5950 dnl Do we support libjpeg-turbo on this platform?
5951 case "$OS_ARCH:$OS_TEST" in
5953 LIBJPEG_TURBO_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC -DMACHO"
5954 LIBJPEG_TURBO_X86_ASM=1
5957 LIBJPEG_TURBO_ASFLAGS="-f macho64 -rnasm -pnasm -D__x86_64__ -DPIC -DMACHO"
5958 LIBJPEG_TURBO_X64_ASM=1
5960 WINNT:x86|WINNT:i?86)
5961 LIBJPEG_TURBO_ASFLAGS="-f win32 -rnasm -pnasm -DPIC -DWIN32"
5962 LIBJPEG_TURBO_X86_ASM=1
5965 LIBJPEG_TURBO_ASFLAGS="-f win64 -rnasm -pnasm -D__x86_64__ -DPIC -DWIN64 -DMSVC"
5966 LIBJPEG_TURBO_X64_ASM=1
5969 LIBJPEG_TURBO_ASFLAGS="-march=armv7-a -mfpu=neon"
5970 LIBJPEG_TURBO_ARM_ASM=1
5973 if $CC -E -dM -</dev/null | grep -q __ELF__; then
5974 LIBJPEG_TURBO_ASFLAGS="-f elf32 -rnasm -pnasm -DPIC -DELF"
5975 LIBJPEG_TURBO_X86_ASM=1
5979 if $CC -E -dM -</dev/null | grep -q __ELF__; then
5980 LIBJPEG_TURBO_ASFLAGS="-f elf64 -rnasm -pnasm -D__x86_64__ -DPIC -DELF"
5981 LIBJPEG_TURBO_X64_ASM=1
5988 dnl If we're on an x86 or x64 system which supports libjpeg-turbo's asm routines
5989 dnl and --disable-libjpeg-turbo wasn't passed, check for Yasm, and error out if
5990 dnl it doesn't exist or we have too old of a version.
5991 if test -n "$LIBJPEG_TURBO_X86_ASM" -o -n "$LIBJPEG_TURBO_X64_ASM" ; then
5992 AC_MSG_CHECKING([for Yasm assembler])
5993 AC_CHECK_PROGS(LIBJPEG_TURBO_AS, yasm, "")
5995 if test -z "$LIBJPEG_TURBO_AS" ; then
5996 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.])
5999 dnl Check that we have the right yasm version. We require 1.0.1 or newer
6000 dnl on Linux and 1.1 or newer everywhere else.
6001 if test "$OS_ARCH" = "Linux" ; then
6002 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
6003 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.])
6006 if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
6007 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.])
6012 dnl If we're on an ARM system which supports libjpeg-turbo's asm routines and
6013 dnl --disable-libjpeg-turbo wasn't passed, use the C compiler as the assembler.
6014 if test -n "$LIBJPEG_TURBO_ARM_ASM" ; then
6015 echo "Using $AS as the assembler for ARM code."
6016 LIBJPEG_TURBO_AS=$AS
6019 if test -n "$LIBJPEG_TURBO_X86_ASM"; then
6020 AC_DEFINE(LIBJPEG_TURBO_X86_ASM)
6021 elif test -n "$LIBJPEG_TURBO_X64_ASM"; then
6022 AC_DEFINE(LIBJPEG_TURBO_X64_ASM)
6023 elif test -n "$LIBJPEG_TURBO_ARM_ASM"; then
6024 AC_DEFINE(LIBJPEG_TURBO_ARM_ASM)
6025 elif test -n "$MOZ_LIBJPEG_TURBO"; then
6026 dnl Warn if we're not building the optimized routines, even though the user
6027 dnl didn't specify --disable-libjpeg-turbo.
6028 AC_MSG_WARN([No assembler or assembly support for libjpeg-turbo. Using unoptimized C routines.])
6031 dnl ========================================================
6032 dnl = Enable compilation of specific extension modules
6033 dnl ========================================================
6035 MOZ_ARG_ENABLE_STRING(extensions,
6036 [ --enable-extensions Enable extensions],
6037 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6038 if test "$option" = "yes" -o "$option" = "all"; then
6039 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6040 elif test "$option" = "no" -o "$option" = "none"; then
6042 elif test "$option" = "default"; then
6043 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6044 elif test `echo "$option" | grep -c \^-` != 0; then
6045 option=`echo $option | sed 's/^-//'`
6046 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6048 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6051 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6053 if test -z "$MOZ_ENABLE_GNOMEVFS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6054 # Suppress warning on non-X11 platforms
6055 if test -n "$MOZ_X11"; then
6056 AC_MSG_WARN([Removing gnomevfs from MOZ_EXTENSIONS due to no --enable-gnomevfs.])
6058 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6061 dnl Do not build gnomevfs with libxul based apps
6062 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6063 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6066 if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6067 # Suppress warning on non-X11 platforms
6068 if test -n "$MOZ_X11"; then
6069 AC_MSG_WARN([Removing gio from MOZ_EXTENSIONS due to --disable-gio.])
6071 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6074 dnl Do not build gio with libxul based apps
6075 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6076 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6079 if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6080 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6081 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6084 dnl xforms requires xtf
6085 if test -z "$MOZ_XTF" -a `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
6086 AC_MSG_WARN([Cannot build XForms without XTF support. Removing XForms from MOZ_EXTENSIONS.])
6087 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
6091 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6093 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6094 dnl when trying to build a nonexistent extension.
6095 for extension in $MOZ_EXTENSIONS; do
6096 if test ! -d "${srcdir}/extensions/${extension}"; then
6097 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6101 if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
6102 AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
6105 dnl ========================================================
6106 dnl CSS3 Flexbox Support
6107 dnl ========================================================
6108 if test -n "$MOZ_FLEXBOX"; then
6109 AC_DEFINE(MOZ_FLEXBOX)
6112 dnl ========================================================
6113 dnl Build Freetype in the tree
6114 dnl ========================================================
6115 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6116 [ --enable-tree-freetype Enable Tree FreeType],
6117 MOZ_TREE_FREETYPE=1,
6118 MOZ_TREE_FREETYPE= )
6119 if test -n "$MOZ_TREE_FREETYPE"; then
6120 if test -n "$_WIN32_MSVC"; then
6121 AC_ERROR("building with in-tree freetype is not supported on MSVC")
6123 AC_DEFINE(MOZ_TREE_FREETYPE)
6124 AC_SUBST(MOZ_TREE_FREETYPE)
6125 MOZ_ENABLE_CAIRO_FT=1
6126 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6127 FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6128 CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6129 FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6131 CAIRO_FT_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6132 AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6133 AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6134 AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6135 AC_SUBST(CAIRO_FT_CFLAGS)
6138 dnl ========================================================
6140 dnl ========================================================
6141 dnl Abort Windows build if the required major version and
6142 dnl minimum minor version of Unicode NSIS isn't in the path
6143 dnl (unless in case of cross compiling, for which Unicode
6144 dnl is not yet sufficient).
6145 if test "$OS_ARCH" = "WINNT"; then
6146 REQ_NSIS_MAJOR_VER=2
6147 MIN_NSIS_MINOR_VER=33
6148 MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensisu-2.46 makensisu makensis)
6149 if test -n "$MAKENSISU" -a "$MAKENSISU" != ":"; then
6150 AC_MSG_RESULT([yes])
6152 MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\)\-Unicode$/\1/g'`
6154 if test ! "$MAKENSISU_VER" = ""; then
6155 MAKENSISU_MAJOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $1 }'`
6156 MAKENSISU_MINOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $2 }'`
6158 AC_MSG_CHECKING([for Unicode NSIS with major version == $REQ_NSIS_MAJOR_VER and minor version >= $MIN_NSIS_MINOR_VER])
6159 if test "$MAKENSISU_VER" = "" || \
6160 test ! "$MAKENSISU_MAJOR_VER" = "$REQ_NSIS_MAJOR_VER" -o \
6161 ! "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER; then
6163 if test -z "$CROSS_COMPILE"; then
6164 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.])
6169 elif test -z "$CROSS_COMPILE"; then
6170 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.])
6176 dnl ========================================================
6178 dnl ========================================================
6179 MOZ_ARG_DISABLE_BOOL(webapp-runtime,
6180 [ --disable-webapp-runtime Disable Web App Runtime],
6181 MOZ_WEBAPP_RUNTIME=,
6182 MOZ_WEBAPP_RUNTIME=1)
6183 if test "$MOZ_WIDGET_TOOLKIT" != "windows" -a "$MOZ_WIDGET_TOOLKIT" != "cocoa" -a "$MOZ_WIDGET_TOOLKIT" != "gtk2"; then
6186 if test "$OS_ARCH" = "WINNT" -a -z "$MAKENSISU" -a -n "$CROSS_COMPILE"; then
6189 AC_SUBST(MOZ_WEBAPP_RUNTIME)
6190 if test "$MOZ_WEBAPP_RUNTIME"; then
6191 AC_DEFINE(MOZ_WEBAPP_RUNTIME)
6194 AC_MSG_CHECKING([for tar archiver])
6195 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6196 if test -z "$TAR"; then
6197 AC_MSG_ERROR([no tar archiver found in \$PATH])
6199 AC_MSG_RESULT([$TAR])
6202 AC_MSG_CHECKING([for wget])
6203 AC_CHECK_PROGS(WGET, wget, "")
6204 AC_MSG_RESULT([$WGET])
6207 dnl ========================================================
6209 dnl ========================================================
6211 if test -n "$MOZ_SIGN_CMD"; then
6212 AC_DEFINE(MOZ_SIGNING)
6215 dnl ========================================================
6216 dnl Maintenance Service
6217 dnl ========================================================
6219 MOZ_ARG_ENABLE_BOOL(maintenance-service,
6220 [ --enable-maintenance-service Enable building of maintenanceservice],
6221 MOZ_MAINTENANCE_SERVICE=1,
6222 MOZ_MAINTENANCE_SERVICE= )
6224 if test -n "$MOZ_MAINTENANCE_SERVICE"; then
6225 if test "$OS_ARCH" = "WINNT"; then
6226 AC_DEFINE(MOZ_MAINTENANCE_SERVICE)
6228 AC_MSG_ERROR([Can only build with --enable-maintenance-service with a Windows target])
6232 dnl ========================================================
6233 dnl Verify MAR signatures
6234 dnl ========================================================
6236 MOZ_ARG_ENABLE_BOOL(verify-mar,
6237 [ --enable-verify-mar Enable verifying MAR signatures],
6238 MOZ_VERIFY_MAR_SIGNATURE=1,
6239 MOZ_VERIFY_MAR_SIGNATURE= )
6241 if test -n "$MOZ_VERIFY_MAR_SIGNATURE"; then
6242 if test "$OS_ARCH" = "WINNT"; then
6243 AC_DEFINE(MOZ_VERIFY_MAR_SIGNATURE)
6245 AC_MSG_ERROR([Can only build with --enable-verify-mar with a Windows target])
6249 dnl ========================================================
6250 dnl Enable building the signmar program.
6251 dnl This option is much different than the --enable-verify-mar option.
6252 dnl --enable-verify-mar is for enabling the verification check on MAR
6253 dnl files in the updater. The --enable-signmar option is for building
6254 dnl the signmar program.
6255 dnl ========================================================
6257 MOZ_ARG_ENABLE_BOOL(signmar,
6258 [ --enable-signmar Enable building the signmar program],
6259 MOZ_ENABLE_SIGNMAR=1,
6260 MOZ_ENABLE_SIGNMAR= )
6262 if test -n "$MOZ_ENABLE_SIGNMAR"; then
6263 AC_DEFINE(MOZ_ENABLE_SIGNMAR)
6266 dnl ========================================================
6268 dnl ========================================================
6270 MOZ_ARG_DISABLE_BOOL(updater,
6271 [ --disable-updater Disable building of updater],
6275 if test -n "$MOZ_UPDATER"; then
6276 AC_DEFINE(MOZ_UPDATER)
6279 # app update channel is 'default' when not supplied.
6280 MOZ_ARG_ENABLE_STRING([update-channel],
6281 [ --enable-update-channel=CHANNEL
6282 Select application update channel (default=default)],
6283 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
6285 if test -z "$MOZ_UPDATE_CHANNEL"; then
6286 MOZ_UPDATE_CHANNEL=default
6288 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
6289 AC_SUBST(MOZ_UPDATE_CHANNEL)
6291 # tools/update-packaging is not checked out by default.
6292 MOZ_ARG_ENABLE_BOOL(update-packaging,
6293 [ --enable-update-packaging
6294 Enable tools/update-packaging],
6295 MOZ_UPDATE_PACKAGING=1,
6296 MOZ_UPDATE_PACKAGING= )
6297 AC_SUBST(MOZ_UPDATE_PACKAGING)
6299 dnl ========================================================
6300 dnl build the tests by default
6301 dnl ========================================================
6302 MOZ_ARG_DISABLE_BOOL(tests,
6303 [ --disable-tests Do not build test libraries & programs],
6307 dnl ========================================================
6308 dnl parental controls (for Windows Vista)
6309 dnl ========================================================
6310 MOZ_ARG_DISABLE_BOOL(parental-controls,
6311 [ --disable-parental-controls
6312 Do not build parental controls],
6313 MOZ_DISABLE_PARENTAL_CONTROLS=1,
6314 MOZ_DISABLE_PARENTAL_CONTROLS=)
6315 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6316 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6319 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6321 dnl ========================================================
6322 dnl = Disable DOMCrypto
6323 dnl ========================================================
6324 if test -n "$MOZ_DISABLE_DOMCRYPTO"; then
6325 AC_DEFINE(MOZ_DISABLE_DOMCRYPTO)
6328 dnl ========================================================
6330 dnl = Module specific options
6332 dnl ========================================================
6333 MOZ_ARG_HEADER(Individual module options)
6335 dnl ========================================================
6336 dnl = Disable feed handling components
6337 dnl ========================================================
6338 MOZ_ARG_DISABLE_BOOL(feeds,
6339 [ --disable-feeds Disable feed handling and processing components],
6342 if test -n "$MOZ_FEEDS"; then
6343 AC_DEFINE(MOZ_FEEDS)
6345 if test "$MOZ_BUILD_APP" = "browser"; then
6346 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6350 dnl ========================================================
6351 dnl Check for sqlite
6352 dnl ========================================================
6355 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6356 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
6357 MOZ_NATIVE_SQLITE=1,
6358 MOZ_NATIVE_SQLITE= )
6360 if test -z "$MOZ_NATIVE_SQLITE"
6363 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6365 dnl ============================
6366 dnl === SQLite Version check ===
6367 dnl ============================
6368 dnl Check to see if the system SQLite package is new enough.
6369 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6371 dnl ==================================
6372 dnl === SQLITE_SECURE_DELETE check ===
6373 dnl ==================================
6374 dnl Check to see if the system SQLite package is compiled with
6375 dnl SQLITE_SECURE_DELETE enabled.
6376 AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6377 _SAVE_CFLAGS="$CFLAGS"
6378 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6380 LIBS="$LIBS $SQLITE_LIBS"
6381 AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6383 #include "sqlite3.h"
6385 int main(int argc, char **argv){
6386 return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6388 ac_cv_sqlite_secure_delete=yes,
6389 ac_cv_sqlite_secure_delete=no,
6390 ac_cv_sqlite_secure_delete=no
6393 AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6394 CFLAGS="$_SAVE_CFLAGS"
6396 if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6397 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6400 dnl ===============================
6401 dnl === SQLITE_THREADSAFE check ===
6402 dnl ===============================
6403 dnl Check to see if the system SQLite package is compiled with
6404 dnl SQLITE_THREADSAFE enabled.
6405 AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6406 _SAVE_CFLAGS="$CFLAGS"
6407 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6409 LIBS="$LIBS $SQLITE_LIBS"
6410 AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6412 #include "sqlite3.h"
6414 int main(int argc, char **argv){
6415 return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6417 ac_cv_sqlite_threadsafe=yes,
6418 ac_cv_sqlite_threadsafe=no,
6419 ac_cv_sqlite_threadsafe=no
6422 AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6423 CFLAGS="$_SAVE_CFLAGS"
6425 if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6426 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6429 dnl ================================
6430 dnl === SQLITE_ENABLE_FTS3 check ===
6431 dnl ================================
6432 dnl check to see if the system SQLite package is compiled with
6433 dnl SQLITE_ENABLE_FTS3 enabled.
6434 AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6435 _SAVE_CFLAGS="$CFLAGS"
6436 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6438 LIBS="$LIBS $SQLITE_LIBS"
6439 AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6441 #include "sqlite3.h"
6443 int main(int argc, char **argv){
6444 return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6446 ac_cv_sqlite_enable_fts3=yes,
6447 ac_cv_sqlite_enable_fts3=no,
6448 ac_cv_sqlite_enable_fts3=no
6451 AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6452 CFLAGS="$_SAVE_CFLAGS"
6454 if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6455 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6458 dnl =========================================
6459 dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
6460 dnl =========================================
6461 dnl check to see if the system SQLite package is compiled with
6462 dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
6463 AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
6464 _SAVE_CFLAGS="$CFLAGS"
6465 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6467 LIBS="$LIBS $SQLITE_LIBS"
6468 AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
6470 #include "sqlite3.h"
6472 int main(int argc, char **argv){
6473 return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
6475 ac_cv_sqlite_enable_unlock_notify=yes,
6476 ac_cv_sqlite_enable_unlock_notify=no,
6477 ac_cv_sqlite_enable_unlock_notify=no
6480 AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
6481 CFLAGS="$_SAVE_CFLAGS"
6483 if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
6484 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
6488 if test -n "$MOZ_NATIVE_SQLITE"; then
6489 AC_DEFINE(MOZ_NATIVE_SQLITE)
6491 AC_SUBST(MOZ_NATIVE_SQLITE)
6493 dnl ========================================================
6494 dnl = Enable help viewer (off by default)
6495 dnl ========================================================
6496 if test -n "$MOZ_HELP_VIEWER"; then
6497 dnl Do this if defined in confvars.sh
6498 AC_DEFINE(MOZ_HELP_VIEWER)
6501 dnl ========================================================
6502 dnl = Enable safe browsing (anti-phishing)
6503 dnl ========================================================
6504 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6505 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
6506 MOZ_SAFE_BROWSING=1,
6507 MOZ_SAFE_BROWSING= )
6508 if test -n "$MOZ_SAFE_BROWSING"; then
6509 AC_DEFINE(MOZ_SAFE_BROWSING)
6511 AC_SUBST(MOZ_SAFE_BROWSING)
6513 dnl ========================================================
6514 dnl = Enable url-classifier
6515 dnl ========================================================
6516 dnl Implicitly enabled by default if building with safe-browsing
6517 if test -n "$MOZ_SAFE_BROWSING"; then
6518 MOZ_URL_CLASSIFIER=1
6520 MOZ_ARG_ENABLE_BOOL(url-classifier,
6521 [ --enable-url-classifier Enable url classifier module],
6522 MOZ_URL_CLASSIFIER=1,
6523 MOZ_URL_CLASSIFIER= )
6524 if test -n "$MOZ_URL_CLASSIFIER"; then
6525 AC_DEFINE(MOZ_URL_CLASSIFIER)
6527 AC_SUBST(MOZ_URL_CLASSIFIER)
6529 dnl ========================================================
6530 dnl = Disable zipwriter
6531 dnl ========================================================
6532 MOZ_ARG_DISABLE_BOOL(zipwriter,
6533 [ --disable-zipwriter Disable zipwriter component],
6536 AC_SUBST(MOZ_ZIPWRITER)
6538 dnl ========================================================
6540 dnl ========================================================
6541 dnl superseded by QtNetwork starting from 4.7
6542 MOZ_ENABLE_LIBCONIC=1
6544 if test -n "$MOZ_ENABLE_QT"; then
6545 if test "$MOZ_ENABLE_QTNETWORK"; then
6546 MOZ_ENABLE_LIBCONIC=
6550 MOZ_ARG_DISABLE_BOOL(libconic,
6551 [ --disable-libconic Disable libconic],
6552 MOZ_ENABLE_LIBCONIC=,
6553 MOZ_ENABLE_LIBCONIC=1 )
6555 if test -n "$MOZ_ENABLE_LIBCONIC"; then
6556 PKG_CHECK_MODULES(LIBCONIC, conic,
6557 MOZ_ENABLE_LIBCONIC=1,
6558 MOZ_ENABLE_LIBCONIC=)
6560 if test "$MOZ_ENABLE_LIBCONIC"; then
6561 AC_DEFINE(MOZ_ENABLE_LIBCONIC)
6564 AC_SUBST(MOZ_ENABLE_LIBCONIC)
6565 AC_SUBST(LIBCONIC_CFLAGS)
6566 AC_SUBST(LIBCONIC_LIBS)
6568 dnl ========================================================
6570 dnl ========================================================
6572 MAEMO_SDK_TARGET_VER=-1
6574 MOZ_ARG_WITH_STRING(maemo-version,
6575 [ --with-maemo-version=MAEMO_SDK_TARGET_VER
6577 MAEMO_SDK_TARGET_VER=$withval)
6579 case "$MAEMO_SDK_TARGET_VER" in
6581 MOZ_PLATFORM_MAEMO=5
6585 MOZ_PLATFORM_MAEMO=6
6589 dnl We aren't compiling for Maemo, move on.
6592 AC_MSG_ERROR([Unknown Maemo Version. Try setting --with-maemo-version to 5 or 6.])
6596 if test $MOZ_PLATFORM_MAEMO; then
6597 AC_DEFINE_UNQUOTED([MOZ_PLATFORM_MAEMO], $MOZ_PLATFORM_MAEMO)
6599 if test -z "$MOZ_ENABLE_DBUS"; then
6600 AC_MSG_ERROR([DBus is required when building for Maemo])
6603 MOZ_GFX_OPTIMIZE_MOBILE=1
6604 MOZ_GL_DEFAULT_PROVIDER=EGL
6605 MOZ_MAEMO_LIBLOCATION=
6607 if test $MOZ_PLATFORM_MAEMO = 5; then
6608 dnl if we have Xcomposite we should also have Xdamage and Xfixes
6609 MOZ_CHECK_HEADERS([X11/extensions/Xdamage.h], [],
6610 [AC_MSG_ERROR([Couldn't find X11/extensions/Xdamage.h which is required for composited plugins.])])
6611 AC_CHECK_LIB(Xcomposite, XCompositeRedirectWindow, [XCOMPOSITE_LIBS="-lXcomposite -lXdamage -lXfixes"],
6612 [MISSING_X="$MISSING_X -lXcomposite"], $XLIBS)
6614 AC_SUBST(XCOMPOSITE_LIBS)
6616 PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime, _LIB_FOUND=1, _LIB_FOUND=)
6617 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONMIME_LIBS"
6618 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONMIME_CFLAGS"
6619 if test -z "$_LIB_FOUND"; then
6620 AC_MSG_ERROR([Hildon Mime is required when building for Maemo])
6624 PKG_CHECK_MODULES(LIBOSSO,libosso, _LIB_FOUND=1, _LIB_FOUND=)
6625 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBOSSO_LIBS"
6626 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBOSSO_CFLAGS"
6627 if test -z "$_LIB_FOUND"; then
6628 AC_MSG_ERROR([LibOSSO is required when building for Maemo])
6631 PKG_CHECK_MODULES(LIBHILDONFM,hildon-fm-2, _LIB_FOUND=1, _LIB_FOUND=)
6632 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONFM_LIBS"
6633 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONFM_CFLAGS"
6634 if test -z "$_LIB_FOUND"; then
6635 AC_MSG_ERROR([Hildon FM-2 is required when building for Maemo])
6639 if test $MOZ_PLATFORM_MAEMO = 6; then
6641 PKG_CHECK_MODULES(LIBCONTENTMANAGER, ContentManager QtSparql,
6644 if test "$_LIB_FOUND"; then
6645 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTMANAGER_LIBS"
6646 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTMANAGER_CFLAGS"
6647 MOZ_ENABLE_CONTENTMANAGER=1
6648 AC_DEFINE(MOZ_ENABLE_CONTENTMANAGER)
6650 AC_MSG_WARN([Cannot find libcontentmanager and or QtSparql building for Maemo 6])
6652 AC_SUBST(MOZ_ENABLE_CONTENTMANAGER)
6654 dnl ========================================================
6655 dnl = Enable meego libcontentaction
6656 dnl ========================================================
6657 MOZ_ARG_ENABLE_BOOL(meegocontentaction,
6658 [ --enable-meegocontentaction Enable meegocontentaction support],
6659 MOZ_MEEGOCONTENTACTION=1,
6660 MOZ_MEEGOCONTENTACTION=)
6662 if test -n "$MOZ_MEEGOCONTENTACTION"; then
6664 PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=)
6665 if test "$_LIB_FOUND"; then
6666 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTACTION_LIBS"
6667 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTACTION_CFLAGS"
6668 MOZ_ENABLE_CONTENTACTION=1
6669 AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
6670 AC_SUBST(MOZ_ENABLE_CONTENTACTION)
6674 MOZ_ARG_ENABLE_BOOL(meegotouch,
6675 [ --enable-meegotouch Enable meegotouch support],
6676 MOZ_MEEGOTOUCHENABLED=1,
6677 MOZ_MEEGOTOUCHENABLED=)
6679 if test -n "$MOZ_MEEGOTOUCHENABLED"; then
6680 PKG_CHECK_MODULES(MOZ_MEEGOTOUCH, meegotouchcore, _LIB_FOUND=1, _LIB_FOUND=)
6681 if test "$_LIB_FOUND"; then
6682 MOZ_QT_CFLAGS="$MOZ_MEEGOTOUCH_CFLAGS $MOZ_QT_CFLAGS"
6683 MOZ_QT_LIBS="$MOZ_MEEGOTOUCH_LIBS $MOZ_QT_LIBS"
6684 AC_DEFINE(MOZ_ENABLE_MEEGOTOUCH)
6686 AC_MSG_WARN([Cannot meegotouchcore-dev. Disabling Meegotouch support.])
6691 PKG_CHECK_MODULES(LIBLOCATION,liblocation, _LIB_FOUND=1, _LIB_FOUND=)
6692 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBLOCATION_LIBS"
6693 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBLOCATION_CFLAGS"
6694 if test "$_LIB_FOUND"; then
6695 MOZ_MAEMO_LIBLOCATION=1
6696 AC_DEFINE(MOZ_MAEMO_LIBLOCATION)
6698 AC_MSG_WARN([Cannot liblocation-dev. Disabling Maemo geolocation.])
6700 AC_SUBST(MOZ_MAEMO_LIBLOCATION)
6702 PKG_CHECK_MODULES(LIBMEEGOTOUCHSHARE, ShareUiInterface-maemo-meegotouch >= 0.3.31 mdatauri, _LIB_FOUND=1, _LIB_FOUND=)
6703 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBMEEGOTOUCHSHARE_LIBS"
6704 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBMEEGOTOUCHSHARE_CFLAGS"
6705 if test "$_LIB_FOUND"; then
6706 MOZ_ENABLE_MEEGOTOUCHSHARE=1
6707 AC_DEFINE(MOZ_ENABLE_MEEGOTOUCHSHARE)
6709 AC_MSG_WARN([Cannot find maemo-meegotouch-interfaces-dev or libmdatauri-dev. Disabling meegotouch share ui.])
6711 AC_SUBST(MOZ_ENABLE_MEEGOTOUCHSHARE)
6713 AC_SUBST(MOZ_PLATFORM_MAEMO_LIBS)
6714 AC_SUBST(MOZ_PLATFORM_MAEMO_CFLAGS)
6717 dnl ========================================================
6718 dnl = XRender Composite
6719 dnl ========================================================
6720 MOZ_ARG_ENABLE_BOOL(egl-xrender-composite,
6721 [ --enable-egl-xrender-composite
6722 Enable EGL xrender composite optimizations],
6723 MOZ_EGL_XRENDER_COMPOSITE=1)
6725 if test -n "$MOZ_EGL_XRENDER_COMPOSITE"; then
6726 AC_DEFINE(MOZ_EGL_XRENDER_COMPOSITE)
6729 AC_SUBST(MOZ_EGL_XRENDER_COMPOSITE)
6731 dnl ========================================================
6733 dnl ========================================================
6735 MOZ_ARG_WITH_STRING(gl-provider,
6736 [ --with-gl-provider=ID
6737 Set GL provider backend type],
6738 [ val=`echo $withval`
6739 MOZ_GL_PROVIDER="$val"])
6741 if test -n "$MOZ_GL_PROVIDER"; then
6742 MOZ_GL_DEFAULT_PROVIDER=$MOZ_GL_PROVIDER
6743 AC_SUBST(MOZ_GL_PROVIDER)
6744 AC_DEFINE_UNQUOTED(MOZ_GL_PROVIDER, GLContextProvider$MOZ_GL_PROVIDER)
6746 AC_SUBST(MOZ_GL_DEFAULT_PROVIDER)
6748 dnl ========================================================
6749 dnl = faststripe theme
6750 dnl ========================================================
6751 MOZ_ARG_ENABLE_BOOL(faststripe,
6752 [ --enable-faststripe Use faststripe theme],
6753 MOZ_THEME_FASTSTRIPE=1,
6754 MOZ_THEME_FASTSTRIPE= )
6755 AC_SUBST(MOZ_THEME_FASTSTRIPE)
6757 dnl ========================================================
6759 dnl = Feature options that require extra sources to be pulled
6761 dnl ========================================================
6762 dnl MOZ_ARG_HEADER(Features that require extra sources)
6764 dnl ========================================================
6766 dnl = Debugging Options
6768 dnl ========================================================
6769 MOZ_ARG_HEADER(Debugging and Optimizations)
6771 dnl ========================================================
6772 dnl = Disable building with debug info.
6773 dnl = Debugging is OFF by default
6774 dnl ========================================================
6775 if test -z "$MOZ_DEBUG_FLAGS"; then
6776 MOZ_DEBUG_FLAGS="-g"
6779 MOZ_ARG_ENABLE_STRING(debug,
6780 [ --enable-debug[=DBG] Enable building with developer debug info
6781 (using compiler flags DBG)],
6782 [ if test "$enableval" != "no"; then
6784 if test -n "$enableval" -a "$enableval" != "yes"; then
6785 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6786 _MOZ_DEBUG_FLAGS_SET=1
6793 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG -DTRACING"
6794 MOZ_ARG_WITH_STRING(debug-label,
6795 [ --with-debug-label=LABELS
6796 Define DEBUG_<value> for each comma-separated
6798 [ for option in `echo $withval | sed 's/,/ /g'`; do
6799 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${option}"
6802 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6804 if test -n "$MOZ_DEBUG"; then
6805 AC_MSG_CHECKING([for valid debug flags])
6806 _SAVE_CFLAGS=$CFLAGS
6807 CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6808 AC_TRY_COMPILE([#include <stdio.h>],
6809 [printf("Hello World\n");],
6812 AC_MSG_RESULT([$_results])
6813 if test "$_results" = "no"; then
6814 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6816 CFLAGS=$_SAVE_CFLAGS
6819 dnl ========================================================
6820 dnl enable mobile optimizations
6821 dnl ========================================================
6822 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
6823 [ --enable-mobile-optimize
6824 Enable mobile optimizations],
6825 MOZ_GFX_OPTIMIZE_MOBILE=1)
6827 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
6829 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
6830 AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
6833 dnl ========================================================
6834 dnl = Enable code optimization. ON by default.
6835 dnl ========================================================
6836 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6837 MOZ_OPTIMIZE_FLAGS="-O"
6840 MOZ_ARG_ENABLE_STRING(optimize,
6841 [ --disable-optimize Disable compiler optimization
6842 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6843 [ if test "$enableval" != "no"; then
6845 if test -n "$enableval" -a "$enableval" != "yes"; then
6846 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6851 fi ], MOZ_OPTIMIZE=1)
6853 MOZ_SET_FRAMEPTR_FLAGS
6855 if test "$COMPILE_ENVIRONMENT"; then
6856 if test -n "$MOZ_OPTIMIZE"; then
6857 AC_MSG_CHECKING([for valid optimization flags])
6858 _SAVE_CFLAGS=$CFLAGS
6859 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6860 AC_TRY_COMPILE([#include <stdio.h>],
6861 [printf("Hello World\n");],
6864 AC_MSG_RESULT([$_results])
6865 if test "$_results" = "no"; then
6866 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6868 CFLAGS=$_SAVE_CFLAGS
6870 fi # COMPILE_ENVIRONMENT
6872 AC_SUBST(MOZ_OPTIMIZE)
6873 AC_SUBST(MOZ_FRAMEPTR_FLAGS)
6874 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6875 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6876 AC_SUBST(MOZ_ALLOW_HEAP_EXECUTE_FLAGS)
6877 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6878 AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS)
6880 dnl ========================================================
6881 dnl = Enable generation of debug symbols
6882 dnl ========================================================
6883 MOZ_ARG_ENABLE_STRING(debug-symbols,
6884 [ --enable-debug-symbols[=DBG]
6885 Enable debugging symbols (using compiler flags DBG)],
6886 [ if test "$enableval" != "no"; then
6888 if test -n "$enableval" -a "$enableval" != "yes"; then
6889 if test -z "$_MOZ_DEBUG_FLAGS_SET"; then
6890 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6892 AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
6898 MOZ_DEBUG_SYMBOLS=1)
6900 if test -n "$MOZ_DEBUG" -o -n "$MOZ_DEBUG_SYMBOLS"; then
6901 AC_DEFINE(MOZ_DEBUG_SYMBOLS)
6902 export MOZ_DEBUG_SYMBOLS
6905 dnl ========================================================
6906 dnl = Enable any treating of compile warnings as errors
6907 dnl ========================================================
6908 MOZ_ARG_ENABLE_BOOL(warnings-as-errors,
6909 [ --enable-warnings-as-errors
6910 Enable treating of warnings as errors],
6911 MOZ_ENABLE_WARNINGS_AS_ERRORS=1,
6912 MOZ_ENABLE_WARNINGS_AS_ERRORS=)
6913 if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
6914 WARNINGS_AS_ERRORS=''
6917 dnl ========================================================
6918 dnl = Disable runtime logging checks
6919 dnl ========================================================
6920 MOZ_ARG_DISABLE_BOOL(logging,
6921 [ --disable-logging Disable logging facilities],
6922 NS_DISABLE_LOGGING=1,
6923 NS_DISABLE_LOGGING= )
6924 if test "$NS_DISABLE_LOGGING"; then
6925 AC_DEFINE(NS_DISABLE_LOGGING)
6927 AC_DEFINE(MOZ_LOGGING)
6930 dnl ========================================================
6931 dnl = This will enable logging of addref, release, ctor, dtor.
6932 dnl ========================================================
6933 _ENABLE_LOGREFCNT=42
6934 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6935 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
6936 _ENABLE_LOGREFCNT=1,
6937 _ENABLE_LOGREFCNT= )
6938 if test "$_ENABLE_LOGREFCNT" = "1"; then
6939 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6940 elif test -z "$_ENABLE_LOGREFCNT"; then
6941 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6944 dnl ========================================================
6945 dnl moz_dump_painting
6946 dnl ========================================================
6947 MOZ_ARG_ENABLE_BOOL(dump-painting,
6948 [ --enable-dump-painting Enable paint debugging.],
6949 MOZ_DUMP_PAINTING=1,
6950 MOZ_DUMP_PAINTING= )
6951 if test -n "$MOZ_DUMP_PAINTING"; then
6952 AC_DEFINE(MOZ_DUMP_PAINTING)
6953 AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
6955 if test -n "$MOZ_DEBUG"; then
6956 AC_DEFINE(MOZ_DUMP_PAINTING)
6959 dnl ========================================================
6960 dnl = Enable trace malloc
6961 dnl ========================================================
6962 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6963 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6964 [ --enable-trace-malloc Enable malloc tracing; also disables jemalloc],
6967 if test "$NS_TRACE_MALLOC"; then
6968 # Please, Mr. Linker Man, don't take away our symbol names
6969 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6971 AC_DEFINE(NS_TRACE_MALLOC)
6973 AC_SUBST(NS_TRACE_MALLOC)
6975 dnl ========================================================
6976 dnl = Enable jemalloc
6977 dnl ========================================================
6978 MOZ_ARG_ENABLE_BOOL(jemalloc,
6979 [ --enable-jemalloc Replace memory allocator with jemalloc],
6983 if test "$NS_TRACE_MALLOC"; then
6986 if test "$MOZ_DMD"; then
6990 if test "${OS_TARGET}" = "Android"; then
6991 dnl On Android, we use WRAP_LDFLAGS to link everything to mozglue
6993 elif test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin" -o "${OS_TARGET}" = "OS2"; then
6994 dnl On Windows, OSX and OS2, we want to link all our binaries against mozglue
6995 if test -z "$GNU_CC"; then
6996 MOZ_GLUE_LDFLAGS='$(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
6998 MOZ_GLUE_LDFLAGS='-L$(LIBXUL_DIST)/lib $(call EXPAND_LIBNAME,mozglue)'
7001 dnl On other Unix systems, we only want to link executables against mozglue
7002 MOZ_GLUE_PROGRAM_LDFLAGS='$(MKSHLIB_FORCE_ALL) $(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
7003 dnl On other Unix systems, where mozglue is a static library, jemalloc is
7004 dnl separated for the SDK, so we need to add it here.
7005 if test "$MOZ_MEMORY" = 1 -o \( "$LIBXUL_SDK" -a -f "$LIBXUL_SDK/lib/${LIB_PREFIX}memory.${LIB_SUFFIX}" \); then
7006 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(call EXPAND_LIBNAME_PATH,memory,$(LIBXUL_DIST)/lib)'
7008 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(MKSHLIB_UNFORCE_ALL)'
7009 if test -n "$GNU_CC"; then
7010 dnl And we need mozglue symbols to be exported.
7011 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS -rdynamic"
7013 if test "$MOZ_LINKER" = 1; then
7014 MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS $ZLIB_LIBS"
7018 if test -z "$MOZ_MEMORY"; then
7021 if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
7022 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.])
7027 dnl Don't try to run compiler tests on Windows
7028 if test "$OS_ARCH" = "WINNT"; then
7029 if test -z "$HAVE_64BIT_OS"; then
7030 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7032 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7035 AC_CHECK_SIZEOF([int *], [4])
7036 case "${ac_cv_sizeof_int_p}" in
7038 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7041 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7044 AC_MSG_ERROR([Unexpected pointer size])
7049 AC_DEFINE(MOZ_MEMORY)
7050 if test -n "$MOZ_JEMALLOC"; then
7051 AC_DEFINE(MOZ_JEMALLOC)
7053 if test "x$MOZ_DEBUG" = "x1"; then
7054 AC_DEFINE(MOZ_MEMORY_DEBUG)
7056 dnl The generic feature tests that determine how to compute ncpus are long and
7057 dnl complicated. Therefore, simply define special cpp variables for the
7058 dnl platforms we have special knowledge of.
7061 AC_DEFINE(MOZ_MEMORY_DARWIN)
7064 AC_DEFINE(MOZ_MEMORY_BSD)
7066 *-android*|*-linuxandroid*)
7067 AC_DEFINE(MOZ_MEMORY_LINUX)
7068 AC_DEFINE(MOZ_MEMORY_ANDROID)
7069 if test -z "$gonkdir"; then
7072 AC_DEFINE(MOZ_MEMORY_GONK)
7077 AC_DEFINE(MOZ_MEMORY_LINUX)
7080 AC_DEFINE(MOZ_MEMORY_BSD)
7083 AC_DEFINE(MOZ_MEMORY_SOLARIS)
7086 AC_DEFINE(MOZ_MEMORY_WINDOWS)
7087 if test -z "$MOZ_DEBUG"; then
7088 WIN32_CRT_LIBS="msvcrt.lib msvcprt.lib"
7090 WIN32_CRT_LIBS="msvcrtd.lib msvcprtd.lib"
7092 dnl Look for a broken crtdll.obj
7093 WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj`
7094 lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH
7095 if grep -q '__imp__\{0,1\}free' crtdll.obj; then
7096 MOZ_GLUE_LDFLAGS='-LIBPATH:$(DIST)/lib -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt'
7097 dnl Also pass this to NSPR/NSS
7098 DLLFLAGS="$DLLFLAGS $MOZ_GLUE_LDFLAGS"
7100 DLLFLAGS="$DLLFLAGS -LIBPATH:\$(DIST)/lib -DEFAULTLIB:mozglue"
7107 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7111 AC_SUBST(MOZ_MEMORY)
7112 AC_SUBST(MOZ_JEMALLOC)
7113 AC_SUBST(MOZ_GLUE_LDFLAGS)
7114 AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS)
7115 AC_SUBST(WIN32_CRT_LIBS)
7116 dnl Need to set this for make because NSS doesn't have configure
7119 dnl We need to wrap dlopen and related functions on Android because we use
7121 if test "$OS_TARGET" = Android; then
7122 WRAP_LDFLAGS="${WRAP_LDFLAGS} -L$_objdir/dist/lib -lmozglue"
7123 if test -n "$MOZ_OLD_LINKER"; then
7124 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=dlopen,--wrap=dlclose,--wrap=dlerror,--wrap=dlsym,--wrap=dladdr"
7126 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=getaddrinfo,--wrap=freeaddrinfo,--wrap=gai_strerror"
7127 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=fork,--wrap=pthread_atfork,--wrap=raise,--wrap=PR_GetEnv,--wrap=PR_SetEnv"
7130 dnl ========================================================
7131 dnl = Use malloc wrapper lib
7132 dnl ========================================================
7133 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
7134 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
7138 if test -n "$_WRAP_MALLOC"; then
7139 if test -n "$GNU_CC"; then
7140 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=malloc,--wrap=calloc,--wrap=valloc,--wrap=free,--wrap=realloc,--wrap=memalign"
7141 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=__builtin_new,--wrap=__builtin_vec_new,--wrap=__builtin_delete,--wrap=__builtin_vec_delete"
7142 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=strdup,--wrap=strndup"
7143 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=posix_memalign,--wrap=malloc_usable_size"
7144 dnl Wrap operator new and operator delete on Android.
7145 if test "$OS_TARGET" = "Android"; then
7146 WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_Znwj,--wrap=_Znaj,--wrap=_ZdlPv,--wrap=_ZdaPv"
7149 AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains])
7153 dnl ========================================================
7154 dnl = Location of malloc wrapper lib
7155 dnl ========================================================
7156 MOZ_ARG_WITH_STRING(wrap-malloc,
7157 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
7158 WRAP_LDFLAGS="${WRAP_LDFLAGS} $withval")
7160 dnl ========================================================
7161 dnl = Use JS Call tracing
7162 dnl ========================================================
7163 MOZ_ARG_ENABLE_BOOL(trace-jscalls,
7164 [ --enable-trace-jscalls Enable JS call enter/exit callback (default=no)],
7165 MOZ_TRACE_JSCALLS=1,
7166 MOZ_TRACE_JSCALLS= )
7167 if test -n "$MOZ_TRACE_JSCALLS"; then
7168 AC_DEFINE(MOZ_TRACE_JSCALLS)
7171 dnl ========================================================
7172 dnl = Use incremental GC
7173 dnl ========================================================
7175 MOZ_ARG_DISABLE_BOOL(gcincremental,
7176 [ --disable-gcincremental Disable incremental GC],
7178 if test -n "$JSGC_INCREMENTAL"; then
7179 AC_DEFINE(JSGC_INCREMENTAL)
7182 dnl ========================================================
7183 dnl ETW - Event Tracing for Windows
7184 dnl ========================================================
7185 MOZ_ARG_ENABLE_BOOL(ETW,
7186 [ --enable-ETW Enable ETW (Event Tracing for Windows) event reporting],
7189 if test -n "$MOZ_ETW"; then
7193 if test -n "$MOZ_ETW"; then
7194 if test -z "$MOZ_WINSDK_TARGETVER"; then
7195 AC_MSG_ERROR([--enable-ETW is only valid on Windows])
7199 dnl ========================================================
7200 dnl Zealous JavaScript GC
7201 dnl ========================================================
7202 MOZ_ARG_ENABLE_BOOL(gczeal,
7203 [ --enable-gczeal Enable zealous JavaScript GCing],
7206 if test -n "$JS_GC_ZEAL"; then
7207 AC_DEFINE(JS_GC_ZEAL)
7210 dnl ========================================================
7211 dnl JS opt-mode assertions and minidump instrumentation
7212 dnl ========================================================
7213 MOZ_ARG_ENABLE_BOOL(js-diagnostics,
7214 [ --enable-js-diagnostics
7215 Enable JS diagnostic assertions and breakpad data],
7216 JS_CRASH_DIAGNOSTICS=1,
7217 JS_CRASH_DIAGNOSTICS= )
7218 if test -n "$JS_CRASH_DIAGNOSTICS"; then
7219 AC_DEFINE(JS_CRASH_DIAGNOSTICS)
7224 dnl ========================================================
7225 dnl = Enable static checking using gcc-dehydra
7226 dnl ========================================================
7228 MOZ_ARG_WITH_STRING(static-checking,
7229 [ --with-static-checking=path/to/gcc_dehydra.so
7230 Enable static checking of code using GCC-dehydra],
7231 DEHYDRA_PATH=$withval,
7234 if test -n "$DEHYDRA_PATH"; then
7235 if test ! -f "$DEHYDRA_PATH"; then
7236 AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7238 AC_DEFINE(NS_STATIC_CHECKING)
7240 AC_SUBST(DEHYDRA_PATH)
7242 dnl ========================================================
7243 dnl = Enable stripping of libs & executables
7244 dnl ========================================================
7245 MOZ_ARG_ENABLE_BOOL(strip,
7246 [ --enable-strip Enable stripping of libs & executables ],
7250 dnl ========================================================
7251 dnl = Enable stripping of libs & executables when packaging
7252 dnl ========================================================
7253 MOZ_ARG_ENABLE_BOOL(install-strip,
7254 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
7258 dnl ========================================================
7259 dnl = --enable-elf-dynstr-gc
7260 dnl ========================================================
7261 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
7262 [ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
7263 USE_ELF_DYNSTR_GC=1,
7264 USE_ELF_DYNSTR_GC= )
7266 dnl ========================================================
7267 dnl = --disable-elf-hack
7268 dnl ========================================================
7271 MOZ_ARG_DISABLE_BOOL(elf-hack,
7272 [ --disable-elf-hack Disable elf hacks],
7276 # Disable elf hack for profiling because the built in profiler
7277 # doesn't read the segments properly with elf hack. This is
7278 # temporary and should be fixed soon in the profiler.
7279 if test "$MOZ_PROFILING" = 1; then
7283 # Only enable elfhack where supported
7284 if test "$USE_ELF_HACK" = 1; then
7285 case "${HOST_OS_ARCH},${OS_ARCH}" in
7287 case "${CPU_ARCH}" in
7302 if test "$USE_ELF_HACK" = 1; then
7303 dnl PT_GNU_RELRO segment makes the dynamic linker set a read-only flag on
7304 dnl memory addresses it maps to. The result is that by the time elfhack
7305 dnl kicks in, it is not possible to apply relocations because of that,
7306 dnl thus elfhack effectively skips relocations inside the PT_GNU_RELRO
7307 dnl segment. It makes elfhack mostly useless, so considering the problems
7308 dnl we have we PT_GNU_RELRO (e.g. bug 664366), and until elfhack can deal
7309 dnl with PT_GNU_RELRO segments, it's just simpler to disable elfhack when
7310 dnl the linker creates PT_GNU_RELRO segments.
7311 AC_CACHE_CHECK([whether linker creates PT_GNU_RELRO segments],
7312 LINK_WITH_PT_GNU_RELRO,
7313 [echo "int main() {return 0;}" > conftest.${ac_ext}
7314 if AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.${ac_ext} $LIBS 1>&2) &&
7315 test -s conftest${ac_exeext}; then
7316 if ${TOOLCHAIN_PREFIX}readelf -l conftest${ac_exeext} | grep GNU_RELRO > /dev/null; then
7317 LINK_WITH_PT_GNU_RELRO=yes
7319 LINK_WITH_PT_GNU_RELRO=no
7322 dnl We really don't expect to get here, but just in case
7323 AC_ERROR([couldn't compile a simple C file])
7326 if test "$LINK_WITH_PT_GNU_RELRO" = yes; then
7327 AC_MSG_WARN([Disabling elfhack])
7332 dnl ========================================================
7333 dnl = libstdc++ compatibility hacks
7334 dnl ========================================================
7337 MOZ_ARG_ENABLE_BOOL(stdcxx-compat,
7338 [ --enable-stdcxx-compat Enable compatibility with older libstdc++],
7341 AC_SUBST(STDCXX_COMPAT)
7343 if test -n "$STDCXX_COMPAT"; then
7344 eval $(CXX="$CXX" $PYTHON $_topsrcdir/build/autoconf/libstdcxx.py)
7345 AC_SUBST(MOZ_LIBSTDCXX_TARGET_VERSION)
7346 AC_SUBST(MOZ_LIBSTDCXX_HOST_VERSION)
7349 dnl ========================================================
7351 dnl = Profiling and Instrumenting
7353 dnl ========================================================
7354 MOZ_ARG_HEADER(Profiling and Instrumenting)
7356 dnl ========================================================
7357 dnl = Enable runtime visual profiling logger
7358 dnl ========================================================
7359 MOZ_ARG_ENABLE_BOOL(visual-event-tracer,
7360 [ --enable-visual-event-tracer Enable visual event tracer instrumentation],
7361 MOZ_VISUAL_EVENT_TRACER=1,
7362 MOZ_VISUAL_EVENT_TRACER=)
7363 if test -n "$MOZ_VISUAL_EVENT_TRACER"; then
7364 AC_DEFINE(MOZ_VISUAL_EVENT_TRACER)
7367 dnl ========================================================
7368 dnl Turn on reflow counting
7369 dnl ========================================================
7370 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7371 [ --enable-reflow-perf Enable reflow performance tracing],
7374 if test -n "$MOZ_REFLOW_PERF"; then
7375 AC_DEFINE(MOZ_REFLOW_PERF)
7378 dnl ========================================================
7379 dnl Enable code size metrics.
7380 dnl ========================================================
7381 MOZ_ARG_ENABLE_BOOL(codesighs,
7382 [ --enable-codesighs Enable code size analysis tools],
7383 _ENABLE_CODESIGHS=1,
7384 _ENABLE_CODESIGHS= )
7385 if test -n "$_ENABLE_CODESIGHS"; then
7386 if test -d $srcdir/tools/codesighs; then
7389 AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
7393 dnl ========================================================
7394 dnl = Enable Radio Interface for B2G (Gonk usually)
7395 dnl ========================================================
7396 MOZ_ARG_ENABLE_BOOL(b2g-ril,
7397 [ --enable-b2g-ril Set compile flags necessary for testing B2G Radio Interface Layer via network sockets ],
7400 if test -n "$MOZ_B2G_RIL"; then
7401 AC_DEFINE(MOZ_B2G_RIL)
7403 AC_SUBST(MOZ_B2G_RIL)
7405 dnl ========================================================
7406 dnl = Enable Radio FM for B2G (Gonk usually)
7407 dnl ========================================================
7408 if test -n "$MOZ_B2G_FM"; then
7409 AC_DEFINE(MOZ_B2G_FM)
7411 AC_SUBST(MOZ_B2G_FM)
7413 dnl ========================================================
7414 dnl = Enable Bluetooth Interface for B2G (Gonk usually)
7415 dnl ========================================================
7416 MOZ_ARG_ENABLE_BOOL(b2g-bt,
7417 [ --enable-b2g-bt Set compile flags necessary for compiling Bluetooth API for B2G ],
7420 if test -n "$MOZ_B2G_BT"; then
7421 AC_DEFINE(MOZ_B2G_BT)
7423 AC_SUBST(MOZ_B2G_BT)
7425 dnl ========================================================
7426 dnl = Enable Support for System Messages API
7427 dnl ========================================================
7428 if test -n "$MOZ_SYS_MSG"; then
7429 AC_DEFINE(MOZ_SYS_MSG)
7431 AC_SUBST(MOZ_SYS_MSG)
7433 dnl ========================================================
7434 dnl = Enable Camera Interface for B2G (Gonk usually)
7435 dnl ========================================================
7436 MOZ_ARG_ENABLE_BOOL(b2g-camera,
7437 [ --enable-b2g-camera Set compile flags necessary for compiling camera API for B2G ],
7440 if test -n "$MOZ_B2G_CAMERA"; then
7441 AC_DEFINE(MOZ_B2G_CAMERA)
7443 AC_SUBST(MOZ_B2G_CAMERA)
7445 dnl ========================================================
7446 dnl = Enable Support for Payment API
7447 dnl ========================================================
7448 if test -n "$MOZ_PAY"; then
7453 dnl ========================================================
7454 dnl = Support for demangling undefined symbols
7455 dnl ========================================================
7456 if test -z "$SKIP_LIBRARY_CHECKS"; then
7459 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7463 # Demangle only for debug or trace-malloc builds
7464 MOZ_DEMANGLE_SYMBOLS=
7465 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
7466 MOZ_DEMANGLE_SYMBOLS=1
7467 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7469 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7471 dnl ========================================================
7472 dnl = Support for gcc stack unwinding (from gcc 3.3)
7473 dnl ========================================================
7474 if test -z "$SKIP_LIBRARY_CHECKS"; then
7475 MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7478 dnl ========================================================
7480 dnl ========================================================
7482 MOZ_ARG_WITH_STRING(jitreport-granularity,
7483 [ --jitreport-granularity=N
7484 Default granularity at which to report JIT code
7487 1 - code ranges for whole functions only
7488 2 - per-line information
7489 3 - per-op information],
7490 JITREPORT_GRANULARITY=$withval,
7491 JITREPORT_GRANULARITY=3)
7493 AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY)
7495 dnl ========================================================
7499 dnl ========================================================
7500 MOZ_ARG_HEADER(Misc. Options)
7502 dnl ========================================================
7503 dnl update xterm title
7504 dnl ========================================================
7505 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7506 [ --enable-xterm-updates Update XTERM titles with current command.],
7510 dnl =========================================================
7512 dnl =========================================================
7513 MOZ_ARG_ENABLE_STRING([chrome-format],
7514 [ --enable-chrome-format=jar|flat|both|symlink|omni
7515 Select FORMAT of chrome files (default=jar)],
7516 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7518 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7519 MOZ_CHROME_FILE_FORMAT=jar
7522 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
7523 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7524 test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
7525 test "$MOZ_CHROME_FILE_FORMAT" != "both" &&
7526 test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7527 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, symlink, or omni])
7530 dnl =========================================================
7531 dnl Omnijar packaging (bug 552121)
7532 dnl =========================================================
7533 dnl Omnijar packaging is compatible with flat packaging.
7534 dnl In unpackaged builds, omnijar looks for files as if
7535 dnl things were flat packaged. After packaging, all files
7536 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7537 dnl is set to flat since putting files into jars is only
7538 dnl done during packaging with omnijar.
7539 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7541 AC_DEFINE(MOZ_OMNIJAR)
7542 if test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "OS2" -o "$OS_TARGET" = "Android"; then
7543 MOZ_CHROME_FILE_FORMAT=flat
7545 MOZ_CHROME_FILE_FORMAT=symlink
7547 elif test "$MOZ_CHROME_FILE_FORMAT" = "jar"; then
7548 AC_DEFINE(MOZ_CHROME_FILE_FORMAT_JAR)
7551 OMNIJAR_NAME=omni.ja
7552 AC_SUBST(OMNIJAR_NAME)
7553 AC_SUBST(MOZ_OMNIJAR)
7555 dnl ========================================================
7556 dnl = Define default location for MOZILLA_FIVE_HOME
7557 dnl ========================================================
7558 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7559 [ --with-default-mozilla-five-home
7560 Set the default value for MOZILLA_FIVE_HOME],
7561 [ val=`echo $withval`
7562 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7564 dnl ========================================================
7565 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7566 dnl ========================================================
7567 MOZ_ARG_WITH_STRING(user-appdir,
7568 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
7569 [ val=`echo $withval`
7570 if echo "$val" | grep "\/" >/dev/null; then
7571 AC_MSG_ERROR("Homedir must be single relative path.")
7576 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7578 dnl ========================================================
7579 dnl = Doxygen configuration
7580 dnl ========================================================
7581 dnl Use commas to specify multiple dirs to this arg
7582 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7583 MOZ_ARG_WITH_STRING(doc-input-dirs,
7584 [ --with-doc-input-dirs=DIRS
7585 Header/idl dirs to create docs from],
7586 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7587 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7589 dnl Use commas to specify multiple dirs to this arg
7590 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7591 MOZ_ARG_WITH_STRING(doc-include-dirs,
7592 [ --with-doc-include-dirs=DIRS
7593 Include dirs to preprocess doc headers],
7594 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7595 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7597 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7598 MOZ_ARG_WITH_STRING(doc-output-dir,
7599 [ --with-doc-output-dir=DIR
7600 Dir to generate docs into],
7601 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7602 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7604 if test -z "$SKIP_COMPILER_CHECKS"; then
7605 dnl ========================================================
7607 dnl = Compiler Options
7609 dnl ========================================================
7610 MOZ_ARG_HEADER(Compiler Options)
7612 dnl ========================================================
7613 dnl Check for gcc -pipe support
7614 dnl ========================================================
7615 AC_MSG_CHECKING([for -pipe support])
7616 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
7617 dnl Any gcc that supports firefox supports -pipe.
7618 CFLAGS="$CFLAGS -pipe"
7619 CXXFLAGS="$CXXFLAGS -pipe"
7620 AC_MSG_RESULT([yes])
7625 dnl ========================================================
7626 dnl Profile guided optimization (gcc checks)
7627 dnl ========================================================
7628 dnl Test for profiling options
7629 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
7631 _SAVE_CFLAGS="$CFLAGS"
7632 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
7634 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
7635 AC_TRY_COMPILE([], [return 0;],
7636 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
7637 result="yes" ], result="no")
7638 AC_MSG_RESULT([$result])
7640 if test $result = "yes"; then
7641 PROFILE_GEN_LDFLAGS="-fprofile-generate"
7642 PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch"
7643 PROFILE_USE_LDFLAGS="-fprofile-use"
7646 CFLAGS="$_SAVE_CFLAGS"
7648 if test -n "$INTEL_CC"; then
7649 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
7650 PROFILE_GEN_LDFLAGS=
7651 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
7652 PROFILE_USE_LDFLAGS=
7655 dnl Sun Studio on Solaris
7656 if test "$SOLARIS_SUNPRO_CC"; then
7657 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
7658 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7659 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7660 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7663 AC_SUBST(PROFILE_GEN_CFLAGS)
7664 AC_SUBST(PROFILE_GEN_LDFLAGS)
7665 AC_SUBST(PROFILE_USE_CFLAGS)
7666 AC_SUBST(PROFILE_USE_LDFLAGS)
7670 dnl ========================================================
7671 dnl Test for -pedantic bustage
7672 dnl ========================================================
7673 MOZ_ARG_DISABLE_BOOL(pedantic,
7674 [ --disable-pedantic Issue all warnings demanded by strict ANSI C ],
7676 if test "$_PEDANTIC"; then
7677 _SAVE_CXXFLAGS=$CXXFLAGS
7678 CXXFLAGS="$CXXFLAGS -pedantic ${_WARNINGS_CXXFLAGS} -Wno-long-long"
7679 AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
7680 AC_TRY_COMPILE([$configure_static_assert_macros],
7681 [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
7682 result="no", result="yes" )
7683 AC_MSG_RESULT([$result])
7684 CXXFLAGS="$_SAVE_CXXFLAGS"
7688 _WARNINGS_CFLAGS="-pedantic ${_WARNINGS_CFLAGS} -Wno-long-long"
7689 _WARNINGS_CXXFLAGS="-pedantic ${_WARNINGS_CXXFLAGS} -Wno-long-long"
7692 AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic. Reconfigure using --disable-pedantic. ])
7697 dnl ========================================================
7698 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7699 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7700 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
7701 dnl ========================================================
7702 _SAVE_CXXFLAGS=$CXXFLAGS
7703 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7704 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7705 ac_nscap_nonconst_opeq_bug,
7714 template <class T, class U>
7715 int operator==(const Pointer<T>& rhs, U* lhs)
7717 return rhs.myPtr == lhs;
7720 template <class T, class U>
7721 int operator==(const Pointer<T>& rhs, const U* lhs)
7723 return rhs.myPtr == lhs;
7731 ac_nscap_nonconst_opeq_bug="no",
7732 ac_nscap_nonconst_opeq_bug="yes")])
7733 CXXFLAGS="$_SAVE_CXXFLAGS"
7735 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7736 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7738 fi # ! SKIP_COMPILER_CHECKS
7740 AC_DEFINE(CPP_THROW_NEW, [throw()])
7743 if test "$COMPILE_ENVIRONMENT"; then
7745 fi # COMPILE_ENVIRONMENT
7747 dnl ========================================================
7749 dnl = Build depencency options
7751 dnl ========================================================
7752 MOZ_ARG_HEADER(Build dependencies)
7754 if test "$GNU_CC" -a "$GNU_CXX"; then
7755 _DEPEND_CFLAGS='$(filter-out %/.pp,-MD -MF $(MDDEPDIR)/$(@F).pp)'
7756 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7757 elif test "$SOLARIS_SUNPRO_CC"; then
7760 dnl Don't override this for MSVC
7761 if test -z "$_WIN32_MSVC"; then
7762 _USE_CPP_INCLUDE_FLAG=
7763 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7764 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7766 echo '#include <stdio.h>' > dummy-hello.c
7768 CL_INCLUDES_PREFIX=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/^\([^:]*:[^:]*:\).*stdio.h$/\1/p'`
7770 if test -z "$CL_INCLUDES_PREFIX"; then
7771 AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
7773 AC_SUBST(CL_INCLUDES_PREFIX)
7778 dnl ========================================================
7780 dnl = Static Build Options
7782 dnl ========================================================
7783 MOZ_ARG_HEADER(Static build options)
7785 # split JS out by default to avoid VS2005 PGO crash (bug 591836).
7786 if test "$OS_ARCH" = "WINNT" -a "$CPU_ARCH" != "x86_64" ; then
7790 MOZ_ARG_ENABLE_BOOL(shared-js,
7791 [ --enable-shared-js
7792 Create a shared JavaScript library.],
7796 if test -n "$ENABLE_SHARED_JS"; then
7798 MOZ_JS_LIBS="$MOZ_JS_SHARED_LIBS"
7800 MOZ_JS_LIBS="$MOZ_JS_STATIC_LIBS"
7801 AC_DEFINE(MOZ_STATIC_JS)
7803 AC_SUBST(JS_SHARED_LIBRARY)
7805 AC_SUBST(LIBXUL_LIBS)
7806 XPCOM_LIBS="$LIBXUL_LIBS"
7808 dnl ========================================================
7810 dnl = Standalone module options
7812 dnl ========================================================
7813 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7816 dnl ========================================================
7818 if test -z "$SKIP_PATH_CHECKS"; then
7819 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
7820 if test "$MOZ_ENABLE_GTK2" -o "$USE_ELF_DYNSTR_GC" ; then
7821 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7826 if test -z "${GLIB_GMODULE_LIBS}" \
7827 -a -n "${GLIB_CONFIG}"\
7828 -a "${GLIB_CONFIG}" != no\
7830 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7833 AC_SUBST(GLIB_CFLAGS)
7835 AC_SUBST(GLIB_GMODULE_LIBS)
7837 dnl ========================================================
7838 dnl Graphics checks.
7839 dnl ========================================================
7841 if test "${OS_TARGET}" = "WINNT" -o "${OS_ARCH}" = "Darwin" -o "${MOZ_WIDGET_TOOLKIT}" = "android" -o "${MOZ_WIDGET_TOOLKIT}" = "gtk2"; then
7847 MOZ_ARG_ENABLE_BOOL(skia,
7848 [ --enable-skia Enable use of Skia],
7852 if test "$USE_FC_FREETYPE"; then
7853 if test "$COMPILE_ENVIRONMENT"; then
7854 dnl ========================================================
7855 dnl = Check for freetype2 and its functionality
7856 dnl ========================================================
7857 PKG_CHECK_MODULES(FT2, freetype2 >= 6.1.0, _HAVE_FREETYPE2=1, _HAVE_FREETYPE2=)
7859 if test "$_HAVE_FREETYPE2"; then
7861 _SAVE_CFLAGS="$CFLAGS"
7862 LIBS="$LIBS $FT2_LIBS"
7863 CFLAGS="$CFLAGS $FT2_CFLAGS"
7865 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
7866 ac_cv_member_FT_Bitmap_Size_y_ppem,
7867 [AC_TRY_COMPILE([#include <ft2build.h>
7868 #include FT_FREETYPE_H],
7870 if (sizeof s.y_ppem) return 0;
7872 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
7873 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
7874 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
7875 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
7877 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
7879 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
7880 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
7881 [FT_Bitmap_Size structure includes y_ppem field])
7883 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
7886 CFLAGS="$_SAVE_CFLAGS"
7889 _SAVE_CPPFLAGS="$CPPFLAGS"
7890 CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
7891 MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
7892 [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
7893 CPPFLAGS="$_SAVE_CPPFLAGS"
7895 AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
7898 PKG_CHECK_MODULES(_FONTCONFIG, fontconfig,
7900 if test "$MOZ_PANGO"; then
7901 MOZ_PANGO_CFLAGS="$MOZ_PANGO_CFLAGS $_FONTCONFIG_CFLAGS"
7902 MOZ_PANGO_LIBS="$MOZ_PANGO_LIBS $_FONTCONFIG_LIBS"
7904 FT2_CFLAGS="$FT2_CFLAGS $_FONTCONFIG_CFLAGS"
7905 FT2_LIBS="$FT2_LIBS $_FONTCONFIG_LIBS"
7910 dnl ========================================================
7911 dnl Check for pixman and cairo
7912 dnl ========================================================
7915 MOZ_ARG_ENABLE_BOOL(system-cairo,
7916 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
7921 MOZ_ARG_ENABLE_BOOL(system-pixman,
7922 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
7924 MOZ_TREE_PIXMAN=force,
7927 # System cairo depends on system pixman
7928 if test "$MOZ_TREE_PIXMAN" = "force"; then
7929 if test -z "$MOZ_TREE_CAIRO"; then
7930 AC_MSG_ERROR([--disable-system-pixman is incompatible with --enable-system-cairo.])
7934 elif test -z "$MOZ_TREE_CAIRO"; then
7938 if test "$MOZ_TREE_PIXMAN"; then
7939 AC_DEFINE(MOZ_TREE_PIXMAN)
7940 MOZ_PIXMAN_CFLAGS=""
7941 MOZ_PIXMAN_LIBS='$(call EXPAND_LIBNAME_PATH,mozlibpixman,$(DEPTH)/gfx/cairo/libpixman/src)'
7943 PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.19.2)
7944 MOZ_PIXMAN_CFLAGS="$PIXMAN_CFLAGS"
7945 MOZ_PIXMAN_LIBS="$PIXMAN_LIBS"
7947 AC_SUBST(MOZ_PIXMAN_CFLAGS)
7948 AC_SUBST(MOZ_PIXMAN_LIBS)
7950 # Check for headers defining standard int types.
7951 MOZ_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
7953 if test "$MOZ_TREE_CAIRO"; then
7954 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
7955 AC_DEFINE(MOZ_TREE_CAIRO)
7957 # For now we assume that we will have a uint64_t available through
7958 # one of the above headers or mozstdint.h.
7959 AC_DEFINE(HAVE_UINT64_T)
7961 # Define macros for cairo-features.h
7962 TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
7963 if test "$MOZ_X11"; then
7964 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
7965 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
7966 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
7967 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7968 MOZ_ENABLE_CAIRO_FT=1
7969 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
7971 case "$MOZ_WIDGET_TOOLKIT" in
7973 QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
7976 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
7977 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
7978 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
7981 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
7982 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
7983 if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
7984 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
7985 WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
7986 MOZ_ENABLE_D2D_SURFACE=1
7987 MOZ_ENABLE_DWRITE_FONT=1
7989 WIN32_DWRITE_FONT_FEATURE=
7990 WIN32_D2D_SURFACE_FEATURE=
7993 MOZ_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
7995 dnl D3D10 Layers depend on D2D Surfaces.
7996 if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
7997 MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
8001 OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
8002 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8003 MOZ_ENABLE_CAIRO_FT=1
8004 CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
8005 CAIRO_FT_OSLIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
8009 if test "$USE_FC_FREETYPE"; then
8010 FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
8012 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
8013 AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
8014 AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
8015 AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
8016 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
8017 AC_SUBST(CAIRO_FT_CFLAGS)
8019 AC_SUBST(PS_SURFACE_FEATURE)
8020 AC_SUBST(PDF_SURFACE_FEATURE)
8021 AC_SUBST(SVG_SURFACE_FEATURE)
8022 AC_SUBST(XLIB_SURFACE_FEATURE)
8023 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
8024 AC_SUBST(QUARTZ_SURFACE_FEATURE)
8025 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
8026 AC_SUBST(WIN32_SURFACE_FEATURE)
8027 AC_SUBST(OS2_SURFACE_FEATURE)
8028 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
8029 AC_SUBST(FT_FONT_FEATURE)
8030 AC_SUBST(FC_FONT_FEATURE)
8031 AC_SUBST(WIN32_FONT_FEATURE)
8032 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
8033 AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
8034 AC_SUBST(QUARTZ_FONT_FEATURE)
8035 AC_SUBST(PNG_FUNCTIONS_FEATURE)
8036 AC_SUBST(QT_SURFACE_FEATURE)
8037 AC_SUBST(TEE_SURFACE_FEATURE)
8039 MOZ_CAIRO_LIBS='$(call EXPAND_LIBNAME_PATH,mozcairo,$(DEPTH)/gfx/cairo/cairo/src)'" $CAIRO_FT_LIBS"
8040 MOZ_CAIRO_OSLIBS='${CAIRO_FT_OSLIBS}'
8042 if test "$MOZ_X11"; then
8043 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
8046 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
8048 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION)
8049 MOZ_CAIRO_CFLAGS="$CAIRO_CFLAGS"
8050 MOZ_CAIRO_LIBS="$CAIRO_LIBS"
8051 PKG_CHECK_MODULES(CAIRO_TEE, cairo-tee >= $CAIRO_VERSION)
8052 if test "$MOZ_X11"; then
8053 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
8054 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
8055 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_LIBS"
8056 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
8060 AC_SUBST(MOZ_TREE_CAIRO)
8061 AC_SUBST(MOZ_CAIRO_CFLAGS)
8062 AC_SUBST(MOZ_CAIRO_LIBS)
8063 AC_SUBST(MOZ_CAIRO_OSLIBS)
8064 AC_SUBST(MOZ_TREE_PIXMAN)
8066 dnl ========================================================
8068 dnl ========================================================
8070 QCMS_LIBS='$(DEPTH)/gfx/qcms/$(LIB_PREFIX)mozqcms.$(LIB_SUFFIX)'
8073 dnl ========================================================
8075 dnl ========================================================
8076 MOZ_HARFBUZZ_LIBS='$(DEPTH)/gfx/harfbuzz/src/$(LIB_PREFIX)mozharfbuzz.$(LIB_SUFFIX)'
8077 AC_SUBST(MOZ_HARFBUZZ_LIBS)
8079 dnl ========================================================
8081 dnl ========================================================
8082 if test "$MOZ_GRAPHITE"; then
8083 MOZ_GRAPHITE_LIBS='$(DEPTH)/gfx/graphite2/src/$(LIB_PREFIX)mozgraphite2.$(LIB_SUFFIX)'
8084 AC_DEFINE(MOZ_GRAPHITE)
8088 AC_SUBST(MOZ_GRAPHITE)
8089 AC_SUBST(MOZ_GRAPHITE_LIBS)
8091 dnl ========================================================
8093 dnl ========================================================
8094 MOZ_OTS_LIBS='$(DEPTH)/gfx/ots/src/$(LIB_PREFIX)mozots.$(LIB_SUFFIX)'
8095 AC_SUBST(MOZ_OTS_LIBS)
8097 dnl ========================================================
8099 dnl ========================================================
8100 if test "$MOZ_ENABLE_SKIA"; then
8101 MOZ_SKIA_LIBS='$(DEPTH)/gfx/skia/$(LIB_PREFIX)skia.$(LIB_SUFFIX)'
8102 AC_DEFINE(MOZ_ENABLE_SKIA)
8106 AC_SUBST(MOZ_ENABLE_SKIA)
8107 AC_SUBST(MOZ_SKIA_LIBS)
8109 dnl ========================================================
8111 dnl ========================================================
8112 MOZ_ARG_DISABLE_BOOL(xul,
8113 [ --disable-xul Disable XUL],
8115 if test "$MOZ_XUL"; then
8118 dnl remove extensions that require XUL
8119 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8124 dnl ========================================================
8125 dnl disable profile locking
8126 dnl do no use this in applications that can have more than
8127 dnl one process accessing the profile directory.
8128 dnl ========================================================
8129 MOZ_ARG_DISABLE_BOOL(profilelocking,
8130 [ --disable-profilelocking
8131 Disable profile locking],
8132 MOZ_PROFILELOCKING=,
8133 MOZ_PROFILELOCKING=1 )
8134 if test "$MOZ_PROFILELOCKING"; then
8135 AC_DEFINE(MOZ_PROFILELOCKING)
8138 dnl ========================================================
8139 dnl necko configuration options
8140 dnl ========================================================
8143 dnl option to disable various necko protocols
8145 MOZ_ARG_ENABLE_STRING(necko-protocols,
8146 [ --enable-necko-protocols[={http,ftp,default,all,none}]
8147 Enable/disable specific protocol handlers],
8148 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8149 if test "$option" = "yes" -o "$option" = "all"; then
8150 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8151 elif test "$option" = "no" -o "$option" = "none"; then
8153 elif test "$option" = "default"; then
8154 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8155 elif test `echo "$option" | grep -c \^-` != 0; then
8156 option=`echo $option | sed 's/^-//'`
8157 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8159 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8162 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8164 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8165 AC_SUBST(NECKO_PROTOCOLS)
8166 for p in $NECKO_PROTOCOLS; do
8167 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8168 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_PROTOCOL_$p"
8172 dnl option to disable necko's wifi scanner
8174 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8175 [ --disable-necko-wifi Disable necko wifi scanner],
8179 if test "$OS_ARCH" = "OS2"; then
8180 dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
8183 if test "$NECKO_WIFI" -a \
8184 "$OS_ARCH" != "Linux" -a \
8185 "$OS_ARCH" != "Darwin" -a \
8186 "$OS_ARCH" != "SunOS" -a \
8187 "$OS_ARCH" != "WINNT"; then
8188 AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi])
8191 if test -z "$SKIP_LIBRARY_CHECKS" -a "$NECKO_WIFI" -a "$OS_ARCH" = "Linux"
8193 MOZ_CHECK_HEADER([iwlib.h])
8194 if test "$ac_cv_header_iwlib_h" != "yes"; then
8195 AC_MSG_ERROR([Can't find header iwlib.h for Necko WiFi scanning (might be in package libiw-dev (Ubuntu) or wireless-tools-devel (Fedora) or libiw-devel (openSUSE)); use --disable-necko-wifi to disable])
8199 if test "$NECKO_WIFI"; then
8200 AC_DEFINE(NECKO_WIFI)
8201 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
8203 AC_SUBST(NECKO_WIFI)
8206 dnl option to disable cookies
8208 MOZ_ARG_DISABLE_BOOL(cookies,
8209 [ --disable-cookies Disable cookie support],
8212 AC_SUBST(NECKO_COOKIES)
8213 if test "$NECKO_COOKIES"; then
8214 AC_DEFINE(NECKO_COOKIES)
8215 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
8219 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8221 MOZ_ARG_DISABLE_BOOL(ctypes,
8222 [ --disable-ctypes Disable js-ctypes],
8225 AC_SUBST(BUILD_CTYPES)
8226 if test "$BUILD_CTYPES"; then
8227 AC_DEFINE(BUILD_CTYPES)
8230 dnl Build Places if required
8231 if test "$MOZ_PLACES"; then
8232 AC_DEFINE(MOZ_PLACES)
8235 dnl Build Apps in the Cloud (AITC) if required
8236 AC_SUBST(MOZ_SERVICES_AITC)
8237 if test -n "$MOZ_SERVICES_AITC"; then
8238 AC_DEFINE(MOZ_SERVICES_AITC)
8241 dnl Build Notifications if required
8242 AC_SUBST(MOZ_SERVICES_NOTIFICATIONS)
8243 if test -n "$MOZ_SERVICES_NOTIFICATIONS"; then
8244 AC_DEFINE(MOZ_SERVICES_NOTIFICATIONS)
8247 dnl Build Sync Services if required
8248 AC_SUBST(MOZ_SERVICES_SYNC)
8249 if test -n "$MOZ_SERVICES_SYNC"; then
8250 AC_DEFINE(MOZ_SERVICES_SYNC)
8253 dnl ========================================================
8254 if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
8255 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8258 if test "$MOZ_APP_COMPONENT_INCLUDE"; then
8259 AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_INCLUDE, "$MOZ_APP_COMPONENT_INCLUDE")
8262 if test "$MOZ_APP_COMPONENT_MODULES"; then
8263 AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_MODULES, $MOZ_APP_COMPONENT_MODULES)
8266 dnl ========================================================
8268 dnl = Maintainer debug option (no --enable equivalent)
8270 dnl ========================================================
8275 AC_SUBST(AR_EXTRACT)
8279 AC_SUBST(AS_DASH_C_FLAG)
8288 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8289 AC_SUBST(MOZ_UPDATE_XTERM)
8290 AC_SUBST(MOZ_PLATFORM_MAEMO)
8291 AC_SUBST(MOZ_AUTH_EXTENSION)
8292 AC_SUBST(MOZ_PERMISSIONS)
8294 AC_SUBST(MOZ_PREF_EXTENSIONS)
8295 AC_SUBST(MOZ_JS_LIBS)
8298 AC_SUBST(MOZ_DEBUG_SYMBOLS)
8299 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
8300 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
8301 AC_SUBST(MOZ_DEBUG_FLAGS)
8302 AC_SUBST(MOZ_DEBUG_LDFLAGS)
8303 AC_SUBST(WARNINGS_AS_ERRORS)
8304 AC_SUBST(MOZ_EXTENSIONS)
8305 AC_SUBST(MOZ_JSDEBUGGER)
8306 AC_SUBST(MOZ_ENABLE_PROFILER_SPS)
8309 AC_SUBST(MOZ_CALLGRIND)
8312 AC_SUBST(MOZ_PROFILING)
8314 AC_SUBST(MOZ_PLACES)
8315 AC_SUBST(MOZ_TOOLKIT_SEARCH)
8317 AC_SUBST(NS_PRINTING)
8319 AC_SUBST(MOZ_HELP_VIEWER)
8320 AC_SUBST(TOOLCHAIN_PREFIX)
8326 AC_SUBST(MOZ_PROFILELOCKING)
8328 AC_SUBST(ENABLE_TESTS)
8329 AC_SUBST(ENABLE_MARIONETTE)
8331 AC_SUBST(MOZ_UNIVERSALCHARDET)
8332 AC_SUBST(ACCESSIBILITY)
8333 AC_SUBST(MOZ_SPELLCHECK)
8334 AC_SUBST(MOZ_ANDROID_OMTC)
8335 AC_SUBST(MOZ_ONLY_TOUCH_EVENTS)
8336 AC_SUBST(MOZ_CRASHREPORTER)
8337 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
8338 AC_SUBST(MOZ_MAINTENANCE_SERVICE)
8339 AC_SUBST(MOZ_STUB_INSTALLER)
8340 AC_SUBST(MOZ_VERIFY_MAR_SIGNATURE)
8341 AC_SUBST(MOZ_ENABLE_SIGNMAR)
8342 AC_SUBST(MOZ_UPDATER)
8343 AC_SUBST(MOZ_ANGLE_RENDERER)
8344 AC_SUBST(MOZ_DIRECTX_SDK_PATH)
8345 AC_SUBST(MOZ_DIRECTX_SDK_CPU_SUFFIX)
8346 AC_SUBST(MOZ_D3DX9_VERSION)
8347 AC_SUBST(MOZ_D3DX9_CAB)
8348 AC_SUBST(MOZ_D3DCOMPILER_CAB)
8349 AC_SUBST(MOZ_D3DX9_DLL)
8350 AC_SUBST(MOZ_D3DCOMPILER_DLL)
8353 AC_SUBST(MOZ_ANDROID_HISTORY)
8354 AC_SUBST(MOZ_WEBSMS_BACKEND)
8355 AC_SUBST(ENABLE_STRIP)
8356 AC_SUBST(PKG_SKIP_STRIP)
8357 AC_SUBST(STRIP_FLAGS)
8358 AC_SUBST(USE_ELF_DYNSTR_GC)
8359 AC_SUBST(USE_ELF_HACK)
8360 AC_SUBST(INCREMENTAL_LINKER)
8361 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
8362 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
8364 AC_SUBST(MOZ_FIX_LINK_PATHS)
8365 AC_SUBST(XPCOM_LIBS)
8366 AC_SUBST(XPCOM_FROZEN_LDOPTS)
8367 AC_SUBST(XPCOM_GLUE_LDOPTS)
8368 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
8369 AC_SUBST(XPCOM_STATICRUNTIME_GLUE_LDOPTS)
8370 AC_SUBST(XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS)
8372 AC_SUBST(USE_DEPENDENT_LIBS)
8374 AC_SUBST(MOZ_BUILD_ROOT)
8375 AC_SUBST(MOZ_OS2_TOOLS)
8377 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
8378 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
8379 AC_SUBST(MOZ_LINKER_EXTRACT)
8380 AC_SUBST(MOZ_PER_WINDOW_PRIVATE_BROWSING)
8382 dnl ========================================================
8383 dnl = Mac bundle name prefix
8384 dnl ========================================================
8385 MOZ_ARG_WITH_STRING(macbundlename-prefix,
8386 [ --with-macbundlename-prefix=prefix
8387 Prefix for MOZ_MACBUNDLE_NAME],
8388 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
8390 MOZ_MACBUNDLE_NAME=`echo $MOZ_APP_DISPLAYNAME | tr -d ' '`
8391 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
8392 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
8395 if test "$MOZ_DEBUG"; then
8396 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}Debug.app
8398 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
8400 AC_SUBST(MOZ_MACBUNDLE_NAME)
8402 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
8403 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr '[A-Z]' '[a-z]'`
8404 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
8405 if test "$MOZ_DEBUG"; then
8406 MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
8409 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
8410 AC_SUBST(MOZ_MACBUNDLE_ID)
8412 # The following variables are available to branding and application
8413 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
8414 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
8415 # impacts profile location and user-visible fields.
8416 # - MOZ_APP_BASENAME: Typically stays consistent for multiple branded
8417 # versions of a given application (e.g. Aurora and Firefox both use
8418 # "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used
8419 # for application.ini's "Name" field, which controls profile location in
8420 # the absence of a "Profile" field (see below), and various system
8421 # integration hooks (Unix remoting, Windows MessageWindow name, etc.)
8422 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
8423 # Mac Bundle name, Updater, Installer), it is typically used for nightly
8424 # builds (e.g. Aurora for Firefox).
8425 # - MOZ_APP_VERSION: Defines the application version number.
8426 # - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set,
8427 # defaults to a lowercase form of MOZ_APP_BASENAME.
8428 # - MOZ_APP_PROFILE: When set, used for application.ini's
8429 # "Profile" field, which controls profile location.
8430 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
8431 # crash reporter server url.
8432 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
8433 # - MOZ_EXTENSION_MANAGER: When set, enabled extension manager.
8435 if test -z "$MOZ_APP_NAME"; then
8436 MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
8439 # For extensions and langpacks, we require a max version that is compatible
8440 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
8441 # 10.0a1 and 10.0a2 aren't affected
8442 # 10.0 becomes 10.0.*
8443 # 10.0.1 becomes 10.0.*
8444 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
8445 if test -z "$IS_ALPHA"; then
8447 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*.[0-9]*\).*|\1|"`.*
8450 MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
8453 MOZ_B2G_VERSION=${MOZ_B2G_VERSION:-"1.0.0"}
8454 AC_DEFINE_UNQUOTED(MOZ_B2G_VERSION,"$MOZ_B2G_VERSION")
8456 AC_SUBST(MOZ_APP_NAME)
8457 AC_SUBST(MOZ_APP_DISPLAYNAME)
8458 AC_SUBST(MOZ_APP_BASENAME)
8459 AC_SUBST(MOZ_APP_VENDOR)
8460 AC_SUBST(MOZ_APP_PROFILE)
8461 AC_SUBST(MOZ_APP_ID)
8462 AC_SUBST(MAR_CHANNEL_ID)
8463 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
8464 AC_SUBST(MOZ_PROFILE_MIGRATOR)
8465 AC_SUBST(MOZ_EXTENSION_MANAGER)
8466 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
8467 AC_SUBST(MOZ_APP_UA_NAME)
8468 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
8469 AC_SUBST(MOZ_APP_VERSION)
8470 AC_SUBST(MOZ_APP_MAXVERSION)
8471 AC_DEFINE_UNQUOTED(FIREFOX_VERSION,$FIREFOX_VERSION)
8472 AC_SUBST(FIREFOX_VERSION)
8473 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
8474 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
8475 AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
8478 # We can't use the static application.ini data when building against
8480 if test -n "$LIBXUL_SDK"; then
8483 AC_SUBST(MOZ_APP_STATIC_INI)
8485 AC_SUBST(MOZ_PKG_SPECIAL)
8487 AC_SUBST(MOZILLA_OFFICIAL)
8489 if test "$MOZ_TELEMETRY_REPORTING"; then
8490 AC_DEFINE(MOZ_TELEMETRY_REPORTING)
8494 AC_SUBST(MOZ_MAPINFO)
8495 AC_SUBST(MOZ_BROWSE_INFO)
8496 AC_SUBST(MOZ_TOOLS_DIR)
8497 AC_SUBST(WIN32_REDIST_DIR)
8500 dnl Echo the CFLAGS to remove extra whitespace.
8506 $_WARNINGS_CXXFLAGS \
8509 COMPILE_CFLAGS=`echo \
8514 COMPILE_CXXFLAGS=`echo \
8515 $_DEFINES_CXXFLAGS \
8519 AC_SUBST(SYSTEM_LIBXUL)
8520 AC_SUBST(MOZ_NATIVE_JPEG)
8521 AC_SUBST(MOZ_NATIVE_PNG)
8522 AC_SUBST(MOZ_NATIVE_BZ2)
8524 AC_SUBST(MOZ_FLEXBOX)
8525 AC_SUBST(MOZ_JPEG_CFLAGS)
8526 AC_SUBST(MOZ_JPEG_LIBS)
8527 AC_SUBST(MOZ_BZ2_CFLAGS)
8528 AC_SUBST(MOZ_BZ2_LIBS)
8529 AC_SUBST(MOZ_PNG_CFLAGS)
8530 AC_SUBST(MOZ_PNG_LIBS)
8532 AC_SUBST(NSPR_CFLAGS)
8534 AC_SUBST(MOZ_NATIVE_NSPR)
8536 AC_SUBST(NSS_CFLAGS)
8538 AC_SUBST(NSS_DEP_LIBS)
8539 AC_SUBST(MOZ_NATIVE_NSS)
8540 AC_SUBST(NSS_DISABLE_DBM)
8543 OS_CXXFLAGS="$CXXFLAGS"
8544 OS_CPPFLAGS="$CPPFLAGS"
8545 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
8546 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
8547 OS_LDFLAGS="$LDFLAGS"
8550 AC_SUBST(OS_CXXFLAGS)
8551 AC_SUBST(OS_CPPFLAGS)
8552 AC_SUBST(OS_COMPILE_CFLAGS)
8553 AC_SUBST(OS_COMPILE_CXXFLAGS)
8554 AC_SUBST(OS_LDFLAGS)
8556 AC_SUBST(CROSS_COMPILE)
8557 AC_SUBST(WCHAR_CFLAGS)
8561 AC_SUBST(HOST_CFLAGS)
8562 AC_SUBST(HOST_CXXFLAGS)
8563 AC_SUBST(HOST_LDFLAGS)
8564 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8566 AC_SUBST(HOST_AR_FLAGS)
8568 AC_SUBST(HOST_RANLIB)
8569 AC_SUBST(HOST_NSPR_MDCPUCFG)
8570 AC_SUBST(HOST_BIN_SUFFIX)
8571 AC_SUBST(HOST_OS_ARCH)
8573 AC_SUBST(TARGET_CPU)
8574 AC_SUBST(TARGET_VENDOR)
8576 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8577 AC_SUBST(TARGET_MD_ARCH)
8578 AC_SUBST(TARGET_XPCOM_ABI)
8581 AC_SUBST(OS_RELEASE)
8584 AC_SUBST(INTEL_ARCHITECTURE)
8586 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8588 AC_SUBST(WRAP_LDFLAGS)
8591 AC_SUBST(MKSHLIB_FORCE_ALL)
8592 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8593 AC_SUBST(DSO_CFLAGS)
8594 AC_SUBST(DSO_PIC_CFLAGS)
8595 AC_SUBST(DSO_LDOPTS)
8596 AC_SUBST(LIB_PREFIX)
8597 AC_SUBST(DLL_PREFIX)
8598 AC_SUBST(DLL_SUFFIX)
8599 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8600 AC_SUBST(LIB_SUFFIX)
8601 AC_SUBST(OBJ_SUFFIX)
8602 AC_SUBST(BIN_SUFFIX)
8603 AC_SUBST(ASM_SUFFIX)
8604 AC_SUBST(IMPORT_LIB_SUFFIX)
8606 AC_SUBST(CC_VERSION)
8607 AC_SUBST(CXX_VERSION)
8608 AC_SUBST(MSMANIFEST_TOOL)
8609 AC_SUBST(NS_ENABLE_TSF)
8610 AC_SUBST(MOZ_NSS_PATCH)
8611 AC_SUBST(MOZ_APP_COMPONENT_LIBS)
8612 AC_SUBST(MOZ_APP_EXTRA_LIBS)
8615 AC_SUBST(MOZ_SYDNEYAUDIO)
8616 AC_SUBST(MOZ_SPEEX_RESAMPLER)
8619 AC_SUBST(MOZ_VORBIS)
8620 AC_SUBST(MOZ_TREMOR)
8624 AC_SUBST(MOZ_MEDIA_PLUGINS)
8625 AC_SUBST(MOZ_OMX_PLUGIN)
8626 AC_SUBST(MOZ_VP8_ERROR_CONCEALMENT)
8627 AC_SUBST(MOZ_VP8_ENCODER)
8630 AC_SUBST(MOZ_ALSA_LIBS)
8631 AC_SUBST(MOZ_ALSA_CFLAGS)
8633 AC_SUBST(VPX_ASFLAGS)
8634 AC_SUBST(VPX_DASH_C_FLAG)
8635 AC_SUBST(VPX_AS_CONVERSION)
8636 AC_SUBST(VPX_ASM_SUFFIX)
8637 AC_SUBST(VPX_X86_ASM)
8638 AC_SUBST(VPX_ARM_ASM)
8639 AC_SUBST(VPX_NEED_OBJ_INT_EXTRACT)
8640 AC_SUBST(MOZ_INSTRUMENT_EVENT_LOOP)
8641 AC_SUBST(LIBJPEG_TURBO_AS)
8642 AC_SUBST(LIBJPEG_TURBO_ASFLAGS)
8643 AC_SUBST(LIBJPEG_TURBO_X86_ASM)
8644 AC_SUBST(LIBJPEG_TURBO_X64_ASM)
8645 AC_SUBST(LIBJPEG_TURBO_ARM_ASM)
8647 AC_SUBST(MOZ_PACKAGE_JSSHELL)
8649 AC_MSG_CHECKING([for posix_fallocate])
8650 AC_TRY_LINK([#define _XOPEN_SOURCE 600
8651 #include <fcntl.h>],
8652 [posix_fallocate(0, 0, 0);],
8653 [ac_cv___posix_fallocate=true],
8654 [ac_cv___posix_fallocate=false])
8656 if test "$ac_cv___posix_fallocate" = true ; then
8657 AC_DEFINE(HAVE_POSIX_FALLOCATE)
8663 dnl Check for missing components
8664 if test "$COMPILE_ENVIRONMENT"; then
8665 if test "$MOZ_X11"; then
8666 if test "$WITHOUT_X11"; then
8667 AC_MSG_ERROR([--without-x specified and MOZ_X11 still defined])
8669 dnl ====================================================
8670 dnl = Check if X headers exist
8671 dnl ====================================================
8672 _SAVE_CFLAGS=$CFLAGS
8673 CFLAGS="$CFLAGS $XCFLAGS"
8677 #include <X11/Xlib.h>
8678 #include <X11/Intrinsic.h>
8679 #include <X11/extensions/XShm.h>
8683 if ((dpy = XOpenDisplay(NULL)) == NULL) {
8684 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8688 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8689 CFLAGS="$_SAVE_CFLAGS"
8691 if test -n "$MISSING_X"; then
8692 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8697 dnl Check for headers, etc. needed by WebGL.
8698 if test "$MOZ_GL_DEFAULT_PROVIDER" = "GLX"; then
8699 MOZ_CHECK_HEADER(GL/glx.h)
8700 if test "$ac_cv_header_GL_glx_h" != "yes"; then
8701 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))])
8703 fi # MOZ_GL_DEFAULT_PROVIDER=GLX
8704 fi # COMPILE_ENVIRONMENT
8706 dnl Set various defines and substitutions
8707 dnl ========================================================
8709 if test "$OS_ARCH" = "Darwin"; then
8711 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2"; then
8715 if test "$MOZ_DEBUG"; then
8716 AC_DEFINE(MOZ_REFLOW_PERF)
8717 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8720 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8721 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8722 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8723 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8724 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8725 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8726 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8727 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8728 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8731 AC_SUBST(MOZILLA_VERSION)
8733 AC_SUBST(ac_configure_args)
8735 dnl Spit out some output
8736 dnl ========================================================
8738 dnl The following defines are used by xpcom
8739 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8741 HAVE_CPP_2BYTE_WCHAR_T
8742 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8744 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8745 HAVE_CPP_PARTIAL_SPECIALIZATION
8746 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8747 NEED_CPP_UNUSED_IMPLEMENTATIONS
8751 HAVE_ICONV_WITH_CONST_INPUT
8765 netwerk/necko-config.h
8766 xpcom/xpcom-config.h
8767 xpcom/xpcom-private.h
8770 # Hack around an Apple bug that affects the egrep that comes with OS X 10.7.
8771 # "env ARCHPREFERENCE=i386,x86_64 arch egrep" first tries to use the 32-bit
8772 # Intel part of the egrep fat binary, even on 64-bit systems, and falls back on
8773 # the 64-bit part if it's not a fat binary, as can happen with MacPorts. We
8774 # (apparently) only need this hack when egrep's "pattern" is particularly long
8775 # (as in the following code) and the first egrep on our $PATH is Apple's. See
8779 FIXED_EGREP="env ARCHPREFERENCE=i386,x86_64 arch egrep"
8786 dnl Create a virtualenv where we can install local Python packages
8787 AC_MSG_RESULT([Creating Python virtualenv])
8789 mkdir -p _virtualenv
8790 MACOSX_DEPLOYMENT_TARGET= PYTHONDONTWRITEBYTECODE= $PYTHON $_topsrcdir/python/virtualenv/virtualenv.py --system-site-packages ./_virtualenv
8793 PYTHON=$MOZ_BUILD_ROOT/_virtualenv/Scripts/python.exe
8796 PYTHON=$MOZ_BUILD_ROOT/_virtualenv/bin/python
8802 dnl Populate the virtualenv
8804 dnl We always use the version Python was compiled with to ensure that compiled
8805 dnl extensions work properly. This works around a bug in Python. See also
8806 dnl http://bugs.python.org/issue9516 and bug 659881.
8808 dnl Please note that this assumes nothing built during virtualenv population is
8809 dnl shipped as part of a release package. If it does ship, binaries built here
8810 dnl may not be compatible with the minimum supported OS X version.
8811 osx_deployment_target_system=
8813 if test $python_version_major -ne 2; then
8814 AC_MSG_ERROR([Assertion failed: building with Python 2.])
8817 dnl sysconfig is only present on Python 2.7 and above.
8818 if test $python_version_minor -ge 7; then
8819 osx_deployment_target_system=`$PYTHON -c 'import sysconfig; print sysconfig.get_config_var("MACOSX_DEPLOYMENT_TARGET")'`
8822 AC_MSG_RESULT([Populating Python virtualenv])
8823 MACOSX_DEPLOYMENT_TARGET=$osx_deployment_target_system \
8824 LDFLAGS="${HOST_LDFLAGS}" \
8825 CC="${HOST_CC}" CXX="${HOST_CXX}" \
8826 CFLAGS="${HOST_CFLAGS}" CXXFLAGS="${HOST_CXXFLAGS}" \
8827 $PYTHON $_topsrcdir/build/virtualenv/populate_virtualenv.py \
8828 $_topsrcdir $_topsrcdir/build/virtualenv/packages.txt \
8831 dnl Load the list of Makefiles to generate.
8832 dnl To add new Makefiles, edit allmakefiles.sh.
8833 dnl allmakefiles.sh sets the variable, MAKEFILES.
8834 . ${srcdir}/allmakefiles.sh
8836 echo $MAKEFILES > unallmakefiles
8838 AC_OUTPUT($MAKEFILES)
8840 # Generate Makefiles for WebRTC directly from .gyp files
8841 if test "${OS_TARGET}" = "WINNT"; then
8842 if test "$HAVE_64BIT_OS"; then
8847 EXTRA_GYP_DEFINES="-D MSVS_VERSION=${_MSVS_VERSION} -D MSVS_OS_BITS=${OS_BITS}"
8850 if test -n "$MOZ_WEBRTC"; then
8851 AC_MSG_RESULT("generating WebRTC Makefiles...")
8853 WEBRTC_CONFIG="-D build_with_mozilla=1 --include ${srcdir}/media/webrtc/webrtc_config.gypi"
8855 GYP_WEBRTC_OPTIONS="--format=mozmake ${WEBRTC_CONFIG} ${EXTRA_GYP_DEFINES} --depth=${srcdir}/media/webrtc/trunk --toplevel-dir=${srcdir} -G OBJDIR=${_objdir}"
8857 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
8858 $GYP_WEBRTC_OPTIONS \
8859 --generator-output=${_objdir}/media/webrtc/trunk \
8860 ${srcdir}/media/webrtc/trunk/peerconnection.gyp
8861 if test "$?" != 0; then
8862 AC_MSG_ERROR([failed to generate WebRTC Makefiles])
8865 # XXX disable until we land the tranche with signaling
8866 if test -n "$MOZ_WEBRTC_SIGNALING"; then
8867 AC_MSG_RESULT("generating WebRTC/Signaling Makefiles...")
8868 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
8869 $GYP_WEBRTC_OPTIONS \
8870 -D build_for_test=0 \
8871 --generator-output=${_objdir}/media/webrtc/signaling \
8872 ${srcdir}/media/webrtc/signaling/signaling.gyp
8873 if test "$?" != 0; then
8874 AC_MSG_ERROR([failed to generate WebRTC/Signaling Makefiles])
8877 AC_MSG_RESULT("generating WebRTC/SignalingTest Makefiles...")
8878 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
8879 $GYP_WEBRTC_OPTIONS \
8880 -D build_for_test=1 \
8881 --generator-output=${_objdir}/media/webrtc/signalingtest \
8882 ${srcdir}/media/webrtc/signaling/signaling.gyp
8883 if test "$?" != 0; then
8884 AC_MSG_ERROR([failed to generate WebRTC/SignalingTest Makefiles])
8888 AC_MSG_RESULT("generating gtest Makefiles...")
8889 # Ok to pass some extra -D's that are ignored here
8890 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
8891 $GYP_WEBRTC_OPTIONS \
8892 --generator-output=${_objdir}/media/webrtc/trunk/testing/ \
8893 ${srcdir}/media/webrtc/trunk/testing/gtest.gyp
8894 if test "$?" != 0; then
8895 AC_MSG_ERROR([failed to generate gtest Makefiles])
8898 AC_MSG_RESULT("generating nrappkit Makefiles...")
8899 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
8900 $GYP_WEBRTC_OPTIONS \
8901 --generator-output=${_objdir}/media/mtransport/third_party/nrappkit \
8902 ${srcdir}/media/mtransport/third_party/nrappkit/nrappkit.gyp
8903 if test "$?" != 0; then
8904 AC_MSG_ERROR([failed to generate nrappkit Makefiles])
8907 AC_MSG_RESULT("generating nICEr Makefiles...")
8908 $PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
8909 $GYP_WEBRTC_OPTIONS \
8910 --generator-output=${_objdir}/media/mtransport/third_party/nICEr \
8911 ${srcdir}/media/mtransport/third_party/nICEr/nicer.gyp
8912 if test "$?" != 0; then
8913 AC_MSG_ERROR([failed to generate nICEr Makefiles])
8917 # Generate a JSON config file for unittest harnesses etc to read
8918 # build configuration details from in a standardized way.
8919 OS_TARGET=${OS_TARGET} \
8920 TARGET_CPU=${TARGET_CPU} \
8921 MOZ_DEBUG=${MOZ_DEBUG} \
8922 MOZ_WIDGET_TOOLKIT=${MOZ_WIDGET_TOOLKIT} \
8923 UNIVERSAL_BINARY=${UNIVERSAL_BINARY} \
8924 MOZ_CRASHREPORTER=${MOZ_CRASHREPORTER} \
8925 $PYTHON ${_topsrcdir}/config/writemozinfo.py ./mozinfo.json.tmp
8926 if cmp -s ./mozinfo.json.tmp ./mozinfo.json; then
8927 rm ./mozinfo.json.tmp
8929 mv -f ./mozinfo.json.tmp ./mozinfo.json
8932 # Run jemalloc configure script
8934 if test "$MOZ_JEMALLOC" -a "$MOZ_MEMORY"; then
8935 ac_configure_args="$_SUBDIR_CONFIG_ARGS --build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_"
8936 if test "$OS_ARCH" = "Linux"; then
8937 MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size"
8940 if test -n "$_WRAP_MALLOC"; then
8941 JEMALLOC_WRAPPER=__wrap_
8943 for mangle in ${MANGLE}; do
8944 if test -n "$MANGLED"; then
8945 MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle,$MANGLED"
8947 MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle"
8950 ac_configure_args="$ac_configure_args --with-mangling=$MANGLED"
8953 if test -z "$MOZ_TLS"; then
8954 ac_configure_args="$ac_configure_args --disable-tls"
8956 EXTRA_CFLAGS="$CFLAGS"
8957 for var in AS CC CXX CPP LD AR RANLIB STRIP CPPFLAGS EXTRA_CFLAGS LDFLAGS; do
8958 ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
8960 if test "$CROSS_COMPILE"; then
8961 ac_configure_args="$ac_configure_args je_cv_static_page_shift=12"
8963 _save_cache_file="$cache_file"
8964 cache_file=$_objdir/memory/jemalloc/src/config.cache
8965 AC_OUTPUT_SUBDIRS(memory/jemalloc/src)
8966 cache_file="$_save_cache_file"
8967 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8970 dnl Build libunwind for Android profiling builds
8971 if test "$OS_TARGET" = "Android" -a "$MOZ_PROFILING"; then
8972 old_ac_configure_arg="$ac_configure_args"
8973 ac_configure_args="--build=${build} --host=${target_alias} --disable-shared --enable-block-signals=no"
8974 if test "$MOZ_DEBUG"; then
8975 ac_configure_args="$ac_configure_args --enable-debug"
8977 if test "$DSO_PIC_CFLAGS"; then
8978 ac_configure_args="$ac_configure_args --with-pic"
8980 ac_configure_args="$ac_configure_args \
8984 CFLAGS=\"$CFLAGS\" \
8985 CXXFLAGS=\"$CXXFLAGS\" \
8986 CPPFLAGS=\"$CPPFLAGS\" \
8988 LDFLAGS=\"$LDFLAGS\" \
8990 RANLIB=\"$RANLIB\" \
8994 # Use a separate cache file for libunwind, since it does not use caching.
8995 mkdir -p $_objdir/tools/profiler/libunwind/src
8996 old_cache_file=$cache_file
8997 cache_file=$_objdir/tools/profiler/libunwind/src/config.cache
8998 old_config_files=$CONFIG_FILES
9000 AC_OUTPUT_SUBDIRS(tools/profiler/libunwind/src)
9001 cache_file=$old_cache_file
9002 ac_configure_args="$old_ac_configure_args"
9003 CONFIG_FILES=$old_config_files
9006 # Run freetype configure script
9008 if test "$MOZ_TREE_FREETYPE"; then
9009 export CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS -std=c99"
9010 export CPPFLAGS="$CPPFLAGS $MOZ_DEBUG_FLAGS"
9011 export CXXFLAGS="$CXXFLAGS $MOZ_DEBUG_FLAGS"
9012 export LDFLAGS="$LDFLAGS $MOZ_DEBUG_LDFLAGS"
9013 export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in"
9014 ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes"
9015 AC_OUTPUT_SUBDIRS(modules/freetype2)
9018 if test -z "$direct_nspr_config"; then
9019 dnl ========================================================
9020 dnl = Setup a nice relatively clean build environment for
9021 dnl = sub-configures.
9022 dnl ========================================================
9025 CFLAGS="$_SUBDIR_CFLAGS"
9026 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9027 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9028 LDFLAGS="$_SUBDIR_LDFLAGS"
9029 HOST_CC="$_SUBDIR_HOST_CC"
9030 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9031 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9038 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9039 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9043 if test -n "$_WRAP_MALLOC"; then
9044 # Avoid doubling wrap malloc arguments
9045 _SUBDIR_CONFIG_ARGS="`echo $_SUBDIR_CONFIG_ARGS | sed -e 's/--enable-wrap-malloc *//'`"
9048 if test -z "$MOZ_NATIVE_NSPR"; then
9049 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9050 if test -z "$MOZ_DEBUG"; then
9051 ac_configure_args="$ac_configure_args --disable-debug"
9053 ac_configure_args="$ac_configure_args --enable-debug"
9055 if test "$MOZ_OPTIMIZE" = "1"; then
9056 ac_configure_args="$ac_configure_args --enable-optimize"
9057 elif test -z "$MOZ_OPTIMIZE"; then
9058 ac_configure_args="$ac_configure_args --disable-optimize"
9060 if test -n "$HAVE_64BIT_OS"; then
9061 ac_configure_args="$ac_configure_args --enable-64bit"
9063 if test -n "$USE_ARM_KUSER"; then
9064 ac_configure_args="$ac_configure_args --with-arm-kuser"
9066 ac_configure_args="$ac_configure_args $NSPR_CONFIGURE_ARGS"
9067 if test -n "$MOZ_LINKER" -a -z "$MOZ_OLD_LINKER" -a "$ac_cv_func_dladdr" = no ; then
9068 # dladdr is supported by the new linker, even when the system linker doesn't
9069 # support it. Trick nspr into using dladdr when it's not supported.
9070 _SAVE_CPPFLAGS="$CPPFLAGS"
9071 export CPPFLAGS="-include $_topsrcdir/mozglue/linker/dladdr.h $CPPFLAGS"
9073 _SAVE_LDFLAGS="$LDFLAGS"
9074 export LDFLAGS="$LDFLAGS $NSPR_LDFLAGS"
9075 AC_OUTPUT_SUBDIRS(nsprpub)
9076 LDFLAGS="$_SAVE_LDFLAGS"
9077 if test -n "$MOZ_LINKER" -a -z "$MOZ_OLD_LINKER" -a "$ac_cv_func_dladdr" = no; then
9079 CPPFLAGS="$_SAVE_CFLAGS"
9081 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9084 dnl ========================================================
9085 dnl = Setup a nice relatively clean build environment for
9086 dnl = sub-configures.
9087 dnl ========================================================
9090 CFLAGS="$_SUBDIR_CFLAGS"
9091 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9092 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9093 LDFLAGS="$_SUBDIR_LDFLAGS"
9094 HOST_CC="$_SUBDIR_HOST_CC"
9095 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9096 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9099 # Run the SpiderMonkey 'configure' script.
9100 dist=$MOZ_BUILD_ROOT/dist
9101 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9102 ac_configure_args="$ac_configure_args --enable-threadsafe"
9103 if test "$BUILD_CTYPES"; then
9104 # Build js-ctypes on the platforms we can.
9105 ac_configure_args="$ac_configure_args --enable-ctypes"
9107 if test -z "$JS_SHARED_LIBRARY" ; then
9108 ac_configure_args="$ac_configure_args --disable-shared-js"
9110 if test -z "$MOZ_NATIVE_NSPR"; then
9111 ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9112 ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9114 ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
9115 ac_configure_args="$ac_configure_args --prefix=$dist"
9116 if test "$MOZ_MEMORY"; then
9117 ac_configure_args="$ac_configure_args --enable-jemalloc"
9119 if test -n "$MOZ_GLUE_LDFLAGS"; then
9120 export MOZ_GLUE_LDFLAGS
9122 if test -n "$MOZ_GLUE_PROGRAM_LDFLAGS"; then
9123 export MOZ_GLUE_PROGRAM_LDFLAGS
9125 if test "$MOZ_NATIVE_ZLIB" != 1 -a "$OS_ARCH" = "WINNT"; then
9128 export MOZ_NATIVE_ZLIB
9129 export MOZ_ZLIB_CFLAGS
9130 export MOZ_ZLIB_LIBS
9132 export STLPORT_CPPFLAGS
9133 export STLPORT_LDFLAGS
9135 AC_OUTPUT_SUBDIRS(js/src)
9136 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9138 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR