--- a/js/src/configure.in
+++ b/js/src/configure.in
@@ -37,16 +37,18 @@ dnl xpctools support
dnl Benjamin Smedberg <benjamin@smedbergs.us>
dnl Howard Chu <hyc@symas.com>
dnl MSYS support
dnl Mark Mentovai <mark@moxienet.com>:
dnl Mac OS X 10.4 support
dnl Giorgio Maone <g.maone@informaction.com>
dnl MSVC l10n compatible version check
dnl Ben Turner <mozilla@songbirdnest.com>
+dnl Windows x64 support
+dnl Makoto Kato <m_kato@ga2.so-net.ne.jp>
dnl
dnl Alternatively, the contents of this file may be used under the terms of
dnl either the GNU General Public License Version 2 or later (the "GPL"), or
dnl the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
dnl in which case the provisions of the GPL or the LGPL are applicable instead
dnl of those above. If you wish to allow use of your version of this file only
dnl under the terms of either the GPL or the LGPL, and not to allow others to
dnl use your version of this file under the terms of the MPL, indicate your
@@ -103,16 +105,17 @@ dnl ====================================
dnl Set the version number of the libs included with mozilla
dnl ========================================================
NSPR_VERSION=4
dnl Set the minimum version of toolkit libs used by mozilla
dnl ========================================================
PERL_VERSION=5.006
+PYTHON_VERSION=2.5
WINDRES_VERSION=2.14.90
W32API_VERSION=3.8
MSMANIFEST_TOOL=
dnl Set various checks
dnl ========================================================
MISSING_X=
@@ -195,21 +198,27 @@ case "$target" in
*-darwin*)
if test -z "$CC"; then CC=gcc-4.2; fi
if test -z "$CXX"; then CXX=g++-4.2; fi
;;
esac
fi
COMPILE_ENVIRONMENT=1
-MOZ_ARG_ENABLE_BOOL(compile-environment,
+MOZ_ARG_DISABLE_BOOL(compile-environment,
[ --disable-compile-environment
Disable compiler/library checks.],
- COMPILE_ENVIRONMENT=1,
COMPILE_ENVIRONMENT= )
+AC_SUBST(COMPILE_ENVIRONMENT)
+
+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
MOZ_ARG_ENABLE_BOOL(shared-js,
[ --disable-shared-js
Do not create a shared library.],
DISABLE_SHARED_JS=0,
DISABLE_SHARED_JS=1)
if test "$DISABLE_SHARED_JS" = "1" ; then
@@ -220,94 +229,138 @@ fi
AC_SUBST(JS_SHARED_LIBRARY)
dnl ========================================================
dnl = Android uses a very custom (hacky) toolchain; we need to do this
dnl = here, so that the compiler checks can succeed
dnl ========================================================
MOZ_ARG_WITH_STRING(android-ndk,
-[ --with-android-ndk=DIR location where the Android NDK can be found],
+[ --with-android-ndk=DIR
+ location where the Android NDK can be found],
android_ndk=$withval)
MOZ_ARG_WITH_STRING(android-toolchain,
[ --with-android-toolchain=DIR
location of the android toolchain, default NDK/build/prebuilt/HOST/arm-eabi-4.4.0],
android_toolchain=$withval)
MOZ_ARG_WITH_STRING(android-version,
[ --with-android-version=VER
android platform version, default 5],
android_version=$withval,
android_version=5)
+MOZ_ARG_WITH_STRING(android-sdk,
+[ --with-android-sdk=DIR
+ location where the Android SDK can be found (base directory, e.g. .../android/platforms/android-6)],
+ android_sdk=$withval)
+
+MOZ_ARG_WITH_STRING(android-tools,
+[ --with-android-tools=DIR
+ location where the Android Tools can be found (base directory, e.g. .../android/tools)],
+ android_tools=$withval)
+
if test "$target" = "arm-android-eabi" ; then
if test -z "$android_ndk" ; then
AC_MSG_ERROR([You must specify --with-android-ndk=/path/to/ndk when targeting Android.])
fi
+ if test -z "$android_sdk" ; then
+ AC_MSG_ERROR([You must specify --with-android-sdk=/path/to/sdk when targeting Android.])
+ fi
+
+ if test -z "$android_tools" ; then
+ AC_MSG_ERROR([You must specify --with-android-tools=/path/to/sdk/tools when targeting Android.])
+ fi
+
if test -z "$android_toolchain" ; then
android_toolchain="$android_ndk"/build/prebuilt/`uname -s | tr "[[:upper:]]" "[[:lower:]]"`-x86/arm-eabi-4.4.0
fi
if test -z "$android_platform" ; then
android_platform="$android_ndk"/build/platforms/android-"$android_version"/arch-"$target_cpu"
fi
+
dnl set up compilers
AS="$android_toolchain"/bin/arm-eabi-as
CC="$android_toolchain"/bin/arm-eabi-gcc
CXX="$android_toolchain"/bin/arm-eabi-g++
CPP="$android_toolchain"/bin/arm-eabi-cpp
LD="$android_toolchain"/bin/arm-eabi-ld
AR="$android_toolchain"/bin/arm-eabi-ar
RANLIB="$android_toolchain"/bin/arm-eabi-ranlib
STRIP="$android_toolchain"/bin/arm-eabi-strip
CPPFLAGS="-I$android_platform/usr/include $CPPFLAGS"
- CFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions $CFLAGS"
- CXXFLAGS="-mandroid -std=gnu++0x -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions $CXXFLAGS"
- LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform $LDFLAGS"
+ CFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions -march=armv5te -mthumb-interwork $CFLAGS"
+ CXXFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions -march=armv5te -mthumb-interwork $CXXFLAGS"
+
+ dnl Add -llog by default, since we use it all over the place.
+ dnl Add --allow-shlib-undefined, because libGLESv2 links to an
+ dnl undefined symbol (present on the hardware, just not in the
+ dnl NDK.)
+ LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform -llog -Wl,--allow-shlib-undefined $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
+ ANDROID_NDK="${android_ndk}"
+ ANDROID_TOOLCHAIN="{android_toolchain}"
+ ANDROID_PLATFORM="{android_platform}"
+ ANDROID_SDK="${android_sdk}"
+ ANDROID_TOOLS="${android_tools}"
+ ANDROID_VERSION="${android_version}"
+
# save these for libffi's subconfigure,
# which doesn't know how to figure this stuff out on its own
ANDROID_CFLAGS="$CFLAGS"
ANDROID_CPPFLAGS="$CPPFLAGS"
ANDROID_LDFLAGS="$LDFLAGS"
AC_DEFINE(ANDROID)
AC_DEFINE_UNQUOTED(ANDROID_VERSION, $android_version)
- AC_DEFINE(FORCE_LITTLE_ENDIAN)
+ AC_SUBST(ANDROID_VERSION)
+ CROSS_COMPILE=1
+ MOZ_CHROME_FILE_FORMAT=omni
fi
+AC_SUBST(ANDROID_NDK)
+AC_SUBST(ANDROID_TOOLCHAIN)
+AC_SUBST(ANDROID_PLATFORM)
+AC_SUBST(ANDROID_SDK)
+AC_SUBST(ANDROID_TOOLS)
+
dnl ========================================================
dnl Checks for compilers.
dnl ========================================================
+dnl Set CROSS_COMPILE in the environment when running configure
+dnl to use the cross-compile setup for now
+dnl ========================================================
dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
AR_FLAGS='cr $@'
if test "$COMPILE_ENVIRONMENT"; then
if test "$target" != "$host"; then
echo "cross compiling from $host to $target"
+ cross_compiling=yes
_SAVE_CC="$CC"
_SAVE_CFLAGS="$CFLAGS"
_SAVE_LDFLAGS="$LDFLAGS"
AC_MSG_CHECKING([for host c compiler])
AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
if test -z "$HOST_CC"; then
@@ -360,18 +413,18 @@ if test "$target" != "$host"; then
powerpc-apple-darwin8*:i?86-apple-darwin*)
dnl The Darwin cross compiler doesn't necessarily point itself at a
dnl root that has libraries for the proper architecture, it defaults
dnl to the system root. The libraries in the system root on current
dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
dnl checks will fail. Fake a working SDK in that case.
_SAVE_CFLAGS=$CFLAGS
_SAVE_CXXFLAGS=$CXXLAGS
- CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
- CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
+ CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CFLAGS"
+ CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CXXFLAGS"
;;
esac
case "$target" in
*symbian*)
AC_ARG_WITH(symbian-sdk,
[ --with-symbian-sdk=SYMBIAN_SDK_DIR
The path to the Symbian SDK],
@@ -423,22 +476,16 @@ if test "$target" != "$host"; then
AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
AC_DEFINE(CROSS_COMPILE)
-
- dnl If we cross compile for ppc on Mac OS X x86, cross_compiling will
- dnl have erroneously been set to "no", because the x86 build host is
- dnl able to run ppc code in a translated environment, making a cross
- dnl compiler appear native. So we override that here.
- cross_compiling=yes
else
AC_PROG_CC
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, :)
@@ -509,26 +556,44 @@ if test "$GXX" = yes; then
fi
fi
dnl Special win32 checks
dnl ========================================================
case "$target" in
*-wince|*-winmo)
WINVER=500
+ WINSDK_TARGETVER=502
;;
*)
- if test -n "$GNU_CC"; then
- WINVER=501
- else
- WINVER=500
- fi
+ WINVER=502
+ dnl Target the Windows 7 SDK by default
+ WINSDK_TARGETVER=601
;;
esac
+MOZ_ARG_WITH_STRING(windows-version,
+[ --with-windows-version=WINSDK_TARGETVER
+ Highest Windows version to target using this SDK
+ 502: Windows Server 2003
+ 600: Windows Vista
+ 601: Windows 7],
+ WINSDK_TARGETVER=$withval)
+
+case "$WINSDK_TARGETVER" in
+502|600|601)
+ MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
+ ;;
+
+*)
+ AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER), must be 502, 600 or 601]);
+ ;;
+
+esac
+
case "$target" in
*-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince|*-winmo)
if test "$GCC" != "yes"; then
# Check to see if we are really running in a msvc environemnt
_WIN32_MSVC=1
# Make sure compilers are valid
CFLAGS="$CFLAGS -TC -nologo"
@@ -629,18 +694,122 @@ case "$target" in
# 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
+ # Identify which version of the SDK we're building with
+ # Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
+ # from there
+ AC_CHECK_HEADERS([winsdkver.h])
+ if test "$ac_cv_header_winsdkver_h" = "yes"; then
+ # Get the highest _WIN32_WINNT and NTDDI versions supported
+ # Take the higher of the two
+ # This is done because the Windows 7 beta SDK reports its
+ # NTDDI_MAXVER to be 0x06000100 instead of 0x06010000, as it should
+ AC_CACHE_CHECK(for highest Windows version supported by this SDK,
+ ac_cv_winsdk_maxver,
+ [cat > conftest.h <<EOF
+#include <winsdkver.h>
+#include <sdkddkver.h>
+
+#if (NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER) > NTDDI_MAXVER)
+#define WINSDK_MAXVER NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER)
+#else
+#define WINSDK_MAXVER NTDDI_MAXVER
+#endif
+
+WINSDK_MAXVER
+EOF
+ ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
+ rm -f conftest.h
+ ])
+ MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
+ else
+ # The Vista SDK is the only one to have sdkddkver.h but not
+ # WinSDKVer.h
+ AC_CHECK_HEADERS([sdkddkver.h])
+ if test "$ac_cv_header_sdkddkver_h" = "yes"; then
+ MOZ_WINSDK_MAXVER=0x06000000
+ else
+ # Assume the Server 2003 Platform SDK
+ MOZ_WINSDK_MAXVER=0x05020000
+ fi
+ fi
+
unset _MSVC_VER_FILTER
+ AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ _SAVE_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
+ AC_TRY_COMPILE([#include <exception>],
+ [std::_Throw(std::exception()); return 0;],
+ ac_cv_have_std__Throw="yes",
+ ac_cv_have_std__Throw="no")
+ CXXFLAGS="$_SAVE_CXXFLAGS"
+ AC_LANG_RESTORE
+ ])
+
+ if test "$ac_cv_have_std__Throw" == "yes"; then
+ AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
+ ac_cv_have_dllimport_exception_bug,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ _SAVE_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
+ AC_TRY_LINK([#include <vector>],
+ [std::vector<int> v; return v.at(1);],
+ ac_cv_have_dllimport_exception_bug="no",
+ ac_cv_have_dllimport_exception_bug="yes")
+ CXXFLAGS="$_SAVE_CXXFLAGS"
+ AC_LANG_RESTORE
+ ])
+ if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
+ WRAP_STL_INCLUDES=1
+ MOZ_MSVC_STL_WRAP__Throw=1
+ AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
+ fi
+ else
+ AC_CACHE_CHECK(for overridable _RAISE,
+ ac_cv_have__RAISE,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ _SAVE_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
+ AC_TRY_COMPILE([#include <xstddef>
+ #undef _RAISE
+ #define _RAISE(x) externallyDefinedFunction((x).what())
+ #include <vector>
+ ],
+ [std::vector<int> v; return v.at(1);],
+ ac_cv_have__RAISE="no",
+ ac_cv_have__RAISE="yes")
+ CXXFLAGS="$_SAVE_CXXFLAGS"
+ AC_LANG_RESTORE
+ ])
+ if test "$ac_cv_have__RAISE" = "yes"; then
+ WRAP_STL_INCLUDES=1
+ MOZ_MSVC_STL_WRAP__RAISE=1
+ AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
+ else
+ AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK. Please file a bug describing this error and your build configuration.])
+ fi
+ fi
+
+ if test "$WRAP_STL_INCLUDES" = "1"; then
+ STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
+ fi
else
# Check w32api version
_W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
_W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
AC_TRY_COMPILE([#include <w32api.h>],
#if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
(__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
@@ -666,22 +835,41 @@ case "$target" in
"$_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
+
+ # Server 2003 is the highest version supported
+ MOZ_WINSDK_MAXVER=0x05020000
fi # !GNU_CC
AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
# Require OS features provided by IE 5.0
AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
+
+ # 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_WS03, 0x05020000)
+ AC_DEFINE_UNQUOTED(MOZ_NTDDI_LONGHORN, 0x06000000)
+ AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
;;
esac
dnl Test breaks icc on OS/2 && MSVC
if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
AC_PROG_CC_C_O
if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
USING_HCC=1
@@ -721,22 +909,16 @@ if test -n "$_WIN32_MSVC"; then
# VS2008: http://msdn.microsoft.com/en-us/library/323b6b3k.aspx
AC_DEFINE(JS_STDDEF_H_HAS_INTPTR_T)
;;
esac
fi
fi # COMPILE_ENVIRONMENT
-if test "$cross_compiling" = "yes"; then
- CROSS_COMPILE=1
-else
- CROSS_COMPILE=
-fi
-
# Check to see if we are running in a broken QEMU scratchbox.
# We know that anything below 1.0.16 is broken.
AC_CHECK_PROGS(SBCONF, sb-conf ve, "")
if test -n "$SBCONF"; then
_sb_version=`$SBCONF ve`
_sb_version_major=`echo $_sb_version | cut -f1 -d.`
_sb_version_minor=`echo $_sb_version | cut -f2 -d.`
_sb_version_point=`echo $_sb_version | cut -f3 -d.`
@@ -750,25 +932,26 @@ AC_SUBST(_MSC_VER)
AC_SUBST(GNU_AS)
AC_SUBST(GNU_LD)
AC_SUBST(GNU_CC)
AC_SUBST(GNU_CXX)
AC_SUBST(INTEL_CC)
AC_SUBST(INTEL_CXX)
+AC_SUBST(STL_FLAGS)
+AC_SUBST(WRAP_STL_INCLUDES)
+AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
+AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
+
dnl ========================================================
dnl Checks for programs.
dnl ========================================================
AC_PROG_INSTALL
AC_PROG_LN_S
-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 -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
_perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
_perl_res=$?
AC_MSG_RESULT([$_perl_version])
if test "$_perl_res" != 0; then
@@ -781,17 +964,17 @@ AC_MSG_CHECKING([for full perl installat
_perl_res=$?
if test "$_perl_res" != 0; then
AC_MSG_RESULT([no])
AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
else
AC_MSG_RESULT([yes])
fi
-MOZ_PATH_PROGS(PYTHON, $PYTHON python)
+MOZ_PATH_PROGS(PYTHON, $PYTHON python2.6 python2.5 python2.4 python)
if test -z "$PYTHON"; then
AC_MSG_ERROR([python was not found in \$PATH])
fi
if test -z "$COMPILE_ENVIRONMENT"; then
NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
fi
AC_SUBST(NSINSTALL_BIN)
@@ -868,31 +1051,40 @@ dnl The universal machinery sets UNIVERS
dnl that a universal binary is being produced.
AC_SUBST(UNIVERSAL_BINARY)
dnl ========================================================
dnl Check for MacOS deployment target version
dnl ========================================================
MOZ_ARG_ENABLE_STRING(macos-target,
- [ --enable-macos-target=VER (default=10.4)
+ [ --enable-macos-target=VER (default=10.5)
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
AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
- elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
+ else
dnl No value specified on the command line or in the environment,
- dnl use the lesser of the application's minimum or the architecture's
- dnl minimum.
- export MACOSX_DEPLOYMENT_TARGET=10.4
+ dnl use architecture minimum.
+ case "${target_cpu}" in
+ ppc*)
+ export MACOSX_DEPLOYMENT_TARGET=10.5
+ ;;
+ i*86)
+ export MACOSX_DEPLOYMENT_TARGET=10.5
+ ;;
+ x86_64)
+ export MACOSX_DEPLOYMENT_TARGET=10.6
+ ;;
+ esac
fi
;;
esac
AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
dnl ========================================================
dnl = Mac OS X SDK support
@@ -952,27 +1144,35 @@ tools are selected during the Xcode/Deve
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 -z "$MAKE"; then
- case "$host_os" in
- cygwin*|mingw*|mks*|msvc*)
- MOZ_PATH_PROGS(MAKE, $MAKE make gmake, :)
- ;;
- *)
- MOZ_PATH_PROGS(MAKE, $MAKE gmake make, :)
- ;;
- esac
+if test -n "$MAKE"; then
+ if test `echo $MAKE | grep -c make.py` != 1; then
+ NOT_PYMAKE=$MAKE
+ fi
fi
+case "$host_os" in
+cygwin*|mingw*|mks*|msvc*)
+ 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 "$COMPILE_ENVIRONMENT"; then
AC_PATH_XTRA
XCFLAGS="$X_CFLAGS"
fi # COMPILE_ENVIRONMENT
@@ -994,40 +1194,41 @@ ASM_SUFFIX=s
IMPORT_LIB_SUFFIX=
TARGET_MD_ARCH=unix
DIRENT_INO=d_ino
CYGWIN_WRAPPER=
WIN_TOP_SRC=
MOZ_USER_DIR=".mozilla"
MOZ_JS_LIBS='-L$(libdir) -lmozjs'
-MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(PREFIX)/lib'
+MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
USE_DEPENDENT_LIBS=1
_PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
-MOZ_THUMB2=
-
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 ;;
wince*) OS_ARCH=WINCE ;;
winmo*) OS_ARCH=WINCE ;;
darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
esac
+ case "${target}" in
+ arm-android-eabi) 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.
@@ -1055,16 +1256,19 @@ HOST_OS_ARCH=`echo $host_os | sed -e 's|
# OS_RELEASE
# OS_MINOR_RELEASE
#
case "$HOST_OS_ARCH" in
cygwin*|mingw*|mks*|msvc*)
HOST_OS_ARCH=WINNT
;;
+darwin*)
+ HOST_OS_ARCH=Darwin
+ ;;
linux*)
HOST_OS_ARCH=Linux
;;
solaris*)
HOST_OS_ARCH=SunOS
SOLARIS_SUNPRO_CC=
SOLARIS_SUNPRO_CXX=
if test -z "$GNU_CC"; then
@@ -1121,17 +1325,19 @@ SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX
;;
UnixWare)
HOST_OS_ARCH=UNIXWARE
;;
esac
case "$OS_ARCH" in
WINNT)
- OS_TEST=`uname -p`
+ 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.
@@ -1225,23 +1431,27 @@ SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX
OS_ARCH=SINIX
OS_TEST=`uname -p`
;;
UnixWare)
OS_ARCH=UNIXWARE
OS_RELEASE=`uname -v`
;;
WINCE)
- WINCE=1
OS_ARCH=WINCE
- if test "$WINCE_WINDOWS_MOBILE"; then
+ case "${target_os}" in
+ *winmo)
OS_TARGET=WINMO
- else
+ WINCE_WINDOWS_MOBILE=1
+ AC_DEFINE(WINCE_WINDOWS_MOBILE)
+ ;;
+ *)
OS_TARGET=WINCE
- fi
+ ;;
+ esac
;;
Darwin)
case "${target_cpu}" in
powerpc*)
OS_TEST=ppc
;;
i*86*)
OS_TEST=i386
@@ -1266,24 +1476,36 @@ fi
# Only set CPU_ARCH if we recognize the value of OS_TEST
case "$OS_TEST" in
*86 | i86pc)
CPU_ARCH=x86
;;
-powerpc* | ppc | rs6000)
+powerpc64 | ppc64)
+ CPU_ARCH=ppc64
+ ;;
+
+powerpc | ppc | rs6000)
CPU_ARCH=ppc
;;
Alpha | alpha | ALPHA)
CPU_ARCH=Alpha
;;
+s390)
+ CPU_ARCH=s390
+ ;;
+
+s390x)
+ CPU_ARCH=s390x
+ ;;
+
hppa* | parisc)
CPU_ARCH=hppa
;;
sun4u | sparc*)
CPU_ARCH=sparc
;;
@@ -1329,17 +1551,17 @@ if test "$GNU_CC"; then
# be a little bit stricter
# Warnings slamm took out for now (these were giving more noise than help):
# -Wbad-function-cast - warns when casting a function to a new return type
# -Wshadow - removed because it generates more noise than help --pete
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
if test -z "$INTEL_CC"; then
# Don't use -Wcast-align with ICC
case "$CPU_ARCH" in
- # And don't use it on hppa, ia64, sparc, or arm since it's noisy there
+ # 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
@@ -1379,17 +1601,17 @@ fi
if test "$GNU_CXX"; then
# FIXME: Let us build with strict aliasing. bug 414641.
CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
# Turn on GNU specific features
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
if test -z "$INTEL_CC"; then
# Don't use -Wcast-align with ICC
case "$CPU_ARCH" in
- # And don't use it on hppa, ia64, sparc, or arm since it's noisy there
+ # 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
@@ -1426,16 +1648,35 @@ if test "$GNU_CXX"; then
ac_has_wno_variadic_macros="yes",
ac_has_wno_variadic_macros="no")
CXXFLAGS="$_SAVE_CXXFLAGS"
AC_LANG_RESTORE
])
if test "$ac_has_wno_variadic_macros" = "yes"; then
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-variadic-macros"
fi
+
+ AC_CACHE_CHECK(whether the compiler supports -Werror=return-type,
+ ac_has_werror_return_type,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ _SAVE_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -Werror=return-type"
+ AC_TRY_COMPILE([],
+ [return(0);],
+ ac_has_werror_return_type="yes",
+ ac_has_werror_return_type="no")
+ CXXFLAGS="$_SAVE_CXXFLAGS"
+ AC_LANG_RESTORE
+ ])
+ if test "$ac_has_werror_return_type" = "yes"; then
+ _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=return-type"
+ fi
+
else
_DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_JS_CONFDEFS_H_ $(ACDEFINES)'
fi
dnl gcc can come with its own linker so it is better to use the pass-thru calls
dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
dnl normal behavior.
@@ -1560,31 +1801,34 @@ dnl ====================================
case "$host" in
*-beos*)
HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
;;
*cygwin*|*mingw*|*mks*|*msvc*|*wince|*winmo)
+ # we need Python 2.5 on Windows
+ PYTHON_VERSION=2.5
if test -n "$_WIN32_MSVC"; then
HOST_AR=lib
HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
HOST_RANLIB='echo ranlib'
else
HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
fi
HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
HOST_BIN_SUFFIX=.exe
case "$host" in
*mingw*)
dnl MinGW/MSYS does not need CYGWIN_WRAPPER
+ PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
;;
*)
CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
_pwd=`pwd`
CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
fi
if test "`${PERL} -v | grep -c cygwin 2>/dev/null`" = 0; then
@@ -1592,16 +1836,22 @@ case "$host" in
PERL="${CYGWIN_WRAPPER} $PERL"
fi
if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
PYTHON="${CYGWIN_WRAPPER} $PYTHON"
fi
;;
esac
+
+ case "${host_cpu}" in
+ x86_64)
+ 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}"
;;
@@ -1626,16 +1876,28 @@ case "$host" in
;;
*)
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
;;
esac
+dnl We require version 2.4 or newer of Python to build,
+dnl and 2.5 or newer on Windows.
+AC_MSG_CHECKING([for minimum required Python version >= $PYTHON_VERSION])
+changequote(,)
+$PYTHON -c "import sys; sys.exit(sys.version[:3] < sys.argv[1])" $PYTHON_VERSION
+_python_res=$?
+changequote([,])
+if test "$_python_res" != 0; then
+ AC_MSG_ERROR([Python $PYTHON_VERSION or higher is required.])
+fi
+AC_MSG_RESULT([yes])
+
dnl ========================================================
dnl System overrides of the defaults for target
dnl ========================================================
case "$target" in
*-aix*)
AC_DEFINE(AIX)
if test ! "$GNU_CC"; then
@@ -1798,16 +2060,17 @@ ia64*-hpux*)
else
DSO_LDOPTS='-b -E'
MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
fi
MOZ_FIX_LINK_PATHS=
SYSTEM_MAKEDEPEND=
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"
@@ -1879,34 +2142,35 @@ ia64*-hpux*)
MOZ_FIX_LINK_PATHS=
fi
if test -z "$GNU_CXX"; then
MIPSPRO_CXX=1
fi
;;
*-*linux*)
- # Note: both GNU_CXX and INTEL_CXX are set when using Intel's C compiler.
- if test "$INTEL_CXX"; then
+ # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
+ # Similarly for GNU_CXX and INTEL_CXX.
+ if test "$INTEL_CC" -o "$INTEL_CXX"; then
# -Os has been broken on Intel's C/C++ compilers for quite a
# while; Intel recommends against using it.
MOZ_OPTIMIZE_FLAGS="-O2"
MOZ_DEBUG_FLAGS="-g"
- elif test "$GNU_CXX"; then
- GCC_VERSION=`$CXX -v 2>&1 | awk '/^gcc version/ { print $3 }'`
+ elif test "$GNU_CC" -o "$GNU_CXX"; then
+ GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
case $GCC_VERSION in
4.1.*|4.2.*|4.5.*)
# -Os is broken on gcc 4.1.x 4.2.x, 4.5.x we need to tweak it to get good results.
MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
esac
# If we're building with --enable-profiling, we need a frame pointer.
if test -z "$MOZ_PROFILING"; then
- MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fomit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
+ MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fomit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
else
- MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fno-omit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
+ MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-omit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
fi
MOZ_DEBUG_FLAGS="-g"
fi
TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
case "${target_cpu}" in
alpha*)
@@ -1943,29 +2207,30 @@ ia64*-hpux*)
HOST_CXX=cl
HOST_LD=link
HOST_AR='lib -OUT:$@'
HOST_RANLIB='echo ranlib'
HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
WARNINGS_AS_ERRORS='-WX'
- MOZ_OPTIMIZE_FLAGS='-O1'
+ MOZ_OPTIMIZE_FLAGS='-Ox'
AR_FLAGS='-NOLOGO -OUT:"$@"'
ASM_SUFFIX=asm
CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
DLL_PREFIX=
DOXYGEN=:
DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
- DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
+ DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
GARBAGE=
IMPORT_LIB_SUFFIX=lib
- LIBS="$LIBS"
- LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
+ dnl Need to force-link against mozalloc because it's used in the shunt
+ LIBS="$LIBS \$(LIBXUL_DIST)/lib/mozalloc.lib"
+ LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
LIB_PREFIX=
LIB_SUFFIX=lib
MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
MKSHLIB_FORCE_ALL=
MKSHLIB_UNFORCE_ALL=
MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
@@ -1974,32 +2239,32 @@ ia64*-hpux*)
MOZ_FIX_LINK_PATHS=
MOZ_JS_LIBS='$(libdir)/mozjs.lib'
OBJ_SUFFIX=obj
RANLIB='echo not_ranlib'
STRIP='echo not_strip'
TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
UNZIP=unzip
XARGS=xargs
- XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
+ XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
ZIP=zip
- AC_DEFINE(WINCE)
AC_DEFINE(HAVE_SNPRINTF)
AC_DEFINE(_WINDOWS)
AC_DEFINE(WIN32)
AC_DEFINE(XP_WIN)
AC_DEFINE(XP_WIN32)
AC_DEFINE(HW_THREADS)
AC_DEFINE(STDC_HEADERS)
AC_DEFINE(NEW_H, <new>)
AC_DEFINE(WIN32_LEAN_AND_MEAN)
+ AC_DEFINE(HAVE_LOCALTIME_R)
TARGET_MD_ARCH=win32
- _PLATFORM_DEFAULT_TOOLKIT='windows'
+ _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
BIN_SUFFIX='.exe'
MOZ_USER_DIR="Mozilla"
dnl Default to Windows Mobile components enabled
WINCE_WINDOWS_MOBILE=1
MOZ_ARG_DISABLE_BOOL(windows-mobile-components,
[ --disable-windows-mobile-components
@@ -2060,28 +2325,28 @@ ia64*-hpux*)
MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
RC='$(WINDRES)'
# Use temp file for windres (bug 213281)
RCFLAGS='-O coff --use-temp-file'
# mingw doesn't require kernel32, user32, and advapi32 explicitly
LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
MOZ_JS_LIBS='-L$(libdir) -lmozjs'
MOZ_FIX_LINK_PATHS=
- DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
- XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
+ DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core -lmozalloc'
+ XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom -lmozalloc'
DLL_PREFIX=
IMPORT_LIB_SUFFIX=dll.a
GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
else
TARGET_COMPILER_ABI=msvc
HOST_CC='$(CC)'
HOST_CXX='$(CXX)'
HOST_LD='$(LD)'
if test "$AS_BIN"; then
- AS="$(basename "$AS_BIN")"
+ AS="$(basename "$AS_BIN")"
fi
AR='lib -NOLOGO -OUT:"$@"'
AR_FLAGS=
RANLIB='echo not_ranlib'
STRIP='echo not_strip'
PKG_SKIP_STRIP=1
XARGS=xargs
ZIP=zip
@@ -2112,19 +2377,19 @@ ia64*-hpux*)
# If we're building with --enable-profiling, we need -Oy-, which forces a frame pointer.
if test -z "$MOZ_PROFILING"; then
MOZ_OPTIMIZE_FLAGS='-O1'
else
MOZ_OPTIMIZE_FLAGS='-O1 -Oy-'
fi
MOZ_JS_LIBS='$(libdir)/mozjs.lib'
MOZ_FIX_LINK_PATHS=
- DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
- XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
- LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
+ DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
+ XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
+ LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
if test $_MSC_VER -ge 1400; then
LDFLAGS="$LDFLAGS -NXCOMPAT"
dnl For profile-guided optimization
PROFILE_GEN_CFLAGS="-GL"
PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
dnl XXX: PGO builds can fail with warnings treated as errors,
dnl specifically "no profile data available" appears to be
@@ -2178,21 +2443,22 @@ ia64*-hpux*)
esac
case "$host" in
*-mingw*|*-cygwin*|*-msvc*|*-mks*)
if test -z "$MOZ_TOOLS"; then
AC_MSG_ERROR([MOZ_TOOLS is not set])
fi
- MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd`
+ MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
fi
- if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_DIR/bin:"` = 0; then
+ MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
+ if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
fi
MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
;;
esac
case "$host_os" in
@@ -2215,18 +2481,18 @@ ia64*-hpux*)
;;
alpha-*)
AC_DEFINE(_ALPHA_)
;;
mips-*)
AC_DEFINE(_MIPS_)
;;
x86_64-*)
- AC_DEFINE(_AMD64_)
- ;;
+ AC_DEFINE(_AMD64_)
+ ;;
*)
AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
;;
esac
if test "$HAVE_64BIT_OS"; then
AC_DEFINE(_WIN64)
fi
@@ -2531,16 +2797,31 @@ alpha*-*-osf*)
*-sysv4.2uw7*)
NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
;;
*-os2*)
HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
;;
+*-android*)
+ AC_DEFINE(NO_PW_GECOS)
+ no_x=yes
+ _PLATFORM_DEFAULT_TOOLKIT=cairo-android
+ TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
+
+ MOZ_GFX_OPTIMIZE_MOBILE=1
+ # If we're building with --enable-profiling, we need a frame pointer.
+ if test -z "$MOZ_PROFILING"; then
+ MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fomit-frame-pointer"
+ else
+ MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fno-omit-frame-pointer"
+ fi
+ ;;
+
esac
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
@@ -2735,23 +3016,38 @@ esac
fi # ENABLE_TRACEJIT
AC_SUBST(ENABLE_TRACEJIT)
AC_SUBST(NANOJIT_ARCH)
if test -z "$SKIP_COMPILER_CHECKS"; then
dnl Checks for typedefs, structures, and compiler characteristics.
dnl ========================================================
-AC_LANG_C
AC_HEADER_STDC
AC_C_CONST
AC_TYPE_MODE_T
AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
+AC_LANG_CPLUSPLUS
+AC_MSG_CHECKING(for __stdcall)
+AC_CACHE_VAL(ac_cv___stdcall,
+ [AC_TRY_COMPILE([template <typename Method> struct foo;
+ template <> struct foo<void (*)()> {};
+ template <> struct foo<void (__stdcall*)()> {};],
+ [],
+ [ac_cv___stdcall=true],
+ [ac_cv___stdcall=false])])
+if test "$ac_cv___stdcall" = true ; then
+ AC_DEFINE(HAVE_STDCALL)
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_LANG_C
AC_MSG_CHECKING(for ssize_t)
AC_CACHE_VAL(ac_cv_type_ssize_t,
[AC_TRY_COMPILE([#include <stdio.h>
#include <sys/types.h>],
[ssize_t foo = 0;],
[ac_cv_type_ssize_t=true],
[ac_cv_type_ssize_t=false])])
if test "$ac_cv_type_ssize_t" = true ; then
@@ -3039,50 +3335,77 @@ EOF
fi
fi
rm -f conftest.{c,S}
])
if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
"$ac_cv_have_visibility_class_bug" = "no"; then
VISIBILITY_FLAGS='-I$(DIST)/system_wrappers_js -include $(topsrcdir)/config/gcc_hidden.h'
WRAP_SYSTEM_INCLUDES=1
+ STL_FLAGS='-I$(DIST)/stl_wrappers'
+ WRAP_STL_INCLUDES=1
else
VISIBILITY_FLAGS='-fvisibility=hidden'
fi # have visibility pragma bug
fi # have visibility pragma
fi # have visibility(default) attribute
fi # have visibility(hidden) attribute
fi # GNU_CC
# visibility hidden flag for Sun Studio on Solaris
if test "$SOLARIS_SUNPRO_CC"; then
VISIBILITY_FLAGS='-xldscope=hidden'
fi # Sun Studio on Solaris
AC_SUBST(WRAP_SYSTEM_INCLUDES)
AC_SUBST(VISIBILITY_FLAGS)
+dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
+dnl ========================================================
+if test "$GNU_CC"; then
+ CFLAGS_save="${CFLAGS}"
+ CFLAGS="${CFLAGS} -Werror"
+ AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
+ ac_cv_force_align_arg_pointer,
+ [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
+ [],
+ ac_cv_force_align_arg_pointer="yes",
+ ac_cv_force_align_arg_pointer="no")])
+ CFLAGS="${CFLAGS_save}"
+ if test "$ac_cv_force_align_arg_pointer" = "yes"; then
+ HAVE_GCC_ALIGN_ARG_POINTER=1
+ else
+ HAVE_GCC_ALIGN_ARG_POINTER=
+ fi
+fi
+AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
+
dnl Checks for header files.
dnl ========================================================
AC_HEADER_DIRENT
case "$target_os" in
freebsd*)
# for stuff like -lXshm
CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
;;
esac
AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
AC_CHECK_HEADERS(malloc.h)
AC_CHECK_HEADERS(X11/XKBlib.h)
+AC_CHECK_HEADERS(io.h)
dnl These are all the places some variant of statfs can be hiding.
AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
+dnl Quota support
+AC_CHECK_HEADERS(sys/quota.h)
+AC_CHECK_HEADERS(linux/quota.h)
+
dnl Try for MMX support
dnl NB - later gcc versions require -mmmx for this header to be successfully
dnl included (or another option which implies it, such as -march=pentium-mmx)
AC_CHECK_HEADERS(mmintrin.h)
dnl Check whether the compiler supports the new-style C++ standard
dnl library headers (i.e. <new>) or needs the old "new.h"
AC_LANG_CPLUSPLUS
@@ -3168,16 +3491,44 @@ fi
dnl OS/2 has socket in libc.
case $target in
*-os2*)
;;
*)
AC_CHECK_LIB(socket, socket)
esac
+AC_MSG_CHECKING(for ARM SIMD support in compiler)
+AC_TRY_COMPILE([],
+ [asm("uqadd8 r1, r1, r2");],
+ result="yes", result="no")
+AC_MSG_RESULT("$result")
+if test "$result" = "yes"; then
+ AC_DEFINE(HAVE_ARM_SIMD)
+ HAVE_ARM_SIMD=1
+fi
+AC_SUBST(HAVE_ARM_SIMD)
+
+AC_MSG_CHECKING(for ARM NEON support in compiler)
+_SAVE_CFLAGS="$CFLAGS"
+if test "$GNU_CC"; then
+ # gcc needs -mfpu=neon to recognize NEON instructions
+ CFLAGS="$CFLAGS -mfpu=neon -mfloat-abi=softfp"
+fi
+AC_TRY_COMPILE([],
+ [asm("vadd.i8 d0, d0, d0");],
+ result="yes", result="no")
+AC_MSG_RESULT("$result")
+if test "$result" = "yes"; then
+ AC_DEFINE(HAVE_ARM_NEON)
+ HAVE_ARM_NEON=1
+fi
+CFLAGS="$_SAVE_CFLAGS"
+AC_SUBST(HAVE_ARM_NEON)
+
dnl ========================================================
dnl = pthread support
dnl = Start by checking whether the system support pthreads
dnl ========================================================
case "$target_os" in
darwin*)
USE_PTHREADS=1
;;
@@ -3218,17 +3569,17 @@ then
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`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; 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"
@@ -3243,17 +3594,17 @@ then
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`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; 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
@@ -3357,21 +3708,39 @@ if test "$result" = "no"; then
AC_DEFINE(MMAP_MISSES_WRITES)
fi
dnl Checks for library functions.
dnl ========================================================
AC_PROG_GCC_TRADITIONAL
AC_FUNC_MEMCMP
-
AC_CHECK_FUNCS([fchmod flockfile getc_unlocked _getc_nolock getpagesize \
lchown localtime_r lstat64 memmove random rint sbrk snprintf \
stat64 statvfs statvfs64 strerror strtok_r truncate64])
+dnl check for clock_gettime(), the CLOCK_MONOTONIC clock, and -lrt
+_SAVE_LDFLAGS=$LDFLAGS
+LDFLAGS="$LDFLAGS -lrt"
+AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC) and -lrt,
+ ac_cv_have_clock_monotonic,
+ [AC_TRY_LINK([#include <time.h>],
+ [ struct timespec ts;
+ clock_gettime(CLOCK_MONOTONIC, &ts); ],
+ ac_cv_have_clock_monotonic=yes,
+ ac_cv_have_clock_monotonic=no)])
+LDFLAGS=$_SAVE_LDFLAGS
+if test "$ac_cv_have_clock_monotonic" = "yes"; then
+ HAVE_CLOCK_MONOTONIC=1
+ REALTIME_LIBS=-lrt
+ AC_DEFINE(HAVE_CLOCK_MONOTONIC)
+ AC_SUBST(HAVE_CLOCK_MONOTONIC)
+ AC_SUBST(REALTIME_LIBS)
+fi
+
dnl Windows functions, for mingw.
AC_TRY_LINK([#include <windows.h>],
[SYSTEMTIME st;FILETIME ft;SystemTimeToFileTime(&st,&ft);],
ac_cv_have_systemtimetofiletime="yes",
ac_cv_have_systemtimetofiletime="no")
if test "$ac_cv_have_systemtimetofiletime" = "yes"; then
AC_DEFINE(HAVE_SYSTEMTIMETOFILETIME)
fi
@@ -3658,16 +4027,17 @@ if test "$GNU_CC"; then
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
AC_CACHE_CHECK(for gcc 3.0 ABI,
ac_cv_gcc_three_abi,
@@ -3972,18 +4342,89 @@ AC_CACHE_CHECK(for trouble comparing to
template <class T> int operator!=(const T2*, const T&) { return 0; }],
[Foo<int> f; return (0 != f);],
ac_cv_trouble_comparing_to_zero=no,
ac_cv_trouble_comparing_to_zero=yes)])
if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
fi
-
-
+# try harder, when checking for __thread support, see bug 521750 comment #33 and below
+_SAVE_LDFLAGS=$LDFLAGS
+LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS"
+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
+if test "$ac_cv_thread_keyword" = yes; then
+ # mips builds fail with TLS variables because of a binutils bug.
+ # See bug 528687
+ case "${target}" in
+ mips*-*)
+ :
+ ;;
+ *-android*)
+ :
+ ;;
+ *)
+ AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
+ ;;
+ esac
+fi
+
+dnl Check for the existence of various allocation headers/functions
+
+MALLOC_H=
+AC_CHECK_HEADER(malloc.h, [MALLOC_H=malloc.h])
+if test "$MALLOC_H" = ""; then
+ AC_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h])
+ if test "$MALLOC_H" = ""; then
+ AC_CHECK_HEADER(sys/malloc.h, [MALLOC_H=sys/malloc.h])
+ fi
+fi
+if test "$MALLOC_H" != ""; then
+ AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
+fi
+
+MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
+AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
+
+dnl See if compiler supports some gcc-style attributes
+
+AC_CACHE_CHECK(for __attribute__((always_inline)),
+ ac_cv_attribute_always_inline,
+ [AC_TRY_COMPILE([],
+ [inline void f(void) __attribute__((always_inline));],
+ ac_cv_attribute_always_inline=yes,
+ ac_cv_attribute_always_inline=no)])
+
+AC_CACHE_CHECK(for __attribute__((malloc)),
+ ac_cv_attribute_malloc,
+ [AC_TRY_COMPILE([],
+ [void* f(int) __attribute__((malloc));],
+ ac_cv_attribute_malloc=yes,
+ ac_cv_attribute_malloc=no)])
+
+AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
+ ac_cv_attribute_warn_unused,
+ [AC_TRY_COMPILE([],
+ [int f(void) __attribute__((warn_unused_result));],
+ ac_cv_attribute_warn_unused=yes,
+ ac_cv_attribute_warn_unused=no)])
+
+AC_CACHE_CHECK(for __attribute__((noreturn)),
+ ac_cv_attribute_noreturn,
+ [AC_TRY_COMPILE([],
+ [void f(void) __attribute__((noreturn));],
+ ac_cv_attribute_noreturn=yes,
+ ac_cv_attribute_noreturn=no)])
+
dnl End of C++ language/feature checks
AC_LANG_C
dnl ========================================================
dnl = Internationalization checks
dnl ========================================================
dnl
dnl Internationalization and Locale support is different
@@ -3994,30 +4435,67 @@ 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
+fi
+
+AC_HAVE_FUNCS(localeconv)
fi # SKIP_COMPILER_CHECKS
TARGET_XPCOM_ABI=
if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
fi
dnl Mozilla specific options
dnl ========================================================
dnl The macros used for command line options
dnl are defined in build/autoconf/altoptions.m4.
+dnl If the compiler supports these attributes, define them as
+dnl convenience macros.
+if test "$ac_cv_attribute_always_inline" = yes ; then
+ AC_DEFINE(NS_ALWAYS_INLINE, [__attribute__((always_inline))])
+else
+ AC_DEFINE(NS_ALWAYS_INLINE,)
+fi
+
+if test "$ac_cv_attribute_malloc" = yes ; then
+ AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
+else
+ AC_DEFINE(NS_ATTR_MALLOC,)
+fi
+
+if test "$ac_cv_attribute_warn_unused" = yes ; then
+ AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
+else
+ AC_DEFINE(NS_WARN_UNUSED_RESULT,)
+fi
+
+if test "$ac_cv_attribute_noreturn" = yes ; then
+ AC_DEFINE(NS_NORETURN, [__attribute__((noreturn))])
+else
+ AC_DEFINE(NS_NORETURN,)
+fi
+
+dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
+dnl features that Windows actually does support.
+
+if test -n "$SKIP_COMPILER_CHECKS"; then
+ dnl Windows has malloc.h
+ AC_DEFINE(MALLOC_H, [<malloc.h>])
+ AC_DEFINE(HAVE_FORCEINLINE)
+ AC_DEFINE(HAVE_LOCALECONV)
+fi # SKIP_COMPILER_CHECKS
dnl ========================================================
dnl =
dnl = Check for external package dependencies
dnl =
dnl ========================================================
MOZ_ARG_HEADER(External Packages)
@@ -4051,16 +4529,17 @@ AC_SUBST(NSPR_LIBS)
dnl Pass either --with-system-nspr or (--with-nspr-cflags and
dnl --with-nspr-libs), but not both.
if test "$_USE_SYSTEM_NSPR" && (test "$NSPR_CFLAGS" -o "$NSPR_LIBS"); then
AC_MSG_ERROR([--with-system-nspr and --with-nspr-libs/cflags are mutually exclusive.
See 'configure --help'.])
fi
+dnl Top-level Mozilla switched to requiring NSPR 4.8.6 (bug 560582), but we don't need it in JS.
if test -n "$_USE_SYSTEM_NSPR"; then
MOZ_NATIVE_NSPR=
AM_PATH_NSPR(4.7.0, [MOZ_NATIVE_NSPR=1])
if test -z "$MOZ_NATIVE_NSPR"; then
AC_MSG_ERROR([--with-system-nspr given, but configure could not find a suitable NSPR.
Pass --with-nspr-exec-prefix, --with-nspr-prefix, or --with-nspr-cflags/libs.
See 'configure --help'.])
fi
@@ -4074,73 +4553,55 @@ if test -n "$MOZ_NATIVE_NSPR"; then
#error PR_STATIC_ASSERT not defined
#endif],
[MOZ_NATIVE_NSPR=1],
AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
CFLAGS=$_SAVE_CFLAGS
fi
dnl ========================================================
-dnl Use ARM userspace kernel helpers; tell NSPR to enable
-dnl their usage and use them in spidermonkey.
-dnl ========================================================
-MOZ_ARG_WITH_BOOL(arm-kuser,
-[ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
- USE_ARM_KUSER=1,
- USE_ARM_KUSER=)
-if test -n "$USE_ARM_KUSER"; then
- AC_DEFINE(USE_ARM_KUSER)
-fi
-
-dnl ========================================================
dnl =
dnl = Application
dnl =
dnl ========================================================
MOZ_ARG_HEADER(Application)
BUILD_STATIC_LIBS=
ENABLE_TESTS=1
+MOZ_THUMB2=
+USE_ARM_KUSER=
+
+case "${target}" in
+ arm-android-eabi)
+ USE_ARM_KUSER=1
+ MOZ_THUMB2=1
+ ;;
+esac
+
+dnl ========================================================
+dnl Use ARM userspace kernel helpers; tell NSPR to enable
+dnl their usage and use them in spidermonkey.
+dnl ========================================================
+MOZ_ARG_WITH_BOOL(arm-kuser,
+[ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
+ USE_ARM_KUSER=1,)
+if test -n "$USE_ARM_KUSER"; then
+ AC_DEFINE(USE_ARM_KUSER)
+fi
+
dnl ========================================================
dnl =
dnl = Components & Features
dnl =
dnl ========================================================
MOZ_ARG_HEADER(Components and Features)
dnl ========================================================
-
-dnl ========================================================
-dnl = Enable building the Thumb2 instruction set
-dnl ========================================================
-MOZ_ARG_ENABLE_BOOL(thumb2,
- [ --enable-thumb2 Enable Thumb2 instruction set],
- MOZ_THUMB2=1,)
-
-if test -n "$MOZ_THUMB2"; then
- case "$target_cpu" in
- arm*)
- if test "$GNU_CC"; then
- AC_DEFINE(MOZ_THUMB2)
- CFLAGS="$CFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
- CXXFLAGS="$CXXFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
- ASFLAGS="$ASFLAGS -march=armv7-a -mthumb"
- else
- AC_MSG_ERROR([--enable-thumb2 is not supported for non-GNU toolchains])
- fi
- ;;
- *)
- AC_MSG_ERROR([--enable-thumb2 is not supported for non-ARM CPU architectures])
- ;;
- esac
-fi
-
-dnl ========================================================
dnl = Localization
dnl ========================================================
MOZ_ARG_ENABLE_STRING(ui-locale,
[ --enable-ui-locale=ab-CD
Select the user interface locale (default: en-US)],
MOZ_UI_LOCALE=$enableval )
AC_SUBST(MOZ_UI_LOCALE)
@@ -4155,74 +4616,81 @@ MOZ_ARG_DISABLE_BOOL(tests,
dnl ========================================================
dnl =
dnl = Module specific options
dnl =
dnl ========================================================
MOZ_ARG_HEADER(Individual module options)
dnl ========================================================
+dnl = Enable building the Thumb2 instruction set
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(thumb2,
+ [ --enable-thumb2 Enable Thumb2 instruction set],
+ MOZ_THUMB2=1,
+ MOZ_THUMB2=)
+
+if test -n "$MOZ_THUMB2"; then
+ case "$target_cpu" in
+ arm*)
+ if test "$GNU_CC"; then
+ AC_DEFINE(MOZ_THUMB2)
+ CFLAGS="$CFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
+ CXXFLAGS="$CXXFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
+ ASFLAGS="$ASFLAGS -march=armv7-a -mthumb"
+ else
+ AC_MSG_ERROR([--enable-thumb2 is not supported for non-GNU toolchains])
+ fi
+ ;;
+ *)
+ AC_MSG_ERROR([--enable-thumb2 is not supported for non-ARM CPU architectures])
+ ;;
+ esac
+fi
+
+AC_SUBST(MOZ_THUMB2)
+
+dnl ========================================================
dnl =
dnl = Debugging Options
dnl =
dnl ========================================================
MOZ_ARG_HEADER(Debugging and Optimizations)
dnl ========================================================
dnl = Disable building with debug info.
dnl = Debugging is OFF by default
dnl ========================================================
-if test -z "$MOZ_DEBUG_FLAGS"
-then
- case "$target" in
- *-irix*)
- if test "$GNU_CC"; then
- GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
- case "$GCC_VERSION" in
- 2.95.*)
- MOZ_DEBUG_FLAGS=""
- ;;
- *)
- MOZ_DEBUG_FLAGS="-g"
- ;;
- esac
- else
- MOZ_DEBUG_FLAGS="-g"
- fi
- ;;
- *)
- MOZ_DEBUG_FLAGS="-g"
- ;;
- esac
+if test -z "$MOZ_DEBUG_FLAGS"; then
+ MOZ_DEBUG_FLAGS="-g"
fi
MOZ_ARG_ENABLE_STRING(debug,
[ --enable-debug[=DBG] Enable building with developer debug info
- (Using compiler flags DBG)],
+ (using compiler flags DBG)],
[ if test "$enableval" != "no"; then
MOZ_DEBUG=1
if test -n "$enableval" -a "$enableval" != "yes"; then
MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
_MOZ_DEBUG_FLAGS_SET=1
fi
else
MOZ_DEBUG=
fi ],
MOZ_DEBUG=)
MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG -DTRACING"
MOZ_ARG_WITH_STRING(debug-label,
[ --with-debug-label=LABELS
- Enabled the use of DEBUG_label ifdefs
- (comma separated)],
+ Define DEBUG_<value> for each comma-separated
+ value given.],
[ for option in `echo $withval | sed 's/,/ /g'`; do
MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${option}"
done])
-
MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
if test -n "$MOZ_DEBUG"; then
AC_MSG_CHECKING([for valid debug flags])
_SAVE_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
AC_TRY_COMPILE([#include <stdio.h>],
[printf("Hello World\n");],
@@ -4306,16 +4774,27 @@ MOZ_ARG_ENABLE_STRING(debug-symbols,
fi ])
if test -n "$MOZ_DEBUG" -o -n "$MOZ_DEBUG_SYMBOLS"; then
AC_DEFINE(MOZ_DEBUG_SYMBOLS)
export MOZ_DEBUG_SYMBOLS
fi
dnl ========================================================
+dnl = Disable any treating of compile warnings as errors
+dnl ========================================================
+MOZ_ARG_DISABLE_BOOL(warnings-as-errors,
+[ --disable-warnings-as-errors
+ Disable treating of warnings as errors],
+ MOZ_DISABLE_WARNINGS_AS_ERRORS=1,
+ MOZ_DISABLE_WARNINGS_AS_ERRORS= )
+if test "$MOZ_DISABLE_WARNINGS_AS_ERRORS"; then
+ WARNINGS_AS_ERRORS=''
+fi
+
dnl = Enable trace malloc
dnl ========================================================
NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
MOZ_ARG_ENABLE_BOOL(trace-malloc,
[ --enable-trace-malloc Enable malloc tracing],
NS_TRACE_MALLOC=1,
NS_TRACE_MALLOC= )
if test "$NS_TRACE_MALLOC"; then
@@ -4383,28 +4862,42 @@ if test "$MOZ_MEMORY"; then
;;
*-solaris*)
AC_DEFINE(MOZ_MEMORY_SOLARIS)
;;
*-msvc*|*-mks*|*-cygwin*|*-mingw*)
AC_DEFINE(MOZ_MEMORY_WINDOWS)
# the interesting bits will get passed down in MOZ_MEMORY_LDFLAGS
;;
- *-*wince|*-*winmo)
+ *-*wince)
+ AC_DEFINE(MOZ_MEMORY_WINCE)
+ AC_DEFINE(MOZ_MEMORY_WINDOWS)
+ if test -z "$WINCE_WINDOWS_MOBILE"; then
+ AC_DEFINE(MOZ_MEMORY_WINCE6)
+ fi
+ ;;
+ *-*winmo)
AC_DEFINE(MOZ_MEMORY_WINCE)
AC_DEFINE(MOZ_MEMORY_WINDOWS)
;;
*-android*)
AC_DEFINE(MOZ_MEMORY_LINUX)
AC_DEFINE(MOZ_MEMORY_ANDROID)
;;
*)
AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
;;
esac
+
+ if test "$OS_ARCH" != "Darwin"; then
+ dnl NB: this must be kept in sync with jemalloc.h
+ AC_DEFINE(HAVE_JEMALLOC_VALLOC)
+ AC_DEFINE(HAVE_JEMALLOC_POSIX_MEMALIGN)
+ AC_DEFINE(HAVE_JEMALLOC_MEMALIGN)
+ fi
fi
AC_SUBST(MOZ_MEMORY)
AC_SUBST(MOZ_MEMORY_LDFLAGS)
dnl ========================================================
dnl = Use malloc wrapper lib
dnl ========================================================
MOZ_ARG_ENABLE_BOOL(wrap-malloc,
@@ -4422,32 +4915,16 @@ fi
dnl ========================================================
dnl = Location of malloc wrapper lib
dnl ========================================================
MOZ_ARG_WITH_STRING(wrap-malloc,
[ --with-wrap-malloc=DIR Location of malloc wrapper library],
WRAP_MALLOC_LIB=$withval)
dnl ========================================================
-dnl = Build jsctypes if it's enabled
-dnl ========================================================
-MOZ_ARG_ENABLE_BOOL(ctypes,
-[ --enable-ctypes Enable js-ctypes (default=no)],
- JS_HAS_CTYPES=1,
- JS_HAS_CTYPES= )
-AC_SUBST(JS_HAS_CTYPES)
-if test "$JS_HAS_CTYPES"; then
- if test "$_MSC_VER" -a -z $AS; then
- # Error out if we're on MSVC and MASM is unavailable.
- AC_MSG_ERROR([No suitable assembler found. An assembler is required to build js-ctypes. If you are building with MS Visual Studio 8 Express, you may download the MASM 8.0 package, upgrade to Visual Studio 9 Express, or install the Vista SDK.])
- fi
- AC_DEFINE(JS_HAS_CTYPES)
-fi
-
-dnl ========================================================
dnl = Use JS Call tracing
dnl ========================================================
MOZ_ARG_ENABLE_BOOL(trace-jscalls,
[ --enable-trace-jscalls Enable JS call enter/exit callback (default=no)],
MOZ_TRACE_JSCALLS=1,
MOZ_TRACE_JSCALLS= )
if test -n "$MOZ_TRACE_JSCALLS"; then
AC_DEFINE(MOZ_TRACE_JSCALLS)
@@ -4535,17 +5012,17 @@ MOZ_ARG_ENABLE_BOOL(vtune,
MOZ_VTUNE=1,
MOZ_VTUNE= )
if test -n "$MOZ_VTUNE"; then
MOZ_PROFILING=1
AC_DEFINE(MOZ_VTUNE)
fi
dnl ========================================================
-dnl Zealous GC
+dnl Zealous JavaScript GC
dnl ========================================================
MOZ_ARG_ENABLE_BOOL(gczeal,
[ --enable-gczeal Enable zealous GCing],
JS_GC_ZEAL=1,
JS_GC_ZEAL= )
if test -n "$JS_GC_ZEAL"; then
AC_DEFINE(JS_GC_ZEAL)
fi
@@ -4554,23 +5031,21 @@ dnl ====================================
dnl = Enable compiling with ccache
dnl ======================================================
MOZ_ARG_WITH_STRING(ccache,
[ --with-ccache[=path/to/ccache]
Enable compiling with ccache],
CCACHE=$withval, CCACHE="no")
if test "$CCACHE" != "no"; then
- if test -n "$CCACHE"; then
- if test "$CCACHE" = "yes"; then
- CCACHE=
- else
- if test ! -e "$CCACHE"; then
- AC_MSG_ERROR([$CCACHE not found])
- fi
+ if test -z "$CCACHE" -o "$CCACHE" = "yes"; then
+ CCACHE=
+ else
+ if test ! -e "$CCACHE"; then
+ AC_MSG_ERROR([$CCACHE not found])
fi
fi
MOZ_PATH_PROGS(CCACHE, $CCACHE ccache)
if test -z "$CCACHE" -o "$CCACHE" = ":"; then
AC_MSG_ERROR([ccache not found])
elif test -x "$CCACHE"; then
CC="$CCACHE $CC"
CXX="$CCACHE $CXX"
@@ -5071,16 +5546,31 @@ AC_SUBST(EDITLINE_LIBS)
dnl ========================================================
dnl =
dnl = Standalone module options
dnl =
dnl ========================================================
MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
dnl ========================================================
+dnl = Build jsctypes if it's enabled
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(ctypes,
+[ --enable-ctypes Enable js-ctypes (default=no)],
+ JS_HAS_CTYPES=1,
+ JS_HAS_CTYPES= )
+AC_SUBST(JS_HAS_CTYPES)
+if test "$JS_HAS_CTYPES"; then
+ if test "$_MSC_VER" -a -z $AS; then
+ # Error out if we're on MSVC and MASM is unavailable.
+ AC_MSG_ERROR([No suitable assembler found. An assembler is required to build js-ctypes. If you are building with MS Visual Studio 8 Express, you may download the MASM 8.0 package, upgrade to Visual Studio 9 Express, or install the Vista SDK.])
+ fi
+ AC_DEFINE(JS_HAS_CTYPES)
+fi
+
if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
fi
MOZ_ARG_WITH_STRING(sync-build-files,
[ --with-sync-build-files=DIR
Check that files in 'config' and 'build' match
their originals in 'DIR/config' and 'DIR/build'.
@@ -5145,18 +5635,16 @@ AC_SUBST(USE_DEPENDENT_LIBS)
AC_SUBST(MOZ_BUILD_ROOT)
AC_SUBST(MOZ_OS2_TOOLS)
AC_SUBST(MOZ_OS2_USE_DECLSPEC)
AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
AC_SUBST(MOZ_TIMELINE)
-AC_SUBST(WINCE)
-AC_SUBST(WINCE_WINDOWS_MOBILE)
AC_SUBST(MOZ_APP_NAME)
AC_SUBST(MOZ_APP_DISPLAYNAME)
AC_SUBST(MOZ_APP_UA_NAME)
AC_SUBST(MOZ_APP_VERSION)
AC_SUBST(MOZ_UA_FIREFOX_VERSION)
AC_SUBST(FIREFOX_VERSION)
@@ -5168,16 +5656,20 @@ dnl win32 options
AC_SUBST(MOZ_MAPINFO)
AC_SUBST(MOZ_BROWSE_INFO)
AC_SUBST(MOZ_TOOLS_DIR)
AC_SUBST(CYGWIN_WRAPPER)
AC_SUBST(AS_PERL)
AC_SUBST(WIN32_REDIST_DIR)
AC_SUBST(PYTHON)
+AC_SUBST(WINCE)
+AC_SUBST(WINCE_SDK_DIR)
+AC_SUBST(WINCE_WINDOWS_MOBILE)
+
dnl Echo the CFLAGS to remove extra whitespace.
CFLAGS=`echo \
$_WARNINGS_CFLAGS \
$CFLAGS`
CXXFLAGS=`echo \
$_MOZ_RTTI_FLAGS \
$_MOZ_EXCEPTIONS_FLAGS \
@@ -5260,16 +5752,30 @@ if test "$USING_HCC"; then
CC='${topsrcdir}/build/hcc'
CC="$CC '$_OLDCC'"
CXX='${topsrcdir}/build/hcpp'
CXX="$CXX '$_OLDCXX'"
AC_SUBST(CC)
AC_SUBST(CXX)
fi
+AC_MSG_CHECKING([for posix_fallocate])
+AC_TRY_LINK([#define _XOPEN_SOURCE 600
+ #include <fcntl.h>],
+ [posix_fallocate(0, 0, 0);],
+ [ac_cv___posix_fallocate=true],
+ [ac_cv___posix_fallocate=false])
+
+if test "$ac_cv___posix_fallocate" = true ; then
+ AC_DEFINE(HAVE_POSIX_FALLOCATE)
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+
dnl Check for missing components
if test "$COMPILE_ENVIRONMENT"; then
if test "$MOZ_X11"; then
dnl ====================================================
dnl = Check if X headers exist
dnl ====================================================
_SAVE_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $XCFLAGS"
@@ -5470,17 +5976,17 @@ if cmp -s config/autoconf.mk config/auto
mv -f config/autoconf.mk.orig config/autoconf.mk 2> /dev/null
else
rm -f config/autoconf.mk.orig 2> /dev/null
fi
# Produce the js-config script at configure time; see the comments for
# 'js-config' in Makefile.in.
AC_MSG_RESULT(invoking make to create js-config script)
-$MAKE js-config
+$GMAKE js-config
# Build jsctypes if it's enabled.
if test "$JS_HAS_CTYPES"; then
# Run the libffi 'configure' script.
ac_configure_args="--disable-shared --enable-static --disable-raw-api"
if test "$MOZ_DEBUG"; then
ac_configure_args="$ac_configure_args --enable-debug"
fi