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, . Portions created by Christopher Seawood dnl are Copyright (C) 1998 Christopher Seawood. All Rights Reserved. dnl dnl Contributors: dnl Jamie Zawinski dnl gettimeofday args check dnl dnl Christopher Blizzard dnl gnomefe update & enable-pthreads dnl dnl Ramiro Estrugo dnl X11 makedepend support dnl Insure support. dnl dnl Process this file with autoconf to produce a configure script. dnl ======================================================== AC_PREREQ(2.12) AC_INIT(config/config.mk) dnl AC_CONFIG_HEADER(include/config.h nsprpub/include/config.h) AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf) AC_CANONICAL_SYSTEM dnl Set this define to make fixes w/o breaking anything else. AC_DEFINE(USE_AUTOCONF) dnl Always set this for mozilla. AC_DEFINE(MOZILLA_CLIENT) dnl d=`pwd` dnl if [ test "${srcdir}" = "${d}" || test "${srcdir}" = "." ]; then dnl AC_ERROR(Building in the srcdir is not supported! Please build from a separate objdir.) dnl fi dnl unset d dnl Build optimized by default dnl ======================================================== OPTIMIZE_CFLAGS="${OPTIMIZE_CFLAGS=-O}" 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.1.13 dnl Set various checks dnl ======================================================== MISSING_X= MISSING_MOTIF= MISSING_GTK= dnl Checks for programs. dnl ======================================================== AC_PROG_CC AC_PROG_CXX AC_PROG_CC_C_O if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then USING_HCC=1 _OLDCC=$CC _OLDCXX=$CXX CC="${srcdir}/build/hcc '$CC'" CXX="${srcdir}/build/hcpp '$CXX'" fi AC_PROG_CPP AC_PROG_CXXCPP AC_PROG_MAKE_SET AC_PROG_INSTALL AC_PROG_AWK AC_PROG_RANLIB AC_PATH_PROGS(EMACS, xemacs lemacs emacs, :) AC_PATH_PROGS(PERL, perl5 perl, :) AC_PATH_PROG(WHOAMI, whoami, :) AC_PATH_PROG(UNZIP, unzip, :) AC_PATH_PROG(ZIP, zip, :) AC_PATH_XTRA XLDFLAGS="$X_LIBS" XLIBS="$X_EXTRA_LIBS" if [ test "$GCC" = "yes" ]; then GNU_CC=1 fi if [ test "$GXX" = "yes" ]; then GNU_CXX=1 fi AC_SUBST(GNU_CC) AC_SUBST(GNU_CXX) dnl Checks for system specific bits dnl ======================================================== dnl the qsort routine under solaris is faulty dnl Linux Alpha needs -mieee for FPU to work correctly dnl Note this case statement doesn't seem to handle [] as part of a regexp dnl set the defaults first dnl ======================================================== DLL_SUFFIX="so" MKSHLIB='$(LD) $(DSO_LDOPTS)' DSO_LDOPTS='-shared -h $(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))' DSO_CFLAGS='-KPIC' dnl gcc can come with its own linker so its better to use the pass-thru calls dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to dnl normal behavior. dnl ======================================================== if [ test "$GNU_CC" = 1]; then MKSHLIB='$(CXX) $(DSO_LDOPTS)' MKSHLIB_FORCE_ALL='-Wl,--whole-archive' MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive' DSO_LDOPTS='-shared -Wl,-h -Wl,$(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))' DSO_CFLAGS='-fPIC' fi dnl now the exceptions dnl ======================================================== case "$target" in *-*-aix*) DSO_CFLAGS= if [ test "$GNU_CC" != 1 ]; then DSO_LDOPTS='-brtl -bM:SRE -bnoentry -bexpall' fi ;; *-*-solaris*) AC_DEFINE(BROKEN_QSORT) if test -z "$GNU_CC"; then MKSHLIB='$(CXX) -xar $(DSO_LDOPTS)' DSO_LDOPTS='-G -h $(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))' else MKSHLIB='$(CC) $(DSO_LDOPTS)' MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract' MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract' fi ;; alpha*-*-linux*) CFLAGS="$CFLAGS -mieee" ;; alpha*-*-osf*) if [ test "$GNU_CC" = 1 ]; then DSO_LDOPTS='-shared -Wl,-soname -Wl,$(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))' else CFLAGS="$CFLAGS -std1 -ieee_with_inexact" DSO_LDOPTS='-shared -expect_unresolved \* -soname $(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))' DSO_CFLAGS= fi ;; *-bsdi*) case `uname -r` in 4.*) ;; *) DSO_CFLAGS='' DSO_LDOPTS='-r' ;; esac ;; *-freebsd*) if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` = "elf"; then DLL_SUFFIX="so" else DLL_SUFFIX="so.1.0" DSO_LDOPTS="-shared" fi if test -z "$GNU_CC"; then DSO_LDOPTS="-Bshareable $DSO_LDOPTS" fi ;; *-netbsd*) DLL_SUFFIX="so.1.0" DSO_CFLAGS='-fPIC' DSO_LDOPTS='-shared -h $(@:$(OBJDIR)/%.$(DLL_SUFFIX)=%.$(DLL_SUFFIX))' MKSHLIB='$(LD) $(DSO_LDOPTS)' if test -z "`$CC -E - -dM #include ], [struct timeval tv; struct timezone tzp; gettimeofday(&tv, &tzp);], [ac_gettimeofday_args=2], [AC_TRY_COMPILE([#include #include ], [struct timeval tv; gettimeofday(&tv);], [ac_gettimeofday_args=1], [ac_gettimeofday_args=0])]) ac_cv_gettimeofday_args=$ac_gettimeofday_args]) ac_gettimeofday_args=$ac_cv_gettimeofday_args if test $ac_gettimeofday_args = 1 ; then AC_DEFINE(HAVE_GETTIMEOFDAY) AC_MSG_RESULT(one argument) elif test $ac_gettimeofday_args = 2 ; then AC_DEFINE(HAVE_GETTIMEOFDAY) AC_DEFINE(GETTIMEOFDAY_TWO_ARGS) AC_MSG_RESULT(two arguments) else AC_MSG_RESULT(unknown) fi dnl Checks for specific (libc) global variables AC_MSG_CHECKING(for sys_errlist/sys_nerr) AC_CACHE_VAL(ac_cv_syserrlist, [AC_TRY_COMPILE([#include #include ], [char *foo = sys_errlist[sys_nerr-1];], [ac_syserrlist=true], [ac_syserrlist=false]) ac_cv_syserrlist=$ac_syserrlist]) ac_syserrlist=$ac_cv_syserrlist if test $ac_syserrlist = true ; then AC_DEFINE(HAVE_SYSERRLIST) AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi dnl 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_MSG_CHECKING(for ios::binary) AC_CACHE_VAL(ac_cv_ios_binary, [AC_TRY_COMPILE([#include ] [#include ], [char *buffer = "config.log"; fstream *mFileStream=new fstream(buffer, ios::binary);], [ac_ios_binary=true], [ac_ios_binary=false]) ac_cv_ios_binary=$ac_ios_binary]) ac_ios_binary=$ac_cv_ios_binary if test $ac_ios_binary = true ; then AC_DEFINE(HAVE_IOS_BINARY) AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi AC_MSG_CHECKING(for ios::bin) AC_CACHE_VAL(ac_cv_ios_bin, [AC_TRY_COMPILE([#include ] [#include ], [char *buffer = "config.log"; fstream *mFileStream=new fstream(buffer, ios::bin);], [ac_ios_bin=true], [ac_ios_bin=false]) ac_cv_ios_bin=$ac_ios_bin]) ac_ios_bin=$ac_cv_ios_bin if test $ac_ios_bin = true ; then AC_DEFINE(HAVE_IOS_BIN) AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi dnl Check for static_cast<> AC_CACHE_CHECK(for advanced C++ casting, ac_cv_cpp_casts, [AC_TRY_COMPILE(class A {}; class B: public A {};, B* b = new B; A* a = static_cast(b);, ac_cv_cpp_casts=yes, ac_cv_cpp_casts=no)]) if test $ac_cv_cpp_casts = yes ; then AC_DEFINE(HAVE_CPP_CASTS) 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 CC=$_SAVE_CC dnl End of C++ language/feature checks dnl Check cc for -include flag support (command-line include files) dnl Assume that cxx has the feature if cc has it. dnl (We can add another test later if we need to.) AC_MSG_CHECKING($CC for \"-include \" option) _tmp_header="include-test-$$.h" echo "char *booboo;" > $_tmp_header _SAVE_CFLAGS=$CFLAGS ; CFLAGS="$CFLAGS -include $_tmp_header" AC_CACHE_VAL(ac_cv_cxx_include_flag, [AC_TRY_COMPILE([], [booboo = "yogi";], [ac_cv_cxx_include_flag=true], [ac_cv_cxx_include_flag=false])]) if test $ac_cv_cxx_include_flag = true ; then AC_MSG_RESULT(yes) USE_CPP_INCLUDE_FLAG=1 AC_SUBST(USE_CPP_INCLUDE_FLAG) else AC_MSG_RESULT(no) fi rm -f $_tmp_header CFLAGS=$_SAVE_CFLAGS dnl Check cc and cxx for -Wall flag support (adds compiler warnings) AC_MSG_CHECKING($CC for \"-Wall\" support) _SAVE_CFLAGS=$CFLAGS ; CFLAGS="$CFLAGS -Wall" AC_CACHE_VAL(ac_cv_cc_wall_flag, [AC_TRY_COMPILE([], [int i;], [ac_cv_cc_wall_flag=true], [ac_cv_cc_wall_flag=false])]) if test $ac_cv_cc_wall_flag = true ; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi _SAVE_CC=$CC ; CC=$CXX AC_MSG_CHECKING($CXX for \"-Wall\" support) AC_CACHE_VAL(ac_cv_cxx_wall_flag, [AC_TRY_COMPILE([], [int i;], [ac_cv_cxx_wall_flag=true], [ac_cv_cxx_wall_flag=false])]) if test $ac_cv_cxx_wall_flag = true ; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi if test $ac_cv_cc_wall_flag = true -a $ac_cv_cxx_wall_flag = true ; then WARNINGS_CFLAGS="${WARNINGS_CFLAGS} -Wall" fi CC=$_SAVE_CC CFLAGS=$_SAVE_CFLAGS dnl Check cc for -pedantic flag support (adds compiler warnings) dnl AC_MSG_CHECKING($CC for \"-pedantic\" support) dnl _SAVE_CFLAGS=$CFLAGS ; CFLAGS="$CFLAGS -pedantic" dnl AC_CACHE_VAL(ac_cv_cc_pedantic_flag, dnl [AC_TRY_COMPILE([], dnl [int i;], dnl [ac_cv_cc_pedantic_flag=true], dnl [ac_cv_cc_pedantic_flag=false])]) dnl if test $ac_cv_cc_pedantic_flag = true ; then dnl AC_MSG_RESULT(yes) dnl WARNINGS_CFLAGS="${WARNINGS_CFLAGS} -pedantic" dnl else dnl AC_MSG_RESULT(no) dnl fi dnl CFLAGS=$_SAVE_CFLAGS # Mozilla specific options # ======================================================== dnl The macros used for command line options dnl are defined in build/autoconf/altoptions.m4. MOZ_ARG_HEADER(Components and Features) MOZ_ARG_DISABLE_BOOL(async-dns, [ --disable-async-dns Disable separate dns thread], NO_UNIX_ASYNC_DNS=1) MOZ_ARG_ENABLE_BOOL(editor, [ --enable-editor Enable editor], MOZ_EDITOR=1) dnl This will be part of the address book dnl MOZ_ARG_ENABLE_BOOL(ldap, dnl [ --enable-ldap Enable LDAP directory access], dnl [ MOZ_LDAP=1 NO_UNIX_LDAP= ], dnl [ NO_UNIX_LDAP=1 ]) MOZ_ARG_ENABLE_BOOL(mailnews, [ --enable-mailnews Enable Mail & News], MOZ_MAIL_NEWS=1) dnl build mozilla/nsprpub by default MOZ_BUILD_NSPR=1 MOZ_ARG_DISABLE_BOOL(build-nspr, [ --disable-build-nspr Dont build mozilla/nsprpub], MOZ_BUILD_NSPR= ) dnl Note: This conflicts with --disable-shared MOZ_ARG_ENABLE_BOOL(oji, [ --enable-oji Enable use of Open JVM Interface], [MOZ_OJI=1 FULL_STATIC_BUILD= NO_SHARED_LIB=]) MOZ_ARG_ENABLE_BOOL(tests, [ --enable-tests Enable test stubs], ENABLE_TESTS=1) dnl nglayout only supports building with one toolkit dnl so ignore everything after the first, dnl nglayout only supports building with one toolkit dnl so ignore everything after the first , MOZ_ARG_ENABLE_STRING(toolkit, [ --enable-toolkit=\$val Enable \$val fe (defaults to gtk)], dnl [Toolkit must be either "gtk" or "Motif" (except on Rhapsody.)], [ res=`echo $target_os| grep -c "^Rhapsody"`; if test "$enableval" != "motif" && test "$enableval" != "gtk" && test $res = 0; then AC_MSG_ERROR(Toolkit must be either gtk or motif.) else MOZ_TOOLKIT=`echo "$enableval" | sed -e "s/,.*//g" ` fi], MOZ_TOOLKIT=USE_DEFAULT) if test "$MOZ_TOOLKIT" = "USE_DEFAULT"; then res=`echo $target_os| grep -c "^Rhapsody"` if test $res != 0; then MOZ_TOOLKIT="rhapsody" else MOZ_TOOLKIT="gtk" fi fi dnl build mozilla/xpfe by default MOZ_BUILD_XPFE=1 MOZ_ARG_DISABLE_BOOL(build-xpfe, [ --disable-build-xpfe Dont build mozilla/xpfe], MOZ_BUILD_XPFE= ) MOZ_ARG_HEADER(Compiler Options) MOZ_ARG_DISABLE_BOOL(asserts, [ --disable-asserts Disable asserts during debugging], UNIX_SKIP_ASSERTS=1) MOZ_ARG_ENABLE_BOOL_OR_STRING(debug, [ --enable-debug Enable debug symbols], [ MOZ_DEBUG=1 OPTIMIZE_CFLAGS="-g" ], [], [MOZ_DEBUG_MODULES=`echo $enableval | sed 's|,| |g'` ]) MOZ_ARG_ENABLE_BOOL(md, [ --enable-md Use compiler-based dependencies ], [ COMPILER_DEPEND=1 DEPEND_CFLAGS='-Wp,-MMD,$(*D)/.deps/$(*F).pp' ] ) 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") 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) MOZ_ARG_HEADER(Profiling and Instrumenting) MOZ_ARG_ENABLE_BOOL(gprof, [ --enable-gprof Enable gprof symbols], [ GPROF_CFLAGS="-pg" ]) MOZ_ARG_ENABLE_BOOL(insure, [ --enable-insure Enable insure++ instrumentation (linux only)], [ MOZ_INSURE="insure" MOZ_INSURIFYING=1 MOZ_INSURE_DIRS="mozilla" MOZ_INSURE_EXCLUDE_DIRS="mozilla/config" ]) MOZ_ARG_WITH_STRING(insure-dirs, [ --with-insure-dirs=\$dirs Dirs to instrument ], MOZ_INSURE_DIRS=$withval ) MOZ_ARG_WITH_STRING(insure-exclude-dirs, [ --with-insure-exclude-dirs=\$dirs Dirs to not instrument ], MOZ_INSURE_EXCLUDE_DIRS="mozilla/config $withval" ) MOZ_ARG_ENABLE_BOOL(profile, [ --enable-profile Enable profiling (solaris only)], MOZILLA_GPROF=1) MOZ_ARG_ENABLE_BOOL(wrap-malloc, [ --enable-wrap-malloc Wrap malloc calls (gnu linker only) (default=no) ], [ if test "$GNU_CC" = 1; then WRAP_MALLOC_CFLAGS="${LDFLAGS} -Wl,--wrap -Wl,malloc -Wl,--wrap -Wl,free -Wl,--wrap -Wl,realloc -Wl,--wrap -Wl,__builtin_new -Wl,--wrap -Wl,__builtin_vec_new -Wl,--wrap -Wl,__builtin_delete -Wl,--wrap -Wl,__builtin_vec_delete -Wl,--wrap -Wl,PR_Free -Wl,--wrap -Wl,PR_Malloc -Wl,--wrap -Wl,PR_Calloc -Wl,--wrap -Wl,PR_Realloc" MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS)' fi]) MOZ_ARG_WITH_STRING(wrap-malloc, [ --with-wrap-malloc-=\$dir Location of malloc wrapper library], WRAP_MALLOC_LIB=$withval) MOZ_ARG_HEADER(Misc. Options) MOZ_ARG_ENABLE_STRING(homedir, [ --enable-homedir=\$val Set the homedir to \$val], dnl [ Location of the mozilla user directory (default is ~/.mozilla).], [res=`echo $enableval | grep -c "\/"` if [ test $res != 0 ]; then AC_MSG_ERROR("Homedir must be single relative path.") else AC_DEFINE(MOZ_USER_DIR,"$enableval") fi], AC_DEFINE(MOZ_USER_DIR,".mozilla") ) MOZ_ARG_ENABLE_BOOL(idltool, [ --enable-idltool Build idl tool (default=no) ], MOZ_IDL_TOOL=1) MOZ_ARG_ENABLE_BOOL(xterm-updates, [ --enable-xterm-updates Update XTERM titles with current command.], MOZ_UPDATE_XTERM=1) MOZ_ARG_ENABLE_BOOL(js-stubs, [ --enable-js-stubs Use XPIDL JavaScript Stubs.], AC_DEFINE(XPIDL_JS_STUBS)) MOZ_ARG_HEADER(Untested or Broken Options) MOZ_ARG_ENABLE_BOOL(crypto, [ --enable-crypto Enable use of SSL (untested)], MOZ_SECURITY=1) dnl Netcaster is dead dnl MOZ_ARG_ENABLE_BOOL(netcast, dnl [ --enable-netcast Enable use of netcast (untested)], dnl MOZ_NETCAST=1) dnl Note: This needs to come after --disable-shared MOZ_ARG_ENABLE_BOOL(java, [ --enable-java Enable use of java applets (untested)], [MOZ_JAVA=1 FULL_STATIC_BUILD= NO_SHARED_LIB=]) MOZ_ARG_ENABLE_BOOL(mail-compose, [ --enable-mail-compose Enable old Messenger mail composer ], [ MOZ_MAIL_COMPOSE=1 MOZ_EDITOR=1 ]) dnl The new mail app is "smart-mail" dnl MOZ_ARG_ENABLE_BOOL(smart-mail, dnl [ --enable-smart-mail Enable HTML/RDF-based client-side mail (untested)], dnl MOZ_SMART_MAIL=1) MOZ_ARG_DISABLE_BOOL(static, [ --disable-static Disable building of internal static libs (broken)], NO_STATIC_LIB=1) AC_SUBST(MOZ_TOOLKIT) AC_SUBST(MOZ_UPDATE_XTERM) AC_SUBST(MOZ_SECURITY) dnl AC_SUBST(MOZ_NETCAST) AC_SUBST(MOZ_JAVA) AC_SUBST(MOZ_OJI) AC_SUBST(MOZ_DEBUG) AC_SUBST(MOZ_DEBUG_MODULES) AC_SUBST(MOZILLA_GPROF) AC_SUBST(MOZ_INSURE) AC_SUBST(MOZ_INSURE_DIRS) AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS) AC_SUBST(MOZ_INSURIFYING) AC_SUBST(MOZ_MAIL_NEWS) AC_SUBST(MOZ_BUILD_XPFE) AC_SUBST(MOZ_BUILD_NSPR) dnl AC_SUBST(MOZ_LDAP) AC_SUBST(MOZ_EDITOR) AC_SUBST(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(MOZ_IDL_TOOL) AC_SUBST(COMPILER_DEPEND) dnl Checks for X libraries. dnl Ordering is important. dnl Xt is dependent upon SM as of X11R6 dnl ======================================================== if [ test "$no_x" != "yes" ]; then _SAVE_LDFLAGS="$LDFLAGS" LDFLAGS="$XLDFLAGS $LDFLAGS" AC_CHECK_LIB(X11, XDrawLines, [XLIBS="-lX11 $XLIBS"], [MISSING_X="$MISSING_X -lX11"], $XLIBS) AC_CHECK_LIB(Xext, XextAddDisplay, [XLIBS="-lXext $XLIBS"], [MISSING_X="$MISSING_X -lXext"], $XLIBS) AC_CHECK_LIB(ICE, IceFlush, [XLIBS="-lICE $XLIBS"],, $XLIBS) AC_CHECK_LIB(SM, SmcCloseConnection, [XLIBS="-lSM $XLIBS"],, $XLIBS) AC_CHECK_LIB(Xt, XtFree, [XLIBS="-lXt $XLIBS"], [MISSING_X="$MISSING_X -lXt"], $XLIBS) AC_CHECK_LIB(Xmu, XmuLookupString, [XLIBS="-lXmu $XLIBS"], [MISSING_X="$MISSING_X -lXmu"], $XLIBS) LDFLAGS="$_SAVE_LDFLAGS" dnl Check for toolkit libs dnl ======================================================== res=`echo :$MOZ_TOOLKIT | grep -c "motif"` if [ test $res != 0 ]; then if [ test "$no_x" != "yes" ]; then if [ test ! -z "$x_includes" ]; then MOTIF_XINCS="-xif -I$x_includes" fi MOTIF_VERSION=`${srcdir}/config/mkdetect/detect_motif.sh -cc "$CC" $MOTIF_XINCS` MOTIF_INCLUDES=`${srcdir}/config/mkdetect/detect_motif.sh -cc "$CC" $MOTIF_XINCS -if` MOTIF_STATIC_FLAGS=`${srcdir}/config/mkdetect/detect_motif.sh -cc "$CC" $MOTIF_XINCS -sf` MOTIF_DYNAMIC_FLAGS=`${srcdir}/config/mkdetect/detect_motif.sh -cc "$CC" $MOTIF_XINCS -df` MOTIF_DYNAMIC_PATHS=`${srcdir}/config/mkdetect/detect_motif.sh -cc "$CC" $MOTIF_XINCS -dp` MOTIF_REQUIRES_XPM=`${srcdir}/config/mkdetect/detect_motif.sh -cc "$CC" $MOTIF_XINCS -xpm` ${srcdir}/config/mkdetect/detect_motif.sh --cleanup fi if [ test "$MOTIF_REQUIRES_XPM" = "True" || test "$MOTIF_VERSION" = "2.1" ]; then _SAVE_LDFLAGS="$LDFLAGS" LDFLAGS="$XLDFLAGS $LDFLAGS" if [ test "$MOTIF_REQUIRES_XPM" = "True" ]; then AC_CHECK_LIB(Xpm, XpmWriteFileFromImage, TK_LIBS="-lXpm $TK_LIBS", [MISSING_MOTIF="-lXpm $MISSING_MOTIF"], $XLIBS) fi if [ test "$MOTIF_VERSION" = "2.1" ]; then AC_CHECK_LIB(Xp, XpGetPrinterList, TK_LIBS="-lXp $TK_LIBS", [MISSING_MOTIF="-lXp $MISSING_MOTIF"], $XLIBS) fi TK_LIBS="$XLDFLAGS $TK_LIBS" LDFLAGS="$_SAVE_LDFLAGS" fi if [ test "$MOTIF_STATIC_LIB" = "unknown" && test "$MOTIF_DYNAMIC_LIB" = "unknown" ]; then AC_ERROR("Cannot find neither dynamic nor static motif libraries.") fi # Get rid of offending error values if test "$MOTIF_DYNAMIC_PATHS" = "unknown"; then MOTIF_DYNAMIC_PATHS= fi if test "$MOTIF_DYNAMIC_FLAGS" = "unknown"; then MOTIF_DYNAMIC_FLAGS= fi if test "$MOTIF_STATIC_FLAGS" = "unknown"; then MOTIF_STATIC_FLAGS= fi if test "$MOTIF_INCLUDE_DIR" = "unknown"; then MOTIF_INCLUDE_DIR= fi AC_ARG_WITH(static-motif, [ --with-static-motif link motif statically if possible], sysstaticmotif=$withval) if [ test "$sysstaticmotif" != "yes" ]; then _SAVE_LDFLAGS="$LDFLAGS" LDFLAGS="$MOTIF_DYNAMIC_PATHS $XLDFLAGS $LDFLAGS" AC_CHECK_LIB(Xm, XmStringCreate, TK_LIBS="$MOTIF_DYNAMIC_PATHS $MOTIF_DYNAMIC_FLAGS $TK_LIBS", [MISSING_MOTIF="$MOTIF_DYNAMIC_FLAGS $MISSING_MOTIF"], $MOTIF_DYNAMIC_PATHS $TK_LIBS $XLIBS) LDFLAGS="$_SAVE_LDFLAGS" else AC_CHECK_LIB(Xm, XmStringCreate, TK_LIBS="$MOTIF_STATIC_FLAGS $TK_LIBS", [MISSING_MOTIF="$MOTIF_STATIC_FLAGS $MISSING_MOTIF"], $TK_LIBS $XLIBS) fi TK_CFLAGS="$MOTIF_INCLUDES" fi res=`echo :$MOZ_TOOLKIT | grep -c "gtk"` if [ test $res != 0 ]; then AM_PATH_GTK($GTK_VERSION,, AC_MSG_ERROR(Test for GTK failed.)) AC_ARG_WITH(static-gtk, [ --with-static-gtk link gtk statically if possible], sysstaticgtk=$withval) if [ test "$sysstaticgtk" != "yes" ]; then TK_LIBS=$GTK_LIBS else changequote(,) GTK_LIBS_LOC=`echo $GTK_LIBS | sed 's/\(.*\)\(-lgtk.*\)/\1/'` GTK_STATIC_LOC=`echo $GTK_LIBS | sed 's/^ *-L\([^ ]*\) .*$/\1/'` GTK_STATIC=`echo $GTK_LIBS | sed 's/^.*-l\(gtk[^ ]*\) .*/\1/'` GDK_STATIC=`echo $GTK_LIBS | sed 's/^.*-l\(gdk[^ ]*\) .*/\1/'` GLIB_STATIC_LOC=`echo $GTK_LIBS | sed -e 's/^.*-lgdk[^ ]* *-L\([^ ]*\).*$/\1/' -e 's/^.* -lgdk[^ ]* .*$//'` if test -z "$GLIB_STATIC_LOC" ; then GLIB_STATIC_LOC=$GTK_STATIC_LOC fi GMODULE_STATIC=`echo $GTK_LIBS | sed 's/^.*-l\(gmodule[^ ]*\) .*/\1/'` GLIB_STATIC=`echo $GTK_LIBS | sed 's/^.*-l\(glib[^ ]*\) .*/\1/'` GTK_OTHER_LIBS=`echo $GTK_LIBS | sed 's/^.*-lglib *\(.*\)/\1/'` changequote([,]) TK_LIBS="$GTK_STATIC_LOC/lib${GTK_STATIC}.a" TK_LIBS="$TK_LIBS $GTK_STATIC_LOC/lib${GDK_STATIC}.a" TK_LIBS="$TK_LIBS $GLIB_STATIC_LOC/lib${GMODULE_STATIC}.a" TK_LIBS="$TK_LIBS $GLIB_STATIC_LOC/lib${GLIB_STATIC}.a" TK_LIBS="$TK_LIBS $GTK_LIBS_LOC $GTK_OTHER_LIBS" fi TK_CFLAGS=$GTK_CFLAGS fi fi # $no_x AC_SUBST(GTK_CONFIG) AC_SUBST(TK_CFLAGS) AC_SUBST(TK_LIBS) XCFLAGS="$X_CFLAGS" AC_SUBST(XCFLAGS) AC_SUBST(XLDFLAGS) AC_SUBST(XLIBS) dnl system JPEG support dnl ======================================================== AC_ARG_WITH(jpeg, [ --with-jpeg=\$dir use system libjpeg in \$dir if more recent], JPEG_DIR=$withval) _SAVE_CFLAGS=$CFLAGS _SAVE_LDFLAGS=$LDFLAGS _SAVE_LIBS=$LIBS CFLAGS="-I${JPEG_DIR}/include $CFLAGS" LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS" if test "$JPEG_DIR" = no; then SYSTEM_JPEG= else AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS) fi if [ test "$SYSTEM_JPEG" = 1 ]; then LIBS="$JPEG_LIBS $LIBS" AC_TRY_RUN( #include #include #include int main () { #if JPEG_LIB_VERSION >= $MOZJPEG exit(0); #else exit(1); #endif } , SYSTEM_JPEG=1, [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=], SYSTEM_JPEG= ) rm -f core fi CFLAGS=$_SAVE_CFLAGS LDFLAGS=$_SAVE_LDFLAGS LIBS=$_SAVE_LIBS if [ test -n "${JPEG_DIR}" && test -d "${JPEG_DIR}" && test "$SYSTEM_JPEG" = 1]; then JPEG_CFLAGS="-I${JPEG_DIR}/include" JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}" fi dnl system ZLIB support dnl ======================================================== AC_ARG_WITH(zlib, [ --with-zlib=\$dir use system libz in \$dir], ZLIB_DIR=$withval) _SAVE_CFLAGS=$CFLAGS _SAVE_LDFLAGS=$LDFLAGS CFLAGS="-I${ZLIB_DIR}/include $CFLAGS" LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS" if test "$ZLIB_DIR" = no; then SYSTEM_ZLIB= else AC_MSG_CHECKING("for zlib.h") AC_TRY_COMPILE([#include "zlib.h"], [], [result="yes" SYSTEM_ZLIB=1], [result="no" SYSTEM_ZLIB=]) AC_MSG_RESULT("$result") fi if [ test "$SYSTEM_ZLIB" = 1 ]; then AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"], [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS) fi CFLAGS=$_SAVE_CFLAGS LDFLAGS=$_SAVE_LDFLAGS if [ test -n "${ZLIB_DIR}" && test -d "${ZLIB_DIR}" && test "$SYSTEM_ZLIB" = 1 ]; then ZLIB_CFLAGS="-I${ZLIB_DIR}/include" ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}" fi dnl system PNG Support dnl ======================================================== AC_ARG_WITH(png, [ --with-png=\$dir use system libpng in \$dir if more recent], PNG_DIR=$withval) _SAVE_CFLAGS=$CFLAGS _SAVE_LDFLAGS=$LDFLAGS _SAVE_LIBS=$LIBS CFLAGS="-I${PNG_DIR}/include $ZLIB_CFLAGS $CFLAGS" LDFLAGS="-L${PNG_DIR}/lib $ZLIB_LIBS -lz $LDFLAGS" if test "$PNG_DIR" = no; then SYSTEM_PNG= else AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"], SYSTEM_PNG=, $PNG_LIBS) fi if [ test "$SYSTEM_PNG" = 1 ]; then LIBS="$PNG_LIBS $LIBS" AC_TRY_RUN( #include #include #include int main () { #if PNG_LIBPNG_VER >= $MOZPNG exit(0); #else exit(1); #endif } , SYSTEM_PNG=1, [SYSTEM_PNG= PNG_CFLAGS= PNG_LIBS=], SYSTEM_PNG= ) rm -f core fi CFLAGS=$_SAVE_CFLAGS LDFLAGS=$_SAVE_LDFLAGS LIBS=$_SAVE_LIBS if [ test -n "${PNG_DIR}" && test -d "${PNG_DIR}" && test "$SYSTEM_PNG" = 1 ]; then PNG_CFLAGS="-I${PNG_DIR}/include" PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}" fi dnl system FullCircle/Talkback support (Crash-reporting mechanism) dnl ============================================================== AC_ARG_WITH(fullcircle, [ --with-fullcircle=\$dir location of FullCircle headers and libraries], FULLCIRCLE_DIR=$withval, FULLCIRCLE_DIR=no) if test "$FULLCIRCLE_DIR" = no; then FULLCIRCLE_DIR= else _SAVE_CFLAGS=$CFLAGS _SAVE_LDFLAGS=$LDFLAGS _SAVE_LIBS=$LIBS CFLAGS="$CFLAGS -I${FULLCIRCLE_DIR}" LDFLAGS="$LDFLAGS -L${FULLCIRCLE_DIR}" AC_MSG_CHECKING("for FC_Initialize in -ltalkback"); LIBS="-ltalkback $LIBS" AC_TRY_LINK([ #include "fullcircle.h" #include ], [FC_Initialize(); exit(0);] ,[FULLCIRCLE_LIB="-ltalkback $FULLCIRCLE_LIB" result="yes"], [MISSING_FULLCIRCLE=1 result="no"]) AC_MSG_RESULT("$result") CFLAGS=$_SAVE_CFLAGS LDFLAGS=$_SAVE_LDFLAGS LIBS=$_SAVE_LIBS if [ test -n "$MISSING_FULLCIRCLE" ]; then AC_MSG_ERROR([Could not find FullCircle Library]); fi fi dnl system NSPR support dnl we always use the system NSPR from now on...this option dnl tells where to find nspr rather than whether to use it dnl ======================================================== AC_ARG_WITH(pthreads, [ --with-pthreads use system pthread library ], [if test "$withval" = "yes"; then AC_CHECK_LIB(pthread, pthread_attr_init, NSPR_LIBS="-lpthread $NSPR_LIBS" USE_PTHREADS=1) case "$target" in *-*-solaris*) AC_DEFINE(_REENTRANT) ;; *-*-linux*) AC_DEFINE(_REENTRANT) ;; alpha*-*-osf*) if [ test "$GNU_CC" = 1 ]; then AC_DEFINE(_REENTRANT) else CFLAGS="$CFLAGS -pthread" fi ;; esac fi] ) AC_ARG_WITH(nspr, [ --with-nspr=\$dir location of nspr headers and libraries], NSPR_DIR=$withval) _SAVE_CFLAGS=$CFLAGS _SAVE_LDFLAGS=$LDFLAGS _SAVE_LIBS=$LIBS CFLAGS="$CFLAGS -I${NSPR_DIR}/include" LDFLAGS="$LDFLAGS -L${NSPR_DIR}/lib $NSPR_LIBS" AC_MSG_CHECKING("for PR_GetCurrentThread in -lnspr21") LIBS="-lnspr21 $NSPR_LIBS $LIBS" AC_TRY_RUN( #include #include int main () { PRThread *dummy = PR_GetCurrentThread(); exit(0); } , [NSPR_LIBS="-lnspr21 $NSPR_LIBS" result="yes"], [_NSPR_NEEDS_THREAD_LIB=1 result="no"], [_NSPR_NEEDS_THREAD_LIB=1 result="no"] ) rm -f core AC_MSG_RESULT("$result") dnl XXX - Is this really the best way to do this check? - cls if [ test "$_NSPR_NEEDS_THREAD_LIB" = 1 ]; then LIBS=$_SAVE_LIBS case "$target" in *-*-solaris*) AC_CHECK_LIB(pthread, pthread_attr_init, NSPR_LIBS="-lpthread $NSPR_LIBS") ;; *-*-linux*) AC_CHECK_LIB(pthread, pthread_attr_init, NSPR_LIBS="-lpthread $NSPR_LIBS") ;; esac AC_MSG_CHECKING("for PR_GetCurrentThread in -lnspr21 with thread lib") LIBS="-lnspr21 $NSPR_LIBS $LIBS" AC_TRY_RUN( #include #include int main () { PRThread *dummy = PR_GetCurrentThread(); exit(0); } , [NSPR_LIBS="-lnspr21 $NSPR_LIBS" result="yes"], [MISSING_NSPR="$MISSING_NSPR -lnspr21" result="no"], [MISSING_NSPR="$MISSING_NSPR -lnspr21" result="no"] ) rm -f core AC_MSG_RESULT("$result") fi dnl AC_CHECK_LIB(nspr21, PR_GetUniqueIdentity, NSPR_LIBS="-lnspr21 $NSPR_LIBS", dnl [MISSING_NSPR="$MISSING_NSPR -lnspr21"], $NSPR_LIBS) AC_CHECK_LIB(plc21, PL_CreateOptState, NSPR_LIBS="-lplc21 $NSPR_LIBS", [MISSING_NSPR="$MISSING_NSPR -lplc21"], $NSPR_LIBS) AC_CHECK_LIB(plds21, PL_GetEvent, NSPR_LIBS="-lplds21 $NSPR_LIBS", [MISSING_NSPR="$MISSING_NSPR -lplds21"], $NSPR_LIBS) CFLAGS=$_SAVE_CFLAGS LDFLAGS=$_SAVE_LDFLAGS LIBS=$_SAVE_LIBS if [ test -n "${NSPR_DIR}" && test -d "${NSPR_DIR}" ]; then NSPR_CFLAGS="-I${NSPR_DIR}/include" NSPR_LIBS="-L${NSPR_DIR}/lib ${NSPR_LIBS}" fi dnl End of nspr tests dnl ======================================================== dnl Echo the CFLAGS to remove extra whitespace. CFLAGS=`echo \ $WARNINGS_CFLAGS \ $OPTIMIZE_CFLAGS \ $GPROF_CFLAGS \ $DEPEND_CFLAGS \ $CFLAGS` dnl Support for X11 makedepend, if found on the system dnl ======================================================== AC_PATH_PROG(SYSTEM_MAKEDEPEND,makedepend) AC_SUBST(SYSTEM_MAKEDEPEND) AC_SUBST(SYSTEM_JPEG) AC_SUBST(SYSTEM_PNG) AC_SUBST(SYSTEM_ZLIB) AC_SUBST(JPEG_CFLAGS) AC_SUBST(JPEG_LIBS) AC_SUBST(ZLIB_CFLAGS) AC_SUBST(ZLIB_LIBS) AC_SUBST(PNG_CFLAGS) AC_SUBST(PNG_LIBS) AC_SUBST(NSPR_CFLAGS) AC_SUBST(NSPR_LIBS) AC_SUBST(CFLAGS) AC_SUBST(LDFLAGS) AC_SUBST(LIBS) AC_SUBST(WRAP_MALLOC_CFLAGS) AC_SUBST(WRAP_MALLOC_LIB) AC_SUBST(MKSHLIB) AC_SUBST(MKSHLIB_FORCE_ALL) AC_SUBST(MKSHLIB_UNFORCE_ALL) AC_SUBST(DSO_CFLAGS) AC_SUBST(DSO_LDOPTS) AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, $DLL_SUFFIX) AC_SUBST(DLL_SUFFIX) if test "$USING_HCC"; then CC='${topsrcdir}/build/hcc' CC="$CC '$_OLDCC'" CXX='${topsrcdir}/build/hcpp' CXX="$CXX '$_OLDCXX'" AC_SUBST(CC) AC_SUBST(CXX) fi dnl Check for missing components if test "$no_x" != "yes"; then if test -n "$MISSING_X"; then AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]); fi if test -n "$MISSING_GTK"; then AC_MSG_ERROR([ Could not link sample program with the following gtk libraries: $MISSING_GTK ]) fi if test -n "$MISSING_MOTIF"; then AC_MSG_ERROR([ Could not find the following motif libraries: $MISSING_MOTIF ]); fi fi # $no_x if test -n "$MISSING_NSPR"; then AC_MSG_ERROR([Could not find the following nspr libraries or could not run sample program: $MISSING_NSPR]); fi dnl Set various defines and substitutions dnl ======================================================== # netlib stuff AC_DEFINE(MODULAR_NETLIB) MODULAR_NETLIB=1 AC_SUBST(MODULAR_NETLIB) if test "$MODULAR_NETLIB" = ""; then AC_DEFINE(CookieManagement) fi # imagelib AC_DEFINE(STANDALONE_IMAGE_LIB) STANDALONE_IMAGE_LIB=1 AC_SUBST(STANDALONE_IMAGE_LIB) OS_TARGET=`uname -s` AC_SUBST(OS_TARGET) if test "$OS_TARGET" = "OS2"; then AC_DEFINE(XP_PC) elif test "$OS_TARGET" = "WINNT"; then AC_DEFINE(XP_PC) else AC_DEFINE(XP_UNIX) AC_DEFINE(UNIX_EMBED) AC_DEFINE(X_PLUGINS) AC_DEFINE(UNIX_LDAP) AC_DEFINE(UNIX_ASYNC_DNS) fi AC_DEFINE(JS_THREADSAFE) AC_DEFINE(LAYERS) AC_DEFINE(NETSCAPE) if test "$MOZ_EDITOR"; then AC_DEFINE(NGEDITOR) fi # Used for LD_LIBRARY_PATH of run_viewer target LIBS_PATH= for lib_arg in $NSPR_LIBS $TK_LIBS; do case $lib_arg in -L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr $lib_arg : "-L\(.*\)"` ;; * ) ;; esac done AC_SUBST(LIBS_PATH) dnl Spit out some output dnl ======================================================== # Save the defines header file before autoconf removes it. # (Do not add AC_DEFINE calls after this line.) if test "$USE_CPP_INCLUDE_FLAG"; then CONFIG_DEFS_H=config-defs.h # Only write config-defs.h when something changes (or it doesn't exist) if test ! -f $CONFIG_DEFS_H \ || diff confdefs.h $CONFIG_DEFS_H | grep \# > /dev/null; then AC_MSG_RESULT("creating $CONFIG_DEFS_H") cat > $CONFIG_DEFS_H <<\EOF /* List of defines generated by configure. Included with preprocessor flag, * -include, to avoid long list of -D defines on the compile command-line. * Do not edit. */ EOF cat confdefs.h >> $CONFIG_DEFS_H fi CONFIG_DEFS_H='$(DEPTH)/'$CONFIG_DEFS_H AC_SUBST(CONFIG_DEFS_H) fi dnl Need to manual make the directories to get around deficiency in AC_OUTPUT for d in lib modules modules/security; do if [ test ! -d $d ]; then rm -f $d; mkdir $d; fi done # Load the list of Makefiles to generate. # To add new Makefiles, edit allmakefiles.sh. # allmakefiles.sh sets the variable, MAKEFILES. _topsrcdir=`dirname [$]0` . $_topsrcdir/allmakefiles.sh AC_OUTPUT($MAKEFILES)