dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*- dnl vi: set tabstop=4 shiftwidth=4 expandtab syntax=m4: dnl This Source Code Form is subject to the terms of the Mozilla Public dnl License, v. 2.0. If a copy of the MPL was not distributed with this dnl file, You can obtain one at http://mozilla.org/MPL/2.0/. dnl Process this file with autoconf to produce a configure script. dnl ======================================================== AC_PREREQ(2.13) AC_INIT(config/config.mk) AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf) AC_CANONICAL_SYSTEM dnl ======================================================== dnl = dnl = Don't change the following lines. Doing so breaks: dnl = dnl = CFLAGS="-foo" ./configure dnl = dnl ======================================================== CFLAGS="${CFLAGS=}" CPPFLAGS="${CPPFLAGS=}" CXXFLAGS="${CXXFLAGS=}" LDFLAGS="${LDFLAGS=}" HOST_CFLAGS="${HOST_CFLAGS=}" HOST_CXXFLAGS="${HOST_CXXFLAGS=}" HOST_LDFLAGS="${HOST_LDFLAGS=}" dnl Set the minimum version of toolkit libs used by mozilla dnl ======================================================== W32API_VERSION=3.14 dnl 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 $PACK_REL_RELOC_FLAGS" HOST_LDFLAGS="$HOST_LDFLAGS $HOST_LINKER_LDFLAGS" if test "$COMPILE_ENVIRONMENT"; then MOZ_ANDROID_NDK fi # COMPILE_ENVIRONMENT dnl ======================================================== dnl Checks for compilers. dnl ======================================================== if test "$COMPILE_ENVIRONMENT"; then # 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 MOZ_TOOL_VARIABLES 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 # !GNU_CC AC_DEFINE(_USE_MATH_DEFINES) # Otherwise Windows' math.h doesn't #define M_PI. CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0" CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0" AC_DEFINE_UNQUOTED(WINVER,0x$WINVER) AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER) 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 AC_SUBST(GNU_CC) AC_SUBST(GNU_CXX) dnl ======================================================== dnl set the defaults first dnl ======================================================== MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib" dnl Configure platform-specific CPU architecture compiler options. dnl ============================================================== if test "$COMPILE_ENVIRONMENT"; then MOZ_ARCH_OPTS fi # COMPILE_ENVIRONMENT if test -n "$COMPILE_ENVIRONMENT"; then MOZ_CONFIG_SANITIZE fi dnl ======================================================== dnl GNU specific defaults dnl ======================================================== if test "$GNU_CC"; then if test "$OS_ARCH" != "WINNT" -o -z "$CLANG_CC"; then DSO_PIC_CFLAGS='-fPIC' ASFLAGS="$ASFLAGS -fPIC" fi 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 "$GNU_CXX"; then CXXFLAGS="$CXXFLAGS -fno-exceptions" _DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $_objdir/mozilla-config.h" fi dnl ======================================================== dnl System overrides of the defaults for host dnl ======================================================== case "$host" in *mingw*) if test -n "$_WIN32_MSVC"; then HOST_CFLAGS="$HOST_CFLAGS" else HOST_CFLAGS="$HOST_CFLAGS -mwindows" fi HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS" HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}" HOST_BIN_SUFFIX=.exe case "${host_cpu}" in i*86) if test -n "$_WIN32_MSVC"; then HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86" fi ;; x86_64) if test -n "$_WIN32_MSVC"; then HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64" fi HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_" ;; esac ;; *-darwin*) HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX" HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" ;; *-linux*|*-kfreebsd*-gnu|*-gnu*) HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" ;; *) HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}" ;; esac dnl ======================================================== dnl System overrides of the defaults for target dnl ======================================================== 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*) # 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 ;; *-*linux*) if test "$GNU_CC" -o "$GNU_CXX"; 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 -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 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 -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; 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_LANG_CPLUSPLUS MOZ_CXX11 AC_LANG_C 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 "`grep -E -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`grep -E -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 "`grep -E -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`grep -E -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 ======================================================== dnl Put your C++ language/feature checks below dnl ======================================================== AC_LANG_CPLUSPLUS ARM_ABI_PREFIX= if test "$GNU_CC"; 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 if test -n "${COMPILE_ENVIRONMENT}"; then MOZ_CHECK_ALLOCATOR fi 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 dnl Windows has malloc.h AC_DEFINE(MALLOC_H, []) AC_DEFINE(HAVE_FORCEINLINE) fi # SKIP_COMPILER_CHECKS dnl Mozilla specific options dnl ======================================================== dnl The macros used for command line options dnl are defined in build/autoconf/altoptions.m4. dnl ======================================================== dnl = dnl = Application dnl = dnl ======================================================== MOZ_BRANDING_DIRECTORY= MOZ_OFFICIAL_BRANDING= MOZ_NO_SMART_CARDS= MOZ_BINARY_EXTENSIONS= MOZ_DEVTOOLS=server dnl ======================================================== dnl = Trademarked Branding dnl ======================================================== MOZ_ARG_ENABLE_BOOL(official-branding, [ --enable-official-branding Enable Official mozilla.org Branding Do not distribute builds with --enable-official-branding unless you have permission to use trademarks per http://www.mozilla.org/foundation/trademarks/ .], MOZ_OFFICIAL_BRANDING=1, MOZ_OFFICIAL_BRANDING=) # Allow the application to influence configure with a confvars.sh script. AC_MSG_CHECKING([if app-specific confvars.sh exists]) if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh]) . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" else AC_MSG_RESULT([no]) fi AC_SUBST(MOZ_OFFICIAL_BRANDING) if test -n "$MOZ_OFFICIAL_BRANDING"; then if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.]) else MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY} AC_DEFINE(MOZ_OFFICIAL_BRANDING) fi fi MOZ_ARG_WITH_STRING(branding, [ --with-branding=dir Use branding from the specified directory.], MOZ_BRANDING_DIRECTORY=$withval) REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}" if test -z "$REAL_BRANDING_DIRECTORY"; then REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly fi if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh" fi AC_SUBST(MOZ_BRANDING_DIRECTORY) dnl ======================================================== dnl = Distribution ID dnl ======================================================== MOZ_ARG_WITH_STRING(distribution-id, [ --with-distribution-id=ID Set distribution-specific id (default=org.mozilla)], [ val=`echo $withval` MOZ_DISTRIBUTION_ID="$val"]) if test -z "$MOZ_DISTRIBUTION_ID"; then MOZ_DISTRIBUTION_ID="org.mozilla" fi AC_SUBST(MOZ_DISTRIBUTION_ID) dnl ======================================================== dnl = Enable code optimization. ON by default. dnl ======================================================== # Use value from moz.configure if one is defined. Else use our computed # value. if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS} fi if test "$COMPILE_ENVIRONMENT"; then if test -n "$MOZ_OPTIMIZE"; then AC_MSG_CHECKING([for valid C compiler optimization flags]) _SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS" AC_TRY_COMPILE([#include ], [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 -n "$MOZ_MEMORY"; then 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 AC_LANG_C if test "$COMPILE_ENVIRONMENT"; then MOZ_EXPAND_LIBS fi # COMPILE_ENVIRONMENT dnl ======================================================== dnl Check if we need the 32-bit Linux SSE2 error dialog dnl ======================================================== AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR) dnl ======================================================== dnl Check for cairo dnl ======================================================== if test "$OS_ARCH" = "WINNT"; then # For now we assume that we will have a uint64_t available through # one of the above headers or mozstdint.h. AC_DEFINE(HAVE_UINT64_T) fi case "$MOZ_WIDGET_TOOLKIT" in windows) if test "$COMPILE_ENVIRONMENT"; then MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1) fi ;; esac AC_SUBST(MOZ_ENABLE_D3D10_LAYER) dnl ======================================================== dnl = dnl = Maintainer debug option (no --enable equivalent) dnl = dnl ======================================================== AC_SUBST_LIST(ASFLAGS) AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS) AC_SUBST(MOZ_STUB_INSTALLER) AC_SUBST_LIST(MOZ_FIX_LINK_PATHS) AC_SUBST(MOZ_POST_PROGRAM_COMMAND) if test -n "$MOZ_BINARY_EXTENSIONS"; then AC_DEFINE(MOZ_BINARY_EXTENSIONS) fi dnl ======================================================== dnl = Mac bundle name prefix dnl ======================================================== MOZ_ARG_WITH_STRING(macbundlename-prefix, [ --with-macbundlename-prefix=prefix Prefix for MOZ_MACBUNDLE_NAME], [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"]) MOZ_MACBUNDLE_NAME=$MOZ_APP_DISPLAYNAME if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}" fi if test "$MOZ_DEBUG"; then MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME}Debug.app" else MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app fi AC_SUBST(MOZ_MACBUNDLE_NAME) dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME) # If the MOZ_MACBUNDLE_ID is defined in the configure.sh, use it # Otherwise, use MOZ_APP_DISPLAYNAME if test -z "$MOZ_MACBUNDLE_ID"; then MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr 'A-Z' 'a-z' | tr -dc 'a-z-'` fi MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID} if test "$MOZ_DEBUG"; then MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug fi AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID) AC_SUBST(MOZ_MACBUNDLE_ID) dnl ======================================================== dnl = Child Process Name for IPC dnl ======================================================== if test "$MOZ_WIDGET_TOOLKIT" != "android"; then MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}" else # We want to let Android unpack the file at install time, but it only does # so if the file is named libsomething.so. The lib/ path is also required # because the unpacked file will be under the lib/ subdirectory and will # need to be executed from that path. MOZ_CHILD_PROCESS_NAME="libplugin-container.so" fi MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/" MOZ_CHILD_PROCESS_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