dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.12) AC_INIT(config/libc_r.h) d=`pwd` if test "${srcdir}" = "$d" || test "${srcdir}" = "." ; then echo "Do not build in the srcdir as it will override Makefiles used by non-autoconf build." exit 1; fi AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf) AC_CANONICAL_SYSTEM AC_VALIDATE_CACHED_SYSTEM_TUPLE AC_PREFIX_DEFAULT(\${MOD_DEPTH}/dist) dnl Set this define to make fixes w/o breaking anything else. AC_DEFINE(USE_AUTOCONF) dnl ======================================================== dnl = Version defaults dnl ======================================================== NSPR_VERSION=3 NSPR_MODNAME=nspr20 _HAVE_PTHREADS= USE_PTHREADS= USE_USER_PTHREADS= USE_NSPR_THREADS= dnl ======================================================== dnl = dnl = Dont change the following lines. Doing so breaks: dnl = dnl = CFLAGS="-foo" ./configure dnl = dnl ======================================================== CFLAGS="${CFLAGS=}" CXXFLAGS="${CXXFLAGS=}" LDFLAGS="${LDFLAGS=}" HOST_CFLAGS="${HOST_CFLAGS=}" HOST_LDFLAGS="${HOST_LDFLAGS=}" dnl ======================================================== dnl = dnl = Check options that may affect the compiler dnl = dnl ======================================================== MOZ_DEBUG=1 AC_ARG_ENABLE(debug, [ --disable-debug Do not compile in debugging symbols], [ if test "$enableval" = "no"; then MOZ_DEBUG= fi]) AC_ARG_ENABLE(shared, [ --disable-shared Do not compile into shared libraries]) AC_ARG_ENABLE(target, [ --enable-target=\$t Turn on features for target \$t when build has multiple targets], MOZ_TARGET=`echo $enableval | tr a-z A-Z`, MOZ_TARGET=) if test -n "$MOZ_DEBUG"; then CFLAGS="-g $CFLAGS" CXXFLAGS="-g $CXXFLAGS" DEFINES="$DEFINES -DDEBUG -UNDEBUG -DDEBUG_$(shell whoami)" else CFLAGS="-O $CFLAGS" CXXFLAGS="-O $CFLAGS" DEFINES="$DEFINES -UDEBUG -DNDEBUG" fi dnl ======================================================== dnl Checks for compilers. dnl ======================================================== if test "$target" != "$host"; then echo "cross compiling from $host to $target" cross_compiling=yes _SAVE_CC="$CC" _SAVE_CFLAGS="$CFLAGS" _SAVE_LDFLAGS="$LDFLAGS" AC_MSG_CHECKING([for $host compiler]) if test -z "$HOST_CC"; then AC_CHECK_PROGS(HOST_CC, gcc cc /usr/ucb/cc, "") if test -z "$HOST_CC"; then AC_MSG_ERROR([no acceptable cc found in \$PATH]) fi fi AC_MSG_RESULT([$HOST_CC]) if test -z "$HOST_CFLAGS"; then HOST_CFLAGS="$CFLAGS" fi if test -z "$HOST_LDFLAGS"; then HOST_LDFLAGS="$LDFLAGS" fi CC="$HOST_CC" CFLAGS="$HOST_CFLAGS" LDFLAGS="$HOST_LDFLAGS" AC_MSG_CHECKING([whether the $host compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works]) AC_TRY_COMPILE([], [return(0);], [ac_cv_prog_host_cc_works=1 AC_MSG_RESULT([yes])], AC_MSG_ERROR([installation or configuration problem: $host compiler $HOST_CC cannot create executables.]) ) CC=$_SAVE_CC CFLAGS=$_SAVE_CFLAGS LDFLAGS=$_SAVE_LDFLAGS if test -z "$CC"; then AC_CHECK_PROGS(CC, "${target_alias}-gcc" "${target}-gcc", :) fi unset ac_cv_prog_CC AC_PROG_CC if test -z "$CXX"; then AC_CHECK_PROGS(CXX, "${target_alias}-g++" "${target}-g++", :) fi unset ac_cv_prog_CXX AC_PROG_CXX if test -z "$RANLIB"; then AC_CHECK_PROGS(RANLIB, "${target_alias}-ranlib" "${target}-ranlib", :) fi if test -z "$AR"; then AC_CHECK_PROGS(AR, "${target_alias}-ar" "${target}-ar", :) fi if test -z "$AS"; then AC_CHECK_PROGS(AS, "${target_alias}-as" "${target}-as", :) fi if test -z "$DLLTOOL"; then AC_CHECK_PROGS(DLLTOOL, "${target_alias}-dlltool" "${target}-dlltool", :) fi if test -z "$WINDRES"; then AC_CHECK_PROGS(WINDRES, "${target_alias}-windres" "${target}-windres", :) fi else AC_PROG_CC AC_PROG_CXX AC_PROG_RANLIB AC_PATH_PROGS(AS, as, $CC) AC_PATH_PROGS(AR, ar, :) AC_PATH_PROGS(DLLTOOL, dlltool, :) AC_PATH_PROGS(WINDRES, windres, :) if test -z "$HOST_CC"; then HOST_CC="$CC" fi if test -z "$HOST_CFLAGS"; then HOST_CFLAGS="$CFLAGS" fi fi if test "$GCC" = "yes"; then GNU_CC=1 fi dnl ======================================================== dnl Checks for programs. dnl ======================================================== AC_PROG_INSTALL AC_PROG_LN_S AC_PATH_PROGS(PERL, perl5 perl, :) dnl ======================================================== dnl Default platform specific options dnl ======================================================== OBJ_SUFFIX=o LIB_SUFFIX=a DLL_SUFFIX=so MKSHLIB='$(CCC) -shared -o $@' PR_MD_ASFILES= PR_MD_CSRCS= dnl ======================================================== dnl Override of system specific host options dnl ======================================================== case "$host" in *-mingw*) ;; *) HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" ;; esac dnl ======================================================== dnl Override of system specific target options dnl ======================================================== case "$target" in *-beos*) AC_DEFINE(XP_BEOS) AC_DEFINE(BeOS) AC_DEFINE(BEOS) ;; *-linux*) AC_DEFINE(XP_UNIX) MDCPUCFG_H=_linux.cfg PR_MD_CSRCS=linux.c PR_MD_ARCH_DIR=unix ;; *-irix*) AC_DEFINE(XP_UNIX) MDCPUCFG_H=_irix32.cfg PR_MD_CSRCS=irix.c AS="as -D_ASM $(INCLUDES) -n32" PR_MD_ASFILES=os_Irix.s PR_MD_ARCH_DIR=unix case "${target_cpu}" in alpha*) AC_DEFINE(_POSIX_SOURCE) AC_DEFINE(_BSD_SOURCE) ;; esac ;; *-mingw*) AC_DEFINE(XP_PC) PR_MD_ARCH_DIR=windows if test -z "$GNU_CC"; then OBJ_SUFFIX=obj LIB_SUFFIX=lib DLL_SUFFIX=dll fi MKSHLIB='$(DLLTOOL) --as=$(AS) -k --dllname $*.dll --output-lib $@' case "$MOZ_TARGET" in WINNT) DEFINES="$DEFINES -DWIN32 -DWINNT -DWin32_Winsock" MDCPUCFG_H=_winnt.cfg ;; WIN95) DEFINES="$DEFINES -UWINNT -DWIN32 -DWIN95 -DWin32_Winsock -D_PR_GLOBAL_THREADS_ONLY" MDCPUCFG_H=_win95.cfg ;; WIN16) DEFINES="$DEFINES -UWINNT" MDCPUCFG_H=_win16.cfg ;; *) AC_MSG_ERROR([Missing MOZ_TARGET for ${target}. Use --enable-target to set.]) ;; esac case "$target" in i?86-*) AC_DEFINE(_X86_) ;; alpha-*) AC_DEFINE(_ALPHA_) ;; mips-*) AC_DEFINE(_MIPS_) ;; *) AC_DEFINE(_CPU_ARCH_NOT_DEFINED) ;; esac ;; esac dnl Turn off shared libraries if asked to do so. if test "$enable_shared" = no; then MKSHLIB= fi dnl ======================================================== dnl Check for system libraries dnl ======================================================== dnl AC_CHECK_LIB(C, main) dnl AC_CHECK_LIB(C_r, main) dnl AC_CHECK_LIB(c, main) dnl AC_CHECK_LIB(c_r, main) dnl AC_CHECK_LIB(dce, main) dnl AC_CHECK_LIB(dl, main) dnl AC_CHECK_LIB(dld, main) dnl AC_CHECK_LIB(gen, main) dnl AC_CHECK_LIB(ip6, main) dnl AC_CHECK_LIB(l, main) dnl AC_CHECK_LIB(m, main) dnl AC_CHECK_LIB(nsl, main) dnl AC_CHECK_LIB(posix4, main) dnl AC_CHECK_LIB(prstrms, main) dnl AC_CHECK_LIB(prstrms_shr, main) dnl AC_CHECK_LIB(pthread, main) dnl AC_CHECK_LIB(pthreads, main) dnl AC_CHECK_LIB(resolv, main) dnl AC_CHECK_LIB(rt, main) dnl AC_CHECK_LIB(socket, main) dnl AC_CHECK_LIB(svld, main) dnl AC_CHECK_LIB(thread, main) dnl AC_CHECK_LIB(vms_jackets, main) dnl ======================================================== dnl Check for system header files. dnl ======================================================== dnl AC_HEADER_DIRENT dnl AC_HEADER_STDC dnl AC_HEADER_SYS_WAIT dnl AC_CHECK_HEADERS(fcntl.h limits.h sys/file.h sys/ioctl.h sys/time.h unistd.h) dnl ======================================================== dnl Check for typedefs and structs dnl ======================================================== dnl AC_C_CONST dnl AC_TYPE_UID_T dnl AC_TYPE_MODE_T dnl AC_TYPE_OFF_T dnl AC_TYPE_PID_T dnl AC_TYPE_SIZE_T dnl AC_STRUCT_ST_BLKSIZE dnl AC_STRUCT_ST_BLOCKS dnl AC_STRUCT_ST_RDEV dnl AC_HEADER_TIME dnl AC_STRUCT_TM dnl ======================================================== dnl Checks for library functions. dnl ======================================================== AC_PROG_GCC_TRADITIONAL AC_CHECK_FUNCS(lchown strerror) dnl AC_FUNC_MEMCMP dnl AC_FUNC_MMAP dnl AC_FUNC_SETVBUF_REVERSED dnl AC_FUNC_STRCOLL dnl AC_FUNC_STRFTIME dnl AC_FUNC_UTIME_NULL dnl AC_FUNC_VPRINTF dnl AC_CHECK_FUNCS(ftime getcwd gethostname gettimeofday getwd mkdir mktime putenv rmdir select socket strdup strerror strstr strtol strtoul uname) dnl ======================================================== dnl Check options dnl ======================================================== OS_LIBS= dnl Check if NSPR is being compiled for Mozilla dnl Let --with-arg override environment setting dnl AC_ARG_WITH(mozilla, [ --with-mozilla Compile NSPR with Mozilla support], [ if test "$withval" = "yes"; then AC_DEFINE(MOZILLA_CLIENT) else MOZILLA_CLIENT= fi], [ if test -n "$MOZILLA_CLIENT"; then AC_DEFINE(MOZILLA_CLIENT) fi]) AC_CHECK_LIB(pthread, pthread_attr_init, _HAVE_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, _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r") fi AC_ARG_WITH(pthreads, [ --with-pthreads Use system pthreads library as thread subsystem], [ if test "$withval" = "yes"; then if test -n "$_HAVE_PTHREADS"; then USE_PTHREADS=1 USE_USER_PTHREADS= USE_NSPR_THREADS= else AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]); fi else USE_PTHREADS= _PTHREAD_LDFLAGS= fi], [ if test -n "$_HAVE_PTHREADS"; then USE_PTHREADS=1 USE_USER_PTHREADS= USE_NSPR_THREADS= fi]) AC_ARG_ENABLE(user-pthreads, [ --enable-user-pthreads Build using userland pthreads], [ if test "$enableval" = "yes"; then if test -n "$_HAVE_PTHREADS"; then USE_PTHREADS= USE_USER_PTHREADS=1 USE_NSPR_THREADS= else AC_MSG_ERROR([ --enable-user-pthreads specified for a system without pthread support ]); fi fi]) AC_ARG_ENABLE(nspr-threads, [ --enable-nspr-threads Build using classic nspr threads], [ if test "$enableval" = "yes"; then USE_PTHREADS= USE_USER_PTHREADS= USE_NSPR_THREADS=1 fi]) case "$target" in *-beos*) AC_ARG_WITH(bthreads, [ --with-bthreads Use system bthreads library as thread subsystem (BeOS only)], [ if test "$withval" = "yes"; then USE_BTHREADS=1 USE_USER_PTHREADS= USE_PTHREADS= fi]) ;; *-solaris*) AC_ARG_WITH(native-threads, [ --with-native-threads Use native system threads as thread subsystem (Solaris only)], [ if test "$withval" = "yes"; then USE_NATIVE_THREADS=1 USE_USER_PTHREADS= USE_PTHREADS= fi]) ;; esac USE_CPLUS= AC_ARG_ENABLE(cplus, [ --enable-cplus Use cplus for whatever reason], [ if test "$enableval" = "yes"; then USE_CPLUS=1 fi]) USE_IPV6= AC_ARG_ENABLE(ipv6, [ --enable-ipv6 Compile ipv6 support], [ if test "$enableval" = "yes"; then USE_IPV6=1 fi]) if test -n "$USE_PTHREADS"; then dnl See if -pthread is supported. 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* AC_MSG_RESULT($ac_cv_have_dash_pthread) case "$target" in *-mingw*|*-cygwin*|*-uwin*) ;; *-solaris*) AC_DEFINE(_REENTRANT) if test -n "$GNU_CC"; then CFLAGS="$CFLAGS -mt" CXXFLAGS="$CXXFLAGS -mt" fi ;; *-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= fi ;; *) AC_DEFINE(_REENTRANT) ;; esac AC_CHECK_FUNC(pthread_create,,[ AC_CHECK_LIB(pthread, pthread_create, [OS_LIBS="-lpthread $OS_LIBS"]) ]) else if test -n "$USE_USER_PTHREADS"; then USE_PTHREADS= USE_NSPR_THREADS= else USE_NSPR_THREADS=1 dnl AC_DEFINE(_PR_LOCAL_THREADS_ONLY) fi fi dnl Special thread exceptions case "$target" in *-mingw*|*-cygwin*|*-uwin*) # win32 does not use pthreads USE_PTHREADS= PTHREAD_LDFLAGS= USE_USER_PTHREADS= ;; *-solaris*) if test -n "$USE_NATIVE_THREADS"; then AC_DEFINE(_PR_GLOBAL_THREADS_ONLY) else AC_DEFINE(_PR_LOCAL_THREADS_ONLY) fi ;; esac AC_CHECK_FUNC(dlopen,,[ AC_CHECK_LIB(dl, dlopen, [OS_LIBS="-ldl $OS_LIBS"]) ]) EXTRA_LIBS= if test "$enable_shared" = no; then EXTRA_LIBS="$OS_LIBS" fi dnl ======================================================== dnl Substitution of found variables. dnl ======================================================== AC_SUBST(MOZILLA_CLIENT) AC_SUBST(CC) AC_SUBST(CXX) AC_SUBST(CFLAGS) AC_SUBST(CXXFLAGS) AC_SUBST(HOST_CC) AC_SUBST(HOST_CFLAGS) AC_SUBST(GNU_CC) AC_SUBST(USE_PTHREADS) AC_SUBST(USE_BTHREADS) AC_SUBST(USE_CPLUS) AC_SUBST(USE_IPV6) AC_SUBST(USE_USER_PTHREADS) AC_SUBST(USE_NATIVE_THREADS) AC_SUBST(USE_NSPR_THREADS) AC_SUBST(NSPR_VERSION) AC_SUBST(NSPR_MODNAME) AC_SUBST(MDCPUCFG_H) AC_SUBST(MOZ_TARGET) AC_SUBST(PR_MD_CSRCS) AC_SUBST(PR_MD_ASFILES) AC_SUBST(PR_MD_ARCH_DIR) AC_SUBST(OBJ_SUFFIX) AC_SUBST(LIB_SUFFIX) AC_SUBST(DLL_SUFFIX) AC_SUBST(MKSHLIB) AC_SUBST(DEFINES) AC_SUBST(DEFS) AC_SUBST(AR) AC_SUBST(DLLTOOL) AC_SUBST(WINDRES) AC_SUBST(RANLIB) AC_SUBST(PERL) AC_SUBST(OS_LIBS) AC_SUBST(EXTRA_LIBS) dnl ======================================================== dnl Generate output files. dnl ======================================================== AC_OUTPUT([ Makefile config/Makefile config/autoconf.mk config/nsprincl.mk config/nsprincl.sh lib/Makefile lib/ds/Makefile lib/libc/Makefile lib/libc/include/Makefile lib/libc/src/Makefile lib/msgc/Makefile lib/msgc/include/Makefile lib/msgc/src/Makefile lib/msgc/tests/Makefile lib/prstreams/Makefile lib/tests/Makefile pr/Makefile pr/include/Makefile pr/include/md/Makefile pr/include/obsolete/Makefile pr/include/private/Makefile pr/src/Makefile pr/src/bthreads/Makefile pr/src/cplus/Makefile pr/src/cplus/tests/Makefile pr/src/io/Makefile pr/src/linking/Makefile pr/src/malloc/Makefile pr/src/md/Makefile pr/src/md/beos/Makefile pr/src/md/os2/Makefile pr/src/md/unix/Makefile pr/src/md/windows/Makefile pr/src/memory/Makefile pr/src/misc/Makefile pr/src/pthreads/Makefile pr/src/threads/Makefile pr/src/threads/combined/Makefile pr/tests/Makefile pr/tests/dll/Makefile pr/tests/w16gui/Makefile tools/Makefile ]) dnl lib/prstreams/tests/testprstrm/Makefile dnl lib/tests/windows/makefile