--- /dev/null
+dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
+dnl vi: set tabstop=4 shiftwidth=4 expandtab:
+dnl ***** BEGIN LICENSE BLOCK *****
+dnl Version: MPL 1.1/GPL 2.0/LGPL 2.1
+dnl
+dnl The contents of this file are subject to the Mozilla Public License Version
+dnl 1.1 (the "License"); you may not use this file except in compliance with
+dnl the License. You may obtain a copy of the License at
+dnl http://www.mozilla.org/MPL/
+dnl
+dnl Software distributed under the License is distributed on an "AS IS" basis,
+dnl WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+dnl for the specific language governing rights and limitations under the
+dnl License.
+dnl
+dnl The Original Code is this file as it was released upon August 6, 1998.
+dnl
+dnl The Initial Developer of the Original Code is
+dnl Christopher Seawood.
+dnl Portions created by the Initial Developer are Copyright (C) 1998-2001
+dnl the Initial Developer. All Rights Reserved.
+dnl
+dnl Contributor(s):
+dnl Jamie Zawinski <jwz@jwz.org>
+dnl gettimeofday args check
+dnl Christopher Blizzard <blizzard@appliedtheory.com>
+dnl gnomefe update & enable-pthreads
+dnl Ramiro Estrugo <ramiro@netscape.com>
+dnl X11 makedepend support
+dnl Insure support.
+dnl Henry Sobotka <sobotka@axess.com>
+dnl OS/2 support
+dnl Dan Mosedale <dmose@mozilla.org>
+dnl LDAP support
+dnl Seth Spitzer <sspitzer@netscape.com>
+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
+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
+dnl decision by deleting the provisions above and replace them with the notice
+dnl and other provisions required by the GPL or the LGPL. If you do not delete
+dnl the provisions above, a recipient may use your version of this file under
+dnl the terms of any one of the MPL, the GPL or the LGPL.
+dnl
+dnl ***** END LICENSE BLOCK *****
+
+dnl Process this file with autoconf to produce a configure script.
+dnl ========================================================
+
+AC_PREREQ(2.13)
+AC_INIT(jsapi.h)
+AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
+AC_CONFIG_HEADER(js-config.h)
+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 with mozilla
+dnl ========================================================
+NSPR_VERSION=4
+
+dnl Set the minimum version of toolkit libs used by mozilla
+dnl ========================================================
+PERL_VERSION=5.006
+WINDRES_VERSION=2.14.90
+W32API_VERSION=3.8
+
+MSMANIFEST_TOOL=
+
+dnl Set various checks
+dnl ========================================================
+MISSING_X=
+AC_PROG_AWK
+
+dnl Initialize the Pthread test variables early so they can be
+dnl overridden by each platform.
+dnl ========================================================
+USE_PTHREADS=
+_PTHREAD_LDFLAGS=""
+
+dnl Do not allow a separate objdir build if a srcdir build exists.
+dnl ==============================================================
+_topsrcdir=`cd \`dirname $0\`; pwd`
+_objdir=`pwd`
+
+if test "$_topsrcdir" != "$_objdir"
+then
+ # Check for a couple representative files in the source tree
+ _conflict_files=
+ for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
+ if test -f $file; then
+ _conflict_files="$_conflict_files $file"
+ fi
+ done
+ if test "$_conflict_files"; then
+ echo "***"
+ echo "* Your source tree contains these files:"
+ for file in $_conflict_files; do
+ echo "* $file"
+ done
+ cat 1>&2 <<-EOF
+ * This indicates that you previously built in the source tree.
+ * A source tree build can confuse the separate objdir build.
+ *
+ * To clean up the source tree:
+ * 1. cd $_topsrcdir
+ * 2. gmake distclean
+ ***
+ EOF
+ exit 1
+ break
+ fi
+fi
+MOZ_BUILD_ROOT=`pwd`
+
+dnl Choose where to put the 'dist' directory.
+dnl ==============================================================
+
+MOZ_ARG_WITH_STRING(dist-dir,
+[ --with-dist-dir=DIR Use DIR as 'dist' staging area. DIR may be
+ relative to the top of SpiderMonkey build tree,
+ or absolute.],
+ TOP_DIST=$withval,
+ TOP_DIST=dist)
+AC_SUBST(TOP_DIST)
+
+dnl Default to MSVC for win32
+dnl ==============================================================
+if test -z "$CROSS_COMPILE"; then
+case "$target" in
+*-cygwin*|*-mingw*|*-msvc*|*-mks*)
+ if test -z "$CC"; then CC=cl; fi
+ if test -z "$CXX"; then CXX=cl; fi
+ if test -z "$CPP"; then CPP="cl -E -nologo"; fi
+ if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
+ if test -z "$LD"; then LD=link; fi
+ if test -z "$AS"; then AS=ml; fi
+ ;;
+esac
+fi
+
+COMPILE_ENVIRONMENT=1
+MOZ_ARG_ENABLE_BOOL(compile-environment,
+[ --disable-compile-environment
+ Disable compiler/library checks.],
+ COMPILE_ENVIRONMENT=1,
+ COMPILE_ENVIRONMENT= )
+
+dnl ========================================================
+dnl Checks for compilers.
+dnl ========================================================
+
+if test "$COMPILE_ENVIRONMENT"; then
+
+if test "$target" != "$host"; then
+ echo "cross compiling from $host to $target"
+
+ _SAVE_CC="$CC"
+ _SAVE_CFLAGS="$CFLAGS"
+ _SAVE_LDFLAGS="$LDFLAGS"
+
+ AC_MSG_CHECKING([for host c compiler])
+ AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
+ if test -z "$HOST_CC"; then
+ AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
+ fi
+ AC_MSG_RESULT([$HOST_CC])
+ AC_MSG_CHECKING([for host c++ compiler])
+ AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
+ if test -z "$HOST_CXX"; then
+ AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
+ fi
+ AC_MSG_RESULT([$HOST_CXX])
+
+ if test -z "$HOST_CFLAGS"; then
+ HOST_CFLAGS="$CFLAGS"
+ fi
+ if test -z "$HOST_CXXFLAGS"; then
+ HOST_CXXFLAGS="$CXXFLAGS"
+ fi
+ if test -z "$HOST_LDFLAGS"; then
+ HOST_LDFLAGS="$LDFLAGS"
+ fi
+ AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
+ AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
+ CC="$HOST_CC"
+ CFLAGS="$HOST_CFLAGS"
+ LDFLAGS="$HOST_LDFLAGS"
+
+ AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
+ AC_TRY_COMPILE([], [return(0);],
+ [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
+ AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
+
+ CC="$HOST_CXX"
+ CFLAGS="$HOST_CXXFLAGS"
+
+ AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
+ AC_TRY_COMPILE([], [return(0);],
+ [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
+ AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
+
+ CC=$_SAVE_CC
+ CFLAGS=$_SAVE_CFLAGS
+ LDFLAGS=$_SAVE_LDFLAGS
+
+ case "$build:$target" in
+ 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"
+ ;;
+ esac
+
+ case "$target" in
+ *symbian*)
+ AC_ARG_WITH(symbian-sdk,
+ [ --with-symbian-sdk=SYMBIAN_SDK_DIR
+ The path to the Symbian SDK],
+ SYMBIAN_SDK_DIR=$withval)
+
+ OS_EXE_CFLAGS="$OS_EXE_CFLAGS -D__EXE__"
+ CFLAGS="-MD -nostdinc"
+ SYMBIAN_SYS_INCLUDE="-I$SYMBIAN_SDK_DIR/Epoc32/include -I$SYMBIAN_SDK_DIR/Epoc32/include/variant -I$SYMBIAN_SDK_DIR/Epoc32/include/stdapis"
+
+ case "$target" in
+ *-symbianelf)
+ OS_TARGET=GCCE
+ CC=arm-none-symbianelf-gcc.exe
+ CXX=arm-none-symbianelf-g++.exe
+ LD=arm-none-symbianelf-ld.exe
+ AR=arm-none-symbianelf-ar.exe
+ CPP=arm-none-symbianelf-cpp.exe
+ CFLAGS="$CFLAGS -c -Wall -Wno-unknown-pragmas -fexceptions -march=armv5t -mapcs -pipe -msoft-float"
+ CXXFLAGS="$CFLAGS -Wno-ctor-dtor-privacy"
+ GCCE_INCLUDE="-include $SYMBIAN_SDK_DIR/EPOC32/INCLUDE/GCCE/GCCE.h -D__PRODUCT_INCLUDE__=$SYMBIAN_SDK_DIR/Epoc32/include/variant/Symbian_OS_v9.2.hrh"
+ CFLAGS="$CFLAGS ${GCCE_INCLUDE} -x c"
+ CXXFLAGS="$CXXFLAGS ${GCCE_INCLUDE} -x c++"
+ CPPFLAGS="$CPPFLAGS ${SYMBIAN_SYS_INCLUDE}"
+ ;;
+ *-symbianwinscw)
+ dnl TODO: add emulator build code
+ OS_TARGET=WINSCW
+ ;;
+ esac
+ ;;
+ esac
+
+ AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
+ unset ac_cv_prog_CC
+ AC_PROG_CC
+ AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
+ unset ac_cv_prog_CXX
+ AC_PROG_CXX
+
+ case "$build:$target" in
+ powerpc-apple-darwin8*:i?86-apple-darwin*)
+ dnl Revert the changes made above. From this point on, the target
+ dnl compiler will never be used without applying the SDK to CFLAGS
+ dnl (see --with-macos-sdk below).
+ CFLAGS=$_SAVE_CFLAGS
+ CXXFLAGS=$_SAVE_CXXFLAGS
+ ;;
+ esac
+
+ 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, :)
+ AC_CHECK_PROGS(WINDRES, windres, :)
+ if test -z "$HOST_CC"; then
+ HOST_CC="$CC"
+ fi
+ if test -z "$HOST_CFLAGS"; then
+ HOST_CFLAGS="$CFLAGS"
+ fi
+ if test -z "$HOST_CXX"; then
+ HOST_CXX="$CXX"
+ fi
+ if test -z "$HOST_CXXFLAGS"; then
+ HOST_CXXFLAGS="$CXXFLAGS"
+ fi
+ if test -z "$HOST_LDFLAGS"; then
+ HOST_LDFLAGS="$LDFLAGS"
+ fi
+ if test -z "$HOST_RANLIB"; then
+ HOST_RANLIB="$RANLIB"
+ fi
+ if test -z "$HOST_AR"; then
+ HOST_AR="$AR"
+ fi
+fi
+
+GNU_AS=
+GNU_LD=
+GNU_CC=
+GNU_CXX=
+CC_VERSION='N/A'
+CXX_VERSION='N/A'
+if test "$GCC" = "yes"; then
+ GNU_CC=1
+ CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
+fi
+if test "$GXX" = "yes"; then
+ GNU_CXX=1
+ CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
+fi
+if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
+ GNU_AS=1
+fi
+if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
+ GNU_LD=1
+fi
+if test "$GNU_CC"; then
+ if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
+ GCC_USE_GNU_LD=1
+ fi
+fi
+
+INTEL_CC=
+INTEL_CXX=
+if test "$GCC" = yes; then
+ if test "`$CC -help 2>&1 | grep -c 'Intel(R) C Compiler'`" != "0"; then
+ INTEL_CC=1
+ fi
+fi
+
+if test "$GXX" = yes; then
+ if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
+ INTEL_CXX=1
+ fi
+fi
+
+dnl Special win32 checks
+dnl ========================================================
+case "$target" in
+*-wince)
+ WINVER=500
+ ;;
+*)
+ if test -n "$GNU_CC"; then
+ WINVER=501
+ else
+ WINVER=500
+ fi
+ ;;
+esac
+
+case "$target" in
+*-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince)
+ 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"
+ CXXFLAGS="$CXXFLAGS -TP -nologo"
+ AC_LANG_SAVE
+ AC_LANG_C
+ AC_TRY_COMPILE([#include <stdio.h>],
+ [ printf("Hello World\n"); ],,
+ AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
+
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <new.h>],
+ [ unsigned *test = new unsigned(42); ],,
+ AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
+ AC_LANG_RESTORE
+
+ changequote(,)
+ _MSVC_VER_FILTER='s|.*[ |ΓΏ]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
+ changequote([,])
+
+ # Determine compiler version
+ CC_VERSION=`"${CC}" -v 2>&1 | sed 's/'"'"'//g' | sed -nre "$_MSVC_VER_FILTER"`
+ _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
+ _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
+ _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
+ _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
+ _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
+
+ CXX_VERSION=`"${CXX}" -v 2>&1 | sed 's/'"'"'//g' | sed -nre "$_MSVC_VER_FILTER"`
+ _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
+
+ if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
+ AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
+ fi
+ if test "$_CC_MAJOR_VERSION" = "13"; then
+ _CC_SUITE=7
+ elif test "$_CC_MAJOR_VERSION" = "14"; then
+ _CC_SUITE=8
+ CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
+ dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
+ dnl so be very specific here!
+ dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
+ if test $_CC_RELEASE -gt 50727; then
+ _USE_DYNAMICBASE=1
+ elif test $_CC_BUILD -ge 762; then
+ _USE_DYNAMICBASE=1
+ fi
+ AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
+ AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
+ elif test "$_CC_MAJOR_VERSION" = "15"; then
+ _CC_SUITE=9
+ CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
+ LDFLAGS="$LDFLAGS -MANIFESTUAC:NO"
+ _USE_DYNAMICBASE=1
+ AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
+ AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
+ else
+ AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
+ fi
+
+ _MOZ_RTTI_FLAGS_ON='-GR'
+ _MOZ_RTTI_FLAGS_OFF='-GR-'
+ _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
+ _MOZ_EXCEPTIONS_FLAGS_OFF=''
+
+ if test -n "$WIN32_REDIST_DIR"; then
+ WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
+ fi
+
+ # bug #249782
+ # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
+ if test "$_CC_SUITE" -ge "8"; then
+ changequote(,)
+ _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
+ changequote([,])
+
+ MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
+ if test -n "$MSMT_TOOL"; then
+ 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
+ else
+ AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
+ fi
+ fi
+
+ # Check linker version
+ _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
+ _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
+ if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
+ AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
+ fi
+ INCREMENTAL_LINKER=1
+
+ unset _MSVC_VER_FILTER
+
+ 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
+ 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)
+ ;;
+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
+ _OLDCC=$CC
+ _OLDCXX=$CXX
+ CC="${srcdir}/build/hcc '$CC'"
+ CXX="${srcdir}/build/hcpp '$CXX'"
+ fi
+fi
+
+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.
+
+ # Common to all MSVC environments:
+ # Windows lacks <stdint.h>, but has __int8, and so on.
+ AC_DEFINE(JS_HAVE___INTN)
+
+ case "$target" in
+ *-wince)
+ AC_DEFINE(HAVE_SYSTEMTIMETOFILETIME)
+ AC_DEFINE(JS_CRTDEFS_H_HAS_INTPTR_T)
+ ;;
+ *)
+ AC_DEFINE(HAVE_SYSTEMTIMETOFILETIME)
+ AC_DEFINE(HAVE_GETSYSTEMTIMEASFILETIME)
+ # Windows <stddef.h> defines intptr_t and uintptr_t.
+ # VS2005: http://msdn.microsoft.com/en-us/library/323b6b3k(VS.80).aspx
+ # 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
+
+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)
+
+dnl ========================================================
+dnl Checks for programs.
+dnl ========================================================
+AC_PROG_INSTALL
+AC_PROG_LN_S
+MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
+if test -z "$PERL" || test "$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
+ AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
+fi
+fi
+
+AC_MSG_CHECKING([for full perl installation])
+_perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
+_perl_res=$?
+if test "$_perl_res" != 0; then
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
+else
+ AC_MSG_RESULT([yes])
+fi
+
+MOZ_PATH_PROGS(PYTHON, $PYTHON 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)
+
+MOZ_PATH_PROG(DOXYGEN, doxygen, :)
+MOZ_PATH_PROG(WHOAMI, whoami, :)
+MOZ_PATH_PROG(AUTOCONF, autoconf, :)
+MOZ_PATH_PROG(UNZIP, unzip, :)
+MOZ_PATH_PROGS(ZIP, zip)
+if test -z "$ZIP" || test "$ZIP" = ":"; then
+ AC_MSG_ERROR([zip not found in \$PATH])
+fi
+MOZ_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
+MOZ_PATH_PROG(XARGS, xargs)
+if test -z "$XARGS" || test "$XARGS" = ":"; then
+ AC_MSG_ERROR([xargs not found in \$PATH .])
+fi
+
+if test "$COMPILE_ENVIRONMENT"; then
+
+dnl ========================================================
+dnl = Mac OS X toolchain support
+dnl ========================================================
+
+case "$target_os" in
+darwin*)
+ dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
+ dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
+ dnl the environment and includedir purposes (when using an SDK, below),
+ dnl but remember the full version number for the libdir (SDK).
+ changequote(,)
+ GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
+ GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
+ changequote([,])
+ if test "$GCC_VERSION_FULL" = "4.0.0" ; then
+ dnl Bug 280479, but this keeps popping up in bug 292530 too because
+ dnl 4.0.0/4061 is the default compiler in Tiger.
+ changequote(,)
+ GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
+ changequote([,])
+ if test "$GCC_BUILD" = "4061" ; then
+ AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
+This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
+from building Mozilla. Upgrade to Xcode 2.1 or later.])
+ fi
+ fi
+
+ dnl xcodebuild needs GCC_VERSION defined in the environment, since it
+ dnl doesn't respect the CC/CXX setting. With GCC_VERSION set, it will use
+ dnl /usr/bin/g(cc|++)-$GCC_VERSION.
+ MOZ_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
+
+ case "$PBBUILD" in
+ *xcodebuild*)
+ changequote(,)
+ XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
+ changequote([,])
+ if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
+ HAS_XCODE_2_1=1;
+ fi
+ ;;
+ esac
+
+ dnl sdp was formerly in /Developer/Tools. As of Mac OS X 10.4 (Darwin 8),
+ dnl it has moved into /usr/bin.
+ MOZ_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
+ ;;
+esac
+
+AC_SUBST(GCC_VERSION)
+AC_SUBST(XCODEBUILD_VERSION)
+AC_SUBST(HAS_XCODE_2_1)
+
+dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
+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)
+ 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
+ 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
+ fi
+ ;;
+esac
+
+AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
+
+dnl ========================================================
+dnl = Mac OS X SDK support
+dnl ========================================================
+MACOS_SDK_DIR=
+NEXT_ROOT=
+MOZ_ARG_WITH_STRING(macos-sdk,
+[ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
+ MACOS_SDK_DIR=$withval)
+
+dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
+dnl NEXT_ROOT will be set and exported only if it's needed.
+AC_SUBST(MACOS_SDK_DIR)
+AC_SUBST(NEXT_ROOT)
+
+if test "$MACOS_SDK_DIR"; then
+ dnl Sync this section with the ones in NSPR and NSS.
+ dnl Changes to the cross environment here need to be accounted for in
+ dnl the libIDL checks (below) and xpidl build.
+
+ if test ! -d "$MACOS_SDK_DIR"; then
+ AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
+specify a valid SDK. SDKs are installed when the optional cross-development
+tools are selected during the Xcode/Developer Tools installation.])
+ fi
+
+ GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
+ if test "$GCC_VERSION_MAJOR" -lt "4" ; then
+ AC_MSG_ERROR([You need to upgrade the compiler version to 4.x])
+ else
+ CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
+ CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
+
+ dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
+ CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
+ CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
+
+ if test "$GCC_VERSION_FULL" = "4.0.0" ; then
+ dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
+ dnl that supports -syslibroot. Don't set NEXT_ROOT because it will
+ dnl be ignored and cause warnings when -syslibroot is specified.
+ dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
+ dnl the -isysroot it receives, so this is only needed with 4.0.0.
+ LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
+ fi
+ fi
+
+ AC_LANG_SAVE
+ AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <new>
+ int main() { return 0; }],
+ 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
+
+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 "$COMPILE_ENVIRONMENT"; then
+
+AC_PATH_XTRA
+
+dnl Check in X11 include directory too.
+if test "$no_x" != "yes"; then
+ CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+fi
+
+XCFLAGS="$X_CFLAGS"
+
+fi # COMPILE_ENVIRONMENT
+
+dnl ========================================================
+dnl set the defaults first
+dnl ========================================================
+AS_BIN=$AS
+AR_FLAGS='cr $@'
+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
+CYGWIN_WRAPPER=
+WIN_TOP_SRC=
+MOZ_USER_DIR=".mozilla"
+HOST_AR='$(AR)'
+HOST_AR_FLAGS='$(AR_FLAGS)'
+
+MOZ_JS_LIBS='-L$(libdir) -lmozjs'
+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)'
+MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom_compat'
+
+USE_DEPENDENT_LIBS=1
+
+_PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
+MOZ_GFX_TOOLKIT='$(MOZ_WIDGET_TOOLKIT)'
+
+MOZ_ENABLE_POSTSCRIPT=1
+
+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 ;;
+ solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
+ mingw*) OS_ARCH=WINNT ;;
+ wince*) OS_ARCH=WINCE ;;
+ darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
+ 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}"
+
+_COMPILER_PREFIX=
+
+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
+cygwin*|mingw*|mks*|msvc*)
+ HOST_OS_ARCH=WINNT
+ ;;
+linux*)
+ HOST_OS_ARCH=Linux
+ ;;
+solaris*)
+ HOST_OS_ARCH=SunOS
+ SOLARIS_SUNPRO_CC=
+ SOLARIS_SUNPRO_CXX=
+ if test -z "$GNU_CC"; then
+ if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
+ SOLARIS_SUNPRO_CC=1
+ fi
+ fi
+
+ if test -z "$GNU_CXX"; then
+ if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
+ SOLARIS_SUNPRO_CXX=1
+ fi
+ fi
+ AC_SUBST(SOLARIS_SUNPRO_CC)
+ AC_SUBST(SOLARIS_SUNPRO_CXX)
+ ;;
+BSD_386)
+ HOST_OS_ARCH=BSD
+ ;;
+dgux)
+ HOST_OS_ARCH=DGUX
+ ;;
+IRIX64)
+ HOST_OS_ARCH=IRIX
+ ;;
+UNIX_SV)
+ if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
+ HOST_OS_ARCH=NCR
+ else
+ HOST_OS_ARCH=UNIXWARE
+ fi
+ ;;
+ncr)
+ HOST_OS_ARCH=NCR
+ ;;
+UNIX_SYSTEM_V)
+ HOST_OS_ARCH=NEC
+ ;;
+OSF1)
+ ;;
+*OpenVMS*)
+ HOST_OS_ARCH=OpenVMS
+ ;;
+OS_2)
+ HOST_OS_ARCH=OS2
+ ;;
+QNX)
+ ;;
+SCO_SV)
+ HOST_OS_ARCH=SCOOS
+ ;;
+SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
+ HOST_OS_ARCH=SINIX
+ ;;
+UnixWare)
+ HOST_OS_ARCH=UNIXWARE
+ ;;
+esac
+
+case "$OS_ARCH" in
+WINNT)
+ OS_TEST=`uname -p`
+ ;;
+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}"
+ ;;
+CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
+#
+# If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
+# the uname.exe in the Cygwin tools.
+# Prior to the Beta 20 release, Cygwin was called GNU-Win32.
+# If uname -s returns "CYGWIN32/NT", we assume that we are using
+# the uname.exe in the GNU-Win32 tools.
+# 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}
+ ;;
+BSD_386)
+ OS_ARCH=BSD
+ ;;
+dgux)
+ OS_ARCH=DGUX
+ ;;
+IRIX64)
+ OS_ARCH=IRIX
+ ;;
+UNIX_SV)
+ if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
+ OS_ARCH=NCR
+ else
+ OS_ARCH=UNIXWARE
+ OS_RELEASE=`uname -v`
+ fi
+ ;;
+ncr)
+ OS_ARCH=NCR
+ ;;
+UNIX_SYSTEM_V)
+ OS_ARCH=NEC
+ ;;
+OSF1)
+ case `uname -v` in
+ 148)
+ OS_RELEASE=V3.2C
+ ;;
+ 564)
+ OS_RELEASE=V4.0B
+ ;;
+ 878)
+ OS_RELEASE=V4.0D
+ ;;
+ esac
+ ;;
+*OpenVMS*)
+ OS_ARCH=OpenVMS
+ OS_RELEASE=`uname -v`
+ OS_TEST=`uname -p`
+ ;;
+OS_2)
+ OS_ARCH=OS2
+ OS_TARGET=OS2
+ OS_RELEASE=`uname -v`
+ ;;
+QNX)
+ if test "$OS_TARGET" != "NTO"; then
+ changequote(,)
+ OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
+ changequote([,])
+ fi
+ OS_TEST=x86
+ ;;
+SCO_SV)
+ OS_ARCH=SCOOS
+ OS_RELEASE=5.0
+ ;;
+SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
+ OS_ARCH=SINIX
+ OS_TEST=`uname -p`
+ ;;
+UnixWare)
+ OS_ARCH=UNIXWARE
+ OS_RELEASE=`uname -v`
+ ;;
+WINCE)
+ WINCE=1
+ OS_ARCH=WINCE
+ OS_TARGET=WINCE
+ ;;
+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
+
+if test "$OS_ARCH" = "NCR"; then
+ changequote(,)
+ OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
+ changequote([,])
+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)
+ CPU_ARCH=ppc
+ ;;
+
+Alpha | alpha | ALPHA)
+ CPU_ARCH=Alpha
+ ;;
+
+hppa* | parisc)
+ CPU_ARCH=hppa
+ ;;
+
+sun4u | sparc*)
+ CPU_ARCH=sparc
+ ;;
+
+x86_64 | ia64)
+ CPU_ARCH="$OS_TEST"
+ ;;
+
+arm)
+ if test "$OS_TARGET" = "WINCE"; then
+ CPU_ARCH="$OS_TEST"
+ fi
+ ;;
+esac
+
+if test -z "$OS_TARGET"; then
+ OS_TARGET=$OS_ARCH
+fi
+OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
+
+dnl ========================================================
+dnl GNU specific defaults
+dnl ========================================================
+if test "$GNU_CC"; then
+ # FIXME: Let us build with strict aliasing. bug 414641.
+ CFLAGS="$CFLAGS -fno-strict-aliasing"
+ MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
+ MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
+ DSO_LDOPTS='-shared'
+ if test "$GCC_USE_GNU_LD"; then
+ # Don't allow undefined symbols in libraries
+ DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
+ fi
+ WARNINGS_AS_ERRORS='-Werror'
+ DSO_CFLAGS=''
+ DSO_PIC_CFLAGS='-fPIC'
+ ASFLAGS="$ASFLAGS -fPIC"
+ _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
+ _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
+ _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'
+ _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-handle-exceptions'
+
+ # Turn on GNU specific features
+ # -Wall - turn on all warnings
+ # -pedantic - make compiler warn about non-ANSI stuff, and
+ # 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, since it's noisy there
+ hppa | ia64 | sparc)
+ ;;
+ *)
+ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
+ ;;
+ esac
+ fi
+
+ dnl Turn pedantic on but disable the warnings for long long
+ _PEDANTIC=1
+
+ if test -z "$INTEL_CC"; then
+ _IGNORE_LONG_LONG_WARNINGS=1
+ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
+ else
+ _IGNORE_LONG_LONG_WARNINGS=
+ fi
+
+
+ _DEFINES_CFLAGS='-include $(DEPTH)/js-confdefs.h -DMOZILLA_CLIENT'
+ _USE_CPP_INCLUDE_FLAG=1
+elif test "$SOLARIS_SUNPRO_CC"; then
+ MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
+ MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
+
+ DSO_LDOPTS='-shared'
+ if test "$GNU_LD"; then
+ # Don't allow undefined symbols in libraries
+ DSO_LDOPTS="$DSO_LDOPTS -z defs"
+ fi
+
+ DSO_CFLAGS=''
+ 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_JS_CONFDEFS_H_ -DMOZILLA_CLIENT'
+else
+ MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
+ MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
+
+ DSO_LDOPTS='-shared'
+ if test "$GNU_LD"; then
+ # Don't allow undefined symbols in libraries
+ DSO_LDOPTS="$DSO_LDOPTS -z defs"
+ fi
+
+ DSO_CFLAGS=''
+ DSO_PIC_CFLAGS='-KPIC'
+ _DEFINES_CFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT'
+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, since it's noisy there
+ hppa | ia64 | sparc)
+ ;;
+ *)
+ _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
+ ;;
+ esac
+ fi
+
+ _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/js-confdefs.h'
+ _USE_CPP_INCLUDE_FLAG=1
+
+ AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
+ ac_has_wno_invalid_offsetof,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ _SAVE_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
+ AC_TRY_COMPILE([],
+ [return(0);],
+ ac_has_wno_invalid_offsetof="yes",
+ ac_has_wno_invalid_offsetof="no")
+ CXXFLAGS="$_SAVE_CXXFLAGS"
+ AC_LANG_RESTORE
+ ])
+ if test "$ac_has_wno_invalid_offsetof" = "yes"; then
+ _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
+ fi
+
+ AC_CACHE_CHECK(whether the compiler supports -Wno-variadic-macros,
+ ac_has_wno_variadic_macros,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ _SAVE_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-variadic-macros"
+ AC_TRY_COMPILE([],
+ [return(0);],
+ 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
+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.
+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 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 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(long) == 8)],
+ result="yes", result="no")
+AC_MSG_RESULT("$result")
+if test "$result" = "yes"; then
+ AC_DEFINE(HAVE_64BIT_OS)
+ HAVE_64BIT_OS=1
+fi
+AC_SUBST(HAVE_64BIT_OS)
+AC_LANG_RESTORE
+fi # COMPILE_ENVIRONMENT
+
+dnl ========================================================
+dnl Enable high-memory support on OS/2 by default.
+dnl ========================================================
+MOZ_OS2_HIGH_MEMORY=1
+MOZ_ARG_DISABLE_BOOL(os2-high-mem,
+[ --disable-os2-high-mem Disable high-memory support on OS/2],
+ MOZ_OS2_HIGH_MEMORY=,
+ MOZ_OS2_HIGH_MEMORY=1 )
+AC_SUBST(MOZ_OS2_HIGH_MEMORY)
+
+dnl ========================================================
+dnl System overrides of the defaults for host
+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)
+ 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
+ ;;
+ *)
+ 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
+ AS_PERL=1
+ PERL="${CYGWIN_WRAPPER} $PERL"
+ fi
+
+ if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
+ PYTHON="${CYGWIN_WRAPPER} $PYTHON"
+ fi
+ ;;
+ 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}"
+ MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
+ LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL -lobjc'
+ ;;
+
+*-linux*|*-kfreebsd*-gnu)
+ HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
+ HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
+ HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
+ ;;
+
+*os2*)
+ HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
+ HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
+ HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
+ HOST_BIN_SUFFIX=.exe
+ MOZ_FIX_LINK_PATHS=
+ ;;
+
+*-osf*)
+ HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
+ HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
+ HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
+ ;;
+
+*)
+ HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
+ HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
+ ;;
+esac
+
+dnl ========================================================
+dnl System overrides of the defaults for target
+dnl ========================================================
+
+case "$target" in
+*-aix*)
+ AC_DEFINE(AIX)
+ if test ! "$GNU_CC"; then
+ if test ! "$HAVE_64BIT_OS"; then
+ # Compiling with Visual Age C++ object model compat is the
+ # default. To compile with object model ibm, add
+ # AIX_OBJMODEL=ibm to .mozconfig.
+ if test "$AIX_OBJMODEL" = "ibm"; then
+ CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
+ else
+ AIX_OBJMODEL=compat
+ fi
+ else
+ AIX_OBJMODEL=compat
+ fi
+ AC_SUBST(AIX_OBJMODEL)
+ DSO_LDOPTS='-qmkshrobj=1'
+ DSO_CFLAGS='-qflag=w:w'
+ DSO_PIC_CFLAGS=
+ LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
+ AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
+ 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 VisualAge C++ compiler version >= 6.0.0.3])
+ AC_TRY_COMPILE([],
+ [#if (__IBMCPP__ < 600)
+ #error "Bad compiler"
+ #endif],
+ _BAD_COMPILER=,_BAD_COMPILER=1)
+ if test -n "$_BAD_COMPILER"; then
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([VisualAge C++ version 6.0.0.3 or higher is required to build.])
+ else
+ AC_MSG_RESULT([yes])
+ fi
+ AC_LANG_RESTORE
+ TARGET_COMPILER_ABI="ibmc"
+ CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
+ CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
+ fi
+ fi
+ case "${target_os}" in
+ aix4.1*)
+ DLL_SUFFIX='_shr.a'
+ ;;
+ esac
+ if test "$COMPILE_ENVIRONMENT"; then
+ AC_CHECK_HEADERS(sys/inttypes.h)
+ fi
+ AC_DEFINE(JS_SYS_TYPES_H_DEFINES_EXACT_SIZE_TYPES)
+ AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
+ ;;
+
+*-beos*)
+ no_x=yes
+ MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
+ _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
+ DSO_LDOPTS='-nostart'
+ TK_LIBS='-lbe -lroot'
+ LIBS="$LIBS -lbe"
+ if test "$COMPILE_ENVIRONMENT"; then
+ AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
+ AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
+ fi
+ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
+ _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
+ _MOZ_USE_RTTI=1
+ USE_DEPENDENT_LIBS=
+ MOZ_USER_DIR="Mozilla"
+ ;;
+
+*-bsdi*)
+ dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
+ _PEDANTIC=
+ _IGNORE_LONG_LONG_WARNINGS=
+ case $OS_RELEASE in
+ 4.*|5.*)
+ STRIP="$STRIP -d"
+ ;;
+ *)
+ DSO_CFLAGS=''
+ DSO_LDOPTS='-r'
+ _WARNINGS_CFLAGS="-Wall"
+ _WARNINGS_CXXFLAGS="-Wall"
+ # The test above doesn't work properly, at least on 3.1.
+ MKSHLIB_FORCE_ALL=''
+ MKSHLIB_UNFORCE_ALL=''
+ ;;
+ esac
+ ;;
+
+*-darwin*)
+ MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
+ MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
+ MOZ_OPTIMIZE_FLAGS="-O3"
+ _PEDANTIC=
+ CFLAGS="$CFLAGS -fpascal-strings -fno-common"
+ CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
+ DLL_SUFFIX=".dylib"
+ DSO_LDOPTS=''
+ STRIP="$STRIP -x -S"
+ _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
+ MOZ_ENABLE_POSTSCRIPT=
+ TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
+ LDFLAGS="$LDFLAGS -framework 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"
+ # set MACOSX to generate lib/mac/MoreFiles/Makefile
+ MACOSX=1
+
+ dnl DTrace and -dead_strip don't interact well. See bug 403132.
+ dnl ===================================================================
+ if test "x$enable_dtrace" = "xyes"; then
+ echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
+ else
+ dnl check for the presence of the -dead_strip linker flag
+ AC_MSG_CHECKING([for -dead_strip option to ld])
+ _SAVE_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS -Wl,-dead_strip"
+ AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
+ if test -n "$_HAVE_DEAD_STRIP" ; then
+ AC_MSG_RESULT([yes])
+ MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
+ else
+ AC_MSG_RESULT([no])
+ fi
+
+ LDFLAGS=$_SAVE_LDFLAGS
+ fi
+ ;;
+
+*-freebsd*)
+ if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
+ DLL_SUFFIX=".so.1.0"
+ DSO_LDOPTS="-shared"
+ fi
+ if test ! "$GNU_CC"; then
+ DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
+ fi
+# Can't have force w/o an unforce.
+# # Hack for FreeBSD 2.2
+# if test -z "$MKSHLIB_FORCE_ALL"; then
+# MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
+# MKSHLIB_UNFORCE_ALL=''
+# fi
+ ;;
+
+*-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)
+ ;;
+
+*-irix5*)
+ AC_DEFINE(IRIX)
+ DSO_LDOPTS='-elf -shared'
+
+ if test "$GNU_CC"; then
+ MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
+ MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
+ MKSHLIB_FORCE_ALL='-Wl,-all'
+ MKSHLIB_UNFORCE_ALL='-Wl,-none'
+ CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
+ else
+ MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
+ MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
+ MKSHLIB_FORCE_ALL='-all'
+ MKSHLIB_UNFORCE_ALL='-none'
+ fi
+ ;;
+
+*-irix6*)
+ AC_DEFINE(IRIX)
+ dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must*
+ dnl compile and link using -n32
+ USE_N32=1
+ TARGET_COMPILER_ABI=n32
+ DSO_LDOPTS='-elf -shared'
+ MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
+ MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
+ _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
+ _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
+ if test "$GNU_CC"; then
+ MKSHLIB_FORCE_ALL='-Wl,-all'
+ MKSHLIB_UNFORCE_ALL='-Wl,-none'
+ _WARNINGS_CFLAGS="-Wall"
+ _WARNINGS_CXXFLAGS="-Wall"
+ CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
+ else
+ MKSHLIB_FORCE_ALL='-all'
+ MKSHLIB_UNFORCE_ALL='-none'
+ AR_LIST="$AR t"
+ AR_EXTRACT="$AR x"
+ AR_DELETE="$AR d"
+ AR='$(CXX) -ar'
+ AR_FLAGS='-o $@'
+ CFLAGS="$CFLAGS -woff 3262 -G 4"
+ CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
+ if test -n "$USE_N32"; then
+ ASFLAGS="$ASFLAGS -n32"
+ CFLAGS="$CFLAGS -n32"
+ CXXFLAGS="$CXXFLAGS -n32"
+ LDFLAGS="$LDFLAGS -n32"
+ fi
+ AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
+ AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
+ 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
+ # -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 -fno-inline"
+ elif test "$GNU_CXX"; then
+ GCC_VERSION=`$CXX -v 2>&1 | awk '/^gcc version/ { print $3 }'`
+ case $GCC_VERSION in
+ 4.1.*|4.2.*)
+ # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
+ MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
+ esac
+ MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_SIZE_TWEAK"
+ MOZ_DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb,
+ # and that combo is not yet good at
+ # debugging inlined functions (even
+ # when using DWARF2 as the debugging
+ # format)
+ fi
+
+ TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
+
+ case "${target_cpu}" in
+ alpha*)
+ CFLAGS="$CFLAGS -mieee"
+ CXXFLAGS="$CXXFLAGS -mieee"
+ ;;
+ i*86)
+ MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
+ ;;
+ mips*)
+ MOZ_DEBUG_FLAGS="-g" # We want inlining
+ ;;
+ esac
+ ;;
+
+*-wince*)
+ TARGET_COMPILER_ABI=msvc
+ MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
+ AR_LIST="$AR -list"
+ AR_EXTRACT="$AR -extract"
+ AR_DELETE="$AR d"
+ AR_FLAGS='-OUT:"$@"'
+ AS="$AS_BIN"
+
+ DSO_CFLAGS=
+ DSO_PIC_CFLAGS=
+ DLL_SUFFIX=.dll
+ BIN_SUFFIX='.exe'
+ if test -z "$RC"; then
+ RC=rc.exe
+ fi
+ # certain versions of cygwin's makedepend barf on the
+ # #include <string> vs -I./dist/include/string issue so don't use it
+ SYSTEM_MAKEDEPEND=
+
+ HOST_CC=cl
+ 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'
+ 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'
+ GARBAGE=
+ IMPORT_LIB_SUFFIX=lib
+ LIBS="$LIBS"
+ LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.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)'
+ MOZ_DEBUG_FLAGS='-Zi'
+ MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
+ MOZ_FIX_LINK_PATHS=
+ MOZ_JS_LIBS='$(libdir)/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
+ MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.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'
+ 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)
+
+ TARGET_MD_ARCH=win32
+ _PLATFORM_DEFAULT_TOOLKIT='windows'
+ BIN_SUFFIX='.exe'
+ USE_SHORT_LIBNAME=1
+ MOZ_ENABLE_POSTSCRIPT=
+ 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
+ Disable Windows Mobile specific components from CE build],
+ WINCE_WINDOWS_MOBILE=,
+ WINCE_WINDOWS_MOBILE=1)
+
+ if test "$WINCE_WINDOWS_MOBILE"; then
+ AC_DEFINE(WINCE_WINDOWS_MOBILE)
+ fi
+;;
+
+*-symbian*)
+
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(SYMBIAN)
+ AC_DEFINE(__arm__)
+ AC_DEFINE(__SYMBIAN32__)
+ AC_DEFINE(_UNICODE)
+ AC_DEFINE(NDEBUG)
+ AC_DEFINE(__SUPPORT_CPP_EXCEPTIONS__)
+ AC_DEFINE(MOZ_STDERR_TO_STDOUT)
+ AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
+ AC_DEFINE(HAVE_SOCKLEN_T)
+ AC_DEFINE(__GCCE__)
+
+ CPU_ARCH=ARM
+ OS_RELEASE=9.2
+ OS_ARCH=SYMBIAN
+ USE_PTHREADS=1
+ LIB_SUFFIX=lib
+ DLL_SUFFIX=dll
+ MKSHLIB=
+ DSO_LDOPTS=
+ DSO_CFLAGS=
+ VISIBILITY_FLAGS=
+ TARGET_NSPR_MDCPUCFG='\"md/_symbian.cfg\"'
+ RANLIB='echo no ranlib '
+;;
+
+*-mingw*|*-cygwin*|*-msvc*|*-mks*)
+ DSO_CFLAGS=
+ DSO_PIC_CFLAGS=
+ DLL_SUFFIX=.dll
+ RC=rc.exe
+ # certain versions of cygwin's makedepend barf on the
+ # #include <string> vs -I./dist/include/string issue so don't use it
+ SYSTEM_MAKEDEPEND=
+ if test -n "$GNU_CC"; then
+ CC="$CC -mno-cygwin"
+ CXX="$CXX -mno-cygwin"
+ CPP="$CPP -mno-cygwin"
+ CFLAGS="$CFLAGS -mms-bitfields"
+ CXXFLAGS="$CXXFLAGS -mms-bitfields"
+ DSO_LDOPTS='-shared'
+ MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
+ MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
+ RC='$(WINDRES)'
+ # Use temp file for windres (bug 213281)
+ RCFLAGS='-O coff --use-temp-file'
+ # mingw doesn't require kernel32, user32, and advapi32 explicitly
+ LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
+ MOZ_JS_LIBS='-L$(libdir) -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
+ MOZ_FIX_LINK_PATHS=
+ DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
+ XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
+ DLL_PREFIX=
+ IMPORT_LIB_SUFFIX=dll.a
+ else
+ TARGET_COMPILER_ABI=msvc
+ HOST_CC='$(CC)'
+ HOST_CXX='$(CXX)'
+ HOST_LD='$(LD)'
+ AR='lib -NOLOGO -OUT:"$@"'
+ AR_FLAGS=
+ RANLIB='echo not_ranlib'
+ STRIP='echo not_strip'
+ XARGS=xargs
+ ZIP=zip
+ UNZIP=unzip
+ DOXYGEN=:
+ GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
+ OBJ_SUFFIX=obj
+ LIB_SUFFIX=lib
+ DLL_PREFIX=
+ LIB_PREFIX=
+ IMPORT_LIB_SUFFIX=lib
+ MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
+ MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
+ MKSHLIB_FORCE_ALL=
+ MKSHLIB_UNFORCE_ALL=
+ DSO_LDOPTS=-SUBSYSTEM:WINDOWS
+ CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
+ CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
+ LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
+ MOZ_DEBUG_FLAGS='-Zi'
+ MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
+ WARNINGS_AS_ERRORS='-WX'
+ MOZ_OPTIMIZE_FLAGS='-O1'
+ MOZ_JS_LIBS='$(libdir)/js$(MOZ_BITS)$(VERSION_NUMBER).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'
+ MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
+ MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
+ if test $_MSC_VER -ge 1400; then
+ LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
+ 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"
+ if test -n "$_USE_DYNAMICBASE"; then
+ LDFLAGS="$LDFLAGS -DYNAMICBASE"
+ fi
+ fi
+ fi
+ AC_DEFINE(HAVE_SNPRINTF)
+ AC_DEFINE(_WINDOWS)
+ AC_DEFINE(WIN32)
+ AC_DEFINE(XP_WIN)
+ AC_DEFINE(XP_WIN32)
+ AC_DEFINE(HW_THREADS)
+ AC_DEFINE(STDC_HEADERS)
+ AC_DEFINE(NEW_H, <new>)
+ AC_DEFINE(WIN32_LEAN_AND_MEAN)
+ TARGET_MD_ARCH=win32
+ _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
+ BIN_SUFFIX='.exe'
+ USE_SHORT_LIBNAME=1
+ MOZ_ENABLE_POSTSCRIPT=
+ 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)
+
+ dnl MinGW/MSYS doesn't provide or need cygpath
+ case "$host" in
+ *-mingw*)
+ CYGPATH_W=echo
+ CYGPATH_S=cat
+ MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
+ ;;
+ *-cygwin*|*-msvc*|*-mks*)
+ CYGPATH_W="cygpath -a -w"
+ CYGPATH_S="sed -e s|\\\\|/|g"
+ MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
+ ;;
+ 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`
+ if test "$?" != "0" || test -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
+ 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
+ cygwin*|msvc*|mks*)
+ AC_MSG_WARN([Using a cygwin build environment is unsupported. Configure cannot check for the presence of necessary headers. Please upgrade to MozillaBuild; see http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites])
+ ;;
+
+ *)
+ AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
+
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_CHECK_HEADERS(atlbase.h wpcapi.h)
+ AC_LANG_RESTORE
+ ;;
+ esac
+
+ case "$target" in
+ i*86-*)
+ AC_DEFINE(_X86_)
+ ;;
+ alpha-*)
+ AC_DEFINE(_ALPHA_)
+ ;;
+ mips-*)
+ AC_DEFINE(_MIPS_)
+ ;;
+ *)
+ 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,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
+ MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
+ ;;
+
+*-nto*)
+ AC_DEFINE(NTO)
+ AC_DEFINE(_QNX_SOURCE)
+ AC_DEFINE(_i386)
+ OS_TARGET=NTO
+ WARNINGS_AS_ERRORS=''
+ MOZ_OPTIMIZE_FLAGS="-O"
+ MOZ_DEBUG_FLAGS="-gstabs"
+ USE_PTHREADS=1
+ _PEDANTIC=
+ LIBS="$LIBS -lsocket -lstdc++"
+ _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/js-confdefs.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
+ _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/js-confdefs.h -D_POSIX_C_SOURCE=199506'
+ if test "$with_x" != "yes"
+ then
+ _PLATFORM_DEFAULT_TOOLKIT="photon"
+ TK_CFLAGS='-I/usr/include/photon'
+ TK_LIBS='-lph'
+ fi
+ case "${target_cpu}" in
+ ppc*)
+ AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
+ ;;
+ esac
+ ;;
+
+*-openbsd*)
+ DLL_SUFFIX=".so.1.0"
+ DSO_CFLAGS=''
+ DSO_PIC_CFLAGS='-fPIC'
+ DSO_LDOPTS='-shared -fPIC'
+ if test "$LIBRUNPATH"; then
+ DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
+ fi
+ ;;
+
+*-openvms*)
+ AC_DEFINE(NO_PW_GECOS)
+ AC_DEFINE(NO_UDSOCK)
+ AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
+ USE_PTHREADS=1
+ MKSHLIB_FORCE_ALL='-all'
+ MKSHLIB_UNFORCE_ALL='-none'
+ AS='as'
+ AS_DASH_C_FLAG='-Wc/names=as_is'
+ AR_FLAGS='c $@'
+ DSO_LDOPTS='-shared -auto_symvec'
+ DSO_PIC_CFLAGS=
+ MOZ_DEBUG_LDFLAGS='-g'
+ COMPAQ_CXX=1
+ CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
+ CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
+ ;;
+
+
+*-os2*)
+ MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
+ MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
+ AC_DEFINE(OS2)
+ AC_DEFINE(XP_OS2)
+ AC_DEFINE(OS2EMX_PLAIN_CHAR)
+ AC_DEFINE(TCPV40HDRS)
+ USE_SHORT_LIBNAME=1
+ DLL_PREFIX=
+ LIB_PREFIX=
+ LIB_SUFFIX=lib
+ BIN_SUFFIX=".exe"
+ DLL_SUFFIX=".dll"
+ IMPORT_LIB_SUFFIX=lib
+ DSO_PIC_CFLAGS=
+ AR=emxomfar
+ AR_FLAGS='r $@'
+ CFLAGS="$CFLAGS -Zomf"
+ CXXFLAGS="$CXXFLAGS -Zomf"
+ DSO_LDOPTS='-Zdll'
+ BIN_FLAGS='-Zlinker /ST:0x100000'
+ IMPLIB='emximp -o'
+ FILTER='emxexp -o'
+ LDFLAGS='-Zmap'
+ WARNINGS_AS_ERRORS='-Werror'
+ MOZ_DEBUG_FLAGS="-g -fno-inline"
+ MOZ_OPTIMIZE_FLAGS="-O2"
+ MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
+ MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcomct.lib'
+ DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
+ LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
+ TARGET_MD_ARCH=os2
+ _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
+ MOZ_ENABLE_POSTSCRIPT=
+ RC=rc.exe
+ RCFLAGS='-n'
+ MOZ_USER_DIR="Mozilla"
+
+ if test "$MOZTOOLS"; then
+ MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
+ else
+ AC_MSG_ERROR([MOZTOOLS is not set])
+ fi
+ if test -n "$MOZ_OS2_HIGH_MEMORY"; then
+ DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
+ LDFLAGS="$LDFLAGS -Zhigh-mem"
+ MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
+ AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
+ fi
+
+ # GCC for OS/2 currently predefines these, but we don't want them
+ _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
+ _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
+
+ AC_CACHE_CHECK(for __declspec(dllexport),
+ ac_os2_declspec,
+ [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
+ [return 0;],
+ ac_os2_declspec="yes",
+ ac_os2_declspec="no")])
+ if test "$ac_os2_declspec" = "yes"; then
+ FILTER='true'
+ MOZ_OS2_USE_DECLSPEC='1'
+ fi
+ ;;
+
+alpha*-*-osf*)
+ if test "$GNU_CC"; then
+ MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
+ MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
+
+ else
+ MOZ_DEBUG_FLAGS='-g'
+ ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
+ CFLAGS="$CFLAGS -ieee"
+ CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
+ DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
+ DSO_CFLAGS=
+ DSO_PIC_CFLAGS=
+ MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
+ MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
+ MKSHLIB_FORCE_ALL='-all'
+ MKSHLIB_UNFORCE_ALL='-none'
+ dnl Might fix the libxpcom.so breakage on this platform as well....
+ AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
+ AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
+ fi
+ if test -z "$GNU_CXX"; then
+ COMPAQ_CXX=1
+ fi
+ AC_DEFINE(NEED_USLEEP_PROTOTYPE)
+ ;;
+
+*-qnx*)
+ DIRENT_INO=d_stat.st_ino
+ dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
+ AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
+ AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
+ dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
+ AC_DEFINE(STDC_HEADERS)
+ if test "$no_x" = "yes"; then
+ _PLATFORM_DEFAULT_TOOLKIT='photon'
+ TK_CFLAGS='-I/usr/nto/include/photon'
+ TK_LIBS='-lphoton -lphrender'
+ fi
+ ;;
+
+*-sco*)
+ AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
+ AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
+ CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
+ if test ! "$GNU_CC"; then
+ DSO_LDOPTS='-G'
+ fi
+ ;;
+
+dnl the qsort routine under solaris is faulty
+*-solaris*)
+ AC_DEFINE(SOLARIS)
+ TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
+ if test -z "$CROSS_COMPILE" && pkginfo -q SUNWpr && pkginfo -q SUNWprd; then
+ NO_NSPR_CONFIG_SYSTEM_LDFLAGS="-L/usr/lib/mps -R/usr/lib/mps -lnspr4"
+ NO_NSPR_CONFIG_SYSTEM_CFLAGS="-I/usr/include/mps"
+ NO_NSPR_CONFIG_SYSTEM_VERSION=["`pkgparam SUNWpr SUNW_PRODVERS | sed -e 's/^[1-9][0-9]*\.[0-9][0-9]*$/&.0/'`"]
+ fi
+ SYSTEM_MAKEDEPEND=
+ # $ORIGIN/.. is for shared libraries under components/ to locate shared
+ # libraries one level up (e.g. libnspr4.so)
+ LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
+ if test "$SOLARIS_SUNPRO_CC"; then
+ LIBS="-lCrun -lCstd $LIBS"
+ NS_USE_NATIVE=1
+ MOZ_FIX_LINK_PATHS=
+ AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
+ CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
+ CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife -norunpath"
+ LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
+ if test -z "$CROSS_COMPILE" && test -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
+ WARNINGS_AS_ERRORS='-Werror'
+ MOZ_OPTIMIZE_FLAGS="-xO4"
+ MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
+ MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
+ MKSHLIB_FORCE_ALL='-z allextract'
+ MKSHLIB_UNFORCE_ALL='-z defaultextract'
+ DSO_LDOPTS='-G -z muldefs'
+ 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_MSG_RESULT([$_res])
+ AC_LANG_RESTORE
+ else
+ ASFLAGS="$ASFLAGS -fPIC"
+ DSO_LDOPTS='-G'
+ _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
+ ;;
+
+*-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\"'
+ ;;
+
+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
+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" || test -z "$MKSHLIB_UNFORCE_ALL"; then
+ NO_LD_ARCHIVE_FLAGS=1
+fi
+case "$target" in
+*-os2*)
+ NO_LD_ARCHIVE_FLAGS=
+ ;;
+*-aix4.3*|*-aix5*)
+ NO_LD_ARCHIVE_FLAGS=
+ ;;
+*-openvms*)
+ NO_LD_ARCHIVE_FLAGS=
+ ;;
+*-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
+ if test -z "$GNU_CC"; then
+ NO_LD_ARCHIVE_FLAGS=
+ fi
+ ;;
+esac
+AC_SUBST(NO_LD_ARCHIVE_FLAGS)
+
+dnl
+dnl Indicate that platform requires special thread safe
+dnl locking when starting up the OJI JVM
+dnl (see mozilla/modules/oji/src/nsJVMManager.cpp)
+dnl ========================================================
+case "$target" in
+ *-hpux*)
+ AC_DEFINE(MOZ_OJI_REQUIRE_THREAD_SAFE_ON_STARTUP)
+ ;;
+esac
+
+dnl ========================================================
+dnl = Flags to strip unused symbols from .so components
+dnl ========================================================
+case "$target" in
+ *-linux*|*-kfreebsd*-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
+ ;;
+ *-nto*)
+ MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
+ ;;
+ *-darwin*)
+ MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
+ ;;
+ *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
+ if test -n "$GNU_CC"; then
+ MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
+ fi
+ ;;
+esac
+
+if test -z "$COMPILE_ENVIRONMENT"; then
+ SKIP_COMPILER_CHECKS=1
+ SKIP_LIBRARY_CHECKS=1
+fi
+
+dnl Configure JIT support
+
+case "$target" in
+i?86-*)
+ ENABLE_JIT=1
+ NANOJIT_ARCH=i386
+ ;;
+arm*-*)
+ ENABLE_JIT=1
+ NANOJIT_ARCH=ARM
+ ;;
+sparc*-*)
+ ENABLE_JIT=1
+ NANOJIT_ARCH=Sparc
+ ;;
+esac
+
+MOZ_ARG_DISABLE_BOOL(jit,
+[ --disable-jit Disable JIT support],
+ ENABLE_JIT=)
+
+if test "$ENABLE_JIT"; then
+
+AC_DEFINE(FEATURE_NANOJIT)
+AC_DEFINE(JS_TRACER)
+
+case "$target" in
+i?86-*)
+ AC_DEFINE(AVMPLUS_IA32)
+ ;;
+
+arm*-*)
+ AC_DEFINE(AVMPLUS_ARM)
+ ;;
+sparc-*)
+ AC_DEFINE(AVMPLUS_SPARC)
+ ;;
+esac
+
+case "$target_os" in
+linux*)
+ AC_DEFINE(AVMPLUS_UNIX)
+ AC_DEFINE(AVMPLUS_LINUX)
+ ;;
+darwin*)
+ AC_DEFINE(AVMPLUS_UNIX)
+ ;;
+solaris*)
+ AC_DEFINE(AVMPLUS_UNIX)
+ ;;
+freebsd*|kfreebsd*)
+ AC_DEFINE(AVMPLUS_UNIX)
+ ;;
+*cygwin*|*mingw*|*mks*|*msvc*|*wince)
+ AC_DEFINE(AVMPLUS_WIN32)
+ ;;
+*os2*)
+ AC_DEFINE(AVMPLUS_OS2)
+ ;;
+*)
+ AC_MSG_ERROR([Unrecognized nanojit platform. Use --disable-jit to build without JIT support.])
+esac
+
+fi # ENABLE_JIT
+
+AC_SUBST(ENABLE_JIT)
+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_STRUCT_ST_BLKSIZE
+AC_MSG_CHECKING(for siginfo_t)
+AC_CACHE_VAL(ac_cv_siginfo_t,
+ [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
+ #include <signal.h>],
+ [siginfo_t* info;],
+ [ac_cv_siginfo_t=true],
+ [ac_cv_siginfo_t=false])])
+if test "$ac_cv_siginfo_t" = true ; then
+ AC_DEFINE(HAVE_SIGINFO_T)
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+
+dnl Find exact-width integer types, or figure them out
+dnl ourselves.
+dnl ========================================================
+dnl Once this is working, we can delete the code for int16_t,
+dnl etc. below.
+
+AC_CHECK_HEADER(stdint.h)
+if test "$ac_cv_header_stdint_h" = yes; then
+ AC_DEFINE(JS_HAVE_STDINT_H)
+else
+ dnl We'll figure them out for ourselves. List more likely types
+ dnl earlier. If we ever really encounter a size for which none of
+ dnl the listed types are appropriate, we'll get a configure-time
+ dnl error; just add the right answer.
+ MOZ_N_BYTE_TYPE(JS_INT8_TYPE, 1, [char])
+ MOZ_N_BYTE_TYPE(JS_INT16_TYPE, 2, [short int long])
+ MOZ_N_BYTE_TYPE(JS_INT32_TYPE, 4, [int long 'long long' short])
+ MOZ_N_BYTE_TYPE(JS_INT64_TYPE, 8, [int long 'long long'])
+ MOZ_N_BYTE_TYPE(JS_INTPTR_TYPE, sizeof (void *),
+ [int long 'long long' short])
+fi
+
+MOZ_SIZE_OF_TYPE(JS_BYTES_PER_WORD, void*, 4 8)
+if test "$moz_cv_size_of_JS_BYTES_PER_WORD" -eq "4"; then
+ AC_DEFINE(JS_BITS_PER_WORD_LOG2, 5)
+elif test "$moz_cv_size_of_JS_BYTES_PER_WORD" -eq "8"; then
+ AC_DEFINE(JS_BITS_PER_WORD_LOG2, 6)
+else
+ AC_MSG_ERROR([Unexpected JS_BYTES_PER_WORD])
+fi
+
+MOZ_ALIGN_OF_TYPE(JS_ALIGN_OF_POINTER, void*, 2 4 8 16)
+MOZ_SIZE_OF_TYPE(JS_BYTES_PER_DOUBLE, double, 6 8 10 12 14)
+
+dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
+dnl ========================================================
+AC_MSG_CHECKING(for int16_t)
+AC_CACHE_VAL(ac_cv_int16_t,
+ [AC_TRY_COMPILE([#include <stdio.h>
+ #include <sys/types.h>],
+ [int16_t foo = 0;],
+ [ac_cv_int16_t=true],
+ [ac_cv_int16_t=false])])
+if test "$ac_cv_int16_t" = true ; then
+ AC_DEFINE(HAVE_INT16_T)
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_MSG_CHECKING(for int32_t)
+AC_CACHE_VAL(ac_cv_int32_t,
+ [AC_TRY_COMPILE([#include <stdio.h>
+ #include <sys/types.h>],
+ [int32_t foo = 0;],
+ [ac_cv_int32_t=true],
+ [ac_cv_int32_t=false])])
+if test "$ac_cv_int32_t" = true ; then
+ AC_DEFINE(HAVE_INT32_T)
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_MSG_CHECKING(for int64_t)
+AC_CACHE_VAL(ac_cv_int64_t,
+ [AC_TRY_COMPILE([#include <stdio.h>
+ #include <sys/types.h>],
+ [int64_t foo = 0;],
+ [ac_cv_int64_t=true],
+ [ac_cv_int64_t=false])])
+if test "$ac_cv_int64_t" = true ; then
+ AC_DEFINE(HAVE_INT64_T)
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_MSG_CHECKING(for int64)
+AC_CACHE_VAL(ac_cv_int64,
+ [AC_TRY_COMPILE([#include <stdio.h>
+ #include <sys/types.h>],
+ [int64 foo = 0;],
+ [ac_cv_int64=true],
+ [ac_cv_int64=false])])
+if test "$ac_cv_int64" = true ; then
+ AC_DEFINE(HAVE_INT64)
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_MSG_CHECKING(for uint)
+AC_CACHE_VAL(ac_cv_uint,
+ [AC_TRY_COMPILE([#include <stdio.h>
+ #include <sys/types.h>],
+ [uint foo = 0;],
+ [ac_cv_uint=true],
+ [ac_cv_uint=false])])
+if test "$ac_cv_uint" = true ; then
+ AC_DEFINE(HAVE_UINT)
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_MSG_CHECKING(for uint_t)
+AC_CACHE_VAL(ac_cv_uint_t,
+ [AC_TRY_COMPILE([#include <stdio.h>
+ #include <sys/types.h>],
+ [uint_t foo = 0;],
+ [ac_cv_uint_t=true],
+ [ac_cv_uint_t=false])])
+if test "$ac_cv_uint_t" = true ; then
+ AC_DEFINE(HAVE_UINT_T)
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_MSG_CHECKING(for uint16_t)
+AC_CACHE_VAL(ac_cv_uint16_t,
+ [AC_TRY_COMPILE([#include <stdio.h>
+ #include <sys/types.h>],
+ [uint16_t foo = 0;],
+ [ac_cv_uint16_t=true],
+ [ac_cv_uint16_t=false])])
+if test "$ac_cv_uint16_t" = true ; then
+ AC_DEFINE(HAVE_UINT16_T)
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+
+dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
+dnl are defined when compiling C++ but not C. Since the result of this
+dnl test is used only in C++, do it in C++.
+AC_LANG_CPLUSPLUS
+
+AC_MSG_CHECKING(for uname.domainname)
+AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
+ [AC_TRY_COMPILE([#include <sys/utsname.h>],
+ [ struct utsname *res; char *domain;
+ (void)uname(res); if (res != 0) { domain = res->domainname; } ],
+ [ac_cv_have_uname_domainname_field=true],
+ [ac_cv_have_uname_domainname_field=false])])
+
+if test "$ac_cv_have_uname_domainname_field" = "true"; then
+ AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+
+AC_MSG_CHECKING(for uname.__domainname)
+AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
+ [AC_TRY_COMPILE([#include <sys/utsname.h>],
+ [ struct utsname *res; char *domain;
+ (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
+ [ac_cv_have_uname_us_domainname_field=true],
+ [ac_cv_have_uname_us_domainname_field=false])])
+
+if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
+ AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+
+AC_LANG_C
+
+dnl Check for .hidden assembler directive and visibility attribute.
+dnl Borrowed from glibc configure.in
+dnl ===============================================================
+if test "$GNU_CC"; then
+ AC_CACHE_CHECK(for visibility(hidden) attribute,
+ ac_cv_visibility_hidden,
+ [cat > conftest.c <<EOF
+ int foo __attribute__ ((visibility ("hidden"))) = 1;
+EOF
+ ac_cv_visibility_hidden=no
+ if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
+ if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
+ ac_cv_visibility_hidden=yes
+ fi
+ fi
+ rm -f conftest.[cs]
+ ])
+ if test "$ac_cv_visibility_hidden" = "yes"; then
+ AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
+
+ AC_CACHE_CHECK(for visibility(default) attribute,
+ ac_cv_visibility_default,
+ [cat > conftest.c <<EOF
+ int foo __attribute__ ((visibility ("default"))) = 1;
+EOF
+ ac_cv_visibility_default=no
+ if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
+ if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
+ ac_cv_visibility_default=yes
+ fi
+ fi
+ rm -f conftest.[cs]
+ ])
+ if test "$ac_cv_visibility_default" = "yes"; then
+ AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
+
+ AC_CACHE_CHECK(for visibility pragma support,
+ ac_cv_visibility_pragma,
+ [cat > conftest.c <<EOF
+#pragma GCC visibility push(hidden)
+ int foo_hidden = 1;
+#pragma GCC visibility push(default)
+ int foo_default = 1;
+EOF
+ ac_cv_visibility_pragma=no
+ if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
+ if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
+ if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
+ ac_cv_visibility_pragma=yes
+ fi
+ fi
+ fi
+ rm -f conftest.[cs]
+ ])
+ if test "$ac_cv_visibility_pragma" = "yes"; then
+ AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
+ ac_cv_have_visibility_class_bug,
+ [cat > conftest.c <<EOF
+#pragma GCC visibility push(hidden)
+struct __attribute__ ((visibility ("default"))) TestStruct {
+ static void Init();
+};
+__attribute__ ((visibility ("default"))) void TestFunc() {
+ TestStruct::Init();
+}
+EOF
+ ac_cv_have_visibility_class_bug=no
+ if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
+ ac_cv_have_visibility_class_bug=yes
+ else
+ if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
+ ac_cv_have_visibility_class_bug=yes
+ fi
+ fi
+ rm -rf conftest.{c,S}
+ ])
+
+ AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
+ ac_cv_have_visibility_builtin_bug,
+ [cat > conftest.c <<EOF
+#pragma GCC visibility push(hidden)
+#pragma GCC visibility push(default)
+#include <string.h>
+#pragma GCC visibility pop
+
+__attribute__ ((visibility ("default"))) void Func() {
+ char c[[100]];
+ memset(c, 0, sizeof(c));
+}
+EOF
+ ac_cv_have_visibility_builtin_bug=no
+ if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
+ ac_cv_have_visibility_builtin_bug=yes
+ else
+ if test `grep -c "@PLT" conftest.S` = 0; then
+ ac_cv_visibility_builtin_bug=yes
+ fi
+ fi
+ rm -f conftest.{c,S}
+ ])
+ if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
+ "$ac_cv_have_visibility_class_bug" = "no"; then
+ VISIBILITY_FLAGS='-I$(DIST)/system_wrappers_js -include $(topsrcdir)/config/gcc_hidden.h'
+ WRAP_SYSTEM_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 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)
+
+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 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
+NEW_H=new.h
+AC_CHECK_HEADER(new, [NEW_H=new])
+AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
+AC_LANG_C
+
+AC_ARG_ENABLE(dtrace,
+ [ --enable-dtrace build with dtrace support if available (default=no)],
+ [enable_dtrace="yes"],)
+if test "x$enable_dtrace" = "xyes"; then
+ AC_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*)
+ ;;
+*)
+ AC_CHECK_HEADERS(sys/cdefs.h)
+ ;;
+esac
+
+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.
+dnl The same goes for BeOS.
+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*)
+ ;;
+*-beos*)
+ ;;
+*)
+ AC_CHECK_LIB(m, atan)
+ AC_CHECK_LIB(dl, dlopen,
+ AC_CHECK_HEADER(dlfcn.h,
+ LIBS="-ldl $LIBS"
+ AC_DEFINE(HAVE_LIBDL)))
+ ;;
+esac
+
+_SAVE_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -D_GNU_SOURCE"
+AC_CHECK_FUNCS(dladdr)
+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)
+
+dnl ========================================================
+dnl = pthread support
+dnl = Start by checking whether the system support pthreads
+dnl ========================================================
+case "$target_os" in
+darwin*)
+ USE_PTHREADS=1
+ ;;
+*)
+ MOZ_CHECK_PTHREADS(pthreads,
+ USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
+ MOZ_CHECK_PTHREADS(pthread,
+ USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
+ MOZ_CHECK_PTHREADS(c_r,
+ USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
+ MOZ_CHECK_PTHREADS(c,
+ USE_PTHREADS=1
+ )
+ )
+ )
+ )
+ ;;
+esac
+
+dnl ========================================================
+dnl Check the command line for --with-pthreads
+dnl ========================================================
+MOZ_ARG_WITH_BOOL(pthreads,
+[ --with-pthreads Force use of system pthread library with NSPR ],
+[ if test "$USE_PTHREADS"x = x; then
+ AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
+fi],
+ USE_PTHREADS=
+ _PTHREAD_LDFLAGS=
+)
+
+dnl ========================================================
+dnl Do the platform specific pthread hackery
+dnl ========================================================
+if test "$USE_PTHREADS"x != x
+then
+ dnl
+ dnl See if -pthread is supported.
+ dnl
+ rm -f conftest*
+ ac_cv_have_dash_pthread=no
+ AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
+ echo 'int main() { return 0; }' | cat > conftest.c
+ ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
+ if test $? -eq 0; then
+ if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -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`" && test -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 -lc_r, so don't specify it explicitly.
+ if test "$ac_cv_have_dash_pthread" = "yes"; then
+ _PTHREAD_LDFLAGS="-pthread"
+ else
+ _PTHREAD_LDFLAGS="-lc_r"
+ 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)
+ AC_DEFINE(_REENTRANT)
+ ;;
+
+ *-*-nto*)
+ AC_DEFINE(_REENTRANT)
+ ;;
+
+ *-aix4.3*|*-aix5*)
+ AC_DEFINE(_REENTRANT)
+ ;;
+
+ *-hpux11.*)
+ AC_DEFINE(_REENTRANT)
+ ;;
+
+ alpha*-*-osf*)
+ AC_DEFINE(_REENTRANT)
+ ;;
+
+ *-*-solaris*)
+ AC_DEFINE(_REENTRANT)
+ if test "$SOLARIS_SUNPRO_CC"; then
+ CFLAGS="$CFLAGS -mt"
+ CXXFLAGS="$CXXFLAGS -mt"
+ fi
+ ;;
+ esac
+ LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
+fi
+
+dnl ========================================================
+dnl See if mmap sees writes
+dnl For cross compiling, just define it as no, which is a safe default
+dnl ========================================================
+AC_MSG_CHECKING(whether mmap() sees write()s)
+
+changequote(,)
+mmap_test_prog='
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <sys/mman.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+
+ char fname[] = "conftest.file";
+ char zbuff[1024]; /* Fractional page is probably worst case */
+
+ int main() {
+ char *map;
+ int fd;
+ int i;
+ unlink(fname);
+ fd = open(fname, O_RDWR | O_CREAT, 0660);
+ if(fd<0) return 1;
+ unlink(fname);
+ write(fd, zbuff, sizeof(zbuff));
+ lseek(fd, 0, SEEK_SET);
+ map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
+ if(map==(char*)-1) return 2;
+ for(i=0; fname[i]; i++) {
+ int rc = write(fd, &fname[i], 1);
+ if(map[i]!=fname[i]) return 4;
+ }
+ return 0;
+ }
+'
+changequote([,])
+
+AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
+
+AC_MSG_RESULT("$result")
+
+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 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
+AC_TRY_LINK([#include <windows.h>],
+ [FILETIME ft;GetSystemTimeAsFileTime(&ft);],
+ ac_cv_have_getsystemtimeasfiletime="yes",
+ ac_cv_have_getsystemtimeasfiletime="no")
+if test "$ac_cv_have_getsystemtimeasfiletime" = "yes"; then
+ AC_DEFINE(HAVE_GETSYSTEMTIMEASFILETIME)
+fi
+
+dnl check for wcrtomb/mbrtowc
+dnl =======================================================================
+if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+AC_CACHE_CHECK(for wcrtomb,
+ ac_cv_have_wcrtomb,
+ [AC_TRY_LINK([#include <wchar.h>],
+ [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
+ ac_cv_have_wcrtomb="yes",
+ ac_cv_have_wcrtomb="no")])
+if test "$ac_cv_have_wcrtomb" = "yes"; then
+ AC_DEFINE(HAVE_WCRTOMB)
+fi
+AC_CACHE_CHECK(for mbrtowc,
+ ac_cv_have_mbrtowc,
+ [AC_TRY_LINK([#include <wchar.h>],
+ [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
+ ac_cv_have_mbrtowc="yes",
+ ac_cv_have_mbrtowc="no")])
+if test "$ac_cv_have_mbrtowc" = "yes"; then
+ AC_DEFINE(HAVE_MBRTOWC)
+fi
+AC_LANG_RESTORE
+fi
+
+AC_CACHE_CHECK(
+ [for res_ninit()],
+ ac_cv_func_res_ninit,
+ [AC_TRY_LINK([
+ #ifdef linux
+ #define _BSD_SOURCE 1
+ #endif
+ #include <resolv.h>
+ ],
+ [int foo = res_ninit(&_res);],
+ [ac_cv_func_res_ninit=yes],
+ [ac_cv_func_res_ninit=no])
+ ])
+
+if test "$ac_cv_func_res_ninit" = "yes"; then
+ AC_DEFINE(HAVE_RES_NINIT)
+dnl must add the link line we do something as foolish as this... dougt
+dnl else
+dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
+dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
+fi
+
+AC_LANG_CPLUSPLUS
+AC_CACHE_CHECK(
+ [for gnu_get_libc_version()],
+ ac_cv_func_gnu_get_libc_version,
+ [AC_TRY_LINK([
+ #ifdef HAVE_GNU_LIBC_VERSION_H
+ #include <gnu/libc-version.h>
+ #endif
+ ],
+ [const char *glibc_version = gnu_get_libc_version();],
+ [ac_cv_func_gnu_get_libc_version=yes],
+ [ac_cv_func_gnu_get_libc_version=no]
+ )]
+ )
+
+if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
+ AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
+fi
+
+case $target_os in
+ os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|beos*)
+ ;;
+ *)
+
+AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
+ AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
+ AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
+_SAVE_LIBS=$LIBS
+LIBS="$LIBS $_ICONV_LIBS"
+AC_CACHE_CHECK(
+ [for iconv()],
+ ac_cv_func_iconv,
+ [AC_TRY_LINK([
+ #include <stdlib.h>
+ #include <iconv.h>
+ ],
+ [
+ iconv_t h = iconv_open("", "");
+ iconv(h, NULL, NULL, NULL, NULL);
+ iconv_close(h);
+ ],
+ [ac_cv_func_iconv=yes],
+ [ac_cv_func_iconv=no]
+ )]
+ )
+if test "$ac_cv_func_iconv" = "yes"; then
+ AC_DEFINE(HAVE_ICONV)
+ DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
+ LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
+ LIBICONV="$_ICONV_LIBS"
+ AC_CACHE_CHECK(
+ [for iconv() with const input],
+ ac_cv_func_const_iconv,
+ [AC_TRY_COMPILE([
+ #include <stdlib.h>
+ #include <iconv.h>
+ ],
+ [
+ const char *input = "testing";
+ iconv_t h = iconv_open("", "");
+ iconv(h, &input, NULL, NULL, NULL);
+ iconv_close(h);
+ ],
+ [ac_cv_func_const_iconv=yes],
+ [ac_cv_func_const_iconv=no]
+ )]
+ )
+ if test "$ac_cv_func_const_iconv" = "yes"; then
+ AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
+ fi
+fi
+LIBS=$_SAVE_LIBS
+
+ ;;
+esac
+
+AC_LANG_C
+
+dnl **********************
+dnl *** va_copy checks ***
+dnl **********************
+dnl we currently check for all three va_copy possibilities, so we get
+dnl all results in config.log for bug reports.
+AC_MSG_CHECKING(for an implementation of va_copy())
+AC_CACHE_VAL(ac_cv_va_copy,[
+ AC_TRY_RUN([
+ #include <stdarg.h>
+ void f (int i, ...) {
+ va_list args1, args2;
+ va_start (args1, i);
+ va_copy (args2, args1);
+ if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+ exit (1);
+ va_end (args1); va_end (args2);
+ }
+ int main() { f (0, 42); return 0; }],
+ ac_cv_va_copy=yes,
+ ac_cv_va_copy=no,
+ ac_cv_va_copy=no
+ )
+])
+AC_MSG_RESULT($ac_cv_va_copy)
+AC_MSG_CHECKING(for an implementation of __va_copy())
+AC_CACHE_VAL(ac_cv___va_copy,[
+ AC_TRY_RUN([
+ #include <stdarg.h>
+ void f (int i, ...) {
+ va_list args1, args2;
+ va_start (args1, i);
+ __va_copy (args2, args1);
+ if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+ exit (1);
+ va_end (args1); va_end (args2);
+ }
+ int main() { f (0, 42); return 0; }],
+ ac_cv___va_copy=yes,
+ ac_cv___va_copy=no,
+ ac_cv___va_copy=no
+ )
+])
+AC_MSG_RESULT($ac_cv___va_copy)
+AC_MSG_CHECKING(whether va_lists can be copied by value)
+AC_CACHE_VAL(ac_cv_va_val_copy,[
+ AC_TRY_RUN([
+ #include <stdarg.h>
+ void f (int i, ...) {
+ va_list args1, args2;
+ va_start (args1, i);
+ args2 = args1;
+ if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+ exit (1);
+ va_end (args1); va_end (args2);
+ }
+ int main() { f (0, 42); return 0; }],
+ ac_cv_va_val_copy=yes,
+ ac_cv_va_val_copy=no,
+ ac_cv_va_val_copy=yes
+ )
+])
+if test "x$ac_cv_va_copy" = "xyes"; then
+ AC_DEFINE(VA_COPY, va_copy)
+ AC_DEFINE(HAVE_VA_COPY)
+elif test "x$ac_cv___va_copy" = "xyes"; then
+ AC_DEFINE(VA_COPY, __va_copy)
+ AC_DEFINE(HAVE_VA_COPY)
+fi
+
+if test "x$ac_cv_va_val_copy" = "xno"; then
+ AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
+fi
+AC_MSG_RESULT($ac_cv_va_val_copy)
+
+dnl Check for dll-challenged libc's.
+dnl This check is apparently only needed for Linux.
+case "$target" in
+ *-linux*)
+ dnl ===================================================================
+ _curdir=`pwd`
+ export _curdir
+ rm -rf conftest* _conftest
+ mkdir _conftest
+ cat >> conftest.C <<\EOF
+#include <stdio.h>
+#include <link.h>
+#include <dlfcn.h>
+#ifdef _dl_loaded
+void __dump_link_map(void) {
+ struct link_map *map = _dl_loaded;
+ while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
+}
+int main() {
+ dlopen("./conftest1.so",RTLD_LAZY);
+ dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
+ dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
+ dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
+ __dump_link_map();
+}
+#else
+/* _dl_loaded isn't defined, so this should be either a libc5 (glibc1) system, or a glibc2 system that doesn't have the multiple load bug (i.e., RH6.0).*/
+int main() { printf("./conftest1.so\n"); }
+#endif
+EOF
+
+ $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
+
+ cat >> conftest1.C <<\EOF
+#include <stdio.h>
+void foo(void) {printf("foo in dll called\n");}
+EOF
+ ${CXX-g++} -fPIC -c -g conftest1.C
+ ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
+ ${CXX-g++} -g conftest.C -o conftest -ldl
+ cp -f conftest1.so conftest _conftest
+ cd _conftest
+ if test `./conftest | grep conftest1.so | wc -l` -gt 1
+ then
+ echo
+ echo "*** Your libc has a bug that can result in loading the same dynamic"
+ echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
+ echo "*** or later. However, if you choose not to upgrade, the only effect"
+ echo "*** will be excessive memory usage at runtime."
+ echo
+ fi
+ cd ${_curdir}
+ rm -rf conftest* _conftest
+ dnl ===================================================================
+ ;;
+esac
+
+dnl ===================================================================
+dnl ========================================================
+dnl By default, turn rtti and exceptions off on g++/egcs
+dnl ========================================================
+if test "$GNU_CXX"; then
+
+ AC_MSG_CHECKING(for C++ exceptions flag)
+
+ dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
+ AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
+ [echo "int main() { return 0; }" | cat > conftest.C
+
+ ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
+
+ if egrep "warning.*renamed" conftest.out >/dev/null; then
+ ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
+ else
+ ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
+ fi
+
+ rm -f conftest*])
+
+ AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
+ _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
+ _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
+fi
+
+dnl ========================================================
+dnl Put your C++ language/feature checks below
+dnl ========================================================
+AC_LANG_CPLUSPLUS
+
+HAVE_GCC3_ABI=
+if test "$GNU_CC"; then
+ AC_CACHE_CHECK(for gcc 3.0 ABI,
+ ac_cv_gcc_three_abi,
+ [AC_TRY_COMPILE([],
+ [
+#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
+ return 0;
+#else
+#error Not gcc3.
+#endif
+ ],
+ ac_cv_gcc_three_abi="yes",
+ ac_cv_gcc_three_abi="no")])
+ if test "$ac_cv_gcc_three_abi" = "yes"; then
+ TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc3}"
+ HAVE_GCC3_ABI=1
+ else
+ TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc2}"
+ fi
+fi
+AC_SUBST(HAVE_GCC3_ABI)
+
+
+AC_CACHE_CHECK(for C++ \"explicit\" keyword,
+ ac_cv_cpp_explicit,
+ [AC_TRY_COMPILE(class X {
+ public: explicit X(int i) : i_(i) {}
+ private: int i_;
+ };,
+ X x(3);,
+ ac_cv_cpp_explicit=yes,
+ ac_cv_cpp_explicit=no)])
+if test "$ac_cv_cpp_explicit" = yes ; then
+ AC_DEFINE(HAVE_CPP_EXPLICIT)
+fi
+
+AC_CACHE_CHECK(for C++ \"typename\" keyword,
+ ac_cv_cpp_typename,
+ [AC_TRY_COMPILE(class param {
+ public:
+ typedef unsigned long num_type;
+ };
+
+ template <class T> class tplt {
+ public:
+ typedef typename T::num_type t_num_type;
+ t_num_type foo(typename T::num_type num) {
+ return num;
+ }
+ };,
+ tplt<param> A;
+ A.foo(0);,
+ ac_cv_cpp_typename=yes,
+ ac_cv_cpp_typename=no)])
+if test "$ac_cv_cpp_typename" = yes ; then
+ AC_DEFINE(HAVE_CPP_TYPENAME)
+fi
+
+dnl Check for support of modern template specialization syntax
+dnl Test code and requirement from scc@netscape.com.
+dnl Autoconf cut-and-paste job by waterson@netscape.com
+AC_CACHE_CHECK(for modern C++ template specialization syntax support,
+ ac_cv_cpp_modern_specialize_template_syntax,
+ [AC_TRY_COMPILE(template <class T> struct X { int a; };
+ class Y {};
+ template <> struct X<Y> { double a; };,
+ X<int> int_x;
+ X<Y> y_x;,
+ ac_cv_cpp_modern_specialize_template_syntax=yes,
+ ac_cv_cpp_modern_specialize_template_syntax=no)])
+if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
+ AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
+fi
+
+
+dnl Some compilers support only full specialization, and some don't.
+AC_CACHE_CHECK(whether partial template specialization works,
+ ac_cv_cpp_partial_specialization,
+ [AC_TRY_COMPILE(template <class T> class Foo {};
+ template <class T> class Foo<T*> {};,
+ return 0;,
+ ac_cv_cpp_partial_specialization=yes,
+ ac_cv_cpp_partial_specialization=no)])
+if test "$ac_cv_cpp_partial_specialization" = yes ; then
+ AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
+fi
+
+dnl Some compilers have limited support for operators with templates;
+dnl specifically, it is necessary to define derived operators when a base
+dnl class's operator declaration should suffice.
+AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
+ ac_cv_need_derived_template_operators,
+ [AC_TRY_COMPILE([template <class T> class Base { };
+ template <class T>
+ Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
+ template <class T> class Derived : public Base<T> { };],
+ [Derived<char> a, b;
+ Base<char> c = a + b;
+ return 0;],
+ ac_cv_need_derived_template_operators=no,
+ ac_cv_need_derived_template_operators=yes)])
+if test "$ac_cv_need_derived_template_operators" = yes ; then
+ AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
+fi
+
+
+dnl Some compilers have trouble detecting that a template class
+dnl that derives from another template is actually an instance
+dnl of the base class. This test checks for that.
+AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
+ ac_cv_need_cpp_template_cast_to_base,
+ [AC_TRY_COMPILE([template <class T> class Base { };
+ template <class T> class Derived : public Base<T> { };
+ template <class T> int foo(const Base<T>&) { return 0; }],
+ [Derived<char> bar; return foo(bar);],
+ ac_cv_need_cpp_template_cast_to_base=no,
+ ac_cv_need_cpp_template_cast_to_base=yes)])
+if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
+ AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
+fi
+
+dnl Some compilers have trouble resolving the ambiguity between two
+dnl functions whose arguments differ only by cv-qualifications.
+AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
+ ac_cv_can_resolve_const_ambiguity,
+ [AC_TRY_COMPILE([
+ template <class T> class ptrClass {
+ public: T* ptr;
+ };
+
+ template <class T> T* a(ptrClass<T> *arg) {
+ return arg->ptr;
+ }
+
+ template <class T>
+ const T* a(const ptrClass<T> *arg) {
+ return arg->ptr;
+ }
+ ],
+ [ ptrClass<int> i;
+ a(&i); ],
+ ac_cv_can_resolve_const_ambiguity=yes,
+ ac_cv_can_resolve_const_ambiguity=no)])
+if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
+ AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
+fi
+
+dnl
+dnl We don't do exceptions on unix. The only reason this used to be here
+dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses
+dnl exceptions. But, we turn exceptions off by default and this test breaks.
+dnl So im commenting this out until someone writes some artificial
+dnl intelligence to detect not only if the compiler has exceptions, but if
+dnl they are enabled as well.
+dnl
+dnl AC_CACHE_CHECK(for C++ \"exceptions\",
+dnl ac_cv_cpp_exceptions,
+dnl [AC_TRY_COMPILE(class X { public: X() {} };
+dnl static void F() { throw X(); },
+dnl try { F(); } catch(X & e) { },
+dnl ac_cv_cpp_exceptions=yes,
+dnl ac_cv_cpp_exceptions=no)])
+dnl if test $ac_cv_cpp_exceptions = yes ; then
+dnl AC_DEFINE(HAVE_CPP_EXCEPTIONS)
+dnl fi
+
+dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
+dnl supports it well enough to allow us to use it to change access, but not
+dnl to resolve ambiguity. The next two tests determine how well the |using|
+dnl keyword is supported.
+dnl
+dnl Check to see if we can change access with |using|. Test both a
+dnl legal and an illegal example.
+AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
+ ac_cv_cpp_access_changing_using2,
+ [AC_TRY_COMPILE(
+ class A { protected: int foo() { return 0; } };
+ class B : public A { public: using A::foo; };,
+ B b; return b.foo();,
+ [AC_TRY_COMPILE(
+ class A { public: int foo() { return 1; } };
+ class B : public A { private: using A::foo; };,
+ B b; return b.foo();,
+ ac_cv_cpp_access_changing_using2=no,
+ ac_cv_cpp_access_changing_using2=yes)],
+ ac_cv_cpp_access_changing_using2=no)])
+if test "$ac_cv_cpp_access_changing_using2" = yes ; then
+ AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
+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 Check to see if the |std| namespace is supported. If so, we'll want
+dnl to qualify any standard library calls with "std::" to ensure that
+dnl those functions can be resolved.
+AC_CACHE_CHECK(for \"std::\" namespace,
+ ac_cv_cpp_namespace_std,
+ [AC_TRY_COMPILE([#include <algorithm>],
+ [return std::min(0, 1);],
+ ac_cv_cpp_namespace_std=yes,
+ ac_cv_cpp_namespace_std=no)])
+if test "$ac_cv_cpp_namespace_std" = yes ; then
+ AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
+fi
+
+dnl Older compilers are overly ambitious with respect to using the standard
+dnl template library's |operator!=()| when |operator==()| is defined. In
+dnl which case, defining |operator!=()| in addition to |operator==()| causes
+dnl ambiguity at compile-time. This test checks for that case.
+AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
+ ac_cv_cpp_unambiguous_std_notequal,
+ [AC_TRY_COMPILE([#include <algorithm>
+ struct T1 {};
+ int operator==(const T1&, const T1&) { return 0; }
+ int operator!=(const T1&, const T1&) { return 0; }],
+ [T1 a,b; return a != b;],
+ ac_cv_cpp_unambiguous_std_notequal=unambiguous,
+ ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
+if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
+ AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
+fi
+
+
+AC_CACHE_CHECK(for C++ reinterpret_cast,
+ ac_cv_cpp_reinterpret_cast,
+ [AC_TRY_COMPILE(struct X { int i; };
+ struct Y { int i; };,
+ X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
+ ac_cv_cpp_reinterpret_cast=yes,
+ ac_cv_cpp_reinterpret_cast=no)])
+if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
+ AC_DEFINE(HAVE_CPP_NEW_CASTS)
+fi
+
+dnl See if a dynamic_cast to void* gives the most derived object.
+AC_CACHE_CHECK(for C++ dynamic_cast to void*,
+ ac_cv_cpp_dynamic_cast_void_ptr,
+ [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
+ class Y { int j; public: virtual ~Y() { } };
+ class Z : public X, public Y { int k; };
+
+ int main() {
+ Z mdo;
+ X *subx = (X*)&mdo;
+ Y *suby = (Y*)&mdo;
+ return !((((void*)&mdo != (void*)subx) &&
+ ((void*)&mdo == dynamic_cast<void*>(subx))) ||
+ (((void*)&mdo != (void*)suby) &&
+ ((void*)&mdo == dynamic_cast<void*>(suby))));
+ }],
+ ac_cv_cpp_dynamic_cast_void_ptr=yes,
+ ac_cv_cpp_dynamic_cast_void_ptr=no,
+ ac_cv_cpp_dynamic_cast_void_ptr=no)])
+if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
+ AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
+fi
+
+
+dnl note that this one is reversed - if the test fails, then
+dnl we require implementations of unused virtual methods. Which
+dnl really blows because it means we'll have useless vtable
+dnl bloat.
+AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
+ ac_cv_cpp_unused_required,
+ [AC_TRY_LINK(class X {private: virtual void never_called();};,
+ X x;,
+ ac_cv_cpp_unused_required=no,
+ ac_cv_cpp_unused_required=yes)])
+if test "$ac_cv_cpp_unused_required" = yes ; then
+ AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
+fi
+
+
+dnl Some compilers have trouble comparing a constant reference to a templatized
+dnl class to zero, and require an explicit operator==() to be defined that takes
+dnl an int. This test separates the strong from the weak.
+
+AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
+ ac_cv_trouble_comparing_to_zero,
+ [AC_TRY_COMPILE([#include <algorithm>
+ template <class T> class Foo {};
+ class T2;
+ template <class T> int operator==(const T2*, const T&) { return 0; }
+ template <class T> int operator!=(const T2*, const T&) { return 0; }],
+ [Foo<int> f; return (0 != f);],
+ ac_cv_trouble_comparing_to_zero=no,
+ ac_cv_trouble_comparing_to_zero=yes)])
+if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
+ AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
+fi
+
+
+
+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
+
+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 ========================================================
+dnl =
+dnl = Check for external package dependencies
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(External Packages)
+
+dnl ========================================================
+dnl = Find the right NSPR to use.
+dnl ========================================================
+MOZ_ARG_WITH_BOOL(system-nspr,
+[ --with-system-nspr Use an NSPR that is already built and installed.
+ Use the 'nspr-config' script in the current path,
+ or look for the script in the directories given with
+ --with-nspr-exec-prefix or --with-nspr-prefix.
+ (Those flags are only checked if you specify
+ --with-system-nspr.)],
+ _USE_SYSTEM_NSPR=1 )
+
+MOZ_ARG_WITH_STRING(nspr-cflags,
+[ --with-nspr-cflags=FLAGS Pass FLAGS to CC when building code that uses NSPR.
+ Use this when there's no accurate nspr-config
+ script available. This is the case when building
+ SpiderMonkey as part of the Mozilla tree: the
+ top-level configure script computes NSPR flags
+ that accomodate the quirks of that environment.],
+ NSPR_CFLAGS=$withval)
+MOZ_ARG_WITH_STRING(nspr-libs,
+[ --with-nspr-libs=LIBS Pass LIBS to LD when linking code that uses NSPR.
+ See --with-nspr-cflags for more details.],
+ NSPR_LIBS=$withval)
+AC_SUBST(NSPR_CFLAGS)
+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" || test "$NSPR_LIBS"); then
+ AC_MSG_ERROR([--with-system-nspr and --with-nspr-libs/cflags are mutually exclusive.
+See 'configure --help'.])
+fi
+
+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
+fi
+
+if test -n "$MOZ_NATIVE_NSPR"; then
+ _SAVE_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $NSPR_CFLAGS"
+ AC_TRY_COMPILE([#include "prlog.h"],
+ [#ifndef PR_STATIC_ASSERT
+ #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_DBGRINFO_MODULES=
+
+dnl ========================================================
+dnl =
+dnl = Components & Features
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Components and Features)
+
+dnl ========================================================
+dnl = Enable obsolete Open JVM Interface (OJI) support on OS X
+dnl ========================================================
+case $target in
+*-darwin*)
+ MOZ_OJI=1
+ AC_DEFINE(OJI)
+ ;;
+*)
+ MOZ_OJI=
+ ;;
+esac
+
+AC_SUBST(MOZ_OJI)
+
+dnl ========================================================
+dnl = Localization
+dnl ========================================================
+MOZ_ARG_ENABLE_STRING(ui-locale,
+[ --enable-ui-locale=ab-CD
+ Select the user interface locale (default: en-US)],
+ MOZ_UI_LOCALE=$enableval )
+AC_SUBST(MOZ_UI_LOCALE)
+
+dnl ========================================================
+dnl build the tests by default
+dnl ========================================================
+MOZ_ARG_DISABLE_BOOL(tests,
+[ --disable-tests Do not build test libraries & programs],
+ ENABLE_TESTS=,
+ ENABLE_TESTS=1 )
+
+dnl ========================================================
+dnl =
+dnl = Module specific options
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Individual module options)
+
+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
+fi
+
+MOZ_ARG_ENABLE_STRING(debug,
+[ --enable-debug[=DBG] Enable building with developer debug info
+ (Using compiler flags DBG)],
+[ if test "$enableval" != "no"; then
+ MOZ_DEBUG=1
+ if test -n "$enableval" && test "$enableval" != "yes"; then
+ MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
+ fi
+ else
+ MOZ_DEBUG=
+ fi ],
+ MOZ_DEBUG=)
+
+MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
+ case "${target_os}" in
+ beos*)
+ MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
+ ;;
+ msvc*|mks*|cygwin*|mingw*|os2*|wince*)
+ MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
+ ;;
+ *)
+ MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
+ ;;
+ esac
+MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
+
+MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
+
+if test -n "$MOZ_DEBUG"; then
+ AC_MSG_CHECKING([for valid debug flags])
+ _SAVE_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
+ AC_TRY_COMPILE([#include <stdio.h>],
+ [printf("Hello World\n");],
+ _results=yes,
+ _results=no)
+ AC_MSG_RESULT([$_results])
+ if test "$_results" = "no"; then
+ AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
+ fi
+ CFLAGS=$_SAVE_CFLAGS
+fi
+
+dnl ========================================================
+dnl = Enable code optimization. ON by default.
+dnl ========================================================
+if test -z "$MOZ_OPTIMIZE_FLAGS"; then
+ MOZ_OPTIMIZE_FLAGS="-O"
+fi
+
+MOZ_ARG_ENABLE_STRING(optimize,
+[ --disable-optimize Disable compiler optimization
+ --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
+[ if test "$enableval" != "no"; then
+ MOZ_OPTIMIZE=1
+ if test -n "$enableval" && test "$enableval" != "yes"; then
+ MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
+ MOZ_OPTIMIZE=2
+ fi
+else
+ MOZ_OPTIMIZE=
+fi ], MOZ_OPTIMIZE=1)
+
+if test "$COMPILE_ENVIRONMENT"; then
+if test -n "$MOZ_OPTIMIZE"; then
+ AC_MSG_CHECKING([for valid optimization flags])
+ _SAVE_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
+ AC_TRY_COMPILE([#include <stdio.h>],
+ [printf("Hello World\n");],
+ _results=yes,
+ _results=no)
+ AC_MSG_RESULT([$_results])
+ if test "$_results" = "no"; then
+ AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
+ fi
+ CFLAGS=$_SAVE_CFLAGS
+fi
+fi # COMPILE_ENVIRONMENT
+
+AC_SUBST(MOZ_OPTIMIZE)
+AC_SUBST(MOZ_OPTIMIZE_FLAGS)
+AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
+AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
+
+dnl ========================================================
+dnl = Enable/disable debug for specific modules only
+dnl = module names beginning with ^ will be disabled
+dnl ========================================================
+MOZ_ARG_ENABLE_STRING(debug-modules,
+[ --enable-debug-modules Enable/disable debug info for specific modules],
+[ MOZ_DEBUG_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
+
+dnl ========================================================
+dnl = Enable/disable generation of debugger info for specific modules only
+dnl = the special module name ALL_MODULES can be used to denote all modules
+dnl = module names beginning with ^ will be disabled
+dnl ========================================================
+MOZ_ARG_ENABLE_STRING(debugger-info-modules,
+[ --enable-debugger-info-modules
+ Enable/disable debugger info for specific modules],
+[ for i in `echo $enableval | sed 's/,/ /g'`; do
+ dnl note that the list of module names is reversed as it is copied
+ dnl this is important, as it will allow config.mk to interpret stuff like
+ dnl "^ALL_MODULES xpcom" properly
+ if test "$i" = "no"; then
+ i="^ALL_MODULES"
+ fi
+ if test "$i" = "yes"; then
+ i="ALL_MODULES"
+ fi
+ MOZ_DBGRINFO_MODULES="$i $MOZ_DBGRINFO_MODULES";
+ done ])
+
+dnl ========================================================
+dnl Enable garbage collector
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(boehm,
+[ --enable-boehm Enable the Boehm Garbage Collector],
+ GC_LEAK_DETECTOR=1,
+ GC_LEAK_DETECTOR= )
+if test -n "$GC_LEAK_DETECTOR"; then
+ AC_DEFINE(GC_LEAK_DETECTOR)
+fi
+
+dnl ========================================================
+dnl Enable Narcissus
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(narcissus,
+[ --enable-narcissus Build with Narcissus code enabled],
+ NARCISSUS=1,
+ NARCISSUS= )
+if test -n "$NARCISSUS"; then
+ AC_DEFINE(NARCISSUS)
+fi
+
+dnl ========================================================
+dnl = Enable trace malloc
+dnl ========================================================
+NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
+MOZ_ARG_ENABLE_BOOL(trace-malloc,
+[ --enable-trace-malloc Enable malloc tracing],
+ NS_TRACE_MALLOC=1,
+ NS_TRACE_MALLOC= )
+if test "$NS_TRACE_MALLOC"; then
+ # Please, Mr. Linker Man, don't take away our symbol names
+ MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
+ AC_DEFINE(NS_TRACE_MALLOC)
+fi
+AC_SUBST(NS_TRACE_MALLOC)
+
+dnl ========================================================
+dnl = Enable jemalloc
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(jemalloc,
+[ --enable-jemalloc Replace memory allocator with jemalloc],
+ MOZ_MEMORY=1,
+ MOZ_MEMORY=)
+
+if test "$NS_TRACE_MALLOC"; then
+ MOZ_MEMORY=
+fi
+
+if test "$MOZ_MEMORY"; then
+
+ dnl Don't try to run compiler tests on Windows
+ if test "$OS_ARCH" = "WINNT"; then
+ if test -z "$HAVE_64BIT_OS"; then
+ AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
+ else
+ AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
+ fi
+ else
+ AC_CHECK_SIZEOF([int *], [4])
+ case "${ac_cv_sizeof_int_p}" in
+ 4)
+ AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
+ ;;
+ 8)
+ AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
+ ;;
+ *)
+ AC_MSG_ERROR([Unexpected pointer size])
+ ;;
+ esac
+ fi
+
+ AC_DEFINE(MOZ_MEMORY)
+ if test "x$MOZ_DEBUG" = "x1"; then
+ AC_DEFINE(MOZ_MEMORY_DEBUG)
+ fi
+ dnl The generic feature tests that determine how to compute ncpus are long and
+ dnl complicated. Therefore, simply define special cpp variables for the
+ dnl platforms we have special knowledge of.
+ case "${target_os}" in
+ darwin*)
+ AC_DEFINE(MOZ_MEMORY_DARWIN)
+ ;;
+ *freebsd*)
+ AC_DEFINE(MOZ_MEMORY_BSD)
+ ;;
+ *linux*)
+ AC_DEFINE(MOZ_MEMORY_LINUX)
+ ;;
+ netbsd*)
+ AC_DEFINE(MOZ_MEMORY_BSD)
+ ;;
+ 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)
+ AC_DEFINE(MOZ_MEMORY_WINCE)
+ AC_DEFINE(MOZ_MEMORY_WINDOWS)
+ ;;
+ *)
+ AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
+ ;;
+ esac
+fi
+AC_SUBST(MOZ_MEMORY)
+AC_SUBST(MOZ_MEMORY_LDFLAGS)
+
+dnl ========================================================
+dnl = Use malloc wrapper lib
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(wrap-malloc,
+[ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
+ _WRAP_MALLOC=1,
+ _WRAP_MALLOC= )
+
+if test -n "$_WRAP_MALLOC"; then
+ if test "$GNU_CC"; then
+ WRAP_MALLOC_CFLAGS="${LDFLAGS} -Wl,--wrap -Wl,malloc -Wl,--wrap -Wl,free -Wl,--wrap -Wl,realloc -Wl,--wrap -Wl,__builtin_new -Wl,--wrap -Wl,__builtin_vec_new -Wl,--wrap -Wl,__builtin_delete -Wl,--wrap -Wl,__builtin_vec_delete -Wl,--wrap -Wl,PR_Free -Wl,--wrap -Wl,PR_Malloc -Wl,--wrap -Wl,PR_Calloc -Wl,--wrap -Wl,PR_Realloc"
+ MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) -o $@'
+ fi
+fi
+
+dnl ========================================================
+dnl = Location of malloc wrapper lib
+dnl ========================================================
+MOZ_ARG_WITH_STRING(wrap-malloc,
+[ --with-wrap-malloc=DIR Location of malloc wrapper library],
+ WRAP_MALLOC_LIB=$withval)
+
+dnl ========================================================
+dnl = Use TraceVis
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(tracevis,
+[ --enable-tracevis Enable TraceVis tracing tool (default=no)],
+ MOZ_TRACEVIS=1,
+ MOZ_TRACEVIS= )
+if test -n "$MOZ_TRACEVIS"; then
+ AC_DEFINE(MOZ_TRACEVIS)
+ if test -z "$ENABLE_JIT"; then
+ AC_MSG_ERROR([--enable-tracevis is incompatible with --disable-jit])
+ fi
+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
+ AC_CHECK_HEADER([valgrind/valgrind.h], [],
+ AC_MSG_ERROR(
+ [--enable-valgrind specified but Valgrind is not installed]))
+ AC_DEFINE(MOZ_VALGRIND)
+fi
+
+dnl ========================================================
+dnl = Use Electric Fence
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(efence,
+[ --enable-efence Link with Electric Fence],
+ _ENABLE_EFENCE=1,
+ _ENABLE_EFENCE= )
+if test -n "$_ENABLE_EFENCE"; then
+ AC_CHECK_LIB(efence,malloc)
+fi
+
+dnl ========================================================
+dnl jprof
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(jprof,
+[ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof)],
+ MOZ_JPROF=1,
+ MOZ_JPROF= )
+if test -n "$MOZ_JPROF"; then
+ AC_DEFINE(MOZ_JPROF)
+fi
+
+dnl ========================================================
+dnl shark
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(shark,
+[ --enable-shark Enable shark remote profiling (needs CHUD framework)],
+ MOZ_SHARK=1,
+ MOZ_SHARK= )
+if test -n "$MOZ_SHARK"; then
+ AC_DEFINE(MOZ_SHARK)
+fi
+
+dnl ========================================================
+dnl callgrind
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(callgrind,
+[ --enable-callgrind Enable callgrind profiling],
+ MOZ_CALLGRIND=1,
+ MOZ_CALLGRIND= )
+if test -n "$MOZ_CALLGRIND"; then
+ AC_DEFINE(MOZ_CALLGRIND)
+fi
+
+dnl ========================================================
+dnl vtune
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(vtune,
+[ --enable-vtune Enable vtune profiling],
+ MOZ_VTUNE=1,
+ MOZ_VTUNE= )
+if test -n "$MOZ_VTUNE"; then
+ AC_DEFINE(MOZ_VTUNE)
+fi
+
+dnl ========================================================
+dnl Zealous 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
+
+dnl ========================================================
+dnl = Enable static checking using gcc-dehydra
+dnl ========================================================
+
+MOZ_ARG_WITH_STRING(static-checking,
+[ --with-static-checking=path/to/gcc_dehydra.so
+ Enable static checking of code using GCC-dehydra],
+ DEHYDRA_PATH=$withval,
+ DEHYDRA_PATH= )
+
+if test -n "$DEHYDRA_PATH"; then
+ if test ! -f "$DEHYDRA_PATH"; then
+ AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
+ fi
+ AC_DEFINE(NS_STATIC_CHECKING)
+fi
+AC_SUBST(DEHYDRA_PATH)
+
+dnl ========================================================
+dnl = Enable stripping of libs & executables
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(strip,
+[ --enable-strip Enable stripping of libs & executables ],
+ ENABLE_STRIP=1,
+ ENABLE_STRIP= )
+
+dnl ========================================================
+dnl = Enable stripping of libs & executables when packaging
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(install-strip,
+[ --enable-install-strip Enable stripping of libs & executables when packaging ],
+ PKG_SKIP_STRIP= ,
+ PKG_SKIP_STRIP=1)
+
+dnl ========================================================
+dnl = --enable-old-abi-compat-wrappers
+dnl ========================================================
+dnl on x86 linux, the current builds of some popular plugins (notably
+dnl flashplayer and real) expect a few builtin symbols from libgcc
+dnl which were available in some older versions of gcc. However,
+dnl they're _NOT_ available in newer versions of gcc (eg 3.1), so if
+dnl we want those plugin to work with a gcc-3.1 built binary, we need
+dnl to provide these symbols. MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS defaults
+dnl to true on x86 linux, and false everywhere else.
+dnl
+
+MOZ_ARG_ENABLE_BOOL(old-abi-compat-wrappers,
+[ --enable-old-abi-compat-wrappers
+ Support old GCC ABI symbols to ease the pain
+ of the linux compiler change],
+ MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1,
+ MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS= )
+if test "$COMPILE_ENVIRONMENT"; then
+if test "$MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS"; then
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_CHECK_FUNCS(__builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual)
+ AC_LANG_RESTORE
+ AC_DEFINE(MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS)
+fi
+fi # COMPILE_ENVIRONMENT
+
+dnl ========================================================
+dnl =
+dnl = Profiling and Instrumenting
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Profiling and Instrumenting)
+
+dnl ========================================================
+dnl = Enable timeline service, which provides lightweight
+dnl = instrumentation of mozilla for performance measurement.
+dnl = Timeline is off by default.
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(timeline,
+[ --enable-timeline Enable timeline services ],
+ MOZ_TIMELINE=1,
+ MOZ_TIMELINE= )
+if test -n "$MOZ_TIMELINE"; then
+ AC_DEFINE(MOZ_TIMELINE)
+fi
+
+dnl ========================================================
+dnl = Add support for Eazel profiler
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(eazel-profiler-support,
+[ --enable-eazel-profiler-support
+ Enable Corel/Eazel profiler support],
+ ENABLE_EAZEL_PROFILER=1,
+ ENABLE_EAZEL_PROFILER= )
+if test -n "$ENABLE_EAZEL_PROFILER"; then
+ AC_DEFINE(ENABLE_EAZEL_PROFILER)
+ MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
+ EAZEL_PROFILER_CFLAGS="-g -O -gdwarf-2 -finstrument-functions -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
+ EAZEL_PROFILER_LIBS="-lprofiler -lpthread"
+fi
+
+MOZ_ARG_ENABLE_STRING(profile-modules,
+[ --enable-profile-modules
+ Enable/disable profiling for specific modules],
+[ MOZ_PROFILE_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
+
+MOZ_ARG_ENABLE_BOOL(insure,
+[ --enable-insure Enable insure++ instrumentation (linux only)],
+ _ENABLE_INSURE=1,
+ _ENABLE_INSURE= )
+if test -n "$_ENABLE_INSURE"; then
+ MOZ_INSURE="insure"
+ MOZ_INSURIFYING=1
+ MOZ_INSURE_DIRS="."
+ MOZ_INSURE_EXCLUDE_DIRS="config"
+fi
+
+MOZ_ARG_WITH_STRING(insure-dirs,
+[ --with-insure-dirs=DIRS
+ Dirs to instrument with insure ],
+ MOZ_INSURE_DIRS=$withval )
+
+MOZ_ARG_WITH_STRING(insure-exclude-dirs,
+[ --with-insure-exclude-dirs=DIRS
+ Dirs to not instrument with insure ],
+ MOZ_INSURE_EXCLUDE_DIRS="config $withval" )
+
+dnl ========================================================
+dnl = Support for Quantify (Windows)
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(quantify,
+[ --enable-quantify Enable Quantify support (Windows only) ],
+ MOZ_QUANTIFY=1,
+ MOZ_QUANTIFY= )
+
+dnl ========================================================
+dnl = Support for demangling undefined symbols
+dnl ========================================================
+if test -z "$SKIP_LIBRARY_CHECKS"; then
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
+ AC_LANG_RESTORE
+fi
+
+# Demangle only for debug or trace-malloc builds
+MOZ_DEMANGLE_SYMBOLS=
+if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
+ MOZ_DEMANGLE_SYMBOLS=1
+ AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
+fi
+AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
+
+dnl ========================================================
+dnl = Support for gcc stack unwinding (from gcc 3.3)
+dnl ========================================================
+if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then
+ AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
+fi
+
+dnl ========================================================
+dnl =
+dnl = Misc. Options
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Misc. Options)
+
+dnl ========================================================
+dnl update xterm title
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(xterm-updates,
+[ --enable-xterm-updates Update XTERM titles with current command.],
+ MOZ_UPDATE_XTERM=1,
+ MOZ_UPDATE_XTERM= )
+
+if test -z "$SKIP_COMPILER_CHECKS"; then
+dnl ========================================================
+dnl =
+dnl = Compiler Options
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Compiler Options)
+
+dnl ========================================================
+dnl Check for gcc -pipe support
+dnl ========================================================
+AC_MSG_CHECKING([for gcc -pipe support])
+if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
+ echo '#include <stdio.h>' > dummy-hello.c
+ echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
+ ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
+ cat dummy-hello.s 2> /dev/null | ${AS_BIN} -o dummy-hello.S - 2>&5
+ if test $? = 0; then
+ _res_as_stdin="yes"
+ else
+ _res_as_stdin="no"
+ fi
+ if test "$_res_as_stdin" = "yes"; then
+ _SAVE_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -pipe"
+ AC_TRY_COMPILE( [ #include <stdio.h> ],
+ [printf("Hello World\n");],
+ [_res_gcc_pipe="yes"],
+ [_res_gcc_pipe="no"] )
+ CFLAGS=$_SAVE_CFLAGS
+ fi
+ if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
+ _res="yes";
+ CFLAGS="$CFLAGS -pipe"
+ CXXFLAGS="$CXXFLAGS -pipe"
+ else
+ _res="no"
+ fi
+ rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
+ AC_MSG_RESULT([$_res])
+else
+ AC_MSG_RESULT([no])
+fi
+
+dnl pass -Wno-long-long to the compiler
+MOZ_ARG_ENABLE_BOOL(long-long-warning,
+[ --enable-long-long-warning
+ Warn about use of non-ANSI long long type],
+ _IGNORE_LONG_LONG_WARNINGS=,
+ _IGNORE_LONG_LONG_WARNINGS=1)
+
+if test "$_IGNORE_LONG_LONG_WARNINGS"; then
+ _SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
+ AC_MSG_CHECKING([whether compiler supports -Wno-long-long])
+ AC_TRY_COMPILE([], [return(0);],
+ [ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
+ _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
+ result="yes" ], result="no")
+ AC_MSG_RESULT([$result])
+ CFLAGS="$_SAVE_CFLAGS"
+fi
+
+dnl ========================================================
+dnl Profile guided optimization
+dnl ========================================================
+dnl Test for profiling options
+dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
+dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
+
+dnl Provide a switch to disable PGO even when called via profiledbuild.
+MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
+[ --disable-profile-guided-optimization
+ Don't build with PGO even if called via make profiledbuild],
+MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
+MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
+
+AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
+
+_SAVE_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -fprofile-generate"
+
+AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
+AC_TRY_COMPILE([], [return 0;],
+ [ PROFILE_GEN_CFLAGS="-fprofile-generate"
+ result="yes" ], result="no")
+AC_MSG_RESULT([$result])
+
+if test $result = "yes"; then
+ PROFILE_GEN_LDFLAGS="-fprofile-generate"
+ PROFILE_USE_CFLAGS="-fprofile-use"
+ PROFILE_USE_LDFLAGS="-fprofile-use"
+else
+ CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
+ AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
+ AC_TRY_COMPILE([], [return 0;],
+ [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
+ result="yes" ], result="no")
+ AC_MSG_RESULT([$result])
+ if test $result = "yes"; then
+ PROFILE_USE_CFLAGS="-fbranch-probabilities"
+ fi
+ # don't really care, this is an old GCC
+ PROFILE_GEN_LDFLAGS=
+ PROFILE_USE_LDFLAGS=
+fi
+
+CFLAGS="$_SAVE_CFLAGS"
+
+if test -n "$INTEL_CC"; then
+ PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
+ PROFILE_GEN_LDFLAGS=
+ PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
+ PROFILE_USE_LDFLAGS=
+fi
+
+dnl Sun Studio on Solaris
+if test "$SOLARIS_SUNPRO_CC"; then
+ PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
+ PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
+ if test "$CPU_ARCH" != "sparc"; then
+ PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
+ PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
+ else
+ PROFILE_USE_CFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
+ PROFILE_USE_LDFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
+ fi
+fi
+
+AC_SUBST(PROFILE_GEN_CFLAGS)
+AC_SUBST(PROFILE_GEN_LDFLAGS)
+AC_SUBST(PROFILE_USE_CFLAGS)
+AC_SUBST(PROFILE_USE_LDFLAGS)
+
+AC_LANG_CPLUSPLUS
+
+dnl ========================================================
+dnl Test for -pedantic bustage
+dnl ========================================================
+MOZ_ARG_DISABLE_BOOL(pedantic,
+[ --disable-pedantic Issue all warnings demanded by strict ANSI C ],
+_PEDANTIC= )
+if test "$_PEDANTIC"; then
+ _SAVE_CXXFLAGS=$CXXFLAGS
+ CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
+ AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
+ AC_TRY_COMPILE([$configure_static_assert_macros],
+ [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
+ result="no", result="yes" )
+ AC_MSG_RESULT([$result])
+ CXXFLAGS="$_SAVE_CXXFLAGS"
+
+ case "$result" in
+ no)
+ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic"
+ _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
+ ;;
+ yes)
+ AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic. Reconfigure using --disable-pedantic. ])
+ ;;
+ esac
+fi
+
+dnl ========================================================
+dnl Test for correct temporary object destruction order
+dnl ========================================================
+dnl We want to make sure the compiler follows the C++ spec here as
+dnl xpcom and the string classes depend on it (bug 235381).
+AC_MSG_CHECKING([for correct temporary object destruction order])
+AC_TRY_RUN([ class A {
+ public: A(int& x) : mValue(x) {}
+ ~A() { mValue--; }
+ operator char**() { return 0; }
+ private: int& mValue;
+ };
+ void func(char **arg) {}
+ int m=2;
+ void test() {
+ func(A(m));
+ if (m==1) m = 0;
+ }
+ int main() {
+ test();
+ return(m);
+ }
+ ],
+ result="yes", result="no", result="maybe")
+AC_MSG_RESULT([$result])
+
+if test "$result" = "no"; then
+ AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
+fi
+
+dnl ========================================================
+dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
+dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
+dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
+dnl ========================================================
+_SAVE_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
+AC_CACHE_CHECK(for correct overload resolution with const and templates,
+ ac_nscap_nonconst_opeq_bug,
+ [AC_TRY_COMPILE([
+ template <class T>
+ class Pointer
+ {
+ public:
+ T* myPtr;
+ };
+
+ template <class T, class U>
+ int operator==(const Pointer<T>& rhs, U* lhs)
+ {
+ return rhs.myPtr == lhs;
+ }
+
+ template <class T, class U>
+ int operator==(const Pointer<T>& rhs, const U* lhs)
+ {
+ return rhs.myPtr == lhs;
+ }
+ ],
+ [
+ Pointer<int> foo;
+ const int* bar;
+ return foo == bar;
+ ],
+ ac_nscap_nonconst_opeq_bug="no",
+ ac_nscap_nonconst_opeq_bug="yes")])
+CXXFLAGS="$_SAVE_CXXFLAGS"
+
+if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
+ AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
+fi
+
+dnl ========================================================
+dnl Check for tm_zone, tm_gmtoff in struct tm
+dnl ========================================================
+AC_CACHE_CHECK(for tm_zone tm_gmtoff in struct tm,
+ ac_cv_struct_tm_zone_tm_gmtoff,
+ [AC_TRY_COMPILE([#include <time.h>],
+ [struct tm tm; tm.tm_zone = 0; tm.tm_gmtoff = 1;],
+ [ac_cv_struct_tm_zone_tm_gmtoff="yes"],
+ [ac_cv_struct_tm_zone_tm_gmtoff="no"])])
+if test "$ac_cv_struct_tm_zone_tm_gmtoff" = "yes" ; then
+ AC_DEFINE(HAVE_TM_ZONE_TM_GMTOFF)
+fi
+
+fi # SKIP_COMPILER_CHECKS
+
+dnl ========================================================
+dnl C++ rtti
+dnl Should be smarter and check that the compiler does indeed have rtti
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(cpp-rtti,
+[ --enable-cpp-rtti Enable C++ RTTI ],
+[ _MOZ_USE_RTTI=1 ],
+[ _MOZ_USE_RTTI= ])
+
+if test "$_MOZ_USE_RTTI"; then
+ _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
+else
+ _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
+fi
+
+AC_SUBST(_MOZ_RTTI_FLAGS_ON)
+
+dnl ========================================================
+dnl C++ exceptions (g++/egcs only - for now)
+dnl Should be smarter and check that the compiler does indeed have exceptions
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
+[ --enable-cpp-exceptions Enable C++ exceptions ],
+[ _MOZ_CPP_EXCEPTIONS=1 ],
+[ _MOZ_CPP_EXCEPTIONS= ])
+
+if test "$_MOZ_CPP_EXCEPTIONS"; then
+ _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
+else
+ _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
+fi
+
+AC_SUBST(_MOZ_EXCEPTIONS_FLAGS_ON)
+
+# Irix & OSF native compilers do not like exception declarations
+# when exceptions are disabled
+if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
+ AC_DEFINE(CPP_THROW_NEW, [])
+else
+ AC_DEFINE(CPP_THROW_NEW, [throw()])
+fi
+AC_LANG_C
+
+dnl ========================================================
+dnl =
+dnl = Build depencency options
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Build dependencies)
+
+dnl ========================================================
+dnl = Do not auto generate dependency info
+dnl ========================================================
+MOZ_AUTO_DEPS=1
+MOZ_ARG_DISABLE_BOOL(auto-deps,
+[ --disable-auto-deps Do not automatically generate dependency info],
+ MOZ_AUTO_DEPS=,
+ MOZ_AUTO_DEPS=1)
+
+if test -n "$MOZ_AUTO_DEPS"; then
+dnl ========================================================
+dnl = Use mkdepend instead of $CC -MD for dependency generation
+dnl ========================================================
+_cpp_md_flag=
+MOZ_ARG_DISABLE_BOOL(md,
+[ --disable-md Do not use compiler-based dependencies ],
+ [_cpp_md_flag=],
+ [_cpp_md_flag=1],
+ [dnl Default is to turn on -MD if using GNU-compatible compilers
+ if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
+ _cpp_md_flag=1
+ fi
+ dnl Default is to use -xM if using Sun Studio on Solaris
+ if test "$SOLARIS_SUNPRO_CC"; then
+ _cpp_md_flag=1
+ fi])
+if test "$_cpp_md_flag"; then
+ COMPILER_DEPEND=1
+ if test "$OS_ARCH" = "OpenVMS"; then
+ _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
+ else
+ _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(basename $(@F)).pp)'
+ fi
+ dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
+ if test "$SOLARIS_SUNPRO_CC"; then
+ _DEPEND_CFLAGS=
+ fi
+else
+ COMPILER_DEPEND=
+ _USE_CPP_INCLUDE_FLAG=
+ _DEFINES_CFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT'
+ _DEFINES_CXXFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT'
+fi
+fi # MOZ_AUTO_DEPS
+MDDEPDIR='.deps'
+AC_SUBST(MOZ_AUTO_DEPS)
+AC_SUBST(COMPILER_DEPEND)
+AC_SUBST(MDDEPDIR)
+
+
+dnl ========================================================
+dnl =
+dnl = Static Build Options
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Static build options)
+
+MOZ_ARG_ENABLE_BOOL(static,
+[ --enable-static Enable building of internal static libs],
+ BUILD_STATIC_LIBS=1,
+ BUILD_STATIC_LIBS=)
+
+dnl ========================================================
+dnl = Link js shell to system readline
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(readline,
+[ --enable-readline Link js shell to system readline library],
+ JS_WANT_READLINE=1,
+ JS_WANT_READLINE= )
+
+JS_NATIVE_EDITLINE=
+EDITLINE_LIBS=
+JS_DISABLE_SHELL=
+
+case "$target" in
+*-wince*|*-mingw*|*-cygwin*|*-msvc*|*-mks*)
+ NO_EDITLINE=1
+ ;;
+*-symbian*)
+ NO_EDITLINE=1
+ JS_DISABLE_SHELL=1
+ ;;
+*)
+ ;;
+esac
+
+if test -z "$SKIP_LIBRARY_CHECKS" -a -z "$NO_EDITLINE"; then
+ if test -n "$JS_WANT_READLINE"; then
+ AC_CHECK_LIB(readline, readline,
+ EDITLINE_LIBS="-lreadline",
+ AC_MSG_ERROR([No system readline library found.]))
+ else
+ dnl By default, we use editline
+ JS_NATIVE_EDITLINE=1
+ EDITLINE_LIBS='$(DEPTH)/editline/$(LIB_PREFIX)editline.$(LIB_SUFFIX)'
+ fi
+
+ dnl Either way, we want to build with line editing support.
+ AC_DEFINE(EDITLINE)
+fi
+AC_SUBST(JS_NATIVE_EDITLINE)
+AC_SUBST(JS_DISABLE_SHELL)
+AC_SUBST(EDITLINE_LIBS)
+
+dnl ========================================================
+dnl =
+dnl = Standalone module options
+dnl =
+dnl ========================================================
+MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
+
+dnl ========================================================
+if test "$MOZ_DEBUG" || test "$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'.
+ This helps keep the SpiderMonkey build machinery
+ in sync with Mozilla's, on which it is based.],
+[MOZ_SYNC_BUILD_FILES=$withval ] )
+AC_SUBST(MOZ_SYNC_BUILD_FILES)
+
+dnl ========================================================
+dnl =
+dnl = Maintainer debug option (no --enable equivalent)
+dnl =
+dnl ========================================================
+
+AC_SUBST(AR)
+AC_SUBST(AR_FLAGS)
+AC_SUBST(AR_LIST)
+AC_SUBST(AR_EXTRACT)
+AC_SUBST(AR_DELETE)
+AC_SUBST(AS)
+AC_SUBST(ASFLAGS)
+AC_SUBST(AS_DASH_C_FLAG)
+AC_SUBST(LD)
+AC_SUBST(RC)
+AC_SUBST(RCFLAGS)
+AC_SUBST(WINDRES)
+AC_SUBST(USE_SHORT_LIBNAME)
+AC_SUBST(IMPLIB)
+AC_SUBST(FILTER)
+AC_SUBST(BIN_FLAGS)
+AC_SUBST(NS_USE_NATIVE)
+AC_SUBST(MOZ_JS_LIBS)
+AC_SUBST(MOZ_PSM)
+AC_SUBST(MOZ_DEBUG)
+AC_SUBST(MOZ_DEBUG_MODULES)
+AC_SUBST(MOZ_PROFILE_MODULES)
+AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
+AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
+AC_SUBST(MOZ_DEBUG_FLAGS)
+AC_SUBST(MOZ_DEBUG_LDFLAGS)
+AC_SUBST(WARNINGS_AS_ERRORS)
+AC_SUBST(MOZ_DBGRINFO_MODULES)
+AC_SUBST(ENABLE_EAZEL_PROFILER)
+AC_SUBST(EAZEL_PROFILER_CFLAGS)
+AC_SUBST(EAZEL_PROFILER_LIBS)
+AC_SUBST(MOZ_PERF_METRICS)
+AC_SUBST(GC_LEAK_DETECTOR)
+AC_SUBST(MOZ_LEAKY)
+AC_SUBST(MOZ_JPROF)
+AC_SUBST(MOZ_SHARK)
+AC_SUBST(MOZ_CALLGRIND)
+AC_SUBST(MOZ_VTUNE)
+AC_SUBST(MOZ_XPCTOOLS)
+AC_SUBST(MOZ_JSLOADER)
+AC_SUBST(MOZ_INSURE)
+AC_SUBST(MOZ_INSURE_DIRS)
+AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
+AC_SUBST(MOZ_QUANTIFY)
+AC_SUBST(MOZ_INSURIFYING)
+AC_SUBST(LIBICONV)
+
+AC_SUBST(BUILD_STATIC_LIBS)
+AC_SUBST(ENABLE_TESTS)
+
+AC_SUBST(ENABLE_STRIP)
+AC_SUBST(PKG_SKIP_STRIP)
+AC_SUBST(INCREMENTAL_LINKER)
+AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
+AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
+
+AC_SUBST(MOZ_FIX_LINK_PATHS)
+
+AC_SUBST(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_VERSION)
+
+AC_SUBST(MOZ_PKG_SPECIAL)
+
+AC_SUBST(MOZILLA_OFFICIAL)
+
+dnl win32 options
+AC_SUBST(MOZ_DEBUG_SYMBOLS)
+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)
+
+dnl Echo the CFLAGS to remove extra whitespace.
+CFLAGS=`echo \
+ $_WARNINGS_CFLAGS \
+ $CFLAGS`
+
+CXXFLAGS=`echo \
+ $_MOZ_RTTI_FLAGS \
+ $_MOZ_EXCEPTIONS_FLAGS \
+ $_WARNINGS_CXXFLAGS \
+ $CXXFLAGS`
+
+COMPILE_CFLAGS=`echo \
+ $_DEFINES_CFLAGS \
+ $_DEPEND_CFLAGS \
+ $COMPILE_CFLAGS`
+
+COMPILE_CXXFLAGS=`echo \
+ $_DEFINES_CXXFLAGS \
+ $_DEPEND_CFLAGS \
+ $COMPILE_CXXFLAGS`
+
+AC_SUBST(SYSTEM_MAKEDEPEND)
+
+AC_SUBST(NSPR_CFLAGS)
+AC_SUBST(NSPR_LIBS)
+AC_SUBST(MOZ_NATIVE_NSPR)
+
+AC_SUBST(CFLAGS)
+AC_SUBST(CXXFLAGS)
+AC_SUBST(CPPFLAGS)
+AC_SUBST(COMPILE_CFLAGS)
+AC_SUBST(COMPILE_CXXFLAGS)
+AC_SUBST(LDFLAGS)
+AC_SUBST(LIBS)
+AC_SUBST(CROSS_COMPILE)
+
+AC_SUBST(HOST_CC)
+AC_SUBST(HOST_CXX)
+AC_SUBST(HOST_CFLAGS)
+AC_SUBST(HOST_CXXFLAGS)
+AC_SUBST(HOST_OPTIMIZE_FLAGS)
+AC_SUBST(HOST_AR)
+AC_SUBST(HOST_AR_FLAGS)
+AC_SUBST(HOST_LD)
+AC_SUBST(HOST_RANLIB)
+AC_SUBST(HOST_NSPR_MDCPUCFG)
+AC_SUBST(HOST_BIN_SUFFIX)
+AC_SUBST(HOST_OS_ARCH)
+
+AC_SUBST(TARGET_CPU)
+AC_SUBST(TARGET_VENDOR)
+AC_SUBST(TARGET_OS)
+AC_SUBST(TARGET_NSPR_MDCPUCFG)
+AC_SUBST(TARGET_MD_ARCH)
+AC_SUBST(TARGET_XPCOM_ABI)
+AC_SUBST(OS_TARGET)
+AC_SUBST(OS_ARCH)
+AC_SUBST(OS_RELEASE)
+AC_SUBST(OS_TEST)
+
+AC_SUBST(WRAP_MALLOC_CFLAGS)
+AC_SUBST(WRAP_MALLOC_LIB)
+AC_SUBST(MKSHLIB)
+AC_SUBST(MKCSHLIB)
+AC_SUBST(MKSHLIB_FORCE_ALL)
+AC_SUBST(MKSHLIB_UNFORCE_ALL)
+AC_SUBST(DSO_CFLAGS)
+AC_SUBST(DSO_PIC_CFLAGS)
+AC_SUBST(DSO_LDOPTS)
+AC_SUBST(LIB_PREFIX)
+AC_SUBST(DLL_PREFIX)
+AC_SUBST(DLL_SUFFIX)
+AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
+AC_SUBST(LIB_SUFFIX)
+AC_SUBST(OBJ_SUFFIX)
+AC_SUBST(BIN_SUFFIX)
+AC_SUBST(ASM_SUFFIX)
+AC_SUBST(IMPORT_LIB_SUFFIX)
+AC_SUBST(USE_N32)
+AC_SUBST(CC_VERSION)
+AC_SUBST(CXX_VERSION)
+AC_SUBST(MSMANIFEST_TOOL)
+
+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
+
+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"
+ AC_TRY_COMPILE([
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <X11/Xlib.h>
+ #include <X11/Intrinsic.h>
+ ],
+ [
+ Display *dpy = 0;
+ if ((dpy = XOpenDisplay(NULL)) == NULL) {
+ fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
+ exit(1);
+ }
+ ], [],
+ [ AC_MSG_ERROR([Could not compile basic X program.]) ])
+ CFLAGS="$_SAVE_CFLAGS"
+
+ if test ! -z "$MISSING_X"; then
+ AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
+ fi
+
+fi # MOZ_X11
+fi # COMPILE_ENVIRONMENT
+
+dnl Set various defines and substitutions
+dnl ========================================================
+
+if test "$OS_ARCH" = "BeOS"; then
+ AC_DEFINE(XP_BEOS)
+ MOZ_MOVEMAIL=1
+elif test "$OS_ARCH" = "Darwin"; then
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(UNIX_ASYNC_DNS)
+ MOZ_MOVEMAIL=1
+elif test "$OS_ARCH" = "OpenVMS"; then
+ AC_DEFINE(XP_UNIX)
+elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
+ AC_DEFINE(XP_UNIX)
+ AC_DEFINE(UNIX_ASYNC_DNS)
+ MOZ_MOVEMAIL=1
+fi
+AC_SUBST(MOZ_MOVEMAIL)
+
+AC_ARG_ENABLE(threadsafe,
+ [ --enable-threadsafe Enable support for multiple threads.],
+ [AC_DEFINE(JS_THREADSAFE)],)
+
+if test "$MOZ_DEBUG"; then
+ AC_DEFINE(MOZ_REFLOW_PERF)
+ AC_DEFINE(MOZ_REFLOW_PERF_DSP)
+fi
+
+if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
+ AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
+ ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
+ ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
+ ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
+ ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
+ AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
+ AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
+ AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
+fi
+
+dnl ========================================================
+dnl JavaScript shell
+dnl ========================================================
+
+AC_HAVE_FUNCS(setlocale)
+
+dnl ========================================================
+dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
+dnl ========================================================
+case "$host_os" in
+mingw*)
+ WIN_TOP_SRC=`cd $srcdir; pwd -W`
+ ;;
+cygwin*|msvc*|mks*)
+ HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
+ HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
+ CC="\$(CYGWIN_WRAPPER) $CC"
+ CXX="\$(CYGWIN_WRAPPER) $CXX"
+ CPP="\$(CYGWIN_WRAPPER) $CPP"
+ LD="\$(CYGWIN_WRAPPER) $LD"
+ AS="\$(CYGWIN_WRAPPER) $AS"
+ RC="\$(CYGWIN_WRAPPER) $RC"
+ CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
+ WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
+ ;;
+esac
+
+AC_SUBST(CYGDRIVE_MOUNT)
+AC_SUBST(WIN_TOP_SRC)
+
+AC_SUBST(MOZILLA_VERSION)
+
+AC_SUBST(ac_configure_args)
+
+dnl Spit out some output
+dnl ========================================================
+
+# Save the defines header file before autoconf removes it.
+# (Do not add AC_DEFINE calls after this line.)
+ _CONFIG_TMP=confdefs-tmp.h
+ _CONFIG_DEFS_H=js-confdefs.h
+
+ cat > $_CONFIG_TMP <<\EOF
+/* List of defines generated by configure. Included with preprocessor flag,
+ * -include, to avoid long list of -D defines on the compile command-line.
+ * Do not edit.
+ */
+
+#ifndef _JS_CONFDEFS_H_
+#define _JS_CONFDEFS_H_
+EOF
+
+_EGREP_PATTERN='^#define ('
+if test -n "$_NON_GLOBAL_ACDEFINES"; then
+ for f in $_NON_GLOBAL_ACDEFINES; do
+ _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
+ done
+fi
+_EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
+
+ sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
+
+ cat >> $_CONFIG_TMP <<\EOF
+
+#endif /* _JS_CONFDEFS_H_ */
+
+EOF
+
+ # Only write js-confdefs.h when something changes (or it doesn't exist)
+ if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
+ rm $_CONFIG_TMP
+ else
+ AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
+ mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
+
+ echo ==== $_CONFIG_DEFS_H =================================
+ cat $_CONFIG_DEFS_H
+ fi
+
+dnl Probably shouldn't call this manually but we always want the output of DEFS
+rm -f confdefs.h.save
+mv confdefs.h confdefs.h.save
+egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
+AC_OUTPUT_MAKE_DEFS()
+MOZ_DEFINES=$DEFS
+AC_SUBST(MOZ_DEFINES)
+rm -f confdefs.h
+mv confdefs.h.save confdefs.h
+
+MAKEFILES="
+ Makefile
+ shell/Makefile
+ lirasm/Makefile
+ jsapi-tests/Makefile
+ tests/Makefile
+ config/Makefile
+ config/autoconf.mk
+ config/mkdepend/Makefile
+"
+
+if test -n "$JS_NATIVE_EDITLINE"; then
+ MAKEFILES="$MAKEFILES
+editline/Makefile
+"
+fi
+
+dnl
+dnl Run a perl script to quickly create the makefiles.
+dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
+dnl for the files it cannot handle correctly. This way, config.status
+dnl will handle these files.
+dnl If it fails, nothing is set and config.status will run as usual.
+dnl
+dnl This does not change the $MAKEFILES variable.
+dnl
+dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
+dnl
+if test -z "${AS_PERL}"; then
+echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
+else
+echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
+fi
+. ./conftest.sh
+rm conftest.sh
+
+echo $MAKEFILES > unallmakefiles
+
+mv -f config/autoconf.mk config/autoconf.mk.orig 2> /dev/null
+
+AC_OUTPUT($MAKEFILES)
+
+dnl Prevent the regeneration of autoconf.mk forcing rebuilds of the world
+if cmp -s config/autoconf.mk config/autoconf.mk.orig; then
+ echo "config/autoconf.mk is unchanged"
+ 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