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 Propagate extra android flags dnl ============================= case "$target" in *-android*|*-linuxandroid*) LDFLAGS="$ANDROID_LDFLAGS $LDFLAGS" CFLAGS="$ANDROID_CFLAGS $CFLAGS" CXXFLAGS="$ANDROID_CXXFLAGS $CXXFLAGS" ASFLAGS="$ANDROID_ASFLAGS -DANDROID $ASFLAGS" ;; esac dnl Set the minimum version of toolkit libs used by mozilla dnl ======================================================== W32API_VERSION=3.14 LDFLAGS="$LDFLAGS $LINKER_LDFLAGS $PACK_REL_RELOC_FLAGS" HOST_LDFLAGS="$HOST_LDFLAGS $HOST_LINKER_LDFLAGS" dnl ======================================================== dnl Checks for compilers. dnl ======================================================== if test "$COMPILE_ENVIRONMENT"; then # This prevents mingw from adding .exe when generating executable. Internal use # only. ac_exeext=.out 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 dnl ======================================================== dnl Special win32 checks dnl ======================================================== WINVER=0A00 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 ], [ 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 ], [ 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 "$TARGET_CPU" != "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-" AC_SUBST(MSVC_C_RUNTIME_DLL) AC_SUBST(MSVC_C_RUNTIME_1_DLL) 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 ], #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 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) AC_DEFINE_UNQUOTED(_WIN32_IE,0x0A00) ;; 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 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 "$CC_TYPE" != clang-cl; then if test "$OS_ARCH" != "WINNT" -o "$CC_TYPE" != clang ; then DSO_PIC_CFLAGS='-fPIC' ASFLAGS="$ASFLAGS -fPIC" fi 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 "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED" = 1; 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 "$CC_TYPE" != clang-cl ; 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 "$HOST_CC_TYPE" = clang-cl; 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 "$HOST_CC_TYPE" = clang-cl; then HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86" fi ;; x86_64) if test "$HOST_CC_TYPE" = clang-cl; 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 ======================================================== MOZ_OPTIMIZE_LDFLAGS="${_COMPILATION_OPTIMIZE_LDFLAGS} ${MOZ_OPTIMIZE_FLAGS}" case "$target" in *-darwin*) MOZ_OPTIMIZE_FLAGS="-O3" DSO_LDOPTS='' MOZ_FIX_LINK_PATHS= ;; *-android*|*-linuxandroid*) MOZ_OPTIMIZE_FLAGS="-O2" ;; *-*linux*) if test "$CC_TYPE" != clang-cl ; then MOZ_PGO_OPTIMIZE_FLAGS="-O3" MOZ_OPTIMIZE_FLAGS="-O2" 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 vs -I./dist/include/string issue so don't use it if test "$CC_TYPE" != clang-cl ; then # != clang-cl will match gcc and clang if test "$CC_TYPE" = gcc; 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 WIN32_SUBSYSTEM_VERSION=10.0 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 "$TARGET_CPU" = "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 "$CC_TYPE" != clang-cl ; 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; 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 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 ARM_ABI_PREFIX= if test "$CC_TYPE" != clang-cl ; then if test "$TARGET_CPU" = "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 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 TARGET_XPCOM_ABI= if test -n "${TARGET_CPU}" -a -n "${TARGET_COMPILER_ABI}"; then TARGET_XPCOM_ABI="${TARGET_CPU}-${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 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 ], [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 "$CC_TYPE" = clang ; 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 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 AC_LANG_C 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_BUNDLEID=${MOZ_DISTRIBUTION_ID}.plugincontainer MOZ_CHILD_PROCESS_BUNDLENAME="plugin-container.app" MOZ_CHILD_PROCESS_APPNAME="${MOZ_APP_DISPLAYNAME}CP" AC_SUBST(MOZ_CHILD_PROCESS_NAME) AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE) AC_SUBST(MOZ_CHILD_PROCESS_BUNDLEID) AC_SUBST(MOZ_CHILD_PROCESS_APPNAME) AC_SUBST(MOZ_CHILD_PROCESS_BUNDLENAME) 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.. 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) # 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 Echo the CFLAGS to remove extra whitespace. CFLAGS=`echo \ $_COMPILATION_CFLAGS \ $CFLAGS` CXXFLAGS=`echo \ $_COMPILATION_CXXFLAGS \ $CXXFLAGS` ASFLAGS=`echo \ $_COMPILATION_ASFLAGS \ $ASFLAGS` 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` LDFLAGS=`echo \ $LDFLAGS \ $_COMPILATION_LDFLAGS` HOST_LDFLAGS=`echo \ $HOST_LDFLAGS \ $_COMPILATION_HOST_LDFLAGS` 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