AC_INIT(Source/NSArray.m) # configure.in for GNU Objective-C library # Process this file with autoconf to produce a configure script. # # Copyright (C) 1993,1994, 1995, 1996, 1997 Free Software Foundation, Inc. # # Written by: Andrew Kachites McCallum # Dept. of Computer Science, U. of Rochester, Rochester, NY 14627 # # This file is part of the GNU Objective-C library. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this library; if not, write to the Free # Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA #-------------------------------------------------------------------- # Use a .h file with #define's, instead of -D command-line switches #-------------------------------------------------------------------- AC_CONFIG_HEADER(Headers/gnustep/base/config.h) #-------------------------------------------------------------------- # Determine the host, build, and target systems #-------------------------------------------------------------------- AC_CANONICAL_SYSTEM #-------------------------------------------------------------------- # Find the compiler #-------------------------------------------------------------------- AC_PROG_CC AC_PROG_CPP AC_PATH_PROG(WHOAMI, whoami, echo, $PATH:/usr/ucb) AC_EXEEXT #-------------------------------------------------------------------- # specific target_os options #-------------------------------------------------------------------- case "$target_os" in freebsd*) CPPFLAGS="$CPPFLAGS -I/usr/local/include" LIBS="$LIBS -L/usr/local/lib";; esac #-------------------------------------------------------------------- # Find out if we\'re using NeXT\'s compiler. # if yes: # add -cpp-traditional to CPP # if no: # include implementations of List, HashTable etc. #-------------------------------------------------------------------- AC_PROG_NEXTCC if test "$NeXTCC" != yes; then #---------------------------------------------------------------- # Find out if nested functions work on this machine #---------------------------------------------------------------- AC_MSG_CHECKING(whether nested functions work) AC_TRY_RUN([#include "$srcdir/config/config.nested.c"], gcc_nested=1, gcc_nested=0, gcc_nested=1) if test $gcc_nested = 0; then AC_MSG_RESULT(no) echo echo "The GCC 'nested functions' feature does not seem to be working on" echo "this machine. " echo "Read the bug-report instructions in the GCC texinfo manual" echo "and submit a bug report." echo "I'm not even sure gstep-base uses nested functions anymore" echo "but if it does, gstep-base will not compile. Try it" echo "The program this configure script used to test nested functions" echo "can be found in the file 'config/config.nested.c' in this" echo "distribution. Under sparc-sun-sunos4.1.3 with gcc-2.6.1 the" echo "file compiles, runs and returns exit status 0." else AC_MSG_RESULT(yes) fi #---------------------------------------------------------------- # Find out if we're on a NEXTSTEP machine #---------------------------------------------------------------- AC_MSG_CHECKING(whether we are running under NEXTSTEP) AC_TRY_CPP([#if defined(NeXT) #error #endif], NeXTSTEP=0, NeXTSTEP=1) if test $NeXTSTEP = 0; then AC_MSG_RESULT(no) OBJS_INSTALL='$(GNU_OBJS) $(NEXTSTEP_OBJS) $(GNUSTEP_OBJS)' HEADERS_INSTALL='$(GNU_HEADERS) $(NEXTSTEP_HEADERS) $(GNUSTEP_HEADERS)' NEXT_INCLUDES='$(GNU_NEXT_INCLUDES)' NeXT_runtime=0 NeXT_cc=0 else AC_MSG_RESULT(yes) #---------------------------------------------------------------- # Find out if we are using NeXT or GNU runtime #---------------------------------------------------------------- saved_ac_ext=$ac_ext ac_ext=m AC_MSG_CHECKING(whether we are using GNU Objective C runtime) AC_TRY_LINK([#include "$srcdir/config/config.nextrt.m"], ;, NeXT_runtime=1, NeXT_runtime=0) ac_ext=$saved_ac_ext if test $NeXT_runtime = 1; then AC_MSG_RESULT(no: NeXT runtime) echo "Sorry GNUstep does not yet work with the NeXT runtime." echo "Type \"setenv CC gcc -fgnu-runtime\", and run ./configure again." echo "If you are interested in having GNUstep work with the NeXT" echo "runtime, contact Andrew McCallum ." AC_MSG_ERROR(Unsupported Objective C runtime.) # Not reached, for now... LIBOBJC='' CC="$CC -fnext-runtime" # Make sure that we get NeXTs objc/*.h files NEXT_INCLUDES='$(NEXT_NEXT_INCLUDES)' OBJS_INSTALL='$(GNU_OBJS)' HEADERS_INSTALL='$(GNU_HEADERS)' NeXT_cc=0 else AC_MSG_RESULT(yes) LIBOBJC='-lobjc' CC="$CC -fgnu-runtime" # Get objc/List.h, etc. files from this library. NEXT_INCLUDES='$(GNU_NEXT_INCLUDES)' OBJS_INSTALL='$(GNU_OBJS) $(NEXTSTEP_OBJS) $(GNUSTEP_OBJS)' HEADERS_INSTALL='$(GNU_HEADERS) $(NEXTSTEP_HEADERS) $(GNUSTEP_HEADERS)' NeXT_cc=0 fi fi else AC_MSG_ERROR(Sorry, $(LIBRARY_NAME) does not currently work with NeXT's cc; use gcc) #---------------------------------------------------------------- # Find out if we have NEXTSTEP 3.2 or lower #---------------------------------------------------------------- AC_CHECKING(NEXTSTEP version) AC_TRY_CPP([#if NX_CURRENT_COMPILER_RELEASE < 320 #error #endif], NeXT32plus=1, NeXT32plus=0) if test $NeXT32plus = 0; then echo "aborting" echo echo "It looks like your compiler is NEXTSTEP 3.2 or earlier." echo "$(LIBRARY_NAME) makes extensive use of nested functions. In 3.2," echo "NeXT's cc did not support nested functions. To compile $(LIBRARY_NAME)" echo "you can either (1) use gcc instead of NeXT's cc (no loss, since" echo "gcc can compile AppKit programs without problems), or (2) upgrade" echo "to the later release of NEXTSTEP when it is available." exit fi OBJS_INSTALL='$(GNU_OBJS)' HEADERS_INSTALL='$(GNU_HEADERS)' LIBOBJC='' NeXT_runtime=1 NeXT_cc=1 # NeXT default cpp doesn't accept nested functions CC='cc -traditional-cpp' fi AC_SUBST(OBJS_INSTALL) AC_SUBST(HEADERS_INSTALL) AC_DEFINE_UNQUOTED(NeXT_runtime, $NeXT_runtime) AC_DEFINE_UNQUOTED(NeXT_cc, $NeXT_cc) AC_SUBST(NEXT_INCLUDES) #-------------------------------------------------------------------- # Miscellaneous flags #-------------------------------------------------------------------- # Set location of GNUstep dirs for later use GNUSTEP_HDIR=$GNUSTEP_SYSTEM_ROOT/Headers if test "$GNUSTEP_FLATTENED" = yes; then GNUSTEP_LDIR=$GNUSTEP_SYSTEM_ROOT/Libraries else clean_target_os=`$GNUSTEP_SYSTEM_ROOT/Makefiles/clean_os.sh $target_os` clean_target_cpu=`$GNUSTEP_SYSTEM_ROOT/Makefiles/clean_cpu.sh $target_cpu` obj_dir=$clean_target_cpu/$clean_target_os GNUSTEP_LDIR=$GNUSTEP_SYSTEM_ROOT/Libraries/$obj_dir fi # # The following one is so that headers of custom libraries into # $GNUSTEP_HDIR are used before the standard ones # CPPFLAGS="$CPPFLAGS -I$GNUSTEP_HDIR" LDFLAGS="$LDFLAGS -L$GNUSTEP_LDIR" #-------------------------------------------------------------------- # Check if Objective-C is installed #-------------------------------------------------------------------- AC_CHECK_HEADERS(objc/objc.h) if test $ac_cv_header_objc_objc_h = no; then echo "Could not find Objective-C headers" echo "Check to make sure you have a full installation of the GCC" echo "compiler that includes the Objective-C headers and libraries" AC_MSG_ERROR(Could not find Objective-C headers) fi #-------------------------------------------------------------------- # Check for thread flags for libobjc. #-------------------------------------------------------------------- # AC_MSG_CHECKING(for objc threading flags) # # Get them from gnustep-make which contains the real code to get them # objc_threaded=`grep objc_threaded: $GNUSTEP_SYSTEM_ROOT/Makefiles/$obj_dir/config.make | sed -e 's/objc_threaded:=//'` # AC_MSG_RESULT($objc_threaded) #-------------------------------------------------------------------- # Byte order information needed for foundation headers. #-------------------------------------------------------------------- AC_C_BIGENDIAN if test $ac_cv_c_bigendian = yes; then GS_WORDS_BIGENDIAN=1 else GS_WORDS_BIGENDIAN=0 fi AC_SUBST(GS_WORDS_BIGENDIAN) #-------------------------------------------------------------------- # Type size information needed for foundation headers. #-------------------------------------------------------------------- AC_CHECK_SIZEOF(void*) GS_SINT8="signed char" GS_UINT8="unsigned char" AC_SUBST(GS_SINT8) AC_SUBST(GS_UINT8) AC_CHECK_SIZEOF(short) AC_SUBST(ac_cv_sizeof_short) AC_CHECK_SIZEOF(int) AC_SUBST(ac_cv_sizeof_int) AC_CHECK_SIZEOF(long) AC_SUBST(ac_cv_sizeof_long) AC_CHECK_SIZEOF(long long) AC_SUBST(ac_cv_sizeof_long_long) AC_CHECK_SIZEOF(float) AC_SUBST(ac_cv_sizeof_float) AC_CHECK_SIZEOF(double) AC_SUBST(ac_cv_sizeof_double) AC_SUBST(ac_cv_sizeof_voidp) if test $ac_cv_sizeof_voidp = $ac_cv_sizeof_int; then GS_ADDR="unsigned int" else if test $ac_cv_sizeof_voidp = $ac_cv_sizeof_long; then GS_ADDR="unsigned long" else if test $ac_cv_sizeof_voidp = $ac_cv_sizeof_long_long; then GS_ADDR="unsigned long long" else echo "Unable to find integer of same size as void* - abort configuration" exit fi fi fi AC_SUBST(GS_ADDR) if test $ac_cv_sizeof_short = 2; then GS_SINT16="signed short" GS_UINT16="unsigned short" else if test $ac_cv_sizeof_int = 2; then GS_SINT16="signed int" GS_UINT16="unsigned int" else echo "Unable to determine type for 16-bit integer - abort configuration" exit fi fi AC_SUBST(GS_SINT16) AC_SUBST(GS_UINT16) if test $ac_cv_sizeof_int = 4; then GS_SINT32="signed int" GS_UINT32="unsigned int" else if test $ac_cv_sizeof_long = 4; then GS_SINT32="signed long" GS_UINT32="unsigned long" else if test $ac_cv_sizeof_short = 4; then GS_SINT32="signed short" GS_UINT32="unsigned short" else echo "Unable to determine type for 32-bit integer - abort configuration" exit fi fi fi AC_SUBST(GS_SINT32) AC_SUBST(GS_UINT32) GS_HAVE_I64=1 if test $ac_cv_sizeof_int = 8; then GS_SINT64="signed int" GS_UINT64="unsigned int" else if test $ac_cv_sizeof_long = 8; then GS_SINT64="signed long" GS_UINT64="unsigned long" else if test $ac_cv_sizeof_long_long = 8; then GS_SINT64="signed long long" GS_UINT64="unsigned long long" else # 64-bit ints not supported - but we need a dummy type for byte-swapping # of 64-bit values arriving from another system. GS_SINT64="struct { gsu8 a[8]; }" GS_SINT64="struct { gsu8 a[9]; }" GS_HAVE_I64=0 fi fi fi AC_SUBST(GS_SINT64) AC_SUBST(GS_UINT64) AC_SUBST(GS_HAVE_I64) GS_HAVE_I128=1 if test $ac_cv_sizeof_long = 16; then GS_SINT128="signed long" GS_UINT128="unsigned long" else if test $ac_cv_sizeof_long_long = 16; then GS_SINT128="signed long long" GS_UINT128="unsigned long long" else # 128-bit ints not supported - but we need a dummy type for byte-swapping # of 128-bit values arriving from another system. GS_SINT128="struct { gsu8 a[16]; }" GS_UINT128="struct { gsu8 a[16]; }" GS_HAVE_I128=0 fi fi AC_SUBST(GS_SINT128) AC_SUBST(GS_UINT128) AC_SUBST(GS_HAVE_I128) if test $ac_cv_sizeof_float = 4; then GS_FLT32="float" else echo "Unable to determine type for 32-bit float - abort configuration" exit fi AC_SUBST(GS_FLT32) if test $ac_cv_sizeof_double = 8; then GS_FLT64="double" else echo "Unable to determine type for 64-bit float - abort configuration" exit fi AC_SUBST(GS_FLT64) #-------------------------------------------------------------------- # Type-size information for encoding into archives using NSArchiver etc. #-------------------------------------------------------------------- if test $ac_cv_sizeof_short = 2; then _GSC_S_SHT=_GSC_I16 else _GSC_S_SHT=_GSC_I32 fi AC_SUBST(_GSC_S_SHT) if test $ac_cv_sizeof_int = 2; then _GSC_S_INT=_GSC_I16 else if test $ac_cv_sizeof_int = 4; then _GSC_S_INT=_GSC_I32 else if test $ac_cv_sizeof_int = 8; then _GSC_S_INT=_GSC_I64 else if test $ac_cv_sizeof_int = 16; then _GSC_S_INT=_GSC_I128 fi fi fi fi AC_SUBST(_GSC_S_INT) if test $ac_cv_sizeof_long = 4; then _GSC_S_LNG=_GSC_I32 else if test $ac_cv_sizeof_long = 8; then _GSC_S_LNG=_GSC_I64 else if test $ac_cv_sizeof_long = 16; then _GSC_S_LNG=_GSC_I128 fi fi fi AC_SUBST(_GSC_S_LNG) if test $ac_cv_sizeof_long_long = 4; then _GSC_S_LNG_LNG=_GSC_I32 else if test $ac_cv_sizeof_long_long = 8; then _GSC_S_LNG_LNG=_GSC_I64 else if test $ac_cv_sizeof_long_long = 16; then _GSC_S_LNG_LNG=_GSC_I128 fi fi fi AC_SUBST(_GSC_S_LNG_LNG) #-------------------------------------------------------------------- # Setup dynamic linking #-------------------------------------------------------------------- OBJC_SYS_DYNAMIC_LINKER() #--------------------------------------------------------------------- # Guess if we are using a compiler which has the (GNU extension) +load # method which is executed before main. # Defines HAVE_LOAD_METHOD if +load methods are called before main. # Needed by NSProcessInfo.m #-------------------------------------------------------------------- saved_LIBS="$LIBS" saved_CPPFLAGS="$CPPFLAGS" LIBS="$LIBS -lobjc" CPPFLAGS="$CPPFLAGS -x objective-c" if test x"$objc_threaded" != x""; then LIBS="$LIBS $objc_threaded" fi LIBS="$LIBS $extra_LIBS" AC_MSG_CHECKING(if +load method is executed before main) AC_CACHE_VAL(objc_load_method_worked, AC_TRY_RUN([#include "$srcdir/config/config.loadtest.m"], objc_load_method_worked=yes, objc_load_method_worked=no, objc_load_method_worked=no) ) if test $objc_load_method_worked = yes; then AC_DEFINE(HAVE_LOAD_METHOD) AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi CPPFLAGS="$saved_CPPFLAGS" # Don't revert LIBS, need it for the next test #-------------------------------------------------------------------- # This function needed by NSLock.m for conditioned wait # get_uninstalled_dtable used by behavior.m and objc-load.m # Thread functions used by NSThread #-------------------------------------------------------------------- AC_CHECK_FUNCS(objc_condition_timedwait objc_thread_add) AC_EGREP_HEADER(objc_get_uninstalled_dtable, objc/objc-api.h, AC_DEFINE(HAVE_OBJC_GET_UNINSTALLED_DTABLE),) LIBS="$saved_LIBS" #-------------------------------------------------------------------- # Generic settings needed by NSZone.m #-------------------------------------------------------------------- AC_TYPE_SIZE_T AC_C_INLINE #-------------------------------------------------------------------- # Following header checks needed for bzero in Storage.m and other places #-------------------------------------------------------------------- AC_HEADER_STDC AC_CHECK_HEADERS(string.h memory.h) #-------------------------------------------------------------------- # Following header check needed BinaryCStream.h #-------------------------------------------------------------------- AC_CHECK_HEADERS(values.h) #-------------------------------------------------------------------- # Header files and functions for files and filesystems #-------------------------------------------------------------------- AC_CHECK_HEADERS(sys/stat.h sys/vfs.h sys/statfs.h sys/statvfs.h pwd.h grp.h) AC_CHECK_HEADERS(sys/mount.h sys/types.h windows.h locale.h langinfo.h) saved_LIBS="$LIBS" LIBS="$LIBS -lm" AC_CHECK_FUNCS(statvfs symlink readlink geteuid rint) LIBS="$saved_LIBS" #-------------------------------------------------------------------- # These two headers (functions) needed by Time.m #-------------------------------------------------------------------- dnl AC_REPLACE_FUNCS(getrusage gettimeofday) AC_CHECK_HEADERS(sys/time.h sys/rusage.h ucbinclude/sys/resource.h) #-------------------------------------------------------------------- # These headers/functions needed by GSTcpPort.m #-------------------------------------------------------------------- AC_CHECK_HEADERS(sys/socket.h netinet/in.h) dnl AC_REPLACE_FUNCS(recvfrom) #-------------------------------------------------------------------- # These headers/functions needed by NSLog.m #-------------------------------------------------------------------- AC_CHECK_HEADERS(syslog.h) AC_CHECK_FUNCS(syslog) #-------------------------------------------------------------------- # This function needed by StdioStream.m #-------------------------------------------------------------------- AC_CHECK_FUNCS(vsprintf vasprintf) if test $ac_cv_func_vsprintf = yes ; then AC_TRY_RUN([#include "$srcdir/config/config.vsprintf.c"], VSPRINTF_RETURNS_LENGTH=1, VSPRINTF_RETURNS_LENGTH=0, VSPRINTF_RETURNS_LENGTH=1) AC_DEFINE_UNQUOTED(VSPRINTF_RETURNS_LENGTH, $VSPRINTF_RETURNS_LENGTH) fi if test $ac_cv_func_vasprintf = yes ; then AC_TRY_RUN([#include "$srcdir/config/config.vasprintf.c"], VASPRINTF_RETURNS_LENGTH=1, VASPRINTF_RETURNS_LENGTH=0, VASPRINTF_RETURNS_LENGTH=1) AC_DEFINE_UNQUOTED(VASPRINTF_RETURNS_LENGTH, $VASPRINTF_RETURNS_LENGTH) fi #-------------------------------------------------------------------- # This function needed by NSFileManager.m #-------------------------------------------------------------------- AC_CHECK_FUNCS(getcwd) AC_HEADER_DIRENT #-------------------------------------------------------------------- # This function needed by gdomap.c #-------------------------------------------------------------------- AC_CHECK_HEADERS(getopt.h) #-------------------------------------------------------------------- # This function needed by NSPage.m #-------------------------------------------------------------------- AC_CHECK_FUNCS(valloc) #-------------------------------------------------------------------- # This function needed by Time.m #-------------------------------------------------------------------- AC_CHECK_FUNCS(times) #-------------------------------------------------------------------- # These functions needed by NSData.m #-------------------------------------------------------------------- AC_CHECK_FUNCS(mkstemp) AC_CHECK_FUNCS(shmctl) AC_CHECK_FUNCS(mmap) #-------------------------------------------------------------------- # This function needed by UnixFileHandle.m #-------------------------------------------------------------------- AC_CHECK_FUNCS(inet_aton) #-------------------------------------------------------------------- # These functions needed by NSTask.m #-------------------------------------------------------------------- AC_CHECK_FUNCS(killpg setpgrp setpgid) AC_FUNC_SETPGRP HAVE_PTS_STREAM_MODULES=0 case "${target}" in *-sysv-*) HAVE_PTS_STREAM_MODULES=1 ;; esac AC_DEFINE_UNQUOTED(HAVE_PTS_STREAM_MODULES, $HAVE_PTS_STREAM_MODULES) AC_SUBST(HAVE_PTS_STREAM_MODULES) AC_CHECK_HEADERS(libc.h limits.h malloc.h memory.h string.h signal.h sys/file.h sys/fcntl.h sys/ioctl.h sys/stropts.h unistd.h utime.h libguile.h) #-------------------------------------------------------------------- # This function needed by NSThread.m #-------------------------------------------------------------------- AC_CHECK_FUNCS(usleep) #-------------------------------------------------------------------- # This function needed by NSDebug.m and NSProcessInfo.m #-------------------------------------------------------------------- AC_CHECK_FUNCS(strerror) #-------------------------------------------------------------------- # This type needed by GSFormat #-------------------------------------------------------------------- AC_MSG_CHECKING([whether stdint.h defines uintmax_t]) AC_TRY_COMPILE([#include ], [int i = sizeof(uintmax_t); ], uintmax_t=1, uintmax_t=0) if test $uintmax_t = 1; then AC_MSG_RESULT([found]) AC_DEFINE(HAVE_UINTMAX_T) else AC_MSG_RESULT([not found]) fi AC_CHECK_HEADERS(wchar.h) #-------------------------------------------------------------------- # This function needed by NSString for handling of %@ printf directive. #-------------------------------------------------------------------- AC_CHECK_FUNC(register_printf_function, register_printf=1, register_printf=0) if test $register_printf = 1; then AC_TRY_RUN([#include "$srcdir/config/config.printf.c"], working_register_printf=1, working_register_printf=0, working_register_printf=1) if test $working_register_printf = 1; then AC_DEFINE(HAVE_REGISTER_PRINTF_FUNCTION) fi fi #-------------------------------------------------------------------- # This function needed by NSString. #-------------------------------------------------------------------- AC_CHECK_FUNCS(realpath) #-------------------------------------------------------------------- # Check if the C Library defines extern char *program_invocation_name # Used in critical cases by NSProcessInfo.m #-------------------------------------------------------------------- AC_MSG_CHECKING(program_invocation_name in C Library) AC_CACHE_VAL(program_invocation_name_worked, [AC_TRY_RUN([ #include int main (int argc, char *argv[]) { extern char *program_invocation_name; return (strcmp (program_invocation_name, argv[0])); } ], program_invocation_name_worked=yes, program_invocation_name_worked=no, program_invocation_name_worked=no)]) if test $program_invocation_name_worked = yes; then AC_DEFINE(HAVE_PROGRAM_INVOCATION_NAME) AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi #-------------------------------------------------------------------- # Defines HAVE_PROCFS if the kernel supports the /proc filesystem. # Needed by NSProcessInfo.m #-------------------------------------------------------------------- AC_SYS_PROCFS AC_SYS_PROCFS_EXE_LINK #-------------------------------------------------------------------- # Check if short and int values need to be word aligned #-------------------------------------------------------------------- AC_MSG_CHECKING(short/int needs to be word aligned) AC_TRY_RUN([#include "$srcdir/config/config.align.c"], NEED_WORD_ALIGNMENT=0, NEED_WORD_ALIGNMENT=1, NEED_WORD_ALIGNMENT=1) AC_DEFINE_UNQUOTED(NEED_WORD_ALIGNMENT, $NEED_WORD_ALIGNMENT) if test $NEED_WORD_ALIGNMENT = 1; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi #-------------------------------------------------------------------- # Include redefinition of main () only if needed. # On some systems - force redefinition to be used as the /proc stuff # doesn't work. Allow NSProcessInfo initialization method also. #-------------------------------------------------------------------- AC_MSG_CHECKING("use of pass-through arguments") AC_ARG_ENABLE(pass-arguments, [ --enable-pass-arguments Force user main call to NSProcessInfo initialize],, enable_pass_arguments=no) case "$target_os" in cygwin*) enable_pass_arguments=yes;; esac if test "$enable_pass_arguments" = "yes"; then GS_PASS_ARGUMENTS=1 else GS_PASS_ARGUMENTS=0 fi AC_SUBST(GS_PASS_ARGUMENTS) AC_MSG_RESULT($enable_pass_arguments) AC_MSG_CHECKING("use of fake-main definition") AC_ARG_ENABLE(fake-main, [ --enable-fake-main Force redefine of user main function],, enable_fake_main=no) if test "$enable_pass_arguments" = "no"; then case "$target_os" in freebsdelf*) ;; freebsd*) enable_fake_main=yes;; netbsd*) enable_fake_main=yes;; openbsd*) enable_fake_main=yes;; *sysv*) enable_fake_main=yes;; esac fi GS_FAKE_MAIN=0 if test "$enable_fake_main" = "yes"; then GS_FAKE_MAIN=1 elif test "$enable_pass_arguments" = "no"; then if test "$objc_load_method_worked" = yes -a "$ac_cv_sys_procfs" = yes; then GS_FAKE_MAIN=0 else GS_FAKE_MAIN=1 enable_fake_main=yes fi fi case "$target_os" in mingw*) enable_fake_main=no; GS_FAKE_MAIN=0;; esac AC_SUBST(GS_FAKE_MAIN) AC_MSG_RESULT($enable_fake_main) #-------------------------------------------------------------------- # Check for FFI interface libraries for invocations # We enable ffcall by default now. #-------------------------------------------------------------------- AC_ARG_ENABLE(libffi, [ --enable-libffi Enable use of libffi library],, enable_libffi=no) AC_ARG_ENABLE(ffcall, [ --enable-ffcall Enable use of ffcall library],, enable_ffcall=yes) AC_CHECK_HEADER(ffi.h, , enable_libffi=no) AC_MSG_CHECKING("for forwarding callback in runtime") AC_EGREP_HEADER(__objc_msg_forward, objc/objc-api.h, AC_MSG_RESULT(yes), AC_MSG_RESULT(no); enable_ffcall=no) AC_CHECK_HEADERS(callback.h, , enable_ffcall=no) AC_MSG_CHECKING("FFI library usage") WITH_FFI=none if test $enable_libffi = yes; then AC_DEFINE(USE_LIBFFI) WITH_FFI=libffi LIBS="$LIBS -lffi" AC_MSG_RESULT(libffi) elif test $enable_ffcall = yes; then AC_DEFINE(USE_FFCALL) WITH_FFI=ffcall LIBS="$LIBS -lcallback -lavcall" AC_MSG_RESULT(ffcall) else AC_MSG_RESULT(none) AC_WARN(No ffcall interface library found) echo echo "GNUstep requires the ffcall library to do invocations and DO" echo "Make sure this library is installed (see installation instructions)" echo "Otherwise DO will not be compatible with other systems" fi AC_SUBST(WITH_FFI) #-------------------------------------------------------------------- # Check recent libxml for Properytlists, GSXML, GSDoc etc. #-------------------------------------------------------------------- # Save CFLAGS and LIBS as AM_PATH_XML clobbers these variables regardless # of the success of the macro. saved_LIBS="$LIBS" saved_CFLAGS="$CFLAGS" AM_PATH_XML(2.2.3, enable_libxml=yes, enable_libxml=no) if test $enable_libxml = yes; then CPPFLAGS="$CPPFLAGS $XML_CFLAGS" LIBS="$LIBS $XML_LIBS" HAVE_LIBXML=1 AC_DEFINE(HAVE_LIBXML) else HAVE_LIBXML=0 # Restore the CFLAGS and LIBS because AM_PATH_XML messes them LIBS="$saved_LIBS" CFLAGS="$saved_CFLAGS" fi AC_SUBST(HAVE_LIBXML) #-------------------------------------------------------------------- # Check OpenSSL for HTTPS support. #-------------------------------------------------------------------- echo "Checking for OpenSSL" AC_ARG_WITH(openssl-include, [ --with-openssl-include=PATH include path for openssl headers], openssl_incdir="$withval", openssl_incdir="no") AC_ARG_WITH(openssl-library, [ --with-openssl-library=PATH library path for openssl libraries], openssl_libdir="$withval", openssl_libdir="no") cppflags_temp=$CPPFLAGS libs_temp=$LIBS if test "$openssl_incdir" != "no"; then CPPFLAGS="$CPPFLAGS -I$openssl_incdir" fi if test "$openssl_libdir" != "no"; then LIBS="$LIBS -L$openssl_libdir" fi AC_CHECK_HEADERS(openssl/ssl.h) if test $ac_cv_header_openssl_ssl_h = no; then echo "Could not find openssl headers" echo "Check to make sure you have a recent version of openssl installed" AC_MSG_WARN(Could not find openssl headers) ssl_ok=no else AC_CHECK_LIB(crypto, CRYPTO_malloc, ssl_ok=yes, ssl_ok=no) if test "$ssl_ok" = yes; then base_libs="$LIBS" LIBS="$LIBS -lcrypto" AC_CHECK_LIB(ssl, ssl2_clear, ssl_ok=yes, ssl_ok=no) if test "$ssl_ok" = yes; then LIBS="$base_libs -lssl -lcrypto" AC_SUBST(LIBS) AC_DEFINE(HAVE_OPENSSL) fi fi fi if test "$ssl_ok" = "no"; then CPPFLAGS="$cppflags_temp"; LIBS="$libs_temp"; fi #-------------------------------------------------------------------- # Check GMP for NSDecimal #-------------------------------------------------------------------- echo "Checking for GMP" AC_ARG_WITH(gmp-include, [ --with-gmp-include=PATH include path for gmp headers], gmp_incdir="$withval", gmp_incdir="no") AC_ARG_WITH(gmp-library, [ --with-gmp-library=PATH library path for gmp libraries], gmp_libdir="$withval", gmp_libdir="no") cppflags_temp=$CPPFLAGS libs_temp=$LIBS if test "$gmp_incdir" != "no"; then CPPFLAGS="$CPPFLAGS -I$gmp_incdir" fi if test "$gmp_libdir" != "no"; then LIBS="$LIBS -L$gmp_libdir" fi HAVE_GMP=0 AC_CHECK_HEADERS(gmp.h) if test $ac_cv_header_gmp_h = no; then echo "Could not find gmp headers" echo "Check to make sure you have gmp installed" AC_MSG_WARN(Could not find gmp headers) else AC_CHECK_LIB(gmp, mpf_abs, gmp_ok=yes, gmp_ok=no) if test "$gmp_ok" = no; then AC_CHECK_LIB(gmp, __gmpf_abs, gmp_ok=yes, gmp_ok=no) fi if test "$gmp_ok" = yes; then base_libs="$LIBS" LIBS="$LIBS -lgmp" AC_SUBST(LIBS) HAVE_GMP=1 else echo "Could not find gmp library" echo "Check to make sure you have gmp installed" AC_MSG_WARN(Could not find gmp library) fi fi if test "$HAVE_GMP" = "0"; then CPPFLAGS="$cppflags_temp"; LIBS="$libs_temp"; fi AC_SUBST(HAVE_GMP) #-------------------------------------------------------------------- # Check for iconv support (for Unicode conversion). #-------------------------------------------------------------------- # Check in the glibc library AC_CHECK_FUNCS(iconv) if test $ac_cv_func_iconv = no; then # Check if we have a libiconv library AC_ARG_WITH(libiconv-library, [ --with-libiconv-library=PATH library path for libiconv libraries], libiconv_libdir="$withval", libiconv_libdir="no") libs_temp=$LIBS if test "$libiconv_libdir" != "no"; then LIBS="$LIBS -L$libiconv_libdir" fi AC_CHECK_LIB(iconv, main) if test x"$av_cv_lib_iconv_main" = xyes; then LIBS="$LIBS -liconv" AC_SUBST(LIBS) SYSTEM_DEFS="-DHAVE_ICONV $SYSTEM_DEFS" else LIBS="$libs_temp"; fi else SYSTEM_DEFS="-DHAVE_ICONV $SYSTEM_DEFS" fi AC_SUBST(SYSTEM_DEFS) AC_SUBST(whole_archive) AC_SUBST(no_whole_archive) AC_CONFIG_SUBDIRS(Source/mframe) #-------------------------------------------------------------------- # Record the version #-------------------------------------------------------------------- if test -f "Version"; then . ./Version fi AC_SUBST(VERSION) AC_SUBST(MAJOR_VERSION) AC_SUBST(MINOR_VERSION) AC_SUBST(SUBMINOR_VERSION) AC_SUBST(GCC_VERSION) #-------------------------------------------------------------------- # Write the Makefiles #-------------------------------------------------------------------- AC_OUTPUT(config.mak base.make Headers/gnustep/base/GSConfig.h Headers/gnustep/base/preface.h) dnl Local Variables: dnl comment-start: "dnl " dnl comment-end: "" dnl comment-start-skip: "\\bdnl\\b\\s *" dnl compile-command: "autoconf" dnl End: