# Configure template for Gambit-C system. # Copyright (C) 1994-2006 by Marc Feeley, All Rights Reserved. # Process this file with autoconf to produce a configure script. AC_INIT(Gambit-C,4.0b20,gambit@iro.umontreal.ca,gambc-4.0b20) AC_CONFIG_HEADERS(include/config.h) PACKAGE_SHORTNAME=gambc PACKAGE_SUBDIR="/4.0b20" AC_SUBST(PACKAGE_SHORTNAME) AC_SUBST(PACKAGE_NAME) AC_SUBST(PACKAGE_VERSION) AC_SUBST(PACKAGE_STRING) AC_SUBST(PACKAGE_BUGREPORT) AC_SUBST(PACKAGE_TARNAME) AC_SUBST(PACKAGE_SUBDIR) AC_COPYRIGHT([[Copyright (C) 1994-2006 by Marc Feeley, All Rights Reserved.]]) AC_CONFIG_SRCDIR(include/gambit.h) AC_PREFIX_DEFAULT(/usr/local/$PACKAGE_NAME) AC_CANONICAL_SYSTEM ############################################################################### # # Accumulate subsystems to include in runtime library. RTLIBSUBSYS="" ############################################################################### # # To accumulate flags and definitions for C compilation. FLAGS_OBJ="" FLAGS_DYN="" FLAGS_LIB="" FLAGS_EXE="" GSC_CC_O_DEFS="-D___DYNAMIC" ############################################################################### # # Check if the system must be compiled using the C compiler or C++ compiler. AC_ARG_ENABLE(cplusplus, AC_HELP_STRING([--enable-cplusplus], [compile using C++ compiler (default is NO)]), ENABLE_CPLUSPLUS=$enableval, ENABLE_CPLUSPLUS=no) if test "${CFLAGS+set}" != set; then CFLAGS="" fi if test "${CXXFLAGS+set}" != set; then CXXFLAGS="" fi if test "${LDFLAGS+set}" != set; then LDFLAGS="" fi AC_LANG(C) AC_PROG_CC AC_PROG_CPP C_COMPILER=$CC C_PREPROC=$CPP if test "$ENABLE_CPLUSPLUS" = yes; then AC_LANG(C++) AC_PROG_CXX AC_PROG_CXXCPP C_COMPILER=$CXX C_PREPROC=$CXXCPP fi AC_SUBST(C_COMPILER) AC_SUBST(C_PREPROC) ############################################################################### # # Check if the system must include GUIDE (Gambit Universal IDE). AC_ARG_ENABLE(guide, AC_HELP_STRING([--enable-guide], [include the Gambit Universal IDE (default is NO)]), ENABLE_GUIDE=$enableval, ENABLE_GUIDE=no) if test "$ENABLE_GUIDE" = yes; then if test "$ENABLE_CPLUSPLUS" = yes; then # Determine if Qt is available, if the version is good, etc ac_qmake='qmake -o conftest.qt /dev/null >&5' rm -f conftest.qt if { (eval echo "$as_me:$LINENO: \"$ac_qmake\"") >&5 (eval $ac_qmake) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then ac_qt_version_check="grep -q '^# Generated by qmake ([^)]*) (Qt 3\\.3\\..*' conftest.qt" if { (eval echo "$as_me:$LINENO: \"$ac_qt_version_check\"") >&5 (eval $ac_qt_version_check) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then QTINCPATH=`sed -n -e '/^INCPATH[[ ]]*=[[ ]]*\(.*\)/s//\1/p' conftest.qt` QTLIBS=`sed -n -e '/^LIBS[[ ]]*=[[ ]]*\\\$(SUBLIBS)[[ ]]*\(.*\)/s//\1/p' conftest.qt` else qt_version=`sed -n -e '/^# Generated by qmake (\([^)]*\)) (Qt \([0-9]*\.[0-9]*\).*/s//\2/p' conftest.qt` ENABLE_GUIDE=no AC_MSG_NOTICE([ ************************************************************************ *** The Gambit Universal IDE requires that the system be built using *** *** the Qt GUI library version 3.3. Version $qt_version of Qt is currently *** *** installed. *** ************************************************************************ ]) fi else ENABLE_GUIDE=no AC_MSG_NOTICE([ ************************************************************************ *** The Gambit Universal IDE requires that the system be built using *** *** the Qt GUI library. This library could not be located. Make *** *** sure that the program qmake is in your PATH. *** ************************************************************************ ]) fi else ENABLE_GUIDE=no AC_MSG_NOTICE([ ************************************************************************ *** The Gambit Universal IDE requires that the system be built using *** *** a C++ compiler. You must specify both "--enable-cplusplus" and *** *** "--enable-guide" to include the Gambit Universal IDE. *** ************************************************************************ ]) fi fi if test "$ENABLE_GUIDE" = yes; then AC_DEFINE(___GUIDE) AC_SUBST(QTINCPATH) RTLIBSUBSYS="$RTLIBSUBSYS guide" LIBS="$LIBS $QTLIBS" fi AC_SUBST(ENABLE_GUIDE) ############################################################################### # # Check if the system is to be debugged. AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug], [build system so that it can be debugged (default is NO)]), ENABLE_DEBUG=$enableval, ENABLE_DEBUG=no) if test "$ENABLE_DEBUG" = yes; then AC_DEFINE(___DEBUG) GSC_CC_O_DEFS="$GSC_CC_O_DEFS -D___DEBUG" fi ############################################################################### # # Check if the system is to be profiled. AC_ARG_ENABLE(profile, AC_HELP_STRING([--enable-profile], [build system so that it can be profiled (default is NO)]), ENABLE_PROFILE=$enableval, ENABLE_PROFILE=no) if test "$ENABLE_PROFILE" = yes; then AC_DEFINE(___PROFILE) GSC_CC_O_DEFS="$GSC_CC_O_DEFS -D___PROFILE" fi ############################################################################### # # Check if the system is to be compiled with trial run feedback. AC_ARG_ENABLE(feedback1, AC_HELP_STRING([--enable-feedback1], [build system to accumulate trial run data (default is NO)]), ENABLE_FEEDBACK1=$enableval, ENABLE_FEEDBACK1=no) AC_ARG_ENABLE(feedback2, AC_HELP_STRING([--enable-feedback2], [build system using trial run feedback (default is NO)]), ENABLE_FEEDBACK2=$enableval, ENABLE_FEEDBACK2=no) ############################################################################### # # Check if a single C function should be generated for all the Scheme # functions in a file. This makes the executable much faster but the # compilation will be much longer and take much more memory. AC_ARG_ENABLE(single-host, AC_HELP_STRING([--enable-single-host], [compile each Scheme module as a single C function (default is NO)]), ENABLE_SINGLE_HOST=$enableval, ENABLE_SINGLE_HOST=no) if test "$ENABLE_SINGLE_HOST" = yes; then AC_DEFINE(___SINGLE_HOST) GSC_CC_O_DEFS="$GSC_CC_O_DEFS -D___SINGLE_HOST" fi ############################################################################### # # Check if expensive GCC optimizations should be used. This makes the # executable faster but the compilation will be much longer and take # much more memory. AC_ARG_ENABLE(gcc-opts, AC_HELP_STRING([--enable-gcc-opts], [Use expensive GCC optimizations (default is NO)]), ENABLE_GCC_OPTS=$enableval, ENABLE_GCC_OPTS=no) ############################################################################### # # Check the width of Scheme characters. AC_ARG_ENABLE(char-size, AC_HELP_STRING([--enable-char-size=N], [Scheme character size in bytes (default is 4)]), CHAR_SIZE=$enableval, CHAR_SIZE=4) if test "$CHAR_SIZE" = 1; then AC_DEFINE(___MAX_CHR,0xff) GSC_CC_O_DEFS="$GSC_CC_O_DEFS -D___MAX_CHR=0xff" else if test "$CHAR_SIZE" = 2; then AC_DEFINE(___MAX_CHR,0xffff) GSC_CC_O_DEFS="$GSC_CC_O_DEFS -D___MAX_CHR=0xffff" fi fi ############################################################################### # # Check if a shared library must be built. AC_ARG_ENABLE(shared, AC_HELP_STRING([--enable-shared], [build the Scheme runtime system as a shared library (default is NO)]), ENABLE_SHARED=$enableval, ENABLE_SHARED=no) if test "$ENABLE_SHARED" = yes; then AC_DEFINE(___SHARED) # don't add to GSC_CC_O_DEFS fi ############################################################################### # # Check the size of the type "void*". On many systems it is the same # size as "long". If this isn't the case then define # ___VOIDSTAR_WIDTH appropriately. AC_CHECK_SIZEOF(void*) AC_CHECK_SIZEOF(long) if test "$ac_cv_sizeof_voidp" != "$ac_cv_sizeof_long"; then AC_DEFINE(___VOIDSTAR_WIDTH,"($ac_cv_sizeof_voidp * ___CHAR_WIDTH)") GSC_CC_O_DEFS="$GSC_CC_O_DEFS -D___VOIDSTAR_WIDTH=($ac_cv_sizeof_voidp * ___CHAR_WIDTH)" fi ############################################################################### # # Check for header files. AC_CHECK_HEADERS(errno.h) AC_CHECK_HEADERS(unistd.h) AC_CHECK_HEADERS(pwd.h) AC_CHECK_HEADERS(dirent.h) AC_CHECK_HEADERS(dlfcn.h) AC_CHECK_HEADERS(dl.h) AC_CHECK_HEADERS(sys/dxe.h) AC_CHECK_HEADERS(mach-o/dyld.h) AC_CHECK_HEADERS(sys/types.h) AC_CHECK_HEADERS(sys/time.h) AC_CHECK_HEADERS(sys/times.h) AC_CHECK_HEADERS(sys/timeb.h) AC_CHECK_HEADERS(sys/timers.h) AC_CHECK_HEADERS(time.h) AC_CHECK_HEADERS(sys/resource.h) AC_CHECK_HEADERS(sys/stat.h) AC_CHECK_HEADERS(sys/wait.h) AC_CHECK_HEADERS(stat.h) AC_CHECK_HEADERS(signal.h) AC_CHECK_HEADERS(netdb.h) AC_CHECK_HEADERS(grp.h) #AC_CHECK_HEADERS(windows.h) #AC_CHECK_HEADERS(io.h) #AC_CHECK_HEADERS(tchar.h) AC_CHECK_HEADERS(float.h) AC_CHECK_HEADERS(fpu_control.h) AC_CHECK_HEADERS(os2.h) AC_CHECK_HEADERS(dos.h) AC_CHECK_HEADERS(direct.h) #AC_CHECK_HEADERS(Retrace.h) #AC_CHECK_HEADERS(Files.h) #AC_CHECK_HEADERS(Finder.h) #AC_CHECK_HEADERS(Errors.h) #AC_CHECK_HEADERS(Folders.h) #AC_CHECK_HEADERS(OSUtils.h) #AC_CHECK_HEADERS(Power.h) #AC_CHECK_HEADERS(CodeFragments.h) #AC_CHECK_HEADERS(SIOUX.h) #AC_CHECK_HEADERS(mac_gui.h) #AC_CHECK_HEADERS(unix.h) AC_CHECK_HEADERS(wdefwin.h) AC_CHECK_HEADERS(tfork.h) AC_CHECK_HEADERS(curses.h) AC_CHECK_HEADERS(ncurses.h) AC_CHECK_HEADERS(netinet/in.h) AC_CHECK_HEADERS(arpa/inet.h) AC_CHECK_HEADERS(termios.h) #AC_CHECK_HEADERS(term.h) AC_CHECK_HEADERS(pty.h) AC_CHECK_HEADERS(libutil.h) AC_CHECK_HEADERS(util.h) AC_CHECK_HEADERS(sys/fpu.h) AC_CHECK_HEADERS(fenv.h) AC_CHECK_HEADERS(fcntl.h) AC_CHECK_HEADERS(sys/ioctl.h) AC_CHECK_HEADERS(sys/socket.h) AC_CHECK_HEADERS(stdio.h) AC_CHECK_HEADERS(stdlib.h) AC_CHECK_HEADERS(string.h) AC_CHECK_HEADERS(strings.h) AC_CHECK_HEADERS(memory.h) AC_CHECK_HEADERS(sys/sysctl.h) ############################################################################### # # Check for other stuff. AC_DEFUN([AC_TYPE_SOCKLEN_T], [AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t, [ AC_TRY_COMPILE( [#include #include ], [socklen_t len = 42; return 0;], ac_cv_type_socklen_t=yes, ac_cv_type_socklen_t=no) ]) if test $ac_cv_type_socklen_t != yes; then AC_DEFINE(socklen_t, int) fi ]) AC_TYPE_SOCKLEN_T #AC_TYPE_MODE_T #AC_TYPE_OFF_T #AC_TYPE_PID_T #AC_TYPE_SIGNAL #AC_TYPE_SIZE_T #AC_TYPE_UID_T #AC_HEADER_DIRENT #AC_HEADER_STAT #AC_HEADER_STDC #AC_HEADER_SYS_WAIT #AC_HEADER_TIME #AC_HEADER_TIOCGWINSZ #AC_FUNC_SELECT_ARGTYPES #AC_FUNC_CLOSEDIR_VOID #AC_FUNC_FSEEKO #AC_FUNC_STAT #AC_FUNC_LSTAT case "$target_os" in mingw*) # add Windows libraries needed by MinGW LIBS="$LIBS -lws2_32" ;; *) # check libraries for other systems AC_SEARCH_LIBS(asin,m) AC_SEARCH_LIBS(dlopen,dl) AC_SEARCH_LIBS(shl_load,dld) #AC_SEARCH_LIBS(tgetstr,ncurses curses) #AC_SEARCH_LIBS(tigetstr,ncurses curses) AC_SEARCH_LIBS(socket,socket) AC_SEARCH_LIBS(gethostbyname,nsl resolv xnet) AC_SEARCH_LIBS(hstrerror,resolv) AC_SEARCH_LIBS(openpty,util) AC_SEARCH_LIBS(WSAStartup,ws2_32) ;; esac AC_CHECK_FUNCS(pipe) AC_CHECK_FUNCS(socketpair) AC_CHECK_FUNCS(chdir) AC_CHECK_FUNCS(execvp) AC_CHECK_FUNCS(getgrnam) AC_CHECK_FUNCS(getpid) AC_CHECK_FUNCS(getppid) AC_CHECK_FUNCS(getpwnam) AC_CHECK_FUNCS(ioctl) AC_CHECK_FUNCS(link) AC_CHECK_FUNCS(mkdir) AC_CHECK_FUNCS(mkfifo) AC_CHECK_FUNCS(opendir) AC_CHECK_FUNCS(rename) AC_CHECK_FUNCS(rmdir) AC_CHECK_FUNCS(socket) AC_CHECK_FUNCS(stat) AC_CHECK_FUNCS(strerror) AC_CHECK_FUNCS(symlink) AC_CHECK_FUNCS(sysconf) AC_CHECK_FUNCS(sysctl) AC_CHECK_FUNCS(tcgetattr) AC_CHECK_FUNCS(unlink) AC_CHECK_FUNCS(waitpid) AC_CHECK_FUNCS(clock_gettime) AC_CHECK_FUNCS(getclock) #AC_CHECK_FUNCS(GetSystemTime) AC_CHECK_FUNCS(gettimeofday) AC_CHECK_FUNCS(ftime) AC_CHECK_FUNCS(time) AC_CHECK_FUNCS(nanosleep) #AC_CHECK_FUNCS(Sleep) AC_CHECK_FUNCS(sleep) #AC_CHECK_FUNCS(GetProcessTimes) AC_CHECK_FUNCS(getrusage) AC_CHECK_FUNCS(times) AC_CHECK_FUNCS(clock) AC_CHECK_FUNCS(DosQuerySysInfo) AC_CHECK_FUNCS(setitimer) AC_CHECK_FUNCS(dos_setvect) AC_CHECK_FUNCS(DosStartTimer) AC_CHECK_FUNCS(VInstall) #AC_CHECK_FUNCS(CreateThread) AC_CHECK_FUNCS(sigaction) AC_CHECK_FUNCS(sigemptyset) AC_CHECK_FUNCS(sigaddset) AC_CHECK_FUNCS(sigprocmask) AC_CHECK_FUNCS(signal) AC_CHECK_FUNCS(shl_load) #AC_CHECK_FUNCS(LoadLibrary) AC_CHECK_FUNCS(DosLoadModule) AC_CHECK_FUNCS(dxe_load) AC_CHECK_FUNCS(GetDiskFragment) AC_CHECK_FUNCS(dlopen) AC_CHECK_FUNCS(NSLinkModule) # has been deprecated by Apple AC_CHECK_FUNCS(gethostname) AC_CHECK_FUNCS(inet_pton) AC_CHECK_FUNCS(gethostbyname) AC_CHECK_FUNCS(gethostbyaddr) AC_CHECK_FUNCS(getservbyname) AC_CHECK_FUNCS(getservbyport) AC_CHECK_FUNCS(getprotobyname) AC_CHECK_FUNCS(getprotobynumber) AC_CHECK_FUNCS(getnetbyname) AC_CHECK_FUNCS(select) #AC_CHECK_FUNCS(MsgWaitForMultipleObjects) #AC_CHECK_FUNCS(tgetstr) #AC_CHECK_FUNCS(tigetstr) AC_CHECK_FUNCS(openpty) AC_CHECK_FUNCS(getpt) AC_CHECK_FUNCS(ptsname) AC_CHECK_FUNCS(hstrerror) AC_CHECK_FUNCS(get_fpc_csr) ############################################################################### # # Check which command line options are supported by $C_COMPILER. AC_DEFUN(AC_CHECK_C_COMPILER_OPT, [AC_CACHE_CHECK(whether $C_COMPILER accepts [$1], [$2], [AC_SUBST($2) rm -f conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" int main () { return 0; } _ACEOF ac_test_CFLAGS=${CFLAGS+set} ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CFLAGS=$CFLAGS ac_save_CXXFLAGS=$CXXFLAGS CFLAGS="$1$3" CXXFLAGS="$1$3" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then $2=" $1" else $2="" fi if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS fi if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS fi ])]) if test "$GCC" = yes -o "$GXX" = yes; then ########## Using gcc... # preprocessor options: AC_CHECK_C_COMPILER_OPT(-no-cpp-precomp,DASH_no_cpp_precomp) # debugging options: AC_CHECK_C_COMPILER_OPT(-Wall,DASH_Wall) AC_CHECK_C_COMPILER_OPT(-W,DASH_W) AC_CHECK_C_COMPILER_OPT(-Wno-unused,DASH_Wno_unused) AC_CHECK_C_COMPILER_OPT(-g,DASH_g) # profiling options: AC_CHECK_C_COMPILER_OPT(-p,DASH_p) AC_CHECK_C_COMPILER_OPT(-pg,DASH_pg) #AC_CHECK_C_COMPILER_OPT(-ftest-coverage,DASH_ftest_coverage) AC_CHECK_C_COMPILER_OPT(-fprofile-arcs,DASH_fprofile_arcs) # optimization options: AC_CHECK_C_COMPILER_OPT(-O1,DASH_O1) AC_CHECK_C_COMPILER_OPT(-fno-math-errno,DASH_fno_math_errno) AC_CHECK_C_COMPILER_OPT(-fschedule-insns2,DASH_fschedule_insns2) AC_CHECK_C_COMPILER_OPT(-fomit-frame-pointer,DASH_fomit_frame_pointer) AC_CHECK_C_COMPILER_OPT(-fbranch-probabilities,DASH_fbranch_probabilities) AC_CHECK_C_COMPILER_OPT(-fno-trapping-math,DASH_fno_trapping_math) AC_CHECK_C_COMPILER_OPT(-fno-strict-aliasing,DASH_fno_strict_aliasing) AC_CHECK_C_COMPILER_OPT(-fwrapv,DASH_fwrapv) AC_CHECK_C_COMPILER_OPT(-fexpensive-optimizations,DASH_fexpensive_optimizations) AC_CHECK_C_COMPILER_OPT(-fforce-addr,DASH_fforce_addr) AC_CHECK_C_COMPILER_OPT(-fpeephole2,DASH_fpeephole2) AC_CHECK_C_COMPILER_OPT(-falign-jumps,DASH_falign_jumps) AC_CHECK_C_COMPILER_OPT(-falign-functions,DASH_falign_functions) AC_CHECK_C_COMPILER_OPT(-fno-function-cse,DASH_fno_function_cse) AC_CHECK_C_COMPILER_OPT(-ftree-copyrename,DASH_ftree_copyrename) AC_CHECK_C_COMPILER_OPT(-ftree-fre,DASH_ftree_fre) AC_CHECK_C_COMPILER_OPT(-ftree-dce,DASH_ftree_dce) AC_CHECK_C_COMPILER_OPT(-fschedure-interblock,DASH_fschedule_interblock) AC_CHECK_C_COMPILER_OPT(-fregmove,DASH_fregmove) AC_CHECK_C_COMPILER_OPT(-fgcse-las,DASH_fgcse_las) AC_CHECK_C_COMPILER_OPT(-freorder-functions,DASH_freorder_functions) AC_CHECK_C_COMPILER_OPT(-fcaller-saves,DASH_fcaller_saves) AC_CHECK_C_COMPILER_OPT(-fno-if-conversion2,DASH_fno_if_conversion2) AC_CHECK_C_COMPILER_OPT(-foptimize-sibling-calls,DASH_foptimize_sibling_calls) AC_CHECK_C_COMPILER_OPT(-fcse-skip-blocks,DASH_fcse_skip_blocks) AC_CHECK_C_COMPILER_OPT(-funit-at-a-time,DASH_funit_at_a_time) AC_CHECK_C_COMPILER_OPT(-finline-functions,DASH_finline_functions) if test "$ENABLE_GCC_OPTS" = yes; then AC_CHECK_C_COMPILER_OPT(-fmodulo-sched,DASH_fmodulo_sched) AC_CHECK_C_COMPILER_OPT(-freschedule-modulo-scheduled-loops,DASH_freschedule_modulo_scheduled_loops) fi # code generation options: case "$target_os" in mingw*) # no special code generation options needed by MinGW ;; cygwin*) # no special code generation options needed by cygwin ;; *) # check for code generation options for other systems AC_CHECK_C_COMPILER_OPT(-fPIC,DASH_fPIC) AC_CHECK_C_COMPILER_OPT(-fpic,DASH_fpic) ;; esac AC_CHECK_C_COMPILER_OPT(-fno-common,DASH_fno_common) # machine specific options: AC_CHECK_C_COMPILER_OPT(-mieee,DASH_mieee) AC_CHECK_C_COMPILER_OPT(-mieee-with-inexact,DASH_mieee_with_inexact) AC_CHECK_C_COMPILER_OPT(-mieee-fp,DASH_mieee_fp) # linking options: case "$target_os" in mingw*) # no special options needed by MinGW AC_CHECK_C_COMPILER_OPT(-shared,DASH_shared,$DASH_fPIC$DASH_fpic) ;; cygwin*) # no special options needed by cygwin AC_CHECK_C_COMPILER_OPT(-shared,DASH_shared,$DASH_fPIC$DASH_fpic) ;; solaris*) # check for options needed by Solaris AC_CHECK_C_COMPILER_OPT(-shared,DASH_shared,$DASH_fPIC$DASH_fpic) ;; hpux*) # check for options needed by HP-UX AC_CHECK_C_COMPILER_OPT(-shared,DASH_shared,$DASH_fPIC$DASH_fpic) ;; darwin*) # check for special options added by Apple AC_CHECK_C_COMPILER_OPT(-dynamiclib,DASH_dynamiclib) AC_CHECK_C_COMPILER_OPT(-bundle,DASH_bundle) AC_CHECK_C_COMPILER_OPT(-flat_namespace -undefined suppress,DASH_flat_namespace_undefined_suppress) ;; *) # for other systems AC_CHECK_C_COMPILER_OPT(-rdynamic,DASH_rdynamic) AC_CHECK_C_COMPILER_OPT(-shared,DASH_shared,$DASH_fPIC$DASH_fpic) ;; esac # determine which flags to add to CFLAGS, CXXFLAGS and LDFLAGS case "$target_os" in darwin*) # avoid the default C preprocessor which is setup for Objective-C FLAGS_OBJ="$FLAGS_OBJ$DASH_no_cpp_precomp" FLAGS_DYN="$FLAGS_DYN$DASH_no_cpp_precomp" ;; esac FLAGS_OBJ="$FLAGS_OBJ$DASH_Wall$DASH_W$DASH_Wno_unused" FLAGS_DYN="$FLAGS_DYN$DASH_Wall$DASH_W$DASH_Wno_unused" if test "$ENABLE_DEBUG" = yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_g" FLAGS_DYN="$FLAGS_DYN$DASH_g" fi if test "$ENABLE_PROFILE" = yes; then if test "x$DASH_pg" != x; then FLAGS_OBJ="$FLAGS_OBJ$DASH_pg" FLAGS_DYN="$FLAGS_DYN$DASH_pg" FLAGS_LIB="$FLAGS_LIB$DASH_pg" FLAGS_EXE="$FLAGS_EXE$DASH_pg" else FLAGS_OBJ="$FLAGS_OBJ$DASH_p" FLAGS_DYN="$FLAGS_DYN$DASH_p" FLAGS_LIB="$FLAGS_LIB$DASH_p" FLAGS_EXE="$FLAGS_EXE$DASH_p" fi fi if test "$ENABLE_DEBUG" != yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_O1$DASH_fno_math_errno$DASH_fschedule_insns2" FLAGS_DYN="$FLAGS_DYN$DASH_O1$DASH_fno_math_errno$DASH_fschedule_insns2" fi FLAGS_OBJ="$FLAGS_OBJ$DASH_fno_trapping_math$DASH_fno_strict_aliasing$DASH_fwrapv$DASH_fexpensive_optimizations$DASH_fforce_addr$DASH_fpeephole2$DASH_falign_jumps$DASH_falign_functions$DASH_fno_function_cse$DASH_ftree_copyrename$DASH_ftree_fre$DASH_ftree_dce$DASH_fschedule_interblock$DASH_fregmove$DASH_fgcse_las$DASH_freorder_functions$DASH_fcaller_saves$DASH_fno_if_conversion2$DASH_foptimize_sibling_calls$DASH_fcse_skip_blocks$DASH_funit_at_a_time$DASH_finline_functions" FLAGS_DYN="$FLAGS_DYN$DASH_fno_trapping_math$DASH_fno_strict_aliasing$DASH_fwrapv$DASH_fexpensive_optimizations$DASH_fforce_addr$DASH_fpeephole2$DASH_falign_jumps$DASH_falign_functions$DASH_fno_function_cse$DASH_ftree_copyrename$DASH_ftree_fre$DASH_ftree_dce$DASH_fschedule_interblock$DASH_fregmove$DASH_fgcse_las$DASH_freorder_functions$DASH_fcaller_saves$DASH_fno_if_conversion2$DASH_foptimize_sibling_calls$DASH_fcse_skip_blocks$DASH_funit_at_a_time$DASH_finline_functions" if test "$ENABLE_GCC_OPTS" = yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_fmodulo_sched$DASH_freschedule_modulo_scheduled_loops" FLAGS_DYN="$FLAGS_DYN$DASH_fmodulo_sched$DASH_freschedule_modulo_scheduled_loops" fi case "$target_os" in mingw*) # MinGW's setjmp seems to need the frame pointer ;; *) # other systems are fine as far as I can tell if test "$ENABLE_DEBUG" != yes -o "$ENABLE_PROFILE" != yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_fomit_frame_pointer" FLAGS_DYN="$FLAGS_DYN$DASH_fomit_frame_pointer" fi ;; esac if test "$ENABLE_FEEDBACK1" = yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_fprofile_arcs" FLAGS_DYN="$FLAGS_DYN$DASH_fprofile_arcs" fi if test "$ENABLE_FEEDBACK2" = yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_fbranch_probabilities" FLAGS_DYN="$FLAGS_DYN$DASH_fbranch_probabilities" fi if test "x$DASH_fPIC" != x; then FLAGS_OBJ="$FLAGS_OBJ$DASH_fPIC" FLAGS_DYN="$FLAGS_DYN$DASH_fPIC" else FLAGS_OBJ="$FLAGS_OBJ$DASH_fpic" FLAGS_DYN="$FLAGS_DYN$DASH_fpic" fi FLAGS_OBJ="$FLAGS_OBJ$DASH_fno_common" FLAGS_DYN="$FLAGS_DYN$DASH_fno_common" FLAGS_OBJ="$FLAGS_OBJ$DASH_mieee$DASH_mieee_with_inexact$DASH_mieee_fp" FLAGS_DYN="$FLAGS_DYN$DASH_mieee$DASH_mieee_with_inexact$DASH_mieee_fp" case "$target_os" in darwin*) # check for special options added by Apple FLAGS_DYN="$FLAGS_DYN$DASH_bundle$DASH_flat_namespace_undefined_suppress" FLAGS_LIB="$FLAGS_LIB$DASH_dynamiclib$DASH_flat_namespace_undefined_suppress" ;; *) # for other systems FLAGS_DYN="$FLAGS_DYN$DASH_rdynamic$DASH_shared" FLAGS_LIB="$FLAGS_LIB$DASH_rdynamic$DASH_shared" FLAGS_EXE="$FLAGS_EXE$DASH_rdynamic" ;; esac else ########## NOT using gcc... case "$target_os" in solaris*) ########## Probably using the Sun Workshop C/C++ compiler... # debugging options: AC_CHECK_C_COMPILER_OPT(-g,DASH_g) # profiling options: AC_CHECK_C_COMPILER_OPT(-p,DASH_p) # optimization options: AC_CHECK_C_COMPILER_OPT(-xO2,DASH_xO2) # code generation options: AC_CHECK_C_COMPILER_OPT(-KPIC,DASH_KPIC) # linking options: AC_CHECK_C_COMPILER_OPT(-G,DASH_G) # determine which flags to add to CFLAGS, CXXFLAGS and LDFLAGS if test "$ENABLE_DEBUG" = yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_g" FLAGS_DYN="$FLAGS_DYN$DASH_g" fi if test "$ENABLE_PROFILE" = yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_p" FLAGS_DYN="$FLAGS_DYN$DASH_p" FLAGS_LIB="$FLAGS_LIB$DASH_p" FLAGS_EXE="$FLAGS_EXE$DASH_p" fi if test "$ENABLE_DEBUG" != yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_xO2" FLAGS_DYN="$FLAGS_DYN$DASH_xO2" fi FLAGS_OBJ="$FLAGS_OBJ$DASH_KPIC" FLAGS_DYN="$FLAGS_DYN$DASH_KPIC" FLAGS_DYN="$FLAGS_DYN$DASH_G" FLAGS_LIB="$FLAGS_LIB$DASH_G" ;; osf*) ########## Probably using the Compaq Tru64 UNIX C/C++ compiler... # debugging options: AC_CHECK_C_COMPILER_OPT(-g,DASH_g) # profiling options: AC_CHECK_C_COMPILER_OPT(-p,DASH_p) # optimization options: AC_CHECK_C_COMPILER_OPT(-O2,DASH_O2) # code generation options: AC_CHECK_C_COMPILER_OPT(-ieee,DASH_ieee) AC_CHECK_C_COMPILER_OPT(-call_shared,DASH_call_shared) #AC_CHECK_C_COMPILER_OPT(-taso,DASH_taso) # linking options: AC_CHECK_C_COMPILER_OPT(-shared,DASH_shared) AC_CHECK_C_COMPILER_OPT(-expect_unresolved,DASH_expect_unresolved) # determine which flags to add to CFLAGS, CXXFLAGS and LDFLAGS if test "$ENABLE_DEBUG" = yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_g" FLAGS_DYN="$FLAGS_DYN$DASH_g" fi if test "$ENABLE_PROFILE" = yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_p" FLAGS_DYN="$FLAGS_DYN$DASH_p" FLAGS_LIB="$FLAGS_LIB$DASH_p" FLAGS_EXE="$FLAGS_EXE$DASH_p" fi if test "$ENABLE_DEBUG" != yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_O2" FLAGS_DYN="$FLAGS_DYN$DASH_O2" fi FLAGS_OBJ="$FLAGS_OBJ$DASH_ieee$DASH_call_shared" FLAGS_DYN="$FLAGS_DYN$DASH_ieee$DASH_call_shared" FLAGS_DYN="$FLAGS_DYN$DASH_shared$DASH_expect_unresolved" FLAGS_LIB="$FLAGS_LIB$DASH_shared$DASH_expect_unresolved" ;; irix*) ########## Probably using the MIPSpro C/C++ compiler... # debugging options: AC_CHECK_C_COMPILER_OPT(-fullwarn,DASH_fullwarn) AC_CHECK_C_COMPILER_OPT([-woff 1110,1174,1209,1552,3201],DASH_woff_1110_1174_1209_1552_3201) AC_CHECK_C_COMPILER_OPT(-g,DASH_g) # optimization options: AC_CHECK_C_COMPILER_OPT(-O1,DASH_O1) AC_CHECK_C_COMPILER_OPT(-OPT:Olimit=0,DASH_OPT_Olimit_0) # code generation options: #AC_CHECK_C_COMPILER_OPT(-KPIC,DASH_KPIC) #AC_CHECK_C_COMPILER_OPT(-non_shared,DASH_non_shared) AC_CHECK_C_COMPILER_OPT(-TENV:large_GOT,DASH_TENV_large_GOT) AC_CHECK_C_COMPILER_OPT(-OPT:IEEE_comparisons=ON,DASH_OPT_IEEE_comparisons_ON) AC_CHECK_C_COMPILER_OPT(-OPT:IEEE_NaN_inf=ON,DASH_OPT_IEEE_NaN_inf_ON) # linking options: AC_CHECK_C_COMPILER_OPT(-shared,DASH_shared) # determine which flags to add to CFLAGS, CXXFLAGS and LDFLAGS FLAGS_OBJ="$FLAGS_OBJ$DASH_fullwarn$DASH_woff_1110_1174_1209_1552_3201" FLAGS_DYN="$FLAGS_DYN$DASH_fullwarn$DASH_woff_1110_1174_1209_1552_3201" if test "$ENABLE_DEBUG" = yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_g" FLAGS_DYN="$FLAGS_DYN$DASH_g" fi if test "$ENABLE_DEBUG" != yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_O1$DASH_OPT_Olimit_0" FLAGS_DYN="$FLAGS_DYN$DASH_O1$DASH_OPT_Olimit_0" fi FLAGS_OBJ="$FLAGS_OBJ$DASH_TENV_large_GOT$DASH_OPT_IEEE_comparisons_ON$DASH_OPT_IEEE_NaN_inf_ON" FLAGS_DYN="$FLAGS_DYN$DASH_TENV_large_GOT$DASH_OPT_IEEE_comparisons_ON$DASH_OPT_IEEE_NaN_inf_ON" FLAGS_DYN="$FLAGS_DYN$DASH_shared" FLAGS_LIB="$FLAGS_LIB$DASH_shared" ;; hpux*) ########## Probably using the HP-UX compiler... # debugging options: AC_CHECK_C_COMPILER_OPT(-g,DASH_g) # profiling options: AC_CHECK_C_COMPILER_OPT(-p,DASH_p) # optimization options: AC_CHECK_C_COMPILER_OPT(-O1,DASH_O1) # linking options: AC_CHECK_C_COMPILER_OPT(-b,DASH_b) # determine which flags to add to CFLAGS, CXXFLAGS and LDFLAGS if test "$ENABLE_DEBUG" = yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_g" FLAGS_DYN="$FLAGS_DYN$DASH_g" fi if test "$ENABLE_PROFILE" = yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_p" FLAGS_DYN="$FLAGS_DYN$DASH_p" FLAGS_LIB="$FLAGS_LIB$DASH_p" FLAGS_EXE="$FLAGS_EXE$DASH_p" fi if test "$ENABLE_DEBUG" != yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_O1" FLAGS_DYN="$FLAGS_DYN$DASH_O1" fi FLAGS_DYN="$FLAGS_DYN$DASH_b" FLAGS_LIB="$FLAGS_LIB$DASH_b" ;; aix*) ########## Probably using the AIX xlC compiler... # debugging options: AC_CHECK_C_COMPILER_OPT(-g,DASH_g) # profiling options: AC_CHECK_C_COMPILER_OPT(-p,DASH_p) # optimization options: AC_CHECK_C_COMPILER_OPT(-O1,DASH_O1) # linking options: AC_CHECK_C_COMPILER_OPT(-G,DASH_G) # determine which flags to add to CFLAGS, CXXFLAGS and LDFLAGS if test "$ENABLE_DEBUG" = yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_g" FLAGS_DYN="$FLAGS_DYN$DASH_g" fi if test "$ENABLE_PROFILE" = yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_p" FLAGS_DYN="$FLAGS_DYN$DASH_p" FLAGS_LIB="$FLAGS_LIB$DASH_p" FLAGS_EXE="$FLAGS_EXE$DASH_p" fi if test "$ENABLE_DEBUG" != yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_O1" FLAGS_DYN="$FLAGS_DYN$DASH_O1" fi FLAGS_DYN="$FLAGS_DYN$DASH_G" FLAGS_LIB="$FLAGS_LIB$DASH_G" ;; *) ########## Unsupported operating system AC_MSG_NOTICE([ ********************************************************************* *** The GCC compiler is not being used and the operating system *** *** is not one that has been tested with the Gambit-C system. *** *** The configure script will use certain compiler options that *** *** may not be correct or sufficient for compiling the system. *** *** Please report success or failure to gambit@iro.umontreal.ca. *** *** This will help us support this operating system in the *** *** future. *** ********************************************************************* ]) # debugging options: AC_CHECK_C_COMPILER_OPT(-g,DASH_g) # profiling options: AC_CHECK_C_COMPILER_OPT(-p,DASH_p) # optimization options: AC_CHECK_C_COMPILER_OPT(-O1,DASH_O1) # linking options: AC_CHECK_C_COMPILER_OPT(-shared,DASH_shared) # determine which flags to add to CFLAGS, CXXFLAGS and LDFLAGS if test "$ENABLE_DEBUG" = yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_g" FLAGS_DYN="$FLAGS_DYN$DASH_g" fi if test "$ENABLE_PROFILE" = yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_p" FLAGS_DYN="$FLAGS_DYN$DASH_p" FLAGS_LIB="$FLAGS_LIB$DASH_p" FLAGS_EXE="$FLAGS_EXE$DASH_p" fi if test "$ENABLE_DEBUG" != yes; then FLAGS_OBJ="$FLAGS_OBJ$DASH_O1" FLAGS_DYN="$FLAGS_DYN$DASH_O1" fi FLAGS_DYN="$FLAGS_DYN$DASH_shared" FLAGS_LIB="$FLAGS_LIB$DASH_shared" ;; esac fi if test "$ENABLE_CPLUSPLUS" = yes; then FLAGS_OBJ="$CXXFLAGS$FLAGS_OBJ" else FLAGS_OBJ="$CFLAGS$FLAGS_OBJ" fi FLAGS_EXE="$LDFLAGS$FLAGS_EXE" FLAGS_LIB="$LDFLAGS$FLAGS_LIB" FLAGS_DYN="$LDFLAGS$FLAGS_DYN" AC_SUBST(FLAGS_OBJ) AC_SUBST(FLAGS_EXE) AC_SUBST(FLAGS_LIB) AC_SUBST(FLAGS_DYN) ############################################################################### AC_SUBST(RTLIBSUBSYS) ############################################################################### AC_PATH_XTRA #AC_SYS_INTERPRETER #AC_SYS_LARGEFILE #AC_SYS_POSIX_TERMIOS AC_PROG_LN_S AC_PROG_RANLIB exe="$EXEEXT" obj=".$OBJEXT" case "$target_os" in mingw*) bat=".bat" ;; *) bat="" ;; esac if test "$ENABLE_SHARED" = yes; then case "$target_os" in mingw*) GAMBCLIB="libgambc.dll" SETDLPATH="PATH=\"\$(rootfromhere)/lib:\${PATH}\"" ;; darwin*) GAMBCLIB="libgambc.dylib" SETDLPATH="DYLD_LIBRARY_PATH=\$(rootfromhere)/lib:\${DYLD_LIBRARY_PATH}" ;; hpux*) GAMBCLIB="libgambc.so" SETDLPATH="SHLIB_PATH=\$(rootfromhere)/lib:\${SHLIB_PATH}" ;; aix*) GAMBCLIB="libgambc.so" SETDLPATH="LIBPATH=\$(rootfromhere)/lib:\${LIBPATH}" ;; *) GAMBCLIB="libgambc.so" SETDLPATH="LD_LIBRARY_PATH=\$(rootfromhere)/lib:\${LD_LIBRARY_PATH}" ;; esac MAKE_GAMBCLIB='$(C_COMPILER) $(FLAGS_LIB) -o $(GAMBCLIB) $(OBJECTS) $(LIBS)' FIXLIB='#' LINK='$(C_COMPILER) $(FLAGS_EXE) $(OBJECTS) -L$(rootfromhere)/lib -lgambc $(LIBS) -o $(EXECUTABLE)' LINK_FOR_INSTALL='$(C_COMPILER) $(FLAGS_EXE) $(OBJECTS) -L$(libdir) -lgambc $(LIBS) -o $(EXECUTABLE)' else SETDLPATH="" GAMBCLIB="libgambc.a" MAKE_GAMBCLIB='ar rc $(GAMBCLIB) $(OBJECTS) && $(RANLIB) $(GAMBCLIB)' FIXLIB='$(RANLIB)' LINK='$(C_COMPILER) $(FLAGS_EXE) $(OBJECTS) $(rootfromhere)/lib/$(GAMBCLIB) $(LIBS) -o $(EXECUTABLE)' LINK_FOR_INSTALL=':' fi case "$target_os" in mingw*) GSC_CC_O="$C_COMPILER $FLAGS_DYN -I%GSC_CC_O_ARG1%include $GSC_CC_O_DEFS -o %GSC_CC_O_ARG2% %GSC_CC_O_REST% %GSC_CC_O_ARG3%" ;; *) GSC_CC_O="$C_COMPILER $FLAGS_DYN -I\\\$\${GSC_CC_O_ARG1}include $GSC_CC_O_DEFS -o \\\$\${GSC_CC_O_ARG2} \\\$\$* \\\$\${GSC_CC_O_ARG3}" ;; esac ############################################################################### # # Determine what prefix and suffix are added to function names by the # C compiler or linker. case "$target_os" in mingw*) # empty prefix and suffix ;; cygwin*) # empty prefix and suffix ;; *) # for other systems ac_link_obj_file='$C_COMPILER $FLAGS_DYN -Iinclude $GSC_CC_O_DEFS -o conftest.o1 conftest.$ac_ext >&5' rm -f conftest.$ac_ext conftest.o1 conftest1.sed cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #define ___VERSION 400000 #define ___MODULE_NAME " GAMBCCHECKMODULEPREFIXSUFFIX" #define ___LINKER_ID ____20_GAMBCCHECKMODULEPREFIXSUFFIX #define ___MH_PROC ___H__20_GAMBCCHECKMODULEPREFIXSUFFIX #define ___SCRIPT_LINE 0 #include "gambit.h" ___BEGIN_MOD1 ___END_MOD1 ___BEGIN_MOD2 ___END_MOD2 _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_link_obj_file\"") >&5 (eval $ac_link_obj_file) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then cat >conftest1.sed <<_ACEOF /^.* \([[a-zA-Z0-9_$]]*\)____20_GAMBCCHECKMODULEPREFIXSUFFIX\([[a-zA-Z0-9_$]]*\)$/s//#define ___IMPORTED_ID_PREFIX "\1"\\ #define ___IMPORTED_ID_SUFFIX "\2"/p _ACEOF # The nm program will extract the symbols in the object file # conftest.o1. The following option is used: # -g shows the external symbols only (to avoid confusion with # internal symbols generated by the compiler) nm -g conftest.o1 | sed -n -f conftest1.sed | sed -n -e "1,2p" >>confdefs.h fi ;; esac ############################################################################### if test "$srcdir" = "."; then srcdirpfx="" else srcdirpfx="\$(srcdir)/" fi INSTALL='$(rootfromhere)/install-sh -c' INSTALL_DATA='$(rootfromhere)/install-sh -c -m 644' INSTALL_LIB='$(rootfromhere)/install-sh -c -m 644' INSTALL_PROGRAM='$(rootfromhere)/install-sh -c -m 755' AC_SUBST(srcdirpfx) AC_SUBST(exe) AC_SUBST(obj) AC_SUBST(bat) AC_SUBST(SETDLPATH) AC_SUBST(GSC_CC_O) AC_SUBST(GAMBCLIB) AC_SUBST(MAKE_GAMBCLIB) AC_SUBST(LINK) AC_SUBST(LINK_FOR_INSTALL) AC_SUBST(INSTALL) AC_SUBST(INSTALL_DATA) AC_SUBST(INSTALL_LIB) AC_SUBST(INSTALL_PROGRAM) AC_SUBST(LN_S) AC_SUBST(RANLIB) AC_SUBST(FIXLIB) AC_SUBST(X_FLAGS) AC_SUBST(X_LIBS) AC_PROG_MAKE_SET AC_OUTPUT(makefile include/makefile lib/makefile lib/guide/guidepro lib/guide/makefile lib/guide/images/makefile gsi/makefile gsc/makefile bin/makefile misc/makefile doc/makefile tests/makefile examples/makefile examples/distr-comp/makefile examples/pi/makefile examples/ring/makefile examples/web-repl/makefile examples/web-server/makefile examples/tcltk/makefile examples/Xlib-simple/makefile examples/pthread/makefile) if test "$ENABLE_SINGLE_HOST" != yes; then AC_MSG_NOTICE([ ************************************************************************** *** The option "--enable-single-host" was not specified to the *** *** configure script. The Gambit-C system will compile correctly but *** *** the code generated by the C compiler will be suboptimal and the *** *** executables will run considerably slower than if *** *** "--enable-single-host" is specified. On the other hand the build *** *** process will be faster and require less memory. If you have lots *** *** of RAM memory (>= 500 Mbytes) and you are willing to wait for the *** *** longer build try the configure option "--enable-single-host". *** ************************************************************************** ]) fi if test "$GCC" = yes -o "$GXX" = yes; then if test "$ENABLE_GCC_OPTS" != yes; then AC_MSG_NOTICE([ ************************************************************************** *** The GCC compiler is being used but the option "--enable-gcc-opts" *** *** was not specified to the configure script. The Gambit-C system *** *** will compile correctly but the code generated by the GCC compiler *** *** will be suboptimal and the executables will run slightly slower *** *** than if "--enable-gcc-opts" is specified. On the other hand the *** *** build process will be faster and require less memory. If you have *** *** lots of RAM memory (>= 2 Gbytes) and you are willing to wait for *** *** the longer build try the configure option "--enable-gcc-opts". *** ************************************************************************** ]) fi fi