#! /bin/sh netsys_link_options="" have_posix_shm=0 have_posix_sem=0 have_posix_fadvise=0 have_posix_fallocate=0 have_posix_memalign=0 have_posix_pthread=0 have_printexc_register_printer=0 have_printexc_register_printer_bool=false code_printexc_register_printer='()' have_ocaml_fancy_page_tables=0 have_syslog=0 have_at=0 have_fchdir=0 have_fdopendir=0 win32=0 stdlib=`ocamlc -where` ###################################################################### rm -f configtests/printexc_register_printer.err printf "Checking whether Ocaml has Printexc.register_printer... " if ( cd configtests; ocamlc -c printexc_register_printer.ml ) \ >>configtests/printexc_register_printer.err 2>&1 then have_printexc_register_printer=1 have_printexc_register_printer_bool=true code_printexc_register_printer='Printexc.register_printer f' fi if [ $have_printexc_register_printer -gt 0 ]; then echo "found" else echo "not found" fi ###################################################################### rm -f configtests/ocaml_fancy_page_tables.err printf "Checking whether Ocaml has fancy page tables... " if ( cd configtests; ocamlc -o ocaml_fancy_page_tables ocaml_fancy_page_tables.c main.ml -custom ) \ >>configtests/ocaml_fancy_page_tables.err 2>&1 then if (cd configtests; ./ocaml_fancy_page_tables); then have_ocaml_fancy_page_tables=1 fi fi if [ $have_ocaml_fancy_page_tables -gt 0 ]; then def_have_ocaml_fancy_page_tables="#define FANCY_PAGE_TABLES" echo "found" else def_have_ocaml_fancy_page_tables="#undef FANCY_PAGE_TABLES" echo "not found" fi ###################################################################### printf "Checking for POSIX shared memory... " posix_shm_compile=0 posix_shm_link_options="" rm -f configtests/posix_shm.err if (cd configtests; ocamlc -o posix_shm posix_shm.c main.ml -custom ) \ >>configtests/posix_shm.err 2>&1 then posix_shm_compile=1 else if (cd configtests; ocamlc -o posix_shm posix_shm.c main.ml -cclib -lrt -custom ) \ >>configtests/posix_shm.err 2>&1 then posix_shm_compile=1 posix_shm_link_options="-lrt" fi fi if [ $posix_shm_compile -gt 0 ]; then if configtests/posix_shm >>configtests/posix_shm.err 2>&1; then have_posix_shm=1 netsys_link_options="$netsys_link_options $posix_shm_link_options" fi fi if [ $have_posix_shm -gt 0 ]; then echo "found" def_have_posix_shm="#define HAVE_POSIX_SHM" else echo "not found" def_have_posix_shm="#undef HAVE_POSIX_SHM" fi ###################################################################### printf "Checking for POSIX semaphores... " posix_sem_compile=0 posix_sem_link_options="" rm -f configtests/posix_sem.err if (cd configtests; ocamlc -o posix_sem posix_sem.c main.ml -custom ) \ >>configtests/posix_sem.err 2>&1 then posix_sem_compile=1 else if (cd configtests; ocamlc -o posix_sem posix_sem.c main.ml -cclib -lrt -custom ) \ >>configtests/posix_sem.err 2>&1 then posix_sem_compile=1 posix_sem_link_options="-lrt" fi fi if [ $posix_sem_compile -gt 0 ]; then if configtests/posix_sem >>configtests/posix_sem.err 2>&1; then have_posix_sem=1 netsys_link_options="$netsys_link_options $posix_sem_link_options" fi fi if [ $have_posix_sem -gt 0 ]; then echo "found" def_have_posix_sem="#define HAVE_POSIX_SEM" else echo "not found" def_have_posix_sem="#undef HAVE_POSIX_SEM" fi ###################################################################### printf "Checking for POSIX fadvise... " posix_fadv_compile=0 posix_fadv_link_options="" rm -f configtests/posix_fadvise.err if (cd configtests; ocamlc -o posix_fadvise posix_fadvise.c main.ml -custom ) \ >>configtests/posix_fadvise.err 2>&1 then posix_fadv_compile=1 fi if [ $posix_fadv_compile -gt 0 ]; then if ( cd configtests; ./posix_fadvise >>posix_fadvise.err 2>&1 ); then have_posix_fadvise=1 netsys_link_options="$netsys_link_options $posix_fadv_link_options" fi fi if [ $have_posix_fadvise -gt 0 ]; then echo "found" def_have_posix_fadvise="#define HAVE_POSIX_FADVISE" else echo "not found" def_have_posix_fadvise="#undef HAVE_POSIX_FADVISE" fi ###################################################################### printf "Checking for POSIX fallocate... " posix_fallo_compile=0 posix_fallo_link_options="" rm -f configtests/posix_fallocate.err if (cd configtests; ocamlc -o posix_fallocate posix_fallocate.c main.ml -custom ) \ >>configtests/posix_fallocate.err 2>&1 then posix_fallo_compile=1 fi if [ $posix_fallo_compile -gt 0 ]; then if ( cd configtests && ./posix_fallocate >>posix_fallocate.err 2>&1) ; then have_posix_fallocate=1 netsys_link_options="$netsys_link_options $posix_fallo_link_options" fi fi if [ $have_posix_fallocate -gt 0 ]; then echo "found" def_have_posix_fallocate="#define HAVE_POSIX_FALLOCATE" else echo "not found" def_have_posix_fallocate="#undef HAVE_POSIX_FALLOCATE" fi ###################################################################### printf "Checking for POSIX memalign... " posix_malign_compile=0 posix_malign_link_options="" rm -f configtests/posix_memalign.err if (cd configtests; ocamlc -o posix_memalign posix_memalign.c main.ml -custom ) \ >>configtests/posix_memalign.err 2>&1 then posix_malign_compile=1 fi if [ $posix_malign_compile -gt 0 ]; then if ( cd configtests && ./posix_memalign >>posix_memalign.err 2>&1) ; then have_posix_memalign=1 netsys_link_options="$netsys_link_options $posix_malign_link_options" fi fi if [ $have_posix_memalign -gt 0 ]; then echo "found" def_have_posix_memalign="#define HAVE_POSIX_MEMALIGN" else echo "not found" def_have_posix_memalign="#undef HAVE_POSIX_MEMALIGN" fi ###################################################################### printf "Checking for POSIX pthread... " # Following test is stolen from Ocaml's configure script: posix_pthr_link_options="" case `uname -s` in SunOS) posix_pthr_link_options="-lpthread -lposix4" ;; FreeBSD) posix_pthr_link_options="-pthread" ;; OpenBSD) posix_pthr_link_options="-pthread" ;; *) posix_pthr_link_options="-lpthread" ;; esac posix_pthr_compile=0 rm -f configtests/posix_pthread.err if (cd configtests; ocamlc -o posix_pthread posix_pthread.c main.ml -custom -cclib "$posix_pthr_link_options" ) \ >>configtests/posix_pthread.err 2>&1 then posix_pthr_compile=1 fi if [ $posix_pthr_compile -gt 0 ]; then if configtests/posix_pthread >>configtests/posix_pthread.err 2>&1; then have_posix_pthread=1 netsys_link_options="$netsys_link_options $posix_pthr_link_options" fi fi if [ $have_posix_pthread -gt 0 ]; then echo "found" def_have_posix_pthread="#define HAVE_PTHREAD" else echo "not found" def_have_posix_pthread="#undef HAVE_PTHREAD" fi ###################################################################### printf "Checking for syslog... " posix_syslog_compile=0 posix_syslog_link_options="" rm -f configtests/syslog.err if (cd configtests; ocamlc -o syslog syslog.c main.ml -custom ) \ >>configtests/syslog.err 2>&1 then posix_syslog_compile=1 fi if [ $posix_syslog_compile -gt 0 ]; then if ( cd configtests && ./syslog >>syslog.err 2>&1) ; then have_syslog=1 fi fi if [ $have_syslog -gt 0 ]; then echo "found" def_have_syslog="#define HAVE_SYSLOG" else echo "not found" def_have_syslog="#undef HAVE_SYSLOG" fi ###################################################################### printf "Checking for POSIX functions like openat... " posix_at_compile=0 posix_at_link_options="" rm -f configtests/atfunctions.err if (cd configtests; ocamlc -o atfunctions atfunctions.c main.ml -custom ) \ >>configtests/atfunctions.err 2>&1 then posix_at_compile=1 fi if [ $posix_at_compile -gt 0 ]; then if ( cd configtests && ./atfunctions >>atfunctions.err 2>&1) ; then have_at=1 fi fi if [ $have_at -gt 0 ]; then echo "found" def_have_at="#define HAVE_AT" else echo "not found (or incomplete)" def_have_at="#undef HAVE_AT" fi ###################################################################### printf "Checking for fchdir... " posix_fchdir_compile=0 posix_fchdir_link_options="" rm -f configtests/fchdir.err if (cd configtests; ocamlc -o fchdir fchdir.c main.ml -custom ) \ >>configtests/fchdir.err 2>&1 then posix_fchdir_compile=1 fi if [ $posix_fchdir_compile -gt 0 ]; then if ( cd configtests && ./fchdir >>fchdir.err 2>&1) ; then have_fchdir=1 fi fi if [ $have_fchdir -gt 0 ]; then echo "found" def_have_fchdir="#define HAVE_FCHDIR" else echo "not found" def_have_fchdir="#undef HAVE_FCHDIR" fi ###################################################################### printf "Checking for fdopendir... " posix_fdopendir_compile=0 posix_fdopendir_link_options="" rm -f configtests/fdopendir.err if (cd configtests; ocamlc -o fdopendir fdopendir.c main.ml -custom ) \ >>configtests/fdopendir.err 2>&1 then posix_fdopendir_compile=1 fi if [ $posix_fdopendir_compile -gt 0 ]; then if ( cd configtests && ./fdopendir >>fdopendir.err 2>&1) ; then have_fdopendir=1 fi fi if [ $have_fdopendir -gt 0 ]; then echo "found" def_have_fdopendir="#define HAVE_FDOPENDIR" else echo "not found" def_have_fdopendir="#undef HAVE_FDOPENDIR" fi ###################################################################### printf "Checking for GPROF... " if [ -f $stdlib/std_exit.p.cmx ]; then echo "found" def_have_gprof="#define HAVE_GPROF" else echo "not found" def_have_gprof="#undef HAVE_GPROF" fi ###################################################################### printf "Checking for win32... " system=`ocamlc -config | grep system | sed -e 's/system: //'` case "$system" in mingw|msvc) echo "yes" win32=1 netsys_link_options="$netsys_link_options -lws2_32" ;; *) echo "no" ;; esac ###################################################################### # # Locales: We use nl_langinfo which is not available on Win32. # So we just assume we have locales on all other platforms. if [ $win32 -gt 0 ]; then def_have_locale="#undef HAVE_LOCALE" else def_have_locale="#define HAVE_LOCALE" fi ###################################################################### cat <<EOF >Makefile.conf NETSYS_LINK_OPTIONS = $netsys_link_options EOF cat <<EOF >config.h $def_have_posix_shm $def_have_posix_sem $def_have_posix_fadvise $def_have_posix_fallocate $def_have_posix_memalign $def_have_posix_pthread $def_have_ocaml_fancy_page_tables $def_have_syslog $def_have_at $def_have_fchdir $def_have_fdopendir $def_have_gprof $def_have_locale EOF cat <<EOF >netsys_conf.ml (* This file is written by netsys/configure *) let have_printexc_register_printer = $have_printexc_register_printer_bool let printexc_register_printer f = $code_printexc_register_printer EOF exit 0