Mirror of roytam1's Pale Moon fork just in case Moonchild and Tobin decide to go after him
https://github.com/roytam1/palemoon27
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
8896 lines
292 KiB
8896 lines
292 KiB
dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*- |
|
dnl vi: set tabstop=4 shiftwidth=4 expandtab syntax=m4: |
|
dnl This Source Code Form is subject to the terms of the Mozilla Public |
|
dnl License, v. 2.0. If a copy of the MPL was not distributed with this |
|
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/. |
|
|
|
dnl Process this file with autoconf to produce a configure script. |
|
dnl ======================================================== |
|
|
|
AC_PREREQ(2.13) |
|
AC_INIT(config/config.mk) |
|
AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf) |
|
AC_CANONICAL_SYSTEM |
|
TARGET_CPU="${target_cpu}" |
|
TARGET_VENDOR="${target_vendor}" |
|
TARGET_OS="${target_os}" |
|
|
|
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 in-tree |
|
dnl ======================================================== |
|
MOZJPEG=62 |
|
MOZPNG=10628 |
|
MOZWEBP=043 |
|
NSPR_VERSION=4 |
|
NSPR_MINVER=4.15.0 |
|
NSS_VERSION=3 |
|
|
|
dnl Set the minimum version of toolkit libs used by mozilla |
|
dnl ======================================================== |
|
GLIB_VERSION=2.22 |
|
# 2_26 is the earliest version we can set GLIB_VERSION_MIN_REQUIRED. |
|
# The macro won't be used when compiling with earlier versions anyway. |
|
GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26 |
|
GIO_VERSION=2.22 |
|
PERL_VERSION=5.006 |
|
CAIRO_VERSION=1.10 |
|
PANGO_VERSION=1.22.0 |
|
GTK2_VERSION=2.18.0 |
|
GTK3_VERSION=3.4.0 |
|
WINDRES_VERSION=2.14.90 |
|
W32API_VERSION=3.14 |
|
GNOMEUI_VERSION=2.2.0 |
|
GCONF_VERSION=1.2.1 |
|
STARTUP_NOTIFICATION_VERSION=0.8 |
|
DBUS_VERSION=0.60 |
|
SQLITE_VERSION=3.21.0 |
|
|
|
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 ======================================================== |
|
MOZ_USE_PTHREADS= |
|
_PTHREAD_LDFLAGS="" |
|
|
|
dnl Do not allow objdir == srcdir builds. |
|
dnl ============================================================== |
|
_topsrcdir=`cd \`dirname $0\`; pwd` |
|
_objdir=`pwd` |
|
|
|
dnl TODO Don't exempt L10N builds once bug 842760 is resolved. |
|
if test "$_topsrcdir" = "$_objdir" -a "${with_l10n_base+set}" != set; then |
|
echo " ***" |
|
echo " * Building directly in the main source directory is not allowed." |
|
echo " *" |
|
echo " * To build, you must run configure from a separate directory" |
|
echo " * (referred to as an object directory)." |
|
echo " *" |
|
echo " * If you are building with a mozconfig, you will need to change your" |
|
echo " * mozconfig to point to a different object directory." |
|
echo " ***" |
|
exit 1 |
|
fi |
|
|
|
# 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 |
|
MOZ_BUILD_ROOT=`pwd -W 2>/dev/null || pwd` |
|
|
|
MOZ_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 |
|
|
|
if test -n "$GAIADIR" -a ! -d "$GAIADIR" ; then |
|
AC_MSG_ERROR([GAIADIR '$GAIADIR' isn't a valid directory]) |
|
fi |
|
|
|
AC_SUBST(GAIADIR) |
|
if test -n "$GAIADIR" ; then |
|
AC_DEFINE(PACKAGE_GAIA) |
|
fi |
|
|
|
if test -n "$FXOS_SIMULATOR" -a -z "$GAIADIR" ; then |
|
AC_MSG_ERROR([FXOS_SIMULATOR=1 requires GAIADIR to be defined]) |
|
fi |
|
|
|
if test -n "$FXOS_SIMULATOR" ; then |
|
AC_DEFINE(FXOS_SIMULATOR) |
|
AC_SUBST(FXOS_SIMULATOR) |
|
fi |
|
|
|
if test -n "$MOZTTDIR" -a ! -d "$MOZTTDIR" ; then |
|
AC_MSG_ERROR([MOZTTDIR '$MOZTTDIR' isn't a valid directory]) |
|
fi |
|
|
|
AC_SUBST(MOZTTDIR) |
|
if test -n "$MOZTTDIR" ; then |
|
AC_DEFINE(PACKAGE_MOZTT) |
|
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 Default to ICS |
|
ANDROID_VERSION=15 |
|
if test -n "${PLATFORM_SDK_VERSION}"; then |
|
ANDROID_VERSION="${PLATFORM_SDK_VERSION}" |
|
fi |
|
|
|
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 |
|
|
|
if ! test -e "$gonkdir/ndk/sources/cxx-stl/stlport/src/iostream.cpp"; then |
|
AC_MSG_ERROR([Couldn't find path to stlport sources in the gonk tree]) |
|
fi |
|
STLPORT_CPPFLAGS="-I$_topsrcdir/build/stlport/stlport -I$gonkdir/ndk/sources/cxx-stl/system/include" |
|
|
|
case "$ANDROID_VERSION" in |
|
15) |
|
GONK_INCLUDES="-I$gonkdir/frameworks/base/opengl/include -I$gonkdir/frameworks/base/native/include -I$gonkdir/frameworks/base/include -I$gonkdir/frameworks/base/services/camera -I$gonkdir/frameworks/base/include/media/ -I$gonkdir/frameworks/base/include/media/stagefright -I$gonkdir/frameworks/base/include/media/stagefright/openmax -I$gonkdir/frameworks/base/media/libstagefright/rtsp -I$gonkdir/frameworks/base/media/libstagefright/include -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib -I$gonkdir/dalvik/libnativehelper/include/nativehelper" |
|
MOZ_B2G_BT=1 |
|
MOZ_B2G_BT_BLUEZ=1 |
|
MOZ_NFC=1 |
|
MOZ_B2G_CAMERA=1 |
|
MOZ_OMX_DECODER=1 |
|
AC_SUBST(MOZ_OMX_DECODER) |
|
MOZ_RTSP=1 |
|
MOZ_FMP4=1 |
|
MOZ_SECUREELEMENT=1 |
|
;; |
|
17|18) |
|
GONK_INCLUDES="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include -I$gonkdir/external/mdnsresponder/mDNSShared" |
|
if test -d "$gonkdir/external/bluetooth/bluez"; then |
|
GONK_INCLUDES="$GONK_INCLUDES -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib" |
|
MOZ_B2G_BT=1 |
|
MOZ_B2G_BT_BLUEZ=1 |
|
elif test -d "$gonkdir/system/bluetoothd"; then |
|
MOZ_B2G_BT=1 |
|
MOZ_B2G_BT_DAEMON=1 |
|
fi |
|
|
|
MOZ_RTSP=1 |
|
MOZ_NFC=1 |
|
MOZ_B2G_CAMERA=1 |
|
MOZ_OMX_DECODER=1 |
|
AC_SUBST(MOZ_OMX_DECODER) |
|
MOZ_OMX_ENCODER=1 |
|
AC_SUBST(MOZ_OMX_ENCODER) |
|
AC_DEFINE(MOZ_OMX_ENCODER) |
|
MOZ_FMP4=1 |
|
MOZ_SECUREELEMENT=1 |
|
;; |
|
19) |
|
GONK_INCLUDES="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include -I$gonkdir/external/mdnsresponder/mDNSShared" |
|
MOZ_B2G_CAMERA=1 |
|
if test -d "$gonkdir/system/bluetoothd"; then |
|
MOZ_B2G_BT=1 |
|
MOZ_B2G_BT_DAEMON=1 |
|
fi |
|
MOZ_NFC=1 |
|
MOZ_RTSP=1 |
|
MOZ_OMX_DECODER=1 |
|
MOZ_OMX_ENCODER=1 |
|
AC_DEFINE(MOZ_OMX_ENCODER) |
|
MOZ_AUDIO_OFFLOAD=1 |
|
MOZ_SECUREELEMENT=1 |
|
AC_SUBST(MOZ_AUDIO_OFFLOAD) |
|
AC_DEFINE(MOZ_AUDIO_OFFLOAD) |
|
MOZ_FMP4=1 |
|
;; |
|
21|22) |
|
GONK_INCLUDES="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include -I$gonkdir/external/mdnsresponder/mDNSShared" |
|
MOZ_AUDIO_OFFLOAD=1 |
|
MOZ_OMX_DECODER=1 |
|
MOZ_OMX_ENCODER=1 |
|
AC_DEFINE(MOZ_OMX_ENCODER) |
|
AC_SUBST(MOZ_AUDIO_OFFLOAD) |
|
AC_DEFINE(MOZ_AUDIO_OFFLOAD) |
|
MOZ_FMP4= |
|
MOZ_B2G_CAMERA=1 |
|
if test -d "$gonkdir/system/bluetoothd"; then |
|
MOZ_B2G_BT=1 |
|
MOZ_B2G_BT_DAEMON=1 |
|
fi |
|
MOZ_NFC=1 |
|
MOZ_RTSP=1 |
|
;; |
|
*) |
|
AC_MSG_ERROR([Unsupported platform version: $ANDROID_VERSION]) |
|
;; |
|
esac |
|
CPPFLAGS="-DANDROID $TARGET_C_INCLUDES -I$gonkdir/system -I$gonkdir/system/core/include -isystem $gonkdir/bionic -I$gonkdir/hardware/libhardware/include -I$gonkdir/external/valgrind/fxos-include $GONK_INCLUDES $CPPFLAGS" |
|
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" |
|
|
|
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_UNQUOTED(ANDROID_VERSION, $ANDROID_VERSION) |
|
AC_SUBST(ANDROID_VERSION) |
|
AC_DEFINE(HAVE_SYS_UIO_H) |
|
AC_DEFINE(HAVE_PTHREADS) |
|
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 AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269) |
|
AR_FLAGS='crs $@' |
|
|
|
if test -z "$COMPILE_ENVIRONMENT"; then |
|
if test "$target" != "$host"; then |
|
# Assert that we're cross compiling, but don't require a compile toolchain (as |
|
# MOZ_CROSS_COMPILER does below). |
|
CROSS_COMPILE=1 |
|
AC_DEFINE(CROSS_COMPILE) |
|
fi |
|
fi # !COMPILE_ENVIRONMENT |
|
|
|
if test "$COMPILE_ENVIRONMENT"; then |
|
|
|
if test "$target" != "$host"; then |
|
MOZ_CROSS_COMPILER |
|
else |
|
AC_PROG_CC |
|
case "$target" in |
|
*-mingw*) |
|
# Work around the conftest.exe access problem on Windows |
|
sleep 2 |
|
esac |
|
AC_PROG_CXX |
|
AC_PROG_RANLIB |
|
MOZ_PATH_PROGS(AS, $AS as, $CC) |
|
AC_CHECK_PROGS(AR, ar, :) |
|
AC_CHECK_PROGS(LD, ld, :) |
|
AC_CHECK_PROGS(STRIP, strip, :) |
|
AC_CHECK_PROGS(WINDRES, windres, :) |
|
AC_CHECK_PROGS(OTOOL, otool, :) |
|
if test -z "$HOST_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 |
|
|
|
MOZ_CHECK_COMPILER_WRAPPER |
|
|
|
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 Special win32 checks |
|
dnl ======================================================== |
|
|
|
# Target the Windows 8.1 SDK by default |
|
WINSDK_TARGETVER=603 |
|
WINVER=502 |
|
|
|
MOZ_ARG_WITH_STRING(windows-version, |
|
[ --with-windows-version=WINSDK_TARGETVER |
|
Windows SDK version to target. Win8.1 (603) is |
|
currently the minimum supported version.], |
|
WINSDK_TARGETVER=$withval) |
|
|
|
# Currently only version 603 is allowed |
|
case "$WINSDK_TARGETVER" in |
|
603) |
|
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_MAJOR_VERSION=`echo ${MSVC_VERSION_FULL} | cut -c 1-2` |
|
_CC_MINOR_VERSION=`echo ${MSVC_VERSION_FULL} | cut -c 3-4` |
|
_CC_BUILD_VERSION=`echo ${MSVC_VERSION_FULL} | cut -c 5-` |
|
_MSC_VER=${CC_VERSION} |
|
|
|
_CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | cut -c 1-2` |
|
|
|
if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then |
|
AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.]) |
|
fi |
|
|
|
AC_DEFINE(_CRT_SECURE_NO_WARNINGS) |
|
AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS) |
|
|
|
if test "$_CC_MAJOR_VERSION" = "18" -a "$_CC_BUILD_VERSION" -ge "30723"; then |
|
_CC_SUITE=12 |
|
MSVS_VERSION=2013 |
|
MSVC_REDIST_CRT_DIR=Microsoft.VC120.CRT |
|
MSVC_C_RUNTIME_DLL=msvcr120.dll |
|
MSVC_CXX_RUNTIME_DLL=msvcp120.dll |
|
MSVC_REDIST_OPENMP_DIR=Microsoft.VC120.OPENMP |
|
MSVC_OPENMP_DLL=vcomp120.dll |
|
elif test "$_CC_MAJOR_VERSION" = "19"; then |
|
_CC_SUITE=14 |
|
MSVS_VERSION=2015 |
|
MSVC_C_RUNTIME_DLL=vcruntime140.dll |
|
MSVC_CXX_RUNTIME_DLL=msvcp140.dll |
|
MSVC_APPCRT_DLL=appcrt140.dll |
|
MSVC_DESKTOPCRT_DLL=desktopcrt140.dll |
|
|
|
# -Wv:18 disables all warnings introduced after VS2013 |
|
# See http://blogs.msdn.com/b/vcblog/archive/2014/11/12/improvements-to-warnings-in-the-c-compiler.aspx |
|
CFLAGS="$CFLAGS -Wv:18" |
|
CXXFLAGS="$CXXFLAGS -Wv:18" |
|
|
|
# -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146) |
|
CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-" |
|
|
|
# https://connect.microsoft.com/VisualStudio/feedback/details/888527/warnings-on-dbghelp-h |
|
# for dbghelp.h, imagehlp.h, and shobj.h |
|
# C4091: 'typedef ': ignored on left of '' when no variable is declared |
|
CFLAGS="$CFLAGS -wd4091" |
|
CXXFLAGS="$CXXFLAGS -wd4091" |
|
else |
|
AC_MSG_ERROR([This version (${_CC_MAJOR_VERSION}.${_CC_MINOR_VERSION}.${_CC_BUILD_VERSION}) of the MSVC compiler is unsupported. |
|
You must install Visual C++ 2013 Update 3 or newer in order to build. |
|
See https://developer.mozilla.org/en/Windows_Build_Prerequisites.]) |
|
fi |
|
AC_SUBST(MSVS_VERSION) |
|
AC_SUBST(MSVC_REDIST_CRT_DIR) |
|
AC_SUBST(MSVC_C_RUNTIME_DLL) |
|
AC_SUBST(MSVC_CXX_RUNTIME_DLL) |
|
AC_SUBST(MSVC_REDIST_OPENMP_DIR) |
|
AC_SUBST(MSVC_OPENMP_DLL) |
|
AC_SUBST(MSVC_APPCRT_DLL) |
|
AC_SUBST(MSVC_DESKTOPCRT_DLL) |
|
|
|
# Disable SEH on clang-cl because it doesn't implement them yet. |
|
if test -z "$CLANG_CL"; then |
|
AC_DEFINE(HAVE_SEH_EXCEPTIONS) |
|
else |
|
# Send our CFLAGS to NSS |
|
MOZ_CFLAGS_NSS=1 |
|
AC_DEFINE_UNQUOTED(GTEST_HAS_SEH, 0) |
|
fi |
|
|
|
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 |
|
|
|
#if test -f "$WIN32_REDIST_DIR/$MSVC_C_RUNTIME_DLL"; then |
|
# AC_MSG_ERROR([The Win32 Redist directory must be set to the directory above Microsoft.VCXX0.CRT]) |
|
#fi |
|
WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd` |
|
fi |
|
|
|
dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool', |
|
dnl not something else like "magnetic tape manipulation utility". |
|
MSMT_TOOL=`${MT-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 |
|
|
|
# Set midl environment |
|
case "$target" in |
|
i*86-*) |
|
MIDL_FLAGS="${MIDL_FLAGS} -env win32" |
|
;; |
|
x86_64-*) |
|
MIDL_FLAGS="${MIDL_FLAGS} -env x64" |
|
;; |
|
esac |
|
|
|
unset _MSVC_VER_FILTER |
|
|
|
AC_CACHE_CHECK(for overridable _RAISE, |
|
ac_cv_have__RAISE, |
|
[ |
|
AC_LANG_SAVE |
|
AC_LANG_CPLUSPLUS |
|
_SAVE_CXXFLAGS="$CXXFLAGS" |
|
CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0" |
|
AC_TRY_COMPILE([#include <xstddef> |
|
#undef _RAISE |
|
#define _RAISE(x) externallyDefinedFunction((x).what()) |
|
#include <vector> |
|
], |
|
[std::vector<int> v; return v.at(1);], |
|
ac_cv_have__RAISE="no", |
|
ac_cv_have__RAISE="yes") |
|
CXXFLAGS="$_SAVE_CXXFLAGS" |
|
AC_LANG_RESTORE |
|
]) |
|
if test "$ac_cv_have__RAISE" = "yes"; then |
|
WRAP_STL_INCLUDES=1 |
|
MOZ_MSVC_STL_WRAP_RAISE=1 |
|
AC_DEFINE(MOZ_MSVC_STL_WRAP_RAISE) |
|
else |
|
AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK. Please file a bug describing this error and your build configuration.]) |
|
fi |
|
|
|
if test "$WRAP_STL_INCLUDES" = "1"; then |
|
STL_FLAGS='-I$(DIST)/stl_wrappers' |
|
fi |
|
CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0" |
|
CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0" |
|
|
|
MOZ_FIND_WINSDK_VERSION |
|
else |
|
# Check w32api version |
|
_W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'` |
|
_W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'` |
|
AC_MSG_CHECKING([for w32api version >= $W32API_VERSION]) |
|
AC_TRY_COMPILE([#include <w32api.h>], |
|
#if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \ |
|
(__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \ |
|
__W32API_MINOR_VERSION < $_W32API_MINOR_VERSION) |
|
#error "test failed." |
|
#endif |
|
, [ res=yes ], [ res=no ]) |
|
AC_MSG_RESULT([$res]) |
|
if test "$res" != "yes"; then |
|
AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.]) |
|
fi |
|
# Check windres version |
|
AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION]) |
|
_WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'` |
|
AC_MSG_RESULT([$_WINDRES_VERSION]) |
|
_WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'` |
|
_WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'` |
|
_WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'` |
|
WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'` |
|
WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'` |
|
WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'` |
|
if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \ |
|
"$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \ |
|
"$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \ |
|
"$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \ |
|
"$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \ |
|
"$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION" |
|
then |
|
AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.]) |
|
fi |
|
|
|
AC_CHECK_PROGS(MIDL, $target-widl widl) |
|
if test -n "$MIDL"; then |
|
case "$target" in |
|
i*86-*) |
|
MIDL_FLAGS="$MIDL_FLAGS --win32 -m32" |
|
;; |
|
x86_64-*) |
|
MIDL_FLAGS="$MIDL_FLAGS --win64 -m64" |
|
;; |
|
esac |
|
fi |
|
|
|
# strsafe.h on mingw uses macros for function deprecation that pollutes namespace |
|
# causing problems with local implementations with the same name. |
|
AC_DEFINE(STRSAFE_NO_DEPRECATE) |
|
|
|
MOZ_WINSDK_MAXVER=0x06030000 |
|
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) |
|
AC_DEFINE_UNQUOTED(MOZ_WINSDK_MAXVER,$MOZ_WINSDK_MAXVER) |
|
AC_SUBST(MOZ_WINSDK_MAXVER) |
|
;; |
|
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_RAISE) |
|
|
|
dnl ======================================================== |
|
dnl Checks for programs. |
|
dnl ======================================================== |
|
AC_PROG_INSTALL |
|
AC_PROG_LN_S |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 ======================================================== |
|
|
|
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) |
|
|
|
MOZ_ARG_WITH_STRING(unify-dist, |
|
[ --with-unify-dist=dir Location of the dist directory to unify with at packaging time (Mac OS X universal build only)], |
|
UNIFY_DIST=$withval) |
|
if test -n "$UNIVERSAL_BINARY"; then |
|
if test -z "$UNIFY_DIST"; then |
|
AC_MSG_ERROR([You need to provide the --with-unify-dist=dir argument when performing a universal build]) |
|
fi |
|
case "$UNIFY_DIST" in |
|
/*) |
|
;; |
|
*) |
|
UNIFY_DIST="${MOZ_BUILD_ROOT}/${UNIFY_DIST}" |
|
;; |
|
esac |
|
fi |
|
AC_SUBST(UNIFY_DIST) |
|
|
|
dnl ======================================================== |
|
dnl = Mac OS X SDK support |
|
dnl ======================================================== |
|
MACOS_SDK_DIR= |
|
MOZ_ARG_WITH_STRING(macos-sdk, |
|
[ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)], |
|
MACOS_SDK_DIR=$withval) |
|
|
|
MACOS_PRIVATE_FRAMEWORKS_DIR_DEFAULTED= |
|
MOZ_ARG_WITH_STRING(macos-private-frameworks, |
|
[ --with-macos-private-frameworks=dir Location of private frameworks to use (Mac OS X only)], |
|
MACOS_PRIVATE_FRAMEWORKS_DIR=$withval, |
|
MACOS_PRIVATE_FRAMEWORKS_DIR=/System/Library/PrivateFrameworks |
|
MACOS_PRIVATE_FRAMEWORKS_DEFAULTED=1) |
|
|
|
if test -z "${MACOS_PRIVATE_FRAMEWORKS_DEFAULTED}"; then |
|
if test -z "$CROSS_COMPILE"; then |
|
AC_MSG_WARN([You should only be using --with-macos-private-frameworks when cross-compiling.]) |
|
fi |
|
if test ! -d "$MACOS_PRIVATE_FRAMEWORKS_DIR"; then |
|
AC_MSG_ERROR([PrivateFrameworks directory not found.]) |
|
fi |
|
fi |
|
|
|
dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use. |
|
AC_SUBST(MACOS_SDK_DIR) |
|
AC_SUBST(MACOS_PRIVATE_FRAMEWORKS_DIR) |
|
|
|
if test "$MACOS_SDK_DIR"; then |
|
dnl Sync this section with the ones in NSPR and NSS. |
|
dnl Changes to the cross environment here need to be accounted for in |
|
dnl the libIDL checks (below) and xpidl build. |
|
|
|
if test ! -d "$MACOS_SDK_DIR"; then |
|
AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must |
|
specify a valid SDK. SDKs are installed when the optional cross-development |
|
tools are selected during the Xcode/Developer Tools installation.]) |
|
fi |
|
|
|
CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}" |
|
CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}" |
|
|
|
dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER. |
|
CPP="$CPP -isysroot ${MACOS_SDK_DIR}" |
|
CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}" |
|
|
|
AC_LANG_SAVE |
|
AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination]) |
|
AC_LANG_CPLUSPLUS |
|
AC_TRY_COMPILE([#include <new>],[], |
|
result=yes, |
|
result=no) |
|
AC_LANG_RESTORE |
|
AC_MSG_RESULT($result) |
|
|
|
if test "$result" = "no" ; then |
|
AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.]) |
|
fi |
|
fi |
|
|
|
fi # COMPILE_ENVIRONMENT |
|
|
|
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_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib' |
|
|
|
MOZ_FS_LAYOUT=unix |
|
|
|
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 ;; |
|
dragonfly*) OS_ARCH=DragonFly OS_TARGET=DragonFly ;; |
|
freebsd*) OS_ARCH=FreeBSD OS_TARGET=FreeBSD ;; |
|
netbsd*) OS_ARCH=NetBSD OS_TARGET=NetBSD ;; |
|
openbsd*) OS_ARCH=OpenBSD OS_TARGET=OpenBSD ;; |
|
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 |
|
;; |
|
kfreebsd*-gnu) |
|
HOST_OS_ARCH=GNU_kFreeBSD |
|
;; |
|
gnu*) |
|
HOST_OS_ARCH=GNU |
|
;; |
|
dragonfly*) |
|
HOST_OS_ARCH=DragonFly |
|
;; |
|
freebsd*) |
|
HOST_OS_ARCH=FreeBSD |
|
;; |
|
netbsd*) |
|
HOST_OS_ARCH=NetBSD |
|
;; |
|
openbsd*) |
|
HOST_OS_ARCH=OpenBSD |
|
;; |
|
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) |
|
;; |
|
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} |
|
;; |
|
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 | powerpc64le | ppc64le) |
|
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" |
|
;; |
|
|
|
aarch64*) |
|
CPU_ARCH=aarch64 |
|
;; |
|
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 = Nightly build |
|
dnl ======================================================== |
|
MOZ_ARG_ENABLE_BOOL(nightly-build, |
|
[ --enable-nightly-build Enable Nightly build (default=no)], |
|
NIGHTLY_BUILD=1, |
|
NIGHTLY_BUILD= ) |
|
if test -n "$NIGHTLY_BUILD"; then |
|
AC_DEFINE(NIGHTLY_BUILD) |
|
fi |
|
AC_SUBST(NIGHTLY_BUILD) |
|
|
|
dnl ======================================================== |
|
dnl Suppress Clang Argument Warnings |
|
dnl ======================================================== |
|
if test -n "${CLANG_CC}${CLANG_CL}"; then |
|
_WARNINGS_CFLAGS="-Qunused-arguments ${_WARNINGS_CFLAGS}" |
|
CPPFLAGS="-Qunused-arguments ${CPPFLAGS}" |
|
fi |
|
if test -n "${CLANG_CXX}${CLANG_CL}"; then |
|
_WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}" |
|
fi |
|
|
|
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 |
|
if test -n "$CLANG_CL"; then |
|
# Look for clang_rt.asan_dynamic-i386.dll |
|
MOZ_CLANG_RT_ASAN_LIB=clang_rt.asan_dynamic-i386.dll |
|
# We use MOZ_PATH_PROG in order to get a Windows style path. |
|
MOZ_PATH_PROG(MOZ_CLANG_RT_ASAN_LIB_PATH, $MOZ_CLANG_RT_ASAN_LIB) |
|
if test -z "$MOZ_CLANG_RT_ASAN_LIB_PATH"; then |
|
AC_MSG_ERROR([Couldn't find $MOZ_CLANG_RT_ASAN_LIB. It should be available in the same location as clang-cl.]) |
|
fi |
|
AC_SUBST(MOZ_CLANG_RT_ASAN_LIB_PATH) |
|
fi |
|
AC_DEFINE(MOZ_ASAN) |
|
MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer) |
|
fi |
|
AC_SUBST(MOZ_ASAN) |
|
|
|
dnl ======================================================== |
|
dnl = Use Memory Sanitizer |
|
dnl ======================================================== |
|
MOZ_ARG_ENABLE_BOOL(memory-sanitizer, |
|
[ --enable-memory-sanitizer Enable Memory Sanitizer (default=no)], |
|
MOZ_MSAN=1, |
|
MOZ_MSAN= ) |
|
if test -n "$MOZ_MSAN"; then |
|
MOZ_LLVM_HACKS=1 |
|
AC_DEFINE(MOZ_MSAN) |
|
MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer) |
|
fi |
|
AC_SUBST(MOZ_MSAN) |
|
|
|
dnl ======================================================== |
|
dnl = Use Thread Sanitizer |
|
dnl ======================================================== |
|
MOZ_ARG_ENABLE_BOOL(thread-sanitizer, |
|
[ --enable-thread-sanitizer Enable Thread Sanitizer (default=no)], |
|
MOZ_TSAN=1, |
|
MOZ_TSAN= ) |
|
if test -n "$MOZ_TSAN"; then |
|
MOZ_LLVM_HACKS=1 |
|
AC_DEFINE(MOZ_TSAN) |
|
MOZ_PATH_PROG(LLVM_SYMBOLIZER, llvm-symbolizer) |
|
fi |
|
AC_SUBST(MOZ_TSAN) |
|
|
|
# The LLVM symbolizer is used by all sanitizers |
|
AC_SUBST(LLVM_SYMBOLIZER) |
|
|
|
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 = Enable treating compiler warnings as errors |
|
dnl ======================================================== |
|
MOZ_ARG_ENABLE_BOOL(warnings-as-errors, |
|
[ --enable-warnings-as-errors |
|
Enable treating warnings as errors], |
|
MOZ_ENABLE_WARNINGS_AS_ERRORS=1, |
|
MOZ_ENABLE_WARNINGS_AS_ERRORS=) |
|
|
|
dnl ======================================================== |
|
dnl GNU specific defaults |
|
dnl ======================================================== |
|
if test "$GNU_CC"; then |
|
MMX_FLAGS="-mmmx" |
|
SSE_FLAGS="-msse" |
|
SSE2_FLAGS="-msse2" |
|
# Per bug 719659 comment 2, some of the headers on ancient build machines |
|
# may require gnu89 inline semantics. But otherwise, we use C99. |
|
# But on OS X we just use C99 plus GNU extensions, in order to fix |
|
# bug 917526. |
|
CFLAGS="$CFLAGS -std=gnu99" |
|
if test "${OS_ARCH}" != Darwin; then |
|
CFLAGS="$CFLAGS -fgnu89-inline" |
|
fi |
|
# FIXME: Let us build with strict aliasing. bug 414641. |
|
CFLAGS="$CFLAGS -fno-strict-aliasing" |
|
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(DSO_SONAME) -o $@' |
|
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$(DSO_SONAME) -o $@' |
|
WARNINGS_AS_ERRORS='-Werror' |
|
DSO_CFLAGS='' |
|
DSO_PIC_CFLAGS='-fPIC' |
|
ASFLAGS="$ASFLAGS -fPIC" |
|
AC_MSG_CHECKING([for --noexecstack option to as]) |
|
_SAVE_CFLAGS=$CFLAGS |
|
CFLAGS="$CFLAGS -Wa,--noexecstack" |
|
AC_TRY_COMPILE(,,AC_MSG_RESULT([yes]) |
|
[ASFLAGS="$ASFLAGS -Wa,--noexecstack"], |
|
AC_MSG_RESULT([no])) |
|
CFLAGS=$_SAVE_CFLAGS |
|
AC_MSG_CHECKING([for -z noexecstack option to ld]) |
|
_SAVE_LDFLAGS=$LDFLAGS |
|
LDFLAGS="$LDFLAGS -Wl,-z,noexecstack" |
|
AC_TRY_LINK(,,AC_MSG_RESULT([yes]), |
|
AC_MSG_RESULT([no]) |
|
LDFLAGS=$_SAVE_LDFLAGS) |
|
|
|
AC_MSG_CHECKING([for -z text option to ld]) |
|
_SAVE_LDFLAGS=$LDFLAGS |
|
LDFLAGS="$LDFLAGS -Wl,-z,text" |
|
AC_TRY_LINK(,,AC_MSG_RESULT([yes]) |
|
[NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,-z,text"], |
|
AC_MSG_RESULT([no]) |
|
LDFLAGS=$_SAVE_LDFLAGS) |
|
|
|
AC_MSG_CHECKING([for --build-id option to ld]) |
|
_SAVE_LDFLAGS=$LDFLAGS |
|
LDFLAGS="$LDFLAGS -Wl,--build-id" |
|
AC_TRY_LINK(,,AC_MSG_RESULT([yes]) |
|
[NSPR_LDFLAGS="$NSPR_LDFLAGS -Wl,--build-id"], |
|
AC_MSG_RESULT([no]) |
|
LDFLAGS=$_SAVE_LDFLAGS) |
|
|
|
AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld]) |
|
HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED= |
|
_SAVE_LDFLAGS=$LDFLAGS |
|
LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ" |
|
AC_TRY_LINK(,,AC_MSG_RESULT([yes]) |
|
[HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1], |
|
AC_MSG_RESULT([no])) |
|
LDFLAGS=$_SAVE_LDFLAGS |
|
|
|
# Check for -mssse3 on $CC |
|
AC_MSG_CHECKING([if toolchain supports -mssse3 option]) |
|
HAVE_TOOLCHAIN_SUPPORT_MSSSE3= |
|
_SAVE_CFLAGS=$CFLAGS |
|
CFLAGS="$CFLAGS -mssse3" |
|
AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes]) |
|
[HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1], |
|
AC_MSG_RESULT([no])) |
|
CFLAGS=$_SAVE_CFLAGS |
|
|
|
# Check for -msse4.1 on $CC |
|
AC_MSG_CHECKING([if toolchain supports -msse4.1 option]) |
|
HAVE_TOOLCHAIN_SUPPORT_MSSE4_1= |
|
_SAVE_CFLAGS=$CFLAGS |
|
CFLAGS="$CFLAGS -msse4.1" |
|
AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes]) |
|
[HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1], |
|
AC_MSG_RESULT([no])) |
|
CFLAGS=$_SAVE_CFLAGS |
|
|
|
case "${CPU_ARCH}" in |
|
x86 | x86_64) |
|
AC_MSG_CHECKING(for x86 AVX2 asm support in compiler) |
|
AC_TRY_COMPILE([], |
|
[asm volatile ("vpermq \$0xd8,%ymm0,%ymm0 \n");], |
|
result="yes", result="no") |
|
AC_MSG_RESULT("$result") |
|
if test "$result" = "yes"; then |
|
HAVE_X86_AVX2=1 |
|
fi |
|
;; |
|
esac |
|
|
|
DSO_LDOPTS='-shared' |
|
if test "$GCC_USE_GNU_LD"; then |
|
# Some tools like ASan use a runtime library that is only |
|
# linked against executables, so we must allow undefined |
|
# symbols for shared objects in some cases. |
|
if test -z "$MOZ_NO_WLZDEFS"; then |
|
# Don't allow undefined symbols in libraries |
|
DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs" |
|
|
|
# BSDs need `environ' exposed for posix_spawn (bug 753046) |
|
case "$OS_TARGET" in |
|
DragonFly|FreeBSD|NetBSD|OpenBSD) |
|
if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then |
|
DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ" |
|
else |
|
DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols" |
|
fi |
|
;; |
|
esac |
|
fi |
|
fi |
|
|
|
# Turn on gcc/clang warnings: |
|
# https://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Warning-Options.html |
|
# |
|
# -Wall - turn on a lot of warnings |
|
# -Wchar-subscripts - catches array index using signed char |
|
# -Wcomment - catches nested comments |
|
# -Wdeclaration-after-statement - MSVC doesn't like these |
|
# -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives |
|
# -Wendif-labels - catches `#else FOO` and `#endif FOO` not in comment |
|
# -Wenum-compare - catches comparison of different enum types |
|
# -Wignored-qualifiers - catches returns types with qualifiers like const |
|
# -Wint-to-pointer-cast - catches cast to pointer from integer of different size |
|
# -Wmultichar - catches multicharacter integer constants like 'THIS' |
|
# -Wnon-literal-null-conversion - catches expressions used as a null pointer constant |
|
# -Wnonnull - catches NULL used with functions arguments marked as non-null |
|
# -Wpointer-arith - catches pointer arithmetic using NULL or sizeof(void) |
|
# -Wpointer-sign - catches mixing pointers to signed and unsigned types |
|
# -Wpointer-to-int-cast - catches casts from pointer to different sized int |
|
# -Wreturn-type - catches missing returns, zero false positives |
|
# -Wsequence-point - catches undefined order behavior like `a = a++` |
|
# -Wsign-compare - catches comparison of signed and unsigned types |
|
# -Wtrigraphs - catches unlikely use of trigraphs |
|
# -Wtype-limits - catches overflow bugs, few false positives |
|
# -Wunknown-pragmas - catches unexpected #pragma directives |
|
# |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wdeclaration-after-statement" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wempty-body" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wpointer-to-int-cast" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wsign-compare" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wtype-limits" |
|
|
|
# Treat some warnings as errors if --enable-warnings-as-errors: |
|
if test "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Werror=char-subscripts" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Werror=comment" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Werror=endif-labels" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Werror=enum-compare" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Werror=ignored-qualifiers" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Werror=int-to-pointer-cast" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Werror=multichar" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Werror=nonnull" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Werror=pointer-arith" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Werror=pointer-sign" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Werror=return-type" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Werror=sequence-point" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Werror=trigraphs" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Werror=uninitialized" |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Werror=unknown-pragmas" |
|
|
|
MOZ_C_SUPPORTS_WARNING(-Werror=, non-literal-null-conversion, ac_c_has_werror_non_literal_null_conversion) |
|
MOZ_C_SUPPORTS_WARNING(-Werror=, sometimes-uninitialized, ac_c_has_sometimes_uninitialized) |
|
fi |
|
|
|
# Turn off the following warnings that -Wall turns on: |
|
# -Wno-unused - lots of violations in third-party code |
|
# -Wno-unused-local-typedef - catches unused typedefs, which are commonly used in assertion macros |
|
# |
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-unused" |
|
|
|
MOZ_CXX_SUPPORTS_WARNING(-Wno-, unused-local-typedef, ac_cxx_has_wno_unused_local_typedef) |
|
|
|
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 |
|
|
|
_DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT' |
|
_USE_CPP_INCLUDE_FLAG=1 |
|
ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS" |
|
|
|
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 $(DSO_SONAME) -o $@' |
|
MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $(DSO_SONAME) -o $@' |
|
|
|
DSO_LDOPTS='-shared' |
|
if test "$GNU_LD"; then |
|
# Don't allow undefined symbols in libraries |
|
DSO_LDOPTS="$DSO_LDOPTS -z defs" |
|
fi |
|
|
|
DSO_CFLAGS='' |
|
DSO_PIC_CFLAGS='-KPIC' |
|
_DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT' |
|
fi |
|
|
|
if test "$GNU_CXX"; then |
|
# FIXME: Let us build with strict aliasing. bug 414641. |
|
CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing" |
|
|
|
# Turn on gcc/clang warnings: |
|
# https://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Warning-Options.html |
|
# |
|
# -Wall - turn on a lot of warnings |
|
# -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives |
|
# -Wendif-labels - catches `#else FOO` and `#endif FOO` not in comment |
|
# -Wint-to-pointer-cast - catches cast to pointer from integer of different size |
|
# -Wmissing-braces - catches aggregate initializers missing nested braces |
|
# -Wnon-literal-null-conversion - catches expressions used as a null pointer constant |
|
# -Woverloaded-virtual - function declaration hides virtual function from base class |
|
# -Wparentheses - catches `if (a=b)` and operator precedence bugs |
|
# -Wpointer-arith - catches pointer arithmetic using NULL or sizeof(void) |
|
# -Wrange-loop-analysis - catches copies during range-based for loops. |
|
# -Wreturn-type - catches missing returns, zero false positives |
|
# -Wsequence-point - catches undefined order behavior like `a = a++` |
|
# -Wsign-compare - catches comparison of signed and unsigned types |
|
# -Wswitch - catches switches without all enum cases or default case |
|
# -Wtrigraphs - catches unlikely use of trigraphs |
|
# -Wtype-limits - catches overflow bugs, few false positives |
|
# -Wunused-label - catches unused goto labels |
|
# -Wwrite-strings - catches non-const char* pointers to string literals |
|
# |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall" |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wempty-body" |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Woverloaded-virtual" |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wsign-compare" |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wwrite-strings" |
|
|
|
# Treat some warnings as errors if --enable-warnings-as-errors: |
|
if test "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=endif-labels" |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=int-to-pointer-cast" |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=missing-braces" |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=parentheses" |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=pointer-arith" |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=return-type" |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=sequence-point" |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=switch" |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=trigraphs" |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=type-limits" |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=uninitialized" |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=unused-label" |
|
|
|
MOZ_CXX_SUPPORTS_WARNING(-Werror=, non-literal-null-conversion, ac_cxx_has_werror_non_literal_null_conversion) |
|
MOZ_CXX_SUPPORTS_WARNING(-Werror=, range-loop-analysis, ac_cxx_has_range_loop_analysis) |
|
MOZ_CXX_SUPPORTS_WARNING(-Werror=, sometimes-uninitialized, ac_cxx_has_sometimes_uninitialized) |
|
fi |
|
|
|
# Turn off the following warnings that -Wall turns on: |
|
# -Wno-invalid-offsetof - we use offsetof on non-POD types frequently |
|
# -Wno-inline-new-delete - we inline 'new' and 'delete' in mozalloc |
|
# -Wno-unused-local-typedef - catches unused typedefs, which are commonly used in assertion macros |
|
# for performance reasons, and because GCC and clang accept it (though |
|
# clang warns about it). |
|
# |
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-invalid-offsetof" |
|
|
|
MOZ_CXX_SUPPORTS_WARNING(-Wno-, inline-new-delete, ac_cxx_has_wno_inline_new_delete) |
|
MOZ_CXX_SUPPORTS_WARNING(-Wno-, unused-local-typedef, ac_cxx_has_wno_unused_local_typedef) |
|
|
|
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 |
|
|
|
#FIXME: Work around breaking optimizations performed by GCC 6 and later |
|
if test "$GCC_MAJOR_VERSION" -ge "6" ; then |
|
CFLAGS="$CFLAGS -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-schedule-insns2" |
|
CXXFLAGS="$CXXFLAGS -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-schedule-insns2" |
|
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_BUILD) |
|
HAVE_64BIT_BUILD=1 |
|
fi |
|
AC_SUBST(HAVE_64BIT_BUILD) |
|
AC_LANG_RESTORE |
|
fi # COMPILE_ENVIRONMENT |
|
|
|
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= ) |
|
|
|
dnl ======================================================== |
|
dnl = Turn on systrace for android/b2g. |
|
dnl ======================================================== |
|
MOZ_ARG_ENABLE_BOOL(systrace, |
|
[ --enable-systrace Set compile flags necessary for using sampling profilers (e.g. shark, perf)], |
|
MOZ_USE_SYSTRACE=1, |
|
MOZ_USE_SYSTRACE= ) |
|
if test -n "$MOZ_USE_SYSTRACE"; then |
|
AC_DEFINE(MOZ_USE_SYSTRACE) |
|
fi |
|
|
|
# For profiling builds keep the symbol information |
|
if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then |
|
case "$OS_TARGET" in |
|
Linux|DragonFly|FreeBSD|NetBSD|OpenBSD) |
|
STRIP_FLAGS="--strip-debug" |
|
;; |
|
esac |
|
fi |
|
|
|
dnl ======================================================== |
|
dnl = 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 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 instruments |
|
dnl ======================================================== |
|
MOZ_ARG_ENABLE_BOOL(instruments, |
|
[ --enable-instruments Enable instruments remote profiling. Implies --enable-profiling.], |
|
MOZ_INSTRUMENTS=1, |
|
MOZ_INSTRUMENTS= ) |
|
if test -n "$MOZ_INSTRUMENTS"; then |
|
MOZ_PROFILING=1 |
|
AC_DEFINE(MOZ_INSTRUMENTS) |
|
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" |
|
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}" |
|
;; |
|
|
|
*) |
|
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" |
|
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}" |
|
;; |
|
esac |
|
|
|
dnl ============================================================== |
|
dnl Get mozilla version from central milestone file |
|
dnl ============================================================== |
|
MOZILLA_VERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir` |
|
MOZILLA_UAVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --uaversion` |
|
MOZILLA_SYMBOLVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --symbolversion` |
|
|
|
AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION") |
|
AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION) |
|
AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION,"$MOZILLA_UAVERSION") |
|
AC_DEFINE_UNQUOTED(MOZILLA_UAVERSION_U,$MOZILLA_UAVERSION) |
|
AC_SUBST(MOZILLA_SYMBOLVERSION) |
|
AC_SUBST(MOZILLA_UAVERSION) |
|
AC_SUBST(MOZILLA_UAVERSION_U) |
|
|
|
dnl ======================================================== |
|
dnl Get Firefox compatibility version we claim in our UA |
|
dnl ======================================================== |
|
MOZILLA_COMPATVERSION=`tail -n 1 "$_topsrcdir"/config/compatversion.txt 2>/dev/null || tail -1 "$_topsrcdir"/config/compatversion.txt` |
|
AC_DEFINE_UNQUOTED(MOZILLA_COMPATVERSION,"$MOZILLA_COMPATVERSION") |
|
AC_DEFINE_UNQUOTED(MOZILLA_COMPATVERSION_U,$MOZILLA_COMPATVERSION) |
|
AC_SUBST(MOZILLA_COMPATVERSION) |
|
AC_SUBST(MOZILLA_COMPATVERSION_U) |
|
|
|
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_BUILD"; 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 # COMPILE_ENVIRONMENT |
|
fi |
|
case "${target_os}" in |
|
aix4.1*) |
|
DLL_SUFFIX='_shr.a' |
|
;; |
|
esac |
|
if test "$COMPILE_ENVIRONMENT"; then |
|
MOZ_CHECK_HEADERS(sys/inttypes.h) |
|
fi # COMPILE_ENVIRONMENT |
|
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" |
|
# Statically disable jemalloc on 10.5 and 32-bit 10.6. See bug 702250. |
|
if test "$HAVE_64BIT_BUILD"; 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 |
|
_PLATFORM_HAVE_RIL=1 |
|
MOZ_B2G_FM=1 |
|
MOZ_SYNTH_PICO=1 |
|
else |
|
_PLATFORM_DEFAULT_TOOLKIT=cairo-android |
|
if test "$COMPILE_ENVIRONMENT"; then |
|
MOZ_LINKER=1 |
|
fi |
|
fi |
|
TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"' |
|
|
|
MOZ_GFX_OPTIMIZE_MOBILE=1 |
|
MOZ_OPTIMIZE_FLAGS="-O2 -fno-reorder-functions" |
|
if test -z "$CLANG_CC"; then |
|
MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS" |
|
fi |
|
;; |
|
|
|
*-*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" |
|
elif test "$GNU_CC" -o "$GNU_CXX"; then |
|
MOZ_PGO_OPTIMIZE_FLAGS="-O3" |
|
MOZ_OPTIMIZE_FLAGS="-O2" |
|
if test -z "$CLANG_CC"; then |
|
MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS" |
|
fi |
|
fi |
|
|
|
TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"' |
|
|
|
MOZ_MEMORY=1 |
|
|
|
case "${target_cpu}" in |
|
alpha*) |
|
CFLAGS="$CFLAGS -mieee" |
|
CXXFLAGS="$CXXFLAGS -mieee" |
|
;; |
|
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" -o -n "$CLANG_CC"; then |
|
CC="$CC -mwindows" |
|
CXX="$CXX -mwindows" |
|
CPP="$CPP -mwindows" |
|
CFLAGS="$CFLAGS -mms-bitfields" |
|
CXXFLAGS="$CXXFLAGS -mms-bitfields" |
|
DSO_LDOPTS='-shared' |
|
MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@' |
|
MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@' |
|
RC='$(WINDRES)' |
|
# Use static libgcc and libstdc++ |
|
LDFLAGS="$LDFLAGS -static" |
|
NSPR_LDFLAGS="$NSPR_LDFLAGS -static-libgcc" |
|
# Use temp file for windres (bug 213281) |
|
RCFLAGS='-O coff --use-temp-file' |
|
# mingw doesn't require kernel32, user32, and advapi32 explicitly |
|
LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32 -lnetapi32" |
|
MOZ_FIX_LINK_PATHS= |
|
DLL_PREFIX= |
|
IMPORT_LIB_SUFFIX=a |
|
|
|
WIN32_CONSOLE_EXE_LDFLAGS=-mconsole |
|
WIN32_GUI_EXE_LDFLAGS=-mwindows |
|
|
|
# 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= |
|
dnl Set subsystem version 6. |
|
WIN32_SUBSYSTEM_VERSION=5.01 |
|
if test "$HAVE_64BIT_BUILD"; then |
|
WIN32_SUBSYSTEM_VERSION=5.02 |
|
fi |
|
WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION |
|
WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION |
|
DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION |
|
_USE_CPP_INCLUDE_FLAG=1 |
|
_DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT' |
|
_DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT' |
|
CFLAGS="$CFLAGS -W3 -Gy" |
|
CXXFLAGS="$CXXFLAGS -W3 -Gy" |
|
if test "$CPU_ARCH" = "x86" -a -z "$CLANG_CL"; then |
|
dnl VS2012+ defaults to -arch:SSE2. |
|
dnl Clang-cl gets confused by -arch:IA32, so don't add it. |
|
dnl (See https://llvm.org/bugs/show_bug.cgi?id=24335) |
|
CFLAGS="$CFLAGS -arch:IA32" |
|
CXXFLAGS="$CXXFLAGS -arch:IA32" |
|
fi |
|
dnl VS2013+ requires -FS when parallel building by make -jN. |
|
dnl If nothing, compiler sometimes causes C1041 error. |
|
CFLAGS="$CFLAGS -FS" |
|
CXXFLAGS="$CXXFLAGS -FS" |
|
# khuey says we can safely ignore MSVC warning C4251 |
|
# MSVC warning C4244 (implicit type conversion may lose data) warns |
|
# and requires workarounds for perfectly valid code. Also, GCC/clang |
|
# don't warn about it by default. So for consistency/sanity, we turn |
|
# it off on MSVC, too. |
|
# MSVC warning C4267 warns for narrowing type conversions from size_t |
|
# to 32-bit integer types on 64-bit platforms. Since this is virtually |
|
# the same thing as C4244, we disable C4267, too. |
|
# MSVC warning C4345 warns of newly conformant behavior as of VS2003. |
|
# MSVC warning C4351 warns of newly conformant behavior as of VS2005. |
|
# MSVC warning C4482 warns when an enum value is refered specifing the |
|
# name of the enum itself. This behavior is allowed in C++11, and the |
|
# warning has been removed in VS2012. |
|
# MSVC warning C4800 warns when a value is implicitly cast to bool, |
|
# because this also forces narrowing to a single byte, which can be a |
|
# perf hit. But this matters so little in practice (and often we want |
|
# that behavior) that it's better to turn it off. |
|
# MSVC warning C4819 warns some UTF-8 characters (e.g. copyright sign) |
|
# on non-Western system locales even if it is in a comment. |
|
CFLAGS="$CFLAGS -wd4244 -wd4267 -wd4819" |
|
CXXFLAGS="$CXXFLAGS -wd4251 -wd4244 -wd4267 -wd4345 -wd4351 -wd4482 -wd4800 -wd4819" |
|
if test -n "$CLANG_CL"; then |
|
# Suppress the clang-cl warning for the inline 'new' and 'delete' in mozalloc |
|
CXXFLAGS="$CXXFLAGS -Wno-inline-new-delete" |
|
fi |
|
# make 'foo == bar;' error out |
|
CFLAGS="$CFLAGS -we4553" |
|
CXXFLAGS="$CXXFLAGS -we4553" |
|
LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib netapi32.lib" |
|
MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV' |
|
WARNINGS_AS_ERRORS='-WX' |
|
MOZ_OPTIMIZE_FLAGS='-O1 -Oi' |
|
MOZ_FIX_LINK_PATHS= |
|
MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)' |
|
# Don't enable these flags on clang-cl since it doesn't ignore unknown arguments by default, and |
|
# autoconf insists on passing $LDFLAGS to the compiler. |
|
if test -z "$CLANG_CL"; then |
|
LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT -OPT:REF -OPT:ICF=15" |
|
if test -z "$DEVELOPER_OPTIONS"; then |
|
LDFLAGS="$LDFLAGS -RELEASE" |
|
fi |
|
fi |
|
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" |
|
RCFLAGS="-nologo" |
|
if test "$_CC_MAJOR_VERSION" = "18" -a "$_CC_BUILD_VERSION" = "31101"; then |
|
dnl Use MaxILKSize as a workaround for LNK1248 in VS2013update4 |
|
dnl See https://connect.microsoft.com/VisualStudio/feedback/details/1044914/fatal-error-lnk1248 |
|
LDFLAGS="$LDFLAGS -MaxILKSize:0x7FF00000" |
|
fi |
|
dnl Minimum reqiurement of Gecko is VS2010 or later which supports |
|
dnl both SSSE3 and SSE4.1. |
|
HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1 |
|
HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1 |
|
dnl allow AVX2 code from VS2012 |
|
HAVE_X86_AVX2=1 |
|
MOZ_MEMORY=1 |
|
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(WIN32_LEAN_AND_MEAN) |
|
dnl See http://support.microsoft.com/kb/143208 to use STL |
|
AC_DEFINE(NOMINMAX) |
|
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*) |
|
if test -n "$L10NBASEDIR"; then |
|
L10NBASEDIR=`cd $L10NBASEDIR && pwd -W` |
|
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_BUILD"; 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 -Wl,--large-address-aware" |
|
else |
|
DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86" |
|
# Disable this flag on clang-cl since it doesn't ignore unknown arguments by default, and |
|
# autoconf insists on passing $LDFLAGS to the compiler. |
|
if test -z "$CLANG_CL"; then |
|
LDFLAGS="$LDFLAGS -SAFESEH" |
|
fi |
|
fi |
|
|
|
AC_DEFINE(_X86_) |
|
;; |
|
x86_64-*) |
|
if test -z "$HAVE_64BIT_BUILD"; then |
|
AC_MSG_ERROR([You are targeting 64-bit but using the 32-bit compiler.]) |
|
fi |
|
if test -n "$_WIN32_MSVC"; then |
|
DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64" |
|
fi |
|
AC_DEFINE(_AMD64_) |
|
;; |
|
*) |
|
AC_DEFINE(_CPU_ARCH_NOT_DEFINED) |
|
;; |
|
esac |
|
;; |
|
|
|
*-netbsd*) |
|
DSO_CFLAGS='' |
|
CFLAGS="$CFLAGS -Dunix" |
|
CXXFLAGS="$CXXFLAGS -Dunix" |
|
if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then |
|
DLL_SUFFIX=".so" |
|
DSO_PIC_CFLAGS='-fPIC -DPIC' |
|
DSO_LDOPTS='-shared' |
|
BIN_FLAGS='-Wl,--export-dynamic' |
|
else |
|
DSO_PIC_CFLAGS='-fPIC -DPIC' |
|
DLL_SUFFIX=".so.1.0" |
|
DSO_LDOPTS='-shared' |
|
fi |
|
# This will fail on a.out systems prior to 1.5.1_ALPHA. |
|
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,$(DSO_SONAME) -o $@' |
|
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$(DSO_SONAME) -o $@' |
|
;; |
|
|
|
*-openbsd*) |
|
if test "$SO_VERSION"; then |
|
DLL_SUFFIX=".so.$SO_VERSION" |
|
else |
|
DLL_SUFFIX=".so.1.0" |
|
fi |
|
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 |
|
;; |
|
|
|
*-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" |
|
MMX_FLAGS="-xarch=mmx -xO4" |
|
SSE_FLAGS="-xarch=sse" |
|
SSE2_FLAGS="-xarch=ssei2 -xO4" |
|
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 $(DSO_SONAME) -o $@' |
|
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $(DSO_SONAME) -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 |
|
;; |
|
|
|
esac |
|
|
|
AC_SUBST_LIST(MMX_FLAGS) |
|
AC_SUBST_LIST(SSE_FLAGS) |
|
AC_SUBST_LIST(SSE2_FLAGS) |
|
|
|
case "$target" in |
|
*-*linux*) |
|
# Includes linux-android |
|
AC_DEFINE(XP_LINUX) |
|
;; |
|
esac |
|
|
|
AC_SUBST(MOZ_LINKER) |
|
if test -n "$MOZ_LINKER"; then |
|
AC_DEFINE(MOZ_LINKER) |
|
fi |
|
|
|
dnl Only one oddball right now (QNX), but this gives us flexibility |
|
dnl if any other platforms need to override this in the future. |
|
AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO) |
|
|
|
dnl ======================================================== |
|
dnl 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 |
|
*-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 |
|
else |
|
MOZ_COMPILER_OPTS |
|
fi # COMPILE_ENVIRONMENT |
|
|
|
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_LANG_C |
|
|
|
AC_LANG_CPLUSPLUS |
|
|
|
MOZ_CXX11 |
|
|
|
AC_LANG_C |
|
|
|
dnl Check for .hidden assembler directive and visibility attribute. |
|
dnl Borrowed from glibc configure.in |
|
dnl =============================================================== |
|
if test "$GNU_CC" -a "$OS_TARGET" != WINNT; then |
|
AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE) |
|
AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE) |
|
case "$OS_TARGET" in |
|
Darwin) |
|
VISIBILITY_FLAGS='-fvisibility=hidden -fvisibility-inlines-hidden' |
|
;; |
|
*) |
|
VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(MOZILLA_DIR)/config/gcc_hidden.h' |
|
WRAP_SYSTEM_INCLUDES=1 |
|
;; |
|
esac |
|
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 |
|
|
|
case "${OS_TARGET}" in |
|
WINNT|Darwin|Android) |
|
;; |
|
*) |
|
STL_FLAGS='-I$(DIST)/stl_wrappers' |
|
WRAP_STL_INCLUDES=1 |
|
;; |
|
esac |
|
|
|
AC_SUBST(WRAP_SYSTEM_INCLUDES) |
|
AC_SUBST(VISIBILITY_FLAGS) |
|
|
|
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/queue.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 |
|
|
|
MOZ_ARG_ENABLE_BOOL(dtrace, |
|
[ --enable-dtrace build with dtrace support if available (default=no)], |
|
[enable_dtrace="yes"],) |
|
if test "x$enable_dtrace" = "xyes"; then |
|
MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1) |
|
if test -n "$HAVE_DTRACE"; then |
|
AC_DEFINE(INCLUDE_MOZILLA_DTRACE) |
|
else |
|
AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]); |
|
fi |
|
fi |
|
AC_SUBST(HAVE_DTRACE) |
|
|
|
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*) |
|
;; |
|
*) |
|
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 |
|
|
|
AC_CHECK_LIB(socket, socket) |
|
|
|
XLDFLAGS="$X_LIBS" |
|
XLIBS="$X_EXTRA_LIBS" |
|
|
|
dnl ======================================================== |
|
dnl Checks for X libraries. |
|
dnl Ordering is important. |
|
dnl Xt is dependent upon SM as of X11R6 |
|
dnl ======================================================== |
|
if test "$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_LIST(XCFLAGS) |
|
AC_SUBST_LIST(XLDFLAGS) |
|
AC_SUBST_LIST(XLIBS) |
|
AC_SUBST_LIST(XEXT_LIBS) |
|
AC_SUBST_LIST(XT_LIBS) |
|
AC_SUBST_LIST(XSS_LIBS) |
|
|
|
dnl ======================================================== |
|
dnl = pthread support |
|
dnl = Start by checking whether the system support pthreads |
|
dnl ======================================================== |
|
case "$target_os" in |
|
darwin*) |
|
MOZ_USE_PTHREADS=1 |
|
;; |
|
*) |
|
AC_CHECK_LIB(pthreads, pthread_create, |
|
MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads", |
|
AC_CHECK_LIB(pthread, pthread_create, |
|
MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread", |
|
AC_CHECK_LIB(c_r, pthread_create, |
|
MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r", |
|
AC_CHECK_LIB(c, pthread_create, |
|
MOZ_USE_PTHREADS=1 |
|
) |
|
) |
|
) |
|
) |
|
;; |
|
esac |
|
|
|
dnl ======================================================== |
|
dnl Check the command line for --with-pthreads |
|
dnl ======================================================== |
|
MOZ_ARG_WITH_BOOL(pthreads, |
|
[ --with-pthreads Force use of system pthread library with NSPR ], |
|
[ if test "$MOZ_USE_PTHREADS"x = x; then |
|
AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]); |
|
fi], |
|
MOZ_USE_PTHREADS= |
|
_PTHREAD_LDFLAGS= |
|
) |
|
|
|
dnl ======================================================== |
|
dnl Do the platform specific pthread hackery |
|
dnl ======================================================== |
|
if test "$MOZ_USE_PTHREADS"x != x |
|
then |
|
dnl |
|
dnl See if -pthread is supported. |
|
dnl |
|
rm -f conftest* |
|
ac_cv_have_dash_pthread=no |
|
AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread) |
|
echo 'int main() { return 0; }' | cat > conftest.c |
|
${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1 |
|
if test $? -eq 0; then |
|
if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then |
|
ac_cv_have_dash_pthread=yes |
|
case "$target_os" in |
|
freebsd*) |
|
# Freebsd doesn't use -pthread for compiles, it uses them for linking |
|
;; |
|
*) |
|
CFLAGS="$CFLAGS -pthread" |
|
CXXFLAGS="$CXXFLAGS -pthread" |
|
;; |
|
esac |
|
fi |
|
fi |
|
rm -f conftest* |
|
AC_MSG_RESULT($ac_cv_have_dash_pthread) |
|
|
|
dnl |
|
dnl See if -pthreads is supported. |
|
dnl |
|
ac_cv_have_dash_pthreads=no |
|
if test "$ac_cv_have_dash_pthread" = "no"; then |
|
AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads) |
|
echo 'int main() { return 0; }' | cat > conftest.c |
|
${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1 |
|
if test $? -eq 0; then |
|
if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then |
|
ac_cv_have_dash_pthreads=yes |
|
CFLAGS="$CFLAGS -pthreads" |
|
CXXFLAGS="$CXXFLAGS -pthreads" |
|
fi |
|
fi |
|
rm -f conftest* |
|
AC_MSG_RESULT($ac_cv_have_dash_pthreads) |
|
fi |
|
|
|
case "$target" in |
|
*-*-freebsd*) |
|
AC_DEFINE(_REENTRANT) |
|
AC_DEFINE(_THREAD_SAFE) |
|
dnl -pthread links in -lpthread, so don't specify it explicitly. |
|
if test "$ac_cv_have_dash_pthread" = "yes"; then |
|
_PTHREAD_LDFLAGS="-pthread" |
|
fi |
|
;; |
|
|
|
*-*-openbsd*|*-*-bsdi*) |
|
AC_DEFINE(_REENTRANT) |
|
AC_DEFINE(_THREAD_SAFE) |
|
dnl -pthread links in -lc_r, so don't specify it explicitly. |
|
if test "$ac_cv_have_dash_pthread" = "yes"; then |
|
_PTHREAD_LDFLAGS="-pthread" |
|
fi |
|
;; |
|
|
|
*-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*) |
|
AC_DEFINE(_REENTRANT) |
|
;; |
|
|
|
*-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}" |
|
AC_SUBST(MOZ_USE_PTHREADS) |
|
MOZ_CHECK_HEADERS(pthread.h) |
|
fi |
|
|
|
|
|
dnl Checks for library functions. |
|
dnl ======================================================== |
|
AC_PROG_GCC_TRADITIONAL |
|
AC_FUNC_MEMCMP |
|
AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize gmtime_r localtime_r arc4random arc4random_buf mallinfo) |
|
|
|
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_LIST(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, |
|
[if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then |
|
dnl no need for res_ninit() on NetBSD and OpenBSD |
|
ac_cv_func_res_ninit=no |
|
else |
|
AC_TRY_LINK([ |
|
#ifdef linux |
|
#define _BSD_SOURCE 1 |
|
#endif |
|
#include <sys/types.h> |
|
#include <netinet/in.h> |
|
#include <arpa/nameser.h> |
|
#include <resolv.h> |
|
], |
|
[int foo = res_ninit(&_res);], |
|
[ac_cv_func_res_ninit=yes], |
|
[ac_cv_func_res_ninit=no]) |
|
fi |
|
]) |
|
|
|
if test "$ac_cv_func_res_ninit" = "yes"; then |
|
AC_DEFINE(HAVE_RES_NINIT) |
|
dnl must add the link line we do something as foolish as this... dougt |
|
dnl else |
|
dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT), |
|
dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT))) |
|
fi |
|
|
|
AC_LANG_CPLUSPLUS |
|
|
|
ICONV_LIBS= |
|
|
|
case $target_os in |
|
darwin*|mingw*) |
|
;; |
|
*) |
|
|
|
AC_CHECK_LIB(c, iconv, [ICONV_LIBS=], |
|
AC_CHECK_LIB(iconv, iconv, [ICONV_LIBS="-liconv"], |
|
AC_CHECK_LIB(iconv, libiconv, [ICONV_LIBS="-liconv"]))) |
|
_SAVE_LIBS=$LIBS |
|
LIBS="$LIBS $ICONV_LIBS" |
|
AC_CACHE_CHECK( |
|
[for iconv()], |
|
ac_cv_func_iconv, |
|
[AC_TRY_LINK([ |
|
#include <stdlib.h> |
|
#include <iconv.h> |
|
], |
|
[ |
|
iconv_t h = iconv_open("", ""); |
|
iconv(h, NULL, NULL, NULL, NULL); |
|
iconv_close(h); |
|
], |
|
[ac_cv_func_iconv=yes], |
|
[ac_cv_func_iconv=no] |
|
)] |
|
) |
|
if test "$ac_cv_func_iconv" = "yes"; then |
|
AC_DEFINE(HAVE_ICONV) |
|
LIBICONV="$ICONV_LIBS" |
|
AC_CACHE_CHECK( |
|
[for iconv() with const input], |
|
ac_cv_func_const_iconv, |
|
[AC_TRY_COMPILE([ |
|
#include <stdlib.h> |
|
#include <iconv.h> |
|
], |
|
[ |
|
const char *input = "testing"; |
|
iconv_t h = iconv_open("", ""); |
|
iconv(h, &input, NULL, NULL, NULL); |
|
iconv_close(h); |
|
], |
|
[ac_cv_func_const_iconv=yes], |
|
[ac_cv_func_const_iconv=no] |
|
)] |
|
) |
|
if test "$ac_cv_func_const_iconv" = "yes"; then |
|
AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT) |
|
fi |
|
fi |
|
LIBS=$_SAVE_LIBS |
|
|
|
;; |
|
esac |
|
|
|
AC_SUBST_LIST(ICONV_LIBS) |
|
|
|
AM_LANGINFO_CODESET |
|
|
|
AC_LANG_C |
|
|
|
dnl ********************** |
|
dnl *** va_copy checks *** |
|
AC_CACHE_CHECK([for an implementation of va_copy()], |
|
ac_cv_va_copy, |
|
[AC_TRY_COMPILE([#include <stdarg.h> |
|
#include <stdlib.h> |
|
void f (int i, ...) { |
|
va_list args1, args2; |
|
va_start (args1, i); |
|
va_copy (args2, args1); |
|
if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42) |
|
exit (1); |
|
va_end (args1); va_end (args2); |
|
}], |
|
[f(0, 42); return 0], |
|
[ac_cv_va_copy=yes], |
|
[ac_cv_va_copy=no] |
|
)] |
|
) |
|
AC_CACHE_CHECK([whether va_list can be copied by value], |
|
ac_cv_va_val_copy, |
|
[AC_TRY_COMPILE([#include <stdarg.h> |
|
#include <stdlib.h> |
|
void f (int i, ...) { |
|
va_list args1, args2; |
|
va_start (args1, i); |
|
args2 = args1; |
|
if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42) |
|
exit (1); |
|
va_end (args1); va_end (args2); |
|
}], |
|
[f(0, 42); return 0], |
|
[ac_cv_va_val_copy=yes], |
|
[ac_cv_va_val_copy=no], |
|
)] |
|
) |
|
if test "x$ac_cv_va_copy" = "xyes"; then |
|
AC_DEFINE(VA_COPY, va_copy) |
|
AC_DEFINE(HAVE_VA_COPY) |
|
fi |
|
|
|
if test "x$ac_cv_va_val_copy" = "xno"; then |
|
AC_DEFINE(HAVE_VA_LIST_AS_ARRAY) |
|
fi |
|
|
|
dnl =================================================================== |
|
dnl ======================================================== |
|
dnl Put your C++ language/feature checks below |
|
dnl ======================================================== |
|
AC_LANG_CPLUSPLUS |
|
|
|
ARM_ABI_PREFIX= |
|
if test "$GNU_CC"; then |
|
if test "$CPU_ARCH" = "arm" ; then |
|
AC_CACHE_CHECK(for ARM EABI, |
|
ac_cv_gcc_arm_eabi, |
|
[AC_TRY_COMPILE([], |
|
[ |
|
#if defined(__ARM_EABI__) |
|
return 0; |
|
#else |
|
#error Not ARM EABI. |
|
#endif |
|
], |
|
ac_cv_gcc_arm_eabi="yes", |
|
ac_cv_gcc_arm_eabi="no")]) |
|
if test "$ac_cv_gcc_arm_eabi" = "yes"; then |
|
HAVE_ARM_EABI=1 |
|
ARM_ABI_PREFIX=eabi- |
|
else |
|
ARM_ABI_PREFIX=oabi- |
|
fi |
|
fi |
|
|
|
TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}" |
|
fi |
|
|
|
dnl Check to see if we can resolve ambiguity with |using|. |
|
AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity, |
|
ac_cv_cpp_ambiguity_resolving_using, |
|
[AC_TRY_COMPILE(class X { |
|
public: int go(const X&) {return 3;} |
|
int jo(const X&) {return 3;} |
|
}; |
|
class Y : public X { |
|
public: int go(int) {return 2;} |
|
int jo(int) {return 2;} |
|
using X::jo; |
|
private: using X::go; |
|
};, |
|
X x; Y y; y.jo(x);, |
|
ac_cv_cpp_ambiguity_resolving_using=yes, |
|
ac_cv_cpp_ambiguity_resolving_using=no)]) |
|
if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then |
|
AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING) |
|
fi |
|
|
|
dnl See if a dynamic_cast to void* gives the most derived object. |
|
AC_CACHE_CHECK(for C++ dynamic_cast to void*, |
|
ac_cv_cpp_dynamic_cast_void_ptr, |
|
[AC_TRY_RUN([class X { int i; public: virtual ~X() { } }; |
|
class Y { int j; public: virtual ~Y() { } }; |
|
class Z : public X, public Y { int k; }; |
|
|
|
int main() { |
|
Z mdo; |
|
X *subx = (X*)&mdo; |
|
Y *suby = (Y*)&mdo; |
|
return !((((void*)&mdo != (void*)subx) && |
|
((void*)&mdo == dynamic_cast<void*>(subx))) || |
|
(((void*)&mdo != (void*)suby) && |
|
((void*)&mdo == dynamic_cast<void*>(suby)))); |
|
}], |
|
ac_cv_cpp_dynamic_cast_void_ptr=yes, |
|
ac_cv_cpp_dynamic_cast_void_ptr=no, |
|
ac_cv_cpp_dynamic_cast_void_ptr=no)]) |
|
if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then |
|
AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR) |
|
fi |
|
|
|
|
|
# try harder, when checking for __thread support, see bug 521750 comment #33 and below |
|
# We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is |
|
# enabled, the linker in xcode 4.1 will crash. Without this it would crash when |
|
# linking XUL. |
|
_SAVE_LDFLAGS=$LDFLAGS |
|
LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS" |
|
AC_CACHE_CHECK(for __thread keyword for TLS variables, |
|
ac_cv_thread_keyword, |
|
[AC_TRY_LINK([__thread bool tlsIsMainThread = false;], |
|
[return tlsIsMainThread;], |
|
ac_cv_thread_keyword=yes, |
|
ac_cv_thread_keyword=no)]) |
|
LDFLAGS=$_SAVE_LDFLAGS |
|
# The custom dynamic linker doesn't support TLS variables |
|
MOZ_TLS= |
|
if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then |
|
# mips builds fail with TLS variables because of a binutils bug. |
|
# See bug 528687 |
|
# OpenBSD doesn't have TLS support, and the test succeeds with clang++ |
|
case "${target}" in |
|
mips*-*) |
|
: |
|
;; |
|
*-android*|*-linuxandroid*) |
|
: |
|
;; |
|
*-openbsd*) |
|
: |
|
;; |
|
*) |
|
AC_DEFINE(HAVE_THREAD_TLS_KEYWORD) |
|
MOZ_TLS=1 |
|
;; |
|
esac |
|
fi |
|
|
|
dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments. |
|
if test -n "$MOZ_LINKER"; then |
|
if test "$CPU_ARCH" = arm; then |
|
dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments |
|
if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then |
|
LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000" |
|
_SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000" |
|
fi |
|
fi |
|
|
|
dnl gold emits wrong sysv-style elf hash tables when building both sysv and |
|
dnl style tables. https://sourceware.org/bugzilla/show_bug.cgi?id=13597 |
|
dnl Since the linker only understands the sysv ones, no need to build the |
|
dnl gnu style tables anyways. |
|
LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv" |
|
fi |
|
|
|
dnl The custom linker doesn't support text relocations, but NDK >= r6b |
|
dnl creates some (http://code.google.com/p/android/issues/detail?id=23203) |
|
dnl We however want to avoid these text relocations, and this can be done |
|
dnl by making gcc not link crtbegin and crtend. In the broken NDKs, crtend |
|
dnl doesn't contain anything at all, beside placeholders for some sections, |
|
dnl and crtbegin only contains a finalizer function that calls |
|
dnl __cxa_finalize. The custom linker actually takes care of calling |
|
dnl __cxa_finalize when the library doesn't call it itself, which makes it |
|
dnl safe not to link crtbegin. Besides, previous versions of the NDK didn't |
|
dnl link crtbegin and crtend at all. |
|
if test -n "$MOZ_LINKER" -a "$OS_TARGET" = "Android"; then |
|
AC_CACHE_CHECK([whether the CRT objects have text relocations], |
|
ac_cv_crt_has_text_relocations, |
|
[echo 'int foo() { return 0; }' > conftest.cpp |
|
if AC_TRY_COMMAND(${CXX-g++} -o conftest${DLL_SUFFIX} $CXXFLAGS $DSO_LDOPTS $LDFLAGS conftest.cpp $LIBS 1>&5) && |
|
test -s conftest${DLL_SUFFIX}; then |
|
if ${TOOLCHAIN_PREFIX}readelf -d conftest${DLL_SUFFIX} | grep TEXTREL > /dev/null; then |
|
ac_cv_crt_has_text_relocations=yes |
|
else |
|
ac_cv_crt_has_text_relocations=no |
|
fi |
|
else |
|
AC_ERROR([couldn't compile a simple C file]) |
|
fi |
|
rm -rf conftest*]) |
|
if test "$ac_cv_crt_has_text_relocations" = yes; then |
|
dnl While we want libraries to skip the CRT files, we don't want |
|
dnl executables to be treated the same way. We thus set the flag |
|
dnl in DSO_LDOPTS and not LDFLAGS. However, to pass it to nspr, |
|
dnl we need to use LDFLAGS because nspr doesn't inherit DSO_LDOPTS. |
|
dnl Using LDFLAGS in nspr is safe, since we only really build |
|
dnl libraries there. |
|
DSO_LDOPTS="$DSO_LDOPTS -nostartfiles" |
|
NSPR_LDFLAGS="$NSPR_LDFLAGS -nostartfiles" |
|
fi |
|
fi |
|
|
|
dnl See if compiler supports some gcc-style attributes |
|
|
|
AC_CACHE_CHECK(for __attribute__((always_inline)), |
|
ac_cv_attribute_always_inline, |
|
[AC_TRY_COMPILE([inline void f(void) __attribute__((always_inline));], |
|
[], |
|
ac_cv_attribute_always_inline=yes, |
|
ac_cv_attribute_always_inline=no)]) |
|
|
|
dnl End of C++ language/feature checks |
|
AC_LANG_C |
|
|
|
dnl ======================================================== |
|
dnl = Internationalization checks |
|
dnl ======================================================== |
|
dnl |
|
dnl Internationalization and Locale support is different |
|
dnl on various UNIX platforms. Checks for specific i18n |
|
dnl features go here. |
|
|
|
dnl check for LC_MESSAGES |
|
AC_CACHE_CHECK(for LC_MESSAGES, |
|
ac_cv_i18n_lc_messages, |
|
[AC_TRY_COMPILE([#include <locale.h>], |
|
[int category = LC_MESSAGES;], |
|
ac_cv_i18n_lc_messages=yes, |
|
ac_cv_i18n_lc_messages=no)]) |
|
if test "$ac_cv_i18n_lc_messages" = yes; then |
|
AC_DEFINE(HAVE_I18N_LC_MESSAGES) |
|
fi |
|
|
|
AC_HAVE_FUNCS(localeconv) |
|
fi # ! SKIP_COMPILER_CHECKS |
|
|
|
MOZ_CHECK_ALLOCATOR |
|
|
|
TARGET_XPCOM_ABI= |
|
if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then |
|
TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}" |
|
AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"]) |
|
fi |
|
|
|
dnl We can't run TRY_COMPILE tests on Windows, so hard-code some |
|
dnl features that Windows actually does support. |
|
|
|
if test -n "$SKIP_COMPILER_CHECKS"; then |
|
dnl Windows has malloc.h |
|
AC_DEFINE(MALLOC_ |