gecko-dev/configure.in

1564 lines
46 KiB
Plaintext

dnl The contents of this file are subject to the Mozilla Public License
dnl Version 1.0 (the "License"); you may not use this file except in
dnl compliance with the License. You may obtain a copy of the License
dnl at http://www.mozilla.org/MPL/
dnl
dnl Software distributed under the License is distributed on an "AS IS"
dnl basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
dnl the License for the specific language governing rights and
dnl 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 this code under the MPL is Christopher
dnl Seawood, <cls@seawood.org>. Portions created by Christopher Seawood
dnl are Copyright (C) 1998 Christopher Seawood. All Rights Reserved.
dnl
dnl Contributors:
dnl Jamie Zawinski <jwz@jwz.org>
dnl gettimeofday args check
dnl
dnl Christopher Blizzard <blizzard@appliedtheory.com>
dnl gnomefe update & enable-pthreads
dnl
dnl Ramiro Estrugo <ramiro@netscape.com>
dnl X11 makedepend support
dnl Insure support.
dnl
dnl Process this file with autoconf to produce a configure script.
dnl ========================================================
AC_PREREQ(2.12)
AC_INIT(config/config.mk)
dnl AC_CONFIG_HEADER(include/config.h nsprpub/include/config.h)
AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
AC_CANONICAL_SYSTEM
dnl Set this define to make fixes w/o breaking anything else.
AC_DEFINE(USE_AUTOCONF)
dnl Always set this for mozilla.
AC_DEFINE(MOZILLA_CLIENT)
dnl d=`pwd`
dnl if [ test "${srcdir}" = "${d}" || test "${srcdir}" = "." ]; then
dnl AC_ERROR(Building in the srcdir is not supported! Please build from a separate objdir.)
dnl fi
dnl unset d
dnl Build optimized by default
dnl ========================================================
CFLAGS="${CFLAGS=-O}"
CXXFLAGS="${CXXFLAGS=-O}"
dnl Set the version number of the libs included with mozilla
dnl ========================================================
MOZJPEG=62
MOZPNG=95
dnl Set the minimum version of toolkit libs used by mozilla
dnl ========================================================
GTK_VERSION=1.2.0
dnl Set various checks
dnl ========================================================
MISSING_X=
MISSING_MOTIF=
MISSING_GTK=
dnl Check for invalid object directory setup.
dnl If the tree has already been built in topsrcdir,
dnl do not allow it to be built in a separate object
dnl directory unless the src tree is cleaned up.
dnl ========================================================
_topsrcdir=`cd \`dirname $0\`; pwd`
_objdir=`pwd`
# Check for a separate objdir
if test "$_topsrcdir" != "$_objdir"
then
# Check for a couple representative files in the source tree
for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
if test -f $file; then
echo 2>&1
echo "Error: Your source tree contains the file," 2>&1
echo " $file" 2>&1
echo 2>&1
echo " This is an indication that you have built in the source tree." 2>&1
echo " The files that were built in the source tree can mess up the" 2>&1
echo " separate objdir build in strange and mysterious ways." 2>&1
echo 2>&1
echo " You can clean up the source tree with the following steps:" 2>&1
echo " 1. cd $_topsrcdir" 2>&1
echo " 2. gmake realclean; build/autoconf/clean-config.sh" 2>&1
echo 2>&1
exit 1
break
fi
done
fi
dnl Checks for programs.
dnl ========================================================
AC_PROG_CC
AC_PROG_CXX
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
AC_PROG_CPP
AC_PROG_CXXCPP
AC_PROG_MAKE_SET
AC_PROG_INSTALL
AC_PROG_AWK
AC_PROG_RANLIB
AC_PATH_PROGS(EMACS, xemacs lemacs emacs, :)
AC_PATH_PROGS(PERL, perl5 perl, :)
AC_PATH_PROG(WHOAMI, whoami, :)
AC_PATH_PROG(UNZIP, unzip, :)
AC_PATH_PROG(ZIP, zip, :)
AC_PATH_XTRA
XLDFLAGS="$X_LIBS"
XLIBS="$X_EXTRA_LIBS"
if [ test "$GCC" = "yes" ]; then
GNU_CC=1
fi
if [ test "$GXX" = "yes" ]; then
GNU_CXX=1
fi
AC_SUBST(GNU_CC)
AC_SUBST(GNU_CXX)
dnl Checks for system specific bits
dnl ========================================================
dnl the qsort routine under solaris is faulty
dnl Linux Alpha needs -mieee for FPU to work correctly
dnl Note this case statement doesn't seem to handle [] as part of a regexp
dnl set the defaults first
dnl ========================================================
AS=
AS_DASH_C_FLAG='-c'
NS_USE_NATIVE=
DLL_SUFFIX="so"
MKSHLIB='$(LD) $(DSO_LDOPTS)'
DSO_LDOPTS='-shared -h $(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))'
DSO_CFLAGS='-KPIC'
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 ========================================================
if [ test "$GNU_CC" = 1]; then
MKSHLIB='$(CXX) $(DSO_LDOPTS)'
MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
DSO_LDOPTS='-shared -Wl,-h -Wl,$(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))'
DSO_CFLAGS='-fPIC'
# Turn on GNU specific features
_WARNINGS_CFLAGS="${_WARNINGS_CXXFLAGS} -Wall"
#_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -pedantic"
_DEFINES_CFLAGS='-include $(DEPTH)/config-defs.h'
_USE_CPP_INCLUDE_FLAG=1
else
_DEFINES_CFLAGS='$(ACDEFINES)'
fi
if [ test "$GNU_CXX" = 1]; then
# Turn on GNU specific features
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall"
#_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -pedantic"
_DEFINES_CXXFLAGS='-include $(DEPTH)/config-defs.h'
_USE_CPP_INCLUDE_FLAG=1
else
_DEFINES_CXXFLAGS='$(ACDEFINES)'
fi
dnl now the exceptions
dnl ========================================================
case "$target" in
*-*-aix*)
DLL_SUFFIX="so"
MKSHLIB_FORCE_ALL=''
MKSHLIB_UNFORCE_ALL=''
if [ test "$GNU_CC" != 1 ]; then
DSO_LDOPTS='-ldl -bM:SRE -brtl -berok -bexpall -bnoentry -L$(DIST)/lib'
DSO_CFLAGS='-DPIC -brtl -O -qnortti -qflag=w:w'
fi
dnl MKSHLIB='$(LD) $(DSO_LDOPTS)'
MKSHLIB='/usr/ibmcxx/bin/makeC++SharedLib_r -p1 -brtl -berok --'
;;
*-*-solaris*)
AC_DEFINE(BROKEN_QSORT)
if test -z "$GNU_CC"; then
LDFLAGS='-xildoff'
MKSHLIB='$(CXX) $(DSO_LDOPTS)'
MKSHLIB_FORCE_ALL='-z allextract'
MKSHLIB_UNFORCE_ALL=''
DSO_LDOPTS='-G -h $(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))'
AS='/usr/ccs/bin/as'
AS_DASH_C_FLAG=''
case `uname -m` in
sun4u)
ASFLAGS='-xarch=v8plus -DULTRA_SPARC -P -L -D_ASM -D__STDC__=0'
;;
*)
ASFLAGS='-xarch=v8 -P -L -D_ASM -D__STDC__=0'
;;
esac
NS_USE_NATIVE=1
else
MKSHLIB='$(CC) $(DSO_LDOPTS)'
dnl donm: you need to detect that gcc is built to use the gnu
dnl linker. You cant assume that here.
dnl
dnl MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
dnl MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
dnl
MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
AS='$(CC)'
ASFLAGS='$(CFLAGS)'
fi
;;
*-*-sunos*)
dnl Assumes the native ld is being used.
DSO_LDOPTS=''
MKSHLIB='ld $(DSO_LDOPTS)'
MKSHLIB_FORCE_ALL=''
MKSHLIB_UNFORCE_ALL=''
;;
alpha*-*-linux*)
CFLAGS="$CFLAGS -mieee"
CXXFLAGS="$CXXFLAGS -mieee"
;;
alpha*-*-osf*)
if [ test "$GNU_CC" = 1 ]; then
DSO_LDOPTS='-shared -Wl,-soname -Wl,$(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))'
else
CFLAGS="$CFLAGS -std1 -ieee_with_inexact"
CXXFLAGS="$CXXFLAGS -std1 -ieee_with_inexact"
DSO_LDOPTS='-shared -expect_unresolved \* -soname $(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))'
DSO_CFLAGS=
fi ;;
*-bsdi*)
case `uname -r` in
4.*) ;;
*)
DSO_CFLAGS=''
DSO_LDOPTS='-r'
;;
esac
;;
*-freebsd*)
if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` = "elf"; then
DLL_SUFFIX="so"
else
DLL_SUFFIX="so.1.0"
DSO_LDOPTS="-shared"
fi
if test -z "$GNU_CC"; then
DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
fi ;;
*-netbsd*)
DLL_SUFFIX="so.1.0"
DSO_CFLAGS='-fPIC'
DSO_LDOPTS='-Wl,-shared -Wl,-h -Wl,$(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))'
MKSHLIB='$(CXX) $(DSO_LDOPTS)'
if test -z "`$CC -E - -dM </dev/null | grep __ELF__`"; then
DSO_LDOPTS="-Bshareable"
fi
if test -n "$LIBRUNPATH"; then
DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
fi
;;
*-openbsd*)
DLL_SUFFIX="so.1.0"
DSO_CFLAGS='-fPIC'
DSO_LDOPTS='-shared -h $(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))'
MKSHLIB='$(LD) $(DSO_LDOPTS)'
if test -z "`$CC -E - -dM </dev/null | grep __ELF__`"; then
DSO_LDOPTS="-Bshareable /usr/lib/c++rt0.o"
fi
if test -n "$LIBRUNPATH"; then
DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
fi
;;
*-hpux*)
if test -z "$GNU_CC"; then
DSO_CFLAGS="+Z"
fi
DLL_SUFFIX="sl"
DSO_LDOPTS='-b -E -L$(DIST)/bin $(LDFLAGS)'
MKSHLIB='$(LD) $(DSO_LDOPTS)'
;;
*-irix*)
AC_DEFINE(IRIX6_3)
DSO_LDOPTS='-elf -shared'
MKSHLIB='$(CCC) $(DSO_LDOPTS)'
MKSHLIB_FORCE_ALL='-all'
MKSHLIB_UNFORCE_ALL=
if test "$GCC"x != "yesx"; then
CFLAGS="$CFLAGS -woff 3262"
CXXFLAGS="$CXXFLAGS -woff 3262"
else
MKSHLIB_FORCE_ALL=-Wl,-all
MKSHLIB_UNFORCE_ALL=-Wl,-none
fi
;;
esac
dnl Checks for typedefs, structures, and compiler characteristics.
dnl ========================================================
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_STRUCT_ST_RDEV
AC_STRUCT_TM
AC_STRUCT_TIMEZONE
dnl Check for int16_t, int32_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_int16_t=true],
[ac_int16_t=false])
ac_cv_int16_t=$ac_int16_t])
if test "$ac_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_int32_t=true],
[ac_int32_t=false])
ac_cv_int32_t=$ac_int32_t])
if test "$ac_int32_t" = true ; then
AC_DEFINE(HAVE_INT32_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_uint16_t=true],
[ac_uint16_t=false])
ac_cv_uint16_t=$ac_uint16_t])
if test "$ac_uint16_t" = true ; then
AC_DEFINE(HAVE_UINT16_T)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
dnl Checks for header files.
dnl ========================================================
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_HEADER_TIME
AC_CHECK_HEADERS(fcntl.h limits.h malloc.h paths.h strings.h unistd.h)
AC_CHECK_HEADERS(sys/bittypes.h sys/file.h sys/ioctl.h sys/time.h)
AC_CHECK_HEADERS(getopt.h ioctl.h filio.h systeminfo.h)
case $target in
*-aix4.3*)
;;
*)
AC_CHECK_HEADERS(sys/cdefs.h)
;;
esac
dnl Checks for libraries.
dnl ========================================================
AC_CHECK_LIB(c_r, gethostbyname_r,,
AC_CHECK_LIB(c, strcpy))
AC_CHECK_LIB(m, atan)
AC_CHECK_LIB(dl, dlopen)
if [ test -z "$GNU_CXX" ]; then
AC_CHECK_LIB(C, demangle)
fi
AC_CHECK_LIB(resolv, res_gethostbyaddr)
AC_CHECK_LIB(socket, getnetbyaddr)
AC_CHECK_LIB(util, login)
AC_CHECK_LIB(nsl, xdr_string)
AC_CHECK_LIB(elf, elf_rawdata)
AC_CHECK_LIB(intl, textdomain)
AC_CHECK_LIB(posix4, shm_open)
AC_CHECK_LIB(w, iswupper)
AC_CHECK_LIB(l, yywrap,,
AC_CHECK_LIB(fl, yywrap))
AC_CHECK_LIB(IDL, IDL_file_set,BUILD_XPIDL=1)
dnl Replace `main' with a function in -lC_r:
dnl AC_CHECK_LIB(C_r, main)
dnl Replace `main' with a function in -lSgm:
dnl AC_CHECK_LIB(Sgm, main)
dnl Replace `main' with a function in -laudio:
dnl AC_CHECK_LIB(audio, main)
dnl Replace `main' with a function in -ldld:
dnl AC_CHECK_LIB(dld, main)
dnl Replace `main' with a function in -ldnet_stub:
dnl AC_CHECK_LIB(dnet_stub, main)
dnl Replace `main' with a function in -lgen:
dnl AC_CHECK_LIB(gen, main)
dnl Replace `main' with a function in -lhash:
dnl AC_CHECK_LIB(hash, main)
dnl Replace `main' with a function in -lip6:
dnl AC_CHECK_LIB(ip6, main)
dnl Replace `main' with a function in -lipc:
dnl AC_CHECK_LIB(ipc, main)
dnl Replace `main' with a function in -lmalloc_cv:
dnl AC_CHECK_LIB(malloc_cv, main)
dnl Replace `main' with a function in -lPW:
dnl AC_CHECK_LIB(PW, main)
dnl Replace `main' with a function in -lots:
dnl AC_CHECK_LIB(ots, main)
dnl Replace `main' with a function in -lrt:
dnl AC_CHECK_LIB(rt, main)
dnl Replace `main' with a function in -lsvld:
dnl AC_CHECK_LIB(svld, main)
dnl Checks for library functions.
dnl ========================================================
AC_FUNC_ALLOCA
AC_PROG_GCC_TRADITIONAL
AC_FUNC_MEMCMP
AC_FUNC_MMAP
dnl AC_FUNC_SETVBUF_REVERSED
AC_TYPE_SIGNAL
AC_FUNC_STRCOLL
AC_FUNC_STRFTIME
AC_FUNC_UTIME_NULL
AC_FUNC_VFORK
AC_FUNC_VPRINTF
AC_CHECK_FUNCS(ftime getcwd gethostname getwd mkdir mktime putenv rmdir select)
AC_CHECK_FUNCS(socket strcspn strdup strerror strspn strstr strtol strtoul)
AC_CHECK_FUNCS(uname qsort snprintf waitid fork1 remainder lchown)
AC_CHECK_FUNCS(localtime_r)
AC_MSG_CHECKING(how to call gettimeofday)
AC_CACHE_VAL(ac_cv_gettimeofday_args,
[AC_TRY_COMPILE([#include <stdlib.h>
#include <sys/time.h>],
[struct timeval tv; struct timezone tzp;
gettimeofday(&tv, &tzp);],
[ac_gettimeofday_args=2],
[AC_TRY_COMPILE([#include <stdlib.h>
#include <sys/time.h>],
[struct timeval tv; gettimeofday(&tv);],
[ac_gettimeofday_args=1],
[ac_gettimeofday_args=0])])
ac_cv_gettimeofday_args=$ac_gettimeofday_args])
ac_gettimeofday_args=$ac_cv_gettimeofday_args
if test $ac_gettimeofday_args = 1 ; then
AC_DEFINE(HAVE_GETTIMEOFDAY)
AC_MSG_RESULT(one argument)
elif test $ac_gettimeofday_args = 2 ; then
AC_DEFINE(HAVE_GETTIMEOFDAY)
AC_DEFINE(GETTIMEOFDAY_TWO_ARGS)
AC_MSG_RESULT(two arguments)
else
AC_MSG_RESULT(unknown)
fi
dnl Checks for specific (libc) global variables
AC_MSG_CHECKING(for sys_errlist/sys_nerr)
AC_CACHE_VAL(ac_cv_syserrlist,
[AC_TRY_COMPILE([#include <stdio.h>
#include <errno.h>],
[char *foo = sys_errlist[sys_nerr-1];],
[ac_syserrlist=true],
[ac_syserrlist=false])
ac_cv_syserrlist=$ac_syserrlist])
ac_syserrlist=$ac_cv_syserrlist
if test $ac_syserrlist = true ; then
AC_DEFINE(HAVE_SYSERRLIST)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
dnl By default, turn rtti and exceptions off on g++/egcs
dnl ========================================================
if [ test -n "$GNU_CXX" ]; then
_MOZ_RTTI_FLAGS=-fno-rtti
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
_tmp_output="g++-output-$$"
${CXX-g++} -fno-handle-exceptions conftest.C > $_tmp_output 2>&1
if egrep "warning.*renamed" $_tmp_output >/dev/null 2>&1; then
ac_cv_cxx_exceptions_flags=-fno-exceptions
else
ac_cv_cxx_exceptions_flags=-fno-handle-exceptions
fi
rm -f $_tmp_output ])
AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
_MOZ_EXCEPTIONS_FLAGS=$ac_cv_cxx_exceptions_flags
fi
dnl Put your C++ language/feature checks below
dnl Is there a way to make AC_TRY_COMPILE use CXX instead of CC?
_SAVE_CC=$CC
CC=$CXX
ac_ext=C
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_ios_binary=true],
[ac_ios_binary=false])
ac_cv_ios_binary=$ac_ios_binary])
ac_ios_binary=$ac_cv_ios_binary
if test $ac_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_ios_bin=true],
[ac_ios_bin=false])
ac_cv_ios_bin=$ac_ios_bin])
ac_ios_bin=$ac_cv_ios_bin
if test $ac_ios_bin = true ; then
AC_DEFINE(HAVE_IOS_BIN)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
AC_CACHE_CHECK(for namespaces,
ac_cv_cpp_namespaces,
[AC_TRY_COMPILE(namespace X {},
using namespace X;,
ac_cv_cpp_namespaces=yes,
ac_cv_cpp_namespaces=no)])
if test $ac_cv_cpp_namespaces = yes ; then
AC_DEFINE(HAVE_CPP_NAMESPACES)
fi
AC_CACHE_CHECK(for C++ \"bool\" keyword,
ac_cv_cpp_bool,
[AC_TRY_COMPILE(bool b;,
b = true;,
ac_cv_cpp_bool=yes,
ac_cv_cpp_bool=no)])
if test $ac_cv_cpp_bool = no ; then
AC_DEFINE(NEEDS_bool)
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
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
AC_CACHE_CHECK(for C++ \"using\" keyword,
ac_cv_cpp_using,
[AC_TRY_COMPILE(class X { public: int go() {return 3;} };
class Y : public X {
private: using X::go;
};,
X x; Y y;,
ac_cv_cpp_using=yes,
ac_cv_cpp_using=no)])
if test $ac_cv_cpp_using = yes ; then
AC_DEFINE(HAVE_CPP_USING)
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 note that this one is reversed - if the test fails, then
dnl we require implementations of unused methods
AC_CACHE_CHECK(if C++ requires implementation of unused methods,
ac_cv_cpp_unused_required,
[AC_TRY_COMPILE(class X {private: 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
CC=$_SAVE_CC
ac_ext=c
dnl End of C++ language/feature 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 = Components and Features
dnl =
dnl ========================================================
MOZ_ARG_HEADER(Components and Features)
MOZ_ARG_DISABLE_BOOL(async-dns,
[ --disable-async-dns Disable separate dns thread],
NO_UNIX_ASYNC_DNS=1)
dnl build mozilla/nsprpub by default
MOZ_BUILD_NSPR=1
MOZ_ARG_DISABLE_BOOL(build-nspr,
[ --disable-build-nspr Dont build mozilla/nsprpub],
MOZ_BUILD_NSPR= )
dnl build mozilla/xpfe by default
MOZ_BUILD_XPFE=1
MOZ_ARG_DISABLE_BOOL(build-xpfe,
[ --disable-build-xpfe Dont build mozilla/xpfe],
MOZ_BUILD_XPFE= )
MOZ_ARG_ENABLE_BOOL(editor,
[ --enable-editor Enable editor],
MOZ_EDITOR=1)
dnl Remove this once clipboard is working.
MOZ_ARG_ENABLE_BOOL(new-clipboard,
[ --enable-new-clipboard Enable new clipboard.],
NEW_CLIPBOARD_SUPPORT=1)
dnl This will be part of the address book
dnl MOZ_ARG_ENABLE_BOOL(ldap,
dnl [ --enable-ldap Enable LDAP directory access],
dnl [ MOZ_LDAP=1 NO_UNIX_LDAP= ],
dnl [ NO_UNIX_LDAP=1 ])
MOZ_ARG_ENABLE_BOOL(mailnews,
[ --enable-mailnews Enable Mail & News],
[ MOZ_MAIL_NEWS=1 ] )
dnl Note: This conflicts with --disable-shared
MOZ_ARG_ENABLE_BOOL(oji,
[ --enable-oji Enable use of Open JVM Interface],
[MOZ_OJI=1 FULL_STATIC_BUILD= NO_SHARED_LIB=])
MOZ_ARG_ENABLE_BOOL(tests,
[ --enable-tests Enable test stubs],
ENABLE_TESTS=1)
dnl nglayout only supports building with one toolkit
dnl so ignore everything after the first,
dnl nglayout only supports building with one toolkit
dnl so ignore everything after the first ,
MOZ_ARG_ENABLE_STRING(toolkit,
[ --enable-toolkit=\$val Enable \$val fe (defaults to gtk)],
dnl [Toolkit must be either "gtk" or "Motif" (except on Rhapsody.)],
[
res=`echo $target_os| grep -c "^Rhapsody"`;
if test "$enableval" != "motif" && test "$enableval" != "gtk" && test $res = 0; then
AC_MSG_ERROR(Toolkit must be either gtk or motif.)
else
MOZ_TOOLKIT=`echo "$enableval" | sed -e "s/,.*//g" `
fi],
MOZ_TOOLKIT=USE_DEFAULT)
if test "$MOZ_TOOLKIT" = "USE_DEFAULT"; then
res=`echo $target_os| grep -c "^Rhapsody"`
if test $res != 0; then
MOZ_TOOLKIT="rhapsody"
else
MOZ_TOOLKIT="gtk"
fi
fi
dnl ========================================================
dnl =
dnl = Compiler Options
dnl =
dnl ========================================================
MOZ_ARG_HEADER(Compiler Options)
MOZ_ARG_DISABLE_BOOL(asserts,
[ --disable-asserts Disable asserts during debugging],
UNIX_SKIP_ASSERTS=1)
MOZ_ARG_ENABLE_BOOL_OR_STRING(debug,
[ --enable-debug Enable debug symbols],
[ MOZ_DEBUG=1 CFLAGS="$CFLAGS -g" CXXFLAGS="$CXXFLAGS -g" ],
[],
[MOZ_DEBUG_MODULES=`echo $enableval | sed 's|,| |g'` ])
MOZ_ARG_ENABLE_BOOL(md,
[ --enable-md Use compiler-based dependencies ],
[ COMPILER_DEPEND=1
MDDEPDIR='.deps'
_DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(*F).pp)' ]
)
AC_SUBST(MDDEPDIR)
dnl Make pedantic a flag for now since the builds currently choke on it.
MOZ_ARG_ENABLE_BOOL(pedantic,
[ --enable-pedantic Issue all warnings demanded by strict ANSI C ],
[ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -pedantic"
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -pedantic" ])
dnl Note: This should not be disabled if --enable-oji is set
MOZ_ARG_DISABLE_BOOL(shared,
[ --disable-shared Disable building of internal shared libs],
NO_SHARED_LIB=1)
dnl C++ rtti (g++/egcs only - for now)
dnl Should be smarter and check that the compiler does indeed have rtti
MOZ_ARG_ENABLE_BOOL(cpp-rtti,
[ --enable-cpp-rtti Enable C++ RTTI ],
[ _MOZ_RTTI_FLAGS=-frtti ]
)
dnl C++ exceptions (g++/egcs only - for now)
dnl Should be smarter and check that the compiler does indeed have exceptions
MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
[ --enable-cpp-exceptions Enable C++ exceptions ],
[ _MOZ_EXCEPTIONS_FLAGS=-fexceptions ]
)
dnl ========================================================
dnl =
dnl = Profiling and Instrumenting
dnl =
dnl ========================================================
MOZ_ARG_HEADER(Profiling and Instrumenting)
MOZ_ARG_ENABLE_BOOL(gprof,
[ --enable-gprof Enable gprof symbols],
[ _GPROF_CFLAGS="-pg" ])
MOZ_ARG_ENABLE_BOOL(insure,
[ --enable-insure Enable insure++ instrumentation (linux only)],
[ MOZ_INSURE="insure" MOZ_INSURIFYING=1 MOZ_INSURE_DIRS="mozilla" MOZ_INSURE_EXCLUDE_DIRS="mozilla/config" ])
MOZ_ARG_WITH_STRING(insure-dirs,
[ --with-insure-dirs=\$dirs Dirs to instrument ],
MOZ_INSURE_DIRS=$withval )
MOZ_ARG_WITH_STRING(insure-exclude-dirs,
[ --with-insure-exclude-dirs=\$dirs Dirs to not instrument ],
MOZ_INSURE_EXCLUDE_DIRS="mozilla/config $withval" )
MOZ_ARG_ENABLE_BOOL(profile,
[ --enable-profile Enable profiling (solaris only)],
MOZILLA_GPROF=1)
MOZ_ARG_ENABLE_BOOL(wrap-malloc,
[ --enable-wrap-malloc Wrap malloc calls (gnu linker only) (default=no) ],
[ if test "$GNU_CC" = 1; 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)'
fi])
MOZ_ARG_WITH_STRING(wrap-malloc,
[ --with-wrap-malloc-=\$dir Location of malloc wrapper library],
WRAP_MALLOC_LIB=$withval)
dnl ========================================================
dnl =
dnl = Misc. Options
dnl =
dnl ========================================================
MOZ_ARG_HEADER(Misc. Options)
MOZ_ARG_ENABLE_STRING(homedir,
[ --enable-homedir=\$val Set the homedir to \$val],
dnl [ Location of the mozilla user directory (default is ~/.mozilla).],
[res=`echo $enableval | grep -c "\/"`
if [ test $res != 0 ]; then
AC_MSG_ERROR("Homedir must be single relative path.")
else
AC_DEFINE(MOZ_USER_DIR,"$enableval")
fi],
AC_DEFINE(MOZ_USER_DIR,".mozilla") )
MOZ_ARG_ENABLE_BOOL(idltool,
[ --enable-idlc Build idl tool (default=no) ],
BUILD_IDLC=1)
MOZ_ARG_ENABLE_BOOL(xterm-updates,
[ --enable-xterm-updates Update XTERM titles with current command.],
MOZ_UPDATE_XTERM=1)
MOZ_ARG_ENABLE_BOOL(js-stubs,
[ --enable-js-stubs Use XPIDL JavaScript Stubs.],
AC_DEFINE(XPIDL_JS_STUBS))
dnl ========================================================
dnl =
dnl = Untested or Broken Options
dnl =
dnl ========================================================
MOZ_ARG_HEADER(Untested or Broken Options)
MOZ_ARG_ENABLE_BOOL(crypto,
[ --enable-crypto Enable use of SSL (untested)],
MOZ_SECURITY=1)
dnl Netcaster is dead
dnl MOZ_ARG_ENABLE_BOOL(netcast,
dnl [ --enable-netcast Enable use of netcast (untested)],
dnl MOZ_NETCAST=1)
dnl Note: This needs to come after --disable-shared
MOZ_ARG_ENABLE_BOOL(java,
[ --enable-java Enable use of java applets (untested)],
[MOZ_JAVA=1 FULL_STATIC_BUILD= NO_SHARED_LIB=])
MOZ_ARG_ENABLE_BOOL(mail-compose,
[ --enable-mail-compose Enable old Messenger mail composer ],
[ MOZ_MAIL_COMPOSE=1 MOZ_EDITOR=1 ])
dnl The new mail app is "smart-mail"
dnl MOZ_ARG_ENABLE_BOOL(smart-mail,
dnl [ --enable-smart-mail Enable HTML/RDF-based client-side mail (untested)],
dnl MOZ_SMART_MAIL=1)
MOZ_ARG_DISABLE_BOOL(static,
[ --disable-static Disable building of internal static libs (broken)],
NO_STATIC_LIB=1)
AC_SUBST(AS)
AC_SUBST(ASFLAGS)
AC_SUBST(AS_DASH_C_FLAG)
AC_SUBST(NS_USE_NATIVE)
AC_SUBST(MOZ_TOOLKIT)
AC_SUBST(MOZ_UPDATE_XTERM)
AC_SUBST(MOZ_SECURITY)
dnl AC_SUBST(MOZ_NETCAST)
AC_SUBST(MOZ_JAVA)
AC_SUBST(MOZ_OJI)
AC_SUBST(MOZ_DEBUG)
AC_SUBST(MOZ_DEBUG_MODULES)
AC_SUBST(MOZILLA_GPROF)
AC_SUBST(MOZ_INSURE)
AC_SUBST(MOZ_INSURE_DIRS)
AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
AC_SUBST(MOZ_INSURIFYING)
AC_SUBST(MOZ_MAIL_NEWS)
AC_SUBST(MOZ_BUILD_XPFE)
AC_SUBST(MOZ_BUILD_NSPR)
dnl AC_SUBST(MOZ_LDAP)
AC_SUBST(MOZ_EDITOR)
dnl Remove this once clipboard is working.
AC_SUBST(NEW_CLIPBOARD_SUPPORT)
AC_SUBST(UNIX_SKIP_ASSERTS)
AC_SUBST(NO_UNIX_ASYNC_DNS)
AC_SUBST(NO_SHARED_LIB)
AC_SUBST(NO_STATIC_LIB)
AC_SUBST(ENABLE_TESTS)
AC_SUBST(MOZ_USER_DIR)
dnl AC_SUBST(MOZ_SMART_MAIL)
AC_SUBST(MOZ_DOM)
AC_SUBST(MOZ_MAIL_COMPOSE)
AC_SUBST(FULL_STATIC_BUILD)
AC_SUBST(NO_UNIX_LDAP)
AC_SUBST(COMPILER_DEPEND)
AC_SUBST(BUILD_XPIDL)
AC_SUBST(BUILD_IDLC)
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
_SAVE_LDFLAGS="$LDFLAGS"
LDFLAGS="$XLDFLAGS $LDFLAGS"
AC_CHECK_LIB(X11, XDrawLines, [XLIBS="-lX11 $XLIBS"],
[MISSING_X="$MISSING_X -lX11"], $XLIBS)
AC_CHECK_LIB(Xext, XextAddDisplay, [XLIBS="-lXext $XLIBS"],
[MISSING_X="$MISSING_X -lXext"], $XLIBS)
AC_CHECK_LIB(ICE, IceFlush, [XLIBS="-lICE $XLIBS"],, $XLIBS)
AC_CHECK_LIB(SM, SmcCloseConnection, [XLIBS="-lSM $XLIBS"],, $XLIBS)
AC_CHECK_LIB(Xt, XtFree, [XLIBS="-lXt $XLIBS"],
[MISSING_X="$MISSING_X -lXt"], $XLIBS)
AC_CHECK_LIB(Xmu, XmuLookupString, [XLIBS="-lXmu $XLIBS"],
[MISSING_X="$MISSING_X -lXmu"], $XLIBS)
LDFLAGS="$_SAVE_LDFLAGS"
dnl Check for toolkit libs
dnl ========================================================
res=`echo :$MOZ_TOOLKIT | grep -c "motif"`
if [ test $res != 0 ]; then
if [ test "$no_x" != "yes" ]; then
if [ test ! -z "$x_includes" ]; then
MOTIF_XINCS="-xif -I$x_includes"
fi
MOTIF_VERSION=`${srcdir}/config/mkdetect/detect_motif.sh -cc "$CC" $MOTIF_XINCS`
MOTIF_INCLUDES=`${srcdir}/config/mkdetect/detect_motif.sh -cc "$CC" $MOTIF_XINCS -if`
MOTIF_STATIC_FLAGS=`${srcdir}/config/mkdetect/detect_motif.sh -cc "$CC" $MOTIF_XINCS -sf`
MOTIF_DYNAMIC_FLAGS=`${srcdir}/config/mkdetect/detect_motif.sh -cc "$CC" $MOTIF_XINCS -df`
MOTIF_DYNAMIC_PATHS=`${srcdir}/config/mkdetect/detect_motif.sh -cc "$CC" $MOTIF_XINCS -dp`
MOTIF_REQUIRES_XPM=`${srcdir}/config/mkdetect/detect_motif.sh -cc "$CC" $MOTIF_XINCS -xpm`
${srcdir}/config/mkdetect/detect_motif.sh --cleanup
fi
if [ test "$MOTIF_REQUIRES_XPM" = "True" || test "$MOTIF_VERSION" = "2.1" ]; then
_SAVE_LDFLAGS="$LDFLAGS"
LDFLAGS="$XLDFLAGS $LDFLAGS"
if [ test "$MOTIF_REQUIRES_XPM" = "True" ]; then
AC_CHECK_LIB(Xpm, XpmWriteFileFromImage,
TK_LIBS="-lXpm $TK_LIBS",
[MISSING_MOTIF="-lXpm $MISSING_MOTIF"], $XLIBS)
fi
if [ test "$MOTIF_VERSION" = "2.1" ]; then
AC_CHECK_LIB(Xp, XpGetPrinterList,
TK_LIBS="-lXp $TK_LIBS",
[MISSING_MOTIF="-lXp $MISSING_MOTIF"], $XLIBS)
fi
TK_LIBS="$XLDFLAGS $TK_LIBS"
LDFLAGS="$_SAVE_LDFLAGS"
fi
if [ test "$MOTIF_STATIC_LIB" = "unknown" && test "$MOTIF_DYNAMIC_LIB" = "unknown" ]; then
AC_ERROR("Cannot find neither dynamic nor static motif libraries.")
fi
# Get rid of offending error values
if test "$MOTIF_DYNAMIC_PATHS" = "unknown"; then
MOTIF_DYNAMIC_PATHS=
fi
if test "$MOTIF_DYNAMIC_FLAGS" = "unknown"; then
MOTIF_DYNAMIC_FLAGS=
fi
if test "$MOTIF_STATIC_FLAGS" = "unknown"; then
MOTIF_STATIC_FLAGS=
fi
if test "$MOTIF_INCLUDE_DIR" = "unknown"; then
MOTIF_INCLUDE_DIR=
fi
AC_ARG_WITH(static-motif,
[ --with-static-motif link motif statically if possible],
sysstaticmotif=$withval)
if [ test "$sysstaticmotif" != "yes" ]; then
_SAVE_LDFLAGS="$LDFLAGS"
LDFLAGS="$MOTIF_DYNAMIC_PATHS $XLDFLAGS $LDFLAGS"
AC_CHECK_LIB(Xm, XmStringCreate,
TK_LIBS="$MOTIF_DYNAMIC_PATHS $MOTIF_DYNAMIC_FLAGS $TK_LIBS",
[MISSING_MOTIF="$MOTIF_DYNAMIC_FLAGS $MISSING_MOTIF"],
$MOTIF_DYNAMIC_PATHS $TK_LIBS $XLIBS)
LDFLAGS="$_SAVE_LDFLAGS"
else
AC_CHECK_LIB(Xm, XmStringCreate,
TK_LIBS="$MOTIF_STATIC_FLAGS $TK_LIBS",
[MISSING_MOTIF="$MOTIF_STATIC_FLAGS $MISSING_MOTIF"],
$TK_LIBS $XLIBS)
fi
TK_CFLAGS="$MOTIF_INCLUDES"
fi
res=`echo :$MOZ_TOOLKIT | grep -c "gtk"`
if [ test $res != 0 ]; then
AM_PATH_GTK($GTK_VERSION,,
AC_MSG_ERROR(Test for GTK failed.))
AC_ARG_WITH(static-gtk,
[ --with-static-gtk link gtk statically if possible],
sysstaticgtk=$withval)
if [ test "$sysstaticgtk" != "yes" ]; then
TK_LIBS=$GTK_LIBS
else
changequote(,)
GTK_LIBS_LOC=`echo $GTK_LIBS | sed 's/\(.*\)\(-lgtk.*\)/\1/'`
GTK_STATIC_LOC=`echo $GTK_LIBS | sed 's/^ *-L\([^ ]*\) .*$/\1/'`
GTK_STATIC=`echo $GTK_LIBS | sed 's/^.*-l\(gtk[^ ]*\) .*/\1/'`
GDK_STATIC=`echo $GTK_LIBS | sed 's/^.*-l\(gdk[^ ]*\) .*/\1/'`
GLIB_STATIC_LOC=`echo $GTK_LIBS | sed -e 's/^.*-lgdk[^ ]* *-L\([^ ]*\).*$/\1/' -e 's/^.* -lgdk[^ ]* .*$//'`
if test -z "$GLIB_STATIC_LOC" ; then
GLIB_STATIC_LOC=$GTK_STATIC_LOC
fi
GMODULE_STATIC=`echo $GTK_LIBS | sed 's/^.*-l\(gmodule[^ ]*\) .*/\1/'`
GLIB_STATIC=`echo $GTK_LIBS | sed 's/^.*-l\(glib[^ ]*\) .*/\1/'`
GTK_OTHER_LIBS=`echo $GTK_LIBS | sed 's/^.*-lglib *\(.*\)/\1/'`
changequote([,])
TK_LIBS="$GTK_STATIC_LOC/lib${GTK_STATIC}.a"
TK_LIBS="$TK_LIBS $GTK_STATIC_LOC/lib${GDK_STATIC}.a"
TK_LIBS="$TK_LIBS $GLIB_STATIC_LOC/lib${GMODULE_STATIC}.a"
TK_LIBS="$TK_LIBS $GLIB_STATIC_LOC/lib${GLIB_STATIC}.a"
TK_LIBS="$TK_LIBS $GTK_LIBS_LOC $GTK_OTHER_LIBS"
fi
TK_CFLAGS=$GTK_CFLAGS
fi
fi # $no_x
AC_SUBST(GTK_CONFIG)
AC_SUBST(TK_CFLAGS)
AC_SUBST(TK_LIBS)
XCFLAGS="$X_CFLAGS"
AC_SUBST(XCFLAGS)
AC_SUBST(XLDFLAGS)
AC_SUBST(XLIBS)
dnl system JPEG support
dnl ========================================================
AC_ARG_WITH(jpeg,
[ --with-jpeg=\$dir use system libjpeg in \$dir if more recent],
JPEG_DIR=$withval)
_SAVE_CFLAGS=$CFLAGS
_SAVE_LDFLAGS=$LDFLAGS
_SAVE_LIBS=$LIBS
CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
if test "$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}" && test -d "${JPEG_DIR}" && test "$SYSTEM_JPEG" = 1]; then
JPEG_CFLAGS="-I${JPEG_DIR}/include"
JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
fi
dnl system ZLIB support
dnl ========================================================
AC_ARG_WITH(zlib,
[ --with-zlib=\$dir use system libz in \$dir],
ZLIB_DIR=$withval)
_SAVE_CFLAGS=$CFLAGS
_SAVE_LDFLAGS=$LDFLAGS
CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
if test "$ZLIB_DIR" = no; then
SYSTEM_ZLIB=
else
AC_MSG_CHECKING("for zlib.h")
AC_TRY_COMPILE([#include "zlib.h"], [],
[result="yes" SYSTEM_ZLIB=1],
[result="no" SYSTEM_ZLIB=])
AC_MSG_RESULT("$result")
fi
if [ test "$SYSTEM_ZLIB" = 1 ]; then
AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"],
[SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
fi
CFLAGS=$_SAVE_CFLAGS
LDFLAGS=$_SAVE_LDFLAGS
if [ test -n "${ZLIB_DIR}" && test -d "${ZLIB_DIR}" && test "$SYSTEM_ZLIB" = 1 ]; then
ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
fi
dnl system PNG Support
dnl ========================================================
AC_ARG_WITH(png,
[ --with-png=\$dir use system libpng in \$dir if more recent],
PNG_DIR=$withval)
_SAVE_CFLAGS=$CFLAGS
_SAVE_LDFLAGS=$LDFLAGS
_SAVE_LIBS=$LIBS
CFLAGS="-I${PNG_DIR}/include $ZLIB_CFLAGS $CFLAGS"
LDFLAGS="-L${PNG_DIR}/lib $ZLIB_LIBS -lz $LDFLAGS"
if test "$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 -n "${PNG_DIR}" && test -d "${PNG_DIR}" && test "$SYSTEM_PNG" = 1 ]; then
PNG_CFLAGS="-I${PNG_DIR}/include"
PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
fi
dnl system FullCircle/Talkback support (Crash-reporting mechanism)
dnl ==============================================================
AC_ARG_WITH(fullcircle,
[ --with-fullcircle=\$dir location of FullCircle headers and libraries],
FULLCIRCLE_DIR=$withval,
FULLCIRCLE_DIR=no)
if test "$FULLCIRCLE_DIR" = no; then
FULLCIRCLE_DIR=
else
_SAVE_CFLAGS=$CFLAGS
_SAVE_LDFLAGS=$LDFLAGS
_SAVE_LIBS=$LIBS
CFLAGS="$CFLAGS -I${FULLCIRCLE_DIR}"
LDFLAGS="$LDFLAGS -L${FULLCIRCLE_DIR}"
AC_MSG_CHECKING("for FC_Initialize in -ltalkback");
LIBS="-ltalkback $LIBS"
AC_TRY_LINK([
#include "fullcircle.h"
#include <stdio.h>
],
[FC_Initialize();
exit(0);]
,[FULLCIRCLE_LIB="-ltalkback $FULLCIRCLE_LIB" result="yes"],
[MISSING_FULLCIRCLE=1 result="no"])
AC_MSG_RESULT("$result")
CFLAGS=$_SAVE_CFLAGS
LDFLAGS=$_SAVE_LDFLAGS
LIBS=$_SAVE_LIBS
if [ test -n "$MISSING_FULLCIRCLE" ]; then
AC_MSG_ERROR([Could not find FullCircle Library]);
fi
fi
dnl system NSPR support
dnl we always use the system NSPR from now on...this option
dnl tells where to find nspr rather than whether to use it
dnl ========================================================
AC_ARG_WITH(pthreads,
[ --with-pthreads use system pthread library ],
[if test "$withval" = "yes"; then
AC_CHECK_LIB(pthread, pthread_attr_init,
NSPR_LIBS="-lpthread $NSPR_LIBS" USE_PTHREADS=1)
case "$target" in
*-*-solaris*)
AC_DEFINE(_REENTRANT) ;;
*-*-linux*)
AC_DEFINE(_REENTRANT) ;;
alpha*-*-osf*)
if [ test "$GNU_CC" = 1 ]; then
AC_DEFINE(_REENTRANT)
else
CFLAGS="$CFLAGS -pthread"
CXXFLAGS="$CXXFLAGS -pthread"
fi ;;
esac
fi] )
AC_ARG_WITH(nspr,
[ --with-nspr=\$dir location of nspr headers and libraries],
NSPR_DIR=$withval)
AC_ARG_WITH(nsprlib,
[ --with-nsprlib=\$dir location of nspr libraries],
NSPR_LIBDIR=$withval)
_SAVE_CFLAGS=$CFLAGS
_SAVE_LDFLAGS=$LDFLAGS
_SAVE_LIBS=$LIBS
CFLAGS="$CFLAGS -I${NSPR_DIR}/include"
if [ test "$NSPR_LIBDIR"x = "x" ]; then
LDFLAGS="$LDFLAGS -L${NSPR_DIR}/lib $NSPR_LIBS"
else
LDFLAGS="$LDFLAGS -L${NSPR_LIBDIR} $NSPR_LIBS"
fi
AC_MSG_CHECKING("for PR_GetCurrentThread in -lnspr3")
LIBS="-lnspr3 $NSPR_LIBS $LIBS"
AC_TRY_RUN(
#include <stdio.h>
#include <nspr.h>
int main () {
PRThread *dummy = PR_GetCurrentThread();
exit(0);
}
, [NSPR_LIBS="-lnspr3 $NSPR_LIBS" result="yes"],
[_NSPR_NEEDS_THREAD_LIB=1 result="no"],
[_NSPR_NEEDS_THREAD_LIB=1 result="no"] )
rm -f core
AC_MSG_RESULT("$result")
dnl XXX - Is this really the best way to do this check? - cls
if [ test "$_NSPR_NEEDS_THREAD_LIB" = 1 ]; then
LIBS=$_SAVE_LIBS
case "$target" in
*-*-solaris*)
AC_CHECK_LIB(pthread, pthread_attr_init,
NSPR_LIBS="-lpthread $NSPR_LIBS") ;;
*-*-linux*)
AC_CHECK_LIB(pthread, pthread_attr_init,
NSPR_LIBS="-lpthread $NSPR_LIBS") ;;
esac
AC_MSG_CHECKING("for PR_GetCurrentThread in -lnspr3 with thread lib")
LIBS="-lnspr3 $NSPR_LIBS $LIBS"
AC_TRY_RUN(
#include <stdio.h>
#include <nspr.h>
int main () {
PRThread *dummy = PR_GetCurrentThread();
exit(0);
}
, [NSPR_LIBS="-lnspr3 $NSPR_LIBS" result="yes"],
[MISSING_NSPR="$MISSING_NSPR -lnspr3" result="no"],
[MISSING_NSPR="$MISSING_NSPR -lnspr3" result="no"] )
rm -f core
AC_MSG_RESULT("$result")
fi
dnl AC_CHECK_LIB(nspr3, PR_GetUniqueIdentity, NSPR_LIBS="-lnspr3 $NSPR_LIBS",
dnl [MISSING_NSPR="$MISSING_NSPR -lnspr3"], $NSPR_LIBS)
AC_CHECK_LIB(plc3, PL_CreateOptState, NSPR_LIBS="-lplc3 $NSPR_LIBS",
[MISSING_NSPR="$MISSING_NSPR -lplc3"], $NSPR_LIBS)
AC_CHECK_LIB(plds3, PL_GetEvent, NSPR_LIBS="-lplds3 $NSPR_LIBS",
[MISSING_NSPR="$MISSING_NSPR -lplds3"], $NSPR_LIBS)
CFLAGS=$_SAVE_CFLAGS
LDFLAGS=$_SAVE_LDFLAGS
LIBS=$_SAVE_LIBS
if [ test -n "${NSPR_DIR}" && test -d "${NSPR_DIR}" ]; then
NSPR_CFLAGS="-I${NSPR_DIR}/include"
if [ test "$NSPR_LIBDIR"x != "x" ]; then
NSPR_LIBS="-L${NSPR_LIBDIR} ${NSPR_LIBS}"
else
NSPR_LIBS="-L${NSPR_DIR}/lib ${NSPR_LIBS}"
fi
fi
dnl End of nspr tests
dnl ========================================================
LDFLAGS=`echo \
$_WARNINGS_CFLAGS \
$LDFLAGS \
$CFLAGS`
dnl Echo the CFLAGS to remove extra whitespace.
CFLAGS=`echo \
$_WARNINGS_CFLAGS \
$_GPROF_CFLAGS \
$_DEPEND_CFLAGS \
$_DEFINES_CFLAGS \
$CFLAGS`
CXXFLAGS=`echo \
$_MOZ_RTTI_FLAGS \
$_MOZ_EXCEPTIONS_FLAGS \
$_WARNINGS_CXXFLAGS \
$_GPROF_CFLAGS \
$_DEPEND_CFLAGS \
$_DEFINES_CXXFLAGS \
$CXXFLAGS`
# Clean out '-O' flags if doing a debug build.
if test "$MOZ_DEBUG"
then
changequote(,)dnl
CFLAGS=` echo $CFLAGS | sed 's/ *-O[^ ]*//g;'`
CXXFLAGS=`echo $CXXFLAGS | sed 's/ *-O[^ ]*//g;'`
LDFLAGS=`echo $LDFLAGS | sed 's/ *-O[^ ]*//g;'`
changequote([,])dnl
fi
dnl Support for X11 makedepend, if found on the system
dnl ========================================================
AC_PATH_PROG(SYSTEM_MAKEDEPEND,makedepend)
AC_SUBST(SYSTEM_MAKEDEPEND)
AC_SUBST(SYSTEM_JPEG)
AC_SUBST(SYSTEM_PNG)
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(NSPR_CFLAGS)
AC_SUBST(NSPR_LIBS)
AC_SUBST(CFLAGS)
AC_SUBST(CXXFLAGS)
AC_SUBST(LDFLAGS)
AC_SUBST(LIBS)
AC_SUBST(WRAP_MALLOC_CFLAGS)
AC_SUBST(WRAP_MALLOC_LIB)
AC_SUBST(MKSHLIB)
AC_SUBST(MKSHLIB_FORCE_ALL)
AC_SUBST(MKSHLIB_UNFORCE_ALL)
AC_SUBST(DSO_CFLAGS)
AC_SUBST(DSO_LDOPTS)
AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, $DLL_SUFFIX)
AC_SUBST(DLL_SUFFIX)
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 -n "$MISSING_X"; then
AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
fi
if test -n "$MISSING_GTK"; then
AC_MSG_ERROR([ Could not link sample program with the following gtk libraries: $MISSING_GTK ])
fi
if test -n "$MISSING_MOTIF"; then
AC_MSG_ERROR([ Could not find the following motif libraries: $MISSING_MOTIF ]);
fi
fi # $no_x
if test -n "$MISSING_NSPR"; then
AC_MSG_ERROR([Could not find the following nspr libraries or could not run sample program: $MISSING_NSPR]);
fi
dnl Set various defines and substitutions
dnl ========================================================
# netlib stuff
AC_DEFINE(MODULAR_NETLIB)
MODULAR_NETLIB=1
AC_SUBST(MODULAR_NETLIB)
if test "$MODULAR_NETLIB" = ""; then
AC_DEFINE(CookieManagement)
fi
# imagelib
AC_DEFINE(STANDALONE_IMAGE_LIB)
STANDALONE_IMAGE_LIB=1
AC_SUBST(STANDALONE_IMAGE_LIB)
OS_TARGET=`uname -s`
AC_SUBST(OS_TARGET)
if test "$OS_TARGET" = "OS2"; then
AC_DEFINE(XP_PC)
elif test "$OS_TARGET" = "WINNT"; then
AC_DEFINE(XP_PC)
else
AC_DEFINE(XP_UNIX)
AC_DEFINE(UNIX_EMBED)
AC_DEFINE(X_PLUGINS)
AC_DEFINE(UNIX_LDAP)
AC_DEFINE(UNIX_ASYNC_DNS)
fi
AC_DEFINE(JS_THREADSAFE)
AC_DEFINE(LAYERS)
AC_DEFINE(NETSCAPE)
if test "$MOZ_EDITOR"; then
AC_DEFINE(NGEDITOR)
fi
dnl
dnl Remove this once clipboard is working.
dnl
if test "$NEW_CLIPBOARD_SUPPORT"; then
AC_DEFINE(NEW_CLIPBOARD_SUPPORT)
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)
dnl Spit out some output
dnl ========================================================
# Save the defines header file before autoconf removes it.
# (Do not add AC_DEFINE calls after this line.)
if test "$_USE_CPP_INCLUDE_FLAG"; then
CONFIG_DEFS_H=config-defs.h
# Only write config-defs.h when something changes (or it doesn't exist)
if test ! -f $CONFIG_DEFS_H \
|| diff confdefs.h $CONFIG_DEFS_H | grep \# > /dev/null; then
AC_MSG_RESULT("creating $CONFIG_DEFS_H")
cat > $CONFIG_DEFS_H <<\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.
*/
EOF
cat confdefs.h >> $CONFIG_DEFS_H
fi
fi
dnl Need to manual make the directories to get around deficiency in AC_OUTPUT
for d in lib modules modules/security; do
if [ test ! -d $d ]; then rm -f $d; mkdir $d; fi
done
# Load the list of Makefiles to generate.
# To add new Makefiles, edit allmakefiles.sh.
# allmakefiles.sh sets the variable, MAKEFILES.
. ${srcdir}/allmakefiles.sh
AC_OUTPUT($MAKEFILES)