From b03a3ad4da572d25c18f488b67a5778d14e10ad0 Mon Sep 17 00:00:00 2001 From: Mike Hommey Date: Tue, 23 Feb 2016 09:42:40 +0900 Subject: [PATCH] Bug 1250294 - Make configure a Python script that invokes the old configure.sh. r=ted --- Makefile.in | 12 +- build/subconfigure.py | 17 +- client.mk | 2 + configure.in | 9198 +-------------------------------------- configure.py | 90 + js/src/configure.in | 3686 +--------------- js/src/old-configure.in | 3672 ++++++++++++++++ old-configure.in | 9184 ++++++++++++++++++++++++++++++++++++++ 8 files changed, 13008 insertions(+), 12853 deletions(-) create mode 100644 configure.py create mode 100644 js/src/old-configure.in create mode 100644 old-configure.in diff --git a/Makefile.in b/Makefile.in index 43d3c6732227..a7c3d47560c2 100644 --- a/Makefile.in +++ b/Makefile.in @@ -66,19 +66,19 @@ CLOBBER: $(topsrcdir)/CLOBBER @exit 1 endif -$(topsrcdir)/configure: $(topsrcdir)/configure.in -$(topsrcdir)/js/src/configure: $(topsrcdir)/js/src/configure.in +$(topsrcdir)/configure: $(topsrcdir)/configure.in $(topsrcdir)/old-configure.in +$(topsrcdir)/js/src/configure: $(topsrcdir)/js/src/configure.in $(topsrcdir)/js/src/old-configure.in $(topsrcdir)/configure $(topsrcdir)/js/src/configure: - @echo 'STOP! $^ has changed, and your configure is out of date.' + @echo 'STOP! $? has changed, and your configure is out of date.' @echo 'Please rerun autoconf and re-configure your build directory.' @echo 'To ignore this message, touch "$@",' @echo 'but your build might not succeed.' @exit 1 -config.status: $(configure_dir)/configure -js/src/config.status: $(topsrcdir)/js/src/configure +config.status: $(configure_dir)/configure $(configure_dir)/old-configure +js/src/config.status: $(topsrcdir)/js/src/configure $(topsrcdir)/js/src/old-configure config.status js/src/config.status: - @echo 'STOP! $^ has changed and needs to be run again.' + @echo 'STOP! $? has changed and needs to be run again.' @echo 'Please rerun it.' @echo 'To ignore this message, touch "$(CURDIR)/$@",' @echo 'but your build might not succeed.' diff --git a/build/subconfigure.py b/build/subconfigure.py index 3383933a5787..e91c66aeb43e 100644 --- a/build/subconfigure.py +++ b/build/subconfigure.py @@ -303,7 +303,22 @@ def run(objdir): relobjdir = os.path.relpath(objdir, os.getcwd()) if not skip_configure: - command = [data['shell'], configure] + if mozpath.normsep(relobjdir) == 'js/src': + # Because configure is a shell script calling a python script + # calling a shell script, on Windows, with msys screwing the + # environment, we lose the benefits from our own efforts in this + # script to get past the msys problems. So manually call the python + # script instead, so that we don't do a native->msys transition + # here. Then the python configure will still have the right + # environment when calling the shell configure. + command = [ + sys.executable, + os.path.join(os.path.dirname(__file__), '..', 'configure.py'), + ] + data['env']['OLD_CONFIGURE'] = os.path.join( + os.path.dirname(configure), 'old-configure') + else: + command = [data['shell'], configure] for kind in ('target', 'build', 'host'): if data.get(kind) is not None: command += ['--%s=%s' % (kind, data[kind])] diff --git a/client.mk b/client.mk index dd82f21c72d6..bbcfa6f9a30e 100644 --- a/client.mk +++ b/client.mk @@ -291,8 +291,10 @@ CONFIG_CACHE = $(wildcard $(OBJDIR)/config.cache) EXTRA_CONFIG_DEPS := \ $(TOPSRCDIR)/aclocal.m4 \ + $(TOPSRCDIR)/old-configure.in \ $(wildcard $(TOPSRCDIR)/build/autoconf/*.m4) \ $(TOPSRCDIR)/js/src/aclocal.m4 \ + $(TOPSRCDIR)/js/src/old-configure.in \ $(NULL) $(CONFIGURES): %: %.in $(EXTRA_CONFIG_DEPS) diff --git a/configure.in b/configure.in index 4b5cd0f69bdf..418f4f799362 100644 --- a/configure.in +++ b/configure.in @@ -1,9184 +1,24 @@ -dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*- -dnl vi: set tabstop=4 shiftwidth=4 expandtab syntax=m4: dnl This Source Code Form is subject to the terms of the Mozilla Public dnl License, v. 2.0. If a copy of the MPL was not distributed with this dnl file, You can obtain one at http://mozilla.org/MPL/2.0/. - -dnl Process this file with autoconf to produce a configure script. -dnl ======================================================== - -AC_PREREQ(2.13) -AC_INIT(config/config.mk) -AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf) -AC_CANONICAL_SYSTEM -TARGET_CPU="${target_cpu}" -TARGET_VENDOR="${target_vendor}" -TARGET_OS="${target_os}" - -dnl ======================================================== -dnl = -dnl = Don't change the following two lines. Doing so breaks: -dnl = -dnl = CFLAGS="-foo" ./configure -dnl = -dnl ======================================================== -CFLAGS="${CFLAGS=}" -CPPFLAGS="${CPPFLAGS=}" -CXXFLAGS="${CXXFLAGS=}" -LDFLAGS="${LDFLAGS=}" -HOST_CFLAGS="${HOST_CFLAGS=}" -HOST_CXXFLAGS="${HOST_CXXFLAGS=}" -HOST_LDFLAGS="${HOST_LDFLAGS=}" -RUSTFLAGS="${RUSTFLAGS=}" - -dnl ======================================================== -dnl = Preserve certain environment flags passed to configure -dnl = We want sub projects to receive the same flags -dnl = untainted by this configure script -dnl ======================================================== -_SUBDIR_CC="$CC" -_SUBDIR_CXX="$CXX" -_SUBDIR_CFLAGS="$CFLAGS" -_SUBDIR_CPPFLAGS="$CPPFLAGS" -_SUBDIR_CXXFLAGS="$CXXFLAGS" -_SUBDIR_LDFLAGS="$LDFLAGS" -_SUBDIR_HOST_CC="$HOST_CC" -_SUBDIR_HOST_CFLAGS="$HOST_CFLAGS" -_SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS" -_SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS" -_SUBDIR_CONFIG_ARGS="$ac_configure_args" - -dnl Set the version number of the libs included with mozilla -dnl ======================================================== -MOZJPEG=62 -MOZPNG=10619 -NSPR_VERSION=4 -NSPR_MINVER=4.12 -NSS_VERSION=3 - -dnl Set the minimum version of toolkit libs used by mozilla -dnl ======================================================== -GLIB_VERSION=2.22 -# 2_26 is the earliest version we can set GLIB_VERSION_MIN_REQUIRED. -# The macro won't be used when compiling with earlier versions anyway. -GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26 -GIO_VERSION=2.22 -PERL_VERSION=5.006 -CAIRO_VERSION=1.10 -PANGO_VERSION=1.22.0 -GTK2_VERSION=2.18.0 -GTK3_VERSION=3.4.0 -GDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_4 -WINDRES_VERSION=2.14.90 -W32API_VERSION=3.14 -GNOMEUI_VERSION=2.2.0 -GCONF_VERSION=1.2.1 -STARTUP_NOTIFICATION_VERSION=0.8 -DBUS_VERSION=0.60 -SQLITE_VERSION=3.10.2 -FONTCONFIG_VERSION=2.7.0 - -MSMANIFEST_TOOL= - -dnl Set various checks -dnl ======================================================== -MISSING_X= -AC_PROG_AWK - -dnl Initialize the Pthread test variables early so they can be -dnl overridden by each platform. -dnl ======================================================== -MOZ_USE_PTHREADS= -_PTHREAD_LDFLAGS="" - -dnl Do not allow objdir == srcdir builds. -dnl ============================================================== -_topsrcdir=`cd \`dirname $0\`; pwd -W 2>/dev/null || pwd -P` -_objdir=`pwd -P` - -if test "$_topsrcdir" = "$_objdir"; then - echo " ***" - echo " * Building directly in the main source directory is not allowed." - echo " *" - echo " * To build, you must run configure from a separate directory" - echo " * (referred to as an object directory)." - echo " *" - echo " * If you are building with a mozconfig, you will need to change your" - echo " * mozconfig to point to a different object directory." - echo " ***" - exit 1 -fi - -# Check for a couple representative files in the source tree -_conflict_files= -for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do - if test -f $file; then - _conflict_files="$_conflict_files $file" - fi -done -if test "$_conflict_files"; then - echo "***" - echo "* Your source tree contains these files:" - for file in $_conflict_files; do - echo "* $file" - done - cat 1>&2 <<-EOF - * This indicates that you previously built in the source tree. - * A source tree build can confuse the separate objdir build. - * - * To clean up the source tree: - * 1. cd $_topsrcdir - * 2. gmake distclean - *** -EOF - exit 1 - break -fi -MOZ_BUILD_ROOT=`pwd -W 2>/dev/null || pwd -P` -DIST="$MOZ_BUILD_ROOT/dist" - -MOZ_PYTHON - -MOZ_DEFAULT_COMPILER - -COMPILE_ENVIRONMENT=1 -MOZ_ARG_DISABLE_BOOL(compile-environment, -[ --disable-compile-environment - Disable compiler/library checks.], - COMPILE_ENVIRONMENT= ) -AC_SUBST(COMPILE_ENVIRONMENT) - -MOZ_ARG_ENABLE_BOOL(artifact-builds, -[ --enable-artifact-builds - Download and use prebuilt binary artifacts.], - MOZ_ARTIFACT_BUILDS=1, - MOZ_ARTIFACT_BUILDS= ) -AC_SUBST(MOZ_ARTIFACT_BUILDS) - -if test -n "$MOZ_ARTIFACT_BUILDS"; then - dnl Artifact builds imply --disable-compile-environment. - COMPILE_ENVIRONMENT= -fi - -MOZ_BUILD_BACKEND(.) - -MOZ_ARG_WITH_STRING(l10n-base, -[ --with-l10n-base=DIR path to l10n repositories], - L10NBASEDIR=$withval) -if test -n "$L10NBASEDIR"; then - if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then - AC_MSG_ERROR([--with-l10n-base must specify a path]) - elif test -d "$L10NBASEDIR"; then - L10NBASEDIR=`cd "$L10NBASEDIR" && pwd -P` - else - AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist]) - fi -fi -AC_SUBST(L10NBASEDIR) - -dnl Check for Perl first -- needed for win32 SDK checks -MOZ_PATH_PROGS(PERL, $PERL perl5 perl ) -if test -z "$PERL" -o "$PERL" = ":"; then - AC_MSG_ERROR([perl not found in \$PATH]) -fi - -if test -n "$MOZTTDIR" -a ! -d "$MOZTTDIR" ; then - AC_MSG_ERROR([MOZTTDIR '$MOZTTDIR' isn't a valid directory]) -fi - -AC_SUBST(MOZTTDIR) -if test -n "$MOZTTDIR" ; then - AC_DEFINE(PACKAGE_MOZTT) -fi - -MOZ_ARG_WITH_STRING(gonk, -[ --with-gonk=DIR - location of gonk dir], - gonkdir=$withval) - -MOZ_ARG_WITH_STRING(gonk-toolchain-prefix, -[ --with-gonk-toolchain-prefix=DIR - prefix to gonk toolchain commands], - gonk_toolchain_prefix=$withval) - -if test -n "$gonkdir" ; then - kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"` - android_source="$gonkdir" - ANDROID_SOURCE="$android_source" - ANDROID_NDK="${ANDROID_SOURCE}/ndk" - dnl Default to ICS - ANDROID_VERSION=15 - if test -n "${PLATFORM_SDK_VERSION}"; then - ANDROID_VERSION="${PLATFORM_SDK_VERSION}" - fi - - dnl set up compilers - TOOLCHAIN_PREFIX="$gonk_toolchain_prefix" - AS="$gonk_toolchain_prefix"as - CC="$gonk_toolchain_prefix"gcc - CXX="$gonk_toolchain_prefix"g++ - CPP="$gonk_toolchain_prefix"cpp - LD="$gonk_toolchain_prefix"ld - AR="$gonk_toolchain_prefix"ar - RANLIB="$gonk_toolchain_prefix"ranlib - STRIP="$gonk_toolchain_prefix"strip - OBJCOPY="$gonk_toolchain_prefix"objcopy - - if ! test -e "$gonkdir/ndk/sources/cxx-stl/stlport/src/iostream.cpp"; then - AC_MSG_ERROR([Couldn't find path to stlport sources in the gonk tree]) - fi - STLPORT_CPPFLAGS="-I$_topsrcdir/build/stlport/stlport -I$gonkdir/ndk/sources/cxx-stl/system/include" - - case "$ANDROID_VERSION" in - 15) - GONK_INCLUDES="-I$gonkdir/frameworks/base/opengl/include -I$gonkdir/frameworks/base/native/include -I$gonkdir/frameworks/base/include -I$gonkdir/frameworks/base/services/camera -I$gonkdir/frameworks/base/include/media/ -I$gonkdir/frameworks/base/include/media/stagefright -I$gonkdir/frameworks/base/include/media/stagefright/openmax -I$gonkdir/frameworks/base/media/libstagefright/rtsp -I$gonkdir/frameworks/base/media/libstagefright/include -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib -I$gonkdir/dalvik/libnativehelper/include/nativehelper" - MOZ_B2G_BT=1 - MOZ_B2G_BT_BLUEZ=1 - MOZ_NFC=1 - MOZ_B2G_CAMERA=1 - MOZ_OMX_DECODER=1 - AC_SUBST(MOZ_OMX_DECODER) - MOZ_RTSP=1 - MOZ_FMP4=1 - MOZ_SECUREELEMENT=1 - ;; - 17|18) - GONK_INCLUDES="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include -I$gonkdir/external/mdnsresponder/mDNSShared" - if test -d "$gonkdir/external/bluetooth/bluez"; then - GONK_INCLUDES="$GONK_INCLUDES -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib" - MOZ_B2G_BT=1 - MOZ_B2G_BT_BLUEZ=1 - elif test -d "$gonkdir/system/bluetoothd"; then - MOZ_B2G_BT=1 - MOZ_B2G_BT_DAEMON=1 - fi - - MOZ_RTSP=1 - MOZ_NFC=1 - MOZ_B2G_CAMERA=1 - MOZ_OMX_DECODER=1 - AC_SUBST(MOZ_OMX_DECODER) - MOZ_OMX_ENCODER=1 - AC_SUBST(MOZ_OMX_ENCODER) - AC_DEFINE(MOZ_OMX_ENCODER) - MOZ_FMP4=1 - MOZ_SECUREELEMENT=1 - ;; - 19) - GONK_INCLUDES="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include -I$gonkdir/external/mdnsresponder/mDNSShared" - MOZ_B2G_CAMERA=1 - if test -d "$gonkdir/system/bluetoothd"; then - MOZ_B2G_BT=1 - MOZ_B2G_BT_DAEMON=1 - fi - MOZ_NFC=1 - MOZ_RTSP=1 - MOZ_OMX_DECODER=1 - MOZ_OMX_ENCODER=1 - AC_DEFINE(MOZ_OMX_ENCODER) - MOZ_AUDIO_OFFLOAD=1 - MOZ_SECUREELEMENT=1 - AC_SUBST(MOZ_AUDIO_OFFLOAD) - AC_DEFINE(MOZ_AUDIO_OFFLOAD) - MOZ_FMP4=1 - ;; - 21|22) - GONK_INCLUDES="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include -I$gonkdir/external/mdnsresponder/mDNSShared" - MOZ_AUDIO_OFFLOAD=1 - MOZ_OMX_DECODER=1 - MOZ_OMX_ENCODER=1 - AC_DEFINE(MOZ_OMX_ENCODER) - AC_SUBST(MOZ_AUDIO_OFFLOAD) - AC_DEFINE(MOZ_AUDIO_OFFLOAD) - MOZ_FMP4=1 - MOZ_B2G_CAMERA=1 - if test -d "$gonkdir/system/bluetoothd"; then - MOZ_B2G_BT=1 - MOZ_B2G_BT_DAEMON=1 - fi - MOZ_NFC=1 - MOZ_RTSP=1 - ;; - *) - AC_MSG_ERROR([Unsupported platform version: $ANDROID_VERSION]) - ;; - esac - CPPFLAGS="-DANDROID $TARGET_C_INCLUDES -I$gonkdir/system -I$gonkdir/system/core/include -isystem $gonkdir/bionic -I$gonkdir/hardware/libhardware/include -I$gonkdir/external/valgrind/fxos-include $GONK_INCLUDES $CPPFLAGS" - CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS" - CXXFLAGS="-mandroid -fno-short-enums -fno-exceptions -Wno-psabi $CXXFLAGS $STLPORT_CPPFLAGS" - dnl Add -llog by default, since we use it all over the place. - LIBS="$LIBS -llog" - - 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" - - dnl prevent cross compile section from using these flags as host flags - if test -z "$HOST_CPPFLAGS" ; then - HOST_CPPFLAGS=" " - fi - if test -z "$HOST_CFLAGS" ; then - HOST_CFLAGS=" " - fi - if test -z "$HOST_CXXFLAGS" ; then - HOST_CXXFLAGS=" " - fi - if test -z "$HOST_LDFLAGS" ; then - HOST_LDFLAGS=" " - fi - - AC_DEFINE(ANDROID) - AC_DEFINE_UNQUOTED(ANDROID_VERSION, $ANDROID_VERSION) - AC_SUBST(ANDROID_VERSION) - AC_DEFINE(HAVE_SYS_UIO_H) - AC_DEFINE(HAVE_PTHREADS) - MOZ_CHROME_FILE_FORMAT=omni - direct_nspr_config=1 - android_cxx_stl=mozstlport -else - if test "$COMPILE_ENVIRONMENT"; then - MOZ_ANDROID_NDK - fi # COMPILE_ENVIRONMENT - - case "$target" in - *-android*|*-linuxandroid*) - MOZ_CHROME_FILE_FORMAT=omni - ZLIB_DIR=yes - AC_DEFINE(ANDROID) - ;; - *-linux*) - AC_PATH_PROG(OBJCOPY,objcopy) - ;; - esac -fi - -case "$target" in -*-apple-darwin*) - MOZ_IOS_SDK - ;; -esac - -AC_SUBST(ANDROID_SOURCE) -AC_SUBST(ANDROID_PACKAGE_NAME) -AC_SUBST(OBJCOPY) - -dnl ======================================================== -dnl Checks for compilers. -dnl ======================================================== - -dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269) -AR_FLAGS='crs $@' - -if test -z "$COMPILE_ENVIRONMENT"; then -if test "$target" != "$host"; then -# Assert that we're cross compiling, but don't require a compile toolchain (as -# MOZ_CROSS_COMPILER does below). -CROSS_COMPILE=1 -AC_DEFINE(CROSS_COMPILE) -fi -fi # !COMPILE_ENVIRONMENT - -if test "$COMPILE_ENVIRONMENT"; then - -if test "$target" != "$host"; then - MOZ_CROSS_COMPILER -else - AC_PROG_CC - case "$target" in - *-mingw*) - # Work around the conftest.exe access problem on Windows - sleep 2 - esac - AC_PROG_CXX - AC_PROG_RANLIB - MOZ_PATH_PROGS(AS, $AS as, $CC) - AC_CHECK_PROGS(AR, ar, :) - AC_CHECK_PROGS(LD, ld, :) - AC_CHECK_PROGS(STRIP, strip, :) - AC_CHECK_PROGS(WINDRES, windres, :) - AC_CHECK_PROGS(OTOOL, otool, :) - if test -z "$HOST_CC"; then - HOST_CC="$CC" - fi - if test -z "$HOST_CFLAGS"; then - HOST_CFLAGS="$CFLAGS" - fi - if test -z "$HOST_CXX"; then - HOST_CXX="$CXX" - fi - if test -z "$HOST_CXXFLAGS"; then - HOST_CXXFLAGS="$CXXFLAGS" - fi - if test -z "$HOST_LDFLAGS"; then - HOST_LDFLAGS="$LDFLAGS" - fi - if test -z "$HOST_RANLIB"; then - HOST_RANLIB="$RANLIB" - fi - if test -z "$HOST_AR"; then - HOST_AR="$AR" - fi - if test -z "$HOST_AR_FLAGS"; then - HOST_AR_FLAGS="$AR_FLAGS" - fi -fi - -if test -n "$MOZ_WINCONSOLE"; then - AC_DEFINE(MOZ_WINCONSOLE) -fi - -MOZ_TOOL_VARIABLES - -MOZ_CHECK_COMPILER_WRAPPER - -MOZ_RUST_SUPPORT - -dnl ======================================================== -dnl Check for MacOS deployment target version -dnl ======================================================== - -MOZ_ARG_ENABLE_STRING(macos-target, - [ --enable-macos-target=VER (default=10.6) - Set the minimum MacOS version needed at runtime], - [_MACOSX_DEPLOYMENT_TARGET=$enableval]) - -case "$target" in -*-darwin*) - if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then - dnl Use the specified value - export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET - else - dnl No value specified on the command line or in the environment, - dnl use architecture minimum. - export MACOSX_DEPLOYMENT_TARGET=10.6 - fi - ;; -esac - -AC_SUBST(MACOSX_DEPLOYMENT_TARGET) - -AC_PROG_CPP -AC_PROG_CXXCPP - -dnl ======================================================== -dnl Special win32 checks -dnl ======================================================== - -# Target the Windows 8.1 SDK by default -WINSDK_TARGETVER=603 -WINVER=502 - -MOZ_ARG_WITH_STRING(windows-version, -[ --with-windows-version=WINSDK_TARGETVER - Windows SDK version to target. Win8.1 (603) is - currently the minimum supported version.], - WINSDK_TARGETVER=$withval) - -# Currently only version 603 is allowed -case "$WINSDK_TARGETVER" in -603) - MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000 - ;; - -*) - AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER)]); - ;; -esac - -case "$target" in -*-mingw*) - if test "$GCC" != "yes"; then - # Check to see if we are really running in a msvc environemnt - _WIN32_MSVC=1 - AC_CHECK_PROGS(MIDL, midl) - - # Make sure compilers are valid - CFLAGS="$CFLAGS -TC -nologo" - CXXFLAGS="$CXXFLAGS -TP -nologo" - AC_LANG_SAVE - AC_LANG_C - AC_TRY_COMPILE([#include ], - [ printf("Hello World\n"); ],, - AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) ) - - AC_LANG_CPLUSPLUS - AC_TRY_COMPILE([#include ], - [ unsigned *test = new unsigned(42); ],, - AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) ) - AC_LANG_RESTORE - - changequote(,) - _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p' - changequote([,]) - - # Determine compiler version - _CC_MAJOR_VERSION=`echo ${MSVC_VERSION_FULL} | cut -c 1-2` - _CC_MINOR_VERSION=`echo ${MSVC_VERSION_FULL} | cut -c 3-4` - _CC_BUILD_VERSION=`echo ${MSVC_VERSION_FULL} | cut -c 5-` - _MSC_VER=${CC_VERSION} - - _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | cut -c 1-2` - - if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then - AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.]) - fi - - AC_DEFINE(_CRT_SECURE_NO_WARNINGS) - AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS) - AC_DEFINE(_USE_MATH_DEFINES) # Otherwise MSVC's math.h doesn't #define M_PI. - - if test "$_CC_MAJOR_VERSION" = "18" -a "$_CC_BUILD_VERSION" -ge "30723"; then - _CC_SUITE=12 - MSVS_VERSION=2013 - MSVC_C_RUNTIME_DLL=msvcr120.dll - MSVC_CXX_RUNTIME_DLL=msvcp120.dll - elif test "$_CC_MAJOR_VERSION" = "19" -a "$_CC_BUILD_VERSION" -ge "23506"; then - _CC_SUITE=14 - MSVS_VERSION=2015 - MSVC_C_RUNTIME_DLL=vcruntime140.dll - MSVC_CXX_RUNTIME_DLL=msvcp140.dll - - # -Wv:18 disables all warnings introduced after VS2013 - # See http://blogs.msdn.com/b/vcblog/archive/2014/11/12/improvements-to-warnings-in-the-c-compiler.aspx - CFLAGS="$CFLAGS -Wv:18" - CXXFLAGS="$CXXFLAGS -Wv:18" - - # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146) - CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-" - - # Disable C++11 thread-safe statics due to crashes on XP (bug 1204752) - # See https://connect.microsoft.com/VisualStudio/feedback/details/1789709/visual-c-2015-runtime-broken-on-windows-server-2003-c-11-magic-statics - CXXFLAGS="$CXXFLAGS -Zc:threadSafeInit-" - - # https://connect.microsoft.com/VisualStudio/feedback/details/888527/warnings-on-dbghelp-h - # for dbghelp.h, imagehlp.h, and shobj.h - # C4091: 'typedef ': ignored on left of '' when no variable is declared - CFLAGS="$CFLAGS -wd4091" - CXXFLAGS="$CXXFLAGS -wd4091" - - if test -n "$WIN_UCRT_REDIST_DIR"; then - if test ! -d "$WIN_UCRT_REDIST_DIR"; then - AC_MSG_ERROR([Invalid Windows UCRT Redist directory: ${WIN_UCRT_REDIST_DIR}]) - fi - WIN_UCRT_REDIST_DIR=`cd "$WIN_UCRT_REDIST_DIR" && pwd` - fi - else - AC_MSG_ERROR([This version (${_CC_MAJOR_VERSION}.${_CC_MINOR_VERSION}.${_CC_BUILD_VERSION}) of the MSVC compiler is unsupported. -You must install Visual C++ 2013 Update 3, Visual C++ 2015 Update 1, or newer in order to build. -See https://developer.mozilla.org/en/Windows_Build_Prerequisites.]) - fi - AC_SUBST(MSVS_VERSION) - AC_SUBST(MSVC_C_RUNTIME_DLL) - AC_SUBST(MSVC_CXX_RUNTIME_DLL) - - AC_DEFINE(HAVE_SEH_EXCEPTIONS) - - if test -n "$WIN32_REDIST_DIR"; then - if test ! -d "$WIN32_REDIST_DIR"; then - AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}]) - fi - WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd` - fi - - dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool', - dnl not something else like "magnetic tape manipulation utility". - MSMT_TOOL=`${MT-mt} 2>&1|grep 'Microsoft (R) Manifest Tool'` - if test -z "$MSMT_TOOL"; then - AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.]) - fi - - changequote(,) - _MSMT_VER_FILTER='s|.*[^!-~]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p' - changequote([,]) - MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"` - if test -z "$MSMANIFEST_TOOL_VERSION"; then - AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.]) - fi - - MSMANIFEST_TOOL=1 - unset MSMT_TOOL - - # Check linker version - _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"` - _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'` - if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then - AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.]) - fi - - INCREMENTAL_LINKER=1 - - # Set midl environment - case "$target" in - i*86-*) - MIDL_FLAGS="${MIDL_FLAGS} -env win32" - ;; - x86_64-*) - MIDL_FLAGS="${MIDL_FLAGS} -env x64" - ;; - esac - - unset _MSVC_VER_FILTER - - AC_CACHE_CHECK(for overridable _RAISE, - ac_cv_have__RAISE, - [ - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - _SAVE_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0" - AC_TRY_COMPILE([#include - #undef _RAISE - #define _RAISE(x) externallyDefinedFunction((x).what()) - #include - ], - [std::vector v; return v.at(1);], - ac_cv_have__RAISE="no", - ac_cv_have__RAISE="yes") - CXXFLAGS="$_SAVE_CXXFLAGS" - AC_LANG_RESTORE - ]) - if test "$ac_cv_have__RAISE" = "yes"; then - WRAP_STL_INCLUDES=1 - MOZ_MSVC_STL_WRAP_RAISE=1 - AC_DEFINE(MOZ_MSVC_STL_WRAP_RAISE) - else - AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK. Please file a bug describing this error and your build configuration.]) - fi - - if test "$WRAP_STL_INCLUDES" = "1"; then - STL_FLAGS="-I${DIST}/stl_wrappers" - fi - CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0" - CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0" - else - # Check w32api version - _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'` - _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'` - AC_MSG_CHECKING([for w32api version >= $W32API_VERSION]) - AC_TRY_COMPILE([#include ], - #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \ - (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \ - __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION) - #error "test failed." - #endif - , [ res=yes ], [ res=no ]) - AC_MSG_RESULT([$res]) - if test "$res" != "yes"; then - AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.]) - fi - # Check windres version - AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION]) - _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'` - AC_MSG_RESULT([$_WINDRES_VERSION]) - _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'` - _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'` - _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'` - WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'` - WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'` - WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'` - if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \ - "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \ - "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \ - "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \ - "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \ - "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION" - then - AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.]) - fi - - AC_CHECK_PROGS(MIDL, $target-widl widl) - if test -n "$MIDL"; then - case "$target" in - i*86-*) - MIDL_FLAGS="$MIDL_FLAGS --win32 -m32" - ;; - x86_64-*) - MIDL_FLAGS="$MIDL_FLAGS --win64 -m64" - ;; - esac - fi - - # strsafe.h on mingw uses macros for function deprecation that pollutes namespace - # causing problems with local implementations with the same name. - AC_DEFINE(STRSAFE_NO_DEPRECATE) - fi # !GNU_CC - - MOZ_FIND_WINSDK_VERSION - AC_DEFINE_UNQUOTED(WINVER,0x$WINVER) - AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER) - # Require OS features provided by IE 6.0 SP2 (XP SP2) - AC_DEFINE_UNQUOTED(_WIN32_IE,0x0603) - - # If the maximum version supported by this SDK is lower than the target - # version, error out - AC_MSG_CHECKING([for Windows SDK being recent enough]) - if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then - AC_MSG_RESULT("yes") - else - AC_MSG_RESULT("no") - 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.]) - fi - - AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER) - AC_DEFINE_UNQUOTED(MOZ_WINSDK_MAXVER,$MOZ_WINSDK_MAXVER) - AC_SUBST(MOZ_WINSDK_MAXVER) - ;; -esac - -if test -n "$_WIN32_MSVC"; then - SKIP_PATH_CHECKS=1 - SKIP_COMPILER_CHECKS=1 - SKIP_LIBRARY_CHECKS=1 - - # Since we're skipping compiler and library checks, hard-code - # some facts here. - AC_DEFINE(HAVE_IO_H) - AC_DEFINE(HAVE_SETBUF) - AC_DEFINE(HAVE_ISATTY) -fi - -fi # COMPILE_ENVIRONMENT - -AC_SUBST(MIDL_FLAGS) -AC_SUBST(_MSC_VER) - -AC_SUBST(GNU_AS) -AC_SUBST(GNU_LD) -AC_SUBST(GNU_CC) -AC_SUBST(GNU_CXX) -AC_SUBST(INTEL_CC) -AC_SUBST(INTEL_CXX) - -AC_SUBST(STL_FLAGS) -AC_SUBST(WRAP_STL_INCLUDES) -AC_SUBST(MOZ_MSVC_STL_WRAP_RAISE) - -dnl ======================================================== -dnl Checks for programs. -dnl ======================================================== -AC_PROG_INSTALL -AC_PROG_LN_S - -AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION]) -_perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5` -_perl_res=$? -AC_MSG_RESULT([$_perl_version]) - -if test "$_perl_res" != 0; then - AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.]) -fi - -AC_MSG_CHECKING([for full perl installation]) -_perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5` -_perl_res=$? -if test "$_perl_res" != 0; then - AC_MSG_RESULT([no]) - AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.]) -else - AC_MSG_RESULT([yes]) -fi - -if test -z "$COMPILE_ENVIRONMENT"; then - NSINSTALL_BIN='$(PYTHON) $(MOZILLA_DIR)/config/nsinstall.py' -fi -AC_SUBST(NSINSTALL_BIN) - -MOZ_PATH_PROG(DOXYGEN, doxygen, :) -MOZ_PATH_PROG(AUTOCONF, autoconf, :) -MOZ_PATH_PROGS(UNZIP, unzip) -if test -z "$UNZIP" -o "$UNZIP" = ":"; then - AC_MSG_ERROR([unzip not found in \$PATH]) -fi -MOZ_PATH_PROGS(ZIP, zip) -if test -z "$ZIP" -o "$ZIP" = ":"; then - AC_MSG_ERROR([zip not found in \$PATH]) -fi -MOZ_PATH_PROG(XARGS, xargs) -if test -z "$XARGS" -o "$XARGS" = ":"; then - AC_MSG_ERROR([xargs not found in \$PATH .]) -fi - -MOZ_PATH_PROG(RPMBUILD, rpmbuild, :) -AC_SUBST(RPMBUILD) - -MOZ_PATH_PROG(GENISOIMAGE, genisoimage, :) -MOZ_PATH_PROG(DSYMUTIL, dsymutil, llvm-dsymutil :) - -if test "$COMPILE_ENVIRONMENT"; then - -dnl ======================================================== -dnl = Mac OS X toolchain support -dnl ======================================================== - -dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk -dnl that a universal binary is being produced and MOZ_CAN_RUN_PROGRAMS -dnl when we can run target binaries. -AC_SUBST(UNIVERSAL_BINARY) -AC_SUBST(MOZ_CAN_RUN_PROGRAMS) - -MOZ_ARG_WITH_STRING(unify-dist, -[ --with-unify-dist=dir Location of the dist directory to unify with at packaging time (Mac OS X universal build only)], - UNIFY_DIST=$withval) -if test -n "$UNIVERSAL_BINARY"; then - if test -z "$UNIFY_DIST"; then - AC_MSG_ERROR([You need to provide the --with-unify-dist=dir argument when performing a universal build]) - fi - case "$UNIFY_DIST" in - /*) - ;; - *) - UNIFY_DIST="${MOZ_BUILD_ROOT}/${UNIFY_DIST}" - ;; - esac -fi -AC_SUBST(UNIFY_DIST) - -dnl ======================================================== -dnl = Mac OS X SDK support -dnl ======================================================== -MACOS_SDK_DIR= -MOZ_ARG_WITH_STRING(macos-sdk, -[ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)], - MACOS_SDK_DIR=$withval) - -MACOS_PRIVATE_FRAMEWORKS_DIR_DEFAULTED= -MOZ_ARG_WITH_STRING(macos-private-frameworks, -[ --with-macos-private-frameworks=dir Location of private frameworks to use (Mac OS X only)], - MACOS_PRIVATE_FRAMEWORKS_DIR=$withval, - MACOS_PRIVATE_FRAMEWORKS_DIR=/System/Library/PrivateFrameworks - MACOS_PRIVATE_FRAMEWORKS_DEFAULTED=1) - -if test -z "${MACOS_PRIVATE_FRAMEWORKS_DEFAULTED}"; then - if test -z "$CROSS_COMPILE"; then - AC_MSG_WARN([You should only be using --with-macos-private-frameworks when cross-compiling.]) - fi - if test ! -d "$MACOS_PRIVATE_FRAMEWORKS_DIR"; then - AC_MSG_ERROR([PrivateFrameworks directory not found.]) - fi -fi - -dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use. -AC_SUBST(MACOS_SDK_DIR) -AC_SUBST(MACOS_PRIVATE_FRAMEWORKS_DIR) - -if test "$MACOS_SDK_DIR"; then - dnl Sync this section with the ones in NSPR and NSS. - dnl Changes to the cross environment here need to be accounted for in - dnl the libIDL checks (below) and xpidl build. - - if test ! -d "$MACOS_SDK_DIR"; then - AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must -specify a valid SDK. SDKs are installed when the optional cross-development -tools are selected during the Xcode/Developer Tools installation.]) - fi - - CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}" - CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}" - - dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER. - CPP="$CPP -isysroot ${MACOS_SDK_DIR}" - CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}" - - AC_LANG_SAVE - AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination]) - AC_LANG_CPLUSPLUS - AC_TRY_COMPILE([#include ],[], - result=yes, - result=no) - AC_LANG_RESTORE - AC_MSG_RESULT($result) - - if test "$result" = "no" ; then - AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.]) - fi -fi - -fi # COMPILE_ENVIRONMENT - -if test -n "$MAKE"; then - if test `echo $MAKE | grep -c make.py` != 1; then - NOT_PYMAKE=$MAKE - fi -fi - -case "$host_os" in -mingw*) - MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :) - ;; -*) - MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :) - ;; -esac -if test "$GMAKE" = ":"; then - AC_MSG_ERROR([GNU make not found]) -fi -AC_SUBST(GMAKE) - -if test -z "$MAKE"; then - MAKE=$GMAKE -fi - -if test "$COMPILE_ENVIRONMENT"; then - -AC_PATH_XTRA - -XCFLAGS="$X_CFLAGS" - -fi # COMPILE_ENVIRONMENT - -dnl ======================================================== -dnl set the defaults first -dnl ======================================================== -AS_BIN=$AS -AR_LIST='$(AR) t' -AR_EXTRACT='$(AR) x' -AR_DELETE='$(AR) d' -AS='$(CC)' -AS_DASH_C_FLAG='-c' -DLL_PREFIX=lib -LIB_PREFIX=lib -DLL_SUFFIX=.so -OBJ_SUFFIX=o -LIB_SUFFIX=a -ASM_SUFFIX=s -IMPORT_LIB_SUFFIX= -DIRENT_INO=d_ino -MOZ_USER_DIR=".mozilla" - -MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib" - -MOZ_FS_LAYOUT=unix - -USE_DEPENDENT_LIBS=1 - -_PLATFORM_DEFAULT_TOOLKIT=cairo-gtk3 - -if test -n "$CROSS_COMPILE"; then - OS_TARGET="${target_os}" - OS_ARCH=`echo $target_os | sed -e 's|/|_|g'` - OS_RELEASE= - case "${target_os}" in - linux*) OS_ARCH=Linux OS_TARGET=Linux ;; - kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU/kFreeBSD ;; - gnu*) OS_ARCH=GNU ;; - solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;; - mingw*) OS_ARCH=WINNT OS_TARGET=WINNT ;; - darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;; - dragonfly*) OS_ARCH=DragonFly OS_TARGET=DragonFly ;; - freebsd*) OS_ARCH=FreeBSD OS_TARGET=FreeBSD ;; - netbsd*) OS_ARCH=NetBSD OS_TARGET=NetBSD ;; - openbsd*) OS_ARCH=OpenBSD OS_TARGET=OpenBSD ;; - esac - case "${target}" in - *-android*|*-linuxandroid*) OS_ARCH=Linux OS_TARGET=Android ;; - esac -else - OS_TARGET=`uname -s` - OS_ARCH=`uname -s | sed -e 's|/|_|g'` - OS_RELEASE=`uname -r` -fi - -# Before this used `uname -m` when not cross compiling -# but that breaks when you have a 64 bit kernel with a 32 bit userland. -OS_TEST="${target_cpu}" - -HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'` - -####################################################################### -# Master "Core Components" macros for getting the OS target # -####################################################################### - -# -# If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no -# cross-compilation. -# - -# -# Define and override various archtecture-specific variables, including -# HOST_OS_ARCH -# OS_ARCH -# OS_TEST -# OS_TARGET -# OS_RELEASE -# OS_MINOR_RELEASE -# - -case "$HOST_OS_ARCH" in -mingw*) - HOST_OS_ARCH=WINNT - ;; -darwin*) - HOST_OS_ARCH=Darwin - ;; -linux*) - HOST_OS_ARCH=Linux - ;; -kfreebsd*-gnu) - HOST_OS_ARCH=GNU_kFreeBSD - ;; -gnu*) - HOST_OS_ARCH=GNU - ;; -dragonfly*) - HOST_OS_ARCH=DragonFly - ;; -freebsd*) - HOST_OS_ARCH=FreeBSD - ;; -netbsd*) - HOST_OS_ARCH=NetBSD - ;; -openbsd*) - HOST_OS_ARCH=OpenBSD - ;; -solaris*) - HOST_OS_ARCH=SunOS - SOLARIS_SUNPRO_CC= - SOLARIS_SUNPRO_CXX= - if test -z "$GNU_CC"; then - if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then - SOLARIS_SUNPRO_CC=1 - fi - fi - - if test -z "$GNU_CXX"; then - if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then - SOLARIS_SUNPRO_CXX=1 - fi - fi - AC_SUBST(SOLARIS_SUNPRO_CC) - AC_SUBST(SOLARIS_SUNPRO_CXX) - ;; -esac - -case "$OS_ARCH" in -WINNT) - if test -z "$CROSS_COMPILE" ; then - OS_TEST=`uname -p` - fi - ;; -Windows_NT) -# -# If uname -s returns "Windows_NT", we assume that we are using -# the uname.exe in MKS toolkit. -# -# The -r option of MKS uname only returns the major version number. -# So we need to use its -v option to get the minor version number. -# Moreover, it doesn't have the -p option, so we need to use uname -m. -# - OS_ARCH=WINNT - OS_TARGET=WINNT - OS_MINOR_RELEASE=`uname -v` - if test "$OS_MINOR_RELEASE" = "00"; then - OS_MINOR_RELEASE=0 - fi - OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}" - ;; -MINGW*_NT*) -# -# If uname -s returns MINGW32_NT-5.1, we assume that we are using -# the uname.exe in the MSYS tools. -# - OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'` - OS_ARCH=WINNT - OS_TARGET=WINNT - ;; -AIX) - OS_RELEASE=`uname -v`.`uname -r` - OS_TEST=${target_cpu} - ;; -Darwin) - case "${target_cpu}" in - powerpc*) - OS_TEST=ppc - ;; - i*86*) - OS_TEST=i386 - ;; - x86_64) - OS_TEST=x86_64 - ;; - *) - if test -z "$CROSS_COMPILE" ; then - OS_TEST=`uname -p` - fi - ;; - esac - ;; -esac - -# Only set CPU_ARCH if we recognize the value of OS_TEST - -case "$OS_TEST" in -*86 | i86pc) - CPU_ARCH=x86 - ;; - -powerpc64 | ppc64 | powerpc64le | ppc64le) - CPU_ARCH=ppc64 - ;; - -powerpc | ppc | rs6000) - CPU_ARCH=ppc - ;; - -Alpha | alpha | ALPHA) - CPU_ARCH=Alpha - ;; - -s390) - CPU_ARCH=s390 - ;; - -s390x) - CPU_ARCH=s390x - ;; - -hppa* | parisc) - CPU_ARCH=hppa - ;; - -sun4u | sparc*) - CPU_ARCH=sparc - ;; - -x86_64 | ia64) - CPU_ARCH="$OS_TEST" - ;; - -arm*) - CPU_ARCH=arm - ;; - -mips|mipsel) - CPU_ARCH="mips" - ;; - -aarch64*) - CPU_ARCH=aarch64 - ;; -esac - -if test -z "$OS_TARGET"; then - OS_TARGET=$OS_ARCH -fi -OS_CONFIG="${OS_TARGET}${OS_RELEASE}" - -dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64. -dnl =============================================================== -INTEL_ARCHITECTURE= -case "$OS_TEST" in - x86_64|i?86) - INTEL_ARCHITECTURE=1 -esac - -dnl Configure platform-specific CPU architecture compiler options. -dnl ============================================================== -if test "$COMPILE_ENVIRONMENT"; then - MOZ_ARCH_OPTS -else - if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then - dnl Default Android builds to ARMv7. - MOZ_ARCH=armv7-a - fi -fi # COMPILE_ENVIRONMENT - -dnl ================================================================= -dnl Set up and test static assertion macros used to avoid AC_TRY_RUN, -dnl which is bad when cross compiling. -dnl ================================================================= -if test "$COMPILE_ENVIRONMENT"; then -configure_static_assert_macros=' -#define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__) -#define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) -#define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1] -' - -dnl test that the macros actually work: -AC_MSG_CHECKING(that static assertion macros used in autoconf tests work) -AC_CACHE_VAL(ac_cv_static_assertion_macros_work, - [AC_LANG_SAVE - AC_LANG_C - ac_cv_static_assertion_macros_work="yes" - AC_TRY_COMPILE([$configure_static_assert_macros], - [CONFIGURE_STATIC_ASSERT(1)], - , - ac_cv_static_assertion_macros_work="no") - AC_TRY_COMPILE([$configure_static_assert_macros], - [CONFIGURE_STATIC_ASSERT(0)], - ac_cv_static_assertion_macros_work="no", - ) - AC_LANG_CPLUSPLUS - AC_TRY_COMPILE([$configure_static_assert_macros], - [CONFIGURE_STATIC_ASSERT(1)], - , - ac_cv_static_assertion_macros_work="no") - AC_TRY_COMPILE([$configure_static_assert_macros], - [CONFIGURE_STATIC_ASSERT(0)], - ac_cv_static_assertion_macros_work="no", - ) - AC_LANG_RESTORE - ]) -AC_MSG_RESULT("$ac_cv_static_assertion_macros_work") -if test "$ac_cv_static_assertion_macros_work" = "no"; then - AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.]) -fi -fi # COMPILE_ENVIRONMENT - -dnl ======================================================== -dnl Android libstdc++, placed here so it can use MOZ_ARCH -dnl computed above. -dnl ======================================================== - -MOZ_ANDROID_CPU_ARCH -if test "$COMPILE_ENVIRONMENT"; then - MOZ_ANDROID_STLPORT -fi # COMPILE_ENVIRONMENT - -dnl ======================================================== -dnl Suppress Clang Argument Warnings -dnl ======================================================== -if test -n "${CLANG_CC}${CLANG_CL}"; then - _WARNINGS_CFLAGS="-Qunused-arguments ${_WARNINGS_CFLAGS}" - CPPFLAGS="-Qunused-arguments ${CPPFLAGS}" -fi -if test -n "${CLANG_CXX}${CLANG_CL}"; then - _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}" -fi - -dnl ======================================================== -dnl = Use Address Sanitizer -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(address-sanitizer, -[ --enable-address-sanitizer Enable Address Sanitizer (default=no)], - MOZ_ASAN=1, - MOZ_ASAN= ) -if test -n "$MOZ_ASAN"; then - MOZ_LLVM_HACKS=1 - if test -n "$CLANG_CL"; then - # Look for clang_rt.asan_dynamic-i386.dll - MOZ_CLANG_RT_ASAN_LIB=clang_rt.asan_dynamic-i386.dll - # We use MOZ_PATH_PROG in order to get a Windows style path. - MOZ_PATH_PROG(MOZ_CLANG_RT_ASAN_LIB_PATH, $MOZ_CLANG_RT_ASAN_LIB) - if test -z "$MOZ_CLANG_RT_ASAN_LIB_PATH"; then - AC_MSG_ERROR([Couldn't find $MOZ_CLANG_RT_ASAN_LIB. It should be available in the same location as clang-cl.]) - fi - AC_SUBST(MOZ_CLANG_RT_ASAN_LIB_PATH) - fi - AC_DEFINE(MOZ_ASAN) - MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer) -fi -AC_SUBST(MOZ_ASAN) - -dnl ======================================================== -dnl = Use Memory Sanitizer -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(memory-sanitizer, -[ --enable-memory-sanitizer Enable Memory Sanitizer (default=no)], - MOZ_MSAN=1, - MOZ_MSAN= ) -if test -n "$MOZ_MSAN"; then - MOZ_LLVM_HACKS=1 - AC_DEFINE(MOZ_MSAN) - MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer) -fi -AC_SUBST(MOZ_MSAN) - -dnl ======================================================== -dnl = Use Thread Sanitizer -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(thread-sanitizer, -[ --enable-thread-sanitizer Enable Thread Sanitizer (default=no)], - MOZ_TSAN=1, - MOZ_TSAN= ) -if test -n "$MOZ_TSAN"; then - MOZ_LLVM_HACKS=1 - AC_DEFINE(MOZ_TSAN) - MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer) -fi -AC_SUBST(MOZ_TSAN) - -# The LLVM symbolizer is used by all sanitizers -AC_SUBST(LLVM_SYMBOLIZER) - -dnl ======================================================== -dnl = Enable hacks required for LLVM instrumentations -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(llvm-hacks, -[ --enable-llvm-hacks Enable workarounds required for several LLVM instrumentations (default=no)], - MOZ_LLVM_HACKS=1, - MOZ_LLVM_HACKS= ) -if test -n "$MOZ_LLVM_HACKS"; then - MOZ_NO_WLZDEFS=1 - MOZ_CFLAGS_NSS=1 -fi -AC_SUBST(MOZ_NO_WLZDEFS) -AC_SUBST(MOZ_CFLAGS_NSS) - -dnl ======================================================== -dnl = Enable treating compiler warnings as errors -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(warnings-as-errors, -[ --enable-warnings-as-errors - Enable treating warnings as errors], - MOZ_ENABLE_WARNINGS_AS_ERRORS=1, - MOZ_ENABLE_WARNINGS_AS_ERRORS=) - -dnl ======================================================== -dnl GNU specific defaults -dnl ======================================================== -if test "$GNU_CC"; then - MMX_FLAGS="-mmmx" - SSE_FLAGS="-msse" - SSE2_FLAGS="-msse2" - # Per bug 719659 comment 2, some of the headers on ancient build machines - # may require gnu89 inline semantics. But otherwise, we use C99. - # But on OS X we just use C99 plus GNU extensions, in order to fix - # bug 917526. - CFLAGS="$CFLAGS -std=gnu99" - if test "${OS_ARCH}" != Darwin; then - CFLAGS="$CFLAGS -fgnu89-inline" - fi - # FIXME: Let us build with strict aliasing. bug 414641. - CFLAGS="$CFLAGS -fno-strict-aliasing" - MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(DSO_SONAME) -o $@' - MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(DSO_SONAME) -o $@' - WARNINGS_AS_ERRORS='-Werror' - DSO_CFLAGS='' - DSO_PIC_CFLAGS='-fPIC' - ASFLAGS="$ASFLAGS -fPIC" - AC_MSG_CHECKING([for --noexecstack option to as]) - _SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -Wa,--noexecstack" - AC_TRY_COMPILE(,,AC_MSG_RESULT([yes]) - [ASFLAGS="$ASFLAGS -Wa,--noexecstack"], - AC_MSG_RESULT([no])) - CFLAGS=$_SAVE_CFLAGS - AC_MSG_CHECKING([for -z noexecstack option to ld]) - _SAVE_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,-z,noexecstack" - AC_TRY_LINK(,,AC_MSG_RESULT([yes]), - AC_MSG_RESULT([no]) - LDFLAGS=$_SAVE_LDFLAGS) - - AC_MSG_CHECKING([for -z text option to ld]) - _SAVE_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,-z,text" - AC_TRY_LINK(,,AC_MSG_RESULT([yes]) - [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,text"], - AC_MSG_RESULT([no]) - LDFLAGS=$_SAVE_LDFLAGS) - - AC_MSG_CHECKING([for --build-id option to ld]) - _SAVE_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,--build-id" - AC_TRY_LINK(,,AC_MSG_RESULT([yes]) - [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,--build-id"], - AC_MSG_RESULT([no]) - LDFLAGS=$_SAVE_LDFLAGS) - - AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld]) - HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED= - _SAVE_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ" - AC_TRY_LINK(,,AC_MSG_RESULT([yes]) - [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1], - AC_MSG_RESULT([no])) - LDFLAGS=$_SAVE_LDFLAGS - - # Check for -mssse3 on $CC - AC_MSG_CHECKING([if toolchain supports -mssse3 option]) - HAVE_TOOLCHAIN_SUPPORT_MSSSE3= - _SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -mssse3" - AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes]) - [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1], - AC_MSG_RESULT([no])) - CFLAGS=$_SAVE_CFLAGS - - # Check for -msse4.1 on $CC - AC_MSG_CHECKING([if toolchain supports -msse4.1 option]) - HAVE_TOOLCHAIN_SUPPORT_MSSE4_1= - _SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -msse4.1" - AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes]) - [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1], - AC_MSG_RESULT([no])) - CFLAGS=$_SAVE_CFLAGS - - case "${CPU_ARCH}" in - x86 | x86_64) - AC_MSG_CHECKING(for x86 AVX2 asm support in compiler) - AC_TRY_COMPILE([], - [asm volatile ("vpermq \$0xd8,%ymm0,%ymm0 \n");], - result="yes", result="no") - AC_MSG_RESULT("$result") - if test "$result" = "yes"; then - HAVE_X86_AVX2=1 - fi - esac - - DSO_LDOPTS='-shared' - if test "$GCC_USE_GNU_LD"; then - # Some tools like ASan use a runtime library that is only - # linked against executables, so we must allow undefined - # symbols for shared objects in some cases. - if test -z "$MOZ_NO_WLZDEFS"; then - # Don't allow undefined symbols in libraries - DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs" - - # BSDs need `environ' exposed for posix_spawn (bug 753046) - case "$OS_TARGET" in - DragonFly|FreeBSD|NetBSD|OpenBSD) - if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then - DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ" - else - DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols" - fi - ;; - esac - fi - fi - - MOZ_SET_WARNINGS_CFLAGS - - _DEFINES_CFLAGS='-include $(topobjdir)/mozilla-config.h -DMOZILLA_CLIENT' - _USE_CPP_INCLUDE_FLAG=1 - - ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS" - -elif test "$SOLARIS_SUNPRO_CC"; then - DSO_CFLAGS='' - if test "$CPU_ARCH" = "sparc"; then - # for Sun Studio on Solaris/SPARC - DSO_PIC_CFLAGS='-xcode=pic32' - else - DSO_PIC_CFLAGS='-KPIC' - fi - _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT' -else - MKSHLIB='$(LD) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' - MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' - - DSO_LDOPTS='-shared' - if test "$GNU_LD"; then - # Don't allow undefined symbols in libraries - DSO_LDOPTS="$DSO_LDOPTS -z defs" - fi - - DSO_CFLAGS='' - DSO_PIC_CFLAGS='-KPIC' - _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT' -fi - -if test "$GNU_CXX"; then - # FIXME: Let us build with strict aliasing. bug 414641. - CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing" - - MOZ_SET_WARNINGS_CXXFLAGS - - _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(topobjdir)/mozilla-config.h' - _USE_CPP_INCLUDE_FLAG=1 - -else - _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)' -fi - -dnl ======================================================== -dnl Checking for 64-bit OS -dnl ======================================================== -if test "$COMPILE_ENVIRONMENT"; then -AC_LANG_SAVE -AC_LANG_C -AC_MSG_CHECKING(for 64-bit OS) -AC_TRY_COMPILE([$configure_static_assert_macros], - [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)], - result="yes", result="no") -AC_MSG_RESULT("$result") -if test "$result" = "yes"; then - AC_DEFINE(HAVE_64BIT_BUILD) - HAVE_64BIT_BUILD=1 -fi -AC_SUBST(HAVE_64BIT_BUILD) -AC_LANG_RESTORE -fi # COMPILE_ENVIRONMENT - -dnl ======================================================== -dnl Special rust checks -dnl ======================================================== - -if test -n "$MACOSX_DEPLOYMENT_TARGET" -a -n "$MOZ_RUST"; then - AC_MSG_CHECKING([if we're targeting 32-bit]) - if test -z "$HAVE_64BIT_BUILD"; then - AC_MSG_RESULT([using $RUSTC]) - else - AC_MSG_RESULT([no]) - fi - AC_MSG_CHECKING([rustc compatibility with MacOS X]) - # Stock rustc doesn't support MacOS X 10.6 or earlier. - # https://github.com/rust-lang/rust/issues/25342 - _MACOSX_TARGET_MINOR=`echo "$MACOSX_DEPLOYMENT_TARGET" | cut -d. -f2` - if test "$_MACOSX_TARGET_MINOR" -lt 7; then - dnl Test C linkage against rust code to see if the rust - dnl toolchain output is compatible. - cat > conftest.rs < u8 { 42 } -EOF - ac_try="$RUSTC --crate-type staticlib -o conftest.a conftest.rs >/dev/null" - AC_TRY_EVAL(ac_try) - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS conftest.a -lpthread -lm" - AC_TRY_LINK_FUNC([rusty_answer], [ - AC_MSG_RESULT([$MACOSX_DEPLOYMENT_TARGET is ok with this rustc]) - ], [ - AC_MSG_RESULT([cannot link for $MACOSX_DEPLOYMENT_TARGET]) - MOZ_RUST= - ]) - LDFLAGS=$save_LDFLAGS - rm -rf conftest* - else - AC_MSG_RESULT([$MACOSX_DEPLOYMENT_TARGET is ok]) - fi - if test -z "$MOZ_RUST"; then - AC_MSG_ERROR([rustc does not support MacOS X $MACOSX_DEPLOYMENT_TARGET - Add 'ac_add_options --enable-macos-target=10.7' (or later) - to mozconfig, disable Rust support, or use an alternate toolchain.]) - fi -fi - -dnl ======================================================== -dnl = Use profiling compile flags -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(profiling, -[ --enable-profiling Set compile flags necessary for using sampling profilers (e.g. shark, perf)], - MOZ_PROFILING=1, - MOZ_PROFILING= ) - -dnl ======================================================== -dnl = Turn on systrace for android/b2g. -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(systrace, -[ --enable-systrace Set compile flags necessary for using sampling profilers (e.g. shark, perf)], - MOZ_USE_SYSTRACE=1, - MOZ_USE_SYSTRACE= ) -if test -n "$MOZ_USE_SYSTRACE"; then - AC_DEFINE(MOZ_USE_SYSTRACE) -fi - -dnl ======================================================== -dnl = Use Valgrind -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(valgrind, -[ --enable-valgrind Enable Valgrind integration hooks (default=no)], - MOZ_VALGRIND=1, - MOZ_VALGRIND= ) -if test -n "$MOZ_VALGRIND"; then - MOZ_CHECK_HEADER([valgrind/valgrind.h], [], - AC_MSG_ERROR( - [--enable-valgrind specified but Valgrind is not installed])) - AC_DEFINE(MOZ_VALGRIND) -fi -AC_SUBST(MOZ_VALGRIND) - -dnl ======================================================== -dnl jprof -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(jprof, -[ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.], - MOZ_JPROF=1, - MOZ_JPROF= ) -if test -n "$MOZ_JPROF"; then - MOZ_PROFILING=1 - AC_DEFINE(MOZ_JPROF) -fi - -dnl ======================================================== -dnl SPS Profiler -dnl ======================================================== -MOZ_ENABLE_PROFILER_SPS=1 - -case "${OS_TARGET}" in -Android) - case "${CPU_ARCH}" in - x86 | arm) ;; - *) - MOZ_ENABLE_PROFILER_SPS= - esac - ;; -Linux) - case "${CPU_ARCH}" in - x86 | x86_64) ;; - *) - MOZ_ENABLE_PROFILER_SPS= - esac - ;; -WINNT) ;; -Darwin) - if test -n "$MOZ_IOS"; then - MOZ_ENABLE_PROFILER_SPS= - fi - ;; -*) - MOZ_ENABLE_PROFILER_SPS= - ;; -esac - -if test -n "$MOZ_ENABLE_PROFILER_SPS"; then - AC_DEFINE(MOZ_ENABLE_PROFILER_SPS) -fi - -dnl ======================================================== -dnl instruments -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(instruments, -[ --enable-instruments Enable instruments remote profiling. Implies --enable-profiling.], - MOZ_INSTRUMENTS=1, - MOZ_INSTRUMENTS= ) -if test -n "$MOZ_INSTRUMENTS"; then - MOZ_PROFILING=1 - AC_DEFINE(MOZ_INSTRUMENTS) -fi - -dnl ======================================================== -dnl callgrind -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(callgrind, -[ --enable-callgrind Enable callgrind profiling. Implies --enable-profiling.], - MOZ_CALLGRIND=1, - MOZ_CALLGRIND= ) -if test -n "$MOZ_CALLGRIND"; then - MOZ_PROFILING=1 - AC_DEFINE(MOZ_CALLGRIND) -fi - -dnl ======================================================== -dnl vtune -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(vtune, -[ --enable-vtune Enable vtune profiling. Implies --enable-profiling.], - MOZ_VTUNE=1, - MOZ_VTUNE= ) -if test -n "$MOZ_VTUNE"; then - MOZ_PROFILING=1 - AC_DEFINE(MOZ_VTUNE) -fi - -# For profiling builds keep the symbol information -if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then - case "$OS_TARGET" in - Linux|DragonFly|FreeBSD|NetBSD|OpenBSD) - STRIP_FLAGS="--strip-debug" - ;; - esac -fi - -dnl ======================================================== -dnl = Enable DMD -dnl ======================================================== - -MOZ_ARG_ENABLE_BOOL(dmd, -[ --enable-dmd Enable DMD; also enables jemalloc, replace-malloc and profiling], - MOZ_DMD=1, - MOZ_DMD= ) - -if test "$MOZ_DMD"; then - AC_DEFINE(MOZ_DMD) - - if test "${CPU_ARCH}" = "arm"; then - CFLAGS="$CFLAGS -funwind-tables" - CXXFLAGS="$CXXFLAGS -funwind-tables" - fi - - MOZ_MEMORY=1 # DMD enables jemalloc - MOZ_REPLACE_MALLOC=1 # DMD enables replace-malloc - MOZ_PROFILING=1 # DMD enables profiling -fi -AC_SUBST(MOZ_DMD) - -dnl ======================================================== -dnl Profiling -dnl ======================================================== -if test -n "$MOZ_PROFILING"; then - AC_DEFINE(MOZ_PROFILING) -fi - -dnl ======================================================== -dnl System overrides of the defaults for host -dnl ======================================================== -case "$host" in -*mingw*) - if test -n "$_WIN32_MSVC"; then - HOST_AR=lib - HOST_AR_FLAGS='-NOLOGO -OUT:$@' - HOST_CFLAGS="$HOST_CFLAGS -TC -nologo" - HOST_RANLIB='echo ranlib' - else - HOST_CFLAGS="$HOST_CFLAGS -mwindows" - fi - HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11 -D_CRT_SECURE_NO_WARNINGS" - HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}" - HOST_BIN_SUFFIX=.exe - - case "${host_cpu}" in - i*86) - if test -n "$_WIN32_MSVC"; then - HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86" - fi - ;; - x86_64) - if test -n "$_WIN32_MSVC"; then - HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64" - fi - HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_" - ;; - esac - ;; - -*-darwin*) - HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11" - HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" - ;; - -*-linux*|*-kfreebsd*-gnu|*-gnu*) - HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" - HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" - ;; - -*) - HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" - HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}" - ;; -esac - -dnl ============================================================== -dnl Get mozilla version from central milestone file -dnl ============================================================== -MOZILLA_VERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir` -MOZILLA_UAVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --uaversion` -MOZILLA_SYMBOLVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --symbolversion` -if test -z "$MOZILLA_VERSION"; then - AC_MSG_ERROR([failed to read version info from milestone file]) -fi - -dnl Get version of various core apps from the version files. -FIREFOX_VERSION=`cat $_topsrcdir/browser/config/version.txt` -FIREFOX_VERSION_DISPLAY=`cat $_topsrcdir/browser/config/version_display.txt` - -if test -z "$FIREFOX_VERSION"; then - AC_MSG_ERROR([FIREFOX_VERSION is unexpectedly blank.]) -fi - -if test -z "$FIREFOX_VERSION_DISPLAY"; then - AC_MSG_ERROR([FIREFOX_VERSION_DISPLAY is unexpectedly blank.]) -fi - -AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION") -AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION) -AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION") -AC_SUBST(MOZILLA_SYMBOLVERSION) - -MOZ_DOING_LTO(lto_is_enabled) - -dnl ======================================================== -dnl System overrides of the defaults for target -dnl ======================================================== - -case "$target" in -*-aix*) - AC_DEFINE(AIX) - if test ! "$GNU_CC"; then - if test ! "$HAVE_64BIT_BUILD"; then - # Compiling with Visual Age C++ object model compat is the - # default. To compile with object model ibm, add - # AIX_OBJMODEL=ibm to .mozconfig. - if test "$AIX_OBJMODEL" = "ibm"; then - CXXFLAGS="$CXXFLAGS -qobjmodel=ibm" - else - AIX_OBJMODEL=compat - fi - else - AIX_OBJMODEL=compat - fi - AC_SUBST(AIX_OBJMODEL) - DSO_LDOPTS='-qmkshrobj=1' - DSO_CFLAGS='-qflag=w:w' - DSO_PIC_CFLAGS= - LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib" - MOZ_FIX_LINK_PATHS= - MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@' - MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@' - if test "$COMPILE_ENVIRONMENT"; then - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - AC_MSG_CHECKING([for IBM XLC/C++ compiler version >= 9.0.0.7]) - AC_TRY_COMPILE([], - [#if (__IBMCPP__ < 900) - #error "Bad compiler" - #endif], - _BAD_COMPILER=,_BAD_COMPILER=1) - if test -n "$_BAD_COMPILER"; then - AC_MSG_RESULT([no]) - AC_MSG_ERROR([IBM XLC/C++ 9.0.0.7 or higher is required to build.]) - else - AC_MSG_RESULT([yes]) - fi - AC_LANG_RESTORE - TARGET_COMPILER_ABI="ibmc" - CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'` - CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'` - fi # COMPILE_ENVIRONMENT - fi - case "${target_os}" in - aix4.1*) - DLL_SUFFIX='_shr.a' - ;; - esac - if test "$COMPILE_ENVIRONMENT"; then - MOZ_CHECK_HEADERS(sys/inttypes.h) - fi # COMPILE_ENVIRONMENT - AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES) - ;; - -*-darwin*) - MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@' - MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@' - MOZ_OPTIMIZE_FLAGS="-O3" - # Statically disable jemalloc on 10.5 and 32-bit 10.6. See bug 702250. - if test "$HAVE_64BIT_BUILD"; then - MOZ_MEMORY=1 - fi - DLL_SUFFIX=".dylib" - DSO_LDOPTS='' - STRIP_FLAGS="$STRIP_FLAGS -x -S" - # Ensure that if we're targeting iOS an SDK was provided. - AC_CACHE_CHECK(for iOS target, - ac_cv_ios_target, - [AC_TRY_COMPILE([#include -#if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR) -#error not iOS -#endif], - [], - ac_cv_ios_target="yes", - ac_cv_ios_target="no")]) - if test "$ac_cv_ios_target" = "yes" -a -z $MOZ_IOS; then - AC_MSG_ERROR([targeting iOS but not using an iOS SDK?]) - fi - if test -n "$MOZ_IOS"; then - AC_DEFINE(XP_IOS) - AC_DEFINE(XP_DARWIN) - _PLATFORM_DEFAULT_TOOLKIT='cairo-uikit' - direct_nspr_config=1 - else - AC_DEFINE(XP_MACOSX) - AC_DEFINE(XP_DARWIN) - _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa' - # The ExceptionHandling framework is needed for Objective-C exception - # logging code in nsObjCExceptions.h. Currently we only use that in debug - # builds. - MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"; - fi - - if test "x$lto_is_enabled" = "xyes"; then - echo "Skipping -dead_strip because lto is enabled." - dnl DTrace and -dead_strip don't interact well. See bug 403132. - dnl =================================================================== - elif test "x$enable_dtrace" = "xyes"; then - echo "Skipping -dead_strip because DTrace is enabled. See bug 403132." - else - dnl check for the presence of the -dead_strip linker flag - AC_MSG_CHECKING([for -dead_strip option to ld]) - _SAVE_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,-dead_strip" - AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=) - if test -n "$_HAVE_DEAD_STRIP" ; then - AC_MSG_RESULT([yes]) - MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip" - else - AC_MSG_RESULT([no]) - fi - - LDFLAGS=$_SAVE_LDFLAGS - fi - - dnl With newer linkers we need to pass -allow_heap_execute because of - dnl Microsoft Silverlight (5.1.10411.0 at least). - AC_MSG_CHECKING([for -allow_heap_execute option to ld]) - _SAVE_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,-allow_heap_execute" - AC_TRY_LINK(,[return 0;],_HAVE_ALLOW_HEAP_EXECUTE=1, - _HAVE_ALLOW_HEAP_EXECUTE=) - if test -n "$_HAVE_ALLOW_HEAP_EXECUTE" ; then - AC_MSG_RESULT([yes]) - MOZ_ALLOW_HEAP_EXECUTE_FLAGS="-Wl,-allow_heap_execute" - else - AC_MSG_RESULT([no]) - fi - LDFLAGS=$_SAVE_LDFLAGS - - MOZ_FIX_LINK_PATHS="-Wl,-executable_path,${DIST}/bin" - ;; - -ia64*-hpux*) - DLL_SUFFIX=".so" - if test ! "$GNU_CC"; then - DSO_LDOPTS='-b' - DSO_CFLAGS="" - DSO_PIC_CFLAGS= - MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@' - MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@' - CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on" - else - DSO_LDOPTS='-b -E' - MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@' - MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@' - fi - MOZ_FIX_LINK_PATHS= - AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES) - AC_DEFINE(_LARGEFILE64_SOURCE) - ;; - -*-hpux*) - DLL_SUFFIX=".sl" - if test ! "$GNU_CC"; then - DSO_LDOPTS='-b -Wl,+s' - DSO_CFLAGS="" - DSO_PIC_CFLAGS="+Z" - MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(DIST)/bin -o $@' - MKCSHLIB='$(LD) -b +s -L$(DIST)/bin -o $@' - CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on" - else - DSO_LDOPTS='-b -E +s' - MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(DIST)/bin -L$(DIST)/lib -o $@' - MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(DIST)/bin -L$(DIST)/lib -o $@' - fi - MOZ_POST_PROGRAM_COMMAND='chatr +s enable' - AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES) - ;; - -*-android*|*-linuxandroid*) - AC_DEFINE(NO_PW_GECOS) - no_x=yes - if test -n "$gonkdir"; then - _PLATFORM_DEFAULT_TOOLKIT=cairo-gonk - _PLATFORM_HAVE_RIL=1 - MOZ_B2G_FM=1 - MOZ_SYNTH_PICO=1 - else - _PLATFORM_DEFAULT_TOOLKIT=cairo-android - if test "$COMPILE_ENVIRONMENT"; then - MOZ_LINKER=1 - fi - fi - - MOZ_GFX_OPTIMIZE_MOBILE=1 - MOZ_OPTIMIZE_FLAGS="-Os -fno-reorder-functions" - if test -z "$CLANG_CC"; then - MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS" - fi - ;; - -*-*linux*) - # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler. - # Similarly for GNU_CXX and INTEL_CXX. - if test "$INTEL_CC" -o "$INTEL_CXX"; then - # -Os has been broken on Intel's C/C++ compilers for quite a - # while; Intel recommends against using it. - MOZ_OPTIMIZE_FLAGS="-O2" - elif test "$GNU_CC" -o "$GNU_CXX"; then - MOZ_PGO_OPTIMIZE_FLAGS="-O3" - MOZ_OPTIMIZE_FLAGS="-Os" - if test -z "$CLANG_CC"; then - MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS" - fi - fi - - MOZ_MEMORY=1 - - case "${target_cpu}" in - alpha*) - CFLAGS="$CFLAGS -mieee" - CXXFLAGS="$CXXFLAGS -mieee" - ;; - esac - - if test -z "$MC"; then - MC=mc.exe - fi - ;; -*-mingw*) - DSO_CFLAGS= - DSO_PIC_CFLAGS= - DLL_SUFFIX=.dll - RC=rc.exe - MC=mc.exe - # certain versions of cygwin's makedepend barf on the - # #include vs -I./dist/include/string issue so don't use it - if test -n "$GNU_CC" -o -n "$CLANG_CC"; then - CC="$CC -mwindows" - CXX="$CXX -mwindows" - CPP="$CPP -mwindows" - CFLAGS="$CFLAGS -mms-bitfields" - CXXFLAGS="$CXXFLAGS -mms-bitfields" - DSO_LDOPTS='-shared' - MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@' - MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@' - RC='$(WINDRES)' - # Use static libgcc and libstdc++ - LDFLAGS="$LDFLAGS -static" - NSPR_LDFLAGS="$NSPR_LDFLAGS -static-libgcc" - # Use temp file for windres (bug 213281) - RCFLAGS='-O coff --use-temp-file' - # mingw doesn't require kernel32, user32, and advapi32 explicitly - LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32 -lnetapi32" - MOZ_FIX_LINK_PATHS= - DLL_PREFIX= - IMPORT_LIB_SUFFIX=a - - WIN32_CONSOLE_EXE_LDFLAGS=-mconsole - WIN32_GUI_EXE_LDFLAGS=-mwindows - - # GCC/binutils can't link to a function if we try to include dllexport function - # in the same library as dllimport caller. To work around it, we build NSPR - # and NSS with -mnop-fun-dllimport flag. The drawback of this solution is that - # function thunks need to be generated for cross-DLL calls. - MOZ_FOLD_LIBS_FLAGS=-mnop-fun-dllimport - - # We use mix of both POSIX and Win32 printf format across the tree, so format - # warnings are useless on mingw. - MOZ_C_SUPPORTS_WARNING(-Wno-, format, ac_c_has_wno_format) - MOZ_CXX_SUPPORTS_WARNING(-Wno-, format, ac_cxx_has_wno_format) - else - TARGET_COMPILER_ABI=msvc - HOST_CC='$(CC)' - HOST_CXX='$(CXX)' - HOST_LD='$(LD)' - if test "$AS_BIN"; then - AS="$(basename "$AS_BIN")" - fi - AR='lib' - AR_FLAGS='-NOLOGO -OUT:$@' - AR_EXTRACT= - RANLIB='echo not_ranlib' - STRIP='echo not_strip' - PKG_SKIP_STRIP=1 - XARGS=xargs - ZIP=zip - UNZIP=unzip - DOXYGEN=: - ASM_SUFFIX=asm - OBJ_SUFFIX=obj - LIB_SUFFIX=lib - DLL_PREFIX= - LIB_PREFIX= - IMPORT_LIB_SUFFIX=lib - MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)' - MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)' - dnl Set subsystem version 5 for Windows XP. - if test "$CPU_ARCH" = "x86"; then - WIN32_SUBSYSTEM_VERSION=5.01 - else - WIN32_SUBSYSTEM_VERSION=6.01 - fi - WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION - WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION - DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION - _USE_CPP_INCLUDE_FLAG=1 - _DEFINES_CFLAGS='-FI $(topobjdir)/mozilla-config.h -DMOZILLA_CLIENT' - _DEFINES_CXXFLAGS='-FI $(topobjdir)/mozilla-config.h -DMOZILLA_CLIENT' - SSE_FLAGS="-arch:SSE" - SSE2_FLAGS="-arch:SSE2" - CFLAGS="$CFLAGS -W3 -Gy" - CXXFLAGS="$CXXFLAGS -W3 -Gy" - if test "$CPU_ARCH" = "x86"; then - dnl VS2012+ defaults to -arch:SSE2. - CFLAGS="$CFLAGS -arch:IA32" - CXXFLAGS="$CXXFLAGS -arch:IA32" - fi - dnl VS2013+ requires -FS when parallel building by make -jN. - dnl If nothing, compiler sometimes causes C1041 error. - CFLAGS="$CFLAGS -FS" - CXXFLAGS="$CXXFLAGS -FS" - # khuey says we can safely ignore MSVC warning C4251 - # MSVC warning C4244 (implicit type conversion may lose data) warns - # and requires workarounds for perfectly valid code. Also, GCC/clang - # don't warn about it by default. So for consistency/sanity, we turn - # it off on MSVC, too. - # MSVC warning C4267 warns for narrowing type conversions from size_t - # to 32-bit integer types on 64-bit platforms. Since this is virtually - # the same thing as C4244, we disable C4267, too. - # MSVC warning C4345 warns of newly conformant behavior as of VS2003. - # MSVC warning C4351 warns of newly conformant behavior as of VS2005. - # MSVC warning C4800 warns when a value is implicitly cast to bool, - # because this also forces narrowing to a single byte, which can be a - # perf hit. But this matters so little in practice (and often we want - # that behavior) that it's better to turn it off. - # MSVC warning C4819 warns some UTF-8 characters (e.g. copyright sign) - # on non-Western system locales even if it is in a comment. - CFLAGS="$CFLAGS -wd4244 -wd4267 -wd4819" - CXXFLAGS="$CXXFLAGS -wd4251 -wd4244 -wd4267 -wd4345 -wd4351 -wd4800 -wd4819" - if test -n "$CLANG_CL"; then - # XXX We should combine some of these with our generic GCC-style - # warning checks. - # - # Suppress the clang-cl warning for the inline 'new' and 'delete' in mozalloc - CXXFLAGS="$CXXFLAGS -Wno-inline-new-delete" - # We use offsetof on non-POD objects all the time. - # We also suppress this warning on other platforms. - CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof" - # MFBT thinks clang-cl supports constexpr, which it does, but - # not everything in Windows C++ headers supports constexpr - # as we might expect until MSVC 2015, so turn off this warning - # for now. - CXXFLAGS="$CXXFLAGS -Wno-invalid-constexpr" - # This warns for reasonable things like: - # enum { X = 0xffffffffU }; - # which is annoying for IDL headers. - CXXFLAGS="$CXXFLAGS -Wno-microsoft-enum-value" - # This warns for cases that would be reached by the Microsoft - # #include rules, but also currently warns on cases that would - # *also* be reached by standard C++ include rules. That - # behavior doesn't seem useful, so we turn it off. - CXXFLAGS="$CXXFLAGS -Wno-microsoft-include" - # We normally error out on unknown pragmas, but since clang-cl - # claims to be MSVC, it would be difficult to add - # #if defined(_MSC_VER) && !defined(__clang__) everywhere we - # use such pragmas, so just ignore them. - CFLAGS="$CFLAGS -Wno-unknown-pragmas" - CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas" - # clang-cl's Intrin.h marks things like _ReadWriteBarrier - # as __attribute((__deprecated__)). This is nice to know, - # but since we don't get the equivalent warning from MSVC, - # let's just ignore it. - CFLAGS="$CFLAGS -Wno-deprecated-declarations" - CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations" - # We use a function like: - # __declspec(noreturn) __inline void f() {} - # which -Winvalid-noreturn complains about. Again, MSVC seems - # OK with it, so let's silence the warning. - CFLAGS="$CFLAGS -Wno-invalid-noreturn" - CXXFLAGS="$CXXFLAGS -Wno-invalid-noreturn" - # Missing |override| on virtual function declarations isn't - # something that MSVC currently warns about. - CXXFLAGS="$CXXFLAGS -Wno-inconsistent-missing-override" - # We use -DHAS_EXCEPTIONS=0, which removes the |throw()| - # declaration on |operator delete(void*)|. However, clang-cl - # must internally declare |operator delete(void*)| differently, - # which causes this warning for virtually every file in the - # tree. clang-cl doesn't support -fno-exceptions or equivalent, - # so there doesn't seem to be any way to convince clang-cl to - # declare |delete| differently. Therefore, suppress this - # warning. - CXXFLAGS="$CXXFLAGS -Wno-implicit-exception-spec-mismatch" - # At least one MSVC header and several headers in-tree have - # unused typedefs, so turn this on. - CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef" - # Several JS engine header files use __declspec(dllimport) on - # classes, and clang-cl helpfully warns about its non-support - # for such cases. We're not particularly worried about that, - # so ignore that warning. - CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes" - fi - # make 'foo == bar;' error out - CFLAGS="$CFLAGS -we4553" - CXXFLAGS="$CXXFLAGS -we4553" - LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib netapi32.lib" - MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV' - WARNINGS_AS_ERRORS='-WX' - MOZ_OPTIMIZE_FLAGS='-O1 -Oi' - MOZ_FIX_LINK_PATHS= - MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)' - LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT" - if test -z "$DEVELOPER_OPTIONS"; then - LDFLAGS="$LDFLAGS -RELEASE" - fi - dnl For profile-guided optimization - PROFILE_GEN_CFLAGS="-GL" - PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT" - dnl XXX: PGO builds can fail with warnings treated as errors, - dnl specifically "no profile data available" appears to be - dnl treated as an error sometimes. This might be a consequence - dnl of using WARNINGS_AS_ERRORS in some modules, combined - dnl with the linker doing most of the work in the whole-program - dnl optimization/PGO case. I think it's probably a compiler bug, - dnl but we work around it here. - PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952" - dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul. - dnl Probably also a compiler bug, but what can you do? - PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE" - LDFLAGS="$LDFLAGS -DYNAMICBASE" - RCFLAGS="-nologo" - if test "$_CC_MAJOR_VERSION" = "18" -a "$_CC_BUILD_VERSION" = "31101"; then - dnl Use MaxILKSize as a workaround for LNK1248 in VS2013update4 - dnl See https://connect.microsoft.com/VisualStudio/feedback/details/1044914/fatal-error-lnk1248 - LDFLAGS="$LDFLAGS -MaxILKSize:0x7FF00000" - fi - dnl Minimum reqiurement of Gecko is VS2010 or later which supports - dnl both SSSE3 and SSE4.1. - HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1 - HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1 - dnl allow AVX2 code from VS2012 - HAVE_X86_AVX2=1 - MOZ_MEMORY=1 - fi - AC_DEFINE(HAVE_SNPRINTF) - AC_DEFINE(_WINDOWS) - AC_DEFINE(WIN32) - AC_DEFINE(XP_WIN) - AC_DEFINE(XP_WIN32) - AC_DEFINE(HW_THREADS) - AC_DEFINE(STDC_HEADERS) - AC_DEFINE(WIN32_LEAN_AND_MEAN) - dnl See http://support.microsoft.com/kb/143208 to use STL - AC_DEFINE(NOMINMAX) - _PLATFORM_DEFAULT_TOOLKIT='cairo-windows' - BIN_SUFFIX='.exe' - MOZ_USER_DIR="Mozilla" - - dnl set NO_X11 defines here as the general check is skipped on win32 - no_x=yes - AC_DEFINE(NO_X11) - - case "$host" in - *-mingw*) - if test -n "$L10NBASEDIR"; then - L10NBASEDIR=`cd $L10NBASEDIR && pwd -W` - fi - ;; - esac - - case "$host_os" in - cygwin*|msvc*|mks*) - 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.]) - ;; - esac - - case "$target" in - i*86-*) - if test "$HAVE_64BIT_BUILD"; then - AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.]) - fi - - if test -n "$GNU_CC"; then - CFLAGS="$CFLAGS -mstackrealign -fno-keep-inline-dllexport" - CXXFLAGS="$CXXFLAGS -mstackrealign -fno-keep-inline-dllexport" - LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup -Wl,--large-address-aware" - else - DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86" - LDFLAGS="$LDFLAGS -SAFESEH" - fi - - AC_DEFINE(_X86_) - ;; - x86_64-*) - if test -z "$HAVE_64BIT_BUILD"; then - AC_MSG_ERROR([You are targeting 64-bit but using the 32-bit compiler.]) - fi - if test -n "$_WIN32_MSVC"; then - DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64" - fi - AC_DEFINE(_AMD64_) - ;; - *) - AC_DEFINE(_CPU_ARCH_NOT_DEFINED) - ;; - esac - ;; - -*-netbsd*) - DSO_CFLAGS='' - CFLAGS="$CFLAGS -Dunix" - CXXFLAGS="$CXXFLAGS -Dunix" - if $CC -E - -dM /dev/null; then - DLL_SUFFIX=".so" - DSO_PIC_CFLAGS='-fPIC -DPIC' - DSO_LDOPTS='-shared' - BIN_FLAGS='-Wl,--export-dynamic' - else - DSO_PIC_CFLAGS='-fPIC -DPIC' - DLL_SUFFIX=".so.1.0" - DSO_LDOPTS='-shared' - fi - # This will fail on a.out systems prior to 1.5.1_ALPHA. - if test "$LIBRUNPATH"; then - DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS" - fi - MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(DSO_SONAME) -o $@' - MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(DSO_SONAME) -o $@' - ;; - -*-openbsd*) - if test "$SO_VERSION"; then - DLL_SUFFIX=".so.$SO_VERSION" - else - DLL_SUFFIX=".so.1.0" - fi - if test -z "$X11BASE"; then - X11BASE=/usr/X11R6 - fi - MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib" - DSO_CFLAGS='' - DSO_PIC_CFLAGS='-fPIC' - DSO_LDOPTS='-shared -fPIC' - if test "$LIBRUNPATH"; then - DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS" - fi - ;; - -*-solaris*) - AC_DEFINE(SOLARIS) - MOZ_FIX_LINK_PATHS= - # $ORIGIN/.. is for shared libraries under components/ to locate shared - # libraries one level up (e.g. libnspr4.so) - if test "$SOLARIS_SUNPRO_CC"; then - LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs" - LIBS="-lCrun -lCstd -lc $LIBS" - AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES) - CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__" - CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef" - LDFLAGS="-xildoff $LDFLAGS" - MMX_FLAGS="-xarch=mmx -xO4" - SSE_FLAGS="-xarch=sse" - SSE2_FLAGS="-xarch=ssei2 -xO4" - if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then - _SAVE_LDFLAGS=$LDFLAGS - LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS" - AC_TRY_LINK([#include ], - [printf("Hello World\n");], - , - [LDFLAGS=$_SAVE_LDFLAGS]) - fi - MOZ_OPTIMIZE_FLAGS="-xO4" - MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' - MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' - DSO_LDOPTS='-G' - AR_LIST="$AR t" - AR_EXTRACT="$AR x" - AR_DELETE="$AR d" - AR='$(CXX) -xar' - AR_FLAGS='-o $@' - AS='/usr/ccs/bin/as' - ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0" - AS_DASH_C_FLAG='' - TARGET_COMPILER_ABI="sunc" - CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'` - CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'` - AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9]) - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - AC_TRY_COMPILE([], - [#if (__SUNPRO_CC < 0x590) - #error "Denied" - #endif], - _BAD_COMPILER=,_BAD_COMPILER=1) - if test -n "$_BAD_COMPILER"; then - _res="no" - AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .]) - else - _res="yes" - fi - AC_TRY_COMPILE([], - [#if (__SUNPRO_CC >= 0x5100) - #error "Sun C++ 5.10 or above" - #endif], - _ABOVE_SS12U1=,_ABOVE_SS12U1=1) - if test "$_ABOVE_SS12U1"; then - # disable xannotate - CXXFLAGS="$CXXFLAGS -xannotate=no" - fi - AC_MSG_RESULT([$_res]) - AC_LANG_RESTORE - else - LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs" - LIBS="-lc $LIBS" - ASFLAGS="$ASFLAGS -fPIC" - DSO_LDOPTS='-shared' - WARNINGS_AS_ERRORS='-Werror' - _WARNINGS_CFLAGS='' - _WARNINGS_CXXFLAGS='' - if test "$OS_RELEASE" = "5.3"; then - AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES) - fi - fi - if test "$OS_RELEASE" = "5.5.1"; then - AC_DEFINE(NEED_USLEEP_PROTOTYPE) - fi - ;; - -*-sunos*) - DSO_LDOPTS='-Bdynamic' - MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@' - MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@' - AC_DEFINE(SUNOS4) - AC_DEFINE(SPRINTF_RETURNS_STRING) - case "$(target_os)" in - sunos4.1*) - DLL_SUFFIX='.so.1.0' - ;; - esac - ;; - -esac - -AC_SUBST_LIST(MMX_FLAGS) -AC_SUBST_LIST(SSE_FLAGS) -AC_SUBST_LIST(SSE2_FLAGS) - -case "$target" in -*-*linux*) - # Includes linux-android - AC_DEFINE(XP_LINUX) - ;; -esac - -AC_SUBST(MOZ_LINKER) -if test -n "$MOZ_LINKER"; then - AC_DEFINE(MOZ_LINKER) -fi - -dnl Only one oddball right now (QNX), but this gives us flexibility -dnl if any other platforms need to override this in the future. -AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO) - -dnl ======================================================== -dnl = Flags to strip unused symbols from .so components and -dnl = to export jemalloc symbols when linking a program -dnl ======================================================== -case "$target" in - *-linux*|*-kfreebsd*-gnu|*-gnu*) - MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script' - ;; - *-solaris*) - if test -z "$GNU_CC"; then - MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile' - else - if test -z "$GCC_USE_GNU_LD"; then - MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile' - else - MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script' - fi - fi - ;; - *-darwin*) - MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list' - ;; - *-mingw*) - if test -n "$GNU_CC"; then - MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script' - fi - ;; -esac - -if test -z "$COMPILE_ENVIRONMENT"; then - SKIP_COMPILER_CHECKS=1 - SKIP_LIBRARY_CHECKS=1 - PKG_SKIP_STRIP=1 -else - MOZ_COMPILER_OPTS -fi # COMPILE_ENVIRONMENT - -if test -z "$SKIP_COMPILER_CHECKS"; then -dnl Checks for typedefs, structures, and compiler characteristics. -dnl ======================================================== -AC_HEADER_STDC -AC_C_CONST -AC_TYPE_MODE_T -AC_TYPE_OFF_T -AC_TYPE_PID_T -AC_TYPE_SIZE_T -AC_LANG_CPLUSPLUS -AC_LANG_C - -AC_LANG_CPLUSPLUS - -MOZ_CXX11 - -AC_LANG_C - -dnl Check for .hidden assembler directive and visibility attribute. -dnl Borrowed from glibc configure.in -dnl =============================================================== -if test "$GNU_CC" -a "$OS_TARGET" != WINNT; then - AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE) - AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE) - case "$OS_TARGET" in - Darwin) - VISIBILITY_FLAGS='-fvisibility=hidden -fvisibility-inlines-hidden' - ;; - *) - VISIBILITY_FLAGS="-I${DIST}/system_wrappers -include ${_topsrcdir}/config/gcc_hidden.h" - WRAP_SYSTEM_INCLUDES=1 - ;; - esac -fi # GNU_CC - -# visibility hidden flag for Sun Studio on Solaris -if test "$SOLARIS_SUNPRO_CC"; then -VISIBILITY_FLAGS='-xldscope=hidden' -fi # Sun Studio on Solaris - -case "${OS_TARGET}" in -WINNT|Darwin|Android) - ;; -*) - STL_FLAGS="-I${DIST}/stl_wrappers" - WRAP_STL_INCLUDES=1 - ;; -esac - -AC_SUBST(WRAP_SYSTEM_INCLUDES) -AC_SUBST_LIST(VISIBILITY_FLAGS) - -dnl Checks for header files. -dnl ======================================================== -AC_HEADER_DIRENT -case "$target_os" in -freebsd*|openbsd*) -# for stuff like -lXshm - CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}" - ;; -esac -MOZ_CHECK_COMMON_HEADERS - -dnl These are all the places some variant of statfs can be hiding. -MOZ_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h) - -dnl Quota support -MOZ_CHECK_HEADERS(sys/quota.h sys/sysmacros.h) -MOZ_CHECK_HEADERS([linux/quota.h],,,[#include ]) - -dnl SCTP support - needs various network include headers -MOZ_CHECK_HEADERS([linux/if_addr.h linux/rtnetlink.h],,,[#include ]) -MOZ_CHECK_HEADERS(sys/queue.h) - -MOZ_CHECK_HEADERS(sys/types.h netinet/in.h byteswap.h) - -dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally -AC_CACHE_CHECK(for sockaddr_in.sin_len, - ac_cv_sockaddr_in_sin_len, - [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H - #include - #endif - #include - struct sockaddr_in x; - void *foo = (void*) &x.sin_len;], - [], - [ac_cv_sockaddr_in_sin_len=true], - [ac_cv_sockaddr_in_sin_len=false])]) -if test "$ac_cv_sockaddr_in_sin_len" = true ; then - AC_DEFINE(HAVE_SIN_LEN) -dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too) - AC_DEFINE(HAVE_SCONN_LEN) -fi - -AC_CACHE_CHECK(for sockaddr_in6.sin6_len, - ac_cv_sockaddr_in6_sin6_len, - [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H - #include - #endif - #include - struct sockaddr_in6 x; - void *foo = (void*) &x.sin6_len;], - [], - [ac_cv_sockaddr_in6_sin6_len=true], - [ac_cv_sockaddr_in6_sin6_len=false])]) -if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then - AC_DEFINE(HAVE_SIN6_LEN) -fi - -AC_CACHE_CHECK(for sockaddr.sa_len, - ac_cv_sockaddr_sa_len, - [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H - #include - #endif - #include - struct sockaddr x; - void *foo = (void*) &x.sa_len;], - [], - [ac_cv_sockaddr_sa_len=true], - [ac_cv_sockaddr_sa_len=false])]) -if test "$ac_cv_sockaddr_sa_len" = true ; then - AC_DEFINE(HAVE_SA_LEN) -fi - -MOZ_ARG_ENABLE_BOOL(dtrace, - [ --enable-dtrace build with dtrace support if available (default=no)], - [enable_dtrace="yes"],) -if test "x$enable_dtrace" = "xyes"; then - MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1) - if test -n "$HAVE_DTRACE"; then - AC_DEFINE(INCLUDE_MOZILLA_DTRACE) - else - AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]); - fi -fi -AC_SUBST(HAVE_DTRACE) - -MOZ_LINUX_PERF_EVENT - -dnl Checks for libraries. -dnl ======================================================== -case $target in -*-hpux11.*) - ;; -*) - AC_CHECK_LIB(c_r, gethostbyname_r) - ;; -esac - -dnl We don't want to link with libdl even if it's present on OS X, since -dnl it's not used and not part of the default installation. OS/2 has dlfcn -dnl in libc. -dnl We don't want to link against libm or libpthread on Darwin since -dnl they both are just symlinks to libSystem and explicitly linking -dnl against libSystem causes issues when debugging (see bug 299601). -case $target in -*-darwin*) - ;; -*) - AC_SEARCH_LIBS(dlopen, dl, - MOZ_CHECK_HEADER(dlfcn.h, - AC_DEFINE(HAVE_DLOPEN))) - ;; -esac - -_SAVE_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS -D_GNU_SOURCE" -AC_CHECK_FUNCS(dladdr memmem) -CFLAGS="$_SAVE_CFLAGS" - -if test ! "$GNU_CXX"; then - - case $target in - *-aix*) - AC_CHECK_LIB(C_r, demangle) - ;; - *) - AC_CHECK_LIB(C, demangle) - ;; - esac -fi - -AC_CHECK_LIB(socket, socket) - -XLDFLAGS="$X_LIBS" -XLIBS="$X_EXTRA_LIBS" - -dnl ======================================================== -dnl Checks for X libraries. -dnl Ordering is important. -dnl Xt is dependent upon SM as of X11R6 -dnl ======================================================== -if test "$no_x" = "yes"; then - AC_DEFINE(NO_X11) -else - AC_DEFINE_UNQUOTED(FUNCPROTO,15) - XLIBS="-lX11 $XLIBS" - _SAVE_LDFLAGS="$LDFLAGS" - LDFLAGS="$XLDFLAGS $LDFLAGS" - AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"], - [MISSING_X="$MISSING_X -lX11"], $XLIBS) - AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"], - [MISSING_X="$MISSING_X -lXext"], $XLIBS) - - AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [ - unset ac_cv_lib_Xt_XtFree - AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS) - AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS) - AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"], - [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS) - ]) - - # AIX needs the motif library linked before libXt to prevent - # crashes in plugins linked against Motif - Bug #98892 - case "${target_os}" in - aix*) - XT_LIBS="-lXm $XT_LIBS" - ;; - esac - - dnl ======================================================== - dnl = Check for XShm - dnl ======================================================== - AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,, - $XLIBS $XEXT_LIBS) - - dnl ======================================================== - dnl = Check for Xss - dnl ======================================================== - MOZ_CHECK_HEADER(X11/extensions/scrnsaver.h, - AC_CHECK_LIB(Xss, XScreenSaverQueryInfo, - [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS" - AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS)) - - LDFLAGS="$_SAVE_LDFLAGS" -fi # $no_x - -AC_SUBST_LIST(XCFLAGS) -AC_SUBST_LIST(XLDFLAGS) -AC_SUBST_LIST(XLIBS) -AC_SUBST_LIST(XEXT_LIBS) -AC_SUBST_LIST(XT_LIBS) -AC_SUBST_LIST(XSS_LIBS) - -dnl ======================================================== -dnl = pthread support -dnl = Start by checking whether the system support pthreads -dnl ======================================================== -case "$target_os" in -darwin*) - MOZ_USE_PTHREADS=1 - ;; -*) - AC_CHECK_LIB(pthreads, pthread_create, - MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads", - AC_CHECK_LIB(pthread, pthread_create, - MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread", - AC_CHECK_LIB(c_r, pthread_create, - MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r", - AC_CHECK_LIB(c, pthread_create, - MOZ_USE_PTHREADS=1 - ) - ) - ) - ) - ;; -esac - -dnl ======================================================== -dnl Check the command line for --with-pthreads -dnl ======================================================== -MOZ_ARG_WITH_BOOL(pthreads, -[ --with-pthreads Force use of system pthread library with NSPR ], -[ if test "$MOZ_USE_PTHREADS"x = x; then - AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]); -fi], - MOZ_USE_PTHREADS= - _PTHREAD_LDFLAGS= -) - -dnl ======================================================== -dnl Do the platform specific pthread hackery -dnl ======================================================== -if test "$MOZ_USE_PTHREADS"x != x -then - dnl - dnl See if -pthread is supported. - dnl - rm -f conftest* - ac_cv_have_dash_pthread=no - AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread) - echo 'int main() { return 0; }' | cat > conftest.c - ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1 - if test $? -eq 0; then - if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then - ac_cv_have_dash_pthread=yes - case "$target_os" in - freebsd*) -# Freebsd doesn't use -pthread for compiles, it uses them for linking - ;; - *) - CFLAGS="$CFLAGS -pthread" - CXXFLAGS="$CXXFLAGS -pthread" - ;; - esac - fi - fi - rm -f conftest* - AC_MSG_RESULT($ac_cv_have_dash_pthread) - - dnl - dnl See if -pthreads is supported. - dnl - ac_cv_have_dash_pthreads=no - if test "$ac_cv_have_dash_pthread" = "no"; then - AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads) - echo 'int main() { return 0; }' | cat > conftest.c - ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1 - if test $? -eq 0; then - if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then - ac_cv_have_dash_pthreads=yes - CFLAGS="$CFLAGS -pthreads" - CXXFLAGS="$CXXFLAGS -pthreads" - fi - fi - rm -f conftest* - AC_MSG_RESULT($ac_cv_have_dash_pthreads) - fi - - case "$target" in - *-*-freebsd*) - AC_DEFINE(_REENTRANT) - AC_DEFINE(_THREAD_SAFE) - dnl -pthread links in -lpthread, so don't specify it explicitly. - if test "$ac_cv_have_dash_pthread" = "yes"; then - _PTHREAD_LDFLAGS="-pthread" - fi - ;; - - *-*-openbsd*|*-*-bsdi*) - AC_DEFINE(_REENTRANT) - AC_DEFINE(_THREAD_SAFE) - dnl -pthread links in -lc_r, so don't specify it explicitly. - if test "$ac_cv_have_dash_pthread" = "yes"; then - _PTHREAD_LDFLAGS="-pthread" - fi - ;; - - *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*) - AC_DEFINE(_REENTRANT) - ;; - - *-aix4.3*|*-aix5*) - AC_DEFINE(_REENTRANT) - ;; - - *-hpux11.*) - AC_DEFINE(_REENTRANT) - ;; - - *-*-solaris*) - AC_DEFINE(_REENTRANT) - if test "$SOLARIS_SUNPRO_CC"; then - CFLAGS="$CFLAGS -mt" - CXXFLAGS="$CXXFLAGS -mt" - fi - ;; - esac - LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}" - AC_SUBST(MOZ_USE_PTHREADS) - MOZ_CHECK_HEADERS(pthread.h) -fi - - -dnl Checks for library functions. -dnl ======================================================== -AC_PROG_GCC_TRADITIONAL -AC_FUNC_MEMCMP -AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize gmtime_r localtime_r arc4random arc4random_buf mallinfo gettid lchown setpriority strerror syscall) - -dnl check for clock_gettime(), the CLOCK_MONOTONIC clock -AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC), - ac_cv_clock_monotonic, - [for libs in "" -lrt; do - _SAVE_LIBS="$LIBS" - LIBS="$LIBS $libs" - AC_TRY_LINK([#include ], - [ struct timespec ts; - clock_gettime(CLOCK_MONOTONIC, &ts); ], - ac_cv_clock_monotonic=$libs - LIBS="$_SAVE_LIBS" - break, - ac_cv_clock_monotonic=no) - LIBS="$_SAVE_LIBS" - done]) -if test "$ac_cv_clock_monotonic" != "no"; then - HAVE_CLOCK_MONOTONIC=1 - REALTIME_LIBS=$ac_cv_clock_monotonic - AC_DEFINE(HAVE_CLOCK_MONOTONIC) - AC_SUBST(HAVE_CLOCK_MONOTONIC) - AC_SUBST_LIST(REALTIME_LIBS) -fi - -dnl check for wcrtomb/mbrtowc -dnl ======================================================================= -if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then -AC_LANG_SAVE -AC_LANG_CPLUSPLUS -AC_CACHE_CHECK(for wcrtomb, - ac_cv_have_wcrtomb, - [AC_TRY_LINK([#include ], - [mbstate_t ps={0};wcrtomb(0,'f',&ps);], - ac_cv_have_wcrtomb="yes", - ac_cv_have_wcrtomb="no")]) -if test "$ac_cv_have_wcrtomb" = "yes"; then - AC_DEFINE(HAVE_WCRTOMB) -fi -AC_CACHE_CHECK(for mbrtowc, - ac_cv_have_mbrtowc, - [AC_TRY_LINK([#include ], - [mbstate_t ps={0};mbrtowc(0,0,0,&ps);], - ac_cv_have_mbrtowc="yes", - ac_cv_have_mbrtowc="no")]) -if test "$ac_cv_have_mbrtowc" = "yes"; then - AC_DEFINE(HAVE_MBRTOWC) -fi -AC_LANG_RESTORE -fi - -AC_CACHE_CHECK( - [for res_ninit()], - ac_cv_func_res_ninit, - [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then - dnl no need for res_ninit() on NetBSD and OpenBSD - ac_cv_func_res_ninit=no - else - AC_TRY_LINK([ - #ifdef linux - #define _BSD_SOURCE 1 - #endif - #include - #include - #include - #include - ], - [int foo = res_ninit(&_res);], - [ac_cv_func_res_ninit=yes], - [ac_cv_func_res_ninit=no]) - fi - ]) - -if test "$ac_cv_func_res_ninit" = "yes"; then - AC_DEFINE(HAVE_RES_NINIT) -dnl must add the link line we do something as foolish as this... dougt -dnl else -dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT), -dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT))) -fi - -AC_LANG_CPLUSPLUS - -ICONV_LIBS= - -case $target_os in - darwin*|mingw*) - ;; - *) - -AC_CHECK_LIB(c, iconv, [ICONV_LIBS=], - AC_CHECK_LIB(iconv, iconv, [ICONV_LIBS="-liconv"], - AC_CHECK_LIB(iconv, libiconv, [ICONV_LIBS="-liconv"]))) -_SAVE_LIBS=$LIBS -LIBS="$LIBS $ICONV_LIBS" -AC_CACHE_CHECK( - [for iconv()], - ac_cv_func_iconv, - [AC_TRY_LINK([ - #include - #include - ], - [ - iconv_t h = iconv_open("", ""); - iconv(h, NULL, NULL, NULL, NULL); - iconv_close(h); - ], - [ac_cv_func_iconv=yes], - [ac_cv_func_iconv=no] - )] - ) -if test "$ac_cv_func_iconv" = "yes"; then - AC_DEFINE(HAVE_ICONV) - LIBICONV="$ICONV_LIBS" - AC_CACHE_CHECK( - [for iconv() with const input], - ac_cv_func_const_iconv, - [AC_TRY_COMPILE([ - #include - #include - ], - [ - const char *input = "testing"; - iconv_t h = iconv_open("", ""); - iconv(h, &input, NULL, NULL, NULL); - iconv_close(h); - ], - [ac_cv_func_const_iconv=yes], - [ac_cv_func_const_iconv=no] - )] - ) - if test "$ac_cv_func_const_iconv" = "yes"; then - AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT) - fi -fi -LIBS=$_SAVE_LIBS - - ;; -esac - -AC_SUBST_LIST(ICONV_LIBS) - -AM_LANGINFO_CODESET - -AC_LANG_C - -dnl ********************** -dnl *** va_copy checks *** -AC_CACHE_CHECK([for an implementation of va_copy()], - ac_cv_va_copy, - [AC_TRY_COMPILE([#include - #include - void f (int i, ...) { - va_list args1, args2; - va_start (args1, i); - va_copy (args2, args1); - if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42) - exit (1); - va_end (args1); va_end (args2); - }], - [f(0, 42); return 0], - [ac_cv_va_copy=yes], - [ac_cv_va_copy=no] - )] -) -AC_CACHE_CHECK([whether va_list can be copied by value], - ac_cv_va_val_copy, - [AC_TRY_COMPILE([#include - #include - void f (int i, ...) { - va_list args1, args2; - va_start (args1, i); - args2 = args1; - if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42) - exit (1); - va_end (args1); va_end (args2); - }], - [f(0, 42); return 0], - [ac_cv_va_val_copy=yes], - [ac_cv_va_val_copy=no], - )] -) -if test "x$ac_cv_va_copy" = "xyes"; then - AC_DEFINE(VA_COPY, va_copy) - AC_DEFINE(HAVE_VA_COPY) -fi - -if test "x$ac_cv_va_val_copy" = "xno"; then - AC_DEFINE(HAVE_VA_LIST_AS_ARRAY) -fi - -dnl =================================================================== -dnl ======================================================== -dnl Put your C++ language/feature checks below -dnl ======================================================== -AC_LANG_CPLUSPLUS - -ARM_ABI_PREFIX= -if test "$GNU_CC"; then - if test "$CPU_ARCH" = "arm" ; then - AC_CACHE_CHECK(for ARM EABI, - ac_cv_gcc_arm_eabi, - [AC_TRY_COMPILE([], - [ -#if defined(__ARM_EABI__) - return 0; -#else -#error Not ARM EABI. -#endif - ], - ac_cv_gcc_arm_eabi="yes", - ac_cv_gcc_arm_eabi="no")]) - if test "$ac_cv_gcc_arm_eabi" = "yes"; then - HAVE_ARM_EABI=1 - ARM_ABI_PREFIX=eabi- - else - ARM_ABI_PREFIX=oabi- - fi - fi - - TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}" -fi - -dnl Check to see if we can resolve ambiguity with |using|. -AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity, - ac_cv_cpp_ambiguity_resolving_using, - [AC_TRY_COMPILE(class X { - public: int go(const X&) {return 3;} - int jo(const X&) {return 3;} - }; - class Y : public X { - public: int go(int) {return 2;} - int jo(int) {return 2;} - using X::jo; - private: using X::go; - };, - X x; Y y; y.jo(x);, - ac_cv_cpp_ambiguity_resolving_using=yes, - ac_cv_cpp_ambiguity_resolving_using=no)]) -if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then - AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING) -fi - -dnl See if a dynamic_cast to void* gives the most derived object. -AC_CACHE_CHECK(for C++ dynamic_cast to void*, - ac_cv_cpp_dynamic_cast_void_ptr, - [AC_TRY_RUN([class X { int i; public: virtual ~X() { } }; - class Y { int j; public: virtual ~Y() { } }; - class Z : public X, public Y { int k; }; - - int main() { - Z mdo; - X *subx = (X*)&mdo; - Y *suby = (Y*)&mdo; - return !((((void*)&mdo != (void*)subx) && - ((void*)&mdo == dynamic_cast(subx))) || - (((void*)&mdo != (void*)suby) && - ((void*)&mdo == dynamic_cast(suby)))); - }], - ac_cv_cpp_dynamic_cast_void_ptr=yes, - ac_cv_cpp_dynamic_cast_void_ptr=no, - ac_cv_cpp_dynamic_cast_void_ptr=no)]) -if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then - AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR) -fi - - -# try harder, when checking for __thread support, see bug 521750 comment #33 and below -# We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is -# enabled, the linker in xcode 4.1 will crash. Without this it would crash when -# linking XUL. -_SAVE_LDFLAGS=$LDFLAGS -LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS" -AC_CACHE_CHECK(for __thread keyword for TLS variables, - ac_cv_thread_keyword, - [AC_TRY_LINK([__thread bool tlsIsMainThread = false;], - [return tlsIsMainThread;], - ac_cv_thread_keyword=yes, - ac_cv_thread_keyword=no)]) -LDFLAGS=$_SAVE_LDFLAGS -# The custom dynamic linker doesn't support TLS variables -MOZ_TLS= -if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then - # mips builds fail with TLS variables because of a binutils bug. - # See bug 528687 - # OpenBSD doesn't have TLS support, and the test succeeds with clang++ - case "${target}" in - mips*-*) - : - ;; - *-android*|*-linuxandroid*) - : - ;; - *-openbsd*) - : - ;; - *) - AC_DEFINE(HAVE_THREAD_TLS_KEYWORD) - MOZ_TLS=1 - ;; - esac -fi - -dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments. -if test -n "$MOZ_LINKER"; then - if test "$CPU_ARCH" = arm; then - dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments - if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then - LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000" - _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000" - fi - fi - -dnl gold emits wrong sysv-style elf hash tables when building both sysv and -dnl style tables. https://sourceware.org/bugzilla/show_bug.cgi?id=13597 -dnl Since the linker only understands the sysv ones, no need to build the -dnl gnu style tables anyways. - LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv" -fi - -dnl The custom linker doesn't support text relocations, but NDK >= r6b -dnl creates some (http://code.google.com/p/android/issues/detail?id=23203) -dnl We however want to avoid these text relocations, and this can be done -dnl by making gcc not link crtbegin and crtend. In the broken NDKs, crtend -dnl doesn't contain anything at all, beside placeholders for some sections, -dnl and crtbegin only contains a finalizer function that calls -dnl __cxa_finalize. The custom linker actually takes care of calling -dnl __cxa_finalize when the library doesn't call it itself, which makes it -dnl safe not to link crtbegin. Besides, previous versions of the NDK didn't -dnl link crtbegin and crtend at all. -if test -n "$MOZ_LINKER" -a "$OS_TARGET" = "Android"; then - AC_CACHE_CHECK([whether the CRT objects have text relocations], - ac_cv_crt_has_text_relocations, - [echo 'int foo() { return 0; }' > conftest.cpp - if AC_TRY_COMMAND(${CXX-g++} -o conftest${DLL_SUFFIX} $CXXFLAGS $DSO_LDOPTS $LDFLAGS conftest.cpp $LIBS 1>&5) && - test -s conftest${DLL_SUFFIX}; then - if ${TOOLCHAIN_PREFIX}readelf -d conftest${DLL_SUFFIX} | grep TEXTREL > /dev/null; then - ac_cv_crt_has_text_relocations=yes - else - ac_cv_crt_has_text_relocations=no - fi - else - AC_ERROR([couldn't compile a simple C file]) - fi - rm -rf conftest*]) - if test "$ac_cv_crt_has_text_relocations" = yes; then - dnl While we want libraries to skip the CRT files, we don't want - dnl executables to be treated the same way. We thus set the flag - dnl in DSO_LDOPTS and not LDFLAGS. However, to pass it to nspr, - dnl we need to use LDFLAGS because nspr doesn't inherit DSO_LDOPTS. - dnl Using LDFLAGS in nspr is safe, since we only really build - dnl libraries there. - DSO_LDOPTS="$DSO_LDOPTS -nostartfiles" - NSPR_LDFLAGS="$NSPR_LDFLAGS -nostartfiles" - fi -fi - -dnl See if compiler supports some gcc-style attributes - -AC_CACHE_CHECK(for __attribute__((always_inline)), - ac_cv_attribute_always_inline, - [AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));], - [], - ac_cv_attribute_always_inline=yes, - ac_cv_attribute_always_inline=no)]) - -dnl End of C++ language/feature checks -AC_LANG_C - -dnl ======================================================== -dnl = Internationalization checks -dnl ======================================================== dnl -dnl Internationalization and Locale support is different -dnl on various UNIX platforms. Checks for specific i18n -dnl features go here. - -dnl check for LC_MESSAGES -AC_CACHE_CHECK(for LC_MESSAGES, - ac_cv_i18n_lc_messages, - [AC_TRY_COMPILE([#include ], - [int category = LC_MESSAGES;], - ac_cv_i18n_lc_messages=yes, - ac_cv_i18n_lc_messages=no)]) -if test "$ac_cv_i18n_lc_messages" = yes; then - AC_DEFINE(HAVE_I18N_LC_MESSAGES) -fi - -AC_HAVE_FUNCS(localeconv) -fi # ! SKIP_COMPILER_CHECKS - -MOZ_CHECK_ALLOCATOR - -TARGET_XPCOM_ABI= -if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then - TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}" - AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"]) -fi - -dnl We can't run TRY_COMPILE tests on Windows, so hard-code some -dnl features that Windows actually does support. - -if test -n "$SKIP_COMPILER_CHECKS"; then - dnl Windows has malloc.h - AC_DEFINE(MALLOC_H, []) - AC_DEFINE(HAVE_FORCEINLINE) - AC_DEFINE(HAVE_LOCALECONV) -fi # SKIP_COMPILER_CHECKS - -dnl Mozilla specific options -dnl ======================================================== -dnl The macros used for command line options -dnl are defined in build/autoconf/altoptions.m4. - -dnl ======================================================== -dnl = -dnl = Check for external package dependencies -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(External Packages) - -MOZ_ARG_WITH_STRING(libxul-sdk, -[ --with-libxul-sdk=PFX Use the libXUL SDK at ], - AC_MSG_ERROR([--with-libxul-sdk is not supported anymore.])) - -case "$OS_TARGET" in -WINNT|Darwin|Android) - MOZ_FOLD_LIBS=1 - ;; -*) - MOZ_FOLD_LIBS= - ;; -esac - -MOZ_CONFIG_NSPR() - -dnl set GRE_MILESTONE -dnl ======================================================== -GRE_MILESTONE=`tail -n 1 "$_topsrcdir"/config/milestone.txt 2>/dev/null || tail -1 "$_topsrcdir"/config/milestone.txt` -AC_SUBST(GRE_MILESTONE) - -# set RELEASE_BUILD and NIGHTLY_BUILD variables depending on the cycle we're in -# The logic works like this: -# - if we have "a1" in GRE_MILESTONE, we're building Nightly (define NIGHTLY_BUILD) -# - otherwise, if we have "a" in GRE_MILESTONE, we're building Nightly or Aurora -# - otherwise, we're building Release/Beta (define RELEASE_BUILD) -case "$GRE_MILESTONE" in - *a1*) - NIGHTLY_BUILD=1 - AC_DEFINE(NIGHTLY_BUILD) - ;; - *a*) - ;; - *) - RELEASE_BUILD=1 - AC_DEFINE(RELEASE_BUILD) - ;; -esac -AC_SUBST(NIGHTLY_BUILD) -AC_SUBST(RELEASE_BUILD) - -dnl ======================================================== -dnl Multiprocess Firefox Testing UI - Nightly and Aurora -dnl To be removed in Bug 1003313 -dnl ======================================================== -if test -z "$RELEASE_BUILD"; then - E10S_TESTING_ONLY=1 - AC_DEFINE(E10S_TESTING_ONLY) -fi - -AC_SUBST(E10S_TESTING_ONLY) - -dnl ======================================================== -dnl system libevent Support -dnl ======================================================== -MOZ_ARG_WITH_STRING(system-libevent, -[ --with-system-libevent[=PFX] - Use system libevent [installed at prefix PFX]], - LIBEVENT_DIR=$withval) - -_SAVE_CFLAGS=$CFLAGS -_SAVE_LDFLAGS=$LDFLAGS -_SAVE_LIBS=$LIBS -if test "$LIBEVENT_DIR" = yes; then - PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent, - MOZ_NATIVE_LIBEVENT=1, - LIBEVENT_DIR=/usr) -fi -if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then - MOZ_NATIVE_LIBEVENT= -elif test -z "$MOZ_NATIVE_LIBEVENT"; then - CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS" - LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS" - MOZ_CHECK_HEADER(event.h, - [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then - AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include]) - fi], - AC_MSG_ERROR([--with-system-libevent requested but event.h not found])) - AC_CHECK_LIB(event, event_init, - [MOZ_NATIVE_LIBEVENT=1 - MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include" - MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"], - [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=]) -fi -CFLAGS=$_SAVE_CFLAGS -LDFLAGS=$_SAVE_LDFLAGS -LIBS=$_SAVE_LIBS - -AC_SUBST(MOZ_NATIVE_LIBEVENT) - -dnl ======================================================== -dnl = If NSS was not detected in the system, -dnl = use the one in the source tree (mozilla/security/nss) -dnl ======================================================== - -MOZ_ARG_WITH_BOOL(system-nss, -[ --with-system-nss Use system installed NSS], - _USE_SYSTEM_NSS=1 ) - -if test -n "$_USE_SYSTEM_NSS"; then - AM_PATH_NSS(3.22, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) -fi - -if test -n "$MOZ_NATIVE_NSS"; then - NSS_LIBS="$NSS_LIBS -lcrmf" -else - NSS_CFLAGS="-I${DIST}/include/nss" -fi - -dnl ====================== -dnl Detect yasm -dnl ====================== - -AC_MSG_CHECKING([for YASM assembler]) -AC_CHECK_PROGS(YASM, yasm, "") - -if test -n "$YASM"; then - AC_MSG_CHECKING([yasm version]) - dnl Pull out yasm's version string - YASM_VERSION=`yasm --version | $AWK '/^yasm/ { print $2 }'` - _YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'` - _YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'` - _YASM_RELEASE=` echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'` - _YASM_BUILD=` echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'` - AC_MSG_RESULT([$_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION.$_YASM_RELEASE ($YASM_VERSION)]) -fi - -if test -z "$SKIP_LIBRARY_CHECKS"; then -dnl system JPEG support -dnl ======================================================== -MOZ_ARG_WITH_STRING(system-jpeg, -[ --with-system-jpeg[=PFX] - Use system libjpeg [installed at prefix PFX]], - JPEG_DIR=$withval) - -_SAVE_CFLAGS=$CFLAGS -_SAVE_LDFLAGS=$LDFLAGS -_SAVE_LIBS=$LIBS -if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then - CFLAGS="-I${JPEG_DIR}/include $CFLAGS" - LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS" -fi -if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then - MOZ_NATIVE_JPEG= -else - AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [MOZ_NATIVE_JPEG=1 MOZ_JPEG_LIBS="-ljpeg"], MOZ_NATIVE_JPEG=) -fi - -if test "$MOZ_NATIVE_JPEG" = 1; then - AC_TRY_COMPILE([ #include - #include - #include ], - [ #if JPEG_LIB_VERSION < $MOZJPEG - #error "Insufficient JPEG library version ($MOZJPEG required)." - #endif - #ifndef JCS_EXTENSIONS - #error "libjpeg-turbo JCS_EXTENSIONS required" - #endif - ], - MOZ_NATIVE_JPEG=1, - AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg])) -fi -CFLAGS=$_SAVE_CFLAGS -LDFLAGS=$_SAVE_LDFLAGS -LIBS=$_SAVE_LIBS - -if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$MOZ_NATIVE_JPEG" = 1; then - MOZ_JPEG_CFLAGS="-I${JPEG_DIR}/include" - MOZ_JPEG_LIBS="-L${JPEG_DIR}/lib ${MOZ_JPEG_LIBS}" -fi -fi # SKIP_LIBRARY_CHECKS - -dnl system ZLIB support -dnl ======================================================== -MOZ_ZLIB_CHECK([1.2.3]) - -if test "$MOZ_LINKER" = 1 -a "$MOZ_NATIVE_ZLIB" != 1; then - AC_MSG_ERROR([Custom dynamic linker requires --with-system-zlib]) -fi - -MOZ_PNG_ARM_NEON= - -if test -z "$SKIP_LIBRARY_CHECKS"; then -dnl system BZIP2 Support -dnl ======================================================== -MOZ_ARG_WITH_STRING(system-bz2, -[ --with-system-bz2[=PFX] - Use system libbz2 [installed at prefix PFX]], - BZ2_DIR=$withval) - -_SAVE_CFLAGS=$CFLAGS -_SAVE_LDFLAGS=$LDFLAGS -_SAVE_LIBS=$LIBS -if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then - CFLAGS="-I${BZ2_DIR}/include $CFLAGS" - LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS" -fi -if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then - MOZ_NATIVE_BZ2= -else - AC_CHECK_LIB(bz2, BZ2_bzread, [MOZ_NATIVE_BZ2=1 MOZ_BZ2_LIBS="-lbz2"], - [MOZ_NATIVE_BZ2= MOZ_BZ2_CFLAGS= MOZ_BZ2_LIBS=]) -fi -CFLAGS=$_SAVE_CFLAGS -LDFLAGS=$_SAVE_LDFLAGS -LIBS=$_SAVE_LIBS - -if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$MOZ_NATIVE_BZ2" = 1; then - MOZ_BZ2_CFLAGS="-I${BZ2_DIR}/include" - MOZ_BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}" -fi - -dnl ======================================================== -dnl system PNG Support -dnl ======================================================== -MOZ_ARG_WITH_STRING(system-png, -[ --with-system-png[=PFX] - Use system libpng [installed at prefix PFX]], - PNG_DIR=$withval) - -_SAVE_CFLAGS=$CFLAGS -_SAVE_LDFLAGS=$LDFLAGS -_SAVE_LIBS=$LIBS -if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then - CFLAGS="-I${PNG_DIR}/include $CFLAGS" - LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS" -fi -if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then - MOZ_NATIVE_PNG= -else - AC_CHECK_LIB(png, png_get_valid, [MOZ_NATIVE_PNG=1 MOZ_PNG_LIBS="-lpng"], - AC_MSG_ERROR([--with-system-png requested but no working libpng found])) - AC_CHECK_LIB(png, png_get_acTL, , - AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support])) -fi -if test "$MOZ_NATIVE_PNG" = 1; then - AC_TRY_COMPILE([ #include - #include - #include ], - [ #if PNG_LIBPNG_VER < $MOZPNG - #error "Insufficient libpng version ($MOZPNG required)." - #endif - #ifndef PNG_UINT_31_MAX - #error "Insufficient libpng version." - #endif ], - MOZ_NATIVE_PNG=1, - AC_MSG_ERROR([--with-system-png requested but no working libpng found])) -fi -CFLAGS=$_SAVE_CFLAGS -LDFLAGS=$_SAVE_LDFLAGS -LIBS=$_SAVE_LIBS - -if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_NATIVE_PNG" = 1; then - MOZ_PNG_CFLAGS="-I${PNG_DIR}/include" - MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}" -fi - -MOZ_PNG_ARM_NEON_CHECK= -if test "$MOZ_NATIVE_PNG" != 1 -a "$CPU_ARCH" = "arm" ; then - MOZ_ARG_ENABLE_STRING(png-arm-neon-support, - [ --enable-png-arm-neon-support=TYPE - Options include: - no - check (default) - nocheck (faster but unsafe)], - [MOZ_PNG_ARM_NEON_SUPPORT=$enableval ] ) - case "$MOZ_PNG_ARM_NEON_SUPPORT" in - no) - # enable-png-arm-neon-support = no - ;; - nocheck) - # enable-png-arm-neon-support = nocheck - MOZ_PNG_ARM_NEON=1 - ;; - *) - MOZ_PNG_ARM_NEON=1 - MOZ_PNG_ARM_NEON_CHECK=1 - ;; - esac -fi - -AC_SUBST(MOZ_PNG_ARM_NEON_CHECK) - -fi # SKIP_LIBRARY_CHECKS - -AC_SUBST(MOZ_PNG_ARM_NEON) - -dnl ======================================================== -dnl system HunSpell Support -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(system-hunspell, -[ --enable-system-hunspell - Use system hunspell (located with pkgconfig)], - MOZ_NATIVE_HUNSPELL=1 ) - -if test -n "$MOZ_NATIVE_HUNSPELL"; then - PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell) -fi - -AC_SUBST(MOZ_NATIVE_HUNSPELL) - -dnl ======================================================== -dnl system libffi Support -dnl ======================================================== -MOZ_CONFIG_FFI() - -MOZ_ARG_ENABLE_BOOL(shared-js, -[ --enable-shared-js - Create a shared JavaScript library.], - JS_SHARED_LIBRARY=1, - JS_SHARED_LIBRARY=) - -dnl ======================================================== -dnl Java SDK support -dnl ======================================================== - -JAVA_BIN_PATH= -MOZ_ARG_WITH_STRING(java-bin-path, -[ --with-java-bin-path=dir - Location of Java binaries (java, javac, jar)], - JAVA_BIN_PATH=$withval) - -dnl ======================================================== -dnl = -dnl = Application -dnl = -dnl ======================================================== - -MOZ_ARG_HEADER(Application) - -ENABLE_TESTS=1 -ENABLE_SYSTEM_EXTENSION_DIRS=1 -MOZ_BRANDING_DIRECTORY= -MOZ_OFFICIAL_BRANDING= -MOZ_FEEDS=1 -MOZ_WEBAPP_RUNTIME= -MOZ_AUTH_EXTENSION=1 -if test "$MOZ_IOS"; then - MOZ_AUTH_EXTENSION= -fi -MOZ_RAW= -MOZ_VORBIS= -MOZ_TREMOR= -MOZ_SAMPLE_TYPE_FLOAT32= -MOZ_SAMPLE_TYPE_S16= -MOZ_DIRECTSHOW= -MOZ_WMF= -if test -n "$MOZ_FMP4"; then - MOZ_FMP4=1 -else - MOZ_FMP4= -fi -MOZ_FFMPEG= -MOZ_WEBRTC=1 -MOZ_PEERCONNECTION= -MOZ_SRTP= -MOZ_WEBRTC_SIGNALING= -MOZ_WEBRTC_ASSERT_ALWAYS=1 -MOZ_WEBRTC_HARDWARE_AEC_NS= -MOZ_SCTP= -MOZ_ANDROID_OMX= -MOZ_MEDIA_NAVIGATOR= -MOZ_OMX_PLUGIN= -MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE= -MOZ_VPX_ERROR_CONCEALMENT= -MOZ_WEBSPEECH=1 -MOZ_WEBSPEECH_MODELS= -MOZ_WEBSPEECH_POCKETSPHINX= -MOZ_WEBSPEECH_TEST_BACKEND=1 -VPX_AS= -VPX_ASFLAGS= -VPX_AS_CONVERSION= -VPX_ASM_SUFFIX= -VPX_X86_ASM= -VPX_ARM_ASM= -LIBJPEG_TURBO_AS= -LIBJPEG_TURBO_ASFLAGS= -MOZ_PERMISSIONS=1 -MOZ_PLACES=1 -MOZ_SOCIAL=1 -MOZ_PREF_EXTENSIONS=1 -MOZ_PROFILELOCKING=1 -MOZ_REFLOW_PERF= -MOZ_SAFE_BROWSING= -MOZ_HELP_VIEWER= -MOZ_SPELLCHECK=1 -MOZ_ANDROID_APZ= -MOZ_TOOLKIT_SEARCH=1 -MOZ_UI_LOCALE=en-US -MOZ_UNIVERSALCHARDET=1 -MOZ_URL_CLASSIFIER= -MOZ_XUL=1 -MOZ_ZIPWRITER=1 -NS_PRINTING=1 -if test "$MOZ_IOS"; then - NS_PRINTING= -fi -MOZ_PDF_PRINTING= -MOZ_NO_SMART_CARDS= -NSS_DISABLE_DBM= -NECKO_COOKIES=1 -NECKO_PROTOCOLS_DEFAULT="about app data file ftp http res viewsource websocket wyciwyg device" -if test -n "$MOZ_RTSP"; then - NECKO_PROTOCOLS_DEFAULT="$NECKO_PROTOCOLS_DEFAULT rtsp" -fi -USE_ARM_KUSER= -BUILD_CTYPES=1 -MOZ_USE_NATIVE_POPUP_WINDOWS= -MOZ_ANDROID_HISTORY= -MOZ_WEBSMS_BACKEND= -MOZ_ANDROID_BEAM= -MOZ_LOCALE_SWITCHER= -MOZ_ANDROID_SEARCH_ACTIVITY= -MOZ_ANDROID_DOWNLOADS_INTEGRATION= -MOZ_ANDROID_GCM= -MOZ_ANDROID_MLS_STUMBLER= -MOZ_EXCLUDE_HYPHENATION_DICTIONARIES= -MOZ_INSTALL_TRACKING= -MOZ_SWITCHBOARD= -ACCESSIBILITY=1 -MOZ_TIME_MANAGER= -MOZ_SIMPLEPUSH= -MOZ_PAY= -MOZ_AUDIO_CHANNEL_MANAGER= -MOZ_CONTENT_SANDBOX= -MOZ_GMP_SANDBOX= -MOZ_SANDBOX=1 -MOZ_BINARY_EXTENSIONS= -MOZ_ADDON_SIGNING= -MOZ_REQUIRE_SIGNING= -MOZ_DEVTOOLS=server - -case "$target_os" in - mingw*) - NS_ENABLE_TSF=1 - AC_DEFINE(NS_ENABLE_TSF) - ;; -esac - -case "${target}" in - *-android*|*-linuxandroid*) - if test "$CPU_ARCH" = "arm" ; then - USE_ARM_KUSER=1 - fi - - NSS_DISABLE_DBM=1 - MOZ_THEME_FASTSTRIPE=1 - MOZ_TREE_FREETYPE=1 - if test "$COMPILE_ENVIRONMENT"; then - MOZ_MEMORY=1 - fi - MOZ_RAW=1 - ;; - -esac - -MOZ_ARG_WITH_STRING(external-source-dir, -[ --with-external-source-dir=dir - External directory containing additional build files.], -[ EXTERNAL_SOURCE_DIR=$withval]) -AC_SUBST(EXTERNAL_SOURCE_DIR) - -MOZ_ARG_ENABLE_STRING(application, -[ --enable-application=APP - Options include: - browser (Firefox) - xulrunner - tools/update-packaging (AUS-related packaging tools)], -[ MOZ_BUILD_APP=$enableval ] ) - -MOZ_ARG_WITH_STRING(xulrunner-stub-name, -[ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name], - XULRUNNER_STUB_NAME=$withval) - -if test -z "$XULRUNNER_STUB_NAME"; then - XULRUNNER_STUB_NAME=xulrunner-stub -fi -AC_SUBST(XULRUNNER_STUB_NAME) - -AC_MSG_CHECKING([for application to build]) -if test -z "$MOZ_BUILD_APP"; then - AC_MSG_RESULT([browser]) - MOZ_BUILD_APP=browser -else - # "mobile" no longer exists. - if test "$MOZ_BUILD_APP" = "mobile" ; then - AC_MSG_RESULT([none]) - AC_MSG_ERROR([--enable-application=mobile is no longer supported.]) - fi - # Support comm-central. - if test -n "$EXTERNAL_SOURCE_DIR" ; then - MOZ_BUILD_APP="$EXTERNAL_SOURCE_DIR/$MOZ_BUILD_APP" - MOZ_BUILD_APP=`${PYTHON} -c "import mozpack.path as mozpath; print(mozpath.relpath(\"${MOZ_BUILD_APP}\", \"${srcdir}\"))"` - fi - # We have a valid application only if it has a build.mk file in its top - # directory. - if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then - AC_MSG_RESULT([none]) - AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).]) - else - AC_MSG_RESULT([$MOZ_BUILD_APP]) - fi -fi - -# The app update channel is 'default' when not supplied. The value is used in -# the application's confvars.sh so it must be set before confvars.sh is called. -MOZ_ARG_ENABLE_STRING([update-channel], -[ --enable-update-channel=CHANNEL - Select application update channel (default=default)], - MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`) - -if test -z "$MOZ_UPDATE_CHANNEL"; then - MOZ_UPDATE_CHANNEL=default -fi -AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL) -AC_SUBST(MOZ_UPDATE_CHANNEL) - -# Allow to specify a Mozilla API key file that contains the secret key to be -# used for various Mozilla API requests. -MOZ_ARG_WITH_STRING(mozilla-api-keyfile, -[ --with-mozilla-api-keyfile=file Use the secret key contained in the given keyfile for Mozilla API requests], - MOZ_MOZILLA_API_KEY=`cat $withval`) -if test -z "$MOZ_MOZILLA_API_KEY"; then - MOZ_MOZILLA_API_KEY=no-mozilla-api-key -fi -AC_SUBST(MOZ_MOZILLA_API_KEY) - -# Allow to specify a Google API key file that contains the secret key to be -# used for various Google API requests. -MOZ_ARG_WITH_STRING(google-api-keyfile, -[ --with-google-api-keyfile=file Use the secret key contained in the given keyfile for Google API requests], - MOZ_GOOGLE_API_KEY=`cat $withval`) -if test -z "$MOZ_GOOGLE_API_KEY"; then - MOZ_GOOGLE_API_KEY=no-google-api-key -fi -AC_SUBST(MOZ_GOOGLE_API_KEY) - -# Allow to specify a Google OAuth API key file that contains the client ID and -# the secret key to be used for various Google OAuth API requests. -MOZ_ARG_WITH_STRING(google-oauth-api-keyfile, -[ --with-google-oauth-api-keyfile=file Use the client id and secret key contained in the given keyfile for Google OAuth API requests], - [MOZ_GOOGLE_OAUTH_API_CLIENTID=`cat $withval | cut -f 1 -d " "` - MOZ_GOOGLE_OAUTH_API_KEY=`cat $withval | cut -f 2 -d " "`]) -if test -z "$MOZ_GOOGLE_OAUTH_API_CLIENTID"; then - MOZ_GOOGLE_OAUTH_API_CLIENTID=no-google-oauth-api-clientid - MOZ_GOOGLE_OAUTH_API_KEY=no-google-oauth-api-key -fi -AC_SUBST(MOZ_GOOGLE_OAUTH_API_CLIENTID) -AC_SUBST(MOZ_GOOGLE_OAUTH_API_KEY) - -# Allow specifying a Bing API key file that contains the client ID and the -# secret key to be used for the Bing Translation API requests. -MOZ_ARG_WITH_STRING(bing-api-keyfile, -[ --with-bing-api-keyfile=file Use the client id and secret key contained in the given keyfile for Bing API requests], - [MOZ_BING_API_CLIENTID=`cat $withval | cut -f 1 -d " "` - MOZ_BING_API_KEY=`cat $withval | cut -f 2 -d " "`]) -if test -z "$MOZ_BING_API_CLIENTID"; then - MOZ_BING_API_CLIENTID=no-bing-api-clientid - MOZ_BING_API_KEY=no-bing-api-key -fi -AC_SUBST(MOZ_BING_API_CLIENTID) -AC_SUBST(MOZ_BING_API_KEY) - -# Allow specifying an Adjust SDK key file that contains the app token used for -# Adjust SDK requests. -MOZ_ARG_WITH_STRING(adjust-sdk-keyfile, -[ --with-adjust-sdk-keyfile=file Use the app token contained in the given keyfile for Adjust SDK requests], - MOZ_INSTALL_TRACKING_ADJUST_SDK_APP_TOKEN=`cat $withval`) -AC_SUBST(MOZ_INSTALL_TRACKING_ADJUST_SDK_APP_TOKEN) - -# Allow specifying a GCM sender ID key file that contains the sender ID used for -# GCM requests. Note that GCM sender IDs are not sensitive: see, for example, -# http://stackoverflow.com/a/18216063. -MOZ_ARG_WITH_STRING(gcm-senderid-keyfile, -[ --with-gcm-senderid-keyfile=file GCM sender ID for GCM requests], - MOZ_ANDROID_GCM_SENDERID=`cat $withval`) -AC_SUBST(MOZ_ANDROID_GCM_SENDERID) - -# Whether this APK is destined for resource constrained devices. -# We want this in mobile/android/confvars.sh, so it goes early. -MOZ_ARG_ENABLE_BOOL(android-resource-constrained, -[ --enable-android-resource-constrained - Exclude hi-res images and similar from the final APK], - MOZ_ANDROID_RESOURCE_CONSTRAINED=1) - -if test -n "$MOZ_ANDROID_RESOURCE_CONSTRAINED"; then - AC_DEFINE(MOZ_ANDROID_RESOURCE_CONSTRAINED) -fi -AC_SUBST(MOZ_ANDROID_RESOURCE_CONSTRAINED) - -# Optional Firefox for Android partner distribution directory. -MOZ_ARG_WITH_STRING(android-distribution-directory, -[ --with-android-distribution-directory=dir - Optional Firefox for Android partner distribution directory.], - MOZ_ANDROID_DISTRIBUTION_DIRECTORY=$withval) - -if test -n "$MOZ_ANDROID_DISTRIBUTION_DIRECTORY"; then - # A distribution directory must have an assets/distribution directory. - # See https://wiki.mozilla.org/Mobile/Distribution_Files. - if test ! -d "$MOZ_ANDROID_DISTRIBUTION_DIRECTORY/assets/distribution" ; then - AC_MSG_ERROR([--with-android-distribution-directory does not contain assets/distribution; - (looked for ${MOZ_ANDROID_DISTRIBUTION_DIRECTORY}/assets/distribution).]) - fi -fi -AC_SUBST(MOZ_ANDROID_DISTRIBUTION_DIRECTORY) - -dnl ======================================================== -dnl = Trademarked Branding -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(official-branding, -[ --enable-official-branding - Enable Official mozilla.org Branding - Do not distribute builds with - --enable-official-branding unless you have - permission to use trademarks per - http://www.mozilla.org/foundation/trademarks/ .], - MOZ_OFFICIAL_BRANDING=1, - MOZ_OFFICIAL_BRANDING=) - -# Allow the application to influence configure with a confvars.sh script. -AC_MSG_CHECKING([if app-specific confvars.sh exists]) -if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then - AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh]) - . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" -else - AC_MSG_RESULT([no]) -fi - -# Allow influencing configure with a defines.sh script. -. "${srcdir}/build/defines.sh" - -# If we're not building a release build, define EARLY_BETA_OR_EARLIER if it is -# set in defines.sh -if test "$BUILDING_RELEASE"; then - # Override value in defines.sh, if any - EARLY_BETA_OR_EARLIER= -elif test "$EARLY_BETA_OR_EARLIER"; then - AC_DEFINE(EARLY_BETA_OR_EARLIER) -fi -AC_SUBST(EARLY_BETA_OR_EARLIER) - -# Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig -MOZ_ARG_WITH_STRING(app-name, -[--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME], -WITH_APP_NAME=$withval, -) - -if test -n "$WITH_APP_NAME" ; then - MOZ_APP_NAME="$WITH_APP_NAME" -fi - -MOZ_ARG_WITH_STRING(app-basename, -[--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME], -WITH_APP_BASENAME=$withval, -) - -if test -n "$WITH_APP_BASENAME" ; then - MOZ_APP_BASENAME="$WITH_APP_BASENAME" -fi - -# Special cases where we need to AC_DEFINE something. Also a holdover for apps -# that haven't made a confvars.sh yet. Don't add new stuff here, use -# MOZ_BUILD_APP. -case "$MOZ_BUILD_APP" in -browser) - AC_DEFINE(MOZ_PHOENIX) - ;; - -xulrunner) - AC_DEFINE(MOZ_XULRUNNER) - ;; -esac - -if test -n "$MOZ_B2G"; then - AC_DEFINE(MOZ_B2G) -fi - -# Graphene is a desktop runtime for running applications with a HTML UI. -if test -n "$MOZ_GRAPHENE"; then - AC_DEFINE(MOZ_GRAPHENE) -fi - -if test -n "$MOZ_MULET"; then - AC_DEFINE(MOZ_MULET) -fi - -if test -n "$MOZ_B2GDROID"; then - AC_DEFINE(MOZ_B2GDROID) -fi - -# Propagate feature switches for code written in rust from confvars.sh -if test -n "$MOZ_RUST"; then - if test -n "$MOZ_RUST_MP4PARSE"; then - AC_DEFINE(MOZ_RUST_MP4PARSE) - fi -fi - -AC_SUBST(MOZ_BUILD_APP) -AC_SUBST(MOZ_PHOENIX) -AC_SUBST(MOZ_XULRUNNER) -AC_SUBST(MOZ_B2G) -AC_SUBST(MOZ_MULET) -AC_SUBST(MOZ_B2G_VERSION) -AC_SUBST(MOZ_B2GDROID) - -AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP) - -dnl ======================================================== -dnl Ensure Android SDK and build-tools versions depending on -dnl mobile target. -dnl ======================================================== - -if test -z "$gonkdir" ; then - case "$MOZ_BUILD_APP" in - mobile/android | mobile/android/b2gdroid) - case "$target" in - *-android*|*-linuxandroid*) - : - ;; - *) - AC_MSG_ERROR([You must specify --target=arm-linux-androideabi (or some other valid android target) when building with --enable-application=mobile/android or --enable-application=mobile/android/b2gdroid. - See https://wiki.mozilla.org/Mobile/Fennec/Android#Setup_Fennec_mozconfig for more information about the necessary options]) - ;; - esac - - MOZ_ANDROID_SDK(23, 23.0.1) - ;; - esac -fi - -dnl ======================================================== -dnl = -dnl = Toolkit Options -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Toolkit Options) - - dnl ======================================================== - dnl = Select the default toolkit - dnl ======================================================== - MOZ_ARG_ENABLE_STRING(default-toolkit, - [ --enable-default-toolkit=TK - Select default toolkit - Platform specific defaults: - Mac OS X - cairo-cocoa - Win32 - cairo-windows - * - cairo-gtk2 - * - cairo-gtk3 - * - cairo-qt], - [ _DEFAULT_TOOLKIT=$enableval ], - [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT]) - - if test "$_DEFAULT_TOOLKIT" = "cairo-windows" \ - -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \ - -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \ - -o "$_DEFAULT_TOOLKIT" = "cairo-gtk3" \ - -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \ - -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \ - -o "$_DEFAULT_TOOLKIT" = "cairo-uikit" \ - -o "$_DEFAULT_TOOLKIT" = "cairo-android" \ - -o "$_DEFAULT_TOOLKIT" = "cairo-gonk" - then - dnl nglayout only supports building with one toolkit, - dnl so ignore everything after the first comma (","). - MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"` - else - AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).]) - fi - -MOZ_ARG_WITHOUT_BOOL(x, -[ --without-x Build without X11], - WITHOUT_X11=1) - -dnl ======================================================== -dnl = Enable the toolkit as needed = -dnl ======================================================== - -MOZ_WIDGET_GTK= - -case "$MOZ_WIDGET_TOOLKIT" in - -cairo-windows) - MOZ_WIDGET_TOOLKIT=windows - MOZ_PDF_PRINTING=1 - MOZ_INSTRUMENT_EVENT_LOOP=1 - ;; - -cairo-gtk3) - MOZ_WIDGET_TOOLKIT=gtk3 - MOZ_ENABLE_GTK=1 - MOZ_ENABLE_GTK3=1 - MOZ_ENABLE_XREMOTE=1 - MOZ_GL_DEFAULT_PROVIDER=GLX - - AC_DEFINE(MOZ_X11) - MOZ_X11=1 - USE_FC_FREETYPE=1 - - MOZ_WIDGET_GTK=3 - AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK) - MOZ_PDF_PRINTING=1 - MOZ_INSTRUMENT_EVENT_LOOP=1 - ;; - -cairo-gtk2|cairo-gtk2-x11) - MOZ_WIDGET_TOOLKIT=gtk2 - MOZ_ENABLE_GTK=1 - MOZ_ENABLE_GTK2=1 - MOZ_ENABLE_XREMOTE=1 - MOZ_GL_DEFAULT_PROVIDER=GLX - - AC_DEFINE(MOZ_X11) - MOZ_X11=1 - USE_FC_FREETYPE=1 - - AC_DEFINE(MOZ_WIDGET_GTK2) - MOZ_WIDGET_GTK=2 - AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK) - MOZ_PDF_PRINTING=1 - MOZ_INSTRUMENT_EVENT_LOOP=1 - ;; - -cairo-qt) - MOZ_WIDGET_TOOLKIT=qt - MOZ_ENABLE_QT=1 - if test -z "$WITHOUT_X11"; then - MOZ_ENABLE_XREMOTE=1 - MOZ_GL_DEFAULT_PROVIDER=GLX - MOZ_X11=1 - AC_DEFINE(MOZ_X11) - XT_LIBS= - fi - - USE_FC_FREETYPE=1 - AC_DEFINE(MOZ_WIDGET_QT) - MOZ_PDF_PRINTING=1 - AC_DEFINE(QT_NO_KEYWORDS) - ;; - -cairo-cocoa) - MOZ_WIDGET_TOOLKIT=cocoa - AC_DEFINE(MOZ_WIDGET_COCOA) - LDFLAGS="$LDFLAGS -framework Cocoa -lobjc" - # Use -Wl as a trick to avoid -framework and framework names from - # being separated by AC_SUBST_LIST. - TK_LIBS='-Wl,-framework,CoreLocation -Wl,-framework,QuartzCore -Wl,-framework,Carbon -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit -Wl,-framework,AddressBook -Wl,-framework,OpenGL' - TK_CFLAGS="-DNO_X11" - CFLAGS="$CFLAGS $TK_CFLAGS" - CXXFLAGS="$CXXFLAGS $TK_CFLAGS" - MOZ_USER_DIR="Mozilla" - MOZ_FS_LAYOUT=bundle - MOZ_INSTRUMENT_EVENT_LOOP=1 - ;; - -cairo-uikit) - MOZ_WIDGET_TOOLKIT=uikit - AC_DEFINE(MOZ_WIDGET_UIKIT) - LDFLAGS="$LDFLAGS -framework UIKit -lobjc" - TK_CFLAGS="-DNO_X11" - TK_LIBS='-Wl,-framework,Foundation -Wl,-framework,CoreFoundation -Wl,-framework,CoreGraphics -Wl,-framework,CoreText -Wl,-framework,AVFoundation -Wl,-framework,AudioToolbox -Wl,-framework,CoreMedia -Wl,-framework,CoreVideo -Wl,-framework,OpenGLES -Wl,-framework,QuartzCore' - CFLAGS="$CFLAGS $TK_CFLAGS" - CXXFLAGS="$CXXFLAGS $TK_CFLAGS" - MOZ_USER_DIR="Mozilla" - MOZ_FS_LAYOUT=bundle - ;; - -cairo-android) - AC_DEFINE(MOZ_WIDGET_ANDROID) - MOZ_WIDGET_TOOLKIT=android - MOZ_PDF_PRINTING=1 - MOZ_INSTRUMENT_EVENT_LOOP=1 - ;; - -cairo-gonk) - AC_DEFINE(MOZ_WIDGET_GONK) - AC_DEFINE(MOZ_TOUCH) - MOZ_WIDGET_TOOLKIT=gonk - MOZ_PDF_PRINTING=1 - MOZ_TOUCH=1 - MOZ_INSTRUMENT_EVENT_LOOP=1 - ;; - -esac - -AC_SUBST(MOZ_PDF_PRINTING) -if test "$MOZ_PDF_PRINTING"; then - PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1" - AC_DEFINE(MOZ_PDF_PRINTING) -fi - -if test "$MOZ_ENABLE_XREMOTE"; then - AC_DEFINE(MOZ_ENABLE_XREMOTE) -fi - -if test "$MOZ_INSTRUMENT_EVENT_LOOP"; then - AC_DEFINE(MOZ_INSTRUMENT_EVENT_LOOP) -fi - -if test "$COMPILE_ENVIRONMENT"; then - if test "$MOZ_ENABLE_GTK3"; then - PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 $GDK_PACKAGES) - MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS" - TK_CFLAGS=$MOZ_GTK3_CFLAGS - TK_LIBS=$MOZ_GTK3_LIBS - AC_DEFINE_UNQUOTED(GDK_VERSION_MIN_REQUIRED,$GDK_VERSION_MIN_REQUIRED) - AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MIN_REQUIRED) - GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32 - fi - if test "$MOZ_ENABLE_GTK2"; then - GLIB_VERSION_MAX_ALLOWED=$GLIB_VERSION_MIN_REQUIRED - fi - if test "$MOZ_ENABLE_GTK"; then - if test "$MOZ_X11"; then - GDK_PACKAGES=gdk-x11-2.0 - fi - AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED) - AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED) - - PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 >= $GLIB_VERSION gobject-2.0 $GDK_PACKAGES) - MOZ_GTK2_CFLAGS="-I${_topsrcdir}/widget/gtk/compat $MOZ_GTK2_CFLAGS" - fi - if test "$MOZ_ENABLE_GTK2"; then - TK_CFLAGS=$MOZ_GTK2_CFLAGS - TK_LIBS=$MOZ_GTK2_LIBS - fi -fi # COMPILE_ENVIRONMENT - -AC_SUBST(MOZ_FS_LAYOUT) - -dnl ======================================================== -dnl Use ARM userspace kernel helpers; tell NSPR to enable -dnl their usage and use them in spidermonkey. -dnl ======================================================== -MOZ_ARG_WITH_BOOL(arm-kuser, -[ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)], - USE_ARM_KUSER=1,) -if test -n "$USE_ARM_KUSER"; then - AC_DEFINE(USE_ARM_KUSER) -fi - -dnl ======================================================== -dnl = startup-notification support module -dnl ======================================================== - -if test "$MOZ_ENABLE_GTK" -then - MOZ_ENABLE_STARTUP_NOTIFICATION= - - MOZ_ARG_ENABLE_BOOL(startup-notification, - [ --enable-startup-notification - Enable startup-notification support (default: disabled) ], - MOZ_ENABLE_STARTUP_NOTIFICATION=force, - MOZ_ENABLE_STARTUP_NOTIFICATION=) - if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" - then - PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION, - libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION, - [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [ - if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force" - then - AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION]) - fi - MOZ_ENABLE_STARTUP_NOTIFICATION= - ]) - fi - - if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then - AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION) - fi - - TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS" -fi -AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION) - -dnl ======================================================== -dnl Disable printing -dnl ======================================================== -MOZ_ARG_DISABLE_BOOL(printing, -[ --disable-printing Disable printing support], - NS_PRINTING=, - NS_PRINTING=1) - -if test -n "$MOZ_IOS" -a -n "$NS_PRINTING"; then - AC_MSG_ERROR([Printing is not supported on iOS.]) -fi - -if test "$NS_PRINTING"; then - AC_DEFINE(NS_PRINTING) - AC_DEFINE(NS_PRINT_PREVIEW) -fi - -dnl ======================================================== -dnl = QT support -dnl ======================================================== -if test "$MOZ_ENABLE_QT" -then - MOZ_ARG_WITH_STRING(qtdir, - [ --with-qtdir=\$dir Specify Qt directory ], - [ QTDIR=$withval]) - - if test -z "$QTDIR"; then - AC_CHECK_PROGS(HOST_QMAKE, $HOST_QMAKE qmake, "") - else - HOST_QMAKE="$QTDIR/bin/qmake" - fi - QT_VERSION=`$HOST_QMAKE -v | grep 'Using Qt version' | egrep -o '[[0-9]]+\.[[0-9]]+\.[[0-9]]+'` - - if test -z "$QTDIR"; then - case $QT_VERSION in - 5.*) - AC_MSG_RESULT("Using qt5: $QT_VERSION") - PKG_CHECK_MODULES(MOZ_QT, Qt5Gui Qt5Network Qt5Core Qt5Quick, , - [ - AC_MSG_ERROR([$MOZ_QT_PKG_ERRORS Need qtbase development packages, (On Ubuntu, you might try installing the packages qtbase5-dev libqt5opengl5-dev.)]) - ]) - QT5INCDIR=`pkg-config --variable=includedir Qt5Gui` - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QT5INCDIR/QtGui/$QT_VERSION/QtGui" - if test "$NS_PRINTING"; then - PKG_CHECK_MODULES(MOZ_QT_WIDGETS, Qt5PrintSupport, , - [ - AC_MSG_ERROR([$MOZ_QT_PKG_ERRORS Need qt5 printsupport development package]) - ]) - MOZ_QT_LIBS="$MOZ_QT_LIBS $MOZ_QT_WIDGETS_LIBS" - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $MOZ_QT_WIDGETS_CFLAGS" - fi - ;; - *) - AC_MSG_ERROR([* * * Unsupported Qt Version: $QT_VERSION]) - ;; - esac - - AC_CHECK_PROGS(HOST_MOC, $MOC moc, "") - AC_CHECK_PROGS(HOST_RCC, $RCC rcc, "") - else - MOZ_QT_CFLAGS="-DQT_SHARED" - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include" - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui" - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore" - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork" - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml" - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDeclarative" - case $QT_VERSION in - 5.*) - AC_MSG_RESULT("Using qt5: $QT_VERSION") - MOZ_QT_LIBS="$MOZ_QT_LIBS -L$QTDIR/lib/ -lQt5Gui -lQt5Network -lQt5Core -lQt5Xml" - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui/$QT_VERSION/QtGui" - if test "$NS_PRINTING"; then - MOZ_QT_LIBS="$MOZ_QT_LIBS -lQt5Widgets -lQt5PrintSupport" - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtPrintSupport" - fi - ;; - *) - AC_MSG_ERROR([* * * Unsupported Qt Version: $QT_VERSION]) - ;; - esac - - HOST_MOC="$QTDIR/bin/moc" - HOST_RCC="$QTDIR/bin/rcc" - fi - if test -z "$HOST_MOC"; then - AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is incorrect]) - fi - if test -z "$HOST_RCC"; then - AC_MSG_ERROR([No acceptable rcc preprocessor found. Qt SDK is not installed or --with-qt is incorrect]) - fi - - MOC=$HOST_MOC - RCC=$HOST_RCC - - MOZ_ENABLE_QMSYSTEM2= - PKG_CHECK_MODULES(_QMSYSTEM2, qmsystem2, - MOZ_ENABLE_QMSYSTEM2=1, - MOZ_ENABLE_QMSYSTEM2=) - - if test "$MOZ_ENABLE_QMSYSTEM2"; then - MOZ_ENABLE_QMSYSTEM2=1 - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QMSYSTEM2_CFLAGS" - MOZ_QT_LIBS="$MOZ_QT_LIBS $_QMSYSTEM2_LIBS" - AC_DEFINE(MOZ_ENABLE_QMSYSTEM2) - fi - - MOZ_ENABLE_QTNETWORK= - PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7, - MOZ_ENABLE_QTNETWORK=1, - MOZ_ENABLE_QTNETWORK=) - - if test "$MOZ_ENABLE_QTNETWORK"; then - MOZ_ENABLE_QTNETWORK=1 - AC_DEFINE(MOZ_ENABLE_QTNETWORK) - fi - - MOZ_ENABLE_QTMOBILITY= - PKG_CHECK_MODULES(_QTMOBILITY, QtSensors QtFeedback QtLocation, - MOZ_ENABLE_QTMOBILITY=1, - MOZ_ENABLE_QTMOBILITY=) - if test "$MOZ_ENABLE_QTMOBILITY"; then - MOZ_ENABLE_QTMOBILITY=1 - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QTMOBILITY_CFLAGS" - MOZ_QT_LIBS="$MOZ_QT_LIBS $_QTMOBILITY_LIBS" - AC_DEFINE(MOZ_ENABLE_QTMOBILITY) - AC_SUBST(MOZ_ENABLE_QTMOBILITY) - else - AC_CHECK_LIB(QtSensors, main, [ - MOZ_ENABLE_QTMOBILITY=1 - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtMobility" - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtSensors" - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtFeedback" - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtLocation" - MOZ_QT_LIBS="$MOZ_QT_LIBS -lQtSensors -lQtFeedback -lQtLocation" - ]) - fi - - MOZ_ENABLE_QT5FEEDBACK= - PKG_CHECK_MODULES(_QT5FEEDBACK, Qt0Feedback, - MOZ_ENABLE_QT5FEEDBACK=1, - MOZ_ENABLE_QT5FEEDBACK=) - if test "$MOZ_ENABLE_QT5FEEDBACK"; then - MOZ_ENABLE_QT5FEEDBACK=1 - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QT5FEEDBACK_CFLAGS" - MOZ_QT_LIBS="$MOZ_QT_LIBS $_QT5FEEDBACK_LIBS" - AC_DEFINE(MOZ_ENABLE_QT5FEEDBACK) - AC_SUBST(MOZ_ENABLE_QT5FEEDBACK) - fi - - MOZ_ENABLE_QT5GEOPOSITION= - PKG_CHECK_MODULES(_QT5GEOPOSITION, Qt5Positioning, - MOZ_ENABLE_QT5GEOPOSITION=1, - MOZ_ENABLE_QT5GEOPOSITION=) - if test "$MOZ_ENABLE_QT5GEOPOSITION"; then - MOZ_ENABLE_QT5GEOPOSITION=1 - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QT5GEOPOSITION_CFLAGS" - MOZ_QT_LIBS="$MOZ_QT_LIBS $_QT5GEOPOSITION_LIBS" - AC_DEFINE(MOZ_ENABLE_QT5GEOPOSITION) - AC_SUBST(MOZ_ENABLE_QT5GEOPOSITION) - fi - - if test "$MOZ_ENABLE_CONTENTACTION"; then - MOZ_ENABLE_CONTENTACTION=1 - AC_DEFINE(MOZ_ENABLE_CONTENTACTION) - fi - - MOZ_ENABLE_CONTENTACTION= - PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=) - if test "$MOZ_ENABLE_CONTENTACTION"; then - MOZ_ENABLE_CONTENTACTION=1 - MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_CONTENTACTION_CFLAGS" - MOZ_QT_LIBS="$MOZ_QT_LIBS $_CONTENTACTION_LIBS" - AC_DEFINE(MOZ_ENABLE_CONTENTACTION) - AC_SUBST(MOZ_ENABLE_CONTENTACTION) - fi - TK_CFLAGS=$MOZ_QT_CFLAGS - TK_LIBS=$MOZ_QT_LIBS -fi - -AC_SUBST(GTK_CONFIG) -AC_SUBST_LIST(TK_CFLAGS) -AC_SUBST_LIST(TK_LIBS) - -AC_SUBST(MOZ_ENABLE_GTK2) -AC_SUBST(MOZ_ENABLE_GTK3) -AC_SUBST(MOZ_ENABLE_GTK) -AC_SUBST(MOZ_ENABLE_QT) -AC_SUBST(MOZ_ENABLE_QTNETWORK) -AC_SUBST(MOZ_ENABLE_QMSYSTEM2) -AC_SUBST(MOZ_ENABLE_QTMOBILITY) -AC_SUBST(MOZ_ENABLE_XREMOTE) -AC_SUBST(MOZ_WIDGET_GTK) -AC_SUBST_LIST(MOZ_QT_CFLAGS) -AC_SUBST_LIST(MOZ_QT_LIBS) - -AC_SUBST(MOC) -AC_SUBST(RCC) - -AC_SUBST(MOZ_X11) - -dnl ======================================================== -dnl = -dnl = Components & Features -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Components and Features) - -dnl ======================================================== -dnl = Localization -dnl ======================================================== -MOZ_ARG_ENABLE_STRING(ui-locale, -[ --enable-ui-locale=ab-CD - Select the user interface locale (default: en-US)], - MOZ_UI_LOCALE=$enableval ) -AC_SUBST(MOZ_UI_LOCALE) - -AC_SUBST(MOZ_OFFICIAL_BRANDING) -if test -n "$MOZ_OFFICIAL_BRANDING"; then - if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then - AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.]) - else - MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY} - AC_DEFINE(MOZ_OFFICIAL_BRANDING) - fi -fi - -MOZ_ARG_WITH_STRING(branding, -[ --with-branding=dir Use branding from the specified directory.], - MOZ_BRANDING_DIRECTORY=$withval) - -REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}" -if test -z "$REAL_BRANDING_DIRECTORY"; then - REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly -fi - -if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then - . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh" -elif test -f "${EXTERNAL_SOURCE_DIR}/$REAL_BRANDING_DIRECTORY/configure.sh"; then - . "${EXTERNAL_SOURCE_DIR}/$REAL_BRANDING_DIRECTORY/configure.sh" -fi - -AC_SUBST(MOZ_BRANDING_DIRECTORY) - -dnl ======================================================== -dnl = Distribution ID -dnl ======================================================== -MOZ_ARG_WITH_STRING(distribution-id, -[ --with-distribution-id=ID - Set distribution-specific id (default=org.mozilla)], -[ val=`echo $withval` - MOZ_DISTRIBUTION_ID="$val"]) - -if test -z "$MOZ_DISTRIBUTION_ID"; then - MOZ_DISTRIBUTION_ID="org.mozilla" -fi - -AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID") -AC_SUBST(MOZ_DISTRIBUTION_ID) - - -dnl ======================================================== -dnl Google Play Services, placed here so it can depend on -dnl values set by configure.sh above. -dnl ======================================================== - -MOZ_ANDROID_GOOGLE_PLAY_SERVICES -MOZ_ANDROID_GOOGLE_CLOUD_MESSAGING -MOZ_ANDROID_INSTALL_TRACKING - - -dnl ======================================================== -dnl = Pango -dnl ======================================================== -if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT" -then - PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION) - - PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION) -fi - -dnl ======================================================== -dnl = GIO and GConf support module -dnl ======================================================== - -if test "$MOZ_X11" -then - dnl build the GIO extension by default only when the - dnl GTK2 toolkit is in use. - if test "$MOZ_ENABLE_GTK" - then - MOZ_ENABLE_GIO=1 - MOZ_ENABLE_GCONF=1 - fi - - dnl ======================================================== - dnl = GIO support module - dnl ======================================================== - MOZ_ARG_DISABLE_BOOL(gio, - [ --disable-gio Disable GIO support], - MOZ_ENABLE_GIO=, - MOZ_ENABLE_GIO=force) - - if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK" - then - if test "$MOZ_ENABLE_GTK2" - then - PKG_CHECK_MODULES(_GTKCHECK, gtk+-2.0 >= 2.14, , - [AC_MSG_ERROR([* * * Could not find gtk+-2.0 > 2.14. Required for build with gio.])]) - fi - PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[ - MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'` - MOZ_ENABLE_GIO=1 - AC_DEFINE(MOZ_ENABLE_GIO) - ],[ - if test "$MOZ_ENABLE_GIO" = "force" - then - AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION]) - fi - MOZ_ENABLE_GIO= - ]) - fi - - AC_SUBST(MOZ_ENABLE_GIO) - - dnl ======================================================== - dnl = GConf support module - dnl ======================================================== - MOZ_ARG_DISABLE_BOOL(gconf, - [ --disable-gconf Disable Gconf support ], - MOZ_ENABLE_GCONF=, - MOZ_ENABLE_GCONF=1) - - if test "$MOZ_ENABLE_GCONF" - then - PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[ - MOZ_GCONF_LIBS=`$PKG_CONFIG --libs gobject-2.0` - MOZ_ENABLE_GCONF=1 - ],[ - if test -n "$MOZ_ENABLE_GCONF"; - then - AC_MSG_ERROR([* * * Could not find gconf-2.0 ]) - else - AC_MSG_WARN([Many automated tests will fail with --disable-gconf. See bug 1167201.]) - fi - ]) - fi - - if test "$MOZ_ENABLE_GCONF"; then - AC_DEFINE(MOZ_ENABLE_GCONF) - fi - - AC_SUBST(MOZ_ENABLE_GCONF) -fi - -dnl ======================================================== -dnl = libproxy support -dnl ======================================================== - -if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT" -then - MOZ_ENABLE_LIBPROXY= - - MOZ_ARG_ENABLE_BOOL(libproxy, - [ --enable-libproxy Enable libproxy support ], - MOZ_ENABLE_LIBPROXY=1, - MOZ_ENABLE_LIBPROXY=) - - if test "$MOZ_ENABLE_LIBPROXY" - then - PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0) - AC_DEFINE(MOZ_ENABLE_LIBPROXY) - fi -fi -AC_SUBST(MOZ_ENABLE_LIBPROXY) - -dnl ======================================================== -dnl = libgnomeui support module -dnl ======================================================== - -if test "$MOZ_ENABLE_GTK" -then - MOZ_ARG_ENABLE_BOOL(gnomeui, - [ --enable-gnomeui Enable libgnomeui instead of GIO & GTK for icon theme support ], - MOZ_ENABLE_GNOMEUI=force, - MOZ_ENABLE_GNOMEUI=) - - if test "$MOZ_ENABLE_GNOMEUI" - then - PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION, - [ - MOZ_ENABLE_GNOMEUI=1 - ],[ - if test "$MOZ_ENABLE_GNOMEUI" = "force" - then - AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION]) - fi - MOZ_ENABLE_GNOMEUI= - ]) - fi - - if test "$MOZ_ENABLE_GNOMEUI"; then - AC_DEFINE(MOZ_ENABLE_GNOMEUI) - fi -fi - -AC_SUBST(MOZ_ENABLE_GNOMEUI) - -dnl ======================================================== -dnl = dbus support -dnl ======================================================== - -if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT" -then - MOZ_ENABLE_DBUS=1 - - MOZ_ARG_DISABLE_BOOL(dbus, - [ --disable-dbus Disable dbus support ], - MOZ_ENABLE_DBUS=, - MOZ_ENABLE_DBUS=1) - - if test "$MOZ_ENABLE_DBUS" - then - PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION) - PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION) - AC_DEFINE(MOZ_ENABLE_DBUS) - fi -fi -AC_SUBST(MOZ_ENABLE_DBUS) - -dnl ======================================================== -dnl = speech-dispatcher support -dnl ======================================================== - -if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT" -then - MOZ_SYNTH_SPEECHD=1 - - MOZ_ARG_DISABLE_BOOL(synth-speechd, - [ --disable-synth-speechd Disable speech-dispatcher support ], - MOZ_SYNTH_SPEECHD=, - MOZ_SYNTH_SPEECHD=1) -fi -AC_SUBST(MOZ_SYNTH_SPEECHD) - -dnl ======================================================== -dnl = Enable Android History instead of Places -dnl ======================================================== -if test -n "$MOZ_ANDROID_HISTORY"; then - if test -z "$MOZ_PLACES"; then - AC_DEFINE(MOZ_ANDROID_HISTORY) - else - AC_MSG_ERROR([Cannot use MOZ_ANDROID_HISTORY alongside MOZ_PLACES.]) - fi -fi - -dnl ======================================================== -dnl = Enable the C++ async pan/zoom code instead of the Java version -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(android-apz, -[ --enable-android-apz Switch to C++ pan/zoom code], - MOZ_ANDROID_APZ=1, - MOZ_ANDROID_APZ=) -if test -n "$MOZ_ANDROID_APZ"; then - dnl Do this if defined in confvars.sh - AC_DEFINE(MOZ_ANDROID_APZ) -fi - -dnl ======================================================== -dnl = Disable WebSMS backend -dnl ======================================================== -MOZ_ARG_DISABLE_BOOL(websms-backend, -[ --disable-websms-backend - Disable WebSMS backend], - MOZ_WEBSMS_BACKEND=, - MOZ_WEBSMS_BACKEND=1) - -if test -n "$MOZ_WEBSMS_BACKEND"; then - AC_DEFINE(MOZ_WEBSMS_BACKEND) -fi - -dnl ======================================================== -dnl = Enable runtime locale switching on Android -dnl ======================================================== -if test -n "$MOZ_LOCALE_SWITCHER"; then - AC_DEFINE(MOZ_LOCALE_SWITCHER) -fi - -dnl ======================================================== -dnl = Enable system download manager on Android -dnl ======================================================== -if test -n "$MOZ_ANDROID_DOWNLOADS_INTEGRATION"; then - AC_DEFINE(MOZ_ANDROID_DOWNLOADS_INTEGRATION) -fi - -dnl ======================================================== -dnl = Enable NFC permission on Android -dnl ======================================================== -if test -n "$MOZ_ANDROID_BEAM"; then - AC_DEFINE(MOZ_ANDROID_BEAM) -fi - -dnl ======================================================== -dnl = Include Search Activity on Android -dnl ======================================================== -if test -n "$MOZ_ANDROID_SEARCH_ACTIVITY"; then - AC_DEFINE(MOZ_ANDROID_SEARCH_ACTIVITY) -fi - -dnl ======================================================== -dnl = Include Mozilla Location Service Stumbler on Android -dnl ======================================================== -if test -n "$MOZ_ANDROID_MLS_STUMBLER"; then - AC_DEFINE(MOZ_ANDROID_MLS_STUMBLER) -fi - -dnl ========================================================= -dnl = Whether to exclude font files in the build -dnl ========================================================= -if test -n "$MOZ_ANDROID_EXCLUDE_FONTS"; then - AC_DEFINE(MOZ_ANDROID_EXCLUDE_FONTS) -fi - -dnl ========================================================= -dnl = Whether to exclude hyphenations files in the build -dnl ========================================================= -if test -n "$MOZ_EXCLUDE_HYPHENATION_DICTIONARIES"; then - AC_DEFINE(MOZ_EXCLUDE_HYPHENATION_DICTIONARIES) -fi - -dnl ========================================================= -dnl = Background service for downloading additional content at runtime. -dnl ========================================================= -if test -n "$MOZ_ANDROID_DOWNLOAD_CONTENT_SERVICE"; then - AC_DEFINE(MOZ_ANDROID_DOWNLOAD_CONTENT_SERVICE) -fi - -dnl ======================================================== -dnl = Include install tracking on Android -dnl ======================================================== -if test -n "$MOZ_INSTALL_TRACKING"; then - AC_DEFINE(MOZ_INSTALL_TRACKING) -fi - -dnl ======================================================== -dnl = Include Switchboard A/B framework on Android -dnl ======================================================== -if test -n "$MOZ_SWITCHBOARD"; then - AC_DEFINE(MOZ_SWITCHBOARD) -fi - -dnl ======================================================== -dnl = Enable GCM on Android. -dnl ======================================================== -if test -n "$MOZ_ANDROID_GCM"; then - AC_DEFINE(MOZ_ANDROID_GCM) -fi - -dnl ======================================================== -dnl = Enable IPDL's "expensive" unit tests -dnl ======================================================== -MOZ_IPDL_TESTS= - -MOZ_ARG_ENABLE_BOOL(ipdl-tests, -[ --enable-ipdl-tests Enable expensive IPDL tests], - MOZ_IPDL_TESTS=1, - MOZ_IPDL_TESTS=) - -if test -n "$MOZ_IPDL_TESTS"; then - AC_DEFINE(MOZ_IPDL_TESTS) -fi - -AC_SUBST(MOZ_IPDL_TESTS) - -dnl ======================================================== -dnl = Disable building dbm -dnl ======================================================== -MOZ_ARG_DISABLE_BOOL(dbm, -[ --disable-dbm Disable building dbm], - NSS_DISABLE_DBM=1, - NSS_DISABLE_DBM=) - -dnl ======================================================== -dnl accessibility support on by default on all platforms -dnl ======================================================== -MOZ_ARG_DISABLE_BOOL(accessibility, -[ --disable-accessibility Disable accessibility support], - ACCESSIBILITY=, - ACCESSIBILITY=1 ) -if test "$ACCESSIBILITY"; then - case "$target" in - *-mingw*) - if test -z "$MIDL"; then - if test "$GCC" != "yes"; then - AC_MSG_ERROR([MIDL could not be found. Building accessibility without MIDL is not supported.]) - else - AC_MSG_ERROR([You have accessibility enabled, but widl could not be found. Add --disable-accessibility to your mozconfig or install widl. See https://developer.mozilla.org/en-US/docs/Cross_Compile_Mozilla_for_Mingw32 for details.]) - fi - fi - esac - AC_DEFINE(ACCESSIBILITY) -fi - -dnl ======================================================== -dnl Accessibility is required for the linuxgl widget -dnl backend -dnl ======================================================== -if test "${MOZ_WIDGET_TOOLKIT}" = "linuxgl" -a "$ACCESSIBILITY" != "1"; then - AC_MSG_ERROR(["Accessibility is required for the linuxgl widget backend"]) -fi - -dnl Turn off webrtc for OS's we don't handle yet, but allow -dnl --enable-webrtc to override. Can disable for everything in -dnl the master list above. -if test -n "$MOZ_WEBRTC"; then - case "$target" in - *-linux*|*-mingw*|*-darwin*|*-android*|*-linuxandroid*|*-dragonfly*|*-freebsd*|*-netbsd*|*-openbsd*) - dnl Leave enabled - ;; - *) - dnl default to disabled for all others - MOZ_WEBRTC= - ;; - esac -fi - -AC_TRY_COMPILE([#include ], - [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ], - MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1) - -AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI) - -# target_arch is from {ia32|x64|arm|ppc} -case "$CPU_ARCH" in -x86_64 | arm | aarch64 | x86 | ppc* | ia64) - : - ;; -*) -# unsupported arch for webrtc - MOZ_WEBRTC= - ;; - -esac - -dnl ======================================================== -dnl = Disable WebRTC code -dnl ======================================================== -MOZ_ARG_DISABLE_BOOL(webrtc, -[ --disable-webrtc Disable support for WebRTC], - MOZ_WEBRTC=, - MOZ_WEBRTC=1) - -if test -n "$MOZ_WEBRTC"; then - AC_DEFINE(MOZ_WEBRTC) - dnl MOZ_WEBRTC_ASSERT_ALWAYS turns on a number of safety asserts in - dnl opt/production builds (via MOZ_CRASH()) - AC_DEFINE(MOZ_WEBRTC_ASSERT_ALWAYS) - MOZ_RAW=1 - MOZ_VPX_ERROR_CONCEALMENT=1 - -dnl enable once Signaling lands - MOZ_WEBRTC_SIGNALING=1 - AC_DEFINE(MOZ_WEBRTC_SIGNALING) -dnl enable once PeerConnection lands - MOZ_PEERCONNECTION=1 - AC_DEFINE(MOZ_PEERCONNECTION) - MOZ_SCTP=1 - MOZ_SRTP=1 - AC_DEFINE(MOZ_SCTP) - AC_DEFINE(MOZ_SRTP) - if test -n "$MOZ_X11"; then - MOZ_WEBRTC_X11_LIBS="-lXext -lXdamage -lXfixes -lXcomposite" - fi -else - MOZ_SYNTH_PICO= -fi - -dnl ======================================================== -dnl = Force hardware AEC, disable webrtc.org AEC -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(hardware-aec-ns, -[ --enable-hardware-aec-ns Enable support for hardware AEC and noise suppression], - MOZ_WEBRTC_HARDWARE_AEC_NS=1, - MOZ_WEBRTC_HARDWARE_AEC_NS=) - -if test -n "$MOZ_WEBRTC_HARDWARE_AEC_NS"; then - AC_DEFINE(MOZ_WEBRTC_HARDWARE_AEC_NS) -fi - -AC_SUBST(MOZ_WEBRTC) -AC_SUBST(MOZ_WEBRTC_LEAKING_TESTS) -AC_SUBST(MOZ_WEBRTC_SIGNALING) -AC_SUBST(MOZ_PEERCONNECTION) -AC_SUBST(MOZ_WEBRTC_ASSERT_ALWAYS) -AC_SUBST(MOZ_WEBRTC_HARDWARE_AEC_NS) -AC_SUBST(MOZ_SCTP) -AC_SUBST(MOZ_SRTP) -AC_SUBST_LIST(MOZ_WEBRTC_X11_LIBS) - -dnl Use integers over floats for audio on B2G and Android -dnl (regarless of the CPU architecture, because audio -dnl backends for those platforms don't support floats. We also -dnl use integers on ARM with other OS, because it's more efficient. -if test "$OS_TARGET" = "Android" -o "$CPU_ARCH" = "arm"; then - MOZ_SAMPLE_TYPE_S16=1 - AC_DEFINE(MOZ_SAMPLE_TYPE_S16) - AC_SUBST(MOZ_SAMPLE_TYPE_S16) -else - MOZ_SAMPLE_TYPE_FLOAT32=1 - AC_DEFINE(MOZ_SAMPLE_TYPE_FLOAT32) - AC_SUBST(MOZ_SAMPLE_TYPE_FLOAT32) -fi - -dnl ======================================================== -dnl = Disable Speech API pocketsphinx backend -dnl ======================================================== -if test -n "$MOZ_WEBSPEECH_POCKETSPHINX"; then - AC_DEFINE(MOZ_WEBSPEECH_POCKETSPHINX) -fi - -AC_SUBST(MOZ_WEBSPEECH_POCKETSPHINX) - -dnl ======================================================== -dnl = Disable Speech API code -dnl ======================================================== -MOZ_ARG_DISABLE_BOOL(webspeech, -[ --disable-webspeech Disable support for HTML Speech API], - MOZ_WEBSPEECH=, - MOZ_WEBSPEECH=1) - -if test -n "$MOZ_WEBSPEECH"; then - AC_DEFINE(MOZ_WEBSPEECH) -fi - -AC_SUBST(MOZ_WEBSPEECH) - -dnl ======================================================== -dnl = Disable Speech API test backend -dnl ======================================================== -MOZ_ARG_DISABLE_BOOL(webspeechtestbackend, -[ --disable-webspeechtestbackend Disable support for HTML Speech API Test Backend], - MOZ_WEBSPEECH_TEST_BACKEND=, - MOZ_WEBSPEECH_TEST_BACKEND=1) - -if test -z "$MOZ_WEBSPEECH"; then -MOZ_WEBSPEECH_TEST_BACKEND= -fi - -if test -n "$MOZ_WEBSPEECH_TEST_BACKEND"; then - AC_DEFINE(MOZ_WEBSPEECH_TEST_BACKEND) -fi - -AC_SUBST(MOZ_WEBSPEECH_TEST_BACKEND) - -dnl ======================================================== -dnl = Disable Speech API models -dnl ======================================================== -if test -z "$MOZ_WEBSPEECH"; then -MOZ_WEBSPEECH_MODELS= -fi - -if test -n "$MOZ_WEBSPEECH_MODELS"; then - AC_DEFINE(MOZ_WEBSPEECH_MODELS) -fi - -AC_SUBST(MOZ_WEBSPEECH_MODELS) - -dnl ======================================================== -dnl = Enable Raw Codecs -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(raw, -[ --enable-raw Enable support for RAW media], - MOZ_RAW=1, - MOZ_RAW=) - -if test -n "$MOZ_RAW"; then - AC_DEFINE(MOZ_RAW) -fi - -AC_SUBST(MOZ_RAW) - -dnl Checks for __attribute__(aligned()) directive need by libogg -AC_CACHE_CHECK([__attribute__ ((aligned ())) support], - [ac_cv_c_attribute_aligned], - [ac_cv_c_attribute_aligned=0 - CFLAGS_save="${CFLAGS}" - CFLAGS="${CFLAGS} -Werror" - for ac_cv_c_attr_align_try in 64 32 16 8; do - echo "trying $ac_cv_c_attr_align_try" - AC_TRY_COMPILE([], - [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;], - [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"]) - if test "$ac_cv_c_attribute_aligned" != 0; then - break; - fi - done - CFLAGS="${CFLAGS_save}"]) -if test "${ac_cv_c_attribute_aligned}" != "0"; then - AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], - [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment]) -fi - -dnl ======================================================== -dnl = Apple platform decoder support -dnl ======================================================== -if test "$MOZ_WIDGET_TOOLKIT" = "cocoa" || test "$MOZ_WIDGET_TOOLKIT" = "uikit"; then - MOZ_APPLEMEDIA=1 -fi - -if test "$COMPILE_ENVIRONMENT"; then -if test -n "$MOZ_APPLEMEDIA"; then - AC_DEFINE(MOZ_APPLEMEDIA) - # hack in frameworks for fmp4 - see bug 1029974 - # We load VideoToolbox and CoreMedia dynamically, so they don't appear here. - LDFLAGS="$LDFLAGS -framework AudioToolbox" - dnl Verify CoreMedia is available. - AC_CHECK_HEADER([CoreMedia/CoreMedia.h], [], - [AC_MSG_ERROR([MacOS X 10.7 SDK or later is required])]) -fi -fi # COMPILE_ENVIRONMENT - -dnl ======================================================== -dnl = DirectShow support -dnl ======================================================== -if test "$OS_ARCH" = "WINNT"; then - dnl Enable DirectShow support by default. - MOZ_DIRECTSHOW=1 -fi - -MOZ_ARG_DISABLE_BOOL(directshow, -[ --disable-directshow Disable support for DirectShow], - MOZ_DIRECTSHOW=, - MOZ_DIRECTSHOW=1) - -if test -n "$MOZ_DIRECTSHOW"; then - AC_DEFINE(MOZ_DIRECTSHOW) -fi; - -dnl ======================================================== -dnl = Windows Media Foundation support -dnl ======================================================== -if test "$OS_ARCH" = "WINNT"; then - dnl Enable Windows Media Foundation support by default. - dnl Note our minimum SDK version is Windows 7 SDK, so we are (currently) - dnl guaranteed to have a recent-enough SDK to build WMF. - MOZ_WMF=1 -fi - -MOZ_ARG_DISABLE_BOOL(wmf, -[ --disable-wmf Disable support for Windows Media Foundation], - MOZ_WMF=, - MOZ_WMF=1) - -if test -n "$MOZ_WMF"; then - AC_DEFINE(MOZ_WMF) -fi; - -dnl ======================================================== -dnl FFmpeg H264/AAC Decoding Support -dnl ======================================================== -case "$OS_TARGET" in -WINNT|Android) - ;; -*) - MOZ_FFMPEG=1 - ;; -esac - -MOZ_ARG_DISABLE_BOOL(ffmpeg, -[ --disable-ffmpeg Disable FFmpeg for fragmented H264/AAC decoding], - MOZ_FFMPEG=, - MOZ_FFMPEG=1 -) - -if test -n "$MOZ_FFMPEG"; then - AC_DEFINE(MOZ_FFMPEG) -fi; - -dnl ======================================================== -dnl = Built-in fragmented MP4 support. -dnl ======================================================== - -if test "$OS_TARGET" = Android -a -z "$gonkdir"; then - MOZ_FMP4=1 -fi - -if test -n "$MOZ_WMF" -o -n "$MOZ_FFMPEG" -o -n "$MOZ_APPLEMEDIA"; then - dnl Enable fragmented MP4 parser on Windows by default. - dnl We will also need to enable it on other platforms as we implement - dnl platform decoder support there too. - MOZ_FMP4=1 -fi - -MOZ_ARG_DISABLE_BOOL(fmp4, -[ --disable-fmp4 Disable support for in built Fragmented MP4 parsing], - MOZ_FMP4=, - MOZ_FMP4=1) - -if test -n "$MOZ_FFMPEG" -a -z "$MOZ_FMP4"; then - AC_MSG_ERROR([Fragmented MP4 support must be enabled if using FFMPEG]) -fi - -if test -n "$MOZ_FMP4"; then - AC_DEFINE(MOZ_FMP4) - MOZ_EME=1 -fi; - -if test x"$MOZ_WIDGET_TOOLKIT" = x"gonk" -a -n "$MOZ_FMP4" -a -n "$ANDROID_VERSION"; then - # we now know for sure that $ANDROID_VERSION is not an empty string! - if test "$ANDROID_VERSION" -ge "18"; then - MOZ_GONK_MEDIACODEC=1 - AC_SUBST(MOZ_GONK_MEDIACODEC) - fi -fi - - -dnl ======================================================== -dnl = EME support -dnl ======================================================== - -MOZ_ARG_ENABLE_STRING(eme, -[ --enable-eme[=adobe] Enable support for Encrypted Media Extensions ], - MOZ_EME_ARGS=$enableval) - -if test "$MOZ_EME_ARGS"; then - if test "$MOZ_EME_ARGS" = "no"; then - dnl EME explicitly disabled with --disable-eme - MOZ_EME= - elif test "$MOZ_EME_ARGS" = "yes"; then - dnl EME explicitly enabled with --enable-eme - MOZ_EME=1 - else - dnl EME explicitly enabled with --enable-eme= - MOZ_EME=1 - MOZ_EME_MODULES=`echo $MOZ_EME_ARGS | sed -e 's/,/ /g'` - fi -fi - -AC_SUBST_SET(MOZ_EME_MODULES) -if test -n "$MOZ_EME"; then - if test -z "$MOZ_FMP4"; then - AC_MSG_ERROR([Encrypted Media Extension support requires Fragmented MP4 support]) - fi - AC_DEFINE(MOZ_EME) -fi - -dnl ======================================================== -dnl = Enable media plugin support -dnl ======================================================== -if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then - dnl Enable support on android by default - MOZ_ANDROID_OMX=1 -fi - -MOZ_ARG_ENABLE_BOOL(android-omx, -[ --enable-android-omx Enable support for Android OMX media backend], - MOZ_ANDROID_OMX=1, - MOZ_ANDROID_OMX=) - -if test -n "$MOZ_ANDROID_OMX"; then - AC_DEFINE(MOZ_ANDROID_OMX) -fi - -dnl ======================================================== -dnl = Enable getUserMedia support -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(media-navigator, -[ --enable-media-navigator Enable support for getUserMedia], - MOZ_MEDIA_NAVIGATOR=1, - MOZ_MEDIA_NAVIGATOR=) - -if test -n "$MOZ_MEDIA_NAVIGATOR"; then - AC_DEFINE(MOZ_MEDIA_NAVIGATOR) -fi - -dnl ======================================================== -dnl = Enable building OMX media plugin (B2G or Android) -dnl ======================================================== -if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then - dnl Enable support on android by default - MOZ_OMX_PLUGIN=1 -fi - -MOZ_ARG_ENABLE_BOOL(omx-plugin, -[ --enable-omx-plugin Enable building OMX plugin (B2G)], - MOZ_OMX_PLUGIN=1, - MOZ_OMX_PLUGIN=) - -if test -n "$MOZ_OMX_PLUGIN"; then - if test "$OS_TARGET" = "Android"; then - dnl Only allow building OMX plugin on Gonk (B2G) or Android - AC_DEFINE(MOZ_OMX_PLUGIN) - else - dnl fail if we're not building on Gonk or Android - AC_MSG_ERROR([OMX media plugin can only be built on B2G or Android]) - fi -fi - -dnl ======================================================== -dnl Gradle support +dnl Welcome to the new world of configure. We're working on moving to a +dnl python based configure. In the meanwhile, remains of the old autoconf +dnl based configure is in old-configure.in. +dnl If you need to add something, please come talk to the build system +dnl peers for now. dnl -dnl If --with-gradle is specified, build mobile/android with Gradle. -dnl -dnl If no Gradle binary is specified, use the in tree Gradle wrapper. -dnl The wrapper downloads and installs Gradle, which is good for local -dnl developers but not good in automation. -dnl ======================================================== - -GRADLE= -MOZ_ARG_WITH_STRING(gradle, -[ --with-gradle=/path/to/bin/gradle - Enable building mobile/android with Gradle (argument: location of binary or wrapper (gradle/gradlew))], - if test "$withval" = "no" ; then - dnl --without-gradle => use the wrapper in |mach gradle|, don't build - dnl with Gradle by default. - GRADLE=$srcdir/gradlew - MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE= - elif test "$withval" = "yes" ; then - dnl --with-gradle => use the wrapper in |mach gradle|, build with - dnl Gradle by default. - GRADLE=$srcdir/gradlew - MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE=1 - else - dnl --with-gradle=/path/to/gradle => use the given binary in |mach - dnl gradle|, build with Gradle by default. - GRADLE=$withval - MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE=1 - fi - , - dnl No --with{out}-gradle => use the wrapper in |mach gradle|, don't build - dnl with Gradle by default. - GRADLE=$srcdir/gradlew - MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE= - ) - -if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk" ; then - if test -z "$GRADLE" -o ! -x "$GRADLE" ; then - AC_MSG_ERROR([The program gradlew/gradle was not found. Use --with-gradle=/path/to/bin/gradle}]) - fi -fi -AC_SUBST(GRADLE) - -dnl Path to Maven repository containing Gradle dependencies. Automation will -dnl set this to file:///path/to/local via the mozconfig. Local developer -dnl default is jcenter. -if test -z "$GRADLE_MAVEN_REPOSITORY" ; then - GRADLE_MAVEN_REPOSITORY=https://jcenter.bintray.com/ -fi -AC_SUBST(GRADLE_MAVEN_REPOSITORY) - -if test -n "$MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE"; then - if test "$OS_TARGET" = "Android" -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then - dnl Only allow building mobile/android with Gradle. - AC_DEFINE(MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE) - else - dnl fail if we're not building mobile/android. - AC_MSG_ERROR([Can only build mobile/android with Gradle]) - fi -fi - -dnl system libvpx Support -dnl ======================================================== -MOZ_ARG_WITH_BOOL(system-libvpx, -[ --with-system-libvpx Use system libvpx (located with pkgconfig)], - MOZ_NATIVE_LIBVPX=1) - -MOZ_LIBVPX_CFLAGS= -MOZ_LIBVPX_LIBS= - -if test -n "$MOZ_VPX_ERROR_CONCEALMENT" ; then - AC_DEFINE(MOZ_VPX_ERROR_CONCEALMENT) -fi - -_SAVE_CFLAGS=$CFLAGS -_SAVE_LIBS=$LIBS -if test -n "$MOZ_NATIVE_LIBVPX"; then - dnl ============================ - dnl === libvpx Version check === - dnl ============================ - dnl Check to see if we have a system libvpx package. - PKG_CHECK_MODULES(MOZ_LIBVPX, vpx >= 1.3.0) - - CFLAGS="$CFLAGS $MOZ_LIBVPX_CFLAGS" - LIBS="$LIBS $MOZ_LIBVPX_LIBS" - - MOZ_CHECK_HEADER([vpx/vpx_decoder.h], [], - [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.])]) - - AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver, [], - [AC_MSG_ERROR([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found])]) - - MOZ_CHECK_HEADER([vpx_mem/vpx_mem.h], - [AC_CHECK_FUNC(vpx_mem_set_functions)]) - if test "$ac_cv_header_vpx_mem_vpx_mem_h" = no -o \ - "$ac_cv_func_vpx_mem_set_functions" = no; then - AC_DEFINE(MOZ_VPX_NO_MEM_REPORTING) - fi -fi -CFLAGS=$_SAVE_CFLAGS -LIBS=$_SAVE_LIBS - -AC_SUBST(MOZ_NATIVE_LIBVPX) -AC_SUBST_LIST(MOZ_LIBVPX_CFLAGS) -AC_SUBST_LIST(MOZ_LIBVPX_LIBS) - -if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then - MOZ_VORBIS=1 -else - MOZ_TREMOR=1 -fi - -if test -z "$MOZ_NATIVE_LIBVPX"; then - - dnl Detect if we can use an assembler to compile optimized assembly for libvpx. - dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32. - dnl We currently require gcc on all arm platforms. - VPX_AS=$YASM - VPX_ASM_SUFFIX=asm - VPX_NEED_OBJ_INT_EXTRACT= - - dnl See if we have assembly on this platform. - case "$OS_ARCH:$CPU_ARCH" in - Darwin:x86) - VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC" - VPX_X86_ASM=1 - ;; - Darwin:x86_64) - VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC" - VPX_X86_ASM=1 - ;; - WINNT:x86_64) - VPX_ASFLAGS="-f x64 -rnasm -pnasm" - VPX_X86_ASM=1 - ;; - WINNT:x86) - dnl Check for yasm 1.1 or greater. - if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then - 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.]) - elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then - 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.]) - else - VPX_ASFLAGS="-f win32 -rnasm -pnasm -DPIC" - VPX_X86_ASM=1 - dnl The encoder needs obj_int_extract to get asm offsets. - fi # COMPILE_ENVIRONMENT and others - ;; - *:arm*) - if test -n "$GNU_AS" ; then - VPX_AS=$AS - dnl These flags are a lie; they're just used to enable the requisite - dnl opcodes; actual arch detection is done at runtime. - VPX_ASFLAGS="-march=armv7-a -mfpu=neon" - VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl' - VPX_ASM_SUFFIX="$ASM_SUFFIX" - VPX_ARM_ASM=1 - dnl Building with -mfpu=neon requires either the "softfp" or the - dnl "hardfp" ABI. Depending on the compiler's default target, and the - dnl CFLAGS, the default ABI might be neither, in which case it is the - dnl "softfloat" ABI. - dnl The "softfloat" ABI is binary-compatible with the "softfp" ABI, so - dnl we can safely mix code built with both ABIs. So, if we detect - dnl that compiling uses the "softfloat" ABI, force the use of the - dnl "softfp" ABI instead. - dnl Confusingly, the __SOFTFP__ preprocessor variable indicates the - dnl "softfloat" ABI, not the "softfp" ABI. - dnl Note: VPX_ASFLAGS is also used in CFLAGS. - AC_TRY_COMPILE([], - [#ifndef __SOFTFP__ - #error "compiler target supports -mfpu=neon, so we don't have to add extra flags" - #endif], - VPX_ASFLAGS="$VPX_ASFLAGS -mfloat-abi=softfp" - ) - fi - ;; - *:x86) - if $CC -E -dM -= 1.7]) - - dnl Javac spits out something like `javac 1.7.0`. This line cuts off the 'javac' - _javac_version=$($JAVAC -version 2>&1 | cut -d ' ' -f 2) - - dnl Here, we extract the major (1) and minor (7) version numbers from the - dnl acquired version string. - _javac_major_version=$(echo $_javac_version | cut -d '.' -f 1) - _javac_minor_version=$(echo $_javac_version | cut -d '.' -f 2) - - AC_MSG_RESULT([$_javac_version]) - - dnl Fail if we have a version other than 1.7.X - if test "$_javac_major_version" -ne "1" -o \ - \( "$_javac_minor_version" -lt "7" \); then - AC_MSG_ERROR([javac 1.7 or higher is required.]) - fi -fi - -dnl ======================================================== -dnl = ANGLE OpenGL->D3D translator for WebGL -dnl = * only applies to win32 -dnl ======================================================== - -MOZ_ANGLE_RENDERER= -MOZ_D3D_CPU_SUFFIX= -MOZ_HAS_WINSDK_WITH_D3D= -MOZ_D3DCOMPILER_VISTA_DLL= -MOZ_D3DCOMPILER_VISTA_DLL_PATH= -MOZ_DIRECTX_SDK_PATH= -MOZ_D3DCOMPILER_XP_DLL= -MOZ_D3DCOMPILER_XP_CAB= - -if test "$COMPILE_ENVIRONMENT" ; then -case "$target_os" in -*mingw*) - MOZ_ANGLE_RENDERER=1 - ;; -esac - -# The DirectX SDK libraries are split into x86 and x64 sub-directories -case "${target_cpu}" in -i*86) - MOZ_D3D_CPU_SUFFIX=x86 - ;; -x86_64) - MOZ_D3D_CPU_SUFFIX=x64 - ;; -esac - -MOZ_ARG_ENABLE_BOOL(require-all-d3dc-versions, -[ --enable-require-all-d3dc-versions Require all versions of the D3D compiler needed for supported Windows systems.], - MOZ_REQUIRE_ALL_D3DCS=1, - MOZ_REQUIRE_ALL_D3DCS=) - -# This is potentially set in external mozconfig files; if it's set, -# then the build exposes the "webgl" context name, which is reserved -# for conformant implementations. -if test -n "$MOZ_WEBGL_CONFORMANT"; then - AC_DEFINE(MOZ_WEBGL_CONFORMANT) -fi - -dnl ======================================================== -dnl D3D compiler DLL -dnl ======================================================== -MOZ_FOUND_D3D_COMPILERS= - -if test -n "$MOZ_ANGLE_RENDERER"; then - if test -z "$MOZ_D3D_CPU_SUFFIX"; then - AC_MSG_ERROR([Couldn't determine MOZ_D3D_CPU_SUFFIX.]) - fi - - ###################################### - # Find _46+ for use by Vista+. - - # Find a D3D compiler DLL in a Windows SDK. - MOZ_D3DCOMPILER_VISTA_DLL= - case "$MOZ_WINSDK_MAXVER" in - 0x0603*|0x0A00*) - MOZ_D3DCOMPILER_VISTA_DLL=d3dcompiler_47.dll - AC_MSG_RESULT([Found D3D compiler in Windows SDK.]) - ;; - esac - - if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then - # We have a name, now track down the path. - if test -n "$WINDOWSSDKDIR"; then - MOZ_D3DCOMPILER_VISTA_DLL_PATH="$WINDOWSSDKDIR/Redist/D3D/$MOZ_D3D_CPU_SUFFIX/$MOZ_D3DCOMPILER_VISTA_DLL" - if test -f "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then - AC_MSG_RESULT([Found MOZ_D3DCOMPILER_VISTA_DLL_PATH: $MOZ_D3DCOMPILER_VISTA_DLL_PATH]) - MOZ_HAS_WINSDK_WITH_D3D=1 - else - AC_MSG_RESULT([MOZ_D3DCOMPILER_VISTA_DLL_PATH doesn't exist: $MOZ_D3DCOMPILER_VISTA_DLL_PATH]) - AC_MSG_ERROR([Windows SDK at "$WINDOWSSDKDIR" appears broken. Try updating to MozillaBuild 1.9 final or higher.]) - MOZ_D3DCOMPILER_VISTA_DLL_PATH= - fi - else - AC_MSG_RESULT([Windows SDK not found.]) - fi - else - AC_MSG_ERROR([Couldn't find Windows SDK 8.1 or higher needed for ANGLE.]) - fi - - if test -z "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then - MOZ_D3DCOMPILER_VISTA_DLL= - fi - - # On mingw, check if headers are provided by toolchain. - if test -n "$GNU_CC"; then - MOZ_CHECK_HEADER(d3d10.h, MOZ_HAS_WINSDK_WITH_D3D=1) - fi - - ###################################### - # Find _43 for use by XP. - - if test "$HAVE_64BIT_BUILD"; then - AC_MSG_RESULT([We are building a 64-bit binary, skip checking d3dcompiler_43.]) - else - # Get the SDK path from the registry. - # First try to get the June 2010 SDK - MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1` - if test -z "$MOZ_DIRECTX_SDK_REG_KEY" ; then - # Otherwise just take whatever comes first - MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1` - fi - MOZ_DIRECTX_SDK_PATH=`reg query "$MOZ_DIRECTX_SDK_REG_KEY" //v InstallPath | grep REG_SZ | sed 's/.*\([[a-zA-Z]]\)\\:\\\\/\\1\\:\\\\/' | sed 's,\\\\,/,g'` - - if test -n "$MOZ_DIRECTX_SDK_PATH" && - test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/dxguid.lib ; then - AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH]) - else - AC_MSG_RESULT([DirectX SDK not found.]) - MOZ_DIRECTX_SDK_PATH= - fi - - # Check that our DirectX SDK is acceptable. - if test -n "$MOZ_DIRECTX_SDK_PATH"; then - if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then - AC_MSG_RESULT([Found the February 2010 DirectX SDK, which is unacceptable to ANGLE.]) - MOZ_DIRECTX_SDK_PATH= - fi - fi - - if test -n "$MOZ_DIRECTX_SDK_PATH"; then - # Find a D3D compiler DLL in the DirectX SDK, if we didn't find one already. - # Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib - MOZ_D3DX9_VERSION=`dumpbin //headers "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/d3dx9.lib | egrep d3dx9_[[0-9]][[0-9]]\.dll | head -n1 | sed 's/.*\([[0-9]][[0-9]]\).*/\\1/g'` - - if test -n "$MOZ_D3DX9_VERSION" ; then - MOZ_D3DCOMPILER_XP_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_D3D_CPU_SUFFIX}.cab | head -n1` - - if test -n "$MOZ_D3DCOMPILER_XP_CAB"; then - MOZ_D3DCOMPILER_XP_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll - else - AC_MSG_RESULT([Couldn't find a CAB containing the D3D compiler DLL.]) - AC_MSG_ERROR([DirectX SDK at "$MOZ_DIRECTX_SDK_PATH" appears broken.]) - MOZ_DIRECTX_SDK_PATH= - fi - else - AC_MSG_RESULT([Couldn't determine the D3DX9 version for the DirectX SDK.]) - MOZ_DIRECTX_SDK_PATH= - fi - else - AC_MSG_RESULT([Couldn't find an acceptable DirectX SDK for ANGLE, needed for d3dcompiler_43.]) - fi - fi - - ###################################### - # Check that we found what we needed. - MOZ_FOUND_A_D3D_COMPILER= - MOZ_FOUND_BOTH_D3D_COMPILERS=1 - - if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then - MOZ_FOUND_A_D3D_COMPILER=1 - AC_MSG_RESULT([Found d3dcompiler DLL for Vista+: $MOZ_D3DCOMPILER_VISTA_DLL]) - else - MOZ_FOUND_BOTH_D3D_COMPILERS= - fi - - if test -n "$MOZ_D3DCOMPILER_XP_DLL"; then - MOZ_FOUND_A_D3D_COMPILER=1 - AC_MSG_RESULT([Found d3dcompiler DLL for XP: $MOZ_D3DCOMPILER_XP_DLL]) - else - MOZ_FOUND_BOTH_D3D_COMPILERS= - fi - - if test -z "$CROSS_COMPILE"; then - if test -z "MOZ_FOUND_A_D3D_COMPILER"; then - AC_MSG_ERROR([Couldn't find an acceptable D3D compiler DLL.]) - fi - - if test -n "$MOZ_REQUIRE_ALL_D3DCS" -a -z "$MOZ_FOUND_BOTH_D3D_COMPILERS"; then - AC_MSG_ERROR([Both D3D compilers _43 and _46+ are required by --enable-require-d3d-compilers.]) - AC_MSG_ERROR([ Install Windows SDK 8.0+, as well as DirectX SDK (June 2010 version or newer), or reconfigure without this flag.]) - fi - fi -fi # MOZ_ANGLE_RENDERER - -fi # COMPILE_ENVIRONMENT - - -dnl ======================================================== -dnl Gamepad support -dnl ======================================================== -MOZ_GAMEPAD= -MOZ_GAMEPAD_BACKEND=stub - -# Gamepad DOM is built on supported platforms by default. -case "$OS_TARGET" in - WINNT|Linux) - MOZ_GAMEPAD=1 - ;; - Darwin) - if test -z "$MOZ_IOS"; then - MOZ_GAMEPAD=1 - fi - ;; - Android) - if test "$MOZ_WIDGET_TOOLKIT" != "gonk"; then - MOZ_GAMEPAD=1 - fi - ;; - *) - ;; -esac - -MOZ_ARG_DISABLE_BOOL(gamepad, -[ --disable-gamepad Disable gamepad support], - MOZ_GAMEPAD=, - MOZ_GAMEPAD=1) - -if test "$MOZ_GAMEPAD"; then - case "$OS_TARGET" in - Darwin) - if test -z "$MOZ_IOS"; then - MOZ_GAMEPAD_BACKEND=cocoa - fi - ;; - WINNT) - MOZ_GAMEPAD_BACKEND=windows - ;; - Linux) - MOZ_CHECK_HEADER([linux/joystick.h]) - if test "$ac_cv_header_linux_joystick_h" != "yes"; then - AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers or reconfigure with --disable-gamepad to disable gamepad support.]) - fi - MOZ_GAMEPAD_BACKEND=linux - ;; - Android) - MOZ_GAMEPAD_BACKEND=android - ;; - *) - ;; - esac - - AC_DEFINE(MOZ_GAMEPAD) -fi -AC_SUBST(MOZ_GAMEPAD) -AC_SUBST(MOZ_GAMEPAD_BACKEND) - -dnl ======================================================== -dnl = Breakpad crash reporting (on by default on supported platforms) -dnl ======================================================== - -case $target in -i?86-*-mingw*|x86_64-*-mingw*) - MOZ_CRASHREPORTER=1 - ;; -i?86-apple-darwin*|x86_64-apple-darwin*) - if test -z "$MOZ_IOS"; then - MOZ_CRASHREPORTER=1 - fi - ;; -i?86-*-linux*|x86_64-*-linux*|arm-*-linux*) - if test "$MOZ_ENABLE_GTK"; then - MOZ_CRASHREPORTER=1 - fi - ;; -*-android*|*-linuxandroid*) - MOZ_CRASHREPORTER=1 - ;; -*solaris*) - MOZ_CRASHREPORTER=1 - ;; -esac - -MOZ_ARG_DISABLE_BOOL(crashreporter, -[ --disable-crashreporter Disable breakpad crash reporting], - [MOZ_CRASHREPORTER=], - [MOZ_CRASHREPORTER=F # Force enable breakpad]) - -if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "Darwin"; then - if test "$MOZ_CRASHREPORTER" = F; then - AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.]) - fi - MOZ_CRASHREPORTER= -fi - -if test -n "$MOZ_CRASHREPORTER"; then - AC_DEFINE(MOZ_CRASHREPORTER) - - if test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS" && \ - test -z "$SKIP_LIBRARY_CHECKS"; then - PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0) - fi - - if test "$OS_ARCH" = "WINNT"; then - if test -z "$HAVE_64BIT_BUILD"; then - MOZ_CRASHREPORTER_INJECTOR=1 - AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR) - fi - fi -fi - -MOZ_ARG_WITH_STRING(crashreporter-enable-percent, -[ --with-crashreporter-enable-percent=NN - Enable sending crash reports by default on NN% of users. (default=100)], -[ val=`echo $withval | sed 's/[^0-9]//g'` - MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"]) - -if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then - MOZ_CRASHREPORTER_ENABLE_PERCENT=100 -fi -AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT) - -dnl ======================================================== -dnl = libjpeg-turbo configuration -dnl ======================================================== -MOZ_LIBJPEG_TURBO= -if test -z "$MOZ_NATIVE_JPEG"; then - MOZ_LIBJPEG_TURBO=1 -fi - -MOZ_ARG_DISABLE_BOOL(libjpeg_turbo, -[ --disable-libjpeg-turbo Disable optimized jpeg decoding routines], - MOZ_LIBJPEG_TURBO=, - MOZ_LIBJPEG_TURBO=1) - -if test "$MOZ_NATIVE_JPEG" = 1 -a "$MOZ_LIBJPEG_TURBO" = 1; then - AC_MSG_ERROR([cannot use --with-system-jpeg with --enable-libjpeg-turbo.]) -fi - -dnl Detect if we can use yasm to compile libjpeg-turbo's optimized assembly -dnl files. - -if test -n "$MOZ_LIBJPEG_TURBO"; then - - dnl Do we support libjpeg-turbo on this platform? - case "$OS_ARCH:$CPU_ARCH" in - Darwin:x86) - LIBJPEG_TURBO_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC -DMACHO" - ;; - Darwin:x86_64) - LIBJPEG_TURBO_ASFLAGS="-f macho64 -rnasm -pnasm -D__x86_64__ -DPIC -DMACHO" - ;; - Darwin:arm*) - ;; - WINNT:x86) - LIBJPEG_TURBO_ASFLAGS="-f win32 -rnasm -pnasm -DPIC -DWIN32" - ;; - WINNT:x86_64) - LIBJPEG_TURBO_ASFLAGS="-f win64 -rnasm -pnasm -D__x86_64__ -DPIC -DWIN64 -DMSVC" - ;; - *:arm) - LIBJPEG_TURBO_ASFLAGS="-march=armv7-a -mfpu=neon" - ;; - *:aarch64) - LIBJPEG_TURBO_ASFLAGS="-march=armv8-a" - ;; - *:mips) - LIBJPEG_TURBO_ASFLAGS="-mdspr2" - ;; - *:x86) - if $CC -E -dM -/dev/null` - changequote(,) - MAKENSISU_PARSED_VER=`echo "$MAKENSISU_VER" | sed -e 's/^v\([0-9]\+\.[0-9]\+\).*$/\1/g'` - changequote([,]) - MAKENSISU_MAJOR_VER=0 - MAKENSISU_MINOR_VER=0 - MAKENSISU_PRERELEASE_TYPE=$MIN_NSIS_PRERELEASE_TYPE - MAKENSISU_PRERELEASE_VER=$MIN_NSIS_PRERELEASE_VER - if test ! "$MAKENSISU_PARSED_VER" = ""; then - MAKENSISU_MAJOR_VER=`echo $MAKENSISU_PARSED_VER | $AWK -F\. '{ print $1 }'` - MAKENSISU_MINOR_VER=`echo $MAKENSISU_PARSED_VER | $AWK -F\. '{ print $2 }'` - changequote(,) - MAKENSISU_PARSED_PRERELEASE=`echo "$MAKENSISU_VER" | sed -e 's/^v[0-9]\+\.[0-9]\+\([^0-9]\+\)\([0-9]\+\).*$/\1.\2/g'` - changequote([,]) - if test ! "$MAKENSISU_PARSED_PRERELEASE" = "$MAKENSISU_VER"; then - MAKENSISU_PRERELEASE_TYPE=`echo $MAKENSISU_PARSED_PRERELEASE | $AWK -F\. '{ print $1 }'` - MAKENSISU_PRERELEASE_VER=`echo $MAKENSISU_PARSED_PRERELEASE | $AWK -F\. '{ print $2 }'` - fi - fi - AC_MSG_CHECKING([for NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER$MIN_NSIS_PRERELEASE_TYPE$MIN_NSIS_PRERELEASE_VER or greater]) - if test "$MAKENSISU_MAJOR_VER" -eq $MIN_NSIS_MAJOR_VER -a \ - "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER -a \ - "$MAKENSISU_PRERELEASE_TYPE" = "$MIN_NSIS_PRERELEASE_TYPE" -a \ - "$MAKENSISU_PRERELEASE_VER" -ge $MIN_NSIS_PRERELEASE_VER; then - AC_MSG_RESULT([yes]) - AC_MSG_RESULT([Found NSIS Version: $MAKENSISU_VER]) - else - AC_MSG_RESULT([no]) - if test -z "$CROSS_COMPILE"; then - AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER$MIN_NSIS_PRERELEASE_TYPE$MIN_NSIS_PRERELEASE_VER or greater in your path.]) - else - MAKENSISU= - fi - fi - elif test -z "$CROSS_COMPILE"; then - AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER$MIN_NSIS_PRERELEASE_TYPE$MIN_NSIS_PRERELEASE_VER or greater in your path.]) - else - MAKENSISU= - fi -fi - -dnl ======================================================== -dnl Web App Runtime -dnl ======================================================== -MOZ_ARG_DISABLE_BOOL(webapp-runtime, -[ --disable-webapp-runtime Disable Web App Runtime], - MOZ_WEBAPP_RUNTIME=, - MOZ_WEBAPP_RUNTIME=1) -if test "$MOZ_WIDGET_TOOLKIT" != "windows" -a "$MOZ_WIDGET_TOOLKIT" != "cocoa" -a -z "$MOZ_WIDGET_GTK" ; then - MOZ_WEBAPP_RUNTIME= -fi -if test "$OS_ARCH" = "WINNT" -a -z "$MAKENSISU" -a -n "$CROSS_COMPILE"; then - MOZ_WEBAPP_RUNTIME= -fi -AC_SUBST(MOZ_WEBAPP_RUNTIME) -if test "$MOZ_WEBAPP_RUNTIME"; then - AC_DEFINE(MOZ_WEBAPP_RUNTIME) -fi - -AC_CHECK_PROGS(TAR, gnutar gtar tar, "") -if test -z "$TAR"; then - AC_MSG_ERROR([no tar archiver found in \$PATH]) -fi -AC_SUBST(TAR) - -AC_CHECK_PROGS(WGET, wget, "") -AC_SUBST(WGET) - -dnl ======================================================== -dnl Maintenance Service -dnl ======================================================== - -MOZ_ARG_ENABLE_BOOL(maintenance-service, -[ --enable-maintenance-service Enable building of maintenanceservice], - MOZ_MAINTENANCE_SERVICE=1, - MOZ_MAINTENANCE_SERVICE= ) - -if test -n "$MOZ_MAINTENANCE_SERVICE"; then - if test "$OS_ARCH" = "WINNT"; then - AC_DEFINE(MOZ_MAINTENANCE_SERVICE) - else - AC_MSG_ERROR([Can only build with --enable-maintenance-service with a Windows target]) - fi -fi - -dnl ======================================================== -dnl Bundled fonts on desktop platforms -dnl ======================================================== - -MOZ_ARG_ENABLE_BOOL(bundled-fonts, -[ --enable-bundled-fonts Enable support for bundled fonts on desktop platforms], - MOZ_BUNDLED_FONTS=1, - MOZ_BUNDLED_FONTS=) - -if test -n "$MOZ_BUNDLED_FONTS"; then - AC_DEFINE(MOZ_BUNDLED_FONTS) -fi - -dnl ======================================================== -dnl Verify MAR signatures -dnl ======================================================== - -MOZ_ARG_ENABLE_BOOL(verify-mar, -[ --enable-verify-mar Enable verifying MAR signatures], - MOZ_VERIFY_MAR_SIGNATURE=1, - MOZ_VERIFY_MAR_SIGNATURE= ) - -if test -n "$MOZ_VERIFY_MAR_SIGNATURE"; then - AC_DEFINE(MOZ_VERIFY_MAR_SIGNATURE) -fi - -dnl ======================================================== -dnl Enable building the signmar program. -dnl This option is much different than the --enable-verify-mar option. -dnl --enable-verify-mar is for enabling the verification check on MAR -dnl files in the updater. The --enable-signmar option is for building -dnl the signmar program. -dnl ======================================================== - -MOZ_ARG_ENABLE_BOOL(signmar, -[ --enable-signmar Enable building the signmar program], - MOZ_ENABLE_SIGNMAR=1, - MOZ_ENABLE_SIGNMAR= ) - -if test -n "$MOZ_ENABLE_SIGNMAR"; then - if test -z "$COMPILE_ENVIRONMENT" ; then - AC_MSG_WARN([Cannot --enable-signmar with --disable-compile-environment]) - MOZ_ENABLE_SIGNMAR= - else - AC_DEFINE(MOZ_ENABLE_SIGNMAR) - fi -fi - -dnl ======================================================== -dnl Updater -dnl ======================================================== - -if test "$MOZ_IOS"; then - MOZ_UPDATER= -fi - -MOZ_ARG_DISABLE_BOOL(updater, -[ --disable-updater Disable building of updater], - MOZ_UPDATER=, - MOZ_UPDATER=1 ) - -if test -n "$MOZ_UPDATER"; then - AC_DEFINE(MOZ_UPDATER) -fi - -# tools/update-packaging is not checked out by default. -MOZ_ARG_ENABLE_BOOL(update-packaging, -[ --enable-update-packaging - Enable tools/update-packaging], - MOZ_UPDATE_PACKAGING=1, - MOZ_UPDATE_PACKAGING= ) -AC_SUBST(MOZ_UPDATE_PACKAGING) - -dnl ======================================================== -dnl build the tests by default -dnl ======================================================== -MOZ_ARG_DISABLE_BOOL(tests, -[ --disable-tests Do not build test libraries & programs], - ENABLE_TESTS=, - ENABLE_TESTS=1 ) - -if test -n "$ENABLE_TESTS"; then - GTEST_HAS_RTTI=0 - AC_DEFINE(ENABLE_TESTS) - AC_DEFINE_UNQUOTED(GTEST_HAS_RTTI, 0) - AC_SUBST(GTEST_HAS_RTTI) - if test -n "$_WIN32_MSVC"; then - AC_DEFINE_UNQUOTED(_VARIADIC_MAX, 10) - fi - if test "${OS_TARGET}" = "Android"; then - AC_DEFINE(GTEST_OS_LINUX_ANDROID) - AC_DEFINE(GTEST_USE_OWN_TR1_TUPLE) - AC_DEFINE_UNQUOTED(GTEST_HAS_CLONE, 0) - AC_SUBST(GTEST_OS_LINUX_ANDROID) - AC_SUBST(GTEST_USE_OWN_TR1_TUPLE) - AC_SUBST(GTEST_HAS_CLONE) - fi -fi - -dnl ======================================================== -dnl parental controls (for Windows Vista) -dnl ======================================================== -MOZ_ARG_DISABLE_BOOL(parental-controls, -[ --disable-parental-controls - Do not build parental controls], - MOZ_DISABLE_PARENTAL_CONTROLS=1, - MOZ_DISABLE_PARENTAL_CONTROLS=) -if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then - AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS) -fi - -AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS) - -dnl ======================================================== -dnl = Disable smartcard support -dnl ======================================================== -if test -n "$MOZ_NO_SMART_CARDS"; then - AC_DEFINE(MOZ_NO_SMART_CARDS) -fi -AC_SUBST(MOZ_NO_SMART_CARDS) - -dnl ======================================================== -dnl = Disable EV certificate verification -dnl ======================================================== -if test -n "$MOZ_NO_EV_CERTS"; then - AC_DEFINE(MOZ_NO_EV_CERTS) -fi -AC_SUBST(MOZ_NO_EV_CERTS) - -dnl ======================================================== -dnl = Sandboxing support -dnl ======================================================== -if test -n "$MOZ_TSAN"; then - # Bug 1182565: TSan conflicts with sandboxing on Linux. - case $OS_TARGET in - Linux|Android) - MOZ_SANDBOX= - ;; - esac -fi - -MOZ_ARG_DISABLE_BOOL(sandbox, -[ --disable-sandbox Disable sandboxing support], - MOZ_SANDBOX=, - MOZ_SANDBOX=1) - -dnl ======================================================== -dnl = Content process sandboxing -dnl ======================================================== -if test -n "$gonkdir"; then - MOZ_CONTENT_SANDBOX=$MOZ_SANDBOX -fi - -case "$OS_TARGET:$NIGHTLY_BUILD" in -WINNT:1) - MOZ_CONTENT_SANDBOX=$MOZ_SANDBOX - ;; -Darwin:1) - MOZ_CONTENT_SANDBOX=$MOZ_SANDBOX - ;; -esac - -MOZ_ARG_ENABLE_BOOL(content-sandbox, -[ --enable-content-sandbox Enable sandboxing support for content-processes - --disable-content-sandbox Disable sandboxing support for content-processes], - MOZ_CONTENT_SANDBOX=1, - MOZ_CONTENT_SANDBOX=) - -if test -n "$MOZ_CONTENT_SANDBOX" -a -z "$MOZ_SANDBOX"; then - AC_MSG_ERROR([--enable-content-sandbox and --disable-sandbox are conflicting options]) -fi - -if test -n "$MOZ_CONTENT_SANDBOX"; then - AC_DEFINE(MOZ_CONTENT_SANDBOX) -fi - -AC_SUBST(MOZ_CONTENT_SANDBOX) - -dnl ======================================================== -dnl = Gecko Media Plugin sandboxing -dnl ======================================================== -case $OS_TARGET in -WINNT) - MOZ_GMP_SANDBOX=$MOZ_SANDBOX - ;; -Linux) - case $CPU_ARCH in - x86_64|x86) - MOZ_GMP_SANDBOX=$MOZ_SANDBOX - ;; - esac - ;; -Darwin) - MOZ_GMP_SANDBOX=$MOZ_SANDBOX - ;; -esac - -if test -n "$MOZ_GMP_SANDBOX"; then - AC_DEFINE(MOZ_GMP_SANDBOX) -fi - -AC_SUBST(MOZ_GMP_SANDBOX) - -if test -z "$MOZ_CONTENT_SANDBOX" -a -z "$MOZ_GMP_SANDBOX"; then - MOZ_SANDBOX= -fi - -if test -n "$MOZ_SANDBOX"; then - AC_DEFINE(MOZ_SANDBOX) -fi - -AC_SUBST(MOZ_SANDBOX) - - -dnl ======================================================== -dnl = -dnl = Module specific options -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Individual module options) - -dnl ======================================================== -dnl = Disable feed handling components -dnl ======================================================== -MOZ_ARG_DISABLE_BOOL(feeds, -[ --disable-feeds Disable feed handling and processing components], - MOZ_FEEDS=, - MOZ_FEEDS=1 ) -if test -n "$MOZ_FEEDS"; then - AC_DEFINE(MOZ_FEEDS) -else - if test "$MOZ_BUILD_APP" = "browser"; then - AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.]) - fi -fi - -dnl ======================================================== -dnl Check for sqlite -dnl ======================================================== - -MOZ_NATIVE_SQLITE= -MOZ_ARG_ENABLE_BOOL(system-sqlite, -[ --enable-system-sqlite Use system sqlite (located with pkgconfig)], -MOZ_NATIVE_SQLITE=1, -MOZ_NATIVE_SQLITE= ) - -if test -n "$MOZ_NATIVE_SQLITE" -then - dnl ============================ - dnl === SQLite Version check === - dnl ============================ - dnl Check to see if the system SQLite package is new enough. - PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION) - - dnl ================================== - dnl === SQLITE_SECURE_DELETE check === - dnl ================================== - dnl Check to see if the system SQLite package is compiled with - dnl SQLITE_SECURE_DELETE enabled. - AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite) - _SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $SQLITE_CFLAGS" - _SAVE_LIBS="$LIBS" - LIBS="$LIBS $SQLITE_LIBS" - AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[ - AC_TRY_RUN([ - #include "sqlite3.h" - - int main(int argc, char **argv){ - return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE"); - }], - ac_cv_sqlite_secure_delete=yes, - ac_cv_sqlite_secure_delete=no, - ac_cv_sqlite_secure_delete=no - ) - ]) - AC_MSG_RESULT($ac_cv_sqlite_secure_delete) - CFLAGS="$_SAVE_CFLAGS" - LIBS="$_SAVE_LIBS" - if test "x$ac_cv_sqlite_secure_delete" = "xno"; then - AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.]) - fi - - dnl =============================== - dnl === SQLITE_THREADSAFE check === - dnl =============================== - dnl Check to see if the system SQLite package is compiled with - dnl SQLITE_THREADSAFE enabled. - AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite) - _SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $SQLITE_CFLAGS" - _SAVE_LIBS="$LIBS" - LIBS="$LIBS $SQLITE_LIBS" - AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[ - AC_TRY_RUN([ - #include "sqlite3.h" - - int main(int argc, char **argv){ - return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1"); - }], - ac_cv_sqlite_threadsafe=yes, - ac_cv_sqlite_threadsafe=no, - ac_cv_sqlite_threadsafe=no - ) - ]) - AC_MSG_RESULT($ac_cv_sqlite_threadsafe) - CFLAGS="$_SAVE_CFLAGS" - LIBS="$_SAVE_LIBS" - if test "x$ac_cv_sqlite_threadsafe" = "xno"; then - AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.]) - fi - - dnl ================================ - dnl === SQLITE_ENABLE_FTS3 check === - dnl ================================ - dnl check to see if the system SQLite package is compiled with - dnl SQLITE_ENABLE_FTS3 enabled. - AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite) - _SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $SQLITE_CFLAGS" - _SAVE_LIBS="$LIBS" - LIBS="$LIBS $SQLITE_LIBS" - AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[ - AC_TRY_RUN([ - #include "sqlite3.h" - - int main(int argc, char **argv){ - return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3"); - }], - ac_cv_sqlite_enable_fts3=yes, - ac_cv_sqlite_enable_fts3=no, - ac_cv_sqlite_enable_fts3=no - ) - ]) - AC_MSG_RESULT($ac_cv_sqlite_enable_fts3) - CFLAGS="$_SAVE_CFLAGS" - LIBS="$_SAVE_LIBS" - if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then - AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.]) - fi - - dnl ========================================= - dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check === - dnl ========================================= - dnl check to see if the system SQLite package is compiled with - dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled. - AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite) - _SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $SQLITE_CFLAGS" - _SAVE_LIBS="$LIBS" - LIBS="$LIBS $SQLITE_LIBS" - AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[ - AC_TRY_RUN([ - #include "sqlite3.h" - - int main(int argc, char **argv){ - return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY"); - }], - ac_cv_sqlite_enable_unlock_notify=yes, - ac_cv_sqlite_enable_unlock_notify=no, - ac_cv_sqlite_enable_unlock_notify=no - ) - ]) - AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify) - CFLAGS="$_SAVE_CFLAGS" - LIBS="$_SAVE_LIBS" - if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then - AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.]) - fi - - dnl ========================================= - dnl === SQLITE_ENABLE_DBSTAT_VTAB check === - dnl ========================================= - dnl check to see if the system SQLite package is compiled with - dnl SQLITE_ENABLE_DBSTAT_VTAB. - AC_MSG_CHECKING(for SQLITE_ENABLE_DBSTAT_VTAB support in system SQLite) - _SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $SQLITE_CFLAGS" - _SAVE_LIBS="$LIBS" - LIBS="$LIBS $SQLITE_LIBS" - AC_CACHE_VAL(ac_cv_sqlite_dbstat_vtab,[ - AC_TRY_RUN([ - #include "sqlite3.h" - - int main(int argc, char **argv){ - return !sqlite3_compileoption_used("SQLITE_ENABLE_DBSTAT_VTAB"); - }], - ac_cv_sqlite_dbstat_vtab=yes, - ac_cv_sqlite_dbstat_vtab=no, - ac_cv_sqlite_dbstat_vtab=no - ) - ]) - AC_MSG_RESULT($ac_cv_sqlite_dbstat_vtab) - CFLAGS="$_SAVE_CFLAGS" - LIBS="$_SAVE_LIBS" - if test "x$ac_cv_sqlite_dbstat_vtab" = "xno"; then - AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_DBSTAT_VTAB.]) - fi -fi - -if test -n "$MOZ_NATIVE_SQLITE"; then - AC_DEFINE(MOZ_NATIVE_SQLITE) -fi -AC_SUBST(MOZ_NATIVE_SQLITE) - -dnl ======================================================== -dnl = Enable help viewer (off by default) -dnl ======================================================== -if test -n "$MOZ_HELP_VIEWER"; then - dnl Do this if defined in confvars.sh - AC_DEFINE(MOZ_HELP_VIEWER) -fi - -dnl ======================================================== -dnl = Enable safe browsing (anti-phishing) -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(safe-browsing, -[ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation], - MOZ_SAFE_BROWSING=1, - MOZ_SAFE_BROWSING= ) -if test -n "$MOZ_SAFE_BROWSING"; then - AC_DEFINE(MOZ_SAFE_BROWSING) -fi -AC_SUBST(MOZ_SAFE_BROWSING) - -dnl ======================================================== -dnl = Enable url-classifier -dnl ======================================================== -dnl Implicitly enabled by default if building with safe-browsing -if test -n "$MOZ_SAFE_BROWSING"; then - MOZ_URL_CLASSIFIER=1 -fi -MOZ_ARG_ENABLE_BOOL(url-classifier, -[ --enable-url-classifier Enable url classifier module], - MOZ_URL_CLASSIFIER=1, - MOZ_URL_CLASSIFIER= ) -if test -n "$MOZ_URL_CLASSIFIER"; then - AC_DEFINE(MOZ_URL_CLASSIFIER) -fi -AC_SUBST(MOZ_URL_CLASSIFIER) - -dnl ======================================================== -dnl = Disable zipwriter -dnl ======================================================== -MOZ_ARG_DISABLE_BOOL(zipwriter, -[ --disable-zipwriter Disable zipwriter component], - MOZ_ZIPWRITER=, - MOZ_ZIPWRITER=1 ) -AC_SUBST(MOZ_ZIPWRITER) - -dnl ======================================================== -dnl GL provider -dnl ======================================================== -MOZ_GL_PROVIDER= -MOZ_ARG_WITH_STRING(gl-provider, -[ --with-gl-provider=ID - Set GL provider backend type], -[ val=`echo $withval` - MOZ_GL_PROVIDER="$val"]) - -if test -n "$MOZ_GL_PROVIDER"; then -MOZ_GL_DEFAULT_PROVIDER=$MOZ_GL_PROVIDER -AC_SUBST(MOZ_GL_PROVIDER) -AC_DEFINE_UNQUOTED(MOZ_GL_PROVIDER, GLContextProvider$MOZ_GL_PROVIDER) -fi -AC_SUBST(MOZ_GL_DEFAULT_PROVIDER) -AC_DEFINE_UNQUOTED(GL_PROVIDER_$MOZ_GL_DEFAULT_PROVIDER) - -dnl ======================================================== -dnl = faststripe theme -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(faststripe, -[ --enable-faststripe Use faststripe theme], - MOZ_THEME_FASTSTRIPE=1, - MOZ_THEME_FASTSTRIPE= ) -AC_SUBST(MOZ_THEME_FASTSTRIPE) - -dnl ======================================================== -dnl = -dnl = Feature options that require extra sources to be pulled -dnl = -dnl ======================================================== -dnl MOZ_ARG_HEADER(Features that require extra sources) - -dnl ======================================================== -dnl = -dnl = Runtime debugging and Optimization Options -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Runtime debugging and Optimizations) - -dnl ======================================================== -dnl enable mobile optimizations -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(mobile-optimize, -[ --enable-mobile-optimize - Enable mobile optimizations], - MOZ_GFX_OPTIMIZE_MOBILE=1) - -AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE) - -if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then - # We ignore paint will resample on mobile for performance. - # We may want to revisit this later. - MOZ_IGNORE_PAINT_WILL_RESAMPLE=1 - - AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE) - AC_DEFINE(MOZ_IGNORE_PAINT_WILL_RESAMPLE) -fi - -dnl ======================================================== -dnl = Enable code optimization. ON by default. -dnl ======================================================== -if test -z "$MOZ_OPTIMIZE_FLAGS"; then - MOZ_OPTIMIZE_FLAGS="-O" -fi - -if test -z "$MOZ_OPTIMIZE_RUSTFLAGS"; then - MOZ_OPTIMIZE_RUSTFLAGS="-O" -fi - -MOZ_ARG_ENABLE_STRING(optimize, -[ --disable-optimize Disable compiler optimization - --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]], -[ if test "$enableval" != "no"; then - MOZ_OPTIMIZE=1 - if test -n "$enableval" -a "$enableval" != "yes"; then - MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'` - MOZ_OPTIMIZE=2 - fi -else - MOZ_OPTIMIZE= -fi ], MOZ_OPTIMIZE=1) - -MOZ_SET_FRAMEPTR_FLAGS - -if test "$COMPILE_ENVIRONMENT"; then -if test -n "$MOZ_OPTIMIZE"; then - AC_MSG_CHECKING([for valid C compiler optimization flags]) - _SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS" - AC_TRY_COMPILE([#include ], - [printf("Hello World\n");], - _results=yes, - _results=no) - AC_MSG_RESULT([$_results]) - if test "$_results" = "no"; then - AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS]) - fi - CFLAGS=$_SAVE_CFLAGS -fi -fi # COMPILE_ENVIRONMENT - -AC_SUBST(MOZ_OPTIMIZE) -AC_SUBST(MOZ_FRAMEPTR_FLAGS) -AC_SUBST(MOZ_OPTIMIZE_FLAGS) -AC_SUBST(MOZ_OPTIMIZE_RUSTFLAGS) -AC_SUBST(MOZ_OPTIMIZE_LDFLAGS) -AC_SUBST_LIST(MOZ_ALLOW_HEAP_EXECUTE_FLAGS) -AC_SUBST(MOZ_PGO) -AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS) - -dnl ======================================================== -dnl = Enable NS_StackWalk. -dnl ======================================================== - -# On Windows, NS_StackWalk will only work correctly if we have frame pointers -# available. That will only be true for non-optimized builds, debug builds or -# builds with --enable-profiling in the .mozconfig (which is turned on in -# Nightly by default.) -case "$OS_TARGET" in -WINNT) - if test -z "$MOZ_OPTIMIZE" -o -n "$MOZ_PROFILING" -o -n "$MOZ_DEBUG"; then - MOZ_STACKWALKING=1 - else - MOZ_STACKWALKING= - fi - ;; -*) - MOZ_STACKWALKING=1 - ;; -esac - -if test -n "$MOZ_STACKWALKING"; then - AC_DEFINE(MOZ_STACKWALKING) -fi - -AC_SUBST(MOZ_STACKWALKING) - -dnl ======================================================== -dnl = Disable treating compiler warnings as errors -dnl ======================================================== -if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then - WARNINGS_AS_ERRORS='' -fi - -dnl ======================================================== -dnl = Enable runtime logging -dnl ======================================================== -AC_DEFINE(MOZ_LOGGING) -AC_DEFINE(FORCE_PR_LOG) - -dnl ======================================================== -dnl = This will enable logging of addref, release, ctor, dtor. -dnl ======================================================== -_ENABLE_LOGREFCNT=42 -MOZ_ARG_ENABLE_BOOL(logrefcnt, -[ --enable-logrefcnt Enable logging of refcounts (default=debug) ], - _ENABLE_LOGREFCNT=1, - _ENABLE_LOGREFCNT= ) -if test "$_ENABLE_LOGREFCNT" = "1"; then - AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING) -elif test -z "$_ENABLE_LOGREFCNT"; then - AC_DEFINE(NO_BUILD_REFCNT_LOGGING) -fi - -dnl ======================================================== -dnl moz_aproximate_location -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(approximate_location, -[ --enable-approximate-location Enable approximate location ], - MOZ_APPROX_LOCATION=1, - MOZ_APPROX_LOCATION= ) -if test -n "$MOZ_APPROX_LOCATION"; then - AC_DEFINE(MOZ_APPROX_LOCATION) -fi - -dnl ======================================================== -dnl moz_gps_debug -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(gps_debug, -[ --enable-gps-debug Enable gps specific debug messages ], - MOZ_GPS_DEBUG=1, - MOZ_GPS_DEBUG= ) -if test -n "$MOZ_GPS_DEBUG"; then - AC_DEFINE(MOZ_GPS_DEBUG) -fi -if test -n "$MOZ_DEBUG"; then - AC_DEFINE(MOZ_GPS_DEBUG) -fi - -dnl ======================================================== -dnl moz_dump_painting -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(dump-painting, -[ --enable-dump-painting Enable paint debugging.], - MOZ_DUMP_PAINTING=1, - MOZ_DUMP_PAINTING= ) -if test -n "$MOZ_DUMP_PAINTING"; then - AC_DEFINE(MOZ_DUMP_PAINTING) - AC_DEFINE(MOZ_LAYERS_HAVE_LOG) -fi -if test -n "$MOZ_DEBUG"; then - AC_DEFINE(MOZ_DUMP_PAINTING) -fi - -dnl ======================================================== -dnl = Enable jemalloc -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(jemalloc, -[ --enable-jemalloc Replace memory allocator with jemalloc], - MOZ_MEMORY=1, - MOZ_MEMORY=) - -case "${OS_TARGET}" in -Android|WINNT|Darwin) - MOZ_GLUE_IN_PROGRAM= - ;; -*) - dnl On !Android !Windows !OSX, we only want to link executables against mozglue - MOZ_GLUE_IN_PROGRAM=1 - AC_DEFINE(MOZ_GLUE_IN_PROGRAM) - ;; -esac - -dnl ======================================================== -dnl = Enable dynamic replacement of malloc implementation -dnl ======================================================== -if test -n "$NIGHTLY_BUILD" -a -n "$MOZ_MEMORY"; then - # Enable on central for the debugging opportunities it adds. - MOZ_REPLACE_MALLOC=1 -fi -MOZ_ARG_ENABLE_BOOL(replace-malloc, -[ --enable-replace-malloc Enable ability to dynamically replace the malloc implementation], - MOZ_REPLACE_MALLOC=1, - MOZ_REPLACE_MALLOC= ) - -if test -n "$MOZ_REPLACE_MALLOC" -a -z "$MOZ_MEMORY"; then - dnl We don't want to enable jemalloc unconditionally because it may be a - dnl deliberate choice not to enable it (bug 702250, for instance) - AC_MSG_ERROR([--enable-replace-malloc requires --enable-jemalloc]) -elif test -n "$MOZ_REPLACE_MALLOC"; then - AC_DEFINE(MOZ_REPLACE_MALLOC) - MOZ_NATIVE_JEMALLOC= - - dnl Replace-malloc Mac linkage quirks - if test -n "$MACOSX_DEPLOYMENT_TARGET"; then - AC_CACHE_CHECK([how to do weak dynamic linking], - ac_cv_weak_dynamic_linking, - [echo 'extern void foo() __attribute__((weak_import));int bar() { if (foo) foo(); return 0; }' > conftest.c - if AC_TRY_COMMAND([${CC-cc} -o conftest${DLL_SUFFIX} $CFLAGS -dynamiclib $LDFLAGS -Wl,-U,_foo conftest.c $LIBS 1>&5]) && - test -s conftest${DLL_SUFFIX}; then - dnl There are several ways the linker can put link edit rules in a binary: - dnl - classic info only (for OSX < 10.6) - dnl - dyld info only - dnl - both - if "$OTOOL" -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO_ONLY" > /dev/null; then - _CLASSIC_INFO= - else - _CLASSIC_INFO=1 - fi - if "$OTOOL" -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO" > /dev/null; then - _DYLD_INFO=1 - else - _DYLD_INFO= - fi - dnl With classic info, we need to build with -flat_namespace. - dnl With dyld info, Xcode 4.5 does the right thing without additional flags, - dnl but Xcode < 4.5 requires a dummy library and -flat_namespace because it - dnl forgets to set the weak flag in the dyld info. - dnl See http://glandium.org/blog/?p=2764 for more details. - dnl - dnl Values for ac_cv_weak_dynamic_linking, and subsequently - dnl MOZ_REPLACE_MALLOC_LINKAGE are thus: - dnl - "flat namespace" when -flat_namespace alone is needed - dnl - "dummy library" when a dummy library and -flat_namespace are needed - dnl - "compiler support" when nothing is needed - if test -n "$_DYLD_INFO" && dyldinfo -bind conftest${DLL_SUFFIX} 2> /dev/null | grep "_foo (weak import)" > /dev/null; then - if test -n "$_CLASSIC_INFO"; then - ac_cv_weak_dynamic_linking="flat namespace" - else - ac_cv_weak_dynamic_linking="compiler support" - fi - else - if test -n "$_DYLD_INFO"; then - ac_cv_weak_dynamic_linking="dummy library" - else - ac_cv_weak_dynamic_linking="flat namespace" - fi - fi - else - AC_ERROR([couldn't compile a simple C file]) - fi - rm -rf conftest*]) - MOZ_REPLACE_MALLOC_LINKAGE="$ac_cv_weak_dynamic_linking" - fi -fi -AC_SUBST(MOZ_REPLACE_MALLOC) -AC_SUBST(MOZ_REPLACE_MALLOC_LINKAGE) - -dnl ======================================================== -dnl = Jemalloc build setup -dnl ======================================================== -if test -z "$MOZ_MEMORY"; then - if test -n "$MOZ_JEMALLOC4" -a -z "$MOZ_REPLACE_MALLOC"; then - MOZ_NATIVE_JEMALLOC=1 - AC_CHECK_FUNCS(mallctl nallocx,, - [MOZ_NATIVE_JEMALLOC= - break]) - if test -n "$MOZ_NATIVE_JEMALLOC"; then - MOZ_MEMORY=1 - AC_DEFINE(MOZ_MEMORY) - AC_DEFINE(MOZ_JEMALLOC4) - AC_DEFINE(MOZ_NATIVE_JEMALLOC) - fi - fi - case "${target}" in - *-mingw*) - if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then - 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.]) - fi - ;; - esac -else - AC_DEFINE(MOZ_MEMORY) - if test -n "$MOZ_JEMALLOC4"; then - AC_DEFINE(MOZ_JEMALLOC4) - fi - if test "x$MOZ_DEBUG" = "x1"; then - AC_DEFINE(MOZ_MEMORY_DEBUG) - fi - dnl The generic feature tests that determine how to compute ncpus are long and - dnl complicated. Therefore, simply define special cpp variables for the - dnl platforms we have special knowledge of. - case "${target}" in - *-darwin*) - AC_DEFINE(MOZ_MEMORY_DARWIN) - ;; - *-*freebsd*) - AC_DEFINE(MOZ_MEMORY_BSD) - ;; - *-android*|*-linuxandroid*) - AC_DEFINE(MOZ_MEMORY_LINUX) - AC_DEFINE(MOZ_MEMORY_ANDROID) - if test -n "$gonkdir"; then - AC_DEFINE(MOZ_MEMORY_GONK) - fi - ;; - *-*linux*) - AC_DEFINE(MOZ_MEMORY_LINUX) - ;; - *-netbsd*) - AC_DEFINE(MOZ_MEMORY_BSD) - ;; - *-solaris*) - AC_DEFINE(MOZ_MEMORY_SOLARIS) - ;; - *-mingw*) - AC_DEFINE(MOZ_MEMORY_WINDOWS) - export MOZ_NO_DEBUG_RTL=1 - if test "$MSVS_VERSION" != "2015"; then - WIN32_CRT_LIBS="msvcrt.lib msvcprt.lib" - dnl Look for a broken crtdll.obj - WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj` - lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH - if grep -q '__imp__\{0,1\}free' crtdll.obj; then - MOZ_CRT=1 - fi - rm crtdll.obj - fi - ;; - *) - AC_MSG_ERROR([--enable-jemalloc not supported on ${target}]) - ;; - esac -fi # MOZ_MEMORY -AC_SUBST(MOZ_MEMORY) -AC_SUBST(MOZ_JEMALLOC4) -AC_SUBST(MOZ_NATIVE_JEMALLOC) -AC_SUBST(MOZ_CRT) -export MOZ_CRT -AC_SUBST(MOZ_GLUE_IN_PROGRAM) -AC_SUBST_LIST(WIN32_CRT_LIBS) - -# Allow the application to provide a subconfigure script. -# This should be after 'export MOZ_NO_DEBUG_RTL=1' since -# ldap/c-sdk/configure refers to the enviroment value. -if test -f "${srcdir}/${MOZ_BUILD_APP}/configure.in" ; then - do_output_subdirs() { - if test -n "$_subconfigure_subdirs"; then - AC_MSG_ERROR([Cannot specify more than one sub-sub-configure]) - fi - _subconfigure_subdir="$1" - _subconfigure_config_args="$ac_configure_args" - } - tmpscript=`$PYTHON -c 'import os, tempfile; print tempfile.mktemp(prefix="subscript.").replace(os.sep, "/")'` || exit 1 - m4 "${srcdir}/build/autoconf/subconfigure.m4" \ - "${srcdir}/build/autoconf/altoptions.m4" \ - "${srcdir}/${MOZ_BUILD_APP}/configure.in" > $tmpscript - . $tmpscript - rm -f $tmpscript -fi - -dnl We need to wrap dlopen and related functions on Android because we use -dnl our own linker. -if test "$OS_TARGET" = Android; then - if test "$MOZ_WIDGET_TOOLKIT" = gonk -a -n "$MOZ_NUWA_PROCESS"; then - MOZ_GLUE_WRAP_LDFLAGS="${MOZ_GLUE_WRAP_LDFLAGS} -Wl,--wrap=pthread_create,--wrap=epoll_wait,--wrap=poll,--wrap=pthread_cond_timedwait,--wrap=pthread_cond_wait,--wrap=epoll_create,--wrap=epoll_ctl,--wrap=close,--wrap=pthread_key_create,--wrap=pthread_key_delete,--wrap=socketpair,--wrap=pthread_self,--wrap=pthread_mutex_lock,--wrap=pthread_mutex_trylock,--wrap=pthread_join,--wrap=pipe,--wrap=pipe2" - fi - if test "$MOZ_WIDGET_TOOLKIT" = android -a "$MOZ_ANDROID_MIN_SDK_VERSION" -lt 11; then - MOZ_GLUE_WRAP_LDFLAGS="${MOZ_GLUE_WRAP_LDFLAGS} -Wl,--wrap=getaddrinfo,--wrap=freeaddrinfo,--wrap=gai_strerror" - fi -fi - -AC_SUBST_LIST(MOZ_GLUE_WRAP_LDFLAGS) -export MOZ_GLUE_WRAP_LDFLAGS - -dnl ======================================================== -dnl = Enable using the clang plugin to build -dnl ======================================================== - -MOZ_CONFIG_CLANG_PLUGIN - -dnl ======================================================== -dnl = Enable stripping of libs & executables -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(strip, -[ --enable-strip Enable stripping of libs & executables ], - ENABLE_STRIP=1, - ENABLE_STRIP= ) - -dnl ======================================================== -dnl = Enable stripping of libs & executables when packaging -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(install-strip, -[ --enable-install-strip Enable stripping of libs & executables when packaging ], - PKG_SKIP_STRIP= , - PKG_SKIP_STRIP=1) - -dnl ======================================================== -dnl = --disable-elf-hack -dnl ======================================================== - -USE_ELF_HACK=1 -MOZ_ARG_DISABLE_BOOL(elf-hack, -[ --disable-elf-hack Disable elf hacks], - [USE_ELF_HACK=], - [USE_ELF_HACK=1]) - -# Only enable elfhack where supported -if test "$USE_ELF_HACK" = 1; then - case "${HOST_OS_ARCH},${OS_ARCH}" in - Linux,Linux) - case "${CPU_ARCH}" in - arm | x86 | x86_64) - USE_ELF_HACK=1 - ;; - *) - USE_ELF_HACK= - ;; - esac - ;; - *) - USE_ELF_HACK= - ;; - esac -fi - -if test -n "$COMPILE_ENVIRONMENT" -a -n "$USE_ELF_HACK"; then - dnl PT_GNU_RELRO segment makes the dynamic linker set a read-only flag on - dnl memory addresses it maps to. The result is that by the time elfhack - dnl kicks in, it is not possible to apply relocations because of that, - dnl thus elfhack effectively skips relocations inside the PT_GNU_RELRO - dnl segment. It makes elfhack mostly useless, so considering the problems - dnl we have we PT_GNU_RELRO (e.g. bug 664366), and until elfhack can deal - dnl with PT_GNU_RELRO segments, it's just simpler to disable elfhack when - dnl the linker creates PT_GNU_RELRO segments. However, when we do want - dnl elfhack enabled, disable PT_GNU_RELRO instead. - AC_CACHE_CHECK([whether linker creates PT_GNU_RELRO segments], - LINK_WITH_PT_GNU_RELRO, - [echo "int main() {return 0;}" > conftest.${ac_ext} - if AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.${ac_ext} $LIBS 1>&2) && - test -s conftest${ac_exeext}; then - if ${TOOLCHAIN_PREFIX}readelf -l conftest${ac_exeext} | grep GNU_RELRO > /dev/null; then - LINK_WITH_PT_GNU_RELRO=yes - else - LINK_WITH_PT_GNU_RELRO=no - fi - else - dnl We really don't expect to get here, but just in case - AC_ERROR([couldn't compile a simple C file]) - fi - rm -rf conftest*]) - if test "$LINK_WITH_PT_GNU_RELRO" = yes; then - if test "$USE_ELF_HACK" = F; then - AC_MSG_CHECKING([for -z norelro option to ld]) - _SAVE_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,-z,norelro" - AC_TRY_LINK(,,AC_MSG_RESULT([yes]) - [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,norelro"], - AC_ERROR([--enable-elf-hack is not compatible with a linker creating a PT_GNU_RELRO segment and that doesn't support the "-z norelro" option.])) - USE_ELF_HACK=1 - else - AC_MSG_WARN([Disabling elfhack]) - USE_ELF_HACK= - fi - fi -fi # COMPILE_ENVIRONMENT and others. - -dnl ======================================================== -dnl = libstdc++ compatibility hacks -dnl ======================================================== - -STDCXX_COMPAT= -MOZ_ARG_ENABLE_BOOL(stdcxx-compat, -[ --enable-stdcxx-compat Enable compatibility with older libstdc++], - STDCXX_COMPAT=1) - -if test -n "$STDCXX_COMPAT"; then - eval $(CXX="$CXX" HOST_CXX="$HOST_CXX" $PYTHON -m mozbuild.configure.libstdcxx) - AC_SUBST(MOZ_LIBSTDCXX_TARGET_VERSION) - AC_SUBST(MOZ_LIBSTDCXX_HOST_VERSION) - CXXFLAGS="$CXXFLAGS -D_GLIBCXX_USE_CXX11_ABI=0" - HOST_CXXFLAGS="$HOST_CXXFLAGS -D_GLIBCXX_USE_CXX11_ABI=0" -fi - -dnl ======================================================== -dnl = frontend JS debug mode -dnl ======================================================== - -MOZ_ARG_ENABLE_BOOL(debug-js-modules, -[ --enable-debug-js-modules Enable debug mode for frontend JS libraries], - DEBUG_JS_MODULES=1, - DEBUG_JS_MODULES=) - -AC_SUBST(DEBUG_JS_MODULES) - -dnl ======================================================== -dnl = -dnl = Profiling and Instrumenting -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Profiling and Instrumenting) - -dnl ======================================================== -dnl = Enable TaskTracer -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(tasktracer, -[ --enable-tasktracer Set compile flags necessary for using TaskTracer], - MOZ_TASK_TRACER=1, - MOZ_TASK_TRACER= ) -if test -n "$MOZ_TASK_TRACER"; then - AC_DEFINE(MOZ_TASK_TRACER) - AC_SUBST(MOZ_TASK_TRACER) -fi - -dnl ======================================================== -dnl Turn on reflow counting -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(reflow-perf, -[ --enable-reflow-perf Enable reflow performance tracing], - MOZ_REFLOW_PERF=1, - MOZ_REFLOW_PERF= ) -if test -n "$MOZ_REFLOW_PERF"; then - AC_DEFINE(MOZ_REFLOW_PERF) -fi - -dnl ======================================================== -dnl = Horizon build options - set default preferences for -dnl the horizon project. Horizon is a browser built on -dnl top of the graphene runtime. -dnl ======================================================== -if test -n "$MOZ_HORIZON"; then - AC_DEFINE(MOZ_HORIZON) -fi -AC_SUBST(MOZ_HORIZON) - -dnl ======================================================== -dnl = Offer a way to disable the startup cache -dnl ======================================================== - -MOZ_ARG_DISABLE_BOOL(startupcache, -[ --disable-startupcache Disable startup cache ], - MOZ_DISABLE_STARTUPCACHE=1, - MOZ_DISABLE_STARTUPCACHE=) - -dnl bug 988880: disable startup cache on b2g -if test -n "$MOZ_B2G"; then - MOZ_DISABLE_STARTUPCACHE=1 -fi -if test -n "$MOZ_DISABLE_STARTUPCACHE"; then - AC_DEFINE(MOZ_DISABLE_STARTUPCACHE) -fi -AC_SUBST(MOZ_DISABLE_STARTUPCACHE) - -dnl ======================================================== -dnl = Enable packaging Gaia with B2G desktop and b2gdroid -dnl ======================================================== -if test x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then - if test -n "$GAIADIR" -a ! -d "$GAIADIR" ; then - AC_MSG_ERROR([GAIADIR '$GAIADIR' isn't a valid directory]) - fi - - AC_SUBST(GAIADIR) - if test -n "$GAIADIR" ; then - AC_DEFINE(PACKAGE_GAIA) - fi - - if test -n "$FXOS_SIMULATOR" -a -z "$GAIADIR" ; then - AC_MSG_ERROR([FXOS_SIMULATOR=1 requires GAIADIR to be defined]) - fi - - if test "$MOZ_BUILD_APP" = "mobile/android/b2gdroid" -a -z "$GAIADIR"; then - AC_MSG_ERROR([GAIADIR needs to be set in b2gdroid builds]) - fi - - if test -n "$FXOS_SIMULATOR" ; then - AC_DEFINE(FXOS_SIMULATOR) - AC_SUBST(FXOS_SIMULATOR) - fi -fi - -dnl ======================================================== -dnl = Enable Radio Interface for B2G (Gonk usually) -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(b2g-ril, -[ --enable-b2g-ril Set compile flags necessary for testing B2G Radio Interface Layer via network sockets ], - MOZ_B2G_RIL=1, - MOZ_B2G_RIL=, - MOZ_B2G_RIL=$_PLATFORM_HAVE_RIL ) -if test -n "$MOZ_B2G_RIL"; then - if test -n "$_PLATFORM_HAVE_RIL"; then - AC_DEFINE(MOZ_B2G_RIL) - else - AC_MSG_ERROR([b2g-ril cannot be enabled because target platform doesn't support it.]) - fi -fi -AC_SUBST(MOZ_B2G_RIL) - -dnl ======================================================== -dnl = Enable Radio FM for B2G (Gonk usually) -dnl ======================================================== -if test -n "$MOZ_B2G_FM"; then - AC_DEFINE(MOZ_B2G_FM) -fi -AC_SUBST(MOZ_B2G_FM) - -dnl ======================================================== -dnl = Enable Bluetooth Interface for B2G (Gonk usually) -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(b2g-bt, -[ --enable-b2g-bt Set compile flags necessary for compiling Bluetooth API for B2G ], - MOZ_B2G_BT=1, - MOZ_B2G_BT= ) -if test -n "$MOZ_B2G_BT"; then - AC_DEFINE(MOZ_B2G_BT) -fi -AC_SUBST(MOZ_B2G_BT) -AC_SUBST(MOZ_B2G_BT_BLUEZ) -AC_SUBST(MOZ_B2G_BT_DAEMON) - -dnl ======================================================== -dnl = Enable NFC Interface for B2G (Gonk usually) -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(nfc, -[ --enable-nfc Set compile flags necessary for compiling NFC API ], - MOZ_NFC=1, - MOZ_NFC= ) -if test -n "$MOZ_NFC"; then - AC_DEFINE(MOZ_NFC) -fi -AC_SUBST(MOZ_NFC) - -dnl ======================================================== -dnl = Enable Pico Speech Synthesis (Gonk usually) -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(synth-pico, -[ --enable-synth-pico Set compile flags necessary for compiling Pico Web Speech API ], - MOZ_SYNTH_PICO=1, - MOZ_SYNTH_PICO= ) -if test -n "$MOZ_SYNTH_PICO"; then - AC_DEFINE(MOZ_SYNTH_PICO) -fi -AC_SUBST(MOZ_SYNTH_PICO) - -dnl ======================================================== -dnl = Enable Support for Time Manager API -dnl ======================================================== -if test -n "$MOZ_TIME_MANAGER"; then - AC_DEFINE(MOZ_TIME_MANAGER) -fi -AC_SUBST(MOZ_TIME_MANAGER) - -dnl ======================================================== -dnl = Enable Camera Interface for B2G (Gonk usually) -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(b2g-camera, -[ --enable-b2g-camera Set compile flags necessary for compiling camera API for B2G ], - MOZ_B2G_CAMERA=1, - MOZ_B2G_CAMERA= ) -if test -n "$MOZ_B2G_CAMERA"; then - AC_DEFINE(MOZ_B2G_CAMERA) -fi -AC_SUBST(MOZ_B2G_CAMERA) - -dnl ======================================================== -dnl = Enable Support for SimplePush (Gonk usually) -dnl This will disable the Push API. -dnl ======================================================== -if test -n "$MOZ_SIMPLEPUSH"; then - AC_DEFINE(MOZ_SIMPLEPUSH) -fi -AC_SUBST(MOZ_SIMPLEPUSH) - -dnl ======================================================== -dnl = Enable Support for Payment API -dnl ======================================================== -if test -n "$MOZ_PAY"; then - AC_DEFINE(MOZ_PAY) -fi -AC_SUBST(MOZ_PAY) - -dnl ======================================================== -dnl = Enable Browser Support for Activities -dnl ======================================================== -if test -n "$MOZ_ACTIVITIES"; then - AC_DEFINE(MOZ_ACTIVITIES) -fi -AC_SUBST(MOZ_ACTIVITIES) - -dnl ======================================================== -dnl = Enable Support for AudioChannelManager API -dnl ======================================================== -if test -n "$MOZ_AUDIO_CHANNEL_MANAGER"; then - AC_DEFINE(MOZ_AUDIO_CHANNEL_MANAGER) -fi -AC_SUBST(MOZ_AUDIO_CHANNEL_MANAGER) - -dnl ======================================================== -dnl = Enable Support for Secure Element API -dnl ======================================================== - MOZ_SECUREELEMENT=1, -if test -n "$MOZ_SECUREELEMENT"; then - AC_DEFINE(MOZ_SECUREELEMENT) -fi - AC_SUBST(MOZ_SECUREELEMENT) - -dnl ======================================================== -dnl = Support for demangling undefined symbols -dnl ======================================================== -if test -z "$SKIP_LIBRARY_CHECKS"; then - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=) - AC_LANG_RESTORE -fi - -# Demangle only for debug or DMD builds -MOZ_DEMANGLE_SYMBOLS= -if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$MOZ_DMD"; then - MOZ_DEMANGLE_SYMBOLS=1 - AC_DEFINE(MOZ_DEMANGLE_SYMBOLS) -fi -AC_SUBST(MOZ_DEMANGLE_SYMBOLS) - -dnl ======================================================== -dnl = Support for gcc stack unwinding (from gcc 3.3) -dnl ======================================================== -if test -z "$SKIP_LIBRARY_CHECKS"; then - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace)) - AC_LANG_RESTORE -fi - -dnl ======================================================== -dnl JIT observers -dnl ======================================================== - -MOZ_ARG_WITH_STRING(jitreport-granularity, -[ --jitreport-granularity=N - Default granularity at which to report JIT code - to external tools - 0 - no info - 1 - code ranges for whole functions only - 2 - per-line information - 3 - per-op information], - JITREPORT_GRANULARITY=$withval, - JITREPORT_GRANULARITY=3) - -AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY) - -dnl ======================================================== -dnl = Disable Mozilla's versions of RIL and Geolocation -dnl ======================================================== -MOZ_ARG_DISABLE_BOOL(mozril-geoloc, -[ --disable-mozril-geoloc Disable Mozilla's RIL and geolocation], - DISABLE_MOZ_RIL_GEOLOC=1, - DISABLE_MOZ_RIL_GEOLOC= ) -if test -n "$DISABLE_MOZ_RIL_GEOLOC"; then - AC_DEFINE(DISABLE_MOZ_RIL_GEOLOC) -fi -AC_SUBST(DISABLE_MOZ_RIL_GEOLOC) - -dnl ======================================================== -dnl = -dnl = Misc. Options -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Misc. Options) - -dnl ======================================================== -dnl update xterm title -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(xterm-updates, -[ --enable-xterm-updates Update XTERM titles with current command.], - MOZ_UPDATE_XTERM=1, - MOZ_UPDATE_XTERM= ) - -dnl ========================================================= -dnl = Chrome format -dnl ========================================================= -MOZ_ARG_ENABLE_STRING([chrome-format], -[ --enable-chrome-format=jar|flat|omni - Select FORMAT of chrome files during packaging], - MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`) - -if test -z "$MOZ_CHROME_FILE_FORMAT"; then - MOZ_CHROME_FILE_FORMAT=jar -fi - -if test "$MOZ_CHROME_FILE_FORMAT" = "symlink"; then - AC_MSG_ERROR([--enable-chrome-format=symlink has been deprecated. It is now used by default in $DIST/bin on platforms that support it]) -fi - -if test "$MOZ_CHROME_FILE_FORMAT" != "jar" && - test "$MOZ_CHROME_FILE_FORMAT" != "flat" && - test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then - AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, or omni]) -fi - -dnl ========================================================= -dnl Omnijar packaging (bug 552121) -dnl ========================================================= -dnl Omnijar packaging is compatible with flat packaging. -dnl In unpackaged builds, omnijar looks for files as if -dnl things were flat packaged. After packaging, all files -dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT -dnl is set to flat since putting files into jars is only -dnl done during packaging with omnijar. -if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then - MOZ_OMNIJAR=1 - AC_DEFINE(MOZ_OMNIJAR) -fi -MOZ_PACKAGER_FORMAT="$MOZ_CHROME_FILE_FORMAT" -if test "$OS_ARCH" = "WINNT" -o "$MOZ_WIDGET_TOOLKIT" = "android"; then - MOZ_CHROME_FILE_FORMAT=flat -else - MOZ_CHROME_FILE_FORMAT=symlink -fi - -if test "$MOZ_WIDGET_TOOLKIT" = "android"; then - dnl Fennec's static resources live in the assets/ folder of the - dnl APK. Adding a path to the name here works because we only - dnl have one omnijar file in the final package (which is not the - dnl case on desktop), and necessitates some contortions during - dnl packaging so that the resources in the omnijar are considered - dnl as rooted at / and not as rooted at assets/ (which again is - dnl not the case on desktop: there are omnijars rooted at webrtc/, - dnl etc). packager.mk handles changing the rooting of the single - dnl omnijar. - OMNIJAR_NAME=assets/omni.ja -else - OMNIJAR_NAME=omni.ja -fi - -AC_SUBST(OMNIJAR_NAME) -AC_SUBST(MOZ_OMNIJAR) -AC_SUBST(MOZ_PACKAGER_FORMAT) - -dnl ======================================================== -dnl = Define default location for MOZILLA_FIVE_HOME -dnl ======================================================== -MOZ_ARG_WITH_STRING(default-mozilla-five-home, -[ --with-default-mozilla-five-home - Set the default value for MOZILLA_FIVE_HOME], -[ val=`echo $withval` - AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ]) - -dnl ======================================================== -dnl = Location of the mozilla user directory (default is ~/.mozilla).], -dnl ======================================================== -MOZ_ARG_WITH_STRING(user-appdir, -[ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)], -[ val=`echo $withval` -if echo "$val" | grep "\/" >/dev/null; then - AC_MSG_ERROR("Homedir must be single relative path.") -else - MOZ_USER_DIR="$val" -fi]) - -AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR") - -dnl ======================================================== -dnl = Doxygen configuration -dnl ======================================================== -dnl Use commas to specify multiple dirs to this arg -MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl' -MOZ_ARG_WITH_STRING(doc-input-dirs, -[ --with-doc-input-dirs=DIRS - Header/idl dirs to create docs from], -[ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] ) -AC_SUBST(MOZ_DOC_INPUT_DIRS) - -dnl Use commas to specify multiple dirs to this arg -MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr' -MOZ_ARG_WITH_STRING(doc-include-dirs, -[ --with-doc-include-dirs=DIRS - Include dirs to preprocess doc headers], -[ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] ) -AC_SUBST(MOZ_DOC_INCLUDE_DIRS) - -MOZ_DOC_OUTPUT_DIR='./dist/docs' -MOZ_ARG_WITH_STRING(doc-output-dir, -[ --with-doc-output-dir=DIR - Dir to generate docs into], -[ MOZ_DOC_OUTPUT_DIR=$withval ] ) -AC_SUBST(MOZ_DOC_OUTPUT_DIR) - -if test -z "$SKIP_COMPILER_CHECKS"; then -dnl ======================================================== -dnl = -dnl = Compiler Options -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Compiler Options) - -dnl ======================================================== -dnl Check for gcc -pipe support -dnl ======================================================== -AC_MSG_CHECKING([for -pipe support]) -if test -n "$GNU_CC" -a -n "$GNU_CXX"; then - dnl Any gcc that supports firefox supports -pipe. - CFLAGS="$CFLAGS -pipe" - CXXFLAGS="$CXXFLAGS -pipe" - AC_MSG_RESULT([yes]) -else - AC_MSG_RESULT([no]) -fi - -dnl ======================================================== -dnl Profile guided optimization (gcc checks) -dnl ======================================================== -dnl Test for profiling options -dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use - -_SAVE_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction" - -AC_MSG_CHECKING([whether C compiler supports -fprofile-generate]) -AC_TRY_COMPILE([], [return 0;], - [ PROFILE_GEN_CFLAGS="-fprofile-generate" - result="yes" ], result="no") -AC_MSG_RESULT([$result]) - -if test $result = "yes"; then - PROFILE_GEN_LDFLAGS="-fprofile-generate" - PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch" - PROFILE_USE_LDFLAGS="-fprofile-use" -fi - -CFLAGS="$_SAVE_CFLAGS" - -if test -n "$INTEL_CC"; then - PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ." - PROFILE_GEN_LDFLAGS= - PROFILE_USE_CFLAGS="-prof-use -prof-dir ." - PROFILE_USE_LDFLAGS= -fi - -dnl Sun Studio on Solaris -if test "$SOLARIS_SUNPRO_CC"; then - PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application" - PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application" - PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application" - PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application" -fi - -AC_SUBST(PROFILE_GEN_CFLAGS) -AC_SUBST(PROFILE_GEN_LDFLAGS) -AC_SUBST(PROFILE_USE_CFLAGS) -AC_SUBST(PROFILE_USE_LDFLAGS) - -dnl ============================================= -dnl Support for -fno-integrated-as (recent clang) -dnl ============================================= -dnl Under clang 3.4+, use -fno-integrated-as to -dnl build libvpx's vp8_asm_enc_offsets.c - -_SAVE_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS -fno-integrated-as -S" - -AC_MSG_CHECKING([whether C compiler supports -fno-integrated-as]) -AC_TRY_COMPILE([], [return 0;], - [ NO_INTEGRATED_AS_CFLAGS="-fno-integrated-as" - result="yes" ], result="no") -AC_MSG_RESULT([$result]) - -CFLAGS="$_SAVE_CFLAGS" - -AC_SUBST(NO_INTEGRATED_AS_CFLAGS) - -fi # ! SKIP_COMPILER_CHECKS - -AC_DEFINE(CPP_THROW_NEW, [throw()]) -AC_LANG_C - -if test "$COMPILE_ENVIRONMENT"; then -MOZ_EXPAND_LIBS -fi # COMPILE_ENVIRONMENT - -dnl ======================================================== -dnl = -dnl = Build depencency options -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Build dependencies) - -if test "$GNU_CC" -a "$GNU_CXX"; then - _DEPEND_CFLAGS='-MD -MP -MF $(MDDEPDIR)/$(@F).pp' -dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk -elif test "$SOLARIS_SUNPRO_CC"; then - _DEPEND_CFLAGS= -else - dnl Don't override this for MSVC - if test -z "$_WIN32_MSVC"; then - _USE_CPP_INCLUDE_FLAG= - _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT' - _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT' - else - echo '#include ' > dummy-hello.c - changequote(,) - dnl This output is localized, split at the first double space or colon and space. - _CL_PREFIX_REGEX="^\([^:]*:.*[ :] \)\(.*\\\stdio.h\)$" - CL_INCLUDES_PREFIX=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\1/p'` - _CL_STDIO_PATH=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\2/p'` - changequote([,]) - if ! test -e "$_CL_STDIO_PATH"; then - AC_MSG_ERROR([Unable to parse cl -showIncludes prefix. This compiler's locale has an unsupported formatting.]) - fi - if test -z "$CL_INCLUDES_PREFIX"; then - AC_MSG_ERROR([Cannot find cl -showIncludes prefix.]) - fi - AC_SUBST(CL_INCLUDES_PREFIX) - rm -f dummy-hello.c - - dnl Make sure that the build system can handle non-ASCII characters - dnl in environment variables to prevent it from breaking silently on - dnl non-English systems. - NONASCII=$'\241\241' - AC_SUBST(NONASCII) - fi -fi - -dnl ======================================================== -dnl = -dnl = Static Build Options -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Static build options) - -if test -z "$MOZ_NATIVE_ZLIB"; then -if test -n "$JS_SHARED_LIBRARY"; then - ZLIB_IN_MOZGLUE=1 - AC_DEFINE(ZLIB_IN_MOZGLUE) -fi -fi - -AC_SUBST(ZLIB_IN_MOZGLUE) - -dnl ======================================================== -dnl = -dnl = Standalone module options -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla)) - -dnl Check for GLib. -dnl ======================================================== - -if test -z "$SKIP_PATH_CHECKS"; then -if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then - if test "$MOZ_ENABLE_GTK" ; then - PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0) - fi -fi -fi - -if test -z "${GLIB_GMODULE_LIBS}" \ - -a -n "${GLIB_CONFIG}"\ - -a "${GLIB_CONFIG}" != no\ -; then - GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs` -fi - -AC_SUBST_LIST(GLIB_GMODULE_LIBS) - -dnl ======================================================== -dnl Graphics checks. -dnl ======================================================== - -if test "${OS_TARGET}" = "WINNT" -o \ - "${OS_ARCH}" = "Darwin" -o \ - "${MOZ_WIDGET_TOOLKIT}" = "android" -o \ - "${MOZ_WIDGET_TOOLKIT}" = "gonk" -o \ - "${MOZ_WIDGET_TOOLKIT}" = "gtk2" -o \ - "${MOZ_WIDGET_TOOLKIT}" = "gtk3"; then - case "${CPU_ARCH}" in - x86|x86_64|arm) - MOZ_ENABLE_SKIA=1 - ;; - *) - MOZ_ENABLE_SKIA= - ;; - esac -else -MOZ_ENABLE_SKIA= -fi - -MOZ_ARG_ENABLE_BOOL(skia, -[ --enable-skia Enable use of Skia], -MOZ_ENABLE_SKIA=1, -MOZ_ENABLE_SKIA=) - -dnl Skia GPU support may not reliably build on certain *BSDs (see bug 1234494). -if test "${OS_TARGET}" = "OpenBSD" -o \ - "${OS_TARGET}" = "NetBSD" -o \ - "${OS_ARCH}" = "SunOS"; then - MOZ_DISABLE_SKIA_GPU=1 -else - MOZ_DISABLE_SKIA_GPU= -fi - -MOZ_ARG_DISABLE_BOOL(skia-gpu, -[ --disable-skia-gpu Disable use of Skia-GPU], -MOZ_DISABLE_SKIA_GPU=1, -MOZ_DISABLE_SKIA_GPU=) - -if test "$USE_FC_FREETYPE"; then - if test "$COMPILE_ENVIRONMENT"; then - dnl ======================================================== - dnl = Check for freetype2 and its functionality - dnl ======================================================== - PKG_CHECK_MODULES(FT2, freetype2 >= 6.1.0, _HAVE_FREETYPE2=1, _HAVE_FREETYPE2=) - - if test "$_HAVE_FREETYPE2"; then - _SAVE_LIBS="$LIBS" - _SAVE_CFLAGS="$CFLAGS" - LIBS="$LIBS $FT2_LIBS" - CFLAGS="$CFLAGS $FT2_CFLAGS" - - AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem, - ac_cv_member_FT_Bitmap_Size_y_ppem, - [AC_TRY_COMPILE([#include - #include FT_FREETYPE_H], - [FT_Bitmap_Size s; - if (sizeof s.y_ppem) return 0; - return 1], - ac_cv_member_FT_Bitmap_Size_y_ppem=yes, - ac_cv_member_FT_Bitmap_Size_y_ppem=no)]) - if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then - HAVE_FT_BITMAP_SIZE_Y_PPEM=1 - else - HAVE_FT_BITMAP_SIZE_Y_PPEM=0 - fi - AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM, - $HAVE_FT_BITMAP_SIZE_Y_PPEM, - [FT_Bitmap_Size structure includes y_ppem field]) - - AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table) - - LIBS="$_SAVE_LIBS" - CFLAGS="$_SAVE_CFLAGS" - fi - - _SAVE_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS" - MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], , - [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include ]) - CPPFLAGS="$_SAVE_CPPFLAGS" - else - AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H) - fi - - PKG_CHECK_MODULES(_FONTCONFIG, fontconfig >= $FONTCONFIG_VERSION, - [ - if test "$MOZ_PANGO"; then - MOZ_PANGO_CFLAGS="$MOZ_PANGO_CFLAGS $_FONTCONFIG_CFLAGS" - MOZ_PANGO_LIBS="$MOZ_PANGO_LIBS $_FONTCONFIG_LIBS" - else - FT2_CFLAGS="$FT2_CFLAGS $_FONTCONFIG_CFLAGS" - FT2_LIBS="$FT2_LIBS $_FONTCONFIG_LIBS" - fi - ]) -fi - -dnl ======================================================== -dnl Check for pixman and cairo -dnl ======================================================== - -MOZ_TREE_CAIRO=1 -MOZ_ARG_ENABLE_BOOL(system-cairo, -[ --enable-system-cairo Use system cairo (located with pkgconfig)], -MOZ_TREE_CAIRO=, -MOZ_TREE_CAIRO=1 ) - -MOZ_TREE_PIXMAN=1 -MOZ_ARG_ENABLE_BOOL(system-pixman, -[ --enable-system-pixman Use system pixman (located with pkgconfig)], -MOZ_TREE_PIXMAN=, -MOZ_TREE_PIXMAN=force, -MOZ_TREE_PIXMAN=1 ) - -# System cairo depends on system pixman -if test "$MOZ_TREE_PIXMAN" = "force"; then - if test -z "$MOZ_TREE_CAIRO"; then - AC_MSG_ERROR([--disable-system-pixman is incompatible with --enable-system-cairo.]) - else - MOZ_TREE_PIXMAN=1 - fi -elif test -z "$MOZ_TREE_CAIRO"; then - MOZ_TREE_PIXMAN= -fi - -if test "$MOZ_TREE_PIXMAN"; then - AC_DEFINE(MOZ_TREE_PIXMAN) -else - PKG_CHECK_MODULES(MOZ_PIXMAN, pixman-1 >= 0.19.2) -fi - -# Check for headers defining standard int types. -if test -n "$COMPILE_ENVIRONMENT"; then - MOZ_CHECK_HEADERS(stdint.h inttypes.h) - - if test "${ac_cv_header_inttypes_h}" = "yes"; then - HAVE_INTTYPES_H=1 - fi -fi - -AC_SUBST(HAVE_INTTYPES_H) - -if test "$MOZ_TREE_CAIRO"; then - MOZ_CAIRO_CFLAGS="-I${DIST}/include/cairo" - AC_DEFINE(MOZ_TREE_CAIRO) - - if test "$OS_ARCH" = "WINNT"; then - # For now we assume that we will have a uint64_t available through - # one of the above headers or mozstdint.h. - AC_DEFINE(HAVE_UINT64_T) - fi - - # Define macros for cairo-features.h - TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1" - if test "$MOZ_X11"; then - XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1" - XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1" - PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1" - fi - if test "$_HAVE_FREETYPE2"; then - FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1" - MOZ_ENABLE_CAIRO_FT=1 - CAIRO_FT_CFLAGS="$FT2_CFLAGS" - fi - - case "$MOZ_WIDGET_TOOLKIT" in - qt) - QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1" - ;; - cocoa | uikit) - QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1" - QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1" - QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1" - ;; - windows) - WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1" - WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1" - WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1" - WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1" - MOZ_ENABLE_D2D_SURFACE=1 - MOZ_ENABLE_DWRITE_FONT=1 - - if test "$COMPILE_ENVIRONMENT"; then - - MOZ_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1) - - dnl D3D10 Layers depend on D2D Surfaces. - if test -n "$WIN32_D2D_SURFACE_FEATURE"; then - MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1) - fi - fi - ;; - esac - if test "$USE_FC_FREETYPE"; then - FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1" - fi - AC_SUBST(MOZ_ENABLE_CAIRO_FT) - AC_SUBST(MOZ_ENABLE_DWRITE_FONT) - AC_SUBST(MOZ_ENABLE_D2D_SURFACE) - AC_SUBST(MOZ_ENABLE_D3D9_LAYER) - AC_SUBST(MOZ_ENABLE_D3D10_LAYER) - - AC_SUBST(PS_SURFACE_FEATURE) - AC_SUBST(PDF_SURFACE_FEATURE) - AC_SUBST(SVG_SURFACE_FEATURE) - AC_SUBST(XLIB_SURFACE_FEATURE) - AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE) - AC_SUBST(QUARTZ_SURFACE_FEATURE) - AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE) - AC_SUBST(WIN32_SURFACE_FEATURE) - AC_SUBST(OS2_SURFACE_FEATURE) - AC_SUBST(DIRECTFB_SURFACE_FEATURE) - AC_SUBST(FT_FONT_FEATURE) - AC_SUBST(FC_FONT_FEATURE) - AC_SUBST(WIN32_FONT_FEATURE) - AC_SUBST(WIN32_DWRITE_FONT_FEATURE) - AC_SUBST(WIN32_D2D_SURFACE_FEATURE) - AC_SUBST(QUARTZ_FONT_FEATURE) - AC_SUBST(PNG_FUNCTIONS_FEATURE) - AC_SUBST(QT_SURFACE_FEATURE) - AC_SUBST(TEE_SURFACE_FEATURE) - - MOZ_CAIRO_OSLIBS='${CAIRO_FT_OSLIBS}' - - if test "$MOZ_X11"; then - MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender" - fi - - CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h -else - PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION) - MOZ_CAIRO_CFLAGS="$CAIRO_CFLAGS" - MOZ_CAIRO_LIBS="$CAIRO_LIBS" - PKG_CHECK_MODULES(CAIRO_TEE, cairo-tee >= $CAIRO_VERSION) - if test "$MOZ_X11"; then - PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION) - MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS" - MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_LIBS" - MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS" - fi -fi - -case "$MOZ_WIDGET_TOOLKIT" in -android|gonk) - TK_CFLAGS="$MOZ_CAIRO_CFLAGS $MOZ_PIXMAN_CFLAGS" - TK_LIBS="$MOZ_CAIRO_LIBS $MOZ_PIXMAN_LIBS" - ;; -esac - -AC_SUBST(MOZ_TREE_CAIRO) -AC_SUBST_LIST(MOZ_CAIRO_CFLAGS) -AC_SUBST_LIST(MOZ_CAIRO_LIBS) -AC_SUBST_LIST(MOZ_CAIRO_OSLIBS) -AC_SUBST(MOZ_TREE_PIXMAN) - -dnl ======================================================== -dnl Skia -dnl ======================================================== -if test "$MOZ_ENABLE_SKIA"; then - SKIA_INCLUDES="/gfx/skia /gfx/skia/skia/include/config /gfx/skia/skia/include/core" - AC_DEFINE(MOZ_ENABLE_SKIA) - AC_DEFINE(USE_SKIA) - if test "${MOZ_WIDGET_TOOLKIT}" = "android" -o x"$MOZ_WIDGET_TOOLKIT" = x"gonk"; then - AC_DEFINE(SK_BUILD_FOR_ANDROID_NDK) - fi - - if test "${CPU_ARCH}" != "ppc" -a "${CPU_ARCH}" != "ppc64" -a "${CPU_ARCH}" != "sparc" -a -z "$MOZ_DISABLE_SKIA_GPU" ; then - SKIA_INCLUDES="$SKIA_INCLUDES /gfx/skia/skia/include/gpu /gfx/skia/skia/include/utils" - MOZ_ENABLE_SKIA_GPU=1 - AC_DEFINE(USE_SKIA_GPU) - AC_SUBST(MOZ_ENABLE_SKIA_GPU) - fi -fi -AC_SUBST(MOZ_ENABLE_SKIA) -AC_SUBST_LIST(SKIA_INCLUDES) - -dnl ======================================================== -dnl disable xul -dnl ======================================================== -MOZ_ARG_DISABLE_BOOL(xul, -[ --disable-xul Disable XUL], - MOZ_XUL= ) -if test "$MOZ_XUL"; then - AC_DEFINE(MOZ_XUL) -else - dnl remove extensions that require XUL - MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/irc//' -e 's/tasks//'` -fi - -AC_SUBST(MOZ_XUL) - -dnl ======================================================== -dnl disable profile locking -dnl do no use this in applications that can have more than -dnl one process accessing the profile directory. -dnl ======================================================== -MOZ_ARG_DISABLE_BOOL(profilelocking, -[ --disable-profilelocking - Disable profile locking], - MOZ_PROFILELOCKING=, - MOZ_PROFILELOCKING=1 ) -if test "$MOZ_PROFILELOCKING"; then - AC_DEFINE(MOZ_PROFILELOCKING) -fi - -dnl ======================================================== -dnl necko configuration options -dnl ======================================================== - -dnl -dnl option to disable various necko protocols -dnl -MOZ_ARG_ENABLE_STRING(necko-protocols, -[ --enable-necko-protocols[={http,ftp,default,all,none}] - Enable/disable specific protocol handlers], -[ for option in `echo $enableval | sed 's/,/ /g'`; do - if test "$option" = "yes" -o "$option" = "all"; then - NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT" - elif test "$option" = "no" -o "$option" = "none"; then - NECKO_PROTOCOLS="" - elif test "$option" = "default"; then - NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT" - elif test `echo "$option" | grep -c \^-` != 0; then - option=`echo $option | sed 's/^-//'` - NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"` - else - NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option" - fi -done], - NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT") -AC_SUBST_SET(NECKO_PROTOCOLS) -for p in $NECKO_PROTOCOLS; do - AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p) - _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_PROTOCOL_$p" -done - -dnl -dnl option to disable necko's wifi scanner -dnl - -case "$OS_TARGET" in - Android) - if test -n "$gonkdir"; then - NECKO_WIFI=1 - fi - ;; - Darwin) - if test -z "$MOZ_IOS"; then - NECKO_WIFI=1 - fi - ;; - DragonFly|FreeBSD|SunOS|WINNT) - NECKO_WIFI=1 - ;; - Linux) - NECKO_WIFI=1 - NECKO_WIFI_DBUS=1 - ;; -esac - -MOZ_ARG_DISABLE_BOOL(necko-wifi, -[ --disable-necko-wifi Disable necko wifi scanner], - NECKO_WIFI=, - NECKO_WIFI=1) - -if test "$NECKO_WIFI"; then - if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then - AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi]) - fi - AC_DEFINE(NECKO_WIFI) - _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI" -fi -AC_SUBST(NECKO_WIFI) -AC_SUBST(NECKO_WIFI_DBUS) - -dnl -dnl option to disable cookies -dnl -MOZ_ARG_DISABLE_BOOL(cookies, -[ --disable-cookies Disable cookie support], - NECKO_COOKIES=, - NECKO_COOKIES=1) -AC_SUBST(NECKO_COOKIES) -if test "$NECKO_COOKIES"; then - AC_DEFINE(NECKO_COOKIES) - _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES" -fi - -dnl -dnl Always build Marionette if not Android or B2G -dnl -if test "$OS_TARGET" != Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then - AC_DEFINE(ENABLE_MARIONETTE) -fi -AC_SUBST(ENABLE_MARIONETTE) -if test "$ENABLE_MARIONETTE"; then - AC_DEFINE(ENABLE_MARIONETTE) -fi - -dnl -dnl Build jsctypes on the platforms we can, unless it's explicitly disabled. -dnl -MOZ_ARG_DISABLE_BOOL(ctypes, -[ --disable-ctypes Disable js-ctypes], - BUILD_CTYPES=, - BUILD_CTYPES=1) -AC_SUBST(BUILD_CTYPES) -if test "$BUILD_CTYPES"; then - AC_DEFINE(BUILD_CTYPES) -fi - -dnl Build Places if required -if test "$MOZ_PLACES"; then - AC_DEFINE(MOZ_PLACES) -fi - -dnl Build SocialAPI if required -if test "$MOZ_SOCIAL"; then - AC_DEFINE(MOZ_SOCIAL) -fi - -dnl Build Common JS modules provided by services. -AC_SUBST(MOZ_SERVICES_COMMON) -if test -n "$MOZ_SERVICES_COMMON"; then - AC_DEFINE(MOZ_SERVICES_COMMON) -fi - -dnl Build Services crypto component (used by Sync) -AC_SUBST(MOZ_SERVICES_CRYPTO) -if test -n "$MOZ_SERVICES_CRYPTO"; then - AC_DEFINE(MOZ_SERVICES_CRYPTO) -fi - -dnl Build Firefox Health Reporter Service -AC_SUBST(MOZ_SERVICES_HEALTHREPORT) -if test -n "$MOZ_SERVICES_HEALTHREPORT"; then - AC_DEFINE(MOZ_SERVICES_HEALTHREPORT) -fi - -dnl Build Notifications if required -AC_SUBST(MOZ_SERVICES_NOTIFICATIONS) -if test -n "$MOZ_SERVICES_NOTIFICATIONS"; then - AC_DEFINE(MOZ_SERVICES_NOTIFICATIONS) -fi - -dnl Build Sync Services if required -AC_SUBST(MOZ_SERVICES_SYNC) -if test -n "$MOZ_SERVICES_SYNC"; then - AC_DEFINE(MOZ_SERVICES_SYNC) -fi - -dnl Build Services/CloudSync if required -AC_SUBST(MOZ_SERVICES_CLOUDSYNC) -if test -n "$MOZ_SERVICES_CLOUDSYNC"; then - AC_DEFINE(MOZ_SERVICES_CLOUDSYNC) -fi - -dnl Build second screen and casting features for external devices if required -AC_SUBST(MOZ_DEVICES) -if test -n "$MOZ_DEVICES"; then - AC_DEFINE(MOZ_DEVICES) -fi - -dnl ======================================================== -if test "$MOZ_DEBUG" -o "$MOZ_DMD"; then - MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS= -fi - -dnl ======================================================== -dnl = -dnl = Maintainer debug option (no --enable equivalent) -dnl = -dnl ======================================================== - -AC_SUBST(AR) -AC_SUBST(AR_FLAGS) -AC_SUBST(AR_LIST) -AC_SUBST(AR_EXTRACT) -AC_SUBST(AR_DELETE) -AC_SUBST(AS) -AC_SUBST(ASFLAGS) -AC_SUBST(AS_DASH_C_FLAG) -AC_SUBST(LD) -AC_SUBST(RC) -AC_SUBST(RCFLAGS) -AC_SUBST(MC) -AC_SUBST(WINDRES) -AC_SUBST(IMPLIB) -AC_SUBST(FILTER) -AC_SUBST(BIN_FLAGS) -AC_SUBST(MOZ_WIDGET_TOOLKIT) -AC_SUBST(MOZ_UPDATE_XTERM) -AC_SUBST(MOZ_AUTH_EXTENSION) -AC_SUBST(MOZ_PREF_EXTENSIONS) -AC_SUBST(MOZ_DEBUG) -AC_SUBST(MOZ_DEBUG_SYMBOLS) -AC_SUBST(MOZ_DEBUG_LDFLAGS) -AC_SUBST(WARNINGS_AS_ERRORS) -AC_SUBST_SET(MOZ_EXTENSIONS) -AC_SUBST(MOZ_ENABLE_PROFILER_SPS) -AC_SUBST(MOZ_JPROF) -AC_SUBST(MOZ_INSTRUMENTS) -AC_SUBST(MOZ_CALLGRIND) -AC_SUBST(MOZ_VTUNE) -AC_SUBST(MOZ_PROFILING) -AC_SUBST(LIBICONV) -AC_SUBST(MOZ_PLACES) -AC_SUBST(MOZ_SOCIAL) -AC_SUBST(MOZ_TOOLKIT_SEARCH) -AC_SUBST(MOZ_FEEDS) -AC_SUBST(NS_PRINTING) -AC_SUBST(MOZ_HELP_VIEWER) -AC_SUBST(TOOLCHAIN_PREFIX) - -AC_SUBST(JAVA) -AC_SUBST(JAVAC) -AC_SUBST(JAVAH) -AC_SUBST(JAR) -AC_SUBST(JARSIGNER) -AC_SUBST(KEYTOOL) - -AC_SUBST(MOZ_PROFILELOCKING) - -AC_SUBST(ENABLE_TESTS) -AC_SUBST(MOZ_UNIVERSALCHARDET) -AC_SUBST(ACCESSIBILITY) -AC_SUBST(MOZ_SPELLCHECK) -AC_SUBST(MOZ_ANDROID_APZ) -AC_SUBST(MOZ_ANDROID_ANR_REPORTER) -AC_SUBST(MOZ_CRASHREPORTER) -AC_SUBST(MOZ_CRASHREPORTER_INJECTOR) -AC_SUBST(MOZ_CRASHREPORTER_UPLOAD_FULL_SYMBOLS) -AC_SUBST(MOZ_MAINTENANCE_SERVICE) -AC_SUBST(MOZ_STUB_INSTALLER) -AC_SUBST(MOZ_VERIFY_MAR_SIGNATURE) -AC_SUBST(MOZ_ENABLE_SIGNMAR) -AC_SUBST(MOZ_UPDATER) - -AC_SUBST(MOZ_ANGLE_RENDERER) -AC_SUBST(MOZ_D3D_CPU_SUFFIX) -AC_SUBST(MOZ_HAS_WINSDK_WITH_D3D) -AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL) -AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL_PATH) -AC_SUBST(MOZ_DIRECTX_SDK_PATH) -AC_SUBST(MOZ_D3DCOMPILER_XP_DLL) -AC_SUBST(MOZ_D3DCOMPILER_XP_CAB) - -AC_SUBST(MOZ_ANDROID_HISTORY) -AC_SUBST(MOZ_WEBSMS_BACKEND) -AC_SUBST(MOZ_ANDROID_BEAM) -AC_SUBST(MOZ_LOCALE_SWITCHER) -AC_SUBST(MOZ_DISABLE_GECKOVIEW) -AC_SUBST(MOZ_ANDROID_GCM) -AC_SUBST(MOZ_ANDROID_GECKOLIBS_AAR) -AC_SUBST(MOZ_ANDROID_SEARCH_ACTIVITY) -AC_SUBST(MOZ_ANDROID_PACKAGE_INSTALL_BOUNCER) -AC_SUBST(MOZ_ANDROID_MLS_STUMBLER) -AC_SUBST(MOZ_ANDROID_DOWNLOADS_INTEGRATION) -AC_SUBST(MOZ_ANDROID_APPLICATION_CLASS) -AC_SUBST(MOZ_ANDROID_BROWSER_INTENT_CLASS) -AC_SUBST(MOZ_ANDROID_SEARCH_INTENT_CLASS) -AC_SUBST(MOZ_ANDROID_DOWNLOAD_CONTENT_SERVICE) -AC_SUBST(MOZ_ANDROID_EXCLUDE_FONTS) -AC_SUBST(MOZ_EXCLUDE_HYPHENATION_DICTIONARIES) -AC_SUBST(MOZ_INSTALL_TRACKING) -AC_SUBST(MOZ_SWITCHBOARD) -AC_SUBST(ENABLE_STRIP) -AC_SUBST(PKG_SKIP_STRIP) -AC_SUBST(STRIP_FLAGS) -AC_SUBST(USE_ELF_HACK) -AC_SUBST(INCREMENTAL_LINKER) -AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS) -AC_SUBST(MOZ_COMPONENT_NSPR_LIBS) - -AC_SUBST(MOZ_FIX_LINK_PATHS) - -AC_SUBST(USE_DEPENDENT_LIBS) - -AC_SUBST(MOZ_BUILD_ROOT) - -AC_SUBST(MOZ_POST_PROGRAM_COMMAND) -AC_SUBST(MOZ_LINKER_EXTRACT) - -AC_SUBST(MOZ_ADDON_SIGNING) -AC_SUBST(MOZ_REQUIRE_SIGNING) - -if test -n "$MOZ_BINARY_EXTENSIONS"; then - AC_DEFINE(MOZ_BINARY_EXTENSIONS) -fi - -AC_SUBST(MOZ_JSDOWNLOADS) -if test -n "$MOZ_JSDOWNLOADS"; then - AC_DEFINE(MOZ_JSDOWNLOADS) -fi - -dnl ======================================================== -dnl = Mac bundle name prefix -dnl ======================================================== -MOZ_ARG_WITH_STRING(macbundlename-prefix, -[ --with-macbundlename-prefix=prefix - Prefix for MOZ_MACBUNDLE_NAME], -[ MOZ_MACBUNDLE_NAME_PREFIX="$withval"]) - -MOZ_MACBUNDLE_NAME=`echo $MOZ_APP_DISPLAYNAME | tr -d ' '` -if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then - MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}" -fi - -if test "$MOZ_DEBUG"; then - MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}Debug.app -else - MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app -fi -AC_SUBST(MOZ_MACBUNDLE_NAME) - -dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME) -MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr '[A-Z]' '[a-z]'` -MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID} -if test "$MOZ_DEBUG"; then - MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug -fi - -AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID) -AC_SUBST(MOZ_MACBUNDLE_ID) - -dnl ======================================================== -dnl = Child Process Name for IPC -dnl ======================================================== -if test "$MOZ_WIDGET_TOOLKIT" != "android"; then - MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}" -else - # We want to let Android unpack the file at install time, but it only does - # so if the file is named libsomething.so. The lib/ path is also required - # because the unpacked file will be under the lib/ subdirectory and will - # need to be executed from that path. - MOZ_CHILD_PROCESS_NAME="libplugin-container.so" - MOZ_CHILD_PROCESS_NAME_PIE="libplugin-container-pie.so" - AC_SUBST(MOZ_CHILD_PROCESS_NAME_PIE) -fi -MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/" - -AC_SUBST(MOZ_CHILD_PROCESS_NAME) -AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE) - -# The following variables are available to branding and application -# configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh): -# - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also -# impacts profile location and user-visible fields. -# - MOZ_APP_BASENAME: Typically stays consistent for multiple branded -# versions of a given application (e.g. Aurora and Firefox both use -# "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used -# for application.ini's "Name" field, which controls profile location in -# the absence of a "Profile" field (see below), and various system -# integration hooks (Unix remoting, Windows MessageWindow name, etc.) -# - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties, -# Mac Bundle name, Updater, Installer), it is typically used for nightly -# builds (e.g. Aurora for Firefox). -# - MOZ_APP_VERSION: Defines the application version number. -# - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used -# in the "About" window. If not set, defaults to MOZ_APP_VERSION. -# - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set, -# defaults to a lowercase form of MOZ_APP_BASENAME. -# - MOZ_APP_REMOTINGNAME: Used for the internal program name, which affects -# profile name and remoting. If not set, defaults to MOZ_APP_NAME. -# - MOZ_APP_PROFILE: When set, used for application.ini's -# "Profile" field, which controls profile location. -# - MOZ_APP_ID: When set, used for application.ini's "ID" field, and -# crash reporter server url. -# - MOZ_APP_ANDROID_VERSION_CODE: On Android, "android:versionCode" for -# the main application is set to the value of this variable. If not -# set, it falls back to a Mozilla-specific value derived from the -# build ID. -# - MOZ_ANDROID_SHARED_ID: On Android, "android:sharedUserId" for all Android -# - packages produced. -# - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator. - -if test -z "$MOZ_APP_NAME"; then - MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z` -fi - -if test -z "$MOZ_APP_REMOTINGNAME"; then - MOZ_APP_REMOTINGNAME=$MOZ_APP_NAME -fi - -if test -z "$MOZ_APP_VERSION_DISPLAY"; then - MOZ_APP_VERSION_DISPLAY=$MOZ_APP_VERSION -fi - -if test -z "$ANDROID_PACKAGE_NAME" ; then - ANDROID_PACKAGE_NAME="org.mozilla.$MOZ_APP_NAME" -fi - -# Mozilla released Firefox for Android {Release,Beta} and {Aurora,Nightly} to -# the public with specific common shared IDs and we need to keep them -# consistent forever. The specific common values are set by per-channel -# branding; all other channels use a generic sharedID, set below. -if test -z "$MOZ_ANDROID_SHARED_ID" ; then - MOZ_ANDROID_SHARED_ID="${ANDROID_PACKAGE_NAME}.sharedID" -fi - -# For extensions and langpacks, we require a max version that is compatible -# across security releases. MOZ_APP_MAXVERSION is our method for doing that. -# 24.0a1 and 24.0a2 aren't affected -# 24.0 becomes 24.* -# 24.1.1 becomes 24.* -IS_ALPHA=`echo $MOZ_APP_VERSION | grep a` -if test -z "$IS_ALPHA"; then - changequote(,) - if test "$(basename $MOZ_BUILD_APP)" = "suite"; then - MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\.[0-9]*\).*|\1|"`.* - else - MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.* - fi - changequote([,]) -else - MOZ_APP_MAXVERSION=$MOZ_APP_VERSION -fi - -MOZ_B2G_VERSION=${MOZ_B2G_VERSION:-"1.0.0"} -AC_DEFINE_UNQUOTED(MOZ_B2G_VERSION,"$MOZ_B2G_VERSION") -AC_DEFINE_UNQUOTED(MOZ_B2G_OS_NAME,"$MOZ_B2G_OS_NAME") - -AC_SUBST(MOZ_APP_NAME) -AC_SUBST(MOZ_APP_REMOTINGNAME) -AC_SUBST(MOZ_APP_DISPLAYNAME) -AC_SUBST(MOZ_APP_BASENAME) -AC_SUBST(MOZ_APP_VENDOR) -AC_SUBST(MOZ_APP_PROFILE) -AC_SUBST(MOZ_APP_ID) -AC_SUBST(MOZ_APP_ANDROID_VERSION_CODE) -AC_SUBST(MOZ_ANDROID_SHARED_ID) -AC_SUBST(MAR_CHANNEL_ID) -AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS) -AC_SUBST(MOZ_PROFILE_MIGRATOR) -AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME") -AC_SUBST(MOZ_APP_UA_NAME) -AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION") -AC_SUBST(MOZ_APP_VERSION) -AC_SUBST(MOZ_APP_VERSION_DISPLAY) -AC_SUBST(MOZ_APP_MAXVERSION) -AC_DEFINE_UNQUOTED(FIREFOX_VERSION,$FIREFOX_VERSION) -AC_SUBST(FIREFOX_VERSION) -AC_SUBST(MOZ_UA_OS_AGNOSTIC) -if test -n "$MOZ_UA_OS_AGNOSTIC"; then - AC_DEFINE(MOZ_UA_OS_AGNOSTIC) -fi - -AC_SUBST(MOZ_APP_STATIC_INI) - -AC_SUBST(MOZ_PKG_SPECIAL) -AC_SUBST(MOZ_SIMPLE_PACKAGE_NAME) - -AC_SUBST(MOZILLA_OFFICIAL) -if test "$MOZILLA_OFFICIAL"; then - AC_DEFINE(MOZILLA_OFFICIAL) - # Build revisions should always be present in official builds - MOZ_INCLUDE_SOURCE_INFO=1 -fi - -# External builds (specifically Ubuntu) may drop the hg repo information, so we allow to -# explicitly set the repository and changeset information in. -AC_SUBST(MOZ_SOURCE_REPO) -AC_SUBST(MOZ_SOURCE_CHANGESET) -AC_SUBST(MOZ_INCLUDE_SOURCE_INFO) - -if test "$MOZ_TELEMETRY_REPORTING"; then - AC_DEFINE(MOZ_TELEMETRY_REPORTING) - - # Enable Telemetry by default for nightly and aurora channels - if test -z "$RELEASE_BUILD"; then - AC_DEFINE(MOZ_TELEMETRY_ON_BY_DEFAULT) - fi -fi - -dnl If we have any service that uploads data (and requires data submission -dnl policy alert), set MOZ_DATA_REPORTING. -dnl We need SUBST for build system and DEFINE for xul preprocessor. -if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"; then - MOZ_DATA_REPORTING=1 - AC_DEFINE(MOZ_DATA_REPORTING) - AC_SUBST(MOZ_DATA_REPORTING) -fi - -dnl win32 options -AC_SUBST(WIN32_REDIST_DIR) -AC_SUBST(MAKENSISU) - -dnl Echo the CFLAGS to remove extra whitespace. -CFLAGS=`echo \ - $_WARNINGS_CFLAGS \ - $CFLAGS` - -CXXFLAGS=`echo \ - $_WARNINGS_CXXFLAGS \ - $CXXFLAGS` - -COMPILE_CFLAGS=`echo \ - $_DEFINES_CFLAGS \ - $COMPILE_CFLAGS` - -COMPILE_CXXFLAGS=`echo \ - $_DEFINES_CXXFLAGS \ - $COMPILE_CXXFLAGS` - -HOST_CFLAGS=`echo \ - $HOST_CFLAGS` - -HOST_CXXFLAGS=`echo \ - $HOST_CXXFLAGS` - -AC_SUBST(_DEPEND_CFLAGS) -AC_SUBST(MOZ_NATIVE_JPEG) -AC_SUBST(MOZ_NATIVE_PNG) -AC_SUBST(MOZ_NATIVE_BZ2) - -AC_SUBST_LIST(MOZ_JPEG_CFLAGS) -AC_SUBST_LIST(MOZ_JPEG_LIBS) -AC_SUBST_LIST(MOZ_BZ2_CFLAGS) -AC_SUBST_LIST(MOZ_BZ2_LIBS) -AC_SUBST_LIST(MOZ_PNG_CFLAGS) -AC_SUBST_LIST(MOZ_PNG_LIBS) - -if test "$MOZ_WIDGET_TOOLKIT" = gonk -a -n "$MOZ_NUWA_PROCESS"; then - export MOZ_NUWA_PROCESS - AC_DEFINE(MOZ_NUWA_PROCESS) -fi -AC_SUBST(MOZ_NUWA_PROCESS) -if test "$MOZ_WIDGET_TOOLKIT" = gonk -a -n "$MOZ_B2G_LOADER"; then - if test -z "$MOZ_NUWA_PROCESS"; then - AC_MSG_ERROR([B2G loader works with Nuwa]); - fi - export MOZ_B2G_LOADER - AC_DEFINE(MOZ_B2G_LOADER) -fi -AC_SUBST(MOZ_B2G_LOADER) - -AC_SUBST(MOZ_NATIVE_NSPR) - -AC_SUBST(MOZ_NATIVE_NSS) -AC_SUBST(NSS_DISABLE_DBM) - -HOST_CMFLAGS=-fobjc-exceptions -HOST_CMMFLAGS=-fobjc-exceptions -OS_COMPILE_CMFLAGS=-fobjc-exceptions -OS_COMPILE_CMMFLAGS=-fobjc-exceptions -if test "$MOZ_WIDGET_TOOLKIT" = uikit; then - OS_COMPILE_CMFLAGS="$OS_COMPILE_CMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch" - OS_COMPILE_CMMFLAGS="$OS_COMPILE_CMMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch" -fi -AC_SUBST(HOST_CMFLAGS) -AC_SUBST(HOST_CMMFLAGS) -AC_SUBST(OS_COMPILE_CMFLAGS) -AC_SUBST(OS_COMPILE_CMMFLAGS) - -OS_CFLAGS="$CFLAGS" -OS_CXXFLAGS="$CXXFLAGS" -OS_CPPFLAGS="$CPPFLAGS" -OS_COMPILE_CFLAGS="$COMPILE_CFLAGS" -OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS" -OS_LDFLAGS="$LDFLAGS" -OS_LIBS="$LIBS" -AC_SUBST(OS_CFLAGS) -AC_SUBST(OS_CXXFLAGS) -AC_SUBST(OS_CPPFLAGS) -AC_SUBST(OS_COMPILE_CFLAGS) -AC_SUBST(OS_COMPILE_CXXFLAGS) -AC_SUBST(OS_LDFLAGS) -AC_SUBST(OS_LIBS) -AC_SUBST(CROSS_COMPILE) -AC_SUBST(WCHAR_CFLAGS) - -AC_SUBST(HOST_CC) -AC_SUBST(HOST_CXX) -AC_SUBST(HOST_CFLAGS) -AC_SUBST(HOST_CXXFLAGS) -AC_SUBST(HOST_LDFLAGS) -AC_SUBST(HOST_OPTIMIZE_FLAGS) -AC_SUBST(HOST_AR) -AC_SUBST(HOST_AR_FLAGS) -AC_SUBST(HOST_LD) -AC_SUBST(HOST_RANLIB) -AC_SUBST(HOST_BIN_SUFFIX) -AC_SUBST(HOST_OS_ARCH) - -AC_SUBST(TARGET_CPU) -AC_SUBST(TARGET_VENDOR) -AC_SUBST(TARGET_OS) -AC_SUBST(TARGET_XPCOM_ABI) -AC_SUBST(OS_TARGET) -AC_SUBST(OS_ARCH) -AC_SUBST(OS_RELEASE) -AC_SUBST(OS_TEST) -AC_SUBST(CPU_ARCH) -AC_SUBST(INTEL_ARCHITECTURE) -AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3) -AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1) -AC_SUBST(HAVE_X86_AVX2) -AC_SUBST(GCC_USE_GNU_LD) - -AC_SUBST(MOZ_CHROME_FILE_FORMAT) - -AC_SUBST(WRAP_LDFLAGS) -AC_SUBST(MKSHLIB) -AC_SUBST(MKCSHLIB) -AC_SUBST(DSO_CFLAGS) -AC_SUBST(DSO_PIC_CFLAGS) -AC_SUBST(DSO_LDOPTS) -AC_SUBST(LIB_PREFIX) -AC_SUBST(DLL_PREFIX) -AC_SUBST(DLL_SUFFIX) -AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX") -AC_SUBST(LIB_SUFFIX) -AC_SUBST(OBJ_SUFFIX) -AC_SUBST(BIN_SUFFIX) -AC_SUBST(ASM_SUFFIX) -AC_SUBST(IMPORT_LIB_SUFFIX) -AC_SUBST(USE_N32) -AC_SUBST(CC_VERSION) -AC_SUBST(CXX_VERSION) -AC_SUBST(MSMANIFEST_TOOL) -AC_SUBST(NS_ENABLE_TSF) -AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS) -AC_SUBST(WIN32_GUI_EXE_LDFLAGS) - -AC_SUBST(MOZ_VORBIS) -AC_SUBST(MOZ_TREMOR) -AC_SUBST(MOZ_WMF) -AC_SUBST(MOZ_FFMPEG) -AC_SUBST(MOZ_FFVPX) -AC_SUBST(FFVPX_AS) -AC_SUBST_LIST(FFVPX_ASFLAGS) -AC_SUBST(MOZ_FMP4) -AC_SUBST(MOZ_EME) -AC_SUBST(MOZ_DIRECTSHOW) -AC_SUBST(MOZ_ANDROID_OMX) -AC_SUBST(MOZ_APPLEMEDIA) -AC_SUBST(MOZ_OMX_PLUGIN) -AC_SUBST(MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE) -AC_SUBST(MOZ_VPX_ERROR_CONCEALMENT) -AC_SUBST(VPX_AS) -AC_SUBST_LIST(VPX_ASFLAGS) -AC_SUBST(VPX_AS_CONVERSION) -AC_SUBST(VPX_ASM_SUFFIX) -AC_SUBST(VPX_X86_ASM) -AC_SUBST(VPX_ARM_ASM) -AC_SUBST(VPX_NEED_OBJ_INT_EXTRACT) -AC_SUBST(MOZ_INSTRUMENT_EVENT_LOOP) -AC_SUBST(MOZ_CODE_COVERAGE) -AC_SUBST(LIBJPEG_TURBO_AS) -AC_SUBST_LIST(LIBJPEG_TURBO_ASFLAGS) -AC_SUBST(MOZ_LIBAV_FFT) -AC_SUBST(LIBAV_FFT_AS) -AC_SUBST_LIST(LIBAV_FFT_ASFLAGS) -AC_SUBST(MOZ_DEVTOOLS) - -AC_SUBST(MOZ_PACKAGE_JSSHELL) -AC_SUBST(MOZ_FOLD_LIBS) -AC_SUBST(MOZ_FOLD_LIBS_FLAGS) -AC_SUBST(SOCORRO_SYMBOL_UPLOAD_TOKEN_FILE) - -AC_SUBST(MOZ_ENABLE_SZIP) -AC_SUBST(MOZ_SZIP_FLAGS) - -AC_SUBST(DMG_TOOL) - -dnl Host JavaScript runtime, if any, to use during cross compiles. -AC_SUBST(JS_BINARY) - -AC_SUBST(NSS_EXTRA_SYMBOLS_FILE) - -if test -n "$COMPILE_ENVIRONMENT"; then -AC_CHECK_FUNCS(posix_fadvise posix_fallocate) - -dnl Check for missing components -if test "$MOZ_X11"; then - if test "$WITHOUT_X11"; then - AC_MSG_ERROR([--without-x specified and MOZ_X11 still defined]) - fi - dnl ==================================================== - dnl = Check if X headers exist - dnl ==================================================== - _SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS $XCFLAGS" - AC_TRY_COMPILE([ - #include - #include - #include - #include - #include - ], - [ - Display *dpy = 0; - if ((dpy = XOpenDisplay(NULL)) == NULL) { - fprintf(stderr, ": can't open %s\n", XDisplayName(NULL)); - exit(1); - } - ], [], - [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ]) - CFLAGS="$_SAVE_CFLAGS" - - if test -n "$MISSING_X"; then - AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]); - fi - -fi # MOZ_X11 - -fi # COMPILE_ENVIRONMENT - -dnl Set various defines and substitutions -dnl ======================================================== - -if test "$OS_ARCH" != "WINNT"; then - AC_DEFINE(XP_UNIX) -fi - -if test "$MOZ_DEBUG"; then - AC_DEFINE(MOZ_REFLOW_PERF) - AC_DEFINE(MOZ_REFLOW_PERF_DSP) -fi - -if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then - AC_DEFINE(MOZ_ACCESSIBILITY_ATK) - ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk` - ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'` - ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'` - ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'` - AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION) - AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION) - AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION) -fi - -if test -n "$MOZ_DEV_EDITION"; then - AC_DEFINE(MOZ_DEV_EDITION) -fi - -if test "$MOZ_DEBUG"; then - A11Y_LOG=1 -fi -case "$MOZ_UPDATE_CHANNEL" in -aurora|beta|release|esr) - ;; -*) - A11Y_LOG=1 - ;; -esac -AC_SUBST(A11Y_LOG) -if test -n "$A11Y_LOG"; then - AC_DEFINE(A11Y_LOG) -fi - -AC_SUBST(MOZILLA_VERSION) - -AC_SUBST(ac_configure_args) - -dnl Spit out some output -dnl ======================================================== - -dnl The following defines are used by xpcom -_NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES -CPP_THROW_NEW -HAVE_CPP_AMBIGUITY_RESOLVING_USING -HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR -HAVE_CPP_PARTIAL_SPECIALIZATION -HAVE_GETPAGESIZE -HAVE_ICONV -HAVE_ICONV_WITH_CONST_INPUT -HAVE_MBRTOWC -HAVE_WCRTOMB -HAVE_STATVFS64 -HAVE_STATVFS -HAVE_STATFS64 -HAVE_STATFS -HAVE_SYS_STATVFS_H -HAVE_SYS_STATFS_H -HAVE_SYS_VFS_H -HAVE_SYS_MOUNT_H -" - -dnl ======================================================== -dnl Determine options to use for running the preprocessor. -dnl ======================================================== - -if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT"; then - PREPROCESS_OPTION="-P -Fi" -else - PREPROCESS_OPTION="-E -o " -fi - -AC_SUBST(PREPROCESS_OPTION) - -dnl ======================================================== -dnl ICU Support -dnl ======================================================== - -# Internationalization is not built or exposed on Fennec. -# See Bug 1215256 - -if test "$MOZ_BUILD_APP" = "mobile/android"; then - _INTL_API=no -else - _INTL_API=yes -fi - -if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then - USE_ICU=1 -fi - -MOZ_CONFIG_ICU() - -if test -z "$JS_SHARED_LIBRARY"; then - AC_DEFINE(MOZ_STATIC_JS) -fi -AC_SUBST(JS_SHARED_LIBRARY) - -# Avoid using obsolete NSPR features -AC_DEFINE(NO_NSPR_10_SUPPORT) - -MOZ_CREATE_CONFIG_STATUS() - -if test "$COMPILE_ENVIRONMENT"; then - MOZ_SUBCONFIGURE_ICU() - MOZ_SUBCONFIGURE_FFI() - MOZ_SUBCONFIGURE_JEMALLOC() -fi - -# Run freetype configure script - -if test "$MOZ_TREE_FREETYPE"; then - export CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS -std=c99" - export CPPFLAGS="$CPPFLAGS $MOZ_DEBUG_FLAGS" - export CXXFLAGS="$CXXFLAGS $MOZ_DEBUG_FLAGS" - export LDFLAGS="$LDFLAGS $MOZ_DEBUG_LDFLAGS" - # Spaces in the *_CFLAGS and *_LIBS variables are intentionally placed - # to force freetype to use our settings rather than autodetecting - if test -n "$MOZ_NATIVE_PNG"; then - export LIBPNG_CFLAGS="$MOZ_PNG_CFLAGS " - else - export LIBPNG_CFLAGS="-I$_objdir/dist/include" - fi - export LIBPNG_LIBS="$MOZ_PNG_LIBS " - export ZLIB_CFLAGS="$MOZ_ZLIB_CFLAGS " - export ZLIB_LIBS="$MOZ_ZLIB_LIBS " - export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in" - ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes --with-zlib=yes --without-bzip2 --with-png=yes --without-harfbuzz" - - if ! test -e modules; then - mkdir modules - fi - # Only export CC, CXX and RANLIB for the subconfigure, and avoid spilling - # that further down the road. - (export CC CXX RANLIB; - AC_OUTPUT_SUBDIRS(modules/freetype2) - ) || exit 1 -fi - -if test -z "$direct_nspr_config"; then - dnl ======================================================== - dnl = Setup a nice relatively clean build environment for - dnl = sub-configures. - dnl ======================================================== - CC="$_SUBDIR_CC" - CXX="$_SUBDIR_CXX" - CFLAGS="$_SUBDIR_CFLAGS" - CPPFLAGS="$_SUBDIR_CPPFLAGS" - CXXFLAGS="$_SUBDIR_CXXFLAGS" - LDFLAGS="$_SUBDIR_LDFLAGS" - HOST_CC="$_SUBDIR_HOST_CC" - HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS" - HOST_CXXFLAGS="$_SUBDIR_HOST_CXXFLAGS" - HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS" - RC= -fi - -unset MAKEFILES -unset CONFIG_FILES - -# Run all configure scripts specified by a subconfigure -if test -n "$_subconfigure_subdir"; then - _save_srcdir="$srcdir" - srcdir="$srcdir/.." - _save_ac_configure_args="$ac_configure_args" - ac_configure_args="$_subconfigure_config_args" - AC_OUTPUT_SUBDIRS_NOW("$_subconfigure_subdir",$cache_file) - ac_configure_args="$_save_ac_configure_args" - srcdir="$_save_srcdir" -fi - -if test "$COMPILE_ENVIRONMENT"; then - -export WRAP_LDFLAGS - -dnl ======================================================== -dnl = Setup a nice relatively clean build environment for -dnl = sub-configures. -dnl ======================================================== -CC="$_SUBDIR_CC" -CXX="$_SUBDIR_CXX" -CFLAGS="$_SUBDIR_CFLAGS" -CPPFLAGS="$_SUBDIR_CPPFLAGS" -CXXFLAGS="$_SUBDIR_CXXFLAGS" -LDFLAGS="$_SUBDIR_LDFLAGS" -HOST_CC="$_SUBDIR_HOST_CC" -HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS" -HOST_CXXFLAGS="$_SUBDIR_HOST_CXXFLAGS" -HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS" -RC= - -# Run the SpiderMonkey 'configure' script. -dist=$MOZ_BUILD_ROOT/dist -ac_configure_args="$_SUBDIR_CONFIG_ARGS" - -# --with-system-nspr will have been converted into the relevant $NSPR_CFLAGS -# and $NSPR_LIBS. -ac_configure_args="`echo $ac_configure_args | sed -e 's/--with-system-nspr\S* *//'`" - -ac_configure_args="$ac_configure_args --enable-threadsafe" - -if test "$_INTL_API" = no; then - ac_configure_args="$ac_configure_args --without-intl-api" -fi - -if test "$BUILD_CTYPES"; then - # Build js-ctypes on the platforms we can. - ac_configure_args="$ac_configure_args --enable-ctypes" -fi -if test -z "$JS_SHARED_LIBRARY" ; then - ac_configure_args="$ac_configure_args --disable-shared-js" - if test -n "$MOZ_DISABLE_EXPORT_JS"; then - ac_configure_args="$ac_configure_args --disable-export-js" - fi -fi -if test -n "$NSPR_CFLAGS" -o -n "$NSPR_LIBS"; then - ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'" - ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'" -fi -ac_configure_args="$ac_configure_args --prefix=$dist" -if test "$MOZ_MEMORY"; then - ac_configure_args="$ac_configure_args --enable-jemalloc" -fi -if test -n "$ZLIB_IN_MOZGLUE"; then - MOZ_ZLIB_LIBS= -fi -export MOZ_NATIVE_ZLIB -export MOZ_ZLIB_CFLAGS -export MOZ_ZLIB_LIBS -export MOZ_APP_NAME -export MOZ_APP_REMOTINGNAME -export DONT_POPULATE_VIRTUALENV=1 -export PYTHON -export RUSTC -export MOZILLA_CENTRAL_PATH=$_topsrcdir -export STLPORT_CPPFLAGS -export STLPORT_LIBS -export JS_STANDALONE=no -export DIST -export MOZ_LINKER -export ZLIB_IN_MOZGLUE -export MOZ_MEMORY -export AR -export RANLIB -export CPP -export CC -export CXX -export LD -export ARFLAGS -export CPPFLAGS -export CFLAGS -export CXXFLAGS -export LDFLAGS -export HOST_CC -export HOST_CXX -export HOST_CFLAGS -export HOST_CXXFLAGS -export HOST_LDFLAGS - -if ! test -e js; then - mkdir js -fi - -AC_OUTPUT_SUBDIRS(js/src,$cache_file) -ac_configure_args="$_SUBDIR_CONFIG_ARGS" - -fi # COMPILE_ENVIRONMENT - -export WRITE_MOZINFO=1 -dnl we need to run config.status after js/src subconfigure because we're -dnl traversing its moz.build and we need its config.status for that. -dnl However, writing our own config.status needs to happen before -dnl subconfigures because the setup surrounding subconfigures alters -dnl many AC_SUBSTed variables. -MOZ_RUN_CONFIG_STATUS() -unset WRITE_MOZINFO +dnl Because adding a configure file in the tree is going to conflict with +dnl existing configure files in people's (and automation) work trees, and +dnl because some automation jobs are still running autoconf and configure +dnl "manually", this file is actually an m4 file that is processed by +dnl autoconf, but doesn't call any autoconf macros. The `divert` line +dnl below ensures the script that follows is output by autoconf. +divert(0)dnl +#!/bin/sh + +SRCDIR=$(dirname $0) +TOPSRCDIR="$SRCDIR" +export OLD_CONFIGURE="$SRCDIR"/old-configure + +which python2.7 > /dev/null && exec python2.7 "$TOPSRCDIR/configure.py" "$@" || exec python "$TOPSRCDIR/configure.py" "$@" diff --git a/configure.py b/configure.py new file mode 100644 index 000000000000..415c17fca648 --- /dev/null +++ b/configure.py @@ -0,0 +1,90 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from __future__ import print_function, unicode_literals + +import glob +import itertools +import os +import subprocess +import sys + +base_dir = os.path.dirname(__file__) +sys.path.append(os.path.join(base_dir, 'python', 'which')) +from which import which, WhichError + + +# If feel dirty replicating this from python/mozbuild/mozbuild/mozconfig.py, +# but the end goal being that the configure script would go away... +shell = 'sh' +if 'MOZILLABUILD' in os.environ: + shell = os.environ['MOZILLABUILD'] + '/msys/bin/sh' +if sys.platform == 'win32': + shell = shell + '.exe' + + +def find_program(file): + try: + return which(file) + except WhichError: + return None + + +def autoconf_refresh(configure): + if os.path.exists(configure): + mtime = os.path.getmtime(configure) + aclocal = os.path.join(base_dir, 'build', 'autoconf', '*.m4') + for input in itertools.chain( + (configure + '.in', + os.path.join(os.path.dirname(configure), 'aclocal.m4')), + glob.iglob(aclocal), + ): + if os.path.getmtime(input) > mtime: + break + else: + return + + for ac in ('autoconf-2.13', 'autoconf2.13', 'autoconf213'): + autoconf = find_program(ac) + if autoconf: + break + else: + fink = find_program('fink') + if fink: + autoconf = os.path.normpath(os.path.join( + fink, '..', '..', 'lib', 'autoconf2.13', 'bin', 'autoconf')) + + if not autoconf: + raise RuntimeError('Could not find autoconf 2.13') + + print('Refreshing %s' % configure, file=sys.stderr) + + with open(configure, 'wb') as fh: + subprocess.check_call([ + shell, autoconf, '--localdir=%s' % os.path.dirname(configure), + configure + '.in'], stdout=fh) + + +def main(args): + old_configure = os.environ.get('OLD_CONFIGURE') + + if not old_configure: + raise Exception('The OLD_CONFIGURE environment variable must be set') + + # We need to replace backslashes with forward slashes on Windows because + # this path actually ends up literally as $0, which breaks autoconf's + # detection of the source directory. + old_configure = os.path.abspath(old_configure).replace(os.sep, '/') + + try: + autoconf_refresh(old_configure) + except RuntimeError as e: + print(e.message, file=sys.stderr) + return 1 + + return subprocess.call([shell, old_configure] + args) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/js/src/configure.in b/js/src/configure.in index fa85cf44588a..550a51528f31 100644 --- a/js/src/configure.in +++ b/js/src/configure.in @@ -1,3672 +1,24 @@ -dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*- -dnl vi: set tabstop=4 shiftwidth=4 expandtab syntax=m4: dnl This Source Code Form is subject to the terms of the Mozilla Public dnl License, v. 2.0. If a copy of the MPL was not distributed with this dnl file, You can obtain one at http://mozilla.org/MPL/2.0/. - -dnl Process this file with autoconf to produce a configure script. -dnl ======================================================== - -AC_PREREQ(2.13) -AC_INIT(js/src/jsapi.h) -AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf) -AC_CANONICAL_SYSTEM -TARGET_CPU="${target_cpu}" -TARGET_VENDOR="${target_vendor}" -TARGET_OS="${target_os}" - -dnl ======================================================== -dnl = -dnl = Don't change the following two lines. Doing so breaks: -dnl = -dnl = CFLAGS="-foo" ./configure -dnl = -dnl ======================================================== -CFLAGS="${CFLAGS=}" -CPPFLAGS="${CPPFLAGS=}" -CXXFLAGS="${CXXFLAGS=}" -LDFLAGS="${LDFLAGS=}" -HOST_CFLAGS="${HOST_CFLAGS=}" -HOST_CXXFLAGS="${HOST_CXXFLAGS=}" -HOST_LDFLAGS="${HOST_LDFLAGS=}" - -dnl ======================================================== -dnl = Preserve certain environment flags passed to configure -dnl = We want sub projects to receive the same flags -dnl = untainted by this configure script -dnl ======================================================== -_SUBDIR_CC="$CC" -_SUBDIR_CXX="$CXX" -_SUBDIR_CFLAGS="$CFLAGS" -_SUBDIR_CPPFLAGS="$CPPFLAGS" -_SUBDIR_CXXFLAGS="$CXXFLAGS" -_SUBDIR_LDFLAGS="$LDFLAGS" -_SUBDIR_HOST_CC="$HOST_CC" -_SUBDIR_HOST_CFLAGS="$HOST_CFLAGS" -_SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS" -_SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS" -_SUBDIR_CONFIG_ARGS="$ac_configure_args" - -dnl Set the version number of the libs included with mozilla -dnl ======================================================== -NSPR_VERSION=4 -NSPR_MINVER=4.9.2 - -dnl Set the minimum version of toolkit libs used by mozilla -dnl ======================================================== -PERL_VERSION=5.006 -WINDRES_VERSION=2.14.90 -W32API_VERSION=3.14 - -MSMANIFEST_TOOL= - -dnl Set various checks -dnl ======================================================== -MISSING_X= -AC_PROG_AWK - -dnl Initialize the Pthread test variables early so they can be -dnl overridden by each platform. -dnl ======================================================== -USE_PTHREADS= -_PTHREAD_LDFLAGS="" - -dnl Do not allow objdir == srcdir builds -dnl ============================================================== -_topsrcdir=`cd $srcdir; pwd -W 2>/dev/null || pwd -P` -_objdir=`pwd -P` - -if test "$_topsrcdir" = "$_objdir" -then - echo " ***" - echo " * Building directly in the main source directory is not allowed." - echo " *" - echo " * To build, you must run configure from a separate directory" - echo " * (referred to as an object directory)." - echo " ***" - exit 1 -fi - -# Check for a couple representative files in the source tree -_conflict_files= -for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do - if test -f $file; then - _conflict_files="$_conflict_files $file" - fi -done -if test "$_conflict_files"; then - echo "***" - echo "* Your source tree contains these files:" - for file in $_conflict_files; do - echo "* $file" - done - cat 1>&2 <<-EOF - * This indicates that you previously built in the source tree. - * A source tree build can confuse the separate objdir build. - * - * To clean up the source tree: - * 1. cd $_topsrcdir - * 2. gmake distclean - *** - EOF - exit 1 - break -fi -MOZ_BUILD_ROOT=`pwd -W 2>/dev/null || pwd -P` - -MOZ_BUILD_BACKEND(../..) - -MOZ_DEFAULT_COMPILER - -COMPILE_ENVIRONMENT=1 -MOZ_ARG_DISABLE_BOOL(compile-environment, -[ --disable-compile-environment - Disable compiler/library checks.], - COMPILE_ENVIRONMENT= ) -AC_SUBST(COMPILE_ENVIRONMENT) - -dnl Check for Perl first -- needed for win32 SDK checks -MOZ_PATH_PROGS(PERL, $PERL perl5 perl ) -if test -z "$PERL" -o "$PERL" = ":"; then - AC_MSG_ERROR([perl not found in \$PATH]) -fi - -MOZ_ARG_ENABLE_BOOL(shared-js, -[ --disable-shared-js - Do not create a shared library.], - DISABLE_SHARED_JS=0, - DISABLE_SHARED_JS=1) - -MOZ_ARG_DISABLE_BOOL(export-js, -[ --disable-export-js - Do not mark JS symbols as DLL exported/visible.], - DISABLE_EXPORT_JS=1, - DISABLE_EXPORT_JS=) - -if test "$DISABLE_SHARED_JS" = "1" ; then - if test "$DISABLE_EXPORT_JS" = "1"; then - AC_DEFINE(STATIC_JS_API) - else - AC_DEFINE(STATIC_EXPORTABLE_JS_API) - fi -else - if test "$DISABLE_EXPORT_JS" = "1"; then - AC_MSG_ERROR([Must export JS symbols when building a shared library.]) - fi - JS_SHARED_LIBRARY=1 -fi -AC_SUBST(JS_SHARED_LIBRARY) - -if test "$JS_STANDALONE" = no; then - autoconfmk=autoconf-js.mk - JS_STANDALONE= - #DIST is exported from top-level configure -else - JS_STANDALONE=1 - AC_DEFINE(JS_STANDALONE) - DIST="$MOZ_BUILD_ROOT/dist" -fi -AC_SUBST(JS_STANDALONE) -BUILDING_JS=1 -AC_SUBST(autoconfmk) - -MOZ_ARG_WITH_STRING(gonk, -[ --with-gonk=DIR - location of gonk dir], - gonkdir=$withval) - -MOZ_ARG_WITH_STRING(gonk-toolchain-prefix, -[ --with-gonk-toolchain-prefix=DIR - prefix to gonk toolchain commands], - gonk_toolchain_prefix=$withval) - -if test -n "$gonkdir" ; then - kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"` - dnl Default to ICS - ANDROID_VERSION=15 - if test -n "${PLATFORM_SDK_VERSION}"; then - ANDROID_VERSION="${PLATFORM_SDK_VERSION}" - fi - - dnl set up compilers - AS="$gonk_toolchain_prefix"as - CC="$gonk_toolchain_prefix"gcc - CXX="$gonk_toolchain_prefix"g++ - CPP="$gonk_toolchain_prefix"cpp - LD="$gonk_toolchain_prefix"ld - AR="$gonk_toolchain_prefix"ar - RANLIB="$gonk_toolchain_prefix"ranlib - STRIP="$gonk_toolchain_prefix"strip - OBJCOPY="$gonk_toolchain_prefix"objcopy - - STLPORT_CPPFLAGS="-I$_topsrcdir/build/stlport/stlport -I$gonkdir/ndk/sources/cxx-stl/system/include" - STLPORT_LIBS="-lstlport" - - CPPFLAGS="-DANDROID $TARGET_C_INCLUDES -I$gonkdir/frameworks/base/native/include -I$gonkdir/system/core/include -isystem $gonkdir/bionic $CPPFLAGS -I$gonkdir/external/valgrind/fxos-include" - CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS" - CXXFLAGS="-mandroid -fno-short-enums -fno-exceptions -Wno-psabi $CXXFLAGS $STLPORT_CPPFLAGS" - LIBS="$LIBS $STLPORT_LIBS" - - dnl Add -llog by default, since we use it all over the place. - 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/ -llog $LDFLAGS" - - dnl prevent cross compile section from using these flags as host flags - if test -z "$HOST_CPPFLAGS" ; then - HOST_CPPFLAGS=" " - fi - if test -z "$HOST_CFLAGS" ; then - HOST_CFLAGS=" " - fi - if test -z "$HOST_CXXFLAGS" ; then - HOST_CXXFLAGS=" " - fi - if test -z "$HOST_LDFLAGS" ; then - HOST_LDFLAGS=" " - fi - - AC_DEFINE(ANDROID) - AC_DEFINE(GONK) -else - MOZ_ANDROID_NDK -fi - -case "$target" in -*-apple-darwin*) - MOZ_IOS_SDK - ;; -esac - -dnl ======================================================== -dnl Checks for compilers. -dnl ======================================================== - -dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269) -AR_FLAGS='crs $@' - -if test "$COMPILE_ENVIRONMENT"; then - -# Note: -# In Mozilla, we use the names $target, $host and $build incorrectly, but are -# too far gone to back out now. See Bug 475488: -# - When we say $target, we mean $host, that is, the system on which -# Mozilla will be run. -# - When we say $host, we mean $build, that is, the system on which Mozilla -# is built. -# - $target (in its correct usage) is for compilers who generate code for a -# different platform than $host, so it would not be used by Mozilla. -if test "$target" != "$host"; then - MOZ_CROSS_COMPILER -else - AC_PROG_CC - AC_PROG_CXX - AC_PROG_RANLIB - MOZ_PATH_PROGS(AS, $AS as, $CC) - AC_CHECK_PROGS(AR, ar, :) - AC_CHECK_PROGS(LD, ld, :) - AC_CHECK_PROGS(STRIP, strip, :) - AC_CHECK_PROGS(WINDRES, windres, :) - if test -z "$HOST_CC"; then - HOST_CC='$(CC)' - fi - if test -z "$HOST_CFLAGS"; then - HOST_CFLAGS='$(CFLAGS)' - fi - if test -z "$HOST_CXX"; then - HOST_CXX='$(CXX)' - fi - if test -z "$HOST_CXXFLAGS"; then - HOST_CXXFLAGS='$(CXXFLAGS)' - fi - if test -z "$HOST_LDFLAGS"; then - HOST_LDFLAGS='$(LDFLAGS)' - fi - if test -z "$HOST_RANLIB"; then - HOST_RANLIB='$(RANLIB)' - fi - if test -z "$HOST_AR"; then - HOST_AR='$(AR)' - fi - if test -z "$HOST_AR_FLAGS"; then - HOST_AR_FLAGS='$(AR_FLAGS)' - fi -fi - -MOZ_TOOL_VARIABLES - -MOZ_CHECK_COMPILER_WRAPPER - -AC_PROG_CPP -AC_PROG_CXXCPP -MOZ_RUST_SUPPORT - -dnl Special win32 checks -dnl ======================================================== - -# Target the Windows 8.1 SDK by default -WINSDK_TARGETVER=603 -WINVER=502 - -MOZ_ARG_WITH_STRING(windows-version, -[ --with-windows-version=WINSDK_TARGETVER - Windows SDK version to target. Win8.1 (603) is - currently the minimum supported version.], - WINSDK_TARGETVER=$withval) - -# Currently only version 603 is allowed -case "$WINSDK_TARGETVER" in -603) - MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000 - ;; - -*) - AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER)]); - ;; -esac - -case "$target" in -*-mingw*) - if test "$GCC" != "yes"; then - # Check to see if we are really running in a msvc environemnt - _WIN32_MSVC=1 - - # Make sure compilers are valid - CFLAGS="$CFLAGS -TC -nologo" - CXXFLAGS="$CXXFLAGS -TP -nologo" - # MSVC warning C4345 warns of newly conformant behavior as of VS2003. - # MSVC warning C4351 warns of newly conformant behavior as of VS2005. - # MSVC warning C4800 warns when a value is implicitly cast to bool, - # because this also forces narrowing to a single byte, which can be a - # perf hit. But this matters so little in practice (and often we want - # that behavior) that it's better to turn it off. - # _CRT_SECURE_NO_WARNINGS disables warnings about using MSVC-specific - # secure CRT functions. - # MSVC warning C4819 warns some UTF-8 characters (e.g. copyright sign) - # on non-Western system locales even if it is in a comment. - CFLAGS="$CFLAGS -wd4819" - CXXFLAGS="$CXXFLAGS -wd4345 -wd4351 -wd4800 -wd4819 -D_CRT_SECURE_NO_WARNINGS" - AC_LANG_SAVE - AC_LANG_C - AC_TRY_COMPILE([#include ], - [ printf("Hello World\n"); ],, - AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) ) - - AC_LANG_CPLUSPLUS - AC_TRY_COMPILE([#include ], - [ unsigned *test = new unsigned(42); ],, - AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) ) - AC_LANG_RESTORE - - changequote(,) - _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p' - changequote([,]) - - # Determine compiler version - _CC_MAJOR_VERSION=`echo ${CC_VERSION} | cut -c 1-2` - _CC_MINOR_VERSION=`echo ${CC_VERSION} | cut -c 3-4` - _MSC_VER=${CC_VERSION} - - _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | cut -c 1-2` - - if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then - AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.]) - fi - - AC_DEFINE(_CRT_SECURE_NO_WARNINGS) - AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS) - AC_DEFINE(_USE_MATH_DEFINES) # Otherwise MSVC's math.h doesn't #define M_PI. - - if test "$_CC_MAJOR_VERSION" = "18"; then - _CC_SUITE=12 - MSVC_C_RUNTIME_DLL=msvcr120.dll - MSVC_CXX_RUNTIME_DLL=msvcp120.dll - elif test "$_CC_MAJOR_VERSION" = "19"; then - _CC_SUITE=14 - MSVC_C_RUNTIME_DLL=vcruntime140.dll - MSVC_CXX_RUNTIME_DLL=msvcp140.dll - - # -Wv:18 disables all warnings introduced after VS2013 - # See http://blogs.msdn.com/b/vcblog/archive/2014/11/12/improvements-to-warnings-in-the-c-compiler.aspx - CFLAGS="$CFLAGS -Wv:18" - CXXFLAGS="$CXXFLAGS -Wv:18" - - # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146) - CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-" - - # Disable C++11 thread-safe statics due to crashes on XP (bug 1204752) - # See https://connect.microsoft.com/VisualStudio/feedback/details/1789709/visual-c-2015-runtime-broken-on-windows-server-2003-c-11-magic-statics - CXXFLAGS="$CXXFLAGS -Zc:threadSafeInit-" - else - AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.]) - fi - AC_SUBST(MSVC_C_RUNTIME_DLL) - AC_SUBST(MSVC_CXX_RUNTIME_DLL) - - dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool', - dnl not something else like "magnetic tape manipulation utility". - MSMT_TOOL=`${MT-mt} 2>&1|grep 'Microsoft (R) Manifest Tool'` - if test -z "$MSMT_TOOL"; then - AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.]) - fi - - changequote(,) - _MSMT_VER_FILTER='s|.*[^!-~]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p' - changequote([,]) - MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"` - if test -z "$MSMANIFEST_TOOL_VERSION"; then - AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.]) - fi - - MSMANIFEST_TOOL=1 - unset MSMT_TOOL - - # Check linker version - _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"` - _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'` - if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then - AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.]) - fi - - INCREMENTAL_LINKER=1 - - unset _MSVC_VER_FILTER - - CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0" - CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0" - else - # Check w32api version - _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'` - _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'` - AC_MSG_CHECKING([for w32api version >= $W32API_VERSION]) - AC_TRY_COMPILE([#include ], - #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \ - (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \ - __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION) - #error "test failed." - #endif - , [ res=yes ], [ res=no ]) - AC_MSG_RESULT([$res]) - if test "$res" != "yes"; then - AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.]) - fi - # Check windres version - AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION]) - _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'` - AC_MSG_RESULT([$_WINDRES_VERSION]) - _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'` - _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'` - _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'` - WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'` - WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'` - WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'` - if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \ - "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \ - "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \ - "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \ - "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \ - "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION" - then - AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.]) - fi - fi # !GNU_CC - - MOZ_FIND_WINSDK_VERSION - AC_DEFINE_UNQUOTED(WINVER,0x$WINVER) - AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER) - # Require OS features provided by IE 6.0 SP2 (XP SP2) - AC_DEFINE_UNQUOTED(_WIN32_IE,0x0603) - - # If the maximum version supported by this SDK is lower than the target - # version, error out - AC_MSG_CHECKING([for Windows SDK being recent enough]) - if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then - AC_MSG_RESULT("yes") - else - AC_MSG_RESULT("no") - 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.]) - fi - - AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER) - ;; -esac - -if test -n "$_WIN32_MSVC"; then - SKIP_PATH_CHECKS=1 - SKIP_COMPILER_CHECKS=1 - SKIP_LIBRARY_CHECKS=1 - - # Since we're skipping compiler and library checks, hard-code - # some facts here. - - # Common to all MSVC environments: - - AC_DEFINE(HAVE_LOCALECONV) - AC_DEFINE(HAVE_HYPOT) - AC_CHECK_FUNCS([_getc_nolock]) -fi - -fi # COMPILE_ENVIRONMENT - -# Check to see if we are running in a broken QEMU scratchbox. -# We know that anything below 1.0.16 is broken. -AC_CHECK_PROGS(SBCONF, sb-conf ve, "") -if test -n "$SBCONF"; then - _sb_version=`$SBCONF ve` - _sb_version_major=`echo $_sb_version | cut -f1 -d.` - _sb_version_minor=`echo $_sb_version | cut -f2 -d.` - _sb_version_point=`echo $_sb_version | cut -f3 -d.` - if test $_sb_version_major -eq 1 -a $_sb_version_minor -eq 0 -a $_sb_version_point -le 16; then - QEMU_CANT_RUN_JS_SHELL=1 - fi -fi -AC_SUBST(QEMU_CANT_RUN_JS_SHELL) - -AC_SUBST(_MSC_VER) - -AC_SUBST(GNU_AS) -AC_SUBST(GNU_LD) -AC_SUBST(GNU_CC) -AC_SUBST(GNU_CXX) -AC_SUBST(INTEL_CC) -AC_SUBST(INTEL_CXX) - -dnl ======================================================== -dnl Checks for programs. -dnl ======================================================== -AC_PROG_INSTALL -AC_PROG_LN_S - -AC_MSG_CHECKING([for tar archiver]) -AC_CHECK_PROGS(TAR, gnutar gtar tar, "") -if test -z "$TAR"; then - AC_MSG_WARN([no tar archiver found in \$PATH]) -fi -AC_MSG_RESULT([$TAR]) -AC_SUBST(TAR) - -AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION]) -_perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5` -_perl_res=$? -AC_MSG_RESULT([$_perl_version]) - -if test "$_perl_res" != 0; then - AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.]) -fi - -AC_MSG_CHECKING([for full perl installation]) -_perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5` -_perl_res=$? -if test "$_perl_res" != 0; then - AC_MSG_RESULT([no]) - AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.]) -else - AC_MSG_RESULT([yes]) -fi - -MOZ_PYTHON - -if test -z "$COMPILE_ENVIRONMENT"; then - NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py' -fi -AC_SUBST(NSINSTALL_BIN) - -MOZ_PATH_PROG(DOXYGEN, doxygen, :) -MOZ_PATH_PROG(AUTOCONF, autoconf, :) -MOZ_PATH_PROG(XARGS, xargs) -if test -z "$XARGS" -o "$XARGS" = ":"; then - AC_MSG_ERROR([xargs not found in \$PATH .]) -fi - -if test "$COMPILE_ENVIRONMENT"; then - -dnl ======================================================== -dnl = Mac OS X toolchain support -dnl ======================================================== - -dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk -dnl that a universal binary is being produced and MOZ_CAN_RUN_PROGRAMS -dnl when we can run target binaries. -AC_SUBST(UNIVERSAL_BINARY) -AC_SUBST(MOZ_CAN_RUN_PROGRAMS) - -dnl ======================================================== -dnl Check for MacOS deployment target version -dnl ======================================================== - -MOZ_ARG_ENABLE_STRING(macos-target, - [ --enable-macos-target=VER (default=10.6) - Set the minimum MacOS version needed at runtime], - [_MACOSX_DEPLOYMENT_TARGET=$enableval]) - -if test "$target_cpu" != "arm"; then -case "$target" in -*-darwin*) - if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then - dnl Use the specified value - export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET - else - dnl No value specified on the command line or in the environment, - dnl use architecture minimum. - export MACOSX_DEPLOYMENT_TARGET=10.6 - fi - ;; -esac -fi - -AC_SUBST(MACOSX_DEPLOYMENT_TARGET) - -dnl ======================================================== -dnl = Mac OS X SDK support -dnl ======================================================== -MACOS_SDK_DIR= -MOZ_ARG_WITH_STRING(macos-sdk, -[ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)], - MACOS_SDK_DIR=$withval) - -dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use. -AC_SUBST(MACOS_SDK_DIR) - -if test "$MACOS_SDK_DIR"; then - dnl Sync this section with the ones in NSPR and NSS. - dnl Changes to the cross environment here need to be accounted for in - dnl the libIDL checks (below) and xpidl build. - - if test ! -d "$MACOS_SDK_DIR"; then - AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must -specify a valid SDK. SDKs are installed when the optional cross-development -tools are selected during the Xcode/Developer Tools installation.]) - fi - - CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}" - CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}" - - dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER. - CPP="$CPP -isysroot ${MACOS_SDK_DIR}" - CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}" - - AC_LANG_SAVE - AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination]) - AC_LANG_CPLUSPLUS - AC_TRY_COMPILE([#include - int main() { return 0; }], - result=yes, - result=no) - AC_LANG_RESTORE - AC_MSG_RESULT($result) - - if test "$result" = "no" ; then - AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.]) - fi -fi - -fi # COMPILE_ENVIRONMENT - -if test -n "$MAKE"; then - if test `echo $MAKE | grep -c make.py` != 1; then - NOT_PYMAKE=$MAKE - fi -fi - -case "$host_os" in -mingw*) - MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :) - ;; -*) - MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :) - ;; -esac -if test "$GMAKE" = ":"; then - AC_MSG_ERROR([GNU make not found]) -fi - -# MAKE will be set by client.mk, but still need this for standalone js builds -if test -z "$MAKE"; then - MAKE=$GMAKE -fi - -if test "$COMPILE_ENVIRONMENT"; then - -AC_PATH_XTRA - -XCFLAGS="$X_CFLAGS" - -fi # COMPILE_ENVIRONMENT - -dnl ============================================================== -dnl Get mozilla version from central milestone file -dnl ============================================================== -MOZILLA_VERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir` -MOZILLA_UAVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --uaversion` -MOZILLA_SYMBOLVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --symbolversion` -if test -z "$MOZILLA_VERSION"; then - AC_MSG_ERROR([failed to read version info from milestone file]) -fi - -AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION") -AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION) -AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION") -AC_SUBST(MOZILLA_SYMBOLVERSION) - -# Separate version into components for use in shared object naming etc -changequote(,) -MOZJS_MAJOR_VERSION=`echo $MOZILLA_VERSION | sed "s|\(^[0-9]*\)\.[0-9]*.*|\1|"` -MOZJS_MINOR_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.\([0-9]*\).*|\1|"` -MOZJS_PATCH_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9]*[^0-9]*||"` -IS_ALPHA=`echo $MOZILLA_VERSION | grep '[ab]'` - -dnl XXX in a temporary bid to avoid developer anger at renaming files -dnl XXX before "js" symlinks exist, don't change names. dnl -dnl if test -n "$JS_STANDALONE"; then -dnl JS_SHELL_NAME=js$MOZJS_MAJOR_VERSION -dnl JS_CONFIG_NAME=js$MOZJS_MAJOR_VERSION-config -dnl else -JS_SHELL_NAME=js -JS_CONFIG_NAME=js-config -dnl fi - -changequote([,]) -if test -n "$IS_ALPHA"; then - changequote(,) - MOZJS_ALPHA=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9\.]*\([^0-9]\).*|\1|"` - changequote([,]) -fi -AC_DEFINE_UNQUOTED(MOZJS_MAJOR_VERSION,$MOZJS_MAJOR_VERSION) -AC_DEFINE_UNQUOTED(MOZJS_MINOR_VERSION,$MOZJS_MINOR_VERSION) -AC_SUBST(JS_SHELL_NAME) -AC_SUBST(JS_CONFIG_NAME) -AC_SUBST(MOZJS_MAJOR_VERSION) -AC_SUBST(MOZJS_MINOR_VERSION) -AC_SUBST(MOZJS_PATCH_VERSION) -AC_SUBST(MOZJS_ALPHA) - - -dnl ======================================================== -dnl set the defaults first -dnl ======================================================== -AS_BIN=$AS -AR_LIST='$(AR) t' -AR_EXTRACT='$(AR) x' -AR_DELETE='$(AR) d' -AS='$(CC)' -AS_DASH_C_FLAG='-c' -DLL_PREFIX=lib -LIB_PREFIX=lib -DLL_SUFFIX=.so -OBJ_SUFFIX=o -LIB_SUFFIX=a -ASM_SUFFIX=s -IMPORT_LIB_SUFFIX= -DIRENT_INO=d_ino -MOZ_USER_DIR=".mozilla" - -MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib" - -USE_DEPENDENT_LIBS=1 - -_PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2 - -if test -n "$CROSS_COMPILE"; then - OS_TARGET="${target_os}" - OS_ARCH=`echo $target_os | sed -e 's|/|_|g'` - OS_RELEASE= - case "${target_os}" in - linux*) OS_ARCH=Linux OS_TARGET=Linux ;; - kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU/kFreeBSD ;; - gnu*) OS_ARCH=GNU ;; - solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;; - mingw*) OS_ARCH=WINNT OS_TARGET=WINNT ;; - darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;; - dragonfly*) OS_ARCH=DragonFly OS_TARGET=DragonFly ;; - freebsd*) OS_ARCH=FreeBSD OS_TARGET=FreeBSD ;; - netbsd*) OS_ARCH=NetBSD OS_TARGET=NetBSD ;; - openbsd*) OS_ARCH=OpenBSD OS_TARGET=OpenBSD ;; - esac - case "${target}" in - *-android*|*-linuxandroid*) OS_ARCH=Linux OS_TARGET=Android ;; - esac -else - OS_TARGET=`uname -s` - OS_ARCH=`uname -s | sed -e 's|/|_|g'` - OS_RELEASE=`uname -r` -fi - -# Before this used `uname -m` when not cross compiling -# but that breaks when you have a 64 bit kernel with a 32 bit userland. -OS_TEST="${target_cpu}" - -HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'` - -####################################################################### -# Master "Core Components" macros for getting the OS target # -####################################################################### - -# -# If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no -# cross-compilation. -# - -# -# Define and override various archtecture-specific variables, including -# HOST_OS_ARCH -# OS_ARCH -# OS_TEST -# OS_TARGET -# OS_RELEASE -# OS_MINOR_RELEASE -# - -case "$HOST_OS_ARCH" in -mingw*) - HOST_OS_ARCH=WINNT - ;; -darwin*) - HOST_OS_ARCH=Darwin - ;; -linux*) - HOST_OS_ARCH=Linux - ;; -kfreebsd*-gnu) - HOST_OS_ARCH=GNU_kFreeBSD - ;; -gnu*) - HOST_OS_ARCH=GNU - ;; -dragonfly*) - HOST_OS_ARCH=DragonFly - ;; -freebsd*) - HOST_OS_ARCH=FreeBSD - ;; -netbsd*) - HOST_OS_ARCH=NetBSD - ;; -openbsd*) - HOST_OS_ARCH=OpenBSD - ;; -solaris*) - HOST_OS_ARCH=SunOS - SOLARIS_SUNPRO_CC= - SOLARIS_SUNPRO_CXX= - if test -z "$GNU_CC"; then - if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then - SOLARIS_SUNPRO_CC=1 - fi - fi - - if test -z "$GNU_CXX"; then - if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then - SOLARIS_SUNPRO_CXX=1 - fi - fi - AC_SUBST(SOLARIS_SUNPRO_CC) - AC_SUBST(SOLARIS_SUNPRO_CXX) - ;; -esac - -case "$OS_ARCH" in -WINNT) - if test -z "$CROSS_COMPILE" ; then - OS_TEST=`uname -p` - fi - ;; -Windows_NT) -# -# If uname -s returns "Windows_NT", we assume that we are using -# the uname.exe in MKS toolkit. -# -# The -r option of MKS uname only returns the major version number. -# So we need to use its -v option to get the minor version number. -# Moreover, it doesn't have the -p option, so we need to use uname -m. -# - OS_ARCH=WINNT - OS_TARGET=WINNT - OS_MINOR_RELEASE=`uname -v` - if test "$OS_MINOR_RELEASE" = "00"; then - OS_MINOR_RELEASE=0 - fi - OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}" - ;; -MINGW*_NT*) -# -# If uname -s returns MINGW32_NT-5.1, we assume that we are using -# the uname.exe in the MSYS tools. -# - OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'` - OS_ARCH=WINNT - OS_TARGET=WINNT - ;; -AIX) - OS_RELEASE=`uname -v`.`uname -r` - OS_TEST=${target_cpu} - if test -z "$GNU_CC"; then - if test "`$CC -qversion 2>&1 | egrep -c 'IBM XL'`" != "0"; then - AIX_IBM_XLC=1 - fi - fi - ;; -Darwin) - case "${target_cpu}" in - powerpc*) - OS_TEST=ppc - ;; - i*86*) - OS_TEST=i386 - ;; - x86_64) - OS_TEST=x86_64 - ;; - *) - if test -z "$CROSS_COMPILE" ; then - OS_TEST=`uname -p` - fi - ;; - esac - ;; -esac - -# Only set CPU_ARCH if we recognize the value of OS_TEST - -case "$OS_TEST" in -*86 | i86pc) - CPU_ARCH=x86 - ;; - -powerpc64 | ppc64 | powerpc64le | ppc64le) - CPU_ARCH=ppc64 - ;; - -powerpc | ppc | rs6000) - CPU_ARCH=ppc - ;; - -Alpha | alpha | ALPHA) - CPU_ARCH=Alpha - ;; - -s390) - CPU_ARCH=s390 - ;; - -s390x) - CPU_ARCH=s390x - ;; - -hppa* | parisc) - CPU_ARCH=hppa - ;; - -sun4u | sparc*) - CPU_ARCH=sparc - ;; - -x86_64 | ia64) - CPU_ARCH="$OS_TEST" - ;; - -arm*) - CPU_ARCH=arm - ;; - -mips|mipsel) - CPU_ARCH="mips32" - ;; - -mips64|mips64el) - CPU_ARCH="mips64" - ;; - -aarch64*) - CPU_ARCH=aarch64 - ;; - -esac - -if test -z "$OS_TARGET"; then - OS_TARGET=$OS_ARCH -fi -OS_CONFIG="${OS_TARGET}${OS_RELEASE}" - -dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64. -dnl =============================================================== -INTEL_ARCHITECTURE= -case "$OS_TEST" in - x86_64|i?86) - INTEL_ARCHITECTURE=1 -esac - -dnl Configure platform-specific CPU architecture compiler options. -dnl ============================================================== -MOZ_ARCH_OPTS - -dnl ================================================================= -dnl Set up and test static assertion macros used to avoid AC_TRY_RUN, -dnl which is bad when cross compiling. -dnl ================================================================= -if test "$COMPILE_ENVIRONMENT"; then -configure_static_assert_macros=' -#define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__) -#define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) -#define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1] -' - -dnl test that the macros actually work: -AC_MSG_CHECKING(that static assertion macros used in autoconf tests work) -AC_CACHE_VAL(ac_cv_static_assertion_macros_work, - [AC_LANG_SAVE - AC_LANG_C - ac_cv_static_assertion_macros_work="yes" - AC_TRY_COMPILE([$configure_static_assert_macros], - [CONFIGURE_STATIC_ASSERT(1)], - , - ac_cv_static_assertion_macros_work="no") - AC_TRY_COMPILE([$configure_static_assert_macros], - [CONFIGURE_STATIC_ASSERT(0)], - ac_cv_static_assertion_macros_work="no", - ) - AC_LANG_CPLUSPLUS - AC_TRY_COMPILE([$configure_static_assert_macros], - [CONFIGURE_STATIC_ASSERT(1)], - , - ac_cv_static_assertion_macros_work="no") - AC_TRY_COMPILE([$configure_static_assert_macros], - [CONFIGURE_STATIC_ASSERT(0)], - ac_cv_static_assertion_macros_work="no", - ) - AC_LANG_RESTORE - ]) -AC_MSG_RESULT("$ac_cv_static_assertion_macros_work") -if test "$ac_cv_static_assertion_macros_work" = "no"; then - AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.]) -fi -fi # COMPILE_ENVIRONMENT - -dnl ======================================================== -dnl Android libstdc++, placed here so it can use MOZ_ARCH -dnl computed above. -dnl ======================================================== - -MOZ_ANDROID_STLPORT - -dnl ======================================================== -dnl Suppress Clang Argument Warnings -dnl ======================================================== -if test -n "${CLANG_CC}${CLANG_CL}"; then - _WARNINGS_CFLAGS="-Qunused-arguments ${_WARNINGS_CFLAGS}" - CPPFLAGS="-Qunused-arguments ${CPPFLAGS}" -fi -if test -n "${CLANG_CXX}${CLANG_CL}"; then - _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}" -fi - -dnl ======================================================== -dnl = Use Address Sanitizer -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(address-sanitizer, -[ --enable-address-sanitizer Enable Address Sanitizer (default=no)], - MOZ_ASAN=1, - MOZ_ASAN= ) -if test -n "$MOZ_ASAN"; then - MOZ_LLVM_HACKS=1 - AC_DEFINE(MOZ_ASAN) - MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer) -fi -AC_SUBST(MOZ_ASAN) - -dnl ======================================================== -dnl = Use Memory Sanitizer -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(memory-sanitizer, -[ --enable-memory-sanitizer Enable Memory Sanitizer (default=no)], - MOZ_MSAN=1, - MOZ_MSAN= ) -if test -n "$MOZ_MSAN"; then - MOZ_LLVM_HACKS=1 - AC_DEFINE(MOZ_MSAN) - MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer) -fi -AC_SUBST(MOZ_MSAN) - -dnl ======================================================== -dnl = Use Thread Sanitizer -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(thread-sanitizer, -[ --enable-thread-sanitizer Enable Thread Sanitizer (default=no)], - MOZ_TSAN=1, - MOZ_TSAN= ) -if test -n "$MOZ_TSAN"; then - MOZ_LLVM_HACKS=1 - AC_DEFINE(MOZ_TSAN) - MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer) -fi -AC_SUBST(MOZ_TSAN) - -# The LLVM symbolizer is used by all sanitizers -AC_SUBST(LLVM_SYMBOLIZER) - -dnl ======================================================== -dnl = Enable hacks required for LLVM instrumentations -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(llvm-hacks, -[ --enable-llvm-hacks Enable workarounds required for several LLVM instrumentations (default=no)], - MOZ_LLVM_HACKS=1, - MOZ_LLVM_HACKS= ) -if test -n "$MOZ_LLVM_HACKS"; then - MOZ_NO_WLZDEFS=1 -fi - -dnl ======================================================== -dnl = Enable treating compiler warnings as errors -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(warnings-as-errors, -[ --enable-warnings-as-errors - Enable treating warnings as errors], - MOZ_ENABLE_WARNINGS_AS_ERRORS=1, - MOZ_ENABLE_WARNINGS_AS_ERRORS=) - -dnl ======================================================== -dnl GNU specific defaults -dnl ======================================================== -if test "$GNU_CC"; then - # Per bug 719659 comment 2, some of the headers on ancient build machines - # may require gnu89 inline semantics. But otherwise, we use C99. - # But on OS X we just use C99 plus GNU extensions, in order to fix - # bug 917526. - CFLAGS="$CFLAGS -std=gnu99" - if test "${OS_ARCH}" != Darwin; then - CFLAGS="$CFLAGS -fgnu89-inline" - fi - MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(DSO_SONAME) -o $@' - MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(DSO_SONAME) -o $@' - DSO_LDOPTS='-shared' - if test "$GCC_USE_GNU_LD"; then - # Some tools like ASan use a runtime library that is only - # linked against executables, so we must allow undefined - # symbols for shared objects in some cases. - if test -z "$MOZ_NO_WLZDEFS"; then - # Don't allow undefined symbols in libraries - DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs" - fi - fi - WARNINGS_AS_ERRORS='-Werror' - DSO_CFLAGS='' - DSO_PIC_CFLAGS='-fPIC' - ASFLAGS="$ASFLAGS -fPIC" - AC_MSG_CHECKING([for --noexecstack option to as]) - _SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -Wa,--noexecstack" - AC_TRY_COMPILE(,,AC_MSG_RESULT([yes]) - [ASFLAGS="$ASFLAGS -Wa,--noexecstack"], - AC_MSG_RESULT([no])) - CFLAGS=$_SAVE_CFLAGS - AC_MSG_CHECKING([for -z noexecstack option to ld]) - _SAVE_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,-z,noexecstack" - AC_TRY_LINK(,,AC_MSG_RESULT([yes]), - AC_MSG_RESULT([no]) - LDFLAGS=$_SAVE_LDFLAGS) - - AC_MSG_CHECKING([for -z text option to ld]) - _SAVE_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,-z,text" - AC_TRY_LINK(,,AC_MSG_RESULT([yes]) - [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,text"], - AC_MSG_RESULT([no]) - LDFLAGS=$_SAVE_LDFLAGS) - - AC_MSG_CHECKING([for --build-id option to ld]) - _SAVE_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,--build-id" - AC_TRY_LINK(,,AC_MSG_RESULT([yes]) - [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,--build-id"], - AC_MSG_RESULT([no]) - LDFLAGS=$_SAVE_LDFLAGS) - - MOZ_SET_WARNINGS_CFLAGS - - _DEFINES_CFLAGS='-include $(topobjdir)/js/src/js-confdefs.h -DMOZILLA_CLIENT' - _USE_CPP_INCLUDE_FLAG=1 - -elif test "$SOLARIS_SUNPRO_CC"; then - DSO_CFLAGS='' - if test "$CPU_ARCH" = "sparc"; then - # for Sun Studio on Solaris/SPARC - DSO_PIC_CFLAGS='-xcode=pic32' - else - DSO_PIC_CFLAGS='-KPIC' - fi - _DEFINES_CFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT' -else - MKSHLIB='$(LD) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' - MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' - - DSO_LDOPTS='-shared' - if test "$GNU_LD"; then - # Don't allow undefined symbols in libraries - DSO_LDOPTS="$DSO_LDOPTS -z defs" - fi - - DSO_CFLAGS='' - DSO_PIC_CFLAGS='-KPIC' - _DEFINES_CFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT' -fi - -if test "$GNU_CXX"; then - MOZ_SET_WARNINGS_CXXFLAGS - - _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(topobjdir)/js/src/js-confdefs.h' - _USE_CPP_INCLUDE_FLAG=1 - -else - _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_JS_CONFDEFS_H_ $(ACDEFINES)' -fi - -dnl ======================================================== -dnl Checking for 64-bit OS -dnl ======================================================== -if test "$COMPILE_ENVIRONMENT"; then -AC_LANG_SAVE -AC_LANG_C -AC_MSG_CHECKING(for 64-bit OS) -AC_TRY_COMPILE([$configure_static_assert_macros], - [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)], - result="yes", result="no") -AC_MSG_RESULT("$result") -if test "$result" = "yes"; then - AC_DEFINE(HAVE_64BIT_BUILD) - HAVE_64BIT_BUILD=1 -fi -AC_SUBST(HAVE_64BIT_BUILD) -AC_LANG_RESTORE -fi # COMPILE_ENVIRONMENT - -dnl ======================================================== -dnl = Use profiling compile flags -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(profiling, -[ --enable-profiling Set compile flags necessary for using sampling profilers (e.g. shark, perf)], - MOZ_PROFILING=1, - MOZ_PROFILING= ) - -dnl ======================================================== -dnl System overrides of the defaults for host -dnl ======================================================== -case "$host" in -*mingw*) - if test -n "$_WIN32_MSVC"; then - HOST_AR=lib - HOST_AR_FLAGS='-NOLOGO -OUT:$@' - HOST_CFLAGS="$HOST_CFLAGS -TC -nologo" - HOST_RANLIB='echo ranlib' - else - HOST_CFLAGS="$HOST_CFLAGS -mwindows" - fi - HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11 -D_CRT_SECURE_NO_WARNINGS" - HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}" - HOST_BIN_SUFFIX=.exe - - case "${host_cpu}" in - i*86) - if test -n "$_WIN32_MSVC"; then - HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86" - fi - ;; - x86_64) - if test -n "$_WIN32_MSVC"; then - HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64" - fi - HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_" - ;; - esac - ;; - -*-darwin*) - HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11" - HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" - ;; - -*-linux*|*-kfreebsd*-gnu|*-gnu*) - HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" - HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" - ;; - -*) - HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" - HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}" - ;; -esac - -MOZ_DOING_LTO(lto_is_enabled) - -dnl ======================================================== -dnl System overrides of the defaults for target -dnl ======================================================== - -case "$target" in -*-aix*) - AC_DEFINE(AIX) - if test ! "$GNU_CC"; then - if test ! "$HAVE_64BIT_BUILD"; then - # Compiling with Visual Age C++ object model compat is the - # default. To compile with object model ibm, add - # AIX_OBJMODEL=ibm to .mozconfig. - if test "$AIX_OBJMODEL" = "ibm"; then - CXXFLAGS="$CXXFLAGS -qobjmodel=ibm" - else - AIX_OBJMODEL=compat - fi - else - AIX_OBJMODEL=compat - fi - AC_SUBST(AIX_OBJMODEL) - DSO_LDOPTS='-qmkshrobj=1' - DSO_CFLAGS='-qflag=w:w' - DSO_PIC_CFLAGS= - LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib" - MOZ_FIX_LINK_PATHS= - MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@' - MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@' - if test "$COMPILE_ENVIRONMENT"; then - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - AC_MSG_CHECKING([for IBM XLC/C++ compiler version >= 9.0.0.7]) - AC_TRY_COMPILE([], - [#if (__IBMCPP__ < 900) - #error "Bad compiler" - #endif], - _BAD_COMPILER=,_BAD_COMPILER=1) - if test -n "$_BAD_COMPILER"; then - AC_MSG_RESULT([no]) - AC_MSG_ERROR([IBM XLC/C++ 9.0.0.7 or higher is required to build.]) - else - AC_MSG_RESULT([yes]) - fi - AC_LANG_RESTORE - TARGET_COMPILER_ABI="ibmc" - CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'` - CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'` - fi - fi - case "${target_os}" in - aix4.1*) - DLL_SUFFIX='_shr.a' - ;; - esac - if test "$COMPILE_ENVIRONMENT"; then - MOZ_CHECK_HEADERS(sys/inttypes.h) - fi - AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES) - ;; - -*-darwin*) - AC_DEFINE(XP_DARWIN) - MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@' - MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@' - MOZ_OPTIMIZE_FLAGS="-O3 -fno-stack-protector" - CFLAGS="$CFLAGS -fno-common" - CXXFLAGS="$CXXFLAGS -fno-common" - DLL_SUFFIX=".dylib" - DSO_LDOPTS='' - STRIP="$STRIP -x -S" - _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa' - LDFLAGS="$LDFLAGS -lobjc" - # The ExceptionHandling framework is needed for Objective-C exception - # logging code in nsObjCExceptions.h. Currently we only use that in debug - # builds. - _SAVE_LDFLAGS=$LDFLAGS - AC_MSG_CHECKING([for -framework ExceptionHandling]) - LDFLAGS="$LDFLAGS -framework ExceptionHandling" - AC_TRY_LINK(,[return 0;], - ac_cv_have_framework_exceptionhandling="yes", - ac_cv_have_framework_exceptionhandling="no") - AC_MSG_RESULT([$ac_cv_have_framework_exceptionhandling]) - if test "$ac_cv_have_framework_exceptionhandling" = "yes"; then - MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"; - fi - LDFLAGS=$_SAVE_LDFLAGS - - if test "x$lto_is_enabled" = "xyes"; then - echo "Skipping -dead_strip because lto is enabled." - dnl DTrace and -dead_strip don't interact well. See bug 403132. - dnl =================================================================== - elif test "x$enable_dtrace" = "xyes"; then - echo "Skipping -dead_strip because DTrace is enabled. See bug 403132." - else - dnl check for the presence of the -dead_strip linker flag - AC_MSG_CHECKING([for -dead_strip option to ld]) - _SAVE_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,-dead_strip" - AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=) - if test -n "$_HAVE_DEAD_STRIP" ; then - AC_MSG_RESULT([yes]) - MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip" - else - AC_MSG_RESULT([no]) - fi - - LDFLAGS=$_SAVE_LDFLAGS - fi - MOZ_FIX_LINK_PATHS="-Wl,-executable_path,${DIST}/bin" - ;; - -ia64*-hpux*) - DLL_SUFFIX=".so" - if test ! "$GNU_CC"; then - DSO_LDOPTS='-b' - DSO_CFLAGS="" - DSO_PIC_CFLAGS= - MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@' - MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@' - CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on" - else - DSO_LDOPTS='-b -E' - MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@' - MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@' - fi - MOZ_FIX_LINK_PATHS= - AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES) - AC_DEFINE(_LARGEFILE64_SOURCE) - ;; - -*-hpux*) - DLL_SUFFIX=".sl" - if test ! "$GNU_CC"; then - DSO_LDOPTS='-b -Wl,+s' - DSO_CFLAGS="" - DSO_PIC_CFLAGS="+Z" - MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(DIST)/bin -o $@' - MKCSHLIB='$(LD) -b +s -L$(DIST)/bin -o $@' - CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on" - else - DSO_LDOPTS='-b -E +s' - MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(DIST)/bin -L$(DIST)/lib -o $@' - MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(DIST)/bin -L$(DIST)/lib -o $@' - fi - MOZ_POST_PROGRAM_COMMAND='chatr +s enable' - AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES) - ;; - -*-android*|*-linuxandroid*) - AC_DEFINE(NO_PW_GECOS) - no_x=yes - _PLATFORM_DEFAULT_TOOLKIT=cairo-android - - MOZ_GFX_OPTIMIZE_MOBILE=1 - MOZ_OPTIMIZE_FLAGS="-O3 -fno-reorder-functions" - if test -z "$CLANG_CC"; then - MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS" - fi - # The Maemo builders don't know about this flag - MOZ_ARM_VFP_FLAGS="-mfpu=vfp" - ;; - -*-*linux*) - # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler. - # Similarly for GNU_CXX and INTEL_CXX. - if test "$INTEL_CC" -o "$INTEL_CXX"; then - # -Os has been broken on Intel's C/C++ compilers for quite a - # while; Intel recommends against using it. - MOZ_OPTIMIZE_FLAGS="-O2" - elif test "$GNU_CC" -o "$GNU_CXX"; then - MOZ_PGO_OPTIMIZE_FLAGS="-O3" - MOZ_OPTIMIZE_FLAGS="-O3" - if test -z "$CLANG_CC"; then - MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS" - fi - fi - - case "${target_cpu}" in - alpha*) - CFLAGS="$CFLAGS -mieee" - CXXFLAGS="$CXXFLAGS -mieee" - ;; - esac - - if test -z "$MC"; then - MC=mc.exe - fi - ;; - -*-mingw*) - DSO_CFLAGS= - DSO_PIC_CFLAGS= - DLL_SUFFIX=.dll - RC=rc.exe - MC=mc.exe - if test -n "$GNU_CC" -o -n "$CLANG_CC"; then - CC="$CC -mwindows" - CXX="$CXX -mwindows" - CPP="$CPP -mwindows" - CFLAGS="$CFLAGS -mms-bitfields" - CXXFLAGS="$CXXFLAGS -mms-bitfields" - DSO_LDOPTS='-shared' - MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@' - MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@' - RC='$(WINDRES)' - # Use static libgcc and libstdc++ - LDFLAGS="$LDFLAGS -static" - # Use temp file for windres (bug 213281) - RCFLAGS='-O coff --use-temp-file' - # mingw doesn't require kernel32, user32, and advapi32 explicitly - LIBS="$LIBS -lgdi32 -lwinmm -lwsock32 -lpsapi" - MOZ_FIX_LINK_PATHS= - DLL_PREFIX= - IMPORT_LIB_SUFFIX=a - - WIN32_CONSOLE_EXE_LDFLAGS=-mconsole - WIN32_GUI_EXE_LDFLAGS=-mwindows - - # We use mix of both POSIX and Win32 printf format across the tree, so format - # warnings are useless on mingw. - MOZ_C_SUPPORTS_WARNING(-Wno-, format, ac_c_has_wno_format) - MOZ_CXX_SUPPORTS_WARNING(-Wno-, format, ac_cxx_has_wno_format) - else - TARGET_COMPILER_ABI=msvc - HOST_CC='$(CC)' - HOST_CXX='$(CXX)' - HOST_LD='$(LD)' - if test "$AS_BIN"; then - AS="$(basename "$AS_BIN")" - fi - AR='lib' - AR_FLAGS='-NOLOGO -OUT:$@' - AR_EXTRACT= - RANLIB='echo not_ranlib' - STRIP='echo not_strip' - PKG_SKIP_STRIP=1 - XARGS=xargs - DOXYGEN=: - ASM_SUFFIX=asm - OBJ_SUFFIX=obj - LIB_SUFFIX=lib - DLL_PREFIX= - LIB_PREFIX= - IMPORT_LIB_SUFFIX=lib - MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)' - MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)' - dnl Set subsystem version 5 for Windows XP. - if test "$CPU_ARCH" = "x86"; then - WIN32_SUBSYSTEM_VERSION=5.01 - else - WIN32_SUBSYSTEM_VERSION=6.01 - fi - WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION - WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION - DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION - _USE_CPP_INCLUDE_FLAG=1 - _DEFINES_CFLAGS='-FI $(topobjdir)/js/src/js-confdefs.h -DMOZILLA_CLIENT' - _DEFINES_CXXFLAGS='-FI $(topobjdir)/js/src/js-confdefs.h -DMOZILLA_CLIENT' - CFLAGS="$CFLAGS -W3 -Gy" - CXXFLAGS="$CXXFLAGS -W3 -Gy" - if test "$CPU_ARCH" = "x86"; then - dnl VS2012+ defaults to -arch:SSE2. - CFLAGS="$CFLAGS -arch:IA32" - CXXFLAGS="$CXXFLAGS -arch:IA32" - fi - dnl VS2013+ requires -FS when parallel building by make -jN. - dnl If nothing, compiler sometimes causes C1041 error. - CFLAGS="$CFLAGS -FS" - CXXFLAGS="$CXXFLAGS -FS" - # khuey says we can safely ignore MSVC warning C4251 - # MSVC warning C4244 (implicit type conversion may lose data) warns - # and requires workarounds for perfectly valid code. Also, GCC/clang - # don't warn about it by default. So for consistency/sanity, we turn - # it off on MSVC, too. - # MSVC warning C4267 warns for narrowing type conversions from size_t - # to 32-bit integer types on 64-bit platforms. Since this is virtually - # the same thing as C4244, we disable C4267, too. - CFLAGS="$CFLAGS -wd4244 -wd4267" - CXXFLAGS="$CXXFLAGS -wd4244 -wd4267 -wd4251" - if test -n "$CLANG_CL"; then - # XXX We should combine some of these with our generic GCC-style - # warning checks. - # - # Suppress the clang-cl warning for the inline 'new' and 'delete' in mozalloc - CXXFLAGS="$CXXFLAGS -Wno-inline-new-delete" - # We use offsetof on non-POD objects all the time. - # We also suppress this warning on other platforms. - CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof" - # MFBT thinks clang-cl supports constexpr, which it does, but - # not everything in Windows C++ headers supports constexpr - # as we might expect until MSVC 2015, so turn off this warning - # for now. - CXXFLAGS="$CXXFLAGS -Wno-invalid-constexpr" - # This warns for reasonable things like: - # enum { X = 0xffffffffU }; - # which is annoying for IDL headers. - CXXFLAGS="$CXXFLAGS -Wno-microsoft-enum-value" - # This warns for cases that would be reached by the Microsoft - # #include rules, but also currently warns on cases that would - # *also* be reached by standard C++ include rules. That - # behavior doesn't seem useful, so we turn it off. - CXXFLAGS="$CXXFLAGS -Wno-microsoft-include" - # We normally error out on unknown pragmas, but since clang-cl - # claims to be MSVC, it would be difficult to add - # #if defined(_MSC_VER) && !defined(__clang__) everywhere we - # use such pragmas, so just ignore them. - CFLAGS="$CFLAGS -Wno-unknown-pragmas" - CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas" - # clang-cl's Intrin.h marks things like _ReadWriteBarrier - # as __attribute((__deprecated__)). This is nice to know, - # but since we don't get the equivalent warning from MSVC, - # let's just ignore it. - CFLAGS="$CFLAGS -Wno-deprecated-declarations" - CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations" - # We use a function like: - # __declspec(noreturn) __inline void f() {} - # which -Winvalid-noreturn complains about. Again, MSVC seems - # OK with it, so let's silence the warning. - CFLAGS="$CFLAGS -Wno-invalid-noreturn" - CXXFLAGS="$CXXFLAGS -Wno-invalid-noreturn" - # Missing |override| on virtual function declarations isn't - # something that MSVC currently warns about. - CXXFLAGS="$CXXFLAGS -Wno-inconsistent-missing-override" - # We use -DHAS_EXCEPTIONS=0, which removes the |throw()| - # declaration on |operator delete(void*)|. However, clang-cl - # must internally declare |operator delete(void*)| differently, - # which causes this warning for virtually every file in the - # tree. clang-cl doesn't support -fno-exceptions or equivalent, - # so there doesn't seem to be any way to convince clang-cl to - # declare |delete| differently. Therefore, suppress this - # warning. - CXXFLAGS="$CXXFLAGS -Wno-implicit-exception-spec-mismatch" - # At least one MSVC header and several headers in-tree have - # unused typedefs, so turn this on. - CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef" - # Several JS engine header files use __declspec(dllimport) on - # classes, and clang-cl helpfully warns about its non-support - # for such cases. We're not particularly worried about that, - # so ignore that warning. - CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes" - fi - # make 'foo == bar;' error out - CFLAGS="$CFLAGS -we4553" - CXXFLAGS="$CXXFLAGS -we4553" - LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib psapi.lib" - MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV' - WARNINGS_AS_ERRORS='-WX' - MOZ_OPTIMIZE_FLAGS="-O2" - MOZ_FIX_LINK_PATHS= - LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT" - if test -z "$DEVELOPER_OPTIONS"; then - LDFLAGS="$LDFLAGS -RELEASE" - fi - dnl For profile-guided optimization - PROFILE_GEN_CFLAGS="-GL" - PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT" - dnl XXX: PGO builds can fail with warnings treated as errors, - dnl specifically "no profile data available" appears to be - dnl treated as an error sometimes. This might be a consequence - dnl of using WARNINGS_AS_ERRORS in some modules, combined - dnl with the linker doing most of the work in the whole-program - dnl optimization/PGO case. I think it's probably a compiler bug, - dnl but we work around it here. - PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952" - dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul. - dnl Probably also a compiler bug, but what can you do? - PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE" - LDFLAGS="$LDFLAGS -DYNAMICBASE" - RCFLAGS="-nologo" - fi - AC_DEFINE(HAVE_SNPRINTF) - AC_DEFINE(HAVE__MSIZE) - AC_DEFINE(_WINDOWS) - AC_DEFINE(WIN32) - AC_DEFINE(XP_WIN) - AC_DEFINE(XP_WIN32) - AC_DEFINE(HW_THREADS) - AC_DEFINE(STDC_HEADERS) - AC_DEFINE(WIN32_LEAN_AND_MEAN) - _PLATFORM_DEFAULT_TOOLKIT='cairo-windows' - BIN_SUFFIX='.exe' - MOZ_USER_DIR="Mozilla" - - dnl set NO_X11 defines here as the general check is skipped on win32 - no_x=yes - AC_DEFINE(NO_X11) - - case "$host_os" in - cygwin*|msvc*|mks*) - 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.]) - ;; - esac - - case "$target" in - i*86-*) - if test "$HAVE_64BIT_BUILD"; then - AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.]) - fi - - if test -n "$GNU_CC"; then - CFLAGS="$CFLAGS -mstackrealign -fno-keep-inline-dllexport" - CXXFLAGS="$CXXFLAGS -mstackrealign -fno-keep-inline-dllexport" - LDFLAGS="$LDFLAGS -Wl,--large-address-aware" - else - DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86" - LDFLAGS="$LDFLAGS -SAFESEH" - fi - - AC_DEFINE(_X86_) - ;; - x86_64-*) - if test -n "$_WIN32_MSVC"; then - DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64" - fi - AC_DEFINE(_AMD64_) - ;; - *) - AC_DEFINE(_CPU_ARCH_NOT_DEFINED) - ;; - esac - ;; - -*-netbsd*) - DSO_CFLAGS='' - CFLAGS="$CFLAGS -Dunix" - CXXFLAGS="$CXXFLAGS -Dunix" - if $CC -E - -dM /dev/null; then - DLL_SUFFIX=".so" - DSO_PIC_CFLAGS='-fPIC -DPIC' - DSO_LDOPTS='-shared' - BIN_FLAGS='-Wl,--export-dynamic' - else - DSO_PIC_CFLAGS='-fPIC -DPIC' - DLL_SUFFIX=".so.1.0" - DSO_LDOPTS='-shared' - fi - # This will fail on a.out systems prior to 1.5.1_ALPHA. - if test "$LIBRUNPATH"; then - DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS" - fi - MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(DSO_SONAME) -o $@' - MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(DSO_SONAME) -o $@' - ;; - -*-openbsd*) - DLL_SUFFIX=".so.1.0" - DSO_CFLAGS='' - DSO_PIC_CFLAGS='-fPIC' - DSO_LDOPTS='-shared -fPIC' - if test "$LIBRUNPATH"; then - DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS" - fi - ;; - -*-solaris*) - AC_DEFINE(SOLARIS) - if test -z "$CROSS_COMPILE" && pkginfo -q SUNWpr && pkginfo -q SUNWprd; then - NO_NSPR_CONFIG_SYSTEM_LDFLAGS="-L/usr/lib/mps -R/usr/lib/mps -lnspr4" - NO_NSPR_CONFIG_SYSTEM_CFLAGS="-I/usr/include/mps" - NO_NSPR_CONFIG_SYSTEM_VERSION=["`pkgparam SUNWpr SUNW_PRODVERS | sed -e 's/^[1-9][0-9]*\.[0-9][0-9]*$/&.0/'`"] - fi - MOZ_FIX_LINK_PATHS= - # $ORIGIN/.. is for shared libraries under components/ to locate shared - # libraries one level up (e.g. libnspr4.so) - if test "$SOLARIS_SUNPRO_CC"; then - LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs" - LIBS="-lCrun -lCstd -lc $LIBS" - AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES) - CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__" - CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef" - LDFLAGS="-xildoff $LDFLAGS" - if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then - _SAVE_LDFLAGS=$LDFLAGS - LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS" - AC_TRY_LINK([#include ], - [printf("Hello World\n");], - , - [LDFLAGS=$_SAVE_LDFLAGS]) - fi - MOZ_OPTIMIZE_FLAGS="-xO4" - MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' - MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' - DSO_LDOPTS='-G' - AR_LIST="$AR t" - AR_EXTRACT="$AR x" - AR_DELETE="$AR d" - AR='$(CXX) -xar' - AR_FLAGS='-o $@' - AS='/usr/ccs/bin/as' - ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0" - AS_DASH_C_FLAG='' - TARGET_COMPILER_ABI="sunc" - CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'` - CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'` - AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9]) - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - AC_TRY_COMPILE([], - [#if (__SUNPRO_CC < 0x590) - #error "Denied" - #endif], - _BAD_COMPILER=,_BAD_COMPILER=1) - if test -n "$_BAD_COMPILER"; then - _res="no" - AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .]) - else - _res="yes" - fi - AC_TRY_COMPILE([], - [#if (__SUNPRO_CC >= 0x5100) - #error "Sun C++ 5.10 or above" - #endif], - _ABOVE_SS12U1=,_ABOVE_SS12U1=1) - if test "$_ABOVE_SS12U1"; then - # disable xannotate - CXXFLAGS="$CXXFLAGS -xannotate=no" - fi - AC_MSG_RESULT([$_res]) - AC_LANG_RESTORE - else - LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs" - LIBS="-lc $LIBS" - ASFLAGS="$ASFLAGS -fPIC" - DSO_LDOPTS='-shared' - WARNINGS_AS_ERRORS='-Werror' - _WARNINGS_CFLAGS='' - _WARNINGS_CXXFLAGS='' - if test "$OS_RELEASE" = "5.3"; then - AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES) - fi - fi - if test "$OS_RELEASE" = "5.5.1"; then - AC_DEFINE(NEED_USLEEP_PROTOTYPE) - fi - ;; - -*-sunos*) - DSO_LDOPTS='-Bdynamic' - MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@' - MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@' - AC_DEFINE(SUNOS4) - AC_DEFINE(SPRINTF_RETURNS_STRING) - case "$(target_os)" in - sunos4.1*) - DLL_SUFFIX='.so.1.0' - ;; - esac - ;; - -esac - -dnl Only one oddball right now (QNX), but this gives us flexibility -dnl if any other platforms need to override this in the future. -AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO) - -dnl ======================================================== -dnl = Flags to strip unused symbols from .so components -dnl ======================================================== -case "$target" in - *-linux*|*-kfreebsd*-gnu|*-gnu*) - MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script' - ;; - *-solaris*) - if test -z "$GNU_CC"; then - MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile' - else - if test -z "$GCC_USE_GNU_LD"; then - MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile' - else - MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script' - fi - fi - ;; - *-darwin*) - MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list' - ;; - *-mingw*) - if test -n "$GNU_CC"; then - MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script' - fi - ;; -esac - -if test -z "$COMPILE_ENVIRONMENT"; then - SKIP_COMPILER_CHECKS=1 - SKIP_LIBRARY_CHECKS=1 -fi - -dnl Configure JIT support - -case "$target" in -i?86-*) - ENABLE_ION=1 - AC_DEFINE(JS_CPU_X86) - ;; -x86_64*-*) - ENABLE_ION=1 - AC_DEFINE(JS_CPU_X64) - ;; -arm*-*) - ENABLE_ION=1 - AC_DEFINE(JS_CPU_ARM) - ;; -sparc-*) -dnl ENABLE_ION=0 - AC_DEFINE(JS_CPU_SPARC) - ;; -mips*-*) - ENABLE_ION=1 - AC_DEFINE(JS_CPU_MIPS) - ;; -esac - -if test "$HAVE_64BIT_BUILD" ; then - AC_DEFINE(JS_PUNBOX64) -else - AC_DEFINE(JS_NUNBOX32) -fi - -MOZ_ARG_DISABLE_BOOL(ion, -[ --disable-ion Disable use of the IonMonkey JIT], - ENABLE_ION= ) - -AC_SUBST(ENABLE_METHODJIT_SPEW) - -AC_SUBST(ENABLE_ION) - -if test -n "$COMPILE_ENVIRONMENT"; then - MOZ_COMPILER_OPTS -fi - -if test -z "$SKIP_COMPILER_CHECKS"; then -dnl Checks for typedefs, structures, and compiler characteristics. -dnl ======================================================== -AC_HEADER_STDC -AC_C_CONST -AC_TYPE_MODE_T -AC_TYPE_OFF_T -AC_TYPE_PID_T -AC_TYPE_SIZE_T -AC_LANG_CPLUSPLUS -AC_LANG_C -AC_MSG_CHECKING(for ssize_t) -AC_CACHE_VAL(ac_cv_type_ssize_t, - [AC_TRY_COMPILE([#include - #include ], - [ssize_t foo = 0;], - [ac_cv_type_ssize_t=true], - [ac_cv_type_ssize_t=false])]) -if test "$ac_cv_type_ssize_t" = true ; then - AC_DEFINE(HAVE_SSIZE_T) - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) -fi - -MOZ_CHECK_HEADERS(endian.h) -if test "$ac_cv_header_endian_h" = yes; then - AC_DEFINE(JS_HAVE_ENDIAN_H) -fi - -MOZ_CHECK_HEADERS([machine/endian.h],[],[],[#include ]) -if test "$ac_cv_header_machine_endian_h" = yes; then - AC_DEFINE(JS_HAVE_MACHINE_ENDIAN_H) -fi - -MOZ_CHECK_HEADERS(sys/isa_defs.h) -if test "$ac_cv_header_sys_isa_defs_h" = yes; then - AC_DEFINE(JS_HAVE_SYS_ISA_DEFS_H) -fi - -AC_LANG_CPLUSPLUS - -MOZ_CXX11 - -dnl Check for .hidden assembler directive and visibility attribute. -dnl Borrowed from glibc configure.in -dnl =============================================================== -if test "$GNU_CC" -a "$OS_TARGET" != WINNT; then - AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE) - AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE) - case "$OS_TARGET" in - Darwin) - VISIBILITY_FLAGS='-fvisibility=hidden -fvisibility-inlines-hidden' - ;; - *) - case $GCC_VERSION in - 4.6*) - VISIBILITY_FLAGS="-I${DIST}/system_wrappers -include ${_topsrcdir}/config/gcc_hidden_dso_handle.h" - ;; - *) - VISIBILITY_FLAGS="-I${DIST}/system_wrappers -include ${_topsrcdir}/config/gcc_hidden.h" - ;; - esac - WRAP_SYSTEM_INCLUDES=1 - ;; - esac -fi # GNU_CC - -# visibility hidden flag for Sun Studio on Solaris -if test "$SOLARIS_SUNPRO_CC"; then -VISIBILITY_FLAGS='-xldscope=hidden' -fi # Sun Studio on Solaris - -case "${OS_TARGET}" in -WINNT|Darwin|Android) - ;; -*) - STL_FLAGS="-I${DIST}/stl_wrappers" - WRAP_STL_INCLUDES=1 - ;; -esac - -AC_SUBST(WRAP_SYSTEM_INCLUDES) -AC_SUBST_LIST(VISIBILITY_FLAGS) - -dnl Checks for header files. -dnl ======================================================== -AC_HEADER_DIRENT -case "$target_os" in -freebsd*) -# for stuff like -lXshm - CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}" - ;; -esac -MOZ_CHECK_COMMON_HEADERS - -dnl These are all the places some variant of statfs can be hiding. -MOZ_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h) - -dnl Quota support -MOZ_CHECK_HEADERS(sys/quota.h) -MOZ_CHECK_HEADERS(linux/quota.h) - -MOZ_ARG_ENABLE_BOOL(dtrace, - [ --enable-dtrace build with dtrace support if available (default=no)], - [enable_dtrace="yes"],) -if test "x$enable_dtrace" = "xyes"; then - MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1) - if test -n "$HAVE_DTRACE"; then - AC_DEFINE(INCLUDE_MOZILLA_DTRACE) - else - AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]); - fi -fi -AC_SUBST(HAVE_DTRACE) - -case $target in -*-aix4.3*|*-aix5*) - ;; -*) - MOZ_CHECK_HEADERS(sys/cdefs.h) - ;; -esac - -MOZ_LINUX_PERF_EVENT - -dnl Checks for libraries. -dnl ======================================================== -case $target in -*-hpux11.*) - ;; -*) - AC_CHECK_LIB(c_r, gethostbyname_r) - ;; -esac - -dnl We don't want to link with libdl even if it's present on OS X, since -dnl it's not used and not part of the default installation. OS/2 has dlfcn -dnl in libc. -dnl We don't want to link against libm or libpthread on Darwin since -dnl they both are just symlinks to libSystem and explicitly linking -dnl against libSystem causes issues when debugging (see bug 299601). -case $target in -*-darwin*) - ;; -*) - AC_SEARCH_LIBS(dlopen, dl, - MOZ_CHECK_HEADER(dlfcn.h, - AC_DEFINE(HAVE_DLOPEN))) - ;; -esac - -if test ! "$GNU_CXX"; then - - case $target in - *-aix*) - AC_CHECK_LIB(C_r, demangle) - ;; - *) - AC_CHECK_LIB(C, demangle) - ;; - esac -fi - -AC_CHECK_LIB(socket, socket) - -dnl ======================================================== -dnl = pthread support -dnl = Start by checking whether the system support pthreads -dnl ======================================================== -case "$target_os" in -darwin*) - USE_PTHREADS=1 - ;; -*) - AC_CHECK_LIB(pthreads, pthread_create, - USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads", - AC_CHECK_LIB(pthread, pthread_create, - USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread", - AC_CHECK_LIB(c_r, pthread_create, - USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r", - AC_CHECK_LIB(c, pthread_create, - USE_PTHREADS=1 - ) - ) - ) - ) - ;; -esac - -dnl ======================================================== -dnl Check the command line for --with-pthreads -dnl ======================================================== -MOZ_ARG_WITH_BOOL(pthreads, -[ --with-pthreads Force use of system pthread library with NSPR ], -[ if test "$USE_PTHREADS"x = x; then - AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]); -fi], - USE_PTHREADS= - _PTHREAD_LDFLAGS= -) - -dnl ======================================================== -dnl Do the platform specific pthread hackery -dnl ======================================================== -if test "$USE_PTHREADS"x != x -then - dnl - dnl See if -pthread is supported. - dnl - rm -f conftest* - ac_cv_have_dash_pthread=no - AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread) - echo 'int main() { return 0; }' | cat > conftest.c - ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1 - if test $? -eq 0; then - if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then - ac_cv_have_dash_pthread=yes - case "$target_os" in - freebsd*) -# Freebsd doesn't use -pthread for compiles, it uses them for linking - ;; - *) - CFLAGS="$CFLAGS -pthread" - CXXFLAGS="$CXXFLAGS -pthread" - ;; - esac - fi - fi - rm -f conftest* - AC_MSG_RESULT($ac_cv_have_dash_pthread) - - dnl - dnl See if -pthreads is supported. - dnl - ac_cv_have_dash_pthreads=no - if test "$ac_cv_have_dash_pthread" = "no"; then - AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads) - echo 'int main() { return 0; }' | cat > conftest.c - ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1 - if test $? -eq 0; then - if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then - ac_cv_have_dash_pthreads=yes - CFLAGS="$CFLAGS -pthreads" - CXXFLAGS="$CXXFLAGS -pthreads" - fi - fi - rm -f conftest* - AC_MSG_RESULT($ac_cv_have_dash_pthreads) - fi - - case "$target" in - *-*-freebsd*) - AC_DEFINE(_REENTRANT) - AC_DEFINE(_THREAD_SAFE) - dnl -pthread links in -lpthread, so don't specify it explicitly. - if test "$ac_cv_have_dash_pthread" = "yes"; then - _PTHREAD_LDFLAGS="-pthread" - fi - ;; - - *-*-openbsd*|*-*-bsdi*) - AC_DEFINE(_REENTRANT) - AC_DEFINE(_THREAD_SAFE) - dnl -pthread links in -lc_r, so don't specify it explicitly. - if test "$ac_cv_have_dash_pthread" = "yes"; then - _PTHREAD_LDFLAGS="-pthread" - fi - ;; - - *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*) - AC_DEFINE(_REENTRANT) - ;; - - *-aix4.3*|*-aix5*) - AC_DEFINE(_REENTRANT) - ;; - - *-hpux11.*) - AC_DEFINE(_REENTRANT) - ;; - - *-*-solaris*) - AC_DEFINE(_REENTRANT) - if test "$SOLARIS_SUNPRO_CC"; then - CFLAGS="$CFLAGS -mt" - CXXFLAGS="$CXXFLAGS -mt" - fi - ;; - esac - LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}" -fi - - -dnl Checks for library functions. -dnl ======================================================== -AC_PROG_GCC_TRADITIONAL -AC_FUNC_MEMCMP -AC_CHECK_FUNCS([getc_unlocked _getc_nolock gmtime_r localtime_r]) - -dnl check for clock_gettime(), the CLOCK_MONOTONIC clock -AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC), - ac_cv_clock_monotonic, - [for libs in "" -lrt; do - _SAVE_LIBS="$LIBS" - LIBS="$LIBS $libs" - AC_TRY_LINK([#include ], - [ struct timespec ts; - clock_gettime(CLOCK_MONOTONIC, &ts); ], - ac_cv_clock_monotonic=$libs - LIBS="$_SAVE_LIBS" - break, - ac_cv_clock_monotonic=no) - LIBS="$_SAVE_LIBS" - done]) -if test "$ac_cv_clock_monotonic" != "no"; then - HAVE_CLOCK_MONOTONIC=1 - REALTIME_LIBS=$ac_cv_clock_monotonic - AC_DEFINE(HAVE_CLOCK_MONOTONIC) - AC_SUBST(HAVE_CLOCK_MONOTONIC) - AC_SUBST_LIST(REALTIME_LIBS) -fi - -dnl Checks for math functions. -dnl ======================================================== -AC_CHECK_LIB(m, sin) -AC_CHECK_LIB(m, __sincos, AC_DEFINE(HAVE_SINCOS)) -AC_CHECK_FUNCS([log2 log1p expm1 sqrt1pm1 acosh asinh atanh cbrt]) - - -dnl check for wcrtomb/mbrtowc -dnl ======================================================================= -if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then -AC_LANG_SAVE -AC_LANG_CPLUSPLUS -AC_CACHE_CHECK(for wcrtomb, - ac_cv_have_wcrtomb, - [AC_TRY_LINK([#include ], - [mbstate_t ps={0};wcrtomb(0,'f',&ps);], - ac_cv_have_wcrtomb="yes", - ac_cv_have_wcrtomb="no")]) -if test "$ac_cv_have_wcrtomb" = "yes"; then - AC_DEFINE(HAVE_WCRTOMB) -fi -AC_CACHE_CHECK(for mbrtowc, - ac_cv_have_mbrtowc, - [AC_TRY_LINK([#include ], - [mbstate_t ps={0};mbrtowc(0,0,0,&ps);], - ac_cv_have_mbrtowc="yes", - ac_cv_have_mbrtowc="no")]) -if test "$ac_cv_have_mbrtowc" = "yes"; then - AC_DEFINE(HAVE_MBRTOWC) -fi -AC_LANG_RESTORE -fi - -AC_CACHE_CHECK( - [for res_ninit()], - ac_cv_func_res_ninit, - [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then - dnl no need for res_ninit() on NetBSD and OpenBSD - ac_cv_func_res_ninit=no - else - AC_TRY_LINK([ - #ifdef linux - #define _BSD_SOURCE 1 - #endif - #include - #include - #include - #include - ], - [int foo = res_ninit(&_res);], - [ac_cv_func_res_ninit=yes], - [ac_cv_func_res_ninit=no]) - fi - ]) - -if test "$ac_cv_func_res_ninit" = "yes"; then - AC_DEFINE(HAVE_RES_NINIT) -dnl must add the link line we do something as foolish as this... dougt -dnl else -dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT), -dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT))) -fi - -AM_LANGINFO_CODESET - -AC_LANG_C - -dnl ********************** -dnl *** va_copy checks *** -dnl ********************** -AC_CACHE_CHECK([for an implementation of va_copy()], - ac_cv_va_copy, - [AC_TRY_COMPILE([#include - #include - void f (int i, ...) { - va_list args1, args2; - va_start (args1, i); - va_copy (args2, args1); - if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42) - exit (1); - va_end (args1); va_end (args2); - }], - [f(0, 42); return 0], - [ac_cv_va_copy=yes], - [ac_cv_va_copy=no] - )] -) -AC_CACHE_CHECK([whether va_list can be copied by value], - ac_cv_va_val_copy, - [AC_TRY_COMPILE([#include - #include - void f (int i, ...) { - va_list args1, args2; - va_start (args1, i); - args2 = args1; - if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42) - exit (1); - va_end (args1); va_end (args2); - }], - [f(0, 42); return 0], - [ac_cv_va_val_copy=yes], - [ac_cv_va_val_copy=no], - )] -) -if test "x$ac_cv_va_copy" = "xyes"; then - AC_DEFINE(VA_COPY, va_copy) - AC_DEFINE(HAVE_VA_COPY) -fi - -if test "x$ac_cv_va_val_copy" = "xno"; then - AC_DEFINE(HAVE_VA_LIST_AS_ARRAY) -fi - -dnl =================================================================== -dnl ======================================================== -dnl Put your C++ language/feature checks below -dnl ======================================================== -AC_LANG_CPLUSPLUS - -ARM_ABI_PREFIX= -if test "$GNU_CC"; then - if test "$CPU_ARCH" = "arm" ; then - AC_CACHE_CHECK(for ARM EABI, - ac_cv_gcc_arm_eabi, - [AC_TRY_COMPILE([], - [ -#if defined(__ARM_EABI__) - return 0; -#else -#error Not ARM EABI. -#endif - ], - ac_cv_gcc_arm_eabi="yes", - ac_cv_gcc_arm_eabi="no")]) - if test "$ac_cv_gcc_arm_eabi" = "yes"; then - HAVE_ARM_EABI=1 - ARM_ABI_PREFIX=eabi- - else - ARM_ABI_PREFIX=oabi- - fi - fi - - TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}" -fi - -dnl Check to see if we can resolve ambiguity with |using|. -AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity, - ac_cv_cpp_ambiguity_resolving_using, - [AC_TRY_COMPILE(class X { - public: int go(const X&) {return 3;} - int jo(const X&) {return 3;} - }; - class Y : public X { - public: int go(int) {return 2;} - int jo(int) {return 2;} - using X::jo; - private: using X::go; - };, - X x; Y y; y.jo(x);, - ac_cv_cpp_ambiguity_resolving_using=yes, - ac_cv_cpp_ambiguity_resolving_using=no)]) -if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then - AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING) -fi - -dnl See if a dynamic_cast to void* gives the most derived object. -AC_CACHE_CHECK(for C++ dynamic_cast to void*, - ac_cv_cpp_dynamic_cast_void_ptr, - [AC_TRY_RUN([class X { int i; public: virtual ~X() { } }; - class Y { int j; public: virtual ~Y() { } }; - class Z : public X, public Y { int k; }; - - int main() { - Z mdo; - X *subx = (X*)&mdo; - Y *suby = (Y*)&mdo; - return !((((void*)&mdo != (void*)subx) && - ((void*)&mdo == dynamic_cast(subx))) || - (((void*)&mdo != (void*)suby) && - ((void*)&mdo == dynamic_cast(suby)))); - }], - ac_cv_cpp_dynamic_cast_void_ptr=yes, - ac_cv_cpp_dynamic_cast_void_ptr=no, - ac_cv_cpp_dynamic_cast_void_ptr=no)]) -if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then - AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR) -fi - - -# try harder, when checking for __thread support, see bug 521750 comment #33 and below -# We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is -# enabled, the linker in xcode 4.1 will crash. Without this it would crash when -# linking XUL. -_SAVE_LDFLAGS=$LDFLAGS -LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS" -AC_CACHE_CHECK(for __thread keyword for TLS variables, - ac_cv_thread_keyword, - [AC_TRY_LINK([__thread bool tlsIsMainThread = false;], - [return tlsIsMainThread;], - ac_cv_thread_keyword=yes, - ac_cv_thread_keyword=no)]) -LDFLAGS=$_SAVE_LDFLAGS -if test "$ac_cv_thread_keyword" = yes; then - # mips builds fail with TLS variables because of a binutils bug. - # See bug 528687 - case "${target}" in - mips*-*) - : - ;; - *-android*|*-linuxandroid*) - : - ;; - *) - AC_DEFINE(HAVE_THREAD_TLS_KEYWORD) - ;; - esac -fi - -dnl See if compiler supports some gcc-style attributes - -AC_CACHE_CHECK(for __attribute__((always_inline)), - ac_cv_attribute_always_inline, - [AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));], - [], - ac_cv_attribute_always_inline=yes, - ac_cv_attribute_always_inline=no)]) - -dnl End of C++ language/feature checks -AC_LANG_C - -dnl ======================================================== -dnl = Internationalization checks -dnl ======================================================== +dnl Welcome to the new world of configure. We're working on moving to a +dnl python based configure. In the meanwhile, remains of the old autoconf +dnl based configure is in old-configure.in. +dnl If you need to add something, please come talk to the build system +dnl peers for now. dnl -dnl Internationalization and Locale support is different -dnl on various UNIX platforms. Checks for specific i18n -dnl features go here. - -dnl check for LC_MESSAGES -AC_CACHE_CHECK(for LC_MESSAGES, - ac_cv_i18n_lc_messages, - [AC_TRY_COMPILE([#include ], - [int category = LC_MESSAGES;], - ac_cv_i18n_lc_messages=yes, - ac_cv_i18n_lc_messages=no)]) -if test "$ac_cv_i18n_lc_messages" = yes; then - AC_DEFINE(HAVE_I18N_LC_MESSAGES) -fi - -AC_HAVE_FUNCS(localeconv) -fi # ! SKIP_COMPILER_CHECKS - -TARGET_XPCOM_ABI= -if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then - TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}" -fi - -dnl We can't run TRY_COMPILE tests on Windows, so hard-code some -dnl features that Windows actually does support. - -if test -n "$SKIP_COMPILER_CHECKS"; then - dnl Windows has malloc.h - AC_DEFINE(MALLOC_H, []) - AC_DEFINE(HAVE_FORCEINLINE) - AC_DEFINE(HAVE_LOCALECONV) -fi # SKIP_COMPILER_CHECKS - -dnl Mozilla specific options -dnl ======================================================== -dnl The macros used for command line options -dnl are defined in build/autoconf/altoptions.m4. - -dnl ======================================================== -dnl = Mozilla update channel, used for disabling features -dnl = not wanted for release. -dnl ======================================================== - -# app update channel is 'default' when not supplied. -MOZ_ARG_ENABLE_STRING([update-channel], -[ --enable-update-channel=CHANNEL - Select application update channel (default=default)], - MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`) - -if test -z "$MOZ_UPDATE_CHANNEL"; then - MOZ_UPDATE_CHANNEL=default -fi -AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL) -AC_SUBST(MOZ_UPDATE_CHANNEL) - - -dnl set GRE_MILESTONE -dnl ======================================================== -GRE_MILESTONE=`tail -n 1 "$_topsrcdir"/config/milestone.txt 2>/dev/null || tail -1 "$_topsrcdir"/config/milestone.txt` -AC_SUBST(GRE_MILESTONE) - -dnl set RELEASE_BUILD and NIGHTLY_BUILD variables depending on the cycle we're in -dnl The logic works like this: -dnl - if we have "a1" in GRE_MILESTONE, we're building Nightly (define NIGHTLY_BUILD) -dnl - otherwise, if we have "a" in GRE_MILESTONE, we're building Nightly or Aurora -dnl - otherwise, we're building Release/Beta (define RELEASE_BUILD) -case "$GRE_MILESTONE" in - *a1*) - NIGHTLY_BUILD=1 - AC_DEFINE(NIGHTLY_BUILD) - ;; - *a*) - ;; - *) - RELEASE_BUILD=1 - AC_DEFINE(RELEASE_BUILD) - ;; -esac -AC_SUBST(NIGHTLY_BUILD) -AC_SUBST(RELEASE_BUILD) - -dnl ======================================================== -dnl = -dnl = Check for external package dependencies -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(External Packages) - -MOZ_CONFIG_NSPR(js) - -dnl ======================================================== -dnl system zlib Support -dnl ======================================================== -dnl Standalone js defaults to system zlib -if test -n "$JS_STANDALONE"; then - ZLIB_DIR=yes -fi - -MOZ_ZLIB_CHECK([1.2.3]) - -if test -n "$ZLIB_IN_MOZGLUE"; then - AC_DEFINE(ZLIB_IN_MOZGLUE) -fi -AC_SUBST(ZLIB_IN_MOZGLUE) - -dnl ======================================================== -dnl system libffi Support -dnl ======================================================== -MOZ_CONFIG_FFI() - -dnl ======================================================== -dnl = -dnl = Application -dnl = -dnl ======================================================== - -MOZ_ARG_HEADER(Application) - -ENABLE_TESTS=1 - -USE_ARM_KUSER= - -case "${target}" in - arm*-android*|arm*-linuxandroid*) - USE_ARM_KUSER=1 - ;; -esac - -dnl ======================================================== -dnl Use ARM userspace kernel helpers; tell NSPR to enable -dnl their usage and use them in spidermonkey. -dnl ======================================================== -MOZ_ARG_WITH_BOOL(arm-kuser, -[ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)], - USE_ARM_KUSER=1,) -if test -n "$USE_ARM_KUSER"; then - AC_DEFINE(USE_ARM_KUSER) -fi - -dnl ======================================================== -dnl = -dnl = Components & Features -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Components and Features) - -dnl ======================================================== -dnl = Localization -dnl ======================================================== -MOZ_ARG_ENABLE_STRING(ui-locale, -[ --enable-ui-locale=ab-CD - Select the user interface locale (default: en-US)], - MOZ_UI_LOCALE=$enableval ) -AC_SUBST(MOZ_UI_LOCALE) - -dnl ======================================================== -dnl build the tests by default -dnl ======================================================== -MOZ_ARG_DISABLE_BOOL(tests, -[ --disable-tests Do not build test libraries & programs], - ENABLE_TESTS=, - ENABLE_TESTS=1 ) - -dnl ======================================================== -dnl = -dnl = Module specific options -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Individual module options) - -dnl ======================================================== -dnl = -dnl = Debugging Options -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Debugging and Optimizations) - -if test "$ENABLE_METHODJIT_SPEW"; then - AC_DEFINE(JS_METHODJIT_SPEW) -fi - -dnl ======================================================== -dnl = Enable code optimization. ON by default. -dnl ======================================================== -if test -z "$MOZ_OPTIMIZE_FLAGS"; then - MOZ_OPTIMIZE_FLAGS="-O" -fi - -MOZ_ARG_ENABLE_STRING(optimize, -[ --disable-optimize Disable compiler optimization - --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]], -[ if test "$enableval" != "no"; then - MOZ_OPTIMIZE=1 - if test -n "$enableval" -a "$enableval" != "yes"; then - MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'` - MOZ_OPTIMIZE=2 - fi -else - MOZ_OPTIMIZE= -fi ], MOZ_OPTIMIZE=1) - -MOZ_SET_FRAMEPTR_FLAGS - -if test "$COMPILE_ENVIRONMENT"; then -if test -n "$MOZ_OPTIMIZE"; then - AC_MSG_CHECKING([for valid optimization flags]) - _SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS" - AC_TRY_COMPILE([#include ], - [printf("Hello World\n");], - _results=yes, - _results=no) - AC_MSG_RESULT([$_results]) - if test "$_results" = "no"; then - AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS]) - fi - CFLAGS=$_SAVE_CFLAGS -fi -fi # COMPILE_ENVIRONMENT - -AC_SUBST(MOZ_OPTIMIZE) -AC_SUBST(MOZ_FRAMEPTR_FLAGS) -AC_SUBST(MOZ_OPTIMIZE_FLAGS) -AC_SUBST(MOZ_OPTIMIZE_LDFLAGS) -AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS) - -dnl ======================================================== -dnl = Disable trace logging -dnl ======================================================== -ENABLE_TRACE_LOGGING=1 -MOZ_ARG_DISABLE_BOOL(trace-logging, -[ --disable-trace-logging Disable trace logging], - ENABLE_TRACE_LOGGING= ) - -AC_SUBST(ENABLE_TRACE_LOGGING) - -if test -n "$ENABLE_TRACE_LOGGING"; then - AC_DEFINE(JS_TRACE_LOGGING) -fi - -dnl ======================================================== -dnl = Disable treating compiler warnings as errors -dnl ======================================================== -if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then - WARNINGS_AS_ERRORS='' -fi - -dnl ======================================================== -dnl = Enable jemalloc -dnl ======================================================== - -LOCAL_MOZ_MEMORY=1 -MOZ_ARG_DISABLE_BOOL(jemalloc, -[ --disable-jemalloc Don't replace memory allocator with jemalloc], - LOCAL_MOZ_MEMORY=) - -dnl Consult the command-line arguments in stand alone-builds only. In -dnl non-stand-alone builds, we always use the value of MOZ_MEMORY inherited from -dnl the top-level configure script. -if test "$JS_STANDALONE"; then - MOZ_MEMORY=$LOCAL_MOZ_MEMORY -fi - -case "${OS_TARGET}" in -Android|WINNT|Darwin) - MOZ_GLUE_IN_PROGRAM= - ;; -*) - dnl On !Android !Windows !OSX, we only want to link executables against mozglue - MOZ_GLUE_IN_PROGRAM=1 - AC_DEFINE(MOZ_GLUE_IN_PROGRAM) - ;; -esac - -if test "$MOZ_MEMORY"; then - AC_DEFINE(MOZ_MEMORY) - if test "x$MOZ_DEBUG" = "x1"; then - AC_DEFINE(MOZ_MEMORY_DEBUG) - fi - dnl The generic feature tests that determine how to compute ncpus are long and - dnl complicated. Therefore, simply define special cpp variables for the - dnl platforms we have special knowledge of. - case "${target}" in - *-darwin*) - AC_DEFINE(MOZ_MEMORY_DARWIN) - ;; - *-*freebsd*) - AC_DEFINE(MOZ_MEMORY_BSD) - ;; - *-android*|*-linuxandroid*) - AC_DEFINE(MOZ_MEMORY_LINUX) - AC_DEFINE(MOZ_MEMORY_ANDROID) - ;; - *-*linux*) - AC_DEFINE(MOZ_MEMORY_LINUX) - ;; - *-netbsd*) - AC_DEFINE(MOZ_MEMORY_BSD) - ;; - *-solaris*) - AC_DEFINE(MOZ_MEMORY_SOLARIS) - ;; - *-mingw*) - AC_DEFINE(MOZ_MEMORY_WINDOWS) - ;; - *) - AC_MSG_ERROR([--enable-jemalloc not supported on ${target}]) - ;; - esac -fi -AC_SUBST(MOZ_MEMORY) -AC_SUBST(MOZ_JEMALLOC4) -if test -n "$MOZ_JEMALLOC4"; then - AC_DEFINE(MOZ_JEMALLOC4) -fi -AC_SUBST(MOZ_CRT) -AC_SUBST(MOZ_GLUE_IN_PROGRAM) -AC_SUBST_LIST(MOZ_GLUE_WRAP_LDFLAGS) - -dnl ======================================================== -dnl = Use malloc wrapper lib -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(wrap-malloc, -[ --enable-wrap-malloc Wrap malloc calls (gnu linker only)], - _WRAP_MALLOC=1, - _WRAP_MALLOC= ) - -if test -n "$_WRAP_MALLOC"; then - if test "$GNU_CC"; then - WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=malloc,--wrap=calloc,--wrap=valloc,--wrap=free,--wrap=realloc,--wrap=memalign" - WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=__builtin_new,--wrap=__builtin_vec_new,--wrap=__builtin_delete,--wrap=__builtin_vec_delete" - WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=strdup,--wrap=strndup" - WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=posix_memalign,--wrap=malloc_usable_size" - dnl Wrap operator new and operator delete on Android. - if test "$OS_TARGET" = "Android"; then - WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_Znwj,--wrap=_Znaj,--wrap=_ZdlPv,--wrap=_ZdaPv" - fi - else - AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains]) - fi -fi - -dnl ======================================================== -dnl = Location of malloc wrapper lib -dnl ======================================================== -MOZ_ARG_WITH_STRING(wrap-malloc, -[ --with-wrap-malloc=DIR Location of malloc wrapper library], - WRAP_LDFLAGS="${WRAP_LDFLAGS} $withval") - -dnl ======================================================== -dnl = Use a smaller chunk size for GC chunks -dnl ======================================================== -dnl Use large (1MB) chunks by default. For B2G this option is used to give -dnl smaller (currently 256K) chunks. -MOZ_ARG_ENABLE_BOOL(small-chunk-size, -[ --enable-small-chunk-size Allocate memory for JS GC things in smaller chunks], - JS_GC_SMALL_CHUNK_SIZE=1, - JS_GC_SMALL_CHUNK_SIZE= ) -if test -n "$JS_GC_SMALL_CHUNK_SIZE"; then - AC_DEFINE(JS_GC_SMALL_CHUNK_SIZE) -fi - -dnl ======================================================== -dnl = Use GC tracing -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(gc-trace, -[ --enable-gc-trace Enable tracing of allocation and finalization], - JS_GC_TRACE=1, - JS_GC_TRACE= ) -if test -n "$JS_GC_TRACE"; then - AC_DEFINE(JS_GC_TRACE) -fi - -dnl ======================================================== -dnl = Use Valgrind -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(valgrind, -[ --enable-valgrind Enable Valgrind integration hooks (default=no)], - MOZ_VALGRIND=1, - MOZ_VALGRIND= ) -if test -n "$MOZ_VALGRIND"; then - MOZ_CHECK_HEADER([valgrind/valgrind.h], [], - AC_MSG_ERROR( - [--enable-valgrind specified but Valgrind is not installed])) - AC_DEFINE(MOZ_VALGRIND) - MOZ_VALGRIND=1 -fi -AC_SUBST(MOZ_VALGRIND) - -dnl ======================================================== -dnl = Use a JIT code simulator for a foreign architecture. -dnl ======================================================== -MOZ_ARG_ENABLE_STRING(simulator, -[ --enable-simulator=ARCH - Enable a JIT code simulator for the specified arch. - (arm, arm64, mips32, mips64).], - JS_SIMULATOR="$enableval") - -if test -n "$JS_SIMULATOR"; then - case "$JS_SIMULATOR" in - arm|arm64|mips32|mips64) ;; - no) - JS_SIMULATOR= - ;; - *) AC_MSG_ERROR([Invalid simulator. Valid simulators are: arm, arm64, mips32, mips64.]) ;; - esac -fi - -if test -z "$ENABLE_ION"; then - AC_DEFINE(JS_CODEGEN_NONE) - JS_CODEGEN_NONE=1 -elif test "$JS_SIMULATOR" = arm; then - if test "$CPU_ARCH" != "x86"; then - AC_MSG_ERROR([The ARM simulator only works on x86.]) - fi - AC_DEFINE(JS_SIMULATOR) - AC_DEFINE(JS_SIMULATOR_ARM) - AC_DEFINE(JS_DISASM_ARM) - AC_DEFINE(JS_CODEGEN_ARM) - JS_SIMULATOR_ARM=1 - JS_DISASM_ARM=1 - JS_CODEGEN_ARM=1 -elif test "$JS_SIMULATOR" = arm64; then - if test "$CPU_ARCH" != "x86_64"; then - AC_MSG_ERROR([The ARM64 simulator only works on x86_64.]) - fi - AC_DEFINE(JS_SIMULATOR) - AC_DEFINE(JS_SIMULATOR_ARM64) - AC_DEFINE(JS_CODEGEN_ARM64) - JS_SIMULATOR_ARM64=1 - JS_CODEGEN_ARM64=1 -elif test "$JS_SIMULATOR" = mips32; then - if test "$CPU_ARCH" != "x86"; then - AC_MSG_ERROR([The MIPS32 simulator only works on x86.]) - fi - AC_DEFINE(JS_SIMULATOR) - AC_DEFINE(JS_SIMULATOR_MIPS32) - AC_DEFINE(JS_CODEGEN_MIPS32) - JS_SIMULATOR_MIPS32=1 - JS_CODEGEN_MIPS32=1 -elif test "$JS_SIMULATOR" = mips64; then - if test "$CPU_ARCH" != "x86_64"; then - AC_MSG_ERROR([The MIPS64 simulator only works on x86_64.]) - fi - AC_DEFINE(JS_SIMULATOR) - AC_DEFINE(JS_SIMULATOR_MIPS64) - AC_DEFINE(JS_CODEGEN_MIPS64) - JS_SIMULATOR_MIPS64=1 - JS_CODEGEN_MIPS64=1 -elif test "$CPU_ARCH" = "x86"; then - AC_DEFINE(JS_CODEGEN_X86) - JS_CODEGEN_X86=1 -elif test "$CPU_ARCH" = "x86_64"; then - AC_DEFINE(JS_CODEGEN_X64) - JS_CODEGEN_X64=1 - - dnl Signal-handler OOM checking requires large mprotected guard regions, so - dnl currently it is only implemented on x64. - AC_DEFINE(ASMJS_MAY_USE_SIGNAL_HANDLERS_FOR_OOB) - ASMJS_MAY_USE_SIGNAL_HANDLERS_FOR_OOB=1 -elif test "$CPU_ARCH" = "arm"; then - AC_DEFINE(JS_CODEGEN_ARM) - JS_CODEGEN_ARM=1 - if test -n "$MOZ_DEBUG"; then - AC_DEFINE(JS_DISASM_ARM) - JS_DISASM_ARM=1 - fi -elif test "$CPU_ARCH" = "mips32"; then - AC_DEFINE(JS_CODEGEN_MIPS32) - JS_CODEGEN_MIPS32=1 -elif test "$CPU_ARCH" = "mips64"; then - AC_DEFINE(JS_CODEGEN_MIPS64) - JS_CODEGEN_MIPS64=1 -fi - -AC_SUBST(JS_SIMULATOR) -AC_SUBST(JS_SIMULATOR_ARM) -AC_SUBST(JS_SIMULATOR_ARM64) -AC_SUBST(JS_SIMULATOR_MIPS32) -AC_SUBST(JS_SIMULATOR_MIPS64) -AC_SUBST(JS_CODEGEN_ARM) -AC_SUBST(JS_CODEGEN_ARM64) -AC_SUBST(JS_CODEGEN_MIPS32) -AC_SUBST(JS_CODEGEN_MIPS64) -AC_SUBST(JS_CODEGEN_X86) -AC_SUBST(JS_CODEGEN_X64) -AC_SUBST(JS_CODEGEN_NONE) -AC_SUBST(JS_DISASM_ARM) -AC_SUBST(ASMJS_MAY_USE_SIGNAL_HANDLERS_FOR_OOB) - -dnl ======================================================== -dnl jprof -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(jprof, -[ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.], - MOZ_JPROF=1, - MOZ_JPROF= ) -if test -n "$MOZ_JPROF"; then - MOZ_PROFILING=1 - AC_DEFINE(MOZ_JPROF) -fi - -dnl ======================================================== -dnl instruments -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(instruments, -[ --enable-instruments Enable instruments remote profiling. Implies --enable-profiling.], - MOZ_INSTRUMENTS=1, - MOZ_INSTRUMENTS= ) -if test -n "$MOZ_INSTRUMENTS"; then - MOZ_PROFILING=1 - AC_DEFINE(MOZ_INSTRUMENTS) - LIBS="$LIBS -framework CoreFoundation" -fi - -dnl ======================================================== -dnl callgrind -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(callgrind, -[ --enable-callgrind Enable callgrind profiling. Implies --enable-profiling.], - MOZ_CALLGRIND=1, - MOZ_CALLGRIND= ) -if test -n "$MOZ_CALLGRIND"; then - MOZ_PROFILING=1 - AC_DEFINE(MOZ_CALLGRIND) -fi - -dnl ======================================================== -dnl vtune -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(vtune, -[ --enable-vtune Enable vtune profiling. Implies --enable-profiling.], - MOZ_VTUNE=1, - MOZ_VTUNE= ) - -dnl ======================================================== -dnl JitSpew. Enabled by default in debug builds. -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(jitspew, -[ --enable-jitspew Enable the Jit spew and IONFLAGS.], - JS_JITSPEW=1, - JS_JITSPEW= ) - -if test -n "$JS_JITSPEW" -o -n "$MOZ_DEBUG"; then - AC_DEFINE(JS_JITSPEW) -fi - -AC_SUBST(JS_JITSPEW) - -dnl ======================================================== -dnl Debug (see Bug 939505) -dnl ======================================================== -if test -n "$MOZ_DEBUG"; then - AC_DEFINE(JS_DEBUG) -fi - -dnl ======================================================== -dnl Profiling -dnl ======================================================== -if test -n "$MOZ_PROFILING"; then - AC_DEFINE(MOZ_PROFILING) - - case "$OS_TARGET" in - Linux) MOZ_VTUNE=1 ;; - WINNT) MOZ_VTUNE=1 ;; - esac -fi - -if test -n "$MOZ_VTUNE"; then - AC_DEFINE(MOZ_VTUNE) -fi - -dnl ======================================================== -dnl Zealous JavaScript GC -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(gczeal, -[ --enable-gczeal Enable zealous GCing], - JS_GC_ZEAL=1, - JS_GC_ZEAL= ) -if test -n "$JS_GC_ZEAL" -o -n "$MOZ_DEBUG"; then - AC_DEFINE(JS_GC_ZEAL) -fi - -dnl ======================================================== -dnl = Enable perf logging for ion. -dnl = Perf logging is OFF by default -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(perf, -[ --enable-perf Enable Linux perf integration], - JS_ION_PERF=1, - JS_ION_PERF= ) -if test -n "$JS_ION_PERF"; then - AC_DEFINE(JS_ION_PERF) -fi - -dnl ======================================================== -dnl Enable changes that make the shell more deterministic -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(more-deterministic, -[ --enable-more-deterministic - Enable changes that make the shell more deterministic], - JS_MORE_DETERMINISTIC=1, - JS_MORE_DETERMINISTIC= ) -if test -n "$JS_MORE_DETERMINISTIC"; then - AC_DEFINE(JS_MORE_DETERMINISTIC) -fi - -dnl ======================================================== -dnl Enable breakpoint for artificial OOMs -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(oom-breakpoint, -[ --enable-oom-breakpoint - Enable a breakpoint function for artificial OOMs], - JS_OOM_BREAKPOINT=1, - JS_OOM_BREAKPOINT= ) -if test -n "$JS_OOM_BREAKPOINT"; then - AC_DEFINE(JS_OOM_BREAKPOINT) -fi - -dnl ======================================================== -dnl = Enable using the clang plugin to build -dnl ======================================================== - -MOZ_CONFIG_CLANG_PLUGIN - -dnl ======================================================== -dnl = Enable static checking using sixgill -dnl ======================================================== - -MOZ_ARG_WITH_STRING(sixgill, -[ --with-sixgill=path/to/sixgill - Enable static checking of code using sixgill], - SIXGILL_PATH=$withval, - SIXGILL_PATH= ) - -if test -n "$SIXGILL_PATH"; then - if test ! -x "$SIXGILL_PATH/bin/xdbfind" || test ! -f "$SIXGILL_PATH/gcc/xgill.so" || test ! -x "$SIXGILL_PATH/scripts/wrap_gcc/g++"; then - AC_MSG_ERROR([The sixgill plugin and binaries are not at the specified path.]) - fi -fi -AC_SUBST(SIXGILL_PATH) - -dnl ======================================================== -dnl = Enable stripping of libs & executables -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(strip, -[ --enable-strip Enable stripping of libs & executables ], - ENABLE_STRIP=1, - ENABLE_STRIP= ) - -dnl ======================================================== -dnl = Enable stripping of libs & executables when packaging -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(install-strip, -[ --enable-install-strip Enable stripping of libs & executables when packaging ], - PKG_SKIP_STRIP= , - PKG_SKIP_STRIP=1) - -dnl ======================================================== -dnl = -dnl = Profiling and Instrumenting -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Profiling and Instrumenting) - -dnl ======================================================== -dnl = Support for demangling undefined symbols -dnl ======================================================== -if test -z "$SKIP_LIBRARY_CHECKS"; then - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=) - AC_LANG_RESTORE -fi - -# Demangle only for debug or DMD builds -MOZ_DEMANGLE_SYMBOLS= -if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$MOZ_DMD"; then - MOZ_DEMANGLE_SYMBOLS=1 - AC_DEFINE(MOZ_DEMANGLE_SYMBOLS) -fi -AC_SUBST(MOZ_DEMANGLE_SYMBOLS) - -dnl ======================================================== -dnl JIT observers -dnl ======================================================== - -MOZ_ARG_WITH_STRING(jitreport-granularity, -[ --jitreport-granularity=N - Default granularity at which to report JIT code - to external tools - 0 - no info - 1 - code ranges for whole functions only - 2 - per-line information - 3 - per-op information], - JITREPORT_GRANULARITY=$withval, - JITREPORT_GRANULARITY=3) - -AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY) - -dnl ======================================================== -dnl = -dnl = Misc. Options -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Misc. Options) - -dnl ======================================================== -dnl update xterm title -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(xterm-updates, -[ --enable-xterm-updates Update XTERM titles with current command.], - MOZ_UPDATE_XTERM=1, - MOZ_UPDATE_XTERM= ) - -if test -z "$SKIP_COMPILER_CHECKS"; then -dnl ======================================================== -dnl = -dnl = Compiler Options -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Compiler Options) - -dnl ======================================================== -dnl Check for gcc -pipe support -dnl ======================================================== -AC_MSG_CHECKING([for -pipe support]) -if test -n "$GNU_CC" -a -n "$GNU_CXX"; then - dnl Any gcc that supports firefox supports -pipe. - CFLAGS="$CFLAGS -pipe" - CXXFLAGS="$CXXFLAGS -pipe" - AC_MSG_RESULT([yes]) -else - AC_MSG_RESULT([no]) -fi - -dnl ======================================================== -dnl Profile guided optimization (gcc checks) -dnl ======================================================== -dnl Test for profiling options -dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use - -_SAVE_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction" - -AC_MSG_CHECKING([whether C compiler supports -fprofile-generate]) -AC_TRY_COMPILE([], [return 0;], - [ PROFILE_GEN_CFLAGS="-fprofile-generate" - result="yes" ], result="no") -AC_MSG_RESULT([$result]) - -if test $result = "yes"; then - PROFILE_GEN_LDFLAGS="-fprofile-generate" - PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch" - PROFILE_USE_LDFLAGS="-fprofile-use" -fi - -CFLAGS="$_SAVE_CFLAGS" - -if test -n "$INTEL_CC"; then - PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ." - PROFILE_GEN_LDFLAGS= - PROFILE_USE_CFLAGS="-prof-use -prof-dir ." - PROFILE_USE_LDFLAGS= -fi - -dnl Sun Studio on Solaris -if test "$SOLARIS_SUNPRO_CC"; then - PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application" - PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application" - PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application" - PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application" -fi - -AC_SUBST(PROFILE_GEN_CFLAGS) -AC_SUBST(PROFILE_GEN_LDFLAGS) -AC_SUBST(PROFILE_USE_CFLAGS) -AC_SUBST(PROFILE_USE_LDFLAGS) - -AC_LANG_CPLUSPLUS - -dnl ======================================================== -dnl Check for tm_zone, tm_gmtoff in struct tm -dnl ======================================================== -AC_CACHE_CHECK(for tm_zone tm_gmtoff in struct tm, - ac_cv_struct_tm_zone_tm_gmtoff, - [AC_TRY_COMPILE([#include ], - [struct tm tm; tm.tm_zone = 0; tm.tm_gmtoff = 1;], - [ac_cv_struct_tm_zone_tm_gmtoff="yes"], - [ac_cv_struct_tm_zone_tm_gmtoff="no"])]) -if test "$ac_cv_struct_tm_zone_tm_gmtoff" = "yes" ; then - AC_DEFINE(HAVE_TM_ZONE_TM_GMTOFF) -fi -fi # ! SKIP_COMPILER_CHECKS - -AC_DEFINE(CPP_THROW_NEW, [throw()]) -AC_LANG_C - -MOZ_EXPAND_LIBS - -dnl ======================================================== -dnl = -dnl = Build depencency options -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Build dependencies) - -if test "$GNU_CC" -a "$GNU_CXX"; then - _DEPEND_CFLAGS='-MD -MP -MF $(MDDEPDIR)/$(@F).pp' -dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk -elif test "$SOLARIS_SUNPRO_CC"; then - _DEPEND_CFLAGS= -else - dnl Don't override this for MSVC - if test -z "$_WIN32_MSVC"; then - _USE_CPP_INCLUDE_FLAG= - _DEFINES_CFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT' - _DEFINES_CXXFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT' - else - echo '#include ' > dummy-hello.c - changequote(,) - dnl This output is localized, split at the first double space or colon and space. - _CL_PREFIX_REGEX="^\([^:]*:.*[ :] \)\(.*\\\stdio.h\)$" - CL_INCLUDES_PREFIX=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\1/p'` - _CL_STDIO_PATH=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\2/p'` - changequote([,]) - if ! test -e "$_CL_STDIO_PATH"; then - AC_MSG_ERROR([Unable to parse cl -showIncludes prefix. This compiler's locale has an unsupported formatting.]) - fi - if test -z "$CL_INCLUDES_PREFIX"; then - AC_MSG_ERROR([Cannot find cl -showIncludes prefix.]) - fi - AC_SUBST(CL_INCLUDES_PREFIX) - rm -f dummy-hello.c - - dnl Make sure that the build system can handle non-ASCII characters - dnl in environment variables to prevent it from breaking silently on - dnl non-English systems. - NONASCII=$'\241\241' - AC_SUBST(NONASCII) - fi -fi - -dnl ======================================================== -dnl = Disable -fstrict-aliasing with GCC 4.4 and earlier. -dnl = See bugs 821502 and 832623. -dnl ======================================================== -if test -n "$GNU_CC" -a -z "$CLANG_CC"; then - dnl GCC 3.x isn't supported, so we don't need to check for that. - if test "$GCC_MAJOR_VERSION" -eq "4" -a "$GCC_MINOR_VERSION" -lt "5" ; then - CFLAGS="$CFLAGS -fno-strict-aliasing" - CXXFLAGS="$CXXFLAGS -fno-strict-aliasing" - fi -fi - -dnl ======================================================== -dnl = Link js shell to system readline -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(readline, -[ --enable-readline Link js shell to system readline library], - JS_WANT_READLINE=1, - JS_WANT_READLINE= ) - -JS_BUNDLED_EDITLINE= -EDITLINE_LIBS= -JS_DISABLE_SHELL= - -case "$target" in -*-mingw*) - NO_EDITLINE=1 - ;; -*) - ;; -esac - -if test -z "$SKIP_LIBRARY_CHECKS" -a -z "$NO_EDITLINE"; then - if test -n "$JS_WANT_READLINE"; then - AC_CHECK_LIB(readline, readline, - EDITLINE_LIBS="-lreadline", - AC_MSG_ERROR([No system readline library found.])) - else - dnl By default, we use editline - JS_BUNDLED_EDITLINE=1 - fi - - dnl Either way, we want to build with line editing support. - AC_DEFINE(EDITLINE) -fi -AC_SUBST(JS_BUNDLED_EDITLINE) -AC_SUBST(JS_DISABLE_SHELL) -AC_SUBST_LIST(EDITLINE_LIBS) - -dnl ======================================================== -dnl = -dnl = Standalone module options -dnl = -dnl ======================================================== -MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla)) - -dnl ======================================================== -dnl = Build jsctypes if it's enabled -dnl ======================================================== -MOZ_ARG_ENABLE_BOOL(ctypes, -[ --enable-ctypes Enable js-ctypes (default=no)], - BUILD_CTYPES=1, - BUILD_CTYPES= ) -JS_HAS_CTYPES=$BUILD_CTYPES -AC_SUBST(JS_HAS_CTYPES) -AC_SUBST(BUILD_CTYPES) -if test "$JS_HAS_CTYPES"; then - dnl Error out if we're on MSVC and MASM is unavailable. - if test -n "$_MSC_VER" -a \( "$AS" != "ml.exe" -a "$AS" != "ml64.exe" \); then - AC_MSG_ERROR([\"$AS\" is not a suitable assembler to build js-ctypes. If you are building with MS Visual Studio 8 Express, you may download the MASM 8.0 package, upgrade to Visual Studio 9 Express, or install the Vista SDK. Or do not use --enable-ctypes.]) - fi - AC_DEFINE(JS_HAS_CTYPES) -fi - -if test "$MOZ_DEBUG" -o "$MOZ_DMD"; then - MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS= -fi - -dnl ======================================================== -dnl = -dnl = Options for generating the shell as a script -dnl = -dnl ======================================================== - -MOZ_ARG_WITH_STRING(qemu-exe, -[ --with-qemu-exe=path Use path as an arm emulator on host platforms], - QEMU_EXE=$withval) -AC_SUBST(QEMU_EXE) -MOZ_ARG_WITH_STRING(cross-lib, -[ --with-cross-lib=dir Use dir as the location for arm libraries], - CROSS_LIB=$withval, - CROSS_LIB=/usr/$target) -AC_SUBST(CROSS_LIB) -dnl ======================================================== -dnl = -dnl = Maintainer debug option (no --enable equivalent) -dnl = -dnl ======================================================== - -AC_SUBST(AR) -AC_SUBST(AR_FLAGS) -AC_SUBST(AR_LIST) -AC_SUBST(AR_EXTRACT) -AC_SUBST(AR_DELETE) -AC_SUBST(AS) -AC_SUBST(ASFLAGS) -AC_SUBST(AS_DASH_C_FLAG) -AC_SUBST(LD) -AC_SUBST(RC) -AC_SUBST(RCFLAGS) -AC_SUBST(MC) -AC_SUBST(WINDRES) -AC_SUBST(IMPLIB) -AC_SUBST(FILTER) -AC_SUBST(BIN_FLAGS) -AC_SUBST(MOZ_DEBUG) -AC_SUBST(MOZ_DEBUG_SYMBOLS) -AC_SUBST(MOZ_DEBUG_LDFLAGS) -AC_SUBST(WARNINGS_AS_ERRORS) -AC_SUBST(MOZ_JPROF) -AC_SUBST(MOZ_INSTRUMENTS) -AC_SUBST(MOZ_CALLGRIND) -AC_SUBST(MOZ_VTUNE) -AC_SUBST(MOZ_PROFILING) -AC_SUBST(LIBICONV) - -AC_SUBST(ENABLE_TESTS) - -AC_SUBST(ENABLE_STRIP) -AC_SUBST(PKG_SKIP_STRIP) -AC_SUBST(INCREMENTAL_LINKER) -AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS) - -AC_SUBST(MOZ_FIX_LINK_PATHS) - -AC_SUBST(USE_DEPENDENT_LIBS) - -AC_SUBST(MOZ_BUILD_ROOT) - -AC_SUBST(MOZ_POST_PROGRAM_COMMAND) - -AC_SUBST(MOZ_APP_NAME) -AC_SUBST(MOZ_APP_DISPLAYNAME) -AC_SUBST(MOZ_APP_VERSION) - -AC_SUBST(MOZ_PKG_SPECIAL) - -AC_SUBST(MOZILLA_OFFICIAL) - -dnl Echo the CFLAGS to remove extra whitespace. -CFLAGS=`echo \ - $_WARNINGS_CFLAGS \ - $CFLAGS` - -CXXFLAGS=`echo \ - $_WARNINGS_CXXFLAGS \ - $CXXFLAGS` - -COMPILE_CFLAGS=`echo \ - $_DEFINES_CFLAGS \ - $COMPILE_CFLAGS` - -COMPILE_CXXFLAGS=`echo \ - $_DEFINES_CXXFLAGS \ - $COMPILE_CXXFLAGS` - -HOST_CFLAGS=`echo \ - $HOST_CFLAGS` - -HOST_CXXFLAGS=`echo \ - $HOST_CXXFLAGS` - -AC_SUBST(_DEPEND_CFLAGS) -AC_SUBST(MOZ_NATIVE_NSPR) - -if test -n "$MOZ_NUWA_PROCESS"; then - AC_DEFINE(MOZ_NUWA_PROCESS) -fi - -OS_CFLAGS="$CFLAGS" -OS_CXXFLAGS="$CXXFLAGS" -OS_CPPFLAGS="$CPPFLAGS" -OS_COMPILE_CFLAGS="$COMPILE_CFLAGS" -OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS" -OS_LDFLAGS="$LDFLAGS" -OS_LIBS="$LIBS" -AC_SUBST(OS_CFLAGS) -AC_SUBST(OS_CXXFLAGS) -AC_SUBST(OS_CPPFLAGS) -AC_SUBST(OS_COMPILE_CFLAGS) -AC_SUBST(OS_COMPILE_CXXFLAGS) -AC_SUBST(OS_LDFLAGS) -AC_SUBST(OS_LIBS) -AC_SUBST(CROSS_COMPILE) - -AC_SUBST(HOST_CC) -AC_SUBST(HOST_CXX) -AC_SUBST(HOST_CFLAGS) -AC_SUBST(HOST_CXXFLAGS) -AC_SUBST(HOST_LDFLAGS) -AC_SUBST(HOST_OPTIMIZE_FLAGS) -AC_SUBST(HOST_AR) -AC_SUBST(HOST_AR_FLAGS) -AC_SUBST(HOST_LD) -AC_SUBST(HOST_RANLIB) -AC_SUBST(HOST_BIN_SUFFIX) -AC_SUBST(HOST_OS_ARCH) - -AC_SUBST(TARGET_CPU) -AC_SUBST(TARGET_VENDOR) -AC_SUBST(TARGET_OS) -AC_SUBST(TARGET_XPCOM_ABI) -AC_SUBST(OS_TARGET) -AC_SUBST(OS_ARCH) -AC_SUBST(OS_RELEASE) -AC_SUBST(OS_TEST) -AC_SUBST(CPU_ARCH) -AC_SUBST(INTEL_ARCHITECTURE) - -AC_SUBST(WRAP_LDFLAGS) -AC_SUBST(MKSHLIB) -AC_SUBST(MKCSHLIB) -AC_SUBST(DSO_CFLAGS) -AC_SUBST(DSO_PIC_CFLAGS) -AC_SUBST(DSO_LDOPTS) -AC_SUBST(LIB_PREFIX) -AC_SUBST(DLL_PREFIX) -AC_SUBST(DLL_SUFFIX) -AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX") -AC_SUBST(LIB_SUFFIX) -AC_SUBST(OBJ_SUFFIX) -AC_SUBST(BIN_SUFFIX) -AC_SUBST(ASM_SUFFIX) -AC_SUBST(IMPORT_LIB_SUFFIX) -AC_SUBST(USE_N32) -AC_SUBST(CC_VERSION) -AC_SUBST(CXX_VERSION) -AC_SUBST(MSMANIFEST_TOOL) -AC_SUBST(MOZ_LINKER) -AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS) -AC_SUBST(WIN32_GUI_EXE_LDFLAGS) - -AC_CHECK_FUNCS(posix_fadvise posix_fallocate) - -dnl Set various defines and substitutions -dnl ======================================================== - -if test "$OS_ARCH" = "Darwin"; then - if test -n "$MOZ_IOS"; then - AC_DEFINE(XP_IOS) - else - AC_DEFINE(XP_MACOSX) - fi - AC_DEFINE(XP_DARWIN) - AC_DEFINE(XP_UNIX) -elif test "$OS_ARCH" != "WINNT"; then - AC_DEFINE(XP_UNIX) -fi - -if test "$MOZ_DEBUG"; then - AC_DEFINE(MOZ_REFLOW_PERF) - AC_DEFINE(MOZ_REFLOW_PERF_DSP) -fi - -if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then - AC_DEFINE(MOZ_ACCESSIBILITY_ATK) - ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk` - ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'` - ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'` - ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'` - AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION) - AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION) - AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION) -fi - -dnl ======================================================== -dnl Determine options to use for running the preprocessor. -dnl ======================================================== - -if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT"; then - PREPROCESS_OPTION="-P -Fi" -else - PREPROCESS_OPTION="-E -o " -fi - -AC_SUBST(PREPROCESS_OPTION) - -dnl ======================================================== -dnl ECMAScript Internationalization API Support (uses ICU) -dnl ======================================================== - -dnl top-level configure may override this with --without-intl-api -_INTL_API=yes - -MOZ_CONFIG_ICU() - -MOZ_SUBCONFIGURE_ICU() - -dnl ======================================================== -dnl JavaScript shell -dnl ======================================================== - -MOZ_CHECK_ALLOCATOR - -AC_CHECK_FUNCS(setlocale localeconv) - -AC_SUBST(MOZILLA_VERSION) - -AC_SUBST(ac_configure_args) - -AC_SUBST(TOOLCHAIN_PREFIX) - -if test -n "$JS_STANDALONE"; then -MOZ_APP_NAME="mozjs" -MOZ_APP_VERSION="$MOZILLA_SYMBOLVERSION" -JS_LIBRARY_NAME="mozjs-$MOZILLA_SYMBOLVERSION" -else -JS_LIBRARY_NAME="mozjs" -fi -JS_CONFIG_LIBS="$NSPR_LIBS $LIBS" -if test -n "$GNU_CC"; then -JS_CONFIG_MOZ_JS_LIBS='-L${libdir} -l${JS_LIBRARY_NAME}' -else -JS_CONFIG_MOZ_JS_LIBS='${libdir}/${JS_LIBRARY_NAME}.lib' -fi -AC_SUBST(JS_LIBRARY_NAME) -AC_SUBST(JS_CONFIG_MOZ_JS_LIBS) -AC_SUBST(JS_CONFIG_LIBS) - -MOZ_SUBCONFIGURE_FFI() -MOZ_SUBCONFIGURE_JEMALLOC() - -# Avoid using obsolete NSPR features -AC_DEFINE(NO_NSPR_10_SUPPORT) - -dnl Spit out some output -dnl ======================================================== -MOZ_CREATE_CONFIG_STATUS() - -if test "$JS_STANDALONE"; then - MOZ_RUN_CONFIG_STATUS() -fi +dnl Because adding a configure file in the tree is going to conflict with +dnl existing configure files in people's (and automation) work trees, and +dnl because some automation jobs are still running autoconf and configure +dnl "manually", this file is actually an m4 file that is processed by +dnl autoconf, but doesn't call any autoconf macros. The `divert` line +dnl below ensures the script that follows is output by autoconf. +divert(0)dnl +#!/bin/sh + +SRCDIR=$(dirname $0) +TOPSRCDIR="$SRCDIR"/../.. +export OLD_CONFIGURE="$SRCDIR"/old-configure + +which python2.7 > /dev/null && exec python2.7 "$TOPSRCDIR/configure.py" "$@" || exec python "$TOPSRCDIR/configure.py" "$@" diff --git a/js/src/old-configure.in b/js/src/old-configure.in new file mode 100644 index 000000000000..fa85cf44588a --- /dev/null +++ b/js/src/old-configure.in @@ -0,0 +1,3672 @@ +dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*- +dnl vi: set tabstop=4 shiftwidth=4 expandtab syntax=m4: +dnl This Source Code Form is subject to the terms of the Mozilla Public +dnl License, v. 2.0. If a copy of the MPL was not distributed with this +dnl file, You can obtain one at http://mozilla.org/MPL/2.0/. + +dnl Process this file with autoconf to produce a configure script. +dnl ======================================================== + +AC_PREREQ(2.13) +AC_INIT(js/src/jsapi.h) +AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf) +AC_CANONICAL_SYSTEM +TARGET_CPU="${target_cpu}" +TARGET_VENDOR="${target_vendor}" +TARGET_OS="${target_os}" + +dnl ======================================================== +dnl = +dnl = Don't change the following two lines. Doing so breaks: +dnl = +dnl = CFLAGS="-foo" ./configure +dnl = +dnl ======================================================== +CFLAGS="${CFLAGS=}" +CPPFLAGS="${CPPFLAGS=}" +CXXFLAGS="${CXXFLAGS=}" +LDFLAGS="${LDFLAGS=}" +HOST_CFLAGS="${HOST_CFLAGS=}" +HOST_CXXFLAGS="${HOST_CXXFLAGS=}" +HOST_LDFLAGS="${HOST_LDFLAGS=}" + +dnl ======================================================== +dnl = Preserve certain environment flags passed to configure +dnl = We want sub projects to receive the same flags +dnl = untainted by this configure script +dnl ======================================================== +_SUBDIR_CC="$CC" +_SUBDIR_CXX="$CXX" +_SUBDIR_CFLAGS="$CFLAGS" +_SUBDIR_CPPFLAGS="$CPPFLAGS" +_SUBDIR_CXXFLAGS="$CXXFLAGS" +_SUBDIR_LDFLAGS="$LDFLAGS" +_SUBDIR_HOST_CC="$HOST_CC" +_SUBDIR_HOST_CFLAGS="$HOST_CFLAGS" +_SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS" +_SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS" +_SUBDIR_CONFIG_ARGS="$ac_configure_args" + +dnl Set the version number of the libs included with mozilla +dnl ======================================================== +NSPR_VERSION=4 +NSPR_MINVER=4.9.2 + +dnl Set the minimum version of toolkit libs used by mozilla +dnl ======================================================== +PERL_VERSION=5.006 +WINDRES_VERSION=2.14.90 +W32API_VERSION=3.14 + +MSMANIFEST_TOOL= + +dnl Set various checks +dnl ======================================================== +MISSING_X= +AC_PROG_AWK + +dnl Initialize the Pthread test variables early so they can be +dnl overridden by each platform. +dnl ======================================================== +USE_PTHREADS= +_PTHREAD_LDFLAGS="" + +dnl Do not allow objdir == srcdir builds +dnl ============================================================== +_topsrcdir=`cd $srcdir; pwd -W 2>/dev/null || pwd -P` +_objdir=`pwd -P` + +if test "$_topsrcdir" = "$_objdir" +then + echo " ***" + echo " * Building directly in the main source directory is not allowed." + echo " *" + echo " * To build, you must run configure from a separate directory" + echo " * (referred to as an object directory)." + echo " ***" + exit 1 +fi + +# Check for a couple representative files in the source tree +_conflict_files= +for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do + if test -f $file; then + _conflict_files="$_conflict_files $file" + fi +done +if test "$_conflict_files"; then + echo "***" + echo "* Your source tree contains these files:" + for file in $_conflict_files; do + echo "* $file" + done + cat 1>&2 <<-EOF + * This indicates that you previously built in the source tree. + * A source tree build can confuse the separate objdir build. + * + * To clean up the source tree: + * 1. cd $_topsrcdir + * 2. gmake distclean + *** + EOF + exit 1 + break +fi +MOZ_BUILD_ROOT=`pwd -W 2>/dev/null || pwd -P` + +MOZ_BUILD_BACKEND(../..) + +MOZ_DEFAULT_COMPILER + +COMPILE_ENVIRONMENT=1 +MOZ_ARG_DISABLE_BOOL(compile-environment, +[ --disable-compile-environment + Disable compiler/library checks.], + COMPILE_ENVIRONMENT= ) +AC_SUBST(COMPILE_ENVIRONMENT) + +dnl Check for Perl first -- needed for win32 SDK checks +MOZ_PATH_PROGS(PERL, $PERL perl5 perl ) +if test -z "$PERL" -o "$PERL" = ":"; then + AC_MSG_ERROR([perl not found in \$PATH]) +fi + +MOZ_ARG_ENABLE_BOOL(shared-js, +[ --disable-shared-js + Do not create a shared library.], + DISABLE_SHARED_JS=0, + DISABLE_SHARED_JS=1) + +MOZ_ARG_DISABLE_BOOL(export-js, +[ --disable-export-js + Do not mark JS symbols as DLL exported/visible.], + DISABLE_EXPORT_JS=1, + DISABLE_EXPORT_JS=) + +if test "$DISABLE_SHARED_JS" = "1" ; then + if test "$DISABLE_EXPORT_JS" = "1"; then + AC_DEFINE(STATIC_JS_API) + else + AC_DEFINE(STATIC_EXPORTABLE_JS_API) + fi +else + if test "$DISABLE_EXPORT_JS" = "1"; then + AC_MSG_ERROR([Must export JS symbols when building a shared library.]) + fi + JS_SHARED_LIBRARY=1 +fi +AC_SUBST(JS_SHARED_LIBRARY) + +if test "$JS_STANDALONE" = no; then + autoconfmk=autoconf-js.mk + JS_STANDALONE= + #DIST is exported from top-level configure +else + JS_STANDALONE=1 + AC_DEFINE(JS_STANDALONE) + DIST="$MOZ_BUILD_ROOT/dist" +fi +AC_SUBST(JS_STANDALONE) +BUILDING_JS=1 +AC_SUBST(autoconfmk) + +MOZ_ARG_WITH_STRING(gonk, +[ --with-gonk=DIR + location of gonk dir], + gonkdir=$withval) + +MOZ_ARG_WITH_STRING(gonk-toolchain-prefix, +[ --with-gonk-toolchain-prefix=DIR + prefix to gonk toolchain commands], + gonk_toolchain_prefix=$withval) + +if test -n "$gonkdir" ; then + kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"` + dnl Default to ICS + ANDROID_VERSION=15 + if test -n "${PLATFORM_SDK_VERSION}"; then + ANDROID_VERSION="${PLATFORM_SDK_VERSION}" + fi + + dnl set up compilers + AS="$gonk_toolchain_prefix"as + CC="$gonk_toolchain_prefix"gcc + CXX="$gonk_toolchain_prefix"g++ + CPP="$gonk_toolchain_prefix"cpp + LD="$gonk_toolchain_prefix"ld + AR="$gonk_toolchain_prefix"ar + RANLIB="$gonk_toolchain_prefix"ranlib + STRIP="$gonk_toolchain_prefix"strip + OBJCOPY="$gonk_toolchain_prefix"objcopy + + STLPORT_CPPFLAGS="-I$_topsrcdir/build/stlport/stlport -I$gonkdir/ndk/sources/cxx-stl/system/include" + STLPORT_LIBS="-lstlport" + + CPPFLAGS="-DANDROID $TARGET_C_INCLUDES -I$gonkdir/frameworks/base/native/include -I$gonkdir/system/core/include -isystem $gonkdir/bionic $CPPFLAGS -I$gonkdir/external/valgrind/fxos-include" + CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS" + CXXFLAGS="-mandroid -fno-short-enums -fno-exceptions -Wno-psabi $CXXFLAGS $STLPORT_CPPFLAGS" + LIBS="$LIBS $STLPORT_LIBS" + + dnl Add -llog by default, since we use it all over the place. + 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/ -llog $LDFLAGS" + + dnl prevent cross compile section from using these flags as host flags + if test -z "$HOST_CPPFLAGS" ; then + HOST_CPPFLAGS=" " + fi + if test -z "$HOST_CFLAGS" ; then + HOST_CFLAGS=" " + fi + if test -z "$HOST_CXXFLAGS" ; then + HOST_CXXFLAGS=" " + fi + if test -z "$HOST_LDFLAGS" ; then + HOST_LDFLAGS=" " + fi + + AC_DEFINE(ANDROID) + AC_DEFINE(GONK) +else + MOZ_ANDROID_NDK +fi + +case "$target" in +*-apple-darwin*) + MOZ_IOS_SDK + ;; +esac + +dnl ======================================================== +dnl Checks for compilers. +dnl ======================================================== + +dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269) +AR_FLAGS='crs $@' + +if test "$COMPILE_ENVIRONMENT"; then + +# Note: +# In Mozilla, we use the names $target, $host and $build incorrectly, but are +# too far gone to back out now. See Bug 475488: +# - When we say $target, we mean $host, that is, the system on which +# Mozilla will be run. +# - When we say $host, we mean $build, that is, the system on which Mozilla +# is built. +# - $target (in its correct usage) is for compilers who generate code for a +# different platform than $host, so it would not be used by Mozilla. +if test "$target" != "$host"; then + MOZ_CROSS_COMPILER +else + AC_PROG_CC + AC_PROG_CXX + AC_PROG_RANLIB + MOZ_PATH_PROGS(AS, $AS as, $CC) + AC_CHECK_PROGS(AR, ar, :) + AC_CHECK_PROGS(LD, ld, :) + AC_CHECK_PROGS(STRIP, strip, :) + AC_CHECK_PROGS(WINDRES, windres, :) + if test -z "$HOST_CC"; then + HOST_CC='$(CC)' + fi + if test -z "$HOST_CFLAGS"; then + HOST_CFLAGS='$(CFLAGS)' + fi + if test -z "$HOST_CXX"; then + HOST_CXX='$(CXX)' + fi + if test -z "$HOST_CXXFLAGS"; then + HOST_CXXFLAGS='$(CXXFLAGS)' + fi + if test -z "$HOST_LDFLAGS"; then + HOST_LDFLAGS='$(LDFLAGS)' + fi + if test -z "$HOST_RANLIB"; then + HOST_RANLIB='$(RANLIB)' + fi + if test -z "$HOST_AR"; then + HOST_AR='$(AR)' + fi + if test -z "$HOST_AR_FLAGS"; then + HOST_AR_FLAGS='$(AR_FLAGS)' + fi +fi + +MOZ_TOOL_VARIABLES + +MOZ_CHECK_COMPILER_WRAPPER + +AC_PROG_CPP +AC_PROG_CXXCPP +MOZ_RUST_SUPPORT + +dnl Special win32 checks +dnl ======================================================== + +# Target the Windows 8.1 SDK by default +WINSDK_TARGETVER=603 +WINVER=502 + +MOZ_ARG_WITH_STRING(windows-version, +[ --with-windows-version=WINSDK_TARGETVER + Windows SDK version to target. Win8.1 (603) is + currently the minimum supported version.], + WINSDK_TARGETVER=$withval) + +# Currently only version 603 is allowed +case "$WINSDK_TARGETVER" in +603) + MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000 + ;; + +*) + AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER)]); + ;; +esac + +case "$target" in +*-mingw*) + if test "$GCC" != "yes"; then + # Check to see if we are really running in a msvc environemnt + _WIN32_MSVC=1 + + # Make sure compilers are valid + CFLAGS="$CFLAGS -TC -nologo" + CXXFLAGS="$CXXFLAGS -TP -nologo" + # MSVC warning C4345 warns of newly conformant behavior as of VS2003. + # MSVC warning C4351 warns of newly conformant behavior as of VS2005. + # MSVC warning C4800 warns when a value is implicitly cast to bool, + # because this also forces narrowing to a single byte, which can be a + # perf hit. But this matters so little in practice (and often we want + # that behavior) that it's better to turn it off. + # _CRT_SECURE_NO_WARNINGS disables warnings about using MSVC-specific + # secure CRT functions. + # MSVC warning C4819 warns some UTF-8 characters (e.g. copyright sign) + # on non-Western system locales even if it is in a comment. + CFLAGS="$CFLAGS -wd4819" + CXXFLAGS="$CXXFLAGS -wd4345 -wd4351 -wd4800 -wd4819 -D_CRT_SECURE_NO_WARNINGS" + AC_LANG_SAVE + AC_LANG_C + AC_TRY_COMPILE([#include ], + [ printf("Hello World\n"); ],, + AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) ) + + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([#include ], + [ unsigned *test = new unsigned(42); ],, + AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) ) + AC_LANG_RESTORE + + changequote(,) + _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p' + changequote([,]) + + # Determine compiler version + _CC_MAJOR_VERSION=`echo ${CC_VERSION} | cut -c 1-2` + _CC_MINOR_VERSION=`echo ${CC_VERSION} | cut -c 3-4` + _MSC_VER=${CC_VERSION} + + _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | cut -c 1-2` + + if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then + AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.]) + fi + + AC_DEFINE(_CRT_SECURE_NO_WARNINGS) + AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS) + AC_DEFINE(_USE_MATH_DEFINES) # Otherwise MSVC's math.h doesn't #define M_PI. + + if test "$_CC_MAJOR_VERSION" = "18"; then + _CC_SUITE=12 + MSVC_C_RUNTIME_DLL=msvcr120.dll + MSVC_CXX_RUNTIME_DLL=msvcp120.dll + elif test "$_CC_MAJOR_VERSION" = "19"; then + _CC_SUITE=14 + MSVC_C_RUNTIME_DLL=vcruntime140.dll + MSVC_CXX_RUNTIME_DLL=msvcp140.dll + + # -Wv:18 disables all warnings introduced after VS2013 + # See http://blogs.msdn.com/b/vcblog/archive/2014/11/12/improvements-to-warnings-in-the-c-compiler.aspx + CFLAGS="$CFLAGS -Wv:18" + CXXFLAGS="$CXXFLAGS -Wv:18" + + # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146) + CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-" + + # Disable C++11 thread-safe statics due to crashes on XP (bug 1204752) + # See https://connect.microsoft.com/VisualStudio/feedback/details/1789709/visual-c-2015-runtime-broken-on-windows-server-2003-c-11-magic-statics + CXXFLAGS="$CXXFLAGS -Zc:threadSafeInit-" + else + AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.]) + fi + AC_SUBST(MSVC_C_RUNTIME_DLL) + AC_SUBST(MSVC_CXX_RUNTIME_DLL) + + dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool', + dnl not something else like "magnetic tape manipulation utility". + MSMT_TOOL=`${MT-mt} 2>&1|grep 'Microsoft (R) Manifest Tool'` + if test -z "$MSMT_TOOL"; then + AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.]) + fi + + changequote(,) + _MSMT_VER_FILTER='s|.*[^!-~]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p' + changequote([,]) + MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"` + if test -z "$MSMANIFEST_TOOL_VERSION"; then + AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.]) + fi + + MSMANIFEST_TOOL=1 + unset MSMT_TOOL + + # Check linker version + _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"` + _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'` + if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then + AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.]) + fi + + INCREMENTAL_LINKER=1 + + unset _MSVC_VER_FILTER + + CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0" + CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0" + else + # Check w32api version + _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'` + _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'` + AC_MSG_CHECKING([for w32api version >= $W32API_VERSION]) + AC_TRY_COMPILE([#include ], + #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \ + (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \ + __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION) + #error "test failed." + #endif + , [ res=yes ], [ res=no ]) + AC_MSG_RESULT([$res]) + if test "$res" != "yes"; then + AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.]) + fi + # Check windres version + AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION]) + _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'` + AC_MSG_RESULT([$_WINDRES_VERSION]) + _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'` + _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'` + _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'` + WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'` + WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'` + WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'` + if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \ + "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \ + "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \ + "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \ + "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \ + "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION" + then + AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.]) + fi + fi # !GNU_CC + + MOZ_FIND_WINSDK_VERSION + AC_DEFINE_UNQUOTED(WINVER,0x$WINVER) + AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER) + # Require OS features provided by IE 6.0 SP2 (XP SP2) + AC_DEFINE_UNQUOTED(_WIN32_IE,0x0603) + + # If the maximum version supported by this SDK is lower than the target + # version, error out + AC_MSG_CHECKING([for Windows SDK being recent enough]) + if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then + AC_MSG_RESULT("yes") + else + AC_MSG_RESULT("no") + 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.]) + fi + + AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER) + ;; +esac + +if test -n "$_WIN32_MSVC"; then + SKIP_PATH_CHECKS=1 + SKIP_COMPILER_CHECKS=1 + SKIP_LIBRARY_CHECKS=1 + + # Since we're skipping compiler and library checks, hard-code + # some facts here. + + # Common to all MSVC environments: + + AC_DEFINE(HAVE_LOCALECONV) + AC_DEFINE(HAVE_HYPOT) + AC_CHECK_FUNCS([_getc_nolock]) +fi + +fi # COMPILE_ENVIRONMENT + +# Check to see if we are running in a broken QEMU scratchbox. +# We know that anything below 1.0.16 is broken. +AC_CHECK_PROGS(SBCONF, sb-conf ve, "") +if test -n "$SBCONF"; then + _sb_version=`$SBCONF ve` + _sb_version_major=`echo $_sb_version | cut -f1 -d.` + _sb_version_minor=`echo $_sb_version | cut -f2 -d.` + _sb_version_point=`echo $_sb_version | cut -f3 -d.` + if test $_sb_version_major -eq 1 -a $_sb_version_minor -eq 0 -a $_sb_version_point -le 16; then + QEMU_CANT_RUN_JS_SHELL=1 + fi +fi +AC_SUBST(QEMU_CANT_RUN_JS_SHELL) + +AC_SUBST(_MSC_VER) + +AC_SUBST(GNU_AS) +AC_SUBST(GNU_LD) +AC_SUBST(GNU_CC) +AC_SUBST(GNU_CXX) +AC_SUBST(INTEL_CC) +AC_SUBST(INTEL_CXX) + +dnl ======================================================== +dnl Checks for programs. +dnl ======================================================== +AC_PROG_INSTALL +AC_PROG_LN_S + +AC_MSG_CHECKING([for tar archiver]) +AC_CHECK_PROGS(TAR, gnutar gtar tar, "") +if test -z "$TAR"; then + AC_MSG_WARN([no tar archiver found in \$PATH]) +fi +AC_MSG_RESULT([$TAR]) +AC_SUBST(TAR) + +AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION]) +_perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5` +_perl_res=$? +AC_MSG_RESULT([$_perl_version]) + +if test "$_perl_res" != 0; then + AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.]) +fi + +AC_MSG_CHECKING([for full perl installation]) +_perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5` +_perl_res=$? +if test "$_perl_res" != 0; then + AC_MSG_RESULT([no]) + AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.]) +else + AC_MSG_RESULT([yes]) +fi + +MOZ_PYTHON + +if test -z "$COMPILE_ENVIRONMENT"; then + NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py' +fi +AC_SUBST(NSINSTALL_BIN) + +MOZ_PATH_PROG(DOXYGEN, doxygen, :) +MOZ_PATH_PROG(AUTOCONF, autoconf, :) +MOZ_PATH_PROG(XARGS, xargs) +if test -z "$XARGS" -o "$XARGS" = ":"; then + AC_MSG_ERROR([xargs not found in \$PATH .]) +fi + +if test "$COMPILE_ENVIRONMENT"; then + +dnl ======================================================== +dnl = Mac OS X toolchain support +dnl ======================================================== + +dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk +dnl that a universal binary is being produced and MOZ_CAN_RUN_PROGRAMS +dnl when we can run target binaries. +AC_SUBST(UNIVERSAL_BINARY) +AC_SUBST(MOZ_CAN_RUN_PROGRAMS) + +dnl ======================================================== +dnl Check for MacOS deployment target version +dnl ======================================================== + +MOZ_ARG_ENABLE_STRING(macos-target, + [ --enable-macos-target=VER (default=10.6) + Set the minimum MacOS version needed at runtime], + [_MACOSX_DEPLOYMENT_TARGET=$enableval]) + +if test "$target_cpu" != "arm"; then +case "$target" in +*-darwin*) + if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then + dnl Use the specified value + export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET + else + dnl No value specified on the command line or in the environment, + dnl use architecture minimum. + export MACOSX_DEPLOYMENT_TARGET=10.6 + fi + ;; +esac +fi + +AC_SUBST(MACOSX_DEPLOYMENT_TARGET) + +dnl ======================================================== +dnl = Mac OS X SDK support +dnl ======================================================== +MACOS_SDK_DIR= +MOZ_ARG_WITH_STRING(macos-sdk, +[ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)], + MACOS_SDK_DIR=$withval) + +dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use. +AC_SUBST(MACOS_SDK_DIR) + +if test "$MACOS_SDK_DIR"; then + dnl Sync this section with the ones in NSPR and NSS. + dnl Changes to the cross environment here need to be accounted for in + dnl the libIDL checks (below) and xpidl build. + + if test ! -d "$MACOS_SDK_DIR"; then + AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must +specify a valid SDK. SDKs are installed when the optional cross-development +tools are selected during the Xcode/Developer Tools installation.]) + fi + + CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}" + CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}" + + dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER. + CPP="$CPP -isysroot ${MACOS_SDK_DIR}" + CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}" + + AC_LANG_SAVE + AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination]) + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([#include + int main() { return 0; }], + result=yes, + result=no) + AC_LANG_RESTORE + AC_MSG_RESULT($result) + + if test "$result" = "no" ; then + AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.]) + fi +fi + +fi # COMPILE_ENVIRONMENT + +if test -n "$MAKE"; then + if test `echo $MAKE | grep -c make.py` != 1; then + NOT_PYMAKE=$MAKE + fi +fi + +case "$host_os" in +mingw*) + MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :) + ;; +*) + MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :) + ;; +esac +if test "$GMAKE" = ":"; then + AC_MSG_ERROR([GNU make not found]) +fi + +# MAKE will be set by client.mk, but still need this for standalone js builds +if test -z "$MAKE"; then + MAKE=$GMAKE +fi + +if test "$COMPILE_ENVIRONMENT"; then + +AC_PATH_XTRA + +XCFLAGS="$X_CFLAGS" + +fi # COMPILE_ENVIRONMENT + +dnl ============================================================== +dnl Get mozilla version from central milestone file +dnl ============================================================== +MOZILLA_VERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir` +MOZILLA_UAVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --uaversion` +MOZILLA_SYMBOLVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --symbolversion` +if test -z "$MOZILLA_VERSION"; then + AC_MSG_ERROR([failed to read version info from milestone file]) +fi + +AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION") +AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION) +AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION") +AC_SUBST(MOZILLA_SYMBOLVERSION) + +# Separate version into components for use in shared object naming etc +changequote(,) +MOZJS_MAJOR_VERSION=`echo $MOZILLA_VERSION | sed "s|\(^[0-9]*\)\.[0-9]*.*|\1|"` +MOZJS_MINOR_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.\([0-9]*\).*|\1|"` +MOZJS_PATCH_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9]*[^0-9]*||"` +IS_ALPHA=`echo $MOZILLA_VERSION | grep '[ab]'` + +dnl XXX in a temporary bid to avoid developer anger at renaming files +dnl XXX before "js" symlinks exist, don't change names. +dnl +dnl if test -n "$JS_STANDALONE"; then +dnl JS_SHELL_NAME=js$MOZJS_MAJOR_VERSION +dnl JS_CONFIG_NAME=js$MOZJS_MAJOR_VERSION-config +dnl else +JS_SHELL_NAME=js +JS_CONFIG_NAME=js-config +dnl fi + +changequote([,]) +if test -n "$IS_ALPHA"; then + changequote(,) + MOZJS_ALPHA=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9\.]*\([^0-9]\).*|\1|"` + changequote([,]) +fi +AC_DEFINE_UNQUOTED(MOZJS_MAJOR_VERSION,$MOZJS_MAJOR_VERSION) +AC_DEFINE_UNQUOTED(MOZJS_MINOR_VERSION,$MOZJS_MINOR_VERSION) +AC_SUBST(JS_SHELL_NAME) +AC_SUBST(JS_CONFIG_NAME) +AC_SUBST(MOZJS_MAJOR_VERSION) +AC_SUBST(MOZJS_MINOR_VERSION) +AC_SUBST(MOZJS_PATCH_VERSION) +AC_SUBST(MOZJS_ALPHA) + + +dnl ======================================================== +dnl set the defaults first +dnl ======================================================== +AS_BIN=$AS +AR_LIST='$(AR) t' +AR_EXTRACT='$(AR) x' +AR_DELETE='$(AR) d' +AS='$(CC)' +AS_DASH_C_FLAG='-c' +DLL_PREFIX=lib +LIB_PREFIX=lib +DLL_SUFFIX=.so +OBJ_SUFFIX=o +LIB_SUFFIX=a +ASM_SUFFIX=s +IMPORT_LIB_SUFFIX= +DIRENT_INO=d_ino +MOZ_USER_DIR=".mozilla" + +MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib" + +USE_DEPENDENT_LIBS=1 + +_PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2 + +if test -n "$CROSS_COMPILE"; then + OS_TARGET="${target_os}" + OS_ARCH=`echo $target_os | sed -e 's|/|_|g'` + OS_RELEASE= + case "${target_os}" in + linux*) OS_ARCH=Linux OS_TARGET=Linux ;; + kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU/kFreeBSD ;; + gnu*) OS_ARCH=GNU ;; + solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;; + mingw*) OS_ARCH=WINNT OS_TARGET=WINNT ;; + darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;; + dragonfly*) OS_ARCH=DragonFly OS_TARGET=DragonFly ;; + freebsd*) OS_ARCH=FreeBSD OS_TARGET=FreeBSD ;; + netbsd*) OS_ARCH=NetBSD OS_TARGET=NetBSD ;; + openbsd*) OS_ARCH=OpenBSD OS_TARGET=OpenBSD ;; + esac + case "${target}" in + *-android*|*-linuxandroid*) OS_ARCH=Linux OS_TARGET=Android ;; + esac +else + OS_TARGET=`uname -s` + OS_ARCH=`uname -s | sed -e 's|/|_|g'` + OS_RELEASE=`uname -r` +fi + +# Before this used `uname -m` when not cross compiling +# but that breaks when you have a 64 bit kernel with a 32 bit userland. +OS_TEST="${target_cpu}" + +HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'` + +####################################################################### +# Master "Core Components" macros for getting the OS target # +####################################################################### + +# +# If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no +# cross-compilation. +# + +# +# Define and override various archtecture-specific variables, including +# HOST_OS_ARCH +# OS_ARCH +# OS_TEST +# OS_TARGET +# OS_RELEASE +# OS_MINOR_RELEASE +# + +case "$HOST_OS_ARCH" in +mingw*) + HOST_OS_ARCH=WINNT + ;; +darwin*) + HOST_OS_ARCH=Darwin + ;; +linux*) + HOST_OS_ARCH=Linux + ;; +kfreebsd*-gnu) + HOST_OS_ARCH=GNU_kFreeBSD + ;; +gnu*) + HOST_OS_ARCH=GNU + ;; +dragonfly*) + HOST_OS_ARCH=DragonFly + ;; +freebsd*) + HOST_OS_ARCH=FreeBSD + ;; +netbsd*) + HOST_OS_ARCH=NetBSD + ;; +openbsd*) + HOST_OS_ARCH=OpenBSD + ;; +solaris*) + HOST_OS_ARCH=SunOS + SOLARIS_SUNPRO_CC= + SOLARIS_SUNPRO_CXX= + if test -z "$GNU_CC"; then + if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then + SOLARIS_SUNPRO_CC=1 + fi + fi + + if test -z "$GNU_CXX"; then + if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then + SOLARIS_SUNPRO_CXX=1 + fi + fi + AC_SUBST(SOLARIS_SUNPRO_CC) + AC_SUBST(SOLARIS_SUNPRO_CXX) + ;; +esac + +case "$OS_ARCH" in +WINNT) + if test -z "$CROSS_COMPILE" ; then + OS_TEST=`uname -p` + fi + ;; +Windows_NT) +# +# If uname -s returns "Windows_NT", we assume that we are using +# the uname.exe in MKS toolkit. +# +# The -r option of MKS uname only returns the major version number. +# So we need to use its -v option to get the minor version number. +# Moreover, it doesn't have the -p option, so we need to use uname -m. +# + OS_ARCH=WINNT + OS_TARGET=WINNT + OS_MINOR_RELEASE=`uname -v` + if test "$OS_MINOR_RELEASE" = "00"; then + OS_MINOR_RELEASE=0 + fi + OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}" + ;; +MINGW*_NT*) +# +# If uname -s returns MINGW32_NT-5.1, we assume that we are using +# the uname.exe in the MSYS tools. +# + OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'` + OS_ARCH=WINNT + OS_TARGET=WINNT + ;; +AIX) + OS_RELEASE=`uname -v`.`uname -r` + OS_TEST=${target_cpu} + if test -z "$GNU_CC"; then + if test "`$CC -qversion 2>&1 | egrep -c 'IBM XL'`" != "0"; then + AIX_IBM_XLC=1 + fi + fi + ;; +Darwin) + case "${target_cpu}" in + powerpc*) + OS_TEST=ppc + ;; + i*86*) + OS_TEST=i386 + ;; + x86_64) + OS_TEST=x86_64 + ;; + *) + if test -z "$CROSS_COMPILE" ; then + OS_TEST=`uname -p` + fi + ;; + esac + ;; +esac + +# Only set CPU_ARCH if we recognize the value of OS_TEST + +case "$OS_TEST" in +*86 | i86pc) + CPU_ARCH=x86 + ;; + +powerpc64 | ppc64 | powerpc64le | ppc64le) + CPU_ARCH=ppc64 + ;; + +powerpc | ppc | rs6000) + CPU_ARCH=ppc + ;; + +Alpha | alpha | ALPHA) + CPU_ARCH=Alpha + ;; + +s390) + CPU_ARCH=s390 + ;; + +s390x) + CPU_ARCH=s390x + ;; + +hppa* | parisc) + CPU_ARCH=hppa + ;; + +sun4u | sparc*) + CPU_ARCH=sparc + ;; + +x86_64 | ia64) + CPU_ARCH="$OS_TEST" + ;; + +arm*) + CPU_ARCH=arm + ;; + +mips|mipsel) + CPU_ARCH="mips32" + ;; + +mips64|mips64el) + CPU_ARCH="mips64" + ;; + +aarch64*) + CPU_ARCH=aarch64 + ;; + +esac + +if test -z "$OS_TARGET"; then + OS_TARGET=$OS_ARCH +fi +OS_CONFIG="${OS_TARGET}${OS_RELEASE}" + +dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64. +dnl =============================================================== +INTEL_ARCHITECTURE= +case "$OS_TEST" in + x86_64|i?86) + INTEL_ARCHITECTURE=1 +esac + +dnl Configure platform-specific CPU architecture compiler options. +dnl ============================================================== +MOZ_ARCH_OPTS + +dnl ================================================================= +dnl Set up and test static assertion macros used to avoid AC_TRY_RUN, +dnl which is bad when cross compiling. +dnl ================================================================= +if test "$COMPILE_ENVIRONMENT"; then +configure_static_assert_macros=' +#define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__) +#define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) +#define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1] +' + +dnl test that the macros actually work: +AC_MSG_CHECKING(that static assertion macros used in autoconf tests work) +AC_CACHE_VAL(ac_cv_static_assertion_macros_work, + [AC_LANG_SAVE + AC_LANG_C + ac_cv_static_assertion_macros_work="yes" + AC_TRY_COMPILE([$configure_static_assert_macros], + [CONFIGURE_STATIC_ASSERT(1)], + , + ac_cv_static_assertion_macros_work="no") + AC_TRY_COMPILE([$configure_static_assert_macros], + [CONFIGURE_STATIC_ASSERT(0)], + ac_cv_static_assertion_macros_work="no", + ) + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([$configure_static_assert_macros], + [CONFIGURE_STATIC_ASSERT(1)], + , + ac_cv_static_assertion_macros_work="no") + AC_TRY_COMPILE([$configure_static_assert_macros], + [CONFIGURE_STATIC_ASSERT(0)], + ac_cv_static_assertion_macros_work="no", + ) + AC_LANG_RESTORE + ]) +AC_MSG_RESULT("$ac_cv_static_assertion_macros_work") +if test "$ac_cv_static_assertion_macros_work" = "no"; then + AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.]) +fi +fi # COMPILE_ENVIRONMENT + +dnl ======================================================== +dnl Android libstdc++, placed here so it can use MOZ_ARCH +dnl computed above. +dnl ======================================================== + +MOZ_ANDROID_STLPORT + +dnl ======================================================== +dnl Suppress Clang Argument Warnings +dnl ======================================================== +if test -n "${CLANG_CC}${CLANG_CL}"; then + _WARNINGS_CFLAGS="-Qunused-arguments ${_WARNINGS_CFLAGS}" + CPPFLAGS="-Qunused-arguments ${CPPFLAGS}" +fi +if test -n "${CLANG_CXX}${CLANG_CL}"; then + _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}" +fi + +dnl ======================================================== +dnl = Use Address Sanitizer +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(address-sanitizer, +[ --enable-address-sanitizer Enable Address Sanitizer (default=no)], + MOZ_ASAN=1, + MOZ_ASAN= ) +if test -n "$MOZ_ASAN"; then + MOZ_LLVM_HACKS=1 + AC_DEFINE(MOZ_ASAN) + MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer) +fi +AC_SUBST(MOZ_ASAN) + +dnl ======================================================== +dnl = Use Memory Sanitizer +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(memory-sanitizer, +[ --enable-memory-sanitizer Enable Memory Sanitizer (default=no)], + MOZ_MSAN=1, + MOZ_MSAN= ) +if test -n "$MOZ_MSAN"; then + MOZ_LLVM_HACKS=1 + AC_DEFINE(MOZ_MSAN) + MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer) +fi +AC_SUBST(MOZ_MSAN) + +dnl ======================================================== +dnl = Use Thread Sanitizer +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(thread-sanitizer, +[ --enable-thread-sanitizer Enable Thread Sanitizer (default=no)], + MOZ_TSAN=1, + MOZ_TSAN= ) +if test -n "$MOZ_TSAN"; then + MOZ_LLVM_HACKS=1 + AC_DEFINE(MOZ_TSAN) + MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer) +fi +AC_SUBST(MOZ_TSAN) + +# The LLVM symbolizer is used by all sanitizers +AC_SUBST(LLVM_SYMBOLIZER) + +dnl ======================================================== +dnl = Enable hacks required for LLVM instrumentations +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(llvm-hacks, +[ --enable-llvm-hacks Enable workarounds required for several LLVM instrumentations (default=no)], + MOZ_LLVM_HACKS=1, + MOZ_LLVM_HACKS= ) +if test -n "$MOZ_LLVM_HACKS"; then + MOZ_NO_WLZDEFS=1 +fi + +dnl ======================================================== +dnl = Enable treating compiler warnings as errors +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(warnings-as-errors, +[ --enable-warnings-as-errors + Enable treating warnings as errors], + MOZ_ENABLE_WARNINGS_AS_ERRORS=1, + MOZ_ENABLE_WARNINGS_AS_ERRORS=) + +dnl ======================================================== +dnl GNU specific defaults +dnl ======================================================== +if test "$GNU_CC"; then + # Per bug 719659 comment 2, some of the headers on ancient build machines + # may require gnu89 inline semantics. But otherwise, we use C99. + # But on OS X we just use C99 plus GNU extensions, in order to fix + # bug 917526. + CFLAGS="$CFLAGS -std=gnu99" + if test "${OS_ARCH}" != Darwin; then + CFLAGS="$CFLAGS -fgnu89-inline" + fi + MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(DSO_SONAME) -o $@' + MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(DSO_SONAME) -o $@' + DSO_LDOPTS='-shared' + if test "$GCC_USE_GNU_LD"; then + # Some tools like ASan use a runtime library that is only + # linked against executables, so we must allow undefined + # symbols for shared objects in some cases. + if test -z "$MOZ_NO_WLZDEFS"; then + # Don't allow undefined symbols in libraries + DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs" + fi + fi + WARNINGS_AS_ERRORS='-Werror' + DSO_CFLAGS='' + DSO_PIC_CFLAGS='-fPIC' + ASFLAGS="$ASFLAGS -fPIC" + AC_MSG_CHECKING([for --noexecstack option to as]) + _SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -Wa,--noexecstack" + AC_TRY_COMPILE(,,AC_MSG_RESULT([yes]) + [ASFLAGS="$ASFLAGS -Wa,--noexecstack"], + AC_MSG_RESULT([no])) + CFLAGS=$_SAVE_CFLAGS + AC_MSG_CHECKING([for -z noexecstack option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,noexecstack" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]), + AC_MSG_RESULT([no]) + LDFLAGS=$_SAVE_LDFLAGS) + + AC_MSG_CHECKING([for -z text option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,text" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]) + [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,text"], + AC_MSG_RESULT([no]) + LDFLAGS=$_SAVE_LDFLAGS) + + AC_MSG_CHECKING([for --build-id option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,--build-id" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]) + [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,--build-id"], + AC_MSG_RESULT([no]) + LDFLAGS=$_SAVE_LDFLAGS) + + MOZ_SET_WARNINGS_CFLAGS + + _DEFINES_CFLAGS='-include $(topobjdir)/js/src/js-confdefs.h -DMOZILLA_CLIENT' + _USE_CPP_INCLUDE_FLAG=1 + +elif test "$SOLARIS_SUNPRO_CC"; then + DSO_CFLAGS='' + if test "$CPU_ARCH" = "sparc"; then + # for Sun Studio on Solaris/SPARC + DSO_PIC_CFLAGS='-xcode=pic32' + else + DSO_PIC_CFLAGS='-KPIC' + fi + _DEFINES_CFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT' +else + MKSHLIB='$(LD) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' + MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' + + DSO_LDOPTS='-shared' + if test "$GNU_LD"; then + # Don't allow undefined symbols in libraries + DSO_LDOPTS="$DSO_LDOPTS -z defs" + fi + + DSO_CFLAGS='' + DSO_PIC_CFLAGS='-KPIC' + _DEFINES_CFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT' +fi + +if test "$GNU_CXX"; then + MOZ_SET_WARNINGS_CXXFLAGS + + _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(topobjdir)/js/src/js-confdefs.h' + _USE_CPP_INCLUDE_FLAG=1 + +else + _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_JS_CONFDEFS_H_ $(ACDEFINES)' +fi + +dnl ======================================================== +dnl Checking for 64-bit OS +dnl ======================================================== +if test "$COMPILE_ENVIRONMENT"; then +AC_LANG_SAVE +AC_LANG_C +AC_MSG_CHECKING(for 64-bit OS) +AC_TRY_COMPILE([$configure_static_assert_macros], + [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)], + result="yes", result="no") +AC_MSG_RESULT("$result") +if test "$result" = "yes"; then + AC_DEFINE(HAVE_64BIT_BUILD) + HAVE_64BIT_BUILD=1 +fi +AC_SUBST(HAVE_64BIT_BUILD) +AC_LANG_RESTORE +fi # COMPILE_ENVIRONMENT + +dnl ======================================================== +dnl = Use profiling compile flags +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(profiling, +[ --enable-profiling Set compile flags necessary for using sampling profilers (e.g. shark, perf)], + MOZ_PROFILING=1, + MOZ_PROFILING= ) + +dnl ======================================================== +dnl System overrides of the defaults for host +dnl ======================================================== +case "$host" in +*mingw*) + if test -n "$_WIN32_MSVC"; then + HOST_AR=lib + HOST_AR_FLAGS='-NOLOGO -OUT:$@' + HOST_CFLAGS="$HOST_CFLAGS -TC -nologo" + HOST_RANLIB='echo ranlib' + else + HOST_CFLAGS="$HOST_CFLAGS -mwindows" + fi + HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11 -D_CRT_SECURE_NO_WARNINGS" + HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}" + HOST_BIN_SUFFIX=.exe + + case "${host_cpu}" in + i*86) + if test -n "$_WIN32_MSVC"; then + HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86" + fi + ;; + x86_64) + if test -n "$_WIN32_MSVC"; then + HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64" + fi + HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_" + ;; + esac + ;; + +*-darwin*) + HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11" + HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" + ;; + +*-linux*|*-kfreebsd*-gnu|*-gnu*) + HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" + HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" + ;; + +*) + HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" + HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}" + ;; +esac + +MOZ_DOING_LTO(lto_is_enabled) + +dnl ======================================================== +dnl System overrides of the defaults for target +dnl ======================================================== + +case "$target" in +*-aix*) + AC_DEFINE(AIX) + if test ! "$GNU_CC"; then + if test ! "$HAVE_64BIT_BUILD"; then + # Compiling with Visual Age C++ object model compat is the + # default. To compile with object model ibm, add + # AIX_OBJMODEL=ibm to .mozconfig. + if test "$AIX_OBJMODEL" = "ibm"; then + CXXFLAGS="$CXXFLAGS -qobjmodel=ibm" + else + AIX_OBJMODEL=compat + fi + else + AIX_OBJMODEL=compat + fi + AC_SUBST(AIX_OBJMODEL) + DSO_LDOPTS='-qmkshrobj=1' + DSO_CFLAGS='-qflag=w:w' + DSO_PIC_CFLAGS= + LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib" + MOZ_FIX_LINK_PATHS= + MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@' + MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@' + if test "$COMPILE_ENVIRONMENT"; then + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_MSG_CHECKING([for IBM XLC/C++ compiler version >= 9.0.0.7]) + AC_TRY_COMPILE([], + [#if (__IBMCPP__ < 900) + #error "Bad compiler" + #endif], + _BAD_COMPILER=,_BAD_COMPILER=1) + if test -n "$_BAD_COMPILER"; then + AC_MSG_RESULT([no]) + AC_MSG_ERROR([IBM XLC/C++ 9.0.0.7 or higher is required to build.]) + else + AC_MSG_RESULT([yes]) + fi + AC_LANG_RESTORE + TARGET_COMPILER_ABI="ibmc" + CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'` + CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'` + fi + fi + case "${target_os}" in + aix4.1*) + DLL_SUFFIX='_shr.a' + ;; + esac + if test "$COMPILE_ENVIRONMENT"; then + MOZ_CHECK_HEADERS(sys/inttypes.h) + fi + AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES) + ;; + +*-darwin*) + AC_DEFINE(XP_DARWIN) + MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@' + MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@' + MOZ_OPTIMIZE_FLAGS="-O3 -fno-stack-protector" + CFLAGS="$CFLAGS -fno-common" + CXXFLAGS="$CXXFLAGS -fno-common" + DLL_SUFFIX=".dylib" + DSO_LDOPTS='' + STRIP="$STRIP -x -S" + _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa' + LDFLAGS="$LDFLAGS -lobjc" + # The ExceptionHandling framework is needed for Objective-C exception + # logging code in nsObjCExceptions.h. Currently we only use that in debug + # builds. + _SAVE_LDFLAGS=$LDFLAGS + AC_MSG_CHECKING([for -framework ExceptionHandling]) + LDFLAGS="$LDFLAGS -framework ExceptionHandling" + AC_TRY_LINK(,[return 0;], + ac_cv_have_framework_exceptionhandling="yes", + ac_cv_have_framework_exceptionhandling="no") + AC_MSG_RESULT([$ac_cv_have_framework_exceptionhandling]) + if test "$ac_cv_have_framework_exceptionhandling" = "yes"; then + MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"; + fi + LDFLAGS=$_SAVE_LDFLAGS + + if test "x$lto_is_enabled" = "xyes"; then + echo "Skipping -dead_strip because lto is enabled." + dnl DTrace and -dead_strip don't interact well. See bug 403132. + dnl =================================================================== + elif test "x$enable_dtrace" = "xyes"; then + echo "Skipping -dead_strip because DTrace is enabled. See bug 403132." + else + dnl check for the presence of the -dead_strip linker flag + AC_MSG_CHECKING([for -dead_strip option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-dead_strip" + AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=) + if test -n "$_HAVE_DEAD_STRIP" ; then + AC_MSG_RESULT([yes]) + MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip" + else + AC_MSG_RESULT([no]) + fi + + LDFLAGS=$_SAVE_LDFLAGS + fi + MOZ_FIX_LINK_PATHS="-Wl,-executable_path,${DIST}/bin" + ;; + +ia64*-hpux*) + DLL_SUFFIX=".so" + if test ! "$GNU_CC"; then + DSO_LDOPTS='-b' + DSO_CFLAGS="" + DSO_PIC_CFLAGS= + MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@' + MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@' + CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on" + else + DSO_LDOPTS='-b -E' + MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@' + MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@' + fi + MOZ_FIX_LINK_PATHS= + AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES) + AC_DEFINE(_LARGEFILE64_SOURCE) + ;; + +*-hpux*) + DLL_SUFFIX=".sl" + if test ! "$GNU_CC"; then + DSO_LDOPTS='-b -Wl,+s' + DSO_CFLAGS="" + DSO_PIC_CFLAGS="+Z" + MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(DIST)/bin -o $@' + MKCSHLIB='$(LD) -b +s -L$(DIST)/bin -o $@' + CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on" + else + DSO_LDOPTS='-b -E +s' + MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(DIST)/bin -L$(DIST)/lib -o $@' + MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(DIST)/bin -L$(DIST)/lib -o $@' + fi + MOZ_POST_PROGRAM_COMMAND='chatr +s enable' + AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES) + ;; + +*-android*|*-linuxandroid*) + AC_DEFINE(NO_PW_GECOS) + no_x=yes + _PLATFORM_DEFAULT_TOOLKIT=cairo-android + + MOZ_GFX_OPTIMIZE_MOBILE=1 + MOZ_OPTIMIZE_FLAGS="-O3 -fno-reorder-functions" + if test -z "$CLANG_CC"; then + MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS" + fi + # The Maemo builders don't know about this flag + MOZ_ARM_VFP_FLAGS="-mfpu=vfp" + ;; + +*-*linux*) + # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler. + # Similarly for GNU_CXX and INTEL_CXX. + if test "$INTEL_CC" -o "$INTEL_CXX"; then + # -Os has been broken on Intel's C/C++ compilers for quite a + # while; Intel recommends against using it. + MOZ_OPTIMIZE_FLAGS="-O2" + elif test "$GNU_CC" -o "$GNU_CXX"; then + MOZ_PGO_OPTIMIZE_FLAGS="-O3" + MOZ_OPTIMIZE_FLAGS="-O3" + if test -z "$CLANG_CC"; then + MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS" + fi + fi + + case "${target_cpu}" in + alpha*) + CFLAGS="$CFLAGS -mieee" + CXXFLAGS="$CXXFLAGS -mieee" + ;; + esac + + if test -z "$MC"; then + MC=mc.exe + fi + ;; + +*-mingw*) + DSO_CFLAGS= + DSO_PIC_CFLAGS= + DLL_SUFFIX=.dll + RC=rc.exe + MC=mc.exe + if test -n "$GNU_CC" -o -n "$CLANG_CC"; then + CC="$CC -mwindows" + CXX="$CXX -mwindows" + CPP="$CPP -mwindows" + CFLAGS="$CFLAGS -mms-bitfields" + CXXFLAGS="$CXXFLAGS -mms-bitfields" + DSO_LDOPTS='-shared' + MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@' + MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@' + RC='$(WINDRES)' + # Use static libgcc and libstdc++ + LDFLAGS="$LDFLAGS -static" + # Use temp file for windres (bug 213281) + RCFLAGS='-O coff --use-temp-file' + # mingw doesn't require kernel32, user32, and advapi32 explicitly + LIBS="$LIBS -lgdi32 -lwinmm -lwsock32 -lpsapi" + MOZ_FIX_LINK_PATHS= + DLL_PREFIX= + IMPORT_LIB_SUFFIX=a + + WIN32_CONSOLE_EXE_LDFLAGS=-mconsole + WIN32_GUI_EXE_LDFLAGS=-mwindows + + # We use mix of both POSIX and Win32 printf format across the tree, so format + # warnings are useless on mingw. + MOZ_C_SUPPORTS_WARNING(-Wno-, format, ac_c_has_wno_format) + MOZ_CXX_SUPPORTS_WARNING(-Wno-, format, ac_cxx_has_wno_format) + else + TARGET_COMPILER_ABI=msvc + HOST_CC='$(CC)' + HOST_CXX='$(CXX)' + HOST_LD='$(LD)' + if test "$AS_BIN"; then + AS="$(basename "$AS_BIN")" + fi + AR='lib' + AR_FLAGS='-NOLOGO -OUT:$@' + AR_EXTRACT= + RANLIB='echo not_ranlib' + STRIP='echo not_strip' + PKG_SKIP_STRIP=1 + XARGS=xargs + DOXYGEN=: + ASM_SUFFIX=asm + OBJ_SUFFIX=obj + LIB_SUFFIX=lib + DLL_PREFIX= + LIB_PREFIX= + IMPORT_LIB_SUFFIX=lib + MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)' + MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)' + dnl Set subsystem version 5 for Windows XP. + if test "$CPU_ARCH" = "x86"; then + WIN32_SUBSYSTEM_VERSION=5.01 + else + WIN32_SUBSYSTEM_VERSION=6.01 + fi + WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION + WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION + DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION + _USE_CPP_INCLUDE_FLAG=1 + _DEFINES_CFLAGS='-FI $(topobjdir)/js/src/js-confdefs.h -DMOZILLA_CLIENT' + _DEFINES_CXXFLAGS='-FI $(topobjdir)/js/src/js-confdefs.h -DMOZILLA_CLIENT' + CFLAGS="$CFLAGS -W3 -Gy" + CXXFLAGS="$CXXFLAGS -W3 -Gy" + if test "$CPU_ARCH" = "x86"; then + dnl VS2012+ defaults to -arch:SSE2. + CFLAGS="$CFLAGS -arch:IA32" + CXXFLAGS="$CXXFLAGS -arch:IA32" + fi + dnl VS2013+ requires -FS when parallel building by make -jN. + dnl If nothing, compiler sometimes causes C1041 error. + CFLAGS="$CFLAGS -FS" + CXXFLAGS="$CXXFLAGS -FS" + # khuey says we can safely ignore MSVC warning C4251 + # MSVC warning C4244 (implicit type conversion may lose data) warns + # and requires workarounds for perfectly valid code. Also, GCC/clang + # don't warn about it by default. So for consistency/sanity, we turn + # it off on MSVC, too. + # MSVC warning C4267 warns for narrowing type conversions from size_t + # to 32-bit integer types on 64-bit platforms. Since this is virtually + # the same thing as C4244, we disable C4267, too. + CFLAGS="$CFLAGS -wd4244 -wd4267" + CXXFLAGS="$CXXFLAGS -wd4244 -wd4267 -wd4251" + if test -n "$CLANG_CL"; then + # XXX We should combine some of these with our generic GCC-style + # warning checks. + # + # Suppress the clang-cl warning for the inline 'new' and 'delete' in mozalloc + CXXFLAGS="$CXXFLAGS -Wno-inline-new-delete" + # We use offsetof on non-POD objects all the time. + # We also suppress this warning on other platforms. + CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof" + # MFBT thinks clang-cl supports constexpr, which it does, but + # not everything in Windows C++ headers supports constexpr + # as we might expect until MSVC 2015, so turn off this warning + # for now. + CXXFLAGS="$CXXFLAGS -Wno-invalid-constexpr" + # This warns for reasonable things like: + # enum { X = 0xffffffffU }; + # which is annoying for IDL headers. + CXXFLAGS="$CXXFLAGS -Wno-microsoft-enum-value" + # This warns for cases that would be reached by the Microsoft + # #include rules, but also currently warns on cases that would + # *also* be reached by standard C++ include rules. That + # behavior doesn't seem useful, so we turn it off. + CXXFLAGS="$CXXFLAGS -Wno-microsoft-include" + # We normally error out on unknown pragmas, but since clang-cl + # claims to be MSVC, it would be difficult to add + # #if defined(_MSC_VER) && !defined(__clang__) everywhere we + # use such pragmas, so just ignore them. + CFLAGS="$CFLAGS -Wno-unknown-pragmas" + CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas" + # clang-cl's Intrin.h marks things like _ReadWriteBarrier + # as __attribute((__deprecated__)). This is nice to know, + # but since we don't get the equivalent warning from MSVC, + # let's just ignore it. + CFLAGS="$CFLAGS -Wno-deprecated-declarations" + CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations" + # We use a function like: + # __declspec(noreturn) __inline void f() {} + # which -Winvalid-noreturn complains about. Again, MSVC seems + # OK with it, so let's silence the warning. + CFLAGS="$CFLAGS -Wno-invalid-noreturn" + CXXFLAGS="$CXXFLAGS -Wno-invalid-noreturn" + # Missing |override| on virtual function declarations isn't + # something that MSVC currently warns about. + CXXFLAGS="$CXXFLAGS -Wno-inconsistent-missing-override" + # We use -DHAS_EXCEPTIONS=0, which removes the |throw()| + # declaration on |operator delete(void*)|. However, clang-cl + # must internally declare |operator delete(void*)| differently, + # which causes this warning for virtually every file in the + # tree. clang-cl doesn't support -fno-exceptions or equivalent, + # so there doesn't seem to be any way to convince clang-cl to + # declare |delete| differently. Therefore, suppress this + # warning. + CXXFLAGS="$CXXFLAGS -Wno-implicit-exception-spec-mismatch" + # At least one MSVC header and several headers in-tree have + # unused typedefs, so turn this on. + CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef" + # Several JS engine header files use __declspec(dllimport) on + # classes, and clang-cl helpfully warns about its non-support + # for such cases. We're not particularly worried about that, + # so ignore that warning. + CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes" + fi + # make 'foo == bar;' error out + CFLAGS="$CFLAGS -we4553" + CXXFLAGS="$CXXFLAGS -we4553" + LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib psapi.lib" + MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV' + WARNINGS_AS_ERRORS='-WX' + MOZ_OPTIMIZE_FLAGS="-O2" + MOZ_FIX_LINK_PATHS= + LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT" + if test -z "$DEVELOPER_OPTIONS"; then + LDFLAGS="$LDFLAGS -RELEASE" + fi + dnl For profile-guided optimization + PROFILE_GEN_CFLAGS="-GL" + PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT" + dnl XXX: PGO builds can fail with warnings treated as errors, + dnl specifically "no profile data available" appears to be + dnl treated as an error sometimes. This might be a consequence + dnl of using WARNINGS_AS_ERRORS in some modules, combined + dnl with the linker doing most of the work in the whole-program + dnl optimization/PGO case. I think it's probably a compiler bug, + dnl but we work around it here. + PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952" + dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul. + dnl Probably also a compiler bug, but what can you do? + PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE" + LDFLAGS="$LDFLAGS -DYNAMICBASE" + RCFLAGS="-nologo" + fi + AC_DEFINE(HAVE_SNPRINTF) + AC_DEFINE(HAVE__MSIZE) + AC_DEFINE(_WINDOWS) + AC_DEFINE(WIN32) + AC_DEFINE(XP_WIN) + AC_DEFINE(XP_WIN32) + AC_DEFINE(HW_THREADS) + AC_DEFINE(STDC_HEADERS) + AC_DEFINE(WIN32_LEAN_AND_MEAN) + _PLATFORM_DEFAULT_TOOLKIT='cairo-windows' + BIN_SUFFIX='.exe' + MOZ_USER_DIR="Mozilla" + + dnl set NO_X11 defines here as the general check is skipped on win32 + no_x=yes + AC_DEFINE(NO_X11) + + case "$host_os" in + cygwin*|msvc*|mks*) + 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.]) + ;; + esac + + case "$target" in + i*86-*) + if test "$HAVE_64BIT_BUILD"; then + AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.]) + fi + + if test -n "$GNU_CC"; then + CFLAGS="$CFLAGS -mstackrealign -fno-keep-inline-dllexport" + CXXFLAGS="$CXXFLAGS -mstackrealign -fno-keep-inline-dllexport" + LDFLAGS="$LDFLAGS -Wl,--large-address-aware" + else + DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86" + LDFLAGS="$LDFLAGS -SAFESEH" + fi + + AC_DEFINE(_X86_) + ;; + x86_64-*) + if test -n "$_WIN32_MSVC"; then + DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64" + fi + AC_DEFINE(_AMD64_) + ;; + *) + AC_DEFINE(_CPU_ARCH_NOT_DEFINED) + ;; + esac + ;; + +*-netbsd*) + DSO_CFLAGS='' + CFLAGS="$CFLAGS -Dunix" + CXXFLAGS="$CXXFLAGS -Dunix" + if $CC -E - -dM /dev/null; then + DLL_SUFFIX=".so" + DSO_PIC_CFLAGS='-fPIC -DPIC' + DSO_LDOPTS='-shared' + BIN_FLAGS='-Wl,--export-dynamic' + else + DSO_PIC_CFLAGS='-fPIC -DPIC' + DLL_SUFFIX=".so.1.0" + DSO_LDOPTS='-shared' + fi + # This will fail on a.out systems prior to 1.5.1_ALPHA. + if test "$LIBRUNPATH"; then + DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS" + fi + MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(DSO_SONAME) -o $@' + MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(DSO_SONAME) -o $@' + ;; + +*-openbsd*) + DLL_SUFFIX=".so.1.0" + DSO_CFLAGS='' + DSO_PIC_CFLAGS='-fPIC' + DSO_LDOPTS='-shared -fPIC' + if test "$LIBRUNPATH"; then + DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS" + fi + ;; + +*-solaris*) + AC_DEFINE(SOLARIS) + if test -z "$CROSS_COMPILE" && pkginfo -q SUNWpr && pkginfo -q SUNWprd; then + NO_NSPR_CONFIG_SYSTEM_LDFLAGS="-L/usr/lib/mps -R/usr/lib/mps -lnspr4" + NO_NSPR_CONFIG_SYSTEM_CFLAGS="-I/usr/include/mps" + NO_NSPR_CONFIG_SYSTEM_VERSION=["`pkgparam SUNWpr SUNW_PRODVERS | sed -e 's/^[1-9][0-9]*\.[0-9][0-9]*$/&.0/'`"] + fi + MOZ_FIX_LINK_PATHS= + # $ORIGIN/.. is for shared libraries under components/ to locate shared + # libraries one level up (e.g. libnspr4.so) + if test "$SOLARIS_SUNPRO_CC"; then + LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs" + LIBS="-lCrun -lCstd -lc $LIBS" + AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES) + CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__" + CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef" + LDFLAGS="-xildoff $LDFLAGS" + if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS" + AC_TRY_LINK([#include ], + [printf("Hello World\n");], + , + [LDFLAGS=$_SAVE_LDFLAGS]) + fi + MOZ_OPTIMIZE_FLAGS="-xO4" + MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' + MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' + DSO_LDOPTS='-G' + AR_LIST="$AR t" + AR_EXTRACT="$AR x" + AR_DELETE="$AR d" + AR='$(CXX) -xar' + AR_FLAGS='-o $@' + AS='/usr/ccs/bin/as' + ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0" + AS_DASH_C_FLAG='' + TARGET_COMPILER_ABI="sunc" + CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'` + CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'` + AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9]) + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([], + [#if (__SUNPRO_CC < 0x590) + #error "Denied" + #endif], + _BAD_COMPILER=,_BAD_COMPILER=1) + if test -n "$_BAD_COMPILER"; then + _res="no" + AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .]) + else + _res="yes" + fi + AC_TRY_COMPILE([], + [#if (__SUNPRO_CC >= 0x5100) + #error "Sun C++ 5.10 or above" + #endif], + _ABOVE_SS12U1=,_ABOVE_SS12U1=1) + if test "$_ABOVE_SS12U1"; then + # disable xannotate + CXXFLAGS="$CXXFLAGS -xannotate=no" + fi + AC_MSG_RESULT([$_res]) + AC_LANG_RESTORE + else + LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs" + LIBS="-lc $LIBS" + ASFLAGS="$ASFLAGS -fPIC" + DSO_LDOPTS='-shared' + WARNINGS_AS_ERRORS='-Werror' + _WARNINGS_CFLAGS='' + _WARNINGS_CXXFLAGS='' + if test "$OS_RELEASE" = "5.3"; then + AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES) + fi + fi + if test "$OS_RELEASE" = "5.5.1"; then + AC_DEFINE(NEED_USLEEP_PROTOTYPE) + fi + ;; + +*-sunos*) + DSO_LDOPTS='-Bdynamic' + MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@' + MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@' + AC_DEFINE(SUNOS4) + AC_DEFINE(SPRINTF_RETURNS_STRING) + case "$(target_os)" in + sunos4.1*) + DLL_SUFFIX='.so.1.0' + ;; + esac + ;; + +esac + +dnl Only one oddball right now (QNX), but this gives us flexibility +dnl if any other platforms need to override this in the future. +AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO) + +dnl ======================================================== +dnl = Flags to strip unused symbols from .so components +dnl ======================================================== +case "$target" in + *-linux*|*-kfreebsd*-gnu|*-gnu*) + MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script' + ;; + *-solaris*) + if test -z "$GNU_CC"; then + MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile' + else + if test -z "$GCC_USE_GNU_LD"; then + MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile' + else + MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script' + fi + fi + ;; + *-darwin*) + MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list' + ;; + *-mingw*) + if test -n "$GNU_CC"; then + MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script' + fi + ;; +esac + +if test -z "$COMPILE_ENVIRONMENT"; then + SKIP_COMPILER_CHECKS=1 + SKIP_LIBRARY_CHECKS=1 +fi + +dnl Configure JIT support + +case "$target" in +i?86-*) + ENABLE_ION=1 + AC_DEFINE(JS_CPU_X86) + ;; +x86_64*-*) + ENABLE_ION=1 + AC_DEFINE(JS_CPU_X64) + ;; +arm*-*) + ENABLE_ION=1 + AC_DEFINE(JS_CPU_ARM) + ;; +sparc-*) +dnl ENABLE_ION=0 + AC_DEFINE(JS_CPU_SPARC) + ;; +mips*-*) + ENABLE_ION=1 + AC_DEFINE(JS_CPU_MIPS) + ;; +esac + +if test "$HAVE_64BIT_BUILD" ; then + AC_DEFINE(JS_PUNBOX64) +else + AC_DEFINE(JS_NUNBOX32) +fi + +MOZ_ARG_DISABLE_BOOL(ion, +[ --disable-ion Disable use of the IonMonkey JIT], + ENABLE_ION= ) + +AC_SUBST(ENABLE_METHODJIT_SPEW) + +AC_SUBST(ENABLE_ION) + +if test -n "$COMPILE_ENVIRONMENT"; then + MOZ_COMPILER_OPTS +fi + +if test -z "$SKIP_COMPILER_CHECKS"; then +dnl Checks for typedefs, structures, and compiler characteristics. +dnl ======================================================== +AC_HEADER_STDC +AC_C_CONST +AC_TYPE_MODE_T +AC_TYPE_OFF_T +AC_TYPE_PID_T +AC_TYPE_SIZE_T +AC_LANG_CPLUSPLUS +AC_LANG_C +AC_MSG_CHECKING(for ssize_t) +AC_CACHE_VAL(ac_cv_type_ssize_t, + [AC_TRY_COMPILE([#include + #include ], + [ssize_t foo = 0;], + [ac_cv_type_ssize_t=true], + [ac_cv_type_ssize_t=false])]) +if test "$ac_cv_type_ssize_t" = true ; then + AC_DEFINE(HAVE_SSIZE_T) + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +MOZ_CHECK_HEADERS(endian.h) +if test "$ac_cv_header_endian_h" = yes; then + AC_DEFINE(JS_HAVE_ENDIAN_H) +fi + +MOZ_CHECK_HEADERS([machine/endian.h],[],[],[#include ]) +if test "$ac_cv_header_machine_endian_h" = yes; then + AC_DEFINE(JS_HAVE_MACHINE_ENDIAN_H) +fi + +MOZ_CHECK_HEADERS(sys/isa_defs.h) +if test "$ac_cv_header_sys_isa_defs_h" = yes; then + AC_DEFINE(JS_HAVE_SYS_ISA_DEFS_H) +fi + +AC_LANG_CPLUSPLUS + +MOZ_CXX11 + +dnl Check for .hidden assembler directive and visibility attribute. +dnl Borrowed from glibc configure.in +dnl =============================================================== +if test "$GNU_CC" -a "$OS_TARGET" != WINNT; then + AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE) + AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE) + case "$OS_TARGET" in + Darwin) + VISIBILITY_FLAGS='-fvisibility=hidden -fvisibility-inlines-hidden' + ;; + *) + case $GCC_VERSION in + 4.6*) + VISIBILITY_FLAGS="-I${DIST}/system_wrappers -include ${_topsrcdir}/config/gcc_hidden_dso_handle.h" + ;; + *) + VISIBILITY_FLAGS="-I${DIST}/system_wrappers -include ${_topsrcdir}/config/gcc_hidden.h" + ;; + esac + WRAP_SYSTEM_INCLUDES=1 + ;; + esac +fi # GNU_CC + +# visibility hidden flag for Sun Studio on Solaris +if test "$SOLARIS_SUNPRO_CC"; then +VISIBILITY_FLAGS='-xldscope=hidden' +fi # Sun Studio on Solaris + +case "${OS_TARGET}" in +WINNT|Darwin|Android) + ;; +*) + STL_FLAGS="-I${DIST}/stl_wrappers" + WRAP_STL_INCLUDES=1 + ;; +esac + +AC_SUBST(WRAP_SYSTEM_INCLUDES) +AC_SUBST_LIST(VISIBILITY_FLAGS) + +dnl Checks for header files. +dnl ======================================================== +AC_HEADER_DIRENT +case "$target_os" in +freebsd*) +# for stuff like -lXshm + CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}" + ;; +esac +MOZ_CHECK_COMMON_HEADERS + +dnl These are all the places some variant of statfs can be hiding. +MOZ_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h) + +dnl Quota support +MOZ_CHECK_HEADERS(sys/quota.h) +MOZ_CHECK_HEADERS(linux/quota.h) + +MOZ_ARG_ENABLE_BOOL(dtrace, + [ --enable-dtrace build with dtrace support if available (default=no)], + [enable_dtrace="yes"],) +if test "x$enable_dtrace" = "xyes"; then + MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1) + if test -n "$HAVE_DTRACE"; then + AC_DEFINE(INCLUDE_MOZILLA_DTRACE) + else + AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]); + fi +fi +AC_SUBST(HAVE_DTRACE) + +case $target in +*-aix4.3*|*-aix5*) + ;; +*) + MOZ_CHECK_HEADERS(sys/cdefs.h) + ;; +esac + +MOZ_LINUX_PERF_EVENT + +dnl Checks for libraries. +dnl ======================================================== +case $target in +*-hpux11.*) + ;; +*) + AC_CHECK_LIB(c_r, gethostbyname_r) + ;; +esac + +dnl We don't want to link with libdl even if it's present on OS X, since +dnl it's not used and not part of the default installation. OS/2 has dlfcn +dnl in libc. +dnl We don't want to link against libm or libpthread on Darwin since +dnl they both are just symlinks to libSystem and explicitly linking +dnl against libSystem causes issues when debugging (see bug 299601). +case $target in +*-darwin*) + ;; +*) + AC_SEARCH_LIBS(dlopen, dl, + MOZ_CHECK_HEADER(dlfcn.h, + AC_DEFINE(HAVE_DLOPEN))) + ;; +esac + +if test ! "$GNU_CXX"; then + + case $target in + *-aix*) + AC_CHECK_LIB(C_r, demangle) + ;; + *) + AC_CHECK_LIB(C, demangle) + ;; + esac +fi + +AC_CHECK_LIB(socket, socket) + +dnl ======================================================== +dnl = pthread support +dnl = Start by checking whether the system support pthreads +dnl ======================================================== +case "$target_os" in +darwin*) + USE_PTHREADS=1 + ;; +*) + AC_CHECK_LIB(pthreads, pthread_create, + USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads", + AC_CHECK_LIB(pthread, pthread_create, + USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread", + AC_CHECK_LIB(c_r, pthread_create, + USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r", + AC_CHECK_LIB(c, pthread_create, + USE_PTHREADS=1 + ) + ) + ) + ) + ;; +esac + +dnl ======================================================== +dnl Check the command line for --with-pthreads +dnl ======================================================== +MOZ_ARG_WITH_BOOL(pthreads, +[ --with-pthreads Force use of system pthread library with NSPR ], +[ if test "$USE_PTHREADS"x = x; then + AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]); +fi], + USE_PTHREADS= + _PTHREAD_LDFLAGS= +) + +dnl ======================================================== +dnl Do the platform specific pthread hackery +dnl ======================================================== +if test "$USE_PTHREADS"x != x +then + dnl + dnl See if -pthread is supported. + dnl + rm -f conftest* + ac_cv_have_dash_pthread=no + AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread) + echo 'int main() { return 0; }' | cat > conftest.c + ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1 + if test $? -eq 0; then + if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then + ac_cv_have_dash_pthread=yes + case "$target_os" in + freebsd*) +# Freebsd doesn't use -pthread for compiles, it uses them for linking + ;; + *) + CFLAGS="$CFLAGS -pthread" + CXXFLAGS="$CXXFLAGS -pthread" + ;; + esac + fi + fi + rm -f conftest* + AC_MSG_RESULT($ac_cv_have_dash_pthread) + + dnl + dnl See if -pthreads is supported. + dnl + ac_cv_have_dash_pthreads=no + if test "$ac_cv_have_dash_pthread" = "no"; then + AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads) + echo 'int main() { return 0; }' | cat > conftest.c + ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1 + if test $? -eq 0; then + if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then + ac_cv_have_dash_pthreads=yes + CFLAGS="$CFLAGS -pthreads" + CXXFLAGS="$CXXFLAGS -pthreads" + fi + fi + rm -f conftest* + AC_MSG_RESULT($ac_cv_have_dash_pthreads) + fi + + case "$target" in + *-*-freebsd*) + AC_DEFINE(_REENTRANT) + AC_DEFINE(_THREAD_SAFE) + dnl -pthread links in -lpthread, so don't specify it explicitly. + if test "$ac_cv_have_dash_pthread" = "yes"; then + _PTHREAD_LDFLAGS="-pthread" + fi + ;; + + *-*-openbsd*|*-*-bsdi*) + AC_DEFINE(_REENTRANT) + AC_DEFINE(_THREAD_SAFE) + dnl -pthread links in -lc_r, so don't specify it explicitly. + if test "$ac_cv_have_dash_pthread" = "yes"; then + _PTHREAD_LDFLAGS="-pthread" + fi + ;; + + *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*) + AC_DEFINE(_REENTRANT) + ;; + + *-aix4.3*|*-aix5*) + AC_DEFINE(_REENTRANT) + ;; + + *-hpux11.*) + AC_DEFINE(_REENTRANT) + ;; + + *-*-solaris*) + AC_DEFINE(_REENTRANT) + if test "$SOLARIS_SUNPRO_CC"; then + CFLAGS="$CFLAGS -mt" + CXXFLAGS="$CXXFLAGS -mt" + fi + ;; + esac + LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}" +fi + + +dnl Checks for library functions. +dnl ======================================================== +AC_PROG_GCC_TRADITIONAL +AC_FUNC_MEMCMP +AC_CHECK_FUNCS([getc_unlocked _getc_nolock gmtime_r localtime_r]) + +dnl check for clock_gettime(), the CLOCK_MONOTONIC clock +AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC), + ac_cv_clock_monotonic, + [for libs in "" -lrt; do + _SAVE_LIBS="$LIBS" + LIBS="$LIBS $libs" + AC_TRY_LINK([#include ], + [ struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); ], + ac_cv_clock_monotonic=$libs + LIBS="$_SAVE_LIBS" + break, + ac_cv_clock_monotonic=no) + LIBS="$_SAVE_LIBS" + done]) +if test "$ac_cv_clock_monotonic" != "no"; then + HAVE_CLOCK_MONOTONIC=1 + REALTIME_LIBS=$ac_cv_clock_monotonic + AC_DEFINE(HAVE_CLOCK_MONOTONIC) + AC_SUBST(HAVE_CLOCK_MONOTONIC) + AC_SUBST_LIST(REALTIME_LIBS) +fi + +dnl Checks for math functions. +dnl ======================================================== +AC_CHECK_LIB(m, sin) +AC_CHECK_LIB(m, __sincos, AC_DEFINE(HAVE_SINCOS)) +AC_CHECK_FUNCS([log2 log1p expm1 sqrt1pm1 acosh asinh atanh cbrt]) + + +dnl check for wcrtomb/mbrtowc +dnl ======================================================================= +if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_CACHE_CHECK(for wcrtomb, + ac_cv_have_wcrtomb, + [AC_TRY_LINK([#include ], + [mbstate_t ps={0};wcrtomb(0,'f',&ps);], + ac_cv_have_wcrtomb="yes", + ac_cv_have_wcrtomb="no")]) +if test "$ac_cv_have_wcrtomb" = "yes"; then + AC_DEFINE(HAVE_WCRTOMB) +fi +AC_CACHE_CHECK(for mbrtowc, + ac_cv_have_mbrtowc, + [AC_TRY_LINK([#include ], + [mbstate_t ps={0};mbrtowc(0,0,0,&ps);], + ac_cv_have_mbrtowc="yes", + ac_cv_have_mbrtowc="no")]) +if test "$ac_cv_have_mbrtowc" = "yes"; then + AC_DEFINE(HAVE_MBRTOWC) +fi +AC_LANG_RESTORE +fi + +AC_CACHE_CHECK( + [for res_ninit()], + ac_cv_func_res_ninit, + [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then + dnl no need for res_ninit() on NetBSD and OpenBSD + ac_cv_func_res_ninit=no + else + AC_TRY_LINK([ + #ifdef linux + #define _BSD_SOURCE 1 + #endif + #include + #include + #include + #include + ], + [int foo = res_ninit(&_res);], + [ac_cv_func_res_ninit=yes], + [ac_cv_func_res_ninit=no]) + fi + ]) + +if test "$ac_cv_func_res_ninit" = "yes"; then + AC_DEFINE(HAVE_RES_NINIT) +dnl must add the link line we do something as foolish as this... dougt +dnl else +dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT), +dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT))) +fi + +AM_LANGINFO_CODESET + +AC_LANG_C + +dnl ********************** +dnl *** va_copy checks *** +dnl ********************** +AC_CACHE_CHECK([for an implementation of va_copy()], + ac_cv_va_copy, + [AC_TRY_COMPILE([#include + #include + void f (int i, ...) { + va_list args1, args2; + va_start (args1, i); + va_copy (args2, args1); + if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42) + exit (1); + va_end (args1); va_end (args2); + }], + [f(0, 42); return 0], + [ac_cv_va_copy=yes], + [ac_cv_va_copy=no] + )] +) +AC_CACHE_CHECK([whether va_list can be copied by value], + ac_cv_va_val_copy, + [AC_TRY_COMPILE([#include + #include + void f (int i, ...) { + va_list args1, args2; + va_start (args1, i); + args2 = args1; + if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42) + exit (1); + va_end (args1); va_end (args2); + }], + [f(0, 42); return 0], + [ac_cv_va_val_copy=yes], + [ac_cv_va_val_copy=no], + )] +) +if test "x$ac_cv_va_copy" = "xyes"; then + AC_DEFINE(VA_COPY, va_copy) + AC_DEFINE(HAVE_VA_COPY) +fi + +if test "x$ac_cv_va_val_copy" = "xno"; then + AC_DEFINE(HAVE_VA_LIST_AS_ARRAY) +fi + +dnl =================================================================== +dnl ======================================================== +dnl Put your C++ language/feature checks below +dnl ======================================================== +AC_LANG_CPLUSPLUS + +ARM_ABI_PREFIX= +if test "$GNU_CC"; then + if test "$CPU_ARCH" = "arm" ; then + AC_CACHE_CHECK(for ARM EABI, + ac_cv_gcc_arm_eabi, + [AC_TRY_COMPILE([], + [ +#if defined(__ARM_EABI__) + return 0; +#else +#error Not ARM EABI. +#endif + ], + ac_cv_gcc_arm_eabi="yes", + ac_cv_gcc_arm_eabi="no")]) + if test "$ac_cv_gcc_arm_eabi" = "yes"; then + HAVE_ARM_EABI=1 + ARM_ABI_PREFIX=eabi- + else + ARM_ABI_PREFIX=oabi- + fi + fi + + TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}" +fi + +dnl Check to see if we can resolve ambiguity with |using|. +AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity, + ac_cv_cpp_ambiguity_resolving_using, + [AC_TRY_COMPILE(class X { + public: int go(const X&) {return 3;} + int jo(const X&) {return 3;} + }; + class Y : public X { + public: int go(int) {return 2;} + int jo(int) {return 2;} + using X::jo; + private: using X::go; + };, + X x; Y y; y.jo(x);, + ac_cv_cpp_ambiguity_resolving_using=yes, + ac_cv_cpp_ambiguity_resolving_using=no)]) +if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then + AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING) +fi + +dnl See if a dynamic_cast to void* gives the most derived object. +AC_CACHE_CHECK(for C++ dynamic_cast to void*, + ac_cv_cpp_dynamic_cast_void_ptr, + [AC_TRY_RUN([class X { int i; public: virtual ~X() { } }; + class Y { int j; public: virtual ~Y() { } }; + class Z : public X, public Y { int k; }; + + int main() { + Z mdo; + X *subx = (X*)&mdo; + Y *suby = (Y*)&mdo; + return !((((void*)&mdo != (void*)subx) && + ((void*)&mdo == dynamic_cast(subx))) || + (((void*)&mdo != (void*)suby) && + ((void*)&mdo == dynamic_cast(suby)))); + }], + ac_cv_cpp_dynamic_cast_void_ptr=yes, + ac_cv_cpp_dynamic_cast_void_ptr=no, + ac_cv_cpp_dynamic_cast_void_ptr=no)]) +if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then + AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR) +fi + + +# try harder, when checking for __thread support, see bug 521750 comment #33 and below +# We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is +# enabled, the linker in xcode 4.1 will crash. Without this it would crash when +# linking XUL. +_SAVE_LDFLAGS=$LDFLAGS +LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS" +AC_CACHE_CHECK(for __thread keyword for TLS variables, + ac_cv_thread_keyword, + [AC_TRY_LINK([__thread bool tlsIsMainThread = false;], + [return tlsIsMainThread;], + ac_cv_thread_keyword=yes, + ac_cv_thread_keyword=no)]) +LDFLAGS=$_SAVE_LDFLAGS +if test "$ac_cv_thread_keyword" = yes; then + # mips builds fail with TLS variables because of a binutils bug. + # See bug 528687 + case "${target}" in + mips*-*) + : + ;; + *-android*|*-linuxandroid*) + : + ;; + *) + AC_DEFINE(HAVE_THREAD_TLS_KEYWORD) + ;; + esac +fi + +dnl See if compiler supports some gcc-style attributes + +AC_CACHE_CHECK(for __attribute__((always_inline)), + ac_cv_attribute_always_inline, + [AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));], + [], + ac_cv_attribute_always_inline=yes, + ac_cv_attribute_always_inline=no)]) + +dnl End of C++ language/feature checks +AC_LANG_C + +dnl ======================================================== +dnl = Internationalization checks +dnl ======================================================== +dnl +dnl Internationalization and Locale support is different +dnl on various UNIX platforms. Checks for specific i18n +dnl features go here. + +dnl check for LC_MESSAGES +AC_CACHE_CHECK(for LC_MESSAGES, + ac_cv_i18n_lc_messages, + [AC_TRY_COMPILE([#include ], + [int category = LC_MESSAGES;], + ac_cv_i18n_lc_messages=yes, + ac_cv_i18n_lc_messages=no)]) +if test "$ac_cv_i18n_lc_messages" = yes; then + AC_DEFINE(HAVE_I18N_LC_MESSAGES) +fi + +AC_HAVE_FUNCS(localeconv) +fi # ! SKIP_COMPILER_CHECKS + +TARGET_XPCOM_ABI= +if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then + TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}" +fi + +dnl We can't run TRY_COMPILE tests on Windows, so hard-code some +dnl features that Windows actually does support. + +if test -n "$SKIP_COMPILER_CHECKS"; then + dnl Windows has malloc.h + AC_DEFINE(MALLOC_H, []) + AC_DEFINE(HAVE_FORCEINLINE) + AC_DEFINE(HAVE_LOCALECONV) +fi # SKIP_COMPILER_CHECKS + +dnl Mozilla specific options +dnl ======================================================== +dnl The macros used for command line options +dnl are defined in build/autoconf/altoptions.m4. + +dnl ======================================================== +dnl = Mozilla update channel, used for disabling features +dnl = not wanted for release. +dnl ======================================================== + +# app update channel is 'default' when not supplied. +MOZ_ARG_ENABLE_STRING([update-channel], +[ --enable-update-channel=CHANNEL + Select application update channel (default=default)], + MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`) + +if test -z "$MOZ_UPDATE_CHANNEL"; then + MOZ_UPDATE_CHANNEL=default +fi +AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL) +AC_SUBST(MOZ_UPDATE_CHANNEL) + + +dnl set GRE_MILESTONE +dnl ======================================================== +GRE_MILESTONE=`tail -n 1 "$_topsrcdir"/config/milestone.txt 2>/dev/null || tail -1 "$_topsrcdir"/config/milestone.txt` +AC_SUBST(GRE_MILESTONE) + +dnl set RELEASE_BUILD and NIGHTLY_BUILD variables depending on the cycle we're in +dnl The logic works like this: +dnl - if we have "a1" in GRE_MILESTONE, we're building Nightly (define NIGHTLY_BUILD) +dnl - otherwise, if we have "a" in GRE_MILESTONE, we're building Nightly or Aurora +dnl - otherwise, we're building Release/Beta (define RELEASE_BUILD) +case "$GRE_MILESTONE" in + *a1*) + NIGHTLY_BUILD=1 + AC_DEFINE(NIGHTLY_BUILD) + ;; + *a*) + ;; + *) + RELEASE_BUILD=1 + AC_DEFINE(RELEASE_BUILD) + ;; +esac +AC_SUBST(NIGHTLY_BUILD) +AC_SUBST(RELEASE_BUILD) + +dnl ======================================================== +dnl = +dnl = Check for external package dependencies +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(External Packages) + +MOZ_CONFIG_NSPR(js) + +dnl ======================================================== +dnl system zlib Support +dnl ======================================================== +dnl Standalone js defaults to system zlib +if test -n "$JS_STANDALONE"; then + ZLIB_DIR=yes +fi + +MOZ_ZLIB_CHECK([1.2.3]) + +if test -n "$ZLIB_IN_MOZGLUE"; then + AC_DEFINE(ZLIB_IN_MOZGLUE) +fi +AC_SUBST(ZLIB_IN_MOZGLUE) + +dnl ======================================================== +dnl system libffi Support +dnl ======================================================== +MOZ_CONFIG_FFI() + +dnl ======================================================== +dnl = +dnl = Application +dnl = +dnl ======================================================== + +MOZ_ARG_HEADER(Application) + +ENABLE_TESTS=1 + +USE_ARM_KUSER= + +case "${target}" in + arm*-android*|arm*-linuxandroid*) + USE_ARM_KUSER=1 + ;; +esac + +dnl ======================================================== +dnl Use ARM userspace kernel helpers; tell NSPR to enable +dnl their usage and use them in spidermonkey. +dnl ======================================================== +MOZ_ARG_WITH_BOOL(arm-kuser, +[ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)], + USE_ARM_KUSER=1,) +if test -n "$USE_ARM_KUSER"; then + AC_DEFINE(USE_ARM_KUSER) +fi + +dnl ======================================================== +dnl = +dnl = Components & Features +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Components and Features) + +dnl ======================================================== +dnl = Localization +dnl ======================================================== +MOZ_ARG_ENABLE_STRING(ui-locale, +[ --enable-ui-locale=ab-CD + Select the user interface locale (default: en-US)], + MOZ_UI_LOCALE=$enableval ) +AC_SUBST(MOZ_UI_LOCALE) + +dnl ======================================================== +dnl build the tests by default +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(tests, +[ --disable-tests Do not build test libraries & programs], + ENABLE_TESTS=, + ENABLE_TESTS=1 ) + +dnl ======================================================== +dnl = +dnl = Module specific options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Individual module options) + +dnl ======================================================== +dnl = +dnl = Debugging Options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Debugging and Optimizations) + +if test "$ENABLE_METHODJIT_SPEW"; then + AC_DEFINE(JS_METHODJIT_SPEW) +fi + +dnl ======================================================== +dnl = Enable code optimization. ON by default. +dnl ======================================================== +if test -z "$MOZ_OPTIMIZE_FLAGS"; then + MOZ_OPTIMIZE_FLAGS="-O" +fi + +MOZ_ARG_ENABLE_STRING(optimize, +[ --disable-optimize Disable compiler optimization + --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]], +[ if test "$enableval" != "no"; then + MOZ_OPTIMIZE=1 + if test -n "$enableval" -a "$enableval" != "yes"; then + MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'` + MOZ_OPTIMIZE=2 + fi +else + MOZ_OPTIMIZE= +fi ], MOZ_OPTIMIZE=1) + +MOZ_SET_FRAMEPTR_FLAGS + +if test "$COMPILE_ENVIRONMENT"; then +if test -n "$MOZ_OPTIMIZE"; then + AC_MSG_CHECKING([for valid optimization flags]) + _SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS" + AC_TRY_COMPILE([#include ], + [printf("Hello World\n");], + _results=yes, + _results=no) + AC_MSG_RESULT([$_results]) + if test "$_results" = "no"; then + AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS]) + fi + CFLAGS=$_SAVE_CFLAGS +fi +fi # COMPILE_ENVIRONMENT + +AC_SUBST(MOZ_OPTIMIZE) +AC_SUBST(MOZ_FRAMEPTR_FLAGS) +AC_SUBST(MOZ_OPTIMIZE_FLAGS) +AC_SUBST(MOZ_OPTIMIZE_LDFLAGS) +AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS) + +dnl ======================================================== +dnl = Disable trace logging +dnl ======================================================== +ENABLE_TRACE_LOGGING=1 +MOZ_ARG_DISABLE_BOOL(trace-logging, +[ --disable-trace-logging Disable trace logging], + ENABLE_TRACE_LOGGING= ) + +AC_SUBST(ENABLE_TRACE_LOGGING) + +if test -n "$ENABLE_TRACE_LOGGING"; then + AC_DEFINE(JS_TRACE_LOGGING) +fi + +dnl ======================================================== +dnl = Disable treating compiler warnings as errors +dnl ======================================================== +if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then + WARNINGS_AS_ERRORS='' +fi + +dnl ======================================================== +dnl = Enable jemalloc +dnl ======================================================== + +LOCAL_MOZ_MEMORY=1 +MOZ_ARG_DISABLE_BOOL(jemalloc, +[ --disable-jemalloc Don't replace memory allocator with jemalloc], + LOCAL_MOZ_MEMORY=) + +dnl Consult the command-line arguments in stand alone-builds only. In +dnl non-stand-alone builds, we always use the value of MOZ_MEMORY inherited from +dnl the top-level configure script. +if test "$JS_STANDALONE"; then + MOZ_MEMORY=$LOCAL_MOZ_MEMORY +fi + +case "${OS_TARGET}" in +Android|WINNT|Darwin) + MOZ_GLUE_IN_PROGRAM= + ;; +*) + dnl On !Android !Windows !OSX, we only want to link executables against mozglue + MOZ_GLUE_IN_PROGRAM=1 + AC_DEFINE(MOZ_GLUE_IN_PROGRAM) + ;; +esac + +if test "$MOZ_MEMORY"; then + AC_DEFINE(MOZ_MEMORY) + if test "x$MOZ_DEBUG" = "x1"; then + AC_DEFINE(MOZ_MEMORY_DEBUG) + fi + dnl The generic feature tests that determine how to compute ncpus are long and + dnl complicated. Therefore, simply define special cpp variables for the + dnl platforms we have special knowledge of. + case "${target}" in + *-darwin*) + AC_DEFINE(MOZ_MEMORY_DARWIN) + ;; + *-*freebsd*) + AC_DEFINE(MOZ_MEMORY_BSD) + ;; + *-android*|*-linuxandroid*) + AC_DEFINE(MOZ_MEMORY_LINUX) + AC_DEFINE(MOZ_MEMORY_ANDROID) + ;; + *-*linux*) + AC_DEFINE(MOZ_MEMORY_LINUX) + ;; + *-netbsd*) + AC_DEFINE(MOZ_MEMORY_BSD) + ;; + *-solaris*) + AC_DEFINE(MOZ_MEMORY_SOLARIS) + ;; + *-mingw*) + AC_DEFINE(MOZ_MEMORY_WINDOWS) + ;; + *) + AC_MSG_ERROR([--enable-jemalloc not supported on ${target}]) + ;; + esac +fi +AC_SUBST(MOZ_MEMORY) +AC_SUBST(MOZ_JEMALLOC4) +if test -n "$MOZ_JEMALLOC4"; then + AC_DEFINE(MOZ_JEMALLOC4) +fi +AC_SUBST(MOZ_CRT) +AC_SUBST(MOZ_GLUE_IN_PROGRAM) +AC_SUBST_LIST(MOZ_GLUE_WRAP_LDFLAGS) + +dnl ======================================================== +dnl = Use malloc wrapper lib +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(wrap-malloc, +[ --enable-wrap-malloc Wrap malloc calls (gnu linker only)], + _WRAP_MALLOC=1, + _WRAP_MALLOC= ) + +if test -n "$_WRAP_MALLOC"; then + if test "$GNU_CC"; then + WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=malloc,--wrap=calloc,--wrap=valloc,--wrap=free,--wrap=realloc,--wrap=memalign" + WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=__builtin_new,--wrap=__builtin_vec_new,--wrap=__builtin_delete,--wrap=__builtin_vec_delete" + WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=strdup,--wrap=strndup" + WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=posix_memalign,--wrap=malloc_usable_size" + dnl Wrap operator new and operator delete on Android. + if test "$OS_TARGET" = "Android"; then + WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_Znwj,--wrap=_Znaj,--wrap=_ZdlPv,--wrap=_ZdaPv" + fi + else + AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains]) + fi +fi + +dnl ======================================================== +dnl = Location of malloc wrapper lib +dnl ======================================================== +MOZ_ARG_WITH_STRING(wrap-malloc, +[ --with-wrap-malloc=DIR Location of malloc wrapper library], + WRAP_LDFLAGS="${WRAP_LDFLAGS} $withval") + +dnl ======================================================== +dnl = Use a smaller chunk size for GC chunks +dnl ======================================================== +dnl Use large (1MB) chunks by default. For B2G this option is used to give +dnl smaller (currently 256K) chunks. +MOZ_ARG_ENABLE_BOOL(small-chunk-size, +[ --enable-small-chunk-size Allocate memory for JS GC things in smaller chunks], + JS_GC_SMALL_CHUNK_SIZE=1, + JS_GC_SMALL_CHUNK_SIZE= ) +if test -n "$JS_GC_SMALL_CHUNK_SIZE"; then + AC_DEFINE(JS_GC_SMALL_CHUNK_SIZE) +fi + +dnl ======================================================== +dnl = Use GC tracing +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(gc-trace, +[ --enable-gc-trace Enable tracing of allocation and finalization], + JS_GC_TRACE=1, + JS_GC_TRACE= ) +if test -n "$JS_GC_TRACE"; then + AC_DEFINE(JS_GC_TRACE) +fi + +dnl ======================================================== +dnl = Use Valgrind +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(valgrind, +[ --enable-valgrind Enable Valgrind integration hooks (default=no)], + MOZ_VALGRIND=1, + MOZ_VALGRIND= ) +if test -n "$MOZ_VALGRIND"; then + MOZ_CHECK_HEADER([valgrind/valgrind.h], [], + AC_MSG_ERROR( + [--enable-valgrind specified but Valgrind is not installed])) + AC_DEFINE(MOZ_VALGRIND) + MOZ_VALGRIND=1 +fi +AC_SUBST(MOZ_VALGRIND) + +dnl ======================================================== +dnl = Use a JIT code simulator for a foreign architecture. +dnl ======================================================== +MOZ_ARG_ENABLE_STRING(simulator, +[ --enable-simulator=ARCH + Enable a JIT code simulator for the specified arch. + (arm, arm64, mips32, mips64).], + JS_SIMULATOR="$enableval") + +if test -n "$JS_SIMULATOR"; then + case "$JS_SIMULATOR" in + arm|arm64|mips32|mips64) ;; + no) + JS_SIMULATOR= + ;; + *) AC_MSG_ERROR([Invalid simulator. Valid simulators are: arm, arm64, mips32, mips64.]) ;; + esac +fi + +if test -z "$ENABLE_ION"; then + AC_DEFINE(JS_CODEGEN_NONE) + JS_CODEGEN_NONE=1 +elif test "$JS_SIMULATOR" = arm; then + if test "$CPU_ARCH" != "x86"; then + AC_MSG_ERROR([The ARM simulator only works on x86.]) + fi + AC_DEFINE(JS_SIMULATOR) + AC_DEFINE(JS_SIMULATOR_ARM) + AC_DEFINE(JS_DISASM_ARM) + AC_DEFINE(JS_CODEGEN_ARM) + JS_SIMULATOR_ARM=1 + JS_DISASM_ARM=1 + JS_CODEGEN_ARM=1 +elif test "$JS_SIMULATOR" = arm64; then + if test "$CPU_ARCH" != "x86_64"; then + AC_MSG_ERROR([The ARM64 simulator only works on x86_64.]) + fi + AC_DEFINE(JS_SIMULATOR) + AC_DEFINE(JS_SIMULATOR_ARM64) + AC_DEFINE(JS_CODEGEN_ARM64) + JS_SIMULATOR_ARM64=1 + JS_CODEGEN_ARM64=1 +elif test "$JS_SIMULATOR" = mips32; then + if test "$CPU_ARCH" != "x86"; then + AC_MSG_ERROR([The MIPS32 simulator only works on x86.]) + fi + AC_DEFINE(JS_SIMULATOR) + AC_DEFINE(JS_SIMULATOR_MIPS32) + AC_DEFINE(JS_CODEGEN_MIPS32) + JS_SIMULATOR_MIPS32=1 + JS_CODEGEN_MIPS32=1 +elif test "$JS_SIMULATOR" = mips64; then + if test "$CPU_ARCH" != "x86_64"; then + AC_MSG_ERROR([The MIPS64 simulator only works on x86_64.]) + fi + AC_DEFINE(JS_SIMULATOR) + AC_DEFINE(JS_SIMULATOR_MIPS64) + AC_DEFINE(JS_CODEGEN_MIPS64) + JS_SIMULATOR_MIPS64=1 + JS_CODEGEN_MIPS64=1 +elif test "$CPU_ARCH" = "x86"; then + AC_DEFINE(JS_CODEGEN_X86) + JS_CODEGEN_X86=1 +elif test "$CPU_ARCH" = "x86_64"; then + AC_DEFINE(JS_CODEGEN_X64) + JS_CODEGEN_X64=1 + + dnl Signal-handler OOM checking requires large mprotected guard regions, so + dnl currently it is only implemented on x64. + AC_DEFINE(ASMJS_MAY_USE_SIGNAL_HANDLERS_FOR_OOB) + ASMJS_MAY_USE_SIGNAL_HANDLERS_FOR_OOB=1 +elif test "$CPU_ARCH" = "arm"; then + AC_DEFINE(JS_CODEGEN_ARM) + JS_CODEGEN_ARM=1 + if test -n "$MOZ_DEBUG"; then + AC_DEFINE(JS_DISASM_ARM) + JS_DISASM_ARM=1 + fi +elif test "$CPU_ARCH" = "mips32"; then + AC_DEFINE(JS_CODEGEN_MIPS32) + JS_CODEGEN_MIPS32=1 +elif test "$CPU_ARCH" = "mips64"; then + AC_DEFINE(JS_CODEGEN_MIPS64) + JS_CODEGEN_MIPS64=1 +fi + +AC_SUBST(JS_SIMULATOR) +AC_SUBST(JS_SIMULATOR_ARM) +AC_SUBST(JS_SIMULATOR_ARM64) +AC_SUBST(JS_SIMULATOR_MIPS32) +AC_SUBST(JS_SIMULATOR_MIPS64) +AC_SUBST(JS_CODEGEN_ARM) +AC_SUBST(JS_CODEGEN_ARM64) +AC_SUBST(JS_CODEGEN_MIPS32) +AC_SUBST(JS_CODEGEN_MIPS64) +AC_SUBST(JS_CODEGEN_X86) +AC_SUBST(JS_CODEGEN_X64) +AC_SUBST(JS_CODEGEN_NONE) +AC_SUBST(JS_DISASM_ARM) +AC_SUBST(ASMJS_MAY_USE_SIGNAL_HANDLERS_FOR_OOB) + +dnl ======================================================== +dnl jprof +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(jprof, +[ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.], + MOZ_JPROF=1, + MOZ_JPROF= ) +if test -n "$MOZ_JPROF"; then + MOZ_PROFILING=1 + AC_DEFINE(MOZ_JPROF) +fi + +dnl ======================================================== +dnl instruments +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(instruments, +[ --enable-instruments Enable instruments remote profiling. Implies --enable-profiling.], + MOZ_INSTRUMENTS=1, + MOZ_INSTRUMENTS= ) +if test -n "$MOZ_INSTRUMENTS"; then + MOZ_PROFILING=1 + AC_DEFINE(MOZ_INSTRUMENTS) + LIBS="$LIBS -framework CoreFoundation" +fi + +dnl ======================================================== +dnl callgrind +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(callgrind, +[ --enable-callgrind Enable callgrind profiling. Implies --enable-profiling.], + MOZ_CALLGRIND=1, + MOZ_CALLGRIND= ) +if test -n "$MOZ_CALLGRIND"; then + MOZ_PROFILING=1 + AC_DEFINE(MOZ_CALLGRIND) +fi + +dnl ======================================================== +dnl vtune +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(vtune, +[ --enable-vtune Enable vtune profiling. Implies --enable-profiling.], + MOZ_VTUNE=1, + MOZ_VTUNE= ) + +dnl ======================================================== +dnl JitSpew. Enabled by default in debug builds. +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(jitspew, +[ --enable-jitspew Enable the Jit spew and IONFLAGS.], + JS_JITSPEW=1, + JS_JITSPEW= ) + +if test -n "$JS_JITSPEW" -o -n "$MOZ_DEBUG"; then + AC_DEFINE(JS_JITSPEW) +fi + +AC_SUBST(JS_JITSPEW) + +dnl ======================================================== +dnl Debug (see Bug 939505) +dnl ======================================================== +if test -n "$MOZ_DEBUG"; then + AC_DEFINE(JS_DEBUG) +fi + +dnl ======================================================== +dnl Profiling +dnl ======================================================== +if test -n "$MOZ_PROFILING"; then + AC_DEFINE(MOZ_PROFILING) + + case "$OS_TARGET" in + Linux) MOZ_VTUNE=1 ;; + WINNT) MOZ_VTUNE=1 ;; + esac +fi + +if test -n "$MOZ_VTUNE"; then + AC_DEFINE(MOZ_VTUNE) +fi + +dnl ======================================================== +dnl Zealous JavaScript GC +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(gczeal, +[ --enable-gczeal Enable zealous GCing], + JS_GC_ZEAL=1, + JS_GC_ZEAL= ) +if test -n "$JS_GC_ZEAL" -o -n "$MOZ_DEBUG"; then + AC_DEFINE(JS_GC_ZEAL) +fi + +dnl ======================================================== +dnl = Enable perf logging for ion. +dnl = Perf logging is OFF by default +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(perf, +[ --enable-perf Enable Linux perf integration], + JS_ION_PERF=1, + JS_ION_PERF= ) +if test -n "$JS_ION_PERF"; then + AC_DEFINE(JS_ION_PERF) +fi + +dnl ======================================================== +dnl Enable changes that make the shell more deterministic +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(more-deterministic, +[ --enable-more-deterministic + Enable changes that make the shell more deterministic], + JS_MORE_DETERMINISTIC=1, + JS_MORE_DETERMINISTIC= ) +if test -n "$JS_MORE_DETERMINISTIC"; then + AC_DEFINE(JS_MORE_DETERMINISTIC) +fi + +dnl ======================================================== +dnl Enable breakpoint for artificial OOMs +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(oom-breakpoint, +[ --enable-oom-breakpoint + Enable a breakpoint function for artificial OOMs], + JS_OOM_BREAKPOINT=1, + JS_OOM_BREAKPOINT= ) +if test -n "$JS_OOM_BREAKPOINT"; then + AC_DEFINE(JS_OOM_BREAKPOINT) +fi + +dnl ======================================================== +dnl = Enable using the clang plugin to build +dnl ======================================================== + +MOZ_CONFIG_CLANG_PLUGIN + +dnl ======================================================== +dnl = Enable static checking using sixgill +dnl ======================================================== + +MOZ_ARG_WITH_STRING(sixgill, +[ --with-sixgill=path/to/sixgill + Enable static checking of code using sixgill], + SIXGILL_PATH=$withval, + SIXGILL_PATH= ) + +if test -n "$SIXGILL_PATH"; then + if test ! -x "$SIXGILL_PATH/bin/xdbfind" || test ! -f "$SIXGILL_PATH/gcc/xgill.so" || test ! -x "$SIXGILL_PATH/scripts/wrap_gcc/g++"; then + AC_MSG_ERROR([The sixgill plugin and binaries are not at the specified path.]) + fi +fi +AC_SUBST(SIXGILL_PATH) + +dnl ======================================================== +dnl = Enable stripping of libs & executables +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(strip, +[ --enable-strip Enable stripping of libs & executables ], + ENABLE_STRIP=1, + ENABLE_STRIP= ) + +dnl ======================================================== +dnl = Enable stripping of libs & executables when packaging +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(install-strip, +[ --enable-install-strip Enable stripping of libs & executables when packaging ], + PKG_SKIP_STRIP= , + PKG_SKIP_STRIP=1) + +dnl ======================================================== +dnl = +dnl = Profiling and Instrumenting +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Profiling and Instrumenting) + +dnl ======================================================== +dnl = Support for demangling undefined symbols +dnl ======================================================== +if test -z "$SKIP_LIBRARY_CHECKS"; then + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=) + AC_LANG_RESTORE +fi + +# Demangle only for debug or DMD builds +MOZ_DEMANGLE_SYMBOLS= +if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$MOZ_DMD"; then + MOZ_DEMANGLE_SYMBOLS=1 + AC_DEFINE(MOZ_DEMANGLE_SYMBOLS) +fi +AC_SUBST(MOZ_DEMANGLE_SYMBOLS) + +dnl ======================================================== +dnl JIT observers +dnl ======================================================== + +MOZ_ARG_WITH_STRING(jitreport-granularity, +[ --jitreport-granularity=N + Default granularity at which to report JIT code + to external tools + 0 - no info + 1 - code ranges for whole functions only + 2 - per-line information + 3 - per-op information], + JITREPORT_GRANULARITY=$withval, + JITREPORT_GRANULARITY=3) + +AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY) + +dnl ======================================================== +dnl = +dnl = Misc. Options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Misc. Options) + +dnl ======================================================== +dnl update xterm title +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(xterm-updates, +[ --enable-xterm-updates Update XTERM titles with current command.], + MOZ_UPDATE_XTERM=1, + MOZ_UPDATE_XTERM= ) + +if test -z "$SKIP_COMPILER_CHECKS"; then +dnl ======================================================== +dnl = +dnl = Compiler Options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Compiler Options) + +dnl ======================================================== +dnl Check for gcc -pipe support +dnl ======================================================== +AC_MSG_CHECKING([for -pipe support]) +if test -n "$GNU_CC" -a -n "$GNU_CXX"; then + dnl Any gcc that supports firefox supports -pipe. + CFLAGS="$CFLAGS -pipe" + CXXFLAGS="$CXXFLAGS -pipe" + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi + +dnl ======================================================== +dnl Profile guided optimization (gcc checks) +dnl ======================================================== +dnl Test for profiling options +dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use + +_SAVE_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction" + +AC_MSG_CHECKING([whether C compiler supports -fprofile-generate]) +AC_TRY_COMPILE([], [return 0;], + [ PROFILE_GEN_CFLAGS="-fprofile-generate" + result="yes" ], result="no") +AC_MSG_RESULT([$result]) + +if test $result = "yes"; then + PROFILE_GEN_LDFLAGS="-fprofile-generate" + PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch" + PROFILE_USE_LDFLAGS="-fprofile-use" +fi + +CFLAGS="$_SAVE_CFLAGS" + +if test -n "$INTEL_CC"; then + PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ." + PROFILE_GEN_LDFLAGS= + PROFILE_USE_CFLAGS="-prof-use -prof-dir ." + PROFILE_USE_LDFLAGS= +fi + +dnl Sun Studio on Solaris +if test "$SOLARIS_SUNPRO_CC"; then + PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application" + PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application" + PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application" + PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application" +fi + +AC_SUBST(PROFILE_GEN_CFLAGS) +AC_SUBST(PROFILE_GEN_LDFLAGS) +AC_SUBST(PROFILE_USE_CFLAGS) +AC_SUBST(PROFILE_USE_LDFLAGS) + +AC_LANG_CPLUSPLUS + +dnl ======================================================== +dnl Check for tm_zone, tm_gmtoff in struct tm +dnl ======================================================== +AC_CACHE_CHECK(for tm_zone tm_gmtoff in struct tm, + ac_cv_struct_tm_zone_tm_gmtoff, + [AC_TRY_COMPILE([#include ], + [struct tm tm; tm.tm_zone = 0; tm.tm_gmtoff = 1;], + [ac_cv_struct_tm_zone_tm_gmtoff="yes"], + [ac_cv_struct_tm_zone_tm_gmtoff="no"])]) +if test "$ac_cv_struct_tm_zone_tm_gmtoff" = "yes" ; then + AC_DEFINE(HAVE_TM_ZONE_TM_GMTOFF) +fi +fi # ! SKIP_COMPILER_CHECKS + +AC_DEFINE(CPP_THROW_NEW, [throw()]) +AC_LANG_C + +MOZ_EXPAND_LIBS + +dnl ======================================================== +dnl = +dnl = Build depencency options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Build dependencies) + +if test "$GNU_CC" -a "$GNU_CXX"; then + _DEPEND_CFLAGS='-MD -MP -MF $(MDDEPDIR)/$(@F).pp' +dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk +elif test "$SOLARIS_SUNPRO_CC"; then + _DEPEND_CFLAGS= +else + dnl Don't override this for MSVC + if test -z "$_WIN32_MSVC"; then + _USE_CPP_INCLUDE_FLAG= + _DEFINES_CFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT' + _DEFINES_CXXFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT' + else + echo '#include ' > dummy-hello.c + changequote(,) + dnl This output is localized, split at the first double space or colon and space. + _CL_PREFIX_REGEX="^\([^:]*:.*[ :] \)\(.*\\\stdio.h\)$" + CL_INCLUDES_PREFIX=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\1/p'` + _CL_STDIO_PATH=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\2/p'` + changequote([,]) + if ! test -e "$_CL_STDIO_PATH"; then + AC_MSG_ERROR([Unable to parse cl -showIncludes prefix. This compiler's locale has an unsupported formatting.]) + fi + if test -z "$CL_INCLUDES_PREFIX"; then + AC_MSG_ERROR([Cannot find cl -showIncludes prefix.]) + fi + AC_SUBST(CL_INCLUDES_PREFIX) + rm -f dummy-hello.c + + dnl Make sure that the build system can handle non-ASCII characters + dnl in environment variables to prevent it from breaking silently on + dnl non-English systems. + NONASCII=$'\241\241' + AC_SUBST(NONASCII) + fi +fi + +dnl ======================================================== +dnl = Disable -fstrict-aliasing with GCC 4.4 and earlier. +dnl = See bugs 821502 and 832623. +dnl ======================================================== +if test -n "$GNU_CC" -a -z "$CLANG_CC"; then + dnl GCC 3.x isn't supported, so we don't need to check for that. + if test "$GCC_MAJOR_VERSION" -eq "4" -a "$GCC_MINOR_VERSION" -lt "5" ; then + CFLAGS="$CFLAGS -fno-strict-aliasing" + CXXFLAGS="$CXXFLAGS -fno-strict-aliasing" + fi +fi + +dnl ======================================================== +dnl = Link js shell to system readline +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(readline, +[ --enable-readline Link js shell to system readline library], + JS_WANT_READLINE=1, + JS_WANT_READLINE= ) + +JS_BUNDLED_EDITLINE= +EDITLINE_LIBS= +JS_DISABLE_SHELL= + +case "$target" in +*-mingw*) + NO_EDITLINE=1 + ;; +*) + ;; +esac + +if test -z "$SKIP_LIBRARY_CHECKS" -a -z "$NO_EDITLINE"; then + if test -n "$JS_WANT_READLINE"; then + AC_CHECK_LIB(readline, readline, + EDITLINE_LIBS="-lreadline", + AC_MSG_ERROR([No system readline library found.])) + else + dnl By default, we use editline + JS_BUNDLED_EDITLINE=1 + fi + + dnl Either way, we want to build with line editing support. + AC_DEFINE(EDITLINE) +fi +AC_SUBST(JS_BUNDLED_EDITLINE) +AC_SUBST(JS_DISABLE_SHELL) +AC_SUBST_LIST(EDITLINE_LIBS) + +dnl ======================================================== +dnl = +dnl = Standalone module options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla)) + +dnl ======================================================== +dnl = Build jsctypes if it's enabled +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(ctypes, +[ --enable-ctypes Enable js-ctypes (default=no)], + BUILD_CTYPES=1, + BUILD_CTYPES= ) +JS_HAS_CTYPES=$BUILD_CTYPES +AC_SUBST(JS_HAS_CTYPES) +AC_SUBST(BUILD_CTYPES) +if test "$JS_HAS_CTYPES"; then + dnl Error out if we're on MSVC and MASM is unavailable. + if test -n "$_MSC_VER" -a \( "$AS" != "ml.exe" -a "$AS" != "ml64.exe" \); then + AC_MSG_ERROR([\"$AS\" is not a suitable assembler to build js-ctypes. If you are building with MS Visual Studio 8 Express, you may download the MASM 8.0 package, upgrade to Visual Studio 9 Express, or install the Vista SDK. Or do not use --enable-ctypes.]) + fi + AC_DEFINE(JS_HAS_CTYPES) +fi + +if test "$MOZ_DEBUG" -o "$MOZ_DMD"; then + MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS= +fi + +dnl ======================================================== +dnl = +dnl = Options for generating the shell as a script +dnl = +dnl ======================================================== + +MOZ_ARG_WITH_STRING(qemu-exe, +[ --with-qemu-exe=path Use path as an arm emulator on host platforms], + QEMU_EXE=$withval) +AC_SUBST(QEMU_EXE) +MOZ_ARG_WITH_STRING(cross-lib, +[ --with-cross-lib=dir Use dir as the location for arm libraries], + CROSS_LIB=$withval, + CROSS_LIB=/usr/$target) +AC_SUBST(CROSS_LIB) +dnl ======================================================== +dnl = +dnl = Maintainer debug option (no --enable equivalent) +dnl = +dnl ======================================================== + +AC_SUBST(AR) +AC_SUBST(AR_FLAGS) +AC_SUBST(AR_LIST) +AC_SUBST(AR_EXTRACT) +AC_SUBST(AR_DELETE) +AC_SUBST(AS) +AC_SUBST(ASFLAGS) +AC_SUBST(AS_DASH_C_FLAG) +AC_SUBST(LD) +AC_SUBST(RC) +AC_SUBST(RCFLAGS) +AC_SUBST(MC) +AC_SUBST(WINDRES) +AC_SUBST(IMPLIB) +AC_SUBST(FILTER) +AC_SUBST(BIN_FLAGS) +AC_SUBST(MOZ_DEBUG) +AC_SUBST(MOZ_DEBUG_SYMBOLS) +AC_SUBST(MOZ_DEBUG_LDFLAGS) +AC_SUBST(WARNINGS_AS_ERRORS) +AC_SUBST(MOZ_JPROF) +AC_SUBST(MOZ_INSTRUMENTS) +AC_SUBST(MOZ_CALLGRIND) +AC_SUBST(MOZ_VTUNE) +AC_SUBST(MOZ_PROFILING) +AC_SUBST(LIBICONV) + +AC_SUBST(ENABLE_TESTS) + +AC_SUBST(ENABLE_STRIP) +AC_SUBST(PKG_SKIP_STRIP) +AC_SUBST(INCREMENTAL_LINKER) +AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS) + +AC_SUBST(MOZ_FIX_LINK_PATHS) + +AC_SUBST(USE_DEPENDENT_LIBS) + +AC_SUBST(MOZ_BUILD_ROOT) + +AC_SUBST(MOZ_POST_PROGRAM_COMMAND) + +AC_SUBST(MOZ_APP_NAME) +AC_SUBST(MOZ_APP_DISPLAYNAME) +AC_SUBST(MOZ_APP_VERSION) + +AC_SUBST(MOZ_PKG_SPECIAL) + +AC_SUBST(MOZILLA_OFFICIAL) + +dnl Echo the CFLAGS to remove extra whitespace. +CFLAGS=`echo \ + $_WARNINGS_CFLAGS \ + $CFLAGS` + +CXXFLAGS=`echo \ + $_WARNINGS_CXXFLAGS \ + $CXXFLAGS` + +COMPILE_CFLAGS=`echo \ + $_DEFINES_CFLAGS \ + $COMPILE_CFLAGS` + +COMPILE_CXXFLAGS=`echo \ + $_DEFINES_CXXFLAGS \ + $COMPILE_CXXFLAGS` + +HOST_CFLAGS=`echo \ + $HOST_CFLAGS` + +HOST_CXXFLAGS=`echo \ + $HOST_CXXFLAGS` + +AC_SUBST(_DEPEND_CFLAGS) +AC_SUBST(MOZ_NATIVE_NSPR) + +if test -n "$MOZ_NUWA_PROCESS"; then + AC_DEFINE(MOZ_NUWA_PROCESS) +fi + +OS_CFLAGS="$CFLAGS" +OS_CXXFLAGS="$CXXFLAGS" +OS_CPPFLAGS="$CPPFLAGS" +OS_COMPILE_CFLAGS="$COMPILE_CFLAGS" +OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS" +OS_LDFLAGS="$LDFLAGS" +OS_LIBS="$LIBS" +AC_SUBST(OS_CFLAGS) +AC_SUBST(OS_CXXFLAGS) +AC_SUBST(OS_CPPFLAGS) +AC_SUBST(OS_COMPILE_CFLAGS) +AC_SUBST(OS_COMPILE_CXXFLAGS) +AC_SUBST(OS_LDFLAGS) +AC_SUBST(OS_LIBS) +AC_SUBST(CROSS_COMPILE) + +AC_SUBST(HOST_CC) +AC_SUBST(HOST_CXX) +AC_SUBST(HOST_CFLAGS) +AC_SUBST(HOST_CXXFLAGS) +AC_SUBST(HOST_LDFLAGS) +AC_SUBST(HOST_OPTIMIZE_FLAGS) +AC_SUBST(HOST_AR) +AC_SUBST(HOST_AR_FLAGS) +AC_SUBST(HOST_LD) +AC_SUBST(HOST_RANLIB) +AC_SUBST(HOST_BIN_SUFFIX) +AC_SUBST(HOST_OS_ARCH) + +AC_SUBST(TARGET_CPU) +AC_SUBST(TARGET_VENDOR) +AC_SUBST(TARGET_OS) +AC_SUBST(TARGET_XPCOM_ABI) +AC_SUBST(OS_TARGET) +AC_SUBST(OS_ARCH) +AC_SUBST(OS_RELEASE) +AC_SUBST(OS_TEST) +AC_SUBST(CPU_ARCH) +AC_SUBST(INTEL_ARCHITECTURE) + +AC_SUBST(WRAP_LDFLAGS) +AC_SUBST(MKSHLIB) +AC_SUBST(MKCSHLIB) +AC_SUBST(DSO_CFLAGS) +AC_SUBST(DSO_PIC_CFLAGS) +AC_SUBST(DSO_LDOPTS) +AC_SUBST(LIB_PREFIX) +AC_SUBST(DLL_PREFIX) +AC_SUBST(DLL_SUFFIX) +AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX") +AC_SUBST(LIB_SUFFIX) +AC_SUBST(OBJ_SUFFIX) +AC_SUBST(BIN_SUFFIX) +AC_SUBST(ASM_SUFFIX) +AC_SUBST(IMPORT_LIB_SUFFIX) +AC_SUBST(USE_N32) +AC_SUBST(CC_VERSION) +AC_SUBST(CXX_VERSION) +AC_SUBST(MSMANIFEST_TOOL) +AC_SUBST(MOZ_LINKER) +AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS) +AC_SUBST(WIN32_GUI_EXE_LDFLAGS) + +AC_CHECK_FUNCS(posix_fadvise posix_fallocate) + +dnl Set various defines and substitutions +dnl ======================================================== + +if test "$OS_ARCH" = "Darwin"; then + if test -n "$MOZ_IOS"; then + AC_DEFINE(XP_IOS) + else + AC_DEFINE(XP_MACOSX) + fi + AC_DEFINE(XP_DARWIN) + AC_DEFINE(XP_UNIX) +elif test "$OS_ARCH" != "WINNT"; then + AC_DEFINE(XP_UNIX) +fi + +if test "$MOZ_DEBUG"; then + AC_DEFINE(MOZ_REFLOW_PERF) + AC_DEFINE(MOZ_REFLOW_PERF_DSP) +fi + +if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then + AC_DEFINE(MOZ_ACCESSIBILITY_ATK) + ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk` + ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'` + ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'` + ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'` + AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION) + AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION) + AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION) +fi + +dnl ======================================================== +dnl Determine options to use for running the preprocessor. +dnl ======================================================== + +if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT"; then + PREPROCESS_OPTION="-P -Fi" +else + PREPROCESS_OPTION="-E -o " +fi + +AC_SUBST(PREPROCESS_OPTION) + +dnl ======================================================== +dnl ECMAScript Internationalization API Support (uses ICU) +dnl ======================================================== + +dnl top-level configure may override this with --without-intl-api +_INTL_API=yes + +MOZ_CONFIG_ICU() + +MOZ_SUBCONFIGURE_ICU() + +dnl ======================================================== +dnl JavaScript shell +dnl ======================================================== + +MOZ_CHECK_ALLOCATOR + +AC_CHECK_FUNCS(setlocale localeconv) + +AC_SUBST(MOZILLA_VERSION) + +AC_SUBST(ac_configure_args) + +AC_SUBST(TOOLCHAIN_PREFIX) + +if test -n "$JS_STANDALONE"; then +MOZ_APP_NAME="mozjs" +MOZ_APP_VERSION="$MOZILLA_SYMBOLVERSION" +JS_LIBRARY_NAME="mozjs-$MOZILLA_SYMBOLVERSION" +else +JS_LIBRARY_NAME="mozjs" +fi +JS_CONFIG_LIBS="$NSPR_LIBS $LIBS" +if test -n "$GNU_CC"; then +JS_CONFIG_MOZ_JS_LIBS='-L${libdir} -l${JS_LIBRARY_NAME}' +else +JS_CONFIG_MOZ_JS_LIBS='${libdir}/${JS_LIBRARY_NAME}.lib' +fi +AC_SUBST(JS_LIBRARY_NAME) +AC_SUBST(JS_CONFIG_MOZ_JS_LIBS) +AC_SUBST(JS_CONFIG_LIBS) + +MOZ_SUBCONFIGURE_FFI() +MOZ_SUBCONFIGURE_JEMALLOC() + +# Avoid using obsolete NSPR features +AC_DEFINE(NO_NSPR_10_SUPPORT) + +dnl Spit out some output +dnl ======================================================== +MOZ_CREATE_CONFIG_STATUS() + +if test "$JS_STANDALONE"; then + MOZ_RUN_CONFIG_STATUS() +fi diff --git a/old-configure.in b/old-configure.in new file mode 100644 index 000000000000..4b5cd0f69bdf --- /dev/null +++ b/old-configure.in @@ -0,0 +1,9184 @@ +dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*- +dnl vi: set tabstop=4 shiftwidth=4 expandtab syntax=m4: +dnl This Source Code Form is subject to the terms of the Mozilla Public +dnl License, v. 2.0. If a copy of the MPL was not distributed with this +dnl file, You can obtain one at http://mozilla.org/MPL/2.0/. + +dnl Process this file with autoconf to produce a configure script. +dnl ======================================================== + +AC_PREREQ(2.13) +AC_INIT(config/config.mk) +AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf) +AC_CANONICAL_SYSTEM +TARGET_CPU="${target_cpu}" +TARGET_VENDOR="${target_vendor}" +TARGET_OS="${target_os}" + +dnl ======================================================== +dnl = +dnl = Don't change the following two lines. Doing so breaks: +dnl = +dnl = CFLAGS="-foo" ./configure +dnl = +dnl ======================================================== +CFLAGS="${CFLAGS=}" +CPPFLAGS="${CPPFLAGS=}" +CXXFLAGS="${CXXFLAGS=}" +LDFLAGS="${LDFLAGS=}" +HOST_CFLAGS="${HOST_CFLAGS=}" +HOST_CXXFLAGS="${HOST_CXXFLAGS=}" +HOST_LDFLAGS="${HOST_LDFLAGS=}" +RUSTFLAGS="${RUSTFLAGS=}" + +dnl ======================================================== +dnl = Preserve certain environment flags passed to configure +dnl = We want sub projects to receive the same flags +dnl = untainted by this configure script +dnl ======================================================== +_SUBDIR_CC="$CC" +_SUBDIR_CXX="$CXX" +_SUBDIR_CFLAGS="$CFLAGS" +_SUBDIR_CPPFLAGS="$CPPFLAGS" +_SUBDIR_CXXFLAGS="$CXXFLAGS" +_SUBDIR_LDFLAGS="$LDFLAGS" +_SUBDIR_HOST_CC="$HOST_CC" +_SUBDIR_HOST_CFLAGS="$HOST_CFLAGS" +_SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS" +_SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS" +_SUBDIR_CONFIG_ARGS="$ac_configure_args" + +dnl Set the version number of the libs included with mozilla +dnl ======================================================== +MOZJPEG=62 +MOZPNG=10619 +NSPR_VERSION=4 +NSPR_MINVER=4.12 +NSS_VERSION=3 + +dnl Set the minimum version of toolkit libs used by mozilla +dnl ======================================================== +GLIB_VERSION=2.22 +# 2_26 is the earliest version we can set GLIB_VERSION_MIN_REQUIRED. +# The macro won't be used when compiling with earlier versions anyway. +GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26 +GIO_VERSION=2.22 +PERL_VERSION=5.006 +CAIRO_VERSION=1.10 +PANGO_VERSION=1.22.0 +GTK2_VERSION=2.18.0 +GTK3_VERSION=3.4.0 +GDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_4 +WINDRES_VERSION=2.14.90 +W32API_VERSION=3.14 +GNOMEUI_VERSION=2.2.0 +GCONF_VERSION=1.2.1 +STARTUP_NOTIFICATION_VERSION=0.8 +DBUS_VERSION=0.60 +SQLITE_VERSION=3.10.2 +FONTCONFIG_VERSION=2.7.0 + +MSMANIFEST_TOOL= + +dnl Set various checks +dnl ======================================================== +MISSING_X= +AC_PROG_AWK + +dnl Initialize the Pthread test variables early so they can be +dnl overridden by each platform. +dnl ======================================================== +MOZ_USE_PTHREADS= +_PTHREAD_LDFLAGS="" + +dnl Do not allow objdir == srcdir builds. +dnl ============================================================== +_topsrcdir=`cd \`dirname $0\`; pwd -W 2>/dev/null || pwd -P` +_objdir=`pwd -P` + +if test "$_topsrcdir" = "$_objdir"; then + echo " ***" + echo " * Building directly in the main source directory is not allowed." + echo " *" + echo " * To build, you must run configure from a separate directory" + echo " * (referred to as an object directory)." + echo " *" + echo " * If you are building with a mozconfig, you will need to change your" + echo " * mozconfig to point to a different object directory." + echo " ***" + exit 1 +fi + +# Check for a couple representative files in the source tree +_conflict_files= +for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do + if test -f $file; then + _conflict_files="$_conflict_files $file" + fi +done +if test "$_conflict_files"; then + echo "***" + echo "* Your source tree contains these files:" + for file in $_conflict_files; do + echo "* $file" + done + cat 1>&2 <<-EOF + * This indicates that you previously built in the source tree. + * A source tree build can confuse the separate objdir build. + * + * To clean up the source tree: + * 1. cd $_topsrcdir + * 2. gmake distclean + *** +EOF + exit 1 + break +fi +MOZ_BUILD_ROOT=`pwd -W 2>/dev/null || pwd -P` +DIST="$MOZ_BUILD_ROOT/dist" + +MOZ_PYTHON + +MOZ_DEFAULT_COMPILER + +COMPILE_ENVIRONMENT=1 +MOZ_ARG_DISABLE_BOOL(compile-environment, +[ --disable-compile-environment + Disable compiler/library checks.], + COMPILE_ENVIRONMENT= ) +AC_SUBST(COMPILE_ENVIRONMENT) + +MOZ_ARG_ENABLE_BOOL(artifact-builds, +[ --enable-artifact-builds + Download and use prebuilt binary artifacts.], + MOZ_ARTIFACT_BUILDS=1, + MOZ_ARTIFACT_BUILDS= ) +AC_SUBST(MOZ_ARTIFACT_BUILDS) + +if test -n "$MOZ_ARTIFACT_BUILDS"; then + dnl Artifact builds imply --disable-compile-environment. + COMPILE_ENVIRONMENT= +fi + +MOZ_BUILD_BACKEND(.) + +MOZ_ARG_WITH_STRING(l10n-base, +[ --with-l10n-base=DIR path to l10n repositories], + L10NBASEDIR=$withval) +if test -n "$L10NBASEDIR"; then + if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then + AC_MSG_ERROR([--with-l10n-base must specify a path]) + elif test -d "$L10NBASEDIR"; then + L10NBASEDIR=`cd "$L10NBASEDIR" && pwd -P` + else + AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist]) + fi +fi +AC_SUBST(L10NBASEDIR) + +dnl Check for Perl first -- needed for win32 SDK checks +MOZ_PATH_PROGS(PERL, $PERL perl5 perl ) +if test -z "$PERL" -o "$PERL" = ":"; then + AC_MSG_ERROR([perl not found in \$PATH]) +fi + +if test -n "$MOZTTDIR" -a ! -d "$MOZTTDIR" ; then + AC_MSG_ERROR([MOZTTDIR '$MOZTTDIR' isn't a valid directory]) +fi + +AC_SUBST(MOZTTDIR) +if test -n "$MOZTTDIR" ; then + AC_DEFINE(PACKAGE_MOZTT) +fi + +MOZ_ARG_WITH_STRING(gonk, +[ --with-gonk=DIR + location of gonk dir], + gonkdir=$withval) + +MOZ_ARG_WITH_STRING(gonk-toolchain-prefix, +[ --with-gonk-toolchain-prefix=DIR + prefix to gonk toolchain commands], + gonk_toolchain_prefix=$withval) + +if test -n "$gonkdir" ; then + kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"` + android_source="$gonkdir" + ANDROID_SOURCE="$android_source" + ANDROID_NDK="${ANDROID_SOURCE}/ndk" + dnl Default to ICS + ANDROID_VERSION=15 + if test -n "${PLATFORM_SDK_VERSION}"; then + ANDROID_VERSION="${PLATFORM_SDK_VERSION}" + fi + + dnl set up compilers + TOOLCHAIN_PREFIX="$gonk_toolchain_prefix" + AS="$gonk_toolchain_prefix"as + CC="$gonk_toolchain_prefix"gcc + CXX="$gonk_toolchain_prefix"g++ + CPP="$gonk_toolchain_prefix"cpp + LD="$gonk_toolchain_prefix"ld + AR="$gonk_toolchain_prefix"ar + RANLIB="$gonk_toolchain_prefix"ranlib + STRIP="$gonk_toolchain_prefix"strip + OBJCOPY="$gonk_toolchain_prefix"objcopy + + if ! test -e "$gonkdir/ndk/sources/cxx-stl/stlport/src/iostream.cpp"; then + AC_MSG_ERROR([Couldn't find path to stlport sources in the gonk tree]) + fi + STLPORT_CPPFLAGS="-I$_topsrcdir/build/stlport/stlport -I$gonkdir/ndk/sources/cxx-stl/system/include" + + case "$ANDROID_VERSION" in + 15) + GONK_INCLUDES="-I$gonkdir/frameworks/base/opengl/include -I$gonkdir/frameworks/base/native/include -I$gonkdir/frameworks/base/include -I$gonkdir/frameworks/base/services/camera -I$gonkdir/frameworks/base/include/media/ -I$gonkdir/frameworks/base/include/media/stagefright -I$gonkdir/frameworks/base/include/media/stagefright/openmax -I$gonkdir/frameworks/base/media/libstagefright/rtsp -I$gonkdir/frameworks/base/media/libstagefright/include -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib -I$gonkdir/dalvik/libnativehelper/include/nativehelper" + MOZ_B2G_BT=1 + MOZ_B2G_BT_BLUEZ=1 + MOZ_NFC=1 + MOZ_B2G_CAMERA=1 + MOZ_OMX_DECODER=1 + AC_SUBST(MOZ_OMX_DECODER) + MOZ_RTSP=1 + MOZ_FMP4=1 + MOZ_SECUREELEMENT=1 + ;; + 17|18) + GONK_INCLUDES="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include -I$gonkdir/external/mdnsresponder/mDNSShared" + if test -d "$gonkdir/external/bluetooth/bluez"; then + GONK_INCLUDES="$GONK_INCLUDES -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib" + MOZ_B2G_BT=1 + MOZ_B2G_BT_BLUEZ=1 + elif test -d "$gonkdir/system/bluetoothd"; then + MOZ_B2G_BT=1 + MOZ_B2G_BT_DAEMON=1 + fi + + MOZ_RTSP=1 + MOZ_NFC=1 + MOZ_B2G_CAMERA=1 + MOZ_OMX_DECODER=1 + AC_SUBST(MOZ_OMX_DECODER) + MOZ_OMX_ENCODER=1 + AC_SUBST(MOZ_OMX_ENCODER) + AC_DEFINE(MOZ_OMX_ENCODER) + MOZ_FMP4=1 + MOZ_SECUREELEMENT=1 + ;; + 19) + GONK_INCLUDES="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include -I$gonkdir/external/mdnsresponder/mDNSShared" + MOZ_B2G_CAMERA=1 + if test -d "$gonkdir/system/bluetoothd"; then + MOZ_B2G_BT=1 + MOZ_B2G_BT_DAEMON=1 + fi + MOZ_NFC=1 + MOZ_RTSP=1 + MOZ_OMX_DECODER=1 + MOZ_OMX_ENCODER=1 + AC_DEFINE(MOZ_OMX_ENCODER) + MOZ_AUDIO_OFFLOAD=1 + MOZ_SECUREELEMENT=1 + AC_SUBST(MOZ_AUDIO_OFFLOAD) + AC_DEFINE(MOZ_AUDIO_OFFLOAD) + MOZ_FMP4=1 + ;; + 21|22) + GONK_INCLUDES="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include -I$gonkdir/external/mdnsresponder/mDNSShared" + MOZ_AUDIO_OFFLOAD=1 + MOZ_OMX_DECODER=1 + MOZ_OMX_ENCODER=1 + AC_DEFINE(MOZ_OMX_ENCODER) + AC_SUBST(MOZ_AUDIO_OFFLOAD) + AC_DEFINE(MOZ_AUDIO_OFFLOAD) + MOZ_FMP4=1 + MOZ_B2G_CAMERA=1 + if test -d "$gonkdir/system/bluetoothd"; then + MOZ_B2G_BT=1 + MOZ_B2G_BT_DAEMON=1 + fi + MOZ_NFC=1 + MOZ_RTSP=1 + ;; + *) + AC_MSG_ERROR([Unsupported platform version: $ANDROID_VERSION]) + ;; + esac + CPPFLAGS="-DANDROID $TARGET_C_INCLUDES -I$gonkdir/system -I$gonkdir/system/core/include -isystem $gonkdir/bionic -I$gonkdir/hardware/libhardware/include -I$gonkdir/external/valgrind/fxos-include $GONK_INCLUDES $CPPFLAGS" + CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS" + CXXFLAGS="-mandroid -fno-short-enums -fno-exceptions -Wno-psabi $CXXFLAGS $STLPORT_CPPFLAGS" + dnl Add -llog by default, since we use it all over the place. + LIBS="$LIBS -llog" + + 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" + + dnl prevent cross compile section from using these flags as host flags + if test -z "$HOST_CPPFLAGS" ; then + HOST_CPPFLAGS=" " + fi + if test -z "$HOST_CFLAGS" ; then + HOST_CFLAGS=" " + fi + if test -z "$HOST_CXXFLAGS" ; then + HOST_CXXFLAGS=" " + fi + if test -z "$HOST_LDFLAGS" ; then + HOST_LDFLAGS=" " + fi + + AC_DEFINE(ANDROID) + AC_DEFINE_UNQUOTED(ANDROID_VERSION, $ANDROID_VERSION) + AC_SUBST(ANDROID_VERSION) + AC_DEFINE(HAVE_SYS_UIO_H) + AC_DEFINE(HAVE_PTHREADS) + MOZ_CHROME_FILE_FORMAT=omni + direct_nspr_config=1 + android_cxx_stl=mozstlport +else + if test "$COMPILE_ENVIRONMENT"; then + MOZ_ANDROID_NDK + fi # COMPILE_ENVIRONMENT + + case "$target" in + *-android*|*-linuxandroid*) + MOZ_CHROME_FILE_FORMAT=omni + ZLIB_DIR=yes + AC_DEFINE(ANDROID) + ;; + *-linux*) + AC_PATH_PROG(OBJCOPY,objcopy) + ;; + esac +fi + +case "$target" in +*-apple-darwin*) + MOZ_IOS_SDK + ;; +esac + +AC_SUBST(ANDROID_SOURCE) +AC_SUBST(ANDROID_PACKAGE_NAME) +AC_SUBST(OBJCOPY) + +dnl ======================================================== +dnl Checks for compilers. +dnl ======================================================== + +dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269) +AR_FLAGS='crs $@' + +if test -z "$COMPILE_ENVIRONMENT"; then +if test "$target" != "$host"; then +# Assert that we're cross compiling, but don't require a compile toolchain (as +# MOZ_CROSS_COMPILER does below). +CROSS_COMPILE=1 +AC_DEFINE(CROSS_COMPILE) +fi +fi # !COMPILE_ENVIRONMENT + +if test "$COMPILE_ENVIRONMENT"; then + +if test "$target" != "$host"; then + MOZ_CROSS_COMPILER +else + AC_PROG_CC + case "$target" in + *-mingw*) + # Work around the conftest.exe access problem on Windows + sleep 2 + esac + AC_PROG_CXX + AC_PROG_RANLIB + MOZ_PATH_PROGS(AS, $AS as, $CC) + AC_CHECK_PROGS(AR, ar, :) + AC_CHECK_PROGS(LD, ld, :) + AC_CHECK_PROGS(STRIP, strip, :) + AC_CHECK_PROGS(WINDRES, windres, :) + AC_CHECK_PROGS(OTOOL, otool, :) + if test -z "$HOST_CC"; then + HOST_CC="$CC" + fi + if test -z "$HOST_CFLAGS"; then + HOST_CFLAGS="$CFLAGS" + fi + if test -z "$HOST_CXX"; then + HOST_CXX="$CXX" + fi + if test -z "$HOST_CXXFLAGS"; then + HOST_CXXFLAGS="$CXXFLAGS" + fi + if test -z "$HOST_LDFLAGS"; then + HOST_LDFLAGS="$LDFLAGS" + fi + if test -z "$HOST_RANLIB"; then + HOST_RANLIB="$RANLIB" + fi + if test -z "$HOST_AR"; then + HOST_AR="$AR" + fi + if test -z "$HOST_AR_FLAGS"; then + HOST_AR_FLAGS="$AR_FLAGS" + fi +fi + +if test -n "$MOZ_WINCONSOLE"; then + AC_DEFINE(MOZ_WINCONSOLE) +fi + +MOZ_TOOL_VARIABLES + +MOZ_CHECK_COMPILER_WRAPPER + +MOZ_RUST_SUPPORT + +dnl ======================================================== +dnl Check for MacOS deployment target version +dnl ======================================================== + +MOZ_ARG_ENABLE_STRING(macos-target, + [ --enable-macos-target=VER (default=10.6) + Set the minimum MacOS version needed at runtime], + [_MACOSX_DEPLOYMENT_TARGET=$enableval]) + +case "$target" in +*-darwin*) + if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then + dnl Use the specified value + export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET + else + dnl No value specified on the command line or in the environment, + dnl use architecture minimum. + export MACOSX_DEPLOYMENT_TARGET=10.6 + fi + ;; +esac + +AC_SUBST(MACOSX_DEPLOYMENT_TARGET) + +AC_PROG_CPP +AC_PROG_CXXCPP + +dnl ======================================================== +dnl Special win32 checks +dnl ======================================================== + +# Target the Windows 8.1 SDK by default +WINSDK_TARGETVER=603 +WINVER=502 + +MOZ_ARG_WITH_STRING(windows-version, +[ --with-windows-version=WINSDK_TARGETVER + Windows SDK version to target. Win8.1 (603) is + currently the minimum supported version.], + WINSDK_TARGETVER=$withval) + +# Currently only version 603 is allowed +case "$WINSDK_TARGETVER" in +603) + MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000 + ;; + +*) + AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER)]); + ;; +esac + +case "$target" in +*-mingw*) + if test "$GCC" != "yes"; then + # Check to see if we are really running in a msvc environemnt + _WIN32_MSVC=1 + AC_CHECK_PROGS(MIDL, midl) + + # Make sure compilers are valid + CFLAGS="$CFLAGS -TC -nologo" + CXXFLAGS="$CXXFLAGS -TP -nologo" + AC_LANG_SAVE + AC_LANG_C + AC_TRY_COMPILE([#include ], + [ printf("Hello World\n"); ],, + AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) ) + + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([#include ], + [ unsigned *test = new unsigned(42); ],, + AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) ) + AC_LANG_RESTORE + + changequote(,) + _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p' + changequote([,]) + + # Determine compiler version + _CC_MAJOR_VERSION=`echo ${MSVC_VERSION_FULL} | cut -c 1-2` + _CC_MINOR_VERSION=`echo ${MSVC_VERSION_FULL} | cut -c 3-4` + _CC_BUILD_VERSION=`echo ${MSVC_VERSION_FULL} | cut -c 5-` + _MSC_VER=${CC_VERSION} + + _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | cut -c 1-2` + + if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then + AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.]) + fi + + AC_DEFINE(_CRT_SECURE_NO_WARNINGS) + AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS) + AC_DEFINE(_USE_MATH_DEFINES) # Otherwise MSVC's math.h doesn't #define M_PI. + + if test "$_CC_MAJOR_VERSION" = "18" -a "$_CC_BUILD_VERSION" -ge "30723"; then + _CC_SUITE=12 + MSVS_VERSION=2013 + MSVC_C_RUNTIME_DLL=msvcr120.dll + MSVC_CXX_RUNTIME_DLL=msvcp120.dll + elif test "$_CC_MAJOR_VERSION" = "19" -a "$_CC_BUILD_VERSION" -ge "23506"; then + _CC_SUITE=14 + MSVS_VERSION=2015 + MSVC_C_RUNTIME_DLL=vcruntime140.dll + MSVC_CXX_RUNTIME_DLL=msvcp140.dll + + # -Wv:18 disables all warnings introduced after VS2013 + # See http://blogs.msdn.com/b/vcblog/archive/2014/11/12/improvements-to-warnings-in-the-c-compiler.aspx + CFLAGS="$CFLAGS -Wv:18" + CXXFLAGS="$CXXFLAGS -Wv:18" + + # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146) + CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-" + + # Disable C++11 thread-safe statics due to crashes on XP (bug 1204752) + # See https://connect.microsoft.com/VisualStudio/feedback/details/1789709/visual-c-2015-runtime-broken-on-windows-server-2003-c-11-magic-statics + CXXFLAGS="$CXXFLAGS -Zc:threadSafeInit-" + + # https://connect.microsoft.com/VisualStudio/feedback/details/888527/warnings-on-dbghelp-h + # for dbghelp.h, imagehlp.h, and shobj.h + # C4091: 'typedef ': ignored on left of '' when no variable is declared + CFLAGS="$CFLAGS -wd4091" + CXXFLAGS="$CXXFLAGS -wd4091" + + if test -n "$WIN_UCRT_REDIST_DIR"; then + if test ! -d "$WIN_UCRT_REDIST_DIR"; then + AC_MSG_ERROR([Invalid Windows UCRT Redist directory: ${WIN_UCRT_REDIST_DIR}]) + fi + WIN_UCRT_REDIST_DIR=`cd "$WIN_UCRT_REDIST_DIR" && pwd` + fi + else + AC_MSG_ERROR([This version (${_CC_MAJOR_VERSION}.${_CC_MINOR_VERSION}.${_CC_BUILD_VERSION}) of the MSVC compiler is unsupported. +You must install Visual C++ 2013 Update 3, Visual C++ 2015 Update 1, or newer in order to build. +See https://developer.mozilla.org/en/Windows_Build_Prerequisites.]) + fi + AC_SUBST(MSVS_VERSION) + AC_SUBST(MSVC_C_RUNTIME_DLL) + AC_SUBST(MSVC_CXX_RUNTIME_DLL) + + AC_DEFINE(HAVE_SEH_EXCEPTIONS) + + if test -n "$WIN32_REDIST_DIR"; then + if test ! -d "$WIN32_REDIST_DIR"; then + AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}]) + fi + WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd` + fi + + dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool', + dnl not something else like "magnetic tape manipulation utility". + MSMT_TOOL=`${MT-mt} 2>&1|grep 'Microsoft (R) Manifest Tool'` + if test -z "$MSMT_TOOL"; then + AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.]) + fi + + changequote(,) + _MSMT_VER_FILTER='s|.*[^!-~]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p' + changequote([,]) + MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"` + if test -z "$MSMANIFEST_TOOL_VERSION"; then + AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.]) + fi + + MSMANIFEST_TOOL=1 + unset MSMT_TOOL + + # Check linker version + _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"` + _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'` + if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then + AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.]) + fi + + INCREMENTAL_LINKER=1 + + # Set midl environment + case "$target" in + i*86-*) + MIDL_FLAGS="${MIDL_FLAGS} -env win32" + ;; + x86_64-*) + MIDL_FLAGS="${MIDL_FLAGS} -env x64" + ;; + esac + + unset _MSVC_VER_FILTER + + AC_CACHE_CHECK(for overridable _RAISE, + ac_cv_have__RAISE, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + _SAVE_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0" + AC_TRY_COMPILE([#include + #undef _RAISE + #define _RAISE(x) externallyDefinedFunction((x).what()) + #include + ], + [std::vector v; return v.at(1);], + ac_cv_have__RAISE="no", + ac_cv_have__RAISE="yes") + CXXFLAGS="$_SAVE_CXXFLAGS" + AC_LANG_RESTORE + ]) + if test "$ac_cv_have__RAISE" = "yes"; then + WRAP_STL_INCLUDES=1 + MOZ_MSVC_STL_WRAP_RAISE=1 + AC_DEFINE(MOZ_MSVC_STL_WRAP_RAISE) + else + AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK. Please file a bug describing this error and your build configuration.]) + fi + + if test "$WRAP_STL_INCLUDES" = "1"; then + STL_FLAGS="-I${DIST}/stl_wrappers" + fi + CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0" + CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0" + else + # Check w32api version + _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'` + _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'` + AC_MSG_CHECKING([for w32api version >= $W32API_VERSION]) + AC_TRY_COMPILE([#include ], + #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \ + (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \ + __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION) + #error "test failed." + #endif + , [ res=yes ], [ res=no ]) + AC_MSG_RESULT([$res]) + if test "$res" != "yes"; then + AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.]) + fi + # Check windres version + AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION]) + _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'` + AC_MSG_RESULT([$_WINDRES_VERSION]) + _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'` + _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'` + _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'` + WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'` + WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'` + WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'` + if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \ + "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \ + "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \ + "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \ + "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \ + "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION" + then + AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.]) + fi + + AC_CHECK_PROGS(MIDL, $target-widl widl) + if test -n "$MIDL"; then + case "$target" in + i*86-*) + MIDL_FLAGS="$MIDL_FLAGS --win32 -m32" + ;; + x86_64-*) + MIDL_FLAGS="$MIDL_FLAGS --win64 -m64" + ;; + esac + fi + + # strsafe.h on mingw uses macros for function deprecation that pollutes namespace + # causing problems with local implementations with the same name. + AC_DEFINE(STRSAFE_NO_DEPRECATE) + fi # !GNU_CC + + MOZ_FIND_WINSDK_VERSION + AC_DEFINE_UNQUOTED(WINVER,0x$WINVER) + AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER) + # Require OS features provided by IE 6.0 SP2 (XP SP2) + AC_DEFINE_UNQUOTED(_WIN32_IE,0x0603) + + # If the maximum version supported by this SDK is lower than the target + # version, error out + AC_MSG_CHECKING([for Windows SDK being recent enough]) + if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then + AC_MSG_RESULT("yes") + else + AC_MSG_RESULT("no") + 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.]) + fi + + AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER) + AC_DEFINE_UNQUOTED(MOZ_WINSDK_MAXVER,$MOZ_WINSDK_MAXVER) + AC_SUBST(MOZ_WINSDK_MAXVER) + ;; +esac + +if test -n "$_WIN32_MSVC"; then + SKIP_PATH_CHECKS=1 + SKIP_COMPILER_CHECKS=1 + SKIP_LIBRARY_CHECKS=1 + + # Since we're skipping compiler and library checks, hard-code + # some facts here. + AC_DEFINE(HAVE_IO_H) + AC_DEFINE(HAVE_SETBUF) + AC_DEFINE(HAVE_ISATTY) +fi + +fi # COMPILE_ENVIRONMENT + +AC_SUBST(MIDL_FLAGS) +AC_SUBST(_MSC_VER) + +AC_SUBST(GNU_AS) +AC_SUBST(GNU_LD) +AC_SUBST(GNU_CC) +AC_SUBST(GNU_CXX) +AC_SUBST(INTEL_CC) +AC_SUBST(INTEL_CXX) + +AC_SUBST(STL_FLAGS) +AC_SUBST(WRAP_STL_INCLUDES) +AC_SUBST(MOZ_MSVC_STL_WRAP_RAISE) + +dnl ======================================================== +dnl Checks for programs. +dnl ======================================================== +AC_PROG_INSTALL +AC_PROG_LN_S + +AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION]) +_perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5` +_perl_res=$? +AC_MSG_RESULT([$_perl_version]) + +if test "$_perl_res" != 0; then + AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.]) +fi + +AC_MSG_CHECKING([for full perl installation]) +_perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5` +_perl_res=$? +if test "$_perl_res" != 0; then + AC_MSG_RESULT([no]) + AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.]) +else + AC_MSG_RESULT([yes]) +fi + +if test -z "$COMPILE_ENVIRONMENT"; then + NSINSTALL_BIN='$(PYTHON) $(MOZILLA_DIR)/config/nsinstall.py' +fi +AC_SUBST(NSINSTALL_BIN) + +MOZ_PATH_PROG(DOXYGEN, doxygen, :) +MOZ_PATH_PROG(AUTOCONF, autoconf, :) +MOZ_PATH_PROGS(UNZIP, unzip) +if test -z "$UNZIP" -o "$UNZIP" = ":"; then + AC_MSG_ERROR([unzip not found in \$PATH]) +fi +MOZ_PATH_PROGS(ZIP, zip) +if test -z "$ZIP" -o "$ZIP" = ":"; then + AC_MSG_ERROR([zip not found in \$PATH]) +fi +MOZ_PATH_PROG(XARGS, xargs) +if test -z "$XARGS" -o "$XARGS" = ":"; then + AC_MSG_ERROR([xargs not found in \$PATH .]) +fi + +MOZ_PATH_PROG(RPMBUILD, rpmbuild, :) +AC_SUBST(RPMBUILD) + +MOZ_PATH_PROG(GENISOIMAGE, genisoimage, :) +MOZ_PATH_PROG(DSYMUTIL, dsymutil, llvm-dsymutil :) + +if test "$COMPILE_ENVIRONMENT"; then + +dnl ======================================================== +dnl = Mac OS X toolchain support +dnl ======================================================== + +dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk +dnl that a universal binary is being produced and MOZ_CAN_RUN_PROGRAMS +dnl when we can run target binaries. +AC_SUBST(UNIVERSAL_BINARY) +AC_SUBST(MOZ_CAN_RUN_PROGRAMS) + +MOZ_ARG_WITH_STRING(unify-dist, +[ --with-unify-dist=dir Location of the dist directory to unify with at packaging time (Mac OS X universal build only)], + UNIFY_DIST=$withval) +if test -n "$UNIVERSAL_BINARY"; then + if test -z "$UNIFY_DIST"; then + AC_MSG_ERROR([You need to provide the --with-unify-dist=dir argument when performing a universal build]) + fi + case "$UNIFY_DIST" in + /*) + ;; + *) + UNIFY_DIST="${MOZ_BUILD_ROOT}/${UNIFY_DIST}" + ;; + esac +fi +AC_SUBST(UNIFY_DIST) + +dnl ======================================================== +dnl = Mac OS X SDK support +dnl ======================================================== +MACOS_SDK_DIR= +MOZ_ARG_WITH_STRING(macos-sdk, +[ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)], + MACOS_SDK_DIR=$withval) + +MACOS_PRIVATE_FRAMEWORKS_DIR_DEFAULTED= +MOZ_ARG_WITH_STRING(macos-private-frameworks, +[ --with-macos-private-frameworks=dir Location of private frameworks to use (Mac OS X only)], + MACOS_PRIVATE_FRAMEWORKS_DIR=$withval, + MACOS_PRIVATE_FRAMEWORKS_DIR=/System/Library/PrivateFrameworks + MACOS_PRIVATE_FRAMEWORKS_DEFAULTED=1) + +if test -z "${MACOS_PRIVATE_FRAMEWORKS_DEFAULTED}"; then + if test -z "$CROSS_COMPILE"; then + AC_MSG_WARN([You should only be using --with-macos-private-frameworks when cross-compiling.]) + fi + if test ! -d "$MACOS_PRIVATE_FRAMEWORKS_DIR"; then + AC_MSG_ERROR([PrivateFrameworks directory not found.]) + fi +fi + +dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use. +AC_SUBST(MACOS_SDK_DIR) +AC_SUBST(MACOS_PRIVATE_FRAMEWORKS_DIR) + +if test "$MACOS_SDK_DIR"; then + dnl Sync this section with the ones in NSPR and NSS. + dnl Changes to the cross environment here need to be accounted for in + dnl the libIDL checks (below) and xpidl build. + + if test ! -d "$MACOS_SDK_DIR"; then + AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must +specify a valid SDK. SDKs are installed when the optional cross-development +tools are selected during the Xcode/Developer Tools installation.]) + fi + + CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}" + CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}" + + dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER. + CPP="$CPP -isysroot ${MACOS_SDK_DIR}" + CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}" + + AC_LANG_SAVE + AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination]) + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([#include ],[], + result=yes, + result=no) + AC_LANG_RESTORE + AC_MSG_RESULT($result) + + if test "$result" = "no" ; then + AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.]) + fi +fi + +fi # COMPILE_ENVIRONMENT + +if test -n "$MAKE"; then + if test `echo $MAKE | grep -c make.py` != 1; then + NOT_PYMAKE=$MAKE + fi +fi + +case "$host_os" in +mingw*) + MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :) + ;; +*) + MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :) + ;; +esac +if test "$GMAKE" = ":"; then + AC_MSG_ERROR([GNU make not found]) +fi +AC_SUBST(GMAKE) + +if test -z "$MAKE"; then + MAKE=$GMAKE +fi + +if test "$COMPILE_ENVIRONMENT"; then + +AC_PATH_XTRA + +XCFLAGS="$X_CFLAGS" + +fi # COMPILE_ENVIRONMENT + +dnl ======================================================== +dnl set the defaults first +dnl ======================================================== +AS_BIN=$AS +AR_LIST='$(AR) t' +AR_EXTRACT='$(AR) x' +AR_DELETE='$(AR) d' +AS='$(CC)' +AS_DASH_C_FLAG='-c' +DLL_PREFIX=lib +LIB_PREFIX=lib +DLL_SUFFIX=.so +OBJ_SUFFIX=o +LIB_SUFFIX=a +ASM_SUFFIX=s +IMPORT_LIB_SUFFIX= +DIRENT_INO=d_ino +MOZ_USER_DIR=".mozilla" + +MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib" + +MOZ_FS_LAYOUT=unix + +USE_DEPENDENT_LIBS=1 + +_PLATFORM_DEFAULT_TOOLKIT=cairo-gtk3 + +if test -n "$CROSS_COMPILE"; then + OS_TARGET="${target_os}" + OS_ARCH=`echo $target_os | sed -e 's|/|_|g'` + OS_RELEASE= + case "${target_os}" in + linux*) OS_ARCH=Linux OS_TARGET=Linux ;; + kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU/kFreeBSD ;; + gnu*) OS_ARCH=GNU ;; + solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;; + mingw*) OS_ARCH=WINNT OS_TARGET=WINNT ;; + darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;; + dragonfly*) OS_ARCH=DragonFly OS_TARGET=DragonFly ;; + freebsd*) OS_ARCH=FreeBSD OS_TARGET=FreeBSD ;; + netbsd*) OS_ARCH=NetBSD OS_TARGET=NetBSD ;; + openbsd*) OS_ARCH=OpenBSD OS_TARGET=OpenBSD ;; + esac + case "${target}" in + *-android*|*-linuxandroid*) OS_ARCH=Linux OS_TARGET=Android ;; + esac +else + OS_TARGET=`uname -s` + OS_ARCH=`uname -s | sed -e 's|/|_|g'` + OS_RELEASE=`uname -r` +fi + +# Before this used `uname -m` when not cross compiling +# but that breaks when you have a 64 bit kernel with a 32 bit userland. +OS_TEST="${target_cpu}" + +HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'` + +####################################################################### +# Master "Core Components" macros for getting the OS target # +####################################################################### + +# +# If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no +# cross-compilation. +# + +# +# Define and override various archtecture-specific variables, including +# HOST_OS_ARCH +# OS_ARCH +# OS_TEST +# OS_TARGET +# OS_RELEASE +# OS_MINOR_RELEASE +# + +case "$HOST_OS_ARCH" in +mingw*) + HOST_OS_ARCH=WINNT + ;; +darwin*) + HOST_OS_ARCH=Darwin + ;; +linux*) + HOST_OS_ARCH=Linux + ;; +kfreebsd*-gnu) + HOST_OS_ARCH=GNU_kFreeBSD + ;; +gnu*) + HOST_OS_ARCH=GNU + ;; +dragonfly*) + HOST_OS_ARCH=DragonFly + ;; +freebsd*) + HOST_OS_ARCH=FreeBSD + ;; +netbsd*) + HOST_OS_ARCH=NetBSD + ;; +openbsd*) + HOST_OS_ARCH=OpenBSD + ;; +solaris*) + HOST_OS_ARCH=SunOS + SOLARIS_SUNPRO_CC= + SOLARIS_SUNPRO_CXX= + if test -z "$GNU_CC"; then + if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then + SOLARIS_SUNPRO_CC=1 + fi + fi + + if test -z "$GNU_CXX"; then + if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then + SOLARIS_SUNPRO_CXX=1 + fi + fi + AC_SUBST(SOLARIS_SUNPRO_CC) + AC_SUBST(SOLARIS_SUNPRO_CXX) + ;; +esac + +case "$OS_ARCH" in +WINNT) + if test -z "$CROSS_COMPILE" ; then + OS_TEST=`uname -p` + fi + ;; +Windows_NT) +# +# If uname -s returns "Windows_NT", we assume that we are using +# the uname.exe in MKS toolkit. +# +# The -r option of MKS uname only returns the major version number. +# So we need to use its -v option to get the minor version number. +# Moreover, it doesn't have the -p option, so we need to use uname -m. +# + OS_ARCH=WINNT + OS_TARGET=WINNT + OS_MINOR_RELEASE=`uname -v` + if test "$OS_MINOR_RELEASE" = "00"; then + OS_MINOR_RELEASE=0 + fi + OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}" + ;; +MINGW*_NT*) +# +# If uname -s returns MINGW32_NT-5.1, we assume that we are using +# the uname.exe in the MSYS tools. +# + OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'` + OS_ARCH=WINNT + OS_TARGET=WINNT + ;; +AIX) + OS_RELEASE=`uname -v`.`uname -r` + OS_TEST=${target_cpu} + ;; +Darwin) + case "${target_cpu}" in + powerpc*) + OS_TEST=ppc + ;; + i*86*) + OS_TEST=i386 + ;; + x86_64) + OS_TEST=x86_64 + ;; + *) + if test -z "$CROSS_COMPILE" ; then + OS_TEST=`uname -p` + fi + ;; + esac + ;; +esac + +# Only set CPU_ARCH if we recognize the value of OS_TEST + +case "$OS_TEST" in +*86 | i86pc) + CPU_ARCH=x86 + ;; + +powerpc64 | ppc64 | powerpc64le | ppc64le) + CPU_ARCH=ppc64 + ;; + +powerpc | ppc | rs6000) + CPU_ARCH=ppc + ;; + +Alpha | alpha | ALPHA) + CPU_ARCH=Alpha + ;; + +s390) + CPU_ARCH=s390 + ;; + +s390x) + CPU_ARCH=s390x + ;; + +hppa* | parisc) + CPU_ARCH=hppa + ;; + +sun4u | sparc*) + CPU_ARCH=sparc + ;; + +x86_64 | ia64) + CPU_ARCH="$OS_TEST" + ;; + +arm*) + CPU_ARCH=arm + ;; + +mips|mipsel) + CPU_ARCH="mips" + ;; + +aarch64*) + CPU_ARCH=aarch64 + ;; +esac + +if test -z "$OS_TARGET"; then + OS_TARGET=$OS_ARCH +fi +OS_CONFIG="${OS_TARGET}${OS_RELEASE}" + +dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64. +dnl =============================================================== +INTEL_ARCHITECTURE= +case "$OS_TEST" in + x86_64|i?86) + INTEL_ARCHITECTURE=1 +esac + +dnl Configure platform-specific CPU architecture compiler options. +dnl ============================================================== +if test "$COMPILE_ENVIRONMENT"; then + MOZ_ARCH_OPTS +else + if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then + dnl Default Android builds to ARMv7. + MOZ_ARCH=armv7-a + fi +fi # COMPILE_ENVIRONMENT + +dnl ================================================================= +dnl Set up and test static assertion macros used to avoid AC_TRY_RUN, +dnl which is bad when cross compiling. +dnl ================================================================= +if test "$COMPILE_ENVIRONMENT"; then +configure_static_assert_macros=' +#define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__) +#define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) +#define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1] +' + +dnl test that the macros actually work: +AC_MSG_CHECKING(that static assertion macros used in autoconf tests work) +AC_CACHE_VAL(ac_cv_static_assertion_macros_work, + [AC_LANG_SAVE + AC_LANG_C + ac_cv_static_assertion_macros_work="yes" + AC_TRY_COMPILE([$configure_static_assert_macros], + [CONFIGURE_STATIC_ASSERT(1)], + , + ac_cv_static_assertion_macros_work="no") + AC_TRY_COMPILE([$configure_static_assert_macros], + [CONFIGURE_STATIC_ASSERT(0)], + ac_cv_static_assertion_macros_work="no", + ) + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([$configure_static_assert_macros], + [CONFIGURE_STATIC_ASSERT(1)], + , + ac_cv_static_assertion_macros_work="no") + AC_TRY_COMPILE([$configure_static_assert_macros], + [CONFIGURE_STATIC_ASSERT(0)], + ac_cv_static_assertion_macros_work="no", + ) + AC_LANG_RESTORE + ]) +AC_MSG_RESULT("$ac_cv_static_assertion_macros_work") +if test "$ac_cv_static_assertion_macros_work" = "no"; then + AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.]) +fi +fi # COMPILE_ENVIRONMENT + +dnl ======================================================== +dnl Android libstdc++, placed here so it can use MOZ_ARCH +dnl computed above. +dnl ======================================================== + +MOZ_ANDROID_CPU_ARCH +if test "$COMPILE_ENVIRONMENT"; then + MOZ_ANDROID_STLPORT +fi # COMPILE_ENVIRONMENT + +dnl ======================================================== +dnl Suppress Clang Argument Warnings +dnl ======================================================== +if test -n "${CLANG_CC}${CLANG_CL}"; then + _WARNINGS_CFLAGS="-Qunused-arguments ${_WARNINGS_CFLAGS}" + CPPFLAGS="-Qunused-arguments ${CPPFLAGS}" +fi +if test -n "${CLANG_CXX}${CLANG_CL}"; then + _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}" +fi + +dnl ======================================================== +dnl = Use Address Sanitizer +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(address-sanitizer, +[ --enable-address-sanitizer Enable Address Sanitizer (default=no)], + MOZ_ASAN=1, + MOZ_ASAN= ) +if test -n "$MOZ_ASAN"; then + MOZ_LLVM_HACKS=1 + if test -n "$CLANG_CL"; then + # Look for clang_rt.asan_dynamic-i386.dll + MOZ_CLANG_RT_ASAN_LIB=clang_rt.asan_dynamic-i386.dll + # We use MOZ_PATH_PROG in order to get a Windows style path. + MOZ_PATH_PROG(MOZ_CLANG_RT_ASAN_LIB_PATH, $MOZ_CLANG_RT_ASAN_LIB) + if test -z "$MOZ_CLANG_RT_ASAN_LIB_PATH"; then + AC_MSG_ERROR([Couldn't find $MOZ_CLANG_RT_ASAN_LIB. It should be available in the same location as clang-cl.]) + fi + AC_SUBST(MOZ_CLANG_RT_ASAN_LIB_PATH) + fi + AC_DEFINE(MOZ_ASAN) + MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer) +fi +AC_SUBST(MOZ_ASAN) + +dnl ======================================================== +dnl = Use Memory Sanitizer +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(memory-sanitizer, +[ --enable-memory-sanitizer Enable Memory Sanitizer (default=no)], + MOZ_MSAN=1, + MOZ_MSAN= ) +if test -n "$MOZ_MSAN"; then + MOZ_LLVM_HACKS=1 + AC_DEFINE(MOZ_MSAN) + MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer) +fi +AC_SUBST(MOZ_MSAN) + +dnl ======================================================== +dnl = Use Thread Sanitizer +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(thread-sanitizer, +[ --enable-thread-sanitizer Enable Thread Sanitizer (default=no)], + MOZ_TSAN=1, + MOZ_TSAN= ) +if test -n "$MOZ_TSAN"; then + MOZ_LLVM_HACKS=1 + AC_DEFINE(MOZ_TSAN) + MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer) +fi +AC_SUBST(MOZ_TSAN) + +# The LLVM symbolizer is used by all sanitizers +AC_SUBST(LLVM_SYMBOLIZER) + +dnl ======================================================== +dnl = Enable hacks required for LLVM instrumentations +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(llvm-hacks, +[ --enable-llvm-hacks Enable workarounds required for several LLVM instrumentations (default=no)], + MOZ_LLVM_HACKS=1, + MOZ_LLVM_HACKS= ) +if test -n "$MOZ_LLVM_HACKS"; then + MOZ_NO_WLZDEFS=1 + MOZ_CFLAGS_NSS=1 +fi +AC_SUBST(MOZ_NO_WLZDEFS) +AC_SUBST(MOZ_CFLAGS_NSS) + +dnl ======================================================== +dnl = Enable treating compiler warnings as errors +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(warnings-as-errors, +[ --enable-warnings-as-errors + Enable treating warnings as errors], + MOZ_ENABLE_WARNINGS_AS_ERRORS=1, + MOZ_ENABLE_WARNINGS_AS_ERRORS=) + +dnl ======================================================== +dnl GNU specific defaults +dnl ======================================================== +if test "$GNU_CC"; then + MMX_FLAGS="-mmmx" + SSE_FLAGS="-msse" + SSE2_FLAGS="-msse2" + # Per bug 719659 comment 2, some of the headers on ancient build machines + # may require gnu89 inline semantics. But otherwise, we use C99. + # But on OS X we just use C99 plus GNU extensions, in order to fix + # bug 917526. + CFLAGS="$CFLAGS -std=gnu99" + if test "${OS_ARCH}" != Darwin; then + CFLAGS="$CFLAGS -fgnu89-inline" + fi + # FIXME: Let us build with strict aliasing. bug 414641. + CFLAGS="$CFLAGS -fno-strict-aliasing" + MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(DSO_SONAME) -o $@' + MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(DSO_SONAME) -o $@' + WARNINGS_AS_ERRORS='-Werror' + DSO_CFLAGS='' + DSO_PIC_CFLAGS='-fPIC' + ASFLAGS="$ASFLAGS -fPIC" + AC_MSG_CHECKING([for --noexecstack option to as]) + _SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -Wa,--noexecstack" + AC_TRY_COMPILE(,,AC_MSG_RESULT([yes]) + [ASFLAGS="$ASFLAGS -Wa,--noexecstack"], + AC_MSG_RESULT([no])) + CFLAGS=$_SAVE_CFLAGS + AC_MSG_CHECKING([for -z noexecstack option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,noexecstack" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]), + AC_MSG_RESULT([no]) + LDFLAGS=$_SAVE_LDFLAGS) + + AC_MSG_CHECKING([for -z text option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,text" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]) + [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,text"], + AC_MSG_RESULT([no]) + LDFLAGS=$_SAVE_LDFLAGS) + + AC_MSG_CHECKING([for --build-id option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,--build-id" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]) + [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,--build-id"], + AC_MSG_RESULT([no]) + LDFLAGS=$_SAVE_LDFLAGS) + + AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld]) + HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED= + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]) + [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1], + AC_MSG_RESULT([no])) + LDFLAGS=$_SAVE_LDFLAGS + + # Check for -mssse3 on $CC + AC_MSG_CHECKING([if toolchain supports -mssse3 option]) + HAVE_TOOLCHAIN_SUPPORT_MSSSE3= + _SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -mssse3" + AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes]) + [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1], + AC_MSG_RESULT([no])) + CFLAGS=$_SAVE_CFLAGS + + # Check for -msse4.1 on $CC + AC_MSG_CHECKING([if toolchain supports -msse4.1 option]) + HAVE_TOOLCHAIN_SUPPORT_MSSE4_1= + _SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -msse4.1" + AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes]) + [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1], + AC_MSG_RESULT([no])) + CFLAGS=$_SAVE_CFLAGS + + case "${CPU_ARCH}" in + x86 | x86_64) + AC_MSG_CHECKING(for x86 AVX2 asm support in compiler) + AC_TRY_COMPILE([], + [asm volatile ("vpermq \$0xd8,%ymm0,%ymm0 \n");], + result="yes", result="no") + AC_MSG_RESULT("$result") + if test "$result" = "yes"; then + HAVE_X86_AVX2=1 + fi + esac + + DSO_LDOPTS='-shared' + if test "$GCC_USE_GNU_LD"; then + # Some tools like ASan use a runtime library that is only + # linked against executables, so we must allow undefined + # symbols for shared objects in some cases. + if test -z "$MOZ_NO_WLZDEFS"; then + # Don't allow undefined symbols in libraries + DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs" + + # BSDs need `environ' exposed for posix_spawn (bug 753046) + case "$OS_TARGET" in + DragonFly|FreeBSD|NetBSD|OpenBSD) + if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then + DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ" + else + DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols" + fi + ;; + esac + fi + fi + + MOZ_SET_WARNINGS_CFLAGS + + _DEFINES_CFLAGS='-include $(topobjdir)/mozilla-config.h -DMOZILLA_CLIENT' + _USE_CPP_INCLUDE_FLAG=1 + + ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS" + +elif test "$SOLARIS_SUNPRO_CC"; then + DSO_CFLAGS='' + if test "$CPU_ARCH" = "sparc"; then + # for Sun Studio on Solaris/SPARC + DSO_PIC_CFLAGS='-xcode=pic32' + else + DSO_PIC_CFLAGS='-KPIC' + fi + _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT' +else + MKSHLIB='$(LD) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' + MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' + + DSO_LDOPTS='-shared' + if test "$GNU_LD"; then + # Don't allow undefined symbols in libraries + DSO_LDOPTS="$DSO_LDOPTS -z defs" + fi + + DSO_CFLAGS='' + DSO_PIC_CFLAGS='-KPIC' + _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT' +fi + +if test "$GNU_CXX"; then + # FIXME: Let us build with strict aliasing. bug 414641. + CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing" + + MOZ_SET_WARNINGS_CXXFLAGS + + _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(topobjdir)/mozilla-config.h' + _USE_CPP_INCLUDE_FLAG=1 + +else + _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)' +fi + +dnl ======================================================== +dnl Checking for 64-bit OS +dnl ======================================================== +if test "$COMPILE_ENVIRONMENT"; then +AC_LANG_SAVE +AC_LANG_C +AC_MSG_CHECKING(for 64-bit OS) +AC_TRY_COMPILE([$configure_static_assert_macros], + [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)], + result="yes", result="no") +AC_MSG_RESULT("$result") +if test "$result" = "yes"; then + AC_DEFINE(HAVE_64BIT_BUILD) + HAVE_64BIT_BUILD=1 +fi +AC_SUBST(HAVE_64BIT_BUILD) +AC_LANG_RESTORE +fi # COMPILE_ENVIRONMENT + +dnl ======================================================== +dnl Special rust checks +dnl ======================================================== + +if test -n "$MACOSX_DEPLOYMENT_TARGET" -a -n "$MOZ_RUST"; then + AC_MSG_CHECKING([if we're targeting 32-bit]) + if test -z "$HAVE_64BIT_BUILD"; then + AC_MSG_RESULT([using $RUSTC]) + else + AC_MSG_RESULT([no]) + fi + AC_MSG_CHECKING([rustc compatibility with MacOS X]) + # Stock rustc doesn't support MacOS X 10.6 or earlier. + # https://github.com/rust-lang/rust/issues/25342 + _MACOSX_TARGET_MINOR=`echo "$MACOSX_DEPLOYMENT_TARGET" | cut -d. -f2` + if test "$_MACOSX_TARGET_MINOR" -lt 7; then + dnl Test C linkage against rust code to see if the rust + dnl toolchain output is compatible. + cat > conftest.rs < u8 { 42 } +EOF + ac_try="$RUSTC --crate-type staticlib -o conftest.a conftest.rs >/dev/null" + AC_TRY_EVAL(ac_try) + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS conftest.a -lpthread -lm" + AC_TRY_LINK_FUNC([rusty_answer], [ + AC_MSG_RESULT([$MACOSX_DEPLOYMENT_TARGET is ok with this rustc]) + ], [ + AC_MSG_RESULT([cannot link for $MACOSX_DEPLOYMENT_TARGET]) + MOZ_RUST= + ]) + LDFLAGS=$save_LDFLAGS + rm -rf conftest* + else + AC_MSG_RESULT([$MACOSX_DEPLOYMENT_TARGET is ok]) + fi + if test -z "$MOZ_RUST"; then + AC_MSG_ERROR([rustc does not support MacOS X $MACOSX_DEPLOYMENT_TARGET + Add 'ac_add_options --enable-macos-target=10.7' (or later) + to mozconfig, disable Rust support, or use an alternate toolchain.]) + fi +fi + +dnl ======================================================== +dnl = Use profiling compile flags +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(profiling, +[ --enable-profiling Set compile flags necessary for using sampling profilers (e.g. shark, perf)], + MOZ_PROFILING=1, + MOZ_PROFILING= ) + +dnl ======================================================== +dnl = Turn on systrace for android/b2g. +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(systrace, +[ --enable-systrace Set compile flags necessary for using sampling profilers (e.g. shark, perf)], + MOZ_USE_SYSTRACE=1, + MOZ_USE_SYSTRACE= ) +if test -n "$MOZ_USE_SYSTRACE"; then + AC_DEFINE(MOZ_USE_SYSTRACE) +fi + +dnl ======================================================== +dnl = Use Valgrind +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(valgrind, +[ --enable-valgrind Enable Valgrind integration hooks (default=no)], + MOZ_VALGRIND=1, + MOZ_VALGRIND= ) +if test -n "$MOZ_VALGRIND"; then + MOZ_CHECK_HEADER([valgrind/valgrind.h], [], + AC_MSG_ERROR( + [--enable-valgrind specified but Valgrind is not installed])) + AC_DEFINE(MOZ_VALGRIND) +fi +AC_SUBST(MOZ_VALGRIND) + +dnl ======================================================== +dnl jprof +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(jprof, +[ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.], + MOZ_JPROF=1, + MOZ_JPROF= ) +if test -n "$MOZ_JPROF"; then + MOZ_PROFILING=1 + AC_DEFINE(MOZ_JPROF) +fi + +dnl ======================================================== +dnl SPS Profiler +dnl ======================================================== +MOZ_ENABLE_PROFILER_SPS=1 + +case "${OS_TARGET}" in +Android) + case "${CPU_ARCH}" in + x86 | arm) ;; + *) + MOZ_ENABLE_PROFILER_SPS= + esac + ;; +Linux) + case "${CPU_ARCH}" in + x86 | x86_64) ;; + *) + MOZ_ENABLE_PROFILER_SPS= + esac + ;; +WINNT) ;; +Darwin) + if test -n "$MOZ_IOS"; then + MOZ_ENABLE_PROFILER_SPS= + fi + ;; +*) + MOZ_ENABLE_PROFILER_SPS= + ;; +esac + +if test -n "$MOZ_ENABLE_PROFILER_SPS"; then + AC_DEFINE(MOZ_ENABLE_PROFILER_SPS) +fi + +dnl ======================================================== +dnl instruments +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(instruments, +[ --enable-instruments Enable instruments remote profiling. Implies --enable-profiling.], + MOZ_INSTRUMENTS=1, + MOZ_INSTRUMENTS= ) +if test -n "$MOZ_INSTRUMENTS"; then + MOZ_PROFILING=1 + AC_DEFINE(MOZ_INSTRUMENTS) +fi + +dnl ======================================================== +dnl callgrind +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(callgrind, +[ --enable-callgrind Enable callgrind profiling. Implies --enable-profiling.], + MOZ_CALLGRIND=1, + MOZ_CALLGRIND= ) +if test -n "$MOZ_CALLGRIND"; then + MOZ_PROFILING=1 + AC_DEFINE(MOZ_CALLGRIND) +fi + +dnl ======================================================== +dnl vtune +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(vtune, +[ --enable-vtune Enable vtune profiling. Implies --enable-profiling.], + MOZ_VTUNE=1, + MOZ_VTUNE= ) +if test -n "$MOZ_VTUNE"; then + MOZ_PROFILING=1 + AC_DEFINE(MOZ_VTUNE) +fi + +# For profiling builds keep the symbol information +if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then + case "$OS_TARGET" in + Linux|DragonFly|FreeBSD|NetBSD|OpenBSD) + STRIP_FLAGS="--strip-debug" + ;; + esac +fi + +dnl ======================================================== +dnl = Enable DMD +dnl ======================================================== + +MOZ_ARG_ENABLE_BOOL(dmd, +[ --enable-dmd Enable DMD; also enables jemalloc, replace-malloc and profiling], + MOZ_DMD=1, + MOZ_DMD= ) + +if test "$MOZ_DMD"; then + AC_DEFINE(MOZ_DMD) + + if test "${CPU_ARCH}" = "arm"; then + CFLAGS="$CFLAGS -funwind-tables" + CXXFLAGS="$CXXFLAGS -funwind-tables" + fi + + MOZ_MEMORY=1 # DMD enables jemalloc + MOZ_REPLACE_MALLOC=1 # DMD enables replace-malloc + MOZ_PROFILING=1 # DMD enables profiling +fi +AC_SUBST(MOZ_DMD) + +dnl ======================================================== +dnl Profiling +dnl ======================================================== +if test -n "$MOZ_PROFILING"; then + AC_DEFINE(MOZ_PROFILING) +fi + +dnl ======================================================== +dnl System overrides of the defaults for host +dnl ======================================================== +case "$host" in +*mingw*) + if test -n "$_WIN32_MSVC"; then + HOST_AR=lib + HOST_AR_FLAGS='-NOLOGO -OUT:$@' + HOST_CFLAGS="$HOST_CFLAGS -TC -nologo" + HOST_RANLIB='echo ranlib' + else + HOST_CFLAGS="$HOST_CFLAGS -mwindows" + fi + HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11 -D_CRT_SECURE_NO_WARNINGS" + HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}" + HOST_BIN_SUFFIX=.exe + + case "${host_cpu}" in + i*86) + if test -n "$_WIN32_MSVC"; then + HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86" + fi + ;; + x86_64) + if test -n "$_WIN32_MSVC"; then + HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64" + fi + HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_" + ;; + esac + ;; + +*-darwin*) + HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11" + HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" + ;; + +*-linux*|*-kfreebsd*-gnu|*-gnu*) + HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" + HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" + ;; + +*) + HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" + HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}" + ;; +esac + +dnl ============================================================== +dnl Get mozilla version from central milestone file +dnl ============================================================== +MOZILLA_VERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir` +MOZILLA_UAVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --uaversion` +MOZILLA_SYMBOLVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --symbolversion` +if test -z "$MOZILLA_VERSION"; then + AC_MSG_ERROR([failed to read version info from milestone file]) +fi + +dnl Get version of various core apps from the version files. +FIREFOX_VERSION=`cat $_topsrcdir/browser/config/version.txt` +FIREFOX_VERSION_DISPLAY=`cat $_topsrcdir/browser/config/version_display.txt` + +if test -z "$FIREFOX_VERSION"; then + AC_MSG_ERROR([FIREFOX_VERSION is unexpectedly blank.]) +fi + +if test -z "$FIREFOX_VERSION_DISPLAY"; then + AC_MSG_ERROR([FIREFOX_VERSION_DISPLAY is unexpectedly blank.]) +fi + +AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION") +AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION) +AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION") +AC_SUBST(MOZILLA_SYMBOLVERSION) + +MOZ_DOING_LTO(lto_is_enabled) + +dnl ======================================================== +dnl System overrides of the defaults for target +dnl ======================================================== + +case "$target" in +*-aix*) + AC_DEFINE(AIX) + if test ! "$GNU_CC"; then + if test ! "$HAVE_64BIT_BUILD"; then + # Compiling with Visual Age C++ object model compat is the + # default. To compile with object model ibm, add + # AIX_OBJMODEL=ibm to .mozconfig. + if test "$AIX_OBJMODEL" = "ibm"; then + CXXFLAGS="$CXXFLAGS -qobjmodel=ibm" + else + AIX_OBJMODEL=compat + fi + else + AIX_OBJMODEL=compat + fi + AC_SUBST(AIX_OBJMODEL) + DSO_LDOPTS='-qmkshrobj=1' + DSO_CFLAGS='-qflag=w:w' + DSO_PIC_CFLAGS= + LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib" + MOZ_FIX_LINK_PATHS= + MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@' + MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@' + if test "$COMPILE_ENVIRONMENT"; then + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_MSG_CHECKING([for IBM XLC/C++ compiler version >= 9.0.0.7]) + AC_TRY_COMPILE([], + [#if (__IBMCPP__ < 900) + #error "Bad compiler" + #endif], + _BAD_COMPILER=,_BAD_COMPILER=1) + if test -n "$_BAD_COMPILER"; then + AC_MSG_RESULT([no]) + AC_MSG_ERROR([IBM XLC/C++ 9.0.0.7 or higher is required to build.]) + else + AC_MSG_RESULT([yes]) + fi + AC_LANG_RESTORE + TARGET_COMPILER_ABI="ibmc" + CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'` + CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'` + fi # COMPILE_ENVIRONMENT + fi + case "${target_os}" in + aix4.1*) + DLL_SUFFIX='_shr.a' + ;; + esac + if test "$COMPILE_ENVIRONMENT"; then + MOZ_CHECK_HEADERS(sys/inttypes.h) + fi # COMPILE_ENVIRONMENT + AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES) + ;; + +*-darwin*) + MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@' + MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@' + MOZ_OPTIMIZE_FLAGS="-O3" + # Statically disable jemalloc on 10.5 and 32-bit 10.6. See bug 702250. + if test "$HAVE_64BIT_BUILD"; then + MOZ_MEMORY=1 + fi + DLL_SUFFIX=".dylib" + DSO_LDOPTS='' + STRIP_FLAGS="$STRIP_FLAGS -x -S" + # Ensure that if we're targeting iOS an SDK was provided. + AC_CACHE_CHECK(for iOS target, + ac_cv_ios_target, + [AC_TRY_COMPILE([#include +#if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR) +#error not iOS +#endif], + [], + ac_cv_ios_target="yes", + ac_cv_ios_target="no")]) + if test "$ac_cv_ios_target" = "yes" -a -z $MOZ_IOS; then + AC_MSG_ERROR([targeting iOS but not using an iOS SDK?]) + fi + if test -n "$MOZ_IOS"; then + AC_DEFINE(XP_IOS) + AC_DEFINE(XP_DARWIN) + _PLATFORM_DEFAULT_TOOLKIT='cairo-uikit' + direct_nspr_config=1 + else + AC_DEFINE(XP_MACOSX) + AC_DEFINE(XP_DARWIN) + _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa' + # The ExceptionHandling framework is needed for Objective-C exception + # logging code in nsObjCExceptions.h. Currently we only use that in debug + # builds. + MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"; + fi + + if test "x$lto_is_enabled" = "xyes"; then + echo "Skipping -dead_strip because lto is enabled." + dnl DTrace and -dead_strip don't interact well. See bug 403132. + dnl =================================================================== + elif test "x$enable_dtrace" = "xyes"; then + echo "Skipping -dead_strip because DTrace is enabled. See bug 403132." + else + dnl check for the presence of the -dead_strip linker flag + AC_MSG_CHECKING([for -dead_strip option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-dead_strip" + AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=) + if test -n "$_HAVE_DEAD_STRIP" ; then + AC_MSG_RESULT([yes]) + MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip" + else + AC_MSG_RESULT([no]) + fi + + LDFLAGS=$_SAVE_LDFLAGS + fi + + dnl With newer linkers we need to pass -allow_heap_execute because of + dnl Microsoft Silverlight (5.1.10411.0 at least). + AC_MSG_CHECKING([for -allow_heap_execute option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-allow_heap_execute" + AC_TRY_LINK(,[return 0;],_HAVE_ALLOW_HEAP_EXECUTE=1, + _HAVE_ALLOW_HEAP_EXECUTE=) + if test -n "$_HAVE_ALLOW_HEAP_EXECUTE" ; then + AC_MSG_RESULT([yes]) + MOZ_ALLOW_HEAP_EXECUTE_FLAGS="-Wl,-allow_heap_execute" + else + AC_MSG_RESULT([no]) + fi + LDFLAGS=$_SAVE_LDFLAGS + + MOZ_FIX_LINK_PATHS="-Wl,-executable_path,${DIST}/bin" + ;; + +ia64*-hpux*) + DLL_SUFFIX=".so" + if test ! "$GNU_CC"; then + DSO_LDOPTS='-b' + DSO_CFLAGS="" + DSO_PIC_CFLAGS= + MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@' + MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@' + CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on" + else + DSO_LDOPTS='-b -E' + MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@' + MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@' + fi + MOZ_FIX_LINK_PATHS= + AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES) + AC_DEFINE(_LARGEFILE64_SOURCE) + ;; + +*-hpux*) + DLL_SUFFIX=".sl" + if test ! "$GNU_CC"; then + DSO_LDOPTS='-b -Wl,+s' + DSO_CFLAGS="" + DSO_PIC_CFLAGS="+Z" + MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(DIST)/bin -o $@' + MKCSHLIB='$(LD) -b +s -L$(DIST)/bin -o $@' + CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on" + else + DSO_LDOPTS='-b -E +s' + MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(DIST)/bin -L$(DIST)/lib -o $@' + MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(DIST)/bin -L$(DIST)/lib -o $@' + fi + MOZ_POST_PROGRAM_COMMAND='chatr +s enable' + AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES) + ;; + +*-android*|*-linuxandroid*) + AC_DEFINE(NO_PW_GECOS) + no_x=yes + if test -n "$gonkdir"; then + _PLATFORM_DEFAULT_TOOLKIT=cairo-gonk + _PLATFORM_HAVE_RIL=1 + MOZ_B2G_FM=1 + MOZ_SYNTH_PICO=1 + else + _PLATFORM_DEFAULT_TOOLKIT=cairo-android + if test "$COMPILE_ENVIRONMENT"; then + MOZ_LINKER=1 + fi + fi + + MOZ_GFX_OPTIMIZE_MOBILE=1 + MOZ_OPTIMIZE_FLAGS="-Os -fno-reorder-functions" + if test -z "$CLANG_CC"; then + MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS" + fi + ;; + +*-*linux*) + # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler. + # Similarly for GNU_CXX and INTEL_CXX. + if test "$INTEL_CC" -o "$INTEL_CXX"; then + # -Os has been broken on Intel's C/C++ compilers for quite a + # while; Intel recommends against using it. + MOZ_OPTIMIZE_FLAGS="-O2" + elif test "$GNU_CC" -o "$GNU_CXX"; then + MOZ_PGO_OPTIMIZE_FLAGS="-O3" + MOZ_OPTIMIZE_FLAGS="-Os" + if test -z "$CLANG_CC"; then + MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS" + fi + fi + + MOZ_MEMORY=1 + + case "${target_cpu}" in + alpha*) + CFLAGS="$CFLAGS -mieee" + CXXFLAGS="$CXXFLAGS -mieee" + ;; + esac + + if test -z "$MC"; then + MC=mc.exe + fi + ;; +*-mingw*) + DSO_CFLAGS= + DSO_PIC_CFLAGS= + DLL_SUFFIX=.dll + RC=rc.exe + MC=mc.exe + # certain versions of cygwin's makedepend barf on the + # #include vs -I./dist/include/string issue so don't use it + if test -n "$GNU_CC" -o -n "$CLANG_CC"; then + CC="$CC -mwindows" + CXX="$CXX -mwindows" + CPP="$CPP -mwindows" + CFLAGS="$CFLAGS -mms-bitfields" + CXXFLAGS="$CXXFLAGS -mms-bitfields" + DSO_LDOPTS='-shared' + MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@' + MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@' + RC='$(WINDRES)' + # Use static libgcc and libstdc++ + LDFLAGS="$LDFLAGS -static" + NSPR_LDFLAGS="$NSPR_LDFLAGS -static-libgcc" + # Use temp file for windres (bug 213281) + RCFLAGS='-O coff --use-temp-file' + # mingw doesn't require kernel32, user32, and advapi32 explicitly + LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32 -lnetapi32" + MOZ_FIX_LINK_PATHS= + DLL_PREFIX= + IMPORT_LIB_SUFFIX=a + + WIN32_CONSOLE_EXE_LDFLAGS=-mconsole + WIN32_GUI_EXE_LDFLAGS=-mwindows + + # GCC/binutils can't link to a function if we try to include dllexport function + # in the same library as dllimport caller. To work around it, we build NSPR + # and NSS with -mnop-fun-dllimport flag. The drawback of this solution is that + # function thunks need to be generated for cross-DLL calls. + MOZ_FOLD_LIBS_FLAGS=-mnop-fun-dllimport + + # We use mix of both POSIX and Win32 printf format across the tree, so format + # warnings are useless on mingw. + MOZ_C_SUPPORTS_WARNING(-Wno-, format, ac_c_has_wno_format) + MOZ_CXX_SUPPORTS_WARNING(-Wno-, format, ac_cxx_has_wno_format) + else + TARGET_COMPILER_ABI=msvc + HOST_CC='$(CC)' + HOST_CXX='$(CXX)' + HOST_LD='$(LD)' + if test "$AS_BIN"; then + AS="$(basename "$AS_BIN")" + fi + AR='lib' + AR_FLAGS='-NOLOGO -OUT:$@' + AR_EXTRACT= + RANLIB='echo not_ranlib' + STRIP='echo not_strip' + PKG_SKIP_STRIP=1 + XARGS=xargs + ZIP=zip + UNZIP=unzip + DOXYGEN=: + ASM_SUFFIX=asm + OBJ_SUFFIX=obj + LIB_SUFFIX=lib + DLL_PREFIX= + LIB_PREFIX= + IMPORT_LIB_SUFFIX=lib + MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)' + MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)' + dnl Set subsystem version 5 for Windows XP. + if test "$CPU_ARCH" = "x86"; then + WIN32_SUBSYSTEM_VERSION=5.01 + else + WIN32_SUBSYSTEM_VERSION=6.01 + fi + WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION + WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION + DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION + _USE_CPP_INCLUDE_FLAG=1 + _DEFINES_CFLAGS='-FI $(topobjdir)/mozilla-config.h -DMOZILLA_CLIENT' + _DEFINES_CXXFLAGS='-FI $(topobjdir)/mozilla-config.h -DMOZILLA_CLIENT' + SSE_FLAGS="-arch:SSE" + SSE2_FLAGS="-arch:SSE2" + CFLAGS="$CFLAGS -W3 -Gy" + CXXFLAGS="$CXXFLAGS -W3 -Gy" + if test "$CPU_ARCH" = "x86"; then + dnl VS2012+ defaults to -arch:SSE2. + CFLAGS="$CFLAGS -arch:IA32" + CXXFLAGS="$CXXFLAGS -arch:IA32" + fi + dnl VS2013+ requires -FS when parallel building by make -jN. + dnl If nothing, compiler sometimes causes C1041 error. + CFLAGS="$CFLAGS -FS" + CXXFLAGS="$CXXFLAGS -FS" + # khuey says we can safely ignore MSVC warning C4251 + # MSVC warning C4244 (implicit type conversion may lose data) warns + # and requires workarounds for perfectly valid code. Also, GCC/clang + # don't warn about it by default. So for consistency/sanity, we turn + # it off on MSVC, too. + # MSVC warning C4267 warns for narrowing type conversions from size_t + # to 32-bit integer types on 64-bit platforms. Since this is virtually + # the same thing as C4244, we disable C4267, too. + # MSVC warning C4345 warns of newly conformant behavior as of VS2003. + # MSVC warning C4351 warns of newly conformant behavior as of VS2005. + # MSVC warning C4800 warns when a value is implicitly cast to bool, + # because this also forces narrowing to a single byte, which can be a + # perf hit. But this matters so little in practice (and often we want + # that behavior) that it's better to turn it off. + # MSVC warning C4819 warns some UTF-8 characters (e.g. copyright sign) + # on non-Western system locales even if it is in a comment. + CFLAGS="$CFLAGS -wd4244 -wd4267 -wd4819" + CXXFLAGS="$CXXFLAGS -wd4251 -wd4244 -wd4267 -wd4345 -wd4351 -wd4800 -wd4819" + if test -n "$CLANG_CL"; then + # XXX We should combine some of these with our generic GCC-style + # warning checks. + # + # Suppress the clang-cl warning for the inline 'new' and 'delete' in mozalloc + CXXFLAGS="$CXXFLAGS -Wno-inline-new-delete" + # We use offsetof on non-POD objects all the time. + # We also suppress this warning on other platforms. + CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof" + # MFBT thinks clang-cl supports constexpr, which it does, but + # not everything in Windows C++ headers supports constexpr + # as we might expect until MSVC 2015, so turn off this warning + # for now. + CXXFLAGS="$CXXFLAGS -Wno-invalid-constexpr" + # This warns for reasonable things like: + # enum { X = 0xffffffffU }; + # which is annoying for IDL headers. + CXXFLAGS="$CXXFLAGS -Wno-microsoft-enum-value" + # This warns for cases that would be reached by the Microsoft + # #include rules, but also currently warns on cases that would + # *also* be reached by standard C++ include rules. That + # behavior doesn't seem useful, so we turn it off. + CXXFLAGS="$CXXFLAGS -Wno-microsoft-include" + # We normally error out on unknown pragmas, but since clang-cl + # claims to be MSVC, it would be difficult to add + # #if defined(_MSC_VER) && !defined(__clang__) everywhere we + # use such pragmas, so just ignore them. + CFLAGS="$CFLAGS -Wno-unknown-pragmas" + CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas" + # clang-cl's Intrin.h marks things like _ReadWriteBarrier + # as __attribute((__deprecated__)). This is nice to know, + # but since we don't get the equivalent warning from MSVC, + # let's just ignore it. + CFLAGS="$CFLAGS -Wno-deprecated-declarations" + CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations" + # We use a function like: + # __declspec(noreturn) __inline void f() {} + # which -Winvalid-noreturn complains about. Again, MSVC seems + # OK with it, so let's silence the warning. + CFLAGS="$CFLAGS -Wno-invalid-noreturn" + CXXFLAGS="$CXXFLAGS -Wno-invalid-noreturn" + # Missing |override| on virtual function declarations isn't + # something that MSVC currently warns about. + CXXFLAGS="$CXXFLAGS -Wno-inconsistent-missing-override" + # We use -DHAS_EXCEPTIONS=0, which removes the |throw()| + # declaration on |operator delete(void*)|. However, clang-cl + # must internally declare |operator delete(void*)| differently, + # which causes this warning for virtually every file in the + # tree. clang-cl doesn't support -fno-exceptions or equivalent, + # so there doesn't seem to be any way to convince clang-cl to + # declare |delete| differently. Therefore, suppress this + # warning. + CXXFLAGS="$CXXFLAGS -Wno-implicit-exception-spec-mismatch" + # At least one MSVC header and several headers in-tree have + # unused typedefs, so turn this on. + CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef" + # Several JS engine header files use __declspec(dllimport) on + # classes, and clang-cl helpfully warns about its non-support + # for such cases. We're not particularly worried about that, + # so ignore that warning. + CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes" + fi + # make 'foo == bar;' error out + CFLAGS="$CFLAGS -we4553" + CXXFLAGS="$CXXFLAGS -we4553" + LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib netapi32.lib" + MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV' + WARNINGS_AS_ERRORS='-WX' + MOZ_OPTIMIZE_FLAGS='-O1 -Oi' + MOZ_FIX_LINK_PATHS= + MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)' + LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT" + if test -z "$DEVELOPER_OPTIONS"; then + LDFLAGS="$LDFLAGS -RELEASE" + fi + dnl For profile-guided optimization + PROFILE_GEN_CFLAGS="-GL" + PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT" + dnl XXX: PGO builds can fail with warnings treated as errors, + dnl specifically "no profile data available" appears to be + dnl treated as an error sometimes. This might be a consequence + dnl of using WARNINGS_AS_ERRORS in some modules, combined + dnl with the linker doing most of the work in the whole-program + dnl optimization/PGO case. I think it's probably a compiler bug, + dnl but we work around it here. + PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952" + dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul. + dnl Probably also a compiler bug, but what can you do? + PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE" + LDFLAGS="$LDFLAGS -DYNAMICBASE" + RCFLAGS="-nologo" + if test "$_CC_MAJOR_VERSION" = "18" -a "$_CC_BUILD_VERSION" = "31101"; then + dnl Use MaxILKSize as a workaround for LNK1248 in VS2013update4 + dnl See https://connect.microsoft.com/VisualStudio/feedback/details/1044914/fatal-error-lnk1248 + LDFLAGS="$LDFLAGS -MaxILKSize:0x7FF00000" + fi + dnl Minimum reqiurement of Gecko is VS2010 or later which supports + dnl both SSSE3 and SSE4.1. + HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1 + HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1 + dnl allow AVX2 code from VS2012 + HAVE_X86_AVX2=1 + MOZ_MEMORY=1 + fi + AC_DEFINE(HAVE_SNPRINTF) + AC_DEFINE(_WINDOWS) + AC_DEFINE(WIN32) + AC_DEFINE(XP_WIN) + AC_DEFINE(XP_WIN32) + AC_DEFINE(HW_THREADS) + AC_DEFINE(STDC_HEADERS) + AC_DEFINE(WIN32_LEAN_AND_MEAN) + dnl See http://support.microsoft.com/kb/143208 to use STL + AC_DEFINE(NOMINMAX) + _PLATFORM_DEFAULT_TOOLKIT='cairo-windows' + BIN_SUFFIX='.exe' + MOZ_USER_DIR="Mozilla" + + dnl set NO_X11 defines here as the general check is skipped on win32 + no_x=yes + AC_DEFINE(NO_X11) + + case "$host" in + *-mingw*) + if test -n "$L10NBASEDIR"; then + L10NBASEDIR=`cd $L10NBASEDIR && pwd -W` + fi + ;; + esac + + case "$host_os" in + cygwin*|msvc*|mks*) + 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.]) + ;; + esac + + case "$target" in + i*86-*) + if test "$HAVE_64BIT_BUILD"; then + AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.]) + fi + + if test -n "$GNU_CC"; then + CFLAGS="$CFLAGS -mstackrealign -fno-keep-inline-dllexport" + CXXFLAGS="$CXXFLAGS -mstackrealign -fno-keep-inline-dllexport" + LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup -Wl,--large-address-aware" + else + DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86" + LDFLAGS="$LDFLAGS -SAFESEH" + fi + + AC_DEFINE(_X86_) + ;; + x86_64-*) + if test -z "$HAVE_64BIT_BUILD"; then + AC_MSG_ERROR([You are targeting 64-bit but using the 32-bit compiler.]) + fi + if test -n "$_WIN32_MSVC"; then + DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64" + fi + AC_DEFINE(_AMD64_) + ;; + *) + AC_DEFINE(_CPU_ARCH_NOT_DEFINED) + ;; + esac + ;; + +*-netbsd*) + DSO_CFLAGS='' + CFLAGS="$CFLAGS -Dunix" + CXXFLAGS="$CXXFLAGS -Dunix" + if $CC -E - -dM /dev/null; then + DLL_SUFFIX=".so" + DSO_PIC_CFLAGS='-fPIC -DPIC' + DSO_LDOPTS='-shared' + BIN_FLAGS='-Wl,--export-dynamic' + else + DSO_PIC_CFLAGS='-fPIC -DPIC' + DLL_SUFFIX=".so.1.0" + DSO_LDOPTS='-shared' + fi + # This will fail on a.out systems prior to 1.5.1_ALPHA. + if test "$LIBRUNPATH"; then + DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS" + fi + MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(DSO_SONAME) -o $@' + MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(DSO_SONAME) -o $@' + ;; + +*-openbsd*) + if test "$SO_VERSION"; then + DLL_SUFFIX=".so.$SO_VERSION" + else + DLL_SUFFIX=".so.1.0" + fi + if test -z "$X11BASE"; then + X11BASE=/usr/X11R6 + fi + MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib" + DSO_CFLAGS='' + DSO_PIC_CFLAGS='-fPIC' + DSO_LDOPTS='-shared -fPIC' + if test "$LIBRUNPATH"; then + DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS" + fi + ;; + +*-solaris*) + AC_DEFINE(SOLARIS) + MOZ_FIX_LINK_PATHS= + # $ORIGIN/.. is for shared libraries under components/ to locate shared + # libraries one level up (e.g. libnspr4.so) + if test "$SOLARIS_SUNPRO_CC"; then + LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs" + LIBS="-lCrun -lCstd -lc $LIBS" + AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES) + CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__" + CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef" + LDFLAGS="-xildoff $LDFLAGS" + MMX_FLAGS="-xarch=mmx -xO4" + SSE_FLAGS="-xarch=sse" + SSE2_FLAGS="-xarch=ssei2 -xO4" + if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS" + AC_TRY_LINK([#include ], + [printf("Hello World\n");], + , + [LDFLAGS=$_SAVE_LDFLAGS]) + fi + MOZ_OPTIMIZE_FLAGS="-xO4" + MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' + MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' + DSO_LDOPTS='-G' + AR_LIST="$AR t" + AR_EXTRACT="$AR x" + AR_DELETE="$AR d" + AR='$(CXX) -xar' + AR_FLAGS='-o $@' + AS='/usr/ccs/bin/as' + ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0" + AS_DASH_C_FLAG='' + TARGET_COMPILER_ABI="sunc" + CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'` + CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'` + AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9]) + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([], + [#if (__SUNPRO_CC < 0x590) + #error "Denied" + #endif], + _BAD_COMPILER=,_BAD_COMPILER=1) + if test -n "$_BAD_COMPILER"; then + _res="no" + AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .]) + else + _res="yes" + fi + AC_TRY_COMPILE([], + [#if (__SUNPRO_CC >= 0x5100) + #error "Sun C++ 5.10 or above" + #endif], + _ABOVE_SS12U1=,_ABOVE_SS12U1=1) + if test "$_ABOVE_SS12U1"; then + # disable xannotate + CXXFLAGS="$CXXFLAGS -xannotate=no" + fi + AC_MSG_RESULT([$_res]) + AC_LANG_RESTORE + else + LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs" + LIBS="-lc $LIBS" + ASFLAGS="$ASFLAGS -fPIC" + DSO_LDOPTS='-shared' + WARNINGS_AS_ERRORS='-Werror' + _WARNINGS_CFLAGS='' + _WARNINGS_CXXFLAGS='' + if test "$OS_RELEASE" = "5.3"; then + AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES) + fi + fi + if test "$OS_RELEASE" = "5.5.1"; then + AC_DEFINE(NEED_USLEEP_PROTOTYPE) + fi + ;; + +*-sunos*) + DSO_LDOPTS='-Bdynamic' + MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@' + MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@' + AC_DEFINE(SUNOS4) + AC_DEFINE(SPRINTF_RETURNS_STRING) + case "$(target_os)" in + sunos4.1*) + DLL_SUFFIX='.so.1.0' + ;; + esac + ;; + +esac + +AC_SUBST_LIST(MMX_FLAGS) +AC_SUBST_LIST(SSE_FLAGS) +AC_SUBST_LIST(SSE2_FLAGS) + +case "$target" in +*-*linux*) + # Includes linux-android + AC_DEFINE(XP_LINUX) + ;; +esac + +AC_SUBST(MOZ_LINKER) +if test -n "$MOZ_LINKER"; then + AC_DEFINE(MOZ_LINKER) +fi + +dnl Only one oddball right now (QNX), but this gives us flexibility +dnl if any other platforms need to override this in the future. +AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO) + +dnl ======================================================== +dnl = Flags to strip unused symbols from .so components and +dnl = to export jemalloc symbols when linking a program +dnl ======================================================== +case "$target" in + *-linux*|*-kfreebsd*-gnu|*-gnu*) + MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script' + ;; + *-solaris*) + if test -z "$GNU_CC"; then + MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile' + else + if test -z "$GCC_USE_GNU_LD"; then + MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile' + else + MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script' + fi + fi + ;; + *-darwin*) + MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list' + ;; + *-mingw*) + if test -n "$GNU_CC"; then + MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script' + fi + ;; +esac + +if test -z "$COMPILE_ENVIRONMENT"; then + SKIP_COMPILER_CHECKS=1 + SKIP_LIBRARY_CHECKS=1 + PKG_SKIP_STRIP=1 +else + MOZ_COMPILER_OPTS +fi # COMPILE_ENVIRONMENT + +if test -z "$SKIP_COMPILER_CHECKS"; then +dnl Checks for typedefs, structures, and compiler characteristics. +dnl ======================================================== +AC_HEADER_STDC +AC_C_CONST +AC_TYPE_MODE_T +AC_TYPE_OFF_T +AC_TYPE_PID_T +AC_TYPE_SIZE_T +AC_LANG_CPLUSPLUS +AC_LANG_C + +AC_LANG_CPLUSPLUS + +MOZ_CXX11 + +AC_LANG_C + +dnl Check for .hidden assembler directive and visibility attribute. +dnl Borrowed from glibc configure.in +dnl =============================================================== +if test "$GNU_CC" -a "$OS_TARGET" != WINNT; then + AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE) + AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE) + case "$OS_TARGET" in + Darwin) + VISIBILITY_FLAGS='-fvisibility=hidden -fvisibility-inlines-hidden' + ;; + *) + VISIBILITY_FLAGS="-I${DIST}/system_wrappers -include ${_topsrcdir}/config/gcc_hidden.h" + WRAP_SYSTEM_INCLUDES=1 + ;; + esac +fi # GNU_CC + +# visibility hidden flag for Sun Studio on Solaris +if test "$SOLARIS_SUNPRO_CC"; then +VISIBILITY_FLAGS='-xldscope=hidden' +fi # Sun Studio on Solaris + +case "${OS_TARGET}" in +WINNT|Darwin|Android) + ;; +*) + STL_FLAGS="-I${DIST}/stl_wrappers" + WRAP_STL_INCLUDES=1 + ;; +esac + +AC_SUBST(WRAP_SYSTEM_INCLUDES) +AC_SUBST_LIST(VISIBILITY_FLAGS) + +dnl Checks for header files. +dnl ======================================================== +AC_HEADER_DIRENT +case "$target_os" in +freebsd*|openbsd*) +# for stuff like -lXshm + CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}" + ;; +esac +MOZ_CHECK_COMMON_HEADERS + +dnl These are all the places some variant of statfs can be hiding. +MOZ_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h) + +dnl Quota support +MOZ_CHECK_HEADERS(sys/quota.h sys/sysmacros.h) +MOZ_CHECK_HEADERS([linux/quota.h],,,[#include ]) + +dnl SCTP support - needs various network include headers +MOZ_CHECK_HEADERS([linux/if_addr.h linux/rtnetlink.h],,,[#include ]) +MOZ_CHECK_HEADERS(sys/queue.h) + +MOZ_CHECK_HEADERS(sys/types.h netinet/in.h byteswap.h) + +dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally +AC_CACHE_CHECK(for sockaddr_in.sin_len, + ac_cv_sockaddr_in_sin_len, + [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H + #include + #endif + #include + struct sockaddr_in x; + void *foo = (void*) &x.sin_len;], + [], + [ac_cv_sockaddr_in_sin_len=true], + [ac_cv_sockaddr_in_sin_len=false])]) +if test "$ac_cv_sockaddr_in_sin_len" = true ; then + AC_DEFINE(HAVE_SIN_LEN) +dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too) + AC_DEFINE(HAVE_SCONN_LEN) +fi + +AC_CACHE_CHECK(for sockaddr_in6.sin6_len, + ac_cv_sockaddr_in6_sin6_len, + [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H + #include + #endif + #include + struct sockaddr_in6 x; + void *foo = (void*) &x.sin6_len;], + [], + [ac_cv_sockaddr_in6_sin6_len=true], + [ac_cv_sockaddr_in6_sin6_len=false])]) +if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then + AC_DEFINE(HAVE_SIN6_LEN) +fi + +AC_CACHE_CHECK(for sockaddr.sa_len, + ac_cv_sockaddr_sa_len, + [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H + #include + #endif + #include + struct sockaddr x; + void *foo = (void*) &x.sa_len;], + [], + [ac_cv_sockaddr_sa_len=true], + [ac_cv_sockaddr_sa_len=false])]) +if test "$ac_cv_sockaddr_sa_len" = true ; then + AC_DEFINE(HAVE_SA_LEN) +fi + +MOZ_ARG_ENABLE_BOOL(dtrace, + [ --enable-dtrace build with dtrace support if available (default=no)], + [enable_dtrace="yes"],) +if test "x$enable_dtrace" = "xyes"; then + MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1) + if test -n "$HAVE_DTRACE"; then + AC_DEFINE(INCLUDE_MOZILLA_DTRACE) + else + AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]); + fi +fi +AC_SUBST(HAVE_DTRACE) + +MOZ_LINUX_PERF_EVENT + +dnl Checks for libraries. +dnl ======================================================== +case $target in +*-hpux11.*) + ;; +*) + AC_CHECK_LIB(c_r, gethostbyname_r) + ;; +esac + +dnl We don't want to link with libdl even if it's present on OS X, since +dnl it's not used and not part of the default installation. OS/2 has dlfcn +dnl in libc. +dnl We don't want to link against libm or libpthread on Darwin since +dnl they both are just symlinks to libSystem and explicitly linking +dnl against libSystem causes issues when debugging (see bug 299601). +case $target in +*-darwin*) + ;; +*) + AC_SEARCH_LIBS(dlopen, dl, + MOZ_CHECK_HEADER(dlfcn.h, + AC_DEFINE(HAVE_DLOPEN))) + ;; +esac + +_SAVE_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -D_GNU_SOURCE" +AC_CHECK_FUNCS(dladdr memmem) +CFLAGS="$_SAVE_CFLAGS" + +if test ! "$GNU_CXX"; then + + case $target in + *-aix*) + AC_CHECK_LIB(C_r, demangle) + ;; + *) + AC_CHECK_LIB(C, demangle) + ;; + esac +fi + +AC_CHECK_LIB(socket, socket) + +XLDFLAGS="$X_LIBS" +XLIBS="$X_EXTRA_LIBS" + +dnl ======================================================== +dnl Checks for X libraries. +dnl Ordering is important. +dnl Xt is dependent upon SM as of X11R6 +dnl ======================================================== +if test "$no_x" = "yes"; then + AC_DEFINE(NO_X11) +else + AC_DEFINE_UNQUOTED(FUNCPROTO,15) + XLIBS="-lX11 $XLIBS" + _SAVE_LDFLAGS="$LDFLAGS" + LDFLAGS="$XLDFLAGS $LDFLAGS" + AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"], + [MISSING_X="$MISSING_X -lX11"], $XLIBS) + AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"], + [MISSING_X="$MISSING_X -lXext"], $XLIBS) + + AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [ + unset ac_cv_lib_Xt_XtFree + AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS) + AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS) + AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"], + [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS) + ]) + + # AIX needs the motif library linked before libXt to prevent + # crashes in plugins linked against Motif - Bug #98892 + case "${target_os}" in + aix*) + XT_LIBS="-lXm $XT_LIBS" + ;; + esac + + dnl ======================================================== + dnl = Check for XShm + dnl ======================================================== + AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,, + $XLIBS $XEXT_LIBS) + + dnl ======================================================== + dnl = Check for Xss + dnl ======================================================== + MOZ_CHECK_HEADER(X11/extensions/scrnsaver.h, + AC_CHECK_LIB(Xss, XScreenSaverQueryInfo, + [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS" + AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS)) + + LDFLAGS="$_SAVE_LDFLAGS" +fi # $no_x + +AC_SUBST_LIST(XCFLAGS) +AC_SUBST_LIST(XLDFLAGS) +AC_SUBST_LIST(XLIBS) +AC_SUBST_LIST(XEXT_LIBS) +AC_SUBST_LIST(XT_LIBS) +AC_SUBST_LIST(XSS_LIBS) + +dnl ======================================================== +dnl = pthread support +dnl = Start by checking whether the system support pthreads +dnl ======================================================== +case "$target_os" in +darwin*) + MOZ_USE_PTHREADS=1 + ;; +*) + AC_CHECK_LIB(pthreads, pthread_create, + MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads", + AC_CHECK_LIB(pthread, pthread_create, + MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread", + AC_CHECK_LIB(c_r, pthread_create, + MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r", + AC_CHECK_LIB(c, pthread_create, + MOZ_USE_PTHREADS=1 + ) + ) + ) + ) + ;; +esac + +dnl ======================================================== +dnl Check the command line for --with-pthreads +dnl ======================================================== +MOZ_ARG_WITH_BOOL(pthreads, +[ --with-pthreads Force use of system pthread library with NSPR ], +[ if test "$MOZ_USE_PTHREADS"x = x; then + AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]); +fi], + MOZ_USE_PTHREADS= + _PTHREAD_LDFLAGS= +) + +dnl ======================================================== +dnl Do the platform specific pthread hackery +dnl ======================================================== +if test "$MOZ_USE_PTHREADS"x != x +then + dnl + dnl See if -pthread is supported. + dnl + rm -f conftest* + ac_cv_have_dash_pthread=no + AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread) + echo 'int main() { return 0; }' | cat > conftest.c + ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1 + if test $? -eq 0; then + if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then + ac_cv_have_dash_pthread=yes + case "$target_os" in + freebsd*) +# Freebsd doesn't use -pthread for compiles, it uses them for linking + ;; + *) + CFLAGS="$CFLAGS -pthread" + CXXFLAGS="$CXXFLAGS -pthread" + ;; + esac + fi + fi + rm -f conftest* + AC_MSG_RESULT($ac_cv_have_dash_pthread) + + dnl + dnl See if -pthreads is supported. + dnl + ac_cv_have_dash_pthreads=no + if test "$ac_cv_have_dash_pthread" = "no"; then + AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads) + echo 'int main() { return 0; }' | cat > conftest.c + ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1 + if test $? -eq 0; then + if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then + ac_cv_have_dash_pthreads=yes + CFLAGS="$CFLAGS -pthreads" + CXXFLAGS="$CXXFLAGS -pthreads" + fi + fi + rm -f conftest* + AC_MSG_RESULT($ac_cv_have_dash_pthreads) + fi + + case "$target" in + *-*-freebsd*) + AC_DEFINE(_REENTRANT) + AC_DEFINE(_THREAD_SAFE) + dnl -pthread links in -lpthread, so don't specify it explicitly. + if test "$ac_cv_have_dash_pthread" = "yes"; then + _PTHREAD_LDFLAGS="-pthread" + fi + ;; + + *-*-openbsd*|*-*-bsdi*) + AC_DEFINE(_REENTRANT) + AC_DEFINE(_THREAD_SAFE) + dnl -pthread links in -lc_r, so don't specify it explicitly. + if test "$ac_cv_have_dash_pthread" = "yes"; then + _PTHREAD_LDFLAGS="-pthread" + fi + ;; + + *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*) + AC_DEFINE(_REENTRANT) + ;; + + *-aix4.3*|*-aix5*) + AC_DEFINE(_REENTRANT) + ;; + + *-hpux11.*) + AC_DEFINE(_REENTRANT) + ;; + + *-*-solaris*) + AC_DEFINE(_REENTRANT) + if test "$SOLARIS_SUNPRO_CC"; then + CFLAGS="$CFLAGS -mt" + CXXFLAGS="$CXXFLAGS -mt" + fi + ;; + esac + LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}" + AC_SUBST(MOZ_USE_PTHREADS) + MOZ_CHECK_HEADERS(pthread.h) +fi + + +dnl Checks for library functions. +dnl ======================================================== +AC_PROG_GCC_TRADITIONAL +AC_FUNC_MEMCMP +AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize gmtime_r localtime_r arc4random arc4random_buf mallinfo gettid lchown setpriority strerror syscall) + +dnl check for clock_gettime(), the CLOCK_MONOTONIC clock +AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC), + ac_cv_clock_monotonic, + [for libs in "" -lrt; do + _SAVE_LIBS="$LIBS" + LIBS="$LIBS $libs" + AC_TRY_LINK([#include ], + [ struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); ], + ac_cv_clock_monotonic=$libs + LIBS="$_SAVE_LIBS" + break, + ac_cv_clock_monotonic=no) + LIBS="$_SAVE_LIBS" + done]) +if test "$ac_cv_clock_monotonic" != "no"; then + HAVE_CLOCK_MONOTONIC=1 + REALTIME_LIBS=$ac_cv_clock_monotonic + AC_DEFINE(HAVE_CLOCK_MONOTONIC) + AC_SUBST(HAVE_CLOCK_MONOTONIC) + AC_SUBST_LIST(REALTIME_LIBS) +fi + +dnl check for wcrtomb/mbrtowc +dnl ======================================================================= +if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_CACHE_CHECK(for wcrtomb, + ac_cv_have_wcrtomb, + [AC_TRY_LINK([#include ], + [mbstate_t ps={0};wcrtomb(0,'f',&ps);], + ac_cv_have_wcrtomb="yes", + ac_cv_have_wcrtomb="no")]) +if test "$ac_cv_have_wcrtomb" = "yes"; then + AC_DEFINE(HAVE_WCRTOMB) +fi +AC_CACHE_CHECK(for mbrtowc, + ac_cv_have_mbrtowc, + [AC_TRY_LINK([#include ], + [mbstate_t ps={0};mbrtowc(0,0,0,&ps);], + ac_cv_have_mbrtowc="yes", + ac_cv_have_mbrtowc="no")]) +if test "$ac_cv_have_mbrtowc" = "yes"; then + AC_DEFINE(HAVE_MBRTOWC) +fi +AC_LANG_RESTORE +fi + +AC_CACHE_CHECK( + [for res_ninit()], + ac_cv_func_res_ninit, + [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then + dnl no need for res_ninit() on NetBSD and OpenBSD + ac_cv_func_res_ninit=no + else + AC_TRY_LINK([ + #ifdef linux + #define _BSD_SOURCE 1 + #endif + #include + #include + #include + #include + ], + [int foo = res_ninit(&_res);], + [ac_cv_func_res_ninit=yes], + [ac_cv_func_res_ninit=no]) + fi + ]) + +if test "$ac_cv_func_res_ninit" = "yes"; then + AC_DEFINE(HAVE_RES_NINIT) +dnl must add the link line we do something as foolish as this... dougt +dnl else +dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT), +dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT))) +fi + +AC_LANG_CPLUSPLUS + +ICONV_LIBS= + +case $target_os in + darwin*|mingw*) + ;; + *) + +AC_CHECK_LIB(c, iconv, [ICONV_LIBS=], + AC_CHECK_LIB(iconv, iconv, [ICONV_LIBS="-liconv"], + AC_CHECK_LIB(iconv, libiconv, [ICONV_LIBS="-liconv"]))) +_SAVE_LIBS=$LIBS +LIBS="$LIBS $ICONV_LIBS" +AC_CACHE_CHECK( + [for iconv()], + ac_cv_func_iconv, + [AC_TRY_LINK([ + #include + #include + ], + [ + iconv_t h = iconv_open("", ""); + iconv(h, NULL, NULL, NULL, NULL); + iconv_close(h); + ], + [ac_cv_func_iconv=yes], + [ac_cv_func_iconv=no] + )] + ) +if test "$ac_cv_func_iconv" = "yes"; then + AC_DEFINE(HAVE_ICONV) + LIBICONV="$ICONV_LIBS" + AC_CACHE_CHECK( + [for iconv() with const input], + ac_cv_func_const_iconv, + [AC_TRY_COMPILE([ + #include + #include + ], + [ + const char *input = "testing"; + iconv_t h = iconv_open("", ""); + iconv(h, &input, NULL, NULL, NULL); + iconv_close(h); + ], + [ac_cv_func_const_iconv=yes], + [ac_cv_func_const_iconv=no] + )] + ) + if test "$ac_cv_func_const_iconv" = "yes"; then + AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT) + fi +fi +LIBS=$_SAVE_LIBS + + ;; +esac + +AC_SUBST_LIST(ICONV_LIBS) + +AM_LANGINFO_CODESET + +AC_LANG_C + +dnl ********************** +dnl *** va_copy checks *** +AC_CACHE_CHECK([for an implementation of va_copy()], + ac_cv_va_copy, + [AC_TRY_COMPILE([#include + #include + void f (int i, ...) { + va_list args1, args2; + va_start (args1, i); + va_copy (args2, args1); + if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42) + exit (1); + va_end (args1); va_end (args2); + }], + [f(0, 42); return 0], + [ac_cv_va_copy=yes], + [ac_cv_va_copy=no] + )] +) +AC_CACHE_CHECK([whether va_list can be copied by value], + ac_cv_va_val_copy, + [AC_TRY_COMPILE([#include + #include + void f (int i, ...) { + va_list args1, args2; + va_start (args1, i); + args2 = args1; + if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42) + exit (1); + va_end (args1); va_end (args2); + }], + [f(0, 42); return 0], + [ac_cv_va_val_copy=yes], + [ac_cv_va_val_copy=no], + )] +) +if test "x$ac_cv_va_copy" = "xyes"; then + AC_DEFINE(VA_COPY, va_copy) + AC_DEFINE(HAVE_VA_COPY) +fi + +if test "x$ac_cv_va_val_copy" = "xno"; then + AC_DEFINE(HAVE_VA_LIST_AS_ARRAY) +fi + +dnl =================================================================== +dnl ======================================================== +dnl Put your C++ language/feature checks below +dnl ======================================================== +AC_LANG_CPLUSPLUS + +ARM_ABI_PREFIX= +if test "$GNU_CC"; then + if test "$CPU_ARCH" = "arm" ; then + AC_CACHE_CHECK(for ARM EABI, + ac_cv_gcc_arm_eabi, + [AC_TRY_COMPILE([], + [ +#if defined(__ARM_EABI__) + return 0; +#else +#error Not ARM EABI. +#endif + ], + ac_cv_gcc_arm_eabi="yes", + ac_cv_gcc_arm_eabi="no")]) + if test "$ac_cv_gcc_arm_eabi" = "yes"; then + HAVE_ARM_EABI=1 + ARM_ABI_PREFIX=eabi- + else + ARM_ABI_PREFIX=oabi- + fi + fi + + TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}" +fi + +dnl Check to see if we can resolve ambiguity with |using|. +AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity, + ac_cv_cpp_ambiguity_resolving_using, + [AC_TRY_COMPILE(class X { + public: int go(const X&) {return 3;} + int jo(const X&) {return 3;} + }; + class Y : public X { + public: int go(int) {return 2;} + int jo(int) {return 2;} + using X::jo; + private: using X::go; + };, + X x; Y y; y.jo(x);, + ac_cv_cpp_ambiguity_resolving_using=yes, + ac_cv_cpp_ambiguity_resolving_using=no)]) +if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then + AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING) +fi + +dnl See if a dynamic_cast to void* gives the most derived object. +AC_CACHE_CHECK(for C++ dynamic_cast to void*, + ac_cv_cpp_dynamic_cast_void_ptr, + [AC_TRY_RUN([class X { int i; public: virtual ~X() { } }; + class Y { int j; public: virtual ~Y() { } }; + class Z : public X, public Y { int k; }; + + int main() { + Z mdo; + X *subx = (X*)&mdo; + Y *suby = (Y*)&mdo; + return !((((void*)&mdo != (void*)subx) && + ((void*)&mdo == dynamic_cast(subx))) || + (((void*)&mdo != (void*)suby) && + ((void*)&mdo == dynamic_cast(suby)))); + }], + ac_cv_cpp_dynamic_cast_void_ptr=yes, + ac_cv_cpp_dynamic_cast_void_ptr=no, + ac_cv_cpp_dynamic_cast_void_ptr=no)]) +if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then + AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR) +fi + + +# try harder, when checking for __thread support, see bug 521750 comment #33 and below +# We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is +# enabled, the linker in xcode 4.1 will crash. Without this it would crash when +# linking XUL. +_SAVE_LDFLAGS=$LDFLAGS +LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS" +AC_CACHE_CHECK(for __thread keyword for TLS variables, + ac_cv_thread_keyword, + [AC_TRY_LINK([__thread bool tlsIsMainThread = false;], + [return tlsIsMainThread;], + ac_cv_thread_keyword=yes, + ac_cv_thread_keyword=no)]) +LDFLAGS=$_SAVE_LDFLAGS +# The custom dynamic linker doesn't support TLS variables +MOZ_TLS= +if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then + # mips builds fail with TLS variables because of a binutils bug. + # See bug 528687 + # OpenBSD doesn't have TLS support, and the test succeeds with clang++ + case "${target}" in + mips*-*) + : + ;; + *-android*|*-linuxandroid*) + : + ;; + *-openbsd*) + : + ;; + *) + AC_DEFINE(HAVE_THREAD_TLS_KEYWORD) + MOZ_TLS=1 + ;; + esac +fi + +dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments. +if test -n "$MOZ_LINKER"; then + if test "$CPU_ARCH" = arm; then + dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments + if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then + LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000" + _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000" + fi + fi + +dnl gold emits wrong sysv-style elf hash tables when building both sysv and +dnl style tables. https://sourceware.org/bugzilla/show_bug.cgi?id=13597 +dnl Since the linker only understands the sysv ones, no need to build the +dnl gnu style tables anyways. + LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv" +fi + +dnl The custom linker doesn't support text relocations, but NDK >= r6b +dnl creates some (http://code.google.com/p/android/issues/detail?id=23203) +dnl We however want to avoid these text relocations, and this can be done +dnl by making gcc not link crtbegin and crtend. In the broken NDKs, crtend +dnl doesn't contain anything at all, beside placeholders for some sections, +dnl and crtbegin only contains a finalizer function that calls +dnl __cxa_finalize. The custom linker actually takes care of calling +dnl __cxa_finalize when the library doesn't call it itself, which makes it +dnl safe not to link crtbegin. Besides, previous versions of the NDK didn't +dnl link crtbegin and crtend at all. +if test -n "$MOZ_LINKER" -a "$OS_TARGET" = "Android"; then + AC_CACHE_CHECK([whether the CRT objects have text relocations], + ac_cv_crt_has_text_relocations, + [echo 'int foo() { return 0; }' > conftest.cpp + if AC_TRY_COMMAND(${CXX-g++} -o conftest${DLL_SUFFIX} $CXXFLAGS $DSO_LDOPTS $LDFLAGS conftest.cpp $LIBS 1>&5) && + test -s conftest${DLL_SUFFIX}; then + if ${TOOLCHAIN_PREFIX}readelf -d conftest${DLL_SUFFIX} | grep TEXTREL > /dev/null; then + ac_cv_crt_has_text_relocations=yes + else + ac_cv_crt_has_text_relocations=no + fi + else + AC_ERROR([couldn't compile a simple C file]) + fi + rm -rf conftest*]) + if test "$ac_cv_crt_has_text_relocations" = yes; then + dnl While we want libraries to skip the CRT files, we don't want + dnl executables to be treated the same way. We thus set the flag + dnl in DSO_LDOPTS and not LDFLAGS. However, to pass it to nspr, + dnl we need to use LDFLAGS because nspr doesn't inherit DSO_LDOPTS. + dnl Using LDFLAGS in nspr is safe, since we only really build + dnl libraries there. + DSO_LDOPTS="$DSO_LDOPTS -nostartfiles" + NSPR_LDFLAGS="$NSPR_LDFLAGS -nostartfiles" + fi +fi + +dnl See if compiler supports some gcc-style attributes + +AC_CACHE_CHECK(for __attribute__((always_inline)), + ac_cv_attribute_always_inline, + [AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));], + [], + ac_cv_attribute_always_inline=yes, + ac_cv_attribute_always_inline=no)]) + +dnl End of C++ language/feature checks +AC_LANG_C + +dnl ======================================================== +dnl = Internationalization checks +dnl ======================================================== +dnl +dnl Internationalization and Locale support is different +dnl on various UNIX platforms. Checks for specific i18n +dnl features go here. + +dnl check for LC_MESSAGES +AC_CACHE_CHECK(for LC_MESSAGES, + ac_cv_i18n_lc_messages, + [AC_TRY_COMPILE([#include ], + [int category = LC_MESSAGES;], + ac_cv_i18n_lc_messages=yes, + ac_cv_i18n_lc_messages=no)]) +if test "$ac_cv_i18n_lc_messages" = yes; then + AC_DEFINE(HAVE_I18N_LC_MESSAGES) +fi + +AC_HAVE_FUNCS(localeconv) +fi # ! SKIP_COMPILER_CHECKS + +MOZ_CHECK_ALLOCATOR + +TARGET_XPCOM_ABI= +if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then + TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}" + AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"]) +fi + +dnl We can't run TRY_COMPILE tests on Windows, so hard-code some +dnl features that Windows actually does support. + +if test -n "$SKIP_COMPILER_CHECKS"; then + dnl Windows has malloc.h + AC_DEFINE(MALLOC_H, []) + AC_DEFINE(HAVE_FORCEINLINE) + AC_DEFINE(HAVE_LOCALECONV) +fi # SKIP_COMPILER_CHECKS + +dnl Mozilla specific options +dnl ======================================================== +dnl The macros used for command line options +dnl are defined in build/autoconf/altoptions.m4. + +dnl ======================================================== +dnl = +dnl = Check for external package dependencies +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(External Packages) + +MOZ_ARG_WITH_STRING(libxul-sdk, +[ --with-libxul-sdk=PFX Use the libXUL SDK at ], + AC_MSG_ERROR([--with-libxul-sdk is not supported anymore.])) + +case "$OS_TARGET" in +WINNT|Darwin|Android) + MOZ_FOLD_LIBS=1 + ;; +*) + MOZ_FOLD_LIBS= + ;; +esac + +MOZ_CONFIG_NSPR() + +dnl set GRE_MILESTONE +dnl ======================================================== +GRE_MILESTONE=`tail -n 1 "$_topsrcdir"/config/milestone.txt 2>/dev/null || tail -1 "$_topsrcdir"/config/milestone.txt` +AC_SUBST(GRE_MILESTONE) + +# set RELEASE_BUILD and NIGHTLY_BUILD variables depending on the cycle we're in +# The logic works like this: +# - if we have "a1" in GRE_MILESTONE, we're building Nightly (define NIGHTLY_BUILD) +# - otherwise, if we have "a" in GRE_MILESTONE, we're building Nightly or Aurora +# - otherwise, we're building Release/Beta (define RELEASE_BUILD) +case "$GRE_MILESTONE" in + *a1*) + NIGHTLY_BUILD=1 + AC_DEFINE(NIGHTLY_BUILD) + ;; + *a*) + ;; + *) + RELEASE_BUILD=1 + AC_DEFINE(RELEASE_BUILD) + ;; +esac +AC_SUBST(NIGHTLY_BUILD) +AC_SUBST(RELEASE_BUILD) + +dnl ======================================================== +dnl Multiprocess Firefox Testing UI - Nightly and Aurora +dnl To be removed in Bug 1003313 +dnl ======================================================== +if test -z "$RELEASE_BUILD"; then + E10S_TESTING_ONLY=1 + AC_DEFINE(E10S_TESTING_ONLY) +fi + +AC_SUBST(E10S_TESTING_ONLY) + +dnl ======================================================== +dnl system libevent Support +dnl ======================================================== +MOZ_ARG_WITH_STRING(system-libevent, +[ --with-system-libevent[=PFX] + Use system libevent [installed at prefix PFX]], + LIBEVENT_DIR=$withval) + +_SAVE_CFLAGS=$CFLAGS +_SAVE_LDFLAGS=$LDFLAGS +_SAVE_LIBS=$LIBS +if test "$LIBEVENT_DIR" = yes; then + PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent, + MOZ_NATIVE_LIBEVENT=1, + LIBEVENT_DIR=/usr) +fi +if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then + MOZ_NATIVE_LIBEVENT= +elif test -z "$MOZ_NATIVE_LIBEVENT"; then + CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS" + LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS" + MOZ_CHECK_HEADER(event.h, + [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then + AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include]) + fi], + AC_MSG_ERROR([--with-system-libevent requested but event.h not found])) + AC_CHECK_LIB(event, event_init, + [MOZ_NATIVE_LIBEVENT=1 + MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include" + MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"], + [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=]) +fi +CFLAGS=$_SAVE_CFLAGS +LDFLAGS=$_SAVE_LDFLAGS +LIBS=$_SAVE_LIBS + +AC_SUBST(MOZ_NATIVE_LIBEVENT) + +dnl ======================================================== +dnl = If NSS was not detected in the system, +dnl = use the one in the source tree (mozilla/security/nss) +dnl ======================================================== + +MOZ_ARG_WITH_BOOL(system-nss, +[ --with-system-nss Use system installed NSS], + _USE_SYSTEM_NSS=1 ) + +if test -n "$_USE_SYSTEM_NSS"; then + AM_PATH_NSS(3.22, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) +fi + +if test -n "$MOZ_NATIVE_NSS"; then + NSS_LIBS="$NSS_LIBS -lcrmf" +else + NSS_CFLAGS="-I${DIST}/include/nss" +fi + +dnl ====================== +dnl Detect yasm +dnl ====================== + +AC_MSG_CHECKING([for YASM assembler]) +AC_CHECK_PROGS(YASM, yasm, "") + +if test -n "$YASM"; then + AC_MSG_CHECKING([yasm version]) + dnl Pull out yasm's version string + YASM_VERSION=`yasm --version | $AWK '/^yasm/ { print $2 }'` + _YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'` + _YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'` + _YASM_RELEASE=` echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'` + _YASM_BUILD=` echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'` + AC_MSG_RESULT([$_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION.$_YASM_RELEASE ($YASM_VERSION)]) +fi + +if test -z "$SKIP_LIBRARY_CHECKS"; then +dnl system JPEG support +dnl ======================================================== +MOZ_ARG_WITH_STRING(system-jpeg, +[ --with-system-jpeg[=PFX] + Use system libjpeg [installed at prefix PFX]], + JPEG_DIR=$withval) + +_SAVE_CFLAGS=$CFLAGS +_SAVE_LDFLAGS=$LDFLAGS +_SAVE_LIBS=$LIBS +if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then + CFLAGS="-I${JPEG_DIR}/include $CFLAGS" + LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS" +fi +if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then + MOZ_NATIVE_JPEG= +else + AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [MOZ_NATIVE_JPEG=1 MOZ_JPEG_LIBS="-ljpeg"], MOZ_NATIVE_JPEG=) +fi + +if test "$MOZ_NATIVE_JPEG" = 1; then + AC_TRY_COMPILE([ #include + #include + #include ], + [ #if JPEG_LIB_VERSION < $MOZJPEG + #error "Insufficient JPEG library version ($MOZJPEG required)." + #endif + #ifndef JCS_EXTENSIONS + #error "libjpeg-turbo JCS_EXTENSIONS required" + #endif + ], + MOZ_NATIVE_JPEG=1, + AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg])) +fi +CFLAGS=$_SAVE_CFLAGS +LDFLAGS=$_SAVE_LDFLAGS +LIBS=$_SAVE_LIBS + +if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$MOZ_NATIVE_JPEG" = 1; then + MOZ_JPEG_CFLAGS="-I${JPEG_DIR}/include" + MOZ_JPEG_LIBS="-L${JPEG_DIR}/lib ${MOZ_JPEG_LIBS}" +fi +fi # SKIP_LIBRARY_CHECKS + +dnl system ZLIB support +dnl ======================================================== +MOZ_ZLIB_CHECK([1.2.3]) + +if test "$MOZ_LINKER" = 1 -a "$MOZ_NATIVE_ZLIB" != 1; then + AC_MSG_ERROR([Custom dynamic linker requires --with-system-zlib]) +fi + +MOZ_PNG_ARM_NEON= + +if test -z "$SKIP_LIBRARY_CHECKS"; then +dnl system BZIP2 Support +dnl ======================================================== +MOZ_ARG_WITH_STRING(system-bz2, +[ --with-system-bz2[=PFX] + Use system libbz2 [installed at prefix PFX]], + BZ2_DIR=$withval) + +_SAVE_CFLAGS=$CFLAGS +_SAVE_LDFLAGS=$LDFLAGS +_SAVE_LIBS=$LIBS +if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then + CFLAGS="-I${BZ2_DIR}/include $CFLAGS" + LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS" +fi +if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then + MOZ_NATIVE_BZ2= +else + AC_CHECK_LIB(bz2, BZ2_bzread, [MOZ_NATIVE_BZ2=1 MOZ_BZ2_LIBS="-lbz2"], + [MOZ_NATIVE_BZ2= MOZ_BZ2_CFLAGS= MOZ_BZ2_LIBS=]) +fi +CFLAGS=$_SAVE_CFLAGS +LDFLAGS=$_SAVE_LDFLAGS +LIBS=$_SAVE_LIBS + +if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$MOZ_NATIVE_BZ2" = 1; then + MOZ_BZ2_CFLAGS="-I${BZ2_DIR}/include" + MOZ_BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}" +fi + +dnl ======================================================== +dnl system PNG Support +dnl ======================================================== +MOZ_ARG_WITH_STRING(system-png, +[ --with-system-png[=PFX] + Use system libpng [installed at prefix PFX]], + PNG_DIR=$withval) + +_SAVE_CFLAGS=$CFLAGS +_SAVE_LDFLAGS=$LDFLAGS +_SAVE_LIBS=$LIBS +if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then + CFLAGS="-I${PNG_DIR}/include $CFLAGS" + LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS" +fi +if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then + MOZ_NATIVE_PNG= +else + AC_CHECK_LIB(png, png_get_valid, [MOZ_NATIVE_PNG=1 MOZ_PNG_LIBS="-lpng"], + AC_MSG_ERROR([--with-system-png requested but no working libpng found])) + AC_CHECK_LIB(png, png_get_acTL, , + AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support])) +fi +if test "$MOZ_NATIVE_PNG" = 1; then + AC_TRY_COMPILE([ #include + #include + #include ], + [ #if PNG_LIBPNG_VER < $MOZPNG + #error "Insufficient libpng version ($MOZPNG required)." + #endif + #ifndef PNG_UINT_31_MAX + #error "Insufficient libpng version." + #endif ], + MOZ_NATIVE_PNG=1, + AC_MSG_ERROR([--with-system-png requested but no working libpng found])) +fi +CFLAGS=$_SAVE_CFLAGS +LDFLAGS=$_SAVE_LDFLAGS +LIBS=$_SAVE_LIBS + +if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_NATIVE_PNG" = 1; then + MOZ_PNG_CFLAGS="-I${PNG_DIR}/include" + MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}" +fi + +MOZ_PNG_ARM_NEON_CHECK= +if test "$MOZ_NATIVE_PNG" != 1 -a "$CPU_ARCH" = "arm" ; then + MOZ_ARG_ENABLE_STRING(png-arm-neon-support, + [ --enable-png-arm-neon-support=TYPE + Options include: + no + check (default) + nocheck (faster but unsafe)], + [MOZ_PNG_ARM_NEON_SUPPORT=$enableval ] ) + case "$MOZ_PNG_ARM_NEON_SUPPORT" in + no) + # enable-png-arm-neon-support = no + ;; + nocheck) + # enable-png-arm-neon-support = nocheck + MOZ_PNG_ARM_NEON=1 + ;; + *) + MOZ_PNG_ARM_NEON=1 + MOZ_PNG_ARM_NEON_CHECK=1 + ;; + esac +fi + +AC_SUBST(MOZ_PNG_ARM_NEON_CHECK) + +fi # SKIP_LIBRARY_CHECKS + +AC_SUBST(MOZ_PNG_ARM_NEON) + +dnl ======================================================== +dnl system HunSpell Support +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(system-hunspell, +[ --enable-system-hunspell + Use system hunspell (located with pkgconfig)], + MOZ_NATIVE_HUNSPELL=1 ) + +if test -n "$MOZ_NATIVE_HUNSPELL"; then + PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell) +fi + +AC_SUBST(MOZ_NATIVE_HUNSPELL) + +dnl ======================================================== +dnl system libffi Support +dnl ======================================================== +MOZ_CONFIG_FFI() + +MOZ_ARG_ENABLE_BOOL(shared-js, +[ --enable-shared-js + Create a shared JavaScript library.], + JS_SHARED_LIBRARY=1, + JS_SHARED_LIBRARY=) + +dnl ======================================================== +dnl Java SDK support +dnl ======================================================== + +JAVA_BIN_PATH= +MOZ_ARG_WITH_STRING(java-bin-path, +[ --with-java-bin-path=dir + Location of Java binaries (java, javac, jar)], + JAVA_BIN_PATH=$withval) + +dnl ======================================================== +dnl = +dnl = Application +dnl = +dnl ======================================================== + +MOZ_ARG_HEADER(Application) + +ENABLE_TESTS=1 +ENABLE_SYSTEM_EXTENSION_DIRS=1 +MOZ_BRANDING_DIRECTORY= +MOZ_OFFICIAL_BRANDING= +MOZ_FEEDS=1 +MOZ_WEBAPP_RUNTIME= +MOZ_AUTH_EXTENSION=1 +if test "$MOZ_IOS"; then + MOZ_AUTH_EXTENSION= +fi +MOZ_RAW= +MOZ_VORBIS= +MOZ_TREMOR= +MOZ_SAMPLE_TYPE_FLOAT32= +MOZ_SAMPLE_TYPE_S16= +MOZ_DIRECTSHOW= +MOZ_WMF= +if test -n "$MOZ_FMP4"; then + MOZ_FMP4=1 +else + MOZ_FMP4= +fi +MOZ_FFMPEG= +MOZ_WEBRTC=1 +MOZ_PEERCONNECTION= +MOZ_SRTP= +MOZ_WEBRTC_SIGNALING= +MOZ_WEBRTC_ASSERT_ALWAYS=1 +MOZ_WEBRTC_HARDWARE_AEC_NS= +MOZ_SCTP= +MOZ_ANDROID_OMX= +MOZ_MEDIA_NAVIGATOR= +MOZ_OMX_PLUGIN= +MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE= +MOZ_VPX_ERROR_CONCEALMENT= +MOZ_WEBSPEECH=1 +MOZ_WEBSPEECH_MODELS= +MOZ_WEBSPEECH_POCKETSPHINX= +MOZ_WEBSPEECH_TEST_BACKEND=1 +VPX_AS= +VPX_ASFLAGS= +VPX_AS_CONVERSION= +VPX_ASM_SUFFIX= +VPX_X86_ASM= +VPX_ARM_ASM= +LIBJPEG_TURBO_AS= +LIBJPEG_TURBO_ASFLAGS= +MOZ_PERMISSIONS=1 +MOZ_PLACES=1 +MOZ_SOCIAL=1 +MOZ_PREF_EXTENSIONS=1 +MOZ_PROFILELOCKING=1 +MOZ_REFLOW_PERF= +MOZ_SAFE_BROWSING= +MOZ_HELP_VIEWER= +MOZ_SPELLCHECK=1 +MOZ_ANDROID_APZ= +MOZ_TOOLKIT_SEARCH=1 +MOZ_UI_LOCALE=en-US +MOZ_UNIVERSALCHARDET=1 +MOZ_URL_CLASSIFIER= +MOZ_XUL=1 +MOZ_ZIPWRITER=1 +NS_PRINTING=1 +if test "$MOZ_IOS"; then + NS_PRINTING= +fi +MOZ_PDF_PRINTING= +MOZ_NO_SMART_CARDS= +NSS_DISABLE_DBM= +NECKO_COOKIES=1 +NECKO_PROTOCOLS_DEFAULT="about app data file ftp http res viewsource websocket wyciwyg device" +if test -n "$MOZ_RTSP"; then + NECKO_PROTOCOLS_DEFAULT="$NECKO_PROTOCOLS_DEFAULT rtsp" +fi +USE_ARM_KUSER= +BUILD_CTYPES=1 +MOZ_USE_NATIVE_POPUP_WINDOWS= +MOZ_ANDROID_HISTORY= +MOZ_WEBSMS_BACKEND= +MOZ_ANDROID_BEAM= +MOZ_LOCALE_SWITCHER= +MOZ_ANDROID_SEARCH_ACTIVITY= +MOZ_ANDROID_DOWNLOADS_INTEGRATION= +MOZ_ANDROID_GCM= +MOZ_ANDROID_MLS_STUMBLER= +MOZ_EXCLUDE_HYPHENATION_DICTIONARIES= +MOZ_INSTALL_TRACKING= +MOZ_SWITCHBOARD= +ACCESSIBILITY=1 +MOZ_TIME_MANAGER= +MOZ_SIMPLEPUSH= +MOZ_PAY= +MOZ_AUDIO_CHANNEL_MANAGER= +MOZ_CONTENT_SANDBOX= +MOZ_GMP_SANDBOX= +MOZ_SANDBOX=1 +MOZ_BINARY_EXTENSIONS= +MOZ_ADDON_SIGNING= +MOZ_REQUIRE_SIGNING= +MOZ_DEVTOOLS=server + +case "$target_os" in + mingw*) + NS_ENABLE_TSF=1 + AC_DEFINE(NS_ENABLE_TSF) + ;; +esac + +case "${target}" in + *-android*|*-linuxandroid*) + if test "$CPU_ARCH" = "arm" ; then + USE_ARM_KUSER=1 + fi + + NSS_DISABLE_DBM=1 + MOZ_THEME_FASTSTRIPE=1 + MOZ_TREE_FREETYPE=1 + if test "$COMPILE_ENVIRONMENT"; then + MOZ_MEMORY=1 + fi + MOZ_RAW=1 + ;; + +esac + +MOZ_ARG_WITH_STRING(external-source-dir, +[ --with-external-source-dir=dir + External directory containing additional build files.], +[ EXTERNAL_SOURCE_DIR=$withval]) +AC_SUBST(EXTERNAL_SOURCE_DIR) + +MOZ_ARG_ENABLE_STRING(application, +[ --enable-application=APP + Options include: + browser (Firefox) + xulrunner + tools/update-packaging (AUS-related packaging tools)], +[ MOZ_BUILD_APP=$enableval ] ) + +MOZ_ARG_WITH_STRING(xulrunner-stub-name, +[ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name], + XULRUNNER_STUB_NAME=$withval) + +if test -z "$XULRUNNER_STUB_NAME"; then + XULRUNNER_STUB_NAME=xulrunner-stub +fi +AC_SUBST(XULRUNNER_STUB_NAME) + +AC_MSG_CHECKING([for application to build]) +if test -z "$MOZ_BUILD_APP"; then + AC_MSG_RESULT([browser]) + MOZ_BUILD_APP=browser +else + # "mobile" no longer exists. + if test "$MOZ_BUILD_APP" = "mobile" ; then + AC_MSG_RESULT([none]) + AC_MSG_ERROR([--enable-application=mobile is no longer supported.]) + fi + # Support comm-central. + if test -n "$EXTERNAL_SOURCE_DIR" ; then + MOZ_BUILD_APP="$EXTERNAL_SOURCE_DIR/$MOZ_BUILD_APP" + MOZ_BUILD_APP=`${PYTHON} -c "import mozpack.path as mozpath; print(mozpath.relpath(\"${MOZ_BUILD_APP}\", \"${srcdir}\"))"` + fi + # We have a valid application only if it has a build.mk file in its top + # directory. + if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then + AC_MSG_RESULT([none]) + AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).]) + else + AC_MSG_RESULT([$MOZ_BUILD_APP]) + fi +fi + +# The app update channel is 'default' when not supplied. The value is used in +# the application's confvars.sh so it must be set before confvars.sh is called. +MOZ_ARG_ENABLE_STRING([update-channel], +[ --enable-update-channel=CHANNEL + Select application update channel (default=default)], + MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`) + +if test -z "$MOZ_UPDATE_CHANNEL"; then + MOZ_UPDATE_CHANNEL=default +fi +AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL) +AC_SUBST(MOZ_UPDATE_CHANNEL) + +# Allow to specify a Mozilla API key file that contains the secret key to be +# used for various Mozilla API requests. +MOZ_ARG_WITH_STRING(mozilla-api-keyfile, +[ --with-mozilla-api-keyfile=file Use the secret key contained in the given keyfile for Mozilla API requests], + MOZ_MOZILLA_API_KEY=`cat $withval`) +if test -z "$MOZ_MOZILLA_API_KEY"; then + MOZ_MOZILLA_API_KEY=no-mozilla-api-key +fi +AC_SUBST(MOZ_MOZILLA_API_KEY) + +# Allow to specify a Google API key file that contains the secret key to be +# used for various Google API requests. +MOZ_ARG_WITH_STRING(google-api-keyfile, +[ --with-google-api-keyfile=file Use the secret key contained in the given keyfile for Google API requests], + MOZ_GOOGLE_API_KEY=`cat $withval`) +if test -z "$MOZ_GOOGLE_API_KEY"; then + MOZ_GOOGLE_API_KEY=no-google-api-key +fi +AC_SUBST(MOZ_GOOGLE_API_KEY) + +# Allow to specify a Google OAuth API key file that contains the client ID and +# the secret key to be used for various Google OAuth API requests. +MOZ_ARG_WITH_STRING(google-oauth-api-keyfile, +[ --with-google-oauth-api-keyfile=file Use the client id and secret key contained in the given keyfile for Google OAuth API requests], + [MOZ_GOOGLE_OAUTH_API_CLIENTID=`cat $withval | cut -f 1 -d " "` + MOZ_GOOGLE_OAUTH_API_KEY=`cat $withval | cut -f 2 -d " "`]) +if test -z "$MOZ_GOOGLE_OAUTH_API_CLIENTID"; then + MOZ_GOOGLE_OAUTH_API_CLIENTID=no-google-oauth-api-clientid + MOZ_GOOGLE_OAUTH_API_KEY=no-google-oauth-api-key +fi +AC_SUBST(MOZ_GOOGLE_OAUTH_API_CLIENTID) +AC_SUBST(MOZ_GOOGLE_OAUTH_API_KEY) + +# Allow specifying a Bing API key file that contains the client ID and the +# secret key to be used for the Bing Translation API requests. +MOZ_ARG_WITH_STRING(bing-api-keyfile, +[ --with-bing-api-keyfile=file Use the client id and secret key contained in the given keyfile for Bing API requests], + [MOZ_BING_API_CLIENTID=`cat $withval | cut -f 1 -d " "` + MOZ_BING_API_KEY=`cat $withval | cut -f 2 -d " "`]) +if test -z "$MOZ_BING_API_CLIENTID"; then + MOZ_BING_API_CLIENTID=no-bing-api-clientid + MOZ_BING_API_KEY=no-bing-api-key +fi +AC_SUBST(MOZ_BING_API_CLIENTID) +AC_SUBST(MOZ_BING_API_KEY) + +# Allow specifying an Adjust SDK key file that contains the app token used for +# Adjust SDK requests. +MOZ_ARG_WITH_STRING(adjust-sdk-keyfile, +[ --with-adjust-sdk-keyfile=file Use the app token contained in the given keyfile for Adjust SDK requests], + MOZ_INSTALL_TRACKING_ADJUST_SDK_APP_TOKEN=`cat $withval`) +AC_SUBST(MOZ_INSTALL_TRACKING_ADJUST_SDK_APP_TOKEN) + +# Allow specifying a GCM sender ID key file that contains the sender ID used for +# GCM requests. Note that GCM sender IDs are not sensitive: see, for example, +# http://stackoverflow.com/a/18216063. +MOZ_ARG_WITH_STRING(gcm-senderid-keyfile, +[ --with-gcm-senderid-keyfile=file GCM sender ID for GCM requests], + MOZ_ANDROID_GCM_SENDERID=`cat $withval`) +AC_SUBST(MOZ_ANDROID_GCM_SENDERID) + +# Whether this APK is destined for resource constrained devices. +# We want this in mobile/android/confvars.sh, so it goes early. +MOZ_ARG_ENABLE_BOOL(android-resource-constrained, +[ --enable-android-resource-constrained + Exclude hi-res images and similar from the final APK], + MOZ_ANDROID_RESOURCE_CONSTRAINED=1) + +if test -n "$MOZ_ANDROID_RESOURCE_CONSTRAINED"; then + AC_DEFINE(MOZ_ANDROID_RESOURCE_CONSTRAINED) +fi +AC_SUBST(MOZ_ANDROID_RESOURCE_CONSTRAINED) + +# Optional Firefox for Android partner distribution directory. +MOZ_ARG_WITH_STRING(android-distribution-directory, +[ --with-android-distribution-directory=dir + Optional Firefox for Android partner distribution directory.], + MOZ_ANDROID_DISTRIBUTION_DIRECTORY=$withval) + +if test -n "$MOZ_ANDROID_DISTRIBUTION_DIRECTORY"; then + # A distribution directory must have an assets/distribution directory. + # See https://wiki.mozilla.org/Mobile/Distribution_Files. + if test ! -d "$MOZ_ANDROID_DISTRIBUTION_DIRECTORY/assets/distribution" ; then + AC_MSG_ERROR([--with-android-distribution-directory does not contain assets/distribution; + (looked for ${MOZ_ANDROID_DISTRIBUTION_DIRECTORY}/assets/distribution).]) + fi +fi +AC_SUBST(MOZ_ANDROID_DISTRIBUTION_DIRECTORY) + +dnl ======================================================== +dnl = Trademarked Branding +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(official-branding, +[ --enable-official-branding + Enable Official mozilla.org Branding + Do not distribute builds with + --enable-official-branding unless you have + permission to use trademarks per + http://www.mozilla.org/foundation/trademarks/ .], + MOZ_OFFICIAL_BRANDING=1, + MOZ_OFFICIAL_BRANDING=) + +# Allow the application to influence configure with a confvars.sh script. +AC_MSG_CHECKING([if app-specific confvars.sh exists]) +if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then + AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh]) + . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" +else + AC_MSG_RESULT([no]) +fi + +# Allow influencing configure with a defines.sh script. +. "${srcdir}/build/defines.sh" + +# If we're not building a release build, define EARLY_BETA_OR_EARLIER if it is +# set in defines.sh +if test "$BUILDING_RELEASE"; then + # Override value in defines.sh, if any + EARLY_BETA_OR_EARLIER= +elif test "$EARLY_BETA_OR_EARLIER"; then + AC_DEFINE(EARLY_BETA_OR_EARLIER) +fi +AC_SUBST(EARLY_BETA_OR_EARLIER) + +# Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig +MOZ_ARG_WITH_STRING(app-name, +[--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME], +WITH_APP_NAME=$withval, +) + +if test -n "$WITH_APP_NAME" ; then + MOZ_APP_NAME="$WITH_APP_NAME" +fi + +MOZ_ARG_WITH_STRING(app-basename, +[--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME], +WITH_APP_BASENAME=$withval, +) + +if test -n "$WITH_APP_BASENAME" ; then + MOZ_APP_BASENAME="$WITH_APP_BASENAME" +fi + +# Special cases where we need to AC_DEFINE something. Also a holdover for apps +# that haven't made a confvars.sh yet. Don't add new stuff here, use +# MOZ_BUILD_APP. +case "$MOZ_BUILD_APP" in +browser) + AC_DEFINE(MOZ_PHOENIX) + ;; + +xulrunner) + AC_DEFINE(MOZ_XULRUNNER) + ;; +esac + +if test -n "$MOZ_B2G"; then + AC_DEFINE(MOZ_B2G) +fi + +# Graphene is a desktop runtime for running applications with a HTML UI. +if test -n "$MOZ_GRAPHENE"; then + AC_DEFINE(MOZ_GRAPHENE) +fi + +if test -n "$MOZ_MULET"; then + AC_DEFINE(MOZ_MULET) +fi + +if test -n "$MOZ_B2GDROID"; then + AC_DEFINE(MOZ_B2GDROID) +fi + +# Propagate feature switches for code written in rust from confvars.sh +if test -n "$MOZ_RUST"; then + if test -n "$MOZ_RUST_MP4PARSE"; then + AC_DEFINE(MOZ_RUST_MP4PARSE) + fi +fi + +AC_SUBST(MOZ_BUILD_APP) +AC_SUBST(MOZ_PHOENIX) +AC_SUBST(MOZ_XULRUNNER) +AC_SUBST(MOZ_B2G) +AC_SUBST(MOZ_MULET) +AC_SUBST(MOZ_B2G_VERSION) +AC_SUBST(MOZ_B2GDROID) + +AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP) + +dnl ======================================================== +dnl Ensure Android SDK and build-tools versions depending on +dnl mobile target. +dnl ======================================================== + +if test -z "$gonkdir" ; then + case "$MOZ_BUILD_APP" in + mobile/android | mobile/android/b2gdroid) + case "$target" in + *-android*|*-linuxandroid*) + : + ;; + *) + AC_MSG_ERROR([You must specify --target=arm-linux-androideabi (or some other valid android target) when building with --enable-application=mobile/android or --enable-application=mobile/android/b2gdroid. + See https://wiki.mozilla.org/Mobile/Fennec/Android#Setup_Fennec_mozconfig for more information about the necessary options]) + ;; + esac + + MOZ_ANDROID_SDK(23, 23.0.1) + ;; + esac +fi + +dnl ======================================================== +dnl = +dnl = Toolkit Options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Toolkit Options) + + dnl ======================================================== + dnl = Select the default toolkit + dnl ======================================================== + MOZ_ARG_ENABLE_STRING(default-toolkit, + [ --enable-default-toolkit=TK + Select default toolkit + Platform specific defaults: + Mac OS X - cairo-cocoa + Win32 - cairo-windows + * - cairo-gtk2 + * - cairo-gtk3 + * - cairo-qt], + [ _DEFAULT_TOOLKIT=$enableval ], + [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT]) + + if test "$_DEFAULT_TOOLKIT" = "cairo-windows" \ + -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \ + -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \ + -o "$_DEFAULT_TOOLKIT" = "cairo-gtk3" \ + -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \ + -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \ + -o "$_DEFAULT_TOOLKIT" = "cairo-uikit" \ + -o "$_DEFAULT_TOOLKIT" = "cairo-android" \ + -o "$_DEFAULT_TOOLKIT" = "cairo-gonk" + then + dnl nglayout only supports building with one toolkit, + dnl so ignore everything after the first comma (","). + MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"` + else + AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).]) + fi + +MOZ_ARG_WITHOUT_BOOL(x, +[ --without-x Build without X11], + WITHOUT_X11=1) + +dnl ======================================================== +dnl = Enable the toolkit as needed = +dnl ======================================================== + +MOZ_WIDGET_GTK= + +case "$MOZ_WIDGET_TOOLKIT" in + +cairo-windows) + MOZ_WIDGET_TOOLKIT=windows + MOZ_PDF_PRINTING=1 + MOZ_INSTRUMENT_EVENT_LOOP=1 + ;; + +cairo-gtk3) + MOZ_WIDGET_TOOLKIT=gtk3 + MOZ_ENABLE_GTK=1 + MOZ_ENABLE_GTK3=1 + MOZ_ENABLE_XREMOTE=1 + MOZ_GL_DEFAULT_PROVIDER=GLX + + AC_DEFINE(MOZ_X11) + MOZ_X11=1 + USE_FC_FREETYPE=1 + + MOZ_WIDGET_GTK=3 + AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK) + MOZ_PDF_PRINTING=1 + MOZ_INSTRUMENT_EVENT_LOOP=1 + ;; + +cairo-gtk2|cairo-gtk2-x11) + MOZ_WIDGET_TOOLKIT=gtk2 + MOZ_ENABLE_GTK=1 + MOZ_ENABLE_GTK2=1 + MOZ_ENABLE_XREMOTE=1 + MOZ_GL_DEFAULT_PROVIDER=GLX + + AC_DEFINE(MOZ_X11) + MOZ_X11=1 + USE_FC_FREETYPE=1 + + AC_DEFINE(MOZ_WIDGET_GTK2) + MOZ_WIDGET_GTK=2 + AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK) + MOZ_PDF_PRINTING=1 + MOZ_INSTRUMENT_EVENT_LOOP=1 + ;; + +cairo-qt) + MOZ_WIDGET_TOOLKIT=qt + MOZ_ENABLE_QT=1 + if test -z "$WITHOUT_X11"; then + MOZ_ENABLE_XREMOTE=1 + MOZ_GL_DEFAULT_PROVIDER=GLX + MOZ_X11=1 + AC_DEFINE(MOZ_X11) + XT_LIBS= + fi + + USE_FC_FREETYPE=1 + AC_DEFINE(MOZ_WIDGET_QT) + MOZ_PDF_PRINTING=1 + AC_DEFINE(QT_NO_KEYWORDS) + ;; + +cairo-cocoa) + MOZ_WIDGET_TOOLKIT=cocoa + AC_DEFINE(MOZ_WIDGET_COCOA) + LDFLAGS="$LDFLAGS -framework Cocoa -lobjc" + # Use -Wl as a trick to avoid -framework and framework names from + # being separated by AC_SUBST_LIST. + TK_LIBS='-Wl,-framework,CoreLocation -Wl,-framework,QuartzCore -Wl,-framework,Carbon -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit -Wl,-framework,AddressBook -Wl,-framework,OpenGL' + TK_CFLAGS="-DNO_X11" + CFLAGS="$CFLAGS $TK_CFLAGS" + CXXFLAGS="$CXXFLAGS $TK_CFLAGS" + MOZ_USER_DIR="Mozilla" + MOZ_FS_LAYOUT=bundle + MOZ_INSTRUMENT_EVENT_LOOP=1 + ;; + +cairo-uikit) + MOZ_WIDGET_TOOLKIT=uikit + AC_DEFINE(MOZ_WIDGET_UIKIT) + LDFLAGS="$LDFLAGS -framework UIKit -lobjc" + TK_CFLAGS="-DNO_X11" + TK_LIBS='-Wl,-framework,Foundation -Wl,-framework,CoreFoundation -Wl,-framework,CoreGraphics -Wl,-framework,CoreText -Wl,-framework,AVFoundation -Wl,-framework,AudioToolbox -Wl,-framework,CoreMedia -Wl,-framework,CoreVideo -Wl,-framework,OpenGLES -Wl,-framework,QuartzCore' + CFLAGS="$CFLAGS $TK_CFLAGS" + CXXFLAGS="$CXXFLAGS $TK_CFLAGS" + MOZ_USER_DIR="Mozilla" + MOZ_FS_LAYOUT=bundle + ;; + +cairo-android) + AC_DEFINE(MOZ_WIDGET_ANDROID) + MOZ_WIDGET_TOOLKIT=android + MOZ_PDF_PRINTING=1 + MOZ_INSTRUMENT_EVENT_LOOP=1 + ;; + +cairo-gonk) + AC_DEFINE(MOZ_WIDGET_GONK) + AC_DEFINE(MOZ_TOUCH) + MOZ_WIDGET_TOOLKIT=gonk + MOZ_PDF_PRINTING=1 + MOZ_TOUCH=1 + MOZ_INSTRUMENT_EVENT_LOOP=1 + ;; + +esac + +AC_SUBST(MOZ_PDF_PRINTING) +if test "$MOZ_PDF_PRINTING"; then + PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1" + AC_DEFINE(MOZ_PDF_PRINTING) +fi + +if test "$MOZ_ENABLE_XREMOTE"; then + AC_DEFINE(MOZ_ENABLE_XREMOTE) +fi + +if test "$MOZ_INSTRUMENT_EVENT_LOOP"; then + AC_DEFINE(MOZ_INSTRUMENT_EVENT_LOOP) +fi + +if test "$COMPILE_ENVIRONMENT"; then + if test "$MOZ_ENABLE_GTK3"; then + PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 $GDK_PACKAGES) + MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS" + TK_CFLAGS=$MOZ_GTK3_CFLAGS + TK_LIBS=$MOZ_GTK3_LIBS + AC_DEFINE_UNQUOTED(GDK_VERSION_MIN_REQUIRED,$GDK_VERSION_MIN_REQUIRED) + AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MIN_REQUIRED) + GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32 + fi + if test "$MOZ_ENABLE_GTK2"; then + GLIB_VERSION_MAX_ALLOWED=$GLIB_VERSION_MIN_REQUIRED + fi + if test "$MOZ_ENABLE_GTK"; then + if test "$MOZ_X11"; then + GDK_PACKAGES=gdk-x11-2.0 + fi + AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED) + AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED) + + PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 >= $GLIB_VERSION gobject-2.0 $GDK_PACKAGES) + MOZ_GTK2_CFLAGS="-I${_topsrcdir}/widget/gtk/compat $MOZ_GTK2_CFLAGS" + fi + if test "$MOZ_ENABLE_GTK2"; then + TK_CFLAGS=$MOZ_GTK2_CFLAGS + TK_LIBS=$MOZ_GTK2_LIBS + fi +fi # COMPILE_ENVIRONMENT + +AC_SUBST(MOZ_FS_LAYOUT) + +dnl ======================================================== +dnl Use ARM userspace kernel helpers; tell NSPR to enable +dnl their usage and use them in spidermonkey. +dnl ======================================================== +MOZ_ARG_WITH_BOOL(arm-kuser, +[ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)], + USE_ARM_KUSER=1,) +if test -n "$USE_ARM_KUSER"; then + AC_DEFINE(USE_ARM_KUSER) +fi + +dnl ======================================================== +dnl = startup-notification support module +dnl ======================================================== + +if test "$MOZ_ENABLE_GTK" +then + MOZ_ENABLE_STARTUP_NOTIFICATION= + + MOZ_ARG_ENABLE_BOOL(startup-notification, + [ --enable-startup-notification + Enable startup-notification support (default: disabled) ], + MOZ_ENABLE_STARTUP_NOTIFICATION=force, + MOZ_ENABLE_STARTUP_NOTIFICATION=) + if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" + then + PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION, + libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION, + [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [ + if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force" + then + AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION]) + fi + MOZ_ENABLE_STARTUP_NOTIFICATION= + ]) + fi + + if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then + AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION) + fi + + TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS" +fi +AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION) + +dnl ======================================================== +dnl Disable printing +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(printing, +[ --disable-printing Disable printing support], + NS_PRINTING=, + NS_PRINTING=1) + +if test -n "$MOZ_IOS" -a -n "$NS_PRINTING"; then + AC_MSG_ERROR([Printing is not supported on iOS.]) +fi + +if test "$NS_PRINTING"; then + AC_DEFINE(NS_PRINTING) + AC_DEFINE(NS_PRINT_PREVIEW) +fi + +dnl ======================================================== +dnl = QT support +dnl ======================================================== +if test "$MOZ_ENABLE_QT" +then + MOZ_ARG_WITH_STRING(qtdir, + [ --with-qtdir=\$dir Specify Qt directory ], + [ QTDIR=$withval]) + + if test -z "$QTDIR"; then + AC_CHECK_PROGS(HOST_QMAKE, $HOST_QMAKE qmake, "") + else + HOST_QMAKE="$QTDIR/bin/qmake" + fi + QT_VERSION=`$HOST_QMAKE -v | grep 'Using Qt version' | egrep -o '[[0-9]]+\.[[0-9]]+\.[[0-9]]+'` + + if test -z "$QTDIR"; then + case $QT_VERSION in + 5.*) + AC_MSG_RESULT("Using qt5: $QT_VERSION") + PKG_CHECK_MODULES(MOZ_QT, Qt5Gui Qt5Network Qt5Core Qt5Quick, , + [ + AC_MSG_ERROR([$MOZ_QT_PKG_ERRORS Need qtbase development packages, (On Ubuntu, you might try installing the packages qtbase5-dev libqt5opengl5-dev.)]) + ]) + QT5INCDIR=`pkg-config --variable=includedir Qt5Gui` + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QT5INCDIR/QtGui/$QT_VERSION/QtGui" + if test "$NS_PRINTING"; then + PKG_CHECK_MODULES(MOZ_QT_WIDGETS, Qt5PrintSupport, , + [ + AC_MSG_ERROR([$MOZ_QT_PKG_ERRORS Need qt5 printsupport development package]) + ]) + MOZ_QT_LIBS="$MOZ_QT_LIBS $MOZ_QT_WIDGETS_LIBS" + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $MOZ_QT_WIDGETS_CFLAGS" + fi + ;; + *) + AC_MSG_ERROR([* * * Unsupported Qt Version: $QT_VERSION]) + ;; + esac + + AC_CHECK_PROGS(HOST_MOC, $MOC moc, "") + AC_CHECK_PROGS(HOST_RCC, $RCC rcc, "") + else + MOZ_QT_CFLAGS="-DQT_SHARED" + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include" + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui" + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore" + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork" + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml" + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDeclarative" + case $QT_VERSION in + 5.*) + AC_MSG_RESULT("Using qt5: $QT_VERSION") + MOZ_QT_LIBS="$MOZ_QT_LIBS -L$QTDIR/lib/ -lQt5Gui -lQt5Network -lQt5Core -lQt5Xml" + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui/$QT_VERSION/QtGui" + if test "$NS_PRINTING"; then + MOZ_QT_LIBS="$MOZ_QT_LIBS -lQt5Widgets -lQt5PrintSupport" + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtPrintSupport" + fi + ;; + *) + AC_MSG_ERROR([* * * Unsupported Qt Version: $QT_VERSION]) + ;; + esac + + HOST_MOC="$QTDIR/bin/moc" + HOST_RCC="$QTDIR/bin/rcc" + fi + if test -z "$HOST_MOC"; then + AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is incorrect]) + fi + if test -z "$HOST_RCC"; then + AC_MSG_ERROR([No acceptable rcc preprocessor found. Qt SDK is not installed or --with-qt is incorrect]) + fi + + MOC=$HOST_MOC + RCC=$HOST_RCC + + MOZ_ENABLE_QMSYSTEM2= + PKG_CHECK_MODULES(_QMSYSTEM2, qmsystem2, + MOZ_ENABLE_QMSYSTEM2=1, + MOZ_ENABLE_QMSYSTEM2=) + + if test "$MOZ_ENABLE_QMSYSTEM2"; then + MOZ_ENABLE_QMSYSTEM2=1 + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QMSYSTEM2_CFLAGS" + MOZ_QT_LIBS="$MOZ_QT_LIBS $_QMSYSTEM2_LIBS" + AC_DEFINE(MOZ_ENABLE_QMSYSTEM2) + fi + + MOZ_ENABLE_QTNETWORK= + PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7, + MOZ_ENABLE_QTNETWORK=1, + MOZ_ENABLE_QTNETWORK=) + + if test "$MOZ_ENABLE_QTNETWORK"; then + MOZ_ENABLE_QTNETWORK=1 + AC_DEFINE(MOZ_ENABLE_QTNETWORK) + fi + + MOZ_ENABLE_QTMOBILITY= + PKG_CHECK_MODULES(_QTMOBILITY, QtSensors QtFeedback QtLocation, + MOZ_ENABLE_QTMOBILITY=1, + MOZ_ENABLE_QTMOBILITY=) + if test "$MOZ_ENABLE_QTMOBILITY"; then + MOZ_ENABLE_QTMOBILITY=1 + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QTMOBILITY_CFLAGS" + MOZ_QT_LIBS="$MOZ_QT_LIBS $_QTMOBILITY_LIBS" + AC_DEFINE(MOZ_ENABLE_QTMOBILITY) + AC_SUBST(MOZ_ENABLE_QTMOBILITY) + else + AC_CHECK_LIB(QtSensors, main, [ + MOZ_ENABLE_QTMOBILITY=1 + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtMobility" + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtSensors" + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtFeedback" + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtLocation" + MOZ_QT_LIBS="$MOZ_QT_LIBS -lQtSensors -lQtFeedback -lQtLocation" + ]) + fi + + MOZ_ENABLE_QT5FEEDBACK= + PKG_CHECK_MODULES(_QT5FEEDBACK, Qt0Feedback, + MOZ_ENABLE_QT5FEEDBACK=1, + MOZ_ENABLE_QT5FEEDBACK=) + if test "$MOZ_ENABLE_QT5FEEDBACK"; then + MOZ_ENABLE_QT5FEEDBACK=1 + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QT5FEEDBACK_CFLAGS" + MOZ_QT_LIBS="$MOZ_QT_LIBS $_QT5FEEDBACK_LIBS" + AC_DEFINE(MOZ_ENABLE_QT5FEEDBACK) + AC_SUBST(MOZ_ENABLE_QT5FEEDBACK) + fi + + MOZ_ENABLE_QT5GEOPOSITION= + PKG_CHECK_MODULES(_QT5GEOPOSITION, Qt5Positioning, + MOZ_ENABLE_QT5GEOPOSITION=1, + MOZ_ENABLE_QT5GEOPOSITION=) + if test "$MOZ_ENABLE_QT5GEOPOSITION"; then + MOZ_ENABLE_QT5GEOPOSITION=1 + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QT5GEOPOSITION_CFLAGS" + MOZ_QT_LIBS="$MOZ_QT_LIBS $_QT5GEOPOSITION_LIBS" + AC_DEFINE(MOZ_ENABLE_QT5GEOPOSITION) + AC_SUBST(MOZ_ENABLE_QT5GEOPOSITION) + fi + + if test "$MOZ_ENABLE_CONTENTACTION"; then + MOZ_ENABLE_CONTENTACTION=1 + AC_DEFINE(MOZ_ENABLE_CONTENTACTION) + fi + + MOZ_ENABLE_CONTENTACTION= + PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=) + if test "$MOZ_ENABLE_CONTENTACTION"; then + MOZ_ENABLE_CONTENTACTION=1 + MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_CONTENTACTION_CFLAGS" + MOZ_QT_LIBS="$MOZ_QT_LIBS $_CONTENTACTION_LIBS" + AC_DEFINE(MOZ_ENABLE_CONTENTACTION) + AC_SUBST(MOZ_ENABLE_CONTENTACTION) + fi + TK_CFLAGS=$MOZ_QT_CFLAGS + TK_LIBS=$MOZ_QT_LIBS +fi + +AC_SUBST(GTK_CONFIG) +AC_SUBST_LIST(TK_CFLAGS) +AC_SUBST_LIST(TK_LIBS) + +AC_SUBST(MOZ_ENABLE_GTK2) +AC_SUBST(MOZ_ENABLE_GTK3) +AC_SUBST(MOZ_ENABLE_GTK) +AC_SUBST(MOZ_ENABLE_QT) +AC_SUBST(MOZ_ENABLE_QTNETWORK) +AC_SUBST(MOZ_ENABLE_QMSYSTEM2) +AC_SUBST(MOZ_ENABLE_QTMOBILITY) +AC_SUBST(MOZ_ENABLE_XREMOTE) +AC_SUBST(MOZ_WIDGET_GTK) +AC_SUBST_LIST(MOZ_QT_CFLAGS) +AC_SUBST_LIST(MOZ_QT_LIBS) + +AC_SUBST(MOC) +AC_SUBST(RCC) + +AC_SUBST(MOZ_X11) + +dnl ======================================================== +dnl = +dnl = Components & Features +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Components and Features) + +dnl ======================================================== +dnl = Localization +dnl ======================================================== +MOZ_ARG_ENABLE_STRING(ui-locale, +[ --enable-ui-locale=ab-CD + Select the user interface locale (default: en-US)], + MOZ_UI_LOCALE=$enableval ) +AC_SUBST(MOZ_UI_LOCALE) + +AC_SUBST(MOZ_OFFICIAL_BRANDING) +if test -n "$MOZ_OFFICIAL_BRANDING"; then + if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then + AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.]) + else + MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY} + AC_DEFINE(MOZ_OFFICIAL_BRANDING) + fi +fi + +MOZ_ARG_WITH_STRING(branding, +[ --with-branding=dir Use branding from the specified directory.], + MOZ_BRANDING_DIRECTORY=$withval) + +REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}" +if test -z "$REAL_BRANDING_DIRECTORY"; then + REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly +fi + +if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then + . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh" +elif test -f "${EXTERNAL_SOURCE_DIR}/$REAL_BRANDING_DIRECTORY/configure.sh"; then + . "${EXTERNAL_SOURCE_DIR}/$REAL_BRANDING_DIRECTORY/configure.sh" +fi + +AC_SUBST(MOZ_BRANDING_DIRECTORY) + +dnl ======================================================== +dnl = Distribution ID +dnl ======================================================== +MOZ_ARG_WITH_STRING(distribution-id, +[ --with-distribution-id=ID + Set distribution-specific id (default=org.mozilla)], +[ val=`echo $withval` + MOZ_DISTRIBUTION_ID="$val"]) + +if test -z "$MOZ_DISTRIBUTION_ID"; then + MOZ_DISTRIBUTION_ID="org.mozilla" +fi + +AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID") +AC_SUBST(MOZ_DISTRIBUTION_ID) + + +dnl ======================================================== +dnl Google Play Services, placed here so it can depend on +dnl values set by configure.sh above. +dnl ======================================================== + +MOZ_ANDROID_GOOGLE_PLAY_SERVICES +MOZ_ANDROID_GOOGLE_CLOUD_MESSAGING +MOZ_ANDROID_INSTALL_TRACKING + + +dnl ======================================================== +dnl = Pango +dnl ======================================================== +if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT" +then + PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION) + + PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION) +fi + +dnl ======================================================== +dnl = GIO and GConf support module +dnl ======================================================== + +if test "$MOZ_X11" +then + dnl build the GIO extension by default only when the + dnl GTK2 toolkit is in use. + if test "$MOZ_ENABLE_GTK" + then + MOZ_ENABLE_GIO=1 + MOZ_ENABLE_GCONF=1 + fi + + dnl ======================================================== + dnl = GIO support module + dnl ======================================================== + MOZ_ARG_DISABLE_BOOL(gio, + [ --disable-gio Disable GIO support], + MOZ_ENABLE_GIO=, + MOZ_ENABLE_GIO=force) + + if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK" + then + if test "$MOZ_ENABLE_GTK2" + then + PKG_CHECK_MODULES(_GTKCHECK, gtk+-2.0 >= 2.14, , + [AC_MSG_ERROR([* * * Could not find gtk+-2.0 > 2.14. Required for build with gio.])]) + fi + PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[ + MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'` + MOZ_ENABLE_GIO=1 + AC_DEFINE(MOZ_ENABLE_GIO) + ],[ + if test "$MOZ_ENABLE_GIO" = "force" + then + AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION]) + fi + MOZ_ENABLE_GIO= + ]) + fi + + AC_SUBST(MOZ_ENABLE_GIO) + + dnl ======================================================== + dnl = GConf support module + dnl ======================================================== + MOZ_ARG_DISABLE_BOOL(gconf, + [ --disable-gconf Disable Gconf support ], + MOZ_ENABLE_GCONF=, + MOZ_ENABLE_GCONF=1) + + if test "$MOZ_ENABLE_GCONF" + then + PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[ + MOZ_GCONF_LIBS=`$PKG_CONFIG --libs gobject-2.0` + MOZ_ENABLE_GCONF=1 + ],[ + if test -n "$MOZ_ENABLE_GCONF"; + then + AC_MSG_ERROR([* * * Could not find gconf-2.0 ]) + else + AC_MSG_WARN([Many automated tests will fail with --disable-gconf. See bug 1167201.]) + fi + ]) + fi + + if test "$MOZ_ENABLE_GCONF"; then + AC_DEFINE(MOZ_ENABLE_GCONF) + fi + + AC_SUBST(MOZ_ENABLE_GCONF) +fi + +dnl ======================================================== +dnl = libproxy support +dnl ======================================================== + +if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT" +then + MOZ_ENABLE_LIBPROXY= + + MOZ_ARG_ENABLE_BOOL(libproxy, + [ --enable-libproxy Enable libproxy support ], + MOZ_ENABLE_LIBPROXY=1, + MOZ_ENABLE_LIBPROXY=) + + if test "$MOZ_ENABLE_LIBPROXY" + then + PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0) + AC_DEFINE(MOZ_ENABLE_LIBPROXY) + fi +fi +AC_SUBST(MOZ_ENABLE_LIBPROXY) + +dnl ======================================================== +dnl = libgnomeui support module +dnl ======================================================== + +if test "$MOZ_ENABLE_GTK" +then + MOZ_ARG_ENABLE_BOOL(gnomeui, + [ --enable-gnomeui Enable libgnomeui instead of GIO & GTK for icon theme support ], + MOZ_ENABLE_GNOMEUI=force, + MOZ_ENABLE_GNOMEUI=) + + if test "$MOZ_ENABLE_GNOMEUI" + then + PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION, + [ + MOZ_ENABLE_GNOMEUI=1 + ],[ + if test "$MOZ_ENABLE_GNOMEUI" = "force" + then + AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION]) + fi + MOZ_ENABLE_GNOMEUI= + ]) + fi + + if test "$MOZ_ENABLE_GNOMEUI"; then + AC_DEFINE(MOZ_ENABLE_GNOMEUI) + fi +fi + +AC_SUBST(MOZ_ENABLE_GNOMEUI) + +dnl ======================================================== +dnl = dbus support +dnl ======================================================== + +if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT" +then + MOZ_ENABLE_DBUS=1 + + MOZ_ARG_DISABLE_BOOL(dbus, + [ --disable-dbus Disable dbus support ], + MOZ_ENABLE_DBUS=, + MOZ_ENABLE_DBUS=1) + + if test "$MOZ_ENABLE_DBUS" + then + PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION) + PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION) + AC_DEFINE(MOZ_ENABLE_DBUS) + fi +fi +AC_SUBST(MOZ_ENABLE_DBUS) + +dnl ======================================================== +dnl = speech-dispatcher support +dnl ======================================================== + +if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT" +then + MOZ_SYNTH_SPEECHD=1 + + MOZ_ARG_DISABLE_BOOL(synth-speechd, + [ --disable-synth-speechd Disable speech-dispatcher support ], + MOZ_SYNTH_SPEECHD=, + MOZ_SYNTH_SPEECHD=1) +fi +AC_SUBST(MOZ_SYNTH_SPEECHD) + +dnl ======================================================== +dnl = Enable Android History instead of Places +dnl ======================================================== +if test -n "$MOZ_ANDROID_HISTORY"; then + if test -z "$MOZ_PLACES"; then + AC_DEFINE(MOZ_ANDROID_HISTORY) + else + AC_MSG_ERROR([Cannot use MOZ_ANDROID_HISTORY alongside MOZ_PLACES.]) + fi +fi + +dnl ======================================================== +dnl = Enable the C++ async pan/zoom code instead of the Java version +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(android-apz, +[ --enable-android-apz Switch to C++ pan/zoom code], + MOZ_ANDROID_APZ=1, + MOZ_ANDROID_APZ=) +if test -n "$MOZ_ANDROID_APZ"; then + dnl Do this if defined in confvars.sh + AC_DEFINE(MOZ_ANDROID_APZ) +fi + +dnl ======================================================== +dnl = Disable WebSMS backend +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(websms-backend, +[ --disable-websms-backend + Disable WebSMS backend], + MOZ_WEBSMS_BACKEND=, + MOZ_WEBSMS_BACKEND=1) + +if test -n "$MOZ_WEBSMS_BACKEND"; then + AC_DEFINE(MOZ_WEBSMS_BACKEND) +fi + +dnl ======================================================== +dnl = Enable runtime locale switching on Android +dnl ======================================================== +if test -n "$MOZ_LOCALE_SWITCHER"; then + AC_DEFINE(MOZ_LOCALE_SWITCHER) +fi + +dnl ======================================================== +dnl = Enable system download manager on Android +dnl ======================================================== +if test -n "$MOZ_ANDROID_DOWNLOADS_INTEGRATION"; then + AC_DEFINE(MOZ_ANDROID_DOWNLOADS_INTEGRATION) +fi + +dnl ======================================================== +dnl = Enable NFC permission on Android +dnl ======================================================== +if test -n "$MOZ_ANDROID_BEAM"; then + AC_DEFINE(MOZ_ANDROID_BEAM) +fi + +dnl ======================================================== +dnl = Include Search Activity on Android +dnl ======================================================== +if test -n "$MOZ_ANDROID_SEARCH_ACTIVITY"; then + AC_DEFINE(MOZ_ANDROID_SEARCH_ACTIVITY) +fi + +dnl ======================================================== +dnl = Include Mozilla Location Service Stumbler on Android +dnl ======================================================== +if test -n "$MOZ_ANDROID_MLS_STUMBLER"; then + AC_DEFINE(MOZ_ANDROID_MLS_STUMBLER) +fi + +dnl ========================================================= +dnl = Whether to exclude font files in the build +dnl ========================================================= +if test -n "$MOZ_ANDROID_EXCLUDE_FONTS"; then + AC_DEFINE(MOZ_ANDROID_EXCLUDE_FONTS) +fi + +dnl ========================================================= +dnl = Whether to exclude hyphenations files in the build +dnl ========================================================= +if test -n "$MOZ_EXCLUDE_HYPHENATION_DICTIONARIES"; then + AC_DEFINE(MOZ_EXCLUDE_HYPHENATION_DICTIONARIES) +fi + +dnl ========================================================= +dnl = Background service for downloading additional content at runtime. +dnl ========================================================= +if test -n "$MOZ_ANDROID_DOWNLOAD_CONTENT_SERVICE"; then + AC_DEFINE(MOZ_ANDROID_DOWNLOAD_CONTENT_SERVICE) +fi + +dnl ======================================================== +dnl = Include install tracking on Android +dnl ======================================================== +if test -n "$MOZ_INSTALL_TRACKING"; then + AC_DEFINE(MOZ_INSTALL_TRACKING) +fi + +dnl ======================================================== +dnl = Include Switchboard A/B framework on Android +dnl ======================================================== +if test -n "$MOZ_SWITCHBOARD"; then + AC_DEFINE(MOZ_SWITCHBOARD) +fi + +dnl ======================================================== +dnl = Enable GCM on Android. +dnl ======================================================== +if test -n "$MOZ_ANDROID_GCM"; then + AC_DEFINE(MOZ_ANDROID_GCM) +fi + +dnl ======================================================== +dnl = Enable IPDL's "expensive" unit tests +dnl ======================================================== +MOZ_IPDL_TESTS= + +MOZ_ARG_ENABLE_BOOL(ipdl-tests, +[ --enable-ipdl-tests Enable expensive IPDL tests], + MOZ_IPDL_TESTS=1, + MOZ_IPDL_TESTS=) + +if test -n "$MOZ_IPDL_TESTS"; then + AC_DEFINE(MOZ_IPDL_TESTS) +fi + +AC_SUBST(MOZ_IPDL_TESTS) + +dnl ======================================================== +dnl = Disable building dbm +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(dbm, +[ --disable-dbm Disable building dbm], + NSS_DISABLE_DBM=1, + NSS_DISABLE_DBM=) + +dnl ======================================================== +dnl accessibility support on by default on all platforms +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(accessibility, +[ --disable-accessibility Disable accessibility support], + ACCESSIBILITY=, + ACCESSIBILITY=1 ) +if test "$ACCESSIBILITY"; then + case "$target" in + *-mingw*) + if test -z "$MIDL"; then + if test "$GCC" != "yes"; then + AC_MSG_ERROR([MIDL could not be found. Building accessibility without MIDL is not supported.]) + else + AC_MSG_ERROR([You have accessibility enabled, but widl could not be found. Add --disable-accessibility to your mozconfig or install widl. See https://developer.mozilla.org/en-US/docs/Cross_Compile_Mozilla_for_Mingw32 for details.]) + fi + fi + esac + AC_DEFINE(ACCESSIBILITY) +fi + +dnl ======================================================== +dnl Accessibility is required for the linuxgl widget +dnl backend +dnl ======================================================== +if test "${MOZ_WIDGET_TOOLKIT}" = "linuxgl" -a "$ACCESSIBILITY" != "1"; then + AC_MSG_ERROR(["Accessibility is required for the linuxgl widget backend"]) +fi + +dnl Turn off webrtc for OS's we don't handle yet, but allow +dnl --enable-webrtc to override. Can disable for everything in +dnl the master list above. +if test -n "$MOZ_WEBRTC"; then + case "$target" in + *-linux*|*-mingw*|*-darwin*|*-android*|*-linuxandroid*|*-dragonfly*|*-freebsd*|*-netbsd*|*-openbsd*) + dnl Leave enabled + ;; + *) + dnl default to disabled for all others + MOZ_WEBRTC= + ;; + esac +fi + +AC_TRY_COMPILE([#include ], + [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ], + MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1) + +AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI) + +# target_arch is from {ia32|x64|arm|ppc} +case "$CPU_ARCH" in +x86_64 | arm | aarch64 | x86 | ppc* | ia64) + : + ;; +*) +# unsupported arch for webrtc + MOZ_WEBRTC= + ;; + +esac + +dnl ======================================================== +dnl = Disable WebRTC code +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(webrtc, +[ --disable-webrtc Disable support for WebRTC], + MOZ_WEBRTC=, + MOZ_WEBRTC=1) + +if test -n "$MOZ_WEBRTC"; then + AC_DEFINE(MOZ_WEBRTC) + dnl MOZ_WEBRTC_ASSERT_ALWAYS turns on a number of safety asserts in + dnl opt/production builds (via MOZ_CRASH()) + AC_DEFINE(MOZ_WEBRTC_ASSERT_ALWAYS) + MOZ_RAW=1 + MOZ_VPX_ERROR_CONCEALMENT=1 + +dnl enable once Signaling lands + MOZ_WEBRTC_SIGNALING=1 + AC_DEFINE(MOZ_WEBRTC_SIGNALING) +dnl enable once PeerConnection lands + MOZ_PEERCONNECTION=1 + AC_DEFINE(MOZ_PEERCONNECTION) + MOZ_SCTP=1 + MOZ_SRTP=1 + AC_DEFINE(MOZ_SCTP) + AC_DEFINE(MOZ_SRTP) + if test -n "$MOZ_X11"; then + MOZ_WEBRTC_X11_LIBS="-lXext -lXdamage -lXfixes -lXcomposite" + fi +else + MOZ_SYNTH_PICO= +fi + +dnl ======================================================== +dnl = Force hardware AEC, disable webrtc.org AEC +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(hardware-aec-ns, +[ --enable-hardware-aec-ns Enable support for hardware AEC and noise suppression], + MOZ_WEBRTC_HARDWARE_AEC_NS=1, + MOZ_WEBRTC_HARDWARE_AEC_NS=) + +if test -n "$MOZ_WEBRTC_HARDWARE_AEC_NS"; then + AC_DEFINE(MOZ_WEBRTC_HARDWARE_AEC_NS) +fi + +AC_SUBST(MOZ_WEBRTC) +AC_SUBST(MOZ_WEBRTC_LEAKING_TESTS) +AC_SUBST(MOZ_WEBRTC_SIGNALING) +AC_SUBST(MOZ_PEERCONNECTION) +AC_SUBST(MOZ_WEBRTC_ASSERT_ALWAYS) +AC_SUBST(MOZ_WEBRTC_HARDWARE_AEC_NS) +AC_SUBST(MOZ_SCTP) +AC_SUBST(MOZ_SRTP) +AC_SUBST_LIST(MOZ_WEBRTC_X11_LIBS) + +dnl Use integers over floats for audio on B2G and Android +dnl (regarless of the CPU architecture, because audio +dnl backends for those platforms don't support floats. We also +dnl use integers on ARM with other OS, because it's more efficient. +if test "$OS_TARGET" = "Android" -o "$CPU_ARCH" = "arm"; then + MOZ_SAMPLE_TYPE_S16=1 + AC_DEFINE(MOZ_SAMPLE_TYPE_S16) + AC_SUBST(MOZ_SAMPLE_TYPE_S16) +else + MOZ_SAMPLE_TYPE_FLOAT32=1 + AC_DEFINE(MOZ_SAMPLE_TYPE_FLOAT32) + AC_SUBST(MOZ_SAMPLE_TYPE_FLOAT32) +fi + +dnl ======================================================== +dnl = Disable Speech API pocketsphinx backend +dnl ======================================================== +if test -n "$MOZ_WEBSPEECH_POCKETSPHINX"; then + AC_DEFINE(MOZ_WEBSPEECH_POCKETSPHINX) +fi + +AC_SUBST(MOZ_WEBSPEECH_POCKETSPHINX) + +dnl ======================================================== +dnl = Disable Speech API code +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(webspeech, +[ --disable-webspeech Disable support for HTML Speech API], + MOZ_WEBSPEECH=, + MOZ_WEBSPEECH=1) + +if test -n "$MOZ_WEBSPEECH"; then + AC_DEFINE(MOZ_WEBSPEECH) +fi + +AC_SUBST(MOZ_WEBSPEECH) + +dnl ======================================================== +dnl = Disable Speech API test backend +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(webspeechtestbackend, +[ --disable-webspeechtestbackend Disable support for HTML Speech API Test Backend], + MOZ_WEBSPEECH_TEST_BACKEND=, + MOZ_WEBSPEECH_TEST_BACKEND=1) + +if test -z "$MOZ_WEBSPEECH"; then +MOZ_WEBSPEECH_TEST_BACKEND= +fi + +if test -n "$MOZ_WEBSPEECH_TEST_BACKEND"; then + AC_DEFINE(MOZ_WEBSPEECH_TEST_BACKEND) +fi + +AC_SUBST(MOZ_WEBSPEECH_TEST_BACKEND) + +dnl ======================================================== +dnl = Disable Speech API models +dnl ======================================================== +if test -z "$MOZ_WEBSPEECH"; then +MOZ_WEBSPEECH_MODELS= +fi + +if test -n "$MOZ_WEBSPEECH_MODELS"; then + AC_DEFINE(MOZ_WEBSPEECH_MODELS) +fi + +AC_SUBST(MOZ_WEBSPEECH_MODELS) + +dnl ======================================================== +dnl = Enable Raw Codecs +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(raw, +[ --enable-raw Enable support for RAW media], + MOZ_RAW=1, + MOZ_RAW=) + +if test -n "$MOZ_RAW"; then + AC_DEFINE(MOZ_RAW) +fi + +AC_SUBST(MOZ_RAW) + +dnl Checks for __attribute__(aligned()) directive need by libogg +AC_CACHE_CHECK([__attribute__ ((aligned ())) support], + [ac_cv_c_attribute_aligned], + [ac_cv_c_attribute_aligned=0 + CFLAGS_save="${CFLAGS}" + CFLAGS="${CFLAGS} -Werror" + for ac_cv_c_attr_align_try in 64 32 16 8; do + echo "trying $ac_cv_c_attr_align_try" + AC_TRY_COMPILE([], + [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;], + [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"]) + if test "$ac_cv_c_attribute_aligned" != 0; then + break; + fi + done + CFLAGS="${CFLAGS_save}"]) +if test "${ac_cv_c_attribute_aligned}" != "0"; then + AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], + [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment]) +fi + +dnl ======================================================== +dnl = Apple platform decoder support +dnl ======================================================== +if test "$MOZ_WIDGET_TOOLKIT" = "cocoa" || test "$MOZ_WIDGET_TOOLKIT" = "uikit"; then + MOZ_APPLEMEDIA=1 +fi + +if test "$COMPILE_ENVIRONMENT"; then +if test -n "$MOZ_APPLEMEDIA"; then + AC_DEFINE(MOZ_APPLEMEDIA) + # hack in frameworks for fmp4 - see bug 1029974 + # We load VideoToolbox and CoreMedia dynamically, so they don't appear here. + LDFLAGS="$LDFLAGS -framework AudioToolbox" + dnl Verify CoreMedia is available. + AC_CHECK_HEADER([CoreMedia/CoreMedia.h], [], + [AC_MSG_ERROR([MacOS X 10.7 SDK or later is required])]) +fi +fi # COMPILE_ENVIRONMENT + +dnl ======================================================== +dnl = DirectShow support +dnl ======================================================== +if test "$OS_ARCH" = "WINNT"; then + dnl Enable DirectShow support by default. + MOZ_DIRECTSHOW=1 +fi + +MOZ_ARG_DISABLE_BOOL(directshow, +[ --disable-directshow Disable support for DirectShow], + MOZ_DIRECTSHOW=, + MOZ_DIRECTSHOW=1) + +if test -n "$MOZ_DIRECTSHOW"; then + AC_DEFINE(MOZ_DIRECTSHOW) +fi; + +dnl ======================================================== +dnl = Windows Media Foundation support +dnl ======================================================== +if test "$OS_ARCH" = "WINNT"; then + dnl Enable Windows Media Foundation support by default. + dnl Note our minimum SDK version is Windows 7 SDK, so we are (currently) + dnl guaranteed to have a recent-enough SDK to build WMF. + MOZ_WMF=1 +fi + +MOZ_ARG_DISABLE_BOOL(wmf, +[ --disable-wmf Disable support for Windows Media Foundation], + MOZ_WMF=, + MOZ_WMF=1) + +if test -n "$MOZ_WMF"; then + AC_DEFINE(MOZ_WMF) +fi; + +dnl ======================================================== +dnl FFmpeg H264/AAC Decoding Support +dnl ======================================================== +case "$OS_TARGET" in +WINNT|Android) + ;; +*) + MOZ_FFMPEG=1 + ;; +esac + +MOZ_ARG_DISABLE_BOOL(ffmpeg, +[ --disable-ffmpeg Disable FFmpeg for fragmented H264/AAC decoding], + MOZ_FFMPEG=, + MOZ_FFMPEG=1 +) + +if test -n "$MOZ_FFMPEG"; then + AC_DEFINE(MOZ_FFMPEG) +fi; + +dnl ======================================================== +dnl = Built-in fragmented MP4 support. +dnl ======================================================== + +if test "$OS_TARGET" = Android -a -z "$gonkdir"; then + MOZ_FMP4=1 +fi + +if test -n "$MOZ_WMF" -o -n "$MOZ_FFMPEG" -o -n "$MOZ_APPLEMEDIA"; then + dnl Enable fragmented MP4 parser on Windows by default. + dnl We will also need to enable it on other platforms as we implement + dnl platform decoder support there too. + MOZ_FMP4=1 +fi + +MOZ_ARG_DISABLE_BOOL(fmp4, +[ --disable-fmp4 Disable support for in built Fragmented MP4 parsing], + MOZ_FMP4=, + MOZ_FMP4=1) + +if test -n "$MOZ_FFMPEG" -a -z "$MOZ_FMP4"; then + AC_MSG_ERROR([Fragmented MP4 support must be enabled if using FFMPEG]) +fi + +if test -n "$MOZ_FMP4"; then + AC_DEFINE(MOZ_FMP4) + MOZ_EME=1 +fi; + +if test x"$MOZ_WIDGET_TOOLKIT" = x"gonk" -a -n "$MOZ_FMP4" -a -n "$ANDROID_VERSION"; then + # we now know for sure that $ANDROID_VERSION is not an empty string! + if test "$ANDROID_VERSION" -ge "18"; then + MOZ_GONK_MEDIACODEC=1 + AC_SUBST(MOZ_GONK_MEDIACODEC) + fi +fi + + +dnl ======================================================== +dnl = EME support +dnl ======================================================== + +MOZ_ARG_ENABLE_STRING(eme, +[ --enable-eme[=adobe] Enable support for Encrypted Media Extensions ], + MOZ_EME_ARGS=$enableval) + +if test "$MOZ_EME_ARGS"; then + if test "$MOZ_EME_ARGS" = "no"; then + dnl EME explicitly disabled with --disable-eme + MOZ_EME= + elif test "$MOZ_EME_ARGS" = "yes"; then + dnl EME explicitly enabled with --enable-eme + MOZ_EME=1 + else + dnl EME explicitly enabled with --enable-eme= + MOZ_EME=1 + MOZ_EME_MODULES=`echo $MOZ_EME_ARGS | sed -e 's/,/ /g'` + fi +fi + +AC_SUBST_SET(MOZ_EME_MODULES) +if test -n "$MOZ_EME"; then + if test -z "$MOZ_FMP4"; then + AC_MSG_ERROR([Encrypted Media Extension support requires Fragmented MP4 support]) + fi + AC_DEFINE(MOZ_EME) +fi + +dnl ======================================================== +dnl = Enable media plugin support +dnl ======================================================== +if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then + dnl Enable support on android by default + MOZ_ANDROID_OMX=1 +fi + +MOZ_ARG_ENABLE_BOOL(android-omx, +[ --enable-android-omx Enable support for Android OMX media backend], + MOZ_ANDROID_OMX=1, + MOZ_ANDROID_OMX=) + +if test -n "$MOZ_ANDROID_OMX"; then + AC_DEFINE(MOZ_ANDROID_OMX) +fi + +dnl ======================================================== +dnl = Enable getUserMedia support +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(media-navigator, +[ --enable-media-navigator Enable support for getUserMedia], + MOZ_MEDIA_NAVIGATOR=1, + MOZ_MEDIA_NAVIGATOR=) + +if test -n "$MOZ_MEDIA_NAVIGATOR"; then + AC_DEFINE(MOZ_MEDIA_NAVIGATOR) +fi + +dnl ======================================================== +dnl = Enable building OMX media plugin (B2G or Android) +dnl ======================================================== +if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then + dnl Enable support on android by default + MOZ_OMX_PLUGIN=1 +fi + +MOZ_ARG_ENABLE_BOOL(omx-plugin, +[ --enable-omx-plugin Enable building OMX plugin (B2G)], + MOZ_OMX_PLUGIN=1, + MOZ_OMX_PLUGIN=) + +if test -n "$MOZ_OMX_PLUGIN"; then + if test "$OS_TARGET" = "Android"; then + dnl Only allow building OMX plugin on Gonk (B2G) or Android + AC_DEFINE(MOZ_OMX_PLUGIN) + else + dnl fail if we're not building on Gonk or Android + AC_MSG_ERROR([OMX media plugin can only be built on B2G or Android]) + fi +fi + +dnl ======================================================== +dnl Gradle support +dnl +dnl If --with-gradle is specified, build mobile/android with Gradle. +dnl +dnl If no Gradle binary is specified, use the in tree Gradle wrapper. +dnl The wrapper downloads and installs Gradle, which is good for local +dnl developers but not good in automation. +dnl ======================================================== + +GRADLE= +MOZ_ARG_WITH_STRING(gradle, +[ --with-gradle=/path/to/bin/gradle + Enable building mobile/android with Gradle (argument: location of binary or wrapper (gradle/gradlew))], + if test "$withval" = "no" ; then + dnl --without-gradle => use the wrapper in |mach gradle|, don't build + dnl with Gradle by default. + GRADLE=$srcdir/gradlew + MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE= + elif test "$withval" = "yes" ; then + dnl --with-gradle => use the wrapper in |mach gradle|, build with + dnl Gradle by default. + GRADLE=$srcdir/gradlew + MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE=1 + else + dnl --with-gradle=/path/to/gradle => use the given binary in |mach + dnl gradle|, build with Gradle by default. + GRADLE=$withval + MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE=1 + fi + , + dnl No --with{out}-gradle => use the wrapper in |mach gradle|, don't build + dnl with Gradle by default. + GRADLE=$srcdir/gradlew + MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE= + ) + +if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk" ; then + if test -z "$GRADLE" -o ! -x "$GRADLE" ; then + AC_MSG_ERROR([The program gradlew/gradle was not found. Use --with-gradle=/path/to/bin/gradle}]) + fi +fi +AC_SUBST(GRADLE) + +dnl Path to Maven repository containing Gradle dependencies. Automation will +dnl set this to file:///path/to/local via the mozconfig. Local developer +dnl default is jcenter. +if test -z "$GRADLE_MAVEN_REPOSITORY" ; then + GRADLE_MAVEN_REPOSITORY=https://jcenter.bintray.com/ +fi +AC_SUBST(GRADLE_MAVEN_REPOSITORY) + +if test -n "$MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE"; then + if test "$OS_TARGET" = "Android" -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then + dnl Only allow building mobile/android with Gradle. + AC_DEFINE(MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE) + else + dnl fail if we're not building mobile/android. + AC_MSG_ERROR([Can only build mobile/android with Gradle]) + fi +fi + +dnl system libvpx Support +dnl ======================================================== +MOZ_ARG_WITH_BOOL(system-libvpx, +[ --with-system-libvpx Use system libvpx (located with pkgconfig)], + MOZ_NATIVE_LIBVPX=1) + +MOZ_LIBVPX_CFLAGS= +MOZ_LIBVPX_LIBS= + +if test -n "$MOZ_VPX_ERROR_CONCEALMENT" ; then + AC_DEFINE(MOZ_VPX_ERROR_CONCEALMENT) +fi + +_SAVE_CFLAGS=$CFLAGS +_SAVE_LIBS=$LIBS +if test -n "$MOZ_NATIVE_LIBVPX"; then + dnl ============================ + dnl === libvpx Version check === + dnl ============================ + dnl Check to see if we have a system libvpx package. + PKG_CHECK_MODULES(MOZ_LIBVPX, vpx >= 1.3.0) + + CFLAGS="$CFLAGS $MOZ_LIBVPX_CFLAGS" + LIBS="$LIBS $MOZ_LIBVPX_LIBS" + + MOZ_CHECK_HEADER([vpx/vpx_decoder.h], [], + [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.])]) + + AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver, [], + [AC_MSG_ERROR([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found])]) + + MOZ_CHECK_HEADER([vpx_mem/vpx_mem.h], + [AC_CHECK_FUNC(vpx_mem_set_functions)]) + if test "$ac_cv_header_vpx_mem_vpx_mem_h" = no -o \ + "$ac_cv_func_vpx_mem_set_functions" = no; then + AC_DEFINE(MOZ_VPX_NO_MEM_REPORTING) + fi +fi +CFLAGS=$_SAVE_CFLAGS +LIBS=$_SAVE_LIBS + +AC_SUBST(MOZ_NATIVE_LIBVPX) +AC_SUBST_LIST(MOZ_LIBVPX_CFLAGS) +AC_SUBST_LIST(MOZ_LIBVPX_LIBS) + +if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then + MOZ_VORBIS=1 +else + MOZ_TREMOR=1 +fi + +if test -z "$MOZ_NATIVE_LIBVPX"; then + + dnl Detect if we can use an assembler to compile optimized assembly for libvpx. + dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32. + dnl We currently require gcc on all arm platforms. + VPX_AS=$YASM + VPX_ASM_SUFFIX=asm + VPX_NEED_OBJ_INT_EXTRACT= + + dnl See if we have assembly on this platform. + case "$OS_ARCH:$CPU_ARCH" in + Darwin:x86) + VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC" + VPX_X86_ASM=1 + ;; + Darwin:x86_64) + VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC" + VPX_X86_ASM=1 + ;; + WINNT:x86_64) + VPX_ASFLAGS="-f x64 -rnasm -pnasm" + VPX_X86_ASM=1 + ;; + WINNT:x86) + dnl Check for yasm 1.1 or greater. + if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then + 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.]) + elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then + 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.]) + else + VPX_ASFLAGS="-f win32 -rnasm -pnasm -DPIC" + VPX_X86_ASM=1 + dnl The encoder needs obj_int_extract to get asm offsets. + fi # COMPILE_ENVIRONMENT and others + ;; + *:arm*) + if test -n "$GNU_AS" ; then + VPX_AS=$AS + dnl These flags are a lie; they're just used to enable the requisite + dnl opcodes; actual arch detection is done at runtime. + VPX_ASFLAGS="-march=armv7-a -mfpu=neon" + VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl' + VPX_ASM_SUFFIX="$ASM_SUFFIX" + VPX_ARM_ASM=1 + dnl Building with -mfpu=neon requires either the "softfp" or the + dnl "hardfp" ABI. Depending on the compiler's default target, and the + dnl CFLAGS, the default ABI might be neither, in which case it is the + dnl "softfloat" ABI. + dnl The "softfloat" ABI is binary-compatible with the "softfp" ABI, so + dnl we can safely mix code built with both ABIs. So, if we detect + dnl that compiling uses the "softfloat" ABI, force the use of the + dnl "softfp" ABI instead. + dnl Confusingly, the __SOFTFP__ preprocessor variable indicates the + dnl "softfloat" ABI, not the "softfp" ABI. + dnl Note: VPX_ASFLAGS is also used in CFLAGS. + AC_TRY_COMPILE([], + [#ifndef __SOFTFP__ + #error "compiler target supports -mfpu=neon, so we don't have to add extra flags" + #endif], + VPX_ASFLAGS="$VPX_ASFLAGS -mfloat-abi=softfp" + ) + fi + ;; + *:x86) + if $CC -E -dM -= 1.7]) + + dnl Javac spits out something like `javac 1.7.0`. This line cuts off the 'javac' + _javac_version=$($JAVAC -version 2>&1 | cut -d ' ' -f 2) + + dnl Here, we extract the major (1) and minor (7) version numbers from the + dnl acquired version string. + _javac_major_version=$(echo $_javac_version | cut -d '.' -f 1) + _javac_minor_version=$(echo $_javac_version | cut -d '.' -f 2) + + AC_MSG_RESULT([$_javac_version]) + + dnl Fail if we have a version other than 1.7.X + if test "$_javac_major_version" -ne "1" -o \ + \( "$_javac_minor_version" -lt "7" \); then + AC_MSG_ERROR([javac 1.7 or higher is required.]) + fi +fi + +dnl ======================================================== +dnl = ANGLE OpenGL->D3D translator for WebGL +dnl = * only applies to win32 +dnl ======================================================== + +MOZ_ANGLE_RENDERER= +MOZ_D3D_CPU_SUFFIX= +MOZ_HAS_WINSDK_WITH_D3D= +MOZ_D3DCOMPILER_VISTA_DLL= +MOZ_D3DCOMPILER_VISTA_DLL_PATH= +MOZ_DIRECTX_SDK_PATH= +MOZ_D3DCOMPILER_XP_DLL= +MOZ_D3DCOMPILER_XP_CAB= + +if test "$COMPILE_ENVIRONMENT" ; then +case "$target_os" in +*mingw*) + MOZ_ANGLE_RENDERER=1 + ;; +esac + +# The DirectX SDK libraries are split into x86 and x64 sub-directories +case "${target_cpu}" in +i*86) + MOZ_D3D_CPU_SUFFIX=x86 + ;; +x86_64) + MOZ_D3D_CPU_SUFFIX=x64 + ;; +esac + +MOZ_ARG_ENABLE_BOOL(require-all-d3dc-versions, +[ --enable-require-all-d3dc-versions Require all versions of the D3D compiler needed for supported Windows systems.], + MOZ_REQUIRE_ALL_D3DCS=1, + MOZ_REQUIRE_ALL_D3DCS=) + +# This is potentially set in external mozconfig files; if it's set, +# then the build exposes the "webgl" context name, which is reserved +# for conformant implementations. +if test -n "$MOZ_WEBGL_CONFORMANT"; then + AC_DEFINE(MOZ_WEBGL_CONFORMANT) +fi + +dnl ======================================================== +dnl D3D compiler DLL +dnl ======================================================== +MOZ_FOUND_D3D_COMPILERS= + +if test -n "$MOZ_ANGLE_RENDERER"; then + if test -z "$MOZ_D3D_CPU_SUFFIX"; then + AC_MSG_ERROR([Couldn't determine MOZ_D3D_CPU_SUFFIX.]) + fi + + ###################################### + # Find _46+ for use by Vista+. + + # Find a D3D compiler DLL in a Windows SDK. + MOZ_D3DCOMPILER_VISTA_DLL= + case "$MOZ_WINSDK_MAXVER" in + 0x0603*|0x0A00*) + MOZ_D3DCOMPILER_VISTA_DLL=d3dcompiler_47.dll + AC_MSG_RESULT([Found D3D compiler in Windows SDK.]) + ;; + esac + + if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then + # We have a name, now track down the path. + if test -n "$WINDOWSSDKDIR"; then + MOZ_D3DCOMPILER_VISTA_DLL_PATH="$WINDOWSSDKDIR/Redist/D3D/$MOZ_D3D_CPU_SUFFIX/$MOZ_D3DCOMPILER_VISTA_DLL" + if test -f "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then + AC_MSG_RESULT([Found MOZ_D3DCOMPILER_VISTA_DLL_PATH: $MOZ_D3DCOMPILER_VISTA_DLL_PATH]) + MOZ_HAS_WINSDK_WITH_D3D=1 + else + AC_MSG_RESULT([MOZ_D3DCOMPILER_VISTA_DLL_PATH doesn't exist: $MOZ_D3DCOMPILER_VISTA_DLL_PATH]) + AC_MSG_ERROR([Windows SDK at "$WINDOWSSDKDIR" appears broken. Try updating to MozillaBuild 1.9 final or higher.]) + MOZ_D3DCOMPILER_VISTA_DLL_PATH= + fi + else + AC_MSG_RESULT([Windows SDK not found.]) + fi + else + AC_MSG_ERROR([Couldn't find Windows SDK 8.1 or higher needed for ANGLE.]) + fi + + if test -z "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then + MOZ_D3DCOMPILER_VISTA_DLL= + fi + + # On mingw, check if headers are provided by toolchain. + if test -n "$GNU_CC"; then + MOZ_CHECK_HEADER(d3d10.h, MOZ_HAS_WINSDK_WITH_D3D=1) + fi + + ###################################### + # Find _43 for use by XP. + + if test "$HAVE_64BIT_BUILD"; then + AC_MSG_RESULT([We are building a 64-bit binary, skip checking d3dcompiler_43.]) + else + # Get the SDK path from the registry. + # First try to get the June 2010 SDK + MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1` + if test -z "$MOZ_DIRECTX_SDK_REG_KEY" ; then + # Otherwise just take whatever comes first + MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1` + fi + MOZ_DIRECTX_SDK_PATH=`reg query "$MOZ_DIRECTX_SDK_REG_KEY" //v InstallPath | grep REG_SZ | sed 's/.*\([[a-zA-Z]]\)\\:\\\\/\\1\\:\\\\/' | sed 's,\\\\,/,g'` + + if test -n "$MOZ_DIRECTX_SDK_PATH" && + test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/dxguid.lib ; then + AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH]) + else + AC_MSG_RESULT([DirectX SDK not found.]) + MOZ_DIRECTX_SDK_PATH= + fi + + # Check that our DirectX SDK is acceptable. + if test -n "$MOZ_DIRECTX_SDK_PATH"; then + if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then + AC_MSG_RESULT([Found the February 2010 DirectX SDK, which is unacceptable to ANGLE.]) + MOZ_DIRECTX_SDK_PATH= + fi + fi + + if test -n "$MOZ_DIRECTX_SDK_PATH"; then + # Find a D3D compiler DLL in the DirectX SDK, if we didn't find one already. + # Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib + MOZ_D3DX9_VERSION=`dumpbin //headers "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/d3dx9.lib | egrep d3dx9_[[0-9]][[0-9]]\.dll | head -n1 | sed 's/.*\([[0-9]][[0-9]]\).*/\\1/g'` + + if test -n "$MOZ_D3DX9_VERSION" ; then + MOZ_D3DCOMPILER_XP_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_D3D_CPU_SUFFIX}.cab | head -n1` + + if test -n "$MOZ_D3DCOMPILER_XP_CAB"; then + MOZ_D3DCOMPILER_XP_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll + else + AC_MSG_RESULT([Couldn't find a CAB containing the D3D compiler DLL.]) + AC_MSG_ERROR([DirectX SDK at "$MOZ_DIRECTX_SDK_PATH" appears broken.]) + MOZ_DIRECTX_SDK_PATH= + fi + else + AC_MSG_RESULT([Couldn't determine the D3DX9 version for the DirectX SDK.]) + MOZ_DIRECTX_SDK_PATH= + fi + else + AC_MSG_RESULT([Couldn't find an acceptable DirectX SDK for ANGLE, needed for d3dcompiler_43.]) + fi + fi + + ###################################### + # Check that we found what we needed. + MOZ_FOUND_A_D3D_COMPILER= + MOZ_FOUND_BOTH_D3D_COMPILERS=1 + + if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then + MOZ_FOUND_A_D3D_COMPILER=1 + AC_MSG_RESULT([Found d3dcompiler DLL for Vista+: $MOZ_D3DCOMPILER_VISTA_DLL]) + else + MOZ_FOUND_BOTH_D3D_COMPILERS= + fi + + if test -n "$MOZ_D3DCOMPILER_XP_DLL"; then + MOZ_FOUND_A_D3D_COMPILER=1 + AC_MSG_RESULT([Found d3dcompiler DLL for XP: $MOZ_D3DCOMPILER_XP_DLL]) + else + MOZ_FOUND_BOTH_D3D_COMPILERS= + fi + + if test -z "$CROSS_COMPILE"; then + if test -z "MOZ_FOUND_A_D3D_COMPILER"; then + AC_MSG_ERROR([Couldn't find an acceptable D3D compiler DLL.]) + fi + + if test -n "$MOZ_REQUIRE_ALL_D3DCS" -a -z "$MOZ_FOUND_BOTH_D3D_COMPILERS"; then + AC_MSG_ERROR([Both D3D compilers _43 and _46+ are required by --enable-require-d3d-compilers.]) + AC_MSG_ERROR([ Install Windows SDK 8.0+, as well as DirectX SDK (June 2010 version or newer), or reconfigure without this flag.]) + fi + fi +fi # MOZ_ANGLE_RENDERER + +fi # COMPILE_ENVIRONMENT + + +dnl ======================================================== +dnl Gamepad support +dnl ======================================================== +MOZ_GAMEPAD= +MOZ_GAMEPAD_BACKEND=stub + +# Gamepad DOM is built on supported platforms by default. +case "$OS_TARGET" in + WINNT|Linux) + MOZ_GAMEPAD=1 + ;; + Darwin) + if test -z "$MOZ_IOS"; then + MOZ_GAMEPAD=1 + fi + ;; + Android) + if test "$MOZ_WIDGET_TOOLKIT" != "gonk"; then + MOZ_GAMEPAD=1 + fi + ;; + *) + ;; +esac + +MOZ_ARG_DISABLE_BOOL(gamepad, +[ --disable-gamepad Disable gamepad support], + MOZ_GAMEPAD=, + MOZ_GAMEPAD=1) + +if test "$MOZ_GAMEPAD"; then + case "$OS_TARGET" in + Darwin) + if test -z "$MOZ_IOS"; then + MOZ_GAMEPAD_BACKEND=cocoa + fi + ;; + WINNT) + MOZ_GAMEPAD_BACKEND=windows + ;; + Linux) + MOZ_CHECK_HEADER([linux/joystick.h]) + if test "$ac_cv_header_linux_joystick_h" != "yes"; then + AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers or reconfigure with --disable-gamepad to disable gamepad support.]) + fi + MOZ_GAMEPAD_BACKEND=linux + ;; + Android) + MOZ_GAMEPAD_BACKEND=android + ;; + *) + ;; + esac + + AC_DEFINE(MOZ_GAMEPAD) +fi +AC_SUBST(MOZ_GAMEPAD) +AC_SUBST(MOZ_GAMEPAD_BACKEND) + +dnl ======================================================== +dnl = Breakpad crash reporting (on by default on supported platforms) +dnl ======================================================== + +case $target in +i?86-*-mingw*|x86_64-*-mingw*) + MOZ_CRASHREPORTER=1 + ;; +i?86-apple-darwin*|x86_64-apple-darwin*) + if test -z "$MOZ_IOS"; then + MOZ_CRASHREPORTER=1 + fi + ;; +i?86-*-linux*|x86_64-*-linux*|arm-*-linux*) + if test "$MOZ_ENABLE_GTK"; then + MOZ_CRASHREPORTER=1 + fi + ;; +*-android*|*-linuxandroid*) + MOZ_CRASHREPORTER=1 + ;; +*solaris*) + MOZ_CRASHREPORTER=1 + ;; +esac + +MOZ_ARG_DISABLE_BOOL(crashreporter, +[ --disable-crashreporter Disable breakpad crash reporting], + [MOZ_CRASHREPORTER=], + [MOZ_CRASHREPORTER=F # Force enable breakpad]) + +if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "Darwin"; then + if test "$MOZ_CRASHREPORTER" = F; then + AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.]) + fi + MOZ_CRASHREPORTER= +fi + +if test -n "$MOZ_CRASHREPORTER"; then + AC_DEFINE(MOZ_CRASHREPORTER) + + if test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS" && \ + test -z "$SKIP_LIBRARY_CHECKS"; then + PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0) + fi + + if test "$OS_ARCH" = "WINNT"; then + if test -z "$HAVE_64BIT_BUILD"; then + MOZ_CRASHREPORTER_INJECTOR=1 + AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR) + fi + fi +fi + +MOZ_ARG_WITH_STRING(crashreporter-enable-percent, +[ --with-crashreporter-enable-percent=NN + Enable sending crash reports by default on NN% of users. (default=100)], +[ val=`echo $withval | sed 's/[^0-9]//g'` + MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"]) + +if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then + MOZ_CRASHREPORTER_ENABLE_PERCENT=100 +fi +AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT) + +dnl ======================================================== +dnl = libjpeg-turbo configuration +dnl ======================================================== +MOZ_LIBJPEG_TURBO= +if test -z "$MOZ_NATIVE_JPEG"; then + MOZ_LIBJPEG_TURBO=1 +fi + +MOZ_ARG_DISABLE_BOOL(libjpeg_turbo, +[ --disable-libjpeg-turbo Disable optimized jpeg decoding routines], + MOZ_LIBJPEG_TURBO=, + MOZ_LIBJPEG_TURBO=1) + +if test "$MOZ_NATIVE_JPEG" = 1 -a "$MOZ_LIBJPEG_TURBO" = 1; then + AC_MSG_ERROR([cannot use --with-system-jpeg with --enable-libjpeg-turbo.]) +fi + +dnl Detect if we can use yasm to compile libjpeg-turbo's optimized assembly +dnl files. + +if test -n "$MOZ_LIBJPEG_TURBO"; then + + dnl Do we support libjpeg-turbo on this platform? + case "$OS_ARCH:$CPU_ARCH" in + Darwin:x86) + LIBJPEG_TURBO_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC -DMACHO" + ;; + Darwin:x86_64) + LIBJPEG_TURBO_ASFLAGS="-f macho64 -rnasm -pnasm -D__x86_64__ -DPIC -DMACHO" + ;; + Darwin:arm*) + ;; + WINNT:x86) + LIBJPEG_TURBO_ASFLAGS="-f win32 -rnasm -pnasm -DPIC -DWIN32" + ;; + WINNT:x86_64) + LIBJPEG_TURBO_ASFLAGS="-f win64 -rnasm -pnasm -D__x86_64__ -DPIC -DWIN64 -DMSVC" + ;; + *:arm) + LIBJPEG_TURBO_ASFLAGS="-march=armv7-a -mfpu=neon" + ;; + *:aarch64) + LIBJPEG_TURBO_ASFLAGS="-march=armv8-a" + ;; + *:mips) + LIBJPEG_TURBO_ASFLAGS="-mdspr2" + ;; + *:x86) + if $CC -E -dM -/dev/null` + changequote(,) + MAKENSISU_PARSED_VER=`echo "$MAKENSISU_VER" | sed -e 's/^v\([0-9]\+\.[0-9]\+\).*$/\1/g'` + changequote([,]) + MAKENSISU_MAJOR_VER=0 + MAKENSISU_MINOR_VER=0 + MAKENSISU_PRERELEASE_TYPE=$MIN_NSIS_PRERELEASE_TYPE + MAKENSISU_PRERELEASE_VER=$MIN_NSIS_PRERELEASE_VER + if test ! "$MAKENSISU_PARSED_VER" = ""; then + MAKENSISU_MAJOR_VER=`echo $MAKENSISU_PARSED_VER | $AWK -F\. '{ print $1 }'` + MAKENSISU_MINOR_VER=`echo $MAKENSISU_PARSED_VER | $AWK -F\. '{ print $2 }'` + changequote(,) + MAKENSISU_PARSED_PRERELEASE=`echo "$MAKENSISU_VER" | sed -e 's/^v[0-9]\+\.[0-9]\+\([^0-9]\+\)\([0-9]\+\).*$/\1.\2/g'` + changequote([,]) + if test ! "$MAKENSISU_PARSED_PRERELEASE" = "$MAKENSISU_VER"; then + MAKENSISU_PRERELEASE_TYPE=`echo $MAKENSISU_PARSED_PRERELEASE | $AWK -F\. '{ print $1 }'` + MAKENSISU_PRERELEASE_VER=`echo $MAKENSISU_PARSED_PRERELEASE | $AWK -F\. '{ print $2 }'` + fi + fi + AC_MSG_CHECKING([for NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER$MIN_NSIS_PRERELEASE_TYPE$MIN_NSIS_PRERELEASE_VER or greater]) + if test "$MAKENSISU_MAJOR_VER" -eq $MIN_NSIS_MAJOR_VER -a \ + "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER -a \ + "$MAKENSISU_PRERELEASE_TYPE" = "$MIN_NSIS_PRERELEASE_TYPE" -a \ + "$MAKENSISU_PRERELEASE_VER" -ge $MIN_NSIS_PRERELEASE_VER; then + AC_MSG_RESULT([yes]) + AC_MSG_RESULT([Found NSIS Version: $MAKENSISU_VER]) + else + AC_MSG_RESULT([no]) + if test -z "$CROSS_COMPILE"; then + AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER$MIN_NSIS_PRERELEASE_TYPE$MIN_NSIS_PRERELEASE_VER or greater in your path.]) + else + MAKENSISU= + fi + fi + elif test -z "$CROSS_COMPILE"; then + AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER$MIN_NSIS_PRERELEASE_TYPE$MIN_NSIS_PRERELEASE_VER or greater in your path.]) + else + MAKENSISU= + fi +fi + +dnl ======================================================== +dnl Web App Runtime +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(webapp-runtime, +[ --disable-webapp-runtime Disable Web App Runtime], + MOZ_WEBAPP_RUNTIME=, + MOZ_WEBAPP_RUNTIME=1) +if test "$MOZ_WIDGET_TOOLKIT" != "windows" -a "$MOZ_WIDGET_TOOLKIT" != "cocoa" -a -z "$MOZ_WIDGET_GTK" ; then + MOZ_WEBAPP_RUNTIME= +fi +if test "$OS_ARCH" = "WINNT" -a -z "$MAKENSISU" -a -n "$CROSS_COMPILE"; then + MOZ_WEBAPP_RUNTIME= +fi +AC_SUBST(MOZ_WEBAPP_RUNTIME) +if test "$MOZ_WEBAPP_RUNTIME"; then + AC_DEFINE(MOZ_WEBAPP_RUNTIME) +fi + +AC_CHECK_PROGS(TAR, gnutar gtar tar, "") +if test -z "$TAR"; then + AC_MSG_ERROR([no tar archiver found in \$PATH]) +fi +AC_SUBST(TAR) + +AC_CHECK_PROGS(WGET, wget, "") +AC_SUBST(WGET) + +dnl ======================================================== +dnl Maintenance Service +dnl ======================================================== + +MOZ_ARG_ENABLE_BOOL(maintenance-service, +[ --enable-maintenance-service Enable building of maintenanceservice], + MOZ_MAINTENANCE_SERVICE=1, + MOZ_MAINTENANCE_SERVICE= ) + +if test -n "$MOZ_MAINTENANCE_SERVICE"; then + if test "$OS_ARCH" = "WINNT"; then + AC_DEFINE(MOZ_MAINTENANCE_SERVICE) + else + AC_MSG_ERROR([Can only build with --enable-maintenance-service with a Windows target]) + fi +fi + +dnl ======================================================== +dnl Bundled fonts on desktop platforms +dnl ======================================================== + +MOZ_ARG_ENABLE_BOOL(bundled-fonts, +[ --enable-bundled-fonts Enable support for bundled fonts on desktop platforms], + MOZ_BUNDLED_FONTS=1, + MOZ_BUNDLED_FONTS=) + +if test -n "$MOZ_BUNDLED_FONTS"; then + AC_DEFINE(MOZ_BUNDLED_FONTS) +fi + +dnl ======================================================== +dnl Verify MAR signatures +dnl ======================================================== + +MOZ_ARG_ENABLE_BOOL(verify-mar, +[ --enable-verify-mar Enable verifying MAR signatures], + MOZ_VERIFY_MAR_SIGNATURE=1, + MOZ_VERIFY_MAR_SIGNATURE= ) + +if test -n "$MOZ_VERIFY_MAR_SIGNATURE"; then + AC_DEFINE(MOZ_VERIFY_MAR_SIGNATURE) +fi + +dnl ======================================================== +dnl Enable building the signmar program. +dnl This option is much different than the --enable-verify-mar option. +dnl --enable-verify-mar is for enabling the verification check on MAR +dnl files in the updater. The --enable-signmar option is for building +dnl the signmar program. +dnl ======================================================== + +MOZ_ARG_ENABLE_BOOL(signmar, +[ --enable-signmar Enable building the signmar program], + MOZ_ENABLE_SIGNMAR=1, + MOZ_ENABLE_SIGNMAR= ) + +if test -n "$MOZ_ENABLE_SIGNMAR"; then + if test -z "$COMPILE_ENVIRONMENT" ; then + AC_MSG_WARN([Cannot --enable-signmar with --disable-compile-environment]) + MOZ_ENABLE_SIGNMAR= + else + AC_DEFINE(MOZ_ENABLE_SIGNMAR) + fi +fi + +dnl ======================================================== +dnl Updater +dnl ======================================================== + +if test "$MOZ_IOS"; then + MOZ_UPDATER= +fi + +MOZ_ARG_DISABLE_BOOL(updater, +[ --disable-updater Disable building of updater], + MOZ_UPDATER=, + MOZ_UPDATER=1 ) + +if test -n "$MOZ_UPDATER"; then + AC_DEFINE(MOZ_UPDATER) +fi + +# tools/update-packaging is not checked out by default. +MOZ_ARG_ENABLE_BOOL(update-packaging, +[ --enable-update-packaging + Enable tools/update-packaging], + MOZ_UPDATE_PACKAGING=1, + MOZ_UPDATE_PACKAGING= ) +AC_SUBST(MOZ_UPDATE_PACKAGING) + +dnl ======================================================== +dnl build the tests by default +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(tests, +[ --disable-tests Do not build test libraries & programs], + ENABLE_TESTS=, + ENABLE_TESTS=1 ) + +if test -n "$ENABLE_TESTS"; then + GTEST_HAS_RTTI=0 + AC_DEFINE(ENABLE_TESTS) + AC_DEFINE_UNQUOTED(GTEST_HAS_RTTI, 0) + AC_SUBST(GTEST_HAS_RTTI) + if test -n "$_WIN32_MSVC"; then + AC_DEFINE_UNQUOTED(_VARIADIC_MAX, 10) + fi + if test "${OS_TARGET}" = "Android"; then + AC_DEFINE(GTEST_OS_LINUX_ANDROID) + AC_DEFINE(GTEST_USE_OWN_TR1_TUPLE) + AC_DEFINE_UNQUOTED(GTEST_HAS_CLONE, 0) + AC_SUBST(GTEST_OS_LINUX_ANDROID) + AC_SUBST(GTEST_USE_OWN_TR1_TUPLE) + AC_SUBST(GTEST_HAS_CLONE) + fi +fi + +dnl ======================================================== +dnl parental controls (for Windows Vista) +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(parental-controls, +[ --disable-parental-controls + Do not build parental controls], + MOZ_DISABLE_PARENTAL_CONTROLS=1, + MOZ_DISABLE_PARENTAL_CONTROLS=) +if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then + AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS) +fi + +AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS) + +dnl ======================================================== +dnl = Disable smartcard support +dnl ======================================================== +if test -n "$MOZ_NO_SMART_CARDS"; then + AC_DEFINE(MOZ_NO_SMART_CARDS) +fi +AC_SUBST(MOZ_NO_SMART_CARDS) + +dnl ======================================================== +dnl = Disable EV certificate verification +dnl ======================================================== +if test -n "$MOZ_NO_EV_CERTS"; then + AC_DEFINE(MOZ_NO_EV_CERTS) +fi +AC_SUBST(MOZ_NO_EV_CERTS) + +dnl ======================================================== +dnl = Sandboxing support +dnl ======================================================== +if test -n "$MOZ_TSAN"; then + # Bug 1182565: TSan conflicts with sandboxing on Linux. + case $OS_TARGET in + Linux|Android) + MOZ_SANDBOX= + ;; + esac +fi + +MOZ_ARG_DISABLE_BOOL(sandbox, +[ --disable-sandbox Disable sandboxing support], + MOZ_SANDBOX=, + MOZ_SANDBOX=1) + +dnl ======================================================== +dnl = Content process sandboxing +dnl ======================================================== +if test -n "$gonkdir"; then + MOZ_CONTENT_SANDBOX=$MOZ_SANDBOX +fi + +case "$OS_TARGET:$NIGHTLY_BUILD" in +WINNT:1) + MOZ_CONTENT_SANDBOX=$MOZ_SANDBOX + ;; +Darwin:1) + MOZ_CONTENT_SANDBOX=$MOZ_SANDBOX + ;; +esac + +MOZ_ARG_ENABLE_BOOL(content-sandbox, +[ --enable-content-sandbox Enable sandboxing support for content-processes + --disable-content-sandbox Disable sandboxing support for content-processes], + MOZ_CONTENT_SANDBOX=1, + MOZ_CONTENT_SANDBOX=) + +if test -n "$MOZ_CONTENT_SANDBOX" -a -z "$MOZ_SANDBOX"; then + AC_MSG_ERROR([--enable-content-sandbox and --disable-sandbox are conflicting options]) +fi + +if test -n "$MOZ_CONTENT_SANDBOX"; then + AC_DEFINE(MOZ_CONTENT_SANDBOX) +fi + +AC_SUBST(MOZ_CONTENT_SANDBOX) + +dnl ======================================================== +dnl = Gecko Media Plugin sandboxing +dnl ======================================================== +case $OS_TARGET in +WINNT) + MOZ_GMP_SANDBOX=$MOZ_SANDBOX + ;; +Linux) + case $CPU_ARCH in + x86_64|x86) + MOZ_GMP_SANDBOX=$MOZ_SANDBOX + ;; + esac + ;; +Darwin) + MOZ_GMP_SANDBOX=$MOZ_SANDBOX + ;; +esac + +if test -n "$MOZ_GMP_SANDBOX"; then + AC_DEFINE(MOZ_GMP_SANDBOX) +fi + +AC_SUBST(MOZ_GMP_SANDBOX) + +if test -z "$MOZ_CONTENT_SANDBOX" -a -z "$MOZ_GMP_SANDBOX"; then + MOZ_SANDBOX= +fi + +if test -n "$MOZ_SANDBOX"; then + AC_DEFINE(MOZ_SANDBOX) +fi + +AC_SUBST(MOZ_SANDBOX) + + +dnl ======================================================== +dnl = +dnl = Module specific options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Individual module options) + +dnl ======================================================== +dnl = Disable feed handling components +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(feeds, +[ --disable-feeds Disable feed handling and processing components], + MOZ_FEEDS=, + MOZ_FEEDS=1 ) +if test -n "$MOZ_FEEDS"; then + AC_DEFINE(MOZ_FEEDS) +else + if test "$MOZ_BUILD_APP" = "browser"; then + AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.]) + fi +fi + +dnl ======================================================== +dnl Check for sqlite +dnl ======================================================== + +MOZ_NATIVE_SQLITE= +MOZ_ARG_ENABLE_BOOL(system-sqlite, +[ --enable-system-sqlite Use system sqlite (located with pkgconfig)], +MOZ_NATIVE_SQLITE=1, +MOZ_NATIVE_SQLITE= ) + +if test -n "$MOZ_NATIVE_SQLITE" +then + dnl ============================ + dnl === SQLite Version check === + dnl ============================ + dnl Check to see if the system SQLite package is new enough. + PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION) + + dnl ================================== + dnl === SQLITE_SECURE_DELETE check === + dnl ================================== + dnl Check to see if the system SQLite package is compiled with + dnl SQLITE_SECURE_DELETE enabled. + AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite) + _SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $SQLITE_CFLAGS" + _SAVE_LIBS="$LIBS" + LIBS="$LIBS $SQLITE_LIBS" + AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[ + AC_TRY_RUN([ + #include "sqlite3.h" + + int main(int argc, char **argv){ + return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE"); + }], + ac_cv_sqlite_secure_delete=yes, + ac_cv_sqlite_secure_delete=no, + ac_cv_sqlite_secure_delete=no + ) + ]) + AC_MSG_RESULT($ac_cv_sqlite_secure_delete) + CFLAGS="$_SAVE_CFLAGS" + LIBS="$_SAVE_LIBS" + if test "x$ac_cv_sqlite_secure_delete" = "xno"; then + AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.]) + fi + + dnl =============================== + dnl === SQLITE_THREADSAFE check === + dnl =============================== + dnl Check to see if the system SQLite package is compiled with + dnl SQLITE_THREADSAFE enabled. + AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite) + _SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $SQLITE_CFLAGS" + _SAVE_LIBS="$LIBS" + LIBS="$LIBS $SQLITE_LIBS" + AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[ + AC_TRY_RUN([ + #include "sqlite3.h" + + int main(int argc, char **argv){ + return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1"); + }], + ac_cv_sqlite_threadsafe=yes, + ac_cv_sqlite_threadsafe=no, + ac_cv_sqlite_threadsafe=no + ) + ]) + AC_MSG_RESULT($ac_cv_sqlite_threadsafe) + CFLAGS="$_SAVE_CFLAGS" + LIBS="$_SAVE_LIBS" + if test "x$ac_cv_sqlite_threadsafe" = "xno"; then + AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.]) + fi + + dnl ================================ + dnl === SQLITE_ENABLE_FTS3 check === + dnl ================================ + dnl check to see if the system SQLite package is compiled with + dnl SQLITE_ENABLE_FTS3 enabled. + AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite) + _SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $SQLITE_CFLAGS" + _SAVE_LIBS="$LIBS" + LIBS="$LIBS $SQLITE_LIBS" + AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[ + AC_TRY_RUN([ + #include "sqlite3.h" + + int main(int argc, char **argv){ + return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3"); + }], + ac_cv_sqlite_enable_fts3=yes, + ac_cv_sqlite_enable_fts3=no, + ac_cv_sqlite_enable_fts3=no + ) + ]) + AC_MSG_RESULT($ac_cv_sqlite_enable_fts3) + CFLAGS="$_SAVE_CFLAGS" + LIBS="$_SAVE_LIBS" + if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then + AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.]) + fi + + dnl ========================================= + dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check === + dnl ========================================= + dnl check to see if the system SQLite package is compiled with + dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled. + AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite) + _SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $SQLITE_CFLAGS" + _SAVE_LIBS="$LIBS" + LIBS="$LIBS $SQLITE_LIBS" + AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[ + AC_TRY_RUN([ + #include "sqlite3.h" + + int main(int argc, char **argv){ + return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY"); + }], + ac_cv_sqlite_enable_unlock_notify=yes, + ac_cv_sqlite_enable_unlock_notify=no, + ac_cv_sqlite_enable_unlock_notify=no + ) + ]) + AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify) + CFLAGS="$_SAVE_CFLAGS" + LIBS="$_SAVE_LIBS" + if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then + AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.]) + fi + + dnl ========================================= + dnl === SQLITE_ENABLE_DBSTAT_VTAB check === + dnl ========================================= + dnl check to see if the system SQLite package is compiled with + dnl SQLITE_ENABLE_DBSTAT_VTAB. + AC_MSG_CHECKING(for SQLITE_ENABLE_DBSTAT_VTAB support in system SQLite) + _SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $SQLITE_CFLAGS" + _SAVE_LIBS="$LIBS" + LIBS="$LIBS $SQLITE_LIBS" + AC_CACHE_VAL(ac_cv_sqlite_dbstat_vtab,[ + AC_TRY_RUN([ + #include "sqlite3.h" + + int main(int argc, char **argv){ + return !sqlite3_compileoption_used("SQLITE_ENABLE_DBSTAT_VTAB"); + }], + ac_cv_sqlite_dbstat_vtab=yes, + ac_cv_sqlite_dbstat_vtab=no, + ac_cv_sqlite_dbstat_vtab=no + ) + ]) + AC_MSG_RESULT($ac_cv_sqlite_dbstat_vtab) + CFLAGS="$_SAVE_CFLAGS" + LIBS="$_SAVE_LIBS" + if test "x$ac_cv_sqlite_dbstat_vtab" = "xno"; then + AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_DBSTAT_VTAB.]) + fi +fi + +if test -n "$MOZ_NATIVE_SQLITE"; then + AC_DEFINE(MOZ_NATIVE_SQLITE) +fi +AC_SUBST(MOZ_NATIVE_SQLITE) + +dnl ======================================================== +dnl = Enable help viewer (off by default) +dnl ======================================================== +if test -n "$MOZ_HELP_VIEWER"; then + dnl Do this if defined in confvars.sh + AC_DEFINE(MOZ_HELP_VIEWER) +fi + +dnl ======================================================== +dnl = Enable safe browsing (anti-phishing) +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(safe-browsing, +[ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation], + MOZ_SAFE_BROWSING=1, + MOZ_SAFE_BROWSING= ) +if test -n "$MOZ_SAFE_BROWSING"; then + AC_DEFINE(MOZ_SAFE_BROWSING) +fi +AC_SUBST(MOZ_SAFE_BROWSING) + +dnl ======================================================== +dnl = Enable url-classifier +dnl ======================================================== +dnl Implicitly enabled by default if building with safe-browsing +if test -n "$MOZ_SAFE_BROWSING"; then + MOZ_URL_CLASSIFIER=1 +fi +MOZ_ARG_ENABLE_BOOL(url-classifier, +[ --enable-url-classifier Enable url classifier module], + MOZ_URL_CLASSIFIER=1, + MOZ_URL_CLASSIFIER= ) +if test -n "$MOZ_URL_CLASSIFIER"; then + AC_DEFINE(MOZ_URL_CLASSIFIER) +fi +AC_SUBST(MOZ_URL_CLASSIFIER) + +dnl ======================================================== +dnl = Disable zipwriter +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(zipwriter, +[ --disable-zipwriter Disable zipwriter component], + MOZ_ZIPWRITER=, + MOZ_ZIPWRITER=1 ) +AC_SUBST(MOZ_ZIPWRITER) + +dnl ======================================================== +dnl GL provider +dnl ======================================================== +MOZ_GL_PROVIDER= +MOZ_ARG_WITH_STRING(gl-provider, +[ --with-gl-provider=ID + Set GL provider backend type], +[ val=`echo $withval` + MOZ_GL_PROVIDER="$val"]) + +if test -n "$MOZ_GL_PROVIDER"; then +MOZ_GL_DEFAULT_PROVIDER=$MOZ_GL_PROVIDER +AC_SUBST(MOZ_GL_PROVIDER) +AC_DEFINE_UNQUOTED(MOZ_GL_PROVIDER, GLContextProvider$MOZ_GL_PROVIDER) +fi +AC_SUBST(MOZ_GL_DEFAULT_PROVIDER) +AC_DEFINE_UNQUOTED(GL_PROVIDER_$MOZ_GL_DEFAULT_PROVIDER) + +dnl ======================================================== +dnl = faststripe theme +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(faststripe, +[ --enable-faststripe Use faststripe theme], + MOZ_THEME_FASTSTRIPE=1, + MOZ_THEME_FASTSTRIPE= ) +AC_SUBST(MOZ_THEME_FASTSTRIPE) + +dnl ======================================================== +dnl = +dnl = Feature options that require extra sources to be pulled +dnl = +dnl ======================================================== +dnl MOZ_ARG_HEADER(Features that require extra sources) + +dnl ======================================================== +dnl = +dnl = Runtime debugging and Optimization Options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Runtime debugging and Optimizations) + +dnl ======================================================== +dnl enable mobile optimizations +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(mobile-optimize, +[ --enable-mobile-optimize + Enable mobile optimizations], + MOZ_GFX_OPTIMIZE_MOBILE=1) + +AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE) + +if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then + # We ignore paint will resample on mobile for performance. + # We may want to revisit this later. + MOZ_IGNORE_PAINT_WILL_RESAMPLE=1 + + AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE) + AC_DEFINE(MOZ_IGNORE_PAINT_WILL_RESAMPLE) +fi + +dnl ======================================================== +dnl = Enable code optimization. ON by default. +dnl ======================================================== +if test -z "$MOZ_OPTIMIZE_FLAGS"; then + MOZ_OPTIMIZE_FLAGS="-O" +fi + +if test -z "$MOZ_OPTIMIZE_RUSTFLAGS"; then + MOZ_OPTIMIZE_RUSTFLAGS="-O" +fi + +MOZ_ARG_ENABLE_STRING(optimize, +[ --disable-optimize Disable compiler optimization + --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]], +[ if test "$enableval" != "no"; then + MOZ_OPTIMIZE=1 + if test -n "$enableval" -a "$enableval" != "yes"; then + MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'` + MOZ_OPTIMIZE=2 + fi +else + MOZ_OPTIMIZE= +fi ], MOZ_OPTIMIZE=1) + +MOZ_SET_FRAMEPTR_FLAGS + +if test "$COMPILE_ENVIRONMENT"; then +if test -n "$MOZ_OPTIMIZE"; then + AC_MSG_CHECKING([for valid C compiler optimization flags]) + _SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS" + AC_TRY_COMPILE([#include ], + [printf("Hello World\n");], + _results=yes, + _results=no) + AC_MSG_RESULT([$_results]) + if test "$_results" = "no"; then + AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS]) + fi + CFLAGS=$_SAVE_CFLAGS +fi +fi # COMPILE_ENVIRONMENT + +AC_SUBST(MOZ_OPTIMIZE) +AC_SUBST(MOZ_FRAMEPTR_FLAGS) +AC_SUBST(MOZ_OPTIMIZE_FLAGS) +AC_SUBST(MOZ_OPTIMIZE_RUSTFLAGS) +AC_SUBST(MOZ_OPTIMIZE_LDFLAGS) +AC_SUBST_LIST(MOZ_ALLOW_HEAP_EXECUTE_FLAGS) +AC_SUBST(MOZ_PGO) +AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS) + +dnl ======================================================== +dnl = Enable NS_StackWalk. +dnl ======================================================== + +# On Windows, NS_StackWalk will only work correctly if we have frame pointers +# available. That will only be true for non-optimized builds, debug builds or +# builds with --enable-profiling in the .mozconfig (which is turned on in +# Nightly by default.) +case "$OS_TARGET" in +WINNT) + if test -z "$MOZ_OPTIMIZE" -o -n "$MOZ_PROFILING" -o -n "$MOZ_DEBUG"; then + MOZ_STACKWALKING=1 + else + MOZ_STACKWALKING= + fi + ;; +*) + MOZ_STACKWALKING=1 + ;; +esac + +if test -n "$MOZ_STACKWALKING"; then + AC_DEFINE(MOZ_STACKWALKING) +fi + +AC_SUBST(MOZ_STACKWALKING) + +dnl ======================================================== +dnl = Disable treating compiler warnings as errors +dnl ======================================================== +if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then + WARNINGS_AS_ERRORS='' +fi + +dnl ======================================================== +dnl = Enable runtime logging +dnl ======================================================== +AC_DEFINE(MOZ_LOGGING) +AC_DEFINE(FORCE_PR_LOG) + +dnl ======================================================== +dnl = This will enable logging of addref, release, ctor, dtor. +dnl ======================================================== +_ENABLE_LOGREFCNT=42 +MOZ_ARG_ENABLE_BOOL(logrefcnt, +[ --enable-logrefcnt Enable logging of refcounts (default=debug) ], + _ENABLE_LOGREFCNT=1, + _ENABLE_LOGREFCNT= ) +if test "$_ENABLE_LOGREFCNT" = "1"; then + AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING) +elif test -z "$_ENABLE_LOGREFCNT"; then + AC_DEFINE(NO_BUILD_REFCNT_LOGGING) +fi + +dnl ======================================================== +dnl moz_aproximate_location +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(approximate_location, +[ --enable-approximate-location Enable approximate location ], + MOZ_APPROX_LOCATION=1, + MOZ_APPROX_LOCATION= ) +if test -n "$MOZ_APPROX_LOCATION"; then + AC_DEFINE(MOZ_APPROX_LOCATION) +fi + +dnl ======================================================== +dnl moz_gps_debug +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(gps_debug, +[ --enable-gps-debug Enable gps specific debug messages ], + MOZ_GPS_DEBUG=1, + MOZ_GPS_DEBUG= ) +if test -n "$MOZ_GPS_DEBUG"; then + AC_DEFINE(MOZ_GPS_DEBUG) +fi +if test -n "$MOZ_DEBUG"; then + AC_DEFINE(MOZ_GPS_DEBUG) +fi + +dnl ======================================================== +dnl moz_dump_painting +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(dump-painting, +[ --enable-dump-painting Enable paint debugging.], + MOZ_DUMP_PAINTING=1, + MOZ_DUMP_PAINTING= ) +if test -n "$MOZ_DUMP_PAINTING"; then + AC_DEFINE(MOZ_DUMP_PAINTING) + AC_DEFINE(MOZ_LAYERS_HAVE_LOG) +fi +if test -n "$MOZ_DEBUG"; then + AC_DEFINE(MOZ_DUMP_PAINTING) +fi + +dnl ======================================================== +dnl = Enable jemalloc +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(jemalloc, +[ --enable-jemalloc Replace memory allocator with jemalloc], + MOZ_MEMORY=1, + MOZ_MEMORY=) + +case "${OS_TARGET}" in +Android|WINNT|Darwin) + MOZ_GLUE_IN_PROGRAM= + ;; +*) + dnl On !Android !Windows !OSX, we only want to link executables against mozglue + MOZ_GLUE_IN_PROGRAM=1 + AC_DEFINE(MOZ_GLUE_IN_PROGRAM) + ;; +esac + +dnl ======================================================== +dnl = Enable dynamic replacement of malloc implementation +dnl ======================================================== +if test -n "$NIGHTLY_BUILD" -a -n "$MOZ_MEMORY"; then + # Enable on central for the debugging opportunities it adds. + MOZ_REPLACE_MALLOC=1 +fi +MOZ_ARG_ENABLE_BOOL(replace-malloc, +[ --enable-replace-malloc Enable ability to dynamically replace the malloc implementation], + MOZ_REPLACE_MALLOC=1, + MOZ_REPLACE_MALLOC= ) + +if test -n "$MOZ_REPLACE_MALLOC" -a -z "$MOZ_MEMORY"; then + dnl We don't want to enable jemalloc unconditionally because it may be a + dnl deliberate choice not to enable it (bug 702250, for instance) + AC_MSG_ERROR([--enable-replace-malloc requires --enable-jemalloc]) +elif test -n "$MOZ_REPLACE_MALLOC"; then + AC_DEFINE(MOZ_REPLACE_MALLOC) + MOZ_NATIVE_JEMALLOC= + + dnl Replace-malloc Mac linkage quirks + if test -n "$MACOSX_DEPLOYMENT_TARGET"; then + AC_CACHE_CHECK([how to do weak dynamic linking], + ac_cv_weak_dynamic_linking, + [echo 'extern void foo() __attribute__((weak_import));int bar() { if (foo) foo(); return 0; }' > conftest.c + if AC_TRY_COMMAND([${CC-cc} -o conftest${DLL_SUFFIX} $CFLAGS -dynamiclib $LDFLAGS -Wl,-U,_foo conftest.c $LIBS 1>&5]) && + test -s conftest${DLL_SUFFIX}; then + dnl There are several ways the linker can put link edit rules in a binary: + dnl - classic info only (for OSX < 10.6) + dnl - dyld info only + dnl - both + if "$OTOOL" -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO_ONLY" > /dev/null; then + _CLASSIC_INFO= + else + _CLASSIC_INFO=1 + fi + if "$OTOOL" -l conftest${DLL_SUFFIX} 2> /dev/null | grep "LC_DYLD_INFO" > /dev/null; then + _DYLD_INFO=1 + else + _DYLD_INFO= + fi + dnl With classic info, we need to build with -flat_namespace. + dnl With dyld info, Xcode 4.5 does the right thing without additional flags, + dnl but Xcode < 4.5 requires a dummy library and -flat_namespace because it + dnl forgets to set the weak flag in the dyld info. + dnl See http://glandium.org/blog/?p=2764 for more details. + dnl + dnl Values for ac_cv_weak_dynamic_linking, and subsequently + dnl MOZ_REPLACE_MALLOC_LINKAGE are thus: + dnl - "flat namespace" when -flat_namespace alone is needed + dnl - "dummy library" when a dummy library and -flat_namespace are needed + dnl - "compiler support" when nothing is needed + if test -n "$_DYLD_INFO" && dyldinfo -bind conftest${DLL_SUFFIX} 2> /dev/null | grep "_foo (weak import)" > /dev/null; then + if test -n "$_CLASSIC_INFO"; then + ac_cv_weak_dynamic_linking="flat namespace" + else + ac_cv_weak_dynamic_linking="compiler support" + fi + else + if test -n "$_DYLD_INFO"; then + ac_cv_weak_dynamic_linking="dummy library" + else + ac_cv_weak_dynamic_linking="flat namespace" + fi + fi + else + AC_ERROR([couldn't compile a simple C file]) + fi + rm -rf conftest*]) + MOZ_REPLACE_MALLOC_LINKAGE="$ac_cv_weak_dynamic_linking" + fi +fi +AC_SUBST(MOZ_REPLACE_MALLOC) +AC_SUBST(MOZ_REPLACE_MALLOC_LINKAGE) + +dnl ======================================================== +dnl = Jemalloc build setup +dnl ======================================================== +if test -z "$MOZ_MEMORY"; then + if test -n "$MOZ_JEMALLOC4" -a -z "$MOZ_REPLACE_MALLOC"; then + MOZ_NATIVE_JEMALLOC=1 + AC_CHECK_FUNCS(mallctl nallocx,, + [MOZ_NATIVE_JEMALLOC= + break]) + if test -n "$MOZ_NATIVE_JEMALLOC"; then + MOZ_MEMORY=1 + AC_DEFINE(MOZ_MEMORY) + AC_DEFINE(MOZ_JEMALLOC4) + AC_DEFINE(MOZ_NATIVE_JEMALLOC) + fi + fi + case "${target}" in + *-mingw*) + if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then + 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.]) + fi + ;; + esac +else + AC_DEFINE(MOZ_MEMORY) + if test -n "$MOZ_JEMALLOC4"; then + AC_DEFINE(MOZ_JEMALLOC4) + fi + if test "x$MOZ_DEBUG" = "x1"; then + AC_DEFINE(MOZ_MEMORY_DEBUG) + fi + dnl The generic feature tests that determine how to compute ncpus are long and + dnl complicated. Therefore, simply define special cpp variables for the + dnl platforms we have special knowledge of. + case "${target}" in + *-darwin*) + AC_DEFINE(MOZ_MEMORY_DARWIN) + ;; + *-*freebsd*) + AC_DEFINE(MOZ_MEMORY_BSD) + ;; + *-android*|*-linuxandroid*) + AC_DEFINE(MOZ_MEMORY_LINUX) + AC_DEFINE(MOZ_MEMORY_ANDROID) + if test -n "$gonkdir"; then + AC_DEFINE(MOZ_MEMORY_GONK) + fi + ;; + *-*linux*) + AC_DEFINE(MOZ_MEMORY_LINUX) + ;; + *-netbsd*) + AC_DEFINE(MOZ_MEMORY_BSD) + ;; + *-solaris*) + AC_DEFINE(MOZ_MEMORY_SOLARIS) + ;; + *-mingw*) + AC_DEFINE(MOZ_MEMORY_WINDOWS) + export MOZ_NO_DEBUG_RTL=1 + if test "$MSVS_VERSION" != "2015"; then + WIN32_CRT_LIBS="msvcrt.lib msvcprt.lib" + dnl Look for a broken crtdll.obj + WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj` + lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH + if grep -q '__imp__\{0,1\}free' crtdll.obj; then + MOZ_CRT=1 + fi + rm crtdll.obj + fi + ;; + *) + AC_MSG_ERROR([--enable-jemalloc not supported on ${target}]) + ;; + esac +fi # MOZ_MEMORY +AC_SUBST(MOZ_MEMORY) +AC_SUBST(MOZ_JEMALLOC4) +AC_SUBST(MOZ_NATIVE_JEMALLOC) +AC_SUBST(MOZ_CRT) +export MOZ_CRT +AC_SUBST(MOZ_GLUE_IN_PROGRAM) +AC_SUBST_LIST(WIN32_CRT_LIBS) + +# Allow the application to provide a subconfigure script. +# This should be after 'export MOZ_NO_DEBUG_RTL=1' since +# ldap/c-sdk/configure refers to the enviroment value. +if test -f "${srcdir}/${MOZ_BUILD_APP}/configure.in" ; then + do_output_subdirs() { + if test -n "$_subconfigure_subdirs"; then + AC_MSG_ERROR([Cannot specify more than one sub-sub-configure]) + fi + _subconfigure_subdir="$1" + _subconfigure_config_args="$ac_configure_args" + } + tmpscript=`$PYTHON -c 'import os, tempfile; print tempfile.mktemp(prefix="subscript.").replace(os.sep, "/")'` || exit 1 + m4 "${srcdir}/build/autoconf/subconfigure.m4" \ + "${srcdir}/build/autoconf/altoptions.m4" \ + "${srcdir}/${MOZ_BUILD_APP}/configure.in" > $tmpscript + . $tmpscript + rm -f $tmpscript +fi + +dnl We need to wrap dlopen and related functions on Android because we use +dnl our own linker. +if test "$OS_TARGET" = Android; then + if test "$MOZ_WIDGET_TOOLKIT" = gonk -a -n "$MOZ_NUWA_PROCESS"; then + MOZ_GLUE_WRAP_LDFLAGS="${MOZ_GLUE_WRAP_LDFLAGS} -Wl,--wrap=pthread_create,--wrap=epoll_wait,--wrap=poll,--wrap=pthread_cond_timedwait,--wrap=pthread_cond_wait,--wrap=epoll_create,--wrap=epoll_ctl,--wrap=close,--wrap=pthread_key_create,--wrap=pthread_key_delete,--wrap=socketpair,--wrap=pthread_self,--wrap=pthread_mutex_lock,--wrap=pthread_mutex_trylock,--wrap=pthread_join,--wrap=pipe,--wrap=pipe2" + fi + if test "$MOZ_WIDGET_TOOLKIT" = android -a "$MOZ_ANDROID_MIN_SDK_VERSION" -lt 11; then + MOZ_GLUE_WRAP_LDFLAGS="${MOZ_GLUE_WRAP_LDFLAGS} -Wl,--wrap=getaddrinfo,--wrap=freeaddrinfo,--wrap=gai_strerror" + fi +fi + +AC_SUBST_LIST(MOZ_GLUE_WRAP_LDFLAGS) +export MOZ_GLUE_WRAP_LDFLAGS + +dnl ======================================================== +dnl = Enable using the clang plugin to build +dnl ======================================================== + +MOZ_CONFIG_CLANG_PLUGIN + +dnl ======================================================== +dnl = Enable stripping of libs & executables +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(strip, +[ --enable-strip Enable stripping of libs & executables ], + ENABLE_STRIP=1, + ENABLE_STRIP= ) + +dnl ======================================================== +dnl = Enable stripping of libs & executables when packaging +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(install-strip, +[ --enable-install-strip Enable stripping of libs & executables when packaging ], + PKG_SKIP_STRIP= , + PKG_SKIP_STRIP=1) + +dnl ======================================================== +dnl = --disable-elf-hack +dnl ======================================================== + +USE_ELF_HACK=1 +MOZ_ARG_DISABLE_BOOL(elf-hack, +[ --disable-elf-hack Disable elf hacks], + [USE_ELF_HACK=], + [USE_ELF_HACK=1]) + +# Only enable elfhack where supported +if test "$USE_ELF_HACK" = 1; then + case "${HOST_OS_ARCH},${OS_ARCH}" in + Linux,Linux) + case "${CPU_ARCH}" in + arm | x86 | x86_64) + USE_ELF_HACK=1 + ;; + *) + USE_ELF_HACK= + ;; + esac + ;; + *) + USE_ELF_HACK= + ;; + esac +fi + +if test -n "$COMPILE_ENVIRONMENT" -a -n "$USE_ELF_HACK"; then + dnl PT_GNU_RELRO segment makes the dynamic linker set a read-only flag on + dnl memory addresses it maps to. The result is that by the time elfhack + dnl kicks in, it is not possible to apply relocations because of that, + dnl thus elfhack effectively skips relocations inside the PT_GNU_RELRO + dnl segment. It makes elfhack mostly useless, so considering the problems + dnl we have we PT_GNU_RELRO (e.g. bug 664366), and until elfhack can deal + dnl with PT_GNU_RELRO segments, it's just simpler to disable elfhack when + dnl the linker creates PT_GNU_RELRO segments. However, when we do want + dnl elfhack enabled, disable PT_GNU_RELRO instead. + AC_CACHE_CHECK([whether linker creates PT_GNU_RELRO segments], + LINK_WITH_PT_GNU_RELRO, + [echo "int main() {return 0;}" > conftest.${ac_ext} + if AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.${ac_ext} $LIBS 1>&2) && + test -s conftest${ac_exeext}; then + if ${TOOLCHAIN_PREFIX}readelf -l conftest${ac_exeext} | grep GNU_RELRO > /dev/null; then + LINK_WITH_PT_GNU_RELRO=yes + else + LINK_WITH_PT_GNU_RELRO=no + fi + else + dnl We really don't expect to get here, but just in case + AC_ERROR([couldn't compile a simple C file]) + fi + rm -rf conftest*]) + if test "$LINK_WITH_PT_GNU_RELRO" = yes; then + if test "$USE_ELF_HACK" = F; then + AC_MSG_CHECKING([for -z norelro option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,norelro" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]) + [NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,norelro"], + AC_ERROR([--enable-elf-hack is not compatible with a linker creating a PT_GNU_RELRO segment and that doesn't support the "-z norelro" option.])) + USE_ELF_HACK=1 + else + AC_MSG_WARN([Disabling elfhack]) + USE_ELF_HACK= + fi + fi +fi # COMPILE_ENVIRONMENT and others. + +dnl ======================================================== +dnl = libstdc++ compatibility hacks +dnl ======================================================== + +STDCXX_COMPAT= +MOZ_ARG_ENABLE_BOOL(stdcxx-compat, +[ --enable-stdcxx-compat Enable compatibility with older libstdc++], + STDCXX_COMPAT=1) + +if test -n "$STDCXX_COMPAT"; then + eval $(CXX="$CXX" HOST_CXX="$HOST_CXX" $PYTHON -m mozbuild.configure.libstdcxx) + AC_SUBST(MOZ_LIBSTDCXX_TARGET_VERSION) + AC_SUBST(MOZ_LIBSTDCXX_HOST_VERSION) + CXXFLAGS="$CXXFLAGS -D_GLIBCXX_USE_CXX11_ABI=0" + HOST_CXXFLAGS="$HOST_CXXFLAGS -D_GLIBCXX_USE_CXX11_ABI=0" +fi + +dnl ======================================================== +dnl = frontend JS debug mode +dnl ======================================================== + +MOZ_ARG_ENABLE_BOOL(debug-js-modules, +[ --enable-debug-js-modules Enable debug mode for frontend JS libraries], + DEBUG_JS_MODULES=1, + DEBUG_JS_MODULES=) + +AC_SUBST(DEBUG_JS_MODULES) + +dnl ======================================================== +dnl = +dnl = Profiling and Instrumenting +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Profiling and Instrumenting) + +dnl ======================================================== +dnl = Enable TaskTracer +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(tasktracer, +[ --enable-tasktracer Set compile flags necessary for using TaskTracer], + MOZ_TASK_TRACER=1, + MOZ_TASK_TRACER= ) +if test -n "$MOZ_TASK_TRACER"; then + AC_DEFINE(MOZ_TASK_TRACER) + AC_SUBST(MOZ_TASK_TRACER) +fi + +dnl ======================================================== +dnl Turn on reflow counting +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(reflow-perf, +[ --enable-reflow-perf Enable reflow performance tracing], + MOZ_REFLOW_PERF=1, + MOZ_REFLOW_PERF= ) +if test -n "$MOZ_REFLOW_PERF"; then + AC_DEFINE(MOZ_REFLOW_PERF) +fi + +dnl ======================================================== +dnl = Horizon build options - set default preferences for +dnl the horizon project. Horizon is a browser built on +dnl top of the graphene runtime. +dnl ======================================================== +if test -n "$MOZ_HORIZON"; then + AC_DEFINE(MOZ_HORIZON) +fi +AC_SUBST(MOZ_HORIZON) + +dnl ======================================================== +dnl = Offer a way to disable the startup cache +dnl ======================================================== + +MOZ_ARG_DISABLE_BOOL(startupcache, +[ --disable-startupcache Disable startup cache ], + MOZ_DISABLE_STARTUPCACHE=1, + MOZ_DISABLE_STARTUPCACHE=) + +dnl bug 988880: disable startup cache on b2g +if test -n "$MOZ_B2G"; then + MOZ_DISABLE_STARTUPCACHE=1 +fi +if test -n "$MOZ_DISABLE_STARTUPCACHE"; then + AC_DEFINE(MOZ_DISABLE_STARTUPCACHE) +fi +AC_SUBST(MOZ_DISABLE_STARTUPCACHE) + +dnl ======================================================== +dnl = Enable packaging Gaia with B2G desktop and b2gdroid +dnl ======================================================== +if test x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then + if test -n "$GAIADIR" -a ! -d "$GAIADIR" ; then + AC_MSG_ERROR([GAIADIR '$GAIADIR' isn't a valid directory]) + fi + + AC_SUBST(GAIADIR) + if test -n "$GAIADIR" ; then + AC_DEFINE(PACKAGE_GAIA) + fi + + if test -n "$FXOS_SIMULATOR" -a -z "$GAIADIR" ; then + AC_MSG_ERROR([FXOS_SIMULATOR=1 requires GAIADIR to be defined]) + fi + + if test "$MOZ_BUILD_APP" = "mobile/android/b2gdroid" -a -z "$GAIADIR"; then + AC_MSG_ERROR([GAIADIR needs to be set in b2gdroid builds]) + fi + + if test -n "$FXOS_SIMULATOR" ; then + AC_DEFINE(FXOS_SIMULATOR) + AC_SUBST(FXOS_SIMULATOR) + fi +fi + +dnl ======================================================== +dnl = Enable Radio Interface for B2G (Gonk usually) +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(b2g-ril, +[ --enable-b2g-ril Set compile flags necessary for testing B2G Radio Interface Layer via network sockets ], + MOZ_B2G_RIL=1, + MOZ_B2G_RIL=, + MOZ_B2G_RIL=$_PLATFORM_HAVE_RIL ) +if test -n "$MOZ_B2G_RIL"; then + if test -n "$_PLATFORM_HAVE_RIL"; then + AC_DEFINE(MOZ_B2G_RIL) + else + AC_MSG_ERROR([b2g-ril cannot be enabled because target platform doesn't support it.]) + fi +fi +AC_SUBST(MOZ_B2G_RIL) + +dnl ======================================================== +dnl = Enable Radio FM for B2G (Gonk usually) +dnl ======================================================== +if test -n "$MOZ_B2G_FM"; then + AC_DEFINE(MOZ_B2G_FM) +fi +AC_SUBST(MOZ_B2G_FM) + +dnl ======================================================== +dnl = Enable Bluetooth Interface for B2G (Gonk usually) +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(b2g-bt, +[ --enable-b2g-bt Set compile flags necessary for compiling Bluetooth API for B2G ], + MOZ_B2G_BT=1, + MOZ_B2G_BT= ) +if test -n "$MOZ_B2G_BT"; then + AC_DEFINE(MOZ_B2G_BT) +fi +AC_SUBST(MOZ_B2G_BT) +AC_SUBST(MOZ_B2G_BT_BLUEZ) +AC_SUBST(MOZ_B2G_BT_DAEMON) + +dnl ======================================================== +dnl = Enable NFC Interface for B2G (Gonk usually) +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(nfc, +[ --enable-nfc Set compile flags necessary for compiling NFC API ], + MOZ_NFC=1, + MOZ_NFC= ) +if test -n "$MOZ_NFC"; then + AC_DEFINE(MOZ_NFC) +fi +AC_SUBST(MOZ_NFC) + +dnl ======================================================== +dnl = Enable Pico Speech Synthesis (Gonk usually) +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(synth-pico, +[ --enable-synth-pico Set compile flags necessary for compiling Pico Web Speech API ], + MOZ_SYNTH_PICO=1, + MOZ_SYNTH_PICO= ) +if test -n "$MOZ_SYNTH_PICO"; then + AC_DEFINE(MOZ_SYNTH_PICO) +fi +AC_SUBST(MOZ_SYNTH_PICO) + +dnl ======================================================== +dnl = Enable Support for Time Manager API +dnl ======================================================== +if test -n "$MOZ_TIME_MANAGER"; then + AC_DEFINE(MOZ_TIME_MANAGER) +fi +AC_SUBST(MOZ_TIME_MANAGER) + +dnl ======================================================== +dnl = Enable Camera Interface for B2G (Gonk usually) +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(b2g-camera, +[ --enable-b2g-camera Set compile flags necessary for compiling camera API for B2G ], + MOZ_B2G_CAMERA=1, + MOZ_B2G_CAMERA= ) +if test -n "$MOZ_B2G_CAMERA"; then + AC_DEFINE(MOZ_B2G_CAMERA) +fi +AC_SUBST(MOZ_B2G_CAMERA) + +dnl ======================================================== +dnl = Enable Support for SimplePush (Gonk usually) +dnl This will disable the Push API. +dnl ======================================================== +if test -n "$MOZ_SIMPLEPUSH"; then + AC_DEFINE(MOZ_SIMPLEPUSH) +fi +AC_SUBST(MOZ_SIMPLEPUSH) + +dnl ======================================================== +dnl = Enable Support for Payment API +dnl ======================================================== +if test -n "$MOZ_PAY"; then + AC_DEFINE(MOZ_PAY) +fi +AC_SUBST(MOZ_PAY) + +dnl ======================================================== +dnl = Enable Browser Support for Activities +dnl ======================================================== +if test -n "$MOZ_ACTIVITIES"; then + AC_DEFINE(MOZ_ACTIVITIES) +fi +AC_SUBST(MOZ_ACTIVITIES) + +dnl ======================================================== +dnl = Enable Support for AudioChannelManager API +dnl ======================================================== +if test -n "$MOZ_AUDIO_CHANNEL_MANAGER"; then + AC_DEFINE(MOZ_AUDIO_CHANNEL_MANAGER) +fi +AC_SUBST(MOZ_AUDIO_CHANNEL_MANAGER) + +dnl ======================================================== +dnl = Enable Support for Secure Element API +dnl ======================================================== + MOZ_SECUREELEMENT=1, +if test -n "$MOZ_SECUREELEMENT"; then + AC_DEFINE(MOZ_SECUREELEMENT) +fi + AC_SUBST(MOZ_SECUREELEMENT) + +dnl ======================================================== +dnl = Support for demangling undefined symbols +dnl ======================================================== +if test -z "$SKIP_LIBRARY_CHECKS"; then + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=) + AC_LANG_RESTORE +fi + +# Demangle only for debug or DMD builds +MOZ_DEMANGLE_SYMBOLS= +if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$MOZ_DMD"; then + MOZ_DEMANGLE_SYMBOLS=1 + AC_DEFINE(MOZ_DEMANGLE_SYMBOLS) +fi +AC_SUBST(MOZ_DEMANGLE_SYMBOLS) + +dnl ======================================================== +dnl = Support for gcc stack unwinding (from gcc 3.3) +dnl ======================================================== +if test -z "$SKIP_LIBRARY_CHECKS"; then + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace)) + AC_LANG_RESTORE +fi + +dnl ======================================================== +dnl JIT observers +dnl ======================================================== + +MOZ_ARG_WITH_STRING(jitreport-granularity, +[ --jitreport-granularity=N + Default granularity at which to report JIT code + to external tools + 0 - no info + 1 - code ranges for whole functions only + 2 - per-line information + 3 - per-op information], + JITREPORT_GRANULARITY=$withval, + JITREPORT_GRANULARITY=3) + +AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY) + +dnl ======================================================== +dnl = Disable Mozilla's versions of RIL and Geolocation +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(mozril-geoloc, +[ --disable-mozril-geoloc Disable Mozilla's RIL and geolocation], + DISABLE_MOZ_RIL_GEOLOC=1, + DISABLE_MOZ_RIL_GEOLOC= ) +if test -n "$DISABLE_MOZ_RIL_GEOLOC"; then + AC_DEFINE(DISABLE_MOZ_RIL_GEOLOC) +fi +AC_SUBST(DISABLE_MOZ_RIL_GEOLOC) + +dnl ======================================================== +dnl = +dnl = Misc. Options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Misc. Options) + +dnl ======================================================== +dnl update xterm title +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(xterm-updates, +[ --enable-xterm-updates Update XTERM titles with current command.], + MOZ_UPDATE_XTERM=1, + MOZ_UPDATE_XTERM= ) + +dnl ========================================================= +dnl = Chrome format +dnl ========================================================= +MOZ_ARG_ENABLE_STRING([chrome-format], +[ --enable-chrome-format=jar|flat|omni + Select FORMAT of chrome files during packaging], + MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`) + +if test -z "$MOZ_CHROME_FILE_FORMAT"; then + MOZ_CHROME_FILE_FORMAT=jar +fi + +if test "$MOZ_CHROME_FILE_FORMAT" = "symlink"; then + AC_MSG_ERROR([--enable-chrome-format=symlink has been deprecated. It is now used by default in $DIST/bin on platforms that support it]) +fi + +if test "$MOZ_CHROME_FILE_FORMAT" != "jar" && + test "$MOZ_CHROME_FILE_FORMAT" != "flat" && + test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then + AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, or omni]) +fi + +dnl ========================================================= +dnl Omnijar packaging (bug 552121) +dnl ========================================================= +dnl Omnijar packaging is compatible with flat packaging. +dnl In unpackaged builds, omnijar looks for files as if +dnl things were flat packaged. After packaging, all files +dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT +dnl is set to flat since putting files into jars is only +dnl done during packaging with omnijar. +if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then + MOZ_OMNIJAR=1 + AC_DEFINE(MOZ_OMNIJAR) +fi +MOZ_PACKAGER_FORMAT="$MOZ_CHROME_FILE_FORMAT" +if test "$OS_ARCH" = "WINNT" -o "$MOZ_WIDGET_TOOLKIT" = "android"; then + MOZ_CHROME_FILE_FORMAT=flat +else + MOZ_CHROME_FILE_FORMAT=symlink +fi + +if test "$MOZ_WIDGET_TOOLKIT" = "android"; then + dnl Fennec's static resources live in the assets/ folder of the + dnl APK. Adding a path to the name here works because we only + dnl have one omnijar file in the final package (which is not the + dnl case on desktop), and necessitates some contortions during + dnl packaging so that the resources in the omnijar are considered + dnl as rooted at / and not as rooted at assets/ (which again is + dnl not the case on desktop: there are omnijars rooted at webrtc/, + dnl etc). packager.mk handles changing the rooting of the single + dnl omnijar. + OMNIJAR_NAME=assets/omni.ja +else + OMNIJAR_NAME=omni.ja +fi + +AC_SUBST(OMNIJAR_NAME) +AC_SUBST(MOZ_OMNIJAR) +AC_SUBST(MOZ_PACKAGER_FORMAT) + +dnl ======================================================== +dnl = Define default location for MOZILLA_FIVE_HOME +dnl ======================================================== +MOZ_ARG_WITH_STRING(default-mozilla-five-home, +[ --with-default-mozilla-five-home + Set the default value for MOZILLA_FIVE_HOME], +[ val=`echo $withval` + AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ]) + +dnl ======================================================== +dnl = Location of the mozilla user directory (default is ~/.mozilla).], +dnl ======================================================== +MOZ_ARG_WITH_STRING(user-appdir, +[ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)], +[ val=`echo $withval` +if echo "$val" | grep "\/" >/dev/null; then + AC_MSG_ERROR("Homedir must be single relative path.") +else + MOZ_USER_DIR="$val" +fi]) + +AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR") + +dnl ======================================================== +dnl = Doxygen configuration +dnl ======================================================== +dnl Use commas to specify multiple dirs to this arg +MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl' +MOZ_ARG_WITH_STRING(doc-input-dirs, +[ --with-doc-input-dirs=DIRS + Header/idl dirs to create docs from], +[ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] ) +AC_SUBST(MOZ_DOC_INPUT_DIRS) + +dnl Use commas to specify multiple dirs to this arg +MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr' +MOZ_ARG_WITH_STRING(doc-include-dirs, +[ --with-doc-include-dirs=DIRS + Include dirs to preprocess doc headers], +[ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] ) +AC_SUBST(MOZ_DOC_INCLUDE_DIRS) + +MOZ_DOC_OUTPUT_DIR='./dist/docs' +MOZ_ARG_WITH_STRING(doc-output-dir, +[ --with-doc-output-dir=DIR + Dir to generate docs into], +[ MOZ_DOC_OUTPUT_DIR=$withval ] ) +AC_SUBST(MOZ_DOC_OUTPUT_DIR) + +if test -z "$SKIP_COMPILER_CHECKS"; then +dnl ======================================================== +dnl = +dnl = Compiler Options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Compiler Options) + +dnl ======================================================== +dnl Check for gcc -pipe support +dnl ======================================================== +AC_MSG_CHECKING([for -pipe support]) +if test -n "$GNU_CC" -a -n "$GNU_CXX"; then + dnl Any gcc that supports firefox supports -pipe. + CFLAGS="$CFLAGS -pipe" + CXXFLAGS="$CXXFLAGS -pipe" + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi + +dnl ======================================================== +dnl Profile guided optimization (gcc checks) +dnl ======================================================== +dnl Test for profiling options +dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use + +_SAVE_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction" + +AC_MSG_CHECKING([whether C compiler supports -fprofile-generate]) +AC_TRY_COMPILE([], [return 0;], + [ PROFILE_GEN_CFLAGS="-fprofile-generate" + result="yes" ], result="no") +AC_MSG_RESULT([$result]) + +if test $result = "yes"; then + PROFILE_GEN_LDFLAGS="-fprofile-generate" + PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch" + PROFILE_USE_LDFLAGS="-fprofile-use" +fi + +CFLAGS="$_SAVE_CFLAGS" + +if test -n "$INTEL_CC"; then + PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ." + PROFILE_GEN_LDFLAGS= + PROFILE_USE_CFLAGS="-prof-use -prof-dir ." + PROFILE_USE_LDFLAGS= +fi + +dnl Sun Studio on Solaris +if test "$SOLARIS_SUNPRO_CC"; then + PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application" + PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application" + PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application" + PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application" +fi + +AC_SUBST(PROFILE_GEN_CFLAGS) +AC_SUBST(PROFILE_GEN_LDFLAGS) +AC_SUBST(PROFILE_USE_CFLAGS) +AC_SUBST(PROFILE_USE_LDFLAGS) + +dnl ============================================= +dnl Support for -fno-integrated-as (recent clang) +dnl ============================================= +dnl Under clang 3.4+, use -fno-integrated-as to +dnl build libvpx's vp8_asm_enc_offsets.c + +_SAVE_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -fno-integrated-as -S" + +AC_MSG_CHECKING([whether C compiler supports -fno-integrated-as]) +AC_TRY_COMPILE([], [return 0;], + [ NO_INTEGRATED_AS_CFLAGS="-fno-integrated-as" + result="yes" ], result="no") +AC_MSG_RESULT([$result]) + +CFLAGS="$_SAVE_CFLAGS" + +AC_SUBST(NO_INTEGRATED_AS_CFLAGS) + +fi # ! SKIP_COMPILER_CHECKS + +AC_DEFINE(CPP_THROW_NEW, [throw()]) +AC_LANG_C + +if test "$COMPILE_ENVIRONMENT"; then +MOZ_EXPAND_LIBS +fi # COMPILE_ENVIRONMENT + +dnl ======================================================== +dnl = +dnl = Build depencency options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Build dependencies) + +if test "$GNU_CC" -a "$GNU_CXX"; then + _DEPEND_CFLAGS='-MD -MP -MF $(MDDEPDIR)/$(@F).pp' +dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk +elif test "$SOLARIS_SUNPRO_CC"; then + _DEPEND_CFLAGS= +else + dnl Don't override this for MSVC + if test -z "$_WIN32_MSVC"; then + _USE_CPP_INCLUDE_FLAG= + _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT' + _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT' + else + echo '#include ' > dummy-hello.c + changequote(,) + dnl This output is localized, split at the first double space or colon and space. + _CL_PREFIX_REGEX="^\([^:]*:.*[ :] \)\(.*\\\stdio.h\)$" + CL_INCLUDES_PREFIX=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\1/p'` + _CL_STDIO_PATH=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/'"$_CL_PREFIX_REGEX"'/\2/p'` + changequote([,]) + if ! test -e "$_CL_STDIO_PATH"; then + AC_MSG_ERROR([Unable to parse cl -showIncludes prefix. This compiler's locale has an unsupported formatting.]) + fi + if test -z "$CL_INCLUDES_PREFIX"; then + AC_MSG_ERROR([Cannot find cl -showIncludes prefix.]) + fi + AC_SUBST(CL_INCLUDES_PREFIX) + rm -f dummy-hello.c + + dnl Make sure that the build system can handle non-ASCII characters + dnl in environment variables to prevent it from breaking silently on + dnl non-English systems. + NONASCII=$'\241\241' + AC_SUBST(NONASCII) + fi +fi + +dnl ======================================================== +dnl = +dnl = Static Build Options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Static build options) + +if test -z "$MOZ_NATIVE_ZLIB"; then +if test -n "$JS_SHARED_LIBRARY"; then + ZLIB_IN_MOZGLUE=1 + AC_DEFINE(ZLIB_IN_MOZGLUE) +fi +fi + +AC_SUBST(ZLIB_IN_MOZGLUE) + +dnl ======================================================== +dnl = +dnl = Standalone module options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla)) + +dnl Check for GLib. +dnl ======================================================== + +if test -z "$SKIP_PATH_CHECKS"; then +if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then + if test "$MOZ_ENABLE_GTK" ; then + PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0) + fi +fi +fi + +if test -z "${GLIB_GMODULE_LIBS}" \ + -a -n "${GLIB_CONFIG}"\ + -a "${GLIB_CONFIG}" != no\ +; then + GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs` +fi + +AC_SUBST_LIST(GLIB_GMODULE_LIBS) + +dnl ======================================================== +dnl Graphics checks. +dnl ======================================================== + +if test "${OS_TARGET}" = "WINNT" -o \ + "${OS_ARCH}" = "Darwin" -o \ + "${MOZ_WIDGET_TOOLKIT}" = "android" -o \ + "${MOZ_WIDGET_TOOLKIT}" = "gonk" -o \ + "${MOZ_WIDGET_TOOLKIT}" = "gtk2" -o \ + "${MOZ_WIDGET_TOOLKIT}" = "gtk3"; then + case "${CPU_ARCH}" in + x86|x86_64|arm) + MOZ_ENABLE_SKIA=1 + ;; + *) + MOZ_ENABLE_SKIA= + ;; + esac +else +MOZ_ENABLE_SKIA= +fi + +MOZ_ARG_ENABLE_BOOL(skia, +[ --enable-skia Enable use of Skia], +MOZ_ENABLE_SKIA=1, +MOZ_ENABLE_SKIA=) + +dnl Skia GPU support may not reliably build on certain *BSDs (see bug 1234494). +if test "${OS_TARGET}" = "OpenBSD" -o \ + "${OS_TARGET}" = "NetBSD" -o \ + "${OS_ARCH}" = "SunOS"; then + MOZ_DISABLE_SKIA_GPU=1 +else + MOZ_DISABLE_SKIA_GPU= +fi + +MOZ_ARG_DISABLE_BOOL(skia-gpu, +[ --disable-skia-gpu Disable use of Skia-GPU], +MOZ_DISABLE_SKIA_GPU=1, +MOZ_DISABLE_SKIA_GPU=) + +if test "$USE_FC_FREETYPE"; then + if test "$COMPILE_ENVIRONMENT"; then + dnl ======================================================== + dnl = Check for freetype2 and its functionality + dnl ======================================================== + PKG_CHECK_MODULES(FT2, freetype2 >= 6.1.0, _HAVE_FREETYPE2=1, _HAVE_FREETYPE2=) + + if test "$_HAVE_FREETYPE2"; then + _SAVE_LIBS="$LIBS" + _SAVE_CFLAGS="$CFLAGS" + LIBS="$LIBS $FT2_LIBS" + CFLAGS="$CFLAGS $FT2_CFLAGS" + + AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem, + ac_cv_member_FT_Bitmap_Size_y_ppem, + [AC_TRY_COMPILE([#include + #include FT_FREETYPE_H], + [FT_Bitmap_Size s; + if (sizeof s.y_ppem) return 0; + return 1], + ac_cv_member_FT_Bitmap_Size_y_ppem=yes, + ac_cv_member_FT_Bitmap_Size_y_ppem=no)]) + if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then + HAVE_FT_BITMAP_SIZE_Y_PPEM=1 + else + HAVE_FT_BITMAP_SIZE_Y_PPEM=0 + fi + AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM, + $HAVE_FT_BITMAP_SIZE_Y_PPEM, + [FT_Bitmap_Size structure includes y_ppem field]) + + AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table) + + LIBS="$_SAVE_LIBS" + CFLAGS="$_SAVE_CFLAGS" + fi + + _SAVE_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS" + MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], , + [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include ]) + CPPFLAGS="$_SAVE_CPPFLAGS" + else + AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H) + fi + + PKG_CHECK_MODULES(_FONTCONFIG, fontconfig >= $FONTCONFIG_VERSION, + [ + if test "$MOZ_PANGO"; then + MOZ_PANGO_CFLAGS="$MOZ_PANGO_CFLAGS $_FONTCONFIG_CFLAGS" + MOZ_PANGO_LIBS="$MOZ_PANGO_LIBS $_FONTCONFIG_LIBS" + else + FT2_CFLAGS="$FT2_CFLAGS $_FONTCONFIG_CFLAGS" + FT2_LIBS="$FT2_LIBS $_FONTCONFIG_LIBS" + fi + ]) +fi + +dnl ======================================================== +dnl Check for pixman and cairo +dnl ======================================================== + +MOZ_TREE_CAIRO=1 +MOZ_ARG_ENABLE_BOOL(system-cairo, +[ --enable-system-cairo Use system cairo (located with pkgconfig)], +MOZ_TREE_CAIRO=, +MOZ_TREE_CAIRO=1 ) + +MOZ_TREE_PIXMAN=1 +MOZ_ARG_ENABLE_BOOL(system-pixman, +[ --enable-system-pixman Use system pixman (located with pkgconfig)], +MOZ_TREE_PIXMAN=, +MOZ_TREE_PIXMAN=force, +MOZ_TREE_PIXMAN=1 ) + +# System cairo depends on system pixman +if test "$MOZ_TREE_PIXMAN" = "force"; then + if test -z "$MOZ_TREE_CAIRO"; then + AC_MSG_ERROR([--disable-system-pixman is incompatible with --enable-system-cairo.]) + else + MOZ_TREE_PIXMAN=1 + fi +elif test -z "$MOZ_TREE_CAIRO"; then + MOZ_TREE_PIXMAN= +fi + +if test "$MOZ_TREE_PIXMAN"; then + AC_DEFINE(MOZ_TREE_PIXMAN) +else + PKG_CHECK_MODULES(MOZ_PIXMAN, pixman-1 >= 0.19.2) +fi + +# Check for headers defining standard int types. +if test -n "$COMPILE_ENVIRONMENT"; then + MOZ_CHECK_HEADERS(stdint.h inttypes.h) + + if test "${ac_cv_header_inttypes_h}" = "yes"; then + HAVE_INTTYPES_H=1 + fi +fi + +AC_SUBST(HAVE_INTTYPES_H) + +if test "$MOZ_TREE_CAIRO"; then + MOZ_CAIRO_CFLAGS="-I${DIST}/include/cairo" + AC_DEFINE(MOZ_TREE_CAIRO) + + if test "$OS_ARCH" = "WINNT"; then + # For now we assume that we will have a uint64_t available through + # one of the above headers or mozstdint.h. + AC_DEFINE(HAVE_UINT64_T) + fi + + # Define macros for cairo-features.h + TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1" + if test "$MOZ_X11"; then + XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1" + XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1" + PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1" + fi + if test "$_HAVE_FREETYPE2"; then + FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1" + MOZ_ENABLE_CAIRO_FT=1 + CAIRO_FT_CFLAGS="$FT2_CFLAGS" + fi + + case "$MOZ_WIDGET_TOOLKIT" in + qt) + QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1" + ;; + cocoa | uikit) + QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1" + QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1" + QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1" + ;; + windows) + WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1" + WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1" + WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1" + WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1" + MOZ_ENABLE_D2D_SURFACE=1 + MOZ_ENABLE_DWRITE_FONT=1 + + if test "$COMPILE_ENVIRONMENT"; then + + MOZ_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1) + + dnl D3D10 Layers depend on D2D Surfaces. + if test -n "$WIN32_D2D_SURFACE_FEATURE"; then + MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1) + fi + fi + ;; + esac + if test "$USE_FC_FREETYPE"; then + FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1" + fi + AC_SUBST(MOZ_ENABLE_CAIRO_FT) + AC_SUBST(MOZ_ENABLE_DWRITE_FONT) + AC_SUBST(MOZ_ENABLE_D2D_SURFACE) + AC_SUBST(MOZ_ENABLE_D3D9_LAYER) + AC_SUBST(MOZ_ENABLE_D3D10_LAYER) + + AC_SUBST(PS_SURFACE_FEATURE) + AC_SUBST(PDF_SURFACE_FEATURE) + AC_SUBST(SVG_SURFACE_FEATURE) + AC_SUBST(XLIB_SURFACE_FEATURE) + AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE) + AC_SUBST(QUARTZ_SURFACE_FEATURE) + AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE) + AC_SUBST(WIN32_SURFACE_FEATURE) + AC_SUBST(OS2_SURFACE_FEATURE) + AC_SUBST(DIRECTFB_SURFACE_FEATURE) + AC_SUBST(FT_FONT_FEATURE) + AC_SUBST(FC_FONT_FEATURE) + AC_SUBST(WIN32_FONT_FEATURE) + AC_SUBST(WIN32_DWRITE_FONT_FEATURE) + AC_SUBST(WIN32_D2D_SURFACE_FEATURE) + AC_SUBST(QUARTZ_FONT_FEATURE) + AC_SUBST(PNG_FUNCTIONS_FEATURE) + AC_SUBST(QT_SURFACE_FEATURE) + AC_SUBST(TEE_SURFACE_FEATURE) + + MOZ_CAIRO_OSLIBS='${CAIRO_FT_OSLIBS}' + + if test "$MOZ_X11"; then + MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender" + fi + + CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h +else + PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION) + MOZ_CAIRO_CFLAGS="$CAIRO_CFLAGS" + MOZ_CAIRO_LIBS="$CAIRO_LIBS" + PKG_CHECK_MODULES(CAIRO_TEE, cairo-tee >= $CAIRO_VERSION) + if test "$MOZ_X11"; then + PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION) + MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS" + MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_LIBS" + MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS" + fi +fi + +case "$MOZ_WIDGET_TOOLKIT" in +android|gonk) + TK_CFLAGS="$MOZ_CAIRO_CFLAGS $MOZ_PIXMAN_CFLAGS" + TK_LIBS="$MOZ_CAIRO_LIBS $MOZ_PIXMAN_LIBS" + ;; +esac + +AC_SUBST(MOZ_TREE_CAIRO) +AC_SUBST_LIST(MOZ_CAIRO_CFLAGS) +AC_SUBST_LIST(MOZ_CAIRO_LIBS) +AC_SUBST_LIST(MOZ_CAIRO_OSLIBS) +AC_SUBST(MOZ_TREE_PIXMAN) + +dnl ======================================================== +dnl Skia +dnl ======================================================== +if test "$MOZ_ENABLE_SKIA"; then + SKIA_INCLUDES="/gfx/skia /gfx/skia/skia/include/config /gfx/skia/skia/include/core" + AC_DEFINE(MOZ_ENABLE_SKIA) + AC_DEFINE(USE_SKIA) + if test "${MOZ_WIDGET_TOOLKIT}" = "android" -o x"$MOZ_WIDGET_TOOLKIT" = x"gonk"; then + AC_DEFINE(SK_BUILD_FOR_ANDROID_NDK) + fi + + if test "${CPU_ARCH}" != "ppc" -a "${CPU_ARCH}" != "ppc64" -a "${CPU_ARCH}" != "sparc" -a -z "$MOZ_DISABLE_SKIA_GPU" ; then + SKIA_INCLUDES="$SKIA_INCLUDES /gfx/skia/skia/include/gpu /gfx/skia/skia/include/utils" + MOZ_ENABLE_SKIA_GPU=1 + AC_DEFINE(USE_SKIA_GPU) + AC_SUBST(MOZ_ENABLE_SKIA_GPU) + fi +fi +AC_SUBST(MOZ_ENABLE_SKIA) +AC_SUBST_LIST(SKIA_INCLUDES) + +dnl ======================================================== +dnl disable xul +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(xul, +[ --disable-xul Disable XUL], + MOZ_XUL= ) +if test "$MOZ_XUL"; then + AC_DEFINE(MOZ_XUL) +else + dnl remove extensions that require XUL + MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/irc//' -e 's/tasks//'` +fi + +AC_SUBST(MOZ_XUL) + +dnl ======================================================== +dnl disable profile locking +dnl do no use this in applications that can have more than +dnl one process accessing the profile directory. +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(profilelocking, +[ --disable-profilelocking + Disable profile locking], + MOZ_PROFILELOCKING=, + MOZ_PROFILELOCKING=1 ) +if test "$MOZ_PROFILELOCKING"; then + AC_DEFINE(MOZ_PROFILELOCKING) +fi + +dnl ======================================================== +dnl necko configuration options +dnl ======================================================== + +dnl +dnl option to disable various necko protocols +dnl +MOZ_ARG_ENABLE_STRING(necko-protocols, +[ --enable-necko-protocols[={http,ftp,default,all,none}] + Enable/disable specific protocol handlers], +[ for option in `echo $enableval | sed 's/,/ /g'`; do + if test "$option" = "yes" -o "$option" = "all"; then + NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT" + elif test "$option" = "no" -o "$option" = "none"; then + NECKO_PROTOCOLS="" + elif test "$option" = "default"; then + NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT" + elif test `echo "$option" | grep -c \^-` != 0; then + option=`echo $option | sed 's/^-//'` + NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"` + else + NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option" + fi +done], + NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT") +AC_SUBST_SET(NECKO_PROTOCOLS) +for p in $NECKO_PROTOCOLS; do + AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p) + _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_PROTOCOL_$p" +done + +dnl +dnl option to disable necko's wifi scanner +dnl + +case "$OS_TARGET" in + Android) + if test -n "$gonkdir"; then + NECKO_WIFI=1 + fi + ;; + Darwin) + if test -z "$MOZ_IOS"; then + NECKO_WIFI=1 + fi + ;; + DragonFly|FreeBSD|SunOS|WINNT) + NECKO_WIFI=1 + ;; + Linux) + NECKO_WIFI=1 + NECKO_WIFI_DBUS=1 + ;; +esac + +MOZ_ARG_DISABLE_BOOL(necko-wifi, +[ --disable-necko-wifi Disable necko wifi scanner], + NECKO_WIFI=, + NECKO_WIFI=1) + +if test "$NECKO_WIFI"; then + if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then + AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi]) + fi + AC_DEFINE(NECKO_WIFI) + _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI" +fi +AC_SUBST(NECKO_WIFI) +AC_SUBST(NECKO_WIFI_DBUS) + +dnl +dnl option to disable cookies +dnl +MOZ_ARG_DISABLE_BOOL(cookies, +[ --disable-cookies Disable cookie support], + NECKO_COOKIES=, + NECKO_COOKIES=1) +AC_SUBST(NECKO_COOKIES) +if test "$NECKO_COOKIES"; then + AC_DEFINE(NECKO_COOKIES) + _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES" +fi + +dnl +dnl Always build Marionette if not Android or B2G +dnl +if test "$OS_TARGET" != Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then + AC_DEFINE(ENABLE_MARIONETTE) +fi +AC_SUBST(ENABLE_MARIONETTE) +if test "$ENABLE_MARIONETTE"; then + AC_DEFINE(ENABLE_MARIONETTE) +fi + +dnl +dnl Build jsctypes on the platforms we can, unless it's explicitly disabled. +dnl +MOZ_ARG_DISABLE_BOOL(ctypes, +[ --disable-ctypes Disable js-ctypes], + BUILD_CTYPES=, + BUILD_CTYPES=1) +AC_SUBST(BUILD_CTYPES) +if test "$BUILD_CTYPES"; then + AC_DEFINE(BUILD_CTYPES) +fi + +dnl Build Places if required +if test "$MOZ_PLACES"; then + AC_DEFINE(MOZ_PLACES) +fi + +dnl Build SocialAPI if required +if test "$MOZ_SOCIAL"; then + AC_DEFINE(MOZ_SOCIAL) +fi + +dnl Build Common JS modules provided by services. +AC_SUBST(MOZ_SERVICES_COMMON) +if test -n "$MOZ_SERVICES_COMMON"; then + AC_DEFINE(MOZ_SERVICES_COMMON) +fi + +dnl Build Services crypto component (used by Sync) +AC_SUBST(MOZ_SERVICES_CRYPTO) +if test -n "$MOZ_SERVICES_CRYPTO"; then + AC_DEFINE(MOZ_SERVICES_CRYPTO) +fi + +dnl Build Firefox Health Reporter Service +AC_SUBST(MOZ_SERVICES_HEALTHREPORT) +if test -n "$MOZ_SERVICES_HEALTHREPORT"; then + AC_DEFINE(MOZ_SERVICES_HEALTHREPORT) +fi + +dnl Build Notifications if required +AC_SUBST(MOZ_SERVICES_NOTIFICATIONS) +if test -n "$MOZ_SERVICES_NOTIFICATIONS"; then + AC_DEFINE(MOZ_SERVICES_NOTIFICATIONS) +fi + +dnl Build Sync Services if required +AC_SUBST(MOZ_SERVICES_SYNC) +if test -n "$MOZ_SERVICES_SYNC"; then + AC_DEFINE(MOZ_SERVICES_SYNC) +fi + +dnl Build Services/CloudSync if required +AC_SUBST(MOZ_SERVICES_CLOUDSYNC) +if test -n "$MOZ_SERVICES_CLOUDSYNC"; then + AC_DEFINE(MOZ_SERVICES_CLOUDSYNC) +fi + +dnl Build second screen and casting features for external devices if required +AC_SUBST(MOZ_DEVICES) +if test -n "$MOZ_DEVICES"; then + AC_DEFINE(MOZ_DEVICES) +fi + +dnl ======================================================== +if test "$MOZ_DEBUG" -o "$MOZ_DMD"; then + MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS= +fi + +dnl ======================================================== +dnl = +dnl = Maintainer debug option (no --enable equivalent) +dnl = +dnl ======================================================== + +AC_SUBST(AR) +AC_SUBST(AR_FLAGS) +AC_SUBST(AR_LIST) +AC_SUBST(AR_EXTRACT) +AC_SUBST(AR_DELETE) +AC_SUBST(AS) +AC_SUBST(ASFLAGS) +AC_SUBST(AS_DASH_C_FLAG) +AC_SUBST(LD) +AC_SUBST(RC) +AC_SUBST(RCFLAGS) +AC_SUBST(MC) +AC_SUBST(WINDRES) +AC_SUBST(IMPLIB) +AC_SUBST(FILTER) +AC_SUBST(BIN_FLAGS) +AC_SUBST(MOZ_WIDGET_TOOLKIT) +AC_SUBST(MOZ_UPDATE_XTERM) +AC_SUBST(MOZ_AUTH_EXTENSION) +AC_SUBST(MOZ_PREF_EXTENSIONS) +AC_SUBST(MOZ_DEBUG) +AC_SUBST(MOZ_DEBUG_SYMBOLS) +AC_SUBST(MOZ_DEBUG_LDFLAGS) +AC_SUBST(WARNINGS_AS_ERRORS) +AC_SUBST_SET(MOZ_EXTENSIONS) +AC_SUBST(MOZ_ENABLE_PROFILER_SPS) +AC_SUBST(MOZ_JPROF) +AC_SUBST(MOZ_INSTRUMENTS) +AC_SUBST(MOZ_CALLGRIND) +AC_SUBST(MOZ_VTUNE) +AC_SUBST(MOZ_PROFILING) +AC_SUBST(LIBICONV) +AC_SUBST(MOZ_PLACES) +AC_SUBST(MOZ_SOCIAL) +AC_SUBST(MOZ_TOOLKIT_SEARCH) +AC_SUBST(MOZ_FEEDS) +AC_SUBST(NS_PRINTING) +AC_SUBST(MOZ_HELP_VIEWER) +AC_SUBST(TOOLCHAIN_PREFIX) + +AC_SUBST(JAVA) +AC_SUBST(JAVAC) +AC_SUBST(JAVAH) +AC_SUBST(JAR) +AC_SUBST(JARSIGNER) +AC_SUBST(KEYTOOL) + +AC_SUBST(MOZ_PROFILELOCKING) + +AC_SUBST(ENABLE_TESTS) +AC_SUBST(MOZ_UNIVERSALCHARDET) +AC_SUBST(ACCESSIBILITY) +AC_SUBST(MOZ_SPELLCHECK) +AC_SUBST(MOZ_ANDROID_APZ) +AC_SUBST(MOZ_ANDROID_ANR_REPORTER) +AC_SUBST(MOZ_CRASHREPORTER) +AC_SUBST(MOZ_CRASHREPORTER_INJECTOR) +AC_SUBST(MOZ_CRASHREPORTER_UPLOAD_FULL_SYMBOLS) +AC_SUBST(MOZ_MAINTENANCE_SERVICE) +AC_SUBST(MOZ_STUB_INSTALLER) +AC_SUBST(MOZ_VERIFY_MAR_SIGNATURE) +AC_SUBST(MOZ_ENABLE_SIGNMAR) +AC_SUBST(MOZ_UPDATER) + +AC_SUBST(MOZ_ANGLE_RENDERER) +AC_SUBST(MOZ_D3D_CPU_SUFFIX) +AC_SUBST(MOZ_HAS_WINSDK_WITH_D3D) +AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL) +AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL_PATH) +AC_SUBST(MOZ_DIRECTX_SDK_PATH) +AC_SUBST(MOZ_D3DCOMPILER_XP_DLL) +AC_SUBST(MOZ_D3DCOMPILER_XP_CAB) + +AC_SUBST(MOZ_ANDROID_HISTORY) +AC_SUBST(MOZ_WEBSMS_BACKEND) +AC_SUBST(MOZ_ANDROID_BEAM) +AC_SUBST(MOZ_LOCALE_SWITCHER) +AC_SUBST(MOZ_DISABLE_GECKOVIEW) +AC_SUBST(MOZ_ANDROID_GCM) +AC_SUBST(MOZ_ANDROID_GECKOLIBS_AAR) +AC_SUBST(MOZ_ANDROID_SEARCH_ACTIVITY) +AC_SUBST(MOZ_ANDROID_PACKAGE_INSTALL_BOUNCER) +AC_SUBST(MOZ_ANDROID_MLS_STUMBLER) +AC_SUBST(MOZ_ANDROID_DOWNLOADS_INTEGRATION) +AC_SUBST(MOZ_ANDROID_APPLICATION_CLASS) +AC_SUBST(MOZ_ANDROID_BROWSER_INTENT_CLASS) +AC_SUBST(MOZ_ANDROID_SEARCH_INTENT_CLASS) +AC_SUBST(MOZ_ANDROID_DOWNLOAD_CONTENT_SERVICE) +AC_SUBST(MOZ_ANDROID_EXCLUDE_FONTS) +AC_SUBST(MOZ_EXCLUDE_HYPHENATION_DICTIONARIES) +AC_SUBST(MOZ_INSTALL_TRACKING) +AC_SUBST(MOZ_SWITCHBOARD) +AC_SUBST(ENABLE_STRIP) +AC_SUBST(PKG_SKIP_STRIP) +AC_SUBST(STRIP_FLAGS) +AC_SUBST(USE_ELF_HACK) +AC_SUBST(INCREMENTAL_LINKER) +AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS) +AC_SUBST(MOZ_COMPONENT_NSPR_LIBS) + +AC_SUBST(MOZ_FIX_LINK_PATHS) + +AC_SUBST(USE_DEPENDENT_LIBS) + +AC_SUBST(MOZ_BUILD_ROOT) + +AC_SUBST(MOZ_POST_PROGRAM_COMMAND) +AC_SUBST(MOZ_LINKER_EXTRACT) + +AC_SUBST(MOZ_ADDON_SIGNING) +AC_SUBST(MOZ_REQUIRE_SIGNING) + +if test -n "$MOZ_BINARY_EXTENSIONS"; then + AC_DEFINE(MOZ_BINARY_EXTENSIONS) +fi + +AC_SUBST(MOZ_JSDOWNLOADS) +if test -n "$MOZ_JSDOWNLOADS"; then + AC_DEFINE(MOZ_JSDOWNLOADS) +fi + +dnl ======================================================== +dnl = Mac bundle name prefix +dnl ======================================================== +MOZ_ARG_WITH_STRING(macbundlename-prefix, +[ --with-macbundlename-prefix=prefix + Prefix for MOZ_MACBUNDLE_NAME], +[ MOZ_MACBUNDLE_NAME_PREFIX="$withval"]) + +MOZ_MACBUNDLE_NAME=`echo $MOZ_APP_DISPLAYNAME | tr -d ' '` +if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then + MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}" +fi + +if test "$MOZ_DEBUG"; then + MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}Debug.app +else + MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app +fi +AC_SUBST(MOZ_MACBUNDLE_NAME) + +dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME) +MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr '[A-Z]' '[a-z]'` +MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID} +if test "$MOZ_DEBUG"; then + MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug +fi + +AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID) +AC_SUBST(MOZ_MACBUNDLE_ID) + +dnl ======================================================== +dnl = Child Process Name for IPC +dnl ======================================================== +if test "$MOZ_WIDGET_TOOLKIT" != "android"; then + MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}" +else + # We want to let Android unpack the file at install time, but it only does + # so if the file is named libsomething.so. The lib/ path is also required + # because the unpacked file will be under the lib/ subdirectory and will + # need to be executed from that path. + MOZ_CHILD_PROCESS_NAME="libplugin-container.so" + MOZ_CHILD_PROCESS_NAME_PIE="libplugin-container-pie.so" + AC_SUBST(MOZ_CHILD_PROCESS_NAME_PIE) +fi +MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/" + +AC_SUBST(MOZ_CHILD_PROCESS_NAME) +AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE) + +# The following variables are available to branding and application +# configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh): +# - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also +# impacts profile location and user-visible fields. +# - MOZ_APP_BASENAME: Typically stays consistent for multiple branded +# versions of a given application (e.g. Aurora and Firefox both use +# "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used +# for application.ini's "Name" field, which controls profile location in +# the absence of a "Profile" field (see below), and various system +# integration hooks (Unix remoting, Windows MessageWindow name, etc.) +# - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties, +# Mac Bundle name, Updater, Installer), it is typically used for nightly +# builds (e.g. Aurora for Firefox). +# - MOZ_APP_VERSION: Defines the application version number. +# - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used +# in the "About" window. If not set, defaults to MOZ_APP_VERSION. +# - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set, +# defaults to a lowercase form of MOZ_APP_BASENAME. +# - MOZ_APP_REMOTINGNAME: Used for the internal program name, which affects +# profile name and remoting. If not set, defaults to MOZ_APP_NAME. +# - MOZ_APP_PROFILE: When set, used for application.ini's +# "Profile" field, which controls profile location. +# - MOZ_APP_ID: When set, used for application.ini's "ID" field, and +# crash reporter server url. +# - MOZ_APP_ANDROID_VERSION_CODE: On Android, "android:versionCode" for +# the main application is set to the value of this variable. If not +# set, it falls back to a Mozilla-specific value derived from the +# build ID. +# - MOZ_ANDROID_SHARED_ID: On Android, "android:sharedUserId" for all Android +# - packages produced. +# - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator. + +if test -z "$MOZ_APP_NAME"; then + MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z` +fi + +if test -z "$MOZ_APP_REMOTINGNAME"; then + MOZ_APP_REMOTINGNAME=$MOZ_APP_NAME +fi + +if test -z "$MOZ_APP_VERSION_DISPLAY"; then + MOZ_APP_VERSION_DISPLAY=$MOZ_APP_VERSION +fi + +if test -z "$ANDROID_PACKAGE_NAME" ; then + ANDROID_PACKAGE_NAME="org.mozilla.$MOZ_APP_NAME" +fi + +# Mozilla released Firefox for Android {Release,Beta} and {Aurora,Nightly} to +# the public with specific common shared IDs and we need to keep them +# consistent forever. The specific common values are set by per-channel +# branding; all other channels use a generic sharedID, set below. +if test -z "$MOZ_ANDROID_SHARED_ID" ; then + MOZ_ANDROID_SHARED_ID="${ANDROID_PACKAGE_NAME}.sharedID" +fi + +# For extensions and langpacks, we require a max version that is compatible +# across security releases. MOZ_APP_MAXVERSION is our method for doing that. +# 24.0a1 and 24.0a2 aren't affected +# 24.0 becomes 24.* +# 24.1.1 becomes 24.* +IS_ALPHA=`echo $MOZ_APP_VERSION | grep a` +if test -z "$IS_ALPHA"; then + changequote(,) + if test "$(basename $MOZ_BUILD_APP)" = "suite"; then + MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\.[0-9]*\).*|\1|"`.* + else + MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.* + fi + changequote([,]) +else + MOZ_APP_MAXVERSION=$MOZ_APP_VERSION +fi + +MOZ_B2G_VERSION=${MOZ_B2G_VERSION:-"1.0.0"} +AC_DEFINE_UNQUOTED(MOZ_B2G_VERSION,"$MOZ_B2G_VERSION") +AC_DEFINE_UNQUOTED(MOZ_B2G_OS_NAME,"$MOZ_B2G_OS_NAME") + +AC_SUBST(MOZ_APP_NAME) +AC_SUBST(MOZ_APP_REMOTINGNAME) +AC_SUBST(MOZ_APP_DISPLAYNAME) +AC_SUBST(MOZ_APP_BASENAME) +AC_SUBST(MOZ_APP_VENDOR) +AC_SUBST(MOZ_APP_PROFILE) +AC_SUBST(MOZ_APP_ID) +AC_SUBST(MOZ_APP_ANDROID_VERSION_CODE) +AC_SUBST(MOZ_ANDROID_SHARED_ID) +AC_SUBST(MAR_CHANNEL_ID) +AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS) +AC_SUBST(MOZ_PROFILE_MIGRATOR) +AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME") +AC_SUBST(MOZ_APP_UA_NAME) +AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION") +AC_SUBST(MOZ_APP_VERSION) +AC_SUBST(MOZ_APP_VERSION_DISPLAY) +AC_SUBST(MOZ_APP_MAXVERSION) +AC_DEFINE_UNQUOTED(FIREFOX_VERSION,$FIREFOX_VERSION) +AC_SUBST(FIREFOX_VERSION) +AC_SUBST(MOZ_UA_OS_AGNOSTIC) +if test -n "$MOZ_UA_OS_AGNOSTIC"; then + AC_DEFINE(MOZ_UA_OS_AGNOSTIC) +fi + +AC_SUBST(MOZ_APP_STATIC_INI) + +AC_SUBST(MOZ_PKG_SPECIAL) +AC_SUBST(MOZ_SIMPLE_PACKAGE_NAME) + +AC_SUBST(MOZILLA_OFFICIAL) +if test "$MOZILLA_OFFICIAL"; then + AC_DEFINE(MOZILLA_OFFICIAL) + # Build revisions should always be present in official builds + MOZ_INCLUDE_SOURCE_INFO=1 +fi + +# External builds (specifically Ubuntu) may drop the hg repo information, so we allow to +# explicitly set the repository and changeset information in. +AC_SUBST(MOZ_SOURCE_REPO) +AC_SUBST(MOZ_SOURCE_CHANGESET) +AC_SUBST(MOZ_INCLUDE_SOURCE_INFO) + +if test "$MOZ_TELEMETRY_REPORTING"; then + AC_DEFINE(MOZ_TELEMETRY_REPORTING) + + # Enable Telemetry by default for nightly and aurora channels + if test -z "$RELEASE_BUILD"; then + AC_DEFINE(MOZ_TELEMETRY_ON_BY_DEFAULT) + fi +fi + +dnl If we have any service that uploads data (and requires data submission +dnl policy alert), set MOZ_DATA_REPORTING. +dnl We need SUBST for build system and DEFINE for xul preprocessor. +if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"; then + MOZ_DATA_REPORTING=1 + AC_DEFINE(MOZ_DATA_REPORTING) + AC_SUBST(MOZ_DATA_REPORTING) +fi + +dnl win32 options +AC_SUBST(WIN32_REDIST_DIR) +AC_SUBST(MAKENSISU) + +dnl Echo the CFLAGS to remove extra whitespace. +CFLAGS=`echo \ + $_WARNINGS_CFLAGS \ + $CFLAGS` + +CXXFLAGS=`echo \ + $_WARNINGS_CXXFLAGS \ + $CXXFLAGS` + +COMPILE_CFLAGS=`echo \ + $_DEFINES_CFLAGS \ + $COMPILE_CFLAGS` + +COMPILE_CXXFLAGS=`echo \ + $_DEFINES_CXXFLAGS \ + $COMPILE_CXXFLAGS` + +HOST_CFLAGS=`echo \ + $HOST_CFLAGS` + +HOST_CXXFLAGS=`echo \ + $HOST_CXXFLAGS` + +AC_SUBST(_DEPEND_CFLAGS) +AC_SUBST(MOZ_NATIVE_JPEG) +AC_SUBST(MOZ_NATIVE_PNG) +AC_SUBST(MOZ_NATIVE_BZ2) + +AC_SUBST_LIST(MOZ_JPEG_CFLAGS) +AC_SUBST_LIST(MOZ_JPEG_LIBS) +AC_SUBST_LIST(MOZ_BZ2_CFLAGS) +AC_SUBST_LIST(MOZ_BZ2_LIBS) +AC_SUBST_LIST(MOZ_PNG_CFLAGS) +AC_SUBST_LIST(MOZ_PNG_LIBS) + +if test "$MOZ_WIDGET_TOOLKIT" = gonk -a -n "$MOZ_NUWA_PROCESS"; then + export MOZ_NUWA_PROCESS + AC_DEFINE(MOZ_NUWA_PROCESS) +fi +AC_SUBST(MOZ_NUWA_PROCESS) +if test "$MOZ_WIDGET_TOOLKIT" = gonk -a -n "$MOZ_B2G_LOADER"; then + if test -z "$MOZ_NUWA_PROCESS"; then + AC_MSG_ERROR([B2G loader works with Nuwa]); + fi + export MOZ_B2G_LOADER + AC_DEFINE(MOZ_B2G_LOADER) +fi +AC_SUBST(MOZ_B2G_LOADER) + +AC_SUBST(MOZ_NATIVE_NSPR) + +AC_SUBST(MOZ_NATIVE_NSS) +AC_SUBST(NSS_DISABLE_DBM) + +HOST_CMFLAGS=-fobjc-exceptions +HOST_CMMFLAGS=-fobjc-exceptions +OS_COMPILE_CMFLAGS=-fobjc-exceptions +OS_COMPILE_CMMFLAGS=-fobjc-exceptions +if test "$MOZ_WIDGET_TOOLKIT" = uikit; then + OS_COMPILE_CMFLAGS="$OS_COMPILE_CMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch" + OS_COMPILE_CMMFLAGS="$OS_COMPILE_CMMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch" +fi +AC_SUBST(HOST_CMFLAGS) +AC_SUBST(HOST_CMMFLAGS) +AC_SUBST(OS_COMPILE_CMFLAGS) +AC_SUBST(OS_COMPILE_CMMFLAGS) + +OS_CFLAGS="$CFLAGS" +OS_CXXFLAGS="$CXXFLAGS" +OS_CPPFLAGS="$CPPFLAGS" +OS_COMPILE_CFLAGS="$COMPILE_CFLAGS" +OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS" +OS_LDFLAGS="$LDFLAGS" +OS_LIBS="$LIBS" +AC_SUBST(OS_CFLAGS) +AC_SUBST(OS_CXXFLAGS) +AC_SUBST(OS_CPPFLAGS) +AC_SUBST(OS_COMPILE_CFLAGS) +AC_SUBST(OS_COMPILE_CXXFLAGS) +AC_SUBST(OS_LDFLAGS) +AC_SUBST(OS_LIBS) +AC_SUBST(CROSS_COMPILE) +AC_SUBST(WCHAR_CFLAGS) + +AC_SUBST(HOST_CC) +AC_SUBST(HOST_CXX) +AC_SUBST(HOST_CFLAGS) +AC_SUBST(HOST_CXXFLAGS) +AC_SUBST(HOST_LDFLAGS) +AC_SUBST(HOST_OPTIMIZE_FLAGS) +AC_SUBST(HOST_AR) +AC_SUBST(HOST_AR_FLAGS) +AC_SUBST(HOST_LD) +AC_SUBST(HOST_RANLIB) +AC_SUBST(HOST_BIN_SUFFIX) +AC_SUBST(HOST_OS_ARCH) + +AC_SUBST(TARGET_CPU) +AC_SUBST(TARGET_VENDOR) +AC_SUBST(TARGET_OS) +AC_SUBST(TARGET_XPCOM_ABI) +AC_SUBST(OS_TARGET) +AC_SUBST(OS_ARCH) +AC_SUBST(OS_RELEASE) +AC_SUBST(OS_TEST) +AC_SUBST(CPU_ARCH) +AC_SUBST(INTEL_ARCHITECTURE) +AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3) +AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1) +AC_SUBST(HAVE_X86_AVX2) +AC_SUBST(GCC_USE_GNU_LD) + +AC_SUBST(MOZ_CHROME_FILE_FORMAT) + +AC_SUBST(WRAP_LDFLAGS) +AC_SUBST(MKSHLIB) +AC_SUBST(MKCSHLIB) +AC_SUBST(DSO_CFLAGS) +AC_SUBST(DSO_PIC_CFLAGS) +AC_SUBST(DSO_LDOPTS) +AC_SUBST(LIB_PREFIX) +AC_SUBST(DLL_PREFIX) +AC_SUBST(DLL_SUFFIX) +AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX") +AC_SUBST(LIB_SUFFIX) +AC_SUBST(OBJ_SUFFIX) +AC_SUBST(BIN_SUFFIX) +AC_SUBST(ASM_SUFFIX) +AC_SUBST(IMPORT_LIB_SUFFIX) +AC_SUBST(USE_N32) +AC_SUBST(CC_VERSION) +AC_SUBST(CXX_VERSION) +AC_SUBST(MSMANIFEST_TOOL) +AC_SUBST(NS_ENABLE_TSF) +AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS) +AC_SUBST(WIN32_GUI_EXE_LDFLAGS) + +AC_SUBST(MOZ_VORBIS) +AC_SUBST(MOZ_TREMOR) +AC_SUBST(MOZ_WMF) +AC_SUBST(MOZ_FFMPEG) +AC_SUBST(MOZ_FFVPX) +AC_SUBST(FFVPX_AS) +AC_SUBST_LIST(FFVPX_ASFLAGS) +AC_SUBST(MOZ_FMP4) +AC_SUBST(MOZ_EME) +AC_SUBST(MOZ_DIRECTSHOW) +AC_SUBST(MOZ_ANDROID_OMX) +AC_SUBST(MOZ_APPLEMEDIA) +AC_SUBST(MOZ_OMX_PLUGIN) +AC_SUBST(MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE) +AC_SUBST(MOZ_VPX_ERROR_CONCEALMENT) +AC_SUBST(VPX_AS) +AC_SUBST_LIST(VPX_ASFLAGS) +AC_SUBST(VPX_AS_CONVERSION) +AC_SUBST(VPX_ASM_SUFFIX) +AC_SUBST(VPX_X86_ASM) +AC_SUBST(VPX_ARM_ASM) +AC_SUBST(VPX_NEED_OBJ_INT_EXTRACT) +AC_SUBST(MOZ_INSTRUMENT_EVENT_LOOP) +AC_SUBST(MOZ_CODE_COVERAGE) +AC_SUBST(LIBJPEG_TURBO_AS) +AC_SUBST_LIST(LIBJPEG_TURBO_ASFLAGS) +AC_SUBST(MOZ_LIBAV_FFT) +AC_SUBST(LIBAV_FFT_AS) +AC_SUBST_LIST(LIBAV_FFT_ASFLAGS) +AC_SUBST(MOZ_DEVTOOLS) + +AC_SUBST(MOZ_PACKAGE_JSSHELL) +AC_SUBST(MOZ_FOLD_LIBS) +AC_SUBST(MOZ_FOLD_LIBS_FLAGS) +AC_SUBST(SOCORRO_SYMBOL_UPLOAD_TOKEN_FILE) + +AC_SUBST(MOZ_ENABLE_SZIP) +AC_SUBST(MOZ_SZIP_FLAGS) + +AC_SUBST(DMG_TOOL) + +dnl Host JavaScript runtime, if any, to use during cross compiles. +AC_SUBST(JS_BINARY) + +AC_SUBST(NSS_EXTRA_SYMBOLS_FILE) + +if test -n "$COMPILE_ENVIRONMENT"; then +AC_CHECK_FUNCS(posix_fadvise posix_fallocate) + +dnl Check for missing components +if test "$MOZ_X11"; then + if test "$WITHOUT_X11"; then + AC_MSG_ERROR([--without-x specified and MOZ_X11 still defined]) + fi + dnl ==================================================== + dnl = Check if X headers exist + dnl ==================================================== + _SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $XCFLAGS" + AC_TRY_COMPILE([ + #include + #include + #include + #include + #include + ], + [ + Display *dpy = 0; + if ((dpy = XOpenDisplay(NULL)) == NULL) { + fprintf(stderr, ": can't open %s\n", XDisplayName(NULL)); + exit(1); + } + ], [], + [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ]) + CFLAGS="$_SAVE_CFLAGS" + + if test -n "$MISSING_X"; then + AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]); + fi + +fi # MOZ_X11 + +fi # COMPILE_ENVIRONMENT + +dnl Set various defines and substitutions +dnl ======================================================== + +if test "$OS_ARCH" != "WINNT"; then + AC_DEFINE(XP_UNIX) +fi + +if test "$MOZ_DEBUG"; then + AC_DEFINE(MOZ_REFLOW_PERF) + AC_DEFINE(MOZ_REFLOW_PERF_DSP) +fi + +if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then + AC_DEFINE(MOZ_ACCESSIBILITY_ATK) + ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk` + ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'` + ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'` + ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'` + AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION) + AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION) + AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION) +fi + +if test -n "$MOZ_DEV_EDITION"; then + AC_DEFINE(MOZ_DEV_EDITION) +fi + +if test "$MOZ_DEBUG"; then + A11Y_LOG=1 +fi +case "$MOZ_UPDATE_CHANNEL" in +aurora|beta|release|esr) + ;; +*) + A11Y_LOG=1 + ;; +esac +AC_SUBST(A11Y_LOG) +if test -n "$A11Y_LOG"; then + AC_DEFINE(A11Y_LOG) +fi + +AC_SUBST(MOZILLA_VERSION) + +AC_SUBST(ac_configure_args) + +dnl Spit out some output +dnl ======================================================== + +dnl The following defines are used by xpcom +_NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES +CPP_THROW_NEW +HAVE_CPP_AMBIGUITY_RESOLVING_USING +HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR +HAVE_CPP_PARTIAL_SPECIALIZATION +HAVE_GETPAGESIZE +HAVE_ICONV +HAVE_ICONV_WITH_CONST_INPUT +HAVE_MBRTOWC +HAVE_WCRTOMB +HAVE_STATVFS64 +HAVE_STATVFS +HAVE_STATFS64 +HAVE_STATFS +HAVE_SYS_STATVFS_H +HAVE_SYS_STATFS_H +HAVE_SYS_VFS_H +HAVE_SYS_MOUNT_H +" + +dnl ======================================================== +dnl Determine options to use for running the preprocessor. +dnl ======================================================== + +if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT"; then + PREPROCESS_OPTION="-P -Fi" +else + PREPROCESS_OPTION="-E -o " +fi + +AC_SUBST(PREPROCESS_OPTION) + +dnl ======================================================== +dnl ICU Support +dnl ======================================================== + +# Internationalization is not built or exposed on Fennec. +# See Bug 1215256 + +if test "$MOZ_BUILD_APP" = "mobile/android"; then + _INTL_API=no +else + _INTL_API=yes +fi + +if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then + USE_ICU=1 +fi + +MOZ_CONFIG_ICU() + +if test -z "$JS_SHARED_LIBRARY"; then + AC_DEFINE(MOZ_STATIC_JS) +fi +AC_SUBST(JS_SHARED_LIBRARY) + +# Avoid using obsolete NSPR features +AC_DEFINE(NO_NSPR_10_SUPPORT) + +MOZ_CREATE_CONFIG_STATUS() + +if test "$COMPILE_ENVIRONMENT"; then + MOZ_SUBCONFIGURE_ICU() + MOZ_SUBCONFIGURE_FFI() + MOZ_SUBCONFIGURE_JEMALLOC() +fi + +# Run freetype configure script + +if test "$MOZ_TREE_FREETYPE"; then + export CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS -std=c99" + export CPPFLAGS="$CPPFLAGS $MOZ_DEBUG_FLAGS" + export CXXFLAGS="$CXXFLAGS $MOZ_DEBUG_FLAGS" + export LDFLAGS="$LDFLAGS $MOZ_DEBUG_LDFLAGS" + # Spaces in the *_CFLAGS and *_LIBS variables are intentionally placed + # to force freetype to use our settings rather than autodetecting + if test -n "$MOZ_NATIVE_PNG"; then + export LIBPNG_CFLAGS="$MOZ_PNG_CFLAGS " + else + export LIBPNG_CFLAGS="-I$_objdir/dist/include" + fi + export LIBPNG_LIBS="$MOZ_PNG_LIBS " + export ZLIB_CFLAGS="$MOZ_ZLIB_CFLAGS " + export ZLIB_LIBS="$MOZ_ZLIB_LIBS " + export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in" + ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes --with-zlib=yes --without-bzip2 --with-png=yes --without-harfbuzz" + + if ! test -e modules; then + mkdir modules + fi + # Only export CC, CXX and RANLIB for the subconfigure, and avoid spilling + # that further down the road. + (export CC CXX RANLIB; + AC_OUTPUT_SUBDIRS(modules/freetype2) + ) || exit 1 +fi + +if test -z "$direct_nspr_config"; then + dnl ======================================================== + dnl = Setup a nice relatively clean build environment for + dnl = sub-configures. + dnl ======================================================== + CC="$_SUBDIR_CC" + CXX="$_SUBDIR_CXX" + CFLAGS="$_SUBDIR_CFLAGS" + CPPFLAGS="$_SUBDIR_CPPFLAGS" + CXXFLAGS="$_SUBDIR_CXXFLAGS" + LDFLAGS="$_SUBDIR_LDFLAGS" + HOST_CC="$_SUBDIR_HOST_CC" + HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS" + HOST_CXXFLAGS="$_SUBDIR_HOST_CXXFLAGS" + HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS" + RC= +fi + +unset MAKEFILES +unset CONFIG_FILES + +# Run all configure scripts specified by a subconfigure +if test -n "$_subconfigure_subdir"; then + _save_srcdir="$srcdir" + srcdir="$srcdir/.." + _save_ac_configure_args="$ac_configure_args" + ac_configure_args="$_subconfigure_config_args" + AC_OUTPUT_SUBDIRS_NOW("$_subconfigure_subdir",$cache_file) + ac_configure_args="$_save_ac_configure_args" + srcdir="$_save_srcdir" +fi + +if test "$COMPILE_ENVIRONMENT"; then + +export WRAP_LDFLAGS + +dnl ======================================================== +dnl = Setup a nice relatively clean build environment for +dnl = sub-configures. +dnl ======================================================== +CC="$_SUBDIR_CC" +CXX="$_SUBDIR_CXX" +CFLAGS="$_SUBDIR_CFLAGS" +CPPFLAGS="$_SUBDIR_CPPFLAGS" +CXXFLAGS="$_SUBDIR_CXXFLAGS" +LDFLAGS="$_SUBDIR_LDFLAGS" +HOST_CC="$_SUBDIR_HOST_CC" +HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS" +HOST_CXXFLAGS="$_SUBDIR_HOST_CXXFLAGS" +HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS" +RC= + +# Run the SpiderMonkey 'configure' script. +dist=$MOZ_BUILD_ROOT/dist +ac_configure_args="$_SUBDIR_CONFIG_ARGS" + +# --with-system-nspr will have been converted into the relevant $NSPR_CFLAGS +# and $NSPR_LIBS. +ac_configure_args="`echo $ac_configure_args | sed -e 's/--with-system-nspr\S* *//'`" + +ac_configure_args="$ac_configure_args --enable-threadsafe" + +if test "$_INTL_API" = no; then + ac_configure_args="$ac_configure_args --without-intl-api" +fi + +if test "$BUILD_CTYPES"; then + # Build js-ctypes on the platforms we can. + ac_configure_args="$ac_configure_args --enable-ctypes" +fi +if test -z "$JS_SHARED_LIBRARY" ; then + ac_configure_args="$ac_configure_args --disable-shared-js" + if test -n "$MOZ_DISABLE_EXPORT_JS"; then + ac_configure_args="$ac_configure_args --disable-export-js" + fi +fi +if test -n "$NSPR_CFLAGS" -o -n "$NSPR_LIBS"; then + ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'" + ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'" +fi +ac_configure_args="$ac_configure_args --prefix=$dist" +if test "$MOZ_MEMORY"; then + ac_configure_args="$ac_configure_args --enable-jemalloc" +fi +if test -n "$ZLIB_IN_MOZGLUE"; then + MOZ_ZLIB_LIBS= +fi +export MOZ_NATIVE_ZLIB +export MOZ_ZLIB_CFLAGS +export MOZ_ZLIB_LIBS +export MOZ_APP_NAME +export MOZ_APP_REMOTINGNAME +export DONT_POPULATE_VIRTUALENV=1 +export PYTHON +export RUSTC +export MOZILLA_CENTRAL_PATH=$_topsrcdir +export STLPORT_CPPFLAGS +export STLPORT_LIBS +export JS_STANDALONE=no +export DIST +export MOZ_LINKER +export ZLIB_IN_MOZGLUE +export MOZ_MEMORY +export AR +export RANLIB +export CPP +export CC +export CXX +export LD +export ARFLAGS +export CPPFLAGS +export CFLAGS +export CXXFLAGS +export LDFLAGS +export HOST_CC +export HOST_CXX +export HOST_CFLAGS +export HOST_CXXFLAGS +export HOST_LDFLAGS + +if ! test -e js; then + mkdir js +fi + +AC_OUTPUT_SUBDIRS(js/src,$cache_file) +ac_configure_args="$_SUBDIR_CONFIG_ARGS" + +fi # COMPILE_ENVIRONMENT + +export WRITE_MOZINFO=1 +dnl we need to run config.status after js/src subconfigure because we're +dnl traversing its moz.build and we need its config.status for that. +dnl However, writing our own config.status needs to happen before +dnl subconfigures because the setup surrounding subconfigures alters +dnl many AC_SUBSTed variables. +MOZ_RUN_CONFIG_STATUS() +unset WRITE_MOZINFO