forked from mirrors/gecko-dev
		
	 e19e94bc52
			
		
	
	
		e19e94bc52
		
	
	
	
	
		
			
			It's currently added manually to CXXFLAGS and bindgen flags, and is notably missing from HOST_CXXFLAGS. However, setting it at the toolchain level makes it inherited anywhere it's needed, including host builds and bindgen. Differential Revision: https://phabricator.services.mozilla.com/D126153
		
			
				
	
	
		
			2628 lines
		
	
	
	
		
			86 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			2628 lines
		
	
	
	
		
			86 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 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 version number of the libs included with mozilla
 | |
| dnl ========================================================
 | |
| MOZPNG=10635
 | |
| 
 | |
| dnl Set the minimum version of toolkit libs used by mozilla
 | |
| dnl ========================================================
 | |
| GLIB_VERSION=2.42
 | |
| GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_42
 | |
| GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_42
 | |
| CAIRO_VERSION=1.10
 | |
| GTK3_VERSION=3.14.0
 | |
| GDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_14
 | |
| W32API_VERSION=3.14
 | |
| DBUS_VERSION=0.60
 | |
| 
 | |
| 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
 | |
| 
 | |
|         changequote(,)
 | |
|         _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
 | |
|         changequote([,])
 | |
| 
 | |
|         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.
 | |
| 
 | |
|         _CC_SUITE=14
 | |
|         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
 | |
| 
 | |
|         # Check linker version, except in lld builds
 | |
|         case "$LINKER" in
 | |
|         *lld*)
 | |
|             ;;
 | |
|         *)
 | |
