2016-02-23 00:42:40 +00:00
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 =
2019-01-21 17:32:11 +00:00
dnl = Don't change the following lines. Doing so breaks:
2016-02-23 00:42:40 +00:00
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
2023-06-27 08:56:17 +00:00
LDFLAGS="$LDFLAGS $LINKER_LDFLAGS $PACK_REL_RELOC_FLAGS"
2022-11-25 01:56:38 +00:00
HOST_LDFLAGS="$HOST_LDFLAGS $HOST_LINKER_LDFLAGS"
2018-07-04 07:18:48 +00:00
2016-06-16 07:43:51 +00:00
if test "$COMPILE_ENVIRONMENT"; then
MOZ_ANDROID_NDK
fi # COMPILE_ENVIRONMENT
2016-02-23 00:42:40 +00:00
dnl ========================================================
dnl Checks for compilers.
dnl ========================================================
if test "$COMPILE_ENVIRONMENT"; then
2024-04-17 05:38:24 +00:00
# This prevents mingw from adding .exe when generating executable. Internal use
# only.
ac_exeext=.out
2024-03-19 06:43:01 +00:00
2016-02-23 00:42:40 +00:00
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 ========================================================
2023-09-06 19:30:04 +00:00
WINVER=0A00
2016-02-23 00:42:40 +00:00
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
2020-02-13 13:40:15 +00:00
CXXFLAGS="$CXXFLAGS -TP"
2016-08-04 21:22:54 +00:00
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
2016-02-23 00:42:40 +00:00
AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
2017-11-11 02:24:53 +00:00
MSVC_C_RUNTIME_DLL=vcruntime140.dll
2024-02-22 00:53:52 +00:00
if test "$TARGET_CPU" != "x86"; then
2023-05-11 21:30:15 +00:00
MSVC_C_RUNTIME_1_DLL=vcruntime140_1.dll
fi
2017-11-11 02:24:53 +00:00
MSVC_CXX_RUNTIME_DLL=msvcp140.dll
# -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146)
CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-"
2016-02-23 00:42:40 +00:00
AC_SUBST(MSVC_C_RUNTIME_DLL)
2023-05-11 21:30:15 +00:00
AC_SUBST(MSVC_C_RUNTIME_1_DLL)
2016-02-23 00:42:40 +00:00
AC_SUBST(MSVC_CXX_RUNTIME_DLL)
AC_DEFINE(HAVE_SEH_EXCEPTIONS)
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
2023-05-11 02:45:40 +00:00
AC_DEFINE(_USE_MATH_DEFINES) # Otherwise Windows' math.h doesn't #define M_PI.
2019-12-12 06:38:41 +00:00
CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0"
CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0"
2016-02-23 00:42:40 +00:00
AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
2023-09-06 19:30:04 +00:00
AC_DEFINE_UNQUOTED(_WIN32_IE,0x0A00)
2016-02-23 00:42:40 +00:00
;;
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
2016-08-05 17:18:49 +00:00
if test -n "$COMPILE_ENVIRONMENT"; then
MOZ_CONFIG_SANITIZE
fi
2016-02-23 00:42:40 +00:00
dnl ========================================================
dnl GNU specific defaults
dnl ========================================================
if test "$GNU_CC"; then
2018-06-26 16:53:42 +00:00
if test "$OS_ARCH" != "WINNT" -o -z "$CLANG_CC"; then
DSO_PIC_CFLAGS='-fPIC'
ASFLAGS="$ASFLAGS -fPIC"
fi
2016-02-23 00:42:40 +00:00
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.
2018-09-20 21:21:38 +00:00
if test -z "$MOZ_ASAN$MOZ_MSAN$MOZ_UBSAN$MOZ_TSAN$FUZZING_INTERFACES"; then
2016-02-23 00:42:40 +00:00
# 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)
2024-03-04 19:49:01 +00:00
if test "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED" = 1; then
2016-02-23 00:42:40 +00:00
DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
else
DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
fi
;;
esac
fi
fi
2017-10-25 22:10:04 +00:00
_DEFINES_CFLAGS="-include $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
2016-02-23 00:42:40 +00:00
ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
fi
if test "$GNU_CXX"; then
2022-01-27 00:07:12 +00:00
CXXFLAGS="$CXXFLAGS -fno-exceptions"
2016-02-23 00:42:40 +00:00
2017-10-25 22:10:04 +00:00
_DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $_objdir/mozilla-config.h"
2016-02-23 00:42:40 +00:00
fi
dnl ========================================================
dnl System overrides of the defaults for host
dnl ========================================================
case "$host" in
*mingw*)
2024-05-21 19:29:39 +00:00
if test "$HOST_CC_TYPE" = clang-cl; then
2020-02-13 13:40:15 +00:00
HOST_CFLAGS="$HOST_CFLAGS"
2016-02-23 00:42:40 +00:00
else
HOST_CFLAGS="$HOST_CFLAGS -mwindows"
fi
2019-03-21 01:28:50 +00:00
HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS"
2016-02-23 00:42:40 +00:00
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
HOST_BIN_SUFFIX=.exe
case "${host_cpu}" in
i*86)
2024-05-21 19:29:39 +00:00
if test "$HOST_CC_TYPE" = clang-cl; then
2016-02-23 00:42:40 +00:00
HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
fi
;;
x86_64)
2024-05-21 19:29:39 +00:00
if test "$HOST_CC_TYPE" = clang-cl; then
2016-02-23 00:42:40 +00:00
HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
fi
HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
;;
esac
;;
*-darwin*)
2016-03-16 05:40:18 +00:00
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX"
2016-02-23 00:42:40 +00:00
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 ========================================================
2024-02-28 11:11:16 +00:00
MOZ_OPTIMIZE_LDFLAGS="${_COMPILATION_OPTIMIZE_LDFLAGS} ${MOZ_OPTIMIZE_FLAGS}"
2016-02-23 00:42:40 +00:00
case "$target" in
*-darwin*)
MOZ_OPTIMIZE_FLAGS="-O3"
DSO_LDOPTS=''
2021-12-02 00:22:28 +00:00
MOZ_FIX_LINK_PATHS=
2016-02-23 00:42:40 +00:00
;;
*-android*|*-linuxandroid*)
2024-05-14 15:05:32 +00:00
MOZ_OPTIMIZE_FLAGS="-O2"
2016-02-23 00:42:40 +00:00
;;
*-*linux*)
2016-04-05 04:47:28 +00:00
if test "$GNU_CC" -o "$GNU_CXX"; then
2016-02-23 00:42:40 +00:00
MOZ_PGO_OPTIMIZE_FLAGS="-O3"
2023-09-22 02:27:22 +00:00
MOZ_OPTIMIZE_FLAGS="-O2"
2016-02-23 00:42:40 +00:00
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
2019-10-03 15:44:36 +00:00
# $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
2016-02-23 00:42:40 +00:00
DSO_LDOPTS='-shared'
MOZ_FIX_LINK_PATHS=
2019-08-26 13:26:59 +00:00
MOZ_OPTIMIZE_FLAGS="-O2"
2018-05-16 21:32:47 +00:00
2016-02-23 00:42:40 +00:00
WIN32_CONSOLE_EXE_LDFLAGS=-mconsole
WIN32_GUI_EXE_LDFLAGS=-mwindows
2019-10-03 15:44:36 +00:00
# Silence problematic clang warnings
CXXFLAGS="$CXXFLAGS -Wno-incompatible-ms-struct"
2020-01-31 08:18:56 +00:00
LDFLAGS="$LDFLAGS -Wl,--no-insert-timestamp"
2016-02-23 00:42:40 +00:00
else
2017-10-03 16:26:38 +00:00
TARGET_COMPILER_ABI=msvc
2023-07-14 18:45:24 +00:00
WIN32_SUBSYSTEM_VERSION=10.0
2016-02-23 00:42:40 +00:00
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
2017-10-25 22:10:04 +00:00
_DEFINES_CFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
_DEFINES_CXXFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
2022-04-25 22:21:31 +00:00
CFLAGS="$CFLAGS -Gy -Zc:inline"
CXXFLAGS="$CXXFLAGS -Gy -Zc:inline"
2023-12-08 10:43:59 +00:00
if test "$TARGET_CPU" = "x86"; then
2016-05-10 21:55:51 +00:00
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.
2017-02-02 20:49:00 +00:00
changequote(,)
2016-05-10 21:55:51 +00:00
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
2017-02-02 20:49:00 +00:00
changequote([,])
2016-09-27 19:35:39 +00:00
fi
2016-10-07 13:31:24 +00:00
dnl VS2013+ supports -Gw for better linker optimizations.
dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
2016-10-25 15:04:35 +00:00
dnl Disabled on ASan because it causes false-positive ODR violations.
if test -z "$MOZ_ASAN"; then
CFLAGS="$CFLAGS -Gw"
CXXFLAGS="$CXXFLAGS -Gw"
2019-01-18 19:20:12 +00:00
else
# String tail merging doesn't play nice with ASan's ODR checker.
LDFLAGS="$LDFLAGS -opt:nolldtailmerge"
2016-10-25 15:04:35 +00:00
fi
2017-12-08 15:40:08 +00:00
# Silence VS2017 15.5+ TR1 deprecation warnings hit by older gtest versions
CXXFLAGS="$CXXFLAGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING"
2018-08-21 21:16:45 +00:00
MOZ_DEBUG_LDFLAGS='-DEBUG'
2020-11-11 02:34:44 +00:00
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
2021-12-08 06:01:20 +00:00
MOZ_OPTIMIZE_FLAGS='-O2'
2016-02-23 00:42:40 +00:00
MOZ_FIX_LINK_PATHS=
2018-08-21 21:16:45 +00:00
LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE"
2016-02-23 00:42:40 +00:00
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
2018-03-23 19:35:30 +00:00
CFLAGS="$CFLAGS -mstackrealign"
CXXFLAGS="$CXXFLAGS -mstackrealign"
2018-09-18 13:44:05 +00:00
LDFLAGS="$LDFLAGS -Wl,--large-address-aware"
2016-02-23 00:42:40 +00:00
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_)
;;
2018-08-08 20:37:05 +00:00
aarch64-*)
if test -n "$_WIN32_MSVC"; then
DSO_LDOPTS="$DSO_LDOPTS -MACHINE:ARM64"
fi
AC_DEFINE(_ARM64_)
;;
2016-02-23 00:42:40 +00:00
*)
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'
2017-11-07 22:34:44 +00:00
MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic"
2016-02-23 00:42:40 +00:00
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
;;
2017-05-17 15:03:02 +00:00
*-solaris*)
2017-11-21 09:13:01 +00:00
MOZ_FIX_LINK_PATHS="-L${DIST}/bin"
2017-05-17 15:03:02 +00:00
;;
2016-02-23 00:42:40 +00:00
esac
Bug 1698706 - Always add PIC flags to C{,XX}FLAGS. r=firefox-build-system-reviewers,andi,sheehan,mhentges
The build always uses them anyways, but configure tests don't, and some
of them fail as a consequence in some cases (example: when UBsan is
enabled, all AC_LANG_CPLUSPLUS + AC_CHECK_FUNCS tests fail). We also had
similar problems in the past, such as bug 1513605.
By adding the PIC flags to CFLAGS and CXXFLAGS, we ensure old-configure
tests use the flags as well.
While here, we also remove DSO_CFLAGS, which was always empty, and we
stop passing -fPIC to wasm compiles, because it has no effect there.
Differential Revision: https://phabricator.services.mozilla.com/D108560
2021-03-17 02:27:22 +00:00
CFLAGS="$CFLAGS $DSO_PIC_CFLAGS"
CXXFLAGS="$CXXFLAGS $DSO_PIC_CFLAGS"
2017-10-25 02:30:48 +00:00
if test -z "$MOZ_OPTIMIZE_FLAGS"; then
MOZ_OPTIMIZE_FLAGS="-O"
fi
2016-02-23 00:42:40 +00:00
if test -z "$COMPILE_ENVIRONMENT"; then
SKIP_COMPILER_CHECKS=1
SKIP_LIBRARY_CHECKS=1
else
MOZ_COMPILER_OPTS
fi # COMPILE_ENVIRONMENT
if test -z "$SKIP_COMPILER_CHECKS"; then
dnl ========================================================
dnl Put your C++ language/feature checks below
dnl ========================================================
AC_LANG_CPLUSPLUS
2017-10-03 16:26:38 +00:00
ARM_ABI_PREFIX=
if test "$GNU_CC"; then
2023-12-08 10:43:59 +00:00
if test "$TARGET_CPU" = "arm" ; then
2017-10-03 16:26:38 +00:00
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
2016-02-23 00:42:40 +00:00
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
2016-08-17 00:07:00 +00:00
fi # ! SKIP_COMPILER_CHECKS
2017-10-03 16:26:38 +00:00
TARGET_XPCOM_ABI=
2023-12-08 10:43:59 +00:00
if test -n "${TARGET_CPU}" -a -n "${TARGET_COMPILER_ABI}"; then
TARGET_XPCOM_ABI="${TARGET_CPU}-${TARGET_COMPILER_ABI}"
2017-10-03 16:26:38 +00:00
AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"])
fi
2016-02-23 00:42:40 +00:00
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
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 ========================================================
2017-10-25 02:54:48 +00:00
# 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
2016-02-23 00:42:40 +00:00
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
2018-08-10 05:51:28 +00:00
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
2016-02-23 00:42:40 +00:00
fi
fi # COMPILE_ENVIRONMENT
2017-10-25 22:11:54 +00:00
AC_SUBST_LIST(MOZ_OPTIMIZE_FLAGS)
2017-11-02 18:47:48 +00:00
AC_SUBST_LIST(MOZ_OPTIMIZE_LDFLAGS)
2017-10-25 22:11:54 +00:00
AC_SUBST_LIST(MOZ_PGO_OPTIMIZE_FLAGS)
2016-02-23 00:42:40 +00:00
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
AC_SUBST(MOZ_GLUE_IN_PROGRAM)
dnl ========================================================
dnl = Enable using the clang plugin to build
dnl ========================================================
2017-03-07 18:21:33 +00:00
if test -n "$COMPILE_ENVIRONMENT"; then
2016-02-23 00:42:40 +00:00
MOZ_CONFIG_CLANG_PLUGIN
2017-03-07 18:21:33 +00:00
fi # COMPILE_ENVIRONMENT
2016-02-23 00:42:40 +00:00
AC_LANG_C
dnl ========================================================
dnl =
dnl = Maintainer debug option (no --enable equivalent)
dnl =
dnl ========================================================
2017-11-14 18:38:17 +00:00
AC_SUBST_LIST(ASFLAGS)
2017-11-02 18:47:48 +00:00
AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS)
2016-02-23 00:42:40 +00:00
AC_SUBST(MOZ_STUB_INSTALLER)
2017-11-02 18:47:48 +00:00
AC_SUBST_LIST(MOZ_FIX_LINK_PATHS)
2016-02-23 00:42:40 +00:00
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"])
2017-11-28 22:21:54 +00:00
MOZ_MACBUNDLE_NAME=$MOZ_APP_DISPLAYNAME
2016-02-23 00:42:40 +00:00
if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
2017-12-22 20:36:17 +00:00
MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
2016-02-23 00:42:40 +00:00
fi
if test "$MOZ_DEBUG"; then
2017-12-22 20:36:17 +00:00
MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME}Debug.app"
2016-02-23 00:42:40 +00:00
else
MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
fi
AC_SUBST(MOZ_MACBUNDLE_NAME)
dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
2017-11-16 08:44:35 +00:00
# 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
2018-02-05 08:31:00 +00:00
MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr 'A-Z' 'a-z' | tr -dc 'a-z-'`
2017-11-16 08:44:35 +00:00
fi
2016-02-23 00:42:40 +00:00
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)
2016-04-08 17:33:27 +00:00
dnl ========================================================
dnl = Child Process Name for IPC
dnl ========================================================
if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
2016-04-08 17:34:40 +00:00
MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
2016-04-08 17:33:27 +00:00
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.
2016-04-08 17:34:40 +00:00
MOZ_CHILD_PROCESS_NAME="libplugin-container.so"
2016-04-08 17:33:27 +00:00
fi
MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
2023-06-05 20:40:10 +00:00
MOZ_CHILD_PROCESS_BUNDLEID=${MOZ_DISTRIBUTION_ID}.plugincontainer
MOZ_CHILD_PROCESS_BUNDLENAME="plugin-container.app"
MOZ_CHILD_PROCESS_APPNAME="${MOZ_APP_DISPLAYNAME}CP"
2016-04-08 17:33:27 +00:00
AC_SUBST(MOZ_CHILD_PROCESS_NAME)
AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
2023-06-05 20:40:10 +00:00
AC_SUBST(MOZ_CHILD_PROCESS_BUNDLEID)
AC_SUBST(MOZ_CHILD_PROCESS_APPNAME)
2017-06-05 20:08:24 +00:00
AC_SUBST(MOZ_CHILD_PROCESS_BUNDLENAME)
2016-04-08 17:33:27 +00:00
2023-06-05 20:40:10 +00:00
dnl ==========================================================
dnl = Mac Media Plugin Helper (GMP Child) Process Name for IPC
dnl ==========================================================
MOZ_EME_PROCESS_NAME="media-plugin-helper"
MOZ_EME_PROCESS_NAME_BRANDED="$MOZ_APP_DISPLAYNAME Media Plugin Helper"
MOZ_EME_PROCESS_BUNDLENAME="${MOZ_EME_PROCESS_NAME}.app"
# Generate a lower case string with no spaces to be used as the bundle ID
# for the EME helper .app of the form org.mozilla.<executable-name>.
MOZ_EME_PROCESS_BUNDLEID=`echo "$MOZ_APP_DISPLAYNAME" | tr ' ' '-'`
MOZ_EME_PROCESS_BUNDLEID=`echo "$MOZ_EME_PROCESS_BUNDLEID" | tr 'A-Z' 'a-z'`
MOZ_EME_PROCESS_BUNDLEID=${MOZ_EME_PROCESS_BUNDLEID}-${MOZ_EME_PROCESS_NAME}
MOZ_EME_PROCESS_BUNDLEID=${MOZ_DISTRIBUTION_ID}.${MOZ_EME_PROCESS_BUNDLEID}
AC_SUBST(MOZ_EME_PROCESS_NAME)
AC_SUBST(MOZ_EME_PROCESS_NAME_BRANDED)
AC_SUBST(MOZ_EME_PROCESS_BUNDLENAME)
AC_SUBST(MOZ_EME_PROCESS_BUNDLEID)
2016-02-23 00:42:40 +00:00
# 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.
2018-11-16 01:15:35 +00:00
# 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.
2016-02-23 00:42:40 +00:00
# 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")
2018-07-24 15:12:48 +00:00
AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL, $BROWSER_CHROME_URL)
2018-07-24 22:25:18 +00:00
AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL_QUOTED, "$BROWSER_CHROME_URL")
2018-07-24 15:12:48 +00:00
2016-02-23 00:42:40 +00:00
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 Echo the CFLAGS to remove extra whitespace.
CFLAGS=`echo \
2017-11-15 18:53:16 +00:00
$_COMPILATION_CFLAGS \
2016-02-23 00:42:40 +00:00
$CFLAGS`
CXXFLAGS=`echo \
2017-11-15 18:53:16 +00:00
$_COMPILATION_CXXFLAGS \
2016-02-23 00:42:40 +00:00
$CXXFLAGS`
2024-02-13 10:35:28 +00:00
ASFLAGS=`echo \
$_COMPILATION_ASFLAGS \
$ASFLAGS`
2016-02-23 00:42:40 +00:00
COMPILE_CFLAGS=`echo \
$_DEFINES_CFLAGS \
$COMPILE_CFLAGS`
COMPILE_CXXFLAGS=`echo \
$_DEFINES_CXXFLAGS \
$COMPILE_CXXFLAGS`
HOST_CFLAGS=`echo \
2017-12-21 02:11:22 +00:00
$_COMPILATION_HOST_CFLAGS \
2016-02-23 00:42:40 +00:00
$HOST_CFLAGS`
HOST_CXXFLAGS=`echo \
2017-12-21 02:11:22 +00:00
$_COMPILATION_HOST_CXXFLAGS \
2016-02-23 00:42:40 +00:00
$HOST_CXXFLAGS`
2024-02-10 18:28:42 +00:00
LDFLAGS=`echo \
$LDFLAGS \
$_COMPILATION_LDFLAGS`
HOST_LDFLAGS=`echo \
$HOST_LDFLAGS \
$_COMPILATION_HOST_LDFLAGS`
2017-11-24 11:36:04 +00:00
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"
2016-02-23 00:42:40 +00:00
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"
2017-10-25 22:11:54 +00:00
AC_SUBST_LIST(OS_CFLAGS)
AC_SUBST_LIST(OS_CXXFLAGS)
AC_SUBST_LIST(OS_CPPFLAGS)
2017-10-25 22:10:04 +00:00
AC_SUBST_LIST(OS_COMPILE_CFLAGS)
AC_SUBST_LIST(OS_COMPILE_CXXFLAGS)
2017-11-02 18:47:48 +00:00
AC_SUBST_LIST(OS_LDFLAGS)
2016-02-23 00:42:40 +00:00
AC_SUBST(OS_LIBS)
AC_SUBST(HOST_CC)
AC_SUBST(HOST_CXX)
2017-10-02 18:34:25 +00:00
AC_SUBST_LIST(HOST_CFLAGS)
AC_SUBST_LIST(HOST_CPPFLAGS)
AC_SUBST_LIST(HOST_CXXFLAGS)
2016-02-23 00:42:40 +00:00
AC_SUBST(HOST_LDFLAGS)
2017-10-02 18:34:25 +00:00
AC_SUBST_LIST(HOST_OPTIMIZE_FLAGS)
2016-02-23 00:42:40 +00:00
AC_SUBST(HOST_BIN_SUFFIX)
2017-10-03 16:26:38 +00:00
AC_SUBST(TARGET_XPCOM_ABI)
2016-02-23 00:42:40 +00:00
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 ========================================================
2017-06-07 17:38:38 +00:00
AC_SUBST(MOZ_DEV_EDITION)
2016-02-23 00:42:40 +00:00
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()
2016-02-25 19:59:53 +00:00
rm -fr confdefs* $ac_clean_files