37ad402001-02-15Mirar (Pontus Hagland) AC_REVISION("$Id: configure.in,v 1.484 2001/02/15 07:53:04 mirar Exp $")
5267b71995-08-09Fredrik Hübinette (Hubbe) AC_INIT(interpret.c)
af56471996-12-03Fredrik Hübinette (Hubbe) AC_CONFIG_HEADER(machine.h)
51bd9e1996-10-09Fredrik Hübinette (Hubbe) 
ea24061997-04-01Henrik Grubbström (Grubba) # We want an absolute path to the source-dir. case "$srcdir" in /*) ;; *) oldsrcdir="$srcdir" srcdir="`cd \"$srcdir\";pwd`" AC_MSG_WARN([ Converted $oldsrcdir to $srcdir, If this does not work, please use an absolute path to the configure script. ]) ;; esac
48ae531996-10-09Fredrik Hübinette (Hubbe) if test "x${CFLAGS-}" = x ; then
51bd9e1996-10-09Fredrik Hübinette (Hubbe)  cflags_is_set=no
48ae531996-10-09Fredrik Hübinette (Hubbe) else cflags_is_set=yes
51bd9e1996-10-09Fredrik Hübinette (Hubbe) fi
c67b691996-11-16Fredrik Hübinette (Hubbe) if test "x${CPPFLAGS-}" = x ; then cppflags_is_set=no else cppflags_is_set=yes fi if test "x${LDFLAGS-}" = x ; then ldflags_is_set=no else ldflags_is_set=yes fi
7b39411997-02-06Fredrik Hübinette (Hubbe) for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then AC_MSG_WARN([You are using a site file to initialize configure, please note that this can lead to problems if anything in $ac_site_file is not correct. If Pike does not compile, or does not run, please try this to compile Pike again: rm ./config.cache ; CONFIG_SITE=x ./configure ; make]) fi done
4174542001-01-26Martin Stjernholm AC_ARG_ENABLE(binary, [ --disable-binary don't configure for binary build, only do tests for precompilation stuff], [], [enable_binary=yes]) if test "x$enable_binary" = "xno"; then
1acce82001-01-27Martin Stjernholm  AC_MSG_WARN(Short-circuiting configure tests for binary building.) AC_MSG_WARN(Only some targets in the Makefile can be used.) CC=false CPP=echo
4174542001-01-26Martin Stjernholm else
1acce82001-01-27Martin Stjernholm  if test ! -z "$pike_cv_prog_CC_save" -a ! -z "$CC" -a "$CC" != "$pike_cv_prog_CC_save" then AC_MSG_WARN([CC is different than last time Pike was compiled, It is probably best to delete ./config.cache before proceeding]) fi
7b39411997-02-06Fredrik Hübinette (Hubbe) 
1acce82001-01-27Martin Stjernholm  pike_cv_prog_CC_save="$CC"
7b39411997-02-06Fredrik Hübinette (Hubbe) 
1acce82001-01-27Martin Stjernholm  # MY_AC_PROG_CC # The above has problems if the smartlink binary is removed. /grubba AC_PROG_CC AC_PROG_CPP
2ed72c2000-09-17Henrik Grubbström (Grubba)  #############################################################################
1acce82001-01-27Martin Stjernholm  AC_ISC_POSIX AC_AIX AC_MINIX fi
2ed72c2000-09-17Henrik Grubbström (Grubba)  #############################################################################
4827972000-09-16Henrik Grubbström (Grubba) 
6cefa12000-09-27Henrik Grubbström (Grubba) # option, cache_name, variable AC_DEFUN(AC_SYS_COMPILER_FLAG, [ AC_MSG_CHECKING($1) AC_CACHE_VAL(pike_cv_option_$2, [ OLD_CFLAGS="[$]CFLAGS" CFLAGS="[$]OLD_CFLAGS $1" AC_TRY_RUN([int foo; int main(){exit(0);}], pike_cv_option_$2=yes, pike_cv_option_$2=no, [ AC_TRY_LINK([], [], pike_cv_option_$2=yes, pike_cv_option_$2=no) ]) CFLAGS="[$]OLD_CFLAGS" ]) if test x"[$]pike_cv_option_$2" = "xyes" ; then $3="[$]$3 $1" case "$3" in OPTIMIZE) CFLAGS="[$]CFLAGS $1" ;; esac AC_MSG_RESULT(yes) $5 else AC_MSG_RESULT(no) $4 fi ]) # arch, option, cache_name, variable AC_DEFUN(AC_SYS_CPU_COMPILER_FLAG, [ if test "`uname -m 2>/dev/null`" = "$1" ; then AC_SYS_COMPILER_FLAG($2,$3,$4,$5,$6) $7 fi ]) # os, option, cache_name, variable AC_DEFUN(AC_SYS_OS_COMPILER_FLAG, [ if test "x$pike_cv_sys_os" = "x$1" ; then AC_SYS_COMPILER_FLAG($2,$3,$4,$5,$6) $7 fi ]) define([DO_IF_OS], [ if test "x$pike_cv_sys_os" = "x$1" ; then $2 fi ]) define([DO_IF_CPU], [ if test "`uname -m 2>/dev/null`" = "$1" ; then $2 fi ]) #############################################################################
4827972000-09-16Henrik Grubbström (Grubba) if test "x$GCC" = "xno" -a "x$TCC" = "xno"; then # # We want 64bit mode if possible. #
6cefa12000-09-27Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-q64, q64, CFLAGS)
4827972000-09-16Henrik Grubbström (Grubba)  if test "x$ac_cv_prog_cc_cross" = "xyes"; then # The AIX 5L/cc beta can't generate working binaries without a # data-segment... AC_MSG_CHECKING([if we're really using a cross-compiler])
6cefa12000-09-27Henrik Grubbström (Grubba) 
7fcd072000-09-16Henrik Grubbström (Grubba)  AC_CACHE_VAL(pike_cv_datasegment_required, [ ac_cv_prog_cc_cross=no; AC_TRY_RUN([int foo;main(){return(0);}], [
4827972000-09-16Henrik Grubbström (Grubba)  pike_cv_datasegment_required=yes
7fcd072000-09-16Henrik Grubbström (Grubba)  ], [
4827972000-09-16Henrik Grubbström (Grubba)  pike_cv_datasegment_required=no
7fcd072000-09-16Henrik Grubbström (Grubba)  ac_cv_prog_cc_cross=yes ], [ pike_cv_datasegment_required=no ac_cv_prog_cc_cross=yes ])
4827972000-09-16Henrik Grubbström (Grubba)  ]) if test "x$pike_cv_datasegment_required" = "xyes"; then AC_MSG_RESULT([no -- Applying data-segment kludge]) ac_cv_prog_cc_cross=no cat >conftest.c <<EOF static int foo; EOF pike_cv_datasegemnt_file=no if AC_TRY_EVAL(ac_compile); then if test -f "conftest.$ac_objext"; then rm -f "data-segment.$ac_objext" if mv "conftest.$ac_objext" "data-segment.$ac_objext"; then if test -f "`pwd`/data-segment.$ac_objext"; then pike_cv_datasegemnt_file="`pwd`/data-segment.$ac_objext" else AC_MSG_WARN(Lost track of data-segment kludge-file.) fi else AC_MSG_WARN(Failed to rename data-segment kludge-file.) fi else AC_MSG_WARN(Can not find data-segment kludgefile.) fi else AC_MSG_WARN(Failed to compile data-segment kludge.) fi if test "x$pike_cv_datasegment_file" = "xno"; then AC_MSG_WARN(Some tests may yield false results.) else LIBS="$pike_cv_datasegment_file $LIBS" export LIBS AC_MSG_WARN(Data-segment kludge applied.) fi else AC_MSG_RESULT(yes) fi fi fi
18be802000-03-02Fredrik Hübinette (Hubbe) #############################################################################
1acce82001-01-27Martin Stjernholm if test "x$enable_binary" != "xno"; then
18be802000-03-02Fredrik Hübinette (Hubbe) # # The purpose of this test is to check that there is no filesystem # caching preventing pike from compiling correctly. #
d4f9e92000-05-19Martin Stjernholm AC_MSG_CHECKING([filesystem synchronization])
18be802000-03-02Fredrik Hübinette (Hubbe)  AC_CACHE_VAL(pike_cv_filesystem_syncronization, [ pike_cv_filesystem_syncronization=working AC_EGREP_CPP(true, [ true ], , pike_cv_filesystem_syncronization=broken) AC_EGREP_CPP(false, [ false ], , pike_cv_filesystem_syncronization=broken) AC_EGREP_CPP(yes, [ yes ], , pike_cv_filesystem_syncronization=broken) AC_EGREP_CPP(no, [ no ], , pike_cv_filesystem_syncronization=broken) AC_EGREP_CPP(near, [ far ], pike_cv_filesystem_syncronization=broken, ) AC_EGREP_CPP(up, [ up ], , pike_cv_filesystem_syncronization=broken) AC_EGREP_CPP(down, [ down], , pike_cv_filesystem_syncronization=broken) ]) AC_MSG_RESULT($pike_cv_filesystem_syncronization) if test "x$pike_cv_filesystem_syncronization" = xbroken ; then AC_MSG_ERROR([Filesystem caching is too aggressive. If you are using Samba, make sure to have the following line in your smb.conf: oplocks = False ]) exit 1 fi
1acce82001-01-27Martin Stjernholm fi
4174542001-01-26Martin Stjernholm ############################################################################# # # Some cross-compilation support # CROSS="$ac_cv_prog_cc_cross" AC_SUBST(CROSS) if test "x$ac_cv_prog_cc_cross" = "xyes"; then RUNTPIKE="USE_PIKE" else RUNTPIKE="USE_TPIKE" fi AC_SUBST(RUNTPIKE) AC_PATH_PROG(pike_prog,pike,no) PIKE="$ac_cv_path_pike_prog" AC_SUBST(PIKE) ############################################################################# LIBDIR=`(cd $srcdir/../lib ; pwd)` BINDIR=`(cd $srcdir/../bin ; pwd)` BUILDDIR=`pwd` AC_SUBST(LIBDIR) AC_SUBST(BINDIR) AC_SUBST(BUILDDIR) ############################################################################# if test "x$enable_binary" != "xno"; then # The following tests are only relevant if we intend to build binaries.
6900981999-05-07Fredrik Hübinette (Hubbe) ############################################################################# AC_CHECK_HEADERS(fnord/fnord/fnord.h)
54be211999-05-12Henrik Grubbström (Grubba) AC_MSG_CHECKING([if CHECK_HEADERS works])
6900981999-05-07Fredrik Hübinette (Hubbe) if test "x$ac_cv_header_fnord_fnord_fnord_h" = xyes ; then
54be211999-05-12Henrik Grubbström (Grubba)  AC_MSG_RESULT(no)
6900981999-05-07Fredrik Hübinette (Hubbe)  exit 1 fi
54be211999-05-12Henrik Grubbström (Grubba) AC_MSG_RESULT(yes)
613bc52000-08-28Henrik Grubbström (Grubba)  #############################################################################
8cf37d1997-01-27Per Hedbor 
e48c381998-07-29Marcus Comstedt if test $ac_cv_prog_gcc = yes; then AC_MSG_CHECKING(for libgcc file name) AC_CACHE_VAL(pike_cv_libgcc_filename, [ pike_cv_libgcc_filename="`${CC-cc} -print-libgcc-file-name`" if test -z "$pike_cv_libgcc_filename"; then pike_cv_libgcc_filename=no else if test -f "$pike_cv_libgcc_filename"; then : else pike_cv_libgcc_filename=no fi fi ]) AC_MSG_RESULT($pike_cv_libgcc_filename) if test x"$pike_cv_libgcc_filename" = xno; then LIBGCC="" else LIBGCC="$pike_cv_libgcc_filename" fi else LIBGCC="" fi AC_SUBST(LIBGCC)
2565f41997-02-26Fredrik Hübinette (Hubbe) #############################################################################
d1e3fe1999-03-06Henrik Grubbström (Grubba) ## Build smartlink
af5ef81999-05-28Henrik Grubbström (Grubba) AC_CHECK_HEADERS(stdlib.h string.h unistd.h sys/stat.h sys/types.h sys/errno.h)
d1e3fe1999-03-06Henrik Grubbström (Grubba)  if test -x /usr/bin/uname 2>/dev/null; then UNAME=`/usr/bin/uname -sr` elif test -x /bin/uname 2>/dev/null; then UNAME=`/bin/uname -sr` else UNAME=unknown fi
613bc52000-08-28Henrik Grubbström (Grubba) # We need some special hacks when running slowaris AC_PATH_PROG(uname_prog,uname,no) AC_MSG_CHECKING(operating system) AC_CACHE_VAL(pike_cv_sys_os, [ if test "$uname_prog" != "no"; then pike_cv_sys_os="`uname`" case "$pike_cv_sys_os" in SunOS) case "`uname -r`" in 5.*) pike_cv_sys_os="Solaris" ;; esac ;;
dc83082000-09-15Henrik Grubbström (Grubba)  Monterey64) # According to the release notes, the string "Monterey64" # will be changed to "AIX" in the final release. # (Monterey 64 is also known as AIX 5L). pike_cv_sys_os="AIX" ;;
613bc52000-08-28Henrik Grubbström (Grubba)  esac else pike_cv_sys_os="Not Solaris" fi ]) AC_MSG_RESULT($pike_cv_sys_os) if test "$GCC" = "yes"; then :; else # # Special hack for HP-UX stupid cc # if test "$pike_cv_sys_os" = "HP-UX"; then AC_TRY_COMPILE([int foo(int bar);],[],[], [ OLD_CC="${CC-cc}" OLD_CFLAGS="$CFLAGS" case "/$CC" in */smartlink\ cc) if test -x /usr/bin/cc; then CC="`echo $CC|sed -e 's/ cc/ \/usr\/bin\/cc/`" else : ; fi ;; esac CFLAGS="-Ae +Olibcalls $CFLAGS" AC_TRY_COMPILE([int foo(int bar);],[],[],[ CC="$OLD_CC" CFLAGS="$OLD_CFLAGS" ]) pike_cv_prog_CC="${CC}" ]) fi fi if test "$pike_cv_sys_os" = "Solaris" ; then AC_DEFINE(SOLARIS) else : fi
9041271999-03-06Henrik Grubbström (Grubba) # FIXME: Add proper tests
d1e3fe1999-03-06Henrik Grubbström (Grubba) case "$UNAME" in OSF1\ V4.*) AC_DEFINE(USE_RPATH) ;;
108dde2000-10-31Henrik Grubbström (Grubba)  HPUX\ 11.*) AC_DEFINE(USE_PLUS_b) ;;
d1e3fe1999-03-06Henrik Grubbström (Grubba)  IRIX\ 6.*) AC_DEFINE(USE_RPATH) ;; IRIX\ 5.*) AC_DEFINE(USE_RPATH) ;; SunOS\ 5.*)
f2e4c51999-05-12Henrik Grubbström (Grubba)  if test "$TCC" = "yes"; then # tcc doesn't know about -R AC_DEFINE(USE_Wl_R) else AC_DEFINE(USE_R) fi
d1e3fe1999-03-06Henrik Grubbström (Grubba)  ;; Linux\ 2.*) AC_DEFINE(USE_Wl) ;;
ed7aeb2000-06-16Henrik Grubbström (Grubba)  UnixWare\ 7.*)
b6c28f2000-06-16Henrik Grubbström (Grubba)  if test "$ac_cv_prog_gcc" = "yes"; then AC_DEFINE(USE_XLINKER_YP_) else AC_DEFINE(USE_YP_) fi
ed7aeb2000-06-16Henrik Grubbström (Grubba)  ;;
d1e3fe1999-03-06Henrik Grubbström (Grubba)  *) AC_DEFINE(USE_LD_LIBRARY_PATH) ;;
2565f41997-02-26Fredrik Hübinette (Hubbe) esac
d1e3fe1999-03-06Henrik Grubbström (Grubba) # Strip smartlink from $CC REALCC="`echo $CC|sed -e 's/.*smartlink //'`" # Fix a smartlink SMARTLINK="$BUILDDIR/smartlink"
9041271999-03-06Henrik Grubbström (Grubba) AC_MSG_CHECKING(if $SMARTLINK exists is up to date and works)
ba012d1999-04-25Henrik Grubbström (Grubba) if ls -1tr "$SMARTLINK${ac_exeext}" "$srcdir/smartlink.$ac_ext" 2>/dev/null | head -1 | grep "smartlink.$ac_ext" >/dev/null 2>&5 && "$SMARTLINK" -v >/dev/null 2>&5; then
d1e3fe1999-03-06Henrik Grubbström (Grubba)  AC_MSG_RESULT(yes) else AC_MSG_RESULT(no)
7e4d4e2000-12-13Fredrik Hübinette (Hubbe)  SMARTBUILDCC="${REALCC-cc}"
d1e3fe1999-03-06Henrik Grubbström (Grubba) 
9f85232000-11-26Henrik Grubbström (Grubba)  if echo foo "$CC" | egrep 'rntc.|rnt.cl' >/dev/null; then
cf39902001-01-19Henrik Grubbström (Grubba)  AC_MSG_WARN([rntcc/rntcl/rnticl/rntecl detected.])
7e4d4e2000-12-13Fredrik Hübinette (Hubbe)  AC_PATH_PROGS(SMARTBUILDCC,gcc cc egcs,gcc, $PATH:$EXTRA_PATH) echo Using $SMARTBUILDCC to compile smartlink.
cf39902001-01-19Henrik Grubbström (Grubba)  else
325c1f2001-01-19Henrik Grubbström (Grubba)  if test "x$ac_cv_prog_cc_cross" = "xyes"; then
cf39902001-01-19Henrik Grubbström (Grubba)  AC_MSG_WARN([Crosscompiler detected.]) AC_PATH_PROGS(SMARTBUILDCC, gcc cc egcs, gcc, /usr/bin:/bin/:/usr/ccs/bin:/usr/local/bin:$PATH:$EXTRA_PATH) echo Using $SMARTBUILDCC to compile smartlink. fi
7e4d4e2000-12-13Fredrik Hübinette (Hubbe)  fi
d1e3fe1999-03-06Henrik Grubbström (Grubba) 
7e4d4e2000-12-13Fredrik Hübinette (Hubbe)  rm -f "$SMARTLINK"
d1e3fe1999-03-06Henrik Grubbström (Grubba) 
7e4d4e2000-12-13Fredrik Hübinette (Hubbe)  AC_MSG_CHECKING(whether smartlink compiles)
d1e3fe1999-03-06Henrik Grubbström (Grubba) 
7e4d4e2000-12-13Fredrik Hübinette (Hubbe)  link_cmd='${SMARTBUILDCC-cc} -o smartlink${ac_exeext} $CFLAGS -I. $CPPFLAGS $LDFLAGS $srcdir/smartlink.$ac_ext $LIBS 2>&5' if { (eval echo Compiling smartlink: \"$link_cmd\") 1>&5; (eval $link_cmd) 2>&5; } && "$BUILDDIR/smartlink" -v >/dev/null 2>&5; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no - use the sh script) SMARTLINK="$BINDIR/smartlink"
d1e3fe1999-03-06Henrik Grubbström (Grubba)  fi fi CC="$SMARTLINK $REALCC" pike_cv_prog_CC="$CC"
d5efba1998-01-23Henrik Grubbström (Grubba) 
424d9c1999-05-02Fredrik Hübinette (Hubbe) AC_SUBST(SMARTLINK) AC_SUBST(REALCC)
d5efba1998-01-23Henrik Grubbström (Grubba) export REALCC SMARTLINK
d166d62000-08-06Henrik Grubbström (Grubba) AC_MSG_CHECKING([for a fallback compiler]) # Strip smartlink from $FALLBACK_CC FALLBACK_CC="`echo $FALLBACK_CC|sed -e 's/.*smartlink //'`" if test "x$FALLBACK_CC" = "x"; then AC_MSG_RESULT(no) else FALLBACK_CC="$SMARTLINK $FALLBACK_CC" AC_MSG_RESULT($FALLBACK_CC) fi AC_SUBST(FALLBACK_CC) export FALLBACK_CC
2565f41997-02-26Fredrik Hübinette (Hubbe) #############################################################################
1acce82001-01-27Martin Stjernholm fi #if test "x$enable_binary" != "xno" #############################################################################
2565f41997-02-26Fredrik Hübinette (Hubbe) 
de575a1999-05-29Henrik Grubbström (Grubba) 
613bc52000-08-28Henrik Grubbström (Grubba) if test "$GCC" = "yes"; then
dc83082000-09-15Henrik Grubbström (Grubba)  if test "$cflags_is_set" = "no"; then
613bc52000-08-28Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-pipe, pipe, CFLAGS) fi
5c8e891995-10-29Fredrik Hübinette (Hubbe) fi
2901d31998-08-05Fredrik Hübinette (Hubbe) LD='$(CC) $(CFLAGS)'
0809711998-02-27Marcus Comstedt 
de16081997-06-03Fredrik Hübinette (Hubbe) case "$pike_cv_sys_os" in SCO*)
77b2821997-10-04Henrik Grubbström (Grubba)  case "$CFLAGS" in
2a7fc81999-11-29Boyd Lynn Gerber  *-belf*) AC_SYS_COMPILER_FLAG(-belf,sco_belf_option,CFLAGS,[],[ case "$LDFLAGS" in *-belf*) ;; *) echo "Adding -belf option to ldflags." LDFLAGS="$LDFLAGS -belf" ;; esac ]) ;;
de16081997-06-03Fredrik Hübinette (Hubbe)  *)
2a7fc81999-11-29Boyd Lynn Gerber  AC_SYS_COMPILER_FLAG(-belf,belf,CFLAGS)
77b2821997-10-04Henrik Grubbström (Grubba)  ;; esac case "$LDFLAGS" in *-belf*) ;; *)
dda9061999-08-15Boyd Lynn Gerber  AC_SYS_COMPILER_FLAG(-belf,belf,LDFLAGS)
de16081997-06-03Fredrik Hübinette (Hubbe)  ;; esac ;;
2b49031998-03-05Henrik Grubbström (Grubba)  SunOS*) # gcc on SunOS 4 forgets to define this: echo "SunOS. Adding -D__USE_FIXED_PROTOTYPES__" CFLAGS="$CFLAGS -D__USE_FIXED_PROTOTYPES__" ;;
0809711998-02-27Marcus Comstedt  BSD/OS*)
1807bd2000-11-28Fredrik Hübinette (Hubbe)  case "`uname -r`" in 4.*) ;; *) LD="$BINDIR/smartlink shlicc";; esac
0809711998-02-27Marcus Comstedt  ;;
9ab4461998-11-06Honza Petrous  UnixWare*)
2a7fc81999-11-29Boyd Lynn Gerber  case "$CFLAGS" in *-Kalloca*) ;; *) if test "$GCC" != "yes"; then # We are using built-in inline function CFLAGS="$CFLAGS -Kalloca" CXX="$CXX -DNO_CPLUSPLUS_ALLOCA" fi ;; esac
9ab4461998-11-06Honza Petrous  ;;
de16081997-06-03Fredrik Hübinette (Hubbe) esac
dcad551996-08-03Fredrik Hübinette (Hubbe) 
0809711998-02-27Marcus Comstedt AC_SUBST(LD)
de16081997-06-03Fredrik Hübinette (Hubbe) #############################################################################
f6c3371998-09-29Henrik Grubbström (Grubba) 
b09bef2001-01-25Henrik Grubbström (Grubba) AC_ARG_WITH(patch_gcc, [ --with-patch-gcc attempt to patch the UA32 relocation bug.], [], [with_patch_gcc=no])
348fca1999-05-29Henrik Grubbström (Grubba) # Some sanity checks.
4313c92000-01-15Fredrik Hübinette (Hubbe) if test "$GCC" = "yes" -a "$pike_cv_sys_os" = "Solaris" && test "`uname -p`" = "sparc"; then
348fca1999-05-29Henrik Grubbström (Grubba)  # Solaris/sparc: # Check that gnu ld isn't used. # It's usually hidden in $prefix/sparc-sun-solaris2.?/bin/. # NOTE: M4 uses [] as quotes. gcc_ld_path="`$CC -v 2>&1 | sed -e '1,1s/[[^\/]]*\(\/.*\/\)[[^\/]]*$/\1/p;d' | sed -e '/lib\/gcc-lib\//s/lib\/gcc-lib\///;s/\/[[0-9]]*\.[[0-9]]*\.[[0-9]]*\/$/\/bin/'`" if test "x$gcc_ld_path" = "x"; then :; else
4d012e2000-01-19Wilhelm Köhler  if test -d "$gcc_ld_path/."; then if "$gcc_ld_path/ld" -v 2>&1 | grep -i GNU >/dev/null; then AC_MSG_WARN([GNU ld found on Solaris sparc system ($gcc_ld_path/ld).]) AC_MSG_WARN([This may cause the dynamic module support to fail.]) else :; fi
348fca1999-05-29Henrik Grubbström (Grubba)  else :; fi fi unset gcc_ld_path
9998151999-05-30Henrik Grubbström (Grubba)  # Watch out for gcc-2.8.1 on Solaris 7 sparc machines. It generates # assembler code which contains .uaword directives, which in turn # generates code with R_SPARC_UA32 relocations, which /usr/bin/ld.so # has buggy support for (it doesn't relocate the MSB). # Check that gcc doesn't generate uaword opcodes AC_MSG_CHECKING(if your gcc generates uaword opcodes) AC_CACHE_VAL(pike_cv_gcc_uaword, [ cat > conftest.c <<EOF char *foo[[]] = { "bar" }; EOF pike_compile='${CC-cc} -S $CFLAGS $CPPFLAGS conftest.c 1>&5' pike_cv_gcc_uaword=no if { (eval echo configure: \"$pike_compile\") >&5; (eval $pike_compile) 2>&5; }; then if grep ".uaword" conftest.s 2>&5 >/dev/null; then echo "configure: result contains .uaword:" >&5 cat conftest.s >&5 pike_cv_gcc_uaword=yes else :; fi else echo "configure: failed program was:" >&5 cat conftest.c >&5 fi rm -rf conftest.* ])
cfd7c91999-05-30Henrik Grubbström (Grubba)  AC_MSG_RESULT($pike_cv_gcc_uaword)
9998151999-05-30Henrik Grubbström (Grubba)  # Check if as generates R_SPARC_UA32 relocations from .uaword. if test "$pike_cv_gcc_uaword" = "yes"; then AC_MSG_CHECKING([if your as generates R_SPARC_UA32 relocations]) AC_CACHE_VAL(pike_cv_as_r_sparc_ua32, [ AC_TRY_ASSEMBLE([ .section ".rodata" .align 8 .STRING: .asciz "String" .section ".data" .align 4 .type string,#object .size string,4 string: .uaword .STRING ],[ if /usr/ccs/bin/elfdump -r conftest.o | grep -i R_SPARC_UA32 >/dev/null 2>&AC_FD_CC; then pike_cv_ac_r_sparc_ua32=yes else pike_cv_ac_r_sparc_ua32=no fi ],[ pike_cv_ac_r_sparc_ua32=no ]) ]) AC_MSG_RESULT($pike_cv_ac_r_sparc_ua32) if test "$pike_cv_ac_r_sparc_ua32" = "yes"; then
f594b71999-05-30Henrik Grubbström (Grubba)  AC_MSG_WARN([Your gcc/as combo may generate R_SPARC_UA32 relocations.]) AC_MSG_WARN([R_SPARC_UA32 relocations are unsupported in Solaris >= 2.3,]) AC_MSG_WARN([and have broken support in Solaris 7.])
b09bef2001-01-25Henrik Grubbström (Grubba)  if test "x$with_patch_gcc" = "xno"; then if test -d "/var/sadm/patch/107058-01/."; then AC_MSG_WARN([Back out patch 107058-01, or]) AC_MSG_WARN([recompile gcc with a modified config/sparc/sol2.h.]) else AC_MSG_WARN([Recompile gcc with a modified config/sparc/sol2.h.]) fi AC_MSG_WARN([]) AC_MSG_WARN([You may want to try binary patching gcc.]) AC_MSG_WARN([In that case rerun configure with --with-patch-gcc.]) AC_MSG_WARN([NOTE: Binary patching is highly experimental and risky,]) AC_MSG_WARN([ and may break your existing gcc even more.]) exit 1 fi AC_MSG_WARN([Will attempt to patch gcc.]) AC_MSG_CHECKING([for cc1]) if test "x$with_patch_gcc" = "xyes"; then cc1="`$CC -v 2>&1|sed -e '/\//s!^[[^/]]*\(/.*\)/specs$!\1/cc1!p' -ed`" else cc1="$with_patch_gcc"; fi if test -f "$cc1"; then AC_MSG_RESULT($cc1) else AC_MSG_RESULT(not found. Tried $cc1) exit 1 fi AC_MSG_CHECKING(if $cc1 looks unpatched) if /usr/bin/strings "$cc1" | grep uaword >/dev/null 2>&1; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no -- strange) exit 1 fi AC_MSG_CHECKING(if patch_cc1 compiles) link_cmd='${CC-cc} -o patch_cc1${ac_exeext} $CFLAGS -I. $CPPFLAGS $LDFLAGS $srcdir/patch_cc1.$ac_ext $LIBS 2>&5' if { (eval echo Compiling patch_cc1: \"$link_cmd\") 1>&5; (eval $link_cmd) 2>&5; } && "$BUILDDIR/patch_cc1" -v >/dev/null 2>&5; then AC_MSG_RESULT(yes) if test -f "$cc1.patched"; then
2c2ffa2001-01-26Henrik Grubbström (Grubba)  AC_MSG_ERROR([$cc1.patched already exists. Please move it out of the way.])
b09bef2001-01-25Henrik Grubbström (Grubba)  exit 1; fi if test -f "$cc1.orig"; then
2c2ffa2001-01-26Henrik Grubbström (Grubba)  AC_MSG_ERROR([$cc1.orig already exists. Please move it out of the way.])
b09bef2001-01-25Henrik Grubbström (Grubba)  exit 1; fi AC_MSG_CHECKING(if patch_cc1 works) if ./patch_cc1 "$cc1" 2>&5 >"$cc1.patched"; then
1d5a7b2001-01-25Henrik Grubbström (Grubba)  if test -f "$cc1.patched"; then :; else AC_MSG_RESULT(no - failed to create $cc1.patched) exit 1 fi
b09bef2001-01-25Henrik Grubbström (Grubba)  if chmod 755 "$cc1.patched"; then :; else
1d5a7b2001-01-25Henrik Grubbström (Grubba)  AC_MSG_RESULT(no - failed to set permission to 755 on $cc1.patched)
b09bef2001-01-25Henrik Grubbström (Grubba)  exit 1 fi
1d5a7b2001-01-25Henrik Grubbström (Grubba)  if test "`/bin/ls -l \"$cc1\"|awk '{print $5}'`" = "`/bin/ls -l \"$cc1.patched\"|awk '{print $5}'`"; then
b09bef2001-01-25Henrik Grubbström (Grubba)  if /usr/bin/strings "$cc1.patched" | grep uaword >/dev/null 2>&1; then rm -f "$cc1.patched" AC_MSG_RESULT(no -- patching failed) exit 1 fi
ad1d9f2001-01-25Henrik Grubbström (Grubba)  if "$cc1.patched" --help >/dev/null 2>&1; then :; else
b09bef2001-01-25Henrik Grubbström (Grubba)  AC_MSG_RESULT(no -- the patched binary does not seem to work) exit 1 fi AC_MSG_RESULT(yes) AC_MSG_WARN(Activating the patched cc1.) AC_MSG_WARN(NOTE: Entering critical section.) AC_MSG_WARN(If configure fails at this point a broken gcc my result.) if /usr/bin/mv -f "$cc1" "$cc1.orig"; then
1d5a7b2001-01-25Henrik Grubbström (Grubba)  AC_MSG_WARN(Moved $cc1 to $cc1.orig.)
b09bef2001-01-25Henrik Grubbström (Grubba)  if /usr/bin/mv -f "$cc1.patched" "$cc1"; then AC_MSG_WARN(Patching seems to have succeeded.) AC_MSG_WARN(Please rerun configure.) exit 1 fi AC_MSG_WARN(Moving the patched cc1 into place failed.) AC_MSG_WARN(Will try to restore the old cc1.) if /usr/bin/mv -f "$cc1.orig" "$cc1"; then AC_MSG_WARN(The old cc1 has been restored.) exit 1 fi
2c2ffa2001-01-26Henrik Grubbström (Grubba)  AC_MSG_ERROR([Restoring the old cc1 failed. Your installation of gcc is most likely broken now. Sorry, you will have to restore it yourself. Please move $cc1.orig to $cc1.])
b09bef2001-01-25Henrik Grubbström (Grubba)  exit 1 else
2c2ffa2001-01-26Henrik Grubbström (Grubba)  AC_MSG_ERROR([Failed to move the old cc1 to safety. Please replace $cc1 with $cc1.patched by hand.])
b09bef2001-01-25Henrik Grubbström (Grubba)  exit 1 fi else rm -f "$cc1.patched"
2c2ffa2001-01-26Henrik Grubbström (Grubba)  AC_MSG_ERROR([The size has changed. You need to patch cc1 by hand.])
b09bef2001-01-25Henrik Grubbström (Grubba)  exit 1 fi else AC_MSG_RESULT(no -- you need to patch cc1 by hand) exit 1 fi
193c741999-05-31Henrik Grubbström (Grubba)  else
b09bef2001-01-25Henrik Grubbström (Grubba)  AC_MSG_RESULT(no -- you need to patch cc1 by hand) exit 1
193c741999-05-31Henrik Grubbström (Grubba)  fi
9998151999-05-30Henrik Grubbström (Grubba)  else :; fi else :; fi
348fca1999-05-29Henrik Grubbström (Grubba) else :; fi #############################################################################
f6c3371998-09-29Henrik Grubbström (Grubba) 
cf39902001-01-19Henrik Grubbström (Grubba) AC_ARG_WITH(root, [ --with-root=path specify a cross-compilation root-directory],[ case "$with_root" in /) with_root="" ;; /*) ;; no) with_root="" ;; *) AC_MSG_WARN([Root path $with_root is not absolute. Ignored.]) with_root="" ;; esac ],[with_root=""])
1f21332000-07-28Fredrik Hübinette (Hubbe) AC_ARG_WITH(dynamic_modules, [ --without-dynamic-modules link modules statically],[],[])
8334e31999-01-29Fredrik Hübinette (Hubbe) AC_ARG_WITH(static_linking, [ --with-static-linking link statically, if possible],[with_static_linking=yes],[])
f6c3371998-09-29Henrik Grubbström (Grubba) AC_ARG_WITH(include-path,[ --with-include-path A list of paths to search for include files.]) AC_ARG_WITH(lib-path, [ --with-lib-path A list of paths to search for libraries.])
ad7f211999-12-05Mirar (Pontus Hagland)  AC_ARG_WITH(double-precision, [ --with-double-precision use double precision floats ], [ AC_DEFINE(WITH_DOUBLE_PRECISION_SVALUE) ] ) AC_ARG_WITH(long-double-precision, [ --with-long-double-precision use long double precision floats ], [ AC_DEFINE(WITH_LONG_DOUBLE_PRECISION_SVALUE) ] )
f6c3371998-09-29Henrik Grubbström (Grubba) AC_ARG_WITH(gdbm, [ --without-gdbm no GNU database manager support ])
81e6432000-01-03Martin Stjernholm AC_ARG_WITH(gmp, [ --without-gmp no support for Gmp bignums])
4b8d502000-12-19Henrik Grubbström (Grubba) AC_ARG_WITH(dmalloc, [ --with-dmalloc enable memory-leak tests],[with_debug="yes" AC_DEFINE(DEBUG_MALLOC,10)],[])
5f951c2001-01-30Fredrik Hübinette (Hubbe) AC_ARG_WITH(dmalloc-trace,[ --with-dmalloc-trace enable tracepoints],[with_dmalloc_trace="yes" AC_DEFINE(DMALLOC_TRACE,10)],[])
f6c3371998-09-29Henrik Grubbström (Grubba) AC_ARG_WITH(debug, [ --without-debug disable run debugging],[],[with_debug=])
88b2682000-12-17Henrik Grubbström (Grubba) AC_ARG_WITH(rtldebug, [ --with-rtldebug enable run time self tests],[],[with_rtldebug=])
aa38a81999-11-29Henrik Grubbström (Grubba) AC_ARG_WITH(cdebug, [ --without-cdebug disable -g],[],[ case "$pike_cv_sys_os:$GCC" in Solaris:no) # Solaris/cc has problems with combining optimizations and debuginfo. AC_MSG_WARN([Defaulting to --without-cdebug since the OS is Solaris,
81e6432000-01-03Martin Stjernholm and gcc is not being used.])
aa38a81999-11-29Henrik Grubbström (Grubba)  with_cdebug=no ;; *) with_cdebug= ;; esac ]) AC_ARG_WITH(copt, [ --without-copt disable -O2],[],[with_copt=])
2f04112000-02-03Fredrik Hübinette (Hubbe) AC_ARG_WITH(threads, [ --without-threads no threads support],[],[ case "x$pike_cv_sys_os" in xFreeBSD*)
0b620a2001-01-21Henrik Grubbström (Grubba)  if test "`uname -r|sed -e 's/\([[0-9]]*\).*/\1/'`" -lt 4; then
2f04112000-02-03Fredrik Hübinette (Hubbe)  AC_MSG_WARN([ FreeBSD <= 3.x detected, disabling threads. Use --with-threads to force threads support. ]) with_threads=no fi ;; esac
cd57482000-02-03Henrik Grubbström (Grubba)  if test "x${with_threads-}" = x; then
2f04112000-02-03Fredrik Hübinette (Hubbe)  with_threads=yes fi ])
f6c3371998-09-29Henrik Grubbström (Grubba) AC_ARG_WITH(zlib, [ --without-zlib no gz compression support],[],[with_zlib=yes]) AC_ARG_WITH(ssleay, [ --without-ssleay no support for the secure socket protocol],[],[with_ssleay=yes]) AC_ARG_WITH(mysql, [ --without-mysql no support for the Mysql database],[],[with_mysql=yes])
fda0de1999-10-08Fredrik Noring AC_ARG_WITH(gif-rle, [ --with-gif-rle use kind-of-rle packing instead of lzw],[],[])
f248082000-05-02Henrik Grubbström (Grubba) AC_ARG_WITH(rsaref, [ --with-rsaref[=path] Support for RSAREF],[],[])
bf61b91999-02-06Henrik Grubbström (Grubba) AC_ARG_WITH(checker, [ --with-checker add extra memory checking overhead (Purify)])
f6c3371998-09-29Henrik Grubbström (Grubba) AC_ARG_WITH(profiling, [ --with-profiling add code used to profile pike code ],[AC_DEFINE(PROFILING)],[])
554dfd2000-05-01Fredrik Hübinette (Hubbe) AC_ARG_WITH(pg, [ --with-pg Use the gcc -pg option],
91006b2000-03-21Fredrik Hübinette (Hubbe) [
554dfd2000-05-01Fredrik Hübinette (Hubbe)  if test "x$with_pg" = xyes; then
91006b2000-03-21Fredrik Hübinette (Hubbe)  PROFIL=-pg else PROFIL= fi ], [ PROFIL= ])
f6c3371998-09-29Henrik Grubbström (Grubba) AC_ARG_WITH(poll, [ --with-poll use poll instead of select],[],[
78a69c1998-09-29Henrik Grubbström (Grubba)  # Neither --with-poll nor --without-poll was specified case "$pike_cv_sys_os" in
d6dc8b2001-01-30Jonas Wallden  Solaris|HP-UX|OSF1|IRIX|Linux|Darwin)
d7bcfd1998-09-29Henrik Grubbström (Grubba)  AC_MSG_WARN([Defaulting to --with-poll since the OS is $pike_cv_sys_os.]) with_poll=yes
f6c3371998-09-29Henrik Grubbström (Grubba)  ;;
d0be141999-05-27Fredrik Hübinette (Hubbe)  AIX)
085ac61999-05-27Henrik Grubbström (Grubba)  # poll(2) is broken on AIX 4.1 and earlier.
d0be141999-05-27Fredrik Hübinette (Hubbe)  if test "`uname -r`" -ge 2 -a "`uname -v`" -ge 4 ; then with_poll=yes
085ac61999-05-27Henrik Grubbström (Grubba)  else if test "`uname -v`" -gt 4 ; then
d5614e1999-05-27Henrik Grubbström (Grubba)  with_poll=yes else :; fi fi
085ac61999-05-27Henrik Grubbström (Grubba)  if test "$with_poll" = "yes" ; then
54108f2000-03-26Henrik Grubbström (Grubba)  AC_MSG_WARN([Defaulting to --with-poll since the OS is AIX 4.2 or later.])
085ac61999-05-27Henrik Grubbström (Grubba)  else :; fi
d0be141999-05-27Fredrik Hübinette (Hubbe)  ;;
f6c3371998-09-29Henrik Grubbström (Grubba)  esac ]) AC_ARG_WITH(max-fd, [ --with-max-fd=X set how many filedescriptors can be used at once],[pike_cv_max_open_fd=$withval],[])
653f322000-06-28Fredrik Hübinette (Hubbe) AC_ARG_WITH(oob, [ --without-oob disable out-of-band data handling],[],[with_oob=yes])
72f0cb2000-03-06Martin Stjernholm AC_ARG_WITH(thread-trace,[ --without-thread-trace disable individual tracing of threads],[],[with_thread_trace=yes])
f6c3371998-09-29Henrik Grubbström (Grubba) AC_ARG_WITH(compiler-trace,[ --with-compiler-trace enable tracing of the compiler],[AC_DEFINE(YYDEBUG)],[])
fda0de1999-10-08Fredrik Noring AC_ARG_WITH(security, [ --with-security enable internal pike security system],[AC_DEFINE(PIKE_SECURITY)],[])
81e6432000-01-03Martin Stjernholm AC_ARG_WITH(bignums, [ --without-bignums disable internal conversion to bignums],[],[with_bignums=yes])
8a0a592000-04-27Fredrik Hübinette (Hubbe) AC_ARG_WITH(shared-nodes,[ --without-shared-nodes disable the SHARED_NODES mode of the optimizer],[],[with_shared_nodes=yes])
011ad31999-10-22Fredrik Hübinette (Hubbe) 
02abea2000-03-31Fredrik Hübinette (Hubbe) # This makes configure default to --without-Perl # Remove this when the Perl module stops crashing and hanging. -Hubbe
381c482000-04-19Henrik Grubbström (Grubba) AC_ARG_WITH(perl, [ --with-perl enable the embedded Perl module (EXPERIMENTAL)],[], [ac_configure_args="$ac_configure_args --without-perl" with_perl="no" ]
02abea2000-03-31Fredrik Hübinette (Hubbe) )
653f322000-06-28Fredrik Hübinette (Hubbe) if test "x$with_oob" = xyes; then AC_DEFINE(WITH_OOB) fi
011ad31999-10-22Fredrik Hübinette (Hubbe) if test "x$with_bignums" = xyes; then AC_DEFINE(AUTO_BIGNUM)
4900161999-10-23Fredrik Noring  if test "x$with_gmp" = xno; then
5435a72000-05-04Fredrik Hübinette (Hubbe)  AC_MSG_ERROR([Cannot compile --with-bignums without the GMP library It is highly recommended that you install a working GMP library on your system as that will add features to Pike required by many applications. (Such as Roxen) However, if you know that you do not need GMP, you may re-run configure with the option --without-bignums instead.
011ad31999-10-22Fredrik Hübinette (Hubbe) ]) else :; fi else :; fi
f6c3371998-09-29Henrik Grubbström (Grubba) 
a4e8132000-06-17Henrik Grubbström (Grubba) if test "x$with_shared_nodes" != xno; then
de28961999-11-13Henrik Grubbström (Grubba)  AC_MSG_WARN([Enabling the SHARED_NODES mode of the optimizer.]) AC_MSG_WARN([Note that this is EXPERIMENTAL.]) AC_DEFINE(SHARED_NODES) else :; fi
f6c3371998-09-29Henrik Grubbström (Grubba) if test "x$with_poll" = "xyes"; then AC_DEFINE(HAVE_AND_USE_POLL) else :; fi
bf61b91999-02-06Henrik Grubbström (Grubba) if test "x$with_checker" = "xyes"; then AC_DEFINE(__CHECKER__) else :; fi
72f0cb2000-03-06Martin Stjernholm if test "x$with_thread_trace" = "xyes"; then AC_DEFINE(THREAD_TRACE) else :; fi
4b8d502000-12-19Henrik Grubbström (Grubba) 
f6c3371998-09-29Henrik Grubbström (Grubba) # # Allow --with(out)-debug to toggle both cdebug and rtldebug, but # let --with(out)-{c,rtl}debug take precedence. # if test "x$with_cdebug" = x ; then with_cdebug="$with_debug" fi if test "x$with_rtldebug" = x ; then with_rtldebug="$with_debug" fi
4b8d502000-12-19Henrik Grubbström (Grubba) # # --with-dmalloc requires --with-rtldebug # if test "x$with_dmalloc" = "x"; then :; else if test "x$with_rtldebug" = "xyes"; then :; else AC_MSG_WARN([Debug malloc requires rtldebug. Enabling rtldebug.])
32ead52000-12-19Henrik Grubbström (Grubba)  with_rtldebug=yes
4b8d502000-12-19Henrik Grubbström (Grubba)  fi fi
f6c3371998-09-29Henrik Grubbström (Grubba) # # Defaults for cdebug and rtldebug here: # if test "x$with_cdebug" = x ; then with_cdebug=yes fi if test "x$with_rtldebug" = x ; then
88b2682000-12-17Henrik Grubbström (Grubba)  with_rtldebug=no # with_rtldebug=yes
f6c3371998-09-29Henrik Grubbström (Grubba) fi if test "x$with_rtldebug" = xyes ; then
71f3a21998-11-22Fredrik Hübinette (Hubbe)  AC_DEFINE(PIKE_DEBUG)
f6c3371998-09-29Henrik Grubbström (Grubba) fi #############################################################################
48ae531996-10-09Fredrik Hübinette (Hubbe) 
8cf37d1997-01-27Per Hedbor  WARN="" OPTIMIZE=""
dc83082000-09-15Henrik Grubbström (Grubba) if test "$cflags_is_set" = "no"; then
2901d31998-08-05Fredrik Hübinette (Hubbe)  if test "x$with_cdebug" = "xno" ; then CFLAGS=`echo " $CFLAGS " | sed -e 's@ -g @ @g'` else :
f41e0d1999-10-19Henrik Grubbström (Grubba)  fi
2901d31998-08-05Fredrik Hübinette (Hubbe) 
8cf37d1997-01-27Per Hedbor  if test "x${GCC-}" = xyes ; then
2e96cd2000-08-12Per Hedbor  # Do not use -Wall, since that produces a lot of warnings that are not
3d6e5c2000-08-17Henrik Grubbström (Grubba)  # really interresting (such as the warning for if( ... ) ... if(
2e96cd2000-08-12Per Hedbor  # ... ) .... else
5591962000-12-05Marcus Comstedt  AC_SYS_COMPILER_FLAG(-W,W,WARN) AC_SYS_COMPILER_FLAG(-Wall,Wall,WARN) AC_SYS_COMPILER_FLAG(-Wno-unused,Wno_unused,WARN) AC_SYS_COMPILER_FLAG(-Wcomment,Wcomment,WARN) AC_SYS_COMPILER_FLAG(-Wformat,Wformat,WARN) AC_SYS_COMPILER_FLAG(-Wimplicit-function-declaration,Wimplicit_function_declaration,WARN) AC_SYS_COMPILER_FLAG(-Wmultichar,Wmultichar,WARN) AC_SYS_COMPILER_FLAG(-Wswitch,Wswitch,WARN) AC_SYS_COMPILER_FLAG(-Wuninitialized,Wuninitialized,WARN) AC_SYS_COMPILER_FLAG(-Wpointer-arith,Wpointer_arith,WARN) AC_SYS_COMPILER_FLAG(-Wchar-subscripts,Wchar_subscripts,WARN) AC_SYS_COMPILER_FLAG(-Wno-long-long,Wno_long_long,WARN)
9c5a5e1997-12-20Henrik Grubbström (Grubba) 
34251a1999-02-05Martin Stjernholm  if test "x${with_static_linking-}" = "xyes" ; then
8334e31999-01-29Fredrik Hübinette (Hubbe)  AC_SYS_COMPILER_FLAG(-static,link_static,CFLAGS) else : fi
989adb1998-12-20Fredrik Hübinette (Hubbe)  ## ## -fomit-frame-pointer does not work with egcs 1.1.1 ## /Hubbe 1998-12-20 ## #if test "x$with_cdebug" = "xno" ; then # AC_SYS_COMPILER_FLAG(-fomit-frame-pointer,fomit_frame_pointer,OPTIMIZE) #else # : #fi
9c5a5e1997-12-20Henrik Grubbström (Grubba) 
8cf37d1997-01-27Per Hedbor ### Optimize for different SUN machines. If there is no working 'uname' ### no extra optimization will be done, but nothing should break either.
50adc31998-04-17Fredrik Hübinette (Hubbe)  case "`uname -m 2>/dev/null`" in sun4c)
e65d8d1998-07-17Henrik Grubbström (Grubba)  # The -sparclite option seems to generate assembler that /bin/as doesn't # understand. /grubba 1998-07-17 # AC_SYS_COMPILER_FLAG(-msparclite,sparclite,OPTIMIZE)
50adc31998-04-17Fredrik Hübinette (Hubbe)  ;; sun4m) AC_SYS_COMPILER_FLAG(-mv8,microsparc,OPTIMIZE) ;; sun4d) AC_SYS_COMPILER_FLAG(-msupersparc,supersparc,OPTIMIZE) ;; sun4u)
e65d8d1998-07-17Henrik Grubbström (Grubba)  # FIXME: Optimize for V9
50adc31998-04-17Fredrik Hübinette (Hubbe)  AC_SYS_COMPILER_FLAG(-msupersparc,ultrasparc,OPTIMIZE) ;; i586) AC_SYS_COMPILER_FLAG(-mpentium,pentium,OPTIMIZE) ;; i686) AC_SYS_COMPILER_FLAG(-mpentiumpro,pentiumpro,OPTIMIZE,[ AC_SYS_COMPILER_FLAG(-mpentium,pentium,OPTIMIZE) ]) ;;
2e96cd2000-08-12Per Hedbor  i86pc) case "`isalist 2>/dev/null`" in *pentium_pro*) AC_SYS_COMPILER_FLAG(-mcpu=pentiumpro,pentiumpro,OPTIMIZE,[ AC_SYS_COMPILER_FLAG(-mcpu=pentium,pentium,OPTIMIZE) ]) ;; *pentium*) AC_SYS_COMPILER_FLAG(-mcpu=pentium,pentium,OPTIMIZE,[ AC_SYS_COMPILER_FLAG(-m486,486,OPTIMIZE) ]) ;; esac ;;
50adc31998-04-17Fredrik Hübinette (Hubbe)  esac
b7c2ef1999-08-08Henrik Grubbström (Grubba)  # AIX DO_IF_OS(AIX, [ # Tell the linker to generate a large toc if needed AC_SYS_COMPILER_FLAG(-bbigtoc,bbigtoc,LDFLAGS)
cf197c1999-08-27Fredrik Hübinette (Hubbe)  AC_SYS_COMPILER_FLAG([-Wl,-bbigtoc],Wlbbigtoc,LDFLAGS)
05cd672000-09-28Henrik Grubbström (Grubba)  ]) DO_IF_OS(Darwin, [ # aka MacOS X. # Check for useful frameworks.
12c0132000-10-01Henrik Grubbström (Grubba)  # Disabled, since it doesn't work as advertized... # AC_SYS_COMPILER_FLAG(-framework Zip, framework_Zip, CPPFLAGS)
1bdb762000-10-01Henrik Grubbström (Grubba)  :
b7c2ef1999-08-08Henrik Grubbström (Grubba)  ])
5866e01999-04-25Henrik Grubbström (Grubba)  else if test "x${TCC-}" = xyes ; then # Yikes! We're using the TenDRA compiler! # Make sure we can use the system headerfiles...
76e3a72000-07-11Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-Ysystem, ysystem, CPPFLAGS)
5866e01999-04-25Henrik Grubbström (Grubba)  # Use lenient ANSI compliance...
5fdd8c2000-08-02Henrik Grubbström (Grubba)  #AC_SYS_COMPILER_FLAG(-Xa, xa, CFLAGS)
5866e01999-04-25Henrik Grubbström (Grubba) 
6077101999-05-15Henrik Grubbström (Grubba)  # Find out where libtdf.a is hidden. AC_MSG_CHECKING(for machine dependant library directory) AC_CACHE_VAL(pike_cv_tcc_lib_path, [
4d5d021999-05-15Henrik Grubbström (Grubba)  pike_cv_tcc_lib_path="`${CC-cc} -dry conftest.c -i 2>&1 | sed -e '/tdfc/s/bin\/tdfc.*/lib\/sys/p' -ed| head -1`"
6077101999-05-15Henrik Grubbström (Grubba)  if test -d "$pike_cv_tcc_lib_path/." ; then :; else # Failed. pike_cv_tcc_lib_path="no" fi ]) AC_MSG_RESULT($pike_cv_tcc_lib_path) if test "$pike_cv_tcc_lib_path" = "no" ; then :; else LDFLAGS="$LDFLAGS -L$pike_cv_tcc_lib_path" # This library is needed for 64bit support on 32bit machines/OS's. AC_CHECK_LIB(tdf, __TDFUnot) fi
8cf37d1997-01-27Per Hedbor  else
5866e01999-04-25Henrik Grubbström (Grubba)  # Assume system compiler "cc".
8334e31999-01-29Fredrik Hübinette (Hubbe) 
34251a1999-02-05Martin Stjernholm  if test "x${with_static_linking-}" = "xyes" ; then
8334e31999-01-29Fredrik Hübinette (Hubbe)  DO_IF_OS(AIX, [
5866e01999-04-25Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG([-Wl,-bstatic],wl_link_static,CFLAGS)
8334e31999-01-29Fredrik Hübinette (Hubbe)  LD_FALLBACK_FLAGS="${LD_FALLBACK_FLAGS} -bstatic" ]) DO_IF_OS(OSF1, [ AC_SYS_COMPILER_FLAG(-non_shared,non_shared,CFLAGS) LD_FALLBACK_FLAGS="${LD_FALLBACK_FLAGS} -non_shared" ]) DO_IF_OS(IRIX, [ AC_SYS_COMPILER_FLAG(-non_shared,non_shared,CFLAGS) LD_FALLBACK_FLAGS="${LD_FALLBACK_FLAGS} -B static" ]) # how do you link statically on HP-UX ? else : fi
8cf37d1997-01-27Per Hedbor ### Non-gcc thingies. This should probably be enhanced...
fde5a61997-09-05Henrik Grubbström (Grubba) 
d93ff51997-11-02Henrik Grubbström (Grubba)  # Solaris
8334e31999-01-29Fredrik Hübinette (Hubbe)  DO_IF_OS(Solaris, [ AC_SYS_COMPILER_FLAG(-fast,fast,OPTIMIZE) AC_SYS_COMPILER_FLAG(-xdepend,xdepend,OPTIMIZE) AC_SYS_COMPILER_FLAG(-xs,xs,CFLAGS) # Causes __STDC__ to be 1 which causes several headerfiles to behave # differently. # AC_SYS_OS_COMPILER_FLAG(-Xc,Xc,WARN) ])
d93ff51997-11-02Henrik Grubbström (Grubba) 
de386f1998-08-06Henrik Grubbström (Grubba)  # AIX
8334e31999-01-29Fredrik Hübinette (Hubbe)  DO_IF_OS(AIX, [ # This one is needed to get the compiler to fail on errors, # which is needed for several configure-scripts. AC_SYS_COMPILER_FLAG(-qhalt=e,qhalt_e,CFLAGS) AC_SYS_COMPILER_FLAG(-qro,qro,OPTIMIZE)
dc83082000-09-15Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-qfold,qfold,OPTIMIZE) AC_SYS_COMPILER_FLAG(-qwarn64,qwarn64,WARN)
e7c34a2000-09-17Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-qflag=w:w,qflag_w_w,WARN)
dc83082000-09-15Henrik Grubbström (Grubba)  AC_DEFUN(AC_SYS_COMPILER_FLAG_QINFO, [ AC_SYS_COMPILER_FLAG(-qinfo=$1,qinfo_$1,WARN) ]) AC_SYS_COMPILER_FLAG_QINFO(cmp) AC_SYS_COMPILER_FLAG_QINFO(cnd) AC_SYS_COMPILER_FLAG_QINFO(cns) AC_SYS_COMPILER_FLAG_QINFO(cnv) AC_SYS_COMPILER_FLAG_QINFO(dcl) AC_SYS_COMPILER_FLAG_QINFO(eff) AC_SYS_COMPILER_FLAG_QINFO(enu) AC_SYS_COMPILER_FLAG_QINFO(ext) AC_SYS_COMPILER_FLAG_QINFO(gen) AC_SYS_COMPILER_FLAG_QINFO(gnr) AC_SYS_COMPILER_FLAG_QINFO(got) AC_SYS_COMPILER_FLAG_QINFO(ini) AC_SYS_COMPILER_FLAG_QINFO(inl) AC_SYS_COMPILER_FLAG_QINFO(lan) AC_SYS_COMPILER_FLAG_QINFO(obs) AC_SYS_COMPILER_FLAG_QINFO(ord) AC_SYS_COMPILER_FLAG_QINFO(par) AC_SYS_COMPILER_FLAG_QINFO(por)
e7c34a2000-09-17Henrik Grubbström (Grubba)  # ppc disabled since it complains about the system header files. # AC_SYS_COMPILER_FLAG_QINFO(ppc) # ppt disabled since tracing the preprocessor isn't interresting. # AC_SYS_COMPILER_FLAG_QINFO(ppt)
dc83082000-09-15Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG_QINFO(pro) AC_SYS_COMPILER_FLAG_QINFO(rea) AC_SYS_COMPILER_FLAG_QINFO(ret)
e7c34a2000-09-17Henrik Grubbström (Grubba)  # trd disabled, since it adds extra errors (in particular 1506-419). # AC_SYS_COMPILER_FLAG_QINFO(trd)
dc83082000-09-15Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG_QINFO(tru) AC_SYS_COMPILER_FLAG_QINFO(uni) AC_SYS_COMPILER_FLAG_QINFO(use) # AC_SYS_COMPILER_FLAG(-qalias=addr,qalias_addr,OPTIMIZE) # AC_SYS_COMPILER_FLAG(-qlibansi,qlibansi,OPTIMIZE)
b7c2ef1999-08-08Henrik Grubbström (Grubba)  # Tell the linker to generate a large toc if needed AC_SYS_COMPILER_FLAG(-bbigtoc,bbigtoc,LDFLAGS)
8334e31999-01-29Fredrik Hübinette (Hubbe)  ])
de386f1998-08-06Henrik Grubbström (Grubba) 
fde5a61997-09-05Henrik Grubbström (Grubba)  # HP-UX
8334e31999-01-29Fredrik Hübinette (Hubbe)  DO_IF_OS(HP-UX, [ AC_SYS_COMPILER_FLAG(-D__STDC_EXT__,stdc_ext,CFLAGS)
6df22d1999-08-27Fredrik Hübinette (Hubbe)  AC_SYS_COMPILER_FLAG([-Wp,-H50000],cpp_buffer_size,CFLAGS)
8334e31999-01-29Fredrik Hübinette (Hubbe)  AC_SYS_COMPILER_FLAG(+ESlit,plus_ESlit,OPTIMIZE) AC_SYS_COMPILER_FLAG(+Odataprefetch,plus_Odataprefetch,OPTIMIZE) AC_SYS_COMPILER_FLAG(+Ofailsafe,plus_Ofailsafe,OPTIMIZE) AC_SYS_COMPILER_FLAG(+O3,plus_O3,OPTIMIZE) # Ignore the following warnings if you enable +w1 # 414 Optimization reduced to +O2 for compatibility with Debug. # 530 Casting from loose to strict alignment # 558 Empty declaration. # AC_SYS_COMPILER_FLAG(+w1,plus_w1,WARN) ])
fde5a61997-09-05Henrik Grubbström (Grubba)  # OSF/1
8334e31999-01-29Fredrik Hübinette (Hubbe)  DO_IF_OS(OSF1, [ AC_SYS_COMPILER_FLAG(-fast,fast,OPTIMIZE) # The need for -ieee is not detected properly by the FPE tests below. # AC_SYS_COMPILER_FLAG(-ieee,ieee,CFLAGS) AC_SYS_COMPILER_FLAG(-readonly_strings,readonly_strings,OPTIMIZE) AC_SYS_COMPILER_FLAG(-assume trusted_short_alignment, assume_trusted_short_alignment,OPTIMIZE) AC_SYS_COMPILER_FLAG(-assume aligned_objects, assume_aligned_objects,OPTIMIZE) AC_SYS_COMPILER_FLAG(-no_misalign,no_misalign,OPTIMIZE) if test "x$with_cdebug" = "xyes" ; then # FIXME: # Maybe should remove the -g flag if this succeeds. AC_SYS_COMPILER_FLAG(-g3,g3,OPTIMIZE) AC_SYS_COMPILER_FLAG(-trapuv,trapuv,WARN) fi AC_SYS_COMPILER_FLAG(-host,host,OPTIMIZE)
633b031998-07-16Fredrik Hübinette (Hubbe) 
8334e31999-01-29Fredrik Hübinette (Hubbe)  # Flags that cause errors or change compiler behaviour # must go in CFLAGS, they can not go in WARN # /Hubbe AC_SYS_COMPILER_FLAG(-std1,std1,CFLAGS) AC_SYS_COMPILER_FLAG(-warnprotos,warnprotos,WARN) ])
a897001997-04-10Fredrik Hübinette (Hubbe) 
fde5a61997-09-05Henrik Grubbström (Grubba)  # IRIX
8334e31999-01-29Fredrik Hübinette (Hubbe)  DO_IF_OS(IRIX, [ # sopt disabled since it takes too long time on interpret.c (>45min on an O²) # AC_SYS_COMPILER_FLAG(-sopt,sopt,OPTIMIZE) # -n32 moved to smartlink so it will affekt cc as well as linker # this way the user can override it by setting LDFLAGS and/or CFLAGS # AC_SYS_COMPILER_FLAG(-n32,n32,CFLAGS) AC_SYS_COMPILER_FLAG(-fullwarn,fullwarn,WARN)
c4c6c72000-03-27Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-woff 1209,woff_1209,WARN)
8334e31999-01-29Fredrik Hübinette (Hubbe)  if test x$with_cdebug = xyes ; then AC_SYS_COMPILER_FLAG(-g3,g3,OPTIMIZE) fi if test x$with_rtldebug = xyes ; then AC_SYS_COMPILER_FLAG(-trapuw,trapuw,WARN) fi ])
fde5a61997-09-05Henrik Grubbström (Grubba) 
a747c42000-05-01Henrik Grubbström (Grubba)  # Windows NT DO_IF_OS(Windows_NT, [ # FIXME: The test below probably doesn't work.
69bae82000-08-20Henrik Grubbström (Grubba)  if echo "x$CC" | grep "rntecl" >/dev/null 2>&1; then
a747c42000-05-01Henrik Grubbström (Grubba)  # Some options used by ecl (Intel's IA64 compiler). # We want threads, and link libc statically. AC_SYS_COMPILER_FLAG(-MT,MT,LDFLAGS) # Interprocedural optimizations.
2e8e8f2000-08-21Henrik Grubbström (Grubba)  # For some reason this seems to cause the error: # dynamic_buffer.obj : error LNK2001: unresolved external symbol "[Entry] ?1memcpy" (.?1memcpy) # AC_SYS_COMPILER_FLAG(-Qip,Qip,OPTIMIZE)
a747c42000-05-01Henrik Grubbström (Grubba)  # More warnings.
69bae82000-08-20Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-W3,W3,WARN)
a747c42000-05-01Henrik Grubbström (Grubba) 
6a20892000-05-01Henrik Grubbström (Grubba)  if test x$with_rtldebug = xyes ; then
a747c42000-05-01Henrik Grubbström (Grubba)  # Initialize auto variables to 0xcc. # (Only if optimizations are turned off with -Od). AC_SYS_COMPILER_FLAG(-GZ,GZ,WARN) fi else :; fi
1f21332000-07-28Fredrik Hübinette (Hubbe) 
9b15e02000-12-22Fredrik Hübinette (Hubbe)  # Only do this explicitly for now
82d9092000-12-14Martin Nilsson  if test x$with_dynamic_modules = xyes ; then
1807bd2000-11-28Fredrik Hübinette (Hubbe)  AC_MSG_WARN([Enabling dynamic modules for Win32])
9b15e02000-12-22Fredrik Hübinette (Hubbe) # EXTRA_MODULE_REQUIREMENTS="${EXTRA_MODULE_REQUIREMENTS} import_functions.h" EXTRA_OBJS="${EXTRA_OBJS} dlopen.o"
1807bd2000-11-28Fredrik Hübinette (Hubbe)  pike_cv_sys_dynamic_loading=yes with_dynamic_modules=yes
9b15e02000-12-22Fredrik Hübinette (Hubbe)  AC_DEFINE(USE_MY_WIN32_DLOPEN)
1807bd2000-11-28Fredrik Hübinette (Hubbe)  fi
a747c42000-05-01Henrik Grubbström (Grubba)  ])
a897001997-04-10Fredrik Hübinette (Hubbe) dnl
a9d05c1997-04-10Fredrik Hübinette (Hubbe) dnl This does not work with Digital UNIX cc/ld (cc thinks it is ok, ld does not)
a897001997-04-10Fredrik Hübinette (Hubbe) dnl
e8ab9c1997-11-03Henrik Grubbström (Grubba) dnl AC_SYS_COMPILER_FLAG(-native,native,OPTIMIZE)
a9d05c1997-04-10Fredrik Hübinette (Hubbe) dnl
300af11997-04-15Fredrik Hübinette (Hubbe) 
a9d05c1997-04-10Fredrik Hübinette (Hubbe) dnl ### Ok. This is for apcc...
300af11997-04-15Fredrik Hübinette (Hubbe) case "$CC" in *apcc)
e8ab9c1997-11-03Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-XO=5,apcc_opt,OPTIMIZE) AC_SYS_COMPILER_FLAG(-Xcallmod=2,apcc_opt_2,OPTIMIZE)
300af11997-04-15Fredrik Hübinette (Hubbe)  ;; esac
8cf37d1997-01-27Per Hedbor 
b582fe1997-11-23Per Hedbor # Old cc for solaris. # AC_SYS_CPU_COMPILER_FLAG(sun4m,-Xpipe=micro,microsparc,OPTIMIZE) # AC_SYS_CPU_COMPILER_FLAG(sun4d,-Xpipe=super,supersparc,OPTIMIZE) # AC_SYS_CPU_COMPILER_FLAG(sun4u,-Xpipe=super,ultrasparc,OPTIMIZE)
8cf37d1997-01-27Per Hedbor 
fde5a61997-09-05Henrik Grubbström (Grubba)  case "${CFLAGS-} $OPTIMIZE" in
2a7fc81999-11-29Boyd Lynn Gerber  *-O*) ;; *+O*) ;; *-fast*) ;; *) case "$pike_cv_sys_os:$GCC" in UnixWare*:no) OPTIMIZE="" ;; *) AC_SYS_COMPILER_FLAG(-O2,O2,OPTIMIZE) if test "x$pike_cv_option_O2" != "xyes"; then AC_SYS_COMPILER_FLAG(-O,O,OPTIMIZE) fi ;; esac ;;
8cf37d1997-01-27Per Hedbor  esac
9925681996-10-11Fredrik Hübinette (Hubbe)  fi
7e663c1999-04-25Henrik Grubbström (Grubba)  fi
5267b71995-08-09Fredrik Hübinette (Hubbe) fi
5c8e891995-10-29Fredrik Hübinette (Hubbe) 
2565f41997-02-26Fredrik Hübinette (Hubbe) if test ! -d modules/. ; then
cb728c1997-01-12Henrik Grubbström (Grubba)  mkdir modules fi
c0911b1997-10-03Henrik Grubbström (Grubba)  ############################################################################# ## Search for some popular places where libraries may be hidden. #############################################################################
08af092000-04-12Marcus Comstedt if test x$"pike_cv_sys_os" != xWindows_NT ; then
a12f271998-01-10Fredrik Hübinette (Hubbe) 
d93ff51997-11-02Henrik Grubbström (Grubba) echo Searching for include-file directories...
8a947f1998-09-01Fredrik Hübinette (Hubbe) 
c0911b1997-10-03Henrik Grubbström (Grubba) if test $cppflags_is_set = no -a x${C_INCLUDE_PATH-} = x ; then
8a947f1998-09-01Fredrik Hübinette (Hubbe)  real_include_dirs=''
c96ea21998-04-04Henrik Grubbström (Grubba)  for d in `echo ${with_include_path} | sed 's/:/ /g'` \
cf39902001-01-19Henrik Grubbström (Grubba)  `echo $prefix | sed "s@^NONE@$with_root$ac_default_prefix@g"`/include \ $with_root/usr/local/include $with_root/sw/local/include \ $with_root/usr/gnu/include $with_root/opt/gnu/include \ $with_root/sw/gnu/include $with_root/sw/include \ $with_root/usr/freeware/include $with_root/usr/pkg/include \ `echo $with_root/usr/X11*/include | sort -r` $srcdir `pwd`
900def1997-01-12Henrik Grubbström (Grubba)  do
04a9251998-03-21Fredrik Hübinette (Hubbe)  AC_MSG_CHECKING($d)
d3e25e1998-07-15Fredrik Hübinette (Hubbe)  case x$d in x/usr/include | x/usr//include) ;; *) if test -d "$d/." ; then
8a947f1998-09-01Fredrik Hübinette (Hubbe)  REALDIR="`cd $d/. ; /bin/pwd`" if test "x$REALDIR" = x ; then REALDIR=UNKNOWN else : fi case " $CPPFLAGS $real_include_dirs " in *\ -I$d\ * | *\ -I$REALDIR\ *) AC_MSG_RESULT(already added) ;; *) AC_MSG_RESULT(added) CPPFLAGS="${CPPFLAGS} -I$d" if test "x$REALDIR" != xUNKNOWN; then real_include_dirs="${real_include_dirs} -I$REALDIR" else : fi ;; esac
d3e25e1998-07-15Fredrik Hübinette (Hubbe)  else AC_MSG_RESULT(no) fi ;; esac
900def1997-01-12Henrik Grubbström (Grubba)  done
cb728c1997-01-12Henrik Grubbström (Grubba) else :
900def1997-01-12Henrik Grubbström (Grubba) fi
d93ff51997-11-02Henrik Grubbström (Grubba) 
8a947f1998-09-01Fredrik Hübinette (Hubbe) #CPPFLAGS="${CPPFLAGS} -I$srcdir -I`pwd`"
0c73e91998-05-22Henrik Grubbström (Grubba) 
d93ff51997-11-02Henrik Grubbström (Grubba) echo Searching for library directories...
c0911b1997-10-03Henrik Grubbström (Grubba) if test $ldflags_is_set = no ; then
22f9511998-04-04Henrik Grubbström (Grubba)  for d in `echo ${with_lib_path} | sed 's/:/ /g'` \
cf39902001-01-19Henrik Grubbström (Grubba)  `echo $exec_prefix | sed "s@^NONE@$prefix/lib@g" | sed "s@^NONE@$with_root$ac_default_prefix/lib@g"` \ $with_root/usr/local/lib $with_root/sw/local/lib $with_root/sw/lib \ $with_root/usr/gnu/lib $with_root/opt/gnu/lib $with_root/sw/gnu/lib \ $with_root/usr/freeware/lib $with_root/usr/pkg/lib \ `echo $with_root/usr/X11*/lib | sort -r`
c0911b1997-10-03Henrik Grubbström (Grubba)  do
04a9251998-03-21Fredrik Hübinette (Hubbe)  AC_MSG_CHECKING($d) if test -d "$d/." ; then
8a947f1998-09-01Fredrik Hübinette (Hubbe)  case " $LDFLAGS " in *\ -L$d\ -R$d\ * | *\ -R$d\ -L$d\ *) AC_MSG_RESULT(already added) ;; *) AC_MSG_RESULT(added) LDFLAGS="${LDFLAGS} -R$d -L$d" ;; esac
c0911b1997-10-03Henrik Grubbström (Grubba)  else
6fa2281997-11-04Henrik Grubbström (Grubba)  AC_MSG_RESULT(no)
c0911b1997-10-03Henrik Grubbström (Grubba)  fi done else : fi
c67b691996-11-16Fredrik Hübinette (Hubbe) 
6fa2281997-11-04Henrik Grubbström (Grubba) echo Searching for binary directories...
cf39902001-01-19Henrik Grubbström (Grubba) for d in `echo $exec_prefix | sed "s@^NONE@$prefix@g" | sed "s@^NONE@$with_root$ac_default_prefix@g"` \ "$with_root" $with_root/usr $with_root/usr/ccs $with_root/usr/vac \ $with_root/usr/local $with_root/sw/local $with_root/usr/gnu \ $with_root/opt/gnu $with_root/sw/gnu $with_root/sw \ $with_root/usr/freeware $with_root/usr/pkg
6fa2281997-11-04Henrik Grubbström (Grubba) do AC_MSG_CHECKING($d/bin) if test -d "$d/bin/." ; then AC_MSG_RESULT(added) EXTRA_PATH="${EXTRA_PATH}:$d/bin" else AC_MSG_RESULT(no) fi done export EXTRA_PATH
a12f271998-01-10Fredrik Hübinette (Hubbe) else
d4f9e92000-05-19Martin Stjernholm  # We are running NT CPPFLAGS="${CPPFLAGS} -I$srcdir -I`pwd`"
a12f271998-01-10Fredrik Hübinette (Hubbe) fi
dcad551996-08-03Fredrik Hübinette (Hubbe) #############################################################################
bf622c1997-09-19Henrik Grubbström (Grubba) ## At this point we have at last initialized the compiler! #############################################################################
c411dc1997-04-21Fredrik Hübinette (Hubbe) if test ! -f confdefs.h ; then AC_MSG_WARN([Warning, lost confdefs.h, testing will be flawed!! You might need to use bash instead of /bin/sh to get correct results. To do this, please type the following at an sh prompt: \$ rm ./config.cache \$ CONFIG_SHELL=/path/to/bash \$ export CONFIG_SHELL \$ $CONFIG_SHELL ./configure ]) fi #############################################################################
99ed771997-06-03Fredrik Hübinette (Hubbe) AC_DEFINE(POSIX_SOURCE)
1acce82001-01-27Martin Stjernholm if test "x$enable_binary" != "xno"; then
5267b71995-08-09Fredrik Hübinette (Hubbe) 
1acce82001-01-27Martin Stjernholm  AC_MSG_CHECKING(ansi prototype capability) AC_CACHE_VAL(pike_cv_sys_ansi_prototypes, [ AC_TRY_COMPILE([int foo(int bar);],[], [pike_cv_sys_ansi_prototypes=yes], [pike_cv_sys_ansi_prototypes=no]) ])
5267b71995-08-09Fredrik Hübinette (Hubbe) 
1acce82001-01-27Martin Stjernholm  if test "$pike_cv_sys_ansi_prototypes" = "yes"; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no, giving up...) exit 1 fi fi
9925681996-10-11Fredrik Hübinette (Hubbe) 
dcad551996-08-03Fredrik Hübinette (Hubbe) #############################################################################
7ac9c11998-12-03Henrik Grubbström (Grubba) # The AC_PROG_INSTALL test is broken if $INSTALL is specified by hand. # The FreeBSD ports system does this... # Workaround: if test "x$INSTALL" = "x"; then :; else # $INSTALL overrides ac_cv_path_install anyway... ac_cv_path_install="$INSTALL" fi
5267b71995-08-09Fredrik Hübinette (Hubbe) AC_PROG_INSTALL AC_PROG_CPP AC_PROG_RANLIB
02c9642000-12-18Fredrik Hübinette (Hubbe) if test "x${AR-}" = x ; then AC_PATH_PROG(AR, ar, ar, $PATH:$EXTRA_PATH) export AR fi
6fa2281997-11-04Henrik Grubbström (Grubba) AC_SUBST(AR)
dcad551996-08-03Fredrik Hübinette (Hubbe) #############################################################################
9fe0a01997-08-16Henrik Grubbström (Grubba) # installbsd seems to be broken on some versions of AIX # # /grubba 1997-08-16 case "$ac_cv_path_install" in *installbsd*) AC_MSG_CHECKING(if $ac_cv_path_install works) AC_CACHE_VAL(pike_cv_install_works, [ if $ac_cv_path_install "$srcdir/configure.in" ./conftest >/dev/null 2>&1 then if cmp "$srcdir/configure.in" ./conftest >/dev/null 2>&1; then pike_cv_install_works=yes; else pike_cv_install_works=no; fi else pike_cv_install_works=no; fi if test -f ./conftest; then rm -f ./conftest fi ]) AC_MSG_RESULT($pike_cv_install_works) if test "$pike_cv_install_works" = "no"; then echo "Warning: Falling back to $ac_install_sh" INSTALL="$ac_install_sh" fi ;; esac #############################################################################
26e7e71996-04-23Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(for yacc clone that handles %pure_parser)
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_CACHE_VAL(pike_cv_prog_working_yacc,
26e7e71996-04-23Fredrik Hübinette (Hubbe) [
4e2e071998-11-16Fredrik Hübinette (Hubbe) for YACC in pyacc byacc "bison -y" yacc "None"; do
26e7e71996-04-23Fredrik Hübinette (Hubbe)  set dummy $YACC; ac_word=$2 has_it=no IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then has_it="yes" break
8f42881996-03-01Fredrik Hübinette (Hubbe)  fi
26e7e71996-04-23Fredrik Hübinette (Hubbe)  done IFS="$ac_save_ifs" if test "$has_it" = "yes"; then cat >conftest.y<<\EOF %pure_parser %{ void parse(); void yyerror(char *); %} %% all: foo bar foo: 'f' 'o' 'o' { parse(); } ; bar: 'b' 'a' 'r' ; %% int context;
8f42881996-03-01Fredrik Hübinette (Hubbe) 
26e7e71996-04-23Fredrik Hübinette (Hubbe) int yylex(YYSTYPE *yylval) { switch(context++) { case 0: return 'f'; case 1: return 'o'; case 2: return 'o'; case 3: return 'b'; case 4: return 'a'; case 5: return 'r'; default: return 0; } } int depth=0; void parse() { int tmp; if(depth++>5) return; tmp=context; context=0; yyparse(); context=tmp; } int errors=0; void yyerror(char *fel) { errors++; } int main() { parse(); exit(errors); } EOF if $YACC -d conftest.y 1>&5 2>&5; then
1acce82001-01-27Martin Stjernholm  if test "x$enable_binary" = "xno"; then break else AC_TRY_RUN([
26e7e71996-04-23Fredrik Hübinette (Hubbe) #include "y.tab.c"
75920f1997-12-28Fredrik Hübinette (Hubbe) ],pure_parser_works=yes,pure_parser_works=no,pure_parser_works=no)
1acce82001-01-27Martin Stjernholm  if test "$pure_parser_works" = "yes"; then break fi
26e7e71996-04-23Fredrik Hübinette (Hubbe)  fi fi
8f42881996-03-01Fredrik Hübinette (Hubbe)  fi
26e7e71996-04-23Fredrik Hübinette (Hubbe) done
06983f1996-09-22Fredrik Hübinette (Hubbe) pike_cv_prog_working_yacc="$YACC"
26e7e71996-04-23Fredrik Hübinette (Hubbe) ])
06983f1996-09-22Fredrik Hübinette (Hubbe) YACC="$pike_cv_prog_working_yacc"
4943ca1997-04-21Fredrik Hübinette (Hubbe)  if test "x$YACC" = "xNone" ; then
1acce82001-01-27Martin Stjernholm  AC_MSG_RESULT([Get bison if you want to do "make export"])
4943ca1997-04-21Fredrik Hübinette (Hubbe)  YACC="bison -y" else AC_MSG_RESULT($YACC) fi
5267b71995-08-09Fredrik Hübinette (Hubbe) 
4174542001-01-26Martin Stjernholm #############################################################################
f5d7042001-01-20Henrik Grubbström (Grubba) AC_MSG_CHECKING(for the type of the last argument to __yy_memcpy) AC_CACHE_VAL(pike_cv___yy_memcpy_count_type, [ pike_cv___yy_memcpy_count_type=unknown
4865232001-01-20Henrik Grubbström (Grubba)  for count_type in "unsigned int" "size_t" "unsigned long" "int"; do
a8adfd2001-01-20Henrik Grubbström (Grubba)  cat >conftest.y <<EOF
f5d7042001-01-20Henrik Grubbström (Grubba) %pure_parser %{ #include <stdio.h> #ifndef __GNUC__ #ifndef __cplusplus static void __yy_memcpy(char *to, char *from, $count_type count); #endif /* !__cplusplus */ #endif /* !__GNUC__ */
4865232001-01-20Henrik Grubbström (Grubba)  void yyerror(char *); int yylex(void *);
f5d7042001-01-20Henrik Grubbström (Grubba) %} %% all: foo bar
a8adfd2001-01-20Henrik Grubbström (Grubba) foo: 'f' 'o' 'o' { fprintf(stderr, "foo\\n"); } ;
f5d7042001-01-20Henrik Grubbström (Grubba) bar: 'b' 'a' 'r' ; %%
4865232001-01-20Henrik Grubbström (Grubba) int yylex(void *yylval) { return 'f'; }
a8adfd2001-01-20Henrik Grubbström (Grubba) void yyerror(char *err) { fprintf(stderr, "ERR: %s\\n", err); }
f5d7042001-01-20Henrik Grubbström (Grubba) EOF
4865232001-01-20Henrik Grubbström (Grubba)  echo conftest.y: 1>&5 cat conftest.y 1>&5
f5d7042001-01-20Henrik Grubbström (Grubba)  if $YACC -d conftest.y 1>&5 2>&5; then AC_TRY_LINK([ #include "y.tab.c" ], [ yyparse(); exit(0); ], [ pike_cv___yy_memcpy_count_type=$count_type break ]) fi done ]) AC_MSG_RESULT($pike_cv___yy_memcpy_count_type) if test "x$pike_cv___yy_memcpy_count_type" = "xunknown"; then AC_MSG_WARN([Defaulting to unsigned int.]) AC_DEFINE(YY_COUNT_TYPE, [unsigned int]) else AC_DEFINE_UNQUOTED(YY_COUNT_TYPE, $pike_cv___yy_memcpy_count_type) fi
dcad551996-08-03Fredrik Hübinette (Hubbe) #############################################################################
bf622c1997-09-19Henrik Grubbström (Grubba) ## At this point we have found all binaries we are going to use. ############################################################################# AC_C_CONST
3bb83a1997-09-22Henrik Grubbström (Grubba) # The above doesn't find IBM C's buggy const. if test "$ac_cv_c_const" = "yes"; then AC_MSG_CHECKING(if const really does work)
8976531997-12-22Fredrik Hübinette (Hubbe)  AC_CACHE_VAL(pike_cv_c_really_const,[ AC_TRY_COMPILE([
3bb83a1997-09-22Henrik Grubbström (Grubba) const int foo(int bar) { return bar; }
8976531997-12-22Fredrik Hübinette (Hubbe)  ], [ return bar(0); ], [ pike_cv_c_really_const=yes ], [ pike_cv_c_really_const=no ])
3bb83a1997-09-22Henrik Grubbström (Grubba)  ])
8976531997-12-22Fredrik Hübinette (Hubbe)  AC_MSG_RESULT($pike_cv_c_really_const) if test "x$pike_cv_c_really_const" = xno ; then AC_DEFINE(const, []) else : fi
3bb83a1997-09-22Henrik Grubbström (Grubba) fi
82c04f1999-04-25Henrik Grubbström (Grubba) AC_MSG_CHECKING(if we can cast void * to a function pointer) AC_CACHE_VAL(pike_cv_function_cast, [ AC_TRY_COMPILE([ void *foo = 0; ],[ void (*bar)(void) = (void (*)(void)) foo; ],[ pike_cv_function_cast="yes" ], [ pike_cv_function_cast="no" ]) ]) if test "$pike_cv_function_cast" = "yes"; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) AC_DEFINE(NO_CAST_TO_FUN) fi
bf622c1997-09-19Henrik Grubbström (Grubba) #############################################################################
6930181996-02-25Fredrik Hübinette (Hubbe) AC_HEADER_TIME AC_HEADER_STDC
5ebdb51996-09-22Fredrik Hübinette (Hubbe) AC_CHECK_HEADERS(sys/rusage.h time.h sys/time.h sys/types.h unistd.h stdlib.h \
d4debf1997-05-19Henrik Grubbström (Grubba) memory.h values.h string.h strings.h fcntl.h sys/filio.h sys/sockio.h crypt.h \
7cccc52000-12-27Mirar (Pontus Hagland) locale.h sys/select.h net/socket.h sys/mman.h setjmp.h \
3d6e5c2000-08-17Henrik Grubbström (Grubba) limits.h pthread.h crt/signal.h sys/id.h \
4238391998-07-09Francesco Chemolli thread.h dlfcn.h dld.h dl.h sys/times.h sched.h sys/procfs.h sys/param.h \ winsock.h sys/ioct.h sys/socket.h malloc.h netinet/in.h sys/wait.h winbase.h \ grp.h pwd.h passwd.h group.h winsock2.h signal.h sys/file.h poll.h sys/poll.h \
3adb2f2000-08-28Fredrik Hübinette (Hubbe) socket.h ieeefp.h fp_class.h floatingpoint.h sys/priocntl.h sys/sched.h \
9debfa1999-08-11Fredrik Hübinette (Hubbe) windows.h errno.h stddef.h mmx.h)
5267b71995-08-09Fredrik Hübinette (Hubbe) 
7cccc52000-12-27Mirar (Pontus Hagland) # some Linux systems have a broken resource.h that compiles anyway /Mirar
c5cbce2000-12-27Mirar (Pontus Hagland) AC_MSG_CHECKING([for sys/resource.h])
4492cc2000-12-28Henrik Grubbström (Grubba) AC_CACHE_VAL(pike_cv_sys_resource_h, [ AC_TRY_COMPILE([ #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif /* HAVE_SYS_TYPES_H */
b5fac72000-12-28Henrik Grubbström (Grubba) #ifdef HAVE_TIME_H #include <time.h> #endif /* HAVE_TIME_H */ #ifdef HAVE_SYS_TIME_H #include <sys/time.h> #endif /* HAVE_SYS_TIME_H */
4492cc2000-12-28Henrik Grubbström (Grubba)  #include <sys/resource.h> ],[], [pike_cv_sys_resource_h=yes], [pike_cv_sys_resource_h=no]) ])
c5cbce2000-12-27Mirar (Pontus Hagland) if test "x$pike_cv_sys_resource_h" = "xyes"; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_SYS_RESOURCE_H) else AC_MSG_RESULT(no) fi
7cccc52000-12-27Mirar (Pontus Hagland) 
75920f1997-12-28Fredrik Hübinette (Hubbe) AC_CHECK_SIZEOF(char *,4)
d0d62b2000-08-18Henrik Grubbström (Grubba) AC_CHECK_SIZEOF(int, 4) AC_CHECK_SIZEOF(short, 2) AC_CHECK_SIZEOF(float, 4) AC_CHECK_SIZEOF(double, 8) AC_CHECK_SIZEOF(long, 4) AC_CHECK_SIZEOF(long long, 8) AC_CHECK_SIZEOF(__int64, 8)
5267b71995-08-09Fredrik Hübinette (Hubbe) 
6f7df82000-06-29Henrik Grubbström (Grubba) AC_MY_CHECK_TYPE(size_t,unsigned long) AC_MY_CHECK_TYPE(ptrdiff_t,long)
1e577b1999-07-15Fredrik Hübinette (Hubbe) AC_MY_CHECK_TYPE(off_t,long) AC_MY_CHECK_TYPE(pid_t,int) AC_MY_CHECK_TYPE(uid_t,int) AC_MY_CHECK_TYPE(gid_t,int) AC_MY_CHECK_TYPE(time_t,INT32) AC_MY_CHECK_TYPE(pri_t, short)
6930181996-02-25Fredrik Hübinette (Hubbe) AC_TYPE_SIGNAL
5267b71995-08-09Fredrik Hübinette (Hubbe) 
dcad551996-08-03Fredrik Hübinette (Hubbe) dnl AC_CHECK_LIB(PW, alloca)
b04d5f1996-07-08Fredrik Hübinette (Hubbe) 
5c8e891995-10-29Fredrik Hübinette (Hubbe) AC_CHECK_LIB(m, floor)
dc5da71997-11-03Henrik Grubbström (Grubba)  AC_CHECK_LIB(socket, socket)
a12f271998-01-10Fredrik Hübinette (Hubbe) 
08af092000-04-12Marcus Comstedt if test x"$pike_cv_sys_os" = xWindows_NT ; then
d87ab42000-08-17Henrik Grubbström (Grubba)  AC_MSG_CHECKING(if we should use the 64 bit API) AC_CACHE_VAL(pike_cv_sys_win64, [ AC_EGREP_CPP(yes, [ #if defined(_WIN64) || defined(__WIN64__) yes #else no #endif ], [ pike_cv_sys_win64=yes ], [ pike_cv_sys_win64=no ]) ]) if test "x$pike_cv_sys_win64" = "xyes"; then AC_MSG_RESULT(yes)
e718852000-08-18Henrik Grubbström (Grubba)  # Apparently the libraries are stilled named *32... # LIBS="-lkernel64 -lws2_64 -ladvapi64 $LIBS" LIBS="-lkernel32 -lws2_32 -ladvapi32 $LIBS"
d87ab42000-08-17Henrik Grubbström (Grubba)  else AC_MSG_RESULT(no) LIBS="-lkernel32 -lws2_32 -ladvapi32 $LIBS" fi
a12f271998-01-10Fredrik Hübinette (Hubbe) fi
dc5da71997-11-03Henrik Grubbström (Grubba) AC_CHECK_LIB(nsl, gethostbyname)
dac6371999-10-17Mirar (Pontus Hagland) AC_CHECK_LIB(rt, nanosleep)
dc5da71997-11-03Henrik Grubbström (Grubba) 
ca74dd1996-10-08Fredrik Hübinette (Hubbe) AC_CHECK_LIB(dl, dlopen)
4238391998-07-09Francesco Chemolli AC_CHECK_LIB(dld, shl_load)
59bc1b1997-01-22Bernhard Fastenrath AC_CHECK_LIB(dld, dld_link)
07513e1996-10-04Fredrik Hübinette (Hubbe) 
d98e0d1997-01-15Fredrik Hübinette (Hubbe)  if test "${pike_cv_sys_os}" = "Linux"; then
7b39411997-02-06Fredrik Hübinette (Hubbe)  if test "${ac_cv_lib_m_floor}" = "no"; then
d98e0d1997-01-15Fredrik Hübinette (Hubbe)  AC_MSG_WARN(I will compensate for this by adding -lc -lm) LIBS="${LIBS} -lc -lm" fi
f8663d1997-09-16Henrik Grubbström (Grubba)  if test "$ac_cv_header_sched_h" = "yes"; then AC_MSG_CHECKING(if sched.h has a typo) AC_CACHE_VAL(pike_cv_broken_sched_h, [ AC_TRY_COMPILE([ #include <sched.h> ],[ ],[ pike_cv_broken_shed_h=no ], [ OLDCPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -D_P=__P" AC_TRY_COMPILE([ #include <sched.h> ],[ ],[ pike_cv_broken_sched_h=yes ],[ pike_cv_broken_sched_h="very broken" ]) CPPFLAGS="$OLDCPPFLAGS" ]) ]) AC_MSG_RESULT($pike_cv_broken_sched_h) if test "$pike_cv_broken_sched_h" = "yes"; then AC_MSG_WARN(Applying workaround) CPPFLAGS="$CPPFLAGS -D_P=__P" fi fi
d10ed51995-11-15Fredrik Hübinette (Hubbe) fi
5c8e891995-10-29Fredrik Hübinette (Hubbe) 
07513e1996-10-04Fredrik Hübinette (Hubbe) ########################################################################
e45ef22001-02-14Mirar (Pontus Hagland) using_threads="no (forced)"
eec1371996-11-02Fredrik Hübinette (Hubbe) if test x$with_threads = xyes ; then
e45ef22001-02-14Mirar (Pontus Hagland)  using_threads="no (no known threads found)"
50b0391997-01-27Henrik Grubbström (Grubba)  OLDLIBS="$LIBS"
284e061998-11-09Fredrik Hübinette (Hubbe)  OLDCFLAGS="$CFLAGS"
07513e1996-10-04Fredrik Hübinette (Hubbe) 
b1f4eb1998-01-13Fredrik Hübinette (Hubbe) if test "x$pike_cv_sys_os" = "xWindows_NT" ; then # NT has threads... AC_DEFINE(_REENTRANT) AC_DEFINE(_THREAD_SAFE) AC_DEFINE(_UNIX_THREADS) AC_DEFINE(NT_THREADS)
67bbf01999-08-10Henrik Grubbström (Grubba)  AC_DEFINE(PIKE_THREADS)
e45ef22001-02-14Mirar (Pontus Hagland)  using_threads="yes (nt)"
b1f4eb1998-01-13Fredrik Hübinette (Hubbe)  else
9ab4461998-11-06Honza Petrous  # Test for POSIX threads
50b0391997-01-27Henrik Grubbström (Grubba)  case "x$pike_cv_sys_os" in
3724261999-08-25Henrik Grubbström (Grubba)  xOSF1*)
d4ac012000-03-29Fredrik Hübinette (Hubbe) # LIBS="${OLDLIBS} -lpthread -lmach -lexc -lc" LIBS="${OLDLIBS} -lpthread -lmach -lexc"
9ab4461998-11-06Honza Petrous  ;; xBSD/OS*) LIBS="${OLDLIBS}" ;;
3724261999-08-25Henrik Grubbström (Grubba)  xUnixWare*)
9022241998-08-27Honza Petrous  if test "$GCC" = yes ; then
0d51112000-04-10Boyd Lynn Gerber  CFLAGS="${CFLAGS} -pthread"
9022241998-08-27Honza Petrous  else
9ab4461998-11-06Honza Petrous  CFLAGS="${CFLAGS} -Kthread"
9022241998-08-27Honza Petrous  fi
50b0391997-01-27Henrik Grubbström (Grubba)  ;;
0809711998-02-27Marcus Comstedt 
9ab4461998-11-06Honza Petrous  xFreeBSD*) # Threads on FreeBSD earlier than 1998-06-07 are broken. LIBS="${OLDLIBS}" AC_MSG_CHECKING(if this version of FreeBSD may have working threads) AC_CACHE_VAL(pike_cv_freebsd_threads, [ AC_TRY_RUN([
54905d1998-06-16Henrik Grubbström (Grubba) #include <osreldate.h> int main(int argc, char **argv) {
fc84cc1998-12-03Henrik Grubbström (Grubba)  /* FreeBSD before 228000 and 300000 - 300005 have broken threads.
8e48421998-06-17Henrik Grubbström (Grubba)  */
fc84cc1998-12-03Henrik Grubbström (Grubba)  if (__FreeBSD_version < 228000)
54905d1998-06-16Henrik Grubbström (Grubba)  return(1); if (__FreeBSD_version < 300000) return(0);
fc84cc1998-12-03Henrik Grubbström (Grubba)  if (__FreeBSD_version < 300006)
54905d1998-06-16Henrik Grubbström (Grubba)  return(1); return(0); }
9ab4461998-11-06Honza Petrous  ], pike_cv_freebsd_threads=yes, pike_cv_freebsd_threads=no, pike_cv_freebsd_threads=yes) ]) if test "x$pike_cv_freebsd_threads" = "xno"; then AC_MSG_RESULT(no) else AC_MSG_RESULT(yes)
e45ef22001-02-14Mirar (Pontus Hagland)  using_threads="yes (freebsd)"
f369dd2000-03-26Fredrik Hübinette (Hubbe)  AC_PATH_PROG(PTHREAD_CONFIG,pthread-config,no)
95013b2000-03-27Dan Nelson  if test "x$PTHREAD_CONFIG" = xno ; then
f369dd2000-03-26Fredrik Hübinette (Hubbe)  CFLAGS="${CFLAGS} -pthread" LD_FALLBACK_FLAGS="${LD_FALLBACK_FLAGS-} -lc_r"
fcf0732000-03-28Fredrik Hübinette (Hubbe)  AC_MSG_CHECKING(Initial stack limit) AC_CACHE_VAL(pike_cv_initial_stack_size,[ AC_TRY_RUN([ #include <stdio.h> static int depth=0; FILE *f; void save_depth(void); void use_stack(void *page) { void *X[8190]; X[0]=page; save_depth(); use_stack(&X); } void save_depth(void) { depth+=sizeof(void *)*8192; fprintf(f,"%d\n",depth); fflush(f); if(depth>0x80000000) exit(0); } int main(int argc) { f=fopen("confdefs.out.2","w"); /* weird filename to circumvent configure weirdness */ save_depth(); use_stack(0); } ], pike_cv_initial_stack_size='', while read x; do pike_cv_initial_stack_size=$x ; done <confdefs.out.2) rm confdefs.out.2 >/dev/null 2>/dev/null || : ]) if test x$pike_cv_initial_stack_size = x ; then AC_MSG_RESULT(unlimited) else AC_MSG_RESULT($pike_cv_initial_stack_size) AC_DEFINE_UNQUOTED(Pike_INITIAL_STACK_SIZE,$pike_cv_initial_stack_size) fi
f369dd2000-03-26Fredrik Hübinette (Hubbe)  else CFLAGS="$CFLAGS `pthread-config --cflags`" LIBS="$LIBS `pthread-config --libs`" LDFLAGS="$CFLAGS `pthread-config --ldflags`" fi
9ab4461998-11-06Honza Petrous  fi ;;
c371d41998-06-07Simon Coggins 
9ab4461998-11-06Honza Petrous  xAIX*)
ea63a72000-12-19Henrik Grubbström (Grubba)  if test "`uname -v`" -gt 4 ; then LIBS="${OLDLIBS} -lpthread" else LIBS="${OLDLIBS} -lpthreads -lc_r" fi
9ab4461998-11-06Honza Petrous  ;;
b1335c1998-07-03Francesco Chemolli 
73ea7f2000-07-09Henrik Grubbström (Grubba)  xSolaris*) # Some versions of Solaris 2.5.1 require linking with -lthread too. LIBS="${OLDLIBS} -lpthread -lthread" ;;
66a3742000-10-02Jonas Wallden  xDarwin*) LIBS="${OLDLIBS}" ;;
9ab4461998-11-06Honza Petrous  *) LIBS="${OLDLIBS} -lpthread" ;; esac
50b0391997-01-27Henrik Grubbström (Grubba) 
e5f9822000-10-03Henrik Grubbström (Grubba)  AC_CHECK_FUNCS(pthread_init pthread_mutexattr_init pthread_kill)
8b14071997-10-03Henrik Grubbström (Grubba) 
9ab4461998-11-06Honza Petrous  AC_MSG_CHECKING(posix threads)
b27ea31997-10-25Henrik Grubbström (Grubba) 
9ab4461998-11-06Honza Petrous  AC_CACHE_VAL(pike_cv_posix_threads, [ AC_TRY_RUN([
aeafe11997-01-26Per Hedbor #define _REENTRANT #define _THREAD_SAFE
f147421997-03-12Fredrik Hübinette (Hubbe) #define _MIT_POSIX_THREADS 1
aeafe11997-01-26Per Hedbor 
07513e1996-10-04Fredrik Hübinette (Hubbe) #include <pthread.h>
eea7c21997-09-11Henrik Grubbström (Grubba) void *foo(void *bar) { pthread_exit(0); return 0; }
158e9f1997-03-10Henrik Grubbström (Grubba) pthread_mutexattr_t attr;
07513e1996-10-04Fredrik Hübinette (Hubbe) pthread_mutex_t tmp; pthread_t gazonk; int main() { void *sune;
8b14071997-10-03Henrik Grubbström (Grubba) #ifdef HAVE_PTHREAD_INIT pthread_init(); #endif /* HAVE_PTHREAD_INIT */
0809711998-02-27Marcus Comstedt #ifdef HAVE_PTHREAD_MUTEXATTR_INIT
158e9f1997-03-10Henrik Grubbström (Grubba)  pthread_mutexattr_init(&attr);
0809711998-02-27Marcus Comstedt #else memset(&attr, 0, sizeof(attr));
f601ac1998-03-06Francesco Chemolli #endif /* HAVE_PTHREAD_MUTEXATTR_INIT */
158e9f1997-03-10Henrik Grubbström (Grubba)  pthread_mutex_init(&tmp, &attr); pthread_mutex_lock(&tmp);
07513e1996-10-04Fredrik Hübinette (Hubbe)  pthread_create(&gazonk,0,foo,0); pthread_join(gazonk,&sune); exit(0); }
6b15b72001-01-19Henrik Grubbström (Grubba)  ], [ pike_cv_posix_threads=yes ], [ pike_cv_posix_threads=no ], [ AC_TRY_LINK([ #define _REENTRANT #define _THREAD_SAFE #define _MIT_POSIX_THREADS 1 #include <pthread.h> void *foo(void *bar) { pthread_exit(0); return 0; } pthread_mutexattr_t attr; pthread_mutex_t tmp; pthread_t gazonk; ], [ { void *sune; #ifdef HAVE_PTHREAD_INIT pthread_init(); #endif /* HAVE_PTHREAD_INIT */ #ifdef HAVE_PTHREAD_MUTEXATTR_INIT pthread_mutexattr_init(&attr); #else memset(&attr, 0, sizeof(attr)); #endif /* HAVE_PTHREAD_MUTEXATTR_INIT */ pthread_mutex_init(&tmp, &attr); pthread_mutex_lock(&tmp); pthread_create(&gazonk,0,foo,0); pthread_join(gazonk,&sune); exit(0); } ], [ pike_cv_posix_threads=yes ], [ pike_cv_posix_threads=no ]) ])
9ab4461998-11-06Honza Petrous  ])
07513e1996-10-04Fredrik Hübinette (Hubbe) 
9ab4461998-11-06Honza Petrous  if test $pike_cv_posix_threads = yes ; then AC_MSG_RESULT(yes) AC_DEFINE(_REENTRANT) AC_DEFINE(_THREAD_SAFE) AC_DEFINE(_MIT_POSIX_THREADS,1)
67bbf01999-08-10Henrik Grubbström (Grubba)  AC_DEFINE(PIKE_THREADS)
e45ef22001-02-14Mirar (Pontus Hagland)  using_threads="yes (posix)"
9ab4461998-11-06Honza Petrous 
71ac9e1999-08-29Fredrik Hübinette (Hubbe) ##########################################################################
9ab4461998-11-06Honza Petrous  AC_MSG_CHECKING(for pthread_attr_setstacksize) AC_CACHE_VAL(pike_cv_have_pthread_attr_setstacksize,[ AC_TRY_LINK([#include <pthread.h> void foo(pthread_attr_t*x) { pthread_attr_setstacksize(x, 1024*1024); } ],[],[ pike_cv_have_pthread_attr_setstacksize=yes ],[ pike_cv_have_pthread_attr_setstacksize=no
8d4ce81997-04-10Fredrik Hübinette (Hubbe)  ])
9ab4461998-11-06Honza Petrous  ]) AC_MSG_RESULT($pike_cv_have_pthread_attr_setstacksize) if test x$pike_cv_have_pthread_attr_setstacksize = xyes ; then AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE) else : fi
8d4ce81997-04-10Fredrik Hübinette (Hubbe) 
71ac9e1999-08-29Fredrik Hübinette (Hubbe) ########################################################################## AC_MSG_CHECKING(for pthread_atfork) AC_CACHE_VAL(pike_cv_have_pthread_atfork,[ AC_TRY_LINK([#include <pthread.h> void foo(void) { pthread_atfork(0,0,0); } ],[],[ pike_cv_have_pthread_atfork=yes ],[ pike_cv_have_pthread_atfork=no ]) ])
d201871999-08-30Fredrik Hübinette (Hubbe)  if test x$pike_cv_have_pthread_atfork = xyes ; then
71ac9e1999-08-29Fredrik Hübinette (Hubbe)  AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PTHREAD_ATFORK) else AC_MSG_RESULT([no - FreeBSD?]) fi ##########################################################################
9ab4461998-11-06Honza Petrous  AC_MSG_CHECKING(for pthread_yield) AC_CACHE_VAL(pike_cv_have_pthread_yield,[ AC_TRY_LINK([#include <pthread.h> void foo(void) { pthread_yield(); } ],[],[ pike_cv_have_pthread_yield=yes ],[ pike_cv_have_pthread_yield=no
8d4ce81997-04-10Fredrik Hübinette (Hubbe)  ])
9ab4461998-11-06Honza Petrous  ]) AC_MSG_RESULT($pike_cv_have_pthread_yield) if test x$pike_cv_have_pthread_yield = xyes ; then AC_DEFINE(HAVE_PTHREAD_YIELD) else : fi
8d4ce81997-04-10Fredrik Hübinette (Hubbe) 
71ac9e1999-08-29Fredrik Hübinette (Hubbe) ##########################################################################
9ab4461998-11-06Honza Petrous  AC_MSG_CHECKING(for pthread_cond_init) AC_CACHE_VAL(pike_cv_have_pthread_cond_init,[ AC_TRY_LINK([#include <pthread.h> void foo(pthread_cond_t*x, pthread_condattr_t*y) { pthread_cond_init(x,y); } ],[],[ pike_cv_have_pthread_cond_init=yes ],[ pike_cv_have_pthread_cond_init=no
8d4ce81997-04-10Fredrik Hübinette (Hubbe)  ])
9ab4461998-11-06Honza Petrous  ]) AC_MSG_RESULT($pike_cv_have_pthread_cond_init) if test x$pike_cv_have_pthread_cond_init = xyes ; then AC_DEFINE(HAVE_PTHREAD_COND_INIT) else : fi
0a40e91997-04-10Fredrik Hübinette (Hubbe) 
71ac9e1999-08-29Fredrik Hübinette (Hubbe) ##########################################################################
9ab4461998-11-06Honza Petrous  AC_MSG_CHECKING(if pthread_condattr_default is defined) AC_CACHE_VAL(pike_cv_have_pthread_condattr_default,[ AC_TRY_LINK([#include <pthread.h> void foo(pthread_cond_t *bar) { pthread_cond_init(bar, pthread_condattr_default); } ],[],[ pike_cv_have_pthread_condattr_default=yes ],[ pike_cv_have_pthread_condattr_default=no
5377b91997-02-01Henrik Grubbström (Grubba)  ])
9ab4461998-11-06Honza Petrous  ])
5377b91997-02-01Henrik Grubbström (Grubba) 
9ab4461998-11-06Honza Petrous  AC_MSG_RESULT($pike_cv_have_pthread_condattr_default)
5377b91997-02-01Henrik Grubbström (Grubba) 
9ab4461998-11-06Honza Petrous  if test x$pike_cv_have_pthread_condattr_default = xyes ; then AC_DEFINE(HAVE_PTHREAD_CONDATTR_DEFAULT) else : fi
afbcda1998-08-31Henrik Grubbström (Grubba) 
752e101999-04-30Fredrik Hübinette (Hubbe) 
9ab4461998-11-06Honza Petrous  # # FreeBSD doesn't like the &, while AIX requires it... # AC_MSG_CHECKING(if pthread_condattr_default is needs an & (AIX)) AC_CACHE_VAL(pike_cv_have_pthread_condattr_default_aix,[ AC_TRY_LINK([#include <pthread.h> void foo(pthread_cond_t *bar) { pthread_cond_init(bar, &pthread_condattr_default); } ],[],[ pike_cv_have_pthread_condattr_default_aix=yes ],[ pike_cv_have_pthread_condattr_default_aix=no
afbcda1998-08-31Henrik Grubbström (Grubba)  ])
9ab4461998-11-06Honza Petrous  ])
afbcda1998-08-31Henrik Grubbström (Grubba) 
9ab4461998-11-06Honza Petrous  AC_MSG_RESULT($pike_cv_have_pthread_condattr_default_aix)
afbcda1998-08-31Henrik Grubbström (Grubba) 
9ab4461998-11-06Honza Petrous  if test x$pike_cv_have_pthread_condattr_default_aix = xyes ; then AC_DEFINE(HAVE_PTHREAD_CONDATTR_DEFAULT_AIX) else : fi
afbcda1998-08-31Henrik Grubbström (Grubba) 
71ac9e1999-08-29Fredrik Hübinette (Hubbe) ##########################################################################
752e101999-04-30Fredrik Hübinette (Hubbe)  AC_MSG_CHECKING(for __pthread_initial_thread_bos) AC_CACHE_VAL(pike_cv_have_pthread_initial_thread_bos,[ AC_TRY_LINK([#include <pthread.h> char *foo(void) { extern char *__pthread_initial_thread_bos; return __pthread_initial_thread_bos; } ],[],[ pike_cv_have_pthread_initial_thread_bos=yes ],[ pike_cv_have_pthread_initial_thread_bos=no ]) ]) AC_MSG_RESULT($pike_cv_have_pthread_initial_thread_bos) if test x$pike_cv_have_pthread_initial_thread_bos = xyes ; then AC_DEFINE(HAVE_PTHREAD_INITIAL_THREAD_BOS) else : fi
d0cb8d2000-05-20Henrik Grubbström (Grubba) ########################################################################## # On Linux the threads don't inherit euid & egid from the main thread. # FIXME: Add a real test here! if test "x$pike_cv_sys_os" = "xLinux"; then AC_DEFINE(HAVE_BROKEN_LINUX_THREAD_EUID) else :; fi
752e101999-04-30Fredrik Hübinette (Hubbe) 
9ab4461998-11-06Honza Petrous  else AC_MSG_RESULT(no) LIBS="$OLDLIBS"
284e061998-11-09Fredrik Hübinette (Hubbe)  CFLAGS="$OLDCFLAGS"
9ab4461998-11-06Honza Petrous  # No POSIX threads. # Try UNIX threads instead AC_MSG_CHECKING(unix threads) case "x$pike_cv_sys_os" in
3724261999-08-25Henrik Grubbström (Grubba)  xUnixWare*)
9ab4461998-11-06Honza Petrous  if test "$GCC" = yes ; then
0d51112000-04-10Boyd Lynn Gerber  CFLAGS="${CFLAGS} -pthread"
9ab4461998-11-06Honza Petrous  else CFLAGS="${CFLAGS} -Kthread" fi CFLAGS="${CFLAGS} -D_UNIXWARE_THREADS_" ;; *) LIBS="${LIBS} -lthread" ;; esac AC_CACHE_VAL(pike_cv_unix_threads, [ AC_TRY_RUN([ #define _REENTRANT #define _THREAD_SAFE #define _MIT_POSIX_THREADS 1 #include <thread.h> #ifdef _UNIXWARE_THREADS_ #include <synch.h> #endif void *foo(void *bar) { thr_exit(0); return 0; } mutex_t tmp; thread_t gazonk; int main() { void *sune; mutex_lock(& tmp); thr_create(0,0,foo,0,0,&gazonk); thr_join(gazonk,0,&sune); exit(0); } ],pike_cv_unix_threads=yes,pike_cv_unix_threads=no,pike_cv_unix_threads=no) ]) if test x$pike_cv_unix_threads = xyes ; then AC_MSG_RESULT(yes) AC_DEFINE(_REENTRANT) AC_DEFINE(_THREAD_SAFE) AC_DEFINE(_UNIX_THREADS)
67bbf01999-08-10Henrik Grubbström (Grubba)  AC_DEFINE(PIKE_THREADS)
e45ef22001-02-14Mirar (Pontus Hagland)  using_threads="yes (unix)"
50b0391997-01-27Henrik Grubbström (Grubba)  else AC_MSG_RESULT(no) LIBS="$OLDLIBS"
284e061998-11-09Fredrik Hübinette (Hubbe)  CFLAGS="$OLDCFLAGS"
07513e1996-10-04Fredrik Hübinette (Hubbe) 
50b0391997-01-27Henrik Grubbström (Grubba)  # Now we've sunk really low -- test for proprietary threads # SGI old-style shared group processes
43032e1997-10-09Henrik Grubbström (Grubba)  # AC_CHECK_FUNCS(sproc oserror) # # AC_MSG_CHECKING(Fallback to sproc) # # if test x$ac_cv_func_sproc$ac_cv_func_oserror = xyesyes; then # AC_MSG_RESULT(yes) # AC_DEFINE(_REENTRANT) # AC_DEFINE(_THREAD_SAFE) # AC_DEFINE(_SGI_SPROC_THREADS) # AC_DEFINE(_SGI_MP_SOURCE)
e45ef22001-02-14Mirar (Pontus Hagland)  # using_threads="yes (sgi)"
43032e1997-10-09Henrik Grubbström (Grubba)  # else # AC_MSG_RESULT(no) # : # fi
9ab4461998-11-06Honza Petrous  fi # UNIX threads fi # POSIX threads
b1f4eb1998-01-13Fredrik Hübinette (Hubbe) fi # NT
50b0391997-01-27Henrik Grubbström (Grubba) else # Without threads :
eec1371996-11-02Fredrik Hübinette (Hubbe) fi
07513e1996-10-04Fredrik Hübinette (Hubbe) ########################################################################
5267b71995-08-09Fredrik Hübinette (Hubbe) 
a888ce2000-12-23Henrik Grubbström (Grubba) # NOTE: The following test is hardcoded to fail when crosscompiling # It also clobbers $LIBOBJS. OLD_LIBOBJS="${LIBOBJS}"
5267b71995-08-09Fredrik Hübinette (Hubbe) AC_FUNC_MEMCMP
a888ce2000-12-23Henrik Grubbström (Grubba) if test "x$ac_cv_func_memcmp_clean" = "xyes"; then
5267b71995-08-09Fredrik Hübinette (Hubbe)  AC_DEFINE(HAVE_MEMCMP) fi LIBOBJS="${OLD_LIBOBJS}"
a888ce2000-12-23Henrik Grubbström (Grubba) ########################################################################
dcad551996-08-03Fredrik Hübinette (Hubbe) AC_FUNC_MMAP
6930181996-02-25Fredrik Hübinette (Hubbe) 
75920f1997-12-28Fredrik Hübinette (Hubbe) AC_CHECK_FUNCS( \
cb22561995-10-11Fredrik Hübinette (Hubbe)  _crypt \
063fe31998-03-10Per Hedbor  poll \
cb22561995-10-11Fredrik Hübinette (Hubbe)  bcopy \ bzero \ clock \ crypt \ fchmod \
9548a81997-05-07Per Hedbor  gethrtime \ gethrvtime \
cb22561995-10-11Fredrik Hübinette (Hubbe)  getenv \ getrlimit \ getrusage \
067bc11996-06-21Fredrik Hübinette (Hubbe)  gettimeofday \
cb22561995-10-11Fredrik Hübinette (Hubbe)  index \
dcad551996-08-03Fredrik Hübinette (Hubbe)  localtime \
fe91501998-07-26Peter J. Holzer  gmtime \
cb22561995-10-11Fredrik Hübinette (Hubbe)  memchr \
565c361997-01-27Fredrik Hübinette (Hubbe)  mktime \
5539c51998-06-08Henrik Grubbström (Grubba)  perror \
cb22561995-10-11Fredrik Hübinette (Hubbe)  rindex \ setlocale \ setrlimit \
3605b81998-09-18Peter J. Holzer  setresuid \
93b8081995-11-02Fredrik Hübinette (Hubbe)  sigaction \
5740881998-01-01Fredrik Hübinette (Hubbe)  sigblock \ sigprocmask \
93b8081995-11-02Fredrik Hübinette (Hubbe)  sigvec \
cb22561995-10-11Fredrik Hübinette (Hubbe)  strcasecmp \
9b15e02000-12-22Fredrik Hübinette (Hubbe)  strnlen \ strncmp \
cb22561995-10-11Fredrik Hübinette (Hubbe)  strchr \ strcspn \
2b25831997-01-31Fredrik Hübinette (Hubbe)  strerror \
cb22561995-10-11Fredrik Hübinette (Hubbe)  strrchr \ strtod \ strtok \ strtol \
5740881998-01-01Fredrik Hübinette (Hubbe)  time \
cb22561995-10-11Fredrik Hübinette (Hubbe)  times \ vfprintf \ vsprintf \
cd96811998-05-15Henrik Grubbström (Grubba)  vsnprintf \
6930181996-02-25Fredrik Hübinette (Hubbe)  wait3 \
65887d1995-11-15Fredrik Hübinette (Hubbe)  wait4 \ waitpid \
dcad551996-08-03Fredrik Hübinette (Hubbe)  munmap \
4238391998-07-09Francesco Chemolli  shl_load \
59bc1b1997-01-22Bernhard Fastenrath  dld_link \ dld_get_func \
3e84d61997-04-16Fredrik Hübinette (Hubbe)  pipe \
75920f1997-12-28Fredrik Hübinette (Hubbe)  strdup \
f196ef1999-08-31Fredrik Hübinette (Hubbe)  strstr \
75920f1997-12-28Fredrik Hübinette (Hubbe)  kill \ alarm \
85f59e1998-01-08Fredrik Hübinette (Hubbe)  fork1 \
d386e61998-03-20Fredrik Hübinette (Hubbe)  flock \
e6f98c1998-05-22David Hedbor  lockf \
0d52dd1998-01-16Fredrik Hübinette (Hubbe)  setuid getuid seteuid geteuid \ setgid getgid setegid getegid \
f087c41998-02-04Fredrik Hübinette (Hubbe)  getpwent getpwnam getpwuid \ getgrent getgrnam \
8f63852000-09-16Mirar (Pontus Hagland)  setsid setpgrp getpgrp setpgid getpgid \
d386e61998-03-20Fredrik Hübinette (Hubbe)  initgroups setgroups \
9c50201998-03-26Fredrik Hübinette (Hubbe)  socketpair \
5ff14f1998-05-25Marcus Comstedt  fpclass \ fp_class_d \ isinf \ isnan \ iszero \ finite \ signbit \
70c9c11998-05-05Fredrik Hübinette (Hubbe)  nice \
ea959d1999-02-01Per Hedbor  __priocntl \ sched_setscheduler \ setpriority \
dac6371999-10-17Mirar (Pontus Hagland)  usleep \ nanosleep \
cb22561995-10-11Fredrik Hübinette (Hubbe) )
5267b71995-08-09Fredrik Hübinette (Hubbe) 
6cefa12000-09-27Henrik Grubbström (Grubba) AC_MSG_CHECKING(for the type of the last argument to accept)
11ceb01998-08-07Henrik Grubbström (Grubba) AC_CACHE_VAL(pike_cv_accept_size_t, [
6cefa12000-09-27Henrik Grubbström (Grubba)  for t in socklen_t size_t int; do AC_TRY_COMPILE([ #ifndef _LARGEFILE_SOURCE # define _FILE_OFFSET_BITS 64 # define _LARGEFILE_SOURCE # define _LARGEFILE64_SOURCE 1 #endif /* HPUX needs these too... */ #ifndef __STDC_EXT__ # define __STDC_EXT__ #endif /* !__STDC_EXT__ */ #include <sys/types.h> #ifdef HAVE_UNISTD_H #include <unistd.h> #endif #ifdef HAVE_SYS_SOCKET_H #include <sys/socket.h> #endif /* NT */ #ifdef HAVE_WINSOCK_H #include <winsock.h> #endif /* Here's the actual test: */ int accept(int, struct sockaddr *, $t *); ], [ /* EMPTY */ ], [ pike_cv_accept_size_t=$t break ], [ AC_TRY_COMPILE([
11ceb01998-08-07Henrik Grubbström (Grubba) #ifndef _LARGEFILE_SOURCE # define _FILE_OFFSET_BITS 64 # define _LARGEFILE_SOURCE # define _LARGEFILE64_SOURCE 1 #endif /* HPUX needs these too... */ #ifndef __STDC_EXT__ # define __STDC_EXT__ #endif /* !__STDC_EXT__ */ #include <sys/types.h> #ifdef HAVE_UNISTD_H #include <unistd.h> #endif #ifdef HAVE_SYS_SOCKET_H #include <sys/socket.h> #endif
3e82a71998-09-01Fredrik Hübinette (Hubbe) /* NT */ #ifdef HAVE_WINSOCK_H #include <winsock.h> #endif
11ceb01998-08-07Henrik Grubbström (Grubba) /* Here's the actual test: */
6cefa12000-09-27Henrik Grubbström (Grubba) SOCKET accept(SOCKET, struct sockaddr *, $t *); ], [ /* EMPTY */ ], [ pike_cv_accept_size_t=$t break ], []) ]) done if test "x$pike_cv_accept_size_t" = "x"; then # Check if it could be a Psocklen_t # Psocklen_t is a stupid typedef of socklen_t *.
69bae82000-08-20Henrik Grubbström (Grubba)  AC_TRY_COMPILE([ #ifndef _LARGEFILE_SOURCE # define _FILE_OFFSET_BITS 64 # define _LARGEFILE_SOURCE # define _LARGEFILE64_SOURCE 1 #endif /* HPUX needs these too... */ #ifndef __STDC_EXT__ # define __STDC_EXT__ #endif /* !__STDC_EXT__ */ #include <sys/types.h> #ifdef HAVE_UNISTD_H #include <unistd.h> #endif #ifdef HAVE_SYS_SOCKET_H #include <sys/socket.h> #endif /* NT */ #ifdef HAVE_WINSOCK_H #include <winsock.h> #endif /* Here's the actual test: */
6cefa12000-09-27Henrik Grubbström (Grubba) int accept(int, struct sockaddr *, Psocklen_t);
69bae82000-08-20Henrik Grubbström (Grubba)  ], [ /* EMPTY */
6cefa12000-09-27Henrik Grubbström (Grubba)  ], [ pike_cv_accept_size_t=socklen_t ], [ # FIXME: Should probably have a warning here. # FIXME: Should we check if socklen_t exists, and use that? pike_cv_accept_size_t=int ]) fi
11ceb01998-08-07Henrik Grubbström (Grubba) ])
6cefa12000-09-27Henrik Grubbström (Grubba) AC_MSG_RESULT($pike_cv_accept_size_t *)
11ceb01998-08-07Henrik Grubbström (Grubba) AC_DEFINE_UNQUOTED(ACCEPT_SIZE_T, $pike_cv_accept_size_t)
08af092000-04-12Marcus Comstedt if test x"$pike_cv_sys_os" = xWindows_NT ; then
9649491998-02-27Fredrik Hübinette (Hubbe)  AC_DEFINE(HAVE_LOADLIBRARY) AC_DEFINE(HAVE_FREELIBRARY) AC_DEFINE(HAVE_GETPROCADDRESS) AC_DEFINE(DL_EXPORT, _dlspec(export)) else AC_DEFINE(DL_EXPORT, []) fi
e78abd1996-11-21Fredrik Hübinette (Hubbe) if test $ac_cv_func_crypt$ac_cv_func__crypt = nono ; then
905bb11998-01-31Fredrik Hübinette (Hubbe)  AC_CHECK_LIB(crypt,crypt,[LIBS="${LIBS} -lcrypt" ; AC_DEFINE(HAVE_CRYPT)], [ if test -f "$srcdir/crypt.c"; then AC_MSG_RESULT(Using crypt.c for BSD style crypt()) EXTRA_OBJS="${EXTRA_OBJS} crypt.o" AC_DEFINE(HAVE_CRYPT)
a680662000-08-20Henrik Grubbström (Grubba)  AC_DEFINE(USE_CRYPT_C)
905bb11998-01-31Fredrik Hübinette (Hubbe)  else : fi ])
e78abd1996-11-21Fredrik Hübinette (Hubbe) fi
5539c51998-06-08Henrik Grubbström (Grubba) ############################################################################# # FreeBSD 3.0 has broken F_SETFD when running with threads. AC_MSG_CHECKING(whether F_SETFD exists and works) AC_CACHE_VAL(pike_cv_broken_f_setfd, [ AC_TRY_RUN([ #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif /* HAVE_SYS_TYPES_H */ #include <sys/stat.h> #ifdef HAVE_FCNTL_H #include <fcntl.h> #endif /* HAVE_FCNTL_H */ #include <stdio.h> #ifndef FD_CLOEXEC #define FD_CLOEXEC 1 #endif /* FD_CLOEXEC */ int main(int argc, char **argv) { int fd = 0; if (fcntl(fd, F_SETFD, FD_CLOEXEC) < 0) { exit(1); } if (fcntl(fd, F_GETFD) != FD_CLOEXEC) { exit(1); } exit(0); } ], pike_cv_broken_f_setfd=no, pike_cv_broken_f_setfd=yes,
56d1c02000-06-29Henrik Grubbström (Grubba)  pike_cv_broken_f_setfd=yes)
5539c51998-06-08Henrik Grubbström (Grubba) ]) if test "x$pike_cv_broken_f_setfd" = "xyes"; then AC_MSG_RESULT(no) AC_DEFINE(HAVE_BROKEN_F_SETFD) else AC_MSG_RESULT(yes) fi #############################################################################
067bc11996-06-21Fredrik Hübinette (Hubbe) AC_STRUCT_TM
dcad551996-08-03Fredrik Hübinette (Hubbe) #############################################################################
067bc11996-06-21Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(extern int timezone)
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_CACHE_VAL(pike_cv_has_external_timezone,[
067bc11996-06-21Fredrik Hübinette (Hubbe) AC_TRY_LINK([ #include <time.h> ],[ int _tz; _tz=timezone;
a05f921998-05-05Fredrik Hübinette (Hubbe)  timezone=_tz;
06983f1996-09-22Fredrik Hübinette (Hubbe) ],pike_cv_has_external_timezone=yes,pike_cv_has_external_timezone=no)
067bc11996-06-21Fredrik Hübinette (Hubbe) ])
06983f1996-09-22Fredrik Hübinette (Hubbe) if test "$pike_cv_has_external_timezone" = "yes"; then
067bc11996-06-21Fredrik Hübinette (Hubbe)  AC_DEFINE(HAVE_EXTERNAL_TIMEZONE) fi
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_MSG_RESULT($pike_cv_has_external_timezone)
dcad551996-08-03Fredrik Hübinette (Hubbe)  #############################################################################
e0b9561996-07-02Fredrik Hübinette (Hubbe) # No test for this yet... AC_DEFINE(HAVE_STRUCT_TIMEVAL)
dcad551996-08-03Fredrik Hübinette (Hubbe) #############################################################################
067bc11996-06-21Fredrik Hübinette (Hubbe) 
63a6e01998-05-29Henrik Grubbström (Grubba) if test "x$ac_cv_func_strtol" = "xyes"; then AC_MSG_CHECKING(if strtol works for large hexadecimal constants) AC_CACHE_VAL(pike_cv_func_strtol_works, [ AC_TRY_RUN([ #include <stdlib.h> int main(int argc, char **argv) { /* On some OS's strtol() rounds this to 0x7fffffff. */ return(strtol("0xffffffff", NULL, 0) != 0xffffffff); } ], pike_cv_func_strtol_works=yes, pike_cv_func_strtol_works=no, pike_cv_func_strtol_works=no) ]) AC_MSG_RESULT($pike_cv_func_strtol_works) if test "x$pike_cv_func_strtol_works" = "xyes"; then AC_DEFINE(HAVE_WORKING_STRTOL) else :; fi else :; fi #############################################################################
e0b9561996-07-02Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(if gettimeofday takes two arguments)
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_CACHE_VAL(pike_cv_func_gettimeofday_has_two_args,
e0b9561996-07-02Fredrik Hübinette (Hubbe) [
6b15b72001-01-19Henrik Grubbström (Grubba)  AC_TRY_RUN([
e0b9561996-07-02Fredrik Hübinette (Hubbe) #if TIME_WITH_SYS_TIME # include <sys/time.h> # include <time.h> #else # if HAVE_SYS_TIME_H # include <sys/time.h> # else # if HAVE_TIME_H # include <time.h> # endif # endif #endif #ifndef HAVE_STRUCT_TIMEVAL struct timeval { long tv_sec; long tv_usec; }; #endif int main() { struct timeval tv; gettimeofday(&tv,(void *)0); exit(0); }
6b15b72001-01-19Henrik Grubbström (Grubba)  ], [ pike_cv_func_gettimeofday_has_two_args=yes ], [ pike_cv_func_gettimeofday_has_two_args=no ], [ AC_TRY_LINK([ #if TIME_WITH_SYS_TIME # include <sys/time.h> # include <time.h> #else # if HAVE_SYS_TIME_H # include <sys/time.h> # else # if HAVE_TIME_H # include <time.h> # endif # endif #endif #ifndef HAVE_STRUCT_TIMEVAL struct timeval { long tv_sec; long tv_usec; }; #endif ], [ { struct timeval tv; gettimeofday(&tv,(void *)0); exit(0); } ], [ pike_cv_func_gettimeofday_has_two_args=yes ], [pike_cv_func_gettimeofday_has_two_args=no]) ]) ])
e0b9561996-07-02Fredrik Hübinette (Hubbe) 
06983f1996-09-22Fredrik Hübinette (Hubbe) if test $pike_cv_func_gettimeofday_has_two_args = yes; then
e0b9561996-07-02Fredrik Hübinette (Hubbe)  AC_DEFINE(GETTIMEOFDAY_TAKES_TWO_ARGS) fi
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_MSG_RESULT($pike_cv_func_gettimeofday_has_two_args)
067bc11996-06-21Fredrik Hübinette (Hubbe) 
bbc16c2000-08-29Mirar (Pontus Hagland) if test "x$ac_cv_func_gethrtime" != "xyes"; then AC_MSG_CHECKING(if we can make gethrtime by the RDTSC instruction) AC_CACHE_VAL(pike_cv_own_gethrtime_rdtsc, [ AC_TRY_RUN([ #include <unistd.h>
7b5f512001-02-05Mirar (Pontus Hagland) #include <stdio.h>
bbc16c2000-08-29Mirar (Pontus Hagland) #include <sys/time.h> static long long hrtime_rtsc_zero;
7b5f512001-02-05Mirar (Pontus Hagland) static long long hrtime_rtsc_last; static long long hrtime_max;
bbc16c2000-08-29Mirar (Pontus Hagland) static struct timeval hrtime_timeval_zero; static long double hrtime_conv=0.0;
7b5f512001-02-05Mirar (Pontus Hagland) #define GETTIMEOFDAY(PTR) gettimeofday(PTR,NULL)
bbc16c2000-08-29Mirar (Pontus Hagland) #define RTSC(x) \ __asm__ __volatile__ ( "rdtsc" \ :"=a" (((unsigned long*)&x)[0]), \ "=d" (((unsigned long*)&x)[1])) void own_gethrtime_init() {
7b5f512001-02-05Mirar (Pontus Hagland)  GETTIMEOFDAY(&hrtime_timeval_zero);
bbc16c2000-08-29Mirar (Pontus Hagland)  RTSC(hrtime_rtsc_zero);
7b5f512001-02-05Mirar (Pontus Hagland)  hrtime_rtsc_last=hrtime_rtsc_zero; hrtime_max=0;
bbc16c2000-08-29Mirar (Pontus Hagland) }
7b5f512001-02-05Mirar (Pontus Hagland) int own_gethrtime_update(struct timeval *ptr)
bbc16c2000-08-29Mirar (Pontus Hagland) { long long td,t,now;
7b5f512001-02-05Mirar (Pontus Hagland)  GETTIMEOFDAY(ptr);
bbc16c2000-08-29Mirar (Pontus Hagland)  RTSC(now); td=((long long)ptr->tv_sec-hrtime_timeval_zero.tv_sec)*1000000000+ ((long long)ptr->tv_usec-hrtime_timeval_zero.tv_usec)*1000;
7b5f512001-02-05Mirar (Pontus Hagland)  hrtime_rtsc_last=now;
bbc16c2000-08-29Mirar (Pontus Hagland)  t=now-hrtime_rtsc_zero; if (t) hrtime_conv=((long double)td)/t;
7b5f512001-02-05Mirar (Pontus Hagland)  return 1;
bbc16c2000-08-29Mirar (Pontus Hagland) }
7b5f512001-02-05Mirar (Pontus Hagland) /* this is very sensitive to the compiler; keep all crap */
bbc16c2000-08-29Mirar (Pontus Hagland) long long gethrtime() { long long now;
7b5f512001-02-05Mirar (Pontus Hagland)  struct timeval tv;
bbc16c2000-08-29Mirar (Pontus Hagland) 
7b5f512001-02-05Mirar (Pontus Hagland)  if (hrtime_conv==0.0) { if (!own_gethrtime_update(&tv)) /* not calibrated yet */ { return hrtime_max= ((long long)tv.tv_sec-hrtime_timeval_zero.tv_sec)*1000000000+ ((long long)tv.tv_usec-hrtime_timeval_zero.tv_usec)*1000; } }
bbc16c2000-08-29Mirar (Pontus Hagland)  RTSC(now);
7b5f512001-02-05Mirar (Pontus Hagland)  if (now-hrtime_rtsc_last > 2000000000) { own_gethrtime_update(&tv); return gethrtime(); } now = (long long) ( (long double)(now-hrtime_rtsc_zero) * hrtime_conv ); if (now<hrtime_max) now=hrtime_max; return hrtime_max=now;
bbc16c2000-08-29Mirar (Pontus Hagland) }
7b5f512001-02-05Mirar (Pontus Hagland) #include <stdio.h>
bbc16c2000-08-29Mirar (Pontus Hagland) int main() { struct timeval tv1,tv2;
e886b12001-01-13Mirar (Pontus Hagland)  long long td,t1,t2;
bbc16c2000-08-29Mirar (Pontus Hagland)  own_gethrtime_init();
e886b12001-01-13Mirar (Pontus Hagland)  usleep(10);
7b5f512001-02-05Mirar (Pontus Hagland)  own_gethrtime_update(&tv2);
e886b12001-01-13Mirar (Pontus Hagland)  t1=gethrtime();
bbc16c2000-08-29Mirar (Pontus Hagland)  gettimeofday(&tv1,NULL); for (;;) /* busy loop */ {
7b5f512001-02-05Mirar (Pontus Hagland)  GETTIMEOFDAY(&tv2);
bbc16c2000-08-29Mirar (Pontus Hagland)  td=((long long)tv2.tv_sec-tv1.tv_sec)*1000000000+ ((long long)tv2.tv_usec-tv1.tv_usec)*1000; if (td>1000000) break; } t2=gethrtime();
7b5f512001-02-05Mirar (Pontus Hagland) /* printf("t2-t1=%lld\n",t2-t1); */
e886b12001-01-13Mirar (Pontus Hagland)  if (t2==hrtime_rtsc_zero || t2-t1>1100000 || t2-t1<900000) return 1;
bbc16c2000-08-29Mirar (Pontus Hagland) 
e886b12001-01-13Mirar (Pontus Hagland)  return 0;
7b5f512001-02-05Mirar (Pontus Hagland) }], pike_cv_own_gethrtime_rdtsc=yes,
df44622000-08-29Henrik Grubbström (Grubba)  pike_cv_own_gethrtime_rdtsc=no, pike_cv_own_gethrtime_rdtsc=no)
bbc16c2000-08-29Mirar (Pontus Hagland)  ]) if test "x$pike_cv_own_gethrtime_rdtsc" = "xyes"; then AC_MSG_RESULT(yes) AC_DEFINE(OWN_GETHRTIME) AC_DEFINE(OWN_GETHRTIME_RDTSC) AC_DEFINE(HAVE_GETHRTIME) else AC_MSG_RESULT([no]) fi fi
067bc11996-06-21Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(if struct tm has tm_gmtoff)
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_CACHE_VAL(pike_cv_struct_tm_has_gmtoff,[
658f1a1997-01-26Fredrik Hübinette (Hubbe) AC_TRY_COMPILE([
067bc11996-06-21Fredrik Hübinette (Hubbe) #ifdef TM_IN_SYS_TIME #include <sys/time.h> #else
a285921998-09-27Henrik Grubbström (Grubba) #include <time.h> #endif
067bc11996-06-21Fredrik Hübinette (Hubbe) ],[ int _tz; struct tm foo; _tz=foo->tm_gmtoff;
06983f1996-09-22Fredrik Hübinette (Hubbe) ],pike_cv_struct_tm_has_gmtoff=yes,pike_cv_struct_tm_has_gmtoff=no)
067bc11996-06-21Fredrik Hübinette (Hubbe) ])
06983f1996-09-22Fredrik Hübinette (Hubbe) if test "$pike_cv_struct_tm_has_gmtoff" = "yes"; then
067bc11996-06-21Fredrik Hübinette (Hubbe)  AC_DEFINE(STRUCT_TM_HAS_GMTOFF) fi
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_MSG_RESULT($pike_cv_struct_tm_has_gmtoff)
067bc11996-06-21Fredrik Hübinette (Hubbe) 
c69eb51996-09-29Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(for USHRT_MAX definition) AC_CACHE_VAL(pike_cv_ushrt_max_is_defined,[ AC_EGREP_CPP(yes,[ #include <limits.h> #ifdef USHRT_MAX yes #endif ],pike_cv_ushrt_max_is_defined=yes,pike_cv_ushrt_max_is_defined=no) ]) if test "$pike_cv_ushrt_max_is_defined" = "no" ; then AC_DEFINE(USHRT_MAX,65535) fi AC_MSG_RESULT($pike_cv_ushrt_max_is_defined)
067bc11996-06-21Fredrik Hübinette (Hubbe) 
5267b71995-08-09Fredrik Hübinette (Hubbe) define(MY_CHECK_HEADERS, [ AC_MSG_CHECKING(for $1 declaration)
06983f1996-09-22Fredrik Hübinette (Hubbe)  AC_CACHE_VAL(pike_cv_decl_$1,
5267b71995-08-09Fredrik Hübinette (Hubbe)  [
06983f1996-09-22Fredrik Hübinette (Hubbe)  pike_cv_decl_$1=nonexistant
5267b71995-08-09Fredrik Hübinette (Hubbe)  for a in $2 do
9af34a1997-11-30Henrik Grubbström (Grubba)  AC_EGREP_HEADER($1,$a,[ pike_cv_decl_$1=existant; break ])
5267b71995-08-09Fredrik Hübinette (Hubbe)  done ])
06983f1996-09-22Fredrik Hübinette (Hubbe)  AC_MSG_RESULT($pike_cv_decl_$1) if test "$pike_cv_decl_$1" = nonexistant; then
5267b71995-08-09Fredrik Hübinette (Hubbe)  AC_DEFINE(translit($1,[a-z],[A-Z])[]_DECL_MISSING) fi ]) MY_CHECK_HEADERS(strchr,string.h unistd.h stdlib.h) MY_CHECK_HEADERS(malloc,memory.h unistd.h stdlib.h)
2043ba1998-02-10Fredrik Hübinette (Hubbe) MY_CHECK_HEADERS(getpeername,sys/socket.h sys/socketvar.h sys/socketio.h winsock.h winsock2.h)
5267b71995-08-09Fredrik Hübinette (Hubbe) MY_CHECK_HEADERS(popen,stdio.h unistd.h) MY_CHECK_HEADERS(getenv,unistd.h stdlib.h)
2043ba1998-02-10Fredrik Hübinette (Hubbe) MY_CHECK_HEADERS(gethostname,unistd.h netdb.h winsock.h winsock2.h)
5267b71995-08-09Fredrik Hübinette (Hubbe)  AC_ALLOCA
6930181996-02-25Fredrik Hübinette (Hubbe) AC_C_CONST AC_C_INLINE
5267b71995-08-09Fredrik Hübinette (Hubbe) 
9b372f1998-09-05Henrik Grubbström (Grubba) AC_CHECK_FUNCS(ualarm setitimer)
5267b71995-08-09Fredrik Hübinette (Hubbe) 
9b372f1998-09-05Henrik Grubbström (Grubba) if test "x$ac_cv_func_ualarm" = "xyes"; then AC_MSG_CHECKING(no of arguments to ualarm) AC_CACHE_VAL(pike_cv_ualarm_takes_two_args, [ AC_TRY_COMPILE([ #ifdef HAVE_UNISTD_H #include <unistd.h> #endif /* HAVE_UNISTD_H */ ],[
e16ff51996-12-05Fredrik Hübinette (Hubbe)  ualarm(0,0);
9b372f1998-09-05Henrik Grubbström (Grubba)  ],pike_cv_ualarm_takes_two_args=yes,pike_cv_ualarm_takes_two_args=no) ]) if test "$pike_cv_ualarm_takes_two_args" = yes; then AC_MSG_RESULT(2) AC_DEFINE(UALARM_TAKES_TWO_ARGS) else AC_MSG_RESULT(1) fi fi
5267b71995-08-09Fredrik Hübinette (Hubbe) 
d7be5b1997-01-28Fredrik Hübinette (Hubbe) ########################################################################
2ee6691999-01-07Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(stack direction) AC_CACHE_VAL(pike_cv_hardware_stack_direction, [
6b15b72001-01-19Henrik Grubbström (Grubba)  AC_TRY_RUN([
46d5c52000-02-03Henrik Grubbström (Grubba) #include <stdio.h>
2ee6691999-01-07Fredrik Hübinette (Hubbe) static int find_stack_direction(void *foo) { if (((void *)&foo) > foo) { return 1; } else { return -1; } }
46d5c52000-02-03Henrik Grubbström (Grubba) int main() { void *bar; exit( find_stack_direction(&bar) > 0); }
6b15b72001-01-19Henrik Grubbström (Grubba)  ], [ pike_cv_hardware_stack_direction=down ], [ pike_cv_hardware_stack_direction=up ], [ AC_MSG_WARN([defaulting to down.]) pike_cv_hardware_stack_direction=down ])
2ee6691999-01-07Fredrik Hübinette (Hubbe) ]) AC_MSG_RESULT($pike_cv_hardware_stack_direction) if grep STACK_DIRECTION confdefs.h >/dev/null 2>&1; then : else if test "x$pike_cv_hardware_stack_direction" = "xup" ; then AC_DEFINE(STACK_DIRECTION, 1) else AC_DEFINE(STACK_DIRECTION, -1) fi fi
07513e1996-10-04Fredrik Hübinette (Hubbe) ########################################################################
5267b71995-08-09Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(byteorder)
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_CACHE_VAL(pike_cv_hardware_byteorder,
5267b71995-08-09Fredrik Hübinette (Hubbe) [ AC_TRY_RUN([ #include <stdio.h> int main() {
5c8e891995-10-29Fredrik Hübinette (Hubbe) #if SIZEOF_INT == 4
5267b71995-08-09Fredrik Hübinette (Hubbe) #define T int #else #define T long #endif FILE *f; T a; int e; for(e=0;e<sizeof(T);e++) ((char *)&a)[e]=(e+1) % 10; f=fopen("conftest.out.2","w"); for(e=0;e<sizeof(T);e++) { fprintf(f,"%d",(int)(a & 255)); a>>=8; } fprintf(f,"\n"); fclose(f); return 0; }],
06983f1996-09-22Fredrik Hübinette (Hubbe) pike_cv_hardware_byteorder=`cat conftest.out.2`
5267b71995-08-09Fredrik Hübinette (Hubbe) ,
06983f1996-09-22Fredrik Hübinette (Hubbe) pike_cv_hardware_byteorder=0
75920f1997-12-28Fredrik Hübinette (Hubbe) , pike_cv_hardware_byteorder=0
5267b71995-08-09Fredrik Hübinette (Hubbe) )])
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_MSG_RESULT($pike_cv_hardware_byteorder)
71f3a21998-11-22Fredrik Hübinette (Hubbe) AC_DEFINE_UNQUOTED(PIKE_BYTEORDER,$pike_cv_hardware_byteorder)
5267b71995-08-09Fredrik Hübinette (Hubbe) 
6a36472000-12-19Marcus Comstedt ######################################################################## AC_MSG_CHECKING(INT32 alignment) AC_CACHE_VAL(pike_cv_hardware_alignment, [ AC_TRY_RUN([ #include <stdio.h> #if SIZEOF_SHORT >= 4 #define INT32 short #else #if SIZEOF_INT >= 4 #define INT32 int #else #define INT32 long #endif #endif struct x { char a; INT32 b; }; int main(int argc, char *argv[]) { FILE f; struct x x; if(!(f=fopen("conftest.out.2","w"))) return 1; fprintf(f, "%u\n", (unsigned int)(((char *)&x.b)-((char*)&x))); fclose(f); return 0; }], pike_cv_hardware_alignment=`cat conftest.out.2`, pike_cv_hardware_alignment=4, pike_cv_hardware_alignment=4 )]) AC_MSG_RESULT($pike_cv_hardware_alignment) AC_DEFINE_UNQUOTED(PIKE_INT32_ALIGNMENT,$pike_cv_hardware_alignment)
05030b1998-11-18Marcus Comstedt ######################################################################## MY_CHECK_FUNCTION(fork, [ #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif #ifdef HAVE_UNISTD_H #include <unistd.h> #endif
1a3f882000-08-21Henrik Grubbström (Grubba) ], [
05030b1998-11-18Marcus Comstedt  exit(fork()==-1);
1a3f882000-08-21Henrik Grubbström (Grubba) ])
a3c9a72000-10-13Fredrik Hübinette (Hubbe)  ######################################################################## MY_CHECK_FUNCTION(PTHREAD_MUTEX_RECURSIVE, [ #include <pthread.h> ], [ PTHREAD_MUTEX_RECURSIVE; exit(0); ]) ######################################################################## MY_CHECK_FUNCTION(PTHREAD_MUTEX_RECURSIVE_NP, [ #include <pthread.h> ], [ PTHREAD_MUTEX_RECURSIVE_NP; exit(0); ])
4bcc441998-07-22Fredrik Hübinette (Hubbe) ######################################################################## MY_CHECK_FUNCTION(fpsetmask, [ #include <math.h> #ifdef HAVE_FLOATINGPOINT_H #include <floatingpoint.h> #endif #ifdef HAVE_IEEEFP_H #include <ieeefp.h> #endif
1a3f882000-08-21Henrik Grubbström (Grubba) ], [
4bcc441998-07-22Fredrik Hübinette (Hubbe)  fpsetmask(0); exit(0);
1a3f882000-08-21Henrik Grubbström (Grubba) ])
07513e1996-10-04Fredrik Hübinette (Hubbe) ########################################################################
b36a452000-03-28Henrik Grubbström (Grubba) MY_CHECK_FUNCTION(fpsetround, [ #include <math.h> #ifdef HAVE_FLOATINGPOINT_H #include <floatingpoint.h> #endif #ifdef HAVE_IEEEFP_H #include <ieeefp.h> #endif #ifndef FP_RN #define FP_RN 0 #endif /* FP_RN */
1a3f882000-08-21Henrik Grubbström (Grubba) ], [
b36a452000-03-28Henrik Grubbström (Grubba)  fpsetround(FP_RN); exit(0);
1a3f882000-08-21Henrik Grubbström (Grubba) ])
b36a452000-03-28Henrik Grubbström (Grubba) ########################################################################
e1184f2001-01-24Marcus Comstedt MY_CHECK_FUNCTION(isless, [ #include <math.h> #ifdef HAVE_FLOATINGPOINT_H #include <floatingpoint.h> #endif #ifdef HAVE_IEEEFP_H #include <ieeefp.h> #endif ], [ int t = isless(0.0, 0.0); exit(0); ]) ########################################################################
07513e1996-10-04Fredrik Hübinette (Hubbe) 
de16081997-06-03Fredrik Hübinette (Hubbe) MY_CHECK_FUNCTION(dlopen, [ #include <dlfcn.h>
1a3f882000-08-21Henrik Grubbström (Grubba) ], [
de16081997-06-03Fredrik Hübinette (Hubbe)  dlopen(0, 0); exit(0);
1a3f882000-08-21Henrik Grubbström (Grubba) ])
4bcc441998-07-22Fredrik Hübinette (Hubbe) ########################################################################
de16081997-06-03Fredrik Hübinette (Hubbe) 
c411dc1997-04-21Fredrik Hübinette (Hubbe) MY_CHECK_FUNCTION(ldexp, [ #include <math.h>
1a3f882000-08-21Henrik Grubbström (Grubba) ], [
c411dc1997-04-21Fredrik Hübinette (Hubbe)  double x; int p; for(x=0.0;x<2.0;x+=1.0/64.0) for(p=-6;p<7;p++) if(ldexp(x,p) != x*pow(2.0, (double)p)) exit(1); exit(0);
1a3f882000-08-21Henrik Grubbström (Grubba) ])
c411dc1997-04-21Fredrik Hübinette (Hubbe) 
22c21e1999-06-19Fredrik Hübinette (Hubbe) ######################################################################## MY_CHECK_FUNCTION(rint, [ #include <math.h>
b36a452000-03-28Henrik Grubbström (Grubba) #ifdef HAVE_FLOATINGPOINT_H #include <floatingpoint.h> #endif #ifdef HAVE_IEEEFP_H #include <ieeefp.h> #endif /* HAVE_IEEEFP_H */
1a3f882000-08-21Henrik Grubbström (Grubba) ], [
b36a452000-03-28Henrik Grubbström (Grubba) #ifdef HAVE_FPSETROUND /* Round to nearest */ #ifndef FP_RN #define FP_RN 0 #endif /* FP_RN */ fpsetround(FP_RN); #endif /* HAVE_FPSETROUND */
22c21e1999-06-19Fredrik Hübinette (Hubbe)  if(rint(0.1) != 0.0 || rint(0.6) != 1.0) exit(1); exit(0);
1a3f882000-08-21Henrik Grubbström (Grubba) ])
22c21e1999-06-19Fredrik Hübinette (Hubbe) 
c411dc1997-04-21Fredrik Hübinette (Hubbe) ######################################################################## MY_CHECK_FUNCTION(frexp, [ #include <math.h>
1a3f882000-08-21Henrik Grubbström (Grubba) ], [
c411dc1997-04-21Fredrik Hübinette (Hubbe)  double x,y;
1a631e1997-04-22Fredrik Hübinette (Hubbe)  int p,e;
c411dc1997-04-21Fredrik Hübinette (Hubbe) 
1a631e1997-04-22Fredrik Hübinette (Hubbe)  x=frexp(1.0, &e);
3b7ea31998-07-22Fredrik Hübinette (Hubbe)  if(x * pow(2.0,(double)e) != 1.0) exit(3);
1a631e1997-04-22Fredrik Hübinette (Hubbe)  p=-7;
c411dc1997-04-21Fredrik Hübinette (Hubbe)  for(x=3.0/4.0*pow(2.0,(double)p);x<50000.0;x*=2.0,p++) { if(frexp(x, &e)!=3.0/4.0) exit(1);
1a631e1997-04-22Fredrik Hübinette (Hubbe)  if(e!=p) exit(2);
c411dc1997-04-21Fredrik Hübinette (Hubbe)  } exit(0);
1a3f882000-08-21Henrik Grubbström (Grubba) ])
c411dc1997-04-21Fredrik Hübinette (Hubbe) 
9649491998-02-27Fredrik Hübinette (Hubbe) ############################################################################# MY_CHECK_FUNCTION(GetSystemTimeAsFileTime, [ #include <windows.h> #include <winbase.h>
1a3f882000-08-21Henrik Grubbström (Grubba) ], [
9649491998-02-27Fredrik Hübinette (Hubbe)  FILETIME f; GetSystemTimeAsFileTime(&f); exit(0); ]) ############################################################################# MY_CHECK_FUNCTION(gethostname, [ #ifdef HAVE_UNISTD_H #include <unistd.h> #endif #ifdef HAVE_WINSOCK_H #include <winsock.h> #endif
1a3f882000-08-21Henrik Grubbström (Grubba) ], [
9649491998-02-27Fredrik Hübinette (Hubbe)  char buffer[10000]; char *x=gethostname(buffer,sizeof(buffer)); exit(0); ]) ############################################################################# MY_CHECK_FUNCTION(strcoll, [ #include <string.h> #include <locale.h>
1a3f882000-08-21Henrik Grubbström (Grubba) ], [
9649491998-02-27Fredrik Hübinette (Hubbe)  setlocale(LC_CTYPE, "ISO-8859-1"); exit(strcoll("abc", "def") >= 0 || strcoll("ABC", "DEF") >= 0 || strcoll("ABC", "ABCD") >= 0 || strcoll("ABCD", "ABC") <= 0 || strcoll("*^#", "*^#") != 0 || strcoll("123", "456") >= 0); ])
c411dc1997-04-21Fredrik Hübinette (Hubbe) ######################################################################## MY_CHECK_FUNCTION(memmem,
5267b71995-08-09Fredrik Hübinette (Hubbe) [ #include <string.h> char *a="foo bar gazonk"; char *b="foo"; char *c="bar"; char *d="gazonk";
1a3f882000-08-21Henrik Grubbström (Grubba) ], [
c463961998-09-27Henrik Grubbström (Grubba)  if(((char *)memmem(b,strlen(b),a,strlen(a)))!=a || ((char *)memmem(c,strlen(c),a,strlen(a)))!=(a+4) || ((char *)memmem(d,strlen(d),a,strlen(a)))!=(a+8) || ((char *)memmem(d,0,a,strlen(a)))!=a ||
5267b71995-08-09Fredrik Hübinette (Hubbe)  memmem(d,strlen(d)+1,a,strlen(a))!=0) exit(1); exit(0);
c411dc1997-04-21Fredrik Hübinette (Hubbe) ])
5267b71995-08-09Fredrik Hübinette (Hubbe) 
c411dc1997-04-21Fredrik Hübinette (Hubbe) ########################################################################
5267b71995-08-09Fredrik Hübinette (Hubbe) 
7a5e471999-11-22Fredrik Hübinette (Hubbe) MY_CHECK_FUNCTION(memcpy, [ #include <string.h> char *a="foo bar gazonk"; char foo[23];
1a3f882000-08-21Henrik Grubbström (Grubba) ], [
7a5e471999-11-22Fredrik Hübinette (Hubbe)  memcpy(foo, a, strlen(a)+1); memcpy(foo, a+4, 3); if(strcmp(foo,"bar bar gazonk")) exit(1); exit(0); ]) ######################################################################## MY_CHECK_FUNCTION(memset, [
c4dc222000-11-25Henrik Grubbström (Grubba) #ifdef HAVE_STDDEF_H #include <stddef.h> #endif /* HAVE_STDDEF_H */ #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif /* HAVE_SYS_TYPES_H */ #include <stdio.h>
7a5e471999-11-22Fredrik Hübinette (Hubbe) #include <string.h> char foo[23];
0e85fb2000-08-28Henrik Grubbström (Grubba)  struct pike_string { int refs; int size_shift; ptrdiff_t len; size_t hval; struct pike_string *next; char str[1]; }; struct pike_string *begin_shared_string(int len) {
c4dc222000-11-25Henrik Grubbström (Grubba)  return malloc(sizeof(struct pike_string) + len);
0e85fb2000-08-28Henrik Grubbström (Grubba) }
1a3f882000-08-21Henrik Grubbström (Grubba) ], [
5341702000-08-28Henrik Grubbström (Grubba)  int i;
0e85fb2000-08-28Henrik Grubbström (Grubba)  struct pike_string *str;
c4dc222000-11-25Henrik Grubbström (Grubba)  ptrdiff_t len;
0e85fb2000-08-28Henrik Grubbström (Grubba) 
7a5e471999-11-22Fredrik Hübinette (Hubbe)  memset(foo, 0, 11); memset(foo, 'a', 10); memset(foo, 'b', 5);
c4dc222000-11-25Henrik Grubbström (Grubba)  if(strcmp(foo,"bbbbbaaaaa")) { fprintf(stderr, "1\n"); exit(1); }
5341702000-08-28Henrik Grubbström (Grubba)  memset(foo, 0, 6); for (i=6; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (foo[i]) { fprintf(stderr, "2\n"); exit(1); }
5341702000-08-28Henrik Grubbström (Grubba)  }
08d51f2000-08-28Henrik Grubbström (Grubba)  memset(foo+1, 1, 6); for (i=6; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (foo[i+1] != 1) { fprintf(stderr, "3\n"); exit(1); }
08d51f2000-08-28Henrik Grubbström (Grubba)  } memset(foo+2, 0, 6); for (i=6; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (foo[i+2]) { fprintf(stderr, "4\n"); exit(1); }
08d51f2000-08-28Henrik Grubbström (Grubba)  } memset(foo+3, 1, 6); for (i=6; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (foo[i+3] != 1) { fprintf(stderr, "5\n"); exit(1); }
08d51f2000-08-28Henrik Grubbström (Grubba)  }
d21a452000-08-28Henrik Grubbström (Grubba)  memset(foo+4, 0, 6); for (i=6; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (foo[i+4]) { fprintf(stderr, "6\n"); exit(1); }
d21a452000-08-28Henrik Grubbström (Grubba)  } memset(foo+5, 1, 6); for (i=6; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (foo[i+5] != 1) { fprintf(stderr, "7\n"); exit(1); }
d21a452000-08-28Henrik Grubbström (Grubba)  } memset(foo+6, 0, 6); for (i=6; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (foo[i+6]) { fprintf(stderr, "8\n"); exit(1); }
d21a452000-08-28Henrik Grubbström (Grubba)  } memset(foo+7, 1, 6); for (i=6; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (foo[i+7] != 1) { fprintf(stderr, "9\n"); exit(1); }
d21a452000-08-28Henrik Grubbström (Grubba)  }
0e85fb2000-08-28Henrik Grubbström (Grubba)  len = 6; str = begin_shared_string(len); if (!str) exit(1); for (i=len; i--;) { str->str[i] = ~0; }
c4dc222000-11-25Henrik Grubbström (Grubba)  memset(str->str, 0, len);
0e85fb2000-08-28Henrik Grubbström (Grubba)  for (i = len; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (str->str[i]) { fprintf(stderr, "string\n"); exit(1); }
0e85fb2000-08-28Henrik Grubbström (Grubba)  } free(str);
7a5e471999-11-22Fredrik Hübinette (Hubbe)  exit(0); ]) ########################################################################
c411dc1997-04-21Fredrik Hübinette (Hubbe) MY_CHECK_FUNCTION(memmove,
5267b71995-08-09Fredrik Hübinette (Hubbe) [ #include <string.h> char buf[100];
1a3f882000-08-21Henrik Grubbström (Grubba) ], [
5267b71995-08-09Fredrik Hübinette (Hubbe)  strcpy(buf,"foo bar gazonk elefantsnabel."); if(strcmp(buf,"foo bar gazonk elefantsnabel.")) exit(1);
cb22561995-10-11Fredrik Hübinette (Hubbe)  memmove(buf,buf+1,7);
5267b71995-08-09Fredrik Hübinette (Hubbe)  if(strcmp(buf,"oo bar gazonk elefantsnabel.")) exit(1); memmove(buf+1,buf+1,9); if(strcmp(buf,"oo bar gazonk elefantsnabel.")) exit(1); memmove(buf+1,buf,11); if(strcmp(buf,"ooo bar gaznk elefantsnabel.")) exit(1); exit(0);
c411dc1997-04-21Fredrik Hübinette (Hubbe) ])
5267b71995-08-09Fredrik Hübinette (Hubbe) 
07513e1996-10-04Fredrik Hübinette (Hubbe) ########################################################################
c411dc1997-04-21Fredrik Hübinette (Hubbe) MY_CHECK_FUNCTION(isspace, [ #include <ctype.h>
1a3f882000-08-21Henrik Grubbström (Grubba) ], [
c411dc1997-04-21Fredrik Hübinette (Hubbe)  if(isspace(' ')) exit(0); exit(1); ]) #############################################################################
85f59e1998-01-08Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(if we can declare environ) AC_CACHE_VAL(pike_cv_declare_environ,[ AC_TRY_COMPILE([ #include <stdlib.h> ],[ extern char **environ; exit(0); ],pike_cv_declare_environ=yes,pike_cv_declare_environ=no,pike_cv_declare_environ=yes) ]) AC_MSG_RESULT($pike_cv_declare_environ) if test "x$pike_cv_declare_environ" = xyes ; then AC_DEFINE(DECLARE_ENVIRON) fi #############################################################################
c411dc1997-04-21Fredrik Hübinette (Hubbe) 
9dd2201998-05-17Henrik Grubbström (Grubba) AC_MSG_CHECKING([for union wait (old BSD convention)]) AC_CACHE_VAL(pike_cv_union_wait, [ AC_TRY_COMPILE([ #ifdef HAVE_SYS_WAIT_H #include <sys/wait.h>
d6980f1998-05-17Henrik Grubbström (Grubba) #endif /* HAVE_SYS_WAIT_H */
9dd2201998-05-17Henrik Grubbström (Grubba) ], [ union wait status; exit(0); ], pike_cv_union_wait=yes, pike_cv_union_wait=no) ]) AC_MSG_RESULT($pike_cv_union_wait) if test "x$pike_cv_union_wait" = "xyes" ; then
f376171998-05-22Henrik Grubbström (Grubba)  AC_MSG_CHECKING([whether union wait is really needed]) AC_CACHE_VAL(pike_cv_union_wait_needed, [ AC_TRY_COMPILE([ #ifdef HAVE_SYS_WAIT_H #include <sys/wait.h> #endif /* HAVE_SYS_WAIT_H */ ], [ int status; return WIFEXITED(status) || 0; ], pike_cv_union_wait_needed=no, pike_cv_union_wait_needed=yes) ])
efad7a1998-10-28Henrik Grubbström (Grubba)  AC_MSG_RESULT($pike_cv_union_wait_needed)
f376171998-05-22Henrik Grubbström (Grubba)  if test "x$pike_cv_union_wait_needed" = "xyes" ; then AC_DEFINE(HAVE_UNION_WAIT) else :; fi else :; fi
9dd2201998-05-17Henrik Grubbström (Grubba)  #############################################################################
5267b71995-08-09Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(how to extract an unsigned char)
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_CACHE_VAL(pike_cv_method_extract_uchar,
5267b71995-08-09Fredrik Hübinette (Hubbe) [ AC_TRY_RUN([
cb22561995-10-11Fredrik Hübinette (Hubbe) int main()
5267b71995-08-09Fredrik Hübinette (Hubbe) { char i,*p; i=-10; p=&i; if(*(unsigned char *)(p)!= 0x100 - 10) exit(1); exit(0); }
06983f1996-09-22Fredrik Hübinette (Hubbe) ],pike_cv_method_extract_uchar=by_cast,
75920f1997-12-28Fredrik Hübinette (Hubbe) pike_cv_method_extract_uchar=not_by_cast,
06983f1996-09-22Fredrik Hübinette (Hubbe) pike_cv_method_extract_uchar=not_by_cast)])
5267b71995-08-09Fredrik Hübinette (Hubbe) 
06983f1996-09-22Fredrik Hübinette (Hubbe) if test "$pike_cv_method_extract_uchar" = by_cast; then
5267b71995-08-09Fredrik Hübinette (Hubbe)  AC_MSG_RESULT(by cast) AC_DEFINE(EXTRACT_UCHAR_BY_CAST) else AC_MSG_RESULT(not by cast) fi
07513e1996-10-04Fredrik Hübinette (Hubbe) ########################################################################
5267b71995-08-09Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(how to extract a signed char)
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_CACHE_VAL(pike_cv_method_extract_char,
5267b71995-08-09Fredrik Hübinette (Hubbe) [ AC_TRY_RUN([
cb22561995-10-11Fredrik Hübinette (Hubbe) int main()
5267b71995-08-09Fredrik Hübinette (Hubbe) { char i,*p; i=-10; p=&i; if(*(signed char *)(p)!= -10) exit(1); exit(0); }
06983f1996-09-22Fredrik Hübinette (Hubbe) ],pike_cv_method_extract_char=by_cast,
75920f1997-12-28Fredrik Hübinette (Hubbe) pike_cv_method_extract_char=not_by_cast,
06983f1996-09-22Fredrik Hübinette (Hubbe) pike_cv_method_extract_char=not_by_cast)])
5267b71995-08-09Fredrik Hübinette (Hubbe) 
06983f1996-09-22Fredrik Hübinette (Hubbe) if test "$pike_cv_method_extract_char" = by_cast; then
5267b71995-08-09Fredrik Hübinette (Hubbe)  AC_MSG_RESULT(by cast) AC_DEFINE(EXTRACT_CHAR_BY_CAST) else AC_MSG_RESULT(not by cast) fi
9debfa1999-08-11Fredrik Hübinette (Hubbe) #############################################################################
c724c41999-08-12Henrik Grubbström (Grubba) if test "x$ac_cv_header_mmx_h" = xyes ; then
27da5c1999-09-23Fredrik Noring  AC_MSG_CHECKING(for working MMX)
9debfa1999-08-11Fredrik Hübinette (Hubbe) 
c724c41999-08-12Henrik Grubbström (Grubba)  AC_CACHE_VAL(pike_cv_sys_has_working_mmx, [ AC_TRY_LINK([
9debfa1999-08-11Fredrik Hübinette (Hubbe) #include <mmx.h>
c724c41999-08-12Henrik Grubbström (Grubba)  ],[ {
27da5c1999-09-23Fredrik Noring  int try_use_mmx;
dd50741999-10-25Per Hedbor  char a[8]; movq_m2r( *a, mm0 ); paddb_r2r( mm0, mm0 ); movq_r2m( mm0, *a );
27da5c1999-09-23Fredrik Noring  try_use_mmx=mmx_ok();
c724c41999-08-12Henrik Grubbström (Grubba)  } ], pike_cv_sys_has_working_mmx=yes,pike_cv_sys_has_working_mmx=no) ])
9debfa1999-08-11Fredrik Hübinette (Hubbe) 
c724c41999-08-12Henrik Grubbström (Grubba)  AC_MSG_RESULT($pike_cv_sys_has_working_mmx)
9debfa1999-08-11Fredrik Hübinette (Hubbe) 
e8f42f1999-08-12Henrik Grubbström (Grubba)  if test "x$pike_cv_sys_has_working_mmx" = xyes ; then AC_DEFINE(TRY_USE_MMX) else :; fi else :; fi
9debfa1999-08-11Fredrik Hübinette (Hubbe) 
d300821998-02-27Marcus Comstedt #############################################################################
71b44e1998-06-05Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(if float conversion can cause SIGFPE) AC_CACHE_VAL(pike_cv_sys_idiot_sigfpe, [ AC_TRY_RUN([ #include <math.h>
3b7ea31998-07-22Fredrik Hübinette (Hubbe) #ifdef HAVE_FLOATINGPOINT_H #include <floatingpoint.h> #endif #ifdef HAVE_IEEEFP_H #include <ieeefp.h> #endif
c371d41998-06-07Simon Coggins float foo_float = 0.0;
71b44e1998-06-05Fredrik Hübinette (Hubbe) int main(int argc, char **argv) {
c371d41998-06-07Simon Coggins  float x=2.0, y=-128.0;
3b7ea31998-07-22Fredrik Hübinette (Hubbe) #ifdef HAVE_FPSETMASK fpsetmask(0); #endif
c371d41998-06-07Simon Coggins  x = pow(2.0, -128.0); foo_float = x; if (x == 2.0) exit(1); x = pow(2.0, 1024.0); foo_float = x; if(x == 2.0) exit(1);
71b44e1998-06-05Fredrik Hübinette (Hubbe)  exit(0); }
e33f4c1998-06-28Henrik Grubbström (Grubba) ],pike_cv_sys_idiot_sigfpe=no,pike_cv_sys_idiot_sigfpe=yes, pike_cv_sys_idiot_sigfpe=yes)
71b44e1998-06-05Fredrik Hübinette (Hubbe) ]) if test $pike_cv_sys_idiot_sigfpe = yes ; then AC_MSG_RESULT(yes)
c371d41998-06-07Simon Coggins  IEEE_FLAG=no if test "x${GCC-}" = xyes ; then
71b44e1998-06-05Fredrik Hübinette (Hubbe)  AC_SYS_COMPILER_FLAG(-mieee, mieee, CFLAGS,[],IEEE_FLAG=yes)
c371d41998-06-07Simon Coggins  else
71b44e1998-06-05Fredrik Hübinette (Hubbe)  AC_SYS_COMPILER_FLAG(-ieee, ieee, CFLAGS,[],IEEE_FLAG=yes)
c371d41998-06-07Simon Coggins  fi TEST_IGNORE_SIGFPE=yes
71b44e1998-06-05Fredrik Hübinette (Hubbe) 
c371d41998-06-07Simon Coggins  if test $IEEE_FLAG = yes; then AC_MSG_CHECKING(if float conversion is still broken) AC_CACHE_VAL(pike_cv_sys_idiot_sigfpe_with_ieee,
71b44e1998-06-05Fredrik Hübinette (Hubbe) [
8aa31a1998-06-07Henrik Grubbström (Grubba)  OLD_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $OPTIMIZE"
71b44e1998-06-05Fredrik Hübinette (Hubbe)  AC_TRY_RUN([ #include <math.h>
c371d41998-06-07Simon Coggins 
3b7ea31998-07-22Fredrik Hübinette (Hubbe) #ifdef HAVE_FLOATINGPOINT_H #include <floatingpoint.h> #endif #ifdef HAVE_IEEEFP_H #include <ieeefp.h> #endif
c371d41998-06-07Simon Coggins float foo_float = 0.0;
71b44e1998-06-05Fredrik Hübinette (Hubbe) int main(int argc, char **argv) {
c371d41998-06-07Simon Coggins  float x=2.0, y=-128.0;
3b7ea31998-07-22Fredrik Hübinette (Hubbe) #ifdef HAVE_FPSETMASK fpsetmask(0); #endif
c371d41998-06-07Simon Coggins  x = pow(2.0, -128.0); foo_float = x; if (x == 2.0) exit(1); x = pow(2.0, 1024.0); foo_float = x; if(x == 2.0) exit(1);
71b44e1998-06-05Fredrik Hübinette (Hubbe)  exit(0); }
e33f4c1998-06-28Henrik Grubbström (Grubba) ],pike_cv_sys_idiot_sigfpe_with_ieee=no,pike_cv_sys_idiot_sigfpe_with_ieee=yes, pike_cv_sys_idiot_sigfpe_with_ieee=yes)
8aa31a1998-06-07Henrik Grubbström (Grubba)  CFLAGS="$OLD_CFLAGS"
71b44e1998-06-05Fredrik Hübinette (Hubbe) ])
c371d41998-06-07Simon Coggins  if test $pike_cv_sys_idiot_sigfpe_with_ieee = yes ; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) TEST_IGNORE_SIGFPE=no fi
71b44e1998-06-05Fredrik Hübinette (Hubbe) fi # IEEE_FLAG if test $TEST_IGNORE_SIGFPE = yes; then AC_MSG_CHECKING(if ignoring SIGFPE helps) AC_CACHE_VAL(pike_cv_sys_ignore_sigfpe, [
8aa31a1998-06-07Henrik Grubbström (Grubba)  OLD_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $OPTIMIZE"
71b44e1998-06-05Fredrik Hübinette (Hubbe) AC_TRY_RUN([
8aa31a1998-06-07Henrik Grubbström (Grubba) #include <signal.h>
71b44e1998-06-05Fredrik Hübinette (Hubbe) #include <math.h> int counter=0; RETSIGTYPE func(void) { if(counter++>10) exit(7); signal(SIGFPE,func); }
c371d41998-06-07Simon Coggins float foo_float = 0.0;
71b44e1998-06-05Fredrik Hübinette (Hubbe) int main(int argc, char **argv) {
c371d41998-06-07Simon Coggins  float x=2.0, y=-128.0;
71b44e1998-06-05Fredrik Hübinette (Hubbe)  signal(SIGFPE,func);
c371d41998-06-07Simon Coggins  x = pow(2.0, -128.0); foo_float = x; if (x == 2.0) exit(1); x = pow(2.0, 1024.0); foo_float = x; if(x == 2.0) exit(1);
71b44e1998-06-05Fredrik Hübinette (Hubbe)  exit(0); }
e33f4c1998-06-28Henrik Grubbström (Grubba) ],pike_cv_sys_ignore_sigfpe=yes,pike_cv_sys_ignore_sigfpe=no, pike_cv_sys_ignore_sigfpe=yes)
8aa31a1998-06-07Henrik Grubbström (Grubba)  CFLAGS="$OLD_CFLAGS"
71b44e1998-06-05Fredrik Hübinette (Hubbe) ]) if test "$pike_cv_sys_ignore_sigfpe" = yes; then AC_MSG_RESULT(yes) AC_DEFINE(IGNORE_SIGFPE) else AC_MSG_RESULT(no) fi fi # TEST_IGNORE_SIGFPE else AC_MSG_RESULT(no) fi # pike_cv_sys_idiot_sigfpe #############################################################################
5ff14f1998-05-25Marcus Comstedt define(float_check, [[ #include <math.h> #define TY $1 #define TEST_$1 #define TEST_$2 #define EXPECTED_SIZE_float 4 #define EXPECTED_SIZE_double 8 void check(TY n, char *pf, char *pd) { int i; char *p, *p2 = (char*)&n; #ifdef TEST_float p = pf; #else p = pd; #endif for(i=0; i<sizeof(TY); i++) #ifdef TEST_BIG if(p[i] != p2[i]) exit(1); #else if(p[i] != p2[sizeof(TY)-i-1]) exit(1); #endif } int main() { if(sizeof(TY)!=EXPECTED_SIZE_$1) exit(1); check((TY)0.0, "\000\000\000\000", "\000\000\000\000\000\000\000\000"); check((TY)1.0, "\077\200\000\000", "\077\360\000\000\000\000\000\000"); check((TY)-1.0, "\277\200\000\000", "\277\360\000\000\000\000\000\000"); check((TY)2.0, "\100\000\000\000", "\100\000\000\000\000\000\000\000"); check((TY)1.5, "\077\300\000\000", "\077\370\000\000\000\000\000\000"); check((TY)0.032999999821186065673828125, "\075\007\053\002", "\077\240\345\140\100\000\000\000"); exit(0); } ]]) AC_MSG_CHECKING(for type of float)
32cf262000-08-20Henrik Grubbström (Grubba) AC_CACHE_VAL(pike_cv_float_type, [ AC_TRY_RUN(float_check(float,BIG), pike_cv_float_type=ieee_big, [ AC_TRY_RUN(float_check(float,LITTLE), pike_cv_float_type=ieee_little, pike_cv_float_type=not_ieee, pike_cv_float_type=not_ieee) ], [
1f958f2000-08-21Henrik Grubbström (Grubba)  echo $ac_n "crosscompiling... $ac_c" 1>&6
32cf262000-08-20Henrik Grubbström (Grubba)  # Use some magical constants... cat > conftest.$ac_ext <<EOF dnl This sometimes fails to find confdefs.h, for some reason. dnl [#]line __oline__ "[$]0" [#]line __oline__ "configure" #include "confdefs.h" #include <stdio.h> float float_info[[]] = { 0.0, 14914788644012054221422592.0, 16305677175569252352.0, 0.0 }; EOF if AC_TRY_EVAL(ac_compile); then if test -f "conftest.$ac_objext"; then if strings "conftest.$ac_objext" | grep "iEeE_bIg" >/dev/null; then pike_cv_float_type=ieee_big else if strings "conftest.$ac_objext" | grep "EeEigIb_" >/dev/null; then pike_cv_float_type=ieee_little else pike_cv_float_type=not_ieee fi fi else AC_MSG_WARN([Object file not found.]) pike_cv_float_type=not_ieee fi else pike_cv_float_type=not_ieee fi
fdb6982000-08-20Henrik Grubbström (Grubba)  rm -rf conftest*
32cf262000-08-20Henrik Grubbström (Grubba)  ]) ])
5ff14f1998-05-25Marcus Comstedt if test "$pike_cv_float_type" = ieee_big; then AC_MSG_RESULT(IEEE big endian) AC_DEFINE(FLOAT_IS_IEEE_BIG) else if test "$pike_cv_float_type" = ieee_little; then AC_MSG_RESULT(IEEE little endian) AC_DEFINE(FLOAT_IS_IEEE_LITTLE) else AC_MSG_RESULT(not IEEE) fi fi AC_MSG_CHECKING(for type of double)
32cf262000-08-20Henrik Grubbström (Grubba) AC_CACHE_VAL(pike_cv_double_type, [ AC_TRY_RUN(float_check(double,BIG), pike_cv_double_type=ieee_big, [ AC_TRY_RUN(float_check(double,LITTLE), pike_cv_double_type=ieee_little, pike_cv_double_type=not_ieee, pike_cv_double_type=not_ieee) ], [
1f958f2000-08-21Henrik Grubbström (Grubba)  echo $ac_n "crosscompiling... $ac_c" 1>&6
32cf262000-08-20Henrik Grubbström (Grubba)  # Use some magical constants... cat > conftest.$ac_ext <<EOF dnl This sometimes fails to find confdefs.h, for some reason. dnl [#]line __oline__ "[$]0" [#]line __oline__ "configure" #include "confdefs.h" #include <stdio.h> double double_info[[]] = { 0.0, 12794738495187527498222028847205909954314554441725728393516969126669975252147490126864122090122288822751876426313291683594796075946303753742007913302630260537160845833197547903208108732031187791380480.0, 0.0 }; EOF if AC_TRY_EVAL(ac_compile); then if test -f "conftest.$ac_objext"; then if strings "conftest.$ac_objext" | grep "iEeE_bIg" >/dev/null; then pike_cv_double_type=ieee_big else if strings "conftest.$ac_objext" | grep "gIb_EeEi" >/dev/null; then pike_cv_double_type=ieee_little else pike_cv_double_type=not_ieee fi fi else AC_MSG_WARN([Object file not found.]) pike_cv_float_type=not_ieee fi else pike_cv_float_type=not_ieee fi
fdb6982000-08-20Henrik Grubbström (Grubba)  rm -rf conftest*
32cf262000-08-20Henrik Grubbström (Grubba)  ]) ])
5ff14f1998-05-25Marcus Comstedt if test "$pike_cv_double_type" = ieee_big; then AC_MSG_RESULT(IEEE big endian) AC_DEFINE(DOUBLE_IS_IEEE_BIG) else if test "$pike_cv_double_type" = ieee_little; then AC_MSG_RESULT(IEEE little endian) AC_DEFINE(DOUBLE_IS_IEEE_LITTLE) else AC_MSG_RESULT(not IEEE) fi fi #############################################################################
d300821998-02-27Marcus Comstedt AC_MSG_CHECKING(for volatile) AC_CACHE_VAL(pike_cv_volatile, [ AC_TRY_COMPILE([],[ volatile int foo=1;], pike_cv_volatile=yes,pike_cv_volatile=no) ]) if test "$pike_cv_volatile" = yes; then AC_MSG_RESULT(yes) AC_DEFINE(VOLATILE,volatile) else AC_MSG_RESULT(no) AC_DEFINE(VOLATILE,) fi
07513e1996-10-04Fredrik Hübinette (Hubbe) ########################################################################
93b8081995-11-02Fredrik Hübinette (Hubbe) 
61d3cf1998-02-27Marcus Comstedt AC_MSG_CHECKING(for sig_atomic_t) AC_CACHE_VAL(ac_cv_type_sig_atomic_t, [ AC_EGREP_CPP(sig_atomic_t, [ #ifdef HAVE_SIGNAL_H #include <signal.h> #endif
9c9bf22000-08-04Henrik Grubbström (Grubba) #ifdef HAVE_CRT_SIGNAL_H #include <crt/signal.h> #endif
61d3cf1998-02-27Marcus Comstedt #include <sys/types.h> #if STDC_HEADERS #include <stdlib.h> #include <stddef.h> #endif], ac_cv_type_sig_atomic_t=yes, ac_cv_type_sig_atomic_t=no)]) AC_MSG_RESULT($ac_cv_type_sig_atomic_t) if test x"$ac_cv_type_sig_atomic_t" = xno; then AC_DEFINE(sig_atomic_t, int) else : fi
c8a4ce1995-11-20Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(if signal handlers reset automatically)
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_CACHE_VAL(pike_cv_sys_signal_oneshot,
93b8081995-11-02Fredrik Hübinette (Hubbe) [ AC_TRY_RUN([
61d3cf1998-02-27Marcus Comstedt #ifdef HAVE_SIGNAL_H
93b8081995-11-02Fredrik Hübinette (Hubbe) #include <signal.h>
61d3cf1998-02-27Marcus Comstedt #endif #include <sys/types.h> #if STDC_HEADERS #include <stdlib.h> #include <stddef.h> #endif
d300821998-02-27Marcus Comstedt VOLATILE sig_atomic_t sigrun=0;
6077101999-05-15Henrik Grubbström (Grubba) RETSIGTYPE func(int sig) { write(2, "func called\n", sizeof("func called\n") - sizeof("")); sigrun=1; }
93b8081995-11-02Fredrik Hübinette (Hubbe)  int main() { #define sig SIGSEGV #ifdef HAVE_SIGACTION { struct sigaction action; action.sa_handler= func; sigfillset(&action.sa_mask); #ifdef SA_INTERRUPT action.sa_flags=SA_INTERRUPT; #endif sigaction(sig,&action,0); } #else #ifdef HAVE_SIGVEC { struct sigvec action; action.sv_handler= func; action.sv_mask=-1; #ifdef SV_INTERRUPT action.sv_flags=SV_INTERRUPT; #endif sigvec(sig,&action,0); } #else signal(sig, func); #endif #endif kill(getpid(), sig);
a3c9a72000-10-13Fredrik Hübinette (Hubbe) #ifdef HAVE_POLL while(!sigrun) poll(0,0,100); #else
93b8081995-11-02Fredrik Hübinette (Hubbe)  while(!sigrun) sleep(1);
a3c9a72000-10-13Fredrik Hübinette (Hubbe) #endif
93b8081995-11-02Fredrik Hübinette (Hubbe)  sigrun=0; kill(getpid(), sig);
a3c9a72000-10-13Fredrik Hübinette (Hubbe) #ifdef HAVE_POLL while(!sigrun) poll(0,0,100); #else
93b8081995-11-02Fredrik Hübinette (Hubbe)  while(!sigrun) sleep(1);
a3c9a72000-10-13Fredrik Hübinette (Hubbe) #endif
93b8081995-11-02Fredrik Hübinette (Hubbe)  sigrun=0; exit(0); }
75920f1997-12-28Fredrik Hübinette (Hubbe) ],pike_cv_sys_signal_oneshot=no,pike_cv_sys_signal_oneshot=yes,pike_cv_sys_signal_oneshot=yes)])
93b8081995-11-02Fredrik Hübinette (Hubbe) 
06983f1996-09-22Fredrik Hübinette (Hubbe) if test "$pike_cv_sys_signal_oneshot" = yes; then
93b8081995-11-02Fredrik Hübinette (Hubbe)  AC_MSG_RESULT(yes) AC_DEFINE(SIGNAL_ONESHOT) else AC_MSG_RESULT(no) fi
07513e1996-10-04Fredrik Hübinette (Hubbe) ########################################################################
93b8081995-11-02Fredrik Hübinette (Hubbe) 
5267b71995-08-09Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(available file descriptors)
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_CACHE_VAL(pike_cv_max_open_fd,
5267b71995-08-09Fredrik Hübinette (Hubbe) [ AC_TRY_RUN([ #include <stdio.h> #ifdef HAVE_SYS_TIME_H #include <sys/time.h> #endif #ifdef HAVE_SYS_RESOURCE_H #include <sys/resource.h> #endif #ifndef MAX_FD
c0d65d2000-05-20Per Hedbor #define MAX_FD 65536
5267b71995-08-09Fredrik Hübinette (Hubbe) #endif int main() { FILE *f;
f90e541995-08-17Fredrik Hübinette (Hubbe)  long limit;
5c8e891995-10-29Fredrik Hübinette (Hubbe) 
2a50961995-08-23Fredrik Hübinette (Hubbe) #if !defined(RLIMIT_NOFILE) && defined(RLIMIT_OFILE)
f90e541995-08-17Fredrik Hübinette (Hubbe) #define RLIMIT_NOFILE RLIMIT_OFILE #endif
5c8e891995-10-29Fredrik Hübinette (Hubbe) 
cb22561995-10-11Fredrik Hübinette (Hubbe) #if defined(HAVE_SETRLIMIT) && defined(RLIMIT_NOFILE)
5267b71995-08-09Fredrik Hübinette (Hubbe)  struct rlimit lim; if(getrlimit(RLIMIT_NOFILE,&lim)) { limit = MAX_FD; }else{
f90e541995-08-17Fredrik Hübinette (Hubbe)  if(lim.rlim_max == RLIM_INFINITY) {
c0d65d2000-05-20Per Hedbor  limit = 1024 * 1024 * 2; /* Noone needs more :-) */
f90e541995-08-17Fredrik Hübinette (Hubbe)  }else{ limit=lim.rlim_max;
c0d65d2000-05-20Per Hedbor  if(limit > 1024 * 1024 * 2) limit= 1024 * 1024 * 2;
f90e541995-08-17Fredrik Hübinette (Hubbe)  }
5267b71995-08-09Fredrik Hübinette (Hubbe)  } #else limit = MAX_FD; #endif f=fopen("conftest.out.2","w");
f90e541995-08-17Fredrik Hübinette (Hubbe)  fprintf(f,"%ld\n",(long)limit);
5267b71995-08-09Fredrik Hübinette (Hubbe)  fclose(f); return 0; } ],
06983f1996-09-22Fredrik Hübinette (Hubbe) pike_cv_max_open_fd=`cat conftest.out.2`
5267b71995-08-09Fredrik Hübinette (Hubbe) ,
06983f1996-09-22Fredrik Hübinette (Hubbe) pike_cv_max_open_fd=256
75920f1997-12-28Fredrik Hübinette (Hubbe) , pike_cv_max_open_fd=256
5267b71995-08-09Fredrik Hübinette (Hubbe) )])
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_MSG_RESULT($pike_cv_max_open_fd) AC_DEFINE_UNQUOTED(MAX_OPEN_FILEDESCRIPTORS,$pike_cv_max_open_fd)
5267b71995-08-09Fredrik Hübinette (Hubbe)  AC_MSG_CHECKING(full availability of struct rusage members)
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_CACHE_VAL(pike_cv_func_getrusage_full,
5267b71995-08-09Fredrik Hübinette (Hubbe) [ AC_TRY_LINK([ #include <sys/time.h> #ifdef HAVE_SYS_RUSAGE_H #include <sys/rusage.h> #endif #include <sys/resource.h> #ifndef RUSAGE_SELF #define RUSAGE_SELF 0 #endif ],[ struct rusage rus; long *v = (long *)main; getrusage(RUSAGE_SELF, &rus); *v++ = rus.ru_maxrss; *v++ = rus.ru_ixrss; *v++ = rus.ru_idrss; *v++ = rus.ru_isrss; *v++ = rus.ru_minflt; *v++ = rus.ru_majflt; *v++ = rus.ru_nswap; *v++ = rus.ru_inblock; *v++ = rus.ru_oublock; *v++ = rus.ru_msgsnd; *v++ = rus.ru_msgrcv; *v++ = rus.ru_nsignals; *v++ = rus.ru_nvcsw; *v++ = rus.ru_nivcsw; ],
06983f1996-09-22Fredrik Hübinette (Hubbe)  pike_cv_func_getrusage_full=yes
5267b71995-08-09Fredrik Hübinette (Hubbe) ,
06983f1996-09-22Fredrik Hübinette (Hubbe)  pike_cv_func_getrusage_full=no
5267b71995-08-09Fredrik Hübinette (Hubbe) )])
06983f1996-09-22Fredrik Hübinette (Hubbe) if test "$pike_cv_func_getrusage_full" = yes; then
5267b71995-08-09Fredrik Hübinette (Hubbe)  AC_MSG_RESULT(all there) else AC_MSG_RESULT(getrusage is restricted) AC_DEFINE(GETRUSAGE_RESTRICTED) fi
07513e1996-10-04Fredrik Hübinette (Hubbe) ########################################################################
d203541998-06-10Fredrik Hübinette (Hubbe) # # IRIX also has procfs support, but it it different, a separate test # should be made. /Hubbe #
07513e1996-10-04Fredrik Hübinette (Hubbe) 
2213471997-09-16Henrik Grubbström (Grubba) if test "$ac_cv_header_sys_procfs_h" = "yes"; then AC_MSG_CHECKING(getrusage() through procfs) AC_CACHE_VAL(pike_cv_getrusage_procfs, [ AC_TRY_COMPILE([
c5f17c1998-06-04Henrik Grubbström (Grubba) #ifndef _LARGEFILE_SOURCE # define _FILE_OFFSET_BITS 64 # define _LARGEFILE_SOURCE # define _LARGEFILE64_SOURCE 1 #endif
5267b71995-08-09Fredrik Hübinette (Hubbe) #include <sys/procfs.h> #include <sys/fcntl.h> int proc_fd;
d203541998-06-10Fredrik Hübinette (Hubbe) long tmp;
5267b71995-08-09Fredrik Hübinette (Hubbe) char proc_name[20];
c5f17c1998-06-04Henrik Grubbström (Grubba) prusage_t pru;
2213471997-09-16Henrik Grubbström (Grubba)  ],[ sprintf(proc_name, "/proc/%05d", getpid()); proc_fd = open(proc_name, O_RDONLY); ioctl(proc_fd, PIOCUSAGE, &pru);
d203541998-06-10Fredrik Hübinette (Hubbe)  tmp=pru.pr_utime.tv_sec;
2213471997-09-16Henrik Grubbström (Grubba)  ], pike_cv_getrusage_procfs=yes , pike_cv_getrusage_procfs=no ) ])
5267b71995-08-09Fredrik Hübinette (Hubbe) 
eb42e81997-09-16Henrik Grubbström (Grubba)  if test "$pike_cv_getrusage_procfs" = yes; then AC_MSG_RESULT(yes) AC_DEFINE(GETRUSAGE_THROUGH_PROCFS) else AC_MSG_RESULT(no) fi
5267b71995-08-09Fredrik Hübinette (Hubbe) fi
c411dc1997-04-21Fredrik Hübinette (Hubbe) #############################################################################
bdb5091996-09-25Fredrik Hübinette (Hubbe) 
76aa1f2000-03-25Fredrik Hübinette (Hubbe) if test "$ac_cv_getrusage_procfs" = "yes"; then AC_MSG_CHECKING(prstatus_t contains pr_brksize and pr_stksize) AC_CACHE_VAL(pike_cv_getrusage_procfs_prs, [ AC_TRY_COMPILE([ #ifndef _LARGEFILE_SOURCE # define _FILE_OFFSET_BITS 64 # define _LARGEFILE_SOURCE # define _LARGEFILE64_SOURCE 1 #endif #include <sys/procfs.h> #include <sys/fcntl.h> int proc_fd; long tmp; char proc_name[20]; prstatus_t prs; ],[ sprintf(proc_name, "/proc/%05d", getpid()); proc_fd = open(proc_name, O_RDONLY); ioctl(proc_fd, PIOCSTATUS, &prs); tmp=prs.pr_brksize + prs.pr_stksize; ], pike_cv_getrusage_procfs_prs=yes , pike_cv_getrusage_procfs_prs=no ) ]) if test "$pike_cv_getrusage_procfs_prs" = yes; then AC_MSG_RESULT(yes) AC_DEFINE(GETRUSAGE_THROUGH_PROCFS_PRS) else AC_MSG_RESULT(no) fi fi #############################################################################
3711761998-05-18Henrik Grubbström (Grubba) AC_MSG_CHECKING(for isgraph)
b2018d1998-10-23Henrik Grubbström (Grubba) AC_CACHE_VAL(pike_cv_func_isgraph, [ AC_TRY_LINK([
3711761998-05-18Henrik Grubbström (Grubba) #include <ctype.h> ], [ return(!isgraph('A')); ], pike_cv_func_isgraph=yes, pike_cv_func_isgraph=no) ]) AC_MSG_RESULT($pike_cv_func_isgraph) if test "x$pike_cv_func_isgraph" = "xyes" ; then AC_DEFINE(HAVE_ISGRAPH) else :; fi
94cf721998-07-11Henrik Grubbström (Grubba) ############################################################################# # # __func__ is new in ISO C 9x # # It should expand to the name of the current function, and is # useful for debug. AC_MSG_CHECKING(if __func__ exists and works) AC_CACHE_VAL(pike_cv_have_working___func__, [ AC_TRY_RUN([ #ifdef HAVE_STRING_H #include <string.h> #else /* !HAVE_STRING_H */ #ifdef HAVE_STRINGS_H #include <strings.h> #endif /* HAVE_STRIGNS_H */ #endif /* HAVE_STRING_H */ int main() { exit(strcmp("main", __func__)); } ], pike_cv_have_working___func__=yes, pike_cv_have_working___func__=no, pike_cv_have_working___func__=no) ]) AC_MSG_RESULT($pike_cv_have_working___func__) if test "$pike_cv_have_working___func__" = yes; then AC_DEFINE(HAVE_WORKING___FUNC__) else :; fi
7f41951998-07-11Henrik Grubbström (Grubba) # gcc has __FUNCTION__ instead. AC_MSG_CHECKING(if __FUNCTION__ exists and works) AC_CACHE_VAL(pike_cv_have_working___FUNCTION__, [ AC_TRY_RUN([ #ifdef HAVE_STRING_H #include <string.h> #else /* !HAVE_STRING_H */ #ifdef HAVE_STRINGS_H #include <strings.h> #endif /* HAVE_STRIGNS_H */ #endif /* HAVE_STRING_H */ int main() { exit(strcmp("main", __FUNCTION__)); } ], pike_cv_have_working___FUNCTION__=yes, pike_cv_have_working___FUNCTION__=no, pike_cv_have_working___FUNCTION__=no) ]) AC_MSG_RESULT($pike_cv_have_working___FUNCTION__) if test "$pike_cv_have_working___FUNCTION__" = yes; then AC_DEFINE(HAVE_WORKING___FUNCTION__) else :; fi
3711761998-05-18Henrik Grubbström (Grubba) #############################################################################
5267b71995-08-09Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(for gcc function attributes)
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_CACHE_VAL(pike_cv_gcc_attributes,
5267b71995-08-09Fredrik Hübinette (Hubbe) [ AC_TRY_RUN([ #include <stdarg.h> void fatal(char *foo,...) __attribute__ ((noreturn,format (printf,1,2))); int sqr(int x) __attribute__ ((const)); int sqr(int x) { return x*x; } void fatal(char *foo,...) { va_list args; va_start(foo,args); printf(foo,args); va_end(args); exit(2); }
efad7a1998-10-28Henrik Grubbström (Grubba)  int main() { exit(0); }
5267b71995-08-09Fredrik Hübinette (Hubbe) 
75920f1997-12-28Fredrik Hübinette (Hubbe) ], pike_cv_gcc_attributes=yes, pike_cv_gcc_attributes=no, pike_cv_gcc_attributes=no)])
5267b71995-08-09Fredrik Hübinette (Hubbe) 
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_MSG_RESULT($pike_cv_gcc_attributes) if test "$pike_cv_gcc_attributes" = yes; then
5267b71995-08-09Fredrik Hübinette (Hubbe)  AC_DEFINE(HAVE_FUNCTION_ATTRIBUTES) fi
f968662000-08-21Henrik Grubbström (Grubba) AC_MSG_CHECKING(for lc __declspec) AC_CACHE_VAL(pike_cv_lc___declspec, [ AC_TRY_RUN([ #include <stdarg.h> __declspec(noreturn) void fatal(char *foo,...); __declspec(noreturn) void fatal(char *foo,...) { va_list args; va_start(foo,args); printf(foo,args); va_end(args); exit(2); } int main() { exit(0); } ], pike_cv_lc___declspec=yes, pike_cv_lc___declspec=no, [ echo $ac_n "crosscompiling... $ac_c" 1>&6 AC_TRY_LINK([ #include <stdarg.h> __declspec(noreturn) void fatal(char *foo,...); __declspec(noreturn) void fatal(char *foo,...) { va_list args; va_start(foo,args); printf(foo,args); va_end(args); exit(2); } ], [ exit(0); ], pike_cv_lc___declspec=yes, pike_cv_lc___declspec=no) ]) ]) AC_MSG_RESULT($pike_cv_lc___declspec) if test "$pike_cv_lc___declspec" = yes; then AC_DEFINE(HAVE_DECLSPEC) fi
7a5e471999-11-22Fredrik Hübinette (Hubbe) #############################################################################
68debd1997-09-12Henrik Grubbström (Grubba) AC_MSG_CHECKING(how to concatenate two symbols) AC_CACHE_VAL(pike_cv_cpp_symbol_concat, [ AC_TRY_COMPILE([
8976531997-12-22Fredrik Hübinette (Hubbe) int AABB=0;
68debd1997-09-12Henrik Grubbström (Grubba) #define CONCAT(X,Y) X##Y ], [ return CONCAT(AA,BB); ], pike_cv_cpp_symbol_concat=ANSI, [ AC_TRY_COMPILE([
8976531997-12-22Fredrik Hübinette (Hubbe) int AABB=0;
68debd1997-09-12Henrik Grubbström (Grubba) #define CONCAT(X,Y) X/**/Y ], [ return CONCAT(AA,BB); ], pike_cv_cpp_symbol_concat=KR, [ pike_cv_cpp_symbol_concat=Unknown ]) ]) ]) AC_MSG_RESULT($pike_cv_cpp_symbol_concat) case "$pike_cv_cpp_symbol_concat" in "ANSI") AC_DEFINE(HAVE_ANSI_CONCAT) ;; "KR") AC_DEFINE(HAVE_KR_CONCAT) ;; esac
c411dc1997-04-21Fredrik Hübinette (Hubbe) #############################################################################
5267b71995-08-09Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(how to set things nonblocking)
06983f1996-09-22Fredrik Hübinette (Hubbe) AC_CACHE_VAL(pike_cv_sys_nonblock,
5267b71995-08-09Fredrik Hübinette (Hubbe) [
59bc1b1997-01-22Bernhard Fastenrath  # Kludge needed for AmigaOS
092a0e1997-03-05Henrik Grubbström (Grubba)  if test "$pike_cv_sys_os" = "AmigaOS" ; then
59bc1b1997-01-22Bernhard Fastenrath  pike_cv_sys_nonblock=USE_FCNTL_O_NONBLOCK else
ed7aeb2000-06-16Henrik Grubbström (Grubba)  OCPPFLAGS="$CPPFLAGS"
a09e4f2001-01-21Henrik Grubbström (Grubba)  pike_cv_sys_nonblock=UNKNOWN for method in USE_FCNTL_FNDELAY USE_FCNTL_O_NDELAY USE_FCNTL_O_NONBLOCK \ USE_IOCTL_FIONBIO USE_IOCTLSOCKET_FIONBIO; do # Make sure we can run configure in a separate directory, # and set the method to try. CPPFLAGS="-I$srcdir $OCPPFLAGS -D$method" AC_TRY_RUN([
5267b71995-08-09Fredrik Hübinette (Hubbe) #define TESTING
d4f9e92000-05-19Martin Stjernholm #include "fd_control.c"
a09e4f2001-01-21Henrik Grubbström (Grubba)  ], [ pike_cv_sys_nonblock=$method break; ], [], [ AC_TRY_LINK([
bdfb861997-12-22Fredrik Hübinette (Hubbe) #define TESTING
d4f9e92000-05-19Martin Stjernholm #include "fd_control.c"
a09e4f2001-01-21Henrik Grubbström (Grubba) #define main dummy_main ], [], [ pike_cv_sys_nonblock=$method break; ]) ]) done
ed7aeb2000-06-16Henrik Grubbström (Grubba)  # Restore CPPFLAGS CPPFLAGS="$OCPPFLAGS"
59bc1b1997-01-22Bernhard Fastenrath  fi ])
5267b71995-08-09Fredrik Hübinette (Hubbe) 
a09e4f2001-01-21Henrik Grubbström (Grubba) if test "${pike_cv_sys_nonblock}" = "UNKNOWN"; then
5267b71995-08-09Fredrik Hübinette (Hubbe)  AC_MSG_RESULT(none found) else
06983f1996-09-22Fredrik Hübinette (Hubbe)  AC_MSG_RESULT($pike_cv_sys_nonblock) AC_DEFINE_UNQUOTED($pike_cv_sys_nonblock)
5267b71995-08-09Fredrik Hübinette (Hubbe) fi rm -f core
bcf9461998-01-27Fredrik Hübinette (Hubbe) ##########################################################################
29c1832001-02-02Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(how well OOB handling works) AC_CACHE_VAL(pike_cv_system_oob_working,[ OCPPFLAGS="$CPPFLAGS" CPPFLAGS="-I. -I../.. -I$srcdir -I$srcdir/../.." AC_TRY_RUN([ #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <errno.h> #include <fcntl.h> #include <signal.h> #include <sys/stat.h> #ifdef HAVE_NETINET_IN_H #include <netinet/in.h> #endif #ifdef HAVE_SYS_POLL_H #include <sys/poll.h> #endif #include <fcntl.h> #ifdef HAVE_SYS_FILE_H #include <sys/file.h> #endif #define SP_DEBUG(X) fprintf X #ifndef POLLRDNORM #define POLLRDNORM POLLIN #endif #ifndef POLLRDBAND #define POLLRDBAND POLLPRI #endif #ifndef POLLWRBAND #define POLLWRBAND POLLOUT #endif int set_nonblocking(int fd,int which) { int ret; do { #if defined(USE_IOCTL_FIONBIO) || defined(__NT__) ret=ioctl(fd, FIONBIO, &which); #else #ifdef USE_FCNTL_O_NDELAY ret=fcntl(fd, F_SETFL, which?O_NDELAY:0); #else #ifdef USE_FCNTL_O_NONBLOCK ret=fcntl(fd, F_SETFL, which?O_NONBLOCK:0); #else #ifdef USE_FCNTL_FNDELAY ret=fcntl(fd, F_SETFL, which?FNDELAY:0); #else #error Do not know how to set your filedescriptors nonblocking. #endif #endif #endif #endif } while(ret <0 && errno==EINTR); return ret; } static int socketpair_fd = -1; int my_socketpair(int family, int type, int protocol, int sv[2]) { static struct sockaddr_in my_addr; struct sockaddr_in addr,addr2; int retries=0; ACCEPT_SIZE_T len; memset((char *)&addr,0,sizeof(struct sockaddr_in)); if(socketpair_fd==-1) { if((socketpair_fd=socket(AF_INET, SOCK_STREAM, 0)) < 0) { SP_DEBUG((stderr, "my_socketpair:socket() failed, errno:%d\n", errno)); return -1; } memset((char *)&my_addr,0,sizeof(struct sockaddr_in)); my_addr.sin_family=AF_INET; my_addr.sin_addr.s_addr=htonl(INADDR_ANY); my_addr.sin_port=htons(0); if(bind(socketpair_fd, (struct sockaddr *)&my_addr, sizeof(addr)) < 0) { SP_DEBUG((stderr, "my_socketpair:bind() failed, errno:%d\n", errno)); close(socketpair_fd); socketpair_fd=-1; return -1; } len = sizeof(my_addr); if(getsockname(socketpair_fd,(struct sockaddr *)&my_addr,&len) < 0) { SP_DEBUG((stderr, "my_socketpair:getsockname() failed, errno:%d\n", errno)); close(socketpair_fd); socketpair_fd=-1; return -1; } if(listen(socketpair_fd, 5) < 0) { SP_DEBUG((stderr, "my_socketpair:listen() failed, errno:%d\n", errno)); close(socketpair_fd); socketpair_fd=-1; return -1; } set_nonblocking(socketpair_fd, 1); my_addr.sin_addr.s_addr=inet_addr("127.0.0.1"); } if((sv[1]=socket(AF_INET, SOCK_STREAM, 0)) <0) { SP_DEBUG((stderr, "my_socketpair:socket() failed, errno:%d (2)\n", errno)); return -1; } retry_connect: retries++; if(connect(sv[1], (struct sockaddr *)&my_addr, sizeof(addr)) < 0) { SP_DEBUG((stderr, "my_socketpair:connect() failed, errno:%d (%d)\n", errno, EWOULDBLOCK)); if(errno != EWOULDBLOCK) { int tmp2; for(tmp2=0;tmp2<20;tmp2++) { int tmp; ACCEPT_SIZE_T len2; len2=sizeof(addr); tmp=accept(socketpair_fd,(struct sockaddr *)&addr,&len2); if(tmp!=-1) { SP_DEBUG((stderr, "my_socketpair:accept() failed, errno:%d\n", errno)); close(tmp); } else break; } if(retries > 20) return -1; goto retry_connect; } } do { ACCEPT_SIZE_T len3; len3=sizeof(addr); retry_accept: sv[0]=accept(socketpair_fd,(struct sockaddr *)&addr,&len3); if(sv[0] < 0) { SP_DEBUG((stderr, "my_socketpair:accept() failed, errno:%d (2)\n", errno)); if(errno==EINTR) goto retry_accept; close(sv[1]); return -1; } set_nonblocking(sv[0],0); len=sizeof(addr); if(getpeername(sv[0], (struct sockaddr *)&addr,&len)) { SP_DEBUG((stderr, "my_socketpair:getpeername() failed, errno:%d\n", errno)); return -1; } len=sizeof(addr); if(getsockname(sv[1],(struct sockaddr *)&addr2,&len) < 0) { SP_DEBUG((stderr, "my_socketpair:getsockname() failed, errno:%d\n", errno)); return -1; } }while(len < (int)sizeof(addr) || addr2.sin_addr.s_addr != addr.sin_addr.s_addr || addr2.sin_port != addr.sin_port); SP_DEBUG((stderr, "my_socketpair: succeeded\n", errno)); return 0; } int socketpair_ultra(int family, int type, int protocol, int sv[2]) { int retries=0; while(1) { int ret=my_socketpair(family, type, protocol, sv); if(ret>=0) return ret; switch(errno) { case EAGAIN: break; case EADDRINUSE: if(retries++ > 10) return ret; break; default: return ret; } } } FILE *output; struct pollfd pollset[2]; int fds[2]; static int sent=0; int xcalls=0; int ping(int fd) { int r; sent++; if(sent > 10000) { fprintf(output,xcalls ? "SEMIWORKING" : "WORKING"); exit(0); } do { r=send(fds[fd],"x",1,MSG_OOB); }while(r < 0 && errno==EINTR); if(r!=1) { fprintf(output,"XBYTES\n"); exit(0); } pollset[fd].events &=~ POLLWRBAND; pollset[!fd].events |= POLLRDBAND; } int pong(int fd) { char foo[2]; int r; do { r=recv(fds[fd], &foo, 2, MSG_OOB); }while(r < 0 && errno==EINTR); if(r!=1) { fprintf(output,"XBYTES\n"); exit(0); } pollset[fd].events &=~ POLLRDBAND; pollset[fd].events |= POLLWRBAND; } void pang(int fd) { char foo[2]; int r; xcalls++; do { r=recv(fds[fd], &foo, 2, 0); }while(r < 0 && errno==EINTR); if(r<0 && errno==EAGAIN) return; fprintf(output,"INLINED\n"); exit(0); } int main(int argc, char **argv) { int e; output=fopen("conftest.out.2","w"); socketpair_ultra(AF_UNIX, SOCK_STREAM, 0, fds); #define INIT(X) do {\ set_nonblocking(fds[X],1); \ pollset[X].fd=fds[X]; \ pollset[X].events=POLLIN; \ }while(0); INIT(0); INIT(1); ping(0); while(1) { if(!poll(pollset, 2, 10000)) { fprintf(output,sent>1 ? "WORKS_A_LITTLE\n" : "TIMEOUT\n"); exit(0); } for(e=0;e<2;e++) { if(pollset[e].revents & POLLRDBAND) pong(e); if(pollset[e].revents & POLLWRBAND) ping(e); if(pollset[e].revents & POLLIN) pang(e); } } } ], pike_cv_system_oob_working="`cat conftest.out.2`", pike_cv_system_oob_working=UNKNOWN, pike_cv_system_oob_working=UNKNOWN) CPPFLAGS="$OCPPFLAGS" rm conftest.out.2 >/dev/null 2>/dev/null || : ]) AC_MSG_RESULT($pike_cv_system_oob_working) case "x$pike_cv_system_oob_working" in xWORKING) AC_DEFINE_UNQUOTED(PIKE_OOB_WORKS,3) ;; xSEMIWORKING) AC_DEFINE_UNQUOTED(PIKE_OOB_WORKS,2) ;; xINLINED) AC_DEFINE_UNQUOTED(PIKE_OOB_WORKS,1) ;; xWORKS_A_LITTLE) AC_DEFINE_UNQUOTED(PIKE_OOB_WORKS,1) ;; xXBYTES) AC_DEFINE_UNQUOTED(PIKE_OOB_WORKS,0) ;; xTIMEOUT) AC_DEFINE_UNQUOTED(PIKE_OOB_WORKS,0) ;; *) AC_DEFINE_UNQUOTED(PIKE_OOB_WORKS,-1) ;; #unknown esac #######################################################################
7b39411997-02-06Fredrik Hübinette (Hubbe)  # Set info about shared libraries. AC_SUBST(SO) AC_SUBST(LDSHARED) AC_SUBST(CCSHARED) AC_SUBST(LINKFORSHARED) # SO is the extension of shared libraries
e1195f1997-03-23Fredrik Hübinette (Hubbe) # -- usually so, sl on HP-UX
7b39411997-02-06Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(SO) if test -z "$SO" then
092a0e1997-03-05Henrik Grubbström (Grubba)  case "$pike_cv_sys_os" in
7b39411997-02-06Fredrik Hübinette (Hubbe)  hp*|HP*) SO=sl;; *) SO=so;; esac fi AC_MSG_RESULT($SO) # LDSHARED is the ld *command* used to create shared library # -- "ld" on SunOS 4.x.x, "ld -G" on SunOS 5.x, "ld -shared" on IRIX 5 AC_MSG_CHECKING(LDSHARED)
9ab4461998-11-06Honza Petrous if test -z "$LDSHARED" ; then case "$pike_cv_sys_os" in AIX*) if test "$GCC" = yes ; then
05ca9b2000-12-18Henrik Grubbström (Grubba)  if test "`uname -r`" -ge 2 -a "`uname -v`" -eq 4 ; then
9ab4461998-11-06Honza Petrous  LDSHARED="ld -G -bexpall" else if test "`uname -v`" -gt 4 ; then
05ca9b2000-12-18Henrik Grubbström (Grubba)  # AIX 5L+ LDSHARED="ld -G"
e0a6aa1997-12-12Henrik Grubbström (Grubba)  else
9ab4461998-11-06Honza Petrous  # AIX 4.1 and earlier don't have/have unreliable # handling of dlopen et al. # # Even AIX 4.2.1 has buggy dlopen -- NEVER attempt # to dlopen a file that hasn't been linked with -G. pike_cv_sys_dynamic_loading=no LDSHARED="ld"
e0a6aa1997-12-12Henrik Grubbström (Grubba)  fi
9ab4461998-11-06Honza Petrous  fi else
05ca9b2000-12-18Henrik Grubbström (Grubba)  if test "`uname -r`" -ge 3 -a "`uname -v`" -eq 4 ; then
2a50542000-10-24Henrik Grubbström (Grubba)  LDSHARED="ld -G -bexpall" else if test "`uname -v`" -gt 4 ; then
05ca9b2000-12-18Henrik Grubbström (Grubba)  # AIX 5L+ LDSHARED="ld -G"
2a50542000-10-24Henrik Grubbström (Grubba)  else # AIX 4.1 and earlier don't have/have unreliable # handling of dlopen et al. # # Even AIX 4.2.1 has buggy dlopen -- NEVER attempt # to dlopen a file that hasn't been linked with -G. pike_cv_sys_dynamic_loading=no LDSHARED="ld" fi fi
9ab4461998-11-06Honza Petrous  fi ;; IRIX*) if test "$GCC" = yes ; then # egcs defaults to building -n32 objects LDSHARED="ld -shared -n32" else LDSHARED="ld -shared" fi # -woff isn't understood by ld on Irix 5. if test "`uname -r`" -ge 6 ; then LDSHARED="$LDSHARED -woff 84,85,134" else :; fi ;; SunOS*) LDSHARED="ld";; Solaris) LDSHARED="/usr/ccs/bin/ld -G";; hp*|HP*) LDSHARED="ld -b";; OSF*) LDSHARED="ld -expect_unresolved '*' -shared -msym -O3";; DYNIX/ptx*) LDSHARED="ld -G";;
3724261999-08-25Henrik Grubbström (Grubba)  next*) LDSHARED="$CC $CFLAGS -nostdlib -r";;
9ab4461998-11-06Honza Petrous  Linux*) LDSHARED="$CC -shared";; GNU*) LDSHARED="ld -Bshareable";;
6da30c2000-02-19Fredrik Hübinette (Hubbe)  FreeBSD*) LDSHARED="$CC -Wl,-Bshareable";;
3724261999-08-25Henrik Grubbström (Grubba)  NetBSD*) LDSHARED="ld -Bshareable";;
9ab4461998-11-06Honza Petrous  OpenBSD*) LDSHARED="ld -Bshareable";;
1807bd2000-11-28Fredrik Hübinette (Hubbe)  BSD/OS*) case "`uname -r`" in 4.*) LDSHARED="$CC -shared";; *) LDSHARED="shlicc -r";; esac ;;
9ab4461998-11-06Honza Petrous  SCO_SV*) LDSHARED="cc -G -KPIC -Wl,-Bexport";;
3724261999-08-25Henrik Grubbström (Grubba)  UNIX_SV*) LDSHARED="ld -G";; UnixWare*)
9ab4461998-11-06Honza Petrous  if test "$GCC" = yes ; then LDSHARED="ld -G" else LDSHARED="cc -G -KPIC -Wl,-Bexport" fi ;;
9b15e02000-12-22Fredrik Hübinette (Hubbe)  Windows_NT*) LDSHARED="pntld" ;;
9ab4461998-11-06Honza Petrous  *) LDSHARED="ld";; esac
7b39411997-02-06Fredrik Hübinette (Hubbe) fi AC_MSG_RESULT($LDSHARED) # CCSHARED are the C *flags* used to create objects to go into a shared # library -- this is only needed for a few systems AC_MSG_CHECKING(CCSHARED)
371f751999-04-29Martin Stjernholm AC_CACHE_VAL(pike_cv_sys_ccshared,[ if test -z "$CCSHARED" ; then if test "$GCC" = yes ; then
08af092000-04-12Marcus Comstedt  case "$pike_cv_sys_os" in
371f751999-04-29Martin Stjernholm  BSD/OS*)
1807bd2000-11-28Fredrik Hübinette (Hubbe)  case "`uname -r`" in 4.*) CCSHARED="-fPIC";; *) CCSHARED="";; esac
371f751999-04-29Martin Stjernholm  ;; Solaris*) # The Image module runs out of symbol reference space unless we # use the large PIC model: # ld: fatal: too many symbols require `small' PIC references: # have 2205, maximum 2048 -- recompile some modules -K PIC. CCSHARED="-fPIC" ;; *)
34e2912000-08-29Fredrik Hübinette (Hubbe)  CCSHARED="-fPIC"
371f751999-04-29Martin Stjernholm  ;; esac else
08af092000-04-12Marcus Comstedt  case "$pike_cv_sys_os" in
fcf0732000-03-28Fredrik Hübinette (Hubbe)  IRIX*) AC_SYS_COMPILER_FLAG(-share,cc_shared,CCSHARED) ;;
371f751999-04-29Martin Stjernholm  hp*|HP*) CCSHARED="+z"; ;; FreeBSD*) CCSHARED="-fpic";; SCO_SV*) CCSHARED="-KPIC -dy -Bdynamic";;
ede4811999-08-25Henrik Grubbström (Grubba)  UnixWare*) CCSHARED="-KPIC -dy -Bdynamic";;
371f751999-04-29Martin Stjernholm  Solaris*) CCSHARED="-KPIC -Bdynamic";; Windows_NT*) CCSHARED="-shared" ;; esac fi
7b39411997-02-06Fredrik Hübinette (Hubbe)  fi
371f751999-04-29Martin Stjernholm  OLD_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $CCSHARED"
05ca9b2000-12-18Henrik Grubbström (Grubba)  AC_TRY_COMPILE([], [exit(0);],
371f751999-04-29Martin Stjernholm  pike_cv_sys_ccshared="$CCSHARED", pike_cv_sys_ccshared='') CFLAGS="$OLD_CFLAGS" ]) CCSHARED="$pike_cv_sys_ccshared"
7b39411997-02-06Fredrik Hübinette (Hubbe) AC_MSG_RESULT($CCSHARED)
334e3d1997-04-16Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(LINKFORSHARED) AC_CACHE_VAL(pike_cv_sys_linkforshared,[
7b39411997-02-06Fredrik Hübinette (Hubbe) # LINKFORSHARED are the flags passed to the $(CC) command that links
e1195f1997-03-23Fredrik Hübinette (Hubbe) # the pike executable -- this is only needed for a few systems
7b39411997-02-06Fredrik Hübinette (Hubbe) if test -z "$LINKFORSHARED" then
9649491998-02-27Fredrik Hübinette (Hubbe)  LINKFORSHARED=""
bb55f81997-03-16Fredrik Hübinette (Hubbe)  if test "$GCC" = yes ; then
08af092000-04-12Marcus Comstedt  case "$pike_cv_sys_os" in
05ca9b2000-12-18Henrik Grubbström (Grubba)  AIX*) if test "`uname -v`" -gt 4 ; then # This is probably wrong, but I don't have a man page for ld yet. LINKFORSHARED="" else LINKFORSHARED="-Wl,-bexpall -Wl,-brtl" fi ;;
9ab4461998-11-06Honza Petrous  hp*|HP*) LINKFORSHARED="-Wl,-E";; Linux*) LINKFORSHARED="-rdynamic";;
1807bd2000-11-28Fredrik Hübinette (Hubbe)  BSD/OS*) case "`uname -r`" in 4.*) LINKFORSHARED="-rdynamic";; esac ;; BSD/OS*) case "`uname -r`" in 4.*) LINKFORSHARED="-rdynamic";; esac ;;
9ab4461998-11-06Honza Petrous  GNU*) LINKFORSHARED="-rdynamic";;
3724261999-08-25Henrik Grubbström (Grubba)  next*) LINKFORSHARED="-u libsys_s";;
9ab4461998-11-06Honza Petrous  SCO_SV*) LINKFORSHARED="-fpic -Wl,-Bexport";; # What about UNIX_SV?
3724261999-08-25Henrik Grubbström (Grubba)  UnixWare*) LINKFORSHARED="-fpic -Wl,-Bexport";;
9ab4461998-11-06Honza Petrous 
3724261999-08-25Henrik Grubbström (Grubba)  FreeBSD*)
9ab4461998-11-06Honza Petrous  AC_TRY_RUN([int main(){exit(
9db92d1998-11-06Fredrik Hübinette (Hubbe) #ifdef __ELF__ 0 #else 1 #endif );}
9ab4461998-11-06Honza Petrous  ],LINKFORSHARED=-rdynamic) ;;
bb55f81997-03-16Fredrik Hübinette (Hubbe)  esac else
08af092000-04-12Marcus Comstedt  case "$pike_cv_sys_os" in
05ca9b2000-12-18Henrik Grubbström (Grubba)  AIX*) if test "`uname -v`" -gt 4 ; then LINKFORSHARED="-Bexport" else LINKFORSHARED="-Wl,-bexpall -Wl,-brtl" fi ;;
9ab4461998-11-06Honza Petrous  hp*|HP*) LINKFORSHARED="-Wl,-E";; Linux*) LINKFORSHARED="-rdynamic";; GNU*) LINKFORSHARED="-rdynamic";;
3724261999-08-25Henrik Grubbström (Grubba)  next*) LINKFORSHARED="-u libsys_s";;
9ab4461998-11-06Honza Petrous  SCO_SV*) LINKFORSHARED="-Bdynamic -dy -Wl,-Bexport";; # What about UNIX_SV?
3724261999-08-25Henrik Grubbström (Grubba)  UnixWare*) LINKFORSHARED="-Bdynamic -dy -Wl,-Bexport";;
7b39411997-02-06Fredrik Hübinette (Hubbe)  esac
bb55f81997-03-16Fredrik Hübinette (Hubbe)  fi
7b39411997-02-06Fredrik Hübinette (Hubbe) fi
334e3d1997-04-16Fredrik Hübinette (Hubbe)  OLD_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $LINKFORSHARED"
b298e01997-04-16Fredrik Hübinette (Hubbe)  AC_TRY_RUN([int main() { exit(0); }],
75920f1997-12-28Fredrik Hübinette (Hubbe)  pike_cv_sys_linkforshared="$LINKFORSHARED", pike_cv_sys_linkforshared='', pike_cv_sys_linkforshared='')
334e3d1997-04-16Fredrik Hübinette (Hubbe)  CFLAGS="$OLD_CFLAGS" ]) LINKFORSHARED="$pike_cv_sys_linkforshared"
7b39411997-02-06Fredrik Hübinette (Hubbe) AC_MSG_RESULT($LINKFORSHARED) #############################################################################
e1195f1997-03-23Fredrik Hübinette (Hubbe) cat >conftest.c <<EOF
a991451997-07-08Fredrik Hübinette (Hubbe) #include <stdio.h>
5591962000-12-05Marcus Comstedt #include <stdlib.h>
a991451997-07-08Fredrik Hübinette (Hubbe) void testfunc(void) { fprintf(stderr,"Calling testfunc2\n"); testfunc2(); fprintf(stderr,"testfunc2 returned!\n"); exit(1); }
e1195f1997-03-23Fredrik Hübinette (Hubbe) EOF AC_MSG_CHECKING(if dynamic loading works) AC_CACHE_VAL(pike_cv_sys_dynamic_loading, [
334e3d1997-04-16Fredrik Hübinette (Hubbe)  echo $CC -c $CFLAGS $CCSHARED conftest.c -o conftest.o 1>&5 $CC -c $CFLAGS $CCSHARED conftest.c -o conftest.o 1>&5 2>&5 echo $BINDIR/smartlink $LDSHARED $LDFLAGS conftest.o -o conftest.$SO 1>&5 $BINDIR/smartlink $LDSHARED $LDFLAGS conftest.o -o conftest.$SO 1>&5 2>&5 if test -f conftest.$SO ; then mv conftest.$SO myconftest.so OLD_CFLAGS="$CFLAGS"
1938512001-01-31Fredrik Hübinette (Hubbe)  OLD_CPPFLAGS="$CPPFLAGS" CPPFLAGS="-I$srcdir $OLD_CPPFLAGS"
334e3d1997-04-16Fredrik Hübinette (Hubbe)  CFLAGS="$CFLAGS $LINKFORSHARED"
0809711998-02-27Marcus Comstedt  OLD_CC="$CC" case "$LD" in
633b031998-07-16Fredrik Hübinette (Hubbe)  *shlicc) CC="$BINDIR/smartlink shlicc" ;;
0809711998-02-27Marcus Comstedt  esac
e1195f1997-03-23Fredrik Hübinette (Hubbe)  AC_TRY_RUN([ #define TESTING
d4f9e92000-05-19Martin Stjernholm #include "dynamic_load.c"
b298e01997-04-16Fredrik Hübinette (Hubbe) void testfunc2(void) { exit(0); }
75920f1997-12-28Fredrik Hübinette (Hubbe) ], pike_cv_sys_dynamic_loading=yes, pike_cv_sys_dynamic_loading=no, pike_cv_sys_dynamic_loading=no)
334e3d1997-04-16Fredrik Hübinette (Hubbe)  CFLAGS="$OLD_CFLAGS"
1938512001-01-31Fredrik Hübinette (Hubbe)  CPPFLAGS="${OLD_CPPFLAGS}"
0809711998-02-27Marcus Comstedt  CC="$OLD_CC"
633b031998-07-16Fredrik Hübinette (Hubbe)  else
75920f1997-12-28Fredrik Hübinette (Hubbe)  pike_cv_sys_dynamic_loading=no
334e3d1997-04-16Fredrik Hübinette (Hubbe)  fi rm -f myconftest.so >/dev/null 2>/dev/null
e1195f1997-03-23Fredrik Hübinette (Hubbe) ]) AC_MSG_RESULT($pike_cv_sys_dynamic_loading)
1f21332000-07-28Fredrik Hübinette (Hubbe) 
5f951c2001-01-30Fredrik Hübinette (Hubbe) if test "x$with_dynamic_modules" != "xno" ; then
1f21332000-07-28Fredrik Hübinette (Hubbe)  if test x$pike_cv_sys_dynamic_loading = xno ; then with_dynamic_modules=no else with_dynamic_modules=yes if test x$pike_cv_func_dlopen$ac_cv_func_dld_link$ac_cv_func_shl_load = xnonono; then
1807bd2000-11-28Fredrik Hübinette (Hubbe) # Dynamic loading is now WORKING (maybe)
1f21332000-07-28Fredrik Hübinette (Hubbe) # if test x"$pike_cv_sys_os" != xWindows_NT ; then with_dynamic_modules=no # fi fi fi
e1195f1997-03-23Fredrik Hübinette (Hubbe) fi
f038d31999-10-03Fredrik Hübinette (Hubbe) #######################################################################
284e061998-11-09Fredrik Hübinette (Hubbe) # Since configure doesn't always know if we will be linking with ld or cc, # We use this little code snippet to add flags to ld that would otherwise # be given automatically by $(CC) $(CFLAGS) # /Hubbe #
7e4d4e2000-12-13Fredrik Hübinette (Hubbe) if test "$ldflags_is_set" = no ; then case "x$LD $LDFLAGS" in *\$\(CFLAGS\)*)
284e061998-11-09Fredrik Hübinette (Hubbe)  # Options in CFLAGS, no stuff needs to be added ;;
7e4d4e2000-12-13Fredrik Hübinette (Hubbe)  x$CC*|x\$\(CC\)*) LD="$LD \$(CFLAGS)" ;; *) LD="$LD ${LD_FALLBACK_FLAGS-}" ;; esac case "x$LDSHARED $LDFLAGS" in *\$\(CFLAGS\)*)
b1466e2000-03-26Fredrik Hübinette (Hubbe)  # Options in CFLAGS, no stuff needs to be added ;;
7e4d4e2000-12-13Fredrik Hübinette (Hubbe)  x$CC*|x\$\(CC\)*) LDSHARED="$LDSHARED \$(CFLAGS)" ;;
284e061998-11-09Fredrik Hübinette (Hubbe)  *)
7e4d4e2000-12-13Fredrik Hübinette (Hubbe)  LDSHARED="$LDSHARED ${LD_FALLBACK_FLAGS-}"
284e061998-11-09Fredrik Hübinette (Hubbe)  ;; esac
7e4d4e2000-12-13Fredrik Hübinette (Hubbe) fi
284e061998-11-09Fredrik Hübinette (Hubbe) 
f038d31999-10-03Fredrik Hübinette (Hubbe) ####################################################################### # Since all $OPTIMIZE flags have to be automatically included in $CFLAGS # (because otherwise the tests will not be accurate) we have to remove all # OPTIMIZE flags from the regular CFLAGS... NEW_CFLAGS= for opt in ${CFLAGS-} do case " $OPTIMIZE " in *\ $opt\ *) ;; *) case "$opt" in -O2|-pipe) OPTIMIZE="${OPTIMIZE-} $opt" ;; *) NEW_CFLAGS="$NEW_CFLAGS $opt" ;; esac ;; esac done CFLAGS="$NEW_CFLAGS" ##########################################################################
1192761999-05-26Fredrik Hübinette (Hubbe) case "x$pike_cv_sys_os" in xSolaris | xAIX)
22c21e1999-06-19Fredrik Hübinette (Hubbe)  if grep _REENTRANT confdefs.h >/dev/null 2>&1; then AC_DEFINE(USE_WAIT_THREAD) else AC_DEFINE(USE_SIGCHILD) fi
1192761999-05-26Fredrik Hübinette (Hubbe)  ;;
d0be141999-05-27Fredrik Hübinette (Hubbe)  xWindows_NT)
1192761999-05-26Fredrik Hübinette (Hubbe)  ;; *) AC_DEFINE(USE_SIGCHILD) ;; esac
284e061998-11-09Fredrik Hübinette (Hubbe) 
43a6c81999-11-24Fredrik Hübinette (Hubbe) ############################################################################# if test "x$with_copt" = xno ; then OPTIMIZE=
2f92542001-01-18Fredrik Hübinette (Hubbe)  dnl The unused code below can be used to implement a good/bad-list dnl to determine when to zap the -O2 for buggy gccs... dnl dnl else dnl dnl if test "x$GCC" = xyes; then dnl BAD=unknown dnl case `gcc -v 2>&1` in dnl */i?86-*/2.95.3/*19991030*) BAD=no ;; dnl esac dnl fi
43a6c81999-11-24Fredrik Hübinette (Hubbe) fi
1f21332000-07-28Fredrik Hübinette (Hubbe) 
1acce82001-01-27Martin Stjernholm ############################################################################# if test "x$enable_binary" != "xno"; then
1f21332000-07-28Fredrik Hübinette (Hubbe) ############################################################################# if test x$with_dynamic_modules = xyes ; then dmmsrc="modules/dynamic_module_makefile.in" CCSHARED="${CCSHARED} -DDYNAMIC_MODULE" else dmmsrc="modules/static_module_makefile.in" fi
6052f61998-06-06Henrik Grubbström (Grubba) ############################################################################# echo echo "Compiler summary:" echo echo "C Compiler: $CC" echo "Linker: $LD" echo "Shared linker: $LDSHARED" echo echo "Shared object extension: $SO"
1f21332000-07-28Fredrik Hübinette (Hubbe) echo "Dynamic modules: $with_dynamic_modules"
6052f61998-06-06Henrik Grubbström (Grubba) echo echo "CPPFLAGS: $CPPFLAGS" echo "CFLAGS: $CFLAGS" echo "CCSHARED: $CCSHARED" echo "LINKFORSHARED: $LINKFORSHARED"
e48c381998-07-29Marcus Comstedt echo "LIBGCC: $LIBGCC"
6052f61998-06-06Henrik Grubbström (Grubba) echo "WARN: $WARN"
91006b2000-03-21Fredrik Hübinette (Hubbe) echo "PROFIL: $PROFIL"
6052f61998-06-06Henrik Grubbström (Grubba) echo "OPTIMIZE: $OPTIMIZE" echo "LDFLAGS: $LDFLAGS"
c371d41998-06-07Simon Coggins echo "LIBS: $LIBS"
ab0bfa1998-07-06Martin Stjernholm echo "prefix: $prefix"
6052f61998-06-06Henrik Grubbström (Grubba) echo
e1195f1997-03-23Fredrik Hübinette (Hubbe) #############################################################################
5267b71995-08-09Fredrik Hübinette (Hubbe) 
f2328f1997-09-17Henrik Grubbström (Grubba) export LDFLAGS CFLAGS CPPFLAGS LIBS
2e99df1999-06-24Fredrik Hübinette (Hubbe) export prefix exec_prefix OTHERFLAGS export TMP_BINDIR DEFINES INSTALL
b5d9291997-01-30Henrik Grubbström (Grubba) 
c37c7e1999-03-26Fredrik Hübinette (Hubbe) default_master=$prefix/pike/%d.%d.%d/lib/master.pike
af56471996-12-03Fredrik Hübinette (Hubbe) AC_DEFINE_UNQUOTED(DEFAULT_MASTER,"$default_master")
5267b71995-08-09Fredrik Hübinette (Hubbe) AC_SUBST(WARN)
91006b2000-03-21Fredrik Hübinette (Hubbe) AC_SUBST(PROFIL)
5267b71995-08-09Fredrik Hübinette (Hubbe) AC_SUBST(OPTIMIZE) AC_SUBST(EXTRA_OBJS) AC_SUBST(RANLIB)
51bd9e1996-10-09Fredrik Hübinette (Hubbe) AC_SUBST(DEBUGDEF)
1f21332000-07-28Fredrik Hübinette (Hubbe) AC_SUBST(EXTRA_MODULE_REQUIREMENTS)
4174542001-01-26Martin Stjernholm 
8334e31999-01-29Fredrik Hübinette (Hubbe) pike_cv_prog_CC="${CC}"
5267b71995-08-09Fredrik Hübinette (Hubbe) 
4174542001-01-26Martin Stjernholm ############################################################################# else #if test "x$enable_binary" != "xno" dmmsrc="modules/static_module_makefile.in" fi #############################################################################
1acce82001-01-27Martin Stjernholm AC_CONFIG_SUBDIRS(modules post_modules)
4174542001-01-26Martin Stjernholm AC_SUBST_FILE(dependencies) dependencies=$srcdir/dependencies AC_SUBST(YACC) AC_SUBST(INSTALL) AC_SUBST(ac_configure_args)
6fa2281997-11-04Henrik Grubbström (Grubba) AC_SUBST(dmmsrc)
3a5b1d2000-05-24Fredrik Hübinette (Hubbe) AC_OUTPUT(Makefile modules/static_module_makefile post_modules/static_module_makefile:modules/static_module_makefile.in modules/dynamic_module_makefile:$dmmsrc post_modules/dynamic_module_makefile:$dmmsrc precompile.sh,[echo foo >stamp-h ; chmod +x precompile.sh])
5267b71995-08-09Fredrik Hübinette (Hubbe) 
f655492001-02-13Mirar (Pontus Hagland) # NOTE: M4 uses [] as quotes.
896b182001-02-14Mirar (Pontus Hagland) PIKE_VERSION="`sed -n -e 's/^.*PIKE_MAJOR_VERSION[[ \t]]*\([[^ \t]]*\)/\1/p' <$srcdir/version.h`.`sed -n -e 's/^.*PIKE_MINOR_VERSION[[ \t]]*\([[^ \t]]*\)/\1/p' <$srcdir/version.h`.`sed -n -e 's/^.*PIKE_BUILD_VERSION[[ \t]]*\([[^ \t]]*\)/\1/p' <$srcdir/version.h`" PIKE_VERSION_LONG="Pike v`sed -n -e 's/^.*PIKE_MAJOR_VERSION[[ \t]]*\([[^ \t]]*\)/\1/p' <$srcdir/version.h`.`sed -n -e 's/^.*PIKE_MINOR_VERSION[[ \t]]*\([[^ \t]]*\)/\1/p' <$srcdir/version.h` release `sed -n -e 's/^.*PIKE_BUILD_VERSION[[ \t]]*\([[^ \t]]*\)/\1/p' <$srcdir/version.h`"
f655492001-02-13Mirar (Pontus Hagland) 
6844352001-02-14Mirar (Pontus Hagland)  cat >conftest.c <<EOF #include "global.h" -- FLOAT_TYPE INT_TYPE EOF
48e8c52001-02-14Mirar (Pontus Hagland) $CPP -I. -I$srcdir conftest.c > conftest.cpp
6844352001-02-14Mirar (Pontus Hagland) sed <conftest.cpp >conftypes.txt '1,/^--$/d'
f655492001-02-13Mirar (Pontus Hagland) rm config.info 2>/dev/null echo "=========================================================" >>config.info echo "$PIKE_VERSION_LONG configuration summary" >>config.info echo >>config.info echo "install information:" >>config.info
aca77c2001-02-13Mirar (Pontus Hagland) echo "prefix........ $prefix" >>config.info echo "pike binary... $prefix/bin/pike" >>config.info echo "pike library.. $prefix/lib/${PIKE_VERSION}/" >>config.info
f655492001-02-13Mirar (Pontus Hagland)  echo >>config.info echo "build information:" >>config.info
896b182001-02-14Mirar (Pontus Hagland) echo "system........ $UNAME`echo $pike_cv_libgcc_filename | sed -n -e 's+^.*gcc-lib/\([[^/]]*\)/.*$+ (\1)+p'`" >>config.info
e45ef22001-02-14Mirar (Pontus Hagland) uname -a >/dev/null 2>/dev/null && echo " `uname -a`" >>config.info hostname >/dev/null 2>/dev/null && echo "hostname...... `hostname`" >>config.info
896b182001-02-14Mirar (Pontus Hagland) echo "user.......... `whoami 2>/dev/null || echo '?'`" >>config.info
42ee3a2001-02-14Mirar (Pontus Hagland) echo >>config.info
aca77c2001-02-13Mirar (Pontus Hagland) echo "source path... $srcdir" >>config.info
42ee3a2001-02-14Mirar (Pontus Hagland) echo "build path.... $BUILDDIR" >>config.info
aca77c2001-02-13Mirar (Pontus Hagland) echo "cpp........... $CPP" >>config.info echo "cc............ $CC" >>config.info echo "ld............ $LD" >>config.info
e45ef22001-02-14Mirar (Pontus Hagland) echo "cc shared..... $CCSHARED" >>config.info echo "ld shared..... $LINKFORSHARED" >>config.info
aca77c2001-02-13Mirar (Pontus Hagland) echo "pike.......... $PIKE" >>config.info echo "install....... $INSTALL" >>config.info
7c93d92001-02-14Mirar (Pontus Hagland) echo "shared object. .$SO" >>config.info echo "libs.......... $LIBS" >>config.info echo "optimize...... $OPTIMIZE" >>config.info
f655492001-02-13Mirar (Pontus Hagland)  echo >>config.info echo "features:" >>config.info
8c885e2001-02-13Mirar (Pontus Hagland) echo "PAD_FEATURE([dynamic loading])$pike_cv_sys_dynamic_loading" >>config.info
e45ef22001-02-14Mirar (Pontus Hagland) echo "PAD_FEATURE([threads])$using_threads" >>config.info if test "x$with_debug" = x; then with_debug=no fi if test "x$with_rtldebug" = x; then with_rtldebug=no fi if test "x$with_dmalloc" = x; then with_dmalloc=no fi echo "PAD_FEATURE([debug])$with_debug" >>config.info echo "PAD_FEATURE([dmalloc])$with_dmalloc" >>config.info echo "PAD_FEATURE([rtldebug])$with_rtldebug" >>config.info
f655492001-02-13Mirar (Pontus Hagland) 
6844352001-02-14Mirar (Pontus Hagland) AC_TRY_RUN([ #include "global.h" #include "svalue.h" int main() { FILE *fp,*out; char float_type[80]="?"; char int_type[80]="?"; char *s; struct svalue sval; out=fopen("config.info","a");
37ad402001-02-15Mirar (Pontus Hagland)  if (!out) return 1; fp=fopen("conftypes.txt","r");
48e8c52001-02-14Mirar (Pontus Hagland)  if (out && fp) { fgets(float_type,79,fp); fgets(int_type,79,fp); s=float_type; while (*s && *s!='\n' && *s!='\r') s++; *s=0; s=int_type; while (*s && *s!='\n' && *s!='\r') s++; *s=0; fprintf(out,"float type............%s (%d bytes)\n", float_type,sizeof(FLOAT_TYPE)); fprintf(out,"int type..............%s (%d bytes)\n", int_type,sizeof(INT_TYPE));
6844352001-02-14Mirar (Pontus Hagland) 
48e8c52001-02-14Mirar (Pontus Hagland)  fclose(fp); }
6844352001-02-14Mirar (Pontus Hagland)  fprintf(out,"pointer size..........%d bytes\n", sizeof(void*)); fprintf(out,"svalue size...........%d bytes (%d+%d+%d)\n", sizeof(sval), sizeof(sval.type), sizeof(sval.subtype), sizeof(sval.u));
37ad402001-02-15Mirar (Pontus Hagland)  fclose(out);
6844352001-02-14Mirar (Pontus Hagland)  return 0; } ],[],[],[]) rm conftypes.txt 2>/dev/null
e45ef22001-02-14Mirar (Pontus Hagland) echo >>config.info
f655492001-02-13Mirar (Pontus Hagland) ls -1 pike_*.feature 2>/dev/null | xargs cat | sort >>config.info
8c885e2001-02-13Mirar (Pontus Hagland) ls -1 post_modules/*/pike_*.feature modules/*/pike_*.feature 2>/dev/null | xargs cat | sort >>config.info
f655492001-02-13Mirar (Pontus Hagland)  echo "=========================================================" >>config.info cat config.info
5267b71995-08-09Fredrik Hübinette (Hubbe)