|             _LD_FULL_VERSION=`"${LINKER}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
 | |
|             _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
 | |
|             if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
 | |
|                 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION,  does not match the compiler suite version, $_CC_SUITE.])
 | |
|             fi
 | |
|             ;;
 | |
|         esac
 | |
| 
 | |
|         INCREMENTAL_LINKER=1
 | |
| 
 | |
|         unset _MSVC_VER_FILTER
 | |
| 
 | |
|         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_USER_DIR=".mozilla"
 | |
| 
 | |
| MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib"
 | |
| 
 | |
| MOZ_FS_LAYOUT=unix
 | |
| 
 | |
| 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
 | |
|     MMX_FLAGS="-mmmx"
 | |
|     SSE_FLAGS="-msse"
 | |
|     SSE2_FLAGS="-msse2"
 | |
|     SSSE3_FLAGS="-mssse3"
 | |
|     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
 | |
| 
 | |
|     # Check for -mssse3 on $CC
 | |
|     AC_MSG_CHECKING([if toolchain supports -mssse3 option])
 | |
|     HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
 | |
|     _SAVE_CFLAGS=$CFLAGS
 | |
|     CFLAGS="$CFLAGS -mssse3"
 | |
|     AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
 | |
|                      [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
 | |
|                      AC_MSG_RESULT([no]))
 | |
|     CFLAGS=$_SAVE_CFLAGS
 | |
| 
 | |
|     # Check for -msse4.1 on $CC
 | |
|     AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
 | |
|     HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
 | |
|     _SAVE_CFLAGS=$CFLAGS
 | |
|     CFLAGS="$CFLAGS -msse4.1"
 | |
|     AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
 | |
|                      [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
 | |
|                      AC_MSG_RESULT([no]))
 | |
|     CFLAGS=$_SAVE_CFLAGS
 | |
| 
 | |
|     case "${CPU_ARCH}" in
 | |
|     x86 | x86_64)
 | |
|       AC_MSG_CHECKING(for x86 AVX2 asm support in compiler)
 | |
|       AC_TRY_COMPILE([],
 | |
|                      [asm volatile ("vpermq      \$0xd8,%ymm0,%ymm0 \n");],
 | |
|                      result="yes", result="no")
 | |
|       AC_MSG_RESULT("$result")
 | |
|       if test "$result" = "yes"; then
 | |
|           HAVE_X86_AVX2=1
 | |
|       fi
 | |
|       ;;
 | |
| 
 | |
|     ppc*)
 | |
|       AC_MSG_CHECKING([whether we can enable AltiVec support])
 | |
|       HAVE_ALTIVEC=
 | |
|       _SAVE_CFLAGS=$CFLAGS
 | |
|       CFLAGS="$CFLAGS -maltivec"
 | |
|       AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
 | |
|                        [HAVE_ALTIVEC=1],
 | |
|                        AC_MSG_RESULT([no]))
 | |
|       CFLAGS=$_SAVE_CFLAGS
 | |
|       ;;
 | |
|     esac
 | |
| 
 | |
|     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 = Enable DMD
 | |
| dnl ========================================================
 | |
| 
 | |
| if test "$MOZ_DMD"; then
 | |
|     if test "${CPU_ARCH}" = "arm"; then
 | |
|         CFLAGS="$CFLAGS -funwind-tables"
 | |
|         CXXFLAGS="$CXXFLAGS -funwind-tables"
 | |
|     fi
 | |
| 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=''
 | |
|     # The ExceptionHandling framework is needed for Objective-C exception
 | |
|     # logging code in nsObjCExceptions.h. Currently we only use that in debug
 | |
|     # builds.
 | |
|     MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
 | |
| 
 | |
|     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="-Wl,-executable_path,${DIST}/bin"
 | |
|     ;;
 | |
| 
 | |
| *-android*|*-linuxandroid*)
 | |
|     if test "$COMPILE_ENVIRONMENT" -a -n "$MOZ_MEMORY"; then
 | |
|         MOZ_LINKER=1
 | |
|     fi
 | |
| 
 | |
|     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'
 | |
|         # mingw doesn't require kernel32, user32, and advapi32 explicitly
 | |
|         LIBS="$LIBS -luuid -lusp10 -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32"
 | |
|         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 -z "$CLANG_CL"; then
 | |
|             CPPFLAGS="$CPPFLAGS -utf-8"
 | |
|         fi
 | |
|         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([,])
 | |
|             SSE_FLAGS="-arch:SSE"
 | |
|             SSE2_FLAGS="-arch:SSE2"
 | |
|             dnl MSVC allows the use of intrinsics without any flags
 | |
|             dnl and doesn't have a separate arch for SSSE3
 | |
|             SSSE3_FLAGS="-arch:SSE2"
 | |
|         fi
 | |
|         dnl clang-cl requires appropriate flags to enable SSSE3 support
 | |
|         dnl on all architectures.
 | |
|         if test -n "$CLANG_CL"; then
 | |
|             SSSE3_FLAGS="-mssse3"
 | |
|         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
 | |
|         if test -n "$CLANG_CL"; then
 | |
|             # 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"
 | |
|         fi
 | |
|         # Silence VS2017 15.5+ TR1 deprecation warnings hit by older gtest versions
 | |
|         CXXFLAGS="$CXXFLAGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING"
 | |
|         LIBS="$LIBS user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib"
 | |
|         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
 | |
|         # Use a higher optimization level for clang-cl, so we can come closer
 | |
|         # to MSVC's performance numbers (see bug 1443590).
 | |
|         if test -n "$CLANG_CL"; then
 | |
|             MOZ_OPTIMIZE_FLAGS='-O2'
 | |
|         else
 | |
|             MOZ_OPTIMIZE_FLAGS='-O1 -Oi'
 | |
|         fi
 | |
|         MOZ_FIX_LINK_PATHS=
 | |
|         LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE"
 | |
|         dnl Minimum reqiurement of Gecko is VS2015 or later which supports
 | |
|         dnl both SSSE3 and SSE4.1.
 | |
|         HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
 | |
|         HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
 | |
|         dnl allow AVX2 code from VS2015
 | |
|         HAVE_X86_AVX2=1
 | |
|     fi
 | |
|     AC_DEFINE(WIN32_LEAN_AND_MEAN)
 | |
|     dnl See http://support.microsoft.com/kb/143208 to use STL
 | |
|     AC_DEFINE(NOMINMAX)
 | |
|     BIN_SUFFIX='.exe'
 | |
|     MOZ_USER_DIR="Mozilla"
 | |
| 
 | |
|     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
 | |
| 
 | |
| AC_SUBST_LIST(MMX_FLAGS)
 | |
| AC_SUBST_LIST(SSE_FLAGS)
 | |
| AC_SUBST_LIST(SSE2_FLAGS)
 | |
| AC_SUBST_LIST(SSSE3_FLAGS)
 | |
| 
 | |
| AC_SUBST(MOZ_LINKER)
 | |
| if test -n "$MOZ_LINKER"; then
 | |
|   AC_DEFINE(MOZ_LINKER)
 | |
|   MOZ_LINKER_EXTRACT=1
 | |
|   AC_CHECK_PROGS(XZ, xz)
 | |
| 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 Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
 | |
| AC_CACHE_CHECK(for sockaddr_in.sin_len,
 | |
|                    ac_cv_sockaddr_in_sin_len,
 | |
|                    [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
 | |
|                                     #include <sys/types.h>
 | |
|                                     #endif
 | |
|                                     #include <netinet/in.h>
 | |
|                                     struct sockaddr_in x;
 | |
|                                     void *foo = (void*) &x.sin_len;],
 | |
|                                    [],
 | |
|                                    [ac_cv_sockaddr_in_sin_len=true],
 | |
|                                    [ac_cv_sockaddr_in_sin_len=false])])
 | |
| if test "$ac_cv_sockaddr_in_sin_len" = true ; then
 | |
|   AC_DEFINE(HAVE_SIN_LEN)
 | |
| dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
 | |
|   AC_DEFINE(HAVE_SCONN_LEN)
 | |
| fi
 | |
| 
 | |
| AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
 | |
|                ac_cv_sockaddr_in6_sin6_len,
 | |
|                [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
 | |
|                                 #include <sys/types.h>
 | |
|                                 #endif
 | |
|                                 #include <netinet/in.h>
 | |
|                                 struct sockaddr_in6 x;
 | |
|                                 void *foo = (void*) &x.sin6_len;],
 | |
|                                [],
 | |
|                                [ac_cv_sockaddr_in6_sin6_len=true],
 | |
|                                [ac_cv_sockaddr_in6_sin6_len=false])])
 | |
| if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
 | |
|   AC_DEFINE(HAVE_SIN6_LEN)
 | |
| fi
 | |
| 
 | |
| AC_CACHE_CHECK(for sockaddr.sa_len,
 | |
|                ac_cv_sockaddr_sa_len,
 | |
|                [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
 | |
|                                 #include <sys/types.h>
 | |
|                                 #endif
 | |
|                                 #include <sys/socket.h>
 | |
|                                 struct sockaddr x;
 | |
|                                 void *foo = (void*) &x.sa_len;],
 | |
|                                [],
 | |
|                                [ac_cv_sockaddr_sa_len=true],
 | |
|                                [ac_cv_sockaddr_sa_len=false])])
 | |
| if test "$ac_cv_sockaddr_sa_len" = true ; then
 | |
|   AC_DEFINE(HAVE_SA_LEN)
 | |
| fi
 | |
| 
 | |
| 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 memmem)
 | |
| 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 lchown 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
 | |
| 
 | |
| dnl Turn on warnings-as-errors to prevent implicit declaration of
 | |
| dnl pthread_cond_timedwait_monotonic_np, which can cause this test to
 | |
| dnl inadvertently pass even if the function does not really exist.
 | |
| _SAVE_CFLAGS="$CFLAGS"
 | |
| CFLAGS="$CFLAGS $WARNINGS_AS_ERRORS"
 | |
| AC_CACHE_CHECK(for pthread_cond_timedwait_monotonic_np,
 | |
|                ac_cv_pthread_cond_timedwait_monotonic_np,
 | |
|                AC_TRY_LINK([#include <pthread.h>],
 | |
|                            [pthread_cond_timedwait_monotonic_np(0, 0, 0);],
 | |
|                            ac_cv_pthread_cond_timewait_monotonic_np=yes,
 | |
|                            ac_cv_pthread_cond_timewait_monotonic_np=no))
 | |
| if test "$ac_cv_pthread_cond_timewait_monotonic_np" != "no"; then
 | |
|     AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)
 | |
| fi
 | |
| CFLAGS=$_SAVE_CFLAGS
 | |
| 
 | |
| 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 *** va_copy checks ***
 | |
| AC_CACHE_CHECK([for an implementation of va_copy()],
 | |
|                ac_cv_va_copy,
 | |
|     [AC_TRY_COMPILE([#include <stdarg.h>
 | |
|                      #include <stdlib.h>
 | |
|         void f (int i, ...) {
 | |
|             va_list args1, args2;
 | |
|             va_start (args1, i);
 | |
|             va_copy (args2, args1);
 | |
|             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
 | |
|                 exit (1);
 | |
|             va_end (args1); va_end (args2);
 | |
|         }],
 | |
|         [f(0, 42); return 0],
 | |
|         [ac_cv_va_copy=yes],
 | |
|         [ac_cv_va_copy=no]
 | |
|     )]
 | |
| )
 | |
| AC_CACHE_CHECK([whether va_list can be copied by value],
 | |
|                ac_cv_va_val_copy,
 | |
|     [AC_TRY_COMPILE([#include <stdarg.h>
 | |
|                      #include <stdlib.h>
 | |
|         void f (int i, ...) {
 | |
|             va_list args1, args2;
 | |
|             va_start (args1, i);
 | |
|             args2 = args1;
 | |
|             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
 | |
|                 exit (1);
 | |
|             va_end (args1); va_end (args2);
 | |
|         }],
 | |
|         [f(0, 42); return 0],
 | |
|         [ac_cv_va_val_copy=yes],
 | |
|         [ac_cv_va_val_copy=no],
 | |
|     )]
 | |
| )
 | |
| if test "x$ac_cv_va_copy" = "xyes"; then
 | |
|     AC_DEFINE(VA_COPY, va_copy)
 | |
|     AC_DEFINE(HAVE_VA_COPY)
 | |
| fi
 | |
| 
 | |
| if test "x$ac_cv_va_val_copy" = "xno"; then
 | |
|    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
 | |
| fi
 | |
| 
 | |
| 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
 | |
| MOZ_TLS=
 | |
| 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)
 | |
|       MOZ_TLS=1
 | |
|       ;;
 | |
|   esac
 | |
| fi
 | |
| 
 | |
| dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
 | |
| if test -n "$MOZ_LINKER"; then
 | |
|   if test "$CPU_ARCH" = arm; then
 | |
|     dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
 | |
|     if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
 | |
|       LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
 | |
|       _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
 | |
|     fi
 | |
|   fi
 | |
| 
 | |
| 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 = Check for external package dependencies
 | |
| dnl =
 | |
| dnl ========================================================
 | |
| MOZ_ARG_HEADER(External Packages)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl system libevent Support
 | |
| dnl ========================================================
 | |
| MOZ_ARG_WITH_STRING(system-libevent,
 | |
| [  --with-system-libevent[=PFX]
 | |
|                           Use system libevent [installed at prefix PFX]],
 | |
|     LIBEVENT_DIR=$withval)
 | |
| 
 | |
| _SAVE_CFLAGS=$CFLAGS
 | |
| _SAVE_LDFLAGS=$LDFLAGS
 | |
| _SAVE_LIBS=$LIBS
 | |
| if test "$LIBEVENT_DIR" = yes; then
 | |
|     PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
 | |
|         MOZ_SYSTEM_LIBEVENT=1,
 | |
|         LIBEVENT_DIR=/usr)
 | |
| fi
 | |
| if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
 | |
|     MOZ_SYSTEM_LIBEVENT=
 | |
| elif test -z "$MOZ_SYSTEM_LIBEVENT"; then
 | |
|     CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
 | |
|     LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
 | |
|     MOZ_CHECK_HEADER(event.h,
 | |
|         [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
 | |
|              AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
 | |
|          fi],
 | |
|         AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
 | |
|     AC_CHECK_LIB(event, event_init,
 | |
|                  [MOZ_SYSTEM_LIBEVENT=1
 | |
|                   MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
 | |
|                   MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
 | |
|                  [MOZ_SYSTEM_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
 | |
| fi
 | |
| CFLAGS=$_SAVE_CFLAGS
 | |
| LDFLAGS=$_SAVE_LDFLAGS
 | |
| LIBS=$_SAVE_LIBS
 | |
| 
 | |
| AC_SUBST(MOZ_SYSTEM_LIBEVENT)
 | |
| 
 | |
| if test -z "$SKIP_LIBRARY_CHECKS"; then
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl system PNG Support
 | |
| dnl ========================================================
 | |
| MOZ_ARG_WITH_STRING(system-png,
 | |
| [  --with-system-png[=PFX]
 | |
|                           Use system libpng [installed at prefix PFX]],
 | |
|     PNG_DIR=$withval)
 | |
| 
 | |
| _SAVE_CFLAGS=$CFLAGS
 | |
| _SAVE_LDFLAGS=$LDFLAGS
 | |
| _SAVE_LIBS=$LIBS
 | |
| if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
 | |
|     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
 | |
|     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
 | |
| fi
 | |
| if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
 | |
|     MOZ_SYSTEM_PNG=
 | |
| else
 | |
|     AC_CHECK_LIB(png, png_get_valid, [MOZ_SYSTEM_PNG=1 MOZ_PNG_LIBS="-lpng"],
 | |
|                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
 | |
|     AC_CHECK_LIB(png, png_get_acTL, ,
 | |
|                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
 | |
| fi
 | |
| if test "$MOZ_SYSTEM_PNG" = 1; then
 | |
|     AC_TRY_COMPILE([ #include <stdio.h>
 | |
|                      #include <sys/types.h>
 | |
|                      #include <png.h> ],
 | |
|                    [ #if PNG_LIBPNG_VER < $MOZPNG
 | |
|                      #error "Insufficient libpng version ($MOZPNG required)."
 | |
|                      #endif
 | |
|                      #ifndef PNG_UINT_31_MAX
 | |
|                      #error "Insufficient libpng version."
 | |
|                      #endif ],
 | |
|                    MOZ_SYSTEM_PNG=1,
 | |
|                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
 | |
| fi
 | |
| CFLAGS=$_SAVE_CFLAGS
 | |
| LDFLAGS=$_SAVE_LDFLAGS
 | |
| LIBS=$_SAVE_LIBS
 | |
| 
 | |
| if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_SYSTEM_PNG" = 1; then
 | |
|     MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
 | |
|     MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
 | |
| fi
 | |
| 
 | |
| fi # SKIP_LIBRARY_CHECKS
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl =
 | |
| dnl = Application
 | |
| dnl =
 | |
| dnl ========================================================
 | |
| 
 | |
| MOZ_ARG_HEADER(Application)
 | |
| 
 | |
| ENABLE_SYSTEM_EXTENSION_DIRS=1
 | |
| MOZ_BRANDING_DIRECTORY=
 | |
| MOZ_OFFICIAL_BRANDING=
 | |
| MOZ_AUTH_EXTENSION=1
 | |
| MOZ_SPELLCHECK=1
 | |
| MOZ_UNIVERSALCHARDET=1
 | |
| MOZ_XUL=1
 | |
| MOZ_ZIPWRITER=1
 | |
| MOZ_NO_SMART_CARDS=
 | |
| MOZ_SANDBOX=1
 | |
| 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
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl Ensure Android SDK and build-tools versions depending on
 | |
| dnl mobile target.
 | |
| dnl ========================================================
 | |
| 
 | |
| case "$MOZ_BUILD_APP" in
 | |
| mobile/android)
 | |
|     MOZ_ANDROID_SDK
 | |
|     ;;
 | |
| esac
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl =
 | |
| dnl = Toolkit Options
 | |
| dnl =
 | |
| dnl ========================================================
 | |
| MOZ_ARG_HEADER(Toolkit Options)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl = Enable the toolkit as needed                         =
 | |
| dnl ========================================================
 | |
| 
 | |
| case "$MOZ_WIDGET_TOOLKIT" in
 | |
| 
 | |
| cocoa)
 | |
|     LDFLAGS="$LDFLAGS -framework Cocoa"
 | |
|     # Use -Wl as a trick to avoid -framework and framework names from
 | |
|     # being separated by AC_SUBST_LIST.
 | |
|     TK_LIBS='-Wl,-framework,Foundation -Wl,-framework,CoreFoundation -Wl,-framework,CoreLocation -Wl,-framework,QuartzCore -Wl,-framework,Carbon -Wl,-framework,CoreAudio -Wl,-framework,CoreVideo -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit -Wl,-framework,AddressBook -Wl,-framework,OpenGL -Wl,-framework,Security -Wl,-framework,ServiceManagement -Wl,-framework,CoreServices -Wl,-framework,ApplicationServices -Wl,-framework,AppKit'
 | |
|     TK_CFLAGS=""
 | |
|     CFLAGS="$CFLAGS $TK_CFLAGS"
 | |
|     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
 | |
|     MOZ_USER_DIR="Mozilla"
 | |
|     MOZ_FS_LAYOUT=bundle
 | |
|     ;;
 | |
| 
 | |
| uikit)
 | |
|     LDFLAGS="$LDFLAGS -framework UIKit"
 | |
|     TK_CFLAGS=""
 | |
|     TK_LIBS='-Wl,-framework,Foundation -Wl,-framework,CoreFoundation -Wl,-framework,CoreGraphics -Wl,-framework,CoreText -Wl,-framework,AVFoundation -Wl,-framework,AudioToolbox -Wl,-framework,CoreMedia -Wl,-framework,CoreVideo -Wl,-framework,OpenGLES -Wl,-framework,QuartzCore'
 | |
|     CFLAGS="$CFLAGS $TK_CFLAGS"
 | |
|     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
 | |
|     MOZ_USER_DIR="Mozilla"
 | |
|     MOZ_FS_LAYOUT=bundle
 | |
|     ;;
 | |
| 
 | |
| esac
 | |
| 
 | |
| if test "$OS_TARGET" = Darwin; then
 | |
|     LDFLAGS="$LDFLAGS -lobjc"
 | |
| fi
 | |
| 
 | |
| dnl there are a lot of tests on MOZ_ENABLE_GTK below, that are more convenient
 | |
| dnl to keep that way than testing against MOZ_WIDGET_TOOLKIT
 | |
| case "$MOZ_WIDGET_TOOLKIT" in
 | |
| gtk*)
 | |
|     MOZ_ENABLE_GTK=1
 | |
|     ;;
 | |
| esac
 | |
| 
 | |
| if test "$COMPILE_ENVIRONMENT"; then
 | |
|   if test "$MOZ_WIDGET_TOOLKIT" = gtk; then
 | |
|     PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 gio-unix-2.0 $GDK_PACKAGES)
 | |
|     MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS"
 | |
|     TK_CFLAGS=$MOZ_GTK3_CFLAGS
 | |
|     TK_LIBS=$MOZ_GTK3_LIBS
 | |
|     dnl GDK_VERSION_MIN_REQUIRED is not set here as GDK3 deprecated warnings
 | |
|     dnl are suppressed by widget/gtk/compat-gtk3/gdk/gdkversionmacros.h.
 | |
|     AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MAX_ALLOWED)
 | |
|   fi
 | |
|   if test "$MOZ_ENABLE_GTK"; then
 | |
|     AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED)
 | |
|     AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED)
 | |
|   fi
 | |
| fi # COMPILE_ENVIRONMENT
 | |
| 
 | |
| AC_SUBST(MOZ_FS_LAYOUT)
 | |
| 
 | |
| AC_SUBST_LIST(TK_CFLAGS)
 | |
| AC_SUBST_LIST(TK_LIBS)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl =
 | |
| dnl = Components & Features
 | |
| dnl =
 | |
| dnl ========================================================
 | |
| MOZ_ARG_HEADER(Components and Features)
 | |
| 
 | |
| 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 = libproxy support
 | |
| dnl ========================================================
 | |
| 
 | |
| if test "$MOZ_ENABLE_GTK"
 | |
| then
 | |
|     MOZ_ENABLE_LIBPROXY=
 | |
| 
 | |
|     MOZ_ARG_ENABLE_BOOL(libproxy,
 | |
|     [  --enable-libproxy         Enable libproxy support ],
 | |
|     MOZ_ENABLE_LIBPROXY=1,
 | |
|     MOZ_ENABLE_LIBPROXY=)
 | |
| 
 | |
|     if test "$MOZ_ENABLE_LIBPROXY"
 | |
|     then
 | |
|         PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
 | |
|         AC_DEFINE(MOZ_ENABLE_LIBPROXY)
 | |
|     fi
 | |
| fi
 | |
| AC_SUBST(MOZ_ENABLE_LIBPROXY)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl = dbus support
 | |
| dnl ========================================================
 | |
| 
 | |
| if test "$MOZ_ENABLE_GTK"
 | |
| then
 | |
|     MOZ_ENABLE_DBUS=1
 | |
| 
 | |
|     MOZ_ARG_DISABLE_BOOL(dbus,
 | |
|     [  --disable-dbus          Disable dbus support ],
 | |
|         MOZ_ENABLE_DBUS=,
 | |
|         MOZ_ENABLE_DBUS=1)
 | |
| 
 | |
|     if test "$MOZ_ENABLE_DBUS"
 | |
|     then
 | |
|         PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
 | |
|         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
 | |
|         AC_DEFINE(MOZ_ENABLE_DBUS)
 | |
|     fi
 | |
| fi
 | |
| AC_SUBST(MOZ_ENABLE_DBUS)
 | |
| 
 | |
| AC_TRY_COMPILE([#include <linux/ethtool.h>],
 | |
|                [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
 | |
|                MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
 | |
| 
 | |
| AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl = Apple platform decoder support
 | |
| dnl ========================================================
 | |
| if test "$COMPILE_ENVIRONMENT"; then
 | |
| if test -n "$MOZ_APPLEMEDIA"; then
 | |
|   # hack in frameworks for fmp4 - see bug 1029974
 | |
|   # We load VideoToolbox and CoreMedia dynamically, so they don't appear here.
 | |
|   LDFLAGS="$LDFLAGS -framework AudioToolbox"
 | |
|   dnl Verify CoreMedia is available.
 | |
|   AC_CHECK_HEADERS([CoreMedia/CoreMedia.h VideoToolbox/VideoToolbox.h], [],
 | |
|     [AC_MSG_ERROR([MacOS X 10.9 SDK or later is required])])
 | |
| fi
 | |
| fi # COMPILE_ENVIRONMENT
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl = Handle dependent MEDIA defines
 | |
| dnl ========================================================
 | |
| 
 | |
| MOZ_WEBM_ENCODER=1
 | |
| AC_DEFINE(MOZ_WEBM_ENCODER)
 | |
| AC_SUBST(MOZ_WEBM_ENCODER)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl NegotiateAuth
 | |
| dnl ========================================================
 | |
| 
 | |
| MOZ_ARG_DISABLE_BOOL(negotiateauth,
 | |
| [  --disable-negotiateauth Disable GSS-API negotiation ],
 | |
|     MOZ_AUTH_EXTENSION=,
 | |
|     MOZ_AUTH_EXTENSION=1 )
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl Searching of system directories for extensions.
 | |
| dnl Note: this switch is meant to be used for test builds
 | |
| dnl whose behavior should not depend on what happens to be
 | |
| dnl installed on the local machine.
 | |
| dnl ========================================================
 | |
| MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
 | |
| [  --disable-system-extension-dirs
 | |
|                           Disable searching system- and account-global
 | |
|                           directories for extensions of any kind; use
 | |
|                           only profile-specific extension directories],
 | |
|   ENABLE_SYSTEM_EXTENSION_DIRS=,
 | |
|   ENABLE_SYSTEM_EXTENSION_DIRS=1 )
 | |
| if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
 | |
|   AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
 | |
| fi
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl = Universalchardet
 | |
| dnl ========================================================
 | |
| MOZ_ARG_DISABLE_BOOL(universalchardet,
 | |
| [  --disable-universalchardet
 | |
|                           Disable universal encoding detection],
 | |
|   MOZ_UNIVERSALCHARDET=,
 | |
|   MOZ_UNIVERSALCHARDET=1 )
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl Gamepad support
 | |
| dnl ========================================================
 | |
| 
 | |
| if test "$COMPILE_ENVIRONMENT" ; then
 | |
| 
 | |
| dnl Moved gamepad platform check to moz.build, linux header check still needed here.
 | |
| if test "$OS_TARGET" = "Linux"; then
 | |
|     MOZ_CHECK_HEADER([linux/joystick.h])
 | |
|     if test "$ac_cv_header_linux_joystick_h" != "yes"; then
 | |
|       AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers.])
 | |
|     fi
 | |
| fi
 | |
| 
 | |
| fi # COMPILE_ENVIRONMENT
 | |
| 
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl = Breakpad crash reporting (on by default on supported platforms)
 | |
| dnl ========================================================
 | |
| 
 | |
| case $target in
 | |
| i?86-*-mingw*|x86_64-*-mingw*|aarch64-*-mingw*)
 | |
|   MOZ_CRASHREPORTER=1
 | |
|   ;;
 | |
| i?86-apple-darwin*|x86_64-apple-darwin*|aarch64-apple-darwin*)
 | |
|   MOZ_CRASHREPORTER=1
 | |
|   ;;
 | |
| *-android*|*-linuxandroid*)
 | |
|   dnl Android/arm is arm-unknown-linux-androideabi, so android condition should
 | |
|   dnl be before Linux condition
 | |
|   dnl The crash reporter prevents crash stacktraces to be logged in the
 | |
|   dnl logs so we leave it out by default in developer builds.
 | |
|   if test -z "$DEVELOPER_OPTIONS"; then
 | |
|     MOZ_CRASHREPORTER=1
 | |
|   fi
 | |
|   ;;
 | |
| i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
 | |
|   if test "$MOZ_ENABLE_GTK"; then
 | |
|     MOZ_CRASHREPORTER=1
 | |
|   fi
 | |
|   ;;
 | |
| esac
 | |
| 
 | |
| MOZ_ARG_DISABLE_BOOL(crashreporter,
 | |
| [  --disable-crashreporter Disable breakpad crash reporting],
 | |
|     [MOZ_CRASHREPORTER=],
 | |
|     [MOZ_CRASHREPORTER=F # Force enable breakpad])
 | |
| 
 | |
| if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "Darwin" -a "$MOZ_WIDGET_TOOLKIT" != "android"; then
 | |
|   if test "$MOZ_CRASHREPORTER" = F; then
 | |
|     AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
 | |
|   fi
 | |
|   MOZ_CRASHREPORTER=
 | |
| fi
 | |
| 
 | |
| if test -n "$MOZ_CRASHREPORTER"; then
 | |
|    AC_DEFINE(MOZ_CRASHREPORTER)
 | |
| 
 | |
|   if test "$OS_TARGET" = "Linux" && \
 | |
|     test -z "$SKIP_LIBRARY_CHECKS"; then
 | |
|     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
 | |
|   fi
 | |
| 
 | |
|   if test "$OS_ARCH" = "WINNT"; then
 | |
|     if test -z "$HAVE_64BIT_BUILD" -a -n "$COMPILE_ENVIRONMENT"; then
 | |
|       MOZ_CRASHREPORTER_INJECTOR=1
 | |
|       AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
 | |
|     fi
 | |
|   fi
 | |
| fi
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl = Enable compilation of specific extension modules
 | |
| dnl ========================================================
 | |
| 
 | |
| MOZ_ARG_ENABLE_STRING(extensions,
 | |
| [  --enable-extensions     Enable extensions],
 | |
| [ for option in `echo $enableval | sed 's/,/ /g'`; do
 | |
|     if test "$option" = "yes" -o "$option" = "all"; then
 | |
|         AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
 | |
|     elif test "$option" = "no" -o "$option" = "none"; then
 | |
|         MOZ_EXTENSIONS=""
 | |
|     elif test "$option" = "default"; then
 | |
|         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
 | |
|     elif test `echo "$option" | grep -c \^-` != 0; then
 | |
|         option=`echo $option | sed 's/^-//'`
 | |
|         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
 | |
|     else
 | |
|         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
 | |
|     fi
 | |
| done],
 | |
|     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
 | |
| 
 | |
| dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
 | |
| dnl when trying to build a nonexistent extension.
 | |
| for extension in $MOZ_EXTENSIONS; do
 | |
|     if test ! -d "${srcdir}/extensions/${extension}"; then
 | |
|         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
 | |
|     fi
 | |
| done
 | |
| 
 | |
| # Avoid defining MOZ_ENABLE_CAIRO_FT on Windows platforms because
 | |
| # "cairo-ft-font.c" includes <dlfcn.h>, which only exists on posix platforms
 | |
| if test -n "$MOZ_TREE_FREETYPE" -a "$OS_TARGET" != WINNT; then
 | |
|    MOZ_ENABLE_CAIRO_FT=1
 | |
|    CAIRO_FT_CFLAGS="-I$_topsrcdir/modules/freetype2/include"
 | |
|    AC_SUBST_LIST(CAIRO_FT_CFLAGS)
 | |
| fi
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl Updater
 | |
| dnl ========================================================
 | |
| 
 | |
| MOZ_ARG_DISABLE_BOOL(updater,
 | |
| [  --disable-updater       Disable building of updater],
 | |
|     MOZ_UPDATER=,
 | |
|     MOZ_UPDATER=1 )
 | |
| 
 | |
| if test -n "$MOZ_UPDATER"; then
 | |
|     AC_DEFINE(MOZ_UPDATER)
 | |
| fi
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl parental controls (for Windows Vista)
 | |
| dnl ========================================================
 | |
| MOZ_ARG_DISABLE_BOOL(parental-controls,
 | |
| [  --disable-parental-controls
 | |
|                           Do not build parental controls],
 | |
|    MOZ_DISABLE_PARENTAL_CONTROLS=1,
 | |
|    MOZ_DISABLE_PARENTAL_CONTROLS=)
 | |
| if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
 | |
|     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
 | |
| fi
 | |
| 
 | |
| AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl = Disable smartcard support
 | |
| dnl ========================================================
 | |
| if test -n "$MOZ_NO_SMART_CARDS"; then
 | |
|     AC_DEFINE(MOZ_NO_SMART_CARDS)
 | |
| fi
 | |
| AC_SUBST(MOZ_NO_SMART_CARDS)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl = Sandboxing support
 | |
| dnl ========================================================
 | |
| if test -n "$MOZ_TSAN" -o -n "$MOZ_ASAN"; then
 | |
|     # Bug 1182565: TSan conflicts with sandboxing on Linux.
 | |
|     # Bug 1287971: LSan also conflicts with sandboxing on Linux.
 | |
|     case $OS_TARGET in
 | |
|     Linux|Android)
 | |
|         MOZ_SANDBOX=
 | |
|         ;;
 | |
|     esac
 | |
| fi
 | |
| 
 | |
| MOZ_ARG_DISABLE_BOOL(sandbox,
 | |
| [  --disable-sandbox        Disable sandboxing support],
 | |
|     MOZ_SANDBOX=,
 | |
|     MOZ_SANDBOX=1)
 | |
| 
 | |
| case "$OS_TARGET" in
 | |
| WINNT|Darwin|OpenBSD)
 | |
| ;;
 | |
| Linux)
 | |
|     case $CPU_ARCH in
 | |
|         x86_64|x86|arm|aarch64)
 | |
|         ;;
 | |
|         # Linux sandbox is only available on x86{,_64} and arm{,64}.
 | |
|         *)
 | |
|             MOZ_SANDBOX=
 | |
|         ;;
 | |
|     esac
 | |
|     ;;
 | |
| *)
 | |
|     # Only enable the sandbox by default on Linux, OpenBSD, macOS, and Windows
 | |
|     MOZ_SANDBOX=
 | |
| ;;
 | |
| esac
 | |
| 
 | |
| if test -n "$MOZ_SANDBOX"; then
 | |
|     AC_DEFINE(MOZ_SANDBOX)
 | |
| fi
 | |
| 
 | |
| AC_SUBST(MOZ_SANDBOX)
 | |
| 
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl =
 | |
| dnl = Module specific options
 | |
| dnl =
 | |
| dnl ========================================================
 | |
| MOZ_ARG_HEADER(Individual module options)
 | |
| 
 | |
| dnl ==============================
 | |
| dnl === SQLite fdatasync check ===
 | |
| dnl ==============================
 | |
| dnl Check to see if fdatasync is available and make use of it
 | |
| AC_CHECK_FUNC(fdatasync)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl = Disable zipwriter
 | |
| dnl ========================================================
 | |
| MOZ_ARG_DISABLE_BOOL(zipwriter,
 | |
| [  --disable-zipwriter     Disable zipwriter component],
 | |
|     MOZ_ZIPWRITER=,
 | |
|     MOZ_ZIPWRITER=1 )
 | |
| AC_SUBST(MOZ_ZIPWRITER)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl =
 | |
| dnl = Feature options that require extra sources to be pulled
 | |
| dnl =
 | |
| dnl ========================================================
 | |
| dnl MOZ_ARG_HEADER(Features that require extra sources)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl =
 | |
| dnl = Runtime debugging and Optimization Options
 | |
| dnl =
 | |
| dnl ========================================================
 | |
| MOZ_ARG_HEADER(Runtime debugging and Optimizations)
 | |
| 
 | |
| 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)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl = Enable runtime logging
 | |
| dnl ========================================================
 | |
| AC_DEFINE(MOZ_LOGGING)
 | |
| AC_DEFINE(FORCE_PR_LOG)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl = This will enable logging of addref, release, ctor, dtor.
 | |
| dnl ========================================================
 | |
| _ENABLE_LOGREFCNT=42
 | |
| MOZ_ARG_ENABLE_BOOL(logrefcnt,
 | |
| [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
 | |
|     _ENABLE_LOGREFCNT=1,
 | |
|     _ENABLE_LOGREFCNT= )
 | |
| if test "$_ENABLE_LOGREFCNT" = "1"; then
 | |
|     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
 | |
| elif test -z "$_ENABLE_LOGREFCNT"; then
 | |
|     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
 | |
| fi
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl moz_dump_painting
 | |
| dnl ========================================================
 | |
| MOZ_ARG_ENABLE_BOOL(dump-painting,
 | |
| [  --enable-dump-painting          Enable paint debugging.],
 | |
|     MOZ_DUMP_PAINTING=1,
 | |
|     MOZ_DUMP_PAINTING= )
 | |
| if test -n "$MOZ_DUMP_PAINTING"; then
 | |
|     AC_DEFINE(MOZ_DUMP_PAINTING)
 | |
|     AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
 | |
| fi
 | |
| if test -n "$MOZ_DEBUG"; then
 | |
|     AC_DEFINE(MOZ_DUMP_PAINTING)
 | |
| fi
 | |
| 
 | |
| 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 = frontend JS debug mode
 | |
| dnl ========================================================
 | |
| 
 | |
| MOZ_ARG_ENABLE_BOOL(debug-js-modules,
 | |
| [  --enable-debug-js-modules  Enable debug mode for frontend JS libraries],
 | |
|    DEBUG_JS_MODULES=1,
 | |
|    DEBUG_JS_MODULES=)
 | |
| 
 | |
| AC_SUBST(DEBUG_JS_MODULES)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl =
 | |
| dnl = Profiling and Instrumenting
 | |
| dnl =
 | |
| dnl ========================================================
 | |
| MOZ_ARG_HEADER(Profiling and Instrumenting)
 | |
| 
 | |
| 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
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl =
 | |
| dnl = Misc. Options
 | |
| dnl =
 | |
| dnl ========================================================
 | |
| MOZ_ARG_HEADER(Misc. Options)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl = Location of the mozilla user directory (default is ~/.mozilla).],
 | |
| dnl ========================================================
 | |
| MOZ_ARG_WITH_STRING(user-appdir,
 | |
| [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
 | |
| [ val=`echo $withval`
 | |
| if echo "$val" | grep "\/" >/dev/null; then
 | |
|     AC_MSG_ERROR("Homedir must be single relative path.")
 | |
| else
 | |
|     MOZ_USER_DIR="$val"
 | |
| fi])
 | |
| 
 | |
| AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
 | |
| 
 | |
| if test -z "$SKIP_COMPILER_CHECKS"; then
 | |
| dnl ========================================================
 | |
| dnl =
 | |
| dnl = Compiler Options
 | |
| dnl =
 | |
| dnl ========================================================
 | |
| MOZ_ARG_HEADER(Compiler Options)
 | |
| 
 | |
| 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 =
 | |
| dnl = Static Build Options
 | |
| dnl =
 | |
| dnl ========================================================
 | |
| MOZ_ARG_HEADER(Static build options)
 | |
| 
 | |
| if test -z "$MOZ_SYSTEM_ZLIB"; then
 | |
| if test -n "$JS_SHARED_LIBRARY" -o -n "$MOZ_LINKER" -o "$MOZ_WIDGET_TOOLKIT" = android; then
 | |
|   ZLIB_IN_MOZGLUE=1
 | |
|   AC_DEFINE(ZLIB_IN_MOZGLUE)
 | |
| fi
 | |
| fi
 | |
| 
 | |
| AC_SUBST(ZLIB_IN_MOZGLUE)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl =
 | |
| dnl = Standalone module options
 | |
| dnl =
 | |
| dnl ========================================================
 | |
| MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
 | |
| 
 | |
| dnl Check for GLib.
 | |
| dnl ========================================================
 | |
| 
 | |
| if test -z "$SKIP_PATH_CHECKS"; then
 | |
| if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
 | |
|     if test "$MOZ_ENABLE_GTK" ; then
 | |
|         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
 | |
|     fi
 | |
| fi
 | |
| fi
 | |
| 
 | |
| if test -z "${GLIB_GMODULE_LIBS}" \
 | |
|    -a -n "${GLIB_CONFIG}"\
 | |
|     -a "${GLIB_CONFIG}" != no\
 | |
| ; then
 | |
|     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
 | |
| fi
 | |
| 
 | |
| AC_SUBST_LIST(GLIB_GMODULE_LIBS)
 | |
| 
 | |
| if test "$USE_FC_FREETYPE"; then
 | |
|     if test "$COMPILE_ENVIRONMENT"; then
 | |
|         dnl ========================================================
 | |
|         dnl = Check for freetype2 functionality
 | |
|         dnl ========================================================
 | |
|         if test "$_HAVE_FREETYPE2" -a -z "$MOZ_TREE_FREETYPE"; then
 | |
|             _SAVE_LIBS="$LIBS"
 | |
|             _SAVE_CFLAGS="$CFLAGS"
 | |
|             LIBS="$LIBS $FT2_LIBS"
 | |
|             CFLAGS="$CFLAGS $FT2_CFLAGS"
 | |
| 
 | |
|             AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
 | |
|                 ac_cv_member_FT_Bitmap_Size_y_ppem,
 | |
|                 [AC_TRY_COMPILE([#include <ft2build.h>
 | |
|                                  #include FT_FREETYPE_H],
 | |
|                                 [FT_Bitmap_Size s;
 | |
|                                  if (sizeof s.y_ppem) return 0;
 | |
|                                  return 1],
 | |
|                                 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
 | |
|                                 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
 | |
|             if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
 | |
|                 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
 | |
|             else
 | |
|                 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
 | |
|             fi
 | |
|             AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
 | |
|                                $HAVE_FT_BITMAP_SIZE_Y_PPEM,
 | |
|                                [FT_Bitmap_Size structure includes y_ppem field])
 | |
| 
 | |
|             AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table)
 | |
| 
 | |
|             LIBS="$_SAVE_LIBS"
 | |
|             CFLAGS="$_SAVE_CFLAGS"
 | |
|         fi
 | |
| 
 | |
|         _SAVE_CPPFLAGS="$CPPFLAGS"
 | |
|         CPPFLAGS="$CPPFLAGS $FT2_CFLAGS"
 | |
|         MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
 | |
|             [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
 | |
|         CPPFLAGS="$_SAVE_CPPFLAGS"
 | |
|     fi
 | |
| fi
 | |
| 
 | |
| 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 pixman and cairo
 | |
| dnl ========================================================
 | |
| 
 | |
| MOZ_TREE_PIXMAN=1
 | |
| MOZ_ARG_ENABLE_BOOL(system-pixman,
 | |
| [ --enable-system-pixman Use system pixman (located with pkgconfig)],
 | |
| MOZ_TREE_PIXMAN=,
 | |
| MOZ_TREE_PIXMAN=force,
 | |
| MOZ_TREE_PIXMAN=1 )
 | |
| 
 | |
| if test "$MOZ_TREE_PIXMAN"; then
 | |
|     AC_DEFINE(MOZ_TREE_PIXMAN)
 | |
| else
 | |
|     PKG_CHECK_MODULES(MOZ_PIXMAN, pixman-1 >= 0.36.0)
 | |
| fi
 | |
| 
 | |
| 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
 | |
| 
 | |
| if test "$_HAVE_FREETYPE2"; then
 | |
|     MOZ_ENABLE_CAIRO_FT=1
 | |
|     CAIRO_FT_CFLAGS="$FT2_CFLAGS"
 | |
| 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_CAIRO_FT)
 | |
| AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
 | |
| 
 | |
| AC_SUBST(MOZ_TREE_PIXMAN)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl disable xul
 | |
| dnl ========================================================
 | |
| MOZ_ARG_DISABLE_BOOL(xul,
 | |
| [  --disable-xul           Disable XUL],
 | |
|     MOZ_XUL= )
 | |
| if test "$MOZ_XUL"; then
 | |
|   AC_DEFINE(MOZ_XUL)
 | |
| else
 | |
|   dnl remove extensions that require XUL
 | |
|   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/irc//' -e 's/tasks//'`
 | |
