mirror of https://github.com/roytam1/UXP
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5990 lines
199 KiB
5990 lines
199 KiB
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 two 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 ======================================================== |
|
MOZJPEG=62 |
|
MOZPNG=10625 |
|
NSPR_VERSION=4 |
|
NSPR_MINVER=4.13.1 |
|
NSS_VERSION=3 |
|
|
|
dnl Set the minimum version of toolkit libs used by mozilla |
|
dnl ======================================================== |
|
GLIB_VERSION=2.22 |
|
# 2_26 is the earliest version we can set GLIB_VERSION_MIN_REQUIRED. |
|
# The macro won't be used when compiling with earlier versions anyway. |
|
GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26 |
|
GIO_VERSION=2.22 |
|
CAIRO_VERSION=1.10 |
|
GTK2_VERSION=2.18.0 |
|
GTK3_VERSION=3.4.0 |
|
GDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_4 |
|
WINDRES_VERSION=2.14.90 |
|
W32API_VERSION=3.14 |
|
GNOMEUI_VERSION=2.2.0 |
|
GCONF_VERSION=1.2.1 |
|
STARTUP_NOTIFICATION_VERSION=0.8 |
|
DBUS_VERSION=0.60 |
|
SQLITE_VERSION=3.21.0 |
|
|
|
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="" |
|
|
|
dnl Do not allow objdir == srcdir builds. |
|
dnl ============================================================== |
|
_topsrcdir=`cd \`dirname $0\`; pwd -W 2>/dev/null || pwd -P` |
|
_objdir=`pwd -P` |
|
|
|
MOZ_BUILD_ROOT=`pwd -W 2>/dev/null || pwd -P` |
|
DIST="$MOZ_BUILD_ROOT/dist" |
|
|
|
MOZ_DEFAULT_COMPILER |
|
|
|
if test "$COMPILE_ENVIRONMENT"; then |
|
MOZ_ANDROID_NDK |
|
fi # COMPILE_ENVIRONMENT |
|
|
|
if test -n "$gonkdir"; then |
|
dnl export for js/src/configure. We can't pass the option down normally, |
|
dnl because it's a `--enable-project=b2g`-only option. |
|
export gonkdir |
|
kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"` |
|
android_source="$gonkdir" |
|
ANDROID_SOURCE="$android_source" |
|
|
|
case "$android_version" in |
|
15) |
|
CPPFLAGS="-I$gonkdir/frameworks/base/opengl/include -I$gonkdir/frameworks/base/native/include -I$gonkdir/frameworks/base/include -I$gonkdir/frameworks/base/services/camera -I$gonkdir/frameworks/base/include/media/ -I$gonkdir/frameworks/base/include/media/stagefright -I$gonkdir/frameworks/base/include/media/stagefright/openmax -I$gonkdir/frameworks/base/media/libstagefright/rtsp -I$gonkdir/frameworks/base/media/libstagefright/include -I$gonkdir/external/dbus -I$gonkdir/dalvik/libnativehelper/include/nativehelper $CPPFLAGS" |
|
MOZ_SECUREELEMENT=1 |
|
;; |
|
17|18) |
|
CPPFLAGS="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include $CPPFLAGS" |
|
MOZ_SECUREELEMENT=1 |
|
;; |
|
19) |
|
CPPFLAGS="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include $CPPFLAGS" |
|
MOZ_AUDIO_OFFLOAD=1 |
|
MOZ_SECUREELEMENT=1 |
|
AC_SUBST(MOZ_AUDIO_OFFLOAD) |
|
AC_DEFINE(MOZ_AUDIO_OFFLOAD) |
|
;; |
|
21|22) |
|
CPPFLAGS="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include $CPPFLAGS" |
|
MOZ_AUDIO_OFFLOAD=1 |
|
AC_SUBST(MOZ_AUDIO_OFFLOAD) |
|
AC_DEFINE(MOZ_AUDIO_OFFLOAD) |
|
;; |
|
*) |
|
AC_MSG_ERROR([Unsupported platform version: $android_version]) |
|
;; |
|
esac |
|
|
|
CPPFLAGS="-I$gonkdir/system -I$gonkdir/system/core/include -I$gonkdir/hardware/libhardware/include -I$gonkdir/external/valgrind/fxos-include $CPPFLAGS" |
|
LDFLAGS="-L$gonkdir/out/target/product/$GONK_PRODUCT/obj/lib -Wl,-rpath-link=$gonkdir/out/target/product/$GONK_PRODUCT/obj/lib $LDFLAGS" |
|
|
|
AC_DEFINE(ANDROID) |
|
AC_DEFINE_UNQUOTED(ANDROID_VERSION, $android_version) |
|
AC_DEFINE(HAVE_SYS_UIO_H) |
|
AC_DEFINE(HAVE_PTHREADS) |
|
|
|
dnl ANDROID_VERSION is only required for the AC_SUBST below |
|
ANDROID_VERSION=$android_version |
|
AC_SUBST(ANDROID_VERSION) |
|
|
|
direct_nspr_config=1 |
|
|
|
else |
|
case "$target" in |
|
*-android*|*-linuxandroid*) |
|
ZLIB_DIR=yes |
|
AC_DEFINE(ANDROID) |
|
;; |
|
*-linux*) |
|
AC_PATH_PROG(OBJCOPY,objcopy) |
|
;; |
|
esac |
|
fi |
|
|
|
case "$target" in |
|
*-apple-darwin*) |
|
MOZ_IOS_SDK |
|
;; |
|
esac |
|
|
|
AC_SUBST(ANDROID_SOURCE) |
|
AC_SUBST(ANDROID_PACKAGE_NAME) |
|
AC_SUBST(OBJCOPY) |
|
|
|
dnl ======================================================== |
|
dnl Checks for compilers. |
|
dnl ======================================================== |
|
|
|
dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269) |
|
AR_FLAGS='crs $@' |
|
|
|
if test "$COMPILE_ENVIRONMENT"; then |
|
|
|
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 |
|
AC_PROG_RANLIB |
|
MOZ_PATH_PROGS(AS, $AS as, $CC) |
|
AC_CHECK_PROGS(AR, ar, :) |
|
AC_CHECK_PROGS(LD, ld, :) |
|
AC_CHECK_PROGS(STRIP, strip, :) |
|
AC_CHECK_PROGS(WINDRES, windres, :) |
|
AC_CHECK_PROGS(OTOOL, otool, :) |
|
if test -z "$HOST_RANLIB"; then |
|
HOST_RANLIB="$RANLIB" |
|
fi |
|
if test -z "$HOST_AR"; then |
|
HOST_AR="$AR" |
|
fi |
|
if test -z "$HOST_AR_FLAGS"; then |
|
HOST_AR_FLAGS="$AR_FLAGS" |
|
fi |
|
fi |
|
|
|
if test -n "$MOZ_WINCONSOLE"; then |
|
AC_DEFINE(MOZ_WINCONSOLE) |
|
fi |
|
|
|
MOZ_TOOL_VARIABLES |
|
|
|
dnl ======================================================== |
|
dnl Special win32 checks |
|
dnl ======================================================== |
|
|
|
WINVER=502 |
|
|
|
case "$target" in |
|
*-mingw*) |
|
if test "$GCC" != "yes"; then |
|
# Check to see if we are really running in a msvc environemnt |
|
_WIN32_MSVC=1 |
|
AC_CHECK_PROGS(MIDL, midl) |
|
|
|
# Make sure compilers are valid |
|
CFLAGS="$CFLAGS -TC -nologo" |
|
CXXFLAGS="$CXXFLAGS -TP -nologo" |
|
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([,]) |
|
|
|
_MSC_VER=`echo ${CC_VERSION} | cut -c 1-2,4-5` |
|
|
|
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. |
|
|
|
case "$CC_VERSION" in |
|
19*) |
|
_CC_SUITE=14 |
|
MSVS_VERSION=2015 |
|
MSVC_C_RUNTIME_DLL=vcruntime140.dll |
|
MSVC_CXX_RUNTIME_DLL=msvcp140.dll |
|
|
|
MOZ_CHECK_HEADER(dia2.h, MSVC_HAS_DIA_SDK=1) |
|
if test -n "$MSVC_HAS_DIA_SDK"; then |
|
AC_DEFINE(MSVC_HAS_DIA_SDK) |
|
fi |
|
|
|
# C5026: move constructor was implicitly defined as deleted |
|
CXXFLAGS="$CXXFLAGS -wd5026" |
|
|
|
# C5027: move assignment operator was implicitly defined as deleted |
|
CXXFLAGS="$CXXFLAGS -wd5027" |
|
|
|
# -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146) |
|
CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-" |
|
|
|
# Disable C++11 thread-safe statics due to crashes on XP (bug 1204752) |
|
# See https://connect.microsoft.com/VisualStudio/feedback/details/1789709/visual-c-2015-runtime-broken-on-windows-server-2003-c-11-magic-statics |
|
CXXFLAGS="$CXXFLAGS -Zc:threadSafeInit-" |
|
|
|
# https://connect.microsoft.com/VisualStudio/feedback/details/888527/warnings-on-dbghelp-h |
|
# for dbghelp.h, imagehlp.h, and shobj.h |
|
# C4091: 'typedef ': ignored on left of '' when no variable is declared |
|
CFLAGS="$CFLAGS -wd4091" |
|
CXXFLAGS="$CXXFLAGS -wd4091" |
|
|
|
# This is intended as a temporary hack to support building with VS2015. |
|
# 'noexcept' used with no exception handling mode specified; |
|
# termination on exception is not guaranteed. Specify /EHsc |
|
CXXFLAGS="$CXXFLAGS -wd4577" |
|
|
|
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` |
|
fi |
|
;; |
|
esac |
|
AC_SUBST(MSVS_VERSION) |
|
AC_SUBST(MSVC_HAS_DIA_SDK) |
|
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` |
|
fi |
|
|
|
# Check linker version |
|
_LD_FULL_VERSION=`"${LD}" -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 |
|
|
|
INCREMENTAL_LINKER=1 |
|
|
|
# Set midl environment |
|
case "$target" in |
|
i*86-*) |
|
MIDL_FLAGS="${MIDL_FLAGS} -env win32" |
|
;; |
|
x86_64-*) |
|
MIDL_FLAGS="${MIDL_FLAGS} -env x64" |
|
;; |
|
esac |
|
|
|
unset _MSVC_VER_FILTER |
|
|
|
AC_CACHE_CHECK(for overridable _RAISE, |
|
ac_cv_have__RAISE, |
|
[ |
|
AC_LANG_SAVE |
|
AC_LANG_CPLUSPLUS |
|
_SAVE_CXXFLAGS="$CXXFLAGS" |
|
CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0" |
|
AC_TRY_COMPILE([#include <xstddef> |
|
#undef _RAISE |
|
#define _RAISE(x) externallyDefinedFunction((x).what()) |
|
#include <vector> |
|
], |
|
[std::vector<int> v; return v.at(1);], |
|
ac_cv_have__RAISE="no", |
|
ac_cv_have__RAISE="yes") |
|
CXXFLAGS="$_SAVE_CXXFLAGS" |
|
AC_LANG_RESTORE |
|
]) |
|
if test "$ac_cv_have__RAISE" = "yes"; then |
|
WRAP_STL_INCLUDES=1 |
|
MOZ_MSVC_STL_WRAP_RAISE=1 |
|
AC_DEFINE(MOZ_MSVC_STL_WRAP_RAISE) |
|
else |
|
AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK. Please file a bug describing this error and your build configuration.]) |
|
fi |
|
|
|
if test "$WRAP_STL_INCLUDES" = "1"; then |
|
STL_FLAGS="-I${DIST}/stl_wrappers" |
|
fi |
|
CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0" |
|
CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0" |
|
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 |
|
# Check windres version |
|
AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION]) |
|
_WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'` |
|
AC_MSG_RESULT([$_WINDRES_VERSION]) |
|
_WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'` |
|
_WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'` |
|
_WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'` |
|
WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'` |
|
WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'` |
|
WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'` |
|
if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \ |
|
"$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \ |
|
"$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \ |
|
"$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \ |
|
"$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \ |
|
"$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION" |
|
then |
|
AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.]) |
|
fi |
|
|
|
AC_CHECK_PROGS(MIDL, $target-widl widl) |
|
if test -n "$MIDL"; then |
|
case "$target" in |
|
i*86-*) |
|
MIDL_FLAGS="$MIDL_FLAGS --win32 -m32" |
|
;; |
|
x86_64-*) |
|
MIDL_FLAGS="$MIDL_FLAGS --win64 -m64" |
|
;; |
|
esac |
|
fi |
|
|
|
# strsafe.h on mingw uses macros for function deprecation that pollutes namespace |
|
# causing problems with local implementations with the same name. |
|
AC_DEFINE(STRSAFE_NO_DEPRECATE) |
|
fi # !GNU_CC |
|
|
|
AC_DEFINE_UNQUOTED(WINVER,0x$WINVER) |
|
AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER) |
|
# Require OS features provided by IE 6.0 SP2 (XP SP2) |
|
AC_DEFINE_UNQUOTED(_WIN32_IE,0x0603) |
|
|
|
;; |
|
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(MIDL_FLAGS) |
|
AC_SUBST(_MSC_VER) |
|
|
|
AC_SUBST(GNU_AS) |
|
AC_SUBST(GNU_LD) |
|
AC_SUBST(GNU_CC) |
|
AC_SUBST(GNU_CXX) |
|
|
|
AC_SUBST(STL_FLAGS) |
|
AC_SUBST(WRAP_STL_INCLUDES) |
|
AC_SUBST(MOZ_MSVC_STL_WRAP_RAISE) |
|
|
|
dnl ======================================================== |
|
dnl Checks for programs. |
|
dnl ======================================================== |
|
if test "$COMPILE_ENVIRONMENT"; then |
|
|
|
dnl ======================================================== |
|
dnl = Mac OS X toolchain support |
|
dnl ======================================================== |
|
|
|
dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk |
|
dnl that a universal binary is being produced. |
|
AC_SUBST(UNIVERSAL_BINARY) |
|
|
|
MOZ_ARG_WITH_STRING(unify-dist, |
|
[ --with-unify-dist=dir Location of the dist directory to unify with at packaging time (Mac OS X universal build only)], |
|
UNIFY_DIST=$withval) |
|
if test -n "$UNIVERSAL_BINARY"; then |
|
if test -z "$UNIFY_DIST"; then |
|
AC_MSG_ERROR([You need to provide the --with-unify-dist=dir argument when performing a universal build]) |
|
fi |
|
case "$UNIFY_DIST" in |
|
/*) |
|
;; |
|
*) |
|
UNIFY_DIST="${MOZ_BUILD_ROOT}/${UNIFY_DIST}" |
|
;; |
|
esac |
|
fi |
|
AC_SUBST(UNIFY_DIST) |
|
|
|
dnl ======================================================== |
|
dnl = Mac OS X SDK support |
|
dnl ======================================================== |
|
MACOS_SDK_DIR= |
|
MOZ_ARG_WITH_STRING(macos-sdk, |
|
[ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)], |
|
MACOS_SDK_DIR=$withval) |
|
|
|
MACOS_PRIVATE_FRAMEWORKS_DIR_DEFAULTED= |
|
MOZ_ARG_WITH_STRING(macos-private-frameworks, |
|
[ --with-macos-private-frameworks=dir Location of private frameworks to use (Mac OS X only)], |
|
MACOS_PRIVATE_FRAMEWORKS_DIR=$withval, |
|
MACOS_PRIVATE_FRAMEWORKS_DIR=/System/Library/PrivateFrameworks |
|
MACOS_PRIVATE_FRAMEWORKS_DEFAULTED=1) |
|
|
|
if test -z "${MACOS_PRIVATE_FRAMEWORKS_DEFAULTED}"; then |
|
if test -z "$CROSS_COMPILE"; then |
|
AC_MSG_WARN([You should only be using --with-macos-private-frameworks when cross-compiling.]) |
|
fi |
|
if test ! -d "$MACOS_PRIVATE_FRAMEWORKS_DIR"; then |
|
AC_MSG_ERROR([PrivateFrameworks directory not found.]) |
|
fi |
|
fi |
|
|
|
dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use. |
|
AC_SUBST(MACOS_SDK_DIR) |
|
AC_SUBST(MACOS_PRIVATE_FRAMEWORKS_DIR) |
|
|
|
if test "$MACOS_SDK_DIR"; then |
|
dnl Sync this section with the ones in NSPR and NSS. |
|
dnl Changes to the cross environment here need to be accounted for in |
|
dnl the libIDL checks (below) and xpidl build. |
|
|
|
if test ! -d "$MACOS_SDK_DIR"; then |
|
AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must |
|
specify a valid SDK. SDKs are installed when the optional cross-development |
|
tools are selected during the Xcode/Developer Tools installation.]) |
|
fi |
|
|
|
CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}" |
|
CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}" |
|
|
|
dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER. |
|
CPP="$CPP -isysroot ${MACOS_SDK_DIR}" |
|
CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}" |
|
|
|
AC_LANG_SAVE |
|
AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination]) |
|
AC_LANG_CPLUSPLUS |
|
AC_TRY_COMPILE([#include <new>],[], |
|
result=yes, |
|
result=no) |
|
AC_LANG_RESTORE |
|
AC_MSG_RESULT($result) |
|
|
|
if test "$result" = "no" ; then |
|
AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.]) |
|
fi |
|
fi |
|
|
|
AC_PATH_XTRA |
|
|
|
XCFLAGS="$X_CFLAGS" |
|
|
|
fi # COMPILE_ENVIRONMENT |
|
|
|
dnl ======================================================== |
|
dnl set the defaults first |
|
dnl ======================================================== |
|
AS_BIN=$AS |
|
AR_EXTRACT='$(AR) x' |
|
AS='$(CC)' |
|
AS_DASH_C_FLAG='-c' |
|
DLL_PREFIX=lib |
|
LIB_PREFIX=lib |
|
DLL_SUFFIX=.so |
|
OBJ_SUFFIX=o |
|
LIB_SUFFIX=a |
|
IMPORT_LIB_SUFFIX= |
|
DIRENT_INO=d_ino |
|
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 |
|
else |
|
if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then |
|
dnl Default Android builds to ARMv7. |
|
MOZ_ARCH=armv7-a |
|
fi |
|
fi # COMPILE_ENVIRONMENT |
|
|
|
dnl ======================================================== |
|
dnl Android libstdc++, placed here so it can use MOZ_ARCH |
|
dnl computed above. |
|
dnl ======================================================== |
|
|
|
MOZ_ANDROID_CPU_ARCH |
|
if test "$COMPILE_ENVIRONMENT"; then |
|
MOZ_ANDROID_STLPORT |
|
fi # COMPILE_ENVIRONMENT |
|
|
|
dnl ======================================================== |
|
dnl Suppress Clang Argument Warnings |
|
dnl ======================================================== |
|
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" |
|
# FIXME: Let us build with strict aliasing. bug 414641. |
|
CFLAGS="$CFLAGS -fno-strict-aliasing" |
|
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(DSO_SONAME) -o $@' |
|
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(DSO_SONAME) -o $@' |
|
WARNINGS_AS_ERRORS='-Werror' |
|
DSO_CFLAGS='' |
|
DSO_PIC_CFLAGS='-fPIC' |
|
ASFLAGS="$ASFLAGS -fPIC" |
|
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]) |
|
[NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,text"], |
|
AC_MSG_RESULT([no]) |
|
LDFLAGS=$_SAVE_LDFLAGS) |
|
|
|
AC_MSG_CHECKING([for --build-id option to ld]) |
|
_SAVE_LDFLAGS=$LDFLAGS |
|
LDFLAGS="$LDFLAGS -Wl,--build-id" |
|
AC_TRY_LINK(,,AC_MSG_RESULT([yes]) |
|
[NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,--build-id"], |
|
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_NO_WLZDEFS"; 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 $(topobjdir)/mozilla-config.h -DMOZILLA_CLIENT' |
|
_USE_CPP_INCLUDE_FLAG=1 |
|
|
|
ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS" |
|
|
|
else |
|
MKSHLIB='$(LD) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' |
|
MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' |
|
|
|
DSO_LDOPTS='-shared' |
|
if test "$GNU_LD"; then |
|
# Don't allow undefined symbols in libraries |
|
DSO_LDOPTS="$DSO_LDOPTS -z defs" |
|
fi |
|
|
|
DSO_CFLAGS='' |
|
DSO_PIC_CFLAGS='-KPIC' |
|
_DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT' |
|
fi |
|
|
|
if test "$GNU_CXX"; then |
|
# FIXME: Let us build with strict aliasing. bug 414641. |
|
CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing" |
|
|
|
_DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(topobjdir)/mozilla-config.h' |
|
_USE_CPP_INCLUDE_FLAG=1 |
|
|
|
else |
|
_DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)' |
|
fi |
|
|
|
dnl ======================================================== |
|
dnl = Use Valgrind |
|
dnl ======================================================== |
|
MOZ_ARG_ENABLE_BOOL(valgrind, |
|
[ --enable-valgrind Enable Valgrind integration hooks (default=no)], |
|
MOZ_VALGRIND=1, |
|
MOZ_VALGRIND= ) |
|
if test -n "$MOZ_VALGRIND"; then |
|
MOZ_CHECK_HEADER([valgrind/valgrind.h], [], |
|
AC_MSG_ERROR( |
|
[--enable-valgrind specified but Valgrind is not installed])) |
|
AC_DEFINE(MOZ_VALGRIND) |
|
fi |
|
AC_SUBST(MOZ_VALGRIND) |
|
|
|
# For profiling builds keep the symbol information |
|
if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then |
|
case "$OS_TARGET" in |
|
Linux|DragonFly|FreeBSD|NetBSD|OpenBSD) |
|
STRIP_FLAGS="--strip-debug" |
|
;; |
|
esac |
|
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_AR=lib |
|
HOST_AR_FLAGS='-NOLOGO -OUT:$@' |
|
HOST_CFLAGS="$HOST_CFLAGS -TC -nologo" |
|
HOST_RANLIB='echo ranlib' |
|
else |
|
HOST_CFLAGS="$HOST_CFLAGS -mwindows" |
|
fi |
|
HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -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 Get mozilla version from central milestone file |
|
dnl ============================================================== |
|
MOZILLA_VERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir` |
|
MOZILLA_UAVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --uaversion` |
|
MOZILLA_SYMBOLVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --symbolversion` |
|
if test -z "$MOZILLA_VERSION"; then |
|
AC_MSG_ERROR([failed to read version info from milestone file]) |
|
fi |
|
|
|
AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION") |
|
AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION) |
|
AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION") |
|
AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION_U,$MOZILLA_UAVERSION) |
|
AC_SUBST(MOZILLA_SYMBOLVERSION) |
|
AC_SUBST(MOZILLA_UAVERSION) |
|
AC_SUBST(MOZILLA_UAVERSION_U) |
|
|
|
MOZ_DOING_LTO(lto_is_enabled) |
|
|
|
dnl ======================================================== |
|
dnl System overrides of the defaults for target |
|
dnl ======================================================== |
|
|
|
case "$target" in |
|
*-darwin*) |
|
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@' |
|
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@' |
|
MOZ_OPTIMIZE_FLAGS="-O3" |
|
CXXFLAGS="$CXXFLAGS -stdlib=libc++" |
|
DLL_SUFFIX=".dylib" |
|
DSO_LDOPTS='' |
|
STRIP_FLAGS="$STRIP_FLAGS -x -S" |
|
# Ensure that if we're targeting iOS an SDK was provided. |
|
AC_CACHE_CHECK(for iOS target, |
|
ac_cv_ios_target, |
|
[AC_TRY_COMPILE([#include <TargetConditionals.h> |
|
#if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR) |
|
#error not iOS |
|
#endif], |
|
[], |
|
ac_cv_ios_target="yes", |
|
ac_cv_ios_target="no")]) |
|
if test "$ac_cv_ios_target" = "yes" -a -z $MOZ_IOS; then |
|
AC_MSG_ERROR([targeting iOS but not using an iOS SDK?]) |
|
fi |
|
if test -n "$MOZ_IOS"; then |
|
direct_nspr_config=1 |
|
else |
|
# 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"; |
|
fi |
|
|
|
if test "x$lto_is_enabled" = "xyes"; then |
|
echo "Skipping -dead_strip because lto is enabled." |
|
dnl DTrace and -dead_strip don't interact well. See bug 403132. |
|
dnl =================================================================== |
|
elif 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 |
|
|
|
dnl With newer linkers we need to pass -allow_heap_execute because of |
|
dnl Microsoft Silverlight (5.1.10411.0 at least). |
|
AC_MSG_CHECKING([for -allow_heap_execute option to ld]) |
|
_SAVE_LDFLAGS=$LDFLAGS |
|
LDFLAGS="$LDFLAGS -Wl,-allow_heap_execute" |
|
AC_TRY_LINK(,[return 0;],_HAVE_ALLOW_HEAP_EXECUTE=1, |
|
_HAVE_ALLOW_HEAP_EXECUTE=) |
|
if test -n "$_HAVE_ALLOW_HEAP_EXECUTE" ; then |
|
AC_MSG_RESULT([yes]) |
|
MOZ_ALLOW_HEAP_EXECUTE_FLAGS="-Wl,-allow_heap_execute" |
|
else |
|
AC_MSG_RESULT([no]) |
|
fi |
|
LDFLAGS=$_SAVE_LDFLAGS |
|
|
|
MOZ_FIX_LINK_PATHS="-Wl,-executable_path,${DIST}/bin" |
|
;; |
|
|
|
*-android*|*-linuxandroid*) |
|
AC_DEFINE(NO_PW_GECOS) |
|
if test -n "$gonkdir"; then |
|
_PLATFORM_HAVE_RIL=1 |
|
MOZ_SYNTH_PICO=1 |
|
else |
|
if test "$COMPILE_ENVIRONMENT"; then |
|
MOZ_LINKER=1 |
|
fi |
|
fi |
|
|
|
MOZ_GFX_OPTIMIZE_MOBILE=1 |
|
MOZ_OPTIMIZE_FLAGS="-O2" |
|
if test -z "$CLANG_CC"; then |
|
MOZ_OPTIMIZE_FLAGS="-freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_FLAGS" |
|
fi |
|
;; |
|
|
|
*-*linux*) |
|
if test "$GNU_CC" -o "$GNU_CXX"; then |
|
MOZ_PGO_OPTIMIZE_FLAGS="-O3" |
|
MOZ_OPTIMIZE_FLAGS="-O2" |
|
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_CFLAGS= |
|
DSO_PIC_CFLAGS= |
|
DLL_SUFFIX=.dll |
|
RC=rc.exe |
|
# 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 |
|
CC="$CC -mwindows" |
|
CXX="$CXX -mwindows" |
|
CPP="$CPP -mwindows" |
|
CFLAGS="$CFLAGS -mms-bitfields" |
|
CXXFLAGS="$CXXFLAGS -mms-bitfields" |
|
DSO_LDOPTS='-shared' |
|
MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@' |
|
MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@' |
|
RC='$(WINDRES)' |
|
# Use static libgcc and libstdc++ |
|
LDFLAGS="$LDFLAGS -static" |
|
NSPR_LDFLAGS="$NSPR_LDFLAGS -static-libgcc" |
|
# Use temp file for windres (bug 213281) |
|
RCFLAGS='-O coff --use-temp-file' |
|
# mingw doesn't require kernel32, user32, and advapi32 explicitly |
|
LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32" |
|
MOZ_FIX_LINK_PATHS= |
|
DLL_PREFIX= |
|
IMPORT_LIB_SUFFIX=a |
|
|
|
WIN32_CONSOLE_EXE_LDFLAGS=-mconsole |
|
WIN32_GUI_EXE_LDFLAGS=-mwindows |
|
|
|
# GCC/binutils can't link to a function if we try to include dllexport function |
|
# in the same library as dllimport caller. To work around it, we build NSPR |
|
# and NSS with -mnop-fun-dllimport flag. The drawback of this solution is that |
|
# function thunks need to be generated for cross-DLL calls. |
|
MOZ_FOLD_LIBS_FLAGS=-mnop-fun-dllimport |
|
else |
|
TARGET_COMPILER_ABI=msvc |
|
HOST_LD='$(LD)' |
|
if test "$AS_BIN"; then |
|
AS="$(basename "$AS_BIN")" |
|
fi |
|
AR='lib' |
|
AR_FLAGS='-NOLOGO -OUT:$@' |
|
AR_EXTRACT= |
|
RANLIB='echo not_ranlib' |
|
STRIP='echo not_strip' |
|
PKG_SKIP_STRIP=1 |
|
OBJ_SUFFIX=obj |
|
LIB_SUFFIX=lib |
|
DLL_PREFIX= |
|
LIB_PREFIX= |
|
IMPORT_LIB_SUFFIX=lib |
|
MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)' |
|
MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)' |
|
dnl Set subsystem version 5 for Windows XP. |
|
if test "$CPU_ARCH" = "x86"; then |
|
WIN32_SUBSYSTEM_VERSION=5.01 |
|
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 |
|
_USE_CPP_INCLUDE_FLAG=1 |
|
_DEFINES_CFLAGS='-FI $(topobjdir)/mozilla-config.h -DMOZILLA_CLIENT' |
|
_DEFINES_CXXFLAGS='-FI $(topobjdir)/mozilla-config.h -DMOZILLA_CLIENT' |
|
CFLAGS="$CFLAGS -W3 -Gy -Zc:inline" |
|
CXXFLAGS="$CXXFLAGS -W3 -Gy -Zc:inline" |
|
if test -z "$CLANG_CL"; then |
|
CFLAGS="$CFLAGS -utf-8" |
|
CXXFLAGS="$CXXFLAGS -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. |
|
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 |
|
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+ requires -FS when parallel building by make -jN. |
|
dnl If nothing, compiler sometimes causes C1041 error. |
|
CFLAGS="$CFLAGS -FS" |
|
CXXFLAGS="$CXXFLAGS -FS" |
|
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" |
|
fi |
|
# khuey says we can safely ignore MSVC warning C4251 |
|
# MSVC warning C4244 (implicit type conversion may lose data) warns |
|
# and requires workarounds for perfectly valid code. Also, GCC/clang |
|
# don't warn about it by default. So for consistency/sanity, we turn |
|
# it off on MSVC, too. |
|
# MSVC warning C4267 warns for narrowing type conversions from size_t |
|
# to 32-bit integer types on 64-bit platforms. Since this is virtually |
|
# the same thing as C4244, we disable C4267, too. |
|
# MSVC warning C4345 warns of newly conformant behavior as of VS2003. |
|
# MSVC warning C4351 warns of newly conformant behavior as of VS2005. |
|
# MSVC warning C4800 warns when a value is implicitly cast to bool, |
|
# because this also forces narrowing to a single byte, which can be a |
|
# perf hit. But this matters so little in practice (and often we want |
|
# that behavior) that it's better to turn it off. |
|
# MSVC warning wd4595 warns non-member operator new or delete functions |
|
# may not be declared inline, as of VS2015 Update 2. |
|
CFLAGS="$CFLAGS -wd4244 -wd4267" |
|
CXXFLAGS="$CXXFLAGS -wd4251 -wd4244 -wd4267 -wd4345 -wd4351 -wd4800 -wd4595" |
|
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" |
|
# MFBT thinks clang-cl supports constexpr, which it does, but |
|
# not everything in Windows C++ headers supports constexpr |
|
# as we might expect until MSVC 2015, so turn off this warning |
|
# for now. |
|
CXXFLAGS="$CXXFLAGS -Wno-invalid-constexpr" |
|
# 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" |
|
# At least one MSVC header and several headers in-tree have |
|
# unused typedefs, so turn this on. |
|
CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef" |
|
# Several JS engine header files use __declspec(dllimport) on |
|
# classes, and clang-cl helpfully warns about its non-support |
|
# for such cases. We're not particularly worried about that, |
|
# so ignore that warning. |
|
CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes" |
|
fi |
|
# make 'foo == bar;' error out |
|
CFLAGS="$CFLAGS -we4553" |
|
CXXFLAGS="$CXXFLAGS -we4553" |
|
LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib" |
|
MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV' |
|
WARNINGS_AS_ERRORS='-WX' |
|
MOZ_OPTIMIZE_FLAGS='-O1 -Oi' |
|
MOZ_FIX_LINK_PATHS= |
|
LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT" |
|
if test -z "$DEVELOPER_OPTIONS"; then |
|
LDFLAGS="$LDFLAGS -RELEASE" |
|
fi |
|
dnl For profile-guided optimization |
|
PROFILE_GEN_CFLAGS="-GL" |
|
num_cores=$($PYTHON -c 'import multiprocessing; print(min(8,multiprocessing.cpu_count()))') |
|
cgthreads="-CGTHREADS:${num_cores}" |
|
PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT -PogoSafeMode $cgthreads" |
|
dnl XXX: PGO builds can fail with warnings treated as errors, |
|
dnl specifically "no profile data available" appears to be |
|
dnl treated as an error sometimes. This might be a consequence |
|
dnl of using WARNINGS_AS_ERRORS in some modules, combined |
|
dnl with the linker doing most of the work in the whole-program |
|
dnl optimization/PGO case. I think it's probably a compiler bug, |
|
dnl but we work around it here. |
|
PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952" |
|
dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul. |
|
dnl Probably also a compiler bug, but what can you do? |
|
PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE $cgthreads" |
|
LDFLAGS="$LDFLAGS -DYNAMICBASE" |
|
RCFLAGS="-nologo" |
|
if test "$CC_VERSION" = "18.00.31101"; then |
|
dnl Use MaxILKSize as a workaround for LNK1248 in VS2013update4 |
|
dnl See https://connect.microsoft.com/VisualStudio/feedback/details/1044914/fatal-error-lnk1248 |
|
LDFLAGS="$LDFLAGS -MaxILKSize:0x7FF00000" |
|
fi |
|
dnl Minimum reqiurement of Gecko is VS2010 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 VS2012 |
|
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 -fno-keep-inline-dllexport" |
|
CXXFLAGS="$CXXFLAGS -mstackrealign -fno-keep-inline-dllexport" |
|
LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup -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_) |
|
;; |
|
*) |
|
AC_DEFINE(_CPU_ARCH_NOT_DEFINED) |
|
;; |
|
esac |
|
;; |
|
|
|
*-netbsd*) |
|
DSO_CFLAGS='' |
|
CFLAGS="$CFLAGS -Dunix" |
|
CXXFLAGS="$CXXFLAGS -Dunix" |
|
if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then |
|
DLL_SUFFIX=".so" |
|
DSO_PIC_CFLAGS='-fPIC -DPIC' |
|
DSO_LDOPTS='-shared' |
|
BIN_FLAGS='-Wl,--export-dynamic' |
|
else |
|
DSO_PIC_CFLAGS='-fPIC -DPIC' |
|
DLL_SUFFIX=".so.1.0" |
|
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 |
|
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(DSO_SONAME) -o $@' |
|
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(DSO_SONAME) -o $@' |
|
;; |
|
|
|
*-openbsd*) |
|
if test "$SO_VERSION"; then |
|
DLL_SUFFIX=".so.$SO_VERSION" |
|
else |
|
DLL_SUFFIX=".so.1.0" |
|
fi |
|
if test -z "$X11BASE"; then |
|
X11BASE=/usr/X11R6 |
|
fi |
|
MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib" |
|
DSO_CFLAGS='' |
|
DSO_PIC_CFLAGS='-fPIC' |
|
DSO_LDOPTS='-shared -fPIC' |
|
if test "$LIBRUNPATH"; then |
|
DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS" |
|
fi |
|
;; |
|
|
|
esac |
|
|
|
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 |
|
|
|
dnl Only one oddball right now (QNX), but this gives us flexibility |
|
dnl if any other platforms need to override this in the future. |
|
AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO) |
|
|
|
dnl ======================================================== |
|
dnl = Flags to strip unused symbols from .so components and |
|
dnl = to export jemalloc symbols when linking a program |
|
dnl ======================================================== |
|
case "$target" in |
|
*-linux*|*-kfreebsd*-gnu|*-gnu*) |
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script' |
|
;; |
|
*-darwin*) |
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list' |
|
;; |
|
*-mingw*) |
|
if test -n "$GNU_CC"; then |
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script' |
|
fi |
|
;; |
|
esac |
|
|
|
if test -z "$COMPILE_ENVIRONMENT"; then |
|
SKIP_COMPILER_CHECKS=1 |
|
SKIP_LIBRARY_CHECKS=1 |
|
PKG_SKIP_STRIP=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 |
|
|
|
dnl Checks for header files. |
|
dnl ======================================================== |
|
AC_HEADER_DIRENT |
|
case "$target_os" in |
|
bitrig*|dragonfly*|freebsd*|openbsd*) |
|
# for stuff like -lXshm |
|
CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}" |
|
;; |
|
esac |
|
|
|
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 |
|
|
|
MOZ_ARG_ENABLE_BOOL(dtrace, |
|
[ --enable-dtrace build with dtrace support if available (default=no)], |
|
[enable_dtrace="yes"],) |
|
if test "x$enable_dtrace" = "xyes"; then |
|
MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1) |
|
if test -n "$HAVE_DTRACE"; then |
|
AC_DEFINE(INCLUDE_MOZILLA_DTRACE) |
|
else |
|
AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]); |
|
fi |
|
fi |
|
AC_SUBST(HAVE_DTRACE) |
|
|
|
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) |
|
|
|
XLDFLAGS="$X_LIBS" |
|
XLIBS="$X_EXTRA_LIBS" |
|
|
|
dnl ======================================================== |
|
dnl Checks for X libraries. |
|
dnl Ordering is important. |
|
dnl Xt is dependent upon SM as of X11R6 |
|
dnl ======================================================== |
|
if test -n "$MOZ_X11"; then |
|
AC_DEFINE_UNQUOTED(FUNCPROTO,15) |
|
_SAVE_LDFLAGS="$LDFLAGS" |
|
_SAVE_LIBS="$LIBS" |
|
LDFLAGS="$XLDFLAGS $LDFLAGS" |
|
AC_CHECK_LIB(X11, XDrawLines, [XLIBS="-lX11 $XLIBS"], |
|
[MISSING_X="$MISSING_X -lX11"], $XLIBS) |
|
AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"], |
|
[MISSING_X="$MISSING_X -lXext"], $XLIBS) |
|
|
|
AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [ |
|
unset ac_cv_lib_Xt_XtFree |
|
AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS) |
|
AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS) |
|
AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"], |
|
[MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS) |
|
]) |
|
|
|
dnl ======================================================== |
|
dnl = Check for xcb |
|
dnl ======================================================== |
|
AC_CHECK_LIB(xcb, xcb_connect, [XLIBS="-lxcb $XLIBS"], |
|
[MISSING_X="$MISSING_X -lxcb"], $XLIBS) |
|
AC_CHECK_LIB(xcb-shm, xcb_shm_query_version, [XLIBS="-lxcb-shm $XLIBS"], |
|
[MISSING_X="$MISSING_X -lxcb-shm"], $XLIBS) |
|
AC_CHECK_LIB(X11-xcb, XGetXCBConnection, [XLIBS="-lX11-xcb $XLIBS"], |
|
[MISSING_X="$MISSING_X -lX11-xcb"], $XLIBS) |
|
|
|
dnl ======================================================== |
|
dnl = Check for Xss |
|
dnl ======================================================== |
|
MOZ_CHECK_HEADER(X11/extensions/scrnsaver.h, |
|
AC_CHECK_LIB(Xss, XScreenSaverQueryInfo, |
|
[XSS_LIBS="-lXss $XEXT_LIBS $XLIBS" |
|
AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS)) |
|
|
|
LDFLAGS="$_SAVE_LDFLAGS" |
|
LIBS="$_SAVE_LIBS" |
|
fi # $MOZ_X11 |
|
|
|
AC_SUBST_LIST(XCFLAGS) |
|
AC_SUBST_LIST(XLDFLAGS) |
|
AC_SUBST_LIST(XLIBS) |
|
AC_SUBST_LIST(XEXT_LIBS) |
|
AC_SUBST_LIST(XT_LIBS) |
|
AC_SUBST_LIST(XSS_LIBS) |
|
|
|
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 Check the command line for --with-pthreads |
|
dnl ======================================================== |
|
MOZ_ARG_WITH_BOOL(pthreads, |
|
[ --with-pthreads Force use of system pthread library with NSPR ], |
|
[ if test "$MOZ_USE_PTHREADS"x = x; then |
|
AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]); |
|
fi], |
|
MOZ_USE_PTHREADS= |
|
_PTHREAD_LDFLAGS= |
|
) |
|
|
|
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_PROG_GCC_TRADITIONAL |
|
AC_FUNC_MEMCMP |
|
AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize gmtime_r localtime_r arc4random arc4random_buf mallinfo gettid lchown setpriority strerror syscall) |
|
|
|
dnl check for clock_gettime(), the CLOCK_MONOTONIC clock |
|
dnl avoid this on Darwin, since depending on your system config, we may think |
|
dnl it exists but it really doesn't |
|
case "$OS_TARGET" in |
|
Darwin) |
|
;; |
|
*) |
|
AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC), |
|
ac_cv_clock_monotonic, |
|
[for libs in "" -lrt; do |
|
_SAVE_LIBS="$LIBS" |
|
LIBS="$LIBS $libs" |
|
AC_TRY_LINK([#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 |
|
;; |
|
esac |
|
|
|
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 |
|
|
|
dnl check for wcrtomb/mbrtowc |
|
dnl ======================================================================= |
|
if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then |
|
AC_LANG_SAVE |
|
AC_LANG_CPLUSPLUS |
|
AC_CACHE_CHECK(for wcrtomb, |
|
ac_cv_have_wcrtomb, |
|
[AC_TRY_LINK([#include <wchar.h>], |
|
[mbstate_t ps={0};wcrtomb(0,'f',&ps);], |
|
ac_cv_have_wcrtomb="yes", |
|
ac_cv_have_wcrtomb="no")]) |
|
if test "$ac_cv_have_wcrtomb" = "yes"; then |
|
AC_DEFINE(HAVE_WCRTOMB) |
|
fi |
|
AC_CACHE_CHECK(for mbrtowc, |
|
ac_cv_have_mbrtowc, |
|
[AC_TRY_LINK([#include <wchar.h>], |
|
[mbstate_t ps={0};mbrtowc(0,0,0,&ps);], |
|
ac_cv_have_mbrtowc="yes", |
|
ac_cv_have_mbrtowc="no")]) |
|
if test "$ac_cv_have_mbrtowc" = "yes"; then |
|
AC_DEFINE(HAVE_MBRTOWC) |
|
fi |
|
AC_LANG_RESTORE |
|
fi |
|
|
|
AC_CACHE_CHECK( |
|
[for res_ninit()], |
|
ac_cv_func_res_ninit, |
|
[if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then |
|
dnl no need for res_ninit() on NetBSD and OpenBSD |
|
ac_cv_func_res_ninit=no |
|
else |
|
AC_TRY_LINK([ |
|
#ifdef linux |
|
#define _BSD_SOURCE 1 |
|
#endif |
|
#include <sys/types.h> |
|
#include <netinet/in.h> |
|
#include <arpa/nameser.h> |
|
#include <resolv.h> |
|
], |
|
[int foo = res_ninit(&_res);], |
|
[ac_cv_func_res_ninit=yes], |
|
[ac_cv_func_res_ninit=no]) |
|
fi |
|
]) |
|
|
|
if test "$ac_cv_func_res_ninit" = "yes"; then |
|
AC_DEFINE(HAVE_RES_NINIT) |
|
dnl must add the link line we do something as foolish as this... dougt |
|
dnl else |
|
dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT), |
|
dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT))) |
|
fi |
|
|
|
AC_LANG_CPLUSPLUS |
|
|
|
ICONV_LIBS= |
|
|
|
case $target_os in |
|
darwin*|mingw*) |
|
;; |
|
*) |
|
|
|
AC_CHECK_LIB(c, iconv, [ICONV_LIBS=], |
|
AC_CHECK_LIB(iconv, iconv, [ICONV_LIBS="-liconv"], |
|
AC_CHECK_LIB(iconv, libiconv, [ICONV_LIBS="-liconv"]))) |
|
_SAVE_LIBS=$LIBS |
|
LIBS="$LIBS $ICONV_LIBS" |
|
AC_CACHE_CHECK( |
|
[for iconv()], |
|
ac_cv_func_iconv, |
|
[AC_TRY_LINK([ |
|
#include <stdlib.h> |
|
#include <iconv.h> |
|
], |
|
[ |
|
iconv_t h = iconv_open("", ""); |
|
iconv(h, NULL, NULL, NULL, NULL); |
|
iconv_close(h); |
|
], |
|
[ac_cv_func_iconv=yes], |
|
[ac_cv_func_iconv=no] |
|
)] |
|
) |
|
if test "$ac_cv_func_iconv" = "yes"; then |
|
AC_DEFINE(HAVE_ICONV) |
|
LIBICONV="$ICONV_LIBS" |
|
AC_CACHE_CHECK( |
|
[for iconv() with const input], |
|
ac_cv_func_const_iconv, |
|
[AC_TRY_COMPILE([ |
|
#include <stdlib.h> |
|
#include <iconv.h> |
|
], |
|
[ |
|
const char *input = "testing"; |
|
iconv_t h = iconv_open("", ""); |
|
iconv(h, &input, NULL, NULL, NULL); |
|
iconv_close(h); |
|
], |
|
[ac_cv_func_const_iconv=yes], |
|
[ac_cv_func_const_iconv=no] |
|
)] |
|
) |
|
if test "$ac_cv_func_const_iconv" = "yes"; then |
|
AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT) |
|
fi |
|
fi |
|
LIBS=$_SAVE_LIBS |
|
|
|
;; |
|
esac |
|
|
|
AC_SUBST_LIST(ICONV_LIBS) |
|
|
|
AM_LANGINFO_CODESET |
|
|
|
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 |
|
|
|
dnl Check to see if we can resolve ambiguity with |using|. |
|
AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity, |
|
ac_cv_cpp_ambiguity_resolving_using, |
|
[AC_TRY_COMPILE(class X { |
|
public: int go(const X&) {return 3;} |
|
int jo(const X&) {return 3;} |
|
}; |
|
class Y : public X { |
|
public: int go(int) {return 2;} |
|
int jo(int) {return 2;} |
|
using X::jo; |
|
private: using X::go; |
|
};, |
|
X x; Y y; y.jo(x);, |
|
ac_cv_cpp_ambiguity_resolving_using=yes, |
|
ac_cv_cpp_ambiguity_resolving_using=no)]) |
|
if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then |
|
AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING) |
|
fi |
|
|
|
dnl See if a dynamic_cast to void* gives the most derived object. |
|
AC_CACHE_CHECK(for C++ dynamic_cast to void*, |
|
ac_cv_cpp_dynamic_cast_void_ptr, |
|
[AC_TRY_RUN([class X { int i; public: virtual ~X() { } }; |
|
class Y { int j; public: virtual ~Y() { } }; |
|
class Z : public X, public Y { int k; }; |
|
|
|
int main() { |
|
Z mdo; |
|
X *subx = (X*)&mdo; |
|
Y *suby = (Y*)&mdo; |
|
return !((((void*)&mdo != (void*)subx) && |
|
((void*)&mdo == dynamic_cast<void*>(subx))) || |
|
(((void*)&mdo != (void*)suby) && |
|
((void*)&mdo == dynamic_cast<void*>(suby)))); |
|
}], |
|
ac_cv_cpp_dynamic_cast_void_ptr=yes, |
|
ac_cv_cpp_dynamic_cast_void_ptr=no, |
|
ac_cv_cpp_dynamic_cast_void_ptr=no)]) |
|
if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then |
|
AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR) |
|
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_PIC_CFLAGS $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 The custom linker doesn't support text relocations, but NDK >= r6b |
|
dnl creates some (http://code.google.com/p/android/issues/detail?id=23203) |
|
dnl We however want to avoid these text relocations, and this can be done |
|
dnl by making gcc not link crtbegin and crtend. In the broken NDKs, crtend |
|
dnl doesn't contain anything at all, beside placeholders for some sections, |
|
dnl and crtbegin only contains a finalizer function that calls |
|
dnl __cxa_finalize. The custom linker actually takes care of calling |
|
dnl __cxa_finalize when the library doesn't call it itself, which makes it |
|
dnl safe not to link crtbegin. Besides, previous versions of the NDK didn't |
|
dnl link crtbegin and crtend at all. |
|
if test -n "$MOZ_LINKER" -a "$OS_TARGET" = "Android"; then |
|
AC_CACHE_CHECK([whether the CRT objects have text relocations], |
|
ac_cv_crt_has_text_relocations, |
|
[echo 'int foo() { return 0; }' > conftest.cpp |
|
if AC_TRY_COMMAND(${CXX-g++} -o conftest${DLL_SUFFIX} $CXXFLAGS $DSO_LDOPTS $LDFLAGS conftest.cpp $LIBS 1>&5) && |
|
test -s conftest${DLL_SUFFIX}; then |
|
if ${TOOLCHAIN_PREFIX}readelf -d conftest${DLL_SUFFIX} | grep TEXTREL > /dev/null; then |
|
ac_cv_crt_has_text_relocations=yes |
|
else |
|
ac_cv_crt_has_text_relocations=no |
|
fi |
|
else |
|
AC_ERROR([couldn't compile a simple C file]) |
|
fi |
|
rm -rf conftest*]) |
|
if test "$ac_cv_crt_has_text_relocations" = yes; then |
|
dnl While we want libraries to skip the CRT files, we don't want |
|
dnl executables to be treated the same way. We thus set the flag |
|
dnl in DSO_LDOPTS and not LDFLAGS. However, to pass it to nspr, |
|
dnl we need to use LDFLAGS because nspr doesn't inherit DSO_LDOPTS. |
|
dnl Using LDFLAGS in nspr is safe, since we only really build |
|
dnl libraries there. |
|
DSO_LDOPTS="$DSO_LDOPTS -nostartfiles" |
|
NSPR_LDFLAGS="$NSPR_LDFLAGS -nostartfiles" |
|
fi |
|
fi |
|
|
|
dnl See if compiler supports some gcc-style attributes |
|
|
|
AC_CACHE_CHECK(for __attribute__((always_inline)), |
|
ac_cv_attribute_always_inline, |
|
[AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));], |
|
[], |
|
ac_cv_attribute_always_inline=yes, |
|
ac_cv_attribute_always_inline=no)]) |
|
|
|
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. |
|
|
|
dnl check for LC_MESSAGES |
|
AC_CACHE_CHECK(for LC_MESSAGES, |
|
ac_cv_i18n_lc_messages, |
|
[AC_TRY_COMPILE([#include <locale.h>], |
|
[int category = LC_MESSAGES;], |
|
ac_cv_i18n_lc_messages=yes, |
|
ac_cv_i18n_lc_messages=no)]) |
|
if test "$ac_cv_i18n_lc_messages" = yes; then |
|
AC_DEFINE(HAVE_I18N_LC_MESSAGES) |
|
fi |
|
|
|
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) |
|
|
|
case "$OS_TARGET" in |
|
WINNT|Darwin|Android) |
|
MOZ_FOLD_LIBS=1 |
|
;; |
|
*) |
|
MOZ_FOLD_LIBS= |
|
;; |
|
esac |
|
|
|
MOZ_CONFIG_NSPR() |
|
|
|
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) |
|
|
|
dnl ======================================================== |
|
dnl = If NSS was not detected in the system, |
|
dnl = use the one in the source tree (mozilla/security/nss) |
|
dnl ======================================================== |
|
|
|
MOZ_ARG_WITH_BOOL(system-nss, |
|
[ --with-system-nss Use system installed NSS], |
|
_USE_SYSTEM_NSS=1 ) |
|
|
|
if test -n "$_USE_SYSTEM_NSS"; then |
|
AM_PATH_NSS(3.28.6, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) |
|
fi |
|
|
|
if test -n "$MOZ_SYSTEM_NSS"; then |
|
NSS_LIBS="$NSS_LIBS -lcrmf" |
|
else |
|
NSS_CFLAGS="-I${DIST}/include/nss" |
|
fi |
|
|
|
if test -z "$SKIP_LIBRARY_CHECKS"; then |
|
dnl system JPEG support |
|
dnl ======================================================== |
|
MOZ_ARG_WITH_STRING(system-jpeg, |
|
[ --with-system-jpeg[=PFX] |
|
Use system libjpeg [installed at prefix PFX]], |
|
JPEG_DIR=$withval) |
|
|
|
_SAVE_CFLAGS=$CFLAGS |
|
_SAVE_LDFLAGS=$LDFLAGS |
|
_SAVE_LIBS=$LIBS |
|
if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then |
|
CFLAGS="-I${JPEG_DIR}/include $CFLAGS" |
|
LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS" |
|
fi |
|
if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then |
|
MOZ_SYSTEM_JPEG= |
|
else |
|
AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [MOZ_SYSTEM_JPEG=1 MOZ_JPEG_LIBS="-ljpeg"], MOZ_SYSTEM_JPEG=) |
|
fi |
|
|
|
if test "$MOZ_SYSTEM_JPEG" = 1; then |
|
AC_TRY_COMPILE([ #include <stdio.h> |
|
#include <sys/types.h> |
|
#include <jpeglib.h> ], |
|
[ #if JPEG_LIB_VERSION < $MOZJPEG |
|
#error "Insufficient JPEG library version ($MOZJPEG required)." |
|
#endif |
|
#ifndef JCS_EXTENSIONS |
|
#error "libjpeg-turbo JCS_EXTENSIONS required" |
|
#endif |
|
], |
|
MOZ_SYSTEM_JPEG=1, |
|
AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg])) |
|
fi |
|
CFLAGS=$_SAVE_CFLAGS |
|
LDFLAGS=$_SAVE_LDFLAGS |
|
LIBS=$_SAVE_LIBS |
|
|
|
if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$MOZ_SYSTEM_JPEG" = 1; then |
|
MOZ_JPEG_CFLAGS="-I${JPEG_DIR}/include" |
|
MOZ_JPEG_LIBS="-L${JPEG_DIR}/lib ${MOZ_JPEG_LIBS}" |
|
fi |
|
fi # SKIP_LIBRARY_CHECKS |
|
|
|
dnl system ZLIB support |
|
dnl ======================================================== |
|
MOZ_ZLIB_CHECK([1.2.3]) |
|
|
|
if test "$MOZ_LINKER" = 1 -a "$MOZ_SYSTEM_ZLIB" != 1; then |
|
AC_MSG_ERROR([Custom dynamic linker requires --with-system-zlib]) |
|
fi |
|
|
|
if test -z "$SKIP_LIBRARY_CHECKS"; then |
|
dnl system BZIP2 Support |
|
dnl ======================================================== |
|
MOZ_ARG_WITH_STRING(system-bz2, |
|
[ --with-system-bz2[=PFX] |
|
Use system libbz2 [installed at prefix PFX]], |
|
BZ2_DIR=$withval) |
|
|
|
_SAVE_CFLAGS=$CFLAGS |
|
_SAVE_LDFLAGS=$LDFLAGS |
|
_SAVE_LIBS=$LIBS |
|
if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then |
|
CFLAGS="-I${BZ2_DIR}/include $CFLAGS" |
|
LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS" |
|
fi |
|
if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then |
|
MOZ_SYSTEM_BZ2= |
|
else |
|
AC_CHECK_LIB(bz2, BZ2_bzread, [MOZ_SYSTEM_BZ2=1 MOZ_BZ2_LIBS="-lbz2"], |
|
[MOZ_SYSTEM_BZ2= MOZ_BZ2_CFLAGS= MOZ_BZ2_LIBS=]) |
|
fi |
|
CFLAGS=$_SAVE_CFLAGS |
|
LDFLAGS=$_SAVE_LDFLAGS |
|
LIBS=$_SAVE_LIBS |
|
|
|
if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$MOZ_SYSTEM_BZ2" = 1; then |
|
MOZ_BZ2_CFLAGS="-I${BZ2_DIR}/include" |
|
MOZ_BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}" |
|
fi |
|
|
|
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_TESTS= |
|
ENABLE_SYSTEM_EXTENSION_DIRS=1 |
|
MOZ_BRANDING_DIRECTORY= |
|
MOZ_OFFICIAL_BRANDING= |
|
MC_OFFICIAL= |
|
MOZ_FEEDS=1 |
|
MOZ_AUTH_EXTENSION=1 |
|
if test "$MOZ_IOS"; then |
|
MOZ_AUTH_EXTENSION= |
|
fi |
|
MOZ_RAW= |
|
MOZ_VORBIS= |
|
MOZ_TREMOR= |
|
MOZ_SAMPLE_TYPE_FLOAT32= |
|
MOZ_SAMPLE_TYPE_S16= |
|
MOZ_DIRECTSHOW= |
|
MOZ_WEBRTC= |
|
MOZ_PEERCONNECTION= |
|
MOZ_SRTP= |
|
MOZ_WEBRTC_SIGNALING= |
|
MOZ_WEBRTC_ASSERT_ALWAYS=1 |
|
MOZ_WEBRTC_HARDWARE_AEC_NS= |
|
MOZ_SCTP= |
|
MOZ_ANDROID_OMX= |
|
MOZ_OMX_PLUGIN= |
|
MOZ_VPX_ERROR_CONCEALMENT= |
|
VPX_USE_YASM= |
|
VPX_ASFLAGS= |
|
VPX_AS_CONVERSION= |
|
VPX_X86_ASM= |
|
VPX_ARM_ASM= |
|
LIBJPEG_TURBO_AS= |
|
LIBJPEG_TURBO_ASFLAGS= |
|
MOZ_PREF_EXTENSIONS=1 |
|
MOZ_REFLOW_PERF= |
|
MOZ_SPELLCHECK=1 |
|
MOZ_TOOLKIT_SEARCH=1 |
|
MOZ_UI_LOCALE=en-US |
|
MOZ_UNIVERSALCHARDET=1 |
|
MOZ_URL_CLASSIFIER= |
|
MOZ_XUL=1 |
|
MOZ_ZIPWRITER=1 |
|
MOZ_NO_SMART_CARDS= |
|
NECKO_COOKIES=1 |
|
MOZ_USE_NATIVE_POPUP_WINDOWS= |
|
MOZ_EXCLUDE_HYPHENATION_DICTIONARIES= |
|
MOZ_INSTALL_TRACKING= |
|
ACCESSIBILITY=1 |
|
MOZ_TIME_MANAGER= |
|
MOZ_AUDIO_CHANNEL_MANAGER= |
|
MOZ_BINARY_EXTENSIONS= |
|
MOZ_JETPACK=1 |
|
MOZ_DEVTOOLS_SERVER=1 |
|
MOZ_DEVTOOLS= |
|
MOZ_PLACES=1 |
|
MOZ_SOCIAL=1 |
|
MOZ_SERVICES_HEALTHREPORT=1 |
|
MOZ_SERVICES_SYNC=1 |
|
MOZ_SERVICES_CLOUDSYNC=1 |
|
|
|
case "$target_os" in |
|
mingw*) |
|
NS_ENABLE_TSF=1 |
|
AC_DEFINE(NS_ENABLE_TSF) |
|
;; |
|
esac |
|
|
|
case "${target}" in |
|
*-android*|*-linuxandroid*) |
|
MOZ_THEME_FASTSTRIPE=1 |
|
MOZ_RAW=1 |
|
;; |
|
|
|
esac |
|
|
|
# Optional Firefox for Android partner distribution directory. |
|
MOZ_ARG_WITH_STRING(android-distribution-directory, |
|
[ --with-android-distribution-directory=dir |
|
Optional Firefox for Android partner distribution directory.], |
|
MOZ_ANDROID_DISTRIBUTION_DIRECTORY=$withval) |
|
|
|
if test -n "$MOZ_ANDROID_DISTRIBUTION_DIRECTORY"; then |
|
# A distribution directory must have an assets/distribution directory. |
|
# See https://wiki.mozilla.org/Mobile/Distribution_Files. |
|
if test ! -d "$MOZ_ANDROID_DISTRIBUTION_DIRECTORY/assets/distribution" ; then |
|
AC_MSG_ERROR([--with-android-distribution-directory does not contain assets/distribution; |
|
(looked for ${MOZ_ANDROID_DISTRIBUTION_DIRECTORY}/assets/distribution).]) |
|
fi |
|
fi |
|
AC_SUBST(MOZ_ANDROID_DISTRIBUTION_DIRECTORY) |
|
|
|
dnl ======================================================== |
|
dnl = Vendor override |
|
dnl ======================================================== |
|
MOZ_ARG_ENABLE_BOOL(official-vendor, |
|
[ --enable-official-vendor This is an official release build.], |
|
MC_OFFICIAL=1, |
|
MC_OFFICIAL=) |
|
|
|
|
|
dnl ======================================================== |
|
dnl = Trademarked Branding |
|
dnl ======================================================== |
|
MOZ_ARG_ENABLE_BOOL(official-branding, |
|
[ --enable-official-branding |
|
Enable Official Branding |
|
Do not distribute builds with |
|
--enable-official-branding unless you have |
|
permission to use our 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 |
|
|
|
# Allow influencing configure with a defines.sh script. |
|
. "${srcdir}/build/defines.sh" |
|
|
|
# If we're not building a release build, define EARLY_BETA_OR_EARLIER if it is |
|
# set in defines.sh |
|
if test "$BUILDING_RELEASE"; then |
|
# Override value in defines.sh, if any |
|
EARLY_BETA_OR_EARLIER= |
|
elif test "$EARLY_BETA_OR_EARLIER"; then |
|
AC_DEFINE(EARLY_BETA_OR_EARLIER) |
|
fi |
|
AC_SUBST(EARLY_BETA_OR_EARLIER) |
|
|
|
# Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig |
|
MOZ_ARG_WITH_STRING(app-name, |
|
[--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME], |
|
WITH_APP_NAME=$withval, |
|
) |
|
|
|
if test -n "$WITH_APP_NAME" ; then |
|
MOZ_APP_NAME="$WITH_APP_NAME" |
|
fi |
|
|
|
MOZ_ARG_WITH_STRING(app-basename, |
|
[--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME], |
|
WITH_APP_BASENAME=$withval, |
|
) |
|
|
|
if test -n "$WITH_APP_BASENAME" ; then |
|
MOZ_APP_BASENAME="$WITH_APP_BASENAME" |
|
fi |
|
|
|
if test -n "$MOZ_B2G"; then |
|
AC_DEFINE(MOZ_B2G) |
|
fi |
|
|
|
# Graphene is a desktop runtime for running applications with a HTML UI. |
|
if test -n "$MOZ_GRAPHENE"; then |
|
AC_DEFINE(MOZ_GRAPHENE) |
|
fi |
|
|
|
AC_SUBST(MOZ_B2G) |
|
AC_SUBST(MOZ_B2G_VERSION) |
|
|
|
dnl ======================================================== |
|
dnl Ensure Android SDK and build-tools versions depending on |
|
dnl mobile target. |
|
dnl ======================================================== |
|
|
|
if test -z "$gonkdir" ; then |
|
case "$MOZ_BUILD_APP" in |
|
mobile/android) |
|
MOZ_ANDROID_SDK(23, 23.0.3 23.0.1) |
|
;; |
|
esac |
|
fi |
|
|
|
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 -lobjc" |
|
# Use -Wl as a trick to avoid -framework and framework names from |
|
# being separated by AC_SUBST_LIST. |
|
TK_LIBS='-Wl,-framework,CoreLocation -Wl,-framework,QuartzCore -Wl,-framework,Carbon -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit -Wl,-framework,AddressBook -Wl,-framework,OpenGL -Wl,-framework,Security -Wl,-framework,ServiceManagement' |
|
TK_CFLAGS="" |
|
CFLAGS="$CFLAGS $TK_CFLAGS" |
|
CXXFLAGS="$CXXFLAGS $TK_CFLAGS" |
|
MOZ_USER_DIR="Mozilla" |
|
MOZ_FS_LAYOUT=bundle |
|
;; |
|
|
|
uikit) |
|
LDFLAGS="$LDFLAGS -framework UIKit -lobjc" |
|
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 |
|
|
|
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" = gtk3; then |
|
PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-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) |
|
GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32 |
|
fi |
|
if test "$MOZ_WIDGET_TOOLKIT" = gtk2; then |
|
GLIB_VERSION_MAX_ALLOWED=$GLIB_VERSION_MIN_REQUIRED |
|
fi |
|
if test "$MOZ_ENABLE_GTK"; then |
|
if test "$MOZ_X11"; then |
|
GDK_PACKAGES=gdk-x11-2.0 |
|
fi |
|
AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED) |
|
AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED) |
|
|
|
PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 >= $GLIB_VERSION gobject-2.0 $GDK_PACKAGES) |
|
MOZ_GTK2_CFLAGS="-I${_topsrcdir}/widget/gtk/compat $MOZ_GTK2_CFLAGS" |
|
fi |
|
if test "$MOZ_WIDGET_TOOLKIT" = gtk2; then |
|
TK_CFLAGS=$MOZ_GTK2_CFLAGS |
|
TK_LIBS=$MOZ_GTK2_LIBS |
|
fi |
|
fi # COMPILE_ENVIRONMENT |
|
|
|
AC_SUBST(MOZ_FS_LAYOUT) |
|
|
|
dnl ======================================================== |
|
dnl = startup-notification support module |
|
dnl ======================================================== |
|
|
|
if test "$MOZ_ENABLE_GTK" |
|
then |
|
MOZ_ENABLE_STARTUP_NOTIFICATION= |
|
|
|
MOZ_ARG_ENABLE_BOOL(startup-notification, |
|
[ --enable-startup-notification |
|
Enable startup-notification support (default: disabled) ], |
|
MOZ_ENABLE_STARTUP_NOTIFICATION=force, |
|
MOZ_ENABLE_STARTUP_NOTIFICATION=) |
|
if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" |
|
then |
|
PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION, |
|
libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION, |
|
[MOZ_ENABLE_STARTUP_NOTIFICATION=1], [ |
|
if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force" |
|
then |
|
AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION]) |
|
fi |
|
MOZ_ENABLE_STARTUP_NOTIFICATION= |
|
]) |
|
fi |
|
|
|
if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then |
|
AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION) |
|
fi |
|
|
|
TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS" |
|
fi |
|
AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION) |
|
|
|
AC_SUBST_LIST(TK_CFLAGS) |
|
AC_SUBST_LIST(TK_LIBS) |
|
|
|
AC_SUBST(MOC) |
|
AC_SUBST(RCC) |
|
|
|
dnl ======================================================== |
|
dnl = |
|
dnl = Components & Features |
|
dnl = |
|
dnl ======================================================== |
|
MOZ_ARG_HEADER(Components and Features) |
|
|
|
dnl ======================================================== |
|
dnl = Localization |
|
dnl ======================================================== |
|
MOZ_ARG_ENABLE_STRING(ui-locale, |
|
[ --enable-ui-locale=ab-CD |
|
Select the user interface locale (default: en-US)], |
|
MOZ_UI_LOCALE=$enableval ) |
|
AC_SUBST(MOZ_UI_LOCALE) |
|
|
|
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) |
|
dnl Using official branding implies an official release build. |
|
MC_OFFICIAL=1 |
|
fi |
|
fi |
|
|
|
AC_SUBST(MC_OFFICIAL) |
|
if test -n "$MC_OFFICIAL"; then |
|
AC_DEFINE(MC_OFFICIAL) |
|
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" |
|
elif test -f "${EXTERNAL_SOURCE_DIR}/$REAL_BRANDING_DIRECTORY/configure.sh"; then |
|
. "${EXTERNAL_SOURCE_DIR}/$REAL_BRANDING_DIRECTORY/configure.sh" |
|
fi |
|
|
|
AC_SUBST(MOZ_BRANDING_DIRECTORY) |
|
|
|
dnl ======================================================== |
|
dnl = Private Build |
|
dnl ======================================================== |
|
MOZ_ARG_ENABLE_BOOL(private-build, |
|
[ --enable-private-build Enable private builds |
|
This allows you to build with official |
|
branding for personal use only using any |
|
build time configuration.], |
|
MC_PRIVATE_BUILD=1, |
|
MC_PRIVATE_BUILD=) |
|
|
|
AC_SUBST(MC_PRIVATE_BUILD) |
|
if test -n "$MC_PRIVATE_BUILD"; then |
|
AC_DEFINE(MC_PRIVATE_BUILD) |
|
fi |
|
|
|
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 Google Play Services, placed here so it can depend on |
|
dnl values set by configure.sh above. |
|
dnl ======================================================== |
|
|
|
MOZ_ANDROID_GOOGLE_PLAY_SERVICES |
|
MOZ_ANDROID_GOOGLE_CLOUD_MESSAGING |
|
MOZ_ANDROID_INSTALL_TRACKING |
|
|
|
|
|
dnl ======================================================== |
|
dnl = GIO and GConf support module |
|
dnl ======================================================== |
|
|
|
if test "$MOZ_X11" |
|
then |
|
dnl build the GIO extension by default only when the |
|
dnl GTK2 toolkit is in use. |
|
if test "$MOZ_ENABLE_GTK" |
|
then |
|
MOZ_ENABLE_GIO=1 |
|
MOZ_ENABLE_GCONF=1 |
|
fi |
|
|
|
dnl ======================================================== |
|
dnl = GIO support module |
|
dnl ======================================================== |
|
MOZ_ARG_DISABLE_BOOL(gio, |
|
[ --disable-gio Disable GIO support], |
|
MOZ_ENABLE_GIO=, |
|
MOZ_ENABLE_GIO=force) |
|
|
|
if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK" |
|
then |
|
if test "$MOZ_WIDGET_TOOLKIT" = gtk2 |
|
then |
|
PKG_CHECK_MODULES(_GTKCHECK, gtk+-2.0 >= 2.14, , |
|
[AC_MSG_ERROR([* * * Could not find gtk+-2.0 > 2.14. Required for build with gio.])]) |
|
fi |
|
PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[ |
|
MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'` |
|
MOZ_ENABLE_GIO=1 |
|
AC_DEFINE(MOZ_ENABLE_GIO) |
|
],[ |
|
if test "$MOZ_ENABLE_GIO" = "force" |
|
then |
|
AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION]) |
|
fi |
|
MOZ_ENABLE_GIO= |
|
]) |
|
fi |
|
|
|
AC_SUBST(MOZ_ENABLE_GIO) |
|
|
|
dnl ======================================================== |
|
dnl = GConf support module |
|
dnl ======================================================== |
|
MOZ_ARG_DISABLE_BOOL(gconf, |
|
[ --disable-gconf Disable Gconf support ], |
|
MOZ_ENABLE_GCONF=, |
|
MOZ_ENABLE_GCONF=1) |
|
|
|
if test "$MOZ_ENABLE_GCONF" |
|
then |
|
PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[ |
|
MOZ_GCONF_LIBS=`$PKG_CONFIG --libs gobject-2.0` |
|
MOZ_ENABLE_GCONF=1 |
|
],[ |
|
if test -n "$MOZ_ENABLE_GCONF"; |
|
then |
|
AC_MSG_ERROR([* * * Could not find gconf-2.0 ]) |
|
else |
|
AC_MSG_WARN([Many automated tests will fail with --disable-gconf. See bug 1167201.]) |
|
fi |
|
]) |
|
fi |
|
|
|
if test "$MOZ_ENABLE_GCONF"; then |
|
AC_DEFINE(MOZ_ENABLE_GCONF) |
|
fi |
|
|
|
AC_SUBST(MOZ_ENABLE_GCONF) |
|
fi |
|
|
|
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 = libgnomeui support module |
|
dnl ======================================================== |
|
|
|
if test "$MOZ_ENABLE_GTK" |
|
then |
|
MOZ_ARG_ENABLE_BOOL(gnomeui, |
|
[ --enable-gnomeui Enable libgnomeui instead of GIO & GTK for icon theme support ], |
|
MOZ_ENABLE_GNOMEUI=force, |
|
MOZ_ENABLE_GNOMEUI=) |
|
|
|
if test "$MOZ_ENABLE_GNOMEUI" |
|
then |
|
PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION, |
|
[ |
|
MOZ_ENABLE_GNOMEUI=1 |
|
],[ |
|
if test "$MOZ_ENABLE_GNOMEUI" = "force" |
|
then |
|
AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION]) |
|
fi |
|
MOZ_ENABLE_GNOMEUI= |
|
]) |
|
fi |
|
|
|
if test "$MOZ_ENABLE_GNOMEUI"; then |
|
AC_DEFINE(MOZ_ENABLE_GNOMEUI) |
|
fi |
|
fi |
|
|
|
AC_SUBST(MOZ_ENABLE_GNOMEUI) |
|
|
|
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) |
|
|
|
dnl ========================================================= |
|
dnl = Whether to exclude hyphenations files in the build |
|
dnl ========================================================= |
|
if test -n "$MOZ_EXCLUDE_HYPHENATION_DICTIONARIES"; then |
|
AC_DEFINE(MOZ_EXCLUDE_HYPHENATION_DICTIONARIES) |
|
fi |
|
|
|
dnl ======================================================== |
|
dnl = Include install tracking on Android |
|
dnl ======================================================== |
|
if test -n "$MOZ_INSTALL_TRACKING"; then |
|
if test -z "$MOZ_ADJUST_SDK_KEY"; then |
|
AC_MSG_ERROR([Must specify --with-adjust-sdk-keyfile when MOZ_INSTALL_TRACKING is defined!]) |
|
fi |
|
fi |
|
|
|
dnl ======================================================== |
|
dnl accessibility support on by default on all platforms |
|
dnl ======================================================== |
|
MOZ_ARG_DISABLE_BOOL(accessibility, |
|
[ --disable-accessibility Disable accessibility support], |
|
ACCESSIBILITY=, |
|
ACCESSIBILITY=1 ) |
|
if test "$ACCESSIBILITY"; then |
|
case "$target" in |
|
*-mingw*) |
|
if test -z "$MIDL"; then |
|
if test "$GCC" != "yes"; then |
|
AC_MSG_ERROR([MIDL could not be found. Building accessibility without MIDL is not supported.]) |
|
else |
|
AC_MSG_ERROR([You have accessibility enabled, but widl could not be found. Add --disable-accessibility to your mozconfig or install widl. See https://developer.mozilla.org/en-US/docs/Cross_Compile_Mozilla_for_Mingw32 for details.]) |
|
fi |
|
fi |
|
esac |
|
AC_DEFINE(ACCESSIBILITY) |
|
fi |
|
|
|
dnl ======================================================== |
|
dnl Accessibility is required for the linuxgl widget |
|
dnl backend |
|
dnl ======================================================== |
|
if test "${MOZ_WIDGET_TOOLKIT}" = "linuxgl" -a "$ACCESSIBILITY" != "1"; then |
|
AC_MSG_ERROR(["Accessibility is required for the linuxgl widget backend"]) |
|
fi |
|
|
|
dnl Turn off webrtc for OS's we don't handle yet, but allow |
|
dnl --enable-webrtc to override. Can disable for everything in |
|
dnl the master list above. |
|
if test -n "$MOZ_WEBRTC"; then |
|
case "$target" in |
|
*-linux*|*-mingw*|*-darwin*|*-android*|*-linuxandroid*|*-dragonfly*|*-freebsd*|*-netbsd*|*-openbsd*) |
|
dnl Leave enabled |
|
;; |
|
*) |
|
dnl default to disabled for all others |
|
MOZ_WEBRTC= |
|
;; |
|
esac |
|
fi |
|
|
|
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) |
|
|
|
# target_arch is from {ia32|x64|arm|ppc} |
|
case "$CPU_ARCH" in |
|
x86_64 | arm | aarch64 | x86 | ppc* | ia64) |
|
: |
|
;; |
|
*) |
|
# unsupported arch for webrtc |
|
MOZ_WEBRTC= |
|
;; |
|
|
|
esac |
|
|
|
dnl ======================================================== |
|
dnl = Enable WebRTC code |
|
dnl ======================================================== |
|
MOZ_ARG_ENABLE_BOOL(webrtc, |
|
[ --enable-webrtc Enable support for WebRTC], |
|
MOZ_WEBRTC=1, |
|
MOZ_WEBRTC=) |
|
|
|
if test -n "$MOZ_WEBRTC"; then |
|
AC_DEFINE(MOZ_WEBRTC) |
|
dnl MOZ_WEBRTC_ASSERT_ALWAYS turns on a number of safety asserts in |
|
dnl opt/production builds (via MOZ_CRASH()) |
|
AC_DEFINE(MOZ_WEBRTC_ASSERT_ALWAYS) |
|
MOZ_RAW=1 |
|
MOZ_VPX_ERROR_CONCEALMENT=1 |
|
|
|
dnl enable once Signaling lands |
|
MOZ_WEBRTC_SIGNALING=1 |
|
AC_DEFINE(MOZ_WEBRTC_SIGNALING) |
|
dnl enable once PeerConnection lands |
|
MOZ_PEERCONNECTION=1 |
|
AC_DEFINE(MOZ_PEERCONNECTION) |
|
MOZ_SCTP=1 |
|
MOZ_SRTP=1 |
|
AC_DEFINE(MOZ_SCTP) |
|
AC_DEFINE(MOZ_SRTP) |
|
if test -n "$MOZ_X11"; then |
|
MOZ_WEBRTC_X11_LIBS="-lXext -lXdamage -lXfixes -lXcomposite" |
|
fi |
|
else |
|
MOZ_SYNTH_PICO= |
|
fi |
|
|
|
dnl ======================================================== |
|
dnl = Force hardware AEC, disable webrtc.org AEC |
|
dnl ======================================================== |
|
MOZ_ARG_ENABLE_BOOL(hardware-aec-ns, |
|
[ --enable-hardware-aec-ns Enable support for hardware AEC and noise suppression], |
|
MOZ_WEBRTC_HARDWARE_AEC_NS=1, |
|
MOZ_WEBRTC_HARDWARE_AEC_NS=) |
|
|
|
if test -n "$MOZ_WEBRTC_HARDWARE_AEC_NS"; then |
|
AC_DEFINE(MOZ_WEBRTC_HARDWARE_AEC_NS) |
|
fi |
|
|
|
AC_SUBST(MOZ_WEBRTC) |
|
AC_SUBST(MOZ_WEBRTC_SIGNALING) |
|
AC_SUBST(MOZ_PEERCONNECTION) |
|
AC_SUBST(MOZ_WEBRTC_ASSERT_ALWAYS) |
|
AC_SUBST(MOZ_WEBRTC_HARDWARE_AEC_NS) |
|
AC_SUBST(MOZ_SCTP) |
|
AC_SUBST(MOZ_SRTP) |
|
AC_SUBST_LIST(MOZ_WEBRTC_X11_LIBS) |
|
|
|
dnl Use integers over floats for audio on B2G and Android |
|
dnl (regarless of the CPU architecture, because audio |
|
dnl backends for those platforms don't support floats. We also |
|
dnl use integers on ARM with other OS, because it's more efficient. |
|
if test "$OS_TARGET" = "Android" -o "$CPU_ARCH" = "arm"; then |
|
MOZ_SAMPLE_TYPE_S16=1 |
|
AC_DEFINE(MOZ_SAMPLE_TYPE_S16) |
|
AC_SUBST(MOZ_SAMPLE_TYPE_S16) |
|
else |
|
MOZ_SAMPLE_TYPE_FLOAT32=1 |
|
AC_DEFINE(MOZ_SAMPLE_TYPE_FLOAT32) |
|
AC_SUBST(MOZ_SAMPLE_TYPE_FLOAT32) |
|
fi |
|
|
|
dnl ======================================================== |
|
dnl = Enable Raw Codecs |
|
dnl ======================================================== |
|
MOZ_ARG_ENABLE_BOOL(raw, |
|
[ --enable-raw Enable support for RAW media], |
|
MOZ_RAW=1, |
|
MOZ_RAW=) |
|
|
|
if test -n "$MOZ_RAW"; then |
|
AC_DEFINE(MOZ_RAW) |
|
fi |
|
|
|
AC_SUBST(MOZ_RAW) |
|
|
|
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_HEADER([CoreMedia/CoreMedia.h], [], |
|
[AC_MSG_ERROR([MacOS X 10.7 SDK or later is required])]) |
|
fi |
|
fi # COMPILE_ENVIRONMENT |
|
|
|
dnl ======================================================== |
|
dnl = DirectShow support |
|
dnl ======================================================== |
|
if test "$OS_ARCH" = "WINNT"; then |
|
dnl Enable DirectShow support by default. |
|
MOZ_DIRECTSHOW=1 |
|
fi |
|
|
|
MOZ_ARG_DISABLE_BOOL(directshow, |
|
[ --disable-directshow Disable support for DirectShow], |
|
MOZ_DIRECTSHOW=, |
|
MOZ_DIRECTSHOW=1) |
|
|
|
if test -n "$MOZ_DIRECTSHOW"; then |
|
AC_DEFINE(MOZ_DIRECTSHOW) |
|
fi; |
|
|
|
dnl ======================================================== |
|
dnl = Built-in fragmented MP4 support. |
|
dnl ======================================================== |
|
|
|
if test x"$MOZ_WIDGET_TOOLKIT" = x"gonk" -a -n "$MOZ_FMP4" -a -n "$android_version"; then |
|
# we now know for sure that $android_version is not an empty string! |
|
if test "$android_version" -ge "18"; then |
|
MOZ_GONK_MEDIACODEC=1 |
|
AC_SUBST(MOZ_GONK_MEDIACODEC) |
|
fi |
|
fi |
|
|
|
dnl ======================================================== |
|
dnl = EME support |
|
dnl ======================================================== |
|
|
|
MOZ_ARG_ENABLE_STRING(eme, |
|
[ --enable-eme[=widevine] Enable support for Encrypted Media Extensions ], |
|
MOZ_EME_ARGS=$enableval) |
|
|
|
if test "$MOZ_EME_ARGS"; then |
|
if test "$MOZ_EME_ARGS" = "no"; then |
|
dnl EME explicitly disabled with --disable-eme |
|
MOZ_EME= |
|
elif test "$MOZ_EME_ARGS" = "yes"; then |
|
dnl EME explicitly enabled with --enable-eme |
|
MOZ_EME=1 |
|
else |
|
dnl EME explicitly enabled with --enable-eme=<args> |
|
MOZ_EME=1 |
|
MOZ_EME_MODULES=`echo $MOZ_EME_ARGS | sed -e 's/,/ /g'` |
|
fi |
|
fi |
|
|
|
AC_SUBST_SET(MOZ_EME_MODULES) |
|
if test -n "$MOZ_EME"; then |
|
if test -z "$MOZ_FMP4"; then |
|
AC_MSG_ERROR([Encrypted Media Extension support requires Fragmented MP4 support]) |
|
fi |
|
AC_DEFINE(MOZ_EME) |
|
fi |
|
|
|
dnl ======================================================== |
|
dnl = Enable media plugin support |
|
dnl ======================================================== |
|
if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then |
|
dnl Enable support on android by default |
|
MOZ_ANDROID_OMX=1 |
|
fi |
|
|
|
MOZ_ARG_ENABLE_BOOL(android-omx, |
|
[ --enable-android-omx Enable support for Android OMX media backend], |
|
MOZ_ANDROID_OMX=1, |
|
MOZ_ANDROID_OMX=) |
|
|
|
if test -n "$MOZ_ANDROID_OMX"; then |
|
AC_DEFINE(MOZ_ANDROID_OMX) |
|
fi |
|
|
|
dnl ======================================================== |
|
dnl = Enable building OMX media plugin (B2G or Android) |
|
dnl ======================================================== |
|
if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then |
|
dnl Enable support on android by default |
|
MOZ_OMX_PLUGIN=1 |
|
fi |
|
|
|
MOZ_ARG_ENABLE_BOOL(omx-plugin, |
|
[ --enable-omx-plugin Enable building OMX plugin (B2G)], |
|
MOZ_OMX_PLUGIN=1, |
|
MOZ_OMX_PLUGIN=) |
|
|
|
if test -n "$MOZ_OMX_PLUGIN"; then |
|
if test "$OS_TARGET" = "Android"; then |
|
dnl Only allow building OMX plugin on Gonk (B2G) or Android |
|
AC_DEFINE(MOZ_OMX_PLUGIN) |
|
else |
|
dnl fail if we're not building on Gonk or Android |
|
AC_MSG_ERROR([OMX media plugin can only be built on B2G or Android]) |
|
fi |
|
fi |
|
|
|
dnl system libvpx Support |
|
dnl ======================================================== |
|
MOZ_ARG_WITH_BOOL(system-libvpx, |
|
[ --with-system-libvpx Use system libvpx (located with pkgconfig)], |
|
MOZ_SYSTEM_LIBVPX=1) |
|
|
|
MOZ_LIBVPX_CFLAGS= |
|
MOZ_LIBVPX_LIBS= |
|
|
|
if test -n "$MOZ_VPX_ERROR_CONCEALMENT" ; then |
|
AC_DEFINE(MOZ_VPX_ERROR_CONCEALMENT) |
|
fi |
|
|
|
_SAVE_CFLAGS=$CFLAGS |
|
_SAVE_LIBS=$LIBS |
|
if test -n "$MOZ_SYSTEM_LIBVPX"; then |
|
dnl ============================ |
|
dnl === libvpx Version check === |
|
dnl ============================ |
|
dnl Check to see if we have a system libvpx package. |
|
PKG_CHECK_MODULES(MOZ_LIBVPX, vpx >= 1.5.0) |
|
|
|
CFLAGS="$CFLAGS $MOZ_LIBVPX_CFLAGS" |
|
LIBS="$LIBS $MOZ_LIBVPX_LIBS" |
|
|
|
MOZ_CHECK_HEADER([vpx/vpx_decoder.h], [], |
|
[AC_MSG_ERROR([Couldn't find vpx/vpx_decoder.h which is required for build with system libvpx. Use --without-system-libvpx to build with in-tree libvpx.])]) |
|
|
|
AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver, [], |
|
[AC_MSG_ERROR([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found])]) |
|
|
|
MOZ_CHECK_HEADER([vpx_mem/vpx_mem.h], |
|
[AC_CHECK_FUNC(vpx_mem_set_functions)]) |
|
if test "$ac_cv_header_vpx_mem_vpx_mem_h" = no -o \ |
|
"$ac_cv_func_vpx_mem_set_functions" = no; then |
|
AC_DEFINE(MOZ_VPX_NO_MEM_REPORTING) |
|
fi |
|
fi |
|
CFLAGS=$_SAVE_CFLAGS |
|
LIBS=$_SAVE_LIBS |
|
|
|
AC_SUBST(MOZ_SYSTEM_LIBVPX) |
|
AC_SUBST_LIST(MOZ_LIBVPX_CFLAGS) |
|
AC_SUBST_LIST(MOZ_LIBVPX_LIBS) |
|
|
|
if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then |
|
MOZ_VORBIS=1 |
|
else |
|
MOZ_TREMOR=1 |
|
fi |
|
|
|
if test -z "$MOZ_SYSTEM_LIBVPX"; then |
|
|
|
dnl Detect if we can use an assembler to compile optimized assembly for libvpx. |
|
dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32. |
|
dnl We currently require gcc on all arm platforms. |
|
|
|
dnl See if we have assembly on this platform. |
|
case "$OS_ARCH:$CPU_ARCH" in |
|
Darwin:x86) |
|
VPX_USE_YASM=1 |
|
VPX_X86_ASM=1 |
|
;; |
|
Darwin:x86_64) |
|
VPX_USE_YASM=1 |
|
VPX_X86_ASM=1 |
|
;; |
|
WINNT:x86_64) |
|
VPX_USE_YASM=1 |
|
VPX_X86_ASM=1 |
|
;; |
|
WINNT:x86) |
|
dnl Check for yasm 1.1 or greater. |
|
if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then |
|
AC_MSG_ERROR([yasm 1.1 or greater is required to build libvpx on Win32, but it appears not to be installed. Install it (included in MozillaBuild 1.5.1 and newer) or configure with --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.]) |
|
elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then |
|
AC_MSG_ERROR([yasm 1.1 or greater is required to build libvpx on Win32, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION. Upgrade to the newest version (included in MozillaBuild 1.5.1 and newer) or configure with --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.]) |
|
else |
|
VPX_USE_YASM=1 |
|
VPX_X86_ASM=1 |
|
dnl The encoder needs obj_int_extract to get asm offsets. |
|
fi # COMPILE_ENVIRONMENT and others |
|
;; |
|
*:arm*) |
|
if test -n "$GNU_AS" ; then |
|
dnl These flags are a lie; they're just used to enable the requisite |
|
dnl opcodes; actual arch detection is done at runtime. |
|
VPX_ASFLAGS="-march=armv7-a -mfpu=neon" |
|
VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl' |
|
VPX_ARM_ASM=1 |
|
dnl Building with -mfpu=neon requires either the "softfp" or the |
|
dnl "hardfp" ABI. Depending on the compiler's default target, and the |
|
dnl CFLAGS, the default ABI might be neither, in which case it is the |
|
dnl "softfloat" ABI. |
|
dnl The "softfloat" ABI is binary-compatible with the "softfp" ABI, so |
|
dnl we can safely mix code built with both ABIs. So, if we detect |
|
dnl that compiling uses the "softfloat" ABI, force the use of the |
|
dnl "softfp" ABI instead. |
|
dnl Confusingly, the __SOFTFP__ preprocessor variable indicates the |
|
dnl "softfloat" ABI, not the "softfp" ABI. |
|
dnl Note: VPX_ASFLAGS is also used in CFLAGS. |
|
AC_TRY_COMPILE([], |
|
[#ifndef __SOFTFP__ |
|
#error "compiler target supports -mfpu=neon, so we don't have to add extra flags" |
|
#endif], |
|
VPX_ASFLAGS="$VPX_ASFLAGS -mfloat-abi=softfp" |
|
) |
|
fi |
|
;; |
|
*:x86) |
|
if $CC -E -dM -</dev/null | grep -q __ELF__; then |
|
VPX_USE_YASM=1 |
|
VPX_X86_ASM=1 |
|
fi |
|
;; |
|
*:x86_64) |
|
if $CC -E -dM -</dev/null | grep -q __ELF__; then |
|
VPX_USE_YASM=1 |
|
VPX_X86_ASM=1 |
|
fi |
|
;; |
|
esac |
|
|
|
if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_USE_YASM" -a -z "$YASM"; then |
|
AC_MSG_ERROR([yasm is a required build tool for this architecture when webm is enabled. You may either install yasm or --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.]) |
|
fi # COMPILE_ENVIRONMENT and others |
|
|
|
if test -n "$VPX_USE_YASM" && test "$OS_ARCH:$CPU_ARCH" != "WINNT:x86_64"; then |
|
VPX_ASFLAGS="-DPIC" |
|
fi |
|
|
|
if test -n "$VPX_X86_ASM"; then |
|
AC_DEFINE(VPX_X86_ASM) |
|
elif test -n "$VPX_ARM_ASM"; then |
|
AC_DEFINE(VPX_ARM_ASM) |
|
else |
|
AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.]) |
|
fi |
|
|
|
dnl native libvpx no longer has vpx_mem_set_functions |
|
AC_DEFINE(MOZ_VPX_NO_MEM_REPORTING) |
|
fi |
|
|
|
dnl ======================================================== |
|
dnl = Handle dependent MEDIA defines |
|
dnl ======================================================== |
|
|
|
if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then |
|
AC_MSG_ERROR([MOZ_VORBIS and MOZ_TREMOR are mutually exclusive! The build system should not allow them both to be set, but they are. Please file a bug at https://bugzilla.mozilla.org/]) |
|
fi |
|
|
|
if test -n "$MOZ_VORBIS"; then |
|
AC_DEFINE(MOZ_VORBIS) |
|
fi |
|
|
|
if test -n "$MOZ_TREMOR"; then |
|
AC_DEFINE(MOZ_TREMOR) |
|
fi |
|
|
|
MOZ_WEBM_ENCODER=1 |
|
AC_DEFINE(MOZ_WEBM_ENCODER) |
|
AC_SUBST(MOZ_WEBM_ENCODER) |
|
|
|
dnl ================================== |
|
dnl = Check alsa availability on Linux |
|
dnl ================================== |
|
|
|
dnl If using Linux, enable the alsa library by default |
|
if test "$OS_TARGET" = "Linux"; then |
|
MOZ_ALSA=1 |
|
fi |
|
|
|
MOZ_ARG_ENABLE_BOOL(alsa, |
|
[ --enable-alsa Enable Alsa support (default on Linux)], |
|
MOZ_ALSA=1, |
|
MOZ_ALSA=) |
|
|
|
if test -n "$MOZ_ALSA"; then |
|
PKG_CHECK_MODULES(MOZ_ALSA, alsa, , |
|
[echo "$MOZ_ALSA_PKG_ERRORS" |
|
AC_MSG_ERROR([You need ALSA for audio output on Linux.])]) |
|
fi |
|
|
|
AC_SUBST(MOZ_ALSA) |
|
|
|
dnl ======================================================== |
|
dnl = Disable PulseAudio |
|
dnl ======================================================== |
|
|
|
dnl If using Desktop Linux, ensure that the PA library is available |
|
case "$OS_TARGET" in |
|
WINNT|Darwin|Android|OpenBSD) |
|
;; |
|
*) |
|
MOZ_PULSEAUDIO=1 |
|
;; |
|
esac |
|
|
|
MOZ_ARG_DISABLE_BOOL(pulseaudio, |
|
[ --disable-pulseaudio Disable PulseAudio support], |
|
MOZ_PULSEAUDIO=, |
|
MOZ_PULSEAUDIO=1) |
|
|
|
if test -n "$MOZ_PULSEAUDIO"; then |
|
AC_DEFINE(MOZ_PULSEAUDIO) |
|
if test -z "$gonkdir"; then |
|
PKG_CHECK_MODULES(MOZ_PULSEAUDIO, libpulse, , |
|
[echo "$MOZ_PULSEAUDIO_PKG_ERRORS" |
|
AC_MSG_ERROR([Building pulseaudio audio backend requires libpulse development package])]) |
|
else |
|
MOZ_PULSEAUDIO_CFLAGS="-I$gonkdir/external/pulseaudio/pulseaudio/src" |
|
fi |
|
fi |
|
|
|
AC_SUBST(MOZ_PULSEAUDIO) |
|
|
|
dnl ======================================================== |
|
dnl NegotiateAuth |
|
dnl ======================================================== |
|
|
|
MOZ_ARG_DISABLE_BOOL(negotiateauth, |
|
[ --disable-negotiateauth Disable GSS-API negotiation ], |
|
MOZ_AUTH_EXTENSION=, |
|
MOZ_AUTH_EXTENSION=1 ) |
|
|
|
if test -n "$MOZ_IOS" -a -n "$MOZ_AUTH_EXTENSION"; then |
|
AC_MSG_ERROR([negotiateauth is not supported on iOS.]) |
|
fi |
|
|
|
dnl ======================================================== |
|
dnl Pref extensions (autoconfig) |
|
dnl ======================================================== |
|
MOZ_ARG_DISABLE_BOOL(pref-extensions, |
|
[ --disable-pref-extensions |
|
Disable pref extensions such as autoconfig], |
|
MOZ_PREF_EXTENSIONS=, |
|
MOZ_PREF_EXTENSIONS=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 = ANGLE OpenGL->D3D translator for WebGL |
|
dnl = * only applies to win32 |
|
dnl ======================================================== |
|
|
|
MOZ_ANGLE_RENDERER= |
|
MOZ_D3D_CPU_SUFFIX= |
|
MOZ_HAS_WINSDK_WITH_D3D= |
|
MOZ_D3DCOMPILER_VISTA_DLL= |
|
MOZ_D3DCOMPILER_VISTA_DLL_PATH= |
|
MOZ_DIRECTX_SDK_PATH= |
|
MOZ_D3DCOMPILER_XP_DLL= |
|
MOZ_D3DCOMPILER_XP_CAB= |
|
|
|
if test "$COMPILE_ENVIRONMENT" ; then |
|
case "$target_os" in |
|
*mingw*) |
|
MOZ_ANGLE_RENDERER=1 |
|
;; |
|
esac |
|
|
|
# The DirectX SDK libraries are split into x86 and x64 sub-directories |
|
case "${target_cpu}" in |
|
i*86) |
|
MO |