pjs/configure.in

1589 строки
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`
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
cat 1>&2 <<-EOF
Error: Your source tree contains the file,
$file
This is an indication that you previously built in the source
tree. Files built in the source tree can confuse the separate
objdir build.
You can clean up the source tree with the following steps:
1. cd $_topsrcdir
2. gmake realclean; build/autoconf/clean-config.sh
EOF
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"
GNU_CC=
GNU_CXX=
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 set the defaults first
dnl ========================================================
AS=
AS_DASH_C_FLAG='-c'
NS_USE_NATIVE=
DLL_SUFFIX="so"
dnl GNU specific defaults
dnl ========================================================
if test "$GNU_CC"; then
MKSHLIB='$(CXX) $(DSO_LDOPTS)'
DSO_LDOPTS='-shared -Wl,-h -Wl,$(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))'
DSO_CFLAGS='-fPIC'
# Turn on GNU specific features
# -Wall - turn on all warnings
# -pedantic - make compiler warn about non-ANSI stuff, and
# be a little bit stricter
# -pipe - speeds up the build a little by using pipes rather than
# temp files
_WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -pipe"
_DEFINES_CFLAGS='-include $(DEPTH)/config-defs.h'
_USE_CPP_INCLUDE_FLAG=1
else
MKSHLIB='$(LD) $(DSO_LDOPTS)'
DSO_LDOPTS='-shared -h $(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))'
DSO_CFLAGS='-KPIC'
_DEFINES_CFLAGS='$(ACDEFINES)'
fi
if test "$GNU_CXX"; then
# Turn on GNU specific features
_WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -pipe"
_DEFINES_CXXFLAGS='-include $(DEPTH)/config-defs.h'
_USE_CPP_INCLUDE_FLAG=1
else
_DEFINES_CXXFLAGS='$(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 System overrides of the defaults
dnl ========================================================
dnl the qsort routine under solaris is faulty
dnl Linux Alpha needs -mieee for FPU to work correctly
case "$target" in
*-*-aix*)
if test ! "$GNU_CC"; then
DSO_LDOPTS='-ldl -bM:SRE -brtl -berok -bexpall -bnoentry -L$(DIST)/lib'
DSO_CFLAGS='-DPIC -brtl -O -qnortti -qflag=w:w'
fi
MKSHLIB='/usr/ibmcxx/bin/makeC++SharedLib_r -p1 -brtl -berok --'
;;
*-*-solaris*)
AC_DEFINE(BROKEN_QSORT)
if test ! "$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)'
_WARNINGS_CFLAGS=''
_WARNINGS_CXXFLAGS=''
AS='$(CC)'
ASFLAGS='$(CFLAGS)'
fi
;;
*-*-sunos*)
DSO_LDOPTS=''
MKSHLIB='$(LD) $(DSO_LDOPTS)'
;;
alpha*-*-linux*)
CFLAGS="$CFLAGS -mieee"
CXXFLAGS="$CXXFLAGS -mieee"
;;
alpha*-*-osf*)
if test "$GNU_CC"; 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.1.0"
DSO_LDOPTS="-shared"
fi
if test ! "$GNU_CC"; then
DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
fi ;;
*-netbsd*)
DLL_SUFFIX="so.1.0"
DSO_CFLAGS='-fPIC'
DSO_LDOPTS='-shared -h $(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))'
MKSHLIB='$(LD) $(DSO_LDOPTS)'
MKSHLIB_FORCE_ALL='--whole-archive'
MKSHLIB_UNFORCE_ALL='--no-whole-archive'
CFLAGS="$CFLAGS -Dunix"
CXXFLAGS="$CXXFLAGS -Dunix"
dnl Test for a.out platform and handle C++ libraries correctly
if $CC -E - -dM </dev/null | grep -v __ELF__ >/dev/null; then
DSO_LDOPTS="-shared /usr/lib/c++rt0.o"
fi
if test "$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 $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
;;
*-hpux*)
if test ! "$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)'
if test ! "$GNU_CC"; then
CFLAGS="$CFLAGS -woff 3262"
CXXFLAGS="$CXXFLAGS -woff 3262"
MKSHLIB_FORCE_ALL='-all'
MKSHLIB_UNFORCE_ALL=
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_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 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 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 ========================================================
useRhapsody=`echo $target_os | egrep "^Rhapsody"`
MOZ_ARG_ENABLE_STRING(toolkit,
[ --enable-toolkit=\$val Enable \$val fe (defaults to gtk)],
[if test "$enableval" = "motif" \
-o "$enableval" = "gtk" \
-o "$useRhapsody" ; then
dnl nglayout only supports building with one toolkit,
dnl so ignore everything after the first comma (",").
MOZ_TOOLKIT=`echo "$enableval" | sed -e "s/,.*$//"`
else
AC_MSG_ERROR(Toolkit must be either gtk or motif.)
fi],
[if test "$useRhapsody" ; then
MOZ_TOOLKIT="rhapsody"
else
MOZ_TOOLKIT="gtk"
fi])
if echo ":$MOZ_TOOLKIT" | grep "motif" >/dev/null; then
if test "$no_x" != "yes"; then
if test "$x_includes"; then
MOTIF_XINCS="-xif -I$x_includes"
fi
$_detect_motif="${srcdir}/config/mkdetect/detect_motif.sh -cc '$CC' $MOTIF_XINCS"
MOTIF_VERSION=` $_detect_motif`
MOTIF_INCLUDES=` $_detect_motif -if`
MOTIF_STATIC_FLAGS=` $_detect_motif -sf`
MOTIF_DYNAMIC_FLAGS=`$_detect_motif -df`
MOTIF_DYNAMIC_PATHS=`$_detect_motif -dp`
MOTIF_REQUIRES_XPM=` $_detect_motif -xpm`
${srcdir}/config/mkdetect/detect_motif.sh --cleanup
fi
if test "$MOTIF_REQUIRES_XPM" = "True" -o "$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" \
-a "$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
if echo ":$MOZ_TOOLKIT" | grep "gtk" >/dev/null; 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 ! "$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 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 ! "$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_cv_gettimeofday_args=2],
[AC_TRY_COMPILE([#include <stdlib.h>
#include <sys/time.h>],
[struct timeval tv; gettimeofday(&tv);],
[ac_cv_gettimeofday_args=1],
[ac_cv_gettimeofday_args=0])])])
if test "$ac_cv_gettimeofday_args" = 1 ; then
AC_DEFINE(HAVE_GETTIMEOFDAY)
AC_MSG_RESULT(one argument)
elif test "$ac_cv_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_cv_syserrlist=true],
[ac_cv_syserrlist=false])])
if test "$ac_cv_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 "$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
dnl configure runs "rm -f conftest*" later so we know _tmp_output
dnl will get removed even if this test is interupted.
_tmp_output="conftest.out"
${CXX-g++} -fno-handle-exceptions conftest.C > $_tmp_output 2>&1
if egrep "warning.*renamed" $_tmp_output >/dev/null; 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_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 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= )
dnl build editor by default
MOZ_EDITOR=1
MOZ_ARG_DISABLE_BOOL(editor,
[ --disable-editor Dont build the editor],
MOZ_EDITOR= )
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 Build browsing profile by default
MOZ_BRPROF=1
MOZ_ARG_DISABLE_BOOL(brprof,
[ --disable-brprof Disable browsing profile cookie],
[MOZ_BRPROF= ] )
AC_DEFINE(MOZ_BRPROF)
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'` ])
_cpp_md_flag=
MOZ_ARG_DISABLE_BOOL(md,
[ --disable-md Do not use compiler-based dependencies ],
[],
[_cpp_md_flag=1],
[dnl Default is to turn on -MD if using GNU-compatible compilers
if test "$GNU_CC" -a "$GNU_CXX"; then
_cpp_md_flag=1
fi])
if test "$_cpp_md_flag"; then
COMPILER_DEPEND=1
MDDEPDIR='.deps'
_DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(*F).pp)'
fi
AC_SUBST(COMPILER_DEPEND)
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"; 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).],
[if echo "$enableval" | grep "\/" >/dev/null; 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],
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)
AC_SUBST(MOZ_BRPROF)
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(BUILD_XPIDL)
AC_SUBST(BUILD_IDLC)
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}" -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 ========================================================
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 "${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 ========================================================
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 "${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 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 "$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)
if test "x$ac_cv_lib_pthread_pthread_attr_init" = "xno" -a \
"x$ac_cv_lib_c_r_gethostbyname_r" = "xno"; then
AC_CHECK_LIB(c_r, pthread_attr_init,
NSPR_LIBS="-lc_r $NSPR_LIBS" USE_PTHREADS=1)
fi
case "$target" in
*-*-solaris*)
AC_DEFINE(_REENTRANT) ;;
*-*-linux*)
AC_DEFINE(_REENTRANT) ;;
alpha*-*-osf*)
if test "$GNU_CC"; 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 "${NSPR_DIR}" -a -d "${NSPR_DIR}"; then
NSPR_INCLUDE_DIR="${NSPR_DIR}/include"
NSPR_CFLAGS="-I${NSPR_INCLUDE_DIR}"
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_INCLUDE_DIR)
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 "$MISSING_X"; then
AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
fi
if test "$MISSING_GTK"; then
AC_MSG_ERROR([ Could not link sample program with the following gtk libraries: $MISSING_GTK ])
fi
if test "$MISSING_MOTIF"; then
AC_MSG_ERROR([ Could not find the following motif libraries: $MISSING_MOTIF ]);
fi
fi # $no_x
if test "$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 dir in lib modules modules/security; do
if test ! -d $dir; then rm -f $dir; mkdir $dir; 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)