| fi
 | |
| 
 | |
| AC_SUBST(MOZ_XUL)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl necko configuration options
 | |
| dnl ========================================================
 | |
| 
 | |
| dnl
 | |
| dnl option to disable necko's wifi scanner
 | |
| dnl
 | |
| 
 | |
| if test "$MOZ_WIDGET_TOOLKIT"; then
 | |
| 
 | |
|   case "$OS_TARGET" in
 | |
|     Darwin)
 | |
|       NECKO_WIFI=1
 | |
|       ;;
 | |
|     DragonFly|FreeBSD|WINNT)
 | |
|       NECKO_WIFI=1
 | |
|       ;;
 | |
|     Linux)
 | |
|       NECKO_WIFI=1
 | |
|       NECKO_WIFI_DBUS=1
 | |
|       ;;
 | |
|   esac
 | |
| 
 | |
| fi
 | |
| 
 | |
| MOZ_ARG_DISABLE_BOOL(necko-wifi,
 | |
| [  --disable-necko-wifi    Disable necko wifi scanner],
 | |
|     NECKO_WIFI=,
 | |
|     NECKO_WIFI=1)
 | |
| 
 | |
| if test "$NECKO_WIFI"; then
 | |
|   if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
 | |
|     AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
 | |
|   fi
 | |
