diff options
Diffstat (limited to 'old-configure.in')
-rw-r--r-- | old-configure.in | 1353 |
1 files changed, 1353 insertions, 0 deletions
diff --git a/old-configure.in b/old-configure.in new file mode 100644 index 0000000000..ada50d1aa5 --- /dev/null +++ b/old-configure.in @@ -0,0 +1,1353 @@ +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 Set the minimum version of toolkit libs used by mozilla +dnl ======================================================== +W32API_VERSION=3.14 + +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" +HOST_LDFLAGS="$HOST_LDFLAGS $HOST_LINKER_LDFLAGS" + +if test "$COMPILE_ENVIRONMENT"; then + MOZ_ANDROID_NDK +fi # COMPILE_ENVIRONMENT + +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 +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 + + AC_DEFINE(_CRT_SECURE_NO_WARNINGS) + AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS) + + MSVC_C_RUNTIME_DLL=vcruntime140.dll + if test -n "$IS_VS2019_OR_MORE" -a "$CPU_ARCH" != "x86"; then + MSVC_C_RUNTIME_1_DLL=vcruntime140_1.dll + fi + 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_C_RUNTIME_1_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 + 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 + + AC_DEFINE(_USE_MATH_DEFINES) # Otherwise Windows' math.h doesn't #define M_PI. + + 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) + +dnl ======================================================== +dnl set the defaults first +dnl ======================================================== +MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib" + +dnl Configure platform-specific CPU architecture compiler options. +dnl ============================================================== +if test "$COMPILE_ENVIRONMENT"; then + MOZ_ARCH_OPTS +fi # COMPILE_ENVIRONMENT + +if test -n "$COMPILE_ENVIRONMENT"; then + MOZ_CONFIG_SANITIZE +fi + +dnl ======================================================== +dnl GNU specific defaults +dnl ======================================================== +if test "$GNU_CC"; then + 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) + + # While sha1 is deterministic, it is slower. + if test -z "$DEVELOPER_OPTIONS"; then + build_id=sha1 + else + build_id=uuid + fi + AC_MSG_CHECKING([for --build-id=$build_id option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,--build-id=$build_id" + 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 + + 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" + + _DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $_objdir/mozilla-config.h" +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" + DSO_LDOPTS='' + + 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= + ;; + +*-android*|*-linuxandroid*) + 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_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' + 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 + # 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 -Gy -Zc:inline" + CXXFLAGS="$CXXFLAGS -Gy -Zc:inline" + 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([,]) + 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 + # Silence VS2017 15.5+ TR1 deprecation warnings hit by older gtest versions + CXXFLAGS="$CXXFLAGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING" + 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 + MOZ_OPTIMIZE_FLAGS='-O2' + MOZ_FIX_LINK_PATHS= + LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE" + fi + AC_DEFINE(WIN32_LEAN_AND_MEAN) + dnl See http://support.microsoft.com/kb/143208 to use STL + AC_DEFINE(NOMINMAX) + BIN_SUFFIX='.exe' + + 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*) + 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_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 + +CFLAGS="$CFLAGS $DSO_PIC_CFLAGS" +CXXFLAGS="$CXXFLAGS $DSO_PIC_CFLAGS" + +if test -z "$MOZ_OPTIMIZE_FLAGS"; then + MOZ_OPTIMIZE_FLAGS="-O" +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 + +dnl Checks for header files. +dnl ======================================================== +AC_HEADER_DIRENT + +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) +CFLAGS="$_SAVE_CFLAGS" + +if test ! "$GNU_CXX"; then + AC_CHECK_LIB(C, demangle) +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*) + 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 ======================================================== + +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" +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" + 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 + +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 ======================================================== +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_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 +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) + ;; + esac +fi + +if test -n "$MOZ_LINKER"; then +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 + +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) +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 = Application +dnl = +dnl ======================================================== + +MOZ_BRANDING_DIRECTORY= +MOZ_OFFICIAL_BRANDING= +MOZ_NO_SMART_CARDS= +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 + +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_SUBST(MOZ_DISTRIBUTION_ID) + +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) + +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 + +if test -z "$SKIP_COMPILER_CHECKS"; then +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 Check if we need the 32-bit Linux SSE2 error dialog +dnl ======================================================== + +AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR) + +dnl ======================================================== +dnl Check for cairo +dnl ======================================================== + +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 + +case "$MOZ_WIDGET_TOOLKIT" in + windows) + if test "$COMPILE_ENVIRONMENT"; then + MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1) + fi + ;; +esac +AC_SUBST(MOZ_ENABLE_D3D10_LAYER) + +dnl ======================================================== +dnl = +dnl = Maintainer debug option (no --enable equivalent) +dnl = +dnl ======================================================== + +AC_SUBST_LIST(ASFLAGS) +AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS) + +AC_SUBST(MOZ_STUB_INSTALLER) + +AC_SUBST_LIST(MOZ_FIX_LINK_PATHS) + +AC_SUBST(MOZ_POST_PROGRAM_COMMAND) + +if test -n "$MOZ_BINARY_EXTENSIONS"; then + AC_DEFINE(MOZ_BINARY_EXTENSIONS) +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_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 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 \ + $_COMPILATION_CXXFLAGS \ + $CXXFLAGS` + +COMPILE_CFLAGS=`echo \ + $_DEFINES_CFLAGS \ + $COMPILE_CFLAGS` + +COMPILE_CXXFLAGS=`echo \ + $_DEFINES_CXXFLAGS \ + $COMPILE_CXXFLAGS` + +HOST_CFLAGS=`echo \ + $_COMPILATION_HOST_CFLAGS \ + $HOST_CFLAGS` + +HOST_CXXFLAGS=`echo \ + $_COMPILATION_HOST_CXXFLAGS \ + $HOST_CXXFLAGS` + +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(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) + +dnl Set various defines and substitutions +dnl ======================================================== + +AC_SUBST(MOZ_DEV_EDITION) +if test -n "$MOZ_DEV_EDITION"; then + AC_DEFINE(MOZ_DEV_EDITION) +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 |