mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-08 20:47:44 +00:00
2014 lines
56 KiB
Plaintext
2014 lines
56 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)
|
|
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 ========================================================
|
|
dnl =
|
|
dnl = Dont change the following two lines. Doing so breaks:
|
|
dnl =
|
|
dnl = CFLAGS="-foo" ./configure
|
|
dnl =
|
|
dnl ========================================================
|
|
CFLAGS="${CFLAGS=}"
|
|
CXXFLAGS="${CXXFLAGS=}"
|
|
|
|
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 The minimum libIDL that we need
|
|
LIBIDL_VERSION=0.6.3
|
|
|
|
dnl Set various checks
|
|
dnl ========================================================
|
|
MISSING_X=
|
|
MISSING_MOTIF=
|
|
MISSING_GTK=
|
|
|
|
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 -f client.mk cleansrcdir
|
|
***
|
|
EOF
|
|
exit 1
|
|
break
|
|
fi
|
|
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_INSTALL
|
|
AC_PROG_AWK
|
|
AC_PROG_RANLIB
|
|
|
|
dnl Be sure the make we use is GNU make.
|
|
AC_PATH_PROGS(MAKE, gmake make, :)
|
|
_make_try=`$MAKE --version 2>/dev/null`
|
|
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 warn about version 3.77 if we find it.
|
|
_make_vers=`$MAKE --version | grep Make | $AWK '{ print \$4 }' | sed 's/,//'`
|
|
if test "$_make_vers" = "3.77"
|
|
then
|
|
echo
|
|
echo "*** Found GNU Make 3.77. This version is known to have problems with the"
|
|
echo "*** wildcard function in certain circumstances. You may experience infinite"
|
|
echo "*** looping while building Mozilla with 3.77. If this happens, you can"
|
|
echo "*** either downgrade to 3.76.1 or try configuring with --disable-md."
|
|
echo
|
|
fi
|
|
|
|
AC_PROG_MAKE_SET
|
|
|
|
dnl Support for X11 makedepend, if found on the system
|
|
dnl ========================================================
|
|
AC_PATH_PROG(SYSTEM_MAKEDEPEND,makedepend)
|
|
|
|
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 ========================================================
|
|
AR='ar cr $@'
|
|
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 -W -Wconversion -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align"
|
|
|
|
_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 -W -Wconversion -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Woverloaded-virtual -Wsynth -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 -qflag=w:w'
|
|
fi
|
|
MKSHLIB='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))'
|
|
AR='$(CXX) -xar -o $@'
|
|
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 -msym -expect_unresolved \* -soname $(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))'
|
|
DSO_CFLAGS=
|
|
MKSHLIB_FORCE_ALL='-all'
|
|
MKSHLIB_UNFORCE_ALL='-none'
|
|
fi ;;
|
|
|
|
*-bsdi*)
|
|
case `uname -r` in
|
|
4.*) ;;
|
|
*)
|
|
DSO_CFLAGS=''
|
|
DSO_LDOPTS='-r'
|
|
_WARNINGS_CFLAGS="-Wall"
|
|
_WARNINGS_CXXFLAGS="-Wall"
|
|
;;
|
|
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'
|
|
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"
|
|
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*)
|
|
DLL_SUFFIX="sl"
|
|
if test ! "$GNU_CC"; then
|
|
DSO_CFLAGS="+Z"
|
|
fi
|
|
DSO_LDOPTS='-b -E -L$(DIST)/bin'
|
|
MKSHLIB='$(LD) $(DSO_LDOPTS)'
|
|
;;
|
|
|
|
*-irix*)
|
|
AC_DEFINE(IRIX6_3)
|
|
DSO_LDOPTS='-elf -shared'
|
|
MKSHLIB='$(CCC) $(DSO_LDOPTS)'
|
|
dnl I think this will probably break builds using both gcc and GNU ld.
|
|
MKSHLIB_FORCE_ALL='-Wl,-all'
|
|
MKSHLIB_UNFORCE_ALL='-Wl,-none'
|
|
if test "$GNU_CC"; then
|
|
_WARNINGS_CFLAGS="-Wall"
|
|
_WARNINGS_CXXFLAGS="-Wall"
|
|
else
|
|
CFLAGS="$CFLAGS -woff 3262"
|
|
CXXFLAGS="$CXXFLAGS -woff 3262"
|
|
fi
|
|
;;
|
|
|
|
esac
|
|
|
|
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"`
|
|
AC_ARG_ENABLE(toolkit,
|
|
[ --enable-toolkit=\$val Enable \$val fe (defaults to gtk)],
|
|
[if test "$enableval" = "motif" \
|
|
-o "$enableval" = "gtk" \
|
|
-o "$enableval" = "xlib" \
|
|
-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 xlib, 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 Check for GLib and libIDL.
|
|
dnl ========================================================
|
|
SKIP_IDL_CHECK="no"
|
|
|
|
dnl RedHat 6.0 (Hedwig) ships with orbit which includes libIDL
|
|
if test -f /etc/redhat-release
|
|
then
|
|
if egrep "Hedwig" /etc/redhat-release >/dev/null
|
|
then
|
|
if test -x /usr/bin/orbit-config
|
|
then
|
|
SKIP_IDL_CHECK="yes"
|
|
BUILD_XPIDL=1
|
|
LIBIDL_CFLAGS="-I/usr/lib/glib/include"
|
|
LIBIDL_LIBS="-lglib -lIDL"
|
|
AC_SUBST(LIBIDL_CFLAGS)
|
|
AC_SUBST(LIBIDL_LIBS)
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if test "$SKIP_IDL_CHECK" = "no"
|
|
then
|
|
AM_PATH_LIBIDL($LIBIDL_VERSION,BUILD_XPIDL=1,
|
|
[echo libIDL $LIBIDL_VERSION or higher is required.]
|
|
[echo Get yourself a RPM or source package from ftp://ftp.mozilla.org/]
|
|
[echo before your tree is HOSED.]
|
|
[echo See http://www.rpi.edu/~veliaa/libIDL/ for more information.]
|
|
[AC_MSG_ERROR(libIDL not installed.)])
|
|
fi
|
|
|
|
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 header files.
|
|
dnl ========================================================
|
|
AC_HEADER_DIRENT
|
|
dnl Already done above by AC_TYPE_MODE_T.
|
|
dnl AC_HEADER_STDC
|
|
AC_HEADER_SYS_WAIT
|
|
AC_HEADER_TIME
|
|
dnl the unistd.h check is redundant, because AC_FUNC_MMAP already does it.
|
|
dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h paths.h strings.h unistd.h)
|
|
AC_CHECK_HEADERS(fcntl.h limits.h malloc.h paths.h strings.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 compat.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)
|
|
|
|
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(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))
|
|
|
|
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 ========================================================
|
|
dnl =
|
|
dnl = pthread support
|
|
dnl =
|
|
dnl ========================================================
|
|
dnl
|
|
dnl Start by checking whether the system support pthreads
|
|
dnl
|
|
|
|
USE_PTHREADS=
|
|
PTHREAD_LDFLAGS=""
|
|
|
|
dnl
|
|
dnl Try lib pthread
|
|
dnl
|
|
AC_CHECK_LIB(pthread, pthread_attr_init,
|
|
USE_PTHREADS=1 PTHREAD_LDFLAGS="-lpthread")
|
|
|
|
dnl
|
|
dnl If the above test failed, try lib c_r
|
|
dnl
|
|
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,
|
|
USE_PTHREADS=1 PTHREAD_LDFLAGS="-lc_r")
|
|
fi
|
|
|
|
dnl
|
|
dnl Check the command line for --with-pthreads
|
|
dnl
|
|
AC_ARG_WITH(pthreads,
|
|
[ --with-pthreads use system pthread library ],
|
|
[if test "$withval" = "yes"
|
|
then
|
|
if test "$USE_PTHREADS"x = x
|
|
then
|
|
AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
|
|
fi
|
|
else
|
|
USE_PTHREADS=
|
|
PTHREAD_LDFLAGS=""
|
|
fi] )
|
|
|
|
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
|
|
CFLAGS="$CFLAGS -pthread"
|
|
CXXFLAGS="$CXXFLAGS -pthread"
|
|
fi
|
|
fi
|
|
rm -f conftest*
|
|
|
|
case "$target" in
|
|
*-*-solaris*)
|
|
AC_DEFINE(_REENTRANT)
|
|
if test ! "$GNU_CC"; then
|
|
CFLAGS="$CFLAGS -mt"
|
|
CXXFLAGS="$CXXFLAGS -mt"
|
|
fi
|
|
;;
|
|
|
|
*-*-linux*)
|
|
AC_DEFINE(_REENTRANT)
|
|
;;
|
|
|
|
alpha*-*-osf*)
|
|
AC_DEFINE(_REENTRANT)
|
|
;;
|
|
|
|
*-*-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=""
|
|
else
|
|
PTHREAD_LDFLAGS="-lc_r"
|
|
fi
|
|
;;
|
|
esac
|
|
AC_MSG_RESULT($ac_cv_have_dash_pthread)
|
|
fi
|
|
|
|
dnl
|
|
dnl Add the pthread flags to the nspr libs
|
|
dnl ========================================================
|
|
NSPR_LIBS="$NSPR_LIBS $PTHREAD_LDFLAGS"
|
|
|
|
dnl Check for NSPR.
|
|
dnl ========================================================
|
|
dnl
|
|
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(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
|
|
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
|
|
dnl If NSPR was not detected in the system, use the one in the source
|
|
dnl tree (mozilla/nsprpub)
|
|
dnl
|
|
dnl NSPR_INCLUDE_DIR and NSPR_CFLAGS are blank because NSPR built as
|
|
dnl part of the mozilla build, will install its headers and libs in
|
|
dnl the same place as mozilla.
|
|
dnl
|
|
if test "$MISSING_NSPR"; then
|
|
|
|
dnl AC_MSG_ERROR([Could not find the following nspr libraries or could not run sample program: $MISSING_NSPR]);
|
|
|
|
echo
|
|
echo "*** NSPR was not detected in your system. This is not a problem."
|
|
echo "*** I will use the one in the current source tree instead. "
|
|
echo
|
|
sleep 3
|
|
|
|
NSPR_INCLUDE_DIR=
|
|
NSPR_CFLAGS=
|
|
NSPR_LIBS="-lplds3 -lplc3 -lnspr3 $PTHREAD_LDFLAGS"
|
|
dnl
|
|
dnl Otherwise, we are using an NSPR installed in the system.
|
|
dnl
|
|
dnl We need to set MOZ_NATIVE_NSPR so that mozilla/nsprpub is not built.
|
|
dnl
|
|
else
|
|
MOZ_NATIVE_NSPR=1
|
|
fi
|
|
|
|
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 statvfs)
|
|
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
|
|
|
|
${CXX-g++} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
|
|
|
|
if egrep "warning.*renamed" conftest.out >/dev/null; then
|
|
ac_cv_cxx_exceptions_flags=-fno-exceptions
|
|
else
|
|
ac_cv_cxx_exceptions_flags=-fno-handle-exceptions
|
|
fi
|
|
|
|
rm -f conftest*])
|
|
|
|
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(whether 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 ========================================================
|
|
dnl =
|
|
dnl = Internationalization checks
|
|
dnl =
|
|
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 catagory = 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
|
|
|
|
|
|
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/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 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)
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = --enable-optimize
|
|
dnl =
|
|
dnl = Enable code optimization. OFF by default.
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_OPTIMIZE=
|
|
|
|
if test ! "$MOZ_OPTIMIZE_FLAGS"
|
|
then
|
|
MOZ_OPTIMIZE_FLAGS="-O"
|
|
fi
|
|
|
|
MOZ_ARG_ENABLE_BOOL(optimize,
|
|
[ --enable-optimize Enable code optimizations ],
|
|
[ MOZ_OPTIMIZE=1 ])
|
|
|
|
if test "$MOZ_OPTIMIZE"
|
|
then
|
|
CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
|
|
CXXFLAGS="$CXXFLAGS $MOZ_OPTIMIZE_FLAGS"
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = --disable-debug
|
|
dnl =
|
|
dnl = Disable building with debug info.
|
|
dnl =
|
|
dnl = Debugging is ON by default so that we get more useful
|
|
dnl = bug reports.
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_DEBUG=1
|
|
|
|
if test ! "$MOZ_DEBUG_FLAGS"
|
|
then
|
|
MOZ_DEBUG_FLAGS="-g"
|
|
fi
|
|
|
|
MOZ_ARG_DISABLE_BOOL(debug,
|
|
[ --disable-debug Disable building with debug info],
|
|
MOZ_DEBUG=)
|
|
|
|
if test "$MOZ_DEBUG"
|
|
then
|
|
CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
|
|
CXXFLAGS="$CXXFLAGS $MOZ_DEBUG_FLAGS"
|
|
fi
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = --with-debug-modules=module1,module1,etc
|
|
dnl =
|
|
dnl = Enable debug for specific modules only
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_WITH_STRING(debug-modules,
|
|
[ --with-debug-modules Enable debug for specific modulues only],
|
|
[ MOZ_DEBUG_MODULES=`echo $withval | sed 's|,| |g'` ] )
|
|
dnl ========================================================
|
|
|
|
_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 -Wno-long-long" ])
|
|
|
|
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_DISABLE_BOOL(double-buffer,
|
|
[ --disable-double-buffer Disable double buffering],
|
|
AC_DEFINE(NO_DOUBLE_BUFFER))
|
|
|
|
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 = nsString hackery - This is expected to be a shirt lived
|
|
dnl = variable. It will be yanked once nsString2 replaces
|
|
dnl = nsString completely.
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_ARG_ENABLE_BOOL(string2,
|
|
[ --enable-string2 Enable the use of nsString2 ],
|
|
USE_STRING2=1)
|
|
|
|
if test "$USE_STRING2"
|
|
then
|
|
AC_DEFINE(USE_STRING2)
|
|
fi
|
|
|
|
|
|
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)
|
|
|
|
dnl commenting this out
|
|
dnl according to waterson it is obsolete.
|
|
dnl I'll remove it once I hear back from jband.
|
|
dnl MOZ_ARG_ENABLE_BOOL(js-stubs,
|
|
dnl [ --enable-js-stubs Use XPIDL JavaScript Stubs.],
|
|
dnl 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=])
|
|
|
|
if test "$MOZ_OJI" -a "$MOZ_JAVA"
|
|
then
|
|
echo "configure: error: Simultaneous use of --enable-java and\
|
|
--enable-oji is no longer supported." 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
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(AR)
|
|
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)
|
|
dnl AC_SUBST(MOZ_LDAP)
|
|
AC_SUBST(MOZ_EDITOR)
|
|
AC_SUBST(MOZ_BRPROF)
|
|
|
|
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
|
|
|
|
|
|
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`
|
|
|
|
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_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(MOZ_NATIVE_NSPR)
|
|
|
|
AC_SUBST(CFLAGS)
|
|
AC_SUBST(CXXFLAGS)
|
|
AC_SUBST(LDFLAGS)
|
|
AC_SUBST(LIBS)
|
|
|
|
AC_SUBST(USE_STRING2)
|
|
|
|
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
|
|
|
|
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
|
|
|
|
# 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 ========================================================
|
|
dnl =
|
|
dnl = rpm support
|
|
dnl =
|
|
dnl ========================================================
|
|
MOZ_RPM_NSPR_OPTIMIZE="BUILD_OPT=1"
|
|
MOZ_RPM_PREFIX="/usr"
|
|
MOZ_RPM_RELEASE="SeaMonkey_M4_BRANCH_19990409"
|
|
MOZ_RPM_SEAMONKEY_OPTIMIZE="--disable-debug"
|
|
MOZ_RPM_TMP="/tmp"
|
|
MOZ_RPM_VERSION="5.0"
|
|
|
|
AC_SUBST(MOZ_RPM_NSPR_OPTIMIZE)
|
|
AC_SUBST(MOZ_RPM_PREFIX)
|
|
AC_SUBST(MOZ_RPM_RELEASE)
|
|
AC_SUBST(MOZ_RPM_SEAMONKEY_OPTIMIZE)
|
|
AC_SUBST(MOZ_RPM_TMP)
|
|
AC_SUBST(MOZ_RPM_VERSION)
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = Support for feeding NSPR environment variables via
|
|
dnl = a file as opposed to the environment itself.
|
|
dnl =
|
|
dnl = The following 2 files get generated by configure and
|
|
dnl = copied into
|
|
dnl =
|
|
dnl = build/unix/nspr_my_config.mk support
|
|
dnl = build/unix/nspr_my_override.mk support
|
|
dnl =
|
|
dnl = nsprpub/config
|
|
dnl =
|
|
dnl = NSPR will then include these files in its build environment.
|
|
dnl =
|
|
dnl = The following variables might need to be set to properly
|
|
dnl = build NSPR for unix:
|
|
dnl =
|
|
dnl = my_config.mk:
|
|
dnl =
|
|
dnl = USE_PTHREADS
|
|
dnl = BUILD_OPT
|
|
dnl = NS_USE_GCC
|
|
dnl = NO_MDUPDATE
|
|
dnl = NS_USE_NATIVE
|
|
dnl = MOZILLA_CLIENT
|
|
dnl =
|
|
dnl = my_overrides.mk:
|
|
dnl =
|
|
dnl = DIST
|
|
dnl =
|
|
dnl ========================================================
|
|
if test ! "$MOZ_NATIVE_NSPR"
|
|
then
|
|
dnl
|
|
dnl USE_PTHREADS
|
|
dnl
|
|
dnl This flag controls whether NSPR use pthreads, which are usually
|
|
dnl native to many unices, to implement multithreading. On systems
|
|
dnl which dont support pthreads, NSPR uses its own user threads
|
|
dnl implementation.
|
|
dnl
|
|
dnl Different unices have different defaults for USE_PTHREADS within
|
|
dnl NSPR. Since at this point in configure.in, we know what we
|
|
dnl want, we force USE_PTHREADS to the correct value.
|
|
dnl
|
|
|
|
dnl
|
|
dnl USE_PTHREADS
|
|
dnl
|
|
dnl Same as detected above.
|
|
dnl
|
|
MOZ_NSPRENV_USE_PTHREADS=$USE_PTHREADS
|
|
|
|
dnl
|
|
dnl BUILD_OPT
|
|
dnl
|
|
dnl This flag controls whether NSPR is built with debug info
|
|
dnl
|
|
if test "$MOZ_DEBUG"
|
|
then
|
|
MOZ_NSPRENV_BUILD_OPT=
|
|
else
|
|
MOZ_NSPRENV_BUILD_OPT=1
|
|
fi
|
|
|
|
dnl
|
|
dnl NS_USE_GCC
|
|
dnl NS_USE_NATIVE
|
|
dnl
|
|
dnl These are NSPR's way of switching between "native" and GNU compilers
|
|
dnl
|
|
if test "$GNU_CC"
|
|
then
|
|
MOZ_NSPRENV_NS_USE_GCC=1
|
|
MOZ_NSPRENV_NS_USE_NATIVE=
|
|
else
|
|
MOZ_NSPRENV_NS_USE_NATIVE=1
|
|
MOZ_NSPRENV_NS_USE_GCC=
|
|
fi
|
|
|
|
dnl
|
|
dnl MOZILLA_CLIENT
|
|
dnl NO_MDUPDATE
|
|
dnl
|
|
dnl These are set just to be safe. It is possible that NSPR doesnt
|
|
dnl use these anymore.
|
|
dnl
|
|
MOZ_NSPRENV_MOZILLA_CLIENT=
|
|
MOZ_NSPRENV_NO_MDUPDATE=1
|
|
|
|
dnl
|
|
dnl DIST
|
|
dnl
|
|
dnl Where the NSPR stuff gets installed: $DIST/{bin,lib,include}
|
|
dnl
|
|
MOZ_NSPRENV_DIST=`pwd`/dist
|
|
|
|
dnl
|
|
dnl MAKE
|
|
dnl
|
|
dnl NSPR is not safe for gnu make -jX (where X > 1) builds. Force make
|
|
dnl in NSPR to be 'make -j1' - or just 'make'
|
|
dnl
|
|
case "$target" in
|
|
*-linux*)
|
|
MOZ_NSPRENV_OVERRIDE_MAKE=`echo $MAKE | $AWK '{print \$1}'`
|
|
;;
|
|
|
|
*)
|
|
MOZ_NSPRENV_OVERRIDE_MAKE=
|
|
;;
|
|
esac
|
|
|
|
AC_SUBST(MOZ_NSPRENV_USE_PTHREADS)
|
|
AC_SUBST(MOZ_NSPRENV_BUILD_OPT)
|
|
AC_SUBST(MOZ_NSPRENV_NS_USE_GCC)
|
|
AC_SUBST(MOZ_NSPRENV_NO_MDUPDATE)
|
|
AC_SUBST(MOZ_NSPRENV_NS_USE_NATIVE)
|
|
AC_SUBST(MOZ_NSPRENV_MOZILLA_CLIENT)
|
|
AC_SUBST(MOZ_NSPRENV_DIST)
|
|
AC_SUBST(MOZ_NSPRENV_OVERRIDE_MAKE)
|
|
fi
|
|
dnl ========================================================
|
|
|
|
|
|
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 build build/package; 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
|
|
|
|
# Run a perl script to quickly create the makefiles.
|
|
# If it succeeds, it outputs a shell command to set CONFIG_FILES
|
|
# for the files it cannot handle correctly. This way, config.status
|
|
# will handle these files.
|
|
# If it fails, nothing is set and config.status will run as usual.
|
|
#
|
|
# This does not change the $MAKEFILES variable.
|
|
#
|
|
eval `echo $MAKEFILES | \
|
|
$PERL $srcdir/build/autoconf/acoutput-fast.pl` 2>/dev/null
|
|
|
|
AC_OUTPUT($MAKEFILES)
|
|
|
|
dnl ========================================================
|
|
dnl =
|
|
dnl = If we are building NSPR as part of the build, make sure
|
|
dnl = the NSPR environment config and override files get copied
|
|
dnl = to the right place.
|
|
dnl =
|
|
dnl ========================================================
|
|
if test ! "$MOZ_NATIVE_NSPR"
|
|
then
|
|
rm -f ${srcdir}/nsprpub/config/my_config.mk
|
|
rm -f ${srcdir}/nsprpub/config/my_overrides.mk
|
|
cp build/unix/nspr_my_config.mk ${srcdir}/nsprpub/config/my_config.mk
|
|
cp build/unix/nspr_my_overrides.mk ${srcdir}/nsprpub/config/my_overrides.mk
|
|
fi
|