mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-23 21:01:08 +00:00
0be843a7f9
AC_CHECK_FUNC doesn't automatically set HAVE_$function defines (AC_CHECK_FUNCS does, confusing much?). Which means practically speaking, the check is not useful. There _are_ #ifdef HAVE_FDATASYNC in sqlite, but fdatasync is notably broken on older kernels, and while lmdb has runtime workarounds for that, sqlite doesn't. It might be fine to enable the sqlite code because those kernels are old, but this is not a straightforward decision to make at the build system level, so we'll handle that in a followup. Differential Revision: https://phabricator.services.mozilla.com/D134855
1558 lines
51 KiB
Plaintext
1558 lines
51 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 ========================================================
|
|
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 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"
|
|
|
|
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
|
|
|
|
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.
|
|
|
|
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
|
|
|
|
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 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
|
|
|
|
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
|
|
CFLAGS="$CFLAGS -fno-strict-aliasing"
|
|
|
|
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
|
|
|
|
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 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
|
|
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 "$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
|
|
# 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"
|
|
# 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
|
|
|
|
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
|
|
if test "$MOZ_BUILD_APP" = "tools/crashreporter/injector"; then
|
|
WRAP_STL_INCLUDES=
|
|
fi
|
|
|
|
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 ========================================================
|
|
AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize gmtime_r localtime_r arc4random arc4random_buf mallinfo gettid 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"
|
|
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
|
|
|
|
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 = 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_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
|
|
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
|
|
|
|
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
|
|
|
|
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_LIST(WARNINGS_CFLAGS)
|
|
|
|
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 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`
|
|
|
|
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)
|
|
|
|
if test -n "$COMPILE_ENVIRONMENT"; then
|
|
AC_CHECK_FUNCS(posix_fadvise posix_fallocate)
|
|
fi # COMPILE_ENVIRONMENT
|
|
|
|
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 Windows AccessibilityHandler
|
|
dnl ========================================================
|
|
|
|
if test -z "$MOZ_HANDLER_CLSID"; then
|
|
MOZ_HANDLER_CLSID="4a195748-dca2-45fb-9295-0a139e76a9e7"
|
|
MOZ_IHANDLERCONTROL_IID="3316ce35-f892-4832-97c5-06c52c03cdba"
|
|
MOZ_ASYNCIHANDLERCONTROL_IID="15b48b76-ad38-4ad3-bd1a-d3c48a5a9947"
|
|
MOZ_IGECKOBACKCHANNEL_IID="dd2e4a89-999e-4d65-8b65-440c923ddb61"
|
|
fi
|
|
|
|
AC_SUBST(MOZ_HANDLER_CLSID)
|
|
AC_SUBST(MOZ_IHANDLERCONTROL_IID)
|
|
AC_SUBST(MOZ_ASYNCIHANDLERCONTROL_IID)
|
|
AC_SUBST(MOZ_IGECKOBACKCHANNEL_IID)
|
|
|
|
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
|