mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-27 06:43:32 +00:00
63148715c6
Differential Revision: https://phabricator.services.mozilla.com/D178750
1354 lines
43 KiB
Plaintext
1354 lines
43 KiB
Plaintext
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
|