mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-30 13:45:27 +00:00
9099 lines
299 KiB
Plaintext
9099 lines
299 KiB
Plaintext
|
|
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
|
|
TARGET_CPU="${target_cpu}"
|
|
TARGET_VENDOR="${target_vendor}"
|
|
TARGET_OS="${target_os}"
|
|
|
|
MOZ_DEB_TIMESTAMP=`date +"%a, %d %b %Y %T %z" 2>&1`
|
|
AC_SUBST(MOZ_DEB_TIMESTAMP)
|
|
|
|
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=10513
|
|
NSPR_VERSION=4
|
|
NSS_VERSION=3
|
|
|
|
dnl Set the minimum version of toolkit libs used by mozilla
|
|
dnl ========================================================
|
|
GLIB_VERSION=1.2.0
|
|
PERL_VERSION=5.006
|
|
CAIRO_VERSION=1.10
|
|
PANGO_VERSION=1.14.0
|
|
GTK2_VERSION=2.10.0
|
|
WINDRES_VERSION=2.14.90
|
|
W32API_VERSION=3.14
|
|
GNOMEVFS_VERSION=2.0
|
|
GNOMEUI_VERSION=2.2.0
|
|
GCONF_VERSION=1.2.1
|
|
GIO_VERSION=2.20
|
|
STARTUP_NOTIFICATION_VERSION=0.8
|
|
DBUS_VERSION=0.60
|
|
SQLITE_VERSION=3.7.14.1
|
|
|
|
MSMANIFEST_TOOL=
|
|
|
|
dnl Set various checks
|
|
dnl ========================================================
|
|
MISSING_X=
|
|
AC_PROG_AWK
|
|
|
|
dnl Initialize the Pthread test variables early so they can be
|
|
dnl overridden by each platform.
|
|
dnl ========================================================
|
|
USE_PTHREADS=
|
|
_PTHREAD_LDFLAGS=""
|
|
|
|
dnl Do not allow a separate objdir build if a srcdir build exists.
|
|
dnl ==============================================================
|
|
_topsrcdir=`cd \`dirname $0\`; pwd`
|
|
_objdir=`pwd`
|
|
|
|
if test "$_topsrcdir" != "$_objdir"
|
|
then
|
|
# Check for a couple representative files in the source tree
|
|
_conflict_files=
|
|
for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
|
|
if test -f $file; then
|
|
_conflict_files="$_conflict_files $file"
|
|
fi
|
|
done
|
|
if test "$_conflict_files"; then
|
|
echo "***"
|
|
echo "* Your source tree contains these files:"
|
|
for file in $_conflict_files; do
|
|
echo "* $file"
|
|
done
|
|
cat 1>&2 <<-EOF
|
|
* This indicates that you previously built in the source tree.
|
|
* A source tree build can confuse the separate objdir build.
|
|
*
|
|
* To clean up the source tree:
|
|
* 1. cd $_topsrcdir
|
|
* 2. gmake distclean
|
|
***
|
|
EOF
|
|
exit 1
|
|
break
|
|
fi
|
|
fi
|
|
MOZ_BUILD_ROOT=`pwd`
|
|
|
|
MOZ_PATH_PROGS(PYTHON, $PYTHON python2.7 python2.6 python2.5 python)
|
|
if test -z "$PYTHON"; then
|
|
AC_MSG_ERROR([python was not found in \$PATH])
|
|
fi
|
|
|
|
AC_MSG_RESULT([Creating Python environment])
|
|
dnl This verifies our Python version is sane and ensures the Python
|
|
dnl virtualenv is present and up to date. It sanitizes the environment
|
|
dnl for us, so we don't need to clean anything out.
|
|
$PYTHON $_topsrcdir/build/virtualenv/populate_virtualenv.py \
|
|
$_topsrcdir $MOZ_BUILD_ROOT/_virtualenv || exit 1
|
|
|
|
dnl Create a virtualenv where we can install local Python packages
|
|
case "$host_os" in
|
|
mingw*)
|
|
PYTHON=`cd $MOZ_BUILD_ROOT && pwd -W`/_virtualenv/Scripts/python.exe
|
|
;;
|
|
*)
|
|
PYTHON=$MOZ_BUILD_ROOT/_virtualenv/bin/python
|
|
;;
|
|
esac
|
|
|
|
AC_SUBST(PYTHON)
|
|
|
|
MOZ_DEFAULT_COMPILER
|
|
|
|
COMPILE_ENVIRONMENT=1
|
|
MOZ_ARG_DISABLE_BOOL(compile-environment,
|
|
[ --disable-compile-environment
|
|
Disable compiler/library checks.],
|
|
COMPILE_ENVIRONMENT= )
|
|
AC_SUBST(COMPILE_ENVIRONMENT)
|
|
|
|
MOZ_ARG_WITH_STRING(l10n-base,
|
|
[ --with-l10n-base=DIR path to l10n repositories],
|
|
L10NBASEDIR=$withval)
|
|
if test -n "$L10NBASEDIR"; then
|
|
if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
|
|
AC_MSG_ERROR([--with-l10n-base must specify a path])
|
|
elif test -d "$L10NBASEDIR"; then
|
|
L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
|
|
else
|
|
AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
|
|
fi
|
|
fi
|
|
AC_SUBST(L10NBASEDIR)
|
|
|
|
dnl Check for Perl first -- needed for win32 SDK checks
|
|
MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
|
|
if test -z "$PERL" -o "$PERL" = ":"; then
|
|
AC_MSG_ERROR([perl not found in \$PATH])
|
|
fi
|
|
|
|
AC_SUBST(GAIADIR)
|
|
if test -n "$GAIADIR" ; then
|
|
AC_DEFINE(PACKAGE_GAIA)
|
|
fi
|
|
|
|
MOZ_ARG_WITH_STRING(gonk,
|
|
[ --with-gonk=DIR
|
|
location of gonk dir],
|
|
gonkdir=$withval)
|
|
|
|
MOZ_ARG_WITH_STRING(gonk-toolchain-prefix,
|
|
[ --with-gonk-toolchain-prefix=DIR
|
|
prefix to gonk toolchain commands],
|
|
gonk_toolchain_prefix=$withval)
|
|
|
|
if test -n "$gonkdir" ; then
|
|
kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"`
|
|
android_source="$gonkdir"
|
|
ANDROID_SOURCE="$android_source"
|
|
ANDROID_NDK="${ANDROID_SOURCE}/ndk"
|
|
|
|
dnl set up compilers
|
|
TOOLCHAIN_PREFIX="$gonk_toolchain_prefix"
|
|
AS="$gonk_toolchain_prefix"as
|
|
CC="$gonk_toolchain_prefix"gcc
|
|
CXX="$gonk_toolchain_prefix"g++
|
|
CPP="$gonk_toolchain_prefix"cpp
|
|
LD="$gonk_toolchain_prefix"ld
|
|
AR="$gonk_toolchain_prefix"ar
|
|
RANLIB="$gonk_toolchain_prefix"ranlib
|
|
STRIP="$gonk_toolchain_prefix"strip
|
|
OBJCOPY="$gonk_toolchain_prefix"objcopy
|
|
|
|
STLPORT_CPPFLAGS="-I$gonkdir/ndk/sources/cxx-stl/stlport/stlport/ -I$gonkdir/external/stlport/stlport/"
|
|
STLPORT_LIBS="-lstlport"
|
|
|
|
case "$target_cpu" in
|
|
arm)
|
|
ARCH_DIR=arch-arm
|
|
;;
|
|
i?86)
|
|
ARCH_DIR=arch-x86
|
|
;;
|
|
esac
|
|
|
|
CPPFLAGS="-DANDROID -isystem $gonkdir/bionic/libc/$ARCH_DIR/include -isystem $gonkdir/bionic/libc/include/ -isystem $gonkdir/bionic/libc/kernel/common -isystem $gonkdir/bionic/libc/kernel/$ARCH_DIR -isystem $gonkdir/bionic/libm/include -I$gonkdir/frameworks/base/opengl/include -I$gonkdir/frameworks/base/native/include -I$gonkdir/hardware/libhardware/include -I$gonkdir/hardware/libhardware_legacy/include -I$gonkdir/system -I$gonkdir/system/core/include -isystem $gonkdir/bionic -I$gonkdir/frameworks/base/include -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib $CPPFLAGS -I$gonkdir/frameworks/base/services/sensorservice -I$gonkdir/frameworks/base/services/camera -I$gonkdir/system/media/wilhelm/include -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/dalvik/libnativehelper/include/nativehelper"
|
|
CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS"
|
|
CXXFLAGS="-mandroid -fno-short-enums -fno-exceptions -Wno-psabi $CXXFLAGS $STLPORT_CPPFLAGS"
|
|
dnl Add -llog by default, since we use it all over the place.
|
|
LIBS="$LIBS -llog $STLPORT_LIBS"
|
|
|
|
LDFLAGS="-mandroid -L$gonkdir/out/target/product/$GONK_PRODUCT/obj/lib -Wl,-rpath-link=$gonkdir/out/target/product/$GONK_PRODUCT/obj/lib --sysroot=$gonkdir/out/target/product/$GONK_PRODUCT/obj/ $LDFLAGS"
|
|
|
|
dnl prevent cross compile section from using these flags as host flags
|
|
if test -z "$HOST_CPPFLAGS" ; then
|
|
HOST_CPPFLAGS=" "
|
|
fi
|
|
if test -z "$HOST_CFLAGS" ; then
|
|
HOST_CFLAGS=" "
|
|
fi
|
|
if test -z "$HOST_CXXFLAGS" ; then
|
|
HOST_CXXFLAGS=" "
|
|
fi
|
|
if test -z "$HOST_LDFLAGS" ; then
|
|
HOST_LDFLAGS=" "
|
|
fi
|
|
|
|
AC_DEFINE(ANDROID)
|
|
AC_DEFINE(HAVE_SYS_UIO_H)
|
|
AC_DEFINE(HAVE_PTHREADS)
|
|
CROSS_COMPILE=1
|
|
MOZ_CHROME_FILE_FORMAT=omni
|
|
direct_nspr_config=1
|
|
else
|
|
MOZ_ANDROID_NDK
|
|
|
|
case "$target" in
|
|
*-android*|*-linuxandroid*)
|
|
if test -z "$ANDROID_PACKAGE_NAME" ; then
|
|
ANDROID_PACKAGE_NAME='org.mozilla.$(MOZ_APP_NAME)'
|
|
fi
|
|
MOZ_CHROME_FILE_FORMAT=omni
|
|
ZLIB_DIR=yes
|
|
;;
|
|
*-linux*)
|
|
AC_PATH_PROG(OBJCOPY,objcopy)
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
AC_SUBST(ANDROID_SOURCE)
|
|
AC_SUBST(ANDROID_PACKAGE_NAME)
|
|
AC_SUBST(OBJCOPY)
|
|
|
|
dnl ========================================================
|
|
dnl Checks for compilers.
|
|
dnl ========================================================
|
|
dnl Set CROSS_COMPILE in the environment when running configure
|
|
dnl to use the cross-compile setup for now
|
|
dnl ========================================================
|
|
|
|
dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
|
|
AR_FLAGS='cr $@'
|
|
|
|
if test "$COMPILE_ENVIRONMENT"; then
|
|
|
|
if test -n "$CROSS_COMPILE" -a "$target" != "$host"; then
|
|
echo "cross compiling from $host to $target"
|
|
cross_compiling=yes
|
|
|
|
_SAVE_CC="$CC"
|
|
_SAVE_CFLAGS="$CFLAGS"
|
|
_SAVE_LDFLAGS="$LDFLAGS"
|
|
|
|
AC_MSG_CHECKING([for host c compiler])
|
|
AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
|
|
if test -z "$HOST_CC"; then
|
|
AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
|
|
fi
|
|
AC_MSG_RESULT([$HOST_CC])
|
|
AC_MSG_CHECKING([for host c++ compiler])
|
|
AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
|
|
if test -z "$HOST_CXX"; then
|
|
AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
|
|
fi
|
|
AC_MSG_RESULT([$HOST_CXX])
|
|
|
|
if test -z "$HOST_CFLAGS"; then
|
|
HOST_CFLAGS="$CFLAGS"
|
|
fi
|
|
if test -z "$HOST_CXXFLAGS"; then
|
|
HOST_CXXFLAGS="$CXXFLAGS"
|
|
fi
|
|
if test -z "$HOST_LDFLAGS"; then
|
|
HOST_LDFLAGS="$LDFLAGS"
|
|
fi
|
|
if test -z "$HOST_AR_FLAGS"; then
|
|
HOST_AR_FLAGS="$AR_FLAGS"
|
|
fi
|
|
AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
|
|
AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
|
|
CC="$HOST_CC"
|
|
CFLAGS="$HOST_CFLAGS"
|
|
LDFLAGS="$HOST_LDFLAGS"
|
|
|
|
AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
|
|
AC_TRY_COMPILE([], [return(0);],
|
|
[ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
|
|
AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
|
|
|
|
CC="$HOST_CXX"
|
|
CFLAGS="$HOST_CXXFLAGS"
|
|
|
|
AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
|
|
AC_TRY_COMPILE([], [return(0);],
|
|
[ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
|
|
AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
|
|
|
|
CC=$_SAVE_CC
|
|
CFLAGS=$_SAVE_CFLAGS
|
|
LDFLAGS=$_SAVE_LDFLAGS
|
|
|
|
AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
|
|
unset ac_cv_prog_CC
|
|
AC_PROG_CC
|
|
AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
|
|
unset ac_cv_prog_CXX
|
|
AC_PROG_CXX
|
|
|
|
AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
|
|
AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
|
|
MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
|
|
AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
|
|
AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
|
|
AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
|
|
AC_DEFINE(CROSS_COMPILE)
|
|
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, :)
|
|
if test -z "$HOST_CC"; then
|
|
HOST_CC="$CC"
|
|
fi
|
|
if test -z "$HOST_CFLAGS"; then
|
|
HOST_CFLAGS="$CFLAGS"
|
|
fi
|
|
if test -z "$HOST_CXX"; then
|
|
HOST_CXX="$CXX"
|
|
fi
|
|
if test -z "$HOST_CXXFLAGS"; then
|
|
HOST_CXXFLAGS="$CXXFLAGS"
|
|
fi
|
|
if test -z "$HOST_LDFLAGS"; then
|
|
HOST_LDFLAGS="$LDFLAGS"
|
|
fi
|
|
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 ========================================================
|
|
|
|
MOZ_ARG_ENABLE_BOOL(metro,
|
|
[ --enable-metro Enable Windows Metro build targets],
|
|
MOZ_METRO=1,
|
|
MOZ_METRO=)
|
|
if test -n "$MOZ_METRO"; then
|
|
AC_DEFINE(MOZ_METRO)
|
|
# Target the Windows 8 Kit
|
|
WINSDK_TARGETVER=602
|
|
WINVER=502
|
|
# toolkit/library/makefile.in needs these, see nsDllMain.
|
|
CRTDLLVERSION=110
|
|
CRTEXPDLLVERSION=1-1-0
|
|
else
|
|
# Target the Windows 7 SDK by default
|
|
WINSDK_TARGETVER=601
|
|
WINVER=502
|
|
fi
|
|
|
|
AC_SUBST(CRTDLLVERSION)
|
|
AC_SUBST(CRTEXPDLLVERSION)
|
|
|
|
if test -n "$MOZ_METRO"; then
|
|
case "$target" in
|
|
*-mingw*)
|
|
;;
|
|
*)
|
|
AC_MSG_ERROR([Metro builds only valid on the windows platform.]);
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
MOZ_ARG_WITH_STRING(windows-version,
|
|
[ --with-windows-version=WINSDK_TARGETVER
|
|
Windows SDK version to target. Lowest version
|
|
currently allowed is 601 (Win7), highest is 602 (Win8)],
|
|
WINSDK_TARGETVER=$withval)
|
|
|
|
# Currently only two sdk versions allowed, 601 and 602
|
|
case "$WINSDK_TARGETVER" in
|
|
601|602)
|
|
MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
|
|
;;
|
|
|
|
*)
|
|
AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER)]);
|
|
;;
|
|
esac
|
|
|
|
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([,])
|
|
|
|
# Determine compiler version
|
|
CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
|
|
_CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
|
|
_CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
|
|
_CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
|
|
_CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
|
|
_MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
|
|
|
|
CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
|
|
_CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
|
|
|
|
if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
|
|
AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
|
|
fi
|
|
|
|
if test "$_CC_MAJOR_VERSION" = "14"; then
|
|
dnl Require VC8SP1 or newer.
|
|
dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762.
|
|
if test "$_CC_RELEASE" -lt 50727 -o \
|
|
\( "$_CC_RELEASE" -eq 50727 -a "$_CC_BUILD" -lt 762 \); then
|
|
AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. You probably need to install Service Pack 1 of Visual Studio 2005. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
|
|
fi
|
|
|
|
_CC_SUITE=8
|
|
_MSVS_VERSION=2005
|
|
AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
|
|
AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
|
|
elif test "$_CC_MAJOR_VERSION" = "15"; then
|
|
_CC_SUITE=9
|
|
_MSVS_VERSION=2008
|
|
AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
|
|
AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
|
|
elif test "$_CC_MAJOR_VERSION" = "16"; then
|
|
_CC_SUITE=10
|
|
_MSVS_VERSION=2010
|
|
AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
|
|
AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
|
|
elif test "$_CC_MAJOR_VERSION" = "17"; then
|
|
_CC_SUITE=11
|
|
_MSVS_VERSION=2012
|
|
AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
|
|
AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
|
|
else
|
|
AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
|
|
fi
|
|
|
|
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`
|
|
fi
|
|
|
|
dnl Confirm we have the pri tools on win8 builds
|
|
if test -n "$MOZ_METRO"; then
|
|
AC_MSG_CHECKING([for makepri])
|
|
AC_CHECK_PROGS(MAKEPRI, makepri, "")
|
|
if test -z "MAKEPRI" ; then
|
|
AC_MSG_ERROR([makepri.exe is required for generating metro browser install components. It should be in the Win8 SDK.])
|
|
fi
|
|
AC_SUBST(MAKEPRI)
|
|
fi
|
|
|
|
dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool',
|
|
dnl not something else like "magnetic tape manipulation utility".
|
|
MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
|
|
if test -z "$MSMT_TOOL"; then
|
|
AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
|
|
fi
|
|
|
|
changequote(,)
|
|
_MSMT_VER_FILTER='s|.*[^!-~]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
|
|
changequote([,])
|
|
MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
|
|
if test -z "$MSMANIFEST_TOOL_VERSION"; then
|
|
AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
|
|
fi
|
|
|
|
MSMANIFEST_TOOL=1
|
|
unset MSMT_TOOL
|
|
|
|
# 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
|
|
|
|
# Check midl version
|
|
_MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
|
|
_MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
|
|
_MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
|
|
_MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
|
|
# Add flags if necessary
|
|
AC_MSG_CHECKING([for midl flags])
|
|
case "$target" in
|
|
i*86-*)
|
|
if test \( "$_MIDL_MAJOR_VERSION" = "7" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" = "0499" \); then
|
|
# MIDL version 7.00.0499 defaults /env win64 on x64 platforms.
|
|
# MIDL version 7.00.0500 or later has no problem.
|
|
MIDL_FLAGS="${MIDL_FLAGS} -env win32"
|
|
AC_MSG_RESULT([need -env win32])
|
|
else
|
|
AC_MSG_RESULT([none needed])
|
|
fi
|
|
;;
|
|
x86_64-*)
|
|
MIDL_FLAGS="${MIDL_FLAGS} -env x64"
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT([none needed])
|
|
;;
|
|
esac
|
|
|
|
# Identify which version of the SDK we're building with
|
|
# Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
|
|
# from there
|
|
MOZ_CHECK_HEADERS([winsdkver.h])
|
|
if test "$ac_cv_header_winsdkver_h" = "yes"; then
|
|
# Get the highest _WIN32_WINNT and NTDDI versions supported
|
|
# Take the higher of the two
|
|
# This is done because the Windows 7 beta SDK reports its
|
|
# NTDDI_MAXVER to be 0x06000100 instead of 0x06010000, as it should
|
|
AC_CACHE_CHECK(for highest Windows version supported by this SDK,
|
|
ac_cv_winsdk_maxver,
|
|
[cat > conftest.h <<EOF
|
|
#include <winsdkver.h>
|
|
#include <sdkddkver.h>
|
|
|
|
#if (NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER) > NTDDI_MAXVER)
|
|
#define WINSDK_MAXVER NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER)
|
|
#else
|
|
#define WINSDK_MAXVER NTDDI_MAXVER
|
|
#endif
|
|
|
|
WINSDK_MAXVER
|
|
EOF
|
|
ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
|
|
rm -f conftest.h
|
|
])
|
|
MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
|
|
else
|
|
# Any SDK which doesn't have WinSDKVer.h is too old.
|
|
AC_MSG_ERROR([Your SDK does not have WinSDKVer.h. It is probably too old. Please upgrade to a newer SDK or try running the Windows SDK Configuration Tool and selecting a newer SDK. See https://developer.mozilla.org/En/Windows_SDK_versions for more details on fixing this.])
|
|
fi
|
|
|
|
unset _MSVC_VER_FILTER
|
|
|
|
AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
|
|
[
|
|
AC_LANG_SAVE
|
|
AC_LANG_CPLUSPLUS
|
|
_SAVE_CXXFLAGS="$CXXFLAGS"
|
|
CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
|
|
AC_TRY_COMPILE([#include <exception>],
|
|
[std::_Throw(std::exception()); return 0;],
|
|
ac_cv_have_std__Throw="yes",
|
|
ac_cv_have_std__Throw="no")
|
|
CXXFLAGS="$_SAVE_CXXFLAGS"
|
|
AC_LANG_RESTORE
|
|
])
|
|
|
|
if test "$ac_cv_have_std__Throw" = "yes"; then
|
|
AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
|
|
ac_cv_have_dllimport_exception_bug,
|
|
[
|
|
AC_LANG_SAVE
|
|
AC_LANG_CPLUSPLUS
|
|
_SAVE_CXXFLAGS="$CXXFLAGS"
|
|
CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
|
|
AC_TRY_LINK([#include <vector>],
|
|
[std::vector<int> v; return v.at(1);],
|
|
ac_cv_have_dllimport_exception_bug="no",
|
|
ac_cv_have_dllimport_exception_bug="yes")
|
|
CXXFLAGS="$_SAVE_CXXFLAGS"
|
|
AC_LANG_RESTORE
|
|
])
|
|
if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
|
|
WRAP_STL_INCLUDES=1
|
|
MOZ_MSVC_STL_WRAP__Throw=1
|
|
AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
|
|
fi
|
|
else
|
|
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
|
|
fi
|
|
|
|
if test "$WRAP_STL_INCLUDES" = "1"; then
|
|
STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
|
|
fi
|
|
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
|
|
|
|
MOZ_WINSDK_MAXVER=0x06020000
|
|
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)
|
|
|
|
# If the maximum version supported by this SDK is lower than the target
|
|
# version, error out
|
|
AC_MSG_CHECKING([for Windows SDK being recent enough])
|
|
if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
|
|
AC_MSG_RESULT("yes")
|
|
else
|
|
AC_MSG_RESULT("no")
|
|
AC_MSG_ERROR([You are targeting Windows version 0x$MOZ_WINSDK_TARGETVER, but your SDK only supports up to version $MOZ_WINSDK_MAXVER. Install and use an updated SDK, or target a lower version using --with-windows-version. Alternatively, try running the Windows SDK Configuration Tool and selecting a newer SDK. See https://developer.mozilla.org/En/Windows_SDK_versions for more details on fixing this.])
|
|
fi
|
|
|
|
AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
|
|
# Definitions matching sdkddkver.h
|
|
AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
|
|
;;
|
|
esac
|
|
|
|
AC_PROG_CPP
|
|
AC_PROG_CXXCPP
|
|
|
|
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_SETBUF)
|
|
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(INTEL_CC)
|
|
AC_SUBST(INTEL_CXX)
|
|
|
|
AC_SUBST(STL_FLAGS)
|
|
AC_SUBST(WRAP_STL_INCLUDES)
|
|
AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
|
|
AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
|
|
|
|
dnl ========================================================
|
|
dnl Checks for programs.
|
|
dnl ========================================================
|
|
AC_PROG_INSTALL
|
|
AC_PROG_LN_S
|
|
|
|
if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
|
|
AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
|
|
_perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
|
|
_perl_res=$?
|
|
AC_MSG_RESULT([$_perl_version])
|
|
|
|
if test "$_perl_res" != 0; then
|
|
AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
|
|
fi
|
|
fi
|
|
|
|
AC_MSG_CHECKING([for full perl installation])
|
|
_perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
|
|
_perl_res=$?
|
|
if test "$_perl_res" != 0; then
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
|
|
else
|
|
AC_MSG_RESULT([yes])
|
|
fi
|
|
|
|
MOZ_ARG_WITH_BOOL(system-ply,
|
|
[ --with-system-ply Use system installed python ply library],
|
|
[if $PYTHON -c 'import ply' 2>&5; then
|
|
MOZ_SYSTEM_PLY=1
|
|
else
|
|
AC_MSG_ERROR([python ply library is not found but --with-system-ply was requested])
|
|
fi])
|
|
|
|
AC_SUBST(MOZ_SYSTEM_PLY)
|
|
|
|
if test -z "$COMPILE_ENVIRONMENT"; then
|
|
NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
|
|
fi
|
|
AC_SUBST(NSINSTALL_BIN)
|
|
|
|
MOZ_PATH_PROG(DOXYGEN, doxygen, :)
|
|
MOZ_PATH_PROG(AUTOCONF, autoconf, :)
|
|
MOZ_PATH_PROGS(UNZIP, unzip)
|
|
if test -z "$UNZIP" -o "$UNZIP" = ":"; then
|
|
AC_MSG_ERROR([unzip not found in \$PATH])
|
|
fi
|
|
MOZ_PATH_PROGS(ZIP, zip)
|
|
if test -z "$ZIP" -o "$ZIP" = ":"; then
|
|
AC_MSG_ERROR([zip not found in \$PATH])
|
|
fi
|
|
MOZ_PATH_PROG(XARGS, xargs)
|
|
if test -z "$XARGS" -o "$XARGS" = ":"; then
|
|
AC_MSG_ERROR([xargs not found in \$PATH .])
|
|
fi
|
|
|
|
MOZ_PATH_PROG(RPMBUILD, rpmbuild, :)
|
|
AC_SUBST(RPMBUILD)
|
|
|
|
if test "$COMPILE_ENVIRONMENT"; then
|
|
|
|
dnl ========================================================
|
|
dnl = Mac OS X toolchain support
|
|
dnl ========================================================
|
|
|
|
case "$target_os" in
|
|
darwin*)
|
|
dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
|
|
dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
|
|
dnl the environment and includedir purposes (when using an SDK, below),
|
|
dnl but remember the full version number for the libdir (SDK).
|
|
changequote(,)
|
|
GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
|
|
GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
|
|
changequote([,])
|
|
if test "$GCC_VERSION_FULL" = "4.0.0" ; then
|
|
dnl Bug 280479, but this keeps popping up in bug 292530 too because
|
|
dnl 4.0.0/4061 is the default compiler in Tiger.
|
|
changequote(,)
|
|
GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
|
|
changequote([,])
|
|
if test "$GCC_BUILD" = "4061" ; then
|
|
AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
|
|
This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
|
|
from building Mozilla. Upgrade to Xcode 2.1 or later.])
|
|
fi
|
|
fi
|
|
|
|
dnl xcodebuild needs GCC_VERSION defined in the environment, since it
|
|
dnl doesn't respect the CC/CXX setting. With GCC_VERSION set, it will use
|
|
dnl /usr/bin/g(cc|++)-$GCC_VERSION.
|
|
MOZ_PATH_PROGS(PBBUILD_BIN, pbbuild xcodebuild pbxbuild)
|
|
|
|
dnl sdp was formerly in /Developer/Tools. As of Mac OS X 10.4 (Darwin 8),
|
|
dnl it has moved into /usr/bin.
|
|
MOZ_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
|
|
;;
|
|
esac
|
|
|
|
AC_SUBST(GCC_VERSION)
|
|
|
|
dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
|
|
dnl that a universal binary is being produced and MOZ_CAN_RUN_PROGRAMS
|
|
dnl when we can run target binaries.
|
|
AC_SUBST(UNIVERSAL_BINARY)
|
|
AC_SUBST(MOZ_CAN_RUN_PROGRAMS)
|
|
|
|
dnl ========================================================
|
|
dnl Check for MacOS deployment target version
|
|
dnl ========================================================
|
|
|
|
MOZ_ARG_ENABLE_STRING(macos-target,
|
|
[ --enable-macos-target=VER (default=10.6)
|
|
Set the minimum MacOS version needed at runtime],
|
|
[_MACOSX_DEPLOYMENT_TARGET=$enableval])
|
|
|
|
case "$target" in
|
|
*-darwin*)
|
|
if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
|
|
dnl Use the specified value
|
|
export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
|
|
else
|
|
dnl No value specified on the command line or in the environment,
|
|
dnl use architecture minimum.
|
|
export MACOSX_DEPLOYMENT_TARGET=10.6
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
|
|
|
|
dnl ========================================================
|
|
dnl = Mac OS X SDK support
|
|
dnl ========================================================
|
|
MACOS_SDK_DIR=
|
|
NEXT_ROOT=
|
|
MOZ_ARG_WITH_STRING(macos-sdk,
|
|
[ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
|
|
MACOS_SDK_DIR=$withval)
|
|
|
|
dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
|
|
dnl NEXT_ROOT will be set and exported only if it's needed.
|
|
AC_SUBST(MACOS_SDK_DIR)
|
|
AC_SUBST(NEXT_ROOT)
|
|
|
|
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
|
|
|
|
GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
|
|
if test "$GCC_VERSION_MAJOR" -lt "4" ; then
|
|
AC_MSG_ERROR([You need to upgrade the compiler version to 4.x])
|
|
else
|
|
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}"
|
|
|
|
if test "$GCC_VERSION_FULL" = "4.0.0" ; then
|
|
dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
|
|
dnl that supports -syslibroot. Don't set NEXT_ROOT because it will
|
|
dnl be ignored and cause warnings when -syslibroot is specified.
|
|
dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
|
|
dnl the -isysroot it receives, so this is only needed with 4.0.0.
|
|
LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
|
|
fi
|
|
fi
|
|
|
|
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
|
|
|
|
fi # COMPILE_ENVIRONMENT
|
|
|
|
AC_MSG_CHECKING([compiler version])
|
|
# Just print it so it shows up in the logs.
|
|
cc_version=$($CC --version)
|
|
AC_MSG_RESULT([$cc_version])
|
|
|
|
if test -n "$MAKE"; then
|
|
if test `echo $MAKE | grep -c make.py` != 1; then
|
|
NOT_PYMAKE=$MAKE
|
|
fi
|
|
fi
|
|
|
|
case "$host_os" in
|
|
mingw*)
|
|
MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
|
|
;;
|
|
*)
|
|
MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
|
|
;;
|
|
esac
|
|
if test "$GMAKE" = ":"; then
|
|
AC_MSG_ERROR([GNU make not found])
|
|
fi
|
|
AC_SUBST(GMAKE)
|
|
|
|
if test -z "$MAKE"; then
|
|
MAKE=$GMAKE
|
|
fi
|
|
|
|
if test "$COMPILE_ENVIRONMENT"; then
|
|
|
|
AC_PATH_XTRA
|
|
|
|
XCFLAGS="$X_CFLAGS"
|
|
|
|
fi # COMPILE_ENVIRONMENT
|
|
|
|
dnl ========================================================
|
|
dnl set the defaults first
|
|
dnl ========================================================
|
|
AS_BIN=$AS
|
|
AR_LIST='$(AR) t'
|
|
AR_EXTRACT='$(AR) x'
|
|
AR_DELETE='$(AR) d'
|
|
AS='$(CC)'
|
|
AS_DASH_C_FLAG='-c'
|
|
DLL_PREFIX=lib
|
|
LIB_PREFIX=lib
|
|
DLL_SUFFIX=.so
|
|
OBJ_SUFFIX=o
|
|
LIB_SUFFIX=a
|
|
ASM_SUFFIX=s
|
|
IMPORT_LIB_SUFFIX=
|
|
TARGET_MD_ARCH=unix
|
|
DIRENT_INO=d_ino
|
|
MOZ_USER_DIR=".mozilla"
|
|
|
|
MOZ_JPEG_CFLAGS=
|
|
MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/media/libjpeg)'
|
|
MOZ_BZ2_CFLAGS=
|
|
MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
|
|
MOZ_PNG_CFLAGS=
|
|
MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/media/libpng)'
|
|
|
|
MOZ_JS_STATIC_LIBS='$(call EXPAND_LIBNAME_PATH,js_static,$(LIBXUL_DIST)/lib)'
|
|
MOZ_JS_SHARED_LIBS='$(call EXPAND_LIBNAME_PATH,mozjs,$(LIBXUL_DIST)/lib)'
|
|
DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core -lmozalloc'
|
|
MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
|
|
XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom -lmozalloc'
|
|
LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
|
|
XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
|
|
XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
|
|
|
|
# These are specially defined on Windows only
|
|
case "$target" in
|
|
*-mingw*)
|
|
XPCOM_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
|
|
XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_staticruntime.$(LIB_SUFFIX)'
|
|
;;
|
|
*)
|
|
XPCOM_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_GLUE_LDOPTS
|
|
XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS=$XPCOM_STANDALONE_GLUE_LDOPTS
|
|
;;
|
|
esac
|
|
|
|
MOZ_FS_LAYOUT=unix
|
|
|
|
MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
|
|
|
|
USE_DEPENDENT_LIBS=1
|
|
|
|
_PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
|
|
|
|
if test -n "$CROSS_COMPILE"; then
|
|
OS_TARGET="${target_os}"
|
|
OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
|
|
OS_RELEASE=
|
|
case "${target_os}" in
|
|
linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
|
|
kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
|
|
gnu*) OS_ARCH=GNU ;;
|
|
solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
|
|
mingw*) OS_ARCH=WINNT OS_TARGET=WINNT ;;
|
|
darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
|
|
esac
|
|
case "${target}" in
|
|
*-android*|*-linuxandroid*) OS_ARCH=Linux OS_TARGET=Android ;;
|
|
esac
|
|
else
|
|
OS_TARGET=`uname -s`
|
|
OS_ARCH=`uname -s | sed -e 's|/|_|g'`
|
|
OS_RELEASE=`uname -r`
|
|
fi
|
|
|
|
# Before this used `uname -m` when not cross compiling
|
|
# but that breaks when you have a 64 bit kernel with a 32 bit userland.
|
|
OS_TEST="${target_cpu}"
|
|
|
|
HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
|
|
|
|
#######################################################################
|
|
# Master "Core Components" macros for getting the OS target #
|
|
#######################################################################
|
|
|
|
#
|
|
# If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
|
|
# cross-compilation.
|
|
#
|
|
|
|
#
|
|
# Define and override various archtecture-specific variables, including
|
|
# HOST_OS_ARCH
|
|
# OS_ARCH
|
|
# OS_TEST
|
|
# OS_TARGET
|
|
# OS_RELEASE
|
|
# OS_MINOR_RELEASE
|
|
#
|
|
|
|
case "$HOST_OS_ARCH" in
|
|
mingw*)
|
|
HOST_OS_ARCH=WINNT
|
|
;;
|
|
darwin*)
|
|
HOST_OS_ARCH=Darwin
|
|
;;
|
|
linux*)
|
|
HOST_OS_ARCH=Linux
|
|
;;
|
|
solaris*)
|
|
HOST_OS_ARCH=SunOS
|
|
SOLARIS_SUNPRO_CC=
|
|
SOLARIS_SUNPRO_CXX=
|
|
if test -z "$GNU_CC"; then
|
|
if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
|
|
SOLARIS_SUNPRO_CC=1
|
|
fi
|
|
fi
|
|
|
|
if test -z "$GNU_CXX"; then
|
|
if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
|
|
SOLARIS_SUNPRO_CXX=1
|
|
fi
|
|
fi
|
|
AC_SUBST(SOLARIS_SUNPRO_CC)
|
|
AC_SUBST(SOLARIS_SUNPRO_CXX)
|
|
;;
|
|
OS_2)
|
|
HOST_OS_ARCH=OS2
|
|
;;
|
|
esac
|
|
|
|
case "$OS_ARCH" in
|
|
WINNT)
|
|
if test -z "$CROSS_COMPILE" ; then
|
|
OS_TEST=`uname -p`
|
|
fi
|
|
;;
|
|
Windows_NT)
|
|
#
|
|
# If uname -s returns "Windows_NT", we assume that we are using
|
|
# the uname.exe in MKS toolkit.
|
|
#
|
|
# The -r option of MKS uname only returns the major version number.
|
|
# So we need to use its -v option to get the minor version number.
|
|
# Moreover, it doesn't have the -p option, so we need to use uname -m.
|
|
#
|
|
OS_ARCH=WINNT
|
|
OS_TARGET=WINNT
|
|
OS_MINOR_RELEASE=`uname -v`
|
|
if test "$OS_MINOR_RELEASE" = "00"; then
|
|
OS_MINOR_RELEASE=0
|
|
fi
|
|
OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
|
|
;;
|
|
MINGW*_NT*)
|
|
#
|
|
# If uname -s returns MINGW32_NT-5.1, we assume that we are using
|
|
# the uname.exe in the MSYS tools.
|
|
#
|
|
OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
|
|
OS_ARCH=WINNT
|
|
OS_TARGET=WINNT
|
|
;;
|
|
AIX)
|
|
OS_RELEASE=`uname -v`.`uname -r`
|
|
OS_TEST=${target_cpu}
|
|
;;
|
|
OS_2)
|
|
OS_ARCH=OS2
|
|
OS_TARGET=OS2
|
|
OS_RELEASE=`uname -v`
|
|
;;
|
|
Darwin)
|
|
case "${target_cpu}" in
|
|
powerpc*)
|
|
OS_TEST=ppc
|
|
;;
|
|
i*86*)
|
|
OS_TEST=i386
|
|
;;
|
|
x86_64)
|
|
OS_TEST=x86_64
|
|
;;
|
|
*)
|
|
if test -z "$CROSS_COMPILE" ; then
|
|
OS_TEST=`uname -p`
|
|
fi
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
# Only set CPU_ARCH if we recognize the value of OS_TEST
|
|
|
|
case "$OS_TEST" in
|
|
*86 | i86pc)
|
|
CPU_ARCH=x86
|
|
;;
|
|
|
|
powerpc64 | ppc64)
|
|
CPU_ARCH=ppc64
|
|
;;
|
|
|
|
powerpc | ppc | rs6000)
|
|
CPU_ARCH=ppc
|
|
;;
|
|
|
|
Alpha | alpha | ALPHA)
|
|
CPU_ARCH=Alpha
|
|
;;
|
|
|
|
s390)
|
|
CPU_ARCH=s390
|
|
;;
|
|
|
|
s390x)
|
|
CPU_ARCH=s390x
|
|
;;
|
|
|
|
hppa* | parisc)
|
|
CPU_ARCH=hppa
|
|
;;
|
|
|
|
sun4u | sparc*)
|
|
CPU_ARCH=sparc
|
|
;;
|
|
|
|
x86_64 | ia64)
|
|
CPU_ARCH="$OS_TEST"
|
|
;;
|
|
|
|
arm*)
|
|
CPU_ARCH=arm
|
|
;;
|
|
|
|
mips|mipsel)
|
|
CPU_ARCH="mips"
|
|
;;
|
|
esac
|
|
|
|
if test -z "$OS_TARGET"; then
|
|
OS_TARGET=$OS_ARCH
|
|
fi
|
|
OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
|
|
|
|
dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64.
|
|
dnl ===============================================================
|
|
INTEL_ARCHITECTURE=
|
|
case "$OS_TEST" in
|
|
x86_64|i?86)
|
|
INTEL_ARCHITECTURE=1
|
|
esac
|
|
|
|
dnl Configure platform-specific CPU architecture compiler options.
|
|
dnl ==============================================================
|
|
MOZ_ARCH_OPTS
|
|
|
|
dnl =================================================================
|
|
dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
|
|
dnl which is bad when cross compiling.
|
|
dnl =================================================================
|
|
if test "$COMPILE_ENVIRONMENT"; then
|
|
configure_static_assert_macros='
|
|
#define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
|
|
#define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
|
|
#define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
|
|
'
|
|
|
|
dnl test that the macros actually work:
|
|
AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
|
|
AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
|
|
[AC_LANG_SAVE
|
|
AC_LANG_C
|
|
ac_cv_static_assertion_macros_work="yes"
|
|
AC_TRY_COMPILE([$configure_static_assert_macros],
|
|
[CONFIGURE_STATIC_ASSERT(1)],
|
|
,
|
|
ac_cv_static_assertion_macros_work="no")
|
|
AC_TRY_COMPILE([$configure_static_assert_macros],
|
|
[CONFIGURE_STATIC_ASSERT(0)],
|
|
ac_cv_static_assertion_macros_work="no",
|
|
)
|
|
AC_LANG_CPLUSPLUS
|
|
AC_TRY_COMPILE([$configure_static_assert_macros],
|
|
[CONFIGURE_STATIC_ASSERT(1)],
|
|
,
|
|
ac_cv_static_assertion_macros_work="no")
|
|
AC_TRY_COMPILE([$configure_static_assert_macros],
|
|
[CONFIGURE_STATIC_ASSERT(0)],
|
|
ac_cv_static_assertion_macros_work="no",
|
|
)
|
|
AC_LANG_RESTORE
|
|
])
|
|
AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
|
|
if test "$ac_cv_static_assertion_macros_work" = "no"; then
|
|
AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
|
|
fi
|
|
fi # COMPILE_ENVIRONMENT
|
|
|
|
dnl ========================================================
|
|
dnl Android libstdc++, placed here so it can use MOZ_ARCH
|
|
dnl computed above.
|
|
dnl ========================================================
|
|
|
|
MOZ_ANDROID_STLPORT
|
|
|
|
dnl ========================================================
|
|
dnl Suppress Clang Argument Warnings
|
|
dnl ========================================================
|
|
if test -n "$CLANG_CC"; then
|
|
_WARNINGS_CFLAGS="-Qunused-arguments ${_WARNINGS_CFLAGS}"
|
|
CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
|
|
fi
|
|
if test -n "$CLANG_CXX"; then
|
|
_WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Use Address Sanitizer
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(address-sanitizer,
|
|
[ --enable-address-sanitizer Enable Address Sanitizer (default=no)],
|
|
MOZ_ASAN=1,
|
|
MOZ_ASAN= )
|
|
if test -n "$MOZ_ASAN"; then
|
|
MOZ_LLVM_HACKS=1
|
|
AC_DEFINE(MOZ_ASAN)
|
|
fi
|
|
AC_SUBST(MOZ_ASAN)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable hacks required for LLVM instrumentations
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(llvm-hacks,
|
|
[ --enable-llvm-hacks Enable workarounds required for several LLVM instrumentations (default=no)],
|
|
MOZ_LLVM_HACKS=1,
|
|
MOZ_LLVM_HACKS= )
|
|
if test -n "$MOZ_LLVM_HACKS"; then
|
|
MOZ_NO_WLZDEFS=1
|
|
MOZ_CFLAGS_NSS=1
|
|
fi
|
|
AC_SUBST(MOZ_NO_WLZDEFS)
|
|
AC_SUBST(MOZ_CFLAGS_NSS)
|
|
|
|
dnl ========================================================
|
|
dnl GNU specific defaults
|
|
dnl ========================================================
|
|
if test "$GNU_CC"; then
|
|
# FIXME: Let us build with strict aliasing. bug 414641.
|
|
CFLAGS="$CFLAGS -fno-strict-aliasing"
|
|
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
|
|
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
|
|
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"
|
|
fi
|
|
fi
|
|
WARNINGS_AS_ERRORS='-Werror -Wno-error=uninitialized'
|
|
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)
|
|
|
|
# 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
|
|
AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
|
|
|
|
# Turn on GNU-specific warnings:
|
|
# -Wall - turn on a lot of warnings
|
|
# -pedantic - this is turned on below
|
|
# -Wpointer-arith - enabled with -pedantic, but good to have even if not
|
|
# -Wdeclaration-after-statement - MSVC doesn't like these
|
|
# -Werror=return-type - catches missing returns, zero false positives
|
|
# -Wtype-limits - catches overflow bugs, few false positives
|
|
# -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
|
|
#
|
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -Wpointer-arith -Wdeclaration-after-statement"
|
|
MOZ_C_SUPPORTS_WARNING(-W, error=return-type, ac_c_has_werror_return_type)
|
|
MOZ_C_SUPPORTS_WARNING(-W, type-limits, ac_c_has_wtype_limits)
|
|
MOZ_C_SUPPORTS_WARNING(-W, empty-body, ac_c_has_wempty_body)
|
|
|
|
# Turn off the following warnings that -Wall/-pedantic turn on:
|
|
# -Wno-unused - lots of violations in third-party code
|
|
# -Wno-overlength-strings - we exceed the minimum maximum length frequently
|
|
#
|
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-unused"
|
|
MOZ_C_SUPPORTS_WARNING(-Wno-, overlength-strings, ac_c_has_wno_overlength_strings)
|
|
|
|
if test -z "$INTEL_CC" -a -z "$CLANG_CC"; then
|
|
# Don't use -Wcast-align with ICC or clang
|
|
case "$CPU_ARCH" in
|
|
# And don't use it on hppa, ia64, sparc, arm, since it's noisy there
|
|
hppa | ia64 | sparc | arm)
|
|
;;
|
|
*)
|
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
dnl Turn pedantic on but disable the warnings for long long
|
|
_PEDANTIC=1
|
|
|
|
_DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
|
|
_USE_CPP_INCLUDE_FLAG=1
|
|
|
|
elif test "$SOLARIS_SUNPRO_CC"; then
|
|
DSO_CFLAGS=''
|
|
if test "$CPU_ARCH" = "sparc"; then
|
|
# for Sun Studio on Solaris/SPARC
|
|
DSO_PIC_CFLAGS='-xcode=pic32'
|
|
else
|
|
DSO_PIC_CFLAGS='-KPIC'
|
|
fi
|
|
_DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
|
|
else
|
|
MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
|
|
MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -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"
|
|
|
|
# Turn on GNU-specific warnings:
|
|
# -Wall - turn on a lot of warnings
|
|
# -pedantic - this is turned on below
|
|
# -Wpointer-arith - enabled with -pedantic, but good to have even if not
|
|
# -Woverloaded-virtual - ???
|
|
# -Werror=return-type - catches missing returns, zero false positives
|
|
# -Wtype-limits - catches overflow bugs, few false positives
|
|
# -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives
|
|
#
|
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual"
|
|
MOZ_CXX_SUPPORTS_WARNING(-W, error=return-type, ac_cxx_has_werror_return_type)
|
|
MOZ_CXX_SUPPORTS_WARNING(-W, type-limits, ac_cxx_has_wtype_limits)
|
|
MOZ_CXX_SUPPORTS_WARNING(-W, empty-body, ac_cxx_has_wempty_body)
|
|
|
|
# Turn off the following warnings that -Wall/-pedantic turn on:
|
|
# -Wno-ctor-dtor-privacy - ???
|
|
# -Wno-overlength-strings - we exceed the minimum maximum length frequently
|
|
# -Wno-invalid-offsetof - we use offsetof on non-POD types frequently
|
|
# -Wno-variadic-macros - ???
|
|
#
|
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-ctor-dtor-privacy"
|
|
MOZ_CXX_SUPPORTS_WARNING(-Wno-, overlength-strings, ac_cxx_has_wno_overlength_strings)
|
|
MOZ_CXX_SUPPORTS_WARNING(-Wno-, invalid-offsetof, ac_cxx_has_wno_invalid_offsetof)
|
|
MOZ_CXX_SUPPORTS_WARNING(-Wno-, variadic-macros, ac_cxx_has_wno_variadic_macros)
|
|
|
|
if test -z "$INTEL_CXX" -a -z "$CLANG_CXX"; then
|
|
# Don't use -Wcast-align with ICC or clang
|
|
case "$CPU_ARCH" in
|
|
# And don't use it on hppa, ia64, sparc, arm, since it's noisy there
|
|
hppa | ia64 | sparc | arm)
|
|
;;
|
|
*)
|
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
_DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
|
|
_USE_CPP_INCLUDE_FLAG=1
|
|
|
|
# Recent clang and gcc support C++11 deleted functions without warnings if
|
|
# compiling with -std=c++0x or -std=gnu++0x (or c++11 or gnu++11 in very new
|
|
# versions). We can't use -std=c++0x yet, so gcc's support must remain
|
|
# unused. But clang's warning can be disabled, so when compiling with clang
|
|
# we use it to opt out of the warning, enabling (macro-encapsulated) use of
|
|
# deleted function syntax.
|
|
if test "$CLANG_CXX"; then
|
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-c++0x-extensions"
|
|
MOZ_CXX_SUPPORTS_WARNING(-Wno-, extended-offsetof, ac_cxx_has_wno_extended_offsetof)
|
|
fi
|
|
|
|
else
|
|
_DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
|
|
fi
|
|
|
|
dnl gcc can come with its own linker so it is better to use the pass-thru calls
|
|
dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
|
|
dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
|
|
dnl normal behavior.
|
|
dnl ========================================================
|
|
MKSHLIB_FORCE_ALL=
|
|
MKSHLIB_UNFORCE_ALL=
|
|
|
|
if test "$COMPILE_ENVIRONMENT"; then
|
|
if test "$GNU_CC"; then
|
|
AC_MSG_CHECKING(whether ld has archive extraction flags)
|
|
AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
|
|
[_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
|
|
ac_cv_mkshlib_force_and_unforce="no"
|
|
exec 3<&0 <<LOOP_INPUT
|
|
force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
|
|
force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
|
|
force="-Wl,-all"; unforce="-Wl,-none"
|
|
LOOP_INPUT
|
|
while read line
|
|
do
|
|
eval $line
|
|
LDFLAGS=$force
|
|
LIBS=$unforce
|
|
AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
|
|
done
|
|
exec 0<&3 3<&-
|
|
LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
|
|
])
|
|
if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
|
|
AC_MSG_RESULT(no)
|
|
else
|
|
AC_MSG_RESULT(yes)
|
|
eval $ac_cv_mkshlib_force_and_unforce
|
|
MKSHLIB_FORCE_ALL=$force
|
|
MKSHLIB_UNFORCE_ALL=$unforce
|
|
fi
|
|
fi # GNU_CC
|
|
fi # COMPILE_ENVIRONMENT
|
|
|
|
dnl ========================================================
|
|
dnl Checking for 64-bit OS
|
|
dnl ========================================================
|
|
if test "$COMPILE_ENVIRONMENT"; then
|
|
AC_LANG_SAVE
|
|
AC_LANG_C
|
|
AC_MSG_CHECKING(for 64-bit OS)
|
|
AC_TRY_COMPILE([$configure_static_assert_macros],
|
|
[CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
|
|
result="yes", result="no")
|
|
AC_MSG_RESULT("$result")
|
|
if test "$result" = "yes"; then
|
|
AC_DEFINE(HAVE_64BIT_OS)
|
|
HAVE_64BIT_OS=1
|
|
fi
|
|
AC_SUBST(HAVE_64BIT_OS)
|
|
AC_LANG_RESTORE
|
|
fi # COMPILE_ENVIRONMENT
|
|
|
|
dnl ========================================================
|
|
dnl Enable high-memory support on OS/2 by default.
|
|
dnl ========================================================
|
|
MOZ_OS2_HIGH_MEMORY=1
|
|
MOZ_ARG_DISABLE_BOOL(os2-high-mem,
|
|
[ --disable-os2-high-mem Disable high-memory support on OS/2],
|
|
MOZ_OS2_HIGH_MEMORY=,
|
|
MOZ_OS2_HIGH_MEMORY=1 )
|
|
AC_SUBST(MOZ_OS2_HIGH_MEMORY)
|
|
|
|
dnl ========================================================
|
|
dnl = Use profiling compile flags
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(profiling,
|
|
[ --enable-profiling Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
|
|
MOZ_PROFILING=1,
|
|
MOZ_PROFILING= )
|
|
|
|
# For profiling builds keep the symbol information
|
|
if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then
|
|
STRIP_FLAGS="--strip-debug"
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Use incremental GC
|
|
dnl ========================================================
|
|
JSGC_INCREMENTAL=1
|
|
MOZ_ARG_DISABLE_BOOL(gcincremental,
|
|
[ --disable-gcincremental Disable incremental GC],
|
|
JSGC_INCREMENTAL= )
|
|
if test -n "$JSGC_INCREMENTAL"; then
|
|
AC_DEFINE(JSGC_INCREMENTAL)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Use generational GC
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(gcgenerational,
|
|
[ --enable-gcgenerational Enable generational GC],
|
|
JSGC_GENERATIONAL=1,
|
|
JSGC_GENERATIONAL= )
|
|
if test -n "$JSGC_GENERATIONAL"; then
|
|
AC_DEFINE(JSGC_GENERATIONAL)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Perform moving GC stack rooting analysis
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(root-analysis,
|
|
[ --enable-root-analysis Enable moving GC stack root analysis],
|
|
JSGC_ROOT_ANALYSIS=1,
|
|
JSGC_ROOT_ANALYSIS= )
|
|
if test -n "$JSGC_ROOT_ANALYSIS"; then
|
|
AC_DEFINE(JSGC_ROOT_ANALYSIS)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Use exact stack rooting for GC
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(exact-rooting,
|
|
[ --enable-exact-rooting Enable use of exact stack roots for GC],
|
|
JSGC_USE_EXACT_ROOTING=1,
|
|
JSGC_USE_EXACT_ROOTING= )
|
|
if test -n "$JSGC_USE_EXACT_ROOTING"; then
|
|
AC_DEFINE(JSGC_USE_EXACT_ROOTING)
|
|
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)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable DMDV
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(dmdv,
|
|
[ --enable-dmdv Enable DMDV; also disables jemalloc (default=no)],
|
|
MOZ_DMDV=1,
|
|
MOZ_DMDV= )
|
|
if test -n "$MOZ_DMDV"; then
|
|
MOZ_CHECK_HEADER([valgrind/valgrind.h], [],
|
|
AC_MSG_ERROR(
|
|
[--enable-dmdv specified but Valgrind is not installed]))
|
|
AC_DEFINE(MOZ_DMDV)
|
|
fi
|
|
AC_SUBST(MOZ_DMDV)
|
|
|
|
dnl ========================================================
|
|
dnl jprof
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(jprof,
|
|
[ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.],
|
|
MOZ_JPROF=1,
|
|
MOZ_JPROF= )
|
|
if test -n "$MOZ_JPROF"; then
|
|
MOZ_PROFILING=1
|
|
AC_DEFINE(MOZ_JPROF)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl SPS Profiler
|
|
dnl ========================================================
|
|
MOZ_ENABLE_PROFILER_SPS=1
|
|
|
|
case "${OS_TARGET}" in
|
|
Android)
|
|
case "${CPU_ARCH}" in
|
|
x86 | arm) ;;
|
|
*)
|
|
MOZ_ENABLE_PROFILER_SPS=
|
|
esac
|
|
;;
|
|
Linux)
|
|
case "${CPU_ARCH}" in
|
|
x86 | x86_64) ;;
|
|
*)
|
|
MOZ_ENABLE_PROFILER_SPS=
|
|
esac
|
|
;;
|
|
WINNT|Darwin) ;;
|
|
*)
|
|
MOZ_ENABLE_PROFILER_SPS=
|
|
;;
|
|
esac
|
|
|
|
if test -n "$MOZ_ENABLE_PROFILER_SPS"; then
|
|
AC_DEFINE(MOZ_ENABLE_PROFILER_SPS)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl shark
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(shark,
|
|
[ --enable-shark Enable shark remote profiling. Implies --enable-profiling.],
|
|
MOZ_SHARK=1,
|
|
MOZ_SHARK= )
|
|
if test -n "$MOZ_SHARK"; then
|
|
MOZ_PROFILING=1
|
|
AC_DEFINE(MOZ_SHARK)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl callgrind
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(callgrind,
|
|
[ --enable-callgrind Enable callgrind profiling. Implies --enable-profiling.],
|
|
MOZ_CALLGRIND=1,
|
|
MOZ_CALLGRIND= )
|
|
if test -n "$MOZ_CALLGRIND"; then
|
|
MOZ_PROFILING=1
|
|
AC_DEFINE(MOZ_CALLGRIND)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl vtune
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(vtune,
|
|
[ --enable-vtune Enable vtune profiling. Implies --enable-profiling.],
|
|
MOZ_VTUNE=1,
|
|
MOZ_VTUNE= )
|
|
if test -n "$MOZ_VTUNE"; then
|
|
MOZ_PROFILING=1
|
|
AC_DEFINE(MOZ_VTUNE)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Profiling
|
|
dnl ========================================================
|
|
if test -n "$MOZ_PROFILING"; then
|
|
AC_DEFINE(MOZ_PROFILING)
|
|
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 -Fd\$(HOST_PDBFILE)"
|
|
HOST_RANLIB='echo ranlib'
|
|
else
|
|
HOST_CFLAGS="$HOST_CFLAGS -mwindows"
|
|
fi
|
|
HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11 -D_CRT_SECURE_NO_WARNINGS"
|
|
HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
|
|
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
|
|
HOST_BIN_SUFFIX=.exe
|
|
case "$host" in
|
|
*mingw*)
|
|
PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
|
|
;;
|
|
esac
|
|
|
|
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 -DNO_X11"
|
|
HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
|
|
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
|
|
;;
|
|
|
|
*-linux*|*-kfreebsd*-gnu|*-gnu*)
|
|
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
|
|
HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
|
|
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
|
|
;;
|
|
|
|
*os2*)
|
|
HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
|
|
HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
|
|
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
|
|
HOST_BIN_SUFFIX=.exe
|
|
MOZ_FIX_LINK_PATHS=
|
|
;;
|
|
|
|
*)
|
|
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
|
|
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
|
|
;;
|
|
esac
|
|
|
|
dnl Check for using a custom <stdint.h> implementation
|
|
dnl ========================================================
|
|
AC_MSG_CHECKING(for custom <stdint.h> implementation)
|
|
if test "$MOZ_CUSTOM_STDINT_H"; then
|
|
AC_DEFINE_UNQUOTED(MOZ_CUSTOM_STDINT_H, "$MOZ_CUSTOM_STDINT_H")
|
|
AC_MSG_RESULT(using $MOZ_CUSTOM_STDINT_H)
|
|
else
|
|
AC_MSG_RESULT(none specified)
|
|
fi
|
|
|
|
dnl Get mozilla version from central milestone file
|
|
MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
|
|
MOZILLA_UAVERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir -uaversion`
|
|
|
|
dnl Get version of various core apps from the version files.
|
|
FIREFOX_VERSION=`cat $_topsrcdir/browser/config/version.txt`
|
|
|
|
if test -z "$FIREFOX_VERSION"; then
|
|
AC_MSG_ERROR([FIREFOX_VERSION is unexpectedly blank.])
|
|
fi
|
|
|
|
AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
|
|
AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
|
|
AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION")
|
|
|
|
MOZ_DOING_LTO(lto_is_enabled)
|
|
|
|
dnl ========================================================
|
|
dnl System overrides of the defaults for target
|
|
dnl ========================================================
|
|
|
|
case "$target" in
|
|
*-aix*)
|
|
AC_DEFINE(AIX)
|
|
if test ! "$GNU_CC"; then
|
|
if test ! "$HAVE_64BIT_OS"; then
|
|
# Compiling with Visual Age C++ object model compat is the
|
|
# default. To compile with object model ibm, add
|
|
# AIX_OBJMODEL=ibm to .mozconfig.
|
|
if test "$AIX_OBJMODEL" = "ibm"; then
|
|
CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
|
|
else
|
|
AIX_OBJMODEL=compat
|
|
fi
|
|
else
|
|
AIX_OBJMODEL=compat
|
|
fi
|
|
AC_SUBST(AIX_OBJMODEL)
|
|
DSO_LDOPTS='-qmkshrobj=1'
|
|
DSO_CFLAGS='-qflag=w:w'
|
|
DSO_PIC_CFLAGS=
|
|
LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
|
|
MOZ_FIX_LINK_PATHS=
|
|
MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
|
|
MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
|
|
if test "$COMPILE_ENVIRONMENT"; then
|
|
AC_LANG_SAVE
|
|
AC_LANG_CPLUSPLUS
|
|
AC_MSG_CHECKING([for IBM XLC/C++ compiler version >= 9.0.0.7])
|
|
AC_TRY_COMPILE([],
|
|
[#if (__IBMCPP__ < 900)
|
|
#error "Bad compiler"
|
|
#endif],
|
|
_BAD_COMPILER=,_BAD_COMPILER=1)
|
|
if test -n "$_BAD_COMPILER"; then
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR([IBM XLC/C++ 9.0.0.7 or higher is required to build.])
|
|
else
|
|
AC_MSG_RESULT([yes])
|
|
fi
|
|
AC_LANG_RESTORE
|
|
TARGET_COMPILER_ABI="ibmc"
|
|
CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
|
|
CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
|
|
fi
|
|
fi
|
|
case "${target_os}" in
|
|
aix4.1*)
|
|
DLL_SUFFIX='_shr.a'
|
|
;;
|
|
esac
|
|
if test "$COMPILE_ENVIRONMENT"; then
|
|
MOZ_CHECK_HEADERS(sys/inttypes.h)
|
|
fi
|
|
AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
|
|
;;
|
|
|
|
*-darwin*)
|
|
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
|
|
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
|
|
MOZ_OPTIMIZE_FLAGS="-O3"
|
|
_PEDANTIC=
|
|
# Statically disable jemalloc on 10.5 and 32-bit 10.6. See bug 702250.
|
|
if test "$HAVE_64BIT_OS"; then
|
|
MOZ_MEMORY=1
|
|
fi
|
|
DLL_SUFFIX=".dylib"
|
|
DSO_LDOPTS=''
|
|
STRIP_FLAGS="$STRIP_FLAGS -x -S"
|
|
# Check whether we're targeting OS X or iOS
|
|
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"; then
|
|
AC_DEFINE(XP_IOS)
|
|
AC_DEFINE(XP_DARWIN)
|
|
_PLATFORM_DEFAULT_TOOLKIT='cairo-uikit'
|
|
else
|
|
AC_DEFINE(XP_MACOSX)
|
|
AC_DEFINE(XP_DARWIN)
|
|
_PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
|
|
# 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
|
|
TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
|
|
|
|
|
|
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,$(LIBXUL_DIST)/bin'
|
|
;;
|
|
|
|
ia64*-hpux*)
|
|
DLL_SUFFIX=".so"
|
|
if test ! "$GNU_CC"; then
|
|
DSO_LDOPTS='-b'
|
|
DSO_CFLAGS=""
|
|
DSO_PIC_CFLAGS=
|
|
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
|
|
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
|
|
CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
|
|
else
|
|
DSO_LDOPTS='-b -E'
|
|
MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
|
|
MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
|
|
fi
|
|
MOZ_FIX_LINK_PATHS=
|
|
AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
|
|
AC_DEFINE(_LARGEFILE64_SOURCE)
|
|
;;
|
|
|
|
*-hpux*)
|
|
DLL_SUFFIX=".sl"
|
|
if test ! "$GNU_CC"; then
|
|
DSO_LDOPTS='-b -Wl,+s'
|
|
DSO_CFLAGS=""
|
|
DSO_PIC_CFLAGS="+Z"
|
|
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
|
|
MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
|
|
CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
|
|
else
|
|
DSO_LDOPTS='-b -E +s'
|
|
MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
|
|
MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
|
|
fi
|
|
MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
|
|
AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
|
|
;;
|
|
|
|
*-android*|*-linuxandroid*)
|
|
AC_DEFINE(NO_PW_GECOS)
|
|
no_x=yes
|
|
if test -n "$gonkdir"; then
|
|
_PLATFORM_DEFAULT_TOOLKIT=cairo-gonk
|
|
MOZ_B2G_RIL=1
|
|
MOZ_B2G_BT=1
|
|
MOZ_B2G_FM=1
|
|
else
|
|
_PLATFORM_DEFAULT_TOOLKIT=cairo-android
|
|
MOZ_LINKER=1
|
|
fi
|
|
TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
|
|
|
|
MOZ_GFX_OPTIMIZE_MOBILE=1
|
|
MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions"
|
|
;;
|
|
|
|
*-*linux*)
|
|
# Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
|
|
# Similarly for GNU_CXX and INTEL_CXX.
|
|
if test "$INTEL_CC" -o "$INTEL_CXX"; then
|
|
# -Os has been broken on Intel's C/C++ compilers for quite a
|
|
# while; Intel recommends against using it.
|
|
MOZ_OPTIMIZE_FLAGS="-O2"
|
|
MOZ_DEBUG_FLAGS="-g"
|
|
elif test "$GNU_CC" -o "$GNU_CXX"; then
|
|
GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
|
|
case $GCC_VERSION in
|
|
4.1.*|4.2.*|4.5.*)
|
|
# -Os is broken on gcc 4.1.x 4.2.x, 4.5.x we need to tweak it to get good results.
|
|
MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
|
|
esac
|
|
MOZ_PGO_OPTIMIZE_FLAGS="-O3"
|
|
MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks $MOZ_OPTIMIZE_SIZE_TWEAK"
|
|
MOZ_DEBUG_FLAGS="-g"
|
|
fi
|
|
|
|
TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
|
|
|
|
MOZ_MEMORY=1
|
|
|
|
case "${target_cpu}" in
|
|
alpha*)
|
|
CFLAGS="$CFLAGS -mieee"
|
|
CXXFLAGS="$CXXFLAGS -mieee"
|
|
;;
|
|
i*86)
|
|
USE_ELF_DYNSTR_GC=1
|
|
;;
|
|
mips*)
|
|
MOZ_DEBUG_FLAGS="-g" # We want inlining
|
|
;;
|
|
esac
|
|
|
|
if test -z "$MC"; then
|
|
MC=mc.exe
|
|
fi
|
|
;;
|
|
*-mingw*)
|
|
DSO_CFLAGS=
|
|
DSO_PIC_CFLAGS=
|
|
DLL_SUFFIX=.dll
|
|
RC=rc.exe
|
|
MC=mc.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"; 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 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 -lnetapi32"
|
|
MOZ_FIX_LINK_PATHS=
|
|
DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core -lmozalloc'
|
|
XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom -lmozalloc'
|
|
DLL_PREFIX=
|
|
IMPORT_LIB_SUFFIX=dll.a
|
|
GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
|
|
|
|
# We use mix of both POSIX and Win32 printf format across the tree, so format
|
|
# warnings are useless on mingw.
|
|
MOZ_C_SUPPORTS_WARNING(-Wno-, format, ac_c_has_wno_format)
|
|
MOZ_CXX_SUPPORTS_WARNING(-Wno-, format, ac_cxx_has_wno_format)
|
|
else
|
|
TARGET_COMPILER_ABI=msvc
|
|
HOST_CC='$(CC)'
|
|
HOST_CXX='$(CXX)'
|
|
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
|
|
XARGS=xargs
|
|
ZIP=zip
|
|
UNZIP=unzip
|
|
DOXYGEN=:
|
|
ASM_SUFFIX=asm
|
|
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)'
|
|
MKSHLIB_FORCE_ALL=
|
|
MKSHLIB_UNFORCE_ALL=
|
|
DSO_LDOPTS=-SUBSYSTEM:WINDOWS
|
|
_USE_CPP_INCLUDE_FLAG=1
|
|
_DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
|
|
_DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
|
|
CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
|
|
CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
|
|
# 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.
|
|
CXXFLAGS="$CXXFLAGS -wd4345 -wd4351 -wd4800"
|
|
# 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 netapi32.lib"
|
|
MOZ_DEBUG_FLAGS='-Zi'
|
|
MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
|
|
WARNINGS_AS_ERRORS='-WX'
|
|
MOZ_OPTIMIZE_FLAGS='-O1'
|
|
MOZ_FIX_LINK_PATHS=
|
|
DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
|
|
XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
|
|
LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
|
|
MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
|
|
LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT"
|
|
dnl For profile-guided optimization
|
|
PROFILE_GEN_CFLAGS="-GL"
|
|
PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
|
|
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"
|
|
LDFLAGS="$LDFLAGS -DYNAMICBASE"
|
|
fi
|
|
AC_DEFINE(HAVE_SNPRINTF)
|
|
AC_DEFINE(_WINDOWS)
|
|
AC_DEFINE(WIN32)
|
|
AC_DEFINE(XP_WIN)
|
|
AC_DEFINE(XP_WIN32)
|
|
AC_DEFINE(HW_THREADS)
|
|
AC_DEFINE(STDC_HEADERS)
|
|
AC_DEFINE(NEW_H, <new>)
|
|
AC_DEFINE(WIN32_LEAN_AND_MEAN)
|
|
TARGET_MD_ARCH=win32
|
|
_PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
|
|
BIN_SUFFIX='.exe'
|
|
MOZ_USER_DIR="Mozilla"
|
|
|
|
dnl Hardcode to win95 for now - cls
|
|
TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
|
|
|
|
dnl set NO_X11 defines here as the general check is skipped on win32
|
|
no_x=yes
|
|
AC_DEFINE(NO_X11)
|
|
|
|
case "$host" in
|
|
*-mingw*)
|
|
MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
|
|
L10NBASEDIR=`cd $L10NBASEDIR && pwd -W`
|
|
;;
|
|
esac
|
|
|
|
case "$host" in
|
|
*-mingw*)
|
|
if test -z "$MOZ_TOOLS"; then
|
|
AC_MSG_ERROR([MOZ_TOOLS is not set])
|
|
fi
|
|
MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
|
|
if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
|
|
AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
|
|
fi
|
|
MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
|
|
if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
|
|
AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
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 "$HAVE_64BIT_OS"; then
|
|
AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
|
|
fi
|
|
|
|
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"
|
|
else
|
|
AC_DEFINE(HAVE_STDCALL)
|
|
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
|
|
|
|
if test "$HAVE_64BIT_OS"; then
|
|
AC_DEFINE(_WIN64)
|
|
fi
|
|
;;
|
|
|
|
*-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.
|
|
MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
|
|
MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
|
|
if test "$LIBRUNPATH"; then
|
|
DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
|
|
fi
|
|
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
|
|
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
|
|
;;
|
|
|
|
*-openbsd*)
|
|
if test "$SO_VERSION"; then
|
|
DLL_SUFFIX=".so.$SO_VERSION"
|
|
else
|
|
DLL_SUFFIX=".so.1.0"
|
|
fi
|
|
MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib -Wl,-rpath-link,$(if $(X11BASE),$(X11BASE),/usr/X11R6)/lib'
|
|
DSO_CFLAGS=''
|
|
DSO_PIC_CFLAGS='-fPIC'
|
|
DSO_LDOPTS='-shared -fPIC'
|
|
if test "$LIBRUNPATH"; then
|
|
DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
|
|
fi
|
|
;;
|
|
|
|
*-os2*)
|
|
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
|
|
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
|
|
AC_DEFINE(OS2)
|
|
AC_DEFINE(XP_OS2)
|
|
AC_DEFINE(OS2EMX_PLAIN_CHAR)
|
|
AC_DEFINE(TCPV40HDRS)
|
|
DLL_PREFIX=
|
|
LIB_PREFIX=
|
|
LIB_SUFFIX=lib
|
|
BIN_SUFFIX=".exe"
|
|
DLL_SUFFIX=".dll"
|
|
IMPORT_LIB_SUFFIX=lib
|
|
DSO_PIC_CFLAGS=
|
|
AR=emxomfar
|
|
AR_FLAGS='r $@'
|
|
CFLAGS="$CFLAGS -Zomf"
|
|
CXXFLAGS="$CXXFLAGS -Zomf"
|
|
DSO_LDOPTS='-Zdll'
|
|
BIN_FLAGS='-Zlinker /ST:0x100000'
|
|
IMPLIB='emximp -o'
|
|
FILTER='true'
|
|
LDFLAGS='-Zmap'
|
|
WARNINGS_AS_ERRORS='-Werror'
|
|
MOZ_DEBUG_FLAGS="-g -fno-inline"
|
|
MOZ_OPTIMIZE_FLAGS="-O2"
|
|
MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
|
|
DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
|
|
LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
|
|
TARGET_MD_ARCH=os2
|
|
_PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
|
|
RC=rc.exe
|
|
MC=mc.exe
|
|
RCFLAGS='-n'
|
|
MOZ_USER_DIR="Mozilla"
|
|
ZIP="$ZIP -X"
|
|
|
|
if test "$MOZTOOLS"; then
|
|
MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
|
|
else
|
|
AC_MSG_ERROR([MOZTOOLS is not set])
|
|
fi
|
|
if test -n "$MOZ_OS2_HIGH_MEMORY"; then
|
|
DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
|
|
LDFLAGS="$LDFLAGS -Zhigh-mem"
|
|
MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
|
|
AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
|
|
fi
|
|
|
|
# GCC for OS/2 currently predefines these, but we don't want them
|
|
_DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
|
|
_DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
|
|
|
|
AC_CACHE_CHECK(for __declspec(dllexport),
|
|
ac_os2_declspec,
|
|
[AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
|
|
[return 0;],
|
|
ac_os2_declspec="yes",
|
|
ac_os2_declspec="no")])
|
|
if test "$ac_os2_declspec" != "yes"; then
|
|
AC_MSG_ERROR([Compiler does not support __declspec(dllexport), install GCC-4.3.2 or newer])
|
|
fi
|
|
;;
|
|
|
|
*-solaris*)
|
|
AC_DEFINE(SOLARIS)
|
|
TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
|
|
MOZ_FIX_LINK_PATHS=
|
|
# $ORIGIN/.. is for shared libraries under components/ to locate shared
|
|
# libraries one level up (e.g. libnspr4.so)
|
|
if test "$SOLARIS_SUNPRO_CC"; then
|
|
LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
|
|
LIBS="-lCrun -lCstd -lc $LIBS"
|
|
AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
|
|
CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
|
|
CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions,no%except -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
|
|
LDFLAGS="-xildoff $LDFLAGS"
|
|
if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
|
|
_SAVE_LDFLAGS=$LDFLAGS
|
|
LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
|
|
AC_TRY_LINK([#include <stdio.h>],
|
|
[printf("Hello World\n");],
|
|
,
|
|
[LDFLAGS=$_SAVE_LDFLAGS])
|
|
fi
|
|
MOZ_OPTIMIZE_FLAGS="-xO4"
|
|
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
|
|
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
|
|
MKSHLIB_FORCE_ALL='-z allextract'
|
|
MKSHLIB_UNFORCE_ALL='-z defaultextract'
|
|
DSO_LDOPTS='-G'
|
|
AR_LIST="$AR t"
|
|
AR_EXTRACT="$AR x"
|
|
AR_DELETE="$AR d"
|
|
AR='$(CXX) -xar'
|
|
AR_FLAGS='-o $@'
|
|
AS='/usr/ccs/bin/as'
|
|
ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
|
|
AS_DASH_C_FLAG=''
|
|
TARGET_COMPILER_ABI="sunc"
|
|
CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
|
|
CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
|
|
AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
|
|
AC_LANG_SAVE
|
|
AC_LANG_CPLUSPLUS
|
|
AC_TRY_COMPILE([],
|
|
[#if (__SUNPRO_CC < 0x590)
|
|
#error "Denied"
|
|
#endif],
|
|
_BAD_COMPILER=,_BAD_COMPILER=1)
|
|
if test -n "$_BAD_COMPILER"; then
|
|
_res="no"
|
|
AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
|
|
else
|
|
_res="yes"
|
|
fi
|
|
AC_TRY_COMPILE([],
|
|
[#if (__SUNPRO_CC >= 0x5100)
|
|
#error "Sun C++ 5.10 or above"
|
|
#endif],
|
|
_ABOVE_SS12U1=,_ABOVE_SS12U1=1)
|
|
if test "$_ABOVE_SS12U1"; then
|
|
# disable xannotate
|
|
CXXFLAGS="$CXXFLAGS -xannotate=no"
|
|
fi
|
|
AC_MSG_RESULT([$_res])
|
|
AC_LANG_RESTORE
|
|
else
|
|
LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
|
|
LIBS="-lc $LIBS"
|
|
MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
|
|
MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
|
|
ASFLAGS="$ASFLAGS -fPIC"
|
|
DSO_LDOPTS='-shared'
|
|
WARNINGS_AS_ERRORS='-Werror'
|
|
_WARNINGS_CFLAGS=''
|
|
_WARNINGS_CXXFLAGS=''
|
|
if test "$OS_RELEASE" = "5.3"; then
|
|
AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
|
|
fi
|
|
fi
|
|
if test "$OS_RELEASE" = "5.5.1"; then
|
|
AC_DEFINE(NEED_USLEEP_PROTOTYPE)
|
|
fi
|
|
;;
|
|
|
|
*-sunos*)
|
|
DSO_LDOPTS='-Bdynamic'
|
|
MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
|
|
MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
|
|
AC_DEFINE(SUNOS4)
|
|
AC_DEFINE(SPRINTF_RETURNS_STRING)
|
|
case "$(target_os)" in
|
|
sunos4.1*)
|
|
DLL_SUFFIX='.so.1.0'
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
*-os2*)
|
|
HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
|
|
;;
|
|
|
|
esac
|
|
|
|
AC_SUBST(MOZ_LINKER)
|
|
if test -n "$MOZ_LINKER"; then
|
|
AC_DEFINE(MOZ_LINKER)
|
|
fi
|
|
AC_SUBST(MOZ_ENABLE_SZIP)
|
|
|
|
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 Any platform that doesn't have MKSHLIB_FORCE_ALL defined
|
|
dnl by now will not have any way to link most binaries (tests
|
|
dnl as well as viewer, apprunner, etc.), because some symbols
|
|
dnl will be left out of the "composite" .so's by ld as unneeded.
|
|
dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
|
|
dnl they can link in the static libs that provide the missing
|
|
dnl symbols.
|
|
dnl ========================================================
|
|
NO_LD_ARCHIVE_FLAGS=
|
|
if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
|
|
NO_LD_ARCHIVE_FLAGS=1
|
|
fi
|
|
case "$target" in
|
|
*-os2*)
|
|
NO_LD_ARCHIVE_FLAGS=
|
|
;;
|
|
*-aix4.3*|*-aix5*)
|
|
NO_LD_ARCHIVE_FLAGS=
|
|
;;
|
|
*-mingw*)
|
|
if test -z "$GNU_CC"; then
|
|
NO_LD_ARCHIVE_FLAGS=
|
|
fi
|
|
;;
|
|
esac
|
|
AC_SUBST(NO_LD_ARCHIVE_FLAGS)
|
|
|
|
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'
|
|
;;
|
|
*-solaris*)
|
|
if test -z "$GNU_CC"; then
|
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
|
|
else
|
|
if test -z "$GCC_USE_GNU_LD"; then
|
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
|
|
else
|
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
|
|
fi
|
|
fi
|
|
;;
|
|
*-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
|
|
fi
|
|
|
|
MOZ_COMPILER_OPTS
|
|
if test -z "$SKIP_COMPILER_CHECKS"; then
|
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
|
dnl ========================================================
|
|
AC_HEADER_STDC
|
|
AC_C_CONST
|
|
AC_TYPE_MODE_T
|
|
AC_TYPE_OFF_T
|
|
AC_TYPE_PID_T
|
|
AC_TYPE_SIZE_T
|
|
AC_LANG_CPLUSPLUS
|
|
AC_MSG_CHECKING(for __stdcall)
|
|
AC_CACHE_VAL(ac_cv___stdcall,
|
|
[AC_TRY_COMPILE([template <typename Method> struct foo;
|
|
template <> struct foo<void (*)()> {};
|
|
template <> struct foo<void (__stdcall*)()> {};],
|
|
[],
|
|
[ac_cv___stdcall=true],
|
|
[ac_cv___stdcall=false])])
|
|
if test "$ac_cv___stdcall" = true ; then
|
|
AC_DEFINE(HAVE_STDCALL)
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
AC_LANG_C
|
|
AC_MSG_CHECKING(for ssize_t)
|
|
AC_CACHE_VAL(ac_cv_type_ssize_t,
|
|
[AC_TRY_COMPILE([#include <stdio.h>
|
|
#include <sys/types.h>],
|
|
[ssize_t foo = 0;],
|
|
[ac_cv_type_ssize_t=true],
|
|
[ac_cv_type_ssize_t=false])])
|
|
if test "$ac_cv_type_ssize_t" = true ; then
|
|
AC_DEFINE(HAVE_SSIZE_T)
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
AC_STRUCT_ST_BLKSIZE
|
|
AC_MSG_CHECKING(for siginfo_t)
|
|
AC_CACHE_VAL(ac_cv_siginfo_t,
|
|
[AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
|
|
#include <signal.h>],
|
|
[siginfo_t* info;],
|
|
[ac_cv_siginfo_t=true],
|
|
[ac_cv_siginfo_t=false])])
|
|
if test "$ac_cv_siginfo_t" = true ; then
|
|
AC_DEFINE(HAVE_SIGINFO_T)
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
dnl Check for int64, uint, and uint_t.
|
|
dnl ========================================================
|
|
AC_MSG_CHECKING(for int64)
|
|
AC_CACHE_VAL(ac_cv_int64,
|
|
[AC_TRY_COMPILE([#include <stdio.h>
|
|
#include <sys/types.h>],
|
|
[int64 foo = 0;],
|
|
[ac_cv_int64=true],
|
|
[ac_cv_int64=false])])
|
|
if test "$ac_cv_int64" = true ; then
|
|
AC_DEFINE(HAVE_INT64)
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
AC_MSG_CHECKING(for uint)
|
|
AC_CACHE_VAL(ac_cv_uint,
|
|
[AC_TRY_COMPILE([#include <stdio.h>
|
|
#include <sys/types.h>],
|
|
[uint foo = 0;],
|
|
[ac_cv_uint=true],
|
|
[ac_cv_uint=false])])
|
|
if test "$ac_cv_uint" = true ; then
|
|
AC_DEFINE(HAVE_UINT)
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
AC_MSG_CHECKING(for uint_t)
|
|
AC_CACHE_VAL(ac_cv_uint_t,
|
|
[AC_TRY_COMPILE([#include <stdio.h>
|
|
#include <sys/types.h>],
|
|
[uint_t foo = 0;],
|
|
[ac_cv_uint_t=true],
|
|
[ac_cv_uint_t=false])])
|
|
if test "$ac_cv_uint_t" = true ; then
|
|
AC_DEFINE(HAVE_UINT_T)
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
|
|
dnl are defined when compiling C++ but not C. Since the result of this
|
|
dnl test is used only in C++, do it in C++.
|
|
AC_LANG_CPLUSPLUS
|
|
|
|
AC_MSG_CHECKING(for uname.domainname)
|
|
AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
|
|
[AC_TRY_COMPILE([#include <sys/utsname.h>],
|
|
[ struct utsname *res; char *domain;
|
|
(void)uname(res); if (res != 0) { domain = res->domainname; } ],
|
|
[ac_cv_have_uname_domainname_field=true],
|
|
[ac_cv_have_uname_domainname_field=false])])
|
|
|
|
if test "$ac_cv_have_uname_domainname_field" = "true"; then
|
|
AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
AC_MSG_CHECKING(for uname.__domainname)
|
|
AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
|
|
[AC_TRY_COMPILE([#include <sys/utsname.h>],
|
|
[ struct utsname *res; char *domain;
|
|
(void)uname(res); if (res != 0) { domain = res->__domainname; } ],
|
|
[ac_cv_have_uname_us_domainname_field=true],
|
|
[ac_cv_have_uname_us_domainname_field=false])])
|
|
|
|
if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
|
|
AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
dnl Check whether we can use gcc's c++0x mode
|
|
AC_LANG_CPLUSPLUS
|
|
|
|
if test "$GNU_CXX"; then
|
|
_SAVE_CXXFLAGS=$CXXFLAGS
|
|
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
|
|
|
AC_CACHE_CHECK(for gcc c++0x headers bug without rtti,
|
|
ac_cv_cxx0x_headers_bug,
|
|
[AC_TRY_COMPILE([#include <memory>], [],
|
|
ac_cv_cxx0x_headers_bug="no",
|
|
ac_cv_cxx0x_headers_bug="yes")])
|
|
CXXFLAGS="$_SAVE_CXXFLAGS"
|
|
if test "$ac_cv_cxx0x_headers_bug" = "no"; then
|
|
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
|
fi
|
|
fi
|
|
|
|
dnl Check for usable char16_t (2 bytes, unsigned)
|
|
dnl (we might not need the unsignedness check anymore)
|
|
AC_CACHE_CHECK(for usable char16_t (2 bytes, unsigned),
|
|
ac_cv_have_usable_char16_t,
|
|
[AC_TRY_COMPILE([$configure_static_assert_macros],
|
|
[CONFIGURE_STATIC_ASSERT(sizeof(char16_t) == 2);
|
|
CONFIGURE_STATIC_ASSERT(char16_t(-1) > char16_t(0));
|
|
CONFIGURE_STATIC_ASSERT(sizeof((u"hello")[0]) == 2);
|
|
CONFIGURE_STATIC_ASSERT(sizeof(u'a') == 2);
|
|
CONFIGURE_STATIC_ASSERT(u'\xFFFF' > u'\x0')],
|
|
ac_cv_have_usable_char16_t="yes",
|
|
ac_cv_have_usable_char16_t="no")])
|
|
if test "$ac_cv_have_usable_char16_t" = "yes"; then
|
|
AC_DEFINE(HAVE_CPP_CHAR16_T)
|
|
HAVE_CPP_CHAR16_T=1
|
|
elif test "$GNU_CXX"; then
|
|
CXXFLAGS="$_SAVE_CXXFLAGS"
|
|
fi
|
|
|
|
dnl Check for usable wchar_t (2 bytes, unsigned)
|
|
dnl (we really don't need the unsignedness check anymore)
|
|
dnl ========================================================
|
|
|
|
AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
|
|
ac_cv_have_usable_wchar_v2,
|
|
[AC_TRY_COMPILE([#include <stddef.h>
|
|
$configure_static_assert_macros],
|
|
[CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
|
|
CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
|
|
ac_cv_have_usable_wchar_v2="yes",
|
|
ac_cv_have_usable_wchar_v2="no")])
|
|
if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
|
|
AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
|
|
HAVE_CPP_2BYTE_WCHAR_T=1
|
|
elif test "$ac_cv_have_usable_char16_t" != "yes"; then
|
|
dnl This is really gcc-only
|
|
dnl Do this test using CXX only since some versions of gcc
|
|
dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
|
|
dnl only have short-wchar support for c++.
|
|
dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
|
|
|
|
_SAVE_CXXFLAGS=$CXXFLAGS
|
|
CXXFLAGS="$CXXFLAGS -fshort-wchar"
|
|
|
|
AC_CACHE_CHECK(for compiler -fshort-wchar option,
|
|
ac_cv_have_usable_wchar_option_v2,
|
|
[AC_TRY_LINK([#include <stddef.h>
|
|
$configure_static_assert_macros],
|
|
[CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
|
|
CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
|
|
ac_cv_have_usable_wchar_option_v2="yes",
|
|
ac_cv_have_usable_wchar_option_v2="no")])
|
|
|
|
if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
|
|
AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
|
|
HAVE_CPP_2BYTE_WCHAR_T=1
|
|
if test "$OS_TARGET" = Android; then
|
|
WCHAR_CFLAGS="-fshort-wchar -Wl,--no-wchar-size-warning"
|
|
CXXFLAGS="$CXXFLAGS -Wl,--no-wchar-size-warning"
|
|
CFLAGS="$CFLAGS -Wl,--no-wchar-size-warning"
|
|
DSO_LDOPTS="$DSO_LDOPTS -Wl,--no-wchar-size-warning"
|
|
else
|
|
WCHAR_CFLAGS="-fshort-wchar"
|
|
fi
|
|
else
|
|
CXXFLAGS=$_SAVE_CXXFLAGS
|
|
fi
|
|
fi
|
|
|
|
AC_LANG_C
|
|
|
|
dnl Check for .hidden assembler directive and visibility attribute.
|
|
dnl Borrowed from glibc configure.in
|
|
dnl ===============================================================
|
|
if test "$GNU_CC"; then
|
|
AC_CACHE_CHECK(for visibility(hidden) attribute,
|
|
ac_cv_visibility_hidden,
|
|
[cat > conftest.c <<EOF
|
|
int foo __attribute__ ((visibility ("hidden"))) = 1;
|
|
EOF
|
|
ac_cv_visibility_hidden=no
|
|
if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
|
|
if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
|
|
ac_cv_visibility_hidden=yes
|
|
fi
|
|
fi
|
|
rm -f conftest.[cs]
|
|
])
|
|
if test "$ac_cv_visibility_hidden" = "yes"; then
|
|
AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
|
|
|
|
AC_CACHE_CHECK(for visibility(default) attribute,
|
|
ac_cv_visibility_default,
|
|
[cat > conftest.c <<EOF
|
|
int foo __attribute__ ((visibility ("default"))) = 1;
|
|
EOF
|
|
ac_cv_visibility_default=no
|
|
if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
|
|
if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
|
|
ac_cv_visibility_default=yes
|
|
fi
|
|
fi
|
|
rm -f conftest.[cs]
|
|
])
|
|
if test "$ac_cv_visibility_default" = "yes"; then
|
|
AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
|
|
|
|
AC_CACHE_CHECK(for visibility pragma support,
|
|
ac_cv_visibility_pragma,
|
|
[cat > conftest.c <<EOF
|
|
#pragma GCC visibility push(hidden)
|
|
int foo_hidden = 1;
|
|
#pragma GCC visibility push(default)
|
|
int foo_default = 1;
|
|
EOF
|
|
ac_cv_visibility_pragma=no
|
|
if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
|
|
if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
|
|
if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
|
|
ac_cv_visibility_pragma=yes
|
|
fi
|
|
fi
|
|
fi
|
|
rm -f conftest.[cs]
|
|
])
|
|
if test "$ac_cv_visibility_pragma" = "yes"; then
|
|
AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
|
|
ac_cv_have_visibility_class_bug,
|
|
[cat > conftest.c <<EOF
|
|
#pragma GCC visibility push(hidden)
|
|
struct __attribute__ ((visibility ("default"))) TestStruct {
|
|
static void Init();
|
|
};
|
|
__attribute__ ((visibility ("default"))) void TestFunc() {
|
|
TestStruct::Init();
|
|
}
|
|
EOF
|
|
ac_cv_have_visibility_class_bug=no
|
|
if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
|
|
ac_cv_have_visibility_class_bug=yes
|
|
else
|
|
if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
|
|
ac_cv_have_visibility_class_bug=yes
|
|
fi
|
|
fi
|
|
rm -rf conftest.{c,S}
|
|
])
|
|
|
|
AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
|
|
ac_cv_have_visibility_builtin_bug,
|
|
[cat > conftest.c <<EOF
|
|
#pragma GCC visibility push(hidden)
|
|
#pragma GCC visibility push(default)
|
|
#include <string.h>
|
|
#pragma GCC visibility pop
|
|
|
|
__attribute__ ((visibility ("default"))) void Func() {
|
|
char c[[100]];
|
|
memset(c, 0, sizeof(c));
|
|
}
|
|
EOF
|
|
ac_cv_have_visibility_builtin_bug=no
|
|
if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
|
|
ac_cv_have_visibility_builtin_bug=yes
|
|
else
|
|
if test `grep -c "@PLT" conftest.S` = 0; then
|
|
ac_cv_visibility_builtin_bug=yes
|
|
fi
|
|
fi
|
|
rm -f conftest.{c,S}
|
|
])
|
|
if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
|
|
"$ac_cv_have_visibility_class_bug" = "no"; then
|
|
VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
|
|
WRAP_SYSTEM_INCLUDES=1
|
|
STL_FLAGS='-I$(DIST)/stl_wrappers'
|
|
WRAP_STL_INCLUDES=1
|
|
else
|
|
VISIBILITY_FLAGS='-fvisibility=hidden'
|
|
fi # have visibility pragma bug
|
|
fi # have visibility pragma
|
|
fi # have visibility(default) attribute
|
|
fi # have visibility(hidden) attribute
|
|
fi # GNU_CC
|
|
|
|
# visibility hidden flag for Sun Studio on Solaris
|
|
if test "$SOLARIS_SUNPRO_CC"; then
|
|
VISIBILITY_FLAGS='-xldscope=hidden'
|
|
fi # Sun Studio on Solaris
|
|
|
|
AC_SUBST(WRAP_SYSTEM_INCLUDES)
|
|
AC_SUBST(VISIBILITY_FLAGS)
|
|
|
|
MOZ_GCC_PR49911
|
|
MOZ_GCC_PR39608
|
|
MOZ_LLVM_PR8927
|
|
|
|
dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
|
|
dnl ========================================================
|
|
if test "$GNU_CC"; then
|
|
CFLAGS_save="${CFLAGS}"
|
|
CFLAGS="${CFLAGS} -Werror"
|
|
AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
|
|
ac_cv_force_align_arg_pointer,
|
|
[AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
|
|
[],
|
|
ac_cv_force_align_arg_pointer="yes",
|
|
ac_cv_force_align_arg_pointer="no")])
|
|
CFLAGS="${CFLAGS_save}"
|
|
if test "$ac_cv_force_align_arg_pointer" = "yes"; then
|
|
HAVE_GCC_ALIGN_ARG_POINTER=1
|
|
else
|
|
HAVE_GCC_ALIGN_ARG_POINTER=
|
|
fi
|
|
fi
|
|
AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
|
|
|
|
dnl Checks for header files.
|
|
dnl ========================================================
|
|
AC_HEADER_DIRENT
|
|
case "$target_os" in
|
|
freebsd*|openbsd*)
|
|
# for stuff like -lXshm
|
|
CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
|
|
;;
|
|
esac
|
|
MOZ_CHECK_COMMON_HEADERS
|
|
|
|
dnl These are all the places some variant of statfs can be hiding.
|
|
MOZ_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
|
|
|
|
dnl Quota support
|
|
MOZ_CHECK_HEADERS(sys/quota.h sys/sysmacros.h)
|
|
MOZ_CHECK_HEADERS([linux/quota.h],,,[#include <sys/socket.h>])
|
|
|
|
dnl SCTP support - needs various network include headers
|
|
MOZ_CHECK_HEADERS([linux/if_addr.h linux/rtnetlink.h],,,[#include <sys/socket.h>])
|
|
|
|
MOZ_CHECK_HEADERS(sys/types.h netinet/in.h byteswap.h)
|
|
|
|
dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
|
|
AC_CACHE_CHECK(for sockaddr_in.sin_len,
|
|
ac_cv_sockaddr_in_sin_len,
|
|
[AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif
|
|
#include <netinet/in.h>
|
|
struct sockaddr_in x;
|
|
void *foo = (void*) &x.sin_len;],
|
|
[],
|
|
[ac_cv_sockaddr_in_sin_len=true],
|
|
[ac_cv_sockaddr_in_sin_len=false])])
|
|
if test "$ac_cv_sockaddr_in_sin_len" = true ; then
|
|
AC_DEFINE(HAVE_SIN_LEN)
|
|
dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
|
|
AC_DEFINE(HAVE_SCONN_LEN)
|
|
fi
|
|
|
|
AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
|
|
ac_cv_sockaddr_in6_sin6_len,
|
|
[AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif
|
|
#include <netinet/in.h>
|
|
struct sockaddr_in6 x;
|
|
void *foo = (void*) &x.sin6_len;],
|
|
[],
|
|
[ac_cv_sockaddr_in6_sin6_len=true],
|
|
[ac_cv_sockaddr_in6_sin6_len=false])])
|
|
if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
|
|
AC_DEFINE(HAVE_SIN6_LEN)
|
|
fi
|
|
|
|
AC_CACHE_CHECK(for sockaddr.sa_len,
|
|
ac_cv_sockaddr_sa_len,
|
|
[AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif
|
|
#include <sys/socket.h>
|
|
struct sockaddr x;
|
|
void *foo = (void*) &x.sa_len;],
|
|
[],
|
|
[ac_cv_sockaddr_sa_len=true],
|
|
[ac_cv_sockaddr_sa_len=false])])
|
|
if test "$ac_cv_sockaddr_sa_len" = true ; then
|
|
AC_DEFINE(HAVE_SA_LEN)
|
|
fi
|
|
|
|
dnl Check whether the compiler supports the new-style C++ standard
|
|
dnl library headers (i.e. <new>) or needs the old "new.h"
|
|
AC_LANG_CPLUSPLUS
|
|
NEW_H=new.h
|
|
MOZ_CHECK_HEADER(new, [NEW_H=new])
|
|
AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
|
|
AC_LANG_C
|
|
|
|
AC_ARG_ENABLE(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)
|
|
|
|
case $target in
|
|
*-aix4.3*|*-aix5*)
|
|
;;
|
|
*)
|
|
MOZ_CHECK_HEADERS(sys/cdefs.h)
|
|
;;
|
|
esac
|
|
|
|
MOZ_LINUX_PERF_EVENT
|
|
|
|
dnl Checks for libraries.
|
|
dnl ========================================================
|
|
case $target in
|
|
*-hpux11.*)
|
|
;;
|
|
*)
|
|
AC_CHECK_LIB(c_r, gethostbyname_r)
|
|
;;
|
|
esac
|
|
|
|
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*)
|
|
;;
|
|
*-os2*)
|
|
;;
|
|
*)
|
|
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
|
|
|
|
case $target in
|
|
*-aix*)
|
|
AC_CHECK_LIB(C_r, demangle)
|
|
;;
|
|
*)
|
|
AC_CHECK_LIB(C, demangle)
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
dnl OS/2 has socket in libc.
|
|
case $target in
|
|
*-os2*)
|
|
;;
|
|
*)
|
|
AC_CHECK_LIB(socket, socket)
|
|
esac
|
|
|
|
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 "$no_x" = "yes"; then
|
|
AC_DEFINE(NO_X11)
|
|
else
|
|
AC_DEFINE_UNQUOTED(FUNCPROTO,15)
|
|
XLIBS="-lX11 $XLIBS"
|
|
_SAVE_LDFLAGS="$LDFLAGS"
|
|
LDFLAGS="$XLDFLAGS $LDFLAGS"
|
|
AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
|
|
[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)
|
|
])
|
|
|
|
# AIX needs the motif library linked before libXt to prevent
|
|
# crashes in plugins linked against Motif - Bug #98892
|
|
case "${target_os}" in
|
|
aix*)
|
|
XT_LIBS="-lXm $XT_LIBS"
|
|
;;
|
|
esac
|
|
|
|
dnl ========================================================
|
|
dnl = Check for XShm
|
|
dnl ========================================================
|
|
AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
|
|
$XLIBS $XEXT_LIBS)
|
|
|
|
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"
|
|
fi # $no_x
|
|
|
|
AC_SUBST(XCFLAGS)
|
|
AC_SUBST(XLDFLAGS)
|
|
AC_SUBST(XLIBS)
|
|
AC_SUBST(XEXT_LIBS)
|
|
AC_SUBST(XT_LIBS)
|
|
AC_SUBST(XSS_LIBS)
|
|
|
|
dnl ========================================================
|
|
dnl = pthread support
|
|
dnl = Start by checking whether the system support pthreads
|
|
dnl ========================================================
|
|
case "$target_os" in
|
|
darwin*)
|
|
USE_PTHREADS=1
|
|
;;
|
|
*)
|
|
MOZ_CHECK_PTHREADS(pthreads,
|
|
USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
|
|
MOZ_CHECK_PTHREADS(pthread,
|
|
USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
|
|
MOZ_CHECK_PTHREADS(c_r,
|
|
USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
|
|
MOZ_CHECK_PTHREADS(c,
|
|
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 "$USE_PTHREADS"x = x; then
|
|
AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
|
|
fi],
|
|
USE_PTHREADS=
|
|
_PTHREAD_LDFLAGS=
|
|
)
|
|
|
|
dnl ========================================================
|
|
dnl Do the platform specific pthread hackery
|
|
dnl ========================================================
|
|
if test "$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)
|
|
;;
|
|
|
|
*-aix4.3*|*-aix5*)
|
|
AC_DEFINE(_REENTRANT)
|
|
;;
|
|
|
|
*-hpux11.*)
|
|
AC_DEFINE(_REENTRANT)
|
|
;;
|
|
|
|
*-*-solaris*)
|
|
AC_DEFINE(_REENTRANT)
|
|
if test "$SOLARIS_SUNPRO_CC"; then
|
|
CFLAGS="$CFLAGS -mt"
|
|
CXXFLAGS="$CXXFLAGS -mt"
|
|
fi
|
|
;;
|
|
esac
|
|
LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
|
|
fi
|
|
|
|
|
|
dnl Checks for library functions.
|
|
dnl ========================================================
|
|
AC_PROG_GCC_TRADITIONAL
|
|
AC_FUNC_MEMCMP
|
|
AC_CHECK_FUNCS(random strerror lchown fchmod snprintf memmove rint stat64 lstat64 truncate64 setbuf isatty)
|
|
AC_CHECK_FUNCS(statvfs64 statvfs statfs64 statfs)
|
|
AC_CHECK_FUNCS(flockfile getpagesize)
|
|
AC_CHECK_FUNCS(localtime_r strtok_r)
|
|
|
|
dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
|
|
AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
|
|
ac_cv_clock_monotonic,
|
|
[for libs in "" -lrt; do
|
|
_SAVE_LIBS="$LIBS"
|
|
LIBS="$LIBS $libs"
|
|
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(REALTIME_LIBS)
|
|
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,
|
|
[AC_TRY_LINK([
|
|
#ifdef linux
|
|
#define _BSD_SOURCE 1
|
|
#endif
|
|
#include <resolv.h>
|
|
],
|
|
[int foo = res_ninit(&_res);],
|
|
[ac_cv_func_res_ninit=yes],
|
|
[ac_cv_func_res_ninit=no])
|
|
])
|
|
|
|
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
|
|
AC_CACHE_CHECK(
|
|
[for gnu_get_libc_version()],
|
|
ac_cv_func_gnu_get_libc_version,
|
|
[AC_TRY_LINK([
|
|
#ifdef HAVE_GNU_LIBC_VERSION_H
|
|
#include <gnu/libc-version.h>
|
|
#endif
|
|
],
|
|
[const char *glibc_version = gnu_get_libc_version();],
|
|
[ac_cv_func_gnu_get_libc_version=yes],
|
|
[ac_cv_func_gnu_get_libc_version=no]
|
|
)]
|
|
)
|
|
|
|
if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
|
|
AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
|
|
fi
|
|
|
|
case $target_os in
|
|
darwin*|mingw*|os2*)
|
|
;;
|
|
*)
|
|
|
|
AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
|
|
AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
|
|
AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_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)
|
|
DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
|
|
LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
|
|
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
|
|
|
|
AM_LANGINFO_CODESET
|
|
|
|
AC_LANG_C
|
|
|
|
dnl **********************
|
|
dnl *** va_copy checks ***
|
|
dnl **********************
|
|
dnl we currently check for all three va_copy possibilities, so we get
|
|
dnl all results in config.log for bug reports.
|
|
AC_MSG_CHECKING(for an implementation of va_copy())
|
|
AC_CACHE_VAL(ac_cv_va_copy,[
|
|
AC_TRY_RUN([
|
|
#include <stdarg.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);
|
|
}
|
|
int main() { f (0, 42); return 0; }],
|
|
ac_cv_va_copy=yes,
|
|
ac_cv_va_copy=no,
|
|
ac_cv_va_copy=no
|
|
)
|
|
])
|
|
AC_MSG_RESULT($ac_cv_va_copy)
|
|
AC_MSG_CHECKING(for an implementation of __va_copy())
|
|
AC_CACHE_VAL(ac_cv___va_copy,[
|
|
AC_TRY_RUN([
|
|
#include <stdarg.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);
|
|
}
|
|
int main() { f (0, 42); return 0; }],
|
|
ac_cv___va_copy=yes,
|
|
ac_cv___va_copy=no,
|
|
ac_cv___va_copy=no
|
|
)
|
|
])
|
|
AC_MSG_RESULT($ac_cv___va_copy)
|
|
AC_MSG_CHECKING(whether va_lists can be copied by value)
|
|
AC_CACHE_VAL(ac_cv_va_val_copy,[
|
|
AC_TRY_RUN([
|
|
#include <stdarg.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);
|
|
}
|
|
int main() { f (0, 42); return 0; }],
|
|
ac_cv_va_val_copy=yes,
|
|
ac_cv_va_val_copy=no,
|
|
ac_cv_va_val_copy=yes
|
|
)
|
|
])
|
|
if test "x$ac_cv_va_copy" = "xyes"; then
|
|
AC_DEFINE(VA_COPY, va_copy)
|
|
AC_DEFINE(HAVE_VA_COPY)
|
|
elif 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
|
|
AC_MSG_RESULT($ac_cv_va_val_copy)
|
|
|
|
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 for support of modern template specialization syntax
|
|
dnl Test code and requirement from scc@netscape.com.
|
|
dnl Autoconf cut-and-paste job by waterson@netscape.com
|
|
AC_CACHE_CHECK(for modern C++ template specialization syntax support,
|
|
ac_cv_cpp_modern_specialize_template_syntax,
|
|
[AC_TRY_COMPILE(template <class T> struct X { int a; };
|
|
class Y {};
|
|
template <> struct X<Y> { double a; };,
|
|
X<int> int_x;
|
|
X<Y> y_x;,
|
|
ac_cv_cpp_modern_specialize_template_syntax=yes,
|
|
ac_cv_cpp_modern_specialize_template_syntax=no)])
|
|
if test "$ac_cv_cpp_modern_specialize_template_syntax" = no ; then
|
|
AC_MSG_ERROR([The C++ compiler does not support template specialization])
|
|
fi
|
|
|
|
dnl Some compilers support only full specialization, and some don't.
|
|
AC_CACHE_CHECK(whether partial template specialization works,
|
|
ac_cv_cpp_partial_specialization,
|
|
[AC_TRY_COMPILE(template <class T> class Foo {};
|
|
template <class T> class Foo<T*> {};,
|
|
return 0;,
|
|
ac_cv_cpp_partial_specialization=yes,
|
|
ac_cv_cpp_partial_specialization=no)])
|
|
if test "$ac_cv_cpp_partial_specialization" = yes ; then
|
|
AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
|
|
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
|
|
|
|
|
|
dnl note that this one is reversed - if the test fails, then
|
|
dnl we require implementations of unused virtual methods. Which
|
|
dnl really blows because it means we'll have useless vtable
|
|
dnl bloat.
|
|
AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
|
|
ac_cv_cpp_unused_required,
|
|
[AC_TRY_LINK(class X {private: virtual void never_called();};,
|
|
X x;,
|
|
ac_cv_cpp_unused_required=no,
|
|
ac_cv_cpp_unused_required=yes)])
|
|
if test "$ac_cv_cpp_unused_required" = yes ; then
|
|
AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
|
|
fi
|
|
|
|
|
|
dnl Some compilers have trouble comparing a constant reference to a templatized
|
|
dnl class to zero, and require an explicit operator==() to be defined that takes
|
|
dnl an int. This test separates the strong from the weak.
|
|
|
|
AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
|
|
ac_cv_trouble_comparing_to_zero,
|
|
[AC_TRY_COMPILE([#include <algorithm>
|
|
template <class T> class Foo {};
|
|
class T2;
|
|
template <class T> int operator==(const T2*, const T&) { return 0; }
|
|
template <class T> int operator!=(const T2*, const T&) { return 0; }],
|
|
[Foo<int> f; return (0 != f);],
|
|
ac_cv_trouble_comparing_to_zero=no,
|
|
ac_cv_trouble_comparing_to_zero=yes)])
|
|
if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
|
|
AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
|
|
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 Determine the target ARM architecture (5 for ARMv5, v5T, v5E, etc.; 6 for ARMv6, v6K, etc.)
|
|
ARM_ARCH=`${CC-cc} ${CFLAGS} -dM -E - < /dev/null | sed -n 's/.*__ARM_ARCH_\([[0-9]]*\).*/\1/p'`
|
|
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"
|
|
_SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000"
|
|
fi
|
|
fi
|
|
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 -z "$MOZ_OLD_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=-nostartfiles
|
|
fi
|
|
fi
|
|
|
|
dnl Check for the existence of various allocation headers/functions
|
|
|
|
MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h"
|
|
MALLOC_H=
|
|
|
|
for file in $MALLOC_HEADERS; do
|
|
MOZ_CHECK_HEADER($file, [MALLOC_H=$file])
|
|
if test "$MALLOC_H" != ""; then
|
|
AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
|
|
break
|
|
fi
|
|
done
|
|
|
|
MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
|
|
AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
|
|
|
|
AC_CHECK_FUNCS(malloc_usable_size)
|
|
|
|
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)])
|
|
|
|
AC_CACHE_CHECK(for __attribute__((malloc)),
|
|
ac_cv_attribute_malloc,
|
|
[AC_TRY_COMPILE([void* f(int) __attribute__((malloc));],
|
|
[],
|
|
ac_cv_attribute_malloc=yes,
|
|
ac_cv_attribute_malloc=no)])
|
|
|
|
AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
|
|
ac_cv_attribute_warn_unused,
|
|
[AC_TRY_COMPILE([int f(void) __attribute__((warn_unused_result));],
|
|
[],
|
|
ac_cv_attribute_warn_unused=yes,
|
|
ac_cv_attribute_warn_unused=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
|
|
|
|
TARGET_XPCOM_ABI=
|
|
if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
|
|
TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
|
|
fi
|
|
|
|
dnl Mozilla specific options
|
|
dnl ========================================================
|
|
dnl The macros used for command line options
|
|
dnl are defined in build/autoconf/altoptions.m4.
|
|
|
|
dnl If the compiler supports these attributes, define them as
|
|
dnl convenience macros.
|
|
if test "$ac_cv_attribute_malloc" = yes ; then
|
|
AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
|
|
else
|
|
AC_DEFINE(NS_ATTR_MALLOC,)
|
|
fi
|
|
|
|
if test "$ac_cv_attribute_warn_unused" = yes ; then
|
|
AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
|
|
else
|
|
AC_DEFINE(NS_WARN_UNUSED_RESULT,)
|
|
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 ========================================================
|
|
dnl =
|
|
dnl = Check for external package dependencies
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(External Packages)
|
|
|
|
MOZ_ARG_WITH_STRING(libxul-sdk,
|
|
[ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
|
|
LIBXUL_SDK_DIR=$withval)
|
|
|
|
if test "$LIBXUL_SDK_DIR" = "yes"; then
|
|
AC_MSG_ERROR([--with-libxul-sdk must specify a path])
|
|
elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
|
|
LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
|
|
|
|
if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
|
|
AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
|
|
fi
|
|
|
|
fi
|
|
AC_SUBST(LIBXUL_SDK)
|
|
|
|
if test -n "$LIBXUL_SDK"; then
|
|
LIBXUL_DIST="$LIBXUL_SDK"
|
|
else
|
|
LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
|
|
fi
|
|
AC_SUBST(LIBXUL_DIST)
|
|
|
|
SYSTEM_LIBXUL=
|
|
|
|
MOZ_ARG_WITH_BOOL(system-libxul,
|
|
[ --with-system-libxul Use system installed libxul SDK],
|
|
SYSTEM_LIBXUL=1)
|
|
|
|
dnl ========================================================
|
|
dnl = If NSPR was not detected in the system,
|
|
dnl = use the one in the source tree (mozilla/nsprpub)
|
|
dnl ========================================================
|
|
MOZ_ARG_WITH_BOOL(system-nspr,
|
|
[ --with-system-nspr Use system installed NSPR],
|
|
_USE_SYSTEM_NSPR=1 )
|
|
|
|
if test -n "$_USE_SYSTEM_NSPR"; then
|
|
AM_PATH_NSPR(4.9.4, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([your don't have NSPR installed or your version is too old])])
|
|
fi
|
|
|
|
if test -n "$MOZ_NATIVE_NSPR"; then
|
|
_SAVE_CFLAGS=$CFLAGS
|
|
CFLAGS="$CFLAGS $NSPR_CFLAGS"
|
|
AC_TRY_COMPILE([#include "prtypes.h"],
|
|
[#ifndef PR_STATIC_ASSERT
|
|
#error PR_STATIC_ASSERT not defined or requires including prtypes.h
|
|
#endif],
|
|
[MOZ_NATIVE_NSPR=1],
|
|
AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
|
|
AC_TRY_COMPILE([#include "prtypes.h"],
|
|
[#ifndef PR_UINT64
|
|
#error PR_UINT64 not defined or requires including prtypes.h
|
|
#endif],
|
|
[MOZ_NATIVE_NSPR=1],
|
|
AC_MSG_ERROR([system NSPR does not support PR_UINT64 or including prtypes.h does not provide it]))
|
|
CFLAGS=$_SAVE_CFLAGS
|
|
else
|
|
if test -z "$LIBXUL_SDK"; then
|
|
NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
|
|
if test -n "$GNU_CC"; then
|
|
NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
|
|
else
|
|
NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
|
|
fi
|
|
else
|
|
NSPR_CFLAGS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --includedir="${LIBXUL_DIST}/include/nspr" --cflags`
|
|
NSPR_LIBS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --libdir="${LIBXUL_DIST}"/lib --libs`
|
|
fi
|
|
fi
|
|
|
|
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_NATIVE_LIBEVENT=1,
|
|
LIBEVENT_DIR=/usr)
|
|
fi
|
|
if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
|
|
MOZ_NATIVE_LIBEVENT=
|
|
elif test -z "$MOZ_NATIVE_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_NATIVE_LIBEVENT=1
|
|
MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
|
|
MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
|
|
[MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
|
|
fi
|
|
CFLAGS=$_SAVE_CFLAGS
|
|
LDFLAGS=$_SAVE_LDFLAGS
|
|
LIBS=$_SAVE_LIBS
|
|
|
|
AC_SUBST(MOZ_NATIVE_LIBEVENT)
|
|
AC_SUBST(MOZ_LIBEVENT_CFLAGS)
|
|
AC_SUBST(MOZ_LIBEVENT_LIBS)
|
|
|
|
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.14, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
|
|
fi
|
|
|
|
if test -n "$MOZ_NATIVE_NSS"; then
|
|
NSS_LIBS="$NSS_LIBS -lcrmf"
|
|
else
|
|
NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
|
|
NSS_DEP_LIBS="\
|
|
\$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
|
|
\$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
|
|
\$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
|
|
\$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
|
|
\$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX)"
|
|
|
|
if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "OS2"; then
|
|
NSS_LIBS="\
|
|
\$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
|
|
\$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
|
|
\$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
|
|
\$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
|
|
\$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
|
|
else
|
|
NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
|
|
fi
|
|
fi
|
|
|
|
dnl ======================
|
|
dnl Detect yasm
|
|
dnl ======================
|
|
|
|
AC_MSG_CHECKING([for YASM assembler])
|
|
AC_CHECK_PROGS(YASM, yasm, "")
|
|
|
|
if test -n "$YASM"; then
|
|
dnl Pull out yasm's version string
|
|
YASM_VERSION=`yasm --version | $AWK '/^yasm/ { print $2 }'`
|
|
_YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'`
|
|
_YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'`
|
|
_YASM_RELEASE=` echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'`
|
|
_YASM_BUILD=` echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
|
|
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_NATIVE_JPEG=
|
|
else
|
|
AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [MOZ_NATIVE_JPEG=1 MOZ_JPEG_LIBS="-ljpeg"], MOZ_NATIVE_JPEG=)
|
|
fi
|
|
|
|
if test "$MOZ_NATIVE_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_NATIVE_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_NATIVE_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_NATIVE_ZLIB" != 1; then
|
|
MOZ_ZLIB_CFLAGS=
|
|
MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,'"$MOZ_BUILD_ROOT"'/modules/zlib/src)'
|
|
fi
|
|
|
|
if test "$MOZ_LINKER" = 1 -a "$MOZ_NATIVE_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_NATIVE_BZ2=
|
|
else
|
|
AC_CHECK_LIB(bz2, BZ2_bzread, [MOZ_NATIVE_BZ2=1 MOZ_BZ2_LIBS="-lbz2"],
|
|
[MOZ_NATIVE_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_NATIVE_BZ2" = 1; then
|
|
MOZ_BZ2_CFLAGS="-I${BZ2_DIR}/include"
|
|
MOZ_BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
|
|
fi
|
|
|
|
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_NATIVE_PNG=
|
|
else
|
|
AC_CHECK_LIB(png, png_get_valid, [MOZ_NATIVE_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_NATIVE_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_NATIVE_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_NATIVE_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 system HunSpell Support
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(system-hunspell,
|
|
[ --enable-system-hunspell
|
|
Use system hunspell (located with pkgconfig)],
|
|
MOZ_NATIVE_HUNSPELL=1 )
|
|
|
|
if test -n "$MOZ_NATIVE_HUNSPELL"; then
|
|
PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
|
|
fi
|
|
|
|
AC_SUBST(MOZ_NATIVE_HUNSPELL)
|
|
|
|
dnl ========================================================
|
|
dnl system libffi Support
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(system-ffi,
|
|
[ --enable-system-ffi Use system libffi (located with pkgconfig)],
|
|
MOZ_NATIVE_FFI=1 )
|
|
|
|
if test -n "$MOZ_NATIVE_FFI"; then
|
|
# Vanilla libffi 3.0.9 needs a few patches from upcoming version 3.0.10
|
|
# for non-GCC compilers.
|
|
if test -z "$GNU_CC"; then
|
|
PKG_CHECK_MODULES(MOZ_FFI, libffi > 3.0.9)
|
|
else
|
|
PKG_CHECK_MODULES(MOZ_FFI, libffi >= 3.0.9)
|
|
fi
|
|
MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_FFI_LIBS"
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Java SDK support
|
|
dnl ========================================================
|
|
|
|
JAVA_BIN_PATH=
|
|
MOZ_ARG_WITH_STRING(java-bin-path,
|
|
[ --with-java-bin-path=dir
|
|
Location of Java binaries (java, javac, jar)],
|
|
JAVA_BIN_PATH=$withval)
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Application
|
|
dnl =
|
|
dnl ========================================================
|
|
|
|
MOZ_ARG_HEADER(Application)
|
|
|
|
ENABLE_TESTS=1
|
|
ENABLE_SYSTEM_EXTENSION_DIRS=1
|
|
MOZ_BRANDING_DIRECTORY=
|
|
MOZ_OFFICIAL_BRANDING=
|
|
MOZ_FEEDS=1
|
|
MOZ_FLEXBOX=1
|
|
MOZ_WEBAPP_RUNTIME=
|
|
MOZ_JSDEBUGGER=1
|
|
MOZ_AUTH_EXTENSION=1
|
|
MOZ_OGG=1
|
|
MOZ_RAW=
|
|
MOZ_SYDNEYAUDIO=
|
|
MOZ_SPEEX_RESAMPLER=1
|
|
MOZ_CUBEB=
|
|
MOZ_VORBIS=
|
|
MOZ_TREMOR=
|
|
MOZ_WAVE=1
|
|
MOZ_SAMPLE_TYPE_FLOAT32=
|
|
MOZ_SAMPLE_TYPE_S16=
|
|
MOZ_MEDIA=
|
|
MOZ_OPUS=1
|
|
MOZ_WEBM=1
|
|
MOZ_DASH=
|
|
MOZ_WEBRTC=1
|
|
MOZ_PEERCONNECTION=
|
|
MOZ_SRTP=
|
|
MOZ_WEBRTC_SIGNALING=
|
|
MOZ_WEBRTC_IN_LIBXUL=
|
|
MOZ_SCTP=
|
|
MOZ_MEDIA_PLUGINS=
|
|
MOZ_MEDIA_NAVIGATOR=
|
|
MOZ_OMX_PLUGIN=
|
|
MOZ_VP8=
|
|
MOZ_VP8_ERROR_CONCEALMENT=
|
|
MOZ_VP8_ENCODER=
|
|
VPX_AS=
|
|
VPX_ASFLAGS=
|
|
VPX_AS_DASH_C_FLAG=
|
|
VPX_AS_CONVERSION=
|
|
VPX_ASM_SUFFIX=
|
|
VPX_X86_ASM=
|
|
VPX_ARM_ASM=
|
|
LIBJPEG_TURBO_AS=
|
|
LIBJPEG_TURBO_ASFLAGS=
|
|
LIBJPEG_TURBO_X86_ASM=
|
|
LIBJPEG_TURBO_X64_ASM=
|
|
LIBJPEG_TURBO_ARM_ASM=
|
|
MOZ_PANGO=1
|
|
MOZ_PERMISSIONS=1
|
|
MOZ_PLACES=1
|
|
MOZ_PREF_EXTENSIONS=1
|
|
MOZ_PROFILELOCKING=1
|
|
MOZ_PSM=1
|
|
MOZ_REFLOW_PERF=
|
|
MOZ_SAFE_BROWSING=
|
|
MOZ_HELP_VIEWER=
|
|
MOZ_SPELLCHECK=1
|
|
MOZ_ANDROID_OMTC=
|
|
MOZ_ONLY_TOUCH_EVENTS=
|
|
MOZ_TOOLKIT_SEARCH=1
|
|
MOZ_UI_LOCALE=en-US
|
|
MOZ_UNIVERSALCHARDET=1
|
|
MOZ_URL_CLASSIFIER=
|
|
MOZ_XUL=1
|
|
MOZ_ZIPWRITER=1
|
|
NS_PRINTING=1
|
|
MOZ_PDF_PRINTING=
|
|
MOZ_DISABLE_DOMCRYPTO=
|
|
NSS_DISABLE_DBM=
|
|
NECKO_WIFI=1
|
|
NECKO_COOKIES=1
|
|
NECKO_PROTOCOLS_DEFAULT="about data file ftp http res viewsource websocket wyciwyg device"
|
|
USE_ARM_KUSER=
|
|
BUILD_CTYPES=1
|
|
MOZ_USE_NATIVE_POPUP_WINDOWS=
|
|
MOZ_ANDROID_HISTORY=
|
|
MOZ_WEBSMS_BACKEND=
|
|
MOZ_GRAPHITE=1
|
|
ACCESSIBILITY=1
|
|
MOZ_SYS_MSG=
|
|
MOZ_TIME_MANAGER=
|
|
MOZ_PAY=
|
|
|
|
case "$target_os" in
|
|
mingw*)
|
|
NS_ENABLE_TSF=1
|
|
AC_DEFINE(NS_ENABLE_TSF)
|
|
;;
|
|
esac
|
|
|
|
case "${target}" in
|
|
*-android*|*-linuxandroid*)
|
|
if test "$CPU_ARCH" = "arm" ; then
|
|
USE_ARM_KUSER=1
|
|
fi
|
|
|
|
NSS_DISABLE_DBM=1
|
|
if test -z "$gonkdir"; then
|
|
NECKO_WIFI=
|
|
else
|
|
NECKO_WIFI=1
|
|
fi
|
|
MOZ_THEME_FASTSTRIPE=1
|
|
MOZ_TREE_FREETYPE=1
|
|
MOZ_MEMORY=1
|
|
MOZ_RAW=1
|
|
;;
|
|
|
|
esac
|
|
|
|
MOZ_ARG_ENABLE_STRING(application,
|
|
[ --enable-application=APP
|
|
Options include:
|
|
browser (Firefox)
|
|
xulrunner
|
|
tools/update-packaging (AUS-related packaging tools)],
|
|
[ MOZ_BUILD_APP=$enableval ] )
|
|
|
|
MOZ_ARG_WITH_STRING(xulrunner-stub-name,
|
|
[ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
|
|
XULRUNNER_STUB_NAME=$withval)
|
|
|
|
if test -z "$XULRUNNER_STUB_NAME"; then
|
|
case "$target_os" in
|
|
darwin*)
|
|
XULRUNNER_STUB_NAME=xulrunner
|
|
;;
|
|
*)
|
|
XULRUNNER_STUB_NAME=xulrunner-stub
|
|
esac
|
|
fi
|
|
AC_SUBST(XULRUNNER_STUB_NAME)
|
|
|
|
AC_MSG_CHECKING([for application to build])
|
|
if test -z "$MOZ_BUILD_APP"; then
|
|
AC_MSG_RESULT([browser])
|
|
MOZ_BUILD_APP=browser
|
|
else
|
|
# default mobile to be mobile/xul
|
|
if test "$MOZ_BUILD_APP" = "mobile" ; then
|
|
MOZ_BUILD_APP=mobile/xul
|
|
fi
|
|
# We have a valid application only if it has a build.mk file in its top
|
|
# directory.
|
|
if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
|
|
AC_MSG_RESULT([none])
|
|
AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
|
|
else
|
|
AC_MSG_RESULT([$MOZ_BUILD_APP])
|
|
fi
|
|
fi
|
|
|
|
# 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 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
|
|
|
|
# Now is a good time to test for logic errors, define mismatches, etc.
|
|
case "$MOZ_BUILD_APP" in
|
|
xulrunner)
|
|
if test "$LIBXUL_SDK"; then
|
|
AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
# Special cases where we need to AC_DEFINE something. Also a holdover for apps
|
|
# that haven't made a confvars.sh yet. Don't add new stuff here, use
|
|
# MOZ_BUILD_APP.
|
|
case "$MOZ_BUILD_APP" in
|
|
browser)
|
|
AC_DEFINE(MOZ_PHOENIX)
|
|
;;
|
|
|
|
xulrunner)
|
|
AC_DEFINE(MOZ_XULRUNNER)
|
|
;;
|
|
b2g)
|
|
AC_DEFINE(MOZ_B2G)
|
|
;;
|
|
esac
|
|
|
|
AC_SUBST(MOZ_BUILD_APP)
|
|
AC_SUBST(MOZ_PHOENIX)
|
|
AC_SUBST(MOZ_XULRUNNER)
|
|
AC_SUBST(MOZ_B2G)
|
|
|
|
AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
|
|
|
|
dnl ========================================================
|
|
dnl Check android sdk version depending on mobile target
|
|
dnl ========================================================
|
|
|
|
if test -z "$gonkdir" ; then
|
|
# Minimum Android SDK API Level we require.
|
|
case "$MOZ_BUILD_APP" in
|
|
mobile/xul)
|
|
android_min_api_level=13
|
|
;;
|
|
mobile/android)
|
|
android_min_api_level=16
|
|
;;
|
|
esac
|
|
|
|
MOZ_ANDROID_SDK($android_min_api_level)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Toolkit Options
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(Toolkit Options)
|
|
|
|
dnl ========================================================
|
|
dnl = Select the default toolkit
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_STRING(default-toolkit,
|
|
[ --enable-default-toolkit=TK
|
|
Select default toolkit
|
|
Platform specific defaults:
|
|
Mac OS X - cairo-cocoa
|
|
OS/2 - cairo-os2
|
|
Win32 - cairo-windows
|
|
* - cairo-gtk2
|
|
* - cairo-qt],
|
|
[ _DEFAULT_TOOLKIT=$enableval ],
|
|
[ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
|
|
|
|
if test "$_DEFAULT_TOOLKIT" = "cairo-windows" \
|
|
-o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
|
|
-o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
|
|
-o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
|
|
-o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
|
|
-o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
|
|
-o "$_DEFAULT_TOOLKIT" = "cairo-uikit" \
|
|
-o "$_DEFAULT_TOOLKIT" = "cairo-android" \
|
|
-o "$_DEFAULT_TOOLKIT" = "cairo-gonk"
|
|
then
|
|
dnl nglayout only supports building with one toolkit,
|
|
dnl so ignore everything after the first comma (",").
|
|
MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
|
|
else
|
|
AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
|
|
fi
|
|
|
|
MOZ_ARG_WITHOUT_BOOL(x,
|
|
[ --without-x Build without X11],
|
|
WITHOUT_X11=1)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable the toolkit as needed =
|
|
dnl ========================================================
|
|
|
|
MOZ_WIDGET_GTK=
|
|
|
|
case "$MOZ_WIDGET_TOOLKIT" in
|
|
|
|
cairo-windows)
|
|
MOZ_WIDGET_TOOLKIT=windows
|
|
MOZ_WEBGL=1
|
|
MOZ_PDF_PRINTING=1
|
|
MOZ_INSTRUMENT_EVENT_LOOP=1
|
|
;;
|
|
|
|
cairo-gtk2|cairo-gtk2-x11)
|
|
MOZ_WIDGET_TOOLKIT=gtk2
|
|
MOZ_ENABLE_GTK2=1
|
|
MOZ_ENABLE_XREMOTE=1
|
|
MOZ_WEBGL=1
|
|
MOZ_GL_DEFAULT_PROVIDER=GLX
|
|
|
|
AC_DEFINE(MOZ_X11)
|
|
MOZ_X11=1
|
|
USE_FC_FREETYPE=1
|
|
|
|
TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
|
|
TK_LIBS='$(MOZ_GTK2_LIBS)'
|
|
AC_DEFINE(MOZ_WIDGET_GTK2)
|
|
MOZ_WIDGET_GTK=2
|
|
AC_DEFINE_UNQUOTED(MOZ_WIDGET_GTK,$MOZ_WIDGET_GTK)
|
|
MOZ_PDF_PRINTING=1
|
|
MOZ_INSTRUMENT_EVENT_LOOP=1
|
|
;;
|
|
|
|
cairo-qt)
|
|
MOZ_WIDGET_TOOLKIT=qt
|
|
MOZ_ENABLE_QT=1
|
|
if test -z "$WITHOUT_X11"; then
|
|
MOZ_ENABLE_XREMOTE=1
|
|
MOZ_GL_DEFAULT_PROVIDER=GLX
|
|
MOZ_X11=1
|
|
AC_DEFINE(MOZ_X11)
|
|
XT_LIBS=
|
|
fi
|
|
|
|
MOZ_WEBGL=1
|
|
USE_ELF_DYNSTR_GC=
|
|
USE_FC_FREETYPE=1
|
|
TK_CFLAGS='$(MOZ_QT_CFLAGS)'
|
|
TK_LIBS='$(MOZ_QT_LIBS)'
|
|
AC_DEFINE(MOZ_WIDGET_QT)
|
|
MOZ_PDF_PRINTING=1
|
|
;;
|
|
|
|
cairo-os2)
|
|
MOZ_WIDGET_TOOLKIT=os2
|
|
USE_FC_FREETYPE=1
|
|
TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
|
|
TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
|
|
MOZ_PDF_PRINTING=1
|
|
;;
|
|
|
|
cairo-cocoa)
|
|
MOZ_WIDGET_TOOLKIT=cocoa
|
|
AC_DEFINE(MOZ_WIDGET_COCOA)
|
|
LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
|
|
TK_LIBS='-framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
|
|
TK_CFLAGS="-DNO_X11"
|
|
CFLAGS="$CFLAGS $TK_CFLAGS"
|
|
CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
|
|
LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL'
|
|
MOZ_USER_DIR="Mozilla"
|
|
MOZ_FS_LAYOUT=bundle
|
|
MOZ_WEBGL=1
|
|
MOZ_INSTRUMENT_EVENT_LOOP=1
|
|
;;
|
|
|
|
cairo-uikit)
|
|
MOZ_WIDGET_TOOLKIT=uikit
|
|
AC_DEFINE(MOZ_WIDGET_UIKIT)
|
|
LDFLAGS="$LDFLAGS -framework UIKit -lobjc"
|
|
TK_CFLAGS="-DNO_X11"
|
|
TK_LIBS='-framework Foundation -framework CoreFoundation -framework CoreGraphics -framework CoreText'
|
|
CFLAGS="$CFLAGS $TK_CFLAGS"
|
|
CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
|
|
LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL'
|
|
MOZ_USER_DIR="Mozilla"
|
|
MOZ_FS_LAYOUT=bundle
|
|
;;
|
|
|
|
cairo-android)
|
|
AC_DEFINE(MOZ_WIDGET_ANDROID)
|
|
MOZ_WIDGET_TOOLKIT=android
|
|
TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
|
|
TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
|
|
MOZ_WEBGL=1
|
|
MOZ_PDF_PRINTING=1
|
|
MOZ_INSTRUMENT_EVENT_LOOP=1
|
|
if test "$MOZ_BUILD_APP" = "mobile/xul"; then
|
|
MOZ_OLD_LINKER=1
|
|
fi
|
|
;;
|
|
|
|
cairo-gonk)
|
|
AC_DEFINE(MOZ_WIDGET_GONK)
|
|
AC_DEFINE(MOZ_TOUCH)
|
|
MOZ_WIDGET_TOOLKIT=gonk
|
|
TK_CFLAGS='$(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)'
|
|
TK_LIBS='$(MOZ_CAIRO_LIBS) $(MOZ_PIXMAN_LIBS)'
|
|
MOZ_WEBGL=1
|
|
MOZ_PDF_PRINTING=1
|
|
MOZ_TOUCH=1
|
|
;;
|
|
|
|
esac
|
|
|
|
AC_SUBST(MOZ_OLD_LINKER)
|
|
AC_SUBST(MOZ_PDF_PRINTING)
|
|
if test "$MOZ_PDF_PRINTING"; then
|
|
PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
|
|
AC_DEFINE(MOZ_PDF_PRINTING)
|
|
fi
|
|
|
|
if test "$MOZ_ENABLE_XREMOTE"; then
|
|
AC_DEFINE(MOZ_ENABLE_XREMOTE)
|
|
fi
|
|
|
|
if test "$MOZ_INSTRUMENT_EVENT_LOOP"; then
|
|
AC_DEFINE(MOZ_INSTRUMENT_EVENT_LOOP)
|
|
fi
|
|
|
|
if test "$COMPILE_ENVIRONMENT"; then
|
|
if test "$MOZ_ENABLE_GTK2"; then
|
|
if test "$MOZ_X11"; then
|
|
GDK_PACKAGES=gdk-x11-2.0
|
|
fi
|
|
|
|
PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
|
|
fi
|
|
|
|
fi # COMPILE_ENVIRONMENT
|
|
|
|
AC_SUBST(MOZ_FS_LAYOUT)
|
|
|
|
dnl ========================================================
|
|
dnl Use ARM userspace kernel helpers; tell NSPR to enable
|
|
dnl their usage and use them in spidermonkey.
|
|
dnl ========================================================
|
|
MOZ_ARG_WITH_BOOL(arm-kuser,
|
|
[ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
|
|
USE_ARM_KUSER=1,)
|
|
if test -n "$USE_ARM_KUSER"; then
|
|
AC_DEFINE(USE_ARM_KUSER)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = startup-notification support module
|
|
dnl ========================================================
|
|
|
|
if test "$MOZ_ENABLE_GTK2"
|
|
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(MOZ_STARTUP_NOTIFICATION_CFLAGS)
|
|
AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
|
|
|
|
dnl ========================================================
|
|
dnl = QT support
|
|
dnl ========================================================
|
|
if test "$MOZ_ENABLE_QT"
|
|
then
|
|
MOZ_ARG_WITH_STRING(qtdir,
|
|
[ --with-qtdir=\$dir Specify Qt directory ],
|
|
[ QTDIR=$withval])
|
|
|
|
if test -z "$QTDIR"; then
|
|
PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtCore QtOpenGL)
|
|
PKG_CHECK_MODULES(MOZ_QT5, QtWidgets QtMultimedia QtPrintSupport,
|
|
MOZ_ENABLE_QT5=1,
|
|
MOZ_ENABLE_QT5=)
|
|
if test "$MOZ_ENABLE_QT5"; then
|
|
echo "Using qt5"
|
|
MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $MOZ_QT5_CFLAGS"
|
|
MOZ_QT_LIBS="$MOZ_QT_LIBS $MOZ_QT5_LIBS"
|
|
fi
|
|
|
|
AC_CHECK_PROGS(HOST_MOC, $MOC moc, "")
|
|
AC_CHECK_PROGS(HOST_RCC, $RCC rcc, "")
|
|
else
|
|
MOZ_QT_LIBS="-L$QTDIR/lib/ -lQtGui -lQtNetwork -lQtCore -lQtXml -lQtOpenGL"
|
|
|
|
MOZ_QT_CFLAGS="-DQT_SHARED"
|
|
MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
|
|
MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/Qt"
|
|
MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
|
|
MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
|
|
MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
|
|
MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
|
|
MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDeclarative"
|
|
HOST_MOC="$QTDIR/bin/moc"
|
|
HOST_RCC="$QTDIR/bin/rcc"
|
|
|
|
# QtWidgets was introduced only in Qt5
|
|
if test -d $QTDIR/include/QtWidgets; then
|
|
MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtWidgets"
|
|
MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtPrintSupport"
|
|
MOZ_QT_LIBS="$MOZ_QT_LIBS -lQtWidgets -lQtPrintSupport"
|
|
fi
|
|
fi
|
|
if test -z "$HOST_MOC"; then
|
|
AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is
|
|
incorrect])
|
|
fi
|
|
if test -z "$HOST_RCC"; then
|
|
AC_MSG_ERROR([No acceptable rcc preprocessor found. Qt SDK is not installed or --with-qt is
|
|
incorrect])
|
|
fi
|
|
|
|
MOC=$HOST_MOC
|
|
RCC=$HOST_RCC
|
|
|
|
MOZ_ENABLE_QMSYSTEM2=
|
|
PKG_CHECK_MODULES(_QMSYSTEM2, qmsystem2,
|
|
MOZ_ENABLE_QMSYSTEM2=1,
|
|
MOZ_ENABLE_QMSYSTEM2=)
|
|
|
|
if test "$MOZ_ENABLE_QMSYSTEM2"; then
|
|
MOZ_ENABLE_QMSYSTEM2=1
|
|
MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QMSYSTEM2_CFLAGS"
|
|
MOZ_QT_LIBS="$MOZ_QT_LIBS $_QMSYSTEM2_LIBS"
|
|
AC_DEFINE(MOZ_ENABLE_QMSYSTEM2)
|
|
fi
|
|
|
|
MOZ_ENABLE_QTNETWORK=
|
|
PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7,
|
|
MOZ_ENABLE_QTNETWORK=1,
|
|
MOZ_ENABLE_QTNETWORK=)
|
|
|
|
if test "$MOZ_ENABLE_QTNETWORK"; then
|
|
MOZ_ENABLE_QTNETWORK=1
|
|
AC_DEFINE(MOZ_ENABLE_QTNETWORK)
|
|
fi
|
|
|
|
MOZ_ENABLE_QTMOBILITY=
|
|
PKG_CHECK_MODULES(_QTMOBILITY, QtSensors QtFeedback QtLocation,
|
|
MOZ_ENABLE_QTMOBILITY=1,
|
|
MOZ_ENABLE_QTMOBILITY=)
|
|
if test "$MOZ_ENABLE_QTMOBILITY"; then
|
|
MOZ_ENABLE_QTMOBILITY=1
|
|
MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS $_QTMOBILITY_CFLAGS"
|
|
MOZ_QT_LIBS="$MOZ_QT_LIBS $_QTMOBILITY_LIBS"
|
|
else
|
|
AC_CHECK_LIB(QtSensors, main, [
|
|
MOZ_ENABLE_QTMOBILITY=1
|
|
MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtMobility"
|
|
MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtSensors"
|
|
MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtFeedback"
|
|
MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtLocation"
|
|
MOZ_QT_LIBS="$MOZ_QT_LIBS -lQtSensors -lQtFeedback -lQtLocation"
|
|
])
|
|
fi
|
|
if test "$MOZ_ENABLE_QTMOBILITY"; then
|
|
AC_DEFINE(MOZ_ENABLE_QTMOBILITY)
|
|
fi
|
|
fi
|
|
|
|
AC_SUBST(GTK_CONFIG)
|
|
AC_SUBST(TK_CFLAGS)
|
|
AC_SUBST(TK_LIBS)
|
|
|
|
AC_SUBST(MOZ_ENABLE_GTK2)
|
|
AC_SUBST(MOZ_ENABLE_QT)
|
|
AC_SUBST(MOZ_ENABLE_QTNETWORK)
|
|
AC_SUBST(MOZ_ENABLE_QMSYSTEM2)
|
|
AC_SUBST(MOZ_ENABLE_QTMOBILITY)
|
|
AC_SUBST(MOZ_ENABLE_XREMOTE)
|
|
AC_SUBST(MOZ_GTK2_CFLAGS)
|
|
AC_SUBST(MOZ_GTK2_LIBS)
|
|
AC_SUBST(MOZ_WIDGET_GTK)
|
|
AC_SUBST(MOZ_QT_CFLAGS)
|
|
AC_SUBST(MOZ_QT_LIBS)
|
|
|
|
AC_SUBST(MOC)
|
|
AC_SUBST(RCC)
|
|
|
|
AC_SUBST(MOZ_X11)
|
|
|
|
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)
|
|
|
|
dnl ========================================================
|
|
dnl = Trademarked Branding
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(official-branding,
|
|
[ --enable-official-branding
|
|
Enable Official mozilla.org Branding
|
|
Do not distribute builds with
|
|
--enable-official-branding unless you have
|
|
permission to use trademarks per
|
|
http://www.mozilla.org/foundation/trademarks/ .],
|
|
[
|
|
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}
|
|
MOZ_OFFICIAL_BRANDING=1
|
|
fi
|
|
], MOZ_OFFICIAL_BRANDING=)
|
|
|
|
AC_SUBST(MOZ_OFFICIAL_BRANDING)
|
|
if test -n "$MOZ_OFFICIAL_BRANDING"; then
|
|
AC_DEFINE(MOZ_OFFICIAL_BRANDING)
|
|
fi
|
|
|
|
MOZ_ARG_WITH_STRING(branding,
|
|
[ --with-branding=dir Use branding from the specified directory.],
|
|
MOZ_BRANDING_DIRECTORY=$withval)
|
|
|
|
REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
|
|
if test -z "$REAL_BRANDING_DIRECTORY"; then
|
|
REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
|
|
fi
|
|
|
|
if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
|
|
. "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
|
|
fi
|
|
|
|
AC_SUBST(MOZ_BRANDING_DIRECTORY)
|
|
|
|
dnl ========================================================
|
|
dnl = Distribution ID
|
|
dnl ========================================================
|
|
MOZ_ARG_WITH_STRING(distribution-id,
|
|
[ --with-distribution-id=ID
|
|
Set distribution-specific id (default=org.mozilla)],
|
|
[ val=`echo $withval`
|
|
MOZ_DISTRIBUTION_ID="$val"])
|
|
|
|
if test -z "$MOZ_DISTRIBUTION_ID"; then
|
|
MOZ_DISTRIBUTION_ID="org.mozilla"
|
|
fi
|
|
|
|
AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
|
|
AC_SUBST(MOZ_DISTRIBUTION_ID)
|
|
|
|
|
|
dnl ========================================================
|
|
dnl complex text support off by default
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(pango,
|
|
[ --disable-pango Disable usage of Pango ],
|
|
MOZ_PANGO=,
|
|
MOZ_PANGO=1)
|
|
|
|
dnl ========================================================
|
|
dnl = Pango
|
|
dnl ========================================================
|
|
if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
|
|
then
|
|
AC_SUBST(MOZ_PANGO)
|
|
|
|
if test "$MOZ_PANGO"
|
|
then
|
|
PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
|
|
|
|
PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION)
|
|
AC_SUBST(MOZ_PANGO_CFLAGS)
|
|
AC_SUBST(MOZ_PANGO_LIBS)
|
|
AC_DEFINE(MOZ_PANGO)
|
|
else
|
|
PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0)
|
|
AC_SUBST(FT2_CFLAGS)
|
|
AC_SUBST(FT2_LIBS)
|
|
fi
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = GnomeVFS, 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_GTK2"
|
|
then
|
|
MOZ_ENABLE_GIO=1
|
|
MOZ_ENABLE_GCONF=1
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = GnomeVFS support module
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(gnomevfs,
|
|
[ --enable-gnomevfs Enable GnomeVFS support (default: disabled)],
|
|
MOZ_ENABLE_GNOMEVFS=force,
|
|
MOZ_ENABLE_GNOMEVFS=)
|
|
|
|
if test "$MOZ_ENABLE_GNOMEVFS"
|
|
then
|
|
PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
|
|
MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
|
|
MOZ_ENABLE_GNOMEVFS=1
|
|
AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
|
|
],[
|
|
if test "$MOZ_ENABLE_GNOMEVFS" = "force"
|
|
then
|
|
AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
|
|
fi
|
|
MOZ_ENABLE_GNOMEVFS=
|
|
])
|
|
fi
|
|
|
|
AC_SUBST(MOZ_ENABLE_GNOMEVFS)
|
|
AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
|
|
AC_SUBST(MOZ_GNOMEVFS_LIBS)
|
|
|
|
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_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.])])
|
|
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)
|
|
AC_SUBST(MOZ_GIO_CFLAGS)
|
|
AC_SUBST(MOZ_GIO_LIBS)
|
|
|
|
dnl ========================================================
|
|
dnl = GConf support module
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(gconf,
|
|
[ --disable-gconf Disable Gconf support ],
|
|
MOZ_ENABLE_GCONF=,
|
|
MOZ_ENABLE_GCONF=force)
|
|
|
|
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 "$MOZ_ENABLE_GCONF" = "force"
|
|
then
|
|
AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
|
|
fi
|
|
MOZ_ENABLE_GCONF=
|
|
])
|
|
fi
|
|
|
|
if test "$MOZ_ENABLE_GCONF"; then
|
|
AC_DEFINE(MOZ_ENABLE_GCONF)
|
|
fi
|
|
|
|
AC_SUBST(MOZ_ENABLE_GCONF)
|
|
AC_SUBST(MOZ_GCONF_CFLAGS)
|
|
AC_SUBST(MOZ_GCONF_LIBS)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = libproxy support
|
|
dnl ========================================================
|
|
|
|
if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
|
|
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)
|
|
AC_SUBST(MOZ_LIBPROXY_CFLAGS)
|
|
AC_SUBST(MOZ_LIBPROXY_LIBS)
|
|
|
|
dnl ========================================================
|
|
dnl = GNOME component (mozgnome)
|
|
dnl ========================================================
|
|
|
|
if test "$MOZ_ENABLE_GTK2"
|
|
then
|
|
MOZ_ENABLE_GNOME_COMPONENT=1
|
|
fi
|
|
AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
|
|
|
|
dnl ========================================================
|
|
dnl = libgnomeui support module
|
|
dnl ========================================================
|
|
|
|
if test "$MOZ_ENABLE_GTK2"
|
|
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)
|
|
AC_SUBST(MOZ_GNOMEUI_CFLAGS)
|
|
|
|
dnl ========================================================
|
|
dnl = dbus support
|
|
dnl ========================================================
|
|
|
|
if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
|
|
then
|
|
MOZ_ENABLE_DBUS=1
|
|
|
|
MOZ_ARG_DISABLE_BOOL(dbus,
|
|
[ --disable-dbus Disable dbus support ],
|
|
MOZ_ENABLE_DBUS=,
|
|
MOZ_ENABLE_DBUS=1)
|
|
|
|
if test "$MOZ_ENABLE_DBUS"
|
|
then
|
|
PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
|
|
PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
|
|
AC_DEFINE(MOZ_ENABLE_DBUS)
|
|
fi
|
|
fi
|
|
AC_SUBST(MOZ_ENABLE_DBUS)
|
|
AC_SUBST(MOZ_DBUS_CFLAGS)
|
|
AC_SUBST(MOZ_DBUS_LIBS)
|
|
AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
|
|
AC_SUBST(MOZ_DBUS_GLIB_LIBS)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable Android History instead of Places
|
|
dnl ========================================================
|
|
if test -n "$MOZ_ANDROID_HISTORY"; then
|
|
if test -z "$MOZ_PLACES"; then
|
|
AC_DEFINE(MOZ_ANDROID_HISTORY)
|
|
else
|
|
AC_MSG_ERROR([Cannot use MOZ_ANDROID_HISTORY alongside MOZ_PLACES.])
|
|
fi
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Build with the Android compositor
|
|
dnl ========================================================
|
|
if test -n "$MOZ_ANDROID_OMTC"; then
|
|
dnl Do this if defined in confvars.sh
|
|
AC_DEFINE(MOZ_ANDROID_OMTC)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Disable WebSMS backend
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(websms-backend,
|
|
[ --disable-websms-backend
|
|
Disable WebSMS backend],
|
|
MOZ_WEBSMS_BACKEND=,
|
|
MOZ_WEBSMS_BACKEND=1)
|
|
|
|
if test -n "$MOZ_WEBSMS_BACKEND"; then
|
|
AC_DEFINE(MOZ_WEBSMS_BACKEND)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Build Personal Security Manager
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(crypto,
|
|
[ --disable-crypto Disable crypto support (Personal Security Manager)],
|
|
MOZ_PSM=,
|
|
MOZ_PSM=1 )
|
|
|
|
dnl ========================================================
|
|
dnl = JS Debugger XPCOM component (js/jsd)
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(jsd,
|
|
[ --disable-jsd Disable JavaScript debug library],
|
|
MOZ_JSDEBUGGER=,
|
|
MOZ_JSDEBUGGER=1)
|
|
|
|
|
|
dnl ========================================================
|
|
dnl = Enable IPDL's "expensive" unit tests
|
|
dnl ========================================================
|
|
MOZ_IPDL_TESTS=
|
|
|
|
MOZ_ARG_ENABLE_BOOL(ipdl-tests,
|
|
[ --enable-ipdl-tests Enable expensive IPDL tests],
|
|
MOZ_IPDL_TESTS=1,
|
|
MOZ_IPDL_TESTS=)
|
|
|
|
if test -n "$MOZ_IPDL_TESTS"; then
|
|
AC_DEFINE(MOZ_IPDL_TESTS)
|
|
fi
|
|
|
|
AC_SUBST(MOZ_IPDL_TESTS)
|
|
|
|
dnl ========================================================
|
|
dnl = Turns off code necessary for e10s compatibility
|
|
dnl ========================================================
|
|
dnl This is a temporary flag to be removed in bug 662601 when
|
|
dnl it's no longer needed
|
|
|
|
MOZ_E10S_COMPAT=
|
|
|
|
MOZ_ARG_ENABLE_BOOL(e10s-compat,
|
|
[ --enable-e10s-compat Turns off code for e10s compat],
|
|
MOZ_E10S_COMPAT=1,
|
|
MOZ_E10S_COMPAT=)
|
|
|
|
if test -n "$MOZ_E10S_COMPAT"; then
|
|
AC_DEFINE(MOZ_E10S_COMPAT)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Disable building dbm
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(dbm,
|
|
[ --disable-dbm Disable building dbm],
|
|
NSS_DISABLE_DBM=1,
|
|
NSS_DISABLE_DBM=)
|
|
|
|
dnl bi-directional support always on
|
|
IBMBIDI=1
|
|
AC_DEFINE(IBMBIDI)
|
|
|
|
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
|
|
AC_DEFINE(ACCESSIBILITY)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Disable printing
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(printing,
|
|
[ --disable-printing Disable printing support],
|
|
NS_PRINTING=,
|
|
NS_PRINTING=1)
|
|
|
|
if test "$NS_PRINTING"; then
|
|
AC_DEFINE(NS_PRINTING)
|
|
AC_DEFINE(NS_PRINT_PREVIEW)
|
|
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
|
|
*-android*|*-linuxandroid*)
|
|
dnl Make sure doesn't get matched by *-linux*
|
|
MOZ_WEBRTC=
|
|
;;
|
|
*-linux*|*-mingw*|*-darwin*)
|
|
dnl Leave enabled
|
|
;;
|
|
*)
|
|
dnl default to disabled for all others
|
|
MOZ_WEBRTC=
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Disable WebRTC code
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(webrtc,
|
|
[ --disable-webrtc Disable support for WebRTC],
|
|
MOZ_WEBRTC=,
|
|
MOZ_WEBRTC=1)
|
|
|
|
if test -n "$MOZ_WEBRTC"; then
|
|
AC_DEFINE(MOZ_WEBRTC)
|
|
MOZ_MEDIA=1
|
|
MOZ_RAW=1
|
|
MOZ_VP8=1
|
|
MOZ_VP8_ENCODER=1
|
|
MOZ_VP8_ERROR_CONCEALMENT=1
|
|
dnl enable once Signaling lands
|
|
MOZ_WEBRTC_SIGNALING=1
|
|
AC_DEFINE(MOZ_WEBRTC_SIGNALING)
|
|
if test "${OS_TARGET}" = "WINNT"; then
|
|
MOZ_WEBRTC_IN_LIBXUL=1
|
|
fi
|
|
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)
|
|
fi
|
|
|
|
AC_SUBST(MOZ_WEBRTC)
|
|
AC_SUBST(MOZ_WEBRTC_SIGNALING)
|
|
AC_SUBST(MOZ_PEERCONNECTION)
|
|
AC_SUBST(MOZ_WEBRTC_IN_LIBXUL)
|
|
AC_SUBST(MOZ_SCTP)
|
|
AC_SUBST(MOZ_SRTP)
|
|
|
|
case "$target_cpu" in
|
|
arm*)
|
|
MOZ_SAMPLE_TYPE_S16=1
|
|
AC_DEFINE(MOZ_SAMPLE_TYPE_S16)
|
|
AC_SUBST(MOZ_SAMPLE_TYPE_S16)
|
|
;;
|
|
*)
|
|
MOZ_SAMPLE_TYPE_FLOAT32=1
|
|
AC_DEFINE(MOZ_SAMPLE_TYPE_FLOAT32)
|
|
AC_SUBST(MOZ_SAMPLE_TYPE_FLOAT32)
|
|
;;
|
|
esac
|
|
|
|
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)
|
|
MOZ_MEDIA=1
|
|
fi
|
|
|
|
AC_SUBST(MOZ_RAW)
|
|
|
|
dnl ========================================================
|
|
dnl = Disable Ogg Codecs
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(ogg,
|
|
[ --disable-ogg Disable support for OGG media (Theora video and Vorbis audio)],
|
|
MOZ_OGG=,
|
|
MOZ_OGG=1)
|
|
|
|
if test -n "$MOZ_OGG"; then
|
|
AC_DEFINE(MOZ_OGG)
|
|
MOZ_SYDNEYAUDIO=1
|
|
MOZ_CUBEB=1
|
|
MOZ_MEDIA=1
|
|
|
|
dnl Checks for __attribute__(aligned()) directive
|
|
AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
|
|
[ac_cv_c_attribute_aligned],
|
|
[ac_cv_c_attribute_aligned=0
|
|
CFLAGS_save="${CFLAGS}"
|
|
CFLAGS="${CFLAGS} -Werror"
|
|
for ac_cv_c_attr_align_try in 64 32 16 8; do
|
|
echo "trying $ac_cv_c_attr_align_try"
|
|
AC_TRY_COMPILE([],
|
|
[static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
|
|
[ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
|
|
if test "$ac_cv_c_attribute_aligned" != 0; then
|
|
break;
|
|
fi
|
|
done
|
|
CFLAGS="${CFLAGS_save}"])
|
|
if test "${ac_cv_c_attribute_aligned}" != "0"; then
|
|
AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
|
|
[${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
|
|
fi
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Disable Opus audio codec support
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(opus,
|
|
[ --disable-opus Disable support for Opus audio],
|
|
MOZ_OPUS=,
|
|
MOZ_OPUS=1)
|
|
|
|
dnl ========================================================
|
|
dnl = Disable VP8 decoder support
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(webm,
|
|
[ --disable-webm Disable support for WebM media (VP8 video and Vorbis audio)],
|
|
MOZ_WEBM=,
|
|
MOZ_WEBM=1)
|
|
|
|
if test -n "$MOZ_WEBM"; then
|
|
AC_DEFINE(MOZ_WEBM)
|
|
MOZ_VP8=1
|
|
fi;
|
|
|
|
dnl ========================================================
|
|
dnl = Enable DASH-WebM support
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(dash,
|
|
[ --enable-dash Enable support for DASH-WebM],
|
|
MOZ_DASH=1,
|
|
MOZ_DASH=)
|
|
|
|
if test -n "$MOZ_DASH"; then
|
|
if test -n "$MOZ_WEBM"; then
|
|
AC_DEFINE(MOZ_DASH)
|
|
else
|
|
dnl Fail if WebM is not enabled as well as DASH.
|
|
AC_MSG_ERROR([WebM is currently disabled and must be enabled for DASH
|
|
to work.])
|
|
fi
|
|
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_MEDIA_PLUGINS=1
|
|
fi
|
|
|
|
MOZ_ARG_ENABLE_BOOL(media-plugins,
|
|
[ --enable-media-plugins Enable support for media plugins],
|
|
MOZ_MEDIA_PLUGINS=1,
|
|
MOZ_MEDIA_PLUGINS=)
|
|
|
|
if test -n "$MOZ_MEDIA_PLUGINS"; then
|
|
AC_DEFINE(MOZ_MEDIA_PLUGINS)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Enable getUserMedia support
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(media-navigator,
|
|
[ --enable-media-navigator Enable support for getUserMedia],
|
|
MOZ_MEDIA_NAVIGATOR=1,
|
|
MOZ_MEDIA_NAVIGATOR=)
|
|
|
|
if test -n "$MOZ_MEDIA_NAVIGATOR"; then
|
|
AC_DEFINE(MOZ_MEDIA_NAVIGATOR)
|
|
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_NATIVE_LIBVPX=1)
|
|
|
|
MOZ_LIBVPX_CFLAGS=
|
|
MOZ_LIBVPX_LIBS=
|
|
|
|
if test -n "$MOZ_VP8"; then
|
|
AC_DEFINE(MOZ_VP8)
|
|
if test -n "$MOZ_VP8_ERROR_CONCEALMENT" ; then
|
|
AC_DEFINE(MOZ_VP8_ERROR_CONCEALMENT)
|
|
fi
|
|
if test -n "$MOZ_VP8_ENCODER" ; then
|
|
AC_DEFINE(MOZ_VP8_ENCODER)
|
|
fi
|
|
|
|
if test -n "$MOZ_NATIVE_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.0.0)
|
|
|
|
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.])])
|
|
|
|
_SAVE_LIBS=$LIBS
|
|
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])])
|
|
LIBS=$_SAVE_LIBS
|
|
fi
|
|
fi
|
|
|
|
AC_SUBST(MOZ_NATIVE_LIBVPX)
|
|
AC_SUBST(MOZ_LIBVPX_CFLAGS)
|
|
AC_SUBST(MOZ_LIBVPX_LIBS)
|
|
|
|
if test "$MOZ_WEBM"; then
|
|
MOZ_SYDNEYAUDIO=1
|
|
MOZ_CUBEB=1
|
|
MOZ_MEDIA=1
|
|
if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then
|
|
MOZ_VORBIS=1
|
|
else
|
|
MOZ_TREMOR=1
|
|
fi
|
|
fi
|
|
|
|
if test -n "$MOZ_VP8" -a -z "$MOZ_NATIVE_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.
|
|
VPX_AS=$YASM
|
|
VPX_ASM_SUFFIX=asm
|
|
VPX_NEED_OBJ_INT_EXTRACT=
|
|
|
|
dnl See if we have assembly on this platform.
|
|
case "$OS_ARCH:$CPU_ARCH" in
|
|
Darwin:x86)
|
|
VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC"
|
|
VPX_X86_ASM=1
|
|
;;
|
|
Darwin:x86_64)
|
|
VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC"
|
|
VPX_X86_ASM=1
|
|
;;
|
|
WINNT:x86_64)
|
|
VPX_ASFLAGS="-f x64 -rnasm -pnasm"
|
|
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_ASFLAGS="-f win32 -rnasm -pnasm -DPIC"
|
|
VPX_X86_ASM=1
|
|
dnl The encoder needs obj_int_extract to get asm offsets.
|
|
fi
|
|
;;
|
|
*:arm*)
|
|
if test -n "$GNU_AS" ; then
|
|
VPX_AS=$AS
|
|
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_DASH_C_FLAG="-c"
|
|
VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl'
|
|
VPX_ASM_SUFFIX="$ASM_SUFFIX"
|
|
VPX_ARM_ASM=1
|
|
fi
|
|
;;
|
|
*:x86)
|
|
if $CC -E -dM -</dev/null | grep -q __ELF__; then
|
|
VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
|
|
VPX_X86_ASM=1
|
|
fi
|
|
;;
|
|
*:x86_64)
|
|
if $CC -E -dM -</dev/null | grep -q __ELF__; then
|
|
VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
|
|
VPX_X86_ASM=1
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_X86_ASM" -a -z "$VPX_AS"; 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
|
|
|
|
if test -n "$MOZ_VP8_ENCODER" -a \
|
|
-z "$GNU_CC" -a -z "$INTEL_CC" -a -z "$CLANG_CC" ; then
|
|
dnl We prefer to get asm offsets using inline assembler, which the above
|
|
dnl compilers can do. When we're not using one of those, we have to fall
|
|
dnl back to obj_int_extract, which reads them from a compiled object
|
|
dnl file. Unfortunately, that only works if we're compiling on a system
|
|
dnl with the header files for the appropriate object file format.
|
|
VPX_NEED_OBJ_INT_EXTRACT=1
|
|
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
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Disable Wave decoder support
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(wave,
|
|
[ --disable-wave Disable Wave decoder support],
|
|
MOZ_WAVE=,
|
|
MOZ_WAVE=1)
|
|
|
|
if test -n "$MOZ_WAVE"; then
|
|
AC_DEFINE(MOZ_WAVE)
|
|
MOZ_SYDNEYAUDIO=1
|
|
MOZ_CUBEB=1
|
|
MOZ_MEDIA=1
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Handle dependent SYDNEYAUDIO, CUBEB, and MEDIA defines
|
|
dnl ========================================================
|
|
|
|
if test -n "$MOZ_SYDNEYAUDIO"; then
|
|
AC_DEFINE(MOZ_SYDNEYAUDIO)
|
|
fi
|
|
|
|
if test -n "$MOZ_SPEEX_RESAMPLER"; then
|
|
AC_DEFINE(MOZ_SPEEX_RESAMPLER)
|
|
fi
|
|
|
|
if test -n "$MOZ_CUBEB"; then
|
|
case "$target" in
|
|
*-android*|*-linuxandroid*)
|
|
if test -n "$gonkdir"; then
|
|
AC_DEFINE(MOZ_CUBEB)
|
|
fi
|
|
dnl No Android implementation of libcubeb yet.
|
|
;;
|
|
*-linux*)
|
|
AC_DEFINE(MOZ_CUBEB)
|
|
;;
|
|
*-mingw*)
|
|
AC_DEFINE(MOZ_CUBEB)
|
|
;;
|
|
*-darwin*)
|
|
AC_DEFINE(MOZ_CUBEB)
|
|
;;
|
|
*-openbsd*)
|
|
AC_DEFINE(MOZ_CUBEB)
|
|
;;
|
|
*)
|
|
dnl Other targets will be enabled soon.
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
if test -n "$MOZ_MEDIA"; then
|
|
AC_DEFINE(MOZ_MEDIA)
|
|
fi
|
|
|
|
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
|
|
|
|
if test -n "$MOZ_OPUS"; then
|
|
AC_DEFINE(MOZ_OPUS)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Check alsa availability on Linux if using sydneyaudio
|
|
dnl ========================================================
|
|
|
|
dnl If using sydneyaudio with Linux, ensure that the alsa library is available
|
|
if test -n "$MOZ_SYDNEYAUDIO" -a "$OS_TARGET" = "Linux"; then
|
|
PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
|
|
[echo "$MOZ_ALSA_PKG_ERRORS"
|
|
AC_MSG_ERROR([Need alsa for Ogg, Wave or WebM decoding on Linux. Disable with --disable-ogg --disable-wave --disable-webm. (On Ubuntu, you might try installing the package libasound2-dev.)])])
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Enable PulseAudio
|
|
dnl ========================================================
|
|
|
|
MOZ_ARG_ENABLE_BOOL(pulseaudio,
|
|
[ --enable-pulseaudio Enable PulseAudio support (experimental)],
|
|
MOZ_PULSEAUDIO=1,
|
|
MOZ_PULSEAUDIO=)
|
|
|
|
if test -n "$MOZ_PULSEAUDIO"; then
|
|
AC_DEFINE(MOZ_CUBEB)
|
|
PKG_CHECK_MODULES(MOZ_PULSEAUDIO, libpulse, ,
|
|
[echo "$MOZ_PULSEAUDIO_PKG_ERRORS"
|
|
AC_MSG_ERROR([pulseaudio audio backend requires libpulse package])])
|
|
fi
|
|
|
|
AC_SUBST(MOZ_PULSEAUDIO)
|
|
AC_SUBST(MOZ_PULSEAUDIO_CFLAGS)
|
|
AC_SUBST(MOZ_PULSEAUDIO_LIBS)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable GStreamer
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(gstreamer,
|
|
[ --enable-gstreamer Enable GStreamer support],
|
|
MOZ_GSTREAMER=1,
|
|
MOZ_GSTREAMER=)
|
|
|
|
if test "$MOZ_GSTREAMER"; then
|
|
# API version, eg 0.10, 1.0 etc
|
|
GST_API_VERSION=0.10
|
|
# core/base release number
|
|
# depend on >= 0.10.33 as that's when the playbin2 source-setup signal was
|
|
# introduced
|
|
GST_VERSION=0.10.33
|
|
PKG_CHECK_MODULES(GSTREAMER,
|
|
gstreamer-$GST_API_VERSION >= $GST_VERSION
|
|
gstreamer-app-$GST_API_VERSION
|
|
gstreamer-plugins-base-$GST_API_VERSION)
|
|
if test -n "$GSTREAMER_LIBS"; then
|
|
_SAVE_LDFLAGS=$LDFLAGS
|
|
LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
|
|
AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=)
|
|
if test -n "$_HAVE_LIBGSTVIDEO" ; then
|
|
GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION"
|
|
else
|
|
AC_MSG_ERROR([gstreamer video backend requires libgstvideo])
|
|
fi
|
|
LDFLAGS=$_SAVE_LDFLAGS
|
|
else
|
|
AC_MSG_ERROR([gstreamer backend requires the gstreamer packages])
|
|
fi
|
|
fi
|
|
AC_SUBST(GSTREAMER_CFLAGS)
|
|
AC_SUBST(GSTREAMER_LIBS)
|
|
AC_SUBST(MOZ_GSTREAMER)
|
|
|
|
if test -n "$MOZ_GSTREAMER"; then
|
|
AC_DEFINE(MOZ_GSTREAMER)
|
|
MOZ_MEDIA=1
|
|
fi
|
|
|
|
|
|
dnl ========================================================
|
|
dnl Permissions System
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(permissions,
|
|
[ --disable-permissions Disable permissions (popup and cookie blocking)],
|
|
MOZ_PERMISSIONS=,
|
|
MOZ_PERMISSIONS=1
|
|
)
|
|
|
|
dnl ========================================================
|
|
dnl NegotiateAuth
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(negotiateauth,
|
|
[ --disable-negotiateauth Disable GSS-API negotiation ],
|
|
MOZ_AUTH_EXTENSION=,
|
|
MOZ_AUTH_EXTENSION=1 )
|
|
|
|
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 )
|
|
|
|
if test -n "${JAVA_BIN_PATH}"; then
|
|
dnl Look for javac and jar in the specified path.
|
|
JAVA_PATH="$JAVA_BIN_PATH"
|
|
else
|
|
dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
|
|
JAVA_PATH="$JAVA_HOME/bin:$PATH"
|
|
fi
|
|
|
|
MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
|
|
MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
|
|
MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
|
|
|
|
if test -n "${JAVA_BIN_PATH}" -o \
|
|
\( "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk" \); then
|
|
if test -z "$JAVA" -o "$JAVA" = ":" -o -z "$JAVAC" -o "$JAVAC" = ":" -o -z "$JAR" -o "$JAR" = ":"; then
|
|
AC_MSG_ERROR([The programs java, javac and jar were not found. Set \$JAVA_HOME to your java sdk directory or use --with-java-bin-path={java-bin-dir}])
|
|
fi
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = ANGLE OpenGL->D3D translator for WebGL
|
|
dnl = * only applies to win32
|
|
dnl = * enabled by default (shipping build); requires explicit --disable to disable
|
|
dnl ========================================================
|
|
MOZ_ANGLE_RENDERER=
|
|
MOZ_DIRECTX_SDK_PATH=
|
|
MOZ_DIRECTX_SDK_CPU_SUFFIX=
|
|
MOZ_D3DX9_VERSION=
|
|
MOZ_D3DX9_CAB=
|
|
MOZ_D3DCOMPILER_CAB=
|
|
MOZ_D3DX9_DLL=
|
|
MOZ_D3DCOMPILER_DLL=
|
|
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)
|
|
MOZ_DIRECTX_SDK_CPU_SUFFIX=x86
|
|
;;
|
|
x86_64)
|
|
MOZ_DIRECTX_SDK_CPU_SUFFIX=x64
|
|
;;
|
|
esac
|
|
|
|
MOZ_ARG_DISABLE_BOOL(webgl,
|
|
[ --disable-webgl Disable building of the WebGL implementation],
|
|
MOZ_WEBGL_DISABLED=1,
|
|
MOZ_WEBGL_DISABLED=)
|
|
|
|
if test -n "$MOZ_WEBGL_DISABLED"; then
|
|
MOZ_WEBGL=
|
|
MOZ_ANGLE_RENDERER=
|
|
fi
|
|
|
|
if test -n "$MOZ_ANGLE_RENDERER" -a -z "$CROSS_COMPILE"; then
|
|
# Get the SDK path from the registry.
|
|
# First try to get the June 2010 SDK
|
|
MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1`
|
|
if test -z "$MOZ_DIRECTX_SDK_REG_KEY" ; then
|
|
# Otherwise just take whatever comes first
|
|
MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1`
|
|
fi
|
|
|
|
if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then
|
|
AC_MSG_ERROR([Found the February 2010 DirectX SDK. Need the June 2010 DirectX SDK, or newer. Upgrade your SDK or reconfigure with --disable-webgl.])
|
|
else
|
|
MOZ_DIRECTX_SDK_PATH=`reg query "$MOZ_DIRECTX_SDK_REG_KEY" //v InstallPath | grep REG_SZ | sed 's/.*\([[a-zA-Z]]\)\\:\\\\/\\1\\:\\\\/' | sed 's,\\\\,/,g'`
|
|
fi
|
|
|
|
if test -n "$MOZ_DIRECTX_SDK_PATH" &&
|
|
test -f "$MOZ_DIRECTX_SDK_PATH"/include/d3dx9.h &&
|
|
test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_DIRECTX_SDK_CPU_SUFFIX/dxguid.lib ; then
|
|
AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH])
|
|
else
|
|
AC_MSG_ERROR([Couldn't find the DirectX SDK, needed for WebGL. Either install it (June 2010 version or newer), or reconfigure with --disable-webgl.])
|
|
fi
|
|
|
|
# Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib
|
|
MOZ_D3DX9_VERSION=`dumpbin //headers "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_DIRECTX_SDK_CPU_SUFFIX/d3dx9.lib | egrep d3dx9_[[0-9]][[0-9]]\.dll | head -n1 | sed 's/.*\([[0-9]][[0-9]]\).*/\\1/g'`
|
|
|
|
if test -z "$MOZ_D3DX9_VERSION" ; then
|
|
AC_MSG_ERROR([Couldn't determine the D3DX9 version, needed for WebGL. Either reinstall the DirectX SDK (June 2010 version or newer), or reconfigure with --disable-webgl.])
|
|
fi
|
|
|
|
MOZ_D3DX9_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *d3dx9_${MOZ_D3DX9_VERSION}_${MOZ_DIRECTX_SDK_CPU_SUFFIX}.cab | head -n1`
|
|
MOZ_D3DCOMPILER_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_DIRECTX_SDK_CPU_SUFFIX}.cab | head -n1`
|
|
|
|
if test -z "$MOZ_D3DX9_CAB" -o -z "$MOZ_D3DCOMPILER_CAB"; then
|
|
AC_MSG_ERROR([Couldn't find the DirectX redistributable files. Either reinstall the DirectX SDK (making sure the "DirectX Redistributable Files" option is selected), or reconfigure with --disable-webgl.])
|
|
fi
|
|
|
|
MOZ_D3DX9_DLL=d3dx9_$MOZ_D3DX9_VERSION.dll
|
|
MOZ_D3DCOMPILER_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Breakpad crash reporting (on by default on supported platforms)
|
|
dnl ========================================================
|
|
|
|
case $target in
|
|
i?86-*-mingw*|x86_64-*-mingw*)
|
|
MOZ_CRASHREPORTER=1
|
|
;;
|
|
i?86-apple-darwin*|x86_64-apple-darwin*)
|
|
MOZ_CRASHREPORTER=1
|
|
;;
|
|
i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
|
|
if test "$MOZ_ENABLE_GTK2"; then
|
|
MOZ_CRASHREPORTER=1
|
|
fi
|
|
;;
|
|
*-android*|*-linuxandroid*)
|
|
MOZ_CRASHREPORTER=1
|
|
;;
|
|
*solaris*)
|
|
MOZ_CRASHREPORTER=1
|
|
;;
|
|
esac
|
|
|
|
MOZ_ARG_DISABLE_BOOL(crashreporter,
|
|
[ --disable-crashreporter Disable breakpad crash reporting],
|
|
MOZ_CRASHREPORTER=,
|
|
MOZ_CRASHREPORTER=1)
|
|
|
|
if test -n "$MOZ_CRASHREPORTER"; then
|
|
AC_DEFINE(MOZ_CRASHREPORTER)
|
|
|
|
if test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS" && \
|
|
test -z "$SKIP_LIBRARY_CHECKS"; then
|
|
PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
|
|
AC_SUBST(MOZ_GTHREAD_CFLAGS)
|
|
AC_SUBST(MOZ_GTHREAD_LIBS)
|
|
|
|
MOZ_CHECK_HEADERS([curl/curl.h], [], [AC_MSG_ERROR([Couldn't find curl/curl.h which is required for the crash reporter. Use --disable-crashreporter to disable the crash reporter.])])
|
|
fi
|
|
|
|
if test "$OS_ARCH" != "$HOST_OS_ARCH"; then
|
|
AC_MSG_ERROR([Breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH. Use --disable-crashreporter.])
|
|
fi
|
|
|
|
if test "$OS_ARCH" = "WINNT" -a -z "$HAVE_64BIT_OS"; then
|
|
MOZ_CRASHREPORTER_INJECTOR=1
|
|
AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
|
|
fi
|
|
fi
|
|
|
|
MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
|
|
[ --with-crashreporter-enable-percent=NN
|
|
Enable sending crash reports by default on NN% of users. (default=100)],
|
|
[ val=`echo $withval | sed 's/[^0-9]//g'`
|
|
MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
|
|
|
|
if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
|
|
MOZ_CRASHREPORTER_ENABLE_PERCENT=100
|
|
fi
|
|
AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
|
|
|
|
dnl ========================================================
|
|
dnl = libjpeg-turbo configuration
|
|
dnl ========================================================
|
|
MOZ_LIBJPEG_TURBO=
|
|
if test -z "$MOZ_NATIVE_JPEG"; then
|
|
MOZ_LIBJPEG_TURBO=1
|
|
fi
|
|
|
|
MOZ_ARG_DISABLE_BOOL(libjpeg_turbo,
|
|
[ --disable-libjpeg-turbo Disable optimized jpeg decoding routines],
|
|
MOZ_LIBJPEG_TURBO=,
|
|
MOZ_LIBJPEG_TURBO=1)
|
|
|
|
if test "$MOZ_NATIVE_JPEG" = 1 -a "$MOZ_LIBJPEG_TURBO" = 1; then
|
|
AC_MSG_ERROR([cannot use --with-system-jpeg with --enable-libjpeg-turbo.])
|
|
fi
|
|
|
|
dnl Detect if we can use yasm to compile libjpeg-turbo's optimized assembly
|
|
dnl files.
|
|
|
|
if test -n "$MOZ_LIBJPEG_TURBO"; then
|
|
|
|
dnl Do we support libjpeg-turbo on this platform?
|
|
case "$OS_ARCH:$OS_TEST" in
|
|
Darwin:i?86)
|
|
LIBJPEG_TURBO_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC -DMACHO"
|
|
LIBJPEG_TURBO_X86_ASM=1
|
|
;;
|
|
Darwin:x86_64)
|
|
LIBJPEG_TURBO_ASFLAGS="-f macho64 -rnasm -pnasm -D__x86_64__ -DPIC -DMACHO"
|
|
LIBJPEG_TURBO_X64_ASM=1
|
|
;;
|
|
WINNT:x86|WINNT:i?86)
|
|
LIBJPEG_TURBO_ASFLAGS="-f win32 -rnasm -pnasm -DPIC -DWIN32"
|
|
LIBJPEG_TURBO_X86_ASM=1
|
|
;;
|
|
WINNT:x86_64)
|
|
LIBJPEG_TURBO_ASFLAGS="-f win64 -rnasm -pnasm -D__x86_64__ -DPIC -DWIN64 -DMSVC"
|
|
LIBJPEG_TURBO_X64_ASM=1
|
|
;;
|
|
*:arm*)
|
|
LIBJPEG_TURBO_ASFLAGS="-march=armv7-a -mfpu=neon"
|
|
LIBJPEG_TURBO_ARM_ASM=1
|
|
;;
|
|
*:x86|*:i?86)
|
|
if $CC -E -dM -</dev/null | grep -q __ELF__; then
|
|
LIBJPEG_TURBO_ASFLAGS="-f elf32 -rnasm -pnasm -DPIC -DELF"
|
|
LIBJPEG_TURBO_X86_ASM=1
|
|
fi
|
|
;;
|
|
*:x86_64)
|
|
if $CC -E -dM -</dev/null | grep -q __ELF__; then
|
|
LIBJPEG_TURBO_ASFLAGS="-f elf64 -rnasm -pnasm -D__x86_64__ -DPIC -DELF"
|
|
LIBJPEG_TURBO_X64_ASM=1
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
fi
|
|
|
|
dnl If we're on an x86 or x64 system which supports libjpeg-turbo's asm routines
|
|
dnl and --disable-libjpeg-turbo wasn't passed, check for Yasm, and error out if
|
|
dnl it doesn't exist or we have too old of a version.
|
|
if test -n "$LIBJPEG_TURBO_X86_ASM" -o -n "$LIBJPEG_TURBO_X64_ASM" ; then
|
|
AC_MSG_CHECKING([for Yasm assembler])
|
|
AC_CHECK_PROGS(LIBJPEG_TURBO_AS, yasm, "")
|
|
|
|
if test -z "$LIBJPEG_TURBO_AS" ; then
|
|
AC_MSG_ERROR([Yasm is required to build with libjpeg-turbo's optimized JPEG decoding routines, but you do not appear to have Yasm installed. Either install it or configure with --disable-libjpeg-turbo to use the pure C JPEG decoder. See https://developer.mozilla.org/en/YASM for more details.])
|
|
fi
|
|
|
|
dnl Check that we have the right yasm version. We require 1.0.1 or newer
|
|
dnl on Linux and 1.1 or newer everywhere else.
|
|
if test "$OS_ARCH" = "Linux" ; then
|
|
if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -eq "0" -a "$_YASM_RELEASE" -lt "1" \) ; then
|
|
AC_MSG_ERROR([Yasm 1.0.1 or greater is required to build with libjpeg-turbo's optimized JPEG decoding routines, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION.$_YASM_RELEASE. Upgrade to the newest version or configure with --disable-libjpeg-turbo to use the pure C JPEG decoder. See https://developer.mozilla.org/en/YASM for more details.])
|
|
fi
|
|
else
|
|
if test "$_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 with libjpeg-turbo's optimized JPEG decoding routines, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION. Upgrade to the newest version or configure with --disable-libjpeg-turbo to use the pure C JPEG decoder. See https://developer.mozilla.org/en/YASM for more details.])
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
dnl If we're on an ARM system which supports libjpeg-turbo's asm routines and
|
|
dnl --disable-libjpeg-turbo wasn't passed, use the C compiler as the assembler.
|
|
if test -n "$LIBJPEG_TURBO_ARM_ASM" ; then
|
|
echo "Using $AS as the assembler for ARM code."
|
|
LIBJPEG_TURBO_AS=$AS
|
|
fi
|
|
|
|
if test -n "$LIBJPEG_TURBO_X86_ASM"; then
|
|
AC_DEFINE(LIBJPEG_TURBO_X86_ASM)
|
|
elif test -n "$LIBJPEG_TURBO_X64_ASM"; then
|
|
AC_DEFINE(LIBJPEG_TURBO_X64_ASM)
|
|
elif test -n "$LIBJPEG_TURBO_ARM_ASM"; then
|
|
AC_DEFINE(LIBJPEG_TURBO_ARM_ASM)
|
|
elif test -n "$MOZ_LIBJPEG_TURBO"; then
|
|
dnl Warn if we're not building the optimized routines, even though the user
|
|
dnl didn't specify --disable-libjpeg-turbo.
|
|
AC_MSG_WARN([No assembler or assembly support for libjpeg-turbo. Using unoptimized C routines.])
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Enable compilation of specific extension modules
|
|
dnl ========================================================
|
|
|
|
MOZ_ARG_ENABLE_STRING(extensions,
|
|
[ --enable-extensions Enable extensions],
|
|
[ for option in `echo $enableval | sed 's/,/ /g'`; do
|
|
if test "$option" = "yes" -o "$option" = "all"; then
|
|
AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
|
|
elif test "$option" = "no" -o "$option" = "none"; then
|
|
MOZ_EXTENSIONS=""
|
|
elif test "$option" = "default"; then
|
|
MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
|
|
elif test `echo "$option" | grep -c \^-` != 0; then
|
|
option=`echo $option | sed 's/^-//'`
|
|
MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
|
|
else
|
|
MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
|
|
fi
|
|
done],
|
|
MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
|
|
|
|
if test -z "$MOZ_ENABLE_GNOMEVFS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
|
|
# Suppress warning on non-X11 platforms
|
|
if test -n "$MOZ_X11"; then
|
|
AC_MSG_WARN([Removing gnomevfs from MOZ_EXTENSIONS due to no --enable-gnomevfs.])
|
|
fi
|
|
MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
|
|
fi
|
|
|
|
dnl Do not build gnomevfs with libxul based apps
|
|
if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
|
|
MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
|
|
fi
|
|
|
|
if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
|
|
# Suppress warning on non-X11 platforms
|
|
if test -n "$MOZ_X11"; then
|
|
AC_MSG_WARN([Removing gio from MOZ_EXTENSIONS due to --disable-gio.])
|
|
fi
|
|
MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
|
|
fi
|
|
|
|
dnl Do not build gio with libxul based apps
|
|
if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
|
|
MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
|
|
fi
|
|
|
|
if test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
|
|
MOZ_GIO_COMPONENT=1
|
|
MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
|
|
fi
|
|
AC_SUBST(MOZ_GIO_COMPONENT)
|
|
|
|
if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
|
|
AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
|
|
MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
|
|
fi
|
|
|
|
dnl Remove dupes
|
|
MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
|
|
|
|
dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
|
|
dnl when trying to build a nonexistent extension.
|
|
for extension in $MOZ_EXTENSIONS; do
|
|
if test ! -d "${srcdir}/extensions/${extension}"; then
|
|
AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
|
|
fi
|
|
done
|
|
|
|
if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
|
|
AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl CSS3 Flexbox Support
|
|
dnl ========================================================
|
|
if test -n "$MOZ_FLEXBOX"; then
|
|
AC_DEFINE(MOZ_FLEXBOX)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Build Freetype in the tree
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(tree-freetype,
|
|
[ --enable-tree-freetype Enable Tree FreeType],
|
|
MOZ_TREE_FREETYPE=1,
|
|
MOZ_TREE_FREETYPE= )
|
|
if test -n "$MOZ_TREE_FREETYPE"; then
|
|
if test -n "$_WIN32_MSVC"; then
|
|
AC_ERROR("building with in-tree freetype is not supported on MSVC")
|
|
fi
|
|
AC_DEFINE(MOZ_TREE_FREETYPE)
|
|
AC_SUBST(MOZ_TREE_FREETYPE)
|
|
MOZ_ENABLE_CAIRO_FT=1
|
|
FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
|
|
FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
|
|
CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
|
|
FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
|
|
CAIRO_FT_OSLIBS=''
|
|
CAIRO_FT_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
|
|
AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
|
|
AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
|
|
AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
|
|
AC_SUBST(CAIRO_FT_CFLAGS)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Installer
|
|
dnl ========================================================
|
|
dnl Abort Windows build if the required major version and
|
|
dnl minimum minor version of Unicode NSIS isn't in the path
|
|
dnl (unless in case of cross compiling, for which Unicode
|
|
dnl is not yet sufficient).
|
|
if test "$OS_ARCH" = "WINNT"; then
|
|
REQ_NSIS_MAJOR_VER=2
|
|
MIN_NSIS_MINOR_VER=33
|
|
MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensisu-2.46 makensisu makensis)
|
|
if test -n "$MAKENSISU" -a "$MAKENSISU" != ":"; then
|
|
AC_MSG_RESULT([yes])
|
|
changequote(,)
|
|
MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\)\-Unicode$/\1/g'`
|
|
changequote([,])
|
|
if test ! "$MAKENSISU_VER" = ""; then
|
|
MAKENSISU_MAJOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $1 }'`
|
|
MAKENSISU_MINOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $2 }'`
|
|
fi
|
|
AC_MSG_CHECKING([for Unicode NSIS with major version == $REQ_NSIS_MAJOR_VER and minor version >= $MIN_NSIS_MINOR_VER])
|
|
if test "$MAKENSISU_VER" = "" || \
|
|
test ! "$MAKENSISU_MAJOR_VER" = "$REQ_NSIS_MAJOR_VER" -o \
|
|
! "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER; then
|
|
AC_MSG_RESULT([no])
|
|
if test -z "$CROSS_COMPILE"; then
|
|
AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS with a major version of $REQ_NSIS_MAJOR_VER and a minimum minor version of $MIN_NSIS_MINOR_VER in your path.])
|
|
else
|
|
MAKENSISU=
|
|
fi
|
|
fi
|
|
elif test -z "$CROSS_COMPILE"; then
|
|
AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS with a major version of $REQ_NSIS_MAJOR_VER and a minimum minor version of $MIN_NSIS_MINOR_VER in your path.])
|
|
else
|
|
MAKENSISU=
|
|
fi
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Web App Runtime
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(webapp-runtime,
|
|
[ --disable-webapp-runtime Disable Web App Runtime],
|
|
MOZ_WEBAPP_RUNTIME=,
|
|
MOZ_WEBAPP_RUNTIME=1)
|
|
if test "$MOZ_WIDGET_TOOLKIT" != "windows" -a "$MOZ_WIDGET_TOOLKIT" != "cocoa" -a "$MOZ_WIDGET_TOOLKIT" != "gtk2"; then
|
|
MOZ_WEBAPP_RUNTIME=
|
|
fi
|
|
if test "$OS_ARCH" = "WINNT" -a -z "$MAKENSISU" -a -n "$CROSS_COMPILE"; then
|
|
MOZ_WEBAPP_RUNTIME=
|
|
fi
|
|
AC_SUBST(MOZ_WEBAPP_RUNTIME)
|
|
if test "$MOZ_WEBAPP_RUNTIME"; then
|
|
AC_DEFINE(MOZ_WEBAPP_RUNTIME)
|
|
fi
|
|
|
|
AC_MSG_CHECKING([for tar archiver])
|
|
AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
|
|
if test -z "$TAR"; then
|
|
AC_MSG_ERROR([no tar archiver found in \$PATH])
|
|
fi
|
|
AC_MSG_RESULT([$TAR])
|
|
AC_SUBST(TAR)
|
|
|
|
AC_MSG_CHECKING([for wget])
|
|
AC_CHECK_PROGS(WGET, wget, "")
|
|
AC_MSG_RESULT([$WGET])
|
|
AC_SUBST(WGET)
|
|
|
|
dnl ========================================================
|
|
dnl Signing
|
|
dnl ========================================================
|
|
|
|
if test -n "$MOZ_SIGN_CMD"; then
|
|
AC_DEFINE(MOZ_SIGNING)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Maintenance Service
|
|
dnl ========================================================
|
|
|
|
MOZ_ARG_ENABLE_BOOL(maintenance-service,
|
|
[ --enable-maintenance-service Enable building of maintenanceservice],
|
|
MOZ_MAINTENANCE_SERVICE=1,
|
|
MOZ_MAINTENANCE_SERVICE= )
|
|
|
|
if test -n "$MOZ_MAINTENANCE_SERVICE"; then
|
|
if test "$OS_ARCH" = "WINNT"; then
|
|
AC_DEFINE(MOZ_MAINTENANCE_SERVICE)
|
|
else
|
|
AC_MSG_ERROR([Can only build with --enable-maintenance-service with a Windows target])
|
|
fi
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Verify MAR signatures
|
|
dnl ========================================================
|
|
|
|
MOZ_ARG_ENABLE_BOOL(verify-mar,
|
|
[ --enable-verify-mar Enable verifying MAR signatures],
|
|
MOZ_VERIFY_MAR_SIGNATURE=1,
|
|
MOZ_VERIFY_MAR_SIGNATURE= )
|
|
|
|
if test -n "$MOZ_VERIFY_MAR_SIGNATURE"; then
|
|
if test "$OS_ARCH" = "WINNT"; then
|
|
AC_DEFINE(MOZ_VERIFY_MAR_SIGNATURE)
|
|
else
|
|
AC_MSG_ERROR([Can only build with --enable-verify-mar with a Windows target])
|
|
fi
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Enable building the signmar program.
|
|
dnl This option is much different than the --enable-verify-mar option.
|
|
dnl --enable-verify-mar is for enabling the verification check on MAR
|
|
dnl files in the updater. The --enable-signmar option is for building
|
|
dnl the signmar program.
|
|
dnl ========================================================
|
|
|
|
MOZ_ARG_ENABLE_BOOL(signmar,
|
|
[ --enable-signmar Enable building the signmar program],
|
|
MOZ_ENABLE_SIGNMAR=1,
|
|
MOZ_ENABLE_SIGNMAR= )
|
|
|
|
if test -n "$MOZ_ENABLE_SIGNMAR"; then
|
|
AC_DEFINE(MOZ_ENABLE_SIGNMAR)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Updater
|
|
dnl ========================================================
|
|
|
|
MOZ_ARG_DISABLE_BOOL(updater,
|
|
[ --disable-updater Disable building of updater],
|
|
MOZ_UPDATER=,
|
|
MOZ_UPDATER=1 )
|
|
|
|
if test -n "$MOZ_UPDATER"; then
|
|
AC_DEFINE(MOZ_UPDATER)
|
|
fi
|
|
|
|
# app update channel is 'default' when not supplied.
|
|
MOZ_ARG_ENABLE_STRING([update-channel],
|
|
[ --enable-update-channel=CHANNEL
|
|
Select application update channel (default=default)],
|
|
MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
|
|
|
|
if test -z "$MOZ_UPDATE_CHANNEL"; then
|
|
MOZ_UPDATE_CHANNEL=default
|
|
fi
|
|
AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
|
|
AC_SUBST(MOZ_UPDATE_CHANNEL)
|
|
|
|
# tools/update-packaging is not checked out by default.
|
|
MOZ_ARG_ENABLE_BOOL(update-packaging,
|
|
[ --enable-update-packaging
|
|
Enable tools/update-packaging],
|
|
MOZ_UPDATE_PACKAGING=1,
|
|
MOZ_UPDATE_PACKAGING= )
|
|
AC_SUBST(MOZ_UPDATE_PACKAGING)
|
|
|
|
dnl ========================================================
|
|
dnl build the tests by default
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(tests,
|
|
[ --disable-tests Do not build test libraries & programs],
|
|
ENABLE_TESTS=,
|
|
ENABLE_TESTS=1 )
|
|
|
|
dnl ========================================================
|
|
dnl parental controls (for Windows Vista)
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(parental-controls,
|
|
[ --disable-parental-controls
|
|
Do not build parental controls],
|
|
MOZ_DISABLE_PARENTAL_CONTROLS=1,
|
|
MOZ_DISABLE_PARENTAL_CONTROLS=)
|
|
if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
|
|
AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
|
|
fi
|
|
|
|
AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
|
|
|
|
dnl ========================================================
|
|
dnl = Disable DOMCrypto
|
|
dnl ========================================================
|
|
if test -n "$MOZ_DISABLE_DOMCRYPTO"; then
|
|
AC_DEFINE(MOZ_DISABLE_DOMCRYPTO)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Module specific options
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(Individual module options)
|
|
|
|
dnl ========================================================
|
|
dnl = Disable feed handling components
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(feeds,
|
|
[ --disable-feeds Disable feed handling and processing components],
|
|
MOZ_FEEDS=,
|
|
MOZ_FEEDS=1 )
|
|
if test -n "$MOZ_FEEDS"; then
|
|
AC_DEFINE(MOZ_FEEDS)
|
|
else
|
|
if test "$MOZ_BUILD_APP" = "browser"; then
|
|
AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
|
|
fi
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Check for sqlite
|
|
dnl ========================================================
|
|
|
|
MOZ_NATIVE_SQLITE=
|
|
MOZ_ARG_ENABLE_BOOL(system-sqlite,
|
|
[ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
|
|
MOZ_NATIVE_SQLITE=1,
|
|
MOZ_NATIVE_SQLITE= )
|
|
|
|
if test -z "$MOZ_NATIVE_SQLITE"
|
|
then
|
|
SQLITE_CFLAGS=
|
|
SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
|
|
else
|
|
dnl ============================
|
|
dnl === SQLite Version check ===
|
|
dnl ============================
|
|
dnl Check to see if the system SQLite package is new enough.
|
|
PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
|
|
|
|
dnl ==================================
|
|
dnl === SQLITE_SECURE_DELETE check ===
|
|
dnl ==================================
|
|
dnl Check to see if the system SQLite package is compiled with
|
|
dnl SQLITE_SECURE_DELETE enabled.
|
|
AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
|
|
_SAVE_CFLAGS="$CFLAGS"
|
|
CFLAGS="$CFLAGS $SQLITE_CFLAGS"
|
|
_SAVE_LIBS="$LIBS"
|
|
LIBS="$LIBS $SQLITE_LIBS"
|
|
AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
|
|
AC_TRY_RUN([
|
|
#include "sqlite3.h"
|
|
|
|
int main(int argc, char **argv){
|
|
return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
|
|
}],
|
|
ac_cv_sqlite_secure_delete=yes,
|
|
ac_cv_sqlite_secure_delete=no,
|
|
ac_cv_sqlite_secure_delete=no
|
|
)
|
|
])
|
|
AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
|
|
CFLAGS="$_SAVE_CFLAGS"
|
|
LIBS="$_SAVE_LIBS"
|
|
if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
|
|
AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
|
|
fi
|
|
|
|
dnl ===============================
|
|
dnl === SQLITE_THREADSAFE check ===
|
|
dnl ===============================
|
|
dnl Check to see if the system SQLite package is compiled with
|
|
dnl SQLITE_THREADSAFE enabled.
|
|
AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
|
|
_SAVE_CFLAGS="$CFLAGS"
|
|
CFLAGS="$CFLAGS $SQLITE_CFLAGS"
|
|
_SAVE_LIBS="$LIBS"
|
|
LIBS="$LIBS $SQLITE_LIBS"
|
|
AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
|
|
AC_TRY_RUN([
|
|
#include "sqlite3.h"
|
|
|
|
int main(int argc, char **argv){
|
|
return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
|
|
}],
|
|
ac_cv_sqlite_threadsafe=yes,
|
|
ac_cv_sqlite_threadsafe=no,
|
|
ac_cv_sqlite_threadsafe=no
|
|
)
|
|
])
|
|
AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
|
|
CFLAGS="$_SAVE_CFLAGS"
|
|
LIBS="$_SAVE_LIBS"
|
|
if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
|
|
AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
|
|
fi
|
|
|
|
dnl ================================
|
|
dnl === SQLITE_ENABLE_FTS3 check ===
|
|
dnl ================================
|
|
dnl check to see if the system SQLite package is compiled with
|
|
dnl SQLITE_ENABLE_FTS3 enabled.
|
|
AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
|
|
_SAVE_CFLAGS="$CFLAGS"
|
|
CFLAGS="$CFLAGS $SQLITE_CFLAGS"
|
|
_SAVE_LIBS="$LIBS"
|
|
LIBS="$LIBS $SQLITE_LIBS"
|
|
AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
|
|
AC_TRY_RUN([
|
|
#include "sqlite3.h"
|
|
|
|
int main(int argc, char **argv){
|
|
return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
|
|
}],
|
|
ac_cv_sqlite_enable_fts3=yes,
|
|
ac_cv_sqlite_enable_fts3=no,
|
|
ac_cv_sqlite_enable_fts3=no
|
|
)
|
|
])
|
|
AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
|
|
CFLAGS="$_SAVE_CFLAGS"
|
|
LIBS="$_SAVE_LIBS"
|
|
if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
|
|
AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
|
|
fi
|
|
|
|
dnl =========================================
|
|
dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
|
|
dnl =========================================
|
|
dnl check to see if the system SQLite package is compiled with
|
|
dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
|
|
AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
|
|
_SAVE_CFLAGS="$CFLAGS"
|
|
CFLAGS="$CFLAGS $SQLITE_CFLAGS"
|
|
_SAVE_LIBS="$LIBS"
|
|
LIBS="$LIBS $SQLITE_LIBS"
|
|
AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
|
|
AC_TRY_RUN([
|
|
#include "sqlite3.h"
|
|
|
|
int main(int argc, char **argv){
|
|
return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
|
|
}],
|
|
ac_cv_sqlite_enable_unlock_notify=yes,
|
|
ac_cv_sqlite_enable_unlock_notify=no,
|
|
ac_cv_sqlite_enable_unlock_notify=no
|
|
)
|
|
])
|
|
AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
|
|
CFLAGS="$_SAVE_CFLAGS"
|
|
LIBS="$_SAVE_LIBS"
|
|
if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
|
|
AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
|
|
fi
|
|
fi
|
|
|
|
if test -n "$MOZ_NATIVE_SQLITE"; then
|
|
AC_DEFINE(MOZ_NATIVE_SQLITE)
|
|
fi
|
|
AC_SUBST(MOZ_NATIVE_SQLITE)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable help viewer (off by default)
|
|
dnl ========================================================
|
|
if test -n "$MOZ_HELP_VIEWER"; then
|
|
dnl Do this if defined in confvars.sh
|
|
AC_DEFINE(MOZ_HELP_VIEWER)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Enable safe browsing (anti-phishing)
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(safe-browsing,
|
|
[ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
|
|
MOZ_SAFE_BROWSING=1,
|
|
MOZ_SAFE_BROWSING= )
|
|
if test -n "$MOZ_SAFE_BROWSING"; then
|
|
AC_DEFINE(MOZ_SAFE_BROWSING)
|
|
fi
|
|
AC_SUBST(MOZ_SAFE_BROWSING)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable url-classifier
|
|
dnl ========================================================
|
|
dnl Implicitly enabled by default if building with safe-browsing
|
|
if test -n "$MOZ_SAFE_BROWSING"; then
|
|
MOZ_URL_CLASSIFIER=1
|
|
fi
|
|
MOZ_ARG_ENABLE_BOOL(url-classifier,
|
|
[ --enable-url-classifier Enable url classifier module],
|
|
MOZ_URL_CLASSIFIER=1,
|
|
MOZ_URL_CLASSIFIER= )
|
|
if test -n "$MOZ_URL_CLASSIFIER"; then
|
|
AC_DEFINE(MOZ_URL_CLASSIFIER)
|
|
fi
|
|
AC_SUBST(MOZ_URL_CLASSIFIER)
|
|
|
|
dnl ========================================================
|
|
dnl = Disable zipwriter
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(zipwriter,
|
|
[ --disable-zipwriter Disable zipwriter component],
|
|
MOZ_ZIPWRITER=,
|
|
MOZ_ZIPWRITER=1 )
|
|
AC_SUBST(MOZ_ZIPWRITER)
|
|
|
|
dnl ========================================================
|
|
dnl = libconic
|
|
dnl ========================================================
|
|
dnl superseded by QtNetwork starting from 4.7
|
|
MOZ_ENABLE_LIBCONIC=1
|
|
|
|
if test -n "$MOZ_ENABLE_QT"; then
|
|
if test "$MOZ_ENABLE_QTNETWORK"; then
|
|
MOZ_ENABLE_LIBCONIC=
|
|
fi
|
|
fi
|
|
|
|
MOZ_ARG_DISABLE_BOOL(libconic,
|
|
[ --disable-libconic Disable libconic],
|
|
MOZ_ENABLE_LIBCONIC=,
|
|
MOZ_ENABLE_LIBCONIC=1 )
|
|
|
|
if test -n "$MOZ_ENABLE_LIBCONIC"; then
|
|
PKG_CHECK_MODULES(LIBCONIC, conic,
|
|
MOZ_ENABLE_LIBCONIC=1,
|
|
MOZ_ENABLE_LIBCONIC=)
|
|
fi
|
|
if test "$MOZ_ENABLE_LIBCONIC"; then
|
|
AC_DEFINE(MOZ_ENABLE_LIBCONIC)
|
|
fi
|
|
|
|
AC_SUBST(MOZ_ENABLE_LIBCONIC)
|
|
AC_SUBST(LIBCONIC_CFLAGS)
|
|
AC_SUBST(LIBCONIC_LIBS)
|
|
|
|
dnl ========================================================
|
|
dnl = Maemo checks
|
|
dnl ========================================================
|
|
|
|
MAEMO_SDK_TARGET_VER=-1
|
|
|
|
MOZ_ARG_WITH_STRING(maemo-version,
|
|
[ --with-maemo-version=MAEMO_SDK_TARGET_VER
|
|
Maemo SDK Version],
|
|
MAEMO_SDK_TARGET_VER=$withval)
|
|
|
|
case "$MAEMO_SDK_TARGET_VER" in
|
|
5)
|
|
MOZ_PLATFORM_MAEMO=5
|
|
;;
|
|
|
|
6)
|
|
MOZ_PLATFORM_MAEMO=6
|
|
;;
|
|
|
|
-1)
|
|
dnl We aren't compiling for Maemo, move on.
|
|
;;
|
|
*)
|
|
AC_MSG_ERROR([Unknown Maemo Version. Try setting --with-maemo-version to 5 or 6.])
|
|
;;
|
|
esac
|
|
|
|
if test $MOZ_PLATFORM_MAEMO; then
|
|
AC_DEFINE_UNQUOTED([MOZ_PLATFORM_MAEMO], $MOZ_PLATFORM_MAEMO)
|
|
|
|
if test -z "$MOZ_ENABLE_DBUS"; then
|
|
AC_MSG_ERROR([DBus is required when building for Maemo])
|
|
fi
|
|
|
|
MOZ_GFX_OPTIMIZE_MOBILE=1
|
|
MOZ_GL_DEFAULT_PROVIDER=EGL
|
|
MOZ_MAEMO_LIBLOCATION=
|
|
|
|
if test $MOZ_PLATFORM_MAEMO = 5; then
|
|
dnl if we have Xcomposite we should also have Xdamage and Xfixes
|
|
MOZ_CHECK_HEADERS([X11/extensions/Xdamage.h], [],
|
|
[AC_MSG_ERROR([Couldn't find X11/extensions/Xdamage.h which is required for composited plugins.])])
|
|
AC_CHECK_LIB(Xcomposite, XCompositeRedirectWindow, [XCOMPOSITE_LIBS="-lXcomposite -lXdamage -lXfixes"],
|
|
[MISSING_X="$MISSING_X -lXcomposite"], $XLIBS)
|
|
|
|
AC_SUBST(XCOMPOSITE_LIBS)
|
|
|
|
PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime, _LIB_FOUND=1, _LIB_FOUND=)
|
|
MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONMIME_LIBS"
|
|
MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONMIME_CFLAGS"
|
|
if test -z "$_LIB_FOUND"; then
|
|
AC_MSG_ERROR([Hildon Mime is required when building for Maemo])
|
|
fi
|
|
|
|
|
|
PKG_CHECK_MODULES(LIBOSSO,libosso, _LIB_FOUND=1, _LIB_FOUND=)
|
|
MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBOSSO_LIBS"
|
|
MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBOSSO_CFLAGS"
|
|
if test -z "$_LIB_FOUND"; then
|
|
AC_MSG_ERROR([LibOSSO is required when building for Maemo])
|
|
fi
|
|
|
|
PKG_CHECK_MODULES(LIBHILDONFM,hildon-fm-2, _LIB_FOUND=1, _LIB_FOUND=)
|
|
MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONFM_LIBS"
|
|
MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONFM_CFLAGS"
|
|
if test -z "$_LIB_FOUND"; then
|
|
AC_MSG_ERROR([Hildon FM-2 is required when building for Maemo])
|
|
fi
|
|
|
|
fi
|
|
if test $MOZ_PLATFORM_MAEMO = 6; then
|
|
|
|
PKG_CHECK_MODULES(LIBCONTENTMANAGER, ContentManager QtSparql,
|
|
_LIB_FOUND=1,
|
|
_LIB_FOUND=)
|
|
if test "$_LIB_FOUND"; then
|
|
MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTMANAGER_LIBS"
|
|
MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTMANAGER_CFLAGS"
|
|
MOZ_ENABLE_CONTENTMANAGER=1
|
|
AC_DEFINE(MOZ_ENABLE_CONTENTMANAGER)
|
|
else
|
|
AC_MSG_WARN([Cannot find libcontentmanager and or QtSparql building for Maemo 6])
|
|
fi
|
|
AC_SUBST(MOZ_ENABLE_CONTENTMANAGER)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable meego libcontentaction
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(meegocontentaction,
|
|
[ --enable-meegocontentaction Enable meegocontentaction support],
|
|
MOZ_MEEGOCONTENTACTION=1,
|
|
MOZ_MEEGOCONTENTACTION=)
|
|
|
|
if test -n "$MOZ_MEEGOCONTENTACTION"; then
|
|
|
|
PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=)
|
|
if test "$_LIB_FOUND"; then
|
|
MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTACTION_LIBS"
|
|
MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTACTION_CFLAGS"
|
|
MOZ_ENABLE_CONTENTACTION=1
|
|
AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
|
|
AC_SUBST(MOZ_ENABLE_CONTENTACTION)
|
|
fi
|
|
fi
|
|
|
|
MOZ_ARG_ENABLE_BOOL(meegotouch,
|
|
[ --enable-meegotouch Enable meegotouch support],
|
|
MOZ_MEEGOTOUCHENABLED=1,
|
|
MOZ_MEEGOTOUCHENABLED=)
|
|
|
|
if test -n "$MOZ_MEEGOTOUCHENABLED"; then
|
|
PKG_CHECK_MODULES(MOZ_MEEGOTOUCH, meegotouchcore, _LIB_FOUND=1, _LIB_FOUND=)
|
|
if test "$_LIB_FOUND"; then
|
|
MOZ_QT_CFLAGS="$MOZ_MEEGOTOUCH_CFLAGS $MOZ_QT_CFLAGS"
|
|
MOZ_QT_LIBS="$MOZ_MEEGOTOUCH_LIBS $MOZ_QT_LIBS"
|
|
AC_DEFINE(MOZ_ENABLE_MEEGOTOUCH)
|
|
else
|
|
AC_MSG_WARN([Cannot meegotouchcore-dev. Disabling Meegotouch support.])
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
PKG_CHECK_MODULES(LIBLOCATION,liblocation, _LIB_FOUND=1, _LIB_FOUND=)
|
|
MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBLOCATION_LIBS"
|
|
MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBLOCATION_CFLAGS"
|
|
if test "$_LIB_FOUND"; then
|
|
MOZ_MAEMO_LIBLOCATION=1
|
|
AC_DEFINE(MOZ_MAEMO_LIBLOCATION)
|
|
else
|
|
AC_MSG_WARN([Cannot liblocation-dev. Disabling Maemo geolocation.])
|
|
fi
|
|
AC_SUBST(MOZ_MAEMO_LIBLOCATION)
|
|
|
|
PKG_CHECK_MODULES(LIBMEEGOTOUCHSHARE, ShareUiInterface-maemo-meegotouch >= 0.3.31 mdatauri, _LIB_FOUND=1, _LIB_FOUND=)
|
|
MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBMEEGOTOUCHSHARE_LIBS"
|
|
MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBMEEGOTOUCHSHARE_CFLAGS"
|
|
if test "$_LIB_FOUND"; then
|
|
MOZ_ENABLE_MEEGOTOUCHSHARE=1
|
|
AC_DEFINE(MOZ_ENABLE_MEEGOTOUCHSHARE)
|
|
else
|
|
AC_MSG_WARN([Cannot find maemo-meegotouch-interfaces-dev or libmdatauri-dev. Disabling meegotouch share ui.])
|
|
fi
|
|
AC_SUBST(MOZ_ENABLE_MEEGOTOUCHSHARE)
|
|
|
|
AC_SUBST(MOZ_PLATFORM_MAEMO_LIBS)
|
|
AC_SUBST(MOZ_PLATFORM_MAEMO_CFLAGS)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl GL provider
|
|
dnl ========================================================
|
|
MOZ_GL_PROVIDER=
|
|
MOZ_ARG_WITH_STRING(gl-provider,
|
|
[ --with-gl-provider=ID
|
|
Set GL provider backend type],
|
|
[ val=`echo $withval`
|
|
MOZ_GL_PROVIDER="$val"])
|
|
|
|
if test -n "$MOZ_GL_PROVIDER"; then
|
|
MOZ_GL_DEFAULT_PROVIDER=$MOZ_GL_PROVIDER
|
|
AC_SUBST(MOZ_GL_PROVIDER)
|
|
AC_DEFINE_UNQUOTED(MOZ_GL_PROVIDER, GLContextProvider$MOZ_GL_PROVIDER)
|
|
fi
|
|
AC_SUBST(MOZ_GL_DEFAULT_PROVIDER)
|
|
|
|
dnl ========================================================
|
|
dnl = faststripe theme
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(faststripe,
|
|
[ --enable-faststripe Use faststripe theme],
|
|
MOZ_THEME_FASTSTRIPE=1,
|
|
MOZ_THEME_FASTSTRIPE= )
|
|
AC_SUBST(MOZ_THEME_FASTSTRIPE)
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Feature options that require extra sources to be pulled
|
|
dnl =
|
|
dnl ========================================================
|
|
dnl MOZ_ARG_HEADER(Features that require extra sources)
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Debugging Options
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(Debugging and Optimizations)
|
|
|
|
dnl ========================================================
|
|
dnl = Disable building with debug info.
|
|
dnl = Debugging is OFF by default
|
|
dnl ========================================================
|
|
if test -z "$MOZ_DEBUG_FLAGS"; then
|
|
MOZ_DEBUG_FLAGS="-g"
|
|
fi
|
|
|
|
MOZ_ARG_ENABLE_STRING(debug,
|
|
[ --enable-debug[=DBG] Enable building with developer debug info
|
|
(using compiler flags DBG)],
|
|
[ if test "$enableval" != "no"; then
|
|
MOZ_DEBUG=1
|
|
if test -n "$enableval" -a "$enableval" != "yes"; then
|
|
MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
|
|
_MOZ_DEBUG_FLAGS_SET=1
|
|
fi
|
|
else
|
|
MOZ_DEBUG=
|
|
fi ],
|
|
MOZ_DEBUG=)
|
|
|
|
MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG -DTRACING"
|
|
MOZ_ARG_WITH_STRING(debug-label,
|
|
[ --with-debug-label=LABELS
|
|
Define DEBUG_<value> for each comma-separated
|
|
value given.],
|
|
[ for option in `echo $withval | sed 's/,/ /g'`; do
|
|
MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${option}"
|
|
done])
|
|
|
|
MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
|
|
|
|
if test -n "$MOZ_DEBUG"; then
|
|
AC_MSG_CHECKING([for valid debug flags])
|
|
_SAVE_CFLAGS=$CFLAGS
|
|
CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
|
|
AC_TRY_COMPILE([#include <stdio.h>],
|
|
[printf("Hello World\n");],
|
|
_results=yes,
|
|
_results=no)
|
|
AC_MSG_RESULT([$_results])
|
|
if test "$_results" = "no"; then
|
|
AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
|
|
fi
|
|
CFLAGS=$_SAVE_CFLAGS
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl enable mobile optimizations
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(mobile-optimize,
|
|
[ --enable-mobile-optimize
|
|
Enable mobile optimizations],
|
|
MOZ_GFX_OPTIMIZE_MOBILE=1)
|
|
|
|
AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
|
|
|
|
if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
|
|
AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Enable code optimization. ON by default.
|
|
dnl ========================================================
|
|
if test -z "$MOZ_OPTIMIZE_FLAGS"; then
|
|
MOZ_OPTIMIZE_FLAGS="-O"
|
|
fi
|
|
|
|
MOZ_ARG_ENABLE_STRING(optimize,
|
|
[ --disable-optimize Disable compiler optimization
|
|
--enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
|
|
[ if test "$enableval" != "no"; then
|
|
MOZ_OPTIMIZE=1
|
|
if test -n "$enableval" -a "$enableval" != "yes"; then
|
|
MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
|
|
MOZ_OPTIMIZE=2
|
|
fi
|
|
else
|
|
MOZ_OPTIMIZE=
|
|
fi ], MOZ_OPTIMIZE=1)
|
|
|
|
MOZ_SET_FRAMEPTR_FLAGS
|
|
|
|
if test "$COMPILE_ENVIRONMENT"; then
|
|
if test -n "$MOZ_OPTIMIZE"; then
|
|
AC_MSG_CHECKING([for valid optimization flags])
|
|
_SAVE_CFLAGS=$CFLAGS
|
|
CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
|
|
AC_TRY_COMPILE([#include <stdio.h>],
|
|
[printf("Hello World\n");],
|
|
_results=yes,
|
|
_results=no)
|
|
AC_MSG_RESULT([$_results])
|
|
if test "$_results" = "no"; then
|
|
AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
|
|
fi
|
|
CFLAGS=$_SAVE_CFLAGS
|
|
fi
|
|
fi # COMPILE_ENVIRONMENT
|
|
|
|
AC_SUBST(MOZ_OPTIMIZE)
|
|
AC_SUBST(MOZ_FRAMEPTR_FLAGS)
|
|
AC_SUBST(MOZ_OPTIMIZE_FLAGS)
|
|
AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
|
|
AC_SUBST(MOZ_ALLOW_HEAP_EXECUTE_FLAGS)
|
|
AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
|
|
AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable generation of debug symbols
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_STRING(debug-symbols,
|
|
[ --enable-debug-symbols[=DBG]
|
|
Enable debugging symbols (using compiler flags DBG)],
|
|
[ if test "$enableval" != "no"; then
|
|
MOZ_DEBUG_SYMBOLS=1
|
|
if test -n "$enableval" -a "$enableval" != "yes"; then
|
|
if test -z "$_MOZ_DEBUG_FLAGS_SET"; then
|
|
MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
|
|
else
|
|
AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
|
|
fi
|
|
fi
|
|
else
|
|
MOZ_DEBUG_SYMBOLS=
|
|
fi ],
|
|
MOZ_DEBUG_SYMBOLS=1)
|
|
|
|
if test -n "$MOZ_DEBUG" -o -n "$MOZ_DEBUG_SYMBOLS"; then
|
|
AC_DEFINE(MOZ_DEBUG_SYMBOLS)
|
|
export MOZ_DEBUG_SYMBOLS
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Enable any treating of compile warnings as errors
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(warnings-as-errors,
|
|
[ --enable-warnings-as-errors
|
|
Enable treating of warnings as errors],
|
|
MOZ_ENABLE_WARNINGS_AS_ERRORS=1,
|
|
MOZ_ENABLE_WARNINGS_AS_ERRORS=)
|
|
if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
|
|
WARNINGS_AS_ERRORS=''
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Disable runtime logging checks
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(logging,
|
|
[ --disable-logging Disable logging facilities],
|
|
NS_DISABLE_LOGGING=1,
|
|
NS_DISABLE_LOGGING= )
|
|
if test "$NS_DISABLE_LOGGING"; then
|
|
AC_DEFINE(NS_DISABLE_LOGGING)
|
|
else
|
|
AC_DEFINE(MOZ_LOGGING)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = This will enable logging of addref, release, ctor, dtor.
|
|
dnl ========================================================
|
|
_ENABLE_LOGREFCNT=42
|
|
MOZ_ARG_ENABLE_BOOL(logrefcnt,
|
|
[ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
|
|
_ENABLE_LOGREFCNT=1,
|
|
_ENABLE_LOGREFCNT= )
|
|
if test "$_ENABLE_LOGREFCNT" = "1"; then
|
|
AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
|
|
elif test -z "$_ENABLE_LOGREFCNT"; then
|
|
AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl moz_dump_painting
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(dump-painting,
|
|
[ --enable-dump-painting Enable paint debugging.],
|
|
MOZ_DUMP_PAINTING=1,
|
|
MOZ_DUMP_PAINTING= )
|
|
if test -n "$MOZ_DUMP_PAINTING"; then
|
|
AC_DEFINE(MOZ_DUMP_PAINTING)
|
|
AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
|
|
fi
|
|
if test -n "$MOZ_DEBUG"; then
|
|
AC_DEFINE(MOZ_DUMP_PAINTING)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Enable trace malloc
|
|
dnl ========================================================
|
|
NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
|
|
MOZ_ARG_ENABLE_BOOL(trace-malloc,
|
|
[ --enable-trace-malloc Enable malloc tracing; also disables jemalloc],
|
|
NS_TRACE_MALLOC=1,
|
|
NS_TRACE_MALLOC= )
|
|
if test "$NS_TRACE_MALLOC"; then
|
|
# Please, Mr. Linker Man, don't take away our symbol names
|
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
|
|
USE_ELF_DYNSTR_GC=
|
|
AC_DEFINE(NS_TRACE_MALLOC)
|
|
fi
|
|
AC_SUBST(NS_TRACE_MALLOC)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable jemalloc
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(jemalloc,
|
|
[ --enable-jemalloc Replace memory allocator with jemalloc],
|
|
MOZ_MEMORY=1,
|
|
MOZ_MEMORY=)
|
|
|
|
if test "$NS_TRACE_MALLOC"; then
|
|
MOZ_MEMORY=
|
|
fi
|
|
if test "$MOZ_DMDV"; then
|
|
MOZ_MEMORY=
|
|
fi
|
|
|
|
if test "${OS_TARGET}" = "Android"; then
|
|
dnl On Android, we use WRAP_LDFLAGS to link everything to mozglue
|
|
:
|
|
elif test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin" -o "${OS_TARGET}" = "OS2"; then
|
|
dnl On Windows, OSX and OS2, we want to link all our binaries against mozglue
|
|
if test -z "$GNU_CC"; then
|
|
MOZ_GLUE_LDFLAGS='$(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
|
|
else
|
|
MOZ_GLUE_LDFLAGS='-L$(LIBXUL_DIST)/lib $(call EXPAND_LIBNAME,mozglue)'
|
|
fi
|
|
else
|
|
dnl On other Unix systems, we only want to link executables against mozglue
|
|
MOZ_GLUE_PROGRAM_LDFLAGS='$(MKSHLIB_FORCE_ALL) $(call EXPAND_LIBNAME_PATH,mozglue,$(LIBXUL_DIST)/lib)'
|
|
dnl On other Unix systems, where mozglue is a static library, jemalloc is
|
|
dnl separated for the SDK, so we need to add it here.
|
|
if test "$MOZ_MEMORY" = 1 -o \( "$LIBXUL_SDK" -a -f "$LIBXUL_SDK/lib/${LIB_PREFIX}memory.${LIB_SUFFIX}" \); then
|
|
MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(call EXPAND_LIBNAME_PATH,memory,$(LIBXUL_DIST)/lib)'
|
|
fi
|
|
MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS "'$(MKSHLIB_UNFORCE_ALL)'
|
|
if test -n "$GNU_CC"; then
|
|
dnl And we need mozglue symbols to be exported.
|
|
MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS -rdynamic"
|
|
fi
|
|
if test "$MOZ_LINKER" = 1; then
|
|
MOZ_GLUE_PROGRAM_LDFLAGS="$MOZ_GLUE_PROGRAM_LDFLAGS $ZLIB_LIBS"
|
|
fi
|
|
fi
|
|
|
|
if test -z "$MOZ_MEMORY"; then
|
|
if test -n "$MOZ_JEMALLOC"; then
|
|
MOZ_NATIVE_JEMALLOC=1
|
|
AC_CHECK_FUNCS(mallctl nallocm,,
|
|
[MOZ_NATIVE_JEMALLOC=
|
|
break])
|
|
if test -n "$MOZ_NATIVE_JEMALLOC"; then
|
|
MOZ_MEMORY=1
|
|
AC_DEFINE(MOZ_MEMORY)
|
|
AC_DEFINE(MOZ_JEMALLOC)
|
|
AC_DEFINE(MOZ_NATIVE_JEMALLOC)
|
|
fi
|
|
fi
|
|
case "${target}" in
|
|
*-mingw*)
|
|
if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
|
|
AC_MSG_WARN([When not building jemalloc, you need to set WIN32_REDIST_DIR to the path to the Visual C++ Redist (usually VCINSTALLDIR\redist\x86\Microsoft.VC80.CRT, for VC++ v8) if you intend to distribute your build.])
|
|
fi
|
|
;;
|
|
esac
|
|
else
|
|
dnl Don't try to run compiler tests on Windows
|
|
if test "$OS_ARCH" = "WINNT"; then
|
|
if test -z "$HAVE_64BIT_OS"; then
|
|
AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
|
|
else
|
|
AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
|
|
fi
|
|
else
|
|
AC_CHECK_SIZEOF([int *], [4])
|
|
case "${ac_cv_sizeof_int_p}" in
|
|
4)
|
|
AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
|
|
;;
|
|
8)
|
|
AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
|
|
;;
|
|
*)
|
|
AC_MSG_ERROR([Unexpected pointer size])
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
AC_DEFINE(MOZ_MEMORY)
|
|
if test -n "$MOZ_JEMALLOC"; then
|
|
AC_DEFINE(MOZ_JEMALLOC)
|
|
fi
|
|
if test "x$MOZ_DEBUG" = "x1"; then
|
|
AC_DEFINE(MOZ_MEMORY_DEBUG)
|
|
fi
|
|
dnl The generic feature tests that determine how to compute ncpus are long and
|
|
dnl complicated. Therefore, simply define special cpp variables for the
|
|
dnl platforms we have special knowledge of.
|
|
case "${target}" in
|
|
*-darwin*)
|
|
AC_DEFINE(MOZ_MEMORY_DARWIN)
|
|
;;
|
|
*-*freebsd*)
|
|
AC_DEFINE(MOZ_MEMORY_BSD)
|
|
;;
|
|
*-android*|*-linuxandroid*)
|
|
AC_DEFINE(MOZ_MEMORY_LINUX)
|
|
AC_DEFINE(MOZ_MEMORY_ANDROID)
|
|
if test -z "$gonkdir"; then
|
|
_WRAP_MALLOC=1
|
|
else
|
|
AC_DEFINE(MOZ_MEMORY_GONK)
|
|
fi
|
|
MOZ_GLUE_LDFLAGS=
|
|
;;
|
|
*-*linux*)
|
|
AC_DEFINE(MOZ_MEMORY_LINUX)
|
|
;;
|
|
*-netbsd*)
|
|
AC_DEFINE(MOZ_MEMORY_BSD)
|
|
;;
|
|
*-solaris*)
|
|
AC_DEFINE(MOZ_MEMORY_SOLARIS)
|
|
;;
|
|
*-mingw*)
|
|
AC_DEFINE(MOZ_MEMORY_WINDOWS)
|
|
if test -z "$MOZ_DEBUG"; then
|
|
WIN32_CRT_LIBS="msvcrt.lib msvcprt.lib"
|
|
else
|
|
WIN32_CRT_LIBS="msvcrtd.lib msvcprtd.lib"
|
|
fi
|
|
dnl Look for a broken crtdll.obj
|
|
WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj`
|
|
lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH
|
|
if grep -q '__imp__\{0,1\}free' crtdll.obj; then
|
|
MOZ_GLUE_LDFLAGS='-LIBPATH:$(DIST)/lib -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt'
|
|
dnl Also pass this to NSPR/NSS
|
|
DLLFLAGS="$DLLFLAGS $MOZ_GLUE_LDFLAGS"
|
|
else
|
|
DLLFLAGS="$DLLFLAGS -LIBPATH:\$(DIST)/lib -DEFAULTLIB:mozglue"
|
|
fi
|
|
rm crtdll.obj
|
|
|
|
export DLLFLAGS
|
|
;;
|
|
*)
|
|
AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
|
|
;;
|
|
esac
|
|
fi # MOZ_MEMORY
|
|
AC_SUBST(MOZ_MEMORY)
|
|
AC_SUBST(MOZ_JEMALLOC)
|
|
AC_SUBST(MOZ_NATIVE_JEMALLOC)
|
|
AC_SUBST(MOZ_GLUE_LDFLAGS)
|
|
AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS)
|
|
AC_SUBST(WIN32_CRT_LIBS)
|
|
dnl Need to set this for make because NSS doesn't have configure
|
|
AC_SUBST(DLLFLAGS)
|
|
|
|
dnl We need to wrap dlopen and related functions on Android because we use
|
|
dnl our own linker.
|
|
if test "$OS_TARGET" = Android; then
|
|
WRAP_LDFLAGS="${WRAP_LDFLAGS} -L$_objdir/dist/lib -lmozglue"
|
|
if test -n "$MOZ_OLD_LINKER"; then
|
|
WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=dlopen,--wrap=dlclose,--wrap=dlerror,--wrap=dlsym,--wrap=dladdr"
|
|
fi
|
|
WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=getaddrinfo,--wrap=freeaddrinfo,--wrap=gai_strerror"
|
|
WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl--wrap=PR_GetEnv,--wrap=PR_SetEnv"
|
|
if test -z "$gonkdir"; then
|
|
WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=fork,--wrap=pthread_atfork,--wrap=raise"
|
|
fi
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Use malloc wrapper lib
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(wrap-malloc,
|
|
[ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
|
|
_WRAP_MALLOC=1,
|
|
_WRAP_MALLOC= )
|
|
|
|
if test -n "$_WRAP_MALLOC"; then
|
|
if test -n "$GNU_CC"; then
|
|
WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=malloc,--wrap=calloc,--wrap=valloc,--wrap=free,--wrap=realloc,--wrap=memalign"
|
|
WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=__builtin_new,--wrap=__builtin_vec_new,--wrap=__builtin_delete,--wrap=__builtin_vec_delete"
|
|
WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=strdup,--wrap=strndup"
|
|
WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=posix_memalign,--wrap=malloc_usable_size"
|
|
dnl Wrap operator new and operator delete on Android.
|
|
if test "$OS_TARGET" = "Android"; then
|
|
WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_Znwj,--wrap=_Znaj,--wrap=_ZdlPv,--wrap=_ZdaPv"
|
|
dnl Wrap the nothrow variants too.
|
|
WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=_ZnwjRKSt9nothrow_t,--wrap=_ZnajRKSt9nothrow_t,--wrap=_ZdlPvRKSt9nothrow_t,--wrap=_ZdaPvRKSt9nothrow_t"
|
|
fi
|
|
else
|
|
AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains])
|
|
fi
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Location of malloc wrapper lib
|
|
dnl ========================================================
|
|
MOZ_ARG_WITH_STRING(wrap-malloc,
|
|
[ --with-wrap-malloc=DIR Location of malloc wrapper library],
|
|
WRAP_LDFLAGS="${WRAP_LDFLAGS} $withval")
|
|
|
|
dnl ========================================================
|
|
dnl = Use JS Call tracing
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(trace-jscalls,
|
|
[ --enable-trace-jscalls Enable JS call enter/exit callback (default=no)],
|
|
MOZ_TRACE_JSCALLS=1,
|
|
MOZ_TRACE_JSCALLS= )
|
|
if test -n "$MOZ_TRACE_JSCALLS"; then
|
|
AC_DEFINE(MOZ_TRACE_JSCALLS)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Use incremental GC
|
|
dnl ========================================================
|
|
JSGC_INCREMENTAL=1
|
|
MOZ_ARG_DISABLE_BOOL(gcincremental,
|
|
[ --disable-gcincremental Disable incremental GC],
|
|
JSGC_INCREMENTAL= )
|
|
if test -n "$JSGC_INCREMENTAL"; then
|
|
AC_DEFINE(JSGC_INCREMENTAL)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl ETW - Event Tracing for Windows
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(ETW,
|
|
[ --enable-ETW Enable ETW (Event Tracing for Windows) event reporting],
|
|
MOZ_ETW=1,
|
|
MOZ_ETW= )
|
|
if test -n "$MOZ_ETW"; then
|
|
AC_DEFINE(MOZ_ETW)
|
|
fi
|
|
|
|
if test -n "$MOZ_ETW"; then
|
|
if test -z "$MOZ_WINSDK_TARGETVER"; then
|
|
AC_MSG_ERROR([--enable-ETW is only valid on Windows])
|
|
fi
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Zealous JavaScript GC
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(gczeal,
|
|
[ --enable-gczeal Enable zealous JavaScript GCing],
|
|
JS_GC_ZEAL=1,
|
|
JS_GC_ZEAL= )
|
|
if test -n "$JS_GC_ZEAL"; then
|
|
AC_DEFINE(JS_GC_ZEAL)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl JS opt-mode assertions and minidump instrumentation
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(js-diagnostics,
|
|
[ --enable-js-diagnostics
|
|
Enable JS diagnostic assertions and breakpad data],
|
|
JS_CRASH_DIAGNOSTICS=1,
|
|
JS_CRASH_DIAGNOSTICS= )
|
|
if test -n "$JS_CRASH_DIAGNOSTICS"; then
|
|
AC_DEFINE(JS_CRASH_DIAGNOSTICS)
|
|
fi
|
|
|
|
MOZ_CHECK_CCACHE
|
|
|
|
dnl ========================================================
|
|
dnl = Enable static checking using gcc-dehydra
|
|
dnl ========================================================
|
|
|
|
MOZ_ARG_WITH_STRING(static-checking,
|
|
[ --with-static-checking=path/to/gcc_dehydra.so
|
|
Enable static checking of code using GCC-dehydra],
|
|
DEHYDRA_PATH=$withval,
|
|
DEHYDRA_PATH= )
|
|
|
|
if test -n "$DEHYDRA_PATH"; then
|
|
if test ! -f "$DEHYDRA_PATH"; then
|
|
AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
|
|
fi
|
|
AC_DEFINE(NS_STATIC_CHECKING)
|
|
fi
|
|
AC_SUBST(DEHYDRA_PATH)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable stripping of libs & executables
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(strip,
|
|
[ --enable-strip Enable stripping of libs & executables ],
|
|
ENABLE_STRIP=1,
|
|
ENABLE_STRIP= )
|
|
|
|
dnl ========================================================
|
|
dnl = Enable stripping of libs & executables when packaging
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(install-strip,
|
|
[ --enable-install-strip Enable stripping of libs & executables when packaging ],
|
|
PKG_SKIP_STRIP= ,
|
|
PKG_SKIP_STRIP=1)
|
|
|
|
dnl ========================================================
|
|
dnl = --enable-elf-dynstr-gc
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
|
|
[ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
|
|
USE_ELF_DYNSTR_GC=1,
|
|
USE_ELF_DYNSTR_GC= )
|
|
|
|
dnl ========================================================
|
|
dnl = --disable-elf-hack
|
|
dnl ========================================================
|
|
|
|
USE_ELF_HACK=1
|
|
MOZ_ARG_DISABLE_BOOL(elf-hack,
|
|
[ --disable-elf-hack Disable elf hacks],
|
|
USE_ELF_HACK=,
|
|
USE_ELF_HACK=1)
|
|
|
|
# Disable elf hack for profiling because the built in profiler
|
|
# doesn't read the segments properly with elf hack. This is
|
|
# temporary and should be fixed soon in the profiler.
|
|
if test "$MOZ_PROFILING" = 1; then
|
|
USE_ELF_HACK=
|
|
fi
|
|
|
|
# Only enable elfhack where supported
|
|
if test "$USE_ELF_HACK" = 1; then
|
|
case "${HOST_OS_ARCH},${OS_ARCH}" in
|
|
Linux,Linux)
|
|
case "${CPU_ARCH}" in
|
|
arm | x86 | x86_64)
|
|
USE_ELF_HACK=1
|
|
;;
|
|
*)
|
|
USE_ELF_HACK=
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
USE_ELF_HACK=
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
if test "$USE_ELF_HACK" = 1; then
|
|
dnl PT_GNU_RELRO segment makes the dynamic linker set a read-only flag on
|
|
dnl memory addresses it maps to. The result is that by the time elfhack
|
|
dnl kicks in, it is not possible to apply relocations because of that,
|
|
dnl thus elfhack effectively skips relocations inside the PT_GNU_RELRO
|
|
dnl segment. It makes elfhack mostly useless, so considering the problems
|
|
dnl we have we PT_GNU_RELRO (e.g. bug 664366), and until elfhack can deal
|
|
dnl with PT_GNU_RELRO segments, it's just simpler to disable elfhack when
|
|
dnl the linker creates PT_GNU_RELRO segments.
|
|
AC_CACHE_CHECK([whether linker creates PT_GNU_RELRO segments],
|
|
LINK_WITH_PT_GNU_RELRO,
|
|
[echo "int main() {return 0;}" > conftest.${ac_ext}
|
|
if AC_TRY_COMMAND(${CC-cc} -o conftest${ac_exeext} $LDFLAGS conftest.${ac_ext} $LIBS 1>&2) &&
|
|
test -s conftest${ac_exeext}; then
|
|
if ${TOOLCHAIN_PREFIX}readelf -l conftest${ac_exeext} | grep GNU_RELRO > /dev/null; then
|
|
LINK_WITH_PT_GNU_RELRO=yes
|
|
else
|
|
LINK_WITH_PT_GNU_RELRO=no
|
|
fi
|
|
else
|
|
dnl We really don't expect to get here, but just in case
|
|
AC_ERROR([couldn't compile a simple C file])
|
|
fi
|
|
rm -rf conftest*])
|
|
if test "$LINK_WITH_PT_GNU_RELRO" = yes; then
|
|
AC_MSG_WARN([Disabling elfhack])
|
|
USE_ELF_HACK=
|
|
fi
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = libstdc++ compatibility hacks
|
|
dnl ========================================================
|
|
|
|
STDCXX_COMPAT=
|
|
MOZ_ARG_ENABLE_BOOL(stdcxx-compat,
|
|
[ --enable-stdcxx-compat Enable compatibility with older libstdc++],
|
|
STDCXX_COMPAT=1)
|
|
|
|
AC_SUBST(STDCXX_COMPAT)
|
|
|
|
if test -n "$STDCXX_COMPAT"; then
|
|
eval $(CXX="$CXX" $PYTHON $_topsrcdir/build/autoconf/libstdcxx.py)
|
|
AC_SUBST(MOZ_LIBSTDCXX_TARGET_VERSION)
|
|
AC_SUBST(MOZ_LIBSTDCXX_HOST_VERSION)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Profiling and Instrumenting
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(Profiling and Instrumenting)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable runtime visual profiling logger
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(visual-event-tracer,
|
|
[ --enable-visual-event-tracer Enable visual event tracer instrumentation],
|
|
MOZ_VISUAL_EVENT_TRACER=1,
|
|
MOZ_VISUAL_EVENT_TRACER=)
|
|
if test -n "$MOZ_VISUAL_EVENT_TRACER"; then
|
|
AC_DEFINE(MOZ_VISUAL_EVENT_TRACER)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Turn on reflow counting
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(reflow-perf,
|
|
[ --enable-reflow-perf Enable reflow performance tracing],
|
|
MOZ_REFLOW_PERF=1,
|
|
MOZ_REFLOW_PERF= )
|
|
if test -n "$MOZ_REFLOW_PERF"; then
|
|
AC_DEFINE(MOZ_REFLOW_PERF)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Enable code size metrics.
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(codesighs,
|
|
[ --enable-codesighs Enable code size analysis tools],
|
|
_ENABLE_CODESIGHS=1,
|
|
_ENABLE_CODESIGHS= )
|
|
if test -n "$_ENABLE_CODESIGHS"; then
|
|
if test -d $srcdir/tools/codesighs; then
|
|
MOZ_MAPINFO=1
|
|
else
|
|
AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
|
|
fi
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Enable Radio Interface for B2G (Gonk usually)
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(b2g-ril,
|
|
[ --enable-b2g-ril Set compile flags necessary for testing B2G Radio Interface Layer via network sockets ],
|
|
MOZ_B2G_RIL=1,
|
|
MOZ_B2G_RIL= )
|
|
if test -n "$MOZ_B2G_RIL"; then
|
|
AC_DEFINE(MOZ_B2G_RIL)
|
|
fi
|
|
AC_SUBST(MOZ_B2G_RIL)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable Radio FM for B2G (Gonk usually)
|
|
dnl ========================================================
|
|
if test -n "$MOZ_B2G_FM"; then
|
|
AC_DEFINE(MOZ_B2G_FM)
|
|
fi
|
|
AC_SUBST(MOZ_B2G_FM)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable Bluetooth Interface for B2G (Gonk usually)
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(b2g-bt,
|
|
[ --enable-b2g-bt Set compile flags necessary for compiling Bluetooth API for B2G ],
|
|
MOZ_B2G_BT=1,
|
|
MOZ_B2G_BT= )
|
|
if test -n "$MOZ_B2G_BT"; then
|
|
AC_DEFINE(MOZ_B2G_BT)
|
|
fi
|
|
AC_SUBST(MOZ_B2G_BT)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable Support for System Messages API
|
|
dnl ========================================================
|
|
if test -n "$MOZ_SYS_MSG"; then
|
|
AC_DEFINE(MOZ_SYS_MSG)
|
|
fi
|
|
AC_SUBST(MOZ_SYS_MSG)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable Support for Time Manager API
|
|
dnl ========================================================
|
|
if test -n "$MOZ_TIME_MANAGER"; then
|
|
AC_DEFINE(MOZ_TIME_MANAGER)
|
|
fi
|
|
AC_SUBST(MOZ_TIME_MANAGER)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable Camera Interface for B2G (Gonk usually)
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(b2g-camera,
|
|
[ --enable-b2g-camera Set compile flags necessary for compiling camera API for B2G ],
|
|
MOZ_B2G_CAMERA=1,
|
|
MOZ_B2G_CAMERA= )
|
|
if test -n "$MOZ_B2G_CAMERA"; then
|
|
AC_DEFINE(MOZ_B2G_CAMERA)
|
|
fi
|
|
AC_SUBST(MOZ_B2G_CAMERA)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable Support for Payment API
|
|
dnl ========================================================
|
|
if test -n "$MOZ_PAY"; then
|
|
AC_DEFINE(MOZ_PAY)
|
|
fi
|
|
AC_SUBST(MOZ_PAY)
|
|
|
|
dnl ========================================================
|
|
dnl = Support for demangling undefined symbols
|
|
dnl ========================================================
|
|
if test -z "$SKIP_LIBRARY_CHECKS"; then
|
|
AC_LANG_SAVE
|
|
AC_LANG_CPLUSPLUS
|
|
AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
|
|
AC_LANG_RESTORE
|
|
fi
|
|
|
|
# Demangle only for debug or trace-malloc builds
|
|
MOZ_DEMANGLE_SYMBOLS=
|
|
if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
|
|
MOZ_DEMANGLE_SYMBOLS=1
|
|
AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
|
|
fi
|
|
AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
|
|
|
|
dnl ========================================================
|
|
dnl = Support for gcc stack unwinding (from gcc 3.3)
|
|
dnl ========================================================
|
|
if test -z "$SKIP_LIBRARY_CHECKS"; then
|
|
MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl JIT observers
|
|
dnl ========================================================
|
|
|
|
MOZ_ARG_WITH_STRING(jitreport-granularity,
|
|
[ --jitreport-granularity=N
|
|
Default granularity at which to report JIT code
|
|
to external tools
|
|
0 - no info
|
|
1 - code ranges for whole functions only
|
|
2 - per-line information
|
|
3 - per-op information],
|
|
JITREPORT_GRANULARITY=$withval,
|
|
JITREPORT_GRANULARITY=3)
|
|
|
|
AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY)
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Misc. Options
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(Misc. Options)
|
|
|
|
dnl ========================================================
|
|
dnl update xterm title
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(xterm-updates,
|
|
[ --enable-xterm-updates Update XTERM titles with current command.],
|
|
MOZ_UPDATE_XTERM=1,
|
|
MOZ_UPDATE_XTERM= )
|
|
|
|
dnl =========================================================
|
|
dnl = Chrome format
|
|
dnl =========================================================
|
|
MOZ_ARG_ENABLE_STRING([chrome-format],
|
|
[ --enable-chrome-format=jar|flat|both|symlink|omni
|
|
Select FORMAT of chrome files (default=jar)],
|
|
MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
|
|
|
|
if test -z "$MOZ_CHROME_FILE_FORMAT"; then
|
|
MOZ_CHROME_FILE_FORMAT=jar
|
|
fi
|
|
|
|
if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
|
|
test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
|
|
test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
|
|
test "$MOZ_CHROME_FILE_FORMAT" != "both" &&
|
|
test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
|
|
AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, symlink, or omni])
|
|
fi
|
|
|
|
dnl =========================================================
|
|
dnl Omnijar packaging (bug 552121)
|
|
dnl =========================================================
|
|
dnl Omnijar packaging is compatible with flat packaging.
|
|
dnl In unpackaged builds, omnijar looks for files as if
|
|
dnl things were flat packaged. After packaging, all files
|
|
dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
|
|
dnl is set to flat since putting files into jars is only
|
|
dnl done during packaging with omnijar.
|
|
if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
|
|
MOZ_OMNIJAR=1
|
|
AC_DEFINE(MOZ_OMNIJAR)
|
|
if test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "OS2" -o "$MOZ_WIDGET_TOOLKIT" = "android"; then
|
|
MOZ_CHROME_FILE_FORMAT=flat
|
|
else
|
|
MOZ_CHROME_FILE_FORMAT=symlink
|
|
fi
|
|
elif test "$MOZ_CHROME_FILE_FORMAT" = "jar"; then
|
|
AC_DEFINE(MOZ_CHROME_FILE_FORMAT_JAR)
|
|
fi
|
|
|
|
OMNIJAR_NAME=omni.ja
|
|
AC_SUBST(OMNIJAR_NAME)
|
|
AC_SUBST(MOZ_OMNIJAR)
|
|
|
|
dnl ========================================================
|
|
dnl = Define default location for MOZILLA_FIVE_HOME
|
|
dnl ========================================================
|
|
MOZ_ARG_WITH_STRING(default-mozilla-five-home,
|
|
[ --with-default-mozilla-five-home
|
|
Set the default value for MOZILLA_FIVE_HOME],
|
|
[ val=`echo $withval`
|
|
AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
|
|
|
|
dnl ========================================================
|
|
dnl = Location of the mozilla user directory (default is ~/.mozilla).],
|
|
dnl ========================================================
|
|
MOZ_ARG_WITH_STRING(user-appdir,
|
|
[ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
|
|
[ val=`echo $withval`
|
|
if echo "$val" | grep "\/" >/dev/null; then
|
|
AC_MSG_ERROR("Homedir must be single relative path.")
|
|
else
|
|
MOZ_USER_DIR="$val"
|
|
fi])
|
|
|
|
AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
|
|
|
|
dnl ========================================================
|
|
dnl = Doxygen configuration
|
|
dnl ========================================================
|
|
dnl Use commas to specify multiple dirs to this arg
|
|
MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
|
|
MOZ_ARG_WITH_STRING(doc-input-dirs,
|
|
[ --with-doc-input-dirs=DIRS
|
|
Header/idl dirs to create docs from],
|
|
[ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
|
|
AC_SUBST(MOZ_DOC_INPUT_DIRS)
|
|
|
|
dnl Use commas to specify multiple dirs to this arg
|
|
MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
|
|
MOZ_ARG_WITH_STRING(doc-include-dirs,
|
|
[ --with-doc-include-dirs=DIRS
|
|
Include dirs to preprocess doc headers],
|
|
[ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
|
|
AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
|
|
|
|
MOZ_DOC_OUTPUT_DIR='./dist/docs'
|
|
MOZ_ARG_WITH_STRING(doc-output-dir,
|
|
[ --with-doc-output-dir=DIR
|
|
Dir to generate docs into],
|
|
[ MOZ_DOC_OUTPUT_DIR=$withval ] )
|
|
AC_SUBST(MOZ_DOC_OUTPUT_DIR)
|
|
|
|
if test -z "$SKIP_COMPILER_CHECKS"; then
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Compiler Options
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(Compiler Options)
|
|
|
|
dnl ========================================================
|
|
dnl Check for gcc -pipe support
|
|
dnl ========================================================
|
|
AC_MSG_CHECKING([for -pipe support])
|
|
if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
|
|
dnl Any gcc that supports firefox supports -pipe.
|
|
CFLAGS="$CFLAGS -pipe"
|
|
CXXFLAGS="$CXXFLAGS -pipe"
|
|
AC_MSG_RESULT([yes])
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Profile guided optimization (gcc checks)
|
|
dnl ========================================================
|
|
dnl Test for profiling options
|
|
dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
|
|
|
|
_SAVE_CFLAGS="$CFLAGS"
|
|
CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
|
|
|
|
AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
|
|
AC_TRY_COMPILE([], [return 0;],
|
|
[ PROFILE_GEN_CFLAGS="-fprofile-generate"
|
|
result="yes" ], result="no")
|
|
AC_MSG_RESULT([$result])
|
|
|
|
if test $result = "yes"; then
|
|
PROFILE_GEN_LDFLAGS="-fprofile-generate"
|
|
PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch"
|
|
PROFILE_USE_LDFLAGS="-fprofile-use"
|
|
fi
|
|
|
|
CFLAGS="$_SAVE_CFLAGS"
|
|
|
|
if test -n "$INTEL_CC"; then
|
|
PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
|
|
PROFILE_GEN_LDFLAGS=
|
|
PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
|
|
PROFILE_USE_LDFLAGS=
|
|
fi
|
|
|
|
dnl Sun Studio on Solaris
|
|
if test "$SOLARIS_SUNPRO_CC"; then
|
|
PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
|
|
PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
|
|
PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
|
|
PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
|
|
fi
|
|
|
|
AC_SUBST(PROFILE_GEN_CFLAGS)
|
|
AC_SUBST(PROFILE_GEN_LDFLAGS)
|
|
AC_SUBST(PROFILE_USE_CFLAGS)
|
|
AC_SUBST(PROFILE_USE_LDFLAGS)
|
|
|
|
AC_LANG_CPLUSPLUS
|
|
|
|
dnl ========================================================
|
|
dnl Test for -pedantic bustage
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(pedantic,
|
|
[ --disable-pedantic Issue all warnings demanded by strict ANSI C ],
|
|
_PEDANTIC= )
|
|
if test "$_PEDANTIC"; then
|
|
_SAVE_CXXFLAGS=$CXXFLAGS
|
|
CXXFLAGS="$CXXFLAGS -pedantic ${_WARNINGS_CXXFLAGS} -Wno-long-long"
|
|
AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
|
|
AC_TRY_COMPILE([$configure_static_assert_macros],
|
|
[CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
|
|
result="no", result="yes" )
|
|
AC_MSG_RESULT([$result])
|
|
CXXFLAGS="$_SAVE_CXXFLAGS"
|
|
|
|
case "$result" in
|
|
no)
|
|
_WARNINGS_CFLAGS="-pedantic ${_WARNINGS_CFLAGS} -Wno-long-long"
|
|
_WARNINGS_CXXFLAGS="-pedantic ${_WARNINGS_CXXFLAGS} -Wno-long-long"
|
|
;;
|
|
yes)
|
|
AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic. Reconfigure using --disable-pedantic. ])
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
|
|
dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
|
|
dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
|
|
dnl ========================================================
|
|
_SAVE_CXXFLAGS=$CXXFLAGS
|
|
CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
|
|
AC_CACHE_CHECK(for correct overload resolution with const and templates,
|
|
ac_nscap_nonconst_opeq_bug,
|
|
[AC_TRY_COMPILE([
|
|
template <class T>
|
|
class Pointer
|
|
{
|
|
public:
|
|
T* myPtr;
|
|
};
|
|
|
|
template <class T, class U>
|
|
int operator==(const Pointer<T>& rhs, U* lhs)
|
|
{
|
|
return rhs.myPtr == lhs;
|
|
}
|
|
|
|
template <class T, class U>
|
|
int operator==(const Pointer<T>& rhs, const U* lhs)
|
|
{
|
|
return rhs.myPtr == lhs;
|
|
}
|
|
],
|
|
[
|
|
Pointer<int> foo;
|
|
const int* bar;
|
|
return foo == bar;
|
|
],
|
|
ac_nscap_nonconst_opeq_bug="no",
|
|
ac_nscap_nonconst_opeq_bug="yes")])
|
|
CXXFLAGS="$_SAVE_CXXFLAGS"
|
|
|
|
if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
|
|
AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
|
|
fi
|
|
fi # ! SKIP_COMPILER_CHECKS
|
|
|
|
AC_DEFINE(CPP_THROW_NEW, [throw()])
|
|
AC_LANG_C
|
|
|
|
if test "$COMPILE_ENVIRONMENT"; then
|
|
MOZ_EXPAND_LIBS
|
|
fi # COMPILE_ENVIRONMENT
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Build depencency options
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(Build dependencies)
|
|
|
|
if test "$GNU_CC" -a "$GNU_CXX"; then
|
|
_DEPEND_CFLAGS='$(filter-out %/.pp,-MD -MF $(MDDEPDIR)/$(@F).pp)'
|
|
dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
|
|
elif test "$SOLARIS_SUNPRO_CC"; then
|
|
_DEPEND_CFLAGS=
|
|
else
|
|
dnl Don't override this for MSVC
|
|
if test -z "$_WIN32_MSVC"; then
|
|
_USE_CPP_INCLUDE_FLAG=
|
|
_DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
|
|
_DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
|
|
else
|
|
echo '#include <stdio.h>' > dummy-hello.c
|
|
changequote(,)
|
|
CL_INCLUDES_PREFIX=`${CC} -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/^\([^:]*:[^:]*:\).*stdio.h$/\1/p'`
|
|
changequote([,])
|
|
if test -z "$CL_INCLUDES_PREFIX"; then
|
|
AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
|
|
fi
|
|
AC_SUBST(CL_INCLUDES_PREFIX)
|
|
rm -f dummy-hello.c
|
|
fi
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Static Build Options
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(Static build options)
|
|
|
|
# split JS out by default to avoid VS2005 PGO crash (bug 591836).
|
|
if test "$OS_ARCH" = "WINNT" -a "$CPU_ARCH" != "x86_64" ; then
|
|
ENABLE_SHARED_JS=1
|
|
fi
|
|
|
|
MOZ_ARG_ENABLE_BOOL(shared-js,
|
|
[ --enable-shared-js
|
|
Create a shared JavaScript library.],
|
|
ENABLE_SHARED_JS=1,
|
|
ENABLE_SHARED_JS=)
|
|
|
|
if test -n "$ENABLE_SHARED_JS"; then
|
|
JS_SHARED_LIBRARY=1
|
|
MOZ_JS_LIBS="$MOZ_JS_SHARED_LIBS"
|
|
else
|
|
MOZ_JS_LIBS="$MOZ_JS_STATIC_LIBS"
|
|
AC_DEFINE(MOZ_STATIC_JS)
|
|
fi
|
|
AC_SUBST(JS_SHARED_LIBRARY)
|
|
|
|
AC_SUBST(LIBXUL_LIBS)
|
|
XPCOM_LIBS="$LIBXUL_LIBS"
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Standalone module options
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
|
|
|
|
dnl Check for GLib.
|
|
dnl ========================================================
|
|
|
|
if test -z "$SKIP_PATH_CHECKS"; then
|
|
if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
|
|
if test "$MOZ_ENABLE_GTK2" -o "$USE_ELF_DYNSTR_GC" ; then
|
|
PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if test -z "${GLIB_GMODULE_LIBS}" \
|
|
-a -n "${GLIB_CONFIG}"\
|
|
-a "${GLIB_CONFIG}" != no\
|
|
; then
|
|
GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
|
|
fi
|
|
|
|
AC_SUBST(GLIB_CFLAGS)
|
|
AC_SUBST(GLIB_LIBS)
|
|
AC_SUBST(GLIB_GMODULE_LIBS)
|
|
|
|
dnl ========================================================
|
|
dnl Graphics checks.
|
|
dnl ========================================================
|
|
|
|
if test "${OS_TARGET}" = "WINNT" -o "${OS_ARCH}" = "Darwin" -o "${MOZ_WIDGET_TOOLKIT}" = "android" -o "${MOZ_WIDGET_TOOLKIT}" = "gtk2"; then
|
|
MOZ_ENABLE_SKIA=1
|
|
else
|
|
MOZ_ENABLE_SKIA=
|
|
fi
|
|
|
|
MOZ_ARG_ENABLE_BOOL(skia,
|
|
[ --enable-skia Enable use of Skia],
|
|
MOZ_ENABLE_SKIA=1,
|
|
MOZ_ENABLE_SKIA=)
|
|
|
|
if test "$USE_FC_FREETYPE"; then
|
|
if test "$COMPILE_ENVIRONMENT"; then
|
|
dnl ========================================================
|
|
dnl = Check for freetype2 and its functionality
|
|
dnl ========================================================
|
|
PKG_CHECK_MODULES(FT2, freetype2 >= 6.1.0, _HAVE_FREETYPE2=1, _HAVE_FREETYPE2=)
|
|
|
|
if test "$_HAVE_FREETYPE2"; then
|
|
_SAVE_LIBS="$LIBS"
|
|
_SAVE_CFLAGS="$CFLAGS"
|
|
LIBS="$LIBS $FT2_LIBS"
|
|
CFLAGS="$CFLAGS $FT2_CFLAGS"
|
|
|
|
AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
|
|
ac_cv_member_FT_Bitmap_Size_y_ppem,
|
|
[AC_TRY_COMPILE([#include <ft2build.h>
|
|
#include FT_FREETYPE_H],
|
|
[FT_Bitmap_Size s;
|
|
if (sizeof s.y_ppem) return 0;
|
|
return 1],
|
|
ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
|
|
ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
|
|
if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
|
|
HAVE_FT_BITMAP_SIZE_Y_PPEM=1
|
|
else
|
|
HAVE_FT_BITMAP_SIZE_Y_PPEM=0
|
|
fi
|
|
AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
|
|
$HAVE_FT_BITMAP_SIZE_Y_PPEM,
|
|
[FT_Bitmap_Size structure includes y_ppem field])
|
|
|
|
AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
|
|
|
|
LIBS="$_SAVE_LIBS"
|
|
CFLAGS="$_SAVE_CFLAGS"
|
|
fi
|
|
|
|
_SAVE_CPPFLAGS="$CPPFLAGS"
|
|
CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
|
|
MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
|
|
[AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
|
|
CPPFLAGS="$_SAVE_CPPFLAGS"
|
|
else
|
|
AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
|
|
fi
|
|
|
|
PKG_CHECK_MODULES(_FONTCONFIG, fontconfig,
|
|
[
|
|
if test "$MOZ_PANGO"; then
|
|
MOZ_PANGO_CFLAGS="$MOZ_PANGO_CFLAGS $_FONTCONFIG_CFLAGS"
|
|
MOZ_PANGO_LIBS="$MOZ_PANGO_LIBS $_FONTCONFIG_LIBS"
|
|
else
|
|
FT2_CFLAGS="$FT2_CFLAGS $_FONTCONFIG_CFLAGS"
|
|
FT2_LIBS="$FT2_LIBS $_FONTCONFIG_LIBS"
|
|
fi
|
|
])
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Check for pixman and cairo
|
|
dnl ========================================================
|
|
|
|
MOZ_TREE_CAIRO=1
|
|
MOZ_ARG_ENABLE_BOOL(system-cairo,
|
|
[ --enable-system-cairo Use system cairo (located with pkgconfig)],
|
|
MOZ_TREE_CAIRO=,
|
|
MOZ_TREE_CAIRO=1 )
|
|
|
|
MOZ_TREE_PIXMAN=1
|
|
MOZ_ARG_ENABLE_BOOL(system-pixman,
|
|
[ --enable-system-pixman Use system pixman (located with pkgconfig)],
|
|
MOZ_TREE_PIXMAN=,
|
|
MOZ_TREE_PIXMAN=force,
|
|
MOZ_TREE_PIXMAN=1 )
|
|
|
|
# System cairo depends on system pixman
|
|
if test "$MOZ_TREE_PIXMAN" = "force"; then
|
|
if test -z "$MOZ_TREE_CAIRO"; then
|
|
AC_MSG_ERROR([--disable-system-pixman is incompatible with --enable-system-cairo.])
|
|
else
|
|
MOZ_TREE_PIXMAN=1
|
|
fi
|
|
elif test -z "$MOZ_TREE_CAIRO"; then
|
|
MOZ_TREE_PIXMAN=
|
|
fi
|
|
|
|
if test "$MOZ_TREE_PIXMAN"; then
|
|
AC_DEFINE(MOZ_TREE_PIXMAN)
|
|
MOZ_PIXMAN_CFLAGS=""
|
|
MOZ_PIXMAN_LIBS='$(call EXPAND_LIBNAME_PATH,mozlibpixman,$(DEPTH)/gfx/cairo/libpixman/src)'
|
|
else
|
|
PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.19.2)
|
|
MOZ_PIXMAN_CFLAGS="$PIXMAN_CFLAGS"
|
|
MOZ_PIXMAN_LIBS="$PIXMAN_LIBS"
|
|
fi
|
|
AC_SUBST(MOZ_PIXMAN_CFLAGS)
|
|
AC_SUBST(MOZ_PIXMAN_LIBS)
|
|
|
|
# Check for headers defining standard int types.
|
|
MOZ_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
|
|
|
|
if test "$MOZ_TREE_CAIRO"; then
|
|
MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
|
|
AC_DEFINE(MOZ_TREE_CAIRO)
|
|
|
|
# For now we assume that we will have a uint64_t available through
|
|
# one of the above headers or mozstdint.h.
|
|
AC_DEFINE(HAVE_UINT64_T)
|
|
|
|
# Define macros for cairo-features.h
|
|
TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
|
|
if test "$MOZ_X11"; then
|
|
XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
|
|
XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
|
|
PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
|
|
FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
|
|
MOZ_ENABLE_CAIRO_FT=1
|
|
CAIRO_FT_CFLAGS="$FT2_CFLAGS"
|
|
fi
|
|
case "$MOZ_WIDGET_TOOLKIT" in
|
|
qt)
|
|
QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
|
|
;;
|
|
cocoa | uikit)
|
|
QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
|
|
QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
|
|
QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
|
|
;;
|
|
windows)
|
|
WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
|
|
WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
|
|
if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
|
|
WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
|
|
WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
|
|
MOZ_ENABLE_D2D_SURFACE=1
|
|
MOZ_ENABLE_DWRITE_FONT=1
|
|
else
|
|
WIN32_DWRITE_FONT_FEATURE=
|
|
WIN32_D2D_SURFACE_FEATURE=
|
|
fi
|
|
|
|
MOZ_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
|
|
|
|
dnl D3D10 Layers depend on D2D Surfaces.
|
|
if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
|
|
MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
|
|
fi
|
|
;;
|
|
os2)
|
|
OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
|
|
FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
|
|
MOZ_ENABLE_CAIRO_FT=1
|
|
CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
|
|
CAIRO_FT_OSLIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
|
|
CAIRO_FT_LIBS=""
|
|
;;
|
|
esac
|
|
if test "$USE_FC_FREETYPE"; then
|
|
FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
|
|
fi
|
|
AC_SUBST(MOZ_ENABLE_CAIRO_FT)
|
|
AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
|
|
AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
|
|
AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
|
|
AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
|
|
AC_SUBST(CAIRO_FT_CFLAGS)
|
|
|
|
AC_SUBST(PS_SURFACE_FEATURE)
|
|
AC_SUBST(PDF_SURFACE_FEATURE)
|
|
AC_SUBST(SVG_SURFACE_FEATURE)
|
|
AC_SUBST(XLIB_SURFACE_FEATURE)
|
|
AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
|
|
AC_SUBST(QUARTZ_SURFACE_FEATURE)
|
|
AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
|
|
AC_SUBST(WIN32_SURFACE_FEATURE)
|
|
AC_SUBST(OS2_SURFACE_FEATURE)
|
|
AC_SUBST(DIRECTFB_SURFACE_FEATURE)
|
|
AC_SUBST(FT_FONT_FEATURE)
|
|
AC_SUBST(FC_FONT_FEATURE)
|
|
AC_SUBST(WIN32_FONT_FEATURE)
|
|
AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
|
|
AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
|
|
AC_SUBST(QUARTZ_FONT_FEATURE)
|
|
AC_SUBST(PNG_FUNCTIONS_FEATURE)
|
|
AC_SUBST(QT_SURFACE_FEATURE)
|
|
AC_SUBST(TEE_SURFACE_FEATURE)
|
|
|
|
MOZ_CAIRO_LIBS='$(call EXPAND_LIBNAME_PATH,mozcairo,$(DEPTH)/gfx/cairo/cairo/src)'" $CAIRO_FT_LIBS"
|
|
MOZ_CAIRO_OSLIBS='${CAIRO_FT_OSLIBS}'
|
|
|
|
if test "$MOZ_X11"; then
|
|
MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
|
|
fi
|
|
|
|
CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
|
|
else
|
|
PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION)
|
|
MOZ_CAIRO_CFLAGS="$CAIRO_CFLAGS"
|
|
MOZ_CAIRO_LIBS="$CAIRO_LIBS"
|
|
PKG_CHECK_MODULES(CAIRO_TEE, cairo-tee >= $CAIRO_VERSION)
|
|
if test "$MOZ_X11"; then
|
|
PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
|
|
MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
|
|
MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_LIBS"
|
|
MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
|
|
fi
|
|
fi
|
|
|
|
AC_SUBST(MOZ_TREE_CAIRO)
|
|
AC_SUBST(MOZ_CAIRO_CFLAGS)
|
|
AC_SUBST(MOZ_CAIRO_LIBS)
|
|
AC_SUBST(MOZ_CAIRO_OSLIBS)
|
|
AC_SUBST(MOZ_TREE_PIXMAN)
|
|
|
|
dnl ========================================================
|
|
dnl qcms
|
|
dnl ========================================================
|
|
|
|
QCMS_LIBS='$(DEPTH)/gfx/qcms/$(LIB_PREFIX)mozqcms.$(LIB_SUFFIX)'
|
|
AC_SUBST(QCMS_LIBS)
|
|
|
|
dnl ========================================================
|
|
dnl HarfBuzz
|
|
dnl ========================================================
|
|
MOZ_HARFBUZZ_LIBS='$(DEPTH)/gfx/harfbuzz/src/$(LIB_PREFIX)mozharfbuzz.$(LIB_SUFFIX)'
|
|
AC_SUBST(MOZ_HARFBUZZ_LIBS)
|
|
|
|
dnl ========================================================
|
|
dnl SIL Graphite
|
|
dnl ========================================================
|
|
if test "$MOZ_GRAPHITE"; then
|
|
MOZ_GRAPHITE_LIBS='$(DEPTH)/gfx/graphite2/src/$(LIB_PREFIX)mozgraphite2.$(LIB_SUFFIX)'
|
|
AC_DEFINE(MOZ_GRAPHITE)
|
|
else
|
|
MOZ_GRAPHITE_LIBS=
|
|
fi
|
|
AC_SUBST(MOZ_GRAPHITE)
|
|
AC_SUBST(MOZ_GRAPHITE_LIBS)
|
|
|
|
dnl ========================================================
|
|
dnl OTS
|
|
dnl ========================================================
|
|
MOZ_OTS_LIBS='$(DEPTH)/gfx/ots/src/$(LIB_PREFIX)mozots.$(LIB_SUFFIX)'
|
|
AC_SUBST(MOZ_OTS_LIBS)
|
|
|
|
dnl ========================================================
|
|
dnl Skia
|
|
dnl ========================================================
|
|
if test "$MOZ_ENABLE_SKIA"; then
|
|
MOZ_SKIA_LIBS='$(DEPTH)/gfx/skia/$(LIB_PREFIX)skia.$(LIB_SUFFIX)'
|
|
AC_DEFINE(MOZ_ENABLE_SKIA)
|
|
else
|
|
MOZ_SKIA_LIBS=
|
|
fi
|
|
AC_SUBST(MOZ_ENABLE_SKIA)
|
|
AC_SUBST(MOZ_SKIA_LIBS)
|
|
|
|
dnl ========================================================
|
|
dnl disable xul
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(xul,
|
|
[ --disable-xul Disable XUL],
|
|
MOZ_XUL= )
|
|
if test "$MOZ_XUL"; then
|
|
AC_DEFINE(MOZ_XUL)
|
|
else
|
|
dnl remove extensions that require XUL
|
|
MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
|
|
fi
|
|
|
|
AC_SUBST(MOZ_XUL)
|
|
|
|
dnl ========================================================
|
|
dnl disable profile locking
|
|
dnl do no use this in applications that can have more than
|
|
dnl one process accessing the profile directory.
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(profilelocking,
|
|
[ --disable-profilelocking
|
|
Disable profile locking],
|
|
MOZ_PROFILELOCKING=,
|
|
MOZ_PROFILELOCKING=1 )
|
|
if test "$MOZ_PROFILELOCKING"; then
|
|
AC_DEFINE(MOZ_PROFILELOCKING)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl necko configuration options
|
|
dnl ========================================================
|
|
|
|
dnl
|
|
dnl option to disable various necko protocols
|
|
dnl
|
|
MOZ_ARG_ENABLE_STRING(necko-protocols,
|
|
[ --enable-necko-protocols[={http,ftp,default,all,none}]
|
|
Enable/disable specific protocol handlers],
|
|
[ for option in `echo $enableval | sed 's/,/ /g'`; do
|
|
if test "$option" = "yes" -o "$option" = "all"; then
|
|
NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
|
|
elif test "$option" = "no" -o "$option" = "none"; then
|
|
NECKO_PROTOCOLS=""
|
|
elif test "$option" = "default"; then
|
|
NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
|
|
elif test `echo "$option" | grep -c \^-` != 0; then
|
|
option=`echo $option | sed 's/^-//'`
|
|
NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
|
|
else
|
|
NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
|
|
fi
|
|
done],
|
|
NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
|
|
dnl Remove dupes
|
|
NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
|
|
AC_SUBST(NECKO_PROTOCOLS)
|
|
for p in $NECKO_PROTOCOLS; do
|
|
AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
|
|
_NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_PROTOCOL_$p"
|
|
done
|
|
|
|
dnl
|
|
dnl option to disable necko's wifi scanner
|
|
dnl
|
|
MOZ_ARG_DISABLE_BOOL(necko-wifi,
|
|
[ --disable-necko-wifi Disable necko wifi scanner],
|
|
NECKO_WIFI=,
|
|
NECKO_WIFI=1)
|
|
|
|
if test "$OS_ARCH" = "OS2"; then
|
|
dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
|
|
NECKO_WIFI=
|
|
fi
|
|
if test "$NECKO_WIFI" -a \
|
|
"$OS_ARCH" != "Linux" -a \
|
|
"$OS_ARCH" != "Darwin" -a \
|
|
"$OS_ARCH" != "SunOS" -a \
|
|
"$OS_ARCH" != "WINNT"; then
|
|
AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi])
|
|
fi
|
|
|
|
if test "$NECKO_WIFI"; then
|
|
AC_DEFINE(NECKO_WIFI)
|
|
_NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
|
|
fi
|
|
AC_SUBST(NECKO_WIFI)
|
|
|
|
dnl
|
|
dnl option to disable cookies
|
|
dnl
|
|
MOZ_ARG_DISABLE_BOOL(cookies,
|
|
[ --disable-cookies Disable cookie support],
|
|
NECKO_COOKIES=,
|
|
NECKO_COOKIES=1)
|
|
AC_SUBST(NECKO_COOKIES)
|
|
if test "$NECKO_COOKIES"; then
|
|
AC_DEFINE(NECKO_COOKIES)
|
|
_NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
|
|
fi
|
|
|
|
dnl
|
|
dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
|
|
dnl
|
|
MOZ_ARG_DISABLE_BOOL(ctypes,
|
|
[ --disable-ctypes Disable js-ctypes],
|
|
BUILD_CTYPES=,
|
|
BUILD_CTYPES=1)
|
|
AC_SUBST(BUILD_CTYPES)
|
|
if test "$BUILD_CTYPES"; then
|
|
AC_DEFINE(BUILD_CTYPES)
|
|
fi
|
|
|
|
dnl Build Places if required
|
|
if test "$MOZ_PLACES"; then
|
|
AC_DEFINE(MOZ_PLACES)
|
|
fi
|
|
|
|
dnl Build Apps in the Cloud (AITC) if required
|
|
AC_SUBST(MOZ_SERVICES_AITC)
|
|
if test -n "$MOZ_SERVICES_AITC"; then
|
|
AC_DEFINE(MOZ_SERVICES_AITC)
|
|
fi
|
|
|
|
dnl Build Common JS modules provided by services.
|
|
AC_SUBST(MOZ_SERVICES_COMMON)
|
|
if test -n "$MOZ_SERVICES_COMMON"; then
|
|
AC_DEFINE(MOZ_SERVICES_COMMON)
|
|
fi
|
|
|
|
dnl Build Services crypto component (used by Sync)
|
|
AC_SUBST(MOZ_SERVICES_CRYPTO)
|
|
if test -n "$MOZ_SERVICES_CRYPTO"; then
|
|
AC_DEFINE(MOZ_SERVICES_CRYPTO)
|
|
fi
|
|
|
|
dnl Build Firefox Health Reporter Service
|
|
AC_SUBST(MOZ_SERVICES_HEALTHREPORT)
|
|
if test -n "$MOZ_SERVICES_HEALTHREPORT"; then
|
|
AC_DEFINE(MOZ_SERVICES_HEALTHREPORT)
|
|
fi
|
|
|
|
dnl Build Services metrics component
|
|
AC_SUBST(MOZ_SERVICES_METRICS)
|
|
if test -n "$MOZ_SERVICES_METRICS"; then
|
|
AC_DEFINE(MOZ_SERVICES_METRICS)
|
|
fi
|
|
|
|
dnl Build Notifications if required
|
|
AC_SUBST(MOZ_SERVICES_NOTIFICATIONS)
|
|
if test -n "$MOZ_SERVICES_NOTIFICATIONS"; then
|
|
AC_DEFINE(MOZ_SERVICES_NOTIFICATIONS)
|
|
fi
|
|
|
|
dnl Build Sync Services if required
|
|
AC_SUBST(MOZ_SERVICES_SYNC)
|
|
if test -n "$MOZ_SERVICES_SYNC"; then
|
|
AC_DEFINE(MOZ_SERVICES_SYNC)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
|
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
|
|
fi
|
|
|
|
if test "$MOZ_APP_COMPONENT_INCLUDE"; then
|
|
AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_INCLUDE, "$MOZ_APP_COMPONENT_INCLUDE")
|
|
fi
|
|
|
|
if test "$MOZ_APP_COMPONENT_MODULES"; then
|
|
AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_MODULES, $MOZ_APP_COMPONENT_MODULES)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Maintainer debug option (no --enable equivalent)
|
|
dnl =
|
|
dnl ========================================================
|
|
|
|
AC_SUBST(AR)
|
|
AC_SUBST(AR_FLAGS)
|
|
AC_SUBST(AR_LIST)
|
|
AC_SUBST(AR_EXTRACT)
|
|
AC_SUBST(AR_DELETE)
|
|
AC_SUBST(AS)
|
|
AC_SUBST(ASFLAGS)
|
|
AC_SUBST(AS_DASH_C_FLAG)
|
|
AC_SUBST(LD)
|
|
AC_SUBST(RC)
|
|
AC_SUBST(RCFLAGS)
|
|
AC_SUBST(MC)
|
|
AC_SUBST(WINDRES)
|
|
AC_SUBST(IMPLIB)
|
|
AC_SUBST(FILTER)
|
|
AC_SUBST(BIN_FLAGS)
|
|
AC_SUBST(MOZ_WIDGET_TOOLKIT)
|
|
AC_SUBST(MOZ_UPDATE_XTERM)
|
|
AC_SUBST(MOZ_PLATFORM_MAEMO)
|
|
AC_SUBST(MOZ_AUTH_EXTENSION)
|
|
AC_SUBST(MOZ_PERMISSIONS)
|
|
AC_SUBST(MOZ_PREF_EXTENSIONS)
|
|
AC_SUBST(MOZ_JS_LIBS)
|
|
AC_SUBST(MOZ_PSM)
|
|
AC_SUBST(MOZ_DEBUG)
|
|
AC_SUBST(MOZ_DEBUG_SYMBOLS)
|
|
AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
|
|
AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
|
|
AC_SUBST(MOZ_DEBUG_FLAGS)
|
|
AC_SUBST(MOZ_DEBUG_LDFLAGS)
|
|
AC_SUBST(WARNINGS_AS_ERRORS)
|
|
AC_SUBST(MOZ_EXTENSIONS)
|
|
AC_SUBST(MOZ_JSDEBUGGER)
|
|
AC_SUBST(MOZ_ENABLE_PROFILER_SPS)
|
|
AC_SUBST(MOZ_JPROF)
|
|
AC_SUBST(MOZ_SHARK)
|
|
AC_SUBST(MOZ_CALLGRIND)
|
|
AC_SUBST(MOZ_VTUNE)
|
|
AC_SUBST(MOZ_ETW)
|
|
AC_SUBST(MOZ_PROFILING)
|
|
AC_SUBST(LIBICONV)
|
|
AC_SUBST(MOZ_PLACES)
|
|
AC_SUBST(MOZ_TOOLKIT_SEARCH)
|
|
AC_SUBST(MOZ_FEEDS)
|
|
AC_SUBST(NS_PRINTING)
|
|
AC_SUBST(MOZ_WEBGL)
|
|
AC_SUBST(MOZ_HELP_VIEWER)
|
|
AC_SUBST(TOOLCHAIN_PREFIX)
|
|
|
|
AC_SUBST(JAVA)
|
|
AC_SUBST(JAVAC)
|
|
AC_SUBST(JAR)
|
|
|
|
AC_SUBST(MOZ_PROFILELOCKING)
|
|
|
|
AC_SUBST(ENABLE_TESTS)
|
|
AC_SUBST(ENABLE_MARIONETTE)
|
|
AC_SUBST(IBMBIDI)
|
|
AC_SUBST(MOZ_UNIVERSALCHARDET)
|
|
AC_SUBST(ACCESSIBILITY)
|
|
AC_SUBST(MOZ_SPELLCHECK)
|
|
AC_SUBST(MOZ_ANDROID_OMTC)
|
|
AC_SUBST(MOZ_ONLY_TOUCH_EVENTS)
|
|
AC_SUBST(MOZ_CRASHREPORTER)
|
|
AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
|
|
AC_SUBST(MOZ_MAINTENANCE_SERVICE)
|
|
AC_SUBST(MOZ_STUB_INSTALLER)
|
|
AC_SUBST(MOZ_VERIFY_MAR_SIGNATURE)
|
|
AC_SUBST(MOZ_ENABLE_SIGNMAR)
|
|
AC_SUBST(MOZ_UPDATER)
|
|
AC_SUBST(MOZ_ANGLE_RENDERER)
|
|
AC_SUBST(MOZ_DIRECTX_SDK_PATH)
|
|
AC_SUBST(MOZ_DIRECTX_SDK_CPU_SUFFIX)
|
|
AC_SUBST(MOZ_D3DX9_VERSION)
|
|
AC_SUBST(MOZ_D3DX9_CAB)
|
|
AC_SUBST(MOZ_D3DCOMPILER_CAB)
|
|
AC_SUBST(MOZ_D3DX9_DLL)
|
|
AC_SUBST(MOZ_D3DCOMPILER_DLL)
|
|
AC_SUBST(MOZ_METRO)
|
|
|
|
AC_SUBST(MOZ_ANDROID_HISTORY)
|
|
AC_SUBST(MOZ_WEBSMS_BACKEND)
|
|
AC_SUBST(ENABLE_STRIP)
|
|
AC_SUBST(PKG_SKIP_STRIP)
|
|
AC_SUBST(STRIP_FLAGS)
|
|
AC_SUBST(USE_ELF_DYNSTR_GC)
|
|
AC_SUBST(USE_ELF_HACK)
|
|
AC_SUBST(INCREMENTAL_LINKER)
|
|
AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
|
|
AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
|
|
|
|
AC_SUBST(MOZ_FIX_LINK_PATHS)
|
|
AC_SUBST(XPCOM_LIBS)
|
|
AC_SUBST(XPCOM_FROZEN_LDOPTS)
|
|
AC_SUBST(XPCOM_GLUE_LDOPTS)
|
|
AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
|
|
AC_SUBST(XPCOM_STATICRUNTIME_GLUE_LDOPTS)
|
|
AC_SUBST(XPCOM_STANDALONE_STATICRUNTIME_GLUE_LDOPTS)
|
|
|
|
AC_SUBST(USE_DEPENDENT_LIBS)
|
|
|
|
AC_SUBST(MOZ_BUILD_ROOT)
|
|
AC_SUBST(MOZ_OS2_TOOLS)
|
|
|
|
AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
|
|
AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
|
|
AC_SUBST(MOZ_LINKER_EXTRACT)
|
|
AC_SUBST(MOZ_PER_WINDOW_PRIVATE_BROWSING)
|
|
|
|
if test -n "$MOZ_PER_WINDOW_PRIVATE_BROWSING" ; then
|
|
AC_DEFINE(MOZ_PER_WINDOW_PRIVATE_BROWSING)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Mac bundle name prefix
|
|
dnl ========================================================
|
|
MOZ_ARG_WITH_STRING(macbundlename-prefix,
|
|
[ --with-macbundlename-prefix=prefix
|
|
Prefix for MOZ_MACBUNDLE_NAME],
|
|
[ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
|
|
|
|
MOZ_MACBUNDLE_NAME=`echo $MOZ_APP_DISPLAYNAME | tr -d ' '`
|
|
if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
|
|
MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
|
|
fi
|
|
|
|
if test "$MOZ_DEBUG"; then
|
|
MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}Debug.app
|
|
else
|
|
MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
|
|
fi
|
|
AC_SUBST(MOZ_MACBUNDLE_NAME)
|
|
|
|
dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
|
|
MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr '[A-Z]' '[a-z]'`
|
|
MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
|
|
if test "$MOZ_DEBUG"; then
|
|
MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
|
|
fi
|
|
|
|
AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
|
|
AC_SUBST(MOZ_MACBUNDLE_ID)
|
|
|
|
# The following variables are available to branding and application
|
|
# configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
|
|
# - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
|
|
# impacts profile location and user-visible fields.
|
|
# - MOZ_APP_BASENAME: Typically stays consistent for multiple branded
|
|
# versions of a given application (e.g. Aurora and Firefox both use
|
|
# "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used
|
|
# for application.ini's "Name" field, which controls profile location in
|
|
# the absence of a "Profile" field (see below), and various system
|
|
# integration hooks (Unix remoting, Windows MessageWindow name, etc.)
|
|
# - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
|
|
# Mac Bundle name, Updater, Installer), it is typically used for nightly
|
|
# builds (e.g. Aurora for Firefox).
|
|
# - MOZ_APP_VERSION: Defines the application version number.
|
|
# - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set,
|
|
# defaults to a lowercase form of MOZ_APP_BASENAME.
|
|
# - MOZ_APP_PROFILE: When set, used for application.ini's
|
|
# "Profile" field, which controls profile location.
|
|
# - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
|
|
# crash reporter server url.
|
|
# - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
|
|
# - MOZ_EXTENSION_MANAGER: When set, enabled extension manager.
|
|
|
|
if test -z "$MOZ_APP_NAME"; then
|
|
MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
|
|
fi
|
|
|
|
# For extensions and langpacks, we require a max version that is compatible
|
|
# across security releases. MOZ_APP_MAXVERSION is our method for doing that.
|
|
# 10.0a1 and 10.0a2 aren't affected
|
|
# 10.0 becomes 10.0.*
|
|
# 10.0.1 becomes 10.0.*
|
|
IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
|
|
if test -z "$IS_ALPHA"; then
|
|
changequote(,)
|
|
MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*.[0-9]*\).*|\1|"`.*
|
|
changequote([,])
|
|
else
|
|
MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
|
|
fi
|
|
|
|
MOZ_B2G_VERSION=${MOZ_B2G_VERSION:-"1.0.0"}
|
|
AC_DEFINE_UNQUOTED(MOZ_B2G_VERSION,"$MOZ_B2G_VERSION")
|
|
|
|
AC_SUBST(MOZ_APP_NAME)
|
|
AC_SUBST(MOZ_APP_DISPLAYNAME)
|
|
AC_SUBST(MOZ_APP_BASENAME)
|
|
AC_SUBST(MOZ_APP_VENDOR)
|
|
AC_SUBST(MOZ_APP_PROFILE)
|
|
AC_SUBST(MOZ_APP_ID)
|
|
AC_SUBST(MAR_CHANNEL_ID)
|
|
AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
|
|
AC_SUBST(MOZ_PROFILE_MIGRATOR)
|
|
AC_SUBST(MOZ_EXTENSION_MANAGER)
|
|
AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
|
|
AC_SUBST(MOZ_APP_UA_NAME)
|
|
AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
|
|
AC_SUBST(MOZ_APP_VERSION)
|
|
AC_SUBST(MOZ_APP_MAXVERSION)
|
|
AC_DEFINE_UNQUOTED(FIREFOX_VERSION,$FIREFOX_VERSION)
|
|
AC_SUBST(FIREFOX_VERSION)
|
|
AC_SUBST(MOZ_UA_OS_AGNOSTIC)
|
|
if test -n "$MOZ_UA_OS_AGNOSTIC"; then
|
|
AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
|
|
fi
|
|
|
|
# We can't use the static application.ini data when building against
|
|
# a libxul SDK.
|
|
if test -n "$LIBXUL_SDK"; then
|
|
MOZ_APP_STATIC_INI=
|
|
fi
|
|
AC_SUBST(MOZ_APP_STATIC_INI)
|
|
|
|
AC_SUBST(MOZ_PKG_SPECIAL)
|
|
|
|
AC_SUBST(MOZILLA_OFFICIAL)
|
|
|
|
if test "$MOZ_TELEMETRY_REPORTING"; then
|
|
AC_DEFINE(MOZ_TELEMETRY_REPORTING)
|
|
fi
|
|
|
|
dnl win32 options
|
|
AC_SUBST(MOZ_MAPINFO)
|
|
AC_SUBST(MOZ_BROWSE_INFO)
|
|
AC_SUBST(MOZ_TOOLS_DIR)
|
|
AC_SUBST(WIN32_REDIST_DIR)
|
|
AC_SUBST(MAKENSISU)
|
|
|
|
dnl Echo the CFLAGS to remove extra whitespace.
|
|
CFLAGS=`echo \
|
|
$_WARNINGS_CFLAGS \
|
|
$CFLAGS`
|
|
|
|
CXXFLAGS=`echo \
|
|
$_WARNINGS_CXXFLAGS \
|
|
$CXXFLAGS`
|
|
|
|
COMPILE_CFLAGS=`echo \
|
|
$_DEFINES_CFLAGS \
|
|
$_DEPEND_CFLAGS \
|
|
$COMPILE_CFLAGS`
|
|
|
|
COMPILE_CXXFLAGS=`echo \
|
|
$_DEFINES_CXXFLAGS \
|
|
$_DEPEND_CFLAGS \
|
|
$COMPILE_CXXFLAGS`
|
|
|
|
AC_SUBST(SYSTEM_LIBXUL)
|
|
AC_SUBST(MOZ_NATIVE_JPEG)
|
|
AC_SUBST(MOZ_NATIVE_PNG)
|
|
AC_SUBST(MOZ_NATIVE_BZ2)
|
|
|
|
AC_SUBST(MOZ_FLEXBOX)
|
|
AC_SUBST(MOZ_JPEG_CFLAGS)
|
|
AC_SUBST(MOZ_JPEG_LIBS)
|
|
AC_SUBST(MOZ_BZ2_CFLAGS)
|
|
AC_SUBST(MOZ_BZ2_LIBS)
|
|
AC_SUBST(MOZ_PNG_CFLAGS)
|
|
AC_SUBST(MOZ_PNG_LIBS)
|
|
|
|
AC_SUBST(NSPR_CFLAGS)
|
|
AC_SUBST(NSPR_LIBS)
|
|
AC_SUBST(MOZ_NATIVE_NSPR)
|
|
|
|
AC_SUBST(NSS_CFLAGS)
|
|
AC_SUBST(NSS_LIBS)
|
|
AC_SUBST(NSS_DEP_LIBS)
|
|
AC_SUBST(MOZ_NATIVE_NSS)
|
|
AC_SUBST(NSS_DISABLE_DBM)
|
|
|
|
OS_CFLAGS="$CFLAGS"
|
|
OS_CXXFLAGS="$CXXFLAGS"
|
|
OS_CPPFLAGS="$CPPFLAGS"
|
|
OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
|
|
OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
|
|
OS_LDFLAGS="$LDFLAGS"
|
|
OS_LIBS="$LIBS"
|
|
AC_SUBST(OS_CFLAGS)
|
|
AC_SUBST(OS_CXXFLAGS)
|
|
AC_SUBST(OS_CPPFLAGS)
|
|
AC_SUBST(OS_COMPILE_CFLAGS)
|
|
AC_SUBST(OS_COMPILE_CXXFLAGS)
|
|
AC_SUBST(OS_LDFLAGS)
|
|
AC_SUBST(OS_LIBS)
|
|
AC_SUBST(CROSS_COMPILE)
|
|
AC_SUBST(WCHAR_CFLAGS)
|
|
|
|
AC_SUBST(HOST_CC)
|
|
AC_SUBST(HOST_CXX)
|
|
AC_SUBST(HOST_CFLAGS)
|
|
AC_SUBST(HOST_CXXFLAGS)
|
|
AC_SUBST(HOST_LDFLAGS)
|
|
AC_SUBST(HOST_OPTIMIZE_FLAGS)
|
|
AC_SUBST(HOST_AR)
|
|
AC_SUBST(HOST_AR_FLAGS)
|
|
AC_SUBST(HOST_LD)
|
|
AC_SUBST(HOST_RANLIB)
|
|
AC_SUBST(HOST_NSPR_MDCPUCFG)
|
|
AC_SUBST(HOST_BIN_SUFFIX)
|
|
AC_SUBST(HOST_OS_ARCH)
|
|
|
|
AC_SUBST(TARGET_CPU)
|
|
AC_SUBST(TARGET_VENDOR)
|
|
AC_SUBST(TARGET_OS)
|
|
AC_SUBST(TARGET_NSPR_MDCPUCFG)
|
|
AC_SUBST(TARGET_MD_ARCH)
|
|
AC_SUBST(TARGET_XPCOM_ABI)
|
|
AC_SUBST(OS_TARGET)
|
|
AC_SUBST(OS_ARCH)
|
|
AC_SUBST(OS_RELEASE)
|
|
AC_SUBST(OS_TEST)
|
|
AC_SUBST(CPU_ARCH)
|
|
AC_SUBST(INTEL_ARCHITECTURE)
|
|
|
|
AC_SUBST(MOZ_CHROME_FILE_FORMAT)
|
|
|
|
AC_SUBST(WRAP_LDFLAGS)
|
|
AC_SUBST(MKSHLIB)
|
|
AC_SUBST(MKCSHLIB)
|
|
AC_SUBST(MKSHLIB_FORCE_ALL)
|
|
AC_SUBST(MKSHLIB_UNFORCE_ALL)
|
|
AC_SUBST(DSO_CFLAGS)
|
|
AC_SUBST(DSO_PIC_CFLAGS)
|
|
AC_SUBST(DSO_LDOPTS)
|
|
AC_SUBST(LIB_PREFIX)
|
|
AC_SUBST(DLL_PREFIX)
|
|
AC_SUBST(DLL_SUFFIX)
|
|
AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
|
|
AC_SUBST(LIB_SUFFIX)
|
|
AC_SUBST(OBJ_SUFFIX)
|
|
AC_SUBST(BIN_SUFFIX)
|
|
AC_SUBST(ASM_SUFFIX)
|
|
AC_SUBST(IMPORT_LIB_SUFFIX)
|
|
AC_SUBST(USE_N32)
|
|
AC_SUBST(CC_VERSION)
|
|
AC_SUBST(CXX_VERSION)
|
|
AC_SUBST(MSMANIFEST_TOOL)
|
|
AC_SUBST(NS_ENABLE_TSF)
|
|
AC_SUBST(MOZ_NSS_PATCH)
|
|
AC_SUBST(MOZ_APP_COMPONENT_LIBS)
|
|
AC_SUBST(MOZ_APP_EXTRA_LIBS)
|
|
|
|
AC_SUBST(MOZ_MEDIA)
|
|
AC_SUBST(MOZ_SYDNEYAUDIO)
|
|
AC_SUBST(MOZ_SPEEX_RESAMPLER)
|
|
AC_SUBST(MOZ_CUBEB)
|
|
AC_SUBST(MOZ_WAVE)
|
|
AC_SUBST(MOZ_VORBIS)
|
|
AC_SUBST(MOZ_TREMOR)
|
|
AC_SUBST(MOZ_OPUS)
|
|
AC_SUBST(MOZ_WEBM)
|
|
AC_SUBST(MOZ_DASH)
|
|
AC_SUBST(MOZ_MEDIA_PLUGINS)
|
|
AC_SUBST(MOZ_OMX_PLUGIN)
|
|
AC_SUBST(MOZ_VP8_ERROR_CONCEALMENT)
|
|
AC_SUBST(MOZ_VP8_ENCODER)
|
|
AC_SUBST(MOZ_VP8)
|
|
AC_SUBST(MOZ_OGG)
|
|
AC_SUBST(MOZ_ALSA_LIBS)
|
|
AC_SUBST(MOZ_ALSA_CFLAGS)
|
|
AC_SUBST(VPX_AS)
|
|
AC_SUBST(VPX_ASFLAGS)
|
|
AC_SUBST(VPX_DASH_C_FLAG)
|
|
AC_SUBST(VPX_AS_CONVERSION)
|
|
AC_SUBST(VPX_ASM_SUFFIX)
|
|
AC_SUBST(VPX_X86_ASM)
|
|
AC_SUBST(VPX_ARM_ASM)
|
|
AC_SUBST(VPX_NEED_OBJ_INT_EXTRACT)
|
|
AC_SUBST(MOZ_INSTRUMENT_EVENT_LOOP)
|
|
AC_SUBST(LIBJPEG_TURBO_AS)
|
|
AC_SUBST(LIBJPEG_TURBO_ASFLAGS)
|
|
AC_SUBST(LIBJPEG_TURBO_X86_ASM)
|
|
AC_SUBST(LIBJPEG_TURBO_X64_ASM)
|
|
AC_SUBST(LIBJPEG_TURBO_ARM_ASM)
|
|
|
|
AC_SUBST(MOZ_PACKAGE_JSSHELL)
|
|
|
|
AC_MSG_CHECKING([for posix_fallocate])
|
|
AC_TRY_LINK([#define _XOPEN_SOURCE 600
|
|
#include <fcntl.h>],
|
|
[posix_fallocate(0, 0, 0);],
|
|
[ac_cv___posix_fallocate=true],
|
|
[ac_cv___posix_fallocate=false])
|
|
|
|
if test "$ac_cv___posix_fallocate" = true ; then
|
|
AC_DEFINE(HAVE_POSIX_FALLOCATE)
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
dnl Check for missing components
|
|
if test "$COMPILE_ENVIRONMENT"; then
|
|
if test "$MOZ_X11"; then
|
|
if test "$WITHOUT_X11"; then
|
|
AC_MSG_ERROR([--without-x specified and MOZ_X11 still defined])
|
|
fi
|
|
dnl ====================================================
|
|
dnl = Check if X headers exist
|
|
dnl ====================================================
|
|
_SAVE_CFLAGS=$CFLAGS
|
|
CFLAGS="$CFLAGS $XCFLAGS"
|
|
AC_TRY_COMPILE([
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <X11/Xlib.h>
|
|
#include <X11/Intrinsic.h>
|
|
#include <X11/extensions/XShm.h>
|
|
],
|
|
[
|
|
Display *dpy = 0;
|
|
if ((dpy = XOpenDisplay(NULL)) == NULL) {
|
|
fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
|
|
exit(1);
|
|
}
|
|
], [],
|
|
[ AC_MSG_ERROR([Could not compile basic X program.]) ])
|
|
CFLAGS="$_SAVE_CFLAGS"
|
|
|
|
if test -n "$MISSING_X"; then
|
|
AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
|
|
fi
|
|
|
|
fi # MOZ_X11
|
|
|
|
dnl Check for headers, etc. needed by WebGL.
|
|
if test "$MOZ_GL_DEFAULT_PROVIDER" = "GLX"; then
|
|
MOZ_CHECK_HEADER(GL/glx.h)
|
|
if test "$ac_cv_header_GL_glx_h" != "yes"; then
|
|
AC_MSG_ERROR([Can't find header GL/glx.h for WebGL (install mesa-common-dev (Ubuntu), mesa-libGL-devel (Fedora), or Mesa-devel (openSUSE))])
|
|
fi
|
|
fi # MOZ_GL_DEFAULT_PROVIDER=GLX
|
|
fi # COMPILE_ENVIRONMENT
|
|
|
|
dnl Set various defines and substitutions
|
|
dnl ========================================================
|
|
|
|
if test "$OS_ARCH" = "Darwin"; then
|
|
AC_DEFINE(XP_UNIX)
|
|
elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2"; then
|
|
AC_DEFINE(XP_UNIX)
|
|
fi
|
|
|
|
if test "$MOZ_DEBUG"; then
|
|
AC_DEFINE(MOZ_REFLOW_PERF)
|
|
AC_DEFINE(MOZ_REFLOW_PERF_DSP)
|
|
fi
|
|
|
|
if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
|
|
AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
|
|
ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
|
|
ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
|
|
ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
|
|
ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
|
|
AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
|
|
AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
|
|
AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
|
|
fi
|
|
|
|
AC_SUBST(MOZILLA_VERSION)
|
|
|
|
AC_SUBST(ac_configure_args)
|
|
|
|
dnl Spit out some output
|
|
dnl ========================================================
|
|
|
|
dnl The following defines are used by xpcom
|
|
_NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
|
|
CPP_THROW_NEW
|
|
HAVE_CPP_2BYTE_WCHAR_T
|
|
HAVE_CPP_AMBIGUITY_RESOLVING_USING
|
|
HAVE_CPP_CHAR16_T
|
|
HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
|
|
HAVE_CPP_PARTIAL_SPECIALIZATION
|
|
HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
|
|
NEED_CPP_UNUSED_IMPLEMENTATIONS
|
|
NEW_H
|
|
HAVE_GETPAGESIZE
|
|
HAVE_ICONV
|
|
HAVE_ICONV_WITH_CONST_INPUT
|
|
HAVE_MBRTOWC
|
|
HAVE_WCRTOMB
|
|
HAVE_STATVFS64
|
|
HAVE_STATVFS
|
|
HAVE_STATFS64
|
|
HAVE_STATFS
|
|
HAVE_SYS_STATVFS_H
|
|
HAVE_SYS_STATFS_H
|
|
HAVE_SYS_VFS_H
|
|
HAVE_SYS_MOUNT_H
|
|
"
|
|
|
|
AC_CONFIG_HEADER(
|
|
netwerk/necko-config.h
|
|
xpcom/xpcom-config.h
|
|
xpcom/xpcom-private.h
|
|
)
|
|
|
|
# Hack around an Apple bug that affects the egrep that comes with OS X 10.7.
|
|
# "env ARCHPREFERENCE=i386,x86_64 arch egrep" first tries to use the 32-bit
|
|
# Intel part of the egrep fat binary, even on 64-bit systems, and falls back on
|
|
# the 64-bit part if it's not a fat binary, as can happen with MacPorts. We
|
|
# (apparently) only need this hack when egrep's "pattern" is particularly long
|
|
# (as in the following code) and the first egrep on our $PATH is Apple's. See
|
|
# bug 655339.
|
|
case "$host" in
|
|
*-apple-darwin11*)
|
|
FIXED_EGREP="env ARCHPREFERENCE=i386,x86_64 arch egrep"
|
|
;;
|
|
*)
|
|
FIXED_EGREP="egrep"
|
|
;;
|
|
esac
|
|
|
|
dnl Load the list of Makefiles to generate.
|
|
dnl To add new Makefiles, edit allmakefiles.sh.
|
|
dnl allmakefiles.sh sets the variable, MAKEFILES.
|
|
. ${srcdir}/allmakefiles.sh
|
|
|
|
echo $MAKEFILES > unallmakefiles
|
|
|
|
AC_OUTPUT($MAKEFILES)
|
|
|
|
# Generate Makefiles for WebRTC directly from .gyp files
|
|
if test "${OS_TARGET}" = "WINNT"; then
|
|
if test "$HAVE_64BIT_OS"; then
|
|
OS_BITS=64
|
|
else
|
|
OS_BITS=32
|
|
fi
|
|
EXTRA_GYP_DEFINES="-D MSVS_VERSION=${_MSVS_VERSION} -D MSVS_OS_BITS=${OS_BITS}"
|
|
fi
|
|
|
|
if test -n "$MOZ_WEBRTC"; then
|
|
AC_MSG_RESULT("generating WebRTC Makefiles...")
|
|
|
|
dnl Any --include files must also appear in -D FORCED_INCLUDE_FILE= entries
|
|
dnl so that regeneration via dependencies works correctly
|
|
WEBRTC_CONFIG="-D build_with_mozilla=1 --include ${srcdir}/media/webrtc/webrtc_config.gypi -D FORCED_INCLUDE_FILE=${srcdir}/media/webrtc/webrtc_config.gypi"
|
|
|
|
GYP_WEBRTC_OPTIONS="--format=mozmake ${WEBRTC_CONFIG} ${EXTRA_GYP_DEFINES} --depth=${srcdir}/media/webrtc/trunk --toplevel-dir=${srcdir} -G OBJDIR=${_objdir}"
|
|
|
|
$PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
|
|
$GYP_WEBRTC_OPTIONS \
|
|
--generator-output=${_objdir}/media/webrtc/trunk \
|
|
${srcdir}/media/webrtc/trunk/peerconnection.gyp
|
|
if test "$?" != 0; then
|
|
AC_MSG_ERROR([failed to generate WebRTC Makefiles])
|
|
fi
|
|
|
|
# XXX disable until we land the tranche with signaling
|
|
if test -n "$MOZ_WEBRTC_SIGNALING"; then
|
|
AC_MSG_RESULT("generating WebRTC/Signaling Makefiles...")
|
|
$PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
|
|
$GYP_WEBRTC_OPTIONS \
|
|
-D build_for_test=0 \
|
|
--generator-output=${_objdir}/media/webrtc/signaling \
|
|
${srcdir}/media/webrtc/signaling/signaling.gyp
|
|
if test "$?" != 0; then
|
|
AC_MSG_ERROR([failed to generate WebRTC/Signaling Makefiles])
|
|
fi
|
|
|
|
AC_MSG_RESULT("generating WebRTC/SignalingTest Makefiles...")
|
|
$PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
|
|
$GYP_WEBRTC_OPTIONS \
|
|
-D build_for_test=1 \
|
|
--generator-output=${_objdir}/media/webrtc/signalingtest \
|
|
${srcdir}/media/webrtc/signaling/signaling.gyp
|
|
if test "$?" != 0; then
|
|
AC_MSG_ERROR([failed to generate WebRTC/SignalingTest Makefiles])
|
|
fi
|
|
fi
|
|
|
|
AC_MSG_RESULT("generating gtest Makefiles...")
|
|
# Ok to pass some extra -D's that are ignored here
|
|
$PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium \
|
|
$GYP_WEBRTC_OPTIONS \
|
|
--generator-output=${_objdir}/media/webrtc/trunk/testing/ \
|
|
${srcdir}/media/webrtc/trunk/testing/gtest.gyp
|
|
if test "$?" != 0; then
|
|
AC_MSG_ERROR([failed to generate gtest Makefiles])
|
|
fi
|
|
|
|
AC_MSG_RESULT("generating nrappkit Makefiles...")
|
|
$PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
|
|
$GYP_WEBRTC_OPTIONS \
|
|
--generator-output=${_objdir}/media/mtransport/third_party/nrappkit \
|
|
${srcdir}/media/mtransport/third_party/nrappkit/nrappkit.gyp
|
|
if test "$?" != 0; then
|
|
AC_MSG_ERROR([failed to generate nrappkit Makefiles])
|
|
fi
|
|
|
|
AC_MSG_RESULT("generating nICEr Makefiles...")
|
|
$PYTHON ${srcdir}/media/webrtc/trunk/build/gyp_chromium --format=mozmake \
|
|
$GYP_WEBRTC_OPTIONS \
|
|
--generator-output=${_objdir}/media/mtransport/third_party/nICEr \
|
|
${srcdir}/media/mtransport/third_party/nICEr/nicer.gyp
|
|
if test "$?" != 0; then
|
|
AC_MSG_ERROR([failed to generate nICEr Makefiles])
|
|
fi
|
|
fi
|
|
|
|
# Generate a JSON config file for unittest harnesses etc to read
|
|
# build configuration details from in a standardized way.
|
|
OS_TARGET=${OS_TARGET} \
|
|
TARGET_CPU=${TARGET_CPU} \
|
|
MOZ_DEBUG=${MOZ_DEBUG} \
|
|
MOZ_WIDGET_TOOLKIT=${MOZ_WIDGET_TOOLKIT} \
|
|
UNIVERSAL_BINARY=${UNIVERSAL_BINARY} \
|
|
MOZ_CRASHREPORTER=${MOZ_CRASHREPORTER} \
|
|
$PYTHON ${_topsrcdir}/config/writemozinfo.py ./mozinfo.json.tmp
|
|
if cmp -s ./mozinfo.json.tmp ./mozinfo.json; then
|
|
rm ./mozinfo.json.tmp
|
|
else
|
|
mv -f ./mozinfo.json.tmp ./mozinfo.json
|
|
fi
|
|
|
|
# Run jemalloc configure script
|
|
|
|
if test -z "$MOZ_NATIVE_JEMALLOC" -a "$MOZ_JEMALLOC" -a "$MOZ_MEMORY" ; then
|
|
ac_configure_args="$_SUBDIR_CONFIG_ARGS --build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_"
|
|
case "$OS_ARCH" in
|
|
Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
|
|
MANGLE="malloc calloc valloc free realloc posix_memalign"
|
|
case "$OS_ARCH" in
|
|
Linux)
|
|
MANGLE="$MANGLE memalign malloc_usable_size"
|
|
;;
|
|
FreeBSD)
|
|
MANGLE="$MANGLE malloc_usable_size"
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
if test -n "$MANGLE"; then
|
|
MANGLED=
|
|
JEMALLOC_WRAPPER=
|
|
if test -n "$_WRAP_MALLOC"; then
|
|
JEMALLOC_WRAPPER=__wrap_
|
|
fi
|
|
for mangle in ${MANGLE}; do
|
|
if test -n "$MANGLED"; then
|
|
MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle,$MANGLED"
|
|
else
|
|
MANGLED="$mangle:$JEMALLOC_WRAPPER$mangle"
|
|
fi
|
|
done
|
|
ac_configure_args="$ac_configure_args --with-mangling=$MANGLED"
|
|
fi
|
|
unset CONFIG_FILES
|
|
if test -z "$MOZ_TLS"; then
|
|
ac_configure_args="$ac_configure_args --disable-tls"
|
|
fi
|
|
EXTRA_CFLAGS="$CFLAGS"
|
|
for var in AS CC CXX CPP LD AR RANLIB STRIP CPPFLAGS EXTRA_CFLAGS LDFLAGS; do
|
|
ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'"
|
|
done
|
|
if test "$CROSS_COMPILE"; then
|
|
ac_configure_args="$ac_configure_args je_cv_static_page_shift=12"
|
|
fi
|
|
_save_cache_file="$cache_file"
|
|
cache_file=$_objdir/memory/jemalloc/src/config.cache
|
|
AC_OUTPUT_SUBDIRS(memory/jemalloc/src)
|
|
cache_file="$_save_cache_file"
|
|
ac_configure_args="$_SUBDIR_CONFIG_ARGS"
|
|
fi
|
|
|
|
dnl Build libunwind for Android profiling builds
|
|
if test "$OS_TARGET" = "Android" -a "$MOZ_PROFILING"; then
|
|
old_ac_configure_arg="$ac_configure_args"
|
|
ac_configure_args="--build=${build} --host=${target_alias} --disable-shared --enable-block-signals=no"
|
|
if test "$MOZ_DEBUG"; then
|
|
ac_configure_args="$ac_configure_args --enable-debug"
|
|
fi
|
|
if test "$DSO_PIC_CFLAGS"; then
|
|
ac_configure_args="$ac_configure_args --with-pic"
|
|
fi
|
|
ac_configure_args="$ac_configure_args \
|
|
CC=\"$CC\" \
|
|
CXX=\"$CXX\" \
|
|
CPP=\"$CPP\" \
|
|
CFLAGS=\"$CFLAGS\" \
|
|
CXXFLAGS=\"$CXXFLAGS\" \
|
|
CPPFLAGS=\"$CPPFLAGS\" \
|
|
LD=\"$LD\" \
|
|
LDFLAGS=\"$LDFLAGS\" \
|
|
AR=\"$AR\" \
|
|
RANLIB=\"$RANLIB\" \
|
|
STRIP=\"$STRIP\" \
|
|
LIBS=\"$LIBS\""
|
|
|
|
# Use a separate cache file for libunwind, since it does not use caching.
|
|
mkdir -p $_objdir/tools/profiler/libunwind/src
|
|
old_cache_file=$cache_file
|
|
cache_file=$_objdir/tools/profiler/libunwind/src/config.cache
|
|
old_config_files=$CONFIG_FILES
|
|
unset CONFIG_FILES
|
|
AC_OUTPUT_SUBDIRS(tools/profiler/libunwind/src)
|
|
cache_file=$old_cache_file
|
|
ac_configure_args="$old_ac_configure_args"
|
|
CONFIG_FILES=$old_config_files
|
|
fi
|
|
|
|
# Run freetype configure script
|
|
|
|
if test "$MOZ_TREE_FREETYPE"; then
|
|
export CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS -std=c99"
|
|
export CPPFLAGS="$CPPFLAGS $MOZ_DEBUG_FLAGS"
|
|
export CXXFLAGS="$CXXFLAGS $MOZ_DEBUG_FLAGS"
|
|
export LDFLAGS="$LDFLAGS $MOZ_DEBUG_LDFLAGS"
|
|
export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in"
|
|
ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes"
|
|
AC_OUTPUT_SUBDIRS(modules/freetype2)
|
|
fi
|
|
|
|
if test -z "$direct_nspr_config"; then
|
|
dnl ========================================================
|
|
dnl = Setup a nice relatively clean build environment for
|
|
dnl = sub-configures.
|
|
dnl ========================================================
|
|
CC="$_SUBDIR_CC"
|
|
CXX="$_SUBDIR_CXX"
|
|
CFLAGS="$_SUBDIR_CFLAGS"
|
|
CPPFLAGS="$_SUBDIR_CPPFLAGS"
|
|
CXXFLAGS="$_SUBDIR_CXXFLAGS"
|
|
LDFLAGS="$_SUBDIR_LDFLAGS"
|
|
HOST_CC="$_SUBDIR_HOST_CC"
|
|
HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
|
|
HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
|
|
RC=
|
|
fi
|
|
|
|
unset MAKEFILES
|
|
unset CONFIG_FILES
|
|
|
|
# No need to run subconfigures when building with LIBXUL_SDK_DIR
|
|
if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
|
|
|
|
export WRAP_LDFLAGS
|
|
|
|
if test -n "$_WRAP_MALLOC"; then
|
|
# Avoid doubling wrap malloc arguments
|
|
_SUBDIR_CONFIG_ARGS="`echo $_SUBDIR_CONFIG_ARGS | sed -e 's/--enable-wrap-malloc *//'`"
|
|
fi
|
|
|
|
if test -z "$MOZ_NATIVE_NSPR"; then
|
|
ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
|
|
if test -z "$MOZ_DEBUG"; then
|
|
ac_configure_args="$ac_configure_args --disable-debug"
|
|
else
|
|
ac_configure_args="$ac_configure_args --enable-debug"
|
|
fi
|
|
if test "$MOZ_OPTIMIZE" = "1"; then
|
|
ac_configure_args="$ac_configure_args --enable-optimize"
|
|
elif test -z "$MOZ_OPTIMIZE"; then
|
|
ac_configure_args="$ac_configure_args --disable-optimize"
|
|
fi
|
|
if test -n "$HAVE_64BIT_OS"; then
|
|
ac_configure_args="$ac_configure_args --enable-64bit"
|
|
fi
|
|
if test -n "$USE_ARM_KUSER"; then
|
|
ac_configure_args="$ac_configure_args --with-arm-kuser"
|
|
fi
|
|
ac_configure_args="$ac_configure_args $NSPR_CONFIGURE_ARGS"
|
|
if test -n "$MOZ_LINKER" -a -z "$MOZ_OLD_LINKER" -a "$ac_cv_func_dladdr" = no ; then
|
|
# dladdr is supported by the new linker, even when the system linker doesn't
|
|
# support it. Trick nspr into using dladdr when it's not supported.
|
|
_SAVE_CPPFLAGS="$CPPFLAGS"
|
|
export CPPFLAGS="-include $_topsrcdir/mozglue/linker/dladdr.h $CPPFLAGS"
|
|
fi
|
|
_SAVE_LDFLAGS="$LDFLAGS"
|
|
export LDFLAGS="$LDFLAGS $NSPR_LDFLAGS"
|
|
AC_OUTPUT_SUBDIRS(nsprpub)
|
|
LDFLAGS="$_SAVE_LDFLAGS"
|
|
if test -n "$MOZ_LINKER" -a -z "$MOZ_OLD_LINKER" -a "$ac_cv_func_dladdr" = no; then
|
|
unset CPPFLAGS
|
|
CPPFLAGS="$_SAVE_CFLAGS"
|
|
fi
|
|
ac_configure_args="$_SUBDIR_CONFIG_ARGS"
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Setup a nice relatively clean build environment for
|
|
dnl = sub-configures.
|
|
dnl ========================================================
|
|
CC="$_SUBDIR_CC"
|
|
CXX="$_SUBDIR_CXX"
|
|
CFLAGS="$_SUBDIR_CFLAGS"
|
|
CPPFLAGS="$_SUBDIR_CPPFLAGS"
|
|
CXXFLAGS="$_SUBDIR_CXXFLAGS"
|
|
LDFLAGS="$_SUBDIR_LDFLAGS"
|
|
HOST_CC="$_SUBDIR_HOST_CC"
|
|
HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
|
|
HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
|
|
RC=
|
|
|
|
# Run the SpiderMonkey 'configure' script.
|
|
dist=$MOZ_BUILD_ROOT/dist
|
|
ac_configure_args="$_SUBDIR_CONFIG_ARGS"
|
|
ac_configure_args="$ac_configure_args --enable-threadsafe"
|
|
if test "$BUILD_CTYPES"; then
|
|
# Build js-ctypes on the platforms we can.
|
|
ac_configure_args="$ac_configure_args --enable-ctypes"
|
|
fi
|
|
if test -z "$JS_SHARED_LIBRARY" ; then
|
|
ac_configure_args="$ac_configure_args --disable-shared-js"
|
|
fi
|
|
if test -z "$MOZ_NATIVE_NSPR"; then
|
|
ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
|
|
ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
|
|
fi
|
|
ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
|
|
ac_configure_args="$ac_configure_args --prefix=$dist"
|
|
if test "$MOZ_MEMORY"; then
|
|
ac_configure_args="$ac_configure_args --enable-jemalloc"
|
|
fi
|
|
if test -n "$MOZ_GLUE_LDFLAGS"; then
|
|
export MOZ_GLUE_LDFLAGS
|
|
fi
|
|
if test -n "$MOZ_GLUE_PROGRAM_LDFLAGS"; then
|
|
export MOZ_GLUE_PROGRAM_LDFLAGS
|
|
fi
|
|
if test "$MOZ_NATIVE_ZLIB" != 1 -a "$OS_ARCH" = "WINNT"; then
|
|
MOZ_ZLIB_LIBS=
|
|
fi
|
|
export MOZ_NATIVE_ZLIB
|
|
export MOZ_ZLIB_CFLAGS
|
|
export MOZ_ZLIB_LIBS
|
|
export MOZ_APP_NAME
|
|
export STLPORT_CPPFLAGS
|
|
export STLPORT_LDFLAGS
|
|
export STLPORT_LIBS
|
|
AC_OUTPUT_SUBDIRS(js/src)
|
|
ac_configure_args="$_SUBDIR_CONFIG_ARGS"
|
|
|
|
fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR
|