diff options
Diffstat (limited to 'old-configure.in')
-rw-r--r-- | old-configure.in | 2811 |
1 files changed, 2811 insertions, 0 deletions
diff --git a/old-configure.in b/old-configure.in new file mode 100644 index 0000000000..0ac86af0c8 --- /dev/null +++ b/old-configure.in @@ -0,0 +1,2811 @@ +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 + +dnl ======================================================== +dnl = +dnl = Don't change the following 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 ======================================================== +MOZPNG=10635 + +dnl Set the minimum version of toolkit libs used by mozilla +dnl ======================================================== +GLIB_VERSION=2.42 +GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_42 +GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_42 +CAIRO_VERSION=1.10 +GTK2_VERSION=2.18.0 +GTK3_VERSION=3.14.0 +GDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_14 +W32API_VERSION=3.14 +DBUS_VERSION=0.60 + +dnl Set various checks +dnl ======================================================== +MISSING_X= + +dnl Initialize the Pthread test variables early so they can be +dnl overridden by each platform. +dnl ======================================================== +MOZ_USE_PTHREADS= +_PTHREAD_LDFLAGS="" + +LDFLAGS="$LDFLAGS $LINKER_LDFLAGS" + +if test "$COMPILE_ENVIRONMENT"; then + MOZ_ANDROID_NDK +fi # COMPILE_ENVIRONMENT + +case "$target" in +*-android*|*-linuxandroid*) + ;; +*-linux*) + AC_PATH_PROG(OBJCOPY,objcopy) + ;; +esac + +AC_SUBST(OBJCOPY) + +dnl ======================================================== +dnl Checks for compilers. +dnl ======================================================== + +if test "$COMPILE_ENVIRONMENT"; then + +# Run some logic to figure out exe extensions (mostly for mingw's sake) +AC_EXEEXT + +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 + MOZ_PATH_PROGS(AS, $AS as, $CC) + AC_CHECK_PROGS(STRIP, strip, :) + AC_CHECK_PROGS(OTOOL, otool, :) +fi + +MOZ_TOOL_VARIABLES + +dnl ======================================================== +dnl Special win32 checks +dnl ======================================================== + +WINVER=601 + +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 + CXXFLAGS="$CXXFLAGS -TP" + AC_LANG_SAVE + AC_LANG_C + AC_TRY_COMPILE([#include <stdio.h>], + [ 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 <new.h>], + [ 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([,]) + + 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. + + _CC_SUITE=14 + MSVC_C_RUNTIME_DLL=vcruntime140.dll + MSVC_CXX_RUNTIME_DLL=msvcp140.dll + + # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146) + CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-" + + 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 -W 2>/dev/null || pwd)` + fi + + 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 -W 2>/dev/null || pwd)` + fi + + # Check linker version, except in lld builds + case "$LINKER" in + *lld*) + ;; + *) + _LD_FULL_VERSION=`"${LINKER}" -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 + ;; + esac + + INCREMENTAL_LINKER=1 + + unset _MSVC_VER_FILTER + + WRAP_STL_INCLUDES=1 + STL_FLAGS="-I${DIST}/stl_wrappers" + 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 <w32api.h>], + #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 + # 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 + + CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0" + CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0" + + AC_DEFINE_UNQUOTED(WINVER,0x$WINVER) + AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER) + # Require OS features provided by IE 8.0 (Win7) + AC_DEFINE_UNQUOTED(_WIN32_IE,0x0800) + + ;; +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_ISATTY) +fi + +fi # COMPILE_ENVIRONMENT + +AC_SUBST(GNU_CC) +AC_SUBST(GNU_CXX) + +AC_SUBST_LIST(STL_FLAGS) +AC_SUBST(WRAP_STL_INCLUDES) + +dnl ======================================================== +dnl Checks for programs. +dnl ======================================================== +if test "$COMPILE_ENVIRONMENT"; then + +AC_PATH_XTRA + +XCFLAGS="$X_CFLAGS" + +fi # COMPILE_ENVIRONMENT + +dnl ======================================================== +dnl set the defaults first +dnl ======================================================== +MOZ_USER_DIR=".mozilla" + +MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib" + +MOZ_FS_LAYOUT=unix + +dnl Configure platform-specific CPU architecture compiler options. +dnl ============================================================== +if test "$COMPILE_ENVIRONMENT"; then + MOZ_ARCH_OPTS +fi # COMPILE_ENVIRONMENT + +dnl ======================================================== +dnl Android libstdc++ +dnl ======================================================== + +MOZ_ANDROID_CPU_ARCH +if test "$COMPILE_ENVIRONMENT"; then + MOZ_ANDROID_STLPORT +fi # COMPILE_ENVIRONMENT + +dnl ======================================================== +dnl Suppress Clang Argument Warnings +dnl ======================================================== +WARNINGS_CFLAGS="$_WARNINGS_CFLAGS" +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 + +if test -n "$COMPILE_ENVIRONMENT"; then + MOZ_CONFIG_SANITIZE +fi + +dnl ======================================================== +dnl GNU specific defaults +dnl ======================================================== +if test "$GNU_CC"; then + MMX_FLAGS="-mmmx" + SSE_FLAGS="-msse" + SSE2_FLAGS="-msse2" + SSSE3_FLAGS="-mssse3" + CFLAGS="$CFLAGS -fno-strict-aliasing" + DSO_CFLAGS='' + + if test "$OS_ARCH" != "WINNT" -o -z "$CLANG_CC"; then + DSO_PIC_CFLAGS='-fPIC' + ASFLAGS="$ASFLAGS -fPIC" + fi + + 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]), + AC_MSG_RESULT([no]) + LDFLAGS=$_SAVE_LDFLAGS) + + AC_MSG_CHECKING([for -z relro option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,relro" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]), + AC_MSG_RESULT([no]) + LDFLAGS=$_SAVE_LDFLAGS) + + AC_MSG_CHECKING([for -z nocopyreloc option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,nocopyreloc" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]), + AC_MSG_RESULT([no]) + LDFLAGS=$_SAVE_LDFLAGS) + + AC_MSG_CHECKING([for -Bsymbolic-functions option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]), + AC_MSG_RESULT([no]) + LDFLAGS=$_SAVE_LDFLAGS) + + AC_MSG_CHECKING([for --build-id=sha1 option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,--build-id=sha1" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]), + 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 + ;; + + ppc*) + AC_MSG_CHECKING([whether we can enable AltiVec support]) + HAVE_ALTIVEC= + _SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -maltivec" + AC_TRY_COMPILE(,,AC_MSG_RESULT([yes]) + [HAVE_ALTIVEC=1], + AC_MSG_RESULT([no])) + CFLAGS=$_SAVE_CFLAGS + ;; + 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_ASAN$MOZ_MSAN$MOZ_UBSAN$MOZ_TSAN$FUZZING_INTERFACES"; 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 + + _DEFINES_CFLAGS="-include $_objdir/mozilla-config.h -DMOZILLA_CLIENT" + + ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS" +fi + +if test "$GNU_CXX"; then + CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing" + + _DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $_objdir/mozilla-config.h" +fi + +dnl ======================================================== +dnl = Enable DMD +dnl ======================================================== + +if test "$MOZ_DMD"; then + if test "${CPU_ARCH}" = "arm"; then + CFLAGS="$CFLAGS -funwind-tables" + CXXFLAGS="$CXXFLAGS -funwind-tables" + fi +fi + +dnl ======================================================== +dnl System overrides of the defaults for host +dnl ======================================================== +case "$host" in +*mingw*) + if test -n "$_WIN32_MSVC"; then + HOST_CFLAGS="$HOST_CFLAGS" + else + HOST_CFLAGS="$HOST_CFLAGS -mwindows" + fi + HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN -DWIN32 -D_WIN32 -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" + 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 System overrides of the defaults for target +dnl ======================================================== + +case "$target" in +*-darwin*) + MOZ_OPTIMIZE_FLAGS="-O3" + CXXFLAGS="$CXXFLAGS -stdlib=libc++" + DSO_LDOPTS='' + # 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"; + + dnl DTrace and -dead_strip don't interact well. See bug 403132. + dnl =================================================================== + if 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" + ;; + +*-android*|*-linuxandroid*) + if test "$COMPILE_ENVIRONMENT" -a -n "$MOZ_MEMORY"; then + MOZ_LINKER=1 + fi + + if test -z "$CLANG_CC"; then + MOZ_OPTIMIZE_FLAGS="-freorder-blocks -fno-reorder-functions -Os" + else + # From https://github.com/android-ndk/ndk/issues/133#issuecomment-308549264 + # -Oz is smaller than -Os on clang. + MOZ_OPTIMIZE_FLAGS="-Oz" + # Disable the outliner, which causes performance regressions, and is + # enabled on some platforms at -Oz. + if test -z "$MOZ_LTO"; then + DISABLE_OUTLINER="-mno-outline" + _SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $DISABLE_OUTLINER" + AC_TRY_COMPILE(,,[MOZ_OPTIMIZE_FLAGS="$MOZ_OPTIMIZE_FLAGS $DISABLE_OUTLINER"]) + CFLAGS="$_SAVE_CFLAGS" + else + DISABLE_OUTLINER="-Wl,-plugin-opt=-enable-machine-outliner=never" + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $MOZ_LTO_LDFLAGS $DISABLE_OUTLINER" + AC_TRY_LINK(,,[MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS $DISABLE_OUTLINER"]) + LDFLAGS="$_SAVE_LDFLAGS" + fi + fi + ;; + +*-*linux*) + if test "$GNU_CC" -o "$GNU_CXX"; then + MOZ_PGO_OPTIMIZE_FLAGS="-O3" + if test -n "$MOZ_DEBUG"; then + MOZ_OPTIMIZE_FLAGS="-Os" + else + MOZ_OPTIMIZE_FLAGS="-O2" + fi + 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 + ;; +*-mingw*) + DSO_CFLAGS= + DSO_PIC_CFLAGS= + # certain versions of cygwin's makedepend barf on the + # #include <string> vs -I./dist/include/string issue so don't use it + if test -n "$GNU_CC" -o -n "$CLANG_CC"; then + # $GNU_CC will match gcc and clang; while $CLANG_CC will match only clang + if test -z "$CLANG_CC"; then + AC_MSG_ERROR(Firefox cannot be built with mingw-gcc and requires a mingw-clang toolchain to work) + fi + + DSO_LDOPTS='-shared' + # mingw doesn't require kernel32, user32, and advapi32 explicitly + LIBS="$LIBS -luuid -lusp10 -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32" + MOZ_FIX_LINK_PATHS= + + MOZ_OPTIMIZE_FLAGS="-O2" + + WIN32_CONSOLE_EXE_LDFLAGS=-mconsole + WIN32_GUI_EXE_LDFLAGS=-mwindows + + # Silence problematic clang warnings + CXXFLAGS="$CXXFLAGS -Wno-incompatible-ms-struct" + LDFLAGS="$LDFLAGS -Wl,--no-insert-timestamp" + else + TARGET_COMPILER_ABI=msvc + STRIP='echo not_strip' + # aarch64 doesn't support subsystems below 6.02 + if test "$CPU_ARCH" = "aarch64"; then + WIN32_SUBSYSTEM_VERSION=6.02 + 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 + _DEFINES_CFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT" + _DEFINES_CXXFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT" + CFLAGS="$CFLAGS -W3 -Gy -Zc:inline" + CXXFLAGS="$CXXFLAGS -W3 -Gy -Zc:inline" + if test -z "$CLANG_CL"; then + CPPFLAGS="$CPPFLAGS -utf-8" + fi + if test "$CPU_ARCH" = "x86"; then + dnl VS2012+ defaults to -arch:SSE2. We want to target nothing + dnl more recent, so set that explicitly here unless another + dnl target arch has already been set. + changequote(,) + if test -z `echo $CFLAGS | grep -i [-/]arch:`; then + CFLAGS="$CFLAGS -arch:SSE2" + fi + if test -z `echo $CXXFLAGS | grep -i [-/]arch:`; then + CXXFLAGS="$CXXFLAGS -arch:SSE2" + fi + changequote([,]) + SSE_FLAGS="-arch:SSE" + SSE2_FLAGS="-arch:SSE2" + dnl MSVC allows the use of intrinsics without any flags + dnl and doesn't have a separate arch for SSSE3 + SSSE3_FLAGS="-arch:SSE2" + fi + dnl clang-cl requires appropriate flags to enable SSSE3 support + dnl on all architectures. + if test -n "$CLANG_CL"; then + SSSE3_FLAGS="-mssse3" + fi + dnl VS2013+ supports -Gw for better linker optimizations. + dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx + dnl Disabled on ASan because it causes false-positive ODR violations. + if test -z "$MOZ_ASAN"; then + CFLAGS="$CFLAGS -Gw" + CXXFLAGS="$CXXFLAGS -Gw" + else + # String tail merging doesn't play nice with ASan's ODR checker. + LDFLAGS="$LDFLAGS -opt:nolldtailmerge" + fi + 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" + # 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" + # We get errors about various #pragma intrinsic directives from + # clang-cl, and we don't need to hear about those. + CFLAGS="$CFLAGS -Wno-ignored-pragmas" + CXXFLAGS="$CXXFLAGS -Wno-ignored-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" + # Macros like STDMETHOD() and IFACEMETHOD() can declare + # __attribute__((nothrow)) on their respective method declarations, + # while the definitions are left without the matching attribute. + CXXFLAGS="$CXXFLAGS -Wno-microsoft-exception-spec" + # At least one MSVC header and several headers in-tree have + # unused typedefs, so turn this on. + CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef" + # jemalloc uses __declspec(allocator) as a profiler hint, + # which clang-cl doesn't understand. + CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes" + # __attribute__((unused)) really means "might be unused" and + # we use it to avoid warnings about things that are unused + # in some compilation units, but used in many others. This + # warning insists on complaining about the latter case, which + # is annoying, and rather noisy. + CXXFLAGS="$CXXFLAGS -Wno-used-but-marked-unused" + fi + # Silence VS2017 15.5+ TR1 deprecation warnings hit by older gtest versions + CXXFLAGS="$CXXFLAGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING" + LIBS="$LIBS user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib" + MOZ_DEBUG_LDFLAGS='-DEBUG' + if test "$HOST_OS_ARCH" != "WINNT"; then + # %_PDB% is a special signal to emit only the PDB basename. This + # avoids problems in Windows tools that don't like forward-slashes. + MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -PDBALTPATH:%_PDB%" + fi + # Use a higher optimization level for clang-cl, so we can come closer + # to MSVC's performance numbers (see bug 1443590). + if test -n "$CLANG_CL"; then + MOZ_OPTIMIZE_FLAGS='-O2' + else + MOZ_OPTIMIZE_FLAGS='-O1 -Oi' + fi + MOZ_FIX_LINK_PATHS= + LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE" + if test -z "$DEVELOPER_OPTIONS"; then + LDFLAGS="$LDFLAGS -RELEASE" + fi + dnl Minimum reqiurement of Gecko is VS2015 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 VS2015 + HAVE_X86_AVX2=1 + fi + AC_DEFINE(WIN32_LEAN_AND_MEAN) + dnl See http://support.microsoft.com/kb/143208 to use STL + AC_DEFINE(NOMINMAX) + BIN_SUFFIX='.exe' + MOZ_USER_DIR="Mozilla" + + 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 -n "$GNU_CC"; then + CFLAGS="$CFLAGS -mstackrealign" + CXXFLAGS="$CXXFLAGS -mstackrealign" + 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_) + ;; + aarch64-*) + if test -n "$_WIN32_MSVC"; then + DSO_LDOPTS="$DSO_LDOPTS -MACHINE:ARM64" + fi + AC_DEFINE(_ARM64_) + ;; + *) + AC_DEFINE(_CPU_ARCH_NOT_DEFINED) + ;; + esac + ;; + +*-netbsd*) + DSO_CFLAGS='' + CFLAGS="$CFLAGS -Dunix" + CXXFLAGS="$CXXFLAGS -Dunix" + if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then + DSO_PIC_CFLAGS='-fPIC -DPIC' + DSO_LDOPTS='-shared' + MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic" + else + DSO_PIC_CFLAGS='-fPIC -DPIC' + 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 + ;; + +*-openbsd*) + 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*) + MOZ_FIX_LINK_PATHS="-L${DIST}/bin" + ;; + +esac + +if test -z "$MOZ_OPTIMIZE_FLAGS"; then + MOZ_OPTIMIZE_FLAGS="-O" +fi + +AC_SUBST_LIST(MMX_FLAGS) +AC_SUBST_LIST(SSE_FLAGS) +AC_SUBST_LIST(SSE2_FLAGS) +AC_SUBST_LIST(SSSE3_FLAGS) + +AC_SUBST(MOZ_LINKER) +if test -n "$MOZ_LINKER"; then + AC_DEFINE(MOZ_LINKER) + MOZ_LINKER_EXTRACT=1 + AC_CHECK_PROGS(XZ, xz) +fi + +if test -z "$COMPILE_ENVIRONMENT"; then + SKIP_COMPILER_CHECKS=1 + SKIP_LIBRARY_CHECKS=1 + MOZ_DEBUGGING_OPTS +else + MOZ_COMPILER_OPTS +fi # COMPILE_ENVIRONMENT + +if test -z "$SKIP_COMPILER_CHECKS"; then +dnl Checks for typedefs, structures, and compiler characteristics. +dnl ======================================================== +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 + +case "${OS_TARGET}" in +Darwin) + ;; +*) + STL_FLAGS="-I${DIST}/stl_wrappers" + WRAP_STL_INCLUDES=1 + ;; +esac + +if test "$MOZ_BUILD_APP" = "tools/crashreporter"; then + WRAP_STL_INCLUDES= +fi + +dnl Checks for header files. +dnl ======================================================== +AC_HEADER_DIRENT +case "$target_os" in +bitrig*|dragonfly*|freebsd*|openbsd*) +# for stuff like -lXshm + CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}" + ;; +esac + +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 <sys/types.h> + #endif + #include <netinet/in.h> + 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 <sys/types.h> + #endif + #include <netinet/in.h> + 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 <sys/types.h> + #endif + #include <sys/socket.h> + 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 + +dnl Checks for libraries. +dnl ======================================================== +AC_CHECK_LIB(c_r, gethostbyname_r) + +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 + AC_CHECK_LIB(C, demangle) +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 -n "$MOZ_X11"; then + AC_DEFINE_UNQUOTED(FUNCPROTO,15) + _SAVE_LDFLAGS="$LDFLAGS" + _SAVE_LIBS="$LIBS" + LDFLAGS="$XLDFLAGS $LDFLAGS" + AC_CHECK_LIB(X11, XDrawLines, [XLIBS="-lX11 $XLIBS"], + [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) + ]) + + dnl ======================================================== + dnl = Check for xcb + dnl ======================================================== + AC_CHECK_LIB(xcb, xcb_connect, [XLIBS="-lxcb $XLIBS"], + [MISSING_X="$MISSING_X -lxcb"], $XLIBS) + AC_CHECK_LIB(xcb-shm, xcb_shm_query_version, [XLIBS="-lxcb-shm $XLIBS"], + [MISSING_X="$MISSING_X -lxcb-shm"], $XLIBS) + AC_CHECK_LIB(X11-xcb, XGetXCBConnection, [XLIBS="-lX11-xcb $XLIBS"], + [MISSING_X="$MISSING_X -lX11-xcb"], $XLIBS) + + LDFLAGS="$_SAVE_LDFLAGS" + LIBS="$_SAVE_LIBS" +fi # $MOZ_X11 + +AC_SUBST_LIST(XCFLAGS) +AC_SUBST_LIST(XLDFLAGS) +AC_SUBST_LIST(XLIBS) +AC_SUBST_LIST(XEXT_LIBS) +AC_SUBST_LIST(XT_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 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) + ;; + + esac + LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}" + AC_SUBST(MOZ_USE_PTHREADS) + MOZ_CHECK_HEADERS(pthread.h) +fi + + +dnl Checks for library functions. +dnl ======================================================== +AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize gmtime_r localtime_r arc4random arc4random_buf mallinfo gettid lchown setpriority strerror syscall lutimes) + +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" + _SAVE_CFLAGS="$CFLAGS" + LIBS="$LIBS $libs" + CFLAGS="$CFLAGS $DSO_PIC_CFLAGS" +dnl clock_gettime is available on OSX since 10.12, so depending on MACOSX_DEPLOYMENT_TARGET, +dnl we should or not be able to use it. To detect if we can, we need to make the +dnl availability attribute strict, so that compilation fails when the target is < 10.12. + AC_TRY_LINK([#define availability(os, ...) availability(os, strict, __VA_ARGS) + #include <time.h>], + [ struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); ], + ac_cv_clock_monotonic=$libs + LIBS="$_SAVE_LIBS" + CFLAGS="$_SAVE_CFLAGS" + break, + ac_cv_clock_monotonic=no) + LIBS="$_SAVE_LIBS" + CFLAGS="$_SAVE_CFLAGS" + 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 Turn on warnings-as-errors to prevent implicit declaration of +dnl pthread_cond_timedwait_monotonic_np, which can cause this test to +dnl inadvertently pass even if the function does not really exist. +_SAVE_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $WARNINGS_AS_ERRORS" +AC_CACHE_CHECK(for pthread_cond_timedwait_monotonic_np, + ac_cv_pthread_cond_timedwait_monotonic_np, + AC_TRY_LINK([#include <pthread.h>], + [pthread_cond_timedwait_monotonic_np(0, 0, 0);], + ac_cv_pthread_cond_timewait_monotonic_np=yes, + ac_cv_pthread_cond_timewait_monotonic_np=no)) +if test "$ac_cv_pthread_cond_timewait_monotonic_np" != "no"; then + AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC) +fi +CFLAGS=$_SAVE_CFLAGS + +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 <sys/types.h> + #include <netinet/in.h> + #include <arpa/nameser.h> + #include <resolv.h> + ], + [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_C + +dnl ********************** +dnl *** va_copy checks *** +AC_CACHE_CHECK([for an implementation of va_copy()], + ac_cv_va_copy, + [AC_TRY_COMPILE([#include <stdarg.h> + #include <stdlib.h> + 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 <stdarg.h> + #include <stdlib.h> + 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 + +# 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 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. + +AC_HAVE_FUNCS(localeconv) + +fi # ! SKIP_COMPILER_CHECKS + +if test -n "${COMPILE_ENVIRONMENT}"; then + MOZ_CHECK_ALLOCATOR +fi + +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, [<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) + +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_SYSTEM_LIBEVENT=1, + LIBEVENT_DIR=/usr) +fi +if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then + MOZ_SYSTEM_LIBEVENT= +elif test -z "$MOZ_SYSTEM_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_SYSTEM_LIBEVENT=1 + MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include" + MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"], + [MOZ_SYSTEM_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=]) +fi +CFLAGS=$_SAVE_CFLAGS +LDFLAGS=$_SAVE_LDFLAGS +LIBS=$_SAVE_LIBS + +AC_SUBST(MOZ_SYSTEM_LIBEVENT) + +if test -z "$SKIP_LIBRARY_CHECKS"; then + +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_SYSTEM_PNG= +else + AC_CHECK_LIB(png, png_get_valid, [MOZ_SYSTEM_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_SYSTEM_PNG" = 1; then + AC_TRY_COMPILE([ #include <stdio.h> + #include <sys/types.h> + #include <png.h> ], + [ #if PNG_LIBPNG_VER < $MOZPNG + #error "Insufficient libpng version ($MOZPNG required)." + #endif + #ifndef PNG_UINT_31_MAX + #error "Insufficient libpng version." + #endif ], + MOZ_SYSTEM_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_SYSTEM_PNG" = 1; then + MOZ_PNG_CFLAGS="-I${PNG_DIR}/include" + MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}" +fi + +fi # SKIP_LIBRARY_CHECKS + +dnl ======================================================== +dnl = +dnl = Application +dnl = +dnl ======================================================== + +MOZ_ARG_HEADER(Application) + +ENABLE_SYSTEM_EXTENSION_DIRS=1 +MOZ_BRANDING_DIRECTORY= +MOZ_OFFICIAL_BRANDING= +MOZ_AUTH_EXTENSION=1 +MOZ_SPELLCHECK=1 +MOZ_UNIVERSALCHARDET=1 +MOZ_XUL=1 +MOZ_ZIPWRITER=1 +MOZ_NO_SMART_CARDS= +MOZ_SANDBOX=1 +MOZ_BINARY_EXTENSIONS= +MOZ_DEVTOOLS=server + +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 + +dnl ======================================================== +dnl Ensure Android SDK and build-tools versions depending on +dnl mobile target. +dnl ======================================================== + +case "$MOZ_BUILD_APP" in +mobile/android) + MOZ_ANDROID_SDK + ;; +esac + +dnl ======================================================== +dnl = +dnl = Toolkit Options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Toolkit Options) + +dnl ======================================================== +dnl = Enable the toolkit as needed = +dnl ======================================================== + +case "$MOZ_WIDGET_TOOLKIT" in + +cocoa) + LDFLAGS="$LDFLAGS -framework Cocoa" + # Use -Wl as a trick to avoid -framework and framework names from + # being separated by AC_SUBST_LIST. + TK_LIBS='-Wl,-framework,Foundation -Wl,-framework,CoreFoundation -Wl,-framework,CoreLocation -Wl,-framework,QuartzCore -Wl,-framework,Carbon -Wl,-framework,CoreAudio -Wl,-framework,CoreVideo -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit -Wl,-framework,AddressBook -Wl,-framework,OpenGL -Wl,-framework,Security -Wl,-framework,ServiceManagement -Wl,-framework,CoreServices -Wl,-framework,ApplicationServices -Wl,-framework,AppKit' + TK_CFLAGS="" + CFLAGS="$CFLAGS $TK_CFLAGS" + CXXFLAGS="$CXXFLAGS $TK_CFLAGS" + MOZ_USER_DIR="Mozilla" + MOZ_FS_LAYOUT=bundle + ;; + +uikit) + LDFLAGS="$LDFLAGS -framework UIKit" + TK_CFLAGS="" + 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 + ;; + +esac + +if test "$OS_TARGET" = Darwin; then + LDFLAGS="$LDFLAGS -lobjc" +fi + +dnl there are a lot of tests on MOZ_ENABLE_GTK below, that are more convenient +dnl to keep that way than testing against MOZ_WIDGET_TOOLKIT +case "$MOZ_WIDGET_TOOLKIT" in +gtk*) + MOZ_ENABLE_GTK=1 + ;; +esac + +if test "$COMPILE_ENVIRONMENT"; then + if test "$MOZ_WIDGET_TOOLKIT" = gtk; then + PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 gio-unix-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 + dnl GDK_VERSION_MIN_REQUIRED is not set here as GDK3 deprecated warnings + dnl are suppressed by widget/gtk/compat-gtk3/gdk/gdkversionmacros.h. + AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MAX_ALLOWED) + fi + if test "$MOZ_ENABLE_GTK"; then + AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED) + AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED) + + if test "$MOZ_X11"; then + PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 >= $GLIB_VERSION gobject-2.0 gio-unix-2.0 gdk-x11-2.0) + MOZ_GTK2_CFLAGS="-I${_topsrcdir}/widget/gtk/compat $MOZ_GTK2_CFLAGS" + fi + fi +fi # COMPILE_ENVIRONMENT + +AC_SUBST(MOZ_FS_LAYOUT) + +AC_SUBST_LIST(TK_CFLAGS) +AC_SUBST_LIST(TK_LIBS) + +dnl ======================================================== +dnl = +dnl = Components & Features +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Components and Features) + +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" +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 = libproxy support +dnl ======================================================== + +if test "$MOZ_ENABLE_GTK" +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 = dbus support +dnl ======================================================== + +if test "$MOZ_ENABLE_GTK" +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) + +AC_TRY_COMPILE([#include <linux/ethtool.h>], + [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ], + MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1) + +AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI) + +if test -n "$MOZ_WEBRTC"; then + if test -n "$MOZ_X11"; then + MOZ_WEBRTC_X11_LIBS="-lXext -lXdamage -lXfixes -lXcomposite" + fi +fi + +AC_SUBST_LIST(MOZ_WEBRTC_X11_LIBS) + +dnl ======================================================== +dnl = Apple platform decoder support +dnl ======================================================== +if test "$COMPILE_ENVIRONMENT"; then +if test -n "$MOZ_APPLEMEDIA"; then + # 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_HEADERS([CoreMedia/CoreMedia.h VideoToolbox/VideoToolbox.h], [], + [AC_MSG_ERROR([MacOS X 10.9 SDK or later is required])]) +fi +fi # COMPILE_ENVIRONMENT + +dnl ======================================================== +dnl = Handle dependent MEDIA defines +dnl ======================================================== + +MOZ_WEBM_ENCODER=1 +AC_DEFINE(MOZ_WEBM_ENCODER) +AC_SUBST(MOZ_WEBM_ENCODER) + +dnl ======================================================== +dnl NegotiateAuth +dnl ======================================================== + +MOZ_ARG_DISABLE_BOOL(negotiateauth, +[ --disable-negotiateauth Disable GSS-API negotiation ], + MOZ_AUTH_EXTENSION=, + MOZ_AUTH_EXTENSION=1 ) + +dnl ======================================================== +dnl Searching of system directories for extensions. +dnl Note: this switch is meant to be used for test builds +dnl whose behavior should not depend on what happens to be +dnl installed on the local machine. +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(system-extension-dirs, +[ --disable-system-extension-dirs + Disable searching system- and account-global + directories for extensions of any kind; use + only profile-specific extension directories], + ENABLE_SYSTEM_EXTENSION_DIRS=, + ENABLE_SYSTEM_EXTENSION_DIRS=1 ) +if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then + AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS) +fi + +dnl ======================================================== +dnl = Universalchardet +dnl ======================================================== +MOZ_ARG_DISABLE_BOOL(universalchardet, +[ --disable-universalchardet + Disable universal encoding detection], + MOZ_UNIVERSALCHARDET=, + MOZ_UNIVERSALCHARDET=1 ) + +dnl ======================================================== +dnl Gamepad support +dnl ======================================================== + +if test "$COMPILE_ENVIRONMENT" ; then + +dnl Moved gamepad platform check to moz.build, linux header check still needed here. +if test "$OS_TARGET" = "Linux"; then + 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.]) + fi +fi + +fi # COMPILE_ENVIRONMENT + + +dnl ======================================================== +dnl = Breakpad crash reporting (on by default on supported platforms) +dnl ======================================================== + +case $target in +i?86-*-mingw*|x86_64-*-mingw*|aarch64-*-mingw*) + MOZ_CRASHREPORTER=1 + ;; +i?86-apple-darwin*|x86_64-apple-darwin*|aarch64-apple-darwin*) + MOZ_CRASHREPORTER=1 + ;; +*-android*|*-linuxandroid*) + dnl Android/arm is arm-unknown-linux-androideabi, so android condition should + dnl be before Linux condition + dnl The crash reporter prevents crash stacktraces to be logged in the + dnl logs so we leave it out by default in developer builds. + if test -z "$DEVELOPER_OPTIONS"; then + MOZ_CRASHREPORTER=1 + fi + ;; +i?86-*-linux*|x86_64-*-linux*|arm-*-linux*) + if test "$MOZ_ENABLE_GTK"; then + MOZ_CRASHREPORTER=1 + fi + ;; +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" -a "$MOZ_WIDGET_TOOLKIT" != "android"; 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" && \ + 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" -a -n "$COMPILE_ENVIRONMENT"; then + MOZ_CRASHREPORTER_INJECTOR=1 + AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR) + fi + fi +fi + +dnl ======================================================== +dnl = Enable compilation of specific extension modules +dnl ======================================================== + +MOZ_ARG_ENABLE_STRING(extensions, +[ --enable-extensions Enable extensions], +[ for option in `echo $enableval | sed 's/,/ /g'`; do + if test "$option" = "yes" -o "$option" = "all"; then + AC_MSG_ERROR([--enable-extensions=$option is no longer supported.]) + elif test "$option" = "no" -o "$option" = "none"; then + MOZ_EXTENSIONS="" + elif test "$option" = "default"; then + MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT" + elif test `echo "$option" | grep -c \^-` != 0; then + option=`echo $option | sed 's/^-//'` + MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"` + else + MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option" + fi +done], + MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT") + +dnl Ensure every extension exists, to avoid mostly-inscrutable error messages +dnl when trying to build a nonexistent extension. +for extension in $MOZ_EXTENSIONS; do + if test ! -d "${srcdir}/extensions/${extension}"; then + AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.]) + fi +done + +# Avoid defining MOZ_ENABLE_CAIRO_FT on Windows platforms because +# "cairo-ft-font.c" includes <dlfcn.h>, which only exists on posix platforms +if test -n "$MOZ_TREE_FREETYPE" -a "$OS_TARGET" != WINNT; then + MOZ_ENABLE_CAIRO_FT=1 + FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1" + CAIRO_FT_CFLAGS="-I$_topsrcdir/modules/freetype2/include" + AC_SUBST_LIST(CAIRO_FT_CFLAGS) +fi + +dnl ======================================================== +dnl Updater +dnl ======================================================== + +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 + +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 = Sandboxing support +dnl ======================================================== +if test -n "$MOZ_TSAN" -o -n "$MOZ_ASAN"; then + # Bug 1182565: TSan conflicts with sandboxing on Linux. + # Bug 1287971: LSan also 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) + +case "$OS_TARGET" in +WINNT|Darwin|OpenBSD) +;; +Linux) + case $CPU_ARCH in + x86_64|x86|arm|aarch64) + ;; + # Linux sandbox is only available on x86{,_64} and arm{,64}. + *) + MOZ_SANDBOX= + ;; + esac + ;; +*) + # Only enable the sandbox by default on Linux, OpenBSD, macOS, and Windows + MOZ_SANDBOX= +;; +esac + +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 === SQLite fdatasync check === +dnl ============================== +dnl Check to see if fdatasync is available and make use of it +AC_CHECK_FUNC(fdatasync) + +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 = +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 code optimization. ON by default. +dnl ======================================================== + +# Use value from moz.configure if one is defined. Else use our computed +# value. +if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then + MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS} +fi + +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 <stdio.h>], + [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 + if test -n "$MOZ_LTO" -a -n "$CLANG_CC"; then + # When using llvm-based LTO, non numeric optimization levels are + # not supported by the linker, so force the linker to use -O2 ( + # which doesn't influence the level compilation units are actually + # compiled at). + case " $MOZ_OPTIMIZE_FLAGS " in + *\ -Os\ *|*\ -Oz\ *) + MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -O2" + ;; + esac + fi +fi +fi # COMPILE_ENVIRONMENT + +AC_SUBST_LIST(MOZ_OPTIMIZE_FLAGS) +AC_SUBST_LIST(MOZ_OPTIMIZE_LDFLAGS) +AC_SUBST_LIST(MOZ_PGO_OPTIMIZE_FLAGS) + +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_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 + +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 = Jemalloc build setup +dnl ======================================================== +if test -z "$MOZ_MEMORY"; then + 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 + 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 + *-mingw*) + export MOZ_NO_DEBUG_RTL=1 + ;; + esac +fi # MOZ_MEMORY +AC_SUBST(MOZ_GLUE_IN_PROGRAM) + +dnl ======================================================== +dnl = Enable using the clang plugin to build +dnl ======================================================== + +if test -n "$COMPILE_ENVIRONMENT"; then +MOZ_CONFIG_CLANG_PLUGIN +fi # COMPILE_ENVIRONMENT + +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 = 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 = +dnl = Misc. Options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Misc. Options) + +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") + +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 + +fi # ! SKIP_COMPILER_CHECKS + +AC_LANG_C + +if test "$COMPILE_ENVIRONMENT"; then +MOZ_EXPAND_LIBS +fi # COMPILE_ENVIRONMENT + +dnl ======================================================== +dnl = +dnl = Static Build Options +dnl = +dnl ======================================================== +MOZ_ARG_HEADER(Static build options) + +if test -z "$MOZ_SYSTEM_ZLIB"; then +if test -n "$JS_SHARED_LIBRARY" -o -n "$MOZ_LINKER" -o "$MOZ_WIDGET_TOOLKIT" = android; 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) + +if test "$USE_FC_FREETYPE"; then + if test "$COMPILE_ENVIRONMENT"; then + dnl ======================================================== + dnl = Check for freetype2 functionality + dnl ======================================================== + if test "$_HAVE_FREETYPE2" -a -z "$MOZ_TREE_FREETYPE"; 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 <ft2build.h> + #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 <fontconfig/fontconfig.h>]) + CPPFLAGS="$_SAVE_CPPFLAGS" + fi +fi + +dnl ======================================================== +dnl Check if we need the 32-bit Linux SSE2 error dialog +dnl ======================================================== + +AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR) + +dnl ======================================================== +dnl Check for pixman and cairo +dnl ======================================================== + +MOZ_TREE_CAIRO=1 +MOZ_ARG_ENABLE_BOOL(system-cairo, +[ --enable-system-cairo Obsolete: do not use this option], +AC_MSG_ERROR(--enable-system-cairo is not supported), +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 ) + +if test "$MOZ_TREE_PIXMAN"; then + AC_DEFINE(MOZ_TREE_PIXMAN) +else + PKG_CHECK_MODULES(MOZ_PIXMAN, pixman-1 >= 0.19.2) +fi + +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 + 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_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" + + if test "$COMPILE_ENVIRONMENT"; then + MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1) + 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_D3D10_LAYER) + +AC_SUBST(PS_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(QUARTZ_FONT_FEATURE) +AC_SUBST(PNG_FUNCTIONS_FEATURE) +AC_SUBST(QT_SURFACE_FEATURE) +AC_SUBST(TEE_SURFACE_FEATURE) + +if test "$MOZ_X11"; then + MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender" +fi + +CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h + +case "$MOZ_WIDGET_TOOLKIT" in +android) + 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) + +BINDGEN_SYSTEM_FLAGS="$_BINDGEN_CFLAGS $NSPR_CFLAGS $NSS_CFLAGS $MOZ_PIXMAN_CFLAGS $MOZ_CAIRO_CFLAGS" +AC_SUBST(BINDGEN_SYSTEM_FLAGS) +BINDGEN_SYSTEM_TOML_FLAGS="$BINDGEN_SYSTEM_FLAGS" +AC_SUBST_TOML_LIST(BINDGEN_SYSTEM_TOML_FLAGS) + +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 necko configuration options +dnl ======================================================== + +dnl +dnl option to disable necko's wifi scanner +dnl + +if test "$MOZ_WIDGET_TOOLKIT"; then + + case "$OS_TARGET" in + Darwin) + NECKO_WIFI=1 + ;; + DragonFly|FreeBSD|WINNT) + NECKO_WIFI=1 + ;; + Linux) + NECKO_WIFI=1 + NECKO_WIFI_DBUS=1 + ;; + esac + +fi + +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) +fi +AC_SUBST(NECKO_WIFI) +AC_SUBST(NECKO_WIFI_DBUS) + +dnl ======================================================== +dnl = +dnl = Maintainer debug option (no --enable equivalent) +dnl = +dnl ======================================================== + +AC_SUBST_LIST(ASFLAGS) +AC_SUBST(IMPLIB) +AC_SUBST(FILTER) +AC_SUBST(MOZ_AUTH_EXTENSION) +AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS) +AC_SUBST_LIST(WARNINGS_CFLAGS) +AC_SUBST_SET(MOZ_EXTENSIONS) + +AC_SUBST(MOZ_UNIVERSALCHARDET) +AC_SUBST(MOZ_SPELLCHECK) +AC_SUBST(MOZ_ANDROID_ANR_REPORTER) +AC_SUBST(MOZ_CRASHREPORTER) +AC_SUBST(MOZ_CRASHREPORTER_INJECTOR) +AC_SUBST(MOZ_STUB_INSTALLER) +AC_SUBST(MOZ_UPDATER) + +AC_SUBST(MOZ_ANDROID_APPLICATION_CLASS) +AC_SUBST(MOZ_ANDROID_BROWSER_INTENT_CLASS) +AC_SUBST(INCREMENTAL_LINKER) + +AC_SUBST_LIST(MOZ_FIX_LINK_PATHS) + +AC_SUBST(MOZ_POST_PROGRAM_COMMAND) +AC_SUBST(MOZ_LINKER_EXTRACT) + +if test -n "$MOZ_BINARY_EXTENSIONS"; then + AC_DEFINE(MOZ_BINARY_EXTENSIONS) +fi + +AC_SUBST(MOZ_REQUIRE_SIGNING) +if test "$MOZ_REQUIRE_SIGNING" = 1; then + AC_DEFINE(MOZ_REQUIRE_SIGNING) +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=$MOZ_APP_DISPLAYNAME +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) +# If the MOZ_MACBUNDLE_ID is defined in the configure.sh, use it +# Otherwise, use MOZ_APP_DISPLAYNAME +if test -z "$MOZ_MACBUNDLE_ID"; then + MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr 'A-Z' 'a-z' | tr -dc 'a-z-'` +fi +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" +fi +MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/" +MOZ_CHILD_PROCESS_BUNDLENAME="${MOZ_APP_DISPLAYNAME}CP" + +AC_SUBST(MOZ_CHILD_PROCESS_NAME) +AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE) +AC_SUBST(MOZ_CHILD_PROCESS_BUNDLENAME) + +# 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_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_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_PROFILE_MIGRATOR: When set, enables profile migrator. + +# The following environment variables used to have an effect, but don't anymore: +# - MOZ_APP_VERSION: Defines the application version number. This was replaced with +# the contents from the version.txt file in the application directory, or +# browser/config/version.txt if there isn't one. +# - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used +# in the "About" window. This was replaced with the contents from the +# version_display.txt or version.txt in the application directory, or +# browser/config/version_display.txt. + +# 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 + +AC_SUBST(MOZ_APP_DISPLAYNAME) +AC_SUBST(MOZ_APP_VENDOR) +AC_SUBST(MOZ_APP_PROFILE) +AC_SUBST(MOZ_APP_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_DEFINE_UNQUOTED(BROWSER_CHROME_URL, $BROWSER_CHROME_URL) +AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL_QUOTED, "$BROWSER_CHROME_URL") + +AC_SUBST(MOZ_APP_MAXVERSION) +AC_SUBST(MOZ_UA_OS_AGNOSTIC) +if test -n "$MOZ_UA_OS_AGNOSTIC"; then + AC_DEFINE(MOZ_UA_OS_AGNOSTIC) +fi + +AC_SUBST(MOZ_PKG_SPECIAL) +AC_SUBST(MOZ_SIMPLE_PACKAGE_NAME) + +if test "$MOZILLA_OFFICIAL"; then + # 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) + +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" || test -n "$MOZ_NORMANDY"; 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(WIN_UCRT_REDIST_DIR) + +dnl Echo the CFLAGS to remove extra whitespace. +CFLAGS=`echo \ + $_COMPILATION_CFLAGS \ + $CFLAGS` + +CXXFLAGS=`echo \ + $_WARNINGS_CXXFLAGS \ + $_COMPILATION_CXXFLAGS \ + $CXXFLAGS` + +COMPILE_CFLAGS=`echo \ + $_DEFINES_CFLAGS \ + $COMPILE_CFLAGS` + +COMPILE_CXXFLAGS=`echo \ + $_DEFINES_CXXFLAGS \ + $COMPILE_CXXFLAGS` + +HOST_CFLAGS=`echo \ + $_WARNINGS_HOST_CFLAGS \ + $_COMPILATION_HOST_CFLAGS \ + $HOST_CFLAGS` + +HOST_CXXFLAGS=`echo \ + $_WARNINGS_HOST_CXXFLAGS \ + $_COMPILATION_HOST_CXXFLAGS \ + $HOST_CXXFLAGS` + +AC_SUBST(MOZ_SYSTEM_PNG) + +AC_SUBST_LIST(MOZ_PNG_CFLAGS) +AC_SUBST_LIST(MOZ_PNG_LIBS) + +HOST_CMFLAGS="-x objective-c -fobjc-exceptions" +HOST_CMMFLAGS="-x objective-c++ -fobjc-exceptions" +OS_COMPILE_CMFLAGS="-x objective-c -fobjc-exceptions" +OS_COMPILE_CMMFLAGS="-x objective-c++ -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_LIST(OS_CFLAGS) +AC_SUBST_LIST(OS_CXXFLAGS) +AC_SUBST_LIST(OS_CPPFLAGS) +AC_SUBST_LIST(OS_COMPILE_CFLAGS) +AC_SUBST_LIST(OS_COMPILE_CXXFLAGS) +AC_SUBST_LIST(OS_LDFLAGS) +AC_SUBST(OS_LIBS) + +AC_SUBST(HOST_CC) +AC_SUBST(HOST_CXX) +AC_SUBST_LIST(HOST_CFLAGS) +AC_SUBST_LIST(HOST_CPPFLAGS) +AC_SUBST_LIST(HOST_CXXFLAGS) +AC_SUBST(HOST_LDFLAGS) +AC_SUBST_LIST(HOST_OPTIMIZE_FLAGS) +AC_SUBST(HOST_BIN_SUFFIX) + +AC_SUBST(TARGET_XPCOM_ABI) +AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3) +AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1) +AC_SUBST(HAVE_X86_AVX2) +AC_SUBST(HAVE_ALTIVEC) + +AC_SUBST_LIST(DSO_CFLAGS) +AC_SUBST_LIST(DSO_PIC_CFLAGS) +AC_SUBST(DSO_LDOPTS) +AC_SUBST(BIN_SUFFIX) +AC_SUBST(USE_N32) +AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS) +AC_SUBST(WIN32_GUI_EXE_LDFLAGS) + +AC_SUBST(MOZ_DEVTOOLS) + +AC_SUBST(MOZ_PACKAGE_JSSHELL) + +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 + dnl ==================================================== + dnl = Check if X headers exist + dnl ==================================================== + _SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $XCFLAGS" + AC_TRY_COMPILE([ + #include <stdio.h> + #include <stdlib.h> + #include <X11/Xlib.h> + #include <X11/Intrinsic.h> + #include <X11/extensions/XShm.h> + ], + [ + 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 "$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 + +AC_SUBST(MOZ_DEV_EDITION) +if test -n "$MOZ_DEV_EDITION"; then + AC_DEFINE(MOZ_DEV_EDITION) +fi + +if test "$MOZ_DEBUG" -o "$DEVELOPER_OPTIONS"; then + A11Y_LOG=1 +fi +AC_SUBST(A11Y_LOG) +if test -n "$A11Y_LOG"; then + AC_DEFINE(A11Y_LOG) +fi + +dnl Spit out some output +dnl ======================================================== + +# Avoid using obsolete NSPR features +AC_DEFINE(NO_NSPR_10_SUPPORT) + +MOZ_CREATE_CONFIG_STATUS() + +rm -fr confdefs* $ac_clean_files |