################################################################# # This is the source for the `configure' script, to be compiled # # by autoconf (use make-configure in this directory). # ################################################################# # Remember: # CFLAGS - C compilation only # CPPFLAGS - C pre-processing and compilation for configure-time testing ONLY # COMPFLAGS - C compilation, but not configure-time tests # PREFLAGS - C preprocessing, but not configure-time tests # OPTIONS - C flags, not needed for configure-time tests # MZOPTIONS - Racket-only flags # MROPTIONS - GRacket-only flags # CGCOPTIONS - Boehm-GC-only flags # GC2OPTIONS - GC2-only flags # # Note: we use CPPFLAGS for configure-time testing only because # it used to include C++ flags that we didn't want for Racket. # hence PREFLAGS, which is initialized to the original CPPFLAGS. AC_INIT([Racket]) AC_CONFIG_SRCDIR(racket/src/bignum.c) AC_CONFIG_HEADERS([racket/mzconfig.h]) AC_CONFIG_AUX_DIR(lt) AC_CANONICAL_SYSTEM AC_ARG_ENABLE(gracket, [ --enable-gracket build GRacket as well as Racket (enabled by default)], , enable_gracket=yes ) AC_ARG_ENABLE(jit, [ --enable-jit support JIT compiler (enabled by default)], , enable_jit=yes) AC_ARG_ENABLE(foreign, [ --enable-foreign support foreign calls (enabled by default)], , enable_foreign=yes) AC_ARG_ENABLE(places, [ --enable-places support places (3m only; usually enabled by default)]) AC_ARG_ENABLE(futures, [ --enable-futures support futures (usually enabled by default)]) AC_ARG_ENABLE(float, [ --enable-float support single-precision floats (enabled by default)], , enable_float=yes) AC_ARG_ENABLE(floatinstead, [ --enable-floatinstead use single-precision by default]) AC_ARG_ENABLE(racket, [ --enable-racket= use as Racket executable to build Racket]) AC_ARG_ENABLE(origtree,[ --enable-origtree install with original directory structure]) AC_ARG_ENABLE(docs, [ --enable-docs build docs on install (enabled by default)], , enable_docs=yes) AC_ARG_ENABLE(usersetup, [ --enable-usersetup setup user-specific files on install]) AC_ARG_ENABLE(shared, [ --enable-shared create shared libraries]) AC_ARG_ENABLE(dynlib, [ --enable-dynlib same as --enable-shared]) AC_ARG_ENABLE(lt, [ --enable-lt= use instead of libtool; disable to use bundled], LIBTOOLPROG="$enableval", enable_lt=default) AC_ARG_ENABLE(libffi, [ --enable-libffi use installed libffi (enabled by default for Unix)], , enable_libffi=default) AC_ARG_ENABLE(sdk, [ --enable-sdk= use Mac OS X 10.4 SDK directory]) AC_ARG_ENABLE(xonx, [ --enable-xonx use Unix style (e.g., use Gtk) for Mac OS X]) AC_ARG_ENABLE(libfw, [ --enable-libfw install Mac OS X frameworks to /Library/Frameworks]) AC_ARG_ENABLE(libfw, [ --enable-userfw install Mac OS X frameworks to ~/Library/Frameworks]) AC_ARG_ENABLE(macprefix, [ --enable-macprefix allow --prefix with a Mac OS X install]) AC_ARG_ENABLE(mac64, [ --enable-mac64 allow 64-bit Mac OS X build (enabled by default)], , enable_mac64=yes) AC_ARG_ENABLE(cgcdefault, [ --enable-cgcdefault use CGC (Boehm or Senora) as default build]) AC_ARG_ENABLE(sgc, [ --enable-sgc use Senora GC instead of the Boehm GC]) AC_ARG_ENABLE(sgcdebug,[ --enable-sgcdebug use Senora GC for debugging]) AC_ARG_ENABLE(backtrace, [ --enable-backtrace 3m: support GC backtrace dumps]) AC_ARG_ENABLE(pthread, [ --enable-pthread link with pthreads]) AC_ARG_ENABLE(stackup, [ --enable-stackup assume "up" if stack direction cannot be determined]) AC_ARG_ENABLE(bigendian, [ --enable-bigendian assume "big" if endianness cannot be determined]) # AC_ARG_ENABLE(oskit, [ --enable-oskit compile OSKit-based Racket kernel]) # AC_ARG_ENABLE(smalloskit, [ --enable-smalloskit compile small OSKit-based Racket kernel]) AC_ARG_ENABLE(gprof, [ --enable-gprof compile for profiling with gprof (gcc only)]) AC_ARG_ENABLE(gcov, [ --enable-gcov compile to gather gcov statistics (gcc3 only)]) AC_ARG_ENABLE(noopt, [ --enable-noopt drop -O C flags]) ###### Some flags imply other flags ####### if test "${enable_smalloskit}" = "yes" ; then enable_oskit=yes fi if test "${enable_oskit}" = "yes" ; then enable_gracket=no fi if test "${enable_dynlib}" = "no" ; then enable_shared=no fi if test "${enable_dynlib}" = "yes" ; then enable_shared=yes fi if test "${enable_shared}" != "yes" ; then enable_lt=no fi if test "${enable_lt}" = "no" ; then LIBTOOLPROG="" fi if test "${enable_lt}" = "yes" ; then echo "ERROR: no program given for libtool!" echo " Supply a program for --enable-lt, something like this:" echo " --enable-lt=/usr/bin/libtool" exit 1 fi if test "${enable_lt}" = "default" ; then if `which libtool > /dev/null` ; then LIBTOOLPROG="libtool" fi fi if test "${enable_shared}" = "yes" ; then case "$host_os" in darwin*) if test "${enable_xonx}" != "yes" ; then echo "ERROR: don't use --enable-shared or --enable-dynlib under Mac OS X," echo " unless you also use --enable-xonx" exit 1 fi ;; *mingw*) echo "ERROR: don't use --enable-shared or --enable-dynlib with mingw" exit 1 ;; esac fi enable_quartz=no if test "${enable_xonx}" = "yes" ; then enable_quartz=no else case "$host_os" in darwin*) enable_quartz=yes enable_origtree=yes if test "${prefix}" != "NONE" ; then if test "${enable_macprefix}" != "yes" ; then echo "ERROR: --prefix not allowed for a Mac OS X build, unless either" echo " --enable-xonx is supplied (to create a Unix-style" echo " build), or " echo " --enable-macprefix is supplied (to allow a Mac-style" echo " installation, even though --prefix is normally used" echo " for Unix-style installations)" exit 1 fi fi ;; esac fi if test "${enable_iconv}" = "" ; then enable_iconv=yes fi ############## Install targets ################ unixstyle=no if test "${prefix}" != "NONE" ; then if test "${enable_origtree}" != "yes" ; then unixstyle=yes fi fi if test "${exec_prefix}" != "NONE" ; then unixstyle=yes fi if test "${bindir}" != '${exec_prefix}/bin' ; then unixstyle=yes fi if test "${datadir}" != '${prefix}/share' ; then # Newer autoconf uses datarootdir: if test "${datadir}" = '${datarootdir}' ; then if test "${datarootdir}" != '${prefix}/share' ; then unixstyle=yes fi else unixstyle=yes fi fi if test "${libdir}" != '${exec_prefix}/lib' ; then unixstyle=yes fi if test "${includedir}" != '${prefix}/include' ; then unixstyle=yes fi if test "${mandir}" != '${prefix}/man' ; then if test "${mandir}" = '${datarootdir}/man' ; then if test "${datarootdir}" != '${prefix}/share' ; then unixstyle=yes fi else unixstyle=yes fi fi MAKE_COPYTREE=no if test "${unixstyle}" = "no" ; then if test "${prefix}" = "NONE" ; then inplacebuild=yes prefix=`cd "${srcdir}/.." && pwd` else MAKE_COPYTREE=copytree fi bindir='${prefix}/bin' libpltdir='${prefix}/lib' collectsdir='${prefix}/collects' includepltdir='${prefix}/include' docdir='${prefix}/doc' mandir='${prefix}/man' COLLECTS_PATH="../collects" INSTALL_ORIG_TREE=yes else if test "${prefix}" = "NONE" ; then # Set prefix explicitly so we can use it during configure prefix="${ac_default_prefix}" fi libpltdir="${libdir}/racket" collectsdir="${libdir}/racket/collects" includepltdir="${includedir}/racket" docdir="${datadir}/racket/doc" MAKE_COPYTREE=copytree COLLECTS_PATH='${collectsdir}' INSTALL_ORIG_TREE=no fi ###### Make sure GRacket is really there ###### if test "${enable_gracket}" = "yes" ; then if test ! -d $srcdir/gracket ; then enable_gracket=no fi fi ###### Tell user what flags we have ####### show_explicitly_disabled() { if test "$1" = "no" ; then echo "=== $2 disabled" fi } show_explicitly_enabled() { if test "$1" = "yes" ; then echo "=== $2 enabled" fi } show_explicitly_enabled "${enable_cgcdefault}" "CGC as default" show_explicitly_disabled "${enable_docs}" "Documentation build" show_explicitly_enabled "${enable_usersetup}" "User-specific setup on install" show_explicitly_enabled "${enable_xonx}" "Unix style" show_explicitly_enabled "${enable_shared}" "Shared libraries" show_explicitly_disabled "${enable_gracket}" GRacket if test "$LIBTOOLPROG" != "" ; then echo "=== Libtool program: $LIBTOOLPROG" fi show_explicitly_enabled "${enable_orig}" "Original install tree" show_explicitly_disabled "${enable_jit}" JIT show_explicitly_disabled "${enable_foreign}" Foreign show_explicitly_enabled "${enable_libffi}" "Installed libffi" show_explicitly_disabled "${enable_libffi}" "Installed libffi" show_explicitly_enabled "${enable_places}" Places show_explicitly_disabled "${enable_places}" Places show_explicitly_enabled "${enable_futures}" Futures show_explicitly_disabled "${enable_futures}" Futures show_explicitly_enabled "${enable_sgc}" SGC show_explicitly_enabled "${enable_sgcdebug}" "SGC debug mode" show_explicitly_enabled "${enable_backtrace}" "3m GC backtraces" show_explicitly_disabled "${enable_float}" "Single-precision floats" show_explicitly_enabled "${enable_floatinstead}" "Single-precision default floats" show_explicitly_enabled "${enable_pthread}" "pthreads" show_explicitly_enabled "${enable_oskit}" "OSKit" show_explicitly_enabled "${enable_smalloskit}" "OSKit small mode" show_explicitly_enabled "${enable_gprof}" "gprof" show_explicitly_enabled "${enable_gcov}" "gcov" show_explicitly_enabled "${enable_noopt}" "No-optimization" show_explicitly_disabled "${enable_mac64}" "64-bit Mac OS X" show_explicitly_enabled "${enable_libfw}" "Frameworks-to-system" show_explicitly_enabled "${enable_userfw}" "Frameworks-to-user" if test "${enable_sdk}" != "" ; then echo "=== Using Mac OS X SDK directory ${enable_sdk}" fi if test "${enable_racket}" != "" ; then echo "=== Using Racket executable ${enable_racket}" fi ###### Some defaults ####### OPTIONS= # GC Directory GCDIR=gc MZBINTARGET=normal-bin MZINSTALLTARGET=unix-install MZINSTALLBINDIR='$(bindir)' MZOPTIONS= CGCOPTIONS= GC2OPTIONS= DYN_CFLAGS= WXVARIANT="wx_xt" MROPTIONS= INCLUDEDEP="#" WX_MMD_FLAG= DIRCVTPRE= DIRCVTPOST= PWD=pwd WINDRES=windres DLLTOOL=dlltool PREFLAGS="$CPPFLAGS" OWN_LIBFFI="ON" ar_libtool_no_undefined="" LIBRACKET_DEP="" EXE_SUFFIX= SO_SUFFIX=.so MMM=3m MMM_INSTALLED= MMM_CAP_INSTALLED= CGC=cgc CGC_INSTALLED=cgc CGC_CAP_INSTALLED=CGC MAIN_VARIANT=3m INSTALL_SETUP_FLAGS= STRIP_DEBUG=":" use_flag_pthread=yes skip_iconv_check=no ###### OSKit stuff ####### if test "${enable_oskit}" = "yes" ; then OSKHOME=${OSKHOME:-/usr/local/oskit} if test ! -d ${OSKHOME}/bin ; then AC_MSG_ERROR(cannot find OSKit support; try defining OSKHOME) fi CC=`(ls ${OSKHOME}/bin/*-oskit-gcc | head -1) 2> /dev/null` if test ! -x "${CC}" ; then AC_MSG_ERROR(can't find *-oskit-gcc compiler script in ${OSKHOME}/bin) fi PREFLAGS="-nostdinc -I${OSKHOME}/include/oskit -I${OSKHOME}/include/oskit/freebsd " PREFLAGS="$PREFLAGS -I${OSKHOME}/include/oskit/c -I${OSKHOME}/include -I/usr/include" GCDIR=sgc OPTIONS="-DOSKIT -DUSE_SENORA_GC -DSGC_AUTO_ROOTS=0" if test "${enable_smalloskit}" = "yes" ; then EXTRA_OSK_LIBS= else EXTRA_OSK_LIBS="-loskit_linux_dev -loskit_linux_fs -loskit_diskpart -loskit_freebsd_net" OPTIONS="$OPTIONS -DOSK_FILESYSTEMS_AND_ETHERNET" fi MZBINTARGET=oskit else enable_oskit=no fi ###### float stuff ####### if test "${enable_floatinstead}" = "yes" ; then enable_float=yes AC_DEFINE(USE_SINGLE_FLOATS_AS_DEFAULT,1,[Single-precision floats by default]) fi if test "${enable_float}" = "yes" ; then AC_DEFINE(USE_SINGLE_FLOATS,1,[Single-precision floats]) fi ###### Autoconfigure ####### COMPFLAGS="" ORIG_CC="${CC}" ORIG_CPP="${CPP}" SUB_CONFIGURE_EXTRAS="" if test "${enable_oskit}" = "no" ; then AC_PROG_CC AC_PROG_CPP if test "$AS" = '' ; then AS=as as_was_set=no else as_was_set=yes fi fi AC_PROG_RANLIB if test "$AR" = '' ; then AR=ar fi if test "$ARFLAGS" = '' ; then ARFLAGS=ruv fi # If using gcc, we want all warnings: if test "$CC" = "gcc" ; then COMPFLAGS="$COMPFLAGS -Wall" # Use -MMD when we have gcc and gnumake: is_gmake=`make -v no-such-target-we-hope 2>&1 | grep "GNU Make"` if test "$is_gmake" = "" ; then WX_MMD_FLAG="" else WX_MMD_FLAG="-MMD" INCLUDEDEP="-include" fi # Compile mzdyn.o with -fPIC DYN_CFLAGS="-fPIC" fi if test "$REZ" = '' ; then REZ=/Developer/Tools/Rez fi if test "${enable_gracket}" = "yes" ; then MAKE_GRACKET=gracket else MAKE_GRACKET=no fi AC_CHECK_LIB(m, cos) AC_CHECK_LIB(dl, dlopen) PROFFLAGS="" if test "${enable_gprof}" = "yes" ; then MZOPTIONS="$MZOPTIONS -DDONT_ITIMER" PROFFLAGS="$PROFFLAGS -pg" LIBS="$LIBS -pg" fi if test "${enable_gcov}" = "yes" ; then PROFFLAGS="$PROFFLAGS -fprofile-arcs -ftest-coverage" fi ORIG_CC_FOR_BUILD="${CC_FOR_BUILD}" if test "$CC_FOR_BUILD" = "" ; then CC_FOR_BUILD="$CC" fi ############## platform tests ################ # for flags we don't want to use in config tests: EXTRALIBS= # for gmp assembly: EXTRA_GMP_OBJ= EXTRA_GMP_DEP= # For Racket targets: OSX=".osx" NOT_OSX="" MINGW=".mingw" NOT_MINGW="" CGC_X86_64="" case "$host_os" in solaris2*) STATICLINK="-Wl,-Bstatic" # after -ldl LIBS="$LIBS -lsocket -lnsl -lintl" need_gcc_static_libgcc="yes" check_gcc_dash_e="yes" try_poll_syscall="yes" ;; aix*) enable_cgcdefault="yes" EXTRALIBS="-Wl,-brtl,-bE:\$(srcdir)/../racket/include/racket.exp" ;; *freebsd*) LIBS="$LIBS -rdynamic" DYN_CFLAGS="-fPIC" enable_pthread=yes try_kqueue_syscall=yes ;; openbsd*) LIBS="$LIBS -rdynamic -Wl,--export-dynamic" enable_pthread=yes try_kqueue_syscall=yes ;; netbsd*) LIBS="$LIBS -rdynamic" try_kqueue_syscall=yes ;; irix*) enable_cgcdefault="yes" STATICLINK="/usr/lib/libC.a /usr/lib/libmalloc.a" if test "$X_PRE_LIBS" = " -lSM -lICE" ; then # For some reason, works best to drop these X_PRE_LIBS="" fi ;; linux*) LIBS="$LIBS -ldl -lm -rdynamic" DYN_CFLAGS="-fPIC" STRIP_DEBUG="strip -S" try_poll_syscall=yes try_epoll_syscall=yes case "$host_cpu" in #Required for CentOS 4.6 x86_64) enable_parallel_by_default=yes CGC_X86_64="1" ;; ppc|powerpc) ;; alpha) EXTRA_GMP_OBJ="gmp_alpha_gcc.o" EXTRA_GMP_DEP='$(EXTRA_GMP_DEP_FILE)' ;; i386|i486|i586|i686) enable_parallel_by_default=yes ;; *) ;; esac ;; osf1*) enable_cgcdefault="yes" if test "$CC" = "cc" ; then COMPFLAGS="$COMPFLAGS -ieee_with_inexact -assume noaligned_objects" elif test "$CC" = "gcc" ; then EXTRA_GMP_OBJ="gmp_alpha_gcc.o" EXTRA_GMP_DEP='$(EXTRA_GMP_DEP_FILE)' fi ;; hpux*) enable_cgcdefault="yes" if test "$CC" = "gcc"; then COMPFLAGS="$COMPFLAGS -fPIC" else CFLAGS="$CFLAGS -Wp,-H,64000" PREFLAGS="$PREFLAGS -D_HPUX_SOURCE" COMPFLAGS="$COMPFLAGS -Aa +Z" CGCOPTIONS="$CGCOPTIONS +ESdbgasm" MZOPTIONS="$MZOPTIONS +e" fi LIBS="$LIBS -Wl,-E" ;; *mingw*) enable_parallel_by_default=yes use_flag_pthread=no MZOPTIONS="$MZOPTIONS -fno-omit-frame-pointer" # to make JIT backtraces work MINGW="" NOT_MINGW=".other" MZINSTALLTARGET=mingw-install MZINSTALLBINDIR="${MZINSTALLBINDIR}/.." EXE_SUFFIX=".exe" COLLECTS_PATH="collects" skip_iconv_check=yes AC_DEFINE(HAVE_STDINT_H,1,[Have stdint.h]) if `which ${host}-windres > /dev/null` ; then WINDRES="${host}-windres" fi if `which ${host}-dlltool > /dev/null` ; then DLLTOOL="${host}-dlltool" fi case "$build_os" in *cygwin*) PWD="cygpath -m \\\`pwd\\\`" DIRCVTPRE="\`cygpath -m " DIRCVTPOST="\`" ;; esac ;; cygwin*) enable_cgcdefault="yes" MZINSTALLTARGET=unix-cygwin-install if test "${enable_shared}" = "yes" ; then ar_libtool_no_undefined=" -no-undefined" LIBRACKET_DEP="libmzgc.la -liconv" LIBGRACKET_DEP="../racket/libmzgc.la ../racket/libgracket.la" fi EXE_SUFFIX=".exe" ;; beos*) enable_cgcdefault="yes" enable_sgc=yes ;; darwin*) if test "${enable_sdk}" != "" ; then PREFLAGS="$PREFLAGS -isysroot ${enable_sdk} -mmacosx-version-min=10.4 -DEXTRA_EXCEPTION_STUBS" LDFLAGS="$LDFLAGS -isysroot ${enable_sdk} -mmacosx-version-min=10.4" if test "${CC}" = "gcc" ; then CC=gcc-4.0 fi if test "${CPP}" = "gcc -E" ; then CPP="gcc-4.0 -E" fi if test "${LD}" = "gcc" ; then LD=gcc-4.0 fi SUB_CONFIGURE_EXTRAS="${SUB_CONFIGURE_EXTRAS} CFLAGS="'"'"${CFLAGS} ${PREFLAGS}"'"' need_cc_in_extras=yes fi case "$host_cpu" in i386|x86_64) enable_parallel_by_default=yes ;; *) ;; esac PREFLAGS="$PREFLAGS -DOS_X -D_DARWIN_UNLIMITED_SELECT" try_kqueue_syscall=yes STRIP_DEBUG="/usr/bin/strip -S" SO_SUFFIX=.dylib # Force 32-bit build unless mac64 is enabled: if test "${enable_mac64}" != "yes" ; then if test "$host_cpu" != "powerpc" ; then if test "${ORIG_CC}" = "" ; then PREFLAGS="${PREFLAGS} -m32" CPPFLAGS="${CPPFLAGS} -m32" LDFLAGS="${LDFLAGS} -m32" # To make the libffi build work, we have to fold -m32 into CC # instead of CFLAGS: SUB_CONFIGURE_EXTRAS="${SUB_CONFIGURE_EXTRAS} CC="'"'"${CC}"' -m32"' need_cc_in_extras=no fi fi fi if test "${need_cc_in_extras}" = "yes" ; then SUB_CONFIGURE_EXTRAS="${SUB_CONFIGURE_EXTRAS} CC="'"'"${CC}"'"' fi if test "${enable_quartz}" = "yes" ; then WXVARIANT="wx_mac" INCLUDEDEP="-include" OPTIONS="$OPTIONS -fno-common" OSX="" NOT_OSX=".other" MZINSTALLTARGET=osx-install DYN_CFLAGS="" enable_pthread=no if test "${enable_libfw}" = "yes" ; then FRAMEWORK_INSTALL_DIR=/Library/Frameworks FRAMEWORK_REL_INSTALL=no FRAMEWORK_PREFIX='' elif test "${enable_userfw}" = "yes" ; then FRAMEWORK_INSTALL_DIR=~/Library/Frameworks FRAMEWORK_REL_INSTALL=no FRAMEWORK_PREFIX='' else FRAMEWORK_INSTALL_DIR='${libdir}' FRAMEWORK_REL_INSTALL=yes FRAMEWORK_PREFIX='$(FRAMEWORK_REL_PREFIX)' fi else PREFLAGS="$PREFLAGS -DXONX " fi ;; nto-qnx*) enable_sgc=yes use_flag_pthread=no LIBS="$LIBS -lsocket -Wl,--export-dynamic" ;; *) ;; esac case "$host_cpu" in alpha | sparc | powerpc) if test "$CC" = "gcc" ; then if test "$as_was_set" = "no" ; then AS="gcc -c -x assembler-with-cpp" fi fi ;; *) ;; esac ############## GC variant ################ if test "${enable_cgcdefault}" ; then MMM_INSTALLED=3m MMM_CAP_INSTALLED=3m CGC_INSTALLED= CGC_CAP_INSTALLED= MAIN_VARIANT=cgc fi ############## SGC ################ if test "${enable_sgcdebug}" = "yes" ; then enable_sgc=yes OPTIONS="$OPTIONS -DSGC_STD_DEBUGGING=1" fi if test "${enable_sgc}" = "yes" ; then GCDIR=sgc OPTIONS="$OPTIONS -DUSE_SENORA_GC" fi ############## C flags ################ AC_LANG_C [ msg="for inline keyword" ] AC_MSG_CHECKING($msg) AC_TRY_RUN( static inline int foo() { return 0; } int main() { return foo(); }, inline=yes, inline=no, inline=no) if test "$inline" = "no" ; then MZOPTIONS="$MZOPTIONS -DNO_INLINE_KEYWORD" fi AC_MSG_RESULT($inline) [ msg="for noinline attribute" ] AC_MSG_CHECKING($msg) AC_TRY_RUN( static int foo() __attribute__ ((noinline)); static int foo() { return 0; } int main() { return foo(); }, noinline=yes, noinline=no, noinline=no) if test "$noinline" = "yes" ; then AC_DEFINE(MZ_USE_NOINLINE,1,[Have noinline attribute]) fi AC_MSG_RESULT($inline) [ msg="for GNU preprocessor" ] AC_MSG_CHECKING($msg) AC_TRY_RUN( int main () { #ifdef __GNUC__ return 0; #else return 1; #endif }, using_gnu_cpp=yes, using_gnu_cpp=no, using_gnu_cpp=no) if test "$using_gnu_cpp" = "yes" ; then XFORMFLAGS="$XFORMFLAGS --keep-lines" case "$build_os" in *cygwin*) XFORMFLAGS="$XFORMFLAGS --D-via-include" ;; esac fi AC_MSG_RESULT($using_gnu_cpp) AC_MSG_CHECKING([for nl_langinfo (CODESET)]) AC_TRY_LINK([#include ], [char *codeset = nl_langinfo (CODESET);], AC_DEFINE(HAVE_CODESET,1,[Have nl_langinfo (CODESET)]) have_codeset=yes, have_codeset=no) AC_MSG_RESULT($have_codeset) AC_MSG_CHECKING([for getaddrinfo]) AC_TRY_LINK([#include #include #include ], [getaddrinfo(0, 0, 0, 0);], AC_DEFINE(HAVE_GETADDRINFO,1,[Have getaddrinfo]) have_getaddrinfo=yes, have_getaddrinfo=no) AC_MSG_RESULT($have_getaddrinfo) iconv_lib_flag="" if test "${skip_iconv_check}" = "no" ; then if test "${enable_iconv}" = "yes" ; then AC_CHECK_HEADER(iconv.h, enable_iconv=yes, enable_iconv=no) if test "${enable_iconv}" = "yes" ; then # Does it all work, now? AC_TRY_RUN( [ #include ] [ #include ] int main() { [ iconv_open("UTF-8", "UTF-8");] return 0; }, enable_iconv=yes, enable_iconv=no, enable_iconv=yes) if test "${enable_iconv}" = "no" ; then # Try adding -liconv ? # We did not use AC_CHECK_LIB because iconv is sometimes macro-renamed ORIG_LIBS="$LIBS" LIBS="$LIBS -liconv" AC_TRY_RUN( [ #include ] [ #include ] int main() { [ iconv_open("UTF-8", "UTF-8");] return 0; }, enable_iconv=yes, enable_iconv=no, enable_iconv=yes) if test "${enable_iconv}" = "no" ; then LIBS="$ORIG_LIBS" else iconv_lib_flag=" -liconv" fi fi fi fi [ msg="iconv is usable" ] AC_MSG_CHECKING($msg) iconv_usage_result="$enable_iconv$iconv_lib_flag" AC_MSG_RESULT($iconv_usage_result) if test "${enable_iconv}" = "no" ; then MZOPTIONS="$MZOPTIONS -DMZ_NO_ICONV" fi fi [ msg="for mbsrtowcs" ] AC_MSG_CHECKING($msg) AC_TRY_RUN( [ #include ] [ #include ] int main() { mbstate_t state; [ char *src = "X";] [ bzero(&state, sizeof(mbstate_t));] [ mbsrtowcs(0, &src, 0, &state);] return 0; }, mbsrtowcs=yes, mbsrtowcs=no, mbsrtowcs=no) if test "$mbsrtowcs" = "no" ; then MZOPTIONS="$MZOPTIONS -DNO_MBTOWC_FUNCTIONS" fi AC_MSG_RESULT($mbsrtowcs) if test "${try_poll_syscall}" = "yes" ; then [ msg="for poll" ] AC_MSG_CHECKING($msg) AC_TRY_RUN( [ #include ] int main() { struct pollfd pfd; int r; pfd.fd = 0; pfd.events = POLLIN; r = poll(&pfd, 1, 0); return 0; }, use_poll=yes, use_poll=no, use_poll=no) AC_MSG_RESULT($use_poll) if test "${use_poll}" = "yes" ; then AC_DEFINE(HAVE_POLL_SYSCALL,1,[Have poll]) fi fi if test "${try_epoll_syscall}" = "yes" ; then [ msg="for epoll" ] AC_MSG_CHECKING($msg) AC_TRY_RUN( [ #include ] int main() { int fd; struct epoll_event ev; fd = epoll_create(5); ev.events = EPOLLIN | EPOLLONESHOT; epoll_ctl(fd, EPOLL_CTL_ADD, 0, &ev); return 0; }, use_epoll=yes, use_epoll=no, use_epoll=no) AC_MSG_RESULT($use_epoll) if test "${use_epoll}" = "yes" ; then AC_DEFINE(HAVE_EPOLL_SYSCALL,1,[Have epoll]) fi fi if test "${try_kqueue_syscall}" = "yes" ; then [ msg="for kqueue" ] AC_MSG_CHECKING($msg) AC_TRY_RUN( [ #include ] [ #include ] [ #include ] int main() { int kq; struct kevent kev; [ struct timespec timeout = {0, 0}; ] kq = kqueue(); EV_SET(&kev, 0, EVFILT_READ, EV_ADD, 0, 0, NULL); kevent(kq, &kev, 1, NULL, 0, &timeout); return 0; }, use_kqueue=yes, use_kqueue=no, use_kqueue=no) AC_MSG_RESULT($use_kqueue) if test "${use_kqueue}" = "yes" ; then AC_DEFINE(HAVE_KQUEUE_SYSCALL,1,[Have kqueue]) fi fi if test "${enable_libffi}" = "default" ; then case "$host_os" in darwin*) enable_libffi=no ;; *) enable_libffi=yes ;; esac fi if test "${enable_libffi}" = "yes" ; then if test "${enable_foreign}" = "yes" ; then AC_MSG_CHECKING([for libffi]) # Try to get flags form pkg-config: libffi_config_prog="pkg-config libffi" libffi_config_preflags=`$libffi_config_prog --cflags-only-I 2> /dev/null` if test "$?" = 0 ; then libffi_config_cflags=`$libffi_config_prog --cflags-only-other 2> /dev/null` if test "$?" = 0 ; then libffi_config_libs=`$libffi_config_prog --libs 2> /dev/null` if test "$?" != 0 ; then libffi_config_preflags="" libffi_config_cflags="" libffi_config_libs="-lffi" fi else libffi_config_preflags="" libffi_config_cflags="" libffi_config_libs="-lffi" fi else libffi_config_preflags="" libffi_config_cflags="" libffi_config_libs="-lffi" fi OLD_CFLAGS="${CFLAGS}" OLD_LIBS="${LIBS}" CFLAGS="${CFLAGS} ${libffi_config_preflags} ${libffi_config_cflags}" LIBS="${LIBS} ${libffi_config_libs}" AC_TRY_LINK([#include ], [ffi_cif cif; ] [ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &ffi_type_void, NULL);], have_libffi=yes, have_libffi=no) AC_MSG_RESULT($have_libffi) if test "${have_libffi}" = "no" ; then CFLAGS="${OLD_CFLAGS}" LIBS="${OLD_LIBS}" echo "Building own libffi" else CFLAGS="${OLD_CFLAGS}" PREFLAGS="${PREFLAGS} ${libffi_config_preflags}" COMPFLAGS="${COMPFLAGS} ${libffi_config_cflags}" echo "Using installed libffi" OWN_LIBFFI="OFF" fi fi fi if test "${enable_backtrace}" = "yes" ; then GC2OPTIONS="$GC2OPTIONS -DMZ_GC_BACKTRACE" fi LFS_CFLAGS=`getconf LFS_CFLAGS 2> /dev/null` if test "${LFS_CFLAGS}" != "" && test "${LFS_CFLAGS}" != "undefined"; then echo "Large-file support: ${LFS_CFLAGS}" MZOPTIONS="${MZOPTIONS} ${LFS_CFLAGS}" fi ###### Get data sizes, stack direction, and endianness ####### AC_CHECK_SIZEOF(char) AC_CHECK_SIZEOF(short) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) AC_CHECK_SIZEOF(long long) AC_CHECK_SIZEOF([void *]) AC_TYPE_INTPTR_T AC_TYPE_UINTPTR_T if test "${endianness}" = "unknown" ; then if test "${enable_bigendian}" = "yes" ; then endianness=big else echo configure: warning: cannot determine endianness, assuming little fi fi if test "${endianness}" = "big" ; then AC_DEFINE(SCHEME_BIG_ENDIAN,1,[Big endian]) fi [ msg="for stack direction" ] AC_MSG_CHECKING($msg) AC_TRY_RUN( int grows_down_p(int n, void *cmp) { if (!cmp) return grows_down_p(10, &cmp); else if (!n) return ((unsigned long)&cmp < (unsigned long)cmp); else return grows_down_p(n - 1, cmp); } int main() { return grows_down_p(0, 0); }, stack_direction=up, stack_direction=down, stack_direction=unknown) AC_MSG_RESULT($stack_direction) if test "${stack_direction}" = "unknown" ; then if test "${enable_stackup}" = "yes" ; then stack_direction=up else echo configure: warning: cannot determine stack direction, assuming down fi fi if test "${stack_direction}" = "up" ; then AC_DEFINE(STACK_DIRECTION,1,[Stack direction up]) fi if test "${stack_direction}" = "down" ; then AC_DEFINE(STACK_DIRECTION,-1,[Stack direction down]) fi AC_C_BIGENDIAN(endianness=big, endianness=little, endianness=unknown) if test "${endianness}" = "unknown" ; then if test "${enable_bigendian}" = "yes" ; then endianness=big else echo configure: warning: cannot determine endianness, assuming little fi fi if test "${endianness}" = "big" ; then AC_DEFINE(SCHEME_BIG_ENDIAN,1,[Big endian]) fi ################### JIT #################### if test "${enable_jit}" = "no" ; then PREFLAGS="${PREFLAGS} -DMZ_DONT_USE_JIT" if test "${enable_futures}" = "yes" ; then echo configure: cannot enable futures and disable the JIT exit 1 fi enable_futures=no fi ############### places ################### if test "${enable_parallel_by_default}" = "yes" ; then if test "${enable_places}" = "" ; then enable_places=yes fi fi if test "${enable_places}" = "yes" ; then AC_DEFINE(MZ_USE_PLACES,1,[Places enabled]) enable_mzrt=yes fi ############### futures ################### if test "${enable_parallel_by_default}" = "yes" ; then if test "${enable_futures}" = "" ; then enable_futures=yes fi fi if test "${enable_futures}" = "yes" ; then AC_DEFINE(MZ_USE_FUTURES,1,[Futures enabled]) enable_mzrt=yes fi ############## compare-and-swap ################ if test "${enable_mzrt}" = "yes" ; then [ msg="for compare-and-swap" ] AC_MSG_CHECKING($msg) AC_TRY_RUN( int check1(long *addr, long old, long new_val) { return __sync_bool_compare_and_swap(addr, old, new_val); } int check2(short *addr, short old, short new_val) { return __sync_bool_compare_and_swap(addr, old, new_val); } int main() { long l = 2; short s = 3; return !check1(&l, 2, 4) || !check2(&s, 3, 6); }, cas_available=yes, cas_available=no, cas_available=no) AC_MSG_RESULT($cas_available) if test "${cas_available}" = "yes" ; then AC_DEFINE(MZ_CAS_AVAILABLE,1,[Compare-and-swap available]) fi fi ############### OS threads ################### if test "${enable_mzrt}" = "yes" ; then enable_pthread=yes fi ############### pthread ################### if test "${enable_pthread}" = "yes" ; then if test "${use_flag_pthread}" = "yes" ; then PREFLAGS="$PREFLAGS -pthread" LDFLAGS="$LDFLAGS -pthread" fi AC_DEFINE(USE_PTHREAD_INSTEAD_OF_ITIMER, 1, [Pthread timer enabled]) [ msg="whether pthread_rwlock is available" ] AC_MSG_CHECKING($msg) AC_TRY_RUN( [ #include ] pthread_rwlock_t l; int main() { return pthread_rwlock_init(&l, NULL); }, rwlockavail=yes, rwlockavail=no, rwlockavail=no) AC_MSG_RESULT($rwlockavail) if test "$rwlockavail" = "yes" ; then AC_DEFINE(HAVE_PTHREAD_RWLOCK,1,[Have pthread_rwlock]) fi fi if test "${enable_pthread}" = "" ; then enable_pthread=no fi ############## Solaris grunge ################ if test "$check_gcc_dash_e" = "yes" ; then orig_ldflags="$LDFLAGS" LDFLAGS="$LDFLAGS -Wl,-E" # Can use -Wl,-E for linking because we're using GNU linker? [ msg="whether linker accepts -Wl,-E" ] AC_MSG_CHECKING($msg) AC_TRY_RUN( int main() { return 0; }, linker_dash_e=yes, linker_dash_e=no, linker_dash_e=no) if test "$linker_dash_e" = "no" ; then LDFLAGS="${orig_ldflags}" fi AC_MSG_RESULT($linker_dash_e) fi ############## drop optimization flags ################ if test "${enable_noopt}" = "yes" ; then AWKPRG='BEGIN { FS = "(^| )-O(0|1|2|3|4|5|6|7|8|9|())( |$)" } /.*/ { for (i = 1; i < NF; i++) printf "%s ", $i; print $NF }' CFLAGS=`echo "$CFLAGS" | awk "$AWKPRG"` fi ############## usersetup ################ if test "${enable_usersetup}" != "yes" ; then INSTALL_SETUP_FLAGS="${INSTALL_SETUP_FLAGS} --no-user" fi ############## docs ################ if test "${enable_docs}" = "no" ; then INSTALL_SETUP_FLAGS="${INSTALL_SETUP_FLAGS} --no-docs" fi ############## Racket for Racket ################ if test "${enable_racket}" = "" ; then RUN_RACKET_CGC='$(RUN_THIS_RACKET_CGC)' RUN_RACKET_MMM='$(RUN_THIS_RACKET_MMM)' RUN_RACKET_MAIN_VARIANT='$(RUN_THIS_RACKET_MAIN_VARIANT)' CGC_IF_NEEDED_FOR_MMM="cgc" else RUN_RACKET_CGC="${enable_racket}" RUN_RACKET_MMM="${enable_racket}" RUN_RACKET_MAIN_VARIANT="${enable_racket}" CGC_IF_NEEDED_FOR_MMM="no-cgc-needed" fi ############## libtool ################ if test "${enable_shared}" = "yes" ; then echo "Configuring libtool" if test ! -d "lt" ; then mkdir "lt" fi abssrcdir=`(cd ${srcdir}; pwd)` # Try to convert libdir to an absolute path: # (Is this necessary anymore?) if test -d "${libdir}" ; then abslibdir=`(cd ${libdir}; pwd)` else abslibdir="${libdir}" fi if test "${LIBTOOLPROG}" = "" ; then (cd lt; sh ${abssrcdir}/lt/configure --enable-shared --disable-static) LIBTOOLPROG=`pwd`/lt/libtool fi if test "${need_gcc_static_libgcc}" = "yes" ; then need_gcc_static_libgcc="" if test "$CC" = "gcc" ; then gcc_vers_three=`${CC} -v 2>&1 | grep "version 3[.]"` if test "$gcc_vers_three" = "" ; then need_gcc_static_libgcc="" else need_gcc_static_libgcc=" -XCClinker -static-libgcc" fi fi fi if test "$INCLUDEDEP" = "-include" ; then plt_lib_version="\$(FWVERSION)" else plt_lib_version=`grep " MZSCHEME_VERSION " ${srcdir}/racket/src/schvers.h | cut -d '"' -f 2` fi AR="${LIBTOOLPROG} --mode=link --tag=CC $CC${need_gcc_static_libgcc}${ar_libtool_no_undefined} -release ${plt_lib_version} -rpath ${abslibdir} \$(ARLIBFLAGS) -o" STATIC_AR="${LIBTOOLPROG} --mode=link --tag=CC $CC -o" ARFLAGS="" RANLIB=":" MZLINKER="${LIBTOOLPROG} --mode=link --tag=CC $CC${need_gcc_static_libgcc} -rpath ${abslibdir}" PLAIN_CC="$CC" CC="${LIBTOOLPROG} --mode=compile --tag=CC $CC" AS="${LIBTOOLPROG} --mode=compile $AS" LIBSFX=la WXLIBS=WXLIBSDYN ICP="${LIBTOOLPROG} --mode=install cp" MRLIBINSTALL="install-lib" LIBFINISH="${LIBTOOLPROG} --mode=finish" LTO="lo" LTA="la" FOREIGN_CONVENIENCE="_convenience" FOREIGN_OBJSLIB="\$(FOREIGN_LIB)" MZOPTIONS="$MZOPTIONS -DMZ_USES_SHARED_LIB" else LIBSFX=a WXLIBS=WXLIBSNORM ICP=cp MRLIBINSTALL="install-no-lib" LIBFINISH=echo LTO="o" LTA="a" MZLINKER='$(CC)' STATIC_AR="$AR" PLAIN_CC='$(CC)' FOREIGN_CONVENIENCE="" FOREIGN_OBJSLIB="\$(FOREIGN_OBJS)" fi ############## final output ################ LIBS="$LIBS $EXTRALIBS" AC_SUBST(CC) AC_SUBST(CFLAGS) AC_SUBST(PREFLAGS) AC_SUBST(COMPFLAGS) AC_SUBST(PROFFLAGS) AC_SUBST(LDFLAGS) AC_SUBST(CPP) AC_SUBST(SED) AC_SUBST(AS) AC_SUBST(RANLIB) AC_SUBST(AR) AC_SUBST(STATIC_AR) AC_SUBST(ARFLAGS) AC_SUBST(STRIP_DEBUG) AC_SUBST(CC_FOR_BUILD) AC_SUBST(REZ) AC_SUBST(MZLINKER) AC_SUBST(PLAIN_CC) AC_SUBST(DYN_CFLAGS) AC_SUBST(x_includes) AC_SUBST(x_libraries) AC_SUBST(X_CFLAGS) AC_SUBST(X_LIBS) AC_SUBST(X_PRE_LIBS) AC_SUBST(X_EXTRA_LIBS) AC_SUBST(OPTIONS) AC_SUBST(MZOPTIONS) AC_SUBST(CGCOPTIONS) AC_SUBST(GC2OPTIONS) AC_SUBST(MROPTIONS) AC_SUBST(GCDIR) AC_SUBST(XFORMFLAGS) AC_SUBST(MZBINTARGET) AC_SUBST(MZINSTALLTARGET) AC_SUBST(MZINSTALLBINDIR) AC_SUBST(EXTRA_GMP_OBJ) AC_SUBST(EXTRA_GMP_DEP) AC_SUBST(OSX) AC_SUBST(NOT_OSX) AC_SUBST(MINGW) AC_SUBST(NOT_MINGW) AC_SUBST(FRAMEWORK_INSTALL_DIR) AC_SUBST(FRAMEWORK_REL_INSTALL) AC_SUBST(FRAMEWORK_PREFIX) AC_SUBST(INSTALL_ORIG_TREE) AC_SUBST(EXE_SUFFIX) AC_SUBST(SO_SUFFIX) AC_SUBST(OWN_LIBFFI) AC_SUBST(LIBSFX) AC_SUBST(WXLIBS) AC_SUBST(WXVARIANT) AC_SUBST(ICP) AC_SUBST(MRLIBINSTALL) AC_SUBST(LIBFINISH) AC_SUBST(MAKE_GRACKET) AC_SUBST(MAKE_COPYTREE) AC_SUBST(MAKE_FINISH) AC_SUBST(WXPRECOMP) AC_SUBST(USE_WXPRECOMP) AC_SUBST(INCLUDEDEP) AC_SUBST(WX_MMD_FLAG) AC_SUBST(PWD) AC_SUBST(DIRCVTPRE) AC_SUBST(DIRCVTPOST) AC_SUBST(WINDRES) AC_SUBST(DLLTOOL) AC_SUBST(OSKHOME) AC_SUBST(EXTRA_OSK_LIBS) AC_SUBST(FOREIGN_IF_USED) AC_SUBST(FOREIGN_OBJSLIB) AC_SUBST(FOREIGN_CONVENIENCE) AC_SUBST(FOREIGNTARGET) AC_SUBST(LIBRACKET_DEP) AC_SUBST(LIBGRACKET_DEP) AC_SUBST(LTO) AC_SUBST(LTA) AC_SUBST(collectsdir) AC_SUBST(libpltdir) AC_SUBST(includepltdir) AC_SUBST(docdir) AC_SUBST(COLLECTS_PATH) AC_SUBST(MMM) AC_SUBST(MMM_INSTALLED) AC_SUBST(MMM_CAP_INSTALLED) AC_SUBST(CGC) AC_SUBST(CGC_INSTALLED) AC_SUBST(CGC_CAP_INSTALLED) AC_SUBST(MAIN_VARIANT) AC_SUBST(INSTALL_SETUP_FLAGS) AC_SUBST(RUN_RACKET_CGC) AC_SUBST(RUN_RACKET_MMM) AC_SUBST(RUN_RACKET_MAIN_VARIANT) AC_SUBST(CGC_IF_NEEDED_FOR_MMM) mk_needed_dir() { if test ! -d "$1" ; then mkdir "$1" fi } makefiles="Makefile racket/Makefile racket/src/Makefile racket/dynsrc/Makefile racket/gc/Makefile racket/sgc/Makefile racket/gc2/Makefile" # Make sure the --enable-shared default is propagated: if test "${enable_shared}" = "yes" ; then ac_configure_args="$ac_configure_args --enable-shared" fi FOREIGNTARGET= FOREIGN_IF_USED="FOREIGN_NOT_USED" if test -d "${srcdir}/foreign" && test "${enable_foreign}" = "yes" ; then if test "${have_libffi}" != "yes" ; then AC_CONFIG_AUX_DIR( foreign/libffi ) AC_CONFIG_SUBDIRS( foreign/libffi ) fi FOREIGNTARGET="foreign-stuff" FOREIGN_IF_USED="FOREIGN_USED" else FOREIGNTARGET="foreign-stub" MZOPTIONS="$MZOPTIONS -DDONT_USE_FOREIGN" fi makefiles="$makefiles foreign/Makefile" ac_configure_args="$ac_configure_args$SUB_CONFIGURE_EXTRAS" if test "${enable_gracket}" = "yes" ; then makefiles="$makefiles gracket/Makefile gracket/gc2/Makefile" fi AC_OUTPUT($makefiles) if test "${inplacebuild}" = "yes" ; then echo ">>> Installation is in-place:" echo " ${srcdir}/.." echo " Configure with --prefix if you wanted to install somewhere else." if test "${enable_quartz}" != "yes" ; then echo " The --prefix option also makes the installed files better conform" echo " to Unix installation conventions. (The configure script will show" echo " you specific installation paths when --prefix is used.)" fi if test "${enable_shared}" != "yes" ; then echo " Alternately, you can simply "'`'"mv' the in-place installation after" echo " running "'`'"make install'." fi else echo ">>> Installation targets:" echo " executables : ${bindir}/..." echo " Racket code : ${collectsdir}/..." echo " core docs : ${docdir}/..." echo " C libraries : ${libdir}/..." echo " C headers : ${includepltdir}/..." echo " extra C objs : ${libpltdir}/..." echo " man pages : ${mandir}/..." echo " where prefix = ${prefix}" echo " and datarootdir = ${datarootdir}" if test "${unixstyle}" = "yes" ; then echo " and exec_prefix = ${exec_prefix}" fi fi