mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-21 01:37:16 +00:00

Moved nsFileSpec and related classes into this obsolete library. Moved nsRegistry and related libreg functionality into the obsolete library. Updated many callers using the obsolete nsFile spec to use nsIFile and Necko to do file IO. Combined the following DLLs (source -> dest) uriloader -> docshell shistory -> docshell jsurl -> jsdom gkview -> gklayout Moved nsAdapterEnumerator out of xpcom/ds and into mailnews, since they're the only consumer Modifed the xpt_link tool so that you can specify a �only include� cid list that can mask CID�s that you are not interested in. Added build options: Prevent the building of xpinstall (--disable-xpinstall) Prevent the building js component loader (--disable-jsloader) A build option to only build a single profile (--enable-single-profile) A build flag to only built the required xpfe components (--disable-xpfe-components). Removal or hiding of unused functions and classes including nsEscape*, nsDequeIterator, nsRecyclingAllocatorImpl, nsDiscriminatedUnion, nsOpaqueKey, nsCRT::strlen, NS_NewCommandLineService Bug 194240, r/sr = darin, alec.
5152 lines
164 KiB
Plaintext
5152 lines
164 KiB
Plaintext
dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
|
|
dnl vi: set tabstop=4 shiftwidth=4 expandtab:
|
|
dnl The contents of this file are subject to the Mozilla Public
|
|
dnl License Version 1.1 (the "License"); you may not use this file
|
|
dnl except in compliance with the License. You may obtain a copy of
|
|
dnl the License at http://www.mozilla.org/MPL/
|
|
dnl
|
|
dnl Software distributed under the License is distributed on an "AS
|
|
dnl IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
dnl implied. See the License for the specific language governing
|
|
dnl rights and limitations under the 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 Christopher
|
|
dnl Seawood. Portions created by Christopher Seawood are
|
|
dnl Copyright (C) 1998-2001 Christopher Seawood. All Rights Reserved.
|
|
dnl
|
|
dnl Contributor(s): 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
|
|
dnl Process this file with autoconf to produce a configure script.
|
|
dnl ========================================================
|
|
|
|
AC_PREREQ(2.12)
|
|
AC_INIT(config/config.mk)
|
|
AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
|
|
AC_CANONICAL_SYSTEM
|
|
TARGET_CPU="${target_cpu}"
|
|
TARGET_VENDOR="${target_vendor}"
|
|
TARGET_OS="${target_os}"
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Dont 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="$CFLAGS"
|
|
_SUBDIR_LDFLAGS="$LDFLAGS"
|
|
_SUBDIR_HOST_CC="$HOST_CC"
|
|
_SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
|
|
_SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
|
|
_SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
|
|
_SUBDIR_CONFIG_ARGS="$ac_configure_args"
|
|
|
|
dnl Set the version number of the libs included with mozilla
|
|
dnl ========================================================
|
|
MOZJPEG=62
|
|
MOZPNG=10200
|
|
MOZMNG="((1<<16)|(0<<8)|(0))"
|
|
MOZZLIB=1.0.0
|
|
NSPR_VERSION=4
|
|
|
|
dnl Set the minimum version of toolkit libs used by mozilla
|
|
dnl ========================================================
|
|
GLIB_VERSION=1.2.0
|
|
GTK_VERSION=1.2.0
|
|
LIBIDL_VERSION=0.6.3
|
|
PERL_VERSION=5.004
|
|
LIBART_VERSION=2.3.4
|
|
GTK2_VERSION=1.3.7
|
|
MAKE_VERSION=3.78
|
|
|
|
dnl Set various checks
|
|
dnl ========================================================
|
|
MISSING_X=
|
|
|
|
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 Default to MSVC for win32
|
|
dnl ==============================================================
|
|
case "$target" in
|
|
*-cygwin*|*-mingw*|*-msvc*|*-mksnt*)
|
|
MAKE_VERSION=3.79
|
|
if test -z "$CC"; then CC=cl; fi
|
|
if test -z "$CXX"; then CXX=cl; fi
|
|
if test -z "$CPP"; then CPP=cl; fi
|
|
if test -z "$LD"; then LD=link; fi
|
|
if test -z "$AS"; then AS=ml; fi
|
|
;;
|
|
esac
|
|
|
|
dnl ========================================================
|
|
dnl Checks for compilers.
|
|
dnl ========================================================
|
|
dnl Set CROSS_COMPILE in the environment when running configure
|
|
dnl to use the cross-compile setup for now
|
|
dnl ========================================================
|
|
if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then
|
|
echo "cross compiling from $host to $target"
|
|
cross_compiling=yes
|
|
|
|
_SAVE_CC="$CC"
|
|
_SAVE_CFLAGS="$CFLAGS"
|
|
_SAVE_LDFLAGS="$LDFLAGS"
|
|
|
|
AC_MSG_CHECKING([for host c compiler])
|
|
if test -z "$HOST_CC"; then
|
|
AC_CHECK_PROGS(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
|
|
fi
|
|
AC_MSG_RESULT([$HOST_CC])
|
|
AC_MSG_CHECKING([for host c++ compiler])
|
|
if test -z "$HOST_CXX"; then
|
|
AC_CHECK_PROGS(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
|
|
fi
|
|
AC_MSG_RESULT([$HOST_CXX])
|
|
|
|
if test -z "$HOST_CFLAGS"; then
|
|
HOST_CFLAGS="$CFLAGS"
|
|
fi
|
|
if test -z "$HOST_CXXFLAGS"; then
|
|
HOST_CXXFLAGS="$CXXFLAGS"
|
|
fi
|
|
if test -z "$HOST_LDFLAGS"; then
|
|
HOST_LDFLAGS="$LDFLAGS"
|
|
fi
|
|
if test -z "$HOST_RANLIB"; then
|
|
AC_CHECK_PROG(HOST_RANLIB, ranlib, ranlib, :)
|
|
fi
|
|
if test -z "$HOST_AR"; then
|
|
AC_CHECK_PROG(HOST_AR, ar, ar, :)
|
|
fi
|
|
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
|
|
|
|
if test -z "$CC"; then
|
|
AC_CHECK_PROGS(CC, "${target_alias}-gcc" "${target}-gcc", :)
|
|
fi
|
|
unset ac_cv_prog_CC
|
|
AC_PROG_CC
|
|
if test -z "$CXX"; then
|
|
AC_CHECK_PROGS(CXX, "${target_alias}-g++" "${target}-g++", :)
|
|
fi
|
|
unset ac_cv_prog_CXX
|
|
AC_PROG_CXX
|
|
if test -z "$RANLIB"; then
|
|
AC_CHECK_PROGS(RANLIB, "${target_alias}-ranlib" "${target}-ranlib", :)
|
|
fi
|
|
if test -z "$AR"; then
|
|
AC_CHECK_PROGS(AR, "${target_alias}-ar" "${target}-ar", :)
|
|
fi
|
|
if test -z "$AS"; then
|
|
AC_PATH_PROGS(AS, "${target_alias}-as" "${target}-as", :)
|
|
fi
|
|
if test -z "$LD"; then
|
|
AC_CHECK_PROGS(LD, "${target_alias}-ld" "${target}-ld", :)
|
|
fi
|
|
if test -z "$STRIP"; then
|
|
AC_CHECK_PROGS(STRIP, "${target_alias}-strip" "${target}-strip", :)
|
|
fi
|
|
if test -z "$WINDRES"; then
|
|
AC_CHECK_PROGS(WINDRES, "${target_alias}-windres" "${target}-windres", :)
|
|
fi
|
|
AC_DEFINE(CROSS_COMPILE)
|
|
else
|
|
AC_PROG_CC
|
|
AC_PROG_CXX
|
|
AC_PROG_RANLIB
|
|
AC_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
|
|
|
|
dnl Special win32 checks
|
|
dnl ========================================================
|
|
case "$target" in
|
|
*-cygwin*|*-mingw*|*-msvc*|*-mksnt*)
|
|
if test "$GCC" != "yes"; then
|
|
# Check to see if we are really running in a msvc environemnt
|
|
_WIN32_MSVC=1
|
|
AC_CHECK_PROGS(MIDL, midl)
|
|
|
|
# Make sure compilers are valid
|
|
CFLAGS="$CFLAGS -TC -nologo"
|
|
CXXFLAGS="$CXXFLAGS -TP -nologo"
|
|
AC_LANG_SAVE
|
|
AC_LANG_C
|
|
AC_TRY_COMPILE([#include <stdio.h>],
|
|
[ printf("Hello World\n"); ],,
|
|
AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
|
|
|
|
AC_LANG_CPLUSPLUS
|
|
AC_TRY_COMPILE([#include <iostream.h>],
|
|
[ cout << "Hello World" << endl; ],,
|
|
AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
|
|
AC_LANG_RESTORE
|
|
|
|
# Determine compiler version
|
|
CC_VERSION=`"${CC}" -v 2>&1 | grep Version | sed -e 's|.* Version ||' | sed -e 's|[ ]*$||'`
|
|
_CC_MAJOR_VERSION=`echo ${CC_VERSION} | awk -F\. '{ print $ 1 }'`
|
|
|
|
CXX_VERSION=`"${CXX}" -v 2>&1 | grep Version | sed -e 's|.* Version ||' | sed -e 's|[ ]*$||'`
|
|
_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" = "12"; then
|
|
_CC_SUITE=6
|
|
elif test "$_CC_MAJOR_VERSION" = "13"; then
|
|
_CC_SUITE=7
|
|
else
|
|
AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
|
|
fi
|
|
|
|
# Check linker version
|
|
_LD_FULL_VERSION=`"${LD}" -v 2>&1 | grep Version | sed -e 's|.* Version ||' | sed -e 's|[ ]*$||'`
|
|
_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
|
|
|
|
# Check midl version
|
|
_MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | grep Version | sed -e 's|.* Version ||' | sed -e 's|[ ]*$||'`
|
|
_MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | awk -F\. '{ print $ 1 }'`
|
|
_MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | awk -F\. '{ print $ 2 }'`
|
|
_MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | awk -F\. '{ print $ 3 }'`
|
|
if test "$_MIDL_MAJOR_VERSION" != "5" -a "$_MIDL_FULL_VERSION" != "6.00.0347"; then
|
|
AC_MSG_ERROR([Midl version $_MIDL_FULL_VERSION was found. Midl version must be 5.x.x (VC6*) or 6.00.0347 (VC7).])
|
|
fi
|
|
fi # !GNU_CC
|
|
;;
|
|
esac
|
|
|
|
if test -n "$_WIN32_MSVC"; then
|
|
SKIP_PATH_CHECKS=1
|
|
SKIP_COMPILER_CHECKS=1
|
|
SKIP_LIBRARY_CHECKS=1
|
|
AC_CHECK_HEADERS(mmintrin.h)
|
|
fi
|
|
|
|
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_SUBST(GNU_AS)
|
|
AC_SUBST(GNU_LD)
|
|
AC_SUBST(GNU_CC)
|
|
AC_SUBST(GNU_CXX)
|
|
|
|
if test -z "$SKIP_PATH_CHECKS"; then
|
|
dnl ========================================================
|
|
dnl Checks for programs.
|
|
dnl ========================================================
|
|
AC_PROG_CPP
|
|
AC_PROG_CXXCPP
|
|
AC_PROG_INSTALL
|
|
AC_PROG_LN_S
|
|
AC_PROG_AWK
|
|
AC_CHECK_PROGS(PERL, $PERL perl5 perl )
|
|
if test -z "$PERL" || test "$PERL" = ":"; then
|
|
AC_MSG_ERROR([perl not found in \$PATH])
|
|
fi
|
|
|
|
AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
|
|
_perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
|
|
_perl_res=$?
|
|
AC_MSG_RESULT([$_perl_version])
|
|
|
|
if test "$_perl_res" != 0; then
|
|
AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
|
|
fi
|
|
|
|
AC_MSG_CHECKING([for full perl installation])
|
|
_perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
|
|
_perl_res=$?
|
|
if test "$_perl_res" != 0; then
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
|
|
else
|
|
AC_MSG_RESULT([yes])
|
|
fi
|
|
|
|
AC_PATH_PROG(DOXYGEN, doxygen, :)
|
|
AC_PATH_PROG(WHOAMI, whoami, :)
|
|
AC_PATH_PROG(AUTOCONF, autoconf, :)
|
|
AC_PATH_PROG(UNZIP, unzip, :)
|
|
AC_PATH_PROGS(ZIP, zip)
|
|
if test -z "$ZIP" || test "$ZIP" = ":"; then
|
|
AC_MSG_ERROR([zip not found in \$PATH])
|
|
fi
|
|
AC_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
|
|
AC_PATH_PROG(XARGS, xargs)
|
|
if test -z "$XARGS" || test "$XARGS" = ":"; then
|
|
AC_MSG_ERROR([xargs not found in \$PATH .])
|
|
fi
|
|
|
|
dnl Be sure the make we use is GNU make.
|
|
AC_PATH_PROGS(MAKE, gmake make, :)
|
|
_make_try=`$MAKE --version 2>/dev/null | grep GNU`
|
|
if test ! "$_make_try"
|
|
then
|
|
echo
|
|
echo "*** $MAKE is not GNU Make. You will not be able to build Mozilla without GNU Make."
|
|
echo
|
|
exit 1
|
|
fi
|
|
dnl Now exit if version if < MAKE_VERSION
|
|
rm -f dummy.mk
|
|
echo 'all: ; @echo $(MAKE_VERSION)' > dummy.mk
|
|
_make_vers=`$MAKE --no-print-directory -f dummy.mk all 2>/dev/null`
|
|
rm -f dummy.mk
|
|
_MAKE_MAJOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $1 }'`
|
|
_MAKE_MINOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $2 }'`
|
|
MAKE_MAJOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $1 }'`
|
|
MAKE_MINOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $2 }'`
|
|
if test "$_MAKE_MAJOR_VERSION" -lt "$MAKE_MAJOR_VERSION" || \
|
|
test "$_MAKE_MAJOR_VERSION" = "$MAKE_MAJOR_VERSION" -a \
|
|
"$_MAKE_MINOR_VERSION" -lt "$MAKE_MINOR_VERSION"; then
|
|
AC_MSG_ERROR([GNU Make $MAKE_VERSION or higher is required to build Mozilla.])
|
|
fi
|
|
|
|
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 # SKIP_PATH_CHECKS
|
|
|
|
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'
|
|
LIB_PREFIX=lib
|
|
DLL_SUFFIX=.so
|
|
OBJ_SUFFIX=o
|
|
LIB_SUFFIX=a
|
|
ASM_SUFFIX=s
|
|
TARGET_MD_ARCH=unix
|
|
DIRENT_INO=d_ino
|
|
CYGWIN_WRAPPER=
|
|
|
|
MOZ_JPEG_CFLAGS=
|
|
MOZ_JPEG_LIBS='-L$(DIST)/lib -lmozjpeg'
|
|
MOZ_ZLIB_CFLAGS=
|
|
MOZ_ZLIB_LIBS='-L$(DIST)/lib -lmozz'
|
|
MOZ_PNG_CFLAGS=
|
|
MOZ_PNG_LIBS='-L$(DIST)/lib -lmozpng'
|
|
MOZ_MNG_CFLAGS=
|
|
MOZ_MNG_LIBS='-L$(DIST)/lib -lmozmng'
|
|
|
|
MOZ_JS_LIBS='-L$(DIST)/bin -lmozjs'
|
|
XPCOM_LIBS='-L$(DIST)/bin -lxpcom'
|
|
|
|
MOZ_COMPONENT_NSPR_LIBS='-L$(DIST)/bin $(NSPR_LIBS)'
|
|
MOZ_COMPONENT_XPCOM_LIBS='$(XPCOM_LIBS)'
|
|
MOZ_XPCOM_OBSOLETE_LIBS='-L$(DIST)/lib -lxpcom_compat'
|
|
|
|
_PLATFORM_DEFAULT_TOOLKIT=gtk
|
|
MOZ_WIDGET_TOOLKIT_LDFLAGS='-lwidget_$(MOZ_WIDGET_TOOLKIT)'
|
|
MOZ_GFX_TOOLKIT_LDFLAGS='-lgfx_$(MOZ_WIDGET_TOOLKIT) $(MOZ_XLIBRGB_LDFLAGS)'
|
|
WIDGET_DLL='\"libwidget_$(MOZ_WIDGET_TOOLKIT)$(DLL_SUFFIX)\"'
|
|
GFXWIN_DLL='\"libgfx_$(MOZ_GFX_TOOLKIT)$(DLL_SUFFIX)\"'
|
|
|
|
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=
|
|
OS_TEST="${target_cpu}"
|
|
case "${target_os}" in
|
|
linux*) OS_ARCH=Linux ;;
|
|
solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
|
|
esac
|
|
else
|
|
OS_TARGET=`uname -s`
|
|
OS_ARCH=`uname -s | sed -e 's|/|_|g'`
|
|
OS_RELEASE=`uname -r`
|
|
OS_TEST=`uname -m`
|
|
fi
|
|
_COMPILER_PREFIX=
|
|
|
|
#######################################################################
|
|
# Master "Core Components" macros for getting the OS target #
|
|
#######################################################################
|
|
|
|
#
|
|
# Note: OS_TARGET should be specified on the command line for gmake.
|
|
# When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
|
|
# The difference between the Win95 target and the WinNT target is that
|
|
# the WinNT target uses Windows NT specific features not available
|
|
# in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
|
|
# at lesser performance (the Win95 target uses threads; the WinNT target
|
|
# uses fibers).
|
|
#
|
|
# When OS_TARGET=WIN16 is specified, then a Windows 3.11 (16bit) target
|
|
# is built. See: win16_3.11.mk for lots more about the Win16 target.
|
|
#
|
|
# If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
|
|
# cross-compilation.
|
|
#
|
|
|
|
#
|
|
# The following hack allows one to build on a WIN95 machine (as if
|
|
# s/he were cross-compiling on a WINNT host for a WIN95 target).
|
|
# It also accomodates for MKS's uname.exe. If you never intend
|
|
# to do development on a WIN95 machine, you don't need this hack.
|
|
#
|
|
if test "$OS_ARCH" = "WIN95"; then
|
|
OS_ARCH=WINNT
|
|
OS_TARGET=WIN95
|
|
elif test "$OS_ARCH" = 'Windows_95'; then
|
|
OS_ARCH=Windows_NT
|
|
OS_TARGET=WIN95
|
|
elif test "$OS_ARCH" = 'Windows_98'; then
|
|
OS_ARCH=Windows_NT
|
|
OS_TARGET=WIN95
|
|
elif test "`echo $OS_ARCH | egrep -c '^(CYGWIN_9|CYGWIN_ME)' 2>/dev/null`" != 0; then
|
|
OS_ARCH='CYGWIN_NT-4.0'
|
|
OS_TARGET=WIN95
|
|
elif test "$OS_ARCH" = "OS_2"; then
|
|
OS_ARCH=OS2
|
|
OS_TARGET=OS2
|
|
fi
|
|
|
|
#
|
|
# On WIN32, we also define the variable CPU_ARCH.
|
|
#
|
|
|
|
if test "$OS_ARCH" = "WINNT"; then
|
|
CPU_ARCH=`uname -p`
|
|
if test "$CPU_ARCH" = "I386"; then
|
|
CPU_ARCH=x86
|
|
fi
|
|
elif test "$OS_ARCH" = "Windows_NT"; then
|
|
#
|
|
# 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}"
|
|
CPU_ARCH=`uname -m`
|
|
#
|
|
# MKS's uname -m returns "586" on a Pentium machine.
|
|
#
|
|
if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
|
|
CPU_ARCH=x86
|
|
fi
|
|
elif echo "$OS_ARCH" | grep -c CYGWIN_NT >/dev/null; then
|
|
#
|
|
# If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
|
|
# the uname.exe in the Cygwin tools.
|
|
#
|
|
OS_RELEASE=`echo $OS_ARCH | sed 's|^CYGWIN_NT-||'`
|
|
OS_ARCH=WINNT
|
|
OS_TARGET=WINNT
|
|
CPU_ARCH=`uname -m`
|
|
#
|
|
# Cygwin's uname -m returns "i686" on a Pentium Pro machine.
|
|
#
|
|
if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
|
|
CPU_ARCH=x86
|
|
fi
|
|
elif test "$OS_ARCH" = "CYGWIN32_NT"; then
|
|
#
|
|
# 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.
|
|
#
|
|
OS_ARCH=WINNT
|
|
OS_TARGET=WINNT
|
|
CPU_ARCH=`uname -m`
|
|
#
|
|
# GNU-Win32's uname -m returns "i686" on a Pentium Pro machine.
|
|
#
|
|
if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
|
|
CPU_ARCH=x86
|
|
fi
|
|
fi
|
|
|
|
if test -z "$OS_TARGET"; then
|
|
OS_TARGET=$OS_ARCH
|
|
fi
|
|
if test "$OS_TARGET" = "WIN95"; then
|
|
OS_RELEASE="4.0"
|
|
fi
|
|
if test "$OS_TARGET" = "WIN16"; then
|
|
OS_RELEASE=
|
|
fi
|
|
OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
|
|
|
|
dnl ========================================================
|
|
dnl GNU specific defaults
|
|
dnl ========================================================
|
|
if test "$GNU_CC"; then
|
|
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
|
|
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
|
|
DSO_LDOPTS='-shared -Wl,-h -Wl,$@'
|
|
DSO_CFLAGS=''
|
|
DSO_PIC_CFLAGS='-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
|
|
# -Wconversion - complained when char's or short's were used a function args
|
|
# -Wshadow - removed because it generates more noise than help --pete
|
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith -Wcast-align"
|
|
|
|
dnl Turn pedantic on but disable the warnings for long long
|
|
_PEDANTIC=1
|
|
_IGNORE_LONG_LONG_WARNINGS=1
|
|
|
|
_DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
|
|
_USE_CPP_INCLUDE_FLAG=1
|
|
else
|
|
MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
|
|
MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
|
|
DSO_LDOPTS='-shared -h $@'
|
|
DSO_CFLAGS=''
|
|
DSO_PIC_CFLAGS='-KPIC'
|
|
_DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
|
|
fi
|
|
|
|
if test "$GNU_CXX"; then
|
|
# Turn on GNU specific features
|
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy"
|
|
|
|
_DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
|
|
_USE_CPP_INCLUDE_FLAG=1
|
|
else
|
|
_DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
|
|
fi
|
|
|
|
dnl gcc can come with its own linker so it is better to use the pass-thru calls
|
|
dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
|
|
dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
|
|
dnl normal behavior.
|
|
dnl ========================================================
|
|
MKSHLIB_FORCE_ALL=
|
|
MKSHLIB_UNFORCE_ALL=
|
|
if test "$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
|
|
|
|
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*|*mksnt*|*msvc*)
|
|
if test -n "$_WIN32_MSVC"; then
|
|
HOST_CFLAGS="$HOST_CFLAGS -TC -nologo"
|
|
fi
|
|
HOST_CFLAGS="$HOST_CFLAGS -DXP_PC -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
|
|
HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
|
|
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
|
|
;;
|
|
|
|
*-darwin*)
|
|
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
|
|
HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
|
|
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
|
|
;;
|
|
|
|
*-linux*)
|
|
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"
|
|
HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
|
|
HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
|
|
;;
|
|
|
|
*-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*)
|
|
if test ! "$GNU_CC"; then
|
|
# DSO_LDOPTS='-ldl -bM:SRE -p1 -brtl -bso -bexpall -bnoentry'
|
|
DSO_LDOPTS='-ldl -p1 -brtl -bso -bsymbolic -bnortllib'
|
|
DSO_CFLAGS='-qflag=w:w'
|
|
DSO_PIC_CFLAGS='-DPIC'
|
|
fi
|
|
case "${target_os}" in
|
|
aix4.1*)
|
|
DLL_SUFFIX='_shr.a'
|
|
;;
|
|
esac
|
|
MKSHLIB='$(AIX_SHLIB_BIN) $(DSO_LDOPTS) -o $@'
|
|
MKCSHLIB='$(AIX_SHLIB_BIN) $(DSO_LDOPTS) -o $@'
|
|
AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
|
|
;;
|
|
|
|
*-beos*)
|
|
no_x=yes
|
|
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
|
|
_PLATFORM_DEFAULT_TOOLKIT="beos"
|
|
DSO_LDOPTS='-nostart -Wl,-h -Wl,$@'
|
|
TK_LIBS='-lbe -lroot'
|
|
LIBS="$LIBS -lbe"
|
|
AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
|
|
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
|
|
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
|
|
_MOZ_USE_RTTI=1
|
|
;;
|
|
|
|
*-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*)
|
|
_PEDANTIC=
|
|
CFLAGS="$CFLAGS -fpascal-strings -traditional-cpp -fno-common"
|
|
CXXFLAGS="$CXXFLAGS -fpascal-strings -traditional-cpp -fno-common"
|
|
DLL_SUFFIX=".dylib"
|
|
DSO_LDOPTS=''
|
|
STRIP="$STRIP -x -S"
|
|
case "${target_cpu}" in
|
|
powerpc*)
|
|
_PLATFORM_DEFAULT_TOOLKIT='mac'
|
|
DSO_LDOPTS="$DSO_LDOPTS -arch ppc"
|
|
MOZ_ENABLE_POSTSCRIPT=
|
|
# set MACOSX to generate lib/mac/MoreFiles/Makefile
|
|
MACOSX=1
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
*-freebsd*)
|
|
if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` != "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 -L$(DIST)/bin'
|
|
DSO_CFLAGS=""
|
|
DSO_PIC_CFLAGS="+Z"
|
|
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
|
|
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
|
|
else
|
|
DSO_LDOPTS='-b -E +s -L$(DIST)/bin -L$(DIST)/lib'
|
|
MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
|
|
MKCSHLIB='$(LD) $(DSO_LDOPTS) -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_FORCE_ALL='-Wl,-all'
|
|
MKSHLIB_UNFORCE_ALL='-Wl,-none'
|
|
CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
|
|
else
|
|
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
|
|
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)
|
|
fi
|
|
if test -z "$GNU_CXX"; then
|
|
MIPSPRO_CXX=1
|
|
fi
|
|
;;
|
|
|
|
*-*linux*)
|
|
AC_DEFINE(_POSIX_SOURCE)
|
|
AC_DEFINE(_SVID_SOURCE)
|
|
TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
|
|
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)
|
|
|
|
case "${target_cpu}" in
|
|
alpha*)
|
|
CFLAGS="$CFLAGS -mieee"
|
|
CXXFLAGS="$CXXFLAGS -mieee"
|
|
;;
|
|
i?86)
|
|
USE_ELF_DYNSTR_GC=1
|
|
MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
|
|
;;
|
|
mips*)
|
|
CFLAGS="$CFLAGS -Wa,-xgot"
|
|
CXXFLAGS="$CXXFLAGS -Wa,-xgot"
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
*-mingw*|*-cygwin*|*-msvc*|*-mksnt*)
|
|
CYGWIN_WRAPPER="sh ${srcdir}/build/cygwin-wrapper"
|
|
if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
|
|
_pwd=`pwd`
|
|
CYGWIN_WRAPPER="sh ${_pwd}/${srcdir}/build/cygwin-wrapper"
|
|
fi
|
|
if test -z "$PERL"; then
|
|
PERL=perl
|
|
fi
|
|
_WIN32_PERL=$PERL
|
|
if test "`${PERL} -v | grep -c cygwin 2>/dev/null`" != 0; then
|
|
PERL="${CYGWIN_WRAPPER} -up ${PERL}"
|
|
_CYGWIN_PERL=1
|
|
fi
|
|
DSO_CFLAGS=
|
|
DSO_PIC_CFLAGS=
|
|
DLL_SUFFIX=.dll
|
|
RC='$(CYGWIN_WRAPPER) rc.exe'
|
|
if test -n "$GNU_CC"; then
|
|
CC="$CC -mno-cygwin"
|
|
CXX="$CXX -mno-cygwin"
|
|
CFLAGS="$CFLAGS -mms-bitfields"
|
|
CXXFLAGS="$CXXFLAGS -mms-bitfields"
|
|
DSO_LDOPTS='-shared -Wl,--export-all-symbols -Wl,--out-implib -Wl,$(IMPORT_LIBRARY)'
|
|
MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
|
|
MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
|
|
RC='$(CYGWIN_WRAPPER) $(WINDRES)'
|
|
RCFLAGS='-O coff'
|
|
MOZ_JPEG_LIBS='-L$(DIST)/lib -ljpeg$(MOZ_BITS)$(VERSION_NUMBER)'
|
|
MOZ_ZLIB_LIBS='-L$(DIST)/lib -lmozz'
|
|
MOZ_PNG_LIBS='-L$(DIST)/lib -lpng'
|
|
MOZ_MNG_LIBS='-L$(DIST)/lib -lmng'
|
|
MOZ_JS_LIBS='-L$(DIST)/lib -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
|
|
XPCOM_LIBS='-L$(DIST)/lib -lxpcom'
|
|
else
|
|
CYGWIN_WRAPPER="sh ${srcdir}/build/cygwin-wrapper"
|
|
if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
|
|
_pwd=`pwd`
|
|
CYGWIN_WRAPPER="sh ${_pwd}/${srcdir}/build/cygwin-wrapper"
|
|
fi
|
|
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
|
|
LIB_PREFIX=
|
|
MKSHLIB='$(LD) /NOLOGO /DLL /OUT:$@ /PDB:$(PDBFILE) $(DSO_LDOPTS)'
|
|
MKCSHLIB='$(LD) /NOLOGO /DLL /OUT:$@ /PDB:$(PDBFILE) $(DSO_LDOPTS)'
|
|
MKSHLIB_FORCE_ALL=
|
|
MKSHLIB_UNFORCE_ALL=
|
|
DSO_LDOPTS=/SUBSYSTEM:WINDOWS
|
|
CFLAGS="$CFLAGS -W3 -nologo -Gy -Fd\$(PDBFILE)"
|
|
CXXFLAGS="$CXXFLAGS -W3 -nologo -Gy -Fd\$(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'
|
|
MOZ_OPTIMIZE_FLAGS='-O1'
|
|
MOZ_JPEG_LIBS='$(DIST)/lib/jpeg$(MOZ_BITS)$(VERSION_NUMBER).lib'
|
|
MOZ_ZLIB_LIBS='$(DIST)/lib/mozz.lib'
|
|
MOZ_PNG_LIBS='$(DIST)/lib/png.lib'
|
|
MOZ_MNG_LIBS='$(DIST)/lib/mng.lib'
|
|
MOZ_JS_LIBS='$(DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
|
|
XPCOM_LIBS='$(DIST)/lib/xpcom.lib'
|
|
MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
|
|
MOZ_COMPONENT_XPCOM_LIBS='$(XPCOM_LIBS)'
|
|
MOZ_XPCOM_OBSOLETE_LIBS='$(DIST)/lib/xpcom_compat.lib'
|
|
fi
|
|
AC_DEFINE(HAVE_SNPRINTF)
|
|
AC_DEFINE(_WINDOWS)
|
|
AC_DEFINE(_WIN32)
|
|
AC_DEFINE(WIN32)
|
|
AC_DEFINE(XP_PC)
|
|
AC_DEFINE(XP_WIN)
|
|
AC_DEFINE(XP_WIN32)
|
|
AC_DEFINE(HW_THREADS)
|
|
AC_DEFINE_UNQUOTED(WINVER,0x400)
|
|
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=
|
|
|
|
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 Remove cygwinism from MOZ_BUILD_ROOT
|
|
MOZ_BUILD_ROOT=`cygpath -w $MOZ_BUILD_ROOT | sed -e 's|\\\\|/|g'`
|
|
|
|
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 | sed -e 's|\\\\|/|g'`
|
|
|
|
if test -n "$GLIB_PREFIX"; then
|
|
_GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd`
|
|
if test "$?" = "0"; then
|
|
if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
|
|
AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
|
|
fi
|
|
_GLIB_PREFIX_DIR=`cygpath -w $_GLIB_PREFIX_DIR | sed -e 's|\\\\|/|g'`
|
|
else
|
|
AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
|
|
fi
|
|
else
|
|
_GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
|
|
fi
|
|
if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
|
|
AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
|
|
fi
|
|
GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
|
|
GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
|
|
|
|
if test -n "$LIBIDL_PREFIX"; then
|
|
_LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd`
|
|
if test "$?" = "0"; then
|
|
if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
|
|
AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
|
|
fi
|
|
_LIBIDL_PREFIX_DIR=`cygpath -w $_LIBIDL_PREFIX_DIR | sed -e 's|\\\\|/|g'`
|
|
else
|
|
AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
|
|
fi
|
|
else
|
|
_LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
|
|
fi
|
|
if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
|
|
AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
|
|
fi
|
|
LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include"
|
|
LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib ${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
|
|
|
|
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 -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX)'
|
|
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
|
|
;;
|
|
|
|
*-nto*)
|
|
AC_DEFINE(NTO)
|
|
AC_DEFINE(_QNX_SOURCE)
|
|
AC_DEFINE(_i386)
|
|
OS_TARGET=NTO
|
|
MOZ_OPTIMIZE_FLAGS="-O"
|
|
MOZ_DEBUG_FLAGS="-gstabs"
|
|
USE_PTHREADS=1
|
|
_PEDANTIC=
|
|
LIBS="$LIBS -lsocket -lstdc++"
|
|
_DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
|
|
_DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
|
|
if test "$with_x" != "yes"
|
|
then
|
|
_PLATFORM_DEFAULT_TOOLKIT="photon"
|
|
AC_DEFINE(NO_X11)
|
|
TK_CFLAGS='-I/usr/include/photon'
|
|
TK_LIBS='-lph'
|
|
no_x="yes"
|
|
fi
|
|
case "${target_cpu}" in
|
|
ppc*)
|
|
AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
|
|
;;
|
|
esac
|
|
case "${host_cpu}" in
|
|
i?86)
|
|
USE_ELF_DYNSTR_GC=1
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
*-openbsd*)
|
|
DLL_SUFFIX=".so.1.0"
|
|
DSO_CFLAGS=''
|
|
DSO_PIC_CFLAGS='-fPIC'
|
|
DSO_LDOPTS='-shared -h $@'
|
|
MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
|
|
MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
|
|
if $CC -E - -dM </dev/null | grep -v __ELF__ >/dev/null; then
|
|
DSO_LDOPTS="-Bshareable /usr/lib/c++rt0.o"
|
|
fi
|
|
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=
|
|
COMPAQ_CXX=1
|
|
;;
|
|
|
|
|
|
*-os2*)
|
|
MOZ_BUILD_ROOT=`pwd -D`
|
|
USE_SHORT_LIBNAME=1
|
|
BIN_SUFFIX='.exe'
|
|
OBJ_SUFFIX=obj
|
|
LIB_SUFFIX=lib
|
|
DLL_SUFFIX=.dll
|
|
ASM_SUFFIX=asm
|
|
LD='$(CC)'
|
|
DSO_CFLAGS=''
|
|
DSO_PIC_CFLAGS=''
|
|
OS_ARCH=OS2
|
|
OS_TARGET=OS2
|
|
_PLATFORM_DEFAULT_TOOLKIT=os2
|
|
MOZ_WIDGET_TOOLKIT_LDFLAGS='$(DIST)/lib/wdgt$(MOZ_WIDGET_TOOLKIT)'
|
|
MOZ_GFX_TOOLKIT_LDFLAGS='$(DIST)/lib/gfx_$(MOZ_WIDGET_TOOLKIT)'
|
|
WIDGET_DLL='\"wdgt$(MOZ_WIDGET_TOOLKIT)$(DLL_SUFFIX)\"'
|
|
GFXWIN_DLL='\"gfx_$(MOZ_GFX_TOOLKIT)$(DLL_SUFFIX)\"'
|
|
MOZ_ENABLE_POSTSCRIPT=
|
|
RC=rc.exe
|
|
RCFLAGS='-n -x2'
|
|
|
|
if test "$MOZTOOLS"; then
|
|
MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
|
|
else
|
|
AC_MSG_ERROR([MOZTOOLS is not set])
|
|
fi
|
|
|
|
# EMX/GCC build
|
|
if test "$GNU_CC"; then
|
|
_PEDANTIC=''
|
|
AR=emxomfar
|
|
AR_FLAGS='-p256 r $@'
|
|
CFLAGS="-Zmtd -Zomf $CFLAGS"
|
|
CXXFLAGS="-Zmtd -Zomf $CXXFLAGS"
|
|
DSO_LDOPTS='-Zomf -Zdll -Zmt -Zcrtdll -Zlinker /NOO'
|
|
BIN_FLAGS='-Zlinker /PM:VIO -Zlinker /ST:0x30000'
|
|
IMPLIB='emximp -o'
|
|
FILTER='emxexp'
|
|
LIB_PREFIX=lib
|
|
AC_DEFINE(OS2)
|
|
AC_DEFINE(XP_OS2_EMX)
|
|
AC_DEFINE(OS2EMX_PLAIN_CHAR)
|
|
MOZ_COMPONENT_NSPR_LIBS='-L$(DIST)/lib $(NSPR_LIBS)'
|
|
MOZ_COMPONENT_XPCOM_LIBS='-L$(DIST)/lib $(DIST)/lib/xpcom.lib'
|
|
MOZ_XPCOM_OBSOLETE_LIBS='-L$(DIST)/lib $(DIST)/lib/xpcom_compat.lib'
|
|
XPCOM_LIBS='-L$(DIST)/lib -lxpcom'
|
|
MOZ_JS_LIBS='$(DIST)/lib/libmozjs.lib'
|
|
MOZ_COMPONENT_XPCOM_LIBS='$(DIST)/lib/libxpcom.lib'
|
|
XPCOM_LIBS='$(DIST)/lib/libxpcom.lib'
|
|
MOZ_JPEG_LIBS='$(DIST)/lib/libmozjpeg.$(LIB_SUFFIX)'
|
|
MOZ_ZLIB_LIBS='$(DIST)/lib/libmozz.$(LIB_SUFFIX)'
|
|
MOZ_PNG_LIBS='$(DIST)/lib/libmozpng.$(LIB_SUFFIX)'
|
|
MOZ_MNG_LIBS='$(DIST)/lib/libmozmng.$(LIB_SUFFIX)'
|
|
fi
|
|
|
|
# Visual Age C++ build
|
|
if test "$VACPP" = "yes"; then
|
|
# MOZ_BUILD_ROOT="$ROOT"`pwd -D`
|
|
AR=-ilib
|
|
AR_FLAGS='/NOL /NOI /O:$(subst /,\\,$@)'
|
|
AR_LIST='/L'
|
|
AR_EXTRACT='-*'
|
|
AR_DELETE='-'
|
|
AS=alp
|
|
ASFLAGS='-Mb'
|
|
AS_DASH_C_FLAG=''
|
|
LD='-ilink'
|
|
TARGET_MD_ARCH=os2
|
|
CFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9"
|
|
CXXFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9 /Gx+"
|
|
MOZ_DEBUG_FLAGS="/Ti+"
|
|
MOZ_OPTIMIZE_FLAGS="/O+ /Gl+ /G5 /qarch=pentium"
|
|
LDFLAGS="/NOL /M"
|
|
MOZ_DEBUG_LDFLAGS="/DE"
|
|
MOZ_OPTIMIZE_LDFLAGS="/OPTFUNC /EXEPACK:2 /PACKCODE /PACKDATA"
|
|
DSO_LDOPTS=''
|
|
IMPLIB='implib /NOL /NOI'
|
|
FILTER='cppfilt -q -B -P'
|
|
LIB_PREFIX=
|
|
AC_DEFINE(NO_ANSI_KEYWORDS)
|
|
AC_DEFINE(OS2,4)
|
|
AC_DEFINE(_X86_)
|
|
AC_DEFINE(XP_OS2_VACPP)
|
|
AC_DEFINE(TCPV40HDRS)
|
|
AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
|
|
AC_DEFINE(STDC_HEADERS)
|
|
MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
|
|
MKSHLIB='$(LD) $(DSO_LDOPTS)'
|
|
MKCSHLIB='$(LD) $(DSO_LDOPTS)'
|
|
MOZ_JS_LIBS='$(DIST)/lib/mozjs.lib'
|
|
MOZ_COMPONENT_XPCOM_LIBS='$(DIST)/lib/xpcom.lib'
|
|
MOZ_XPCOM_OBSOLETE_LIBS='$(DIST)/lib/xpcom_compat.lib'
|
|
XPCOM_LIBS='$(DIST)/lib/xpcom.lib'
|
|
MOZ_JPEG_LIBS='$(DIST)/lib/mozjpeg.$(LIB_SUFFIX)'
|
|
MOZ_ZLIB_LIBS='$(DIST)/lib/mozz.$(LIB_SUFFIX)'
|
|
MOZ_PNG_LIBS='$(DIST)/lib/mozpng.$(LIB_SUFFIX)'
|
|
MOZ_MNG_LIBS='$(DIST)/lib/mozmng.$(LIB_SUFFIX)'
|
|
fi
|
|
;;
|
|
|
|
alpha*-*-osf*)
|
|
if test "$GNU_CC"; then
|
|
DSO_LDOPTS='-shared -Wl,-soname -Wl,$@'
|
|
else
|
|
MOZ_DEBUG_FLAGS='-g3'
|
|
ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g -std1'
|
|
CFLAGS="$CFLAGS -std1 -ieee"
|
|
CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
|
|
DSO_LDOPTS='-shared -msym -expect_unresolved \* -soname $@ -update_registry $(DIST)/so_locations'
|
|
DSO_CFLAGS=
|
|
DSO_PIC_CFLAGS=
|
|
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
|
|
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -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'
|
|
AC_DEFINE(NO_X11)
|
|
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 -h $@'
|
|
fi
|
|
;;
|
|
|
|
dnl the qsort routine under solaris is faulty
|
|
*-solaris*)
|
|
AC_DEFINE(SOLARIS)
|
|
TARGET_NSPR_MDCPUCFG='\"md/_solaris32.cfg\"'
|
|
SYSTEM_MAKEDEPEND=
|
|
if test -z "$GNU_CC"; then
|
|
NS_USE_NATIVE=1
|
|
AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
|
|
CFLAGS="$CFLAGS -xstrconst -xbuiltin=%all"
|
|
CXXFLAGS="$CXXFLAGS -xbuiltin=%all"
|
|
LDFLAGS="-xildoff -zlazyload -zcombreloc $LDFLAGS"
|
|
MOZ_OPTIMIZE_FLAGS="-xO4"
|
|
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -o $@'
|
|
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -o $@'
|
|
MKSHLIB_FORCE_ALL='-Qoption ld -z,allextract'
|
|
MKSHLIB_UNFORCE_ALL=''
|
|
DSO_LDOPTS='-G -Qoption ld -z,muldefs -h $@'
|
|
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=''
|
|
else
|
|
ASFLAGS="$ASFLAGS -fPIC"
|
|
DSO_LDOPTS='-G -h $@'
|
|
_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"
|
|
;;
|
|
|
|
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*|*-mksnt*|*-mingw*|*-cygwin*)
|
|
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*)
|
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
|
|
;;
|
|
*-solaris*)
|
|
if test -z "$GNU_LD"; then
|
|
if test -z "$GNU_CC"; then
|
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
|
|
else
|
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
|
|
fi
|
|
fi
|
|
;;
|
|
*-nto*)
|
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
|
|
;;
|
|
*-darwin*)
|
|
AC_MSG_CHECKING(for -exported_symbols_list option to ld)
|
|
AC_CACHE_VAL(ac_cv_exported_symbols_list,
|
|
[
|
|
if $LD -exported_symbols_list | grep "argument missing" >/dev/null; then
|
|
ac_cv_exported_symbols_list=true
|
|
else
|
|
ac_cv_exported_symbols_list=false
|
|
fi
|
|
])
|
|
if test "$ac_cv_exported_symbols_list" = true; then
|
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
;;
|
|
*-cygwin*|*-mingw*|*-mksnt|*-msvc)
|
|
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 "$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_TYPE_UID_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 Visual Age for os/2 also defines size_t and off_t in certain
|
|
dnl header files. These defines make Visual Age use the mozilla
|
|
dnl defines types.
|
|
if test "$VACPP" = "yes"; then
|
|
AC_DEFINE(__size_t)
|
|
AC_DEFINE(__off_t)
|
|
fi
|
|
|
|
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
|
|
|
|
AC_MSG_CHECKING(for 64-bit OS)
|
|
AC_TRY_RUN([ int main () {
|
|
if (sizeof(long) == 8) { return 0; } return 1; } ],
|
|
result="yes", result="no", result="maybe" )
|
|
AC_MSG_RESULT("$result")
|
|
if test "$result" = "yes"; then
|
|
AC_DEFINE(HAVE_64BIT_OS)
|
|
HAVE_64BIT_OS=1
|
|
fi
|
|
AC_SUBST(HAVE_64BIT_OS)
|
|
|
|
if test "$HAVE_64BIT_OS"; then
|
|
case "$target_os" in
|
|
solaris*) TARGET_NSPR_MDCPUCFG='\"md/_solaris64.cfg\"' ;;
|
|
esac
|
|
fi
|
|
|
|
dnl Check for usable wchar_t (2 bytes, unsigned)
|
|
dnl (we really don't need the unsignedness check anymore)
|
|
dnl ========================================================
|
|
|
|
AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
|
|
ac_cv_have_usable_wchar,
|
|
[AC_TRY_RUN([#include <stddef.h>
|
|
int main () {
|
|
return (sizeof(wchar_t) != 2) ||
|
|
(wchar_t)-1 < (wchar_t) 0 ; } ],
|
|
ac_cv_have_usable_wchar="yes",
|
|
ac_cv_have_usable_wchar="no",
|
|
ac_cv_have_usable_wchar="maybe")])
|
|
if test "$ac_cv_have_usable_wchar" = "yes"; then
|
|
AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
|
|
HAVE_CPP_2BYTE_WCHAR_T=1
|
|
else
|
|
dnl This is really gcc-only
|
|
dnl Do this test using CXX only since some versions of gcc
|
|
dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
|
|
dnl only have short-wchar support for c++.
|
|
dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
|
|
|
|
AC_LANG_SAVE
|
|
AC_LANG_CPLUSPLUS
|
|
_SAVE_CXXFLAGS=$CXXFLAGS
|
|
CXXFLAGS="$CXXFLAGS -fshort-wchar"
|
|
|
|
AC_CACHE_CHECK(for compiler -fshort-wchar option,
|
|
ac_cv_have_usable_wchar_option,
|
|
[AC_TRY_RUN([#include <stddef.h>
|
|
int main () {
|
|
return (sizeof(wchar_t) != 2) ||
|
|
(wchar_t)-1 < (wchar_t) 0 ; } ],
|
|
ac_cv_have_usable_wchar_option="yes",
|
|
ac_cv_have_usable_wchar_option="no",
|
|
ac_cv_have_usable_wchar_option="maybe")])
|
|
|
|
if test "$ac_cv_have_usable_wchar_option" = "yes"; then
|
|
AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
|
|
HAVE_CPP_2BYTE_WCHAR_T=1
|
|
else
|
|
CXXFLAGS=$_SAVE_CXXFLAGS
|
|
fi
|
|
AC_LANG_RESTORE
|
|
fi
|
|
|
|
dnl check for wcrtomb/mbrtowc
|
|
dnl =======================================================================
|
|
|
|
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_C
|
|
|
|
dnl Checks for header files.
|
|
dnl ========================================================
|
|
AC_HEADER_DIRENT
|
|
dnl -ldir is a noop for OS/2
|
|
case "$target_os" in
|
|
os2*)
|
|
LIBS=
|
|
;;
|
|
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
|
|
|
|
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
|
|
AC_CHECK_LIB(m, atan)
|
|
|
|
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.
|
|
|
|
case $target in
|
|
*-darwin*)
|
|
;;
|
|
*)
|
|
AC_CHECK_LIB(dl, dlopen)
|
|
;;
|
|
esac
|
|
if test ! "$GNU_CXX"; then
|
|
|
|
case $target in
|
|
*-aix*)
|
|
AC_CHECK_LIB(C_r, demangle)
|
|
;;
|
|
*)
|
|
AC_CHECK_LIB(C, demangle)
|
|
;;
|
|
esac
|
|
fi
|
|
AC_CHECK_LIB(socket, socket)
|
|
|
|
XLDFLAGS="$X_LIBS"
|
|
XLIBS="$X_EXTRA_LIBS"
|
|
|
|
dnl ========================================================
|
|
dnl Checks for X libraries.
|
|
dnl Ordering is important.
|
|
dnl Xt is dependent upon SM as of X11R6
|
|
dnl ========================================================
|
|
if test "$no_x" = "yes"; then
|
|
AC_DEFINE(NO_X11)
|
|
else
|
|
AC_DEFINE_UNQUOTED(FUNCPROTO,15)
|
|
XLIBS="-lX11 $XLIBS"
|
|
_SAVE_LDFLAGS="$LDFLAGS"
|
|
LDFLAGS="$XLDFLAGS $LDFLAGS"
|
|
AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
|
|
[MISSING_X="$MISSING_X -lX11"], $XLIBS)
|
|
AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
|
|
[MISSING_X="$MISSING_X -lXext"], $XLIBS)
|
|
|
|
|
|
AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
|
|
unset ac_cv_lib_Xt_XtFree
|
|
AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
|
|
AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
|
|
AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
|
|
[MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
|
|
])
|
|
|
|
# AIX needs the motif library linked before libXt to prevent
|
|
# crashes in plugins linked against Motif - Bug #98892
|
|
case "${target_os}" in
|
|
aix*)
|
|
XT_LIBS="-lXm $XT_LIBS"
|
|
;;
|
|
esac
|
|
|
|
AC_SUBST(XT_LIBS)
|
|
dnl ========================================================
|
|
dnl = Check for Xinerama
|
|
dnl ========================================================
|
|
AC_CHECK_LIB(Xinerama, XineramaIsActive, [MOZ_XINERAMA_LIBS="-lXinerama"],,
|
|
$XLIBS $XEXT_LIBS)
|
|
AC_CHECK_HEADER(X11/extensions/Xinerama.h)
|
|
|
|
dnl ========================================================
|
|
dnl = Check for XShm
|
|
dnl ========================================================
|
|
AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
|
|
$XLIBS $XEXT_LIBS)
|
|
AC_CHECK_HEADER(X11/extensions/XShm.h)
|
|
if test -n "$ac_cv_header_X11_extensions_XShm_h" &&
|
|
test -n "$_HAVE_XSHM_XEXT"; then
|
|
AC_DEFINE(HAVE_XSHM)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Check for XIE
|
|
dnl ========================================================
|
|
AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
|
|
$XLIBS $XEXT_LIBS)
|
|
AC_CHECK_HEADER(X11/extensions/XIElib.h)
|
|
|
|
if test "$MOZ_XIE_LIBS"; then
|
|
dnl ====================================================
|
|
dnl = If XIE is present and is desired, turn it on
|
|
dnl ====================================================
|
|
case $target in
|
|
*-hpux*)
|
|
;;
|
|
*)
|
|
HAVE_XIE=1
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
LDFLAGS="$_SAVE_LDFLAGS"
|
|
|
|
dnl ====================================================
|
|
dnl = Check if X headers exist
|
|
dnl ====================================================
|
|
_SAVE_CFLAGS=$CFLAGS
|
|
CFLAGS="$CFLAGS $XCFLAGS"
|
|
AC_TRY_COMPILE([
|
|
#include <stdio.h>
|
|
#include <X11/Xlib.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"
|
|
|
|
fi # $no_x
|
|
|
|
AC_SUBST(XCFLAGS)
|
|
AC_SUBST(XLDFLAGS)
|
|
AC_SUBST(XLIBS)
|
|
|
|
dnl ========================================================
|
|
dnl = pthread support
|
|
dnl = Start by checking whether the system support pthreads
|
|
dnl ========================================================
|
|
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
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
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=""
|
|
else
|
|
_PTHREAD_LDFLAGS="-lc_r"
|
|
fi
|
|
;;
|
|
|
|
*-*-linux*)
|
|
AC_DEFINE(_REENTRANT)
|
|
;;
|
|
|
|
*-*-nto*)
|
|
AC_DEFINE(_REENTRANT)
|
|
;;
|
|
|
|
*-aix4.3*|*-aix5*)
|
|
AC_DEFINE(_REENTRANT)
|
|
;;
|
|
|
|
*-hpux11.*)
|
|
AC_DEFINE(_REENTRANT)
|
|
;;
|
|
|
|
*-*-os2*)
|
|
USE_PTHREADS=
|
|
_PTHREAD_LDFLAGS=
|
|
;;
|
|
|
|
alpha*-*-osf*)
|
|
AC_DEFINE(_REENTRANT)
|
|
;;
|
|
|
|
*-*-solaris*)
|
|
AC_DEFINE(_REENTRANT)
|
|
if test ! "$GNU_CC"; then
|
|
CFLAGS="$CFLAGS -mt"
|
|
CXXFLAGS="$CXXFLAGS -mt"
|
|
fi
|
|
;;
|
|
*-*-netbsd*)
|
|
USE_PTHREADS=
|
|
_PTHREAD_LDFLAGS=
|
|
esac
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Check for MacOS deployment target version
|
|
dnl ========================================================
|
|
|
|
MOZ_ARG_ENABLE_STRING(macos-target,
|
|
[ --enable-macos-target=VER (default=10.1)
|
|
Set the minimum MacOS version needed at runtime],
|
|
[MACOS_DEPLOYMENT_TARGET_STR=$enableval],
|
|
[MACOS_DEPLOYMENT_TARGET_STR=10.1])
|
|
|
|
case "$target" in
|
|
*-darwin*)
|
|
dnl The C preprocessor can only handle integers in comparisons, so convert
|
|
dnl the version to the form AABBCC where AA=major release, BB=minor release,
|
|
dnl and CC=point/micro release.
|
|
|
|
MACOS_VERSION_MAJOR=`echo $MACOS_DEPLOYMENT_TARGET_STR | cut -d . -f 1`
|
|
MACOS_VERSION_MINOR=`echo $MACOS_DEPLOYMENT_TARGET_STR | cut -d . -f 2`
|
|
MACOS_VERSION_MICRO=`echo $MACOS_DEPLOYMENT_TARGET_STR | cut -d . -f 3`
|
|
if test -z "$MACOS_VERSION_MINOR"; then
|
|
MACOS_VERSION_MINOR=0
|
|
fi
|
|
if test -z "$MACOS_VERSION_MICRO"; then
|
|
MACOS_VERSION_MICRO=0
|
|
fi
|
|
|
|
MACOS_DEPLOYMENT_TARGET=`printf "%02d%02d%02d" "$MACOS_VERSION_MAJOR" "$MACOS_VERSION_MINOR" "$MACOS_VERSION_MICRO"`
|
|
AC_DEFINE_UNQUOTED(MACOS_DEPLOYMENT_TARGET, $MACOS_DEPLOYMENT_TARGET)
|
|
;;
|
|
*)
|
|
MACOS_DEPLOYMENT_TARGET=
|
|
;;
|
|
esac
|
|
|
|
AC_SUBST(MACOS_DEPLOYMENT_TARGET)
|
|
|
|
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(random strerror lchown fchmod snprintf statvfs memmove rint)
|
|
AC_CHECK_FUNCS(nl_langinfo flockfile)
|
|
|
|
dnl localtime_r and strtok_r are only present on MacOS version 10.2 and higher
|
|
if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100200"; then
|
|
AC_CHECK_FUNCS(localtime_r strtok_r)
|
|
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*|mksnt*|cygwin*|mingw*)
|
|
;;
|
|
*)
|
|
|
|
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)
|
|
XPCOM_LIBS="$XPCOM_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`
|
|
rm -f conftest* /tmp/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("./../tmp/conftest1.so",RTLD_LAZY);
|
|
dlopen("/tmp/conftest1.so",RTLD_LAZY);
|
|
dlopen("/tmp/../tmp/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
|
|
|
|
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 /tmp
|
|
cd /tmp
|
|
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 -f conftest* /tmp/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
|
|
HAVE_GCC3_ABI=1
|
|
fi
|
|
fi
|
|
AC_SUBST(HAVE_GCC3_ABI)
|
|
|
|
|
|
AC_MSG_CHECKING(for ios::binary)
|
|
AC_CACHE_VAL(ac_cv_ios_binary,
|
|
[AC_TRY_COMPILE([#include <iostream.h>]
|
|
[#include <fstream.h>],
|
|
[char *buffer = "config.log";
|
|
fstream *mFileStream=new fstream(buffer, ios::binary);],
|
|
[ac_cv_ios_binary=true],
|
|
[ac_cv_ios_binary=false])])
|
|
if test "$ac_cv_ios_binary" = true ; then
|
|
AC_DEFINE(HAVE_IOS_BINARY)
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
|
|
AC_MSG_CHECKING(for ios::bin)
|
|
AC_CACHE_VAL(ac_cv_ios_bin,
|
|
[AC_TRY_COMPILE([#include <iostream.h>]
|
|
[#include <fstream.h>],
|
|
[char *buffer = "config.log";
|
|
fstream *mFileStream=new fstream(buffer, ios::bin);],
|
|
[ac_cv_ios_bin=true],
|
|
[ac_cv_ios_bin=false])])
|
|
if test "$ac_cv_ios_bin" = true ; then
|
|
AC_DEFINE(HAVE_IOS_BIN)
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
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
|
|
|
|
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 support extern declarations of explicit template instantiations.
|
|
AC_CACHE_CHECK(for extern explicit template instantiation,
|
|
ac_cv_cpp_extern_instantiation,
|
|
[AC_TRY_COMPILE(template<class T> class Foo{ T a; };
|
|
extern template class Foo<int>;,
|
|
,
|
|
ac_cv_cpp_extern_instantiation=yes,
|
|
ac_cv_cpp_extern_instantiation=no)])
|
|
if test "$ac_cv_cpp_extern_instantiation" = yes ; then
|
|
AC_DEFINE(HAVE_CPP_EXTERN_INSTANTIATION)
|
|
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 dont 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|.
|
|
AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
|
|
ac_cv_cpp_access_changing_using,
|
|
[AC_TRY_COMPILE(class X { public: int go(const X&) {return 3;} };
|
|
class Y : public X {
|
|
public: int go(int) {return 2;}
|
|
private: using X::go;
|
|
};,
|
|
X x; Y y;,
|
|
ac_cv_cpp_access_changing_using=yes,
|
|
ac_cv_cpp_access_changing_using=no)])
|
|
if test "$ac_cv_cpp_access_changing_using" = 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
|
|
|
|
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 = If NSPR was not detected in the system,
|
|
dnl = use the one in the source tree (mozilla/nsprpub)
|
|
dnl ========================================================
|
|
MOZ_ARG_WITH_BOOL(system-nspr,
|
|
[ --with-system-nspr Use system installed NSPR],
|
|
_USE_SYSTEM_NSPR=1 )
|
|
|
|
if test -n "$_USE_SYSTEM_NSPR"; then
|
|
AM_PATH_NSPR(4.0.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
|
|
fi
|
|
|
|
if test -z "$MOZ_NATIVE_NSPR"; then
|
|
NSPR_CFLAGS='`$(DEPTH)/nsprpub/config/nspr-config --prefix=$(DIST) --cflags`'
|
|
# explicitly set libs for Visual Age C++ for OS/2
|
|
if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
|
|
NSPR_LIBS='$(DIST)/lib/nspr'$NSPR_VERSION'.lib $(DIST)/lib/plc'$NSPR_VERSION'.lib $(DIST)/lib/plds'$NSPR_VERSION'.lib '$_PTHREAD_LDFLAGS''
|
|
elif test "$OS_ARCH" = "WINNT"; then
|
|
NSPR_CFLAGS='-I$(DIST)/include/nspr'
|
|
if test -n "$GNU_CC"; then
|
|
NSPR_LIBS="-L\$(DIST)/lib -lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION"
|
|
else
|
|
NSPR_LIBS='$(DIST)/lib/nspr'$NSPR_VERSION'.lib $(DIST)/lib/plc'$NSPR_VERSION'.lib $(DIST)/lib/plds'$NSPR_VERSION'.lib '
|
|
fi
|
|
else
|
|
NSPR_LIBS='`$(DEPTH)/nsprpub/config/nspr-config --prefix=$(DIST) --libs`'
|
|
fi
|
|
fi
|
|
|
|
if test -z "$SKIP_LIBRARY_CHECKS"; then
|
|
dnl system JPEG support
|
|
dnl ========================================================
|
|
MOZ_ARG_WITH_STRING(system-jpeg,
|
|
[ --with-system-jpeg[=PFX]
|
|
Use system libjpeg [installed at prefix PFX]],
|
|
JPEG_DIR=$withval)
|
|
|
|
_SAVE_CFLAGS=$CFLAGS
|
|
_SAVE_LDFLAGS=$LDFLAGS
|
|
_SAVE_LIBS=$LIBS
|
|
if test -n "${JPEG_DIR}"; then
|
|
CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
|
|
LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
|
|
fi
|
|
if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
|
|
SYSTEM_JPEG=
|
|
else
|
|
AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
|
|
fi
|
|
|
|
if test "$SYSTEM_JPEG" = 1; then
|
|
LIBS="$JPEG_LIBS $LIBS"
|
|
AC_TRY_RUN(
|
|
#include <stdio.h>
|
|
#include <sys/types.h>
|
|
#include <jpeglib.h>
|
|
int main () {
|
|
#if JPEG_LIB_VERSION >= $MOZJPEG
|
|
exit(0);
|
|
#else
|
|
exit(1);
|
|
#endif
|
|
}
|
|
, SYSTEM_JPEG=1, [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=], SYSTEM_JPEG= )
|
|
rm -f core
|
|
fi
|
|
CFLAGS=$_SAVE_CFLAGS
|
|
LDFLAGS=$_SAVE_LDFLAGS
|
|
LIBS=$_SAVE_LIBS
|
|
|
|
if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
|
|
JPEG_CFLAGS="-I${JPEG_DIR}/include"
|
|
JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
|
|
fi
|
|
|
|
dnl system ZLIB support
|
|
dnl ========================================================
|
|
MOZ_ARG_WITH_STRING(system-zlib,
|
|
[ --with-system-zlib[=PFX]
|
|
Use system libz [installed at prefix PFX]],
|
|
ZLIB_DIR=$withval)
|
|
|
|
_SAVE_CFLAGS=$CFLAGS
|
|
_SAVE_LDFLAGS=$LDFLAGS
|
|
_SAVE_LIBS=$LIBS
|
|
if test -n "${ZLIB_DIR}"; then
|
|
CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
|
|
LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
|
|
fi
|
|
if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
|
|
SYSTEM_ZLIB=
|
|
else
|
|
AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"],
|
|
[SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
|
|
fi
|
|
if test "$SYSTEM_ZLIB" = 1; then
|
|
LIBS="$ZLIB_LIBS $LIBS"
|
|
AC_TRY_RUN([
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <zlib.h>
|
|
int parse_version(const char *str, int *ver) {
|
|
return (sscanf(str, "%d.%d.%d", ver, ver+1, ver+2)==3?0:1);
|
|
}
|
|
int main() {
|
|
int sys[3], req[3];
|
|
if (parse_version(zlib_version, sys) || parse_version("$MOZZLIB", req))
|
|
exit(1);
|
|
if ((sys[0] == req[0]) &&
|
|
((sys[1] > req[1]) || ((sys[1] == req[1]) && (sys[2] >= req[2]))))
|
|
exit(0);
|
|
else
|
|
exit(1);
|
|
}
|
|
], SYSTEM_ZLIB=1, [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], SYSTEM_ZLIB= )
|
|
rm -f core
|
|
fi
|
|
CFLAGS=$_SAVE_CFLAGS
|
|
LDFLAGS=$_SAVE_LDFLAGS
|
|
LIBS=$_SAVE_LIBS
|
|
|
|
if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
|
|
ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
|
|
ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
|
|
fi
|
|
|
|
dnl system PNG Support
|
|
dnl ========================================================
|
|
MOZ_ARG_WITH_STRING(system-png,
|
|
[ --with-system-png[=PFX]
|
|
Use system libpng [installed at prefix PFX]],
|
|
PNG_DIR=$withval)
|
|
|
|
_SAVE_CFLAGS=$CFLAGS
|
|
_SAVE_LDFLAGS=$LDFLAGS
|
|
_SAVE_LIBS=$LIBS
|
|
CFLAGS="$ZLIB_CFLAGS $CFLAGS"
|
|
LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
|
|
if test -n "${PNG_DIR}"; then
|
|
CFLAGS="-I${PNG_DIR}/include $CFLAGS"
|
|
LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
|
|
fi
|
|
if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
|
|
SYSTEM_PNG=
|
|
else
|
|
AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
|
|
SYSTEM_PNG=, $PNG_LIBS)
|
|
fi
|
|
if test "$SYSTEM_PNG" = 1; then
|
|
LIBS="$PNG_LIBS $LIBS"
|
|
AC_TRY_RUN(
|
|
#include <stdio.h>
|
|
#include <sys/types.h>
|
|
#include <png.h>
|
|
int main () {
|
|
#if PNG_LIBPNG_VER >= $MOZPNG
|
|
exit(0);
|
|
#else
|
|
exit(1);
|
|
#endif
|
|
}
|
|
, SYSTEM_PNG=1, [SYSTEM_PNG= PNG_CFLAGS= PNG_LIBS=], SYSTEM_PNG= )
|
|
rm -f core
|
|
fi
|
|
CFLAGS=$_SAVE_CFLAGS
|
|
LDFLAGS=$_SAVE_LDFLAGS
|
|
LIBS=$_SAVE_LIBS
|
|
|
|
if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
|
|
PNG_CFLAGS="-I${PNG_DIR}/include"
|
|
PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
|
|
fi
|
|
|
|
dnl system MNG Support
|
|
dnl ========================================================
|
|
MOZ_ARG_WITH_STRING(system-mng,
|
|
[ --with-system-mng[=PFX]
|
|
Use system libmng [installed at prefix PFX]],
|
|
MNG_DIR=$withval)
|
|
|
|
_SAVE_CFLAGS=$CFLAGS
|
|
_SAVE_LDFLAGS=$LDFLAGS
|
|
_SAVE_LIBS=$LIBS
|
|
CFLAGS="$ZLIB_CFLAGS $CFLAGS"
|
|
LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
|
|
if test -n "${MNG_DIR}"; then
|
|
CFLAGS="-I${MNG_DIR}/include $CFLAGS"
|
|
LDFLAGS="-L${MNG_DIR}/lib $LDFLAGS"
|
|
fi
|
|
if test -z "$MNG_DIR" -o "$MNG_DIR" = no; then
|
|
SYSTEM_MNG=
|
|
else
|
|
AC_CHECK_LIB(mng, mng_initialize, [SYSTEM_MNG=1 MNG_LIBS="-lmng $MNG_LIBS"],
|
|
SYSTEM_MNG=, $MNG_LIBS)
|
|
fi
|
|
if test "$SYSTEM_MNG" = 1; then
|
|
LIBS="$MNG_LIBS $LIBS"
|
|
AC_TRY_RUN(
|
|
#include <stdio.h>
|
|
#include <sys/types.h>
|
|
#include <libmng.h>
|
|
int main () {
|
|
#if (((MNG_VERSION_MAJOR)<<16)|((MNG_VERSION_MINOR)<<8)|(MNG_VERSION_RELEASE)) >= $MOZMNG
|
|
exit(0);
|
|
#else
|
|
exit(1);
|
|
#endif
|
|
}
|
|
, SYSTEM_MNG=1, [SYSTEM_MNG= MNG_CFLAGS= MNG_LIBS=], SYSTEM_MNG= )
|
|
rm -f core
|
|
fi
|
|
CFLAGS=$_SAVE_CFLAGS
|
|
LDFLAGS=$_SAVE_LDFLAGS
|
|
LIBS=$_SAVE_LIBS
|
|
|
|
if test "${MNG_DIR}" -a -d "${MNG_DIR}" -a "$SYSTEM_MNG" = 1; then
|
|
MNG_CFLAGS="-I${MNG_DIR}/include"
|
|
MNG_LIBS="-L${MNG_DIR}/lib ${MNG_LIBS}"
|
|
fi
|
|
|
|
fi # SKIP_LIBRARY_CHECKS
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Toolkit Options
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(Toolkit Options)
|
|
|
|
dnl ========================================================
|
|
dnl = Select the default toolkit
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_STRING(default-toolkit,
|
|
[ --enable-default-toolkit=TK
|
|
Select default toolkit (default=<platform specific>)],
|
|
[ _DEFAULT_TOOLKIT=$enableval ],
|
|
[ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
|
|
|
|
if test "$_DEFAULT_TOOLKIT" = "gtk" \
|
|
-o "$_DEFAULT_TOOLKIT" = "gtk2" \
|
|
-o "$_DEFAULT_TOOLKIT" = "xlib" \
|
|
-o "$_DEFAULT_TOOLKIT" = "os2" \
|
|
-o "$_DEFAULT_TOOLKIT" = "beos" \
|
|
-o "$_DEFAULT_TOOLKIT" = "photon" \
|
|
-o "$_DEFAULT_TOOLKIT" = "mac" \
|
|
-o "$_DEFAULT_TOOLKIT" = "windows" \
|
|
-o "$_DEFAULT_TOOLKIT" = "cocoa"
|
|
then
|
|
dnl nglayout only supports building with one toolkit,
|
|
dnl so ignore everything after the first comma (",").
|
|
MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
|
|
else
|
|
if test "$no_x" != "yes"; then
|
|
AC_MSG_ERROR([Toolkit must be xlib, gtk or gtk2.])
|
|
else
|
|
AC_MSG_ERROR([Toolkit must be $_PLATFORM_DEFAULT_TOOLKIT.])
|
|
fi
|
|
fi
|
|
|
|
AC_DEFINE_UNQUOTED(MOZ_DEFAULT_TOOLKIT,"$MOZ_WIDGET_TOOLKIT")
|
|
|
|
dnl ========================================================
|
|
dnl = Enable the toolkit as needed =
|
|
dnl ========================================================
|
|
|
|
case "$MOZ_WIDGET_TOOLKIT" in
|
|
gtk)
|
|
MOZ_ENABLE_GTK=1
|
|
MOZ_ENABLE_XREMOTE=1
|
|
TK_CFLAGS='$(MOZ_GTK_CFLAGS)'
|
|
TK_LIBS='$(MOZ_GTK_LDFLAGS)'
|
|
AC_DEFINE(MOZ_WIDGET_GTK)
|
|
;;
|
|
|
|
gtk2)
|
|
MOZ_ENABLE_GTK2=1
|
|
MOZ_ENABLE_XREMOTE=1
|
|
TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
|
|
TK_LIBS='$(MOZ_GTK2_LIBS)'
|
|
AC_DEFINE(MOZ_WIDGET_GTK2)
|
|
;;
|
|
|
|
xlib)
|
|
MOZ_ENABLE_XLIB=1
|
|
MOZ_ENABLE_XREMOTE=1
|
|
TK_CFLAGS='$(MOZ_XLIB_CFLAGS)'
|
|
TK_LIBS='$(MOZ_XLIB_LDFLAGS)'
|
|
AC_DEFINE(MOZ_WIDGET_XLIB)
|
|
;;
|
|
|
|
photon)
|
|
MOZ_ENABLE_PHOTON=1
|
|
AC_DEFINE(MOZ_WIDGET_PHOTON)
|
|
;;
|
|
mac|cocoa)
|
|
TK_LIBS='-framework Carbon /System/Library/Frameworks/Carbon.framework/Carbon'
|
|
TK_CFLAGS="-I/Developer/Headers/FlatCarbon -F/System/Library/Frameworks"
|
|
CFLAGS="$CFLAGS $TK_CFLAGS"
|
|
CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
|
|
AC_DEFINE(XP_MACOSX)
|
|
AC_DEFINE(TARGET_CARBON)
|
|
AC_DEFINE(TARGET_API_MAC_CARBON)
|
|
if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
|
|
MOZ_ENABLE_COCOA=1
|
|
AC_DEFINE(MOZ_WIDGET_COCOA)
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
if test "$MOZ_ENABLE_XREMOTE"; then
|
|
AC_DEFINE(MOZ_ENABLE_XREMOTE)
|
|
fi
|
|
|
|
if test "$MOZ_ENABLE_GTK"
|
|
then
|
|
AM_PATH_GTK($GTK_VERSION,,
|
|
AC_MSG_ERROR(Test for GTK failed.))
|
|
|
|
MOZ_GTK_LDFLAGS=$GTK_LIBS
|
|
MOZ_GTK_CFLAGS=$GTK_CFLAGS
|
|
fi
|
|
|
|
if test "$MOZ_ENABLE_GTK2"
|
|
then
|
|
PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= 1.3.7)
|
|
fi
|
|
|
|
if test "$MOZ_ENABLE_XLIB"
|
|
then
|
|
MOZ_XLIB_CFLAGS="$X_CFLAGS"
|
|
MOZ_XLIB_LDFLAGS="$XLDFLAGS"
|
|
MOZ_XLIB_LDFLAGS="$MOZ_XLIB_LDFLAGS $XEXT_LIBS $X11_LIBS"
|
|
fi
|
|
|
|
AC_SUBST(MOZ_DEFAULT_TOOLKIT)
|
|
|
|
AC_SUBST(GTK_CONFIG)
|
|
AC_SUBST(TK_CFLAGS)
|
|
AC_SUBST(TK_LIBS)
|
|
|
|
AC_SUBST(MOZ_ENABLE_GTK)
|
|
AC_SUBST(MOZ_ENABLE_XLIB)
|
|
AC_SUBST(MOZ_ENABLE_GTK2)
|
|
AC_SUBST(MOZ_ENABLE_PHOTON)
|
|
AC_SUBST(MOZ_ENABLE_COCOA)
|
|
AC_SUBST(MOZ_ENABLE_XREMOTE)
|
|
AC_SUBST(MOZ_GTK_CFLAGS)
|
|
AC_SUBST(MOZ_GTK_LDFLAGS)
|
|
AC_SUBST(MOZ_GTK2_CFLAGS)
|
|
AC_SUBST(MOZ_GTK2_LIBS)
|
|
AC_SUBST(MOZ_XLIB_CFLAGS)
|
|
AC_SUBST(MOZ_XLIB_LDFLAGS)
|
|
|
|
AC_SUBST(MOC)
|
|
|
|
if test "$MOZ_ENABLE_GTK" \
|
|
|| test "$MOZ_ENABLE_XLIB" \
|
|
|| test "$MOZ_ENABLE_GTK2"
|
|
then
|
|
AC_DEFINE(MOZ_X11)
|
|
_X11_TOOLKIT=1
|
|
fi
|
|
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Components & Features
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(Components and Features)
|
|
|
|
dnl =========================================================
|
|
dnl = Calendar client
|
|
dnl =========================================================
|
|
MOZ_ARG_ENABLE_BOOL(calendar,
|
|
[ --enable-calendar Enable building of the calendar client],
|
|
MOZ_CALENDAR=1,
|
|
MOZ_CALENDAR= )
|
|
AC_SUBST(MOZ_CALENDAR)
|
|
|
|
dnl =========================================================
|
|
dnl = Mail & News
|
|
dnl =========================================================
|
|
MOZ_MAIL_NEWS=1
|
|
MOZ_ARG_DISABLE_BOOL(mailnews,
|
|
[ --disable-mailnews Disable building of mail & news components],
|
|
MOZ_MAIL_NEWS= )
|
|
AC_SUBST(MOZ_MAIL_NEWS)
|
|
|
|
dnl =========================================================
|
|
dnl = LDAP
|
|
dnl =========================================================
|
|
MOZ_LDAP_XPCOM=1
|
|
MOZ_ARG_DISABLE_BOOL(ldap,
|
|
[ --disable-ldap Disable LDAP support],
|
|
MOZ_LDAP_XPCOM=)
|
|
|
|
dnl ========================================================
|
|
dnl = Phoenix
|
|
dnl ========================================================
|
|
MOZ_XUL_APP=
|
|
if test "$MOZ_PHOENIX"; then
|
|
AC_DEFINE(MOZ_PHOENIX)
|
|
MOZ_XUL_APP=1
|
|
AC_DEFINE(MOZ_XUL_APP)
|
|
fi
|
|
|
|
AC_SUBST(MOZ_PHOENIX)
|
|
AC_SUBST(MOZ_XUL_APP)
|
|
|
|
dnl ========================================================
|
|
dnl = FreeType2
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(freetype2,
|
|
[ --disable-freetype2 Disable FreeType2 support ],
|
|
_NO_FREETYPE2=1 )
|
|
|
|
if test "$no_x" = "yes"; then
|
|
_NO_FREETYPE2=1
|
|
fi
|
|
|
|
if test -z "$_NO_FREETYPE2"; then
|
|
AC_CHECK_FT2(6.1.0, [MOZ_ENABLE_FREETYPE2=1], [MOZ_ENABLE_FREETYPE2=])
|
|
fi
|
|
|
|
AC_SUBST(MOZ_ENABLE_FREETYPE2)
|
|
|
|
dnl ========================================================
|
|
dnl = Xft
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(xft,
|
|
[ --enable-xft Enable Xft support ],
|
|
MOZ_ENABLE_XFT=1
|
|
AC_DEFINE(MOZ_ENABLE_XFT)
|
|
)
|
|
|
|
if test "$MOZ_ENABLE_XFT"
|
|
then
|
|
PKG_CHECK_MODULES(MOZ_XFT, xft)
|
|
if test "$MOZ_ENABLE_GTK2"; then
|
|
PKG_CHECK_MODULES(_PANGOCHK, pango >= 1.1.0)
|
|
fi
|
|
fi
|
|
|
|
AC_SUBST(MOZ_ENABLE_XFT)
|
|
AC_SUBST(MOZ_XFT_CFLAGS)
|
|
AC_SUBST(MOZ_XFT_LIBS)
|
|
|
|
dnl ========================================================
|
|
dnl = disabling x11 core support, enabled by default
|
|
dnl ========================================================
|
|
MOZ_ENABLE_COREXFONTS=${MOZ_ENABLE_COREXFONTS:-1}
|
|
if test "$MOZ_ENABLE_COREXFONTS"
|
|
then
|
|
AC_DEFINE(MOZ_ENABLE_COREXFONTS)
|
|
fi
|
|
|
|
AC_SUBST(MOZ_ENABLE_COREXFONTS)
|
|
|
|
dnl ========================================================
|
|
dnl = PostScript print module
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(postscript,
|
|
[ --disable-postscript Disable PostScript printing support ],
|
|
MOZ_ENABLE_POSTSCRIPT=,
|
|
MOZ_ENABLE_POSTSCRIPT=1 )
|
|
|
|
dnl ========================================================
|
|
dnl = Xprint print module
|
|
dnl ========================================================
|
|
if test "$_X11_TOOLKIT"
|
|
then
|
|
MOZ_ENABLE_XPRINT=1
|
|
|
|
_SAVE_LDFLAGS="$LDFLAGS"
|
|
LDFLAGS="$XLDFLAGS $LDFLAGS"
|
|
AC_CHECK_LIB(Xp, XpGetPrinterList, [XPRINT_LIBS="-lXp"],
|
|
MOZ_ENABLE_XPRINT=, $XEXT_LIBS $XLIBS)
|
|
LDFLAGS="$_SAVE_LDFLAGS"
|
|
|
|
MOZ_XPRINT_CFLAGS="$X_CFLAGS"
|
|
MOZ_XPRINT_LDFLAGS="$XLDFLAGS $XPRINT_LIBS"
|
|
MOZ_XPRINT_LDFLAGS="$MOZ_XPRINT_LDFLAGS $XEXT_LIBS $X11_LIBS"
|
|
|
|
MOZ_ARG_DISABLE_BOOL(xprint,
|
|
[ --disable-xprint Disable Xprint printing support ],
|
|
MOZ_ENABLE_XPRINT=,
|
|
MOZ_ENABLE_XPRINT=1 )
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Setting MOZ_EXTRA_X11CONVERTERS turns on additional
|
|
dnl = converters in intl/uconv that are used only by X11 gfx
|
|
dnl = implementations. By default, it's undefined so that
|
|
dnl = those converters are not built on other platforms/toolkits.
|
|
dnl = (see bug 180851)
|
|
dnl ========================================================
|
|
|
|
if (test "$MOZ_ENABLE_GTK" || test "$MOZ_ENABLE_GTK2") \
|
|
&& test "$MOZ_ENABLE_COREXFONTS" \
|
|
|| test "$MOZ_ENABLE_XLIB" \
|
|
|| test "$MOZ_ENABLE_XPRINT"
|
|
then
|
|
AC_DEFINE(MOZ_EXTRA_X11CONVERTERS)
|
|
MOZ_EXTRA_X11CONVERTERS=1
|
|
fi
|
|
AC_SUBST(MOZ_EXTRA_X11CONVERTERS)
|
|
|
|
dnl ========================================================
|
|
dnl = Build Personal Security Manager
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(crypto,
|
|
[ --enable-crypto Enable crypto support (Personal Security Manager)],
|
|
MOZ_PSM=1,
|
|
MOZ_PSM= )
|
|
case $target in
|
|
*-cygwin*|*-mingw*|*-msvc*|*-mksnt*)
|
|
if test -n "$MOZ_PSM" -a ! -e "$AS_BIN"; then
|
|
AC_MSG_ERROR([Building crypto support requires a valid version of the standalone assembler, ml.exe.])
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
dnl ========================================================
|
|
dnl = JS Debugger XPCOM component (js/jsd)
|
|
dnl ========================================================
|
|
MOZ_JSDEBUGGER=1
|
|
MOZ_ARG_DISABLE_BOOL(jsd,
|
|
[ --disable-jsd Disable JavaScript debug library],
|
|
MOZ_JSDEBUGGER=)
|
|
|
|
|
|
dnl ========================================================
|
|
dnl = This turns on xinerama support. We just can't use the
|
|
dnl = autodetection of the libraries since on Red Hat 7 linking with
|
|
dnl = Xinerama crashes the dynamic loader. Make people turn it on
|
|
dnl = explicitly. The autodetection is done above in the Xlib
|
|
dnl = detection routines.
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(xinerama,
|
|
[ --enable-xinerama Enable Xinerama support
|
|
( not safe for Red Hat 7.0 ) ],
|
|
[ if test -n "$MOZ_XINERAMA_LIBS" && \
|
|
test -n "$ac_cv_header_X11_extensions_Xinerama_h"; then
|
|
MOZ_ENABLE_XINERAMA=1
|
|
AC_DEFINE(MOZ_ENABLE_XINERAMA)
|
|
fi ])
|
|
|
|
dnl bi-directional support always on
|
|
IBMBIDI=1
|
|
AC_DEFINE(IBMBIDI)
|
|
|
|
dnl ========================================================
|
|
dnl complex text support off by default
|
|
dnl ========================================================
|
|
SUNCTL=
|
|
MOZ_ARG_ENABLE_BOOL(ctl,
|
|
[ --enable-ctl Enable Thai Complex Script support],
|
|
SUNCTL=1,
|
|
SUNCTL= )
|
|
|
|
dnl ========================================================
|
|
dnl accessibility support on by default
|
|
dnl ========================================================
|
|
ACCESSIBILITY=1
|
|
MOZ_ARG_DISABLE_BOOL(accessibility,
|
|
[ --disable-accessibility Disable accessibility support],
|
|
ACCESSIBILITY= )
|
|
if test "$ACCESSIBILITY"; then
|
|
AC_DEFINE(ACCESSIBILITY)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl xpfe/components on by default
|
|
dnl ========================================================
|
|
MOZ_XPFE_COMPONENTS=1
|
|
MOZ_ARG_DISABLE_BOOL(xpfe-components,
|
|
[ --disable-xpfe-components Disable xpfe components],
|
|
MOZ_XPFE_COMPONENTS= )
|
|
|
|
dnl ========================================================
|
|
dnl xpinstall support on by default
|
|
dnl ========================================================
|
|
MOZ_XPINSTALL=1
|
|
MOZ_ARG_DISABLE_BOOL(xpinstall,
|
|
[ --disable-xpinstall Disable xpinstall support],
|
|
MOZ_XPINSTALL= )
|
|
if test "$MOZ_XPINSTALL"; then
|
|
AC_DEFINE(MOZ_XPINSTALL)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Single profile support off by default
|
|
dnl ========================================================
|
|
MOZ_SINGLE_PROFILE=
|
|
MOZ_ARG_ENABLE_BOOL(single-profile,
|
|
[ --enable-single-profile Enable single profile support ],
|
|
MOZ_SINGLE_PROFILE=1,
|
|
MOZ_SINGLE_PROFILE= )
|
|
|
|
dnl ========================================================
|
|
dnl xpcom js loader support on by default
|
|
dnl ========================================================
|
|
MOZ_JSLOADER=1
|
|
MOZ_ARG_DISABLE_BOOL(jsloader,
|
|
[ --disable-jsloader Disable xpcom js loader support],
|
|
MOZ_JSLOADER= )
|
|
if test "$MOZ_JSLOADER"; then
|
|
AC_DEFINE(MOZ_JSLOADER)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl use native unicode converters
|
|
dnl ========================================================
|
|
MOZ_USE_NATIVE_UCONV=
|
|
MOZ_ARG_ENABLE_BOOL(native-uconv,
|
|
[ --enable-native-uconv enable iconv support],
|
|
MOZ_USE_NATIVE_UCONV=1 )
|
|
if test "$MOZ_USE_NATIVE_UCONV"; then
|
|
AC_DEFINE(MOZ_USE_NATIVE_UCONV)
|
|
fi
|
|
|
|
|
|
dnl ========================================================
|
|
dnl Libeditor can be build as plaintext-only,
|
|
dnl or as a full html and text editing component.
|
|
dnl We build both by default.
|
|
dnl ========================================================
|
|
MOZ_PLAINTEXT_EDITOR_ONLY=
|
|
MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
|
|
[ --enable-plaintext-editor-only
|
|
Allow only plaintext editing],
|
|
MOZ_PLAINTEXT_EDITOR_ONLY=1 )
|
|
dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
|
|
AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
|
|
|
|
dnl ========================================================
|
|
dnl Composer is on by default.
|
|
dnl ========================================================
|
|
MOZ_COMPOSER=1
|
|
MOZ_ARG_DISABLE_BOOL(composer,
|
|
[ --disable-composer Disable building of Composer],
|
|
MOZ_COMPOSER= )
|
|
AC_SUBST(MOZ_COMPOSER)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable compilation of specific extension modules
|
|
dnl ========================================================
|
|
|
|
MOZ_EXTENSIONS_DEFAULT=" cookie wallet content-packs xml-rpc xmlextras help pref transformiix venkman inspector irc universalchardet typeaheadfind"
|
|
|
|
MOZ_EXTENSIONS_ALL="$MOZ_EXTENSIONS_DEFAULT xmlterm access-builtin p3p interfaceinfo datetime finger cview"
|
|
|
|
MOZ_ARG_ENABLE_STRING(extensions,
|
|
[ --enable-extensions Enable extensions],
|
|
[ for option in `echo $enableval | sed 's/,/ /g'`; do
|
|
if test "$option" = "yes" || test "$option" = "all"; then
|
|
MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_ALL"
|
|
elif test "$option" = "no" || test "$option" = "none"; then
|
|
MOZ_EXTENSIONS=""
|
|
elif test "$option" = "default"; then
|
|
MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
|
|
elif test `echo "$option" | grep -c \^-` != 0; then
|
|
option=`echo $option | sed 's/^-//'`
|
|
MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
|
|
else
|
|
MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
|
|
fi
|
|
done],
|
|
MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
|
|
|
|
if test -z "$MOZ_ENABLE_GTK" && test `echo "$MOZ_EXTENSIONS" | grep -c xmlterm` -ne 0; then
|
|
AC_MSG_WARN([Cannot build xmlterm without gtk toolkit. Removing xmlterm from MOZ_EXTENSIONS.])
|
|
MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xmlterm||'`
|
|
fi
|
|
|
|
if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
|
|
AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
|
|
MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
|
|
fi
|
|
|
|
dnl This might be temporary: build tridentprofile only on Windows
|
|
if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
|
|
AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
|
|
MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
|
|
fi
|
|
|
|
dnl cookie must be built before tridentprofile. put it at list's end.
|
|
if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
|
|
MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
|
|
if test `echo "$MOZ_EXTENSIONS" | grep -c cookie` -eq 0; then
|
|
AC_MSG_WARN([tridentprofile extension requires cookie. Removing tridentprofile.])
|
|
else
|
|
MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
|
|
fi
|
|
fi
|
|
|
|
dnl Remove dupes
|
|
if test -n "${_CYGWIN_PERL}"; then
|
|
MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
|
|
else
|
|
MOZ_EXTENSIONS=`${CYGWIN_WRAPPER} ${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Image decoders
|
|
dnl ========================================================
|
|
MOZ_IMG_DECODERS_DEFAULT="ppm png gif jpeg bmp mng xbm"
|
|
case "$target_os" in
|
|
cygwin*|mingw*|msvc*|mksnt*|os2*)
|
|
MOZ_IMG_DECODERS_DEFAULT="$MOZ_IMG_DECODERS_DEFAULT icon"
|
|
;;
|
|
esac
|
|
|
|
MOZ_ARG_ENABLE_STRING(image-decoders,
|
|
[ --enable-image-decoders[={mod1,mod2,default,all,none}]
|
|
Enable specific image decoders],
|
|
[ for option in `echo $enableval | sed 's/,/ /g'`; do
|
|
if test "$option" = "yes" || test "$option" = "all"; then
|
|
MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
|
|
elif test "$option" = "no" || test "$option" = "none"; then
|
|
MOZ_IMG_DECODERS=""
|
|
elif test "$option" = "default"; then
|
|
MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
|
|
elif test `echo "$option" | grep -c \^-` != 0; then
|
|
option=`echo $option | sed 's/^-//'`
|
|
MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
|
|
else
|
|
MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
|
|
fi
|
|
done],
|
|
MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
|
|
|
|
dnl Remove dupes
|
|
if test -n "${_CYGWIN_PERL}"; then
|
|
MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
|
|
else
|
|
MOZ_IMG_DECODERS=`${CYGWIN_WRAPPER} ${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl experimental ldap features
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(ldap-experimental,
|
|
[ --enable-ldap-experimental
|
|
Enable LDAP experimental features],
|
|
MOZ_LDAP_XPCOM_EXPERIMENTAL=1)
|
|
|
|
dnl ========================================================
|
|
dnl MathML on by default
|
|
dnl ========================================================
|
|
MOZ_MATHML=1
|
|
MOZ_ARG_DISABLE_BOOL(mathml,
|
|
[ --disable-mathml Disable MathML],
|
|
MOZ_MATHML= )
|
|
if test "$MOZ_MATHML"; then
|
|
AC_DEFINE(MOZ_MATHML)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl SVG
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(svg,
|
|
[ --enable-svg Enable SVG ],
|
|
MOZ_SVG=1
|
|
AC_DEFINE(MOZ_SVG))
|
|
|
|
dnl To build transformiix standalone, set TX_EXE while configuring
|
|
if test "$TX_EXE"; then
|
|
AC_DEFINE(TX_EXE)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Installer
|
|
dnl ========================================================
|
|
case "$target_os" in
|
|
solaris*|linux*|msvc*|mksnt*|cygwin*|mingw*|os2*)
|
|
MOZ_INSTALLER=1
|
|
;;
|
|
esac
|
|
|
|
MOZ_ARG_DISABLE_BOOL(installer,
|
|
[ --disable-installer Disable building of installer],
|
|
MOZ_INSTALLER=,
|
|
MOZ_INSTALLER=1 )
|
|
AC_SUBST(MOZ_INSTALLER)
|
|
|
|
dnl ========================================================
|
|
dnl ActiveX
|
|
dnl ========================================================
|
|
MOZ_NO_ACTIVEX_SUPPORT=1
|
|
|
|
case "$target_os" in
|
|
msvc*|mksnt*|cygwin*|mingw*)
|
|
MOZ_NO_ACTIVEX_SUPPORT=
|
|
;;
|
|
esac
|
|
|
|
MOZ_ARG_DISABLE_BOOL(activex,
|
|
[ --disable-activex Disable building of ActiveX control (win32 only)],
|
|
MOZ_NO_ACTIVEX_SUPPORT=1,
|
|
MOZ_NO_ACTIVEX_SUPPORT= )
|
|
AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
|
|
|
|
MOZ_ACTIVEX_SCRIPTING_SUPPORT=
|
|
|
|
if test -n "$_WIN32_MSVC"; then
|
|
MOZ_ARG_ENABLE_BOOL(activex-scripting,
|
|
[ --enable-activex-scripting
|
|
Enable building of ActiveX scripting and plugin support (win32 only)],
|
|
MOZ_ACTIVEX_SCRIPTING_SUPPORT=1,
|
|
MOZ_ACTIVEX_SCRIPTING_SUPPORT=)
|
|
fi
|
|
AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
|
|
|
|
if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
|
|
then
|
|
AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
|
|
fi
|
|
|
|
|
|
dnl ========================================================
|
|
dnl build the tests by default
|
|
dnl ========================================================
|
|
ENABLE_TESTS=1
|
|
MOZ_ARG_DISABLE_BOOL(tests,
|
|
[ --disable-tests Do not build test libraries & programs],
|
|
ENABLE_TESTS= )
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Module specific options
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(Individual module options)
|
|
|
|
dnl ========================================================
|
|
dnl = Enable Lea malloc in xpcom. OFF by default.
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(xpcom-lea,
|
|
[ --enable-xpcom-lea Enable Lea malloc in xpcom ],
|
|
[ XPCOM_USE_LEA=1
|
|
AC_DEFINE(XPCOM_USE_LEA)])
|
|
|
|
dnl ========================================================
|
|
dnl = Enable Ultrasparc specific optimizations for JS
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(js-ultrasparc,
|
|
[ --enable-js-ultrasparc Enable UltraSPARC optimizations in JS],
|
|
[case "$target_os" in
|
|
solaris*)
|
|
case $OS_TEST in
|
|
sun4u)
|
|
JS_ULTRASPARC_OPTS=1
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
])
|
|
AC_SUBST(JS_ULTRASPARC_OPTS)
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Feature options that require extra sources to be pulled
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(Features that require extra sources)
|
|
|
|
dnl ========================================================
|
|
dnl mozilla/tools/leaky not part of default build.
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(leaky,
|
|
[ --enable-leaky Enable leaky memory tool (needs mozilla/tools/leaky)],
|
|
MOZ_LEAKY=1)
|
|
|
|
dnl ========================================================
|
|
dnl mozilla/tools/jprof not part of default build.
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(jprof,
|
|
[ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof)],
|
|
MOZ_JPROF=1
|
|
AC_DEFINE(MOZ_JPROF))
|
|
|
|
dnl ========================================================
|
|
dnl mozilla/js/src/xpconnect/tools is not part of default build.
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(xpctools,
|
|
[ --enable-xpctools Build JS profiling tool (needs mozilla/js/src/xpconnect/tools)],
|
|
MOZ_XPCTOOLS=1)
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Debugging Options
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(Debugging and Optimizations)
|
|
|
|
dnl ========================================================
|
|
dnl = Disable building with debug info.
|
|
dnl = Debugging is ON by default so that we get more useful
|
|
dnl = bug reports.
|
|
dnl ========================================================
|
|
MOZ_DEBUG=1
|
|
|
|
if test ! "$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_DISABLE_BOOL(debug,
|
|
[ --disable-debug Disable building with debug info],
|
|
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*|mksnt*|cygwin*|mingw*)
|
|
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"
|
|
|
|
dnl ========================================================
|
|
dnl = Enable code optimization. OFF by default.
|
|
dnl ========================================================
|
|
MOZ_OPTIMIZE=
|
|
if test ! "$MOZ_OPTIMIZE_FLAGS"; then
|
|
MOZ_OPTIMIZE_FLAGS="-O"
|
|
fi
|
|
|
|
MOZ_ARG_ENABLE_STRING(optimize,
|
|
[ --enable-optimize[=OPT] Enable compiler optimizations (default=-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
|
|
fi ])
|
|
|
|
AC_SUBST(MOZ_OPTIMIZE)
|
|
AC_SUBST(MOZ_OPTIMIZE_FLAGS)
|
|
AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
|
|
|
|
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_DBGRINFO_MODULES=
|
|
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 = Disable some DTD debugging code in the parser that
|
|
dnl = breaks on some compilers because of evil and broken
|
|
dnl = streams code in htmlparser/src/prstrm.cpp
|
|
dnl ========================================================
|
|
MOZ_DISABLE_DTD_DEBUG=
|
|
MOZ_ARG_DISABLE_BOOL(dtd-debug,
|
|
[ --disable-dtd-debug Disable DTD debugging code in the parser],
|
|
MOZ_DISABLE_DTD_DEBUG=1
|
|
AC_DEFINE(MOZ_DISABLE_DTD_DEBUG) )
|
|
|
|
dnl ========================================================
|
|
dnl Enable garbage collector
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(boehm,
|
|
[ --enable-boehm Enable the Boehm Garbage Collector],
|
|
AC_DEFINE(GC_LEAK_DETECTOR)
|
|
GC_LEAK_DETECTOR=1)
|
|
|
|
dnl ========================================================
|
|
dnl Disable runtime logging checks
|
|
dnl ========================================================
|
|
MOZ_ARG_DISABLE_BOOL(logging,
|
|
[ --disable-logging Disable logging facilities],
|
|
NS_DISABLE_LOGGING=1)
|
|
if test "$NS_DISABLE_LOGGING"; then
|
|
AC_DEFINE(NS_DISABLE_LOGGING)
|
|
else
|
|
AC_DEFINE(MOZ_LOGGING)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Crash on assert
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(crash-on-assert,
|
|
[ --enable-crash-on-assert
|
|
Make NS_ASSERTION crash on Unix],
|
|
AC_DEFINE(UNIX_CRASH_ON_ASSERT))
|
|
|
|
dnl ========================================================
|
|
dnl = Enable function reordering. Off by default
|
|
dnl ========================================================
|
|
MOZ_REORDER=
|
|
MOZ_ARG_ENABLE_BOOL(reorder,
|
|
[ --enable-reorder Enable function reordering (requires GNU ld) ],
|
|
[ if test -z "$GNU_LD"; then
|
|
AC_MSG_WARN([Reordering only works with GNU ld. Not reordering.])
|
|
else
|
|
MOZ_REORDER=1
|
|
fi])
|
|
|
|
dnl ========================================================
|
|
dnl = dnl This will enable logging of addref, release, ctor, dtor.
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(logrefcnt,
|
|
[ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
|
|
AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING),
|
|
AC_DEFINE(NO_BUILD_REFCNT_LOGGING))
|
|
|
|
dnl ========================================================
|
|
dnl = detect webshell leaks
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(detect-webshell-leaks,
|
|
[ --enable-detect-webshell-leaks
|
|
Enable detection of webshell leaks
|
|
(default=debug)],
|
|
_DETECT_WEBSHELL_LEAKS=1 , ,
|
|
[ if test "$MOZ_DEBUG"; then
|
|
_DETECT_WEBSHELL_LEAKS=1
|
|
fi])
|
|
|
|
if test "$_DETECT_WEBSHELL_LEAKS"; then
|
|
AC_DEFINE(DETECT_WEBSHELL_LEAKS)
|
|
AC_SUBST(DETECT_WEBSHELL_LEAKS)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Use malloc wrapper lib
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(wrap-malloc,
|
|
[ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
|
|
[ 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])
|
|
|
|
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 Electric Fence
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(efence,
|
|
[ --enable-efence Link with Electric Fence],
|
|
AC_CHECK_LIB(efence,malloc))
|
|
|
|
dnl ========================================================
|
|
dnl = Enable stripping of libs & executables
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(strip,
|
|
[ --enable-strip Enable stripping of libs & executables ],
|
|
ENABLE_STRIP=1)
|
|
|
|
dnl ========================================================
|
|
dnl = --enable-elf-dynstr-gc
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
|
|
[ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
|
|
USE_ELF_DYNSTR_GC=1,
|
|
USE_ELF_DYNSTR_GC= )
|
|
|
|
dnl ========================================================
|
|
dnl = --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 "$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
|
|
|
|
dnl ========================================================
|
|
dnl = --enable-prebinding
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(prebinding,
|
|
[ --enable-prebinding Enable prebinding (Mac OS X only)],
|
|
USE_PREBINDING=1,
|
|
USE_PREBINDING= )
|
|
|
|
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_TIMELINE=
|
|
MOZ_ARG_ENABLE_BOOL(timeline,
|
|
[ --enable-timeline Enable timeline services ],
|
|
AC_DEFINE(MOZ_TIMELINE)
|
|
MOZ_TIMELINE=1)
|
|
|
|
dnl ========================================================
|
|
dnl Turn on reflow counting
|
|
dnl ========================================================
|
|
MOZ_REFLOW_PERF=
|
|
MOZ_ARG_ENABLE_BOOL(reflow-perf,
|
|
[ --enable-reflow-perf Enable reflow performance tracing],
|
|
MOZ_REFLOW_PERF=1
|
|
AC_DEFINE(MOZ_REFLOW_PREF) )
|
|
AC_SUBST(MOZ_REFLOW_PERF)
|
|
|
|
dnl ========================================================
|
|
dnl Enable performance metrics.
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(perf-metrics,
|
|
[ --enable-perf-metrics Enable performance metrics],
|
|
MOZ_PERF_METRICS=1
|
|
AC_DEFINE(MOZ_PERF_METRICS))
|
|
|
|
dnl ========================================================
|
|
dnl Enable code size metrics.
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(codesighs,
|
|
[ --enable-codesighs Enable code size analysis tools],
|
|
[ if test -d ./tools/codesighs; then
|
|
MOZ_MAPINFO=1
|
|
else
|
|
AC_MSG_ERROR([Codesighs directory ./tools/codesighs required.])
|
|
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 )
|
|
if test "$NS_TRACE_MALLOC"; then
|
|
# Please, Mr. Linker Man, don't take away our symbol names
|
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
|
|
USE_ELF_DYNSTR_GC=
|
|
AC_DEFINE(NS_TRACE_MALLOC)
|
|
fi
|
|
AC_SUBST(NS_TRACE_MALLOC)
|
|
|
|
dnl ========================================================
|
|
dnl = 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
|
|
AC_DEFINE(ENABLE_EAZEL_PROFILER)
|
|
USE_ELF_DYNSTR_GC=
|
|
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")
|
|
|
|
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)],
|
|
[ MOZ_INSURE="insure" MOZ_INSURIFYING=1 MOZ_INSURE_DIRS="." MOZ_INSURE_EXCLUDE_DIRS="config" ])
|
|
|
|
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 demangling undefined symbols
|
|
dnl ========================================================
|
|
if test -z "$SKIP_LIBRARY_CHECKS"; then
|
|
AC_CHECK_LIB(iberty, cplus_demangle, [HAVE_DEMANGLE=1],
|
|
HAVE_DEMANGLE=, "-liberty")
|
|
fi
|
|
|
|
MOZ_DEMANGLE_SYMBOLS=
|
|
|
|
if test "$HAVE_DEMANGLE"
|
|
then
|
|
case "$target" in
|
|
*-linux*)
|
|
# Demangle only for debug or trace-malloc builds
|
|
if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"
|
|
then
|
|
MOZ_DEMANGLE_SYMBOLS=1
|
|
AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
|
|
fi
|
|
;;
|
|
*-solaris*)
|
|
# Demangle only for debug builds which are using the Gnu compiler.
|
|
if test "$GNU_CC"
|
|
then
|
|
if test "$MOZ_DEBUG"
|
|
then
|
|
MOZ_DEMANGLE_SYMBOLS=1
|
|
AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
|
|
fi
|
|
fi
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
|
|
|
|
|
|
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)
|
|
|
|
dnl =========================================================
|
|
dnl = Chrome format
|
|
dnl =========================================================
|
|
MOZ_ARG_ENABLE_STRING(chrome-format,
|
|
[ --enable-chrome-format=FORMAT
|
|
Select FORMAT of chrome files (default=jar)],
|
|
MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
|
|
|
|
if test -z "$MOZ_CHROME_FILE_FORMAT"; then
|
|
MOZ_CHROME_FILE_FORMAT=jar
|
|
fi
|
|
|
|
if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
|
|
test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
|
|
test "$MOZ_CHROME_FILE_FORMAT" != "both"; then
|
|
AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat or both])
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl = Define default location for MOZILLA_FIVE_HOME
|
|
dnl ========================================================
|
|
MOZ_ARG_WITH_STRING(default-mozilla-five-home,
|
|
[ --enable-default-mozilla-five-home
|
|
Set the default value for MOZILLA_FIVE_HOME],
|
|
[ val=`echo $withval`
|
|
AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
|
|
|
|
dnl ========================================================
|
|
dnl = Location of the mozilla user directory (default is ~/.mozilla).],
|
|
dnl ========================================================
|
|
MOZ_ARG_WITH_STRING(user-appdir,
|
|
[ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
|
|
[ val=`echo $withval`
|
|
if echo "$val" | grep "\/" >/dev/null; then
|
|
AC_MSG_ERROR("Homedir must be single relative path.")
|
|
else
|
|
AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$val")
|
|
fi],
|
|
AC_DEFINE(MOZ_USER_DIR,".mozilla") )
|
|
|
|
dnl ========================================================
|
|
dnl = Doxygen configuration
|
|
dnl ========================================================
|
|
dnl Use commas to specify multiple dirs to this arg
|
|
MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
|
|
MOZ_ARG_WITH_STRING(doc-input-dirs,
|
|
[ --with-doc-input-dirs=DIRS
|
|
Header/idl dirs to create docs from],
|
|
[ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
|
|
AC_SUBST(MOZ_DOC_INPUT_DIRS)
|
|
|
|
dnl Use commas to specify multiple dirs to this arg
|
|
MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
|
|
MOZ_ARG_WITH_STRING(doc-include-dirs,
|
|
[ --with-doc-include-dirs=DIRS
|
|
Include dirs to preprocess doc headers],
|
|
[ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
|
|
AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
|
|
|
|
MOZ_DOC_OUTPUT_DIR='./dist/docs'
|
|
MOZ_ARG_WITH_STRING(doc-output-dir,
|
|
[ --with-doc-output-dir=DIR
|
|
Dir to generate docs into],
|
|
[ MOZ_DOC_OUTPUT_DIR=$withval ] )
|
|
AC_SUBST(MOZ_DOC_OUTPUT_DIR)
|
|
|
|
if test -z "$SKIP_COMPILER_CHECKS"; then
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Compiler Options
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(Compiler Options)
|
|
|
|
dnl ========================================================
|
|
dnl Check for gcc -pipe support
|
|
dnl ========================================================
|
|
AC_MSG_CHECKING([for 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 | ${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
|
|
|
|
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_RUN([ int main () {
|
|
if (sizeof(long long) != 8) { return 1; }
|
|
return 0; } ],
|
|
result="no", result="yes", result="maybe" )
|
|
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. ])
|
|
;;
|
|
maybe)
|
|
AC_MSG_WARN([Cannot test -pedantic long long bug when cross-compiling.])
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
|
|
dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
|
|
dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
|
|
dnl ========================================================
|
|
_SAVE_CXXFLAGS=$CXXFLAGS
|
|
CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
|
|
AC_CACHE_CHECK(for correct overload resolution with const and templates,
|
|
ac_nscap_nonconst_opeq_bug,
|
|
[AC_TRY_COMPILE([
|
|
template <class T>
|
|
class Pointer
|
|
{
|
|
public:
|
|
T* myPtr;
|
|
};
|
|
|
|
template <class T, class U>
|
|
int operator==(const Pointer<T>& rhs, U* lhs)
|
|
{
|
|
return rhs.myPtr == lhs;
|
|
}
|
|
|
|
template <class T, class U>
|
|
int operator==(const Pointer<T>& rhs, const U* lhs)
|
|
{
|
|
return rhs.myPtr == lhs;
|
|
}
|
|
],
|
|
[
|
|
Pointer<int> foo;
|
|
const int* bar;
|
|
return foo == bar;
|
|
],
|
|
ac_nscap_nonconst_opeq_bug="no",
|
|
ac_nscap_nonconst_opeq_bug="yes")])
|
|
CXXFLAGS="$_SAVE_CXXFLAGS"
|
|
|
|
if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
|
|
AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
|
|
fi
|
|
fi
|
|
|
|
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 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
|
|
|
|
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
|
|
|
|
# Irix & OSF native compilers do not like exception declarations
|
|
# when exceptions are disabled
|
|
if test "$_MOZ_CPP_EXCEPTIONS" -o -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 = OS/2 Build Options
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(OS/2 Build Options)
|
|
|
|
MOZ_ARG_WITH_STRING(os2emx,
|
|
[ --with-os2emx=FORMAT Build for OS/2 with emx+gcc, set to OMF or A.OUT],
|
|
MOZ_OS2_TOOLS=EMX
|
|
MOZ_OS2_EMX_OBJECTFORMAT="$withval"
|
|
AC_DEFINE(XP_OS2_EMX) )
|
|
|
|
MOZ_ARG_WITH_BOOL(os2vacpp,
|
|
[ --with-os2vacpp Build for OS/2 with VAC++],
|
|
MOZ_OS2_TOOLS=VACPP
|
|
AC_DEFINE(XP_OS2_VACPP) )
|
|
|
|
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"; then
|
|
_cpp_md_flag=1
|
|
fi])
|
|
if test "$_cpp_md_flag"; then
|
|
COMPILER_DEPEND=1
|
|
_DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(*F).pp)'
|
|
else
|
|
COMPILER_DEPEND=
|
|
_USE_CPP_INCLUDE_FLAG=
|
|
_DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
|
|
_DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_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)
|
|
|
|
BUILD_SHARED_LIBS=1
|
|
BUILD_STATIC_LIBS=
|
|
MOZ_STATIC_COMPONENT_LIBS=
|
|
|
|
MOZ_ARG_DISABLE_BOOL(shared,
|
|
[ --disable-shared Disable building of internal shared libs],
|
|
BUILD_SHARED_LIBS=)
|
|
|
|
MOZ_ARG_ENABLE_BOOL(static,
|
|
[ --enable-static Enable building of internal static libs],
|
|
BUILD_STATIC_LIBS=1
|
|
MOZ_STATIC_COMPONENT_LIBS=1)
|
|
|
|
if (test -z "$BUILD_SHARED_LIBS" && test -z "$BUILD_STATIC_LIBS") ||
|
|
(test -n "$BUILD_SHARED_LIBS" && test -n "$BUILD_STATIC_LIBS") ; then
|
|
AC_MSG_ERROR([Only one of --enable-shared or --enable-static must be specified.])
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl Generate static component from list of modules
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_STRING(meta-component-modules,
|
|
[ --enable-meta-component-modules=mod1[,mod2]
|
|
Build single meta-component from specified modules],
|
|
[ MOZ_STATIC_COMPONENTS=`echo $enableval | sed 's/,/ /g'` ] )
|
|
|
|
dnl ========================================================
|
|
dnl Enable the use of predefined meta components
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_STRING(meta-components,
|
|
[ --enable-meta-components
|
|
Build predefined meta-components],
|
|
[ MOZ_META_COMPONENTS=`echo $enableval | sed 's/,/ /g'` ] )
|
|
|
|
if test -n "$MOZ_STATIC_COMPONENTS" && test -n "$MOZ_META_COMPONENTS"; then
|
|
AC_MSG_ERROR([Simultaneous use of static-components & meta-components is not supported.])
|
|
fi
|
|
|
|
case "$target" in
|
|
*-*-aix*)
|
|
if test -z "${BUILD_STATIC_LIBS}" -o -n "${BUILD_SHARED_LIBS}"; then
|
|
if test -f /usr/lpp/xlC/bin/makeC++SharedLib_r; then
|
|
AIX_SHLIB_BIN='/usr/lpp/xlC/bin/makeC++SharedLib_r'
|
|
elif test -f /usr/vacpp/bin/makeC++SharedLib_r; then
|
|
AIX_SHLIB_BIN='/usr/vacpp/bin/makeC++SharedLib_r'
|
|
elif test -f /usr/ibmcxx/bin/makeC++SharedLib_r; then
|
|
AIX_SHLIB_BIN='/usr/ibmcxx/bin/makeC++SharedLib_r'
|
|
fi
|
|
AC_PATH_PROG(AIX_SHLIB_BIN, makeC++SharedLib_r, :)
|
|
if test ! -n "$AIX_SHLIB_BIN"; then
|
|
echo
|
|
echo "*** Unable to locate makeC++SharedLib_r, needed for creation of shared"
|
|
echo "*** libraries on AIX. You will only be able to build static libraries."
|
|
echo
|
|
BUILD_STATIC_LIBS=1
|
|
BUILD_SHARED_LIBS=
|
|
fi
|
|
fi
|
|
AC_SUBST(AIX_SHLIB_BIN)
|
|
|
|
dnl ========================================================
|
|
dnl Figure out if we are using a pre-5.0x version of the
|
|
dnl xlC compiler and if so, set flag
|
|
dnl ========================================================
|
|
|
|
if test ! "$GNU_CC" && test "$ac_cv_cpp_reinterpret_cast" = no ; then
|
|
CXXFLAGS="$CXXFLAGS -DAIX_XLC_364"
|
|
CFLAGS="$CFLAGS -DAIX_XLC_364"
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Standalone module options
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
|
|
|
|
dnl ========================================================
|
|
dnl = Only selectively build modules
|
|
dnl ========================================================
|
|
BUILD_MODULES=all
|
|
MOZ_ARG_ENABLE_STRING(standalone-modules,
|
|
[ --enable-standalone-modules=mod1[,mod2]
|
|
Enable standalone build of specific modules],
|
|
[ BUILD_MODULES=`echo $enableval | sed 's/,/ /g'` ] )
|
|
|
|
dnl Disable ldap if LDAP is not building all of Mozilla
|
|
dnl and ldap isn't in the standalone list
|
|
if test "$BUILD_MODULES" != "all" &&
|
|
test `echo "$BUILD_MODULES" | grep -c ldap` = 0 &&
|
|
test "$enable_ldap" != "yes"; then
|
|
MOZ_LDAP_XPCOM=
|
|
fi
|
|
|
|
dnl Check for GLib and libIDL.
|
|
dnl ========================================================
|
|
case "$target_os" in
|
|
msvc*|mksnt*|cygwin*|mingw*)
|
|
SKIP_IDL_CHECK="yes"
|
|
;;
|
|
*)
|
|
SKIP_IDL_CHECK="no"
|
|
;;
|
|
esac
|
|
|
|
dnl = Allow users to disable libIDL checking for standalone modules
|
|
MOZ_ARG_WITHOUT_BOOL(libIDL,
|
|
[ --without-libIDL Skip check for libIDL (standalone modules only)],
|
|
SKIP_IDL_CHECK="yes")
|
|
|
|
if test "$SKIP_IDL_CHECK" = "no"
|
|
then
|
|
if test "$MOZ_ENABLE_GTK2"; then
|
|
PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,,_LIBIDL_NOT_FOUND=1)
|
|
else
|
|
AM_PATH_LIBIDL($LIBIDL_VERSION,,_LIBIDL_NOT_FOUND=1)
|
|
fi
|
|
dnl
|
|
dnl If we don't have a libIDL config program & not cross-compiling,
|
|
dnl look for orbit-config instead.
|
|
dnl
|
|
if test -n "$_LIBIDL_NOT_FOUND" && test -z "$CROSS_COMPILE"; then
|
|
AC_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
|
|
if test -n "$ORBIT_CONFIG"; then
|
|
_ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
|
|
_ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
|
|
_ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
|
|
_ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
|
|
LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
|
|
LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
|
|
LIBIDL_CONFIG=
|
|
_LIBIDL_NOT_FOUND=
|
|
fi
|
|
fi
|
|
if test -n "$_LIBIDL_NOT_FOUND"; then
|
|
AC_MSG_ERROR([libIDL not found.
|
|
libIDL $LIBIDL_VERSION or higher is required.])
|
|
fi
|
|
fi
|
|
|
|
if test -n "$CROSS_COMPILE"; then
|
|
if test -z "$HOST_LIBIDL_CONFIG"; then
|
|
HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
|
|
fi
|
|
if test -n "$HOST_LIBIDL_CONFIG"; then
|
|
HOST_LIBIDL_CFLAGS=`${HOST_LIBIDL_CONFIG} --cflags`
|
|
HOST_LIBIDL_LIBS=`${HOST_LIBIDL_CONFIG} --libs`
|
|
else
|
|
HOST_LIBIDL_CFLAGS="$LIBIDL_CFLAGS"
|
|
HOST_LIBIDL_LIBS="$LIBIDL_LIBS"
|
|
fi
|
|
fi
|
|
|
|
if test -z "$SKIP_PATH_CHECKS" && test -z "$MOZ_ENABLE_GTK2"; then
|
|
if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then
|
|
AM_PATH_GLIB(${GLIB_VERSION})
|
|
fi
|
|
fi
|
|
|
|
if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
|
|
GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
|
|
fi
|
|
|
|
AC_SUBST(LIBIDL_CFLAGS)
|
|
AC_SUBST(LIBIDL_LIBS)
|
|
AC_SUBST(GLIB_CFLAGS)
|
|
AC_SUBST(GLIB_LIBS)
|
|
AC_SUBST(GLIB_GMODULE_LIBS)
|
|
AC_SUBST(HOST_LIBIDL_CONFIG)
|
|
AC_SUBST(HOST_LIBIDL_CFLAGS)
|
|
AC_SUBST(HOST_LIBIDL_LIBS)
|
|
|
|
dnl ========================================================
|
|
dnl Check for libart
|
|
dnl ========================================================
|
|
MOZ_LIBART_CFLAGS=
|
|
MOZ_LIBART_LIBS=
|
|
|
|
if test "$MOZ_SVG"; then
|
|
if test "$MOZ_INTERNAL_LIBART_LGPL"; then
|
|
dnl libart's configure hasn't been run yet, but we know what the
|
|
dnl answer should be anyway
|
|
MOZ_LIBART_CFLAGS='-I${DIST}/include/libart_lgpl'
|
|
case "$target_os" in
|
|
msvc*|mksnt*|cygwin*|mingw*)
|
|
MOZ_LIBART_LIBS='$(DIST)/lib/$(LIB_PREFIX)moz_art_lgpl.$(LIB_SUFFIX)'
|
|
;;
|
|
beos*)
|
|
MOZ_LIBART_LIBS='-lmoz_art_lgpl -lroot -lbe'
|
|
;;
|
|
*)
|
|
MOZ_LIBART_LIBS='-lmoz_art_lgpl -lm'
|
|
;;
|
|
esac
|
|
else
|
|
dnl Disable system libart until the pixel format changes are merged upstream
|
|
AC_MSG_ERROR([SVG requires a modified version of libart. To pull and build
|
|
this LGPL library, set MOZ_INTERNAL_LIBART_LGPL, and then rerun the
|
|
checkout stage])
|
|
dnl AM_PATH_LIBART($LIBART_VERSION,
|
|
dnl AC_MSG_ERROR(SVG requires at least version $LIBART_VERSION of libart))
|
|
dnl
|
|
dnl MOZ_LIBART_CFLAGS=$LIBART_CFLAGS
|
|
dnl MOZ_LIBART_LIBS=$LIBART_LIBS
|
|
fi
|
|
fi
|
|
|
|
AC_SUBST(MOZ_LIBART_CFLAGS)
|
|
AC_SUBST(MOZ_LIBART_LIBS)
|
|
AC_SUBST(MOZ_INTERNAL_LIBART_LGPL)
|
|
|
|
dnl ========================================================
|
|
dnl disable xul
|
|
dnl ========================================================
|
|
MOZ_XUL=1
|
|
MOZ_ARG_DISABLE_BOOL(xul,
|
|
[ --disable-xul Disable XUL (standalone modules only)],
|
|
MOZ_XUL= )
|
|
if test "$MOZ_XUL"; then
|
|
AC_DEFINE(MOZ_XUL)
|
|
AC_DEFINE(INCLUDE_XUL)
|
|
fi
|
|
AC_SUBST(MOZ_XUL)
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Cleanup section for misc ordering snafus
|
|
dnl =
|
|
if test "$OS_ARCH" = "WINNT" -a -z "$GNU_CC"; then
|
|
XPCOM_GLUE_LIBS='$(DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX) $(DIST)/lib/$(LIB_PREFIX)string_s.$(LIB_SUFFIX) $(DIST)/lib/$(LIB_PREFIX)string_obsolete_s.$(LIB_SUFFIX)'
|
|
MOZ_XPCOM_OBSOLETE_LIBS='$(DIST)/lib/$(LIB_PREFIX)xpcom_compat.$(LIB_SUFFIX)'
|
|
else
|
|
XPCOM_GLUE_LIBS='-L${DIST}/bin -L${DIST}/lib -lxpcomglue -lstring_s -lstring_obsolete_s'
|
|
MOZ_XPCOM_OBSOLETE_LIBS='-L${DIST}/bin -L${DIST}/lib -lxpcom_compat'
|
|
fi
|
|
|
|
dnl ========================================================
|
|
if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
|
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
|
|
fi
|
|
|
|
if test "$MOZ_LDAP_XPCOM"; then
|
|
LDAP_CFLAGS='-I${DIST}/public/ldap'
|
|
if test "$OS_ARCH" = "WINNT"; then
|
|
if test -n "$GNU_CC"; then
|
|
LDAP_LIBS='-L$(DIST)/lib -lnsldap32v50 -lnsldappr32v50'
|
|
else
|
|
LDAP_LIBS='$(DIST)/lib/$(LIB_PREFIX)nsldap32v50.${LIB_SUFFIX} $(DIST)/lib/$(LIB_PREFIX)/nsldappr32v50.${LIB_SUFFIX}'
|
|
fi
|
|
elif test "$VACPP"; then
|
|
LDAP_LIBS='$(DIST)/lib/$(LIB_PREFIX)ldap50.${LIB_SUFFIX} $(DIST)/lib/$(LIB_PREFIX)/prldap50.${LIB_SUFFIX}'
|
|
else
|
|
LDAP_LIBS='-L${DIST}/bin -L${DIST}/lib -lldap50 -llber50 -lprldap50'
|
|
fi
|
|
fi
|
|
|
|
if test "$SUNCTL"; then
|
|
dnl older versions of glib do not seem to have gmodule which ctl needs
|
|
_SAVE_CFLAGS=$CFLAGS
|
|
CFLAGS="$CFLAGS $GLIB_CFLAGS"
|
|
AC_LANG_SAVE
|
|
AC_LANG_C
|
|
AC_TRY_COMPILE([#include <gmodule.h>],
|
|
[ int x = 1; x++; ],,
|
|
[AC_MSG_ERROR([Cannot build ctl without gmodule support in glib.])])
|
|
AC_LANG_RESTORE
|
|
CFLAGS=$_SAVE_CFLAGS
|
|
AC_DEFINE(SUNCTL)
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Maintainer debug option (no --enable equivalent)
|
|
dnl =
|
|
dnl ========================================================
|
|
|
|
AC_SUBST(AR)
|
|
AC_SUBST(AR_FLAGS)
|
|
AC_SUBST(AR_LIST)
|
|
AC_SUBST(AR_EXTRACT)
|
|
AC_SUBST(AR_DELETE)
|
|
AC_SUBST(AS)
|
|
AC_SUBST(ASFLAGS)
|
|
AC_SUBST(AS_DASH_C_FLAG)
|
|
AC_SUBST(LD)
|
|
AC_SUBST(RC)
|
|
AC_SUBST(RCFLAGS)
|
|
AC_SUBST(WINDRES)
|
|
AC_SUBST(USE_SHORT_LIBNAME)
|
|
AC_SUBST(IMPLIB)
|
|
AC_SUBST(FILTER)
|
|
AC_SUBST(BIN_FLAGS)
|
|
AC_SUBST(NS_USE_NATIVE)
|
|
AC_SUBST(MOZ_WIDGET_TOOLKIT)
|
|
AC_SUBST(MOZ_WIDGET_TOOLKIT_LDFLAGS)
|
|
AC_SUBST(WIDGET_DLL)
|
|
AC_SUBST(GFXWIN_DLL)
|
|
AC_SUBST(MOZ_GFX_TOOLKIT)
|
|
AC_SUBST(MOZ_GFX_TOOLKIT_LDFLAGS)
|
|
AC_SUBST(MOZ_UPDATE_XTERM)
|
|
AC_SUBST(MOZ_MATHML)
|
|
AC_SUBST(MOZ_SVG)
|
|
AC_SUBST(TX_EXE)
|
|
AC_SUBST(MOZ_JS_LIBS)
|
|
AC_SUBST(MOZ_PSM)
|
|
AC_SUBST(BUILD_MODULES)
|
|
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(MOZ_DBGRINFO_MODULES)
|
|
AC_SUBST(MOZ_EXTENSIONS)
|
|
AC_SUBST(MOZ_IMG_DECODERS)
|
|
AC_SUBST(MOZ_JSDEBUGGER)
|
|
AC_SUBST(ENABLE_EAZEL_PROFILER)
|
|
AC_SUBST(EAZEL_PROFILER_CFLAGS)
|
|
AC_SUBST(EAZEL_PROFILER_LIBS)
|
|
AC_SUBST(XPCOM_GLUE_LIBS)
|
|
AC_SUBST(MOZ_PERF_METRICS)
|
|
AC_SUBST(GC_LEAK_DETECTOR)
|
|
AC_SUBST(MOZ_LOG_REFCNT)
|
|
AC_SUBST(MOZ_LEAKY)
|
|
AC_SUBST(MOZ_JPROF)
|
|
AC_SUBST(MOZ_XPCTOOLS)
|
|
AC_SUBST(MOZ_JSLOADER)
|
|
AC_SUBST(MOZ_USE_NATIVE_UCONV)
|
|
AC_SUBST(MOZ_INSURE)
|
|
AC_SUBST(MOZ_INSURE_DIRS)
|
|
AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
|
|
AC_SUBST(MOZ_INSURIFYING)
|
|
AC_SUBST(MOZ_LDAP_XPCOM)
|
|
AC_SUBST(MOZ_LDAP_XPCOM_EXPERIMENTAL)
|
|
AC_SUBST(LDAP_CFLAGS)
|
|
AC_SUBST(LDAP_LIBS)
|
|
AC_SUBST(LIBICONV)
|
|
|
|
AC_SUBST(HAVE_XIE)
|
|
AC_SUBST(MOZ_XIE_LIBS)
|
|
AC_SUBST(MOZ_XPRINT_CFLAGS)
|
|
AC_SUBST(MOZ_XPRINT_LDFLAGS)
|
|
AC_SUBST(MOZ_ENABLE_XPRINT)
|
|
AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
|
|
AC_SUBST(MOZ_XINERAMA_LIBS)
|
|
AC_SUBST(MOZ_ENABLE_XINERAMA)
|
|
|
|
AC_SUBST(XPCOM_USE_LEA)
|
|
AC_SUBST(BUILD_SHARED_LIBS)
|
|
AC_SUBST(BUILD_STATIC_LIBS)
|
|
AC_SUBST(MOZ_STATIC_COMPONENT_LIBS)
|
|
AC_SUBST(MOZ_STATIC_COMPONENTS)
|
|
AC_SUBST(MOZ_META_COMPONENTS)
|
|
AC_SUBST(ENABLE_TESTS)
|
|
AC_SUBST(IBMBIDI)
|
|
AC_SUBST(SUNCTL)
|
|
AC_SUBST(ACCESSIBILITY)
|
|
AC_SUBST(MOZ_XPINSTALL)
|
|
AC_SUBST(MOZ_SINGLE_PROFILE)
|
|
AC_SUBST(MOZ_XPFE_COMPONENTS)
|
|
AC_SUBST(MOZ_USER_DIR)
|
|
|
|
AC_SUBST(ENABLE_STRIP)
|
|
AC_SUBST(USE_ELF_DYNSTR_GC)
|
|
AC_SUBST(USE_PREBINDING)
|
|
AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
|
|
AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
|
|
AC_SUBST(MOZ_COMPONENT_XPCOM_LIBS)
|
|
AC_SUBST(MOZ_XPCOM_OBSOLETE_LIBS)
|
|
AC_SUBST(XPCOM_LIBS)
|
|
|
|
AC_SUBST(MOZ_BUILD_ROOT)
|
|
AC_SUBST(MOZ_OS2_TOOLS)
|
|
AC_SUBST(MOZ_OS2_EMX_OBJECTFORMAT)
|
|
|
|
AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
|
|
AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
|
|
AC_SUBST(MOZ_REORDER)
|
|
AC_SUBST(MOZ_TIMELINE)
|
|
|
|
dnl win32 options
|
|
AC_SUBST(MOZ_PROFILE)
|
|
AC_SUBST(MOZ_COVERAGE)
|
|
AC_SUBST(MOZ_MAPINFO)
|
|
AC_SUBST(MOZ_BROWSE_INFO)
|
|
AC_SUBST(MOZ_TOOLS_DIR)
|
|
AC_SUBST(CYGWIN_WRAPPER)
|
|
|
|
dnl Disable profile at startup, hack for tinderbox.
|
|
if test "$MOZ_BYPASS_PROFILE_AT_STARTUP"; then
|
|
AC_DEFINE(MOZ_BYPASS_PROFILE_AT_STARTUP)
|
|
fi
|
|
|
|
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`
|
|
|
|
dnl
|
|
dnl It is perfectly legal to build with both -O and -g even though
|
|
dnl some compilers/platforms might not support this.
|
|
dnl
|
|
|
|
dnl # Clean out '-O' flags if doing a debug build.
|
|
dnl if test "$MOZ_DEBUG"
|
|
dnl then
|
|
dnl changequote(,)dnl
|
|
dnl CFLAGS=` echo $CFLAGS | sed 's/ *-O[^ ]*//g;'`
|
|
dnl CXXFLAGS=`echo $CXXFLAGS | sed 's/ *-O[^ ]*//g;'`
|
|
dnl LDFLAGS=`echo $LDFLAGS | sed 's/ *-O[^ ]*//g;'`
|
|
dnl changequote([,])dnl
|
|
dnl fi
|
|
|
|
AC_SUBST(SYSTEM_MAKEDEPEND)
|
|
AC_SUBST(SYSTEM_JPEG)
|
|
AC_SUBST(SYSTEM_PNG)
|
|
AC_SUBST(SYSTEM_MNG)
|
|
AC_SUBST(SYSTEM_ZLIB)
|
|
|
|
AC_SUBST(JPEG_CFLAGS)
|
|
AC_SUBST(JPEG_LIBS)
|
|
AC_SUBST(ZLIB_CFLAGS)
|
|
AC_SUBST(ZLIB_LIBS)
|
|
AC_SUBST(PNG_CFLAGS)
|
|
AC_SUBST(PNG_LIBS)
|
|
AC_SUBST(MNG_CFLAGS)
|
|
AC_SUBST(MNG_LIBS)
|
|
|
|
AC_SUBST(MOZ_JPEG_CFLAGS)
|
|
AC_SUBST(MOZ_JPEG_LIBS)
|
|
AC_SUBST(MOZ_ZLIB_CFLAGS)
|
|
AC_SUBST(MOZ_ZLIB_LIBS)
|
|
AC_SUBST(MOZ_PNG_CFLAGS)
|
|
AC_SUBST(MOZ_PNG_LIBS)
|
|
AC_SUBST(MOZ_MNG_CFLAGS)
|
|
AC_SUBST(MOZ_MNG_LIBS)
|
|
|
|
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_LD)
|
|
AC_SUBST(HOST_RANLIB)
|
|
AC_SUBST(HOST_NSPR_MDCPUCFG)
|
|
|
|
AC_SUBST(TARGET_CPU)
|
|
AC_SUBST(TARGET_VENDOR)
|
|
AC_SUBST(TARGET_OS)
|
|
AC_SUBST(TARGET_NSPR_MDCPUCFG)
|
|
AC_SUBST(TARGET_MD_ARCH)
|
|
AC_SUBST(OS_TARGET)
|
|
AC_SUBST(OS_ARCH)
|
|
AC_SUBST(OS_RELEASE)
|
|
AC_SUBST(OS_TEST)
|
|
|
|
AC_SUBST(MOZ_DISABLE_DTD_DEBUG)
|
|
AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
|
|
AC_SUBST(MOZ_CHROME_FILE_FORMAT)
|
|
|
|
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_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(USE_N32)
|
|
AC_SUBST(CC_VERSION)
|
|
AC_SUBST(CXX_VERSION)
|
|
|
|
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 "$no_x" != "yes"; then
|
|
if test ! -z "$MISSING_X"; then
|
|
AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
|
|
fi
|
|
|
|
fi # $no_x
|
|
|
|
dnl Set various defines and substitutions
|
|
dnl ========================================================
|
|
|
|
if test "$OS_ARCH" = "OS2"; then
|
|
AC_DEFINE(XP_PC)
|
|
AC_DEFINE(XP_OS2)
|
|
if test "$VACPP" = "yes"; then
|
|
LIBS='so32dll.lib tcp32dll.lib'
|
|
fi
|
|
elif test "$OS_ARCH" = "WINNT"; then
|
|
AC_DEFINE(XP_PC)
|
|
elif 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_EMBED)
|
|
AC_DEFINE(UNIX_LDAP)
|
|
AC_DEFINE(UNIX_ASYNC_DNS)
|
|
elif test "$OS_ARCH" = "OpenVMS"; then
|
|
AC_DEFINE(XP_UNIX)
|
|
AC_DEFINE(UNIX_ASYNC_DNS)
|
|
else
|
|
AC_DEFINE(XP_UNIX)
|
|
AC_DEFINE(UNIX_ASYNC_DNS)
|
|
MOZ_MOVEMAIL=1
|
|
fi
|
|
AC_SUBST(MOZ_MOVEMAIL)
|
|
|
|
AC_DEFINE(JS_THREADSAFE)
|
|
AC_DEFINE(NS_PRINT_PREVIEW)
|
|
AC_DEFINE(NS_PRINTING)
|
|
|
|
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)
|
|
fi
|
|
|
|
# Used for LD_LIBRARY_PATH of run_viewer target
|
|
LIBS_PATH=
|
|
for lib_arg in $NSPR_LIBS $TK_LIBS; do
|
|
case $lib_arg in
|
|
-L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr $lib_arg : "-L\(.*\)"` ;;
|
|
* ) ;;
|
|
esac
|
|
done
|
|
AC_SUBST(LIBS_PATH)
|
|
|
|
my_srcdir=$srcdir
|
|
case "$target_os" in
|
|
msvc*|mksnt*|cygwin*|mingw*)
|
|
my_srcdir=`cygpath -w ${srcdir} | sed 's|\\\\|/|g'`
|
|
my_perl=$_WIN32_PERL
|
|
;;
|
|
*)
|
|
my_perl=$PERL
|
|
;;
|
|
esac
|
|
|
|
dnl Get mozilla version from central milestone file
|
|
MOZILLA_VERSION=`$my_perl $my_srcdir/config/milestone.pl -topsrcdir $my_srcdir`
|
|
AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
|
|
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=mozilla-config.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 _MOZILLA_CONFIG_H_
|
|
#define _MOZILLA_CONFIG_H_
|
|
EOF
|
|
sort confdefs.h >> $_CONFIG_TMP
|
|
|
|
cat >> $_CONFIG_TMP <<\EOF
|
|
|
|
#endif /* _MOZILLA_CONFIG_H_ */
|
|
|
|
EOF
|
|
|
|
# Only write mozilla-config.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
|
|
|
|
AC_SUBST(MOZ_DEFINES)
|
|
|
|
dnl Load the list of Makefiles to generate.
|
|
dnl To add new Makefiles, edit allmakefiles.sh.
|
|
dnl allmakefiles.sh sets the variable, MAKEFILES.
|
|
. ${srcdir}/allmakefiles.sh
|
|
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
|
|
case "$target_os" in
|
|
msvc*|mksnt*|cygwin*|mingw*)
|
|
MAKEFILES=`echo $MAKEFILES | sed -e 's|/cygdrive/\(.\)/|\1:/|g'`
|
|
;;
|
|
*)
|
|
esac
|
|
echo $MAKEFILES | $my_perl $my_srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
|
|
. ./conftest.sh
|
|
rm conftest.sh
|
|
|
|
echo $MAKEFILES > unallmakefiles
|
|
|
|
AC_OUTPUT($MAKEFILES)
|
|
|
|
dnl ========================================================
|
|
dnl = Setup a nice relatively clean build environment for
|
|
dnl = sub-configures.
|
|
dnl ========================================================
|
|
CC="$_SUBDIR_CC"
|
|
CXX="$_SUBDIR_CXX"
|
|
CFLAGS="$_SUBDIR_CFLAGS"
|
|
CPPFLAGS="$_SUBDIR_CPPFLAGS"
|
|
CXXFLAGS="$_SUBDIR_CXXFLAGS"
|
|
LDFLAGS="$_SUBDIR_LDFLAGS"
|
|
HOST_CC="$_SUBDIR_HOST_CC"
|
|
HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
|
|
HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
|
|
RC=
|
|
|
|
unset MAKEFILES
|
|
unset CONFIG_FILES
|
|
|
|
if test -z "$MOZ_NATIVE_NSPR" || test "$MOZ_LDAP_XPCOM"; then
|
|
ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
|
|
if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
|
|
ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
|
|
fi
|
|
if test -n "$HAVE_64BIT_OS"; then
|
|
ac_configure_args="$ac_configure_args --enable-64bit"
|
|
fi
|
|
AC_OUTPUT_SUBDIRS(nsprpub)
|
|
ac_configure_args="$_SUBDIR_CONFIG_ARGS"
|
|
fi
|
|
|
|
if test -z "$MOZ_NATIVE_NSPR"; then
|
|
# Hack to deal with the fact that we use NSPR_CFLAGS everywhere
|
|
AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
|
|
if test ! "$VACPP" && test "$OS_ARCH" != "WINNT"; then
|
|
NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$MOZ_BUILD_ROOT/dist --exec-prefix=$MOZ_BUILD_ROOT/dist --libs`
|
|
$PERL -pi.bak -e "s {^NSPR_LIBS\s*=.*} {NSPR_LIBS = $NSPR_LIBS }" config/autoconf.mk
|
|
fi
|
|
if test "$OS_ARCH" != "WINNT"; then
|
|
NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$MOZ_BUILD_ROOT/dist --exec-prefix=$MOZ_BUILD_ROOT/dist --cflags`
|
|
$PERL -pi.bak -e "s {^NSPR_CFLAGS\s*=.*} {NSPR_CFLAGS = $NSPR_CFLAGS }" config/autoconf.mk
|
|
fi
|
|
rm -f config/autoconf.mk.bak
|
|
fi
|
|
|
|
# if we're building the LDAP XPCOM component, we need to build
|
|
# the c-sdk first.
|
|
#
|
|
if test "$MOZ_LDAP_XPCOM"; then
|
|
|
|
# these subdirs may not yet have been created in the build tree.
|
|
# don't use the "-p" switch to mkdir, since not all platforms have it
|
|
#
|
|
if test ! -d "directory"; then
|
|
mkdir "directory"
|
|
fi
|
|
if test ! -d "directory/c-sdk"; then
|
|
mkdir "directory/c-sdk"
|
|
fi
|
|
if test ! -d "directory/c-sdk/ldap"; then
|
|
mkdir "directory/c-sdk/ldap"
|
|
fi
|
|
|
|
ac_configure_args="$_SUBDIR_CONFIG_ARGS --prefix=$MOZ_BUILD_ROOT/dist --with-dist-prefix=$MOZ_BUILD_ROOT/dist --without-nss --with-mozilla"
|
|
if test -n "$HAVE_64BIT_OS"; then
|
|
ac_configure_args="$ac_configure_args --enable-64bit"
|
|
fi
|
|
AC_OUTPUT_SUBDIRS(directory/c-sdk)
|
|
ac_configure_args="$_SUBDIR_CONFIG_ARGS"
|
|
fi
|