mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-27 19:09:47 +00:00
3aa51cdffc
according to waterson, the enable-js-stubs stuff is obsolete. once I hear back from jband, I'll remove it for good.
1946 lines
54 KiB
Plaintext
1946 lines
54 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 ========================================================
|
|
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 -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))'
|
|
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 ========================================================
|
|
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.)])
|
|
|
|
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`"; 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)
|
|
;;
|
|
|
|
*-*-linux*)
|
|
AC_DEFINE(_REENTRANT)
|
|
;;
|
|
|
|
alpha*-*-osf*)
|
|
AC_DEFINE(_REENTRANT)
|
|
dnl if test ! "$GNU_CC"; then
|
|
dnl CFLAGS="$CFLAGS -pthread"
|
|
dnl CXXFLAGS="$CXXFLAGS -pthread"
|
|
dnl fi
|
|
;;
|
|
|
|
*-*-freebsd*)
|
|
AC_DEFINE(_REENTRANT)
|
|
AC_DEFINE(_THREAD_SAFE)
|
|
dnl CFLAGS="$CFLAGS -pthread"
|
|
dnl CXXFLAGS="$CXXFLAGS -pthread"
|
|
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 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" ])
|
|
|
|
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)
|
|
|
|
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(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(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
|