|   AC_DEFINE(NECKO_WIFI)
 | |
| fi
 | |
| AC_SUBST(NECKO_WIFI)
 | |
| AC_SUBST(NECKO_WIFI_DBUS)
 | |
| 
 | |
| dnl ========================================================
 | |
| dnl =
 | |
| dnl = Maintainer debug option (no --enable equivalent)
 | |
| dnl =
 | |
| dnl ========================================================
 | |
| 
 | |
| AC_SUBST_LIST(ASFLAGS)
 | |
| AC_SUBST(IMPLIB)
 | |
| AC_SUBST(FILTER)
 | |
| AC_SUBST(MOZ_AUTH_EXTENSION)
 | |
| AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS)
 | |
| AC_SUBST_LIST(WARNINGS_CFLAGS)
 | |
| AC_SUBST_SET(MOZ_EXTENSIONS)
 | |
| 
 | |
| AC_SUBST(MOZ_UNIVERSALCHARDET)
 | |
| AC_SUBST(MOZ_SPELLCHECK)
 | |
| AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
 | |
| AC_SUBST(MOZ_CRASHREPORTER)
 | |
| AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
 | |
| AC_SUBST(MOZ_STUB_INSTALLER)
 | |
| AC_SUBST(MOZ_UPDATER)
 | |
| 
 | |
| AC_SUBST(INCREMENTAL_LINKER)
 | |
| 
 | |
| AC_SUBST_LIST(MOZ_FIX_LINK_PATHS)
 | |
| 
 | |
| AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
 | |
| AC_SUBST(MOZ_LINKER_EXTRACT)
 | |
| 
 | |
| 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`
 | |
| 
 | |
| AC_SUBST(MOZ_SYSTEM_PNG)
 | |
| 
 | |
| AC_SUBST_LIST(MOZ_PNG_CFLAGS)
 | |
| AC_SUBST_LIST(MOZ_PNG_LIBS)
 | |
| 
 | |
| 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(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
 | |
| AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
 | |
| AC_SUBST(HAVE_X86_AVX2)
 | |
| AC_SUBST(HAVE_ALTIVEC)
 | |
| 
 | |
| 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 ========================================================
 | |
| 
 | |
| if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
 | |
|     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
 | |
|     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
 | |
|     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
 | |
|     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
 | |
|     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
 | |
|     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
 | |
|     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
 | |
|     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
 | |
| fi
 | |
| 
 | |
| AC_SUBST(MOZ_DEV_EDITION)
 | |
| if test -n "$MOZ_DEV_EDITION"; then
 | |
|     AC_DEFINE(MOZ_DEV_EDITION)
 | |
| fi
 | |
| 
 | |
| if test "$MOZ_DEBUG" -o "$DEVELOPER_OPTIONS"; then
 | |
|     A11Y_LOG=1
 | |
| fi
 | |
| AC_SUBST(A11Y_LOG)
 | |
| if test -n "$A11Y_LOG"; then
 | |
|     AC_DEFINE(A11Y_LOG)
 | |
| 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
 |