672ebb2005-05-30Henrik Grubbström (Grubba) AC_REVISION("$Id: configure.in,v 1.883 2005/05/30 15:47:53 grubba 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) 
b7890d2002-12-11Mirar (Pontus Hagland) rm -f config.warnings 2>/dev/null
86550e2003-09-12Marcus Comstedt if_autoconf(2,50,[
aa47bd2002-06-25Henrik Grubbström (Grubba)  if test "x$cache_file" = "x/dev/null"; then cache_file=./config.cache if test -r "$cache_file"; then echo "loading cache $cache_file" . $cache_file else echo "creating cache $cache_file" > $cache_file fi fi
b745482003-09-09Martin Nilsson ], [
4969eb2002-12-19Marcus Comstedt  PIKE_MSG_WARN([configure script has been generated with autoconf 2.13 or earlier.])
b745482003-09-09Martin Nilsson ])
aa47bd2002-06-25Henrik Grubbström (Grubba) 
ea24061997-04-01Henrik Grubbström (Grubba) # We want an absolute path to the source-dir. case "$srcdir" in /*) ;; *) oldsrcdir="$srcdir" srcdir="`cd \"$srcdir\";pwd`"
0a86982003-11-07Martin Stjernholm  AC_MSG_WARN([Converted $oldsrcdir to $srcdir, If this does not work, please use an absolute path to the configure script.])
ea24061997-04-01Henrik Grubbström (Grubba)  ;; esac
043b202003-06-27Henrik Grubbström (Grubba) # Check that we can write to the source directory. sleep 1 if touch "$srcdir/configure~"; then # Check that the system time is reasonably correct.
166faa2003-12-03Martin Nilsson  if test `cd "$srcdir" && ls -1t configure configure~ | head -n 1` = "configure"; then
a10a982004-03-09Henrik Grubbström (Grubba)  echo "Current system time is `date`."
043b202003-06-27Henrik Grubbström (Grubba)  AC_MSG_ERROR([ $srcdir/configure has modification time in the future. Check and set your system time. ]) fi else
a10a982004-03-09Henrik Grubbström (Grubba)  ls -ld "$srcdir"
043b202003-06-27Henrik Grubbström (Grubba)  AC_MSG_ERROR([ Failed to write in source directory. Fix your permissions. ]) fi
c334a02001-03-27Henrik Grubbström (Grubba) # Attempt to use bash instead of /bin/sh to run configure # since bash is usually several orders of magnitude faster # on machines that have a real /bin/sh.
27152b2002-12-14Henrik Grubbström (Grubba) # Some OS's also have a seriously broken /bin/sh (eg NetBSD).
c334a02001-03-27Henrik Grubbström (Grubba) if test "x$CONFIG_SHELL" = "x"; then AC_PATH_PROG(bash_prog, bash, no) if test "x$ac_cv_path_bash_prog" = "xno"; then :; else
459b152004-03-07Henrik Grubbström (Grubba)  AC_MSG_CHECKING([if $ac_cv_path_bash_prog works]) if "$ac_cv_path_bash_prog" -norc -c : 2>&AC_FD_CC; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) ac_cv_path_bash_prog=no fi fi if test "x$ac_cv_path_bash_prog" = "xno"; then :; else
0a86982003-11-07Martin Stjernholm  AC_MSG_WARN([Found bash as $ac_cv_path_bash_prog.
c334a02001-03-27Henrik Grubbström (Grubba) Will attempt to restart configure with bash for performance.
0a86982003-11-07Martin Stjernholm If this fails, please set CONFIG_SHELL to /bin/sh before starting configure.])
4acd012004-02-09Henrik Grubbström (Grubba)  CONFIG_SHELL="$ac_cv_path_bash_prog -norc"
c334a02001-03-27Henrik Grubbström (Grubba)  export CONFIG_SHELL echo $CONFIG_SHELL "$srcdir/configure" $ac_configure_args
89b28a2001-05-31Fredrik Hübinette (Hubbe)  eval exec $CONFIG_SHELL "$srcdir/configure" $ac_configure_args exit 17
c334a02001-03-27Henrik Grubbström (Grubba)  fi else :; fi
27152b2002-12-14Henrik Grubbström (Grubba) AC_PROG_MAKE_SET
42496b2002-12-14Henrik Grubbström (Grubba)  rm "conftest_VPATH.in" 2>/dev/null
f156cc2002-12-14Henrik Grubbström (Grubba) touch "$srcdir/conftest_VPATH.in"
bad86f2002-12-14Henrik Grubbström (Grubba) if test -f conftest_VPATH.in; then :; else
27152b2002-12-14Henrik Grubbström (Grubba)  # Not building in source tree. AC_MSG_CHECKING([whether ${MAKE-make} supports VPATH]) AC_CACHE_VAL(pike_cv_make_supports_VPATH, [ cat > conftestmake <<EOF VPATH=.:$srcdir
22e80f2002-12-14Henrik Grubbström (Grubba) .SUFFIXES: .in .out .in.out:
27152b2002-12-14Henrik Grubbström (Grubba)  cat "\$<" >"\$@" EOF pike_cv_make_supports_VPATH=no
9edb202004-03-10Henrik Grubbström (Grubba)  if ${MAKE-make} -f conftestmake conftest_VPATH.out >/dev/null 2>&AC_FD_CC; then
f156cc2002-12-14Henrik Grubbström (Grubba)  if test -f conftest_VPATH.out; then
27152b2002-12-14Henrik Grubbström (Grubba)  pike_cv_make_supports_VPATH=yes else :; fi else :; fi
f156cc2002-12-14Henrik Grubbström (Grubba)  rm -f conftestmake conftest_VPATH.out
27152b2002-12-14Henrik Grubbström (Grubba)  ]) AC_MSG_RESULT($pike_cv_make_supports_VPATH) if test "x$pike_cv_make_supports_VPATH" = "xno"; then
fbbc942002-12-15Henrik Grubbström (Grubba)  AC_ERROR([ Building in a separate directory is not supported without VPATH.
27152b2002-12-14Henrik Grubbström (Grubba) 
fbbc942002-12-15Henrik Grubbström (Grubba) Build in the source directory, or try another make (eg gnumake). ]) exit 1
27152b2002-12-14Henrik Grubbström (Grubba)  else :; fi fi
f156cc2002-12-14Henrik Grubbström (Grubba) rm "$srcdir/conftest_VPATH.in" 2>/dev/null
27152b2002-12-14Henrik Grubbström (Grubba) 
b0a67e2004-03-08Henrik Grubbström (Grubba) if test -d "$srcdir/../bundles"; then # Some of the bundled libraries (eg nettle) set SHELL. AC_MSG_CHECKING([whether ${MAKE-make} supports spaces in SHELL]) AC_CACHE_VAL(pike_cv_make_supports_spaces_in_SHELL, [ cat > conftestmake <<EOF SHELL=/bin/sh -n
9edb202004-03-10Henrik Grubbström (Grubba) false:
b0a67e2004-03-08Henrik Grubbström (Grubba)  /bin/false
9edb202004-03-10Henrik Grubbström (Grubba) true:
58d0b02004-03-10Henrik Grubbström (Grubba)  :
9edb202004-03-10Henrik Grubbström (Grubba) complex_false: test "foo" = "foo" && /bin/false complex_true:
58d0b02004-03-10Henrik Grubbström (Grubba)  test "foo" = "bar" || :
b0a67e2004-03-08Henrik Grubbström (Grubba) EOF
1252d32004-03-10Henrik Grubbström (Grubba)  if ${MAKE-make} -f conftestmake false >&AC_FD_CC 2>&AC_FD_CC; then
e8d9132004-03-08Henrik Grubbström (Grubba)  # /bin/sh was found, and /bin/false was not executed.
b0a67e2004-03-08Henrik Grubbström (Grubba)  pike_cv_make_supports_spaces_in_SHELL=yes
1252d32004-03-10Henrik Grubbström (Grubba)  elif ${MAKE-make} -f conftestmake complex_false >&AC_FD_CC 2>&AC_FD_CC; then
9edb202004-03-10Henrik Grubbström (Grubba)  # SHELL is ignored for simple targets, but not for more # complex expressions. # When SHELL is used, spaces are supported. pike_cv_make_supports_spaces_in_SHELL="complex only"
1252d32004-03-10Henrik Grubbström (Grubba)  elif ${MAKE-make} -f conftestmake complex_true >&AC_FD_CC 2>&AC_FD_CC; then
9edb202004-03-10Henrik Grubbström (Grubba)  # SHELL is ignored for all targets.
e8d9132004-03-08Henrik Grubbström (Grubba)  pike_cv_make_supports_spaces_in_SHELL=ignored
1252d32004-03-10Henrik Grubbström (Grubba)  elif ${MAKE-make} -f conftestmake true >&AC_FD_CC 2>&AC_FD_CC; then
9edb202004-03-10Henrik Grubbström (Grubba)  # SHELL is ignored for simple targets, but not for more # complex expressions. # When SHELL is used, spaces are not supported. pike_cv_make_supports_spaces_in_SHELL=no
b0a67e2004-03-08Henrik Grubbström (Grubba)  else
9edb202004-03-10Henrik Grubbström (Grubba)  # Spaces are not supported in SHELL.
b0a67e2004-03-08Henrik Grubbström (Grubba)  pike_cv_make_supports_spaces_in_SHELL=no fi rm -f conftestmake ]) AC_MSG_RESULT($pike_cv_make_supports_spaces_in_SHELL) else :; fi
eefb042004-12-29Marcus Agehall AC_ARG_ENABLE(pikelib, MY_DESCR([--enable-pikelib], [build pike as a library]), [enable_pikelib=yes], [enable_pikelib=no]) if test "x$enable_pikelib" != "xno"; then PIKE_MSG_WARN([BUILDING PIKE AS A LIBRARY -- HIGHLY EXPERIMENTAL!]) AC_DEFINE(LIBPIKE) fi
3084f22002-12-07Mirar (Pontus Hagland) AC_ARG_ENABLE(make_conf, MY_DESCR([--disable-make.conf], [do not use settings from /etc/make.conf]), [], [enable_make_conf=yes])
28a7602004-02-29Henrik Grubbström (Grubba) initial_cflags="${CFLAGS}" initial_cppflags="${CPPFLAGS}" initial_ldflags="${LDFLAGS}"
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
8a88f12004-03-09Henrik Grubbström (Grubba) # if test "x$enable_make_conf" = x"yes" -a -f /etc/make.conf; then # set >conftest.tmp # echo Using settings from /etc/make.conf... # . /etc/make.conf # set | diff -u conftest.tmp - | grep '^+C' # PIKE_MSG_WARN([Using settings from /etc/make.conf.]) # fi
bd841c2002-12-10Henrik Grubbström (Grubba) 
a1c5022001-10-06Henrik Grubbström (Grubba) AC_ARG_WITH(cflags, MY_DESCR([--with-cflags=cflags], [specify extra c compiler flags]), [ CFLAGS="$with_cflags $CFLAGS" ]) AC_ARG_WITH(cppflags, MY_DESCR([--with-cppflags=cppflags], [specify extra c preprocessor flags]), [ CPPFLAGS="$with_cppflags $CPPFLAGS" ]) AC_ARG_WITH(ldflags, MY_DESCR([--with-ldflags=ldflags], [specify extra linker flags]), [ LDFLAGS="$with_ldflags $LDFLAGS" ])
f2e5eb2001-04-25Henrik Grubbström (Grubba) 
ace3132004-03-09Xavier Beaudouin # Force use of thread libs LIBS
6c74552004-03-15Henrik Grubbström (Grubba) AC_ARG_WITH(thread-library, MY_DESCR([--with-thread-library=lib], [Use a specific thread library]), [ case "x$withval" in x-*) with_thread_library="$withval" ;; *) with_thread_library="-l$withval" ;; esac ], [ with_thread_library=no ])
ace3132004-03-09Xavier Beaudouin 
7b39411997-02-06Fredrik Hübinette (Hubbe) for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN([You are using a site file to initialize configure, please
7b39411997-02-06Fredrik Hübinette (Hubbe) 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
a1c5022001-10-06Henrik Grubbström (Grubba) AC_ARG_ENABLE(binary, MY_DESCR([--disable-binary],
a924142002-11-18Henrik Grubbström (Grubba)  [do not configure for binary build, only do tests for precompilation stuff]),
a1c5022001-10-06Henrik Grubbström (Grubba)  [], [enable_binary=yes])
4174542001-01-26Martin Stjernholm  if test "x$enable_binary" = "xno"; then
0a86982003-11-07Martin Stjernholm  PIKE_MSG_WARN([Short-circuiting configure tests for binary building. Only some
c6f4a82002-01-27Martin Stjernholm targets in the Makefile can be used, typically those that only
0a86982003-11-07Martin Stjernholm operates on the source directory, e.g. depend.])
5c9db42002-01-27Martin Stjernholm  AC_DEFINE(DISABLE_BINARY)
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
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN([CC is different than last time Pike was compiled,
0a86982003-11-07Martin Stjernholm It is probably best to delete ./config.cache before proceeding.])
1acce82001-01-27Martin Stjernholm  fi
7b39411997-02-06Fredrik Hübinette (Hubbe) 
1acce82001-01-27Martin Stjernholm  pike_cv_prog_CC_save="$CC"
7b39411997-02-06Fredrik Hübinette (Hubbe) 
c6f4a82002-01-27Martin Stjernholm fi
abeefc2002-04-30Martin Stjernholm AC_ARG_ENABLE(noopt-retry, MY_DESCR([--disable-noopty-retry],
a924142002-11-18Henrik Grubbström (Grubba)  [do not retry compilation without optimizations if it fails]),
abeefc2002-04-30Martin Stjernholm  [], [noopt_retry=yes])
c6f4a82002-01-27Martin Stjernholm # Do the below even when --disable-binary is used, since we need a # real $CPP, and AC_PROG_CPP wants AC_PROG_CC to be called earlier. # $CC will be overridden with a dummy later on. # 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) 
9211642004-12-16Henrik Grubbström (Grubba) AC_MSG_CHECKING([whether we are using Intel C])
00f5cf2004-12-16Henrik Grubbström (Grubba) AC_CACHE_VAL(pike_cv_prog_icc, [
d386a22004-12-16Henrik Grubbström (Grubba)  AC_EGREP_CPP([oui], [
9211642004-12-16Henrik Grubbström (Grubba) #if defined(__ECC) || defined(__ICC) || defined(__INTEL_COMPILER)
b0536b2004-12-16Dan Nelson  oui;
9211642004-12-16Henrik Grubbström (Grubba) #endif
55f2a92004-12-16Henrik Grubbström (Grubba)  ], pike_cv_prog_icc=yes, pike_cv_prog_icc=no)
9211642004-12-16Henrik Grubbström (Grubba) ]) AC_MSG_RESULT($pike_cv_prog_icc) if test "$pike_cv_prog_icc" = "yes"; then ICC=yes fi
2ed72c2000-09-17Henrik Grubbström (Grubba) #############################################################################
c6f4a82002-01-27Martin Stjernholm if test "x$enable_binary" != "xno"; then
1acce82001-01-27Martin Stjernholm  AC_ISC_POSIX AC_AIX AC_MINIX fi
2ed72c2000-09-17Henrik Grubbström (Grubba)  #############################################################################
4827972000-09-16Henrik Grubbström (Grubba) 
e2172a2003-10-03Henrik Grubbström (Grubba) # option, cache_name, variable, do_if_failed, do_if_ok, paranoia_test
6cefa12000-09-27Henrik Grubbström (Grubba) AC_DEFUN(AC_SYS_COMPILER_FLAG, [ AC_MSG_CHECKING($1) AC_CACHE_VAL(pike_cv_option_$2, [
e2172a2003-10-03Henrik Grubbström (Grubba)  OLD_CPPFLAGS="[$]CPPFLAGS" CPPFLAGS="[$]OLD_CPPFLAGS $1"
2c412d2002-04-06Marcus Comstedt  old_ac_link="[$]ac_link" ac_link="[$]old_ac_link 2>conftezt.out.2"
ffff622001-03-19Henrik Grubbström (Grubba)  AC_TRY_RUN([ int foo; int main(int argc, char **argv) {
a924142002-11-18Henrik Grubbström (Grubba)  /* The following code triggs gcc:s generation of aline opcodes,
ffff622001-03-19Henrik Grubbström (Grubba)  * which some versions of as does not support. */ if (argc > 0) argc = 0; return argc; } ],pike_cv_option_$2=yes,
6cefa12000-09-27Henrik Grubbström (Grubba)  pike_cv_option_$2=no, [ AC_TRY_LINK([], [], pike_cv_option_$2=yes, pike_cv_option_$2=no) ])
7edeb72002-08-16Henrik Grubbström (Grubba)  if grep -i 'unrecognized option' <conftezt.out.2 >/dev/null; then
2c412d2002-04-06Marcus Comstedt  pike_cv_option_$2=no
7edeb72002-08-16Henrik Grubbström (Grubba)  elif grep -i 'unknown option' <conftezt.out.2 >/dev/null; then # cc/HPUX says the following regarding -q64: # # cc: warning 422: Unknown option "6" ignored. # cc: warning 422: Unknown option "4" ignored. pike_cv_option_$2=no elif grep -i 'optimizer bugs' <conftezt.out.2 >/dev/null; then
5ffbb12002-08-12Henrik Grubbström (Grubba)  # gcc/FreeBSD-4.6/alpha says the following regarding -O2: # # cc1: warning: # *** # *** The -O2 flag TRIGGERS KNOWN OPTIMIZER BUGS ON THIS PLATFORM # ***
7edeb72002-08-16Henrik Grubbström (Grubba)  pike_cv_option_$2=no
902d642002-09-03Henrik Grubbström (Grubba)  elif grep -i 'not found' <conftezt.out.2 >/dev/null; then # cc/AIX says the following regarding +O3: # # cc: 1501-228 input file +O3 not found pike_cv_option_$2=no
98d2f12002-09-07Henrik Grubbström (Grubba)  elif grep -i 'ignored' <conftezt.out.2 >/dev/null; then # gcc/AIX says the following regarding -fpic: # # cc1: warning: -fpic ignored (all code is position independent) pike_cv_option_$2=no
2d7e252004-12-16Henrik Grubbström (Grubba)  elif grep -i 'ignoring option' <conftezt.out.2 >/dev/null; then # icc/Linux says the following regarding -Wcomment: # # icc: Command line warning: ignoring option '-W'; no argument required pike_cv_option_$2=no elif grep -i 'not supported' <conftezt.out.2 >/dev/null; then # icc/Linux says the following regarding -W: # # icc: Command line remark: option '-W' not supported pike_cv_option_$2=no
211a012005-04-07Henrik Grubbström (Grubba)  elif grep -i 'illegal option' <conftezt.out.2 >/dev/null; then # cc/Solaris says the following regarding -xdepend: # # cc: Warning: illegal option -xdepend pike_cv_option_$2=no
7edeb72002-08-16Henrik Grubbström (Grubba)  else :; fi
e2172a2003-10-03Henrik Grubbström (Grubba)  ifelse([$6], , ,[ if test "$pike_cv_option_$2" = yes; then : $6 else :; fi ]) dnl CPPFLAGS="[$]OLD_CPPFLAGS" ac_link="[$]old_ac_link"
2c412d2002-04-06Marcus Comstedt  rm conftezt.out.2
6cefa12000-09-27Henrik Grubbström (Grubba)  ]) 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 ]) #############################################################################
1ab51d2001-06-29Henrik Grubbström (Grubba) if test "x$GCC" = "x"; then GCC=no
9b62872002-10-03Henrik Grubbström (Grubba) else
b933a62002-10-03Henrik Grubbström (Grubba)  :;
9b62872002-10-03Henrik Grubbström (Grubba) fi
1ab51d2001-06-29Henrik Grubbström (Grubba) 
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
a924142002-11-18Henrik Grubbström (Grubba)  # The AIX 5L/cc beta can not generate working binaries without a
4827972000-09-16Henrik Grubbström (Grubba)  # data-segment...
a924142002-11-18Henrik Grubbström (Grubba)  AC_MSG_CHECKING([if we are 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
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN(Lost track of data-segment kludge-file.)
4827972000-09-16Henrik Grubbström (Grubba)  fi else
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN(Failed to rename data-segment kludge-file.)
4827972000-09-16Henrik Grubbström (Grubba)  fi else
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN(Can not find data-segment kludgefile.)
4827972000-09-16Henrik Grubbström (Grubba)  fi else
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN(Failed to compile data-segment kludge.)
4827972000-09-16Henrik Grubbström (Grubba)  fi if test "x$pike_cv_datasegment_file" = "xno"; then
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN(Some tests may yield false results.)
4827972000-09-16Henrik Grubbström (Grubba)  else LIBS="$pike_cv_datasegment_file $LIBS" export LIBS
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN(Data-segment kludge applied.)
4827972000-09-16Henrik Grubbström (Grubba)  fi else AC_MSG_RESULT(yes) fi fi
fdcf1c2002-10-04Henrik Grubbström (Grubba) else if test "x$TCC" = "xyes"; then AC_MSG_CHECKING(if we can use pragma TenDRA longlong) AC_CACHE_VAL(pike_cv_pragma_tendra_longlong, [ AC_TRY_COMPILE([ #pragma TenDRA longlong type allow
0c15352002-10-05Henrik Grubbström (Grubba)  ], [], [ pike_cv_pragma_tendra_longlong=yes
fdcf1c2002-10-04Henrik Grubbström (Grubba)  ], [ pike_cv_pragma_tendra_longlong=no ]) ]) if test "x$pike_cv_pragma_tendra_longlong" = "xyes"; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PRAGMA_TENDRA_LONGLONG) else AC_MSG_RESULT(no) fi AC_MSG_CHECKING(if we can use pragma TenDRA set longlong type) AC_CACHE_VAL(pike_cv_pragma_tendra_set_longlong_type, [ AC_TRY_COMPILE([ #ifdef HAVE_TENDRA_LONGLONG #pragma TenDRA longlong type allow #endif /* HAVE_TENDRA_LONGLONG */ #pragma TenDRA set longlong type : long long long long foo;
0c15352002-10-05Henrik Grubbström (Grubba)  ], [], [ pike_cv_pragma_tendra_set_longlong_type=yes
fdcf1c2002-10-04Henrik Grubbström (Grubba)  ], [ pike_cv_pragma_tendra_set_longlong_type=no ]) ]) if test "x$pike_cv_pragma_tendra_set_longlong_type" = "xyes"; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PRAGMA_TENDRA_SET_LONGLONG_TYPE) else AC_MSG_RESULT(no) fi else :; fi
4827972000-09-16Henrik Grubbström (Grubba) 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)
21ee4b2003-12-16Marek Habersack  AC_EGREP_CPP(oui, [ oui ], , pike_cv_filesystem_syncronization=broken)
18be802000-03-02Fredrik Hübinette (Hubbe)  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 #############################################################################
c6f4a82002-01-27Martin Stjernholm LIBDIR=`(cd $srcdir/../lib ; pwd)` BINDIR=`(cd $srcdir/../bin ; pwd)`
3c9dc12002-08-01Martin Nilsson MANDIR=`(cd $srcdir/../man ; pwd)`
8c392e2003-01-02Henrik Grubbström (Grubba) DOCDIR=`(cd $srcdir/../refdoc ; pwd)`
3c9dc12002-08-01Martin Nilsson BASEDIR=`(cd $srcdir/.. ; pwd)`
c6f4a82002-01-27Martin Stjernholm BUILDDIR=`pwd` AC_SUBST(LIBDIR) AC_SUBST(BINDIR)
3c9dc12002-08-01Martin Nilsson AC_SUBST(MANDIR)
8c392e2003-01-02Henrik Grubbström (Grubba) AC_SUBST(DOCDIR)
3c9dc12002-08-01Martin Nilsson AC_SUBST(BASEDIR)
c6f4a82002-01-27Martin Stjernholm AC_SUBST(BUILDDIR) #############################################################################
4174542001-01-26Martin Stjernholm #
c6f4a82002-01-27Martin Stjernholm # Some cross-compilation support and --disable-binary stuff
4174542001-01-26Martin Stjernholm #
c6f4a82002-01-27Martin Stjernholm if test "x$enable_binary" = "xno"; then CROSS=yes else CROSS="$ac_cv_prog_cc_cross" fi
4174542001-01-26Martin Stjernholm AC_SUBST(CROSS)
c6f4a82002-01-27Martin Stjernholm if test "x$enable_binary" = "xno"; then CC="$BINDIR/nobinary_dummy cc" RUNPIKE="USE_PIKE"
4174542001-01-26Martin Stjernholm else
cc01ac2003-12-17Marcus Comstedt  if test "x$cross_compiling" = "xyes"; then RUNPIKE="USE_PIKE" else RUNPIKE="DEFAULT_RUNPIKE" fi
4174542001-01-26Martin Stjernholm fi
c6f4a82002-01-27Martin Stjernholm AC_SUBST(RUNPIKE)
4174542001-01-26Martin Stjernholm  ############################################################################# 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 
8421612001-06-29Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(if we can allocate large auto variables) AC_CACHE_VAL(pike_cv_C_supports_large_auto, [ AC_TRY_LINK([ #include <stdio.h> int eat_stack(int foo) { char large_array[131072] = ""; int i, sum = 0; for (i = 0; i < foo; i++) {
a924142002-11-18Henrik Grubbström (Grubba)  /* Make sure the compiler does not optimize away the array. */
8421612001-06-29Fredrik Hübinette (Hubbe)  large_array[i] = sum; sum += foo; } for (i = 0; i < foo; i++) { sum += large_array[i] - large_array[foo-1-i]; } return sum; } ], [ return !eat_stack(4711); ], [ pike_cv_C_supports_large_auto=yes ], [ pike_cv_C_supports_large_auto=no ]) ]) if test "$pike_cv_C_supports_large_auto" = "yes"; then AC_MSG_RESULT([yes - good]) else AC_MSG_RESULT([no]) AC_MSG_CHECKING([if we can make a workaround by defining _chkstk to call __chkstk]) AC_CACHE_VAL([pike_cv_kludge__chkstk], [ AC_TRY_LINK([ #include <stdio.h> int eat_stack(int foo) { char large_array[131072] = ""; int i, sum = 0; for (i = 0; i < foo; i++) {
a924142002-11-18Henrik Grubbström (Grubba)  /* Make sure the compiler does not optimize away the array. */
8421612001-06-29Fredrik Hübinette (Hubbe)  large_array[i] = sum; sum += foo; } for (i = 0; i < foo; i++) { sum += large_array[i] - large_array[foo-1-i]; } return sum; } extern size_t __chkstk(); size_t _chkstk() { return __chkstk(); } ], [ return !eat_stack(4711); ], [ pike_cv_kludge__chkstk=yes ], [ pike_cv_kludge__chkstk=no ]) ]) if test "$pike_cv_kludge__chkstk" = "yes"; then AC_MSG_RESULT([yes - applying workaround]) AC_DEFINE(HAVE_BROKEN_CHKSTK) else AC_MSG_RESULT([no]) AC_ERROR([Your C compiler does not link code that uses large auto variables. Please check config.log, and fix the problem.]) exit 1 fi fi #############################################################################
d1e3fe1999-03-06Henrik Grubbström (Grubba) ## Build smartlink
bb47fb2004-05-08Marcus Agehall AC_ARG_ENABLE(smartlink_binary, MY_DESCR([--disable-smartlink-binary], [do not build and use the smartlink binary]), [], [force_smartlink_script_only=yes])
d1e3fe1999-03-06Henrik Grubbström (Grubba) 
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, [
cbb6512003-12-07Marcus Comstedt if test "$cross_compiling" = "yes"; then case "$host_alias" in *amigaos*) pike_cv_sys_os="AmigaOS";; *linux*) pike_cv_sys_os="Linux";; *solaris*) pike_cv_sys_os="Solaris";; *sunos*) pike_cv_sys_os="SunOS";; *windows*) pike_cv_sys_os="Windows_NT";;
9fee572005-01-06Henrik Grubbström (Grubba)  *mingw*|*MINGW*) pike_cv_sys_os="Windows_NT" pike_cv_is_mingw="yes";;
cbb6512003-12-07Marcus Comstedt  *) pike_cv_sys_os="Unknown";; esac else
613bc52000-08-28Henrik Grubbström (Grubba) if test "$uname_prog" != "no"; then
7cfebe2001-09-23Marcus Comstedt  # uname on UNICOS doesn't work like other people's uname... if getconf CRAY_RELEASE >/dev/null 2>&1; then pike_cv_sys_os="UNICOS" else pike_cv_sys_os="`uname`" fi
613bc52000-08-28Henrik Grubbström (Grubba)  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" ;;
ae6fed2002-08-17Henrik Grubbström (Grubba)  *Windows*|*windows*) pike_cv_sys_os="Windows_NT" ;;
e37d792004-05-10Marcus Agehall  *MINGW*|*mingw*)
9fee572005-01-06Henrik Grubbström (Grubba)  pike_cv_is_mingw="yes"
e37d792004-05-10Marcus Agehall  pike_cv_sys_os="Windows_NT" ;;
613bc52000-08-28Henrik Grubbström (Grubba)  esac else pike_cv_sys_os="Not Solaris" fi
cbb6512003-12-07Marcus Comstedt fi
613bc52000-08-28Henrik Grubbström (Grubba) ]) 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
25e4742002-10-13Xavier Beaudouin # Workaround for compiling Pike on some OS that have some clues
827dda2002-10-04Xavier Beaudouin case "$pike_cv_sys_os" in CYGWIN*)
87eacc2005-02-04Henrik Grubbström (Grubba)  # Cygwin has both Windows includes and Unix ones.
25e4742002-10-13Xavier Beaudouin  # Hiding them make it a somewhat Unix compliant OS.
827dda2002-10-04Xavier Beaudouin  echo 'Cygwin host detected. Enabling workarounds...'
ba0a652002-10-09Xavier Beaudouin  # winsock.h, winbase.h, winsock2.h, windows.h, wingdi.h, windef.h
827dda2002-10-04Xavier Beaudouin  # are part of VC api but given as headers in cygwin. We
87eacc2005-02-04Henrik Grubbström (Grubba)  # should not detect them when using cygwin
827dda2002-10-04Xavier Beaudouin  ac_cv_header_wingdi_h="no"
ba0a652002-10-09Xavier Beaudouin  ac_cv_header_windef_h="no"
827dda2002-10-04Xavier Beaudouin  ac_cv_header_winsock_h="no" ac_cv_header_winsock2_h="no" ac_cv_header_winbase_h="no" ac_cv_header_windows_h="no"
09322e2003-03-09Xavier Beaudouin  with_machine_code="no"
827dda2002-10-04Xavier Beaudouin  ;;
e37d792004-05-10Marcus Agehall  Windows_NT)
9fee572005-01-06Henrik Grubbström (Grubba)  if test "$pike_cv_is_mingw" = "yes"; then #with_machine_code="no"
e37d792004-05-10Marcus Agehall  ac_cv_func_fpclass="no" fi ;;
25e4742002-10-13Xavier Beaudouin  FreeBSD*)
87eacc2005-02-04Henrik Grubbström (Grubba)  # FreeBSD has different naming convention for gtk-config and sdl-config
64356c2003-12-19Dan Nelson  if test "x${GTK_CONFIG}" = "x"; then
2b30042003-12-17Marcus Comstedt  GTK_CONFIG=`which ${ac_tool_prefix}gtk12-config`
aa5ac72002-10-13Xavier Beaudouin  export GTK_CONFIG
25e4742002-10-13Xavier Beaudouin  fi
64356c2003-12-19Dan Nelson  if test "x${SDL_CONFIG}" = "x"; then
2b30042003-12-17Marcus Comstedt  SDL_CONFIG=`which ${ac_tool_prefix}sdl11-config`
aa5ac72002-10-13Xavier Beaudouin  export SDL_CONFIG
25e4742002-10-13Xavier Beaudouin  fi ;;
827dda2002-10-04Xavier Beaudouin esac
bb47fb2004-05-08Marcus Agehall # Skip fi user does not wish to use smartlink binary. if test "x$force_smartlink_script_only" = "x"; then
ac423c2003-01-16David Hedbor # Strip smartlink from $CC REALCC="`echo $CC|sed -e 's/.*smartlink //'`"
9041271999-03-06Henrik Grubbström (Grubba) # FIXME: Add proper tests
71561a2002-08-21Henrik Grubbström (Grubba) AC_MSG_CHECKING([for ld.so run path method]) AC_CACHE_VAL(pike_cv_ld_so_run_path_method, [ case "$UNAME" in OSF1\ V4.*|OSF1\ V5.*|OSF1\ V6.*) pike_cv_run_path_method=rpath
d1e3fe1999-03-06Henrik Grubbström (Grubba)  ;;
71561a2002-08-21Henrik Grubbström (Grubba)  HPUX\ 11.*) pike_cv_run_path_method=plus_b
108dde2000-10-31Henrik Grubbström (Grubba)  ;;
71561a2002-08-21Henrik Grubbström (Grubba)  IRIX\ 6.*) pike_cv_run_path_method=rpath
d1e3fe1999-03-06Henrik Grubbström (Grubba)  ;;
71561a2002-08-21Henrik Grubbström (Grubba)  IRIX\ 5.*) pike_cv_run_path_method=rpath
d1e3fe1999-03-06Henrik Grubbström (Grubba)  ;;
71561a2002-08-21Henrik Grubbström (Grubba)  SunOS\ 5.*) if test "$TCC" = "yes"; then # tcc doesn't know about -R pike_cv_run_path_method=wl_r else pike_cv_run_path_method=r fi
d1e3fe1999-03-06Henrik Grubbström (Grubba)  ;;
71561a2002-08-21Henrik Grubbström (Grubba)  Linux\ 2.*)
9211642004-12-16Henrik Grubbström (Grubba)  if test "$ICC" = "yes"; then
3cfc072004-04-16Henrik Grubbström (Grubba)  # icc or ecc.
d4fc872003-01-16David Hedbor  pike_cv_run_path_method=qoption else pike_cv_run_path_method=wl fi
d1e3fe1999-03-06Henrik Grubbström (Grubba)  ;;
71561a2002-08-21Henrik Grubbström (Grubba)  UnixWare\ 7.*|OpenUNIX\ 8.*) if test "$ac_cv_prog_gcc" = "yes"; then pike_cv_run_path_method=xlinker_yp_ else pike_cv_run_path_method=yp_ fi
ed7aeb2000-06-16Henrik Grubbström (Grubba)  ;;
71561a2002-08-21Henrik Grubbström (Grubba)  *) pike_cv_run_path_method=ld_library_path
d1e3fe1999-03-06Henrik Grubbström (Grubba)  ;;
71561a2002-08-21Henrik Grubbström (Grubba)  esac ])
fdb3872002-08-21Henrik Grubbström (Grubba) case "$pike_cv_run_path_method" in
71561a2002-08-21Henrik Grubbström (Grubba)  rpath) AC_DEFINE(USE_RPATH) AC_MSG_RESULT([use -rpath]) ;; plus_b) AC_DEFINE(USE_PLUS_b) AC_MSG_RESULT([use +b]) ;; yp_) AC_DEFINE(USE_YP_) AC_MSG_RESULT([use -Yp,]) ;; xlinker_yp_) AC_DEFINE(USE_XLINKER_YP_) AC_MSG_RESULT([use -Xlinker -Yp, -Xlinker]) ;; wl_r) AC_DEFINE(USE_Wl_R) AC_MSG_RESULT([use -Wl,-R]) ;; r) AC_DEFINE(USE_R) AC_MSG_RESULT([use -R]) ;; wl) AC_DEFINE(USE_Wl) AC_MSG_RESULT([use -Wl,-rpath]) ;;
d4fc872003-01-16David Hedbor  qoption) AC_DEFINE(USE_Qoption) AC_MSG_RESULT([use -Qoption,ld,-rpath]) ;;
71561a2002-08-21Henrik Grubbström (Grubba)  ld_library_path|*) AC_DEFINE(USE_LD_LIBRARY_PATH) AC_MSG_RESULT([use LD_LIBRARY_PATH/LD_RUN_PATH]) ;;
2565f41997-02-26Fredrik Hübinette (Hubbe) esac
71561a2002-08-21Henrik Grubbström (Grubba) 
d1e3fe1999-03-06Henrik Grubbström (Grubba) # Fix a smartlink SMARTLINK="$BUILDDIR/smartlink"
9041271999-03-06Henrik Grubbström (Grubba) AC_MSG_CHECKING(if $SMARTLINK exists is up to date and works)
9edb202004-03-10Henrik Grubbström (Grubba) if ls -1tr "$SMARTLINK${ac_exeext}" "$srcdir/smartlink.$ac_ext" 2>/dev/null | head -n 1 | grep "smartlink.$ac_ext" >/dev/null 2>&AC_FD_CC && "$SMARTLINK" -v >/dev/null 2>&AC_FD_CC; 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
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_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
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN([Crosscompiler detected.])
f3a82d2005-02-11Henrik Grubbström (Grubba)  AC_PATH_PROGS(SMARTBUILDCC, gcc cc egcs, gcc, /usr/bin:/bin/:/usr/ccs/bin:/usr/local/bin:/usr/sfw/bin:/opt/sfw/bin:/opt/csw/bin:$PATH:$EXTRA_PATH)
cf39902001-01-19Henrik Grubbström (Grubba)  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) 
9edb202004-03-10Henrik Grubbström (Grubba)  link_cmd='${SMARTBUILDCC-cc} -o smartlink${ac_exeext} $CFLAGS -I. $CPPFLAGS $LDFLAGS $srcdir/smartlink.$ac_ext $LIBS 2>&AC_FD_CC' if { (eval echo Compiling smartlink: \"$link_cmd\") 1>&AC_FD_CC; (eval $link_cmd) 2>&AC_FD_CC; } && "$BUILDDIR/smartlink" -v >/dev/null 2>&AC_FD_CC; then
7e4d4e2000-12-13Fredrik Hübinette (Hubbe)  AC_MSG_RESULT(yes) else AC_MSG_RESULT(no - use the sh script) SMARTLINK="$BINDIR/smartlink"
d1e3fe1999-03-06Henrik Grubbström (Grubba)  fi fi
bb47fb2004-05-08Marcus Agehall else # force_smartlink_script_only AC_MSG_CHECKING(for smartlink build script) SMARTLINK="$BINDIR/smartlink" REALCC="$CC" AC_MSG_RESULT($SMARTLINK) fi # force_smartlink_script_only
d1e3fe1999-03-06Henrik Grubbström (Grubba)  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) 
ed1fae2002-08-14Henrik Grubbström (Grubba) # Restore the -O2 that the default AC_PROG_CC adds.
d4fc872003-01-16David Hedbor 
7e37bb2002-08-20Henrik Grubbström (Grubba) AC_SYS_COMPILER_FLAG(+O3,plus_O3,OPTIMIZE, [
88c8ad2003-02-22Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-O2,O2,OPTIMIZE, [ AC_SYS_COMPILER_FLAG(-O,O,OPTIMIZE)
7e37bb2002-08-20Henrik Grubbström (Grubba)  ]) ])
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
ed1fae2002-08-14Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-pipe, pipe, OPTIMIZE)
30d7e32003-12-04Per Hedbor  #### For exec-shield in newer linux kernels.
3957cc2004-05-11Henrik Grubbström (Grubba)  #### Linux's mprotect(2) is broken, so we unfortunately #### need to enable executabe stack.
e37d792004-05-10Marcus Agehall  #### This test crashes under mingw32 so let's disable for win32 for now. if test "$pike_cv_sys_os" != "Windows_NT"; then AC_SYS_COMPILER_FLAG([[-Wa,--execstack]],executableheap,CFLAGS) fi
613bc52000-08-28Henrik Grubbström (Grubba)  fi
5c8e891995-10-29Fredrik Hübinette (Hubbe) fi
2901d31998-08-05Fredrik Hübinette (Hubbe) LD='$(CC) $(CFLAGS)'
37428e2001-10-05Fredrik Hübinette (Hubbe) LC_REQ="-lc"
0809711998-02-27Marcus Comstedt 
de16081997-06-03Fredrik Hübinette (Hubbe) case "$pike_cv_sys_os" in
f4215b2002-08-30H. William Welliver III  Darwin*) LC_REQ="-lc -lcc_dynamic" ;;
de16081997-06-03Fredrik Hübinette (Hubbe)  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
e9e9d82001-09-22Henrik Grubbström (Grubba)  [4-9].*) ;;
1807bd2000-11-28Fredrik Hübinette (Hubbe)  *) LD="$BINDIR/smartlink shlicc";; esac
0809711998-02-27Marcus Comstedt  ;;
bcb5382001-08-23Boyd Lynn Gerber  UnixWare*|OpenUNIX*)
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"
37428e2001-10-05Fredrik Hübinette (Hubbe)  LC_REQ=""
2a7fc81999-11-29Boyd Lynn Gerber  fi ;; esac
9ab4461998-11-06Honza Petrous  ;;
d4fc872003-01-16David Hedbor  Linux*)
3cfc072004-04-16Henrik Grubbström (Grubba)  if $REALCC -V 2>&1 | head -1 | grep "Intel(R) C" >/dev/null; then # icc or ecc.
d4fc872003-01-16David Hedbor  LC_REQ="" fi ;;
de16081997-06-03Fredrik Hübinette (Hubbe) esac
dcad551996-08-03Fredrik Hübinette (Hubbe) 
0809711998-02-27Marcus Comstedt AC_SUBST(LD)
37428e2001-10-05Fredrik Hübinette (Hubbe) AC_SUBST(LC_REQ)
0809711998-02-27Marcus Comstedt 
de16081997-06-03Fredrik Hübinette (Hubbe) #############################################################################
f6c3371998-09-29Henrik Grubbström (Grubba) 
87eacc2005-02-04Henrik Grubbström (Grubba) AC_ARG_WITH(extra_debug_checks, MY_DESCR([--with-extra-debug-checks], [enable some extra (possibly verbose) debug checks.]), [], [ if test "x$pike_cv_sys_os" = "xOSF1"; then # Attempt to detect the cause for test_resolv to fail on Unicode.so. with_extra_debug_checks="yes" else with_extra_debug_checks=no fi ]) if test "x$with_extra_debug_checks" = "xno"; then :; else AC_MSG_WARN([Enabling extra debug checks.]) AC_DEFINE([PIKE_EXTRA_DEBUG]) fi #############################################################################
a1c5022001-10-06Henrik Grubbström (Grubba) AC_ARG_WITH(patch_gcc, MY_DESCR([--with-patch-gcc], [attempt to patch the UA32 relocation bug.]), [], [with_patch_gcc=no])
b09bef2001-01-25Henrik Grubbström (Grubba) 
ac61a22001-12-06Henrik Grubbström (Grubba) AC_ARG_WITH(force_ua32, MY_DESCR([--with-force-ua32], [ignore the UA32 relocation bug.]), [], [with_force_ua32=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
0a86982003-11-07Martin Stjernholm  PIKE_MSG_WARN([GNU ld found on Solaris sparc system ($gcc_ld_path/ld). This may cause the dynamic module support to fail.])
4d012e2000-01-19Wilhelm Köhler  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
ea62cf2004-09-13Marcus Comstedt  pike_compile='${CC-cc} -S $CPPFLAGS conftest.c 1>&AC_FD_CC'
9998151999-05-30Henrik Grubbström (Grubba)  pike_cv_gcc_uaword=no
9edb202004-03-10Henrik Grubbström (Grubba)  if { (eval echo configure: \"$pike_compile\") >&AC_FD_CC; (eval $pike_compile) 2>&AC_FD_CC; }; then if grep ".uaword" conftest.s 2>&AC_FD_CC >/dev/null; then echo "configure: result contains .uaword:" >&AC_FD_CC cat conftest.s >&AC_FD_CC
9998151999-05-30Henrik Grubbström (Grubba)  pike_cv_gcc_uaword=yes else :; fi else
9edb202004-03-10Henrik Grubbström (Grubba)  echo "configure: failed program was:" >&AC_FD_CC cat conftest.c >&AC_FD_CC
9998151999-05-30Henrik Grubbström (Grubba)  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
0a86982003-11-07Martin Stjernholm  PIKE_MSG_WARN([Your gcc/as combo may generate R_SPARC_UA32 relocations. R_SPARC_UA32 relocations are unsupported in Solaris >= 2.3, and have broken support in Solaris 7.])
b09bef2001-01-25Henrik Grubbström (Grubba) 
ac61a22001-12-06Henrik Grubbström (Grubba)  if test "x$with_patch_gcc$with_force_ua32" = "xnono"; then
b09bef2001-01-25Henrik Grubbström (Grubba)  if test -d "/var/sadm/patch/107058-01/."; then
0a86982003-11-07Martin Stjernholm  PIKE_MSG_WARN([Back out patch 107058-01, or recompile gcc with a modified config/sparc/sol2.h.])
b09bef2001-01-25Henrik Grubbström (Grubba)  else
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN([Recompile gcc with a modified config/sparc/sol2.h.])
b09bef2001-01-25Henrik Grubbström (Grubba)  fi
0a86982003-11-07Martin Stjernholm  PIKE_MSG_WARN([You may want to try binary patching gcc. In that case rerun configure with --with-patch-gcc. NOTE: Binary patching is highly experimental and risky, and may break your existing gcc even more. R_SPARC_UA32 relocations are supported on some versions of Solaris. If you want to try a binary with R_SPARC_UA32 relocations, rerun configure with --with-force-ua32.])
b09bef2001-01-25Henrik Grubbström (Grubba)  exit 1 fi
4b21e72002-05-08John W. Pierce  if test "x$with_patch_gcc" = "xno"; then :; else
0a86982003-11-07Martin Stjernholm  AC_MSG_WARN([Will attempt to patch gcc.])
b09bef2001-01-25Henrik Grubbström (Grubba) 
ac61a22001-12-06Henrik Grubbström (Grubba)  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
b09bef2001-01-25Henrik Grubbström (Grubba) 
ac61a22001-12-06Henrik Grubbström (Grubba)  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
b09bef2001-01-25Henrik Grubbström (Grubba) 
ac61a22001-12-06Henrik Grubbström (Grubba)  AC_MSG_CHECKING(if patch_cc1 compiles)
9edb202004-03-10Henrik Grubbström (Grubba)  link_cmd='${CC-cc} -o patch_cc1${ac_exeext} $CFLAGS -I. $CPPFLAGS $LDFLAGS $srcdir/patch_cc1.$ac_ext $LIBS 2>&AC_FD_CC' if { (eval echo Compiling patch_cc1: \"$link_cmd\") 1>&AC_FD_CC; (eval $link_cmd) 2>&AC_FD_CC; } && "$BUILDDIR/patch_cc1" -v >/dev/null 2>&AC_FD_CC; then
ac61a22001-12-06Henrik Grubbström (Grubba)  AC_MSG_RESULT(yes)
b09bef2001-01-25Henrik Grubbström (Grubba) 
ac61a22001-12-06Henrik Grubbström (Grubba)  if test -f "$cc1.patched"; then AC_MSG_ERROR([$cc1.patched already exists.
2c2ffa2001-01-26Henrik Grubbström (Grubba) Please move it out of the way.])
ac61a22001-12-06Henrik Grubbström (Grubba)  exit 1; fi
b09bef2001-01-25Henrik Grubbström (Grubba) 
ac61a22001-12-06Henrik Grubbström (Grubba)  if test -f "$cc1.orig"; then AC_MSG_ERROR([$cc1.orig already exists.
2c2ffa2001-01-26Henrik Grubbström (Grubba) Please move it out of the way.])
ac61a22001-12-06Henrik Grubbström (Grubba)  exit 1; fi
b09bef2001-01-25Henrik Grubbström (Grubba) 
ac61a22001-12-06Henrik Grubbström (Grubba)  AC_MSG_CHECKING(if patch_cc1 works)
9edb202004-03-10Henrik Grubbström (Grubba)  if ./patch_cc1 "$cc1" 2>&AC_FD_CC >"$cc1.patched"; then
ac61a22001-12-06Henrik Grubbström (Grubba)  if test -f "$cc1.patched"; then :; else AC_MSG_RESULT(no - failed to create $cc1.patched) exit 1
b09bef2001-01-25Henrik Grubbström (Grubba)  fi
ac61a22001-12-06Henrik Grubbström (Grubba)  if chmod 755 "$cc1.patched"; then :; else AC_MSG_RESULT(no - failed to set permission to 755 on $cc1.patched)
b09bef2001-01-25Henrik Grubbström (Grubba)  exit 1 fi
ac61a22001-12-06Henrik Grubbström (Grubba)  if test "`/bin/ls -l \"$cc1\"|awk '{print $5}'`" = "`/bin/ls -l \"$cc1.patched\"|awk '{print $5}'`"; then 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
b09bef2001-01-25Henrik Grubbström (Grubba) 
ac61a22001-12-06Henrik Grubbström (Grubba)  if "$cc1.patched" --help >/dev/null 2>&1; then :; else AC_MSG_RESULT(no -- the patched binary does not seem to work) exit 1 fi
1d5a7b2001-01-25Henrik Grubbström (Grubba) 
ac61a22001-12-06Henrik Grubbström (Grubba)  AC_MSG_RESULT(yes)
1d5a7b2001-01-25Henrik Grubbström (Grubba) 
15b7222003-11-07Martin Stjernholm  AC_MSG_WARN([Activating the patched cc1.
0a86982003-11-07Martin Stjernholm NOTE: Entering critical section.
15b7222003-11-07Martin Stjernholm If configure fails at this point a broken gcc my result.])
ac61a22001-12-06Henrik Grubbström (Grubba)  if /usr/bin/mv -f "$cc1" "$cc1.orig"; then
b09bef2001-01-25Henrik Grubbström (Grubba) 
15b7222003-11-07Martin Stjernholm  AC_MSG_WARN([Moved $cc1 to $cc1.orig.])
b09bef2001-01-25Henrik Grubbström (Grubba) 
ac61a22001-12-06Henrik Grubbström (Grubba)  if /usr/bin/mv -f "$cc1.patched" "$cc1"; then
15b7222003-11-07Martin Stjernholm  AC_MSG_WARN([Patching seems to have succeeded. Please rerun configure.])
ac61a22001-12-06Henrik Grubbström (Grubba)  exit 1 fi
b09bef2001-01-25Henrik Grubbström (Grubba) 
15b7222003-11-07Martin Stjernholm  AC_MSG_WARN([Moving the patched cc1 into place failed. Will try to restore the old cc1.])
ac61a22001-12-06Henrik Grubbström (Grubba)  if /usr/bin/mv -f "$cc1.orig" "$cc1"; then
15b7222003-11-07Martin Stjernholm  AC_MSG_WARN([The old cc1 has been restored.])
ac61a22001-12-06Henrik Grubbström (Grubba)  exit 1 fi AC_MSG_ERROR([Restoring the old cc1 failed.
2c2ffa2001-01-26Henrik Grubbström (Grubba) Your installation of gcc is most likely broken now. Sorry, you will have to restore it yourself. Please move $cc1.orig to $cc1.])
ac61a22001-12-06Henrik Grubbström (Grubba)  exit 1 else AC_MSG_ERROR([Failed to move the old cc1 to safety.
2c2ffa2001-01-26Henrik Grubbström (Grubba) Please replace $cc1 with $cc1.patched by hand.])
ac61a22001-12-06Henrik Grubbström (Grubba)  exit 1 fi else rm -f "$cc1.patched" AC_MSG_ERROR([The size has changed. You need to patch cc1 by hand.])
b09bef2001-01-25Henrik Grubbström (Grubba)  exit 1 fi else
ac61a22001-12-06Henrik Grubbström (Grubba)  AC_MSG_RESULT(no -- you need to patch cc1 by hand)
b09bef2001-01-25Henrik Grubbström (Grubba)  exit 1 fi
ac61a22001-12-06Henrik Grubbström (Grubba)  else AC_MSG_RESULT(no -- you need to patch cc1 by hand) exit 1 fi
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) 
a1c5022001-10-06Henrik Grubbström (Grubba) AC_ARG_WITH(root, MY_DESCR([--with-root=path], [specify a cross-compilation root-directory]),[
cf39902001-01-19Henrik Grubbström (Grubba)  case "$with_root" in /) with_root="" ;; /*) ;; no) with_root="" ;; *)
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN([Root path $with_root is not absolute. Ignored.])
cf39902001-01-19Henrik Grubbström (Grubba)  with_root="" ;; esac ],[with_root=""])
a1c5022001-10-06Henrik Grubbström (Grubba) MY_AC_ARG_WITH(relocatable_dumped_modules, MY_DESCR([--with-relocatable-dumped-modules], [make dumped modules relocatable]), [with_relocatable_dumped_modules=yes]) AC_ARG_WITH(dynamic_modules, MY_DESCR([--without-dynamic-modules], [link modules statically])) MY_AC_ARG_WITH(static_linking, MY_DESCR([--with-static-linking], [link statically, if possible]), [with_static_linking=yes])
6eebf22004-02-26Henrik Grubbström (Grubba) AC_ARG_WITH(bundles, MY_DESCR([--without-bundles],
75bee72004-02-26Henrik Grubbström (Grubba)  [do not enable bundled libraries]),
fc8dba2004-02-27Henrik Grubbström (Grubba)  [], [with_bundles=yes])
5f8a412004-02-27Henrik Grubbström (Grubba) pike_bundle_dir=""
75bee72004-02-26Henrik Grubbström (Grubba) if test "$with_bundles" = "no"; then :; else if test -d "$with_bundles/."; then # The user has specified a bundle directory. Use it. pike_bundle_dir="$with_bundles" elif test -d "$srcdir/../bundles/."; then # We have a bundle directory; enable them if needed. pike_bundle_dir=`cd "$srcdir/../bundles" && pwd` fi
ea88bf2004-02-29Henrik Grubbström (Grubba)  test -d bundles/. || mkdir bundles;
e358392004-02-29Henrik Grubbström (Grubba) fi
ea88bf2004-02-29Henrik Grubbström (Grubba) if test -d bundles/.; then
e358392004-02-29Henrik Grubbström (Grubba)  touch bundles/no_testsuites pike_bundle_prefix="`pwd`/bundles" LDFLAGS="$LDFLAGS -L$pike_bundle_prefix/lib" CPPFLAGS="$CPPFLAGS -I$pike_bundle_prefix/include"
6eebf22004-02-26Henrik Grubbström (Grubba) fi
5f8a412004-02-27Henrik Grubbström (Grubba) export pike_bundle_dir
fc4d962001-12-07Henrik Grubbström (Grubba) AC_ARG_WITH(site-prefixes, MY_DESCR([--with-site-prefixes], [list of prefixes to search for include, lib and bin dirs.]))
a1c5022001-10-06Henrik Grubbström (Grubba) AC_ARG_WITH(include-path, MY_DESCR([--with-include-path], [a list of paths to search for include files.])) AC_ARG_WITH(lib-path, MY_DESCR([--with-lib-path], [a list of paths to search for libraries.]))
3c6eaa2002-04-12Martin Stjernholm AC_ARG_WITH(long-double-precision, MY_DESCR([--with-long-double-precision], [use long double precision floats])) AC_ARG_WITH(double-precision, MY_DESCR([--with-double-precision], [use double precision floats])) AC_ARG_WITH(long-long-int, MY_DESCR([--with-long-long-int],
88b19d2003-02-27Mirar (Pontus Hagland)  [use long long native type int]))
3c6eaa2002-04-12Martin Stjernholm AC_ARG_WITH(long-int, MY_DESCR([--with-long-int],
88b19d2003-02-27Mirar (Pontus Hagland)  [use long native type int]))
3c6eaa2002-04-12Martin Stjernholm AC_ARG_WITH(int-int, MY_DESCR([--with-int-int], [use int native type int]))
ac60002003-11-15Martin Stjernholm dnl AC_ARG_WITH(short-int, MY_DESCR([--with-short-int], dnl [use short native type int (EXPERIMENTAL)])) dnl AC_ARG_WITH(unsigned-long-int, MY_DESCR([--with-unsigned-long-int], dnl [use short native type int (EXPERIMENTAL)])) dnl AC_ARG_WITH(unsigned-long-long-int, MY_DESCR([--with-unsigned-long-longint], dnl [use short native type int (EXPERIMENTAL)]))
a1c5022001-10-06Henrik Grubbström (Grubba) 
343c592004-03-16Martin Stjernholm MY_AC_ARG_WITH(cleanup-on-exit, MY_DESCR([--with-cleanup-on-exit], [Do full cleanup at exit to detect leaks better.]), [AC_DEFINE(DO_PIKE_CLEANUP)]) MY_AC_ARG_WITH(dmalloc, MY_DESCR([--with-dmalloc],[Enable memory leak checks.]),
299a4e2002-03-14Martin Stjernholm  [AC_DEFINE(DEBUG_MALLOC,10)]) MY_AC_ARG_WITH(dmalloc-malloc, MY_DESCR([--with-dmalloc-malloc],
343c592004-03-16Martin Stjernholm  [Enable overloading of malloc(3)]),
299a4e2002-03-14Martin Stjernholm  [ AC_DEFINE(ENCAPSULATE_MALLOC,1) ])
a1c5022001-10-06Henrik Grubbström (Grubba) MY_AC_ARG_WITH(dmalloc-malloc-leaks,
299a4e2002-03-14Martin Stjernholm  MY_DESCR([--with-dmalloc-malloc-leaks],
a1c5022001-10-06Henrik Grubbström (Grubba)  [Report memory allocated by malloc(3) as leaks.]), [ AC_DEFINE(REPORT_ENCAPSULATED_MALLOC,1) ]) MY_AC_ARG_WITH(dmalloc-trace, MY_DESCR([--with-dmalloc-trace], [enable tracepoints]), [with_dmalloc_trace="yes" AC_DEFINE(DMALLOC_TRACE,10)])
000aab2004-10-22Henrik Grubbström (Grubba) MY_AC_ARG_WITH(dmalloc-track-free, MY_DESCR([--with-dmalloc-track-free], [track freed memory too]), [ with_dmalloc_track_free="yes" AC_DEFINE(DMALLOC_TRACK_FREE,10)])
299a4e2002-03-14Martin Stjernholm AC_ARG_WITH(debug, MY_DESCR([--with-debug],[same as --with-cdebug --with-rtldebug]), [],[with_debug=]) AC_ARG_WITH(debug, MY_DESCR([--without-debug],[same as --without-cdebug --without-rtldebug]),
a1c5022001-10-06Henrik Grubbström (Grubba)  [],[with_debug=]) AC_ARG_WITH(rtldebug, MY_DESCR([--with-rtldebug],[enable run time self tests]), [],[with_rtldebug=]) AC_ARG_WITH(cdebug, MY_DESCR([--without-cdebug],[disable -g]),[],[
aa38a81999-11-29Henrik Grubbström (Grubba)  case "$pike_cv_sys_os:$GCC" in Solaris:no) # Solaris/cc has problems with combining optimizations and debuginfo.
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN([Defaulting to --without-cdebug since the OS is Solaris,
81e6432000-01-03Martin Stjernholm and gcc is not being used.])
0d53c52002-08-19Henrik Grubbström (Grubba)  with_cdebug=no ;; HP-UX:no|HPUX:no) # HP-UX/cc has problems with combining optimizations and debuginfo. # # cc: internal panic 7815: Malloc: underflow detected in free(). (7815)
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN([Defaulting to --without-cdebug since the OS is HP-UX,
0d53c52002-08-19Henrik Grubbström (Grubba) and gcc is not being used.])
aa38a81999-11-29Henrik Grubbström (Grubba)  with_cdebug=no ;; *) with_cdebug= ;; esac ])
a1c5022001-10-06Henrik Grubbström (Grubba) AC_ARG_WITH(copt, MY_DESCR([--without-copt], [disable -O2]), [], [with_copt=]) AC_ARG_WITH(threads, MY_DESCR([--without-threads], [disable threads support]), [],[
2f04112000-02-03Fredrik Hübinette (Hubbe)  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
0a86982003-11-07Martin Stjernholm  PIKE_MSG_WARN([FreeBSD <= 3.x detected, disabling threads. Use --with-threads to force threads support.])
2f04112000-02-03Fredrik Hübinette (Hubbe)  with_threads=no fi ;;
e1afda2003-02-03Henrik Grubbström (Grubba)  xOpenBSD*) if test "`uname -r|sed -e 's/\([[0-9]]*\).*/\1/'`" -lt 4 \ -a "x`uname -m`" = "xalpha"; then
0a86982003-11-07Martin Stjernholm  PIKE_MSG_WARN([OpenBSD/alpha <= 3.x detected, disabling threads. Use --with-threads to force threads support.])
e1afda2003-02-03Henrik Grubbström (Grubba)  with_threads=no fi ;;
2f04112000-02-03Fredrik Hübinette (Hubbe)  esac
cd57482000-02-03Henrik Grubbström (Grubba)  if test "x${with_threads-}" = x; then
2f04112000-02-03Fredrik Hübinette (Hubbe)  with_threads=yes fi ])
38c2d62002-11-24Martin Stjernholm  AC_ARG_WITH(malloc_overhead, MY_DESCR([--with-malloc-overhead=n], [tune the malloc block overhead (default is 2 * sizeof(void *))]), [AC_DEFINE(PIKE_MALLOC_OVERHEAD,($withval))], [AC_DEFINE(PIKE_MALLOC_OVERHEAD,(2 * sizeof(void *)))]) AC_ARG_WITH(malloc_page_size, MY_DESCR([--with-malloc-page-size=n], [tune to the memory page size (default is 4 kb)]), [AC_DEFINE(PIKE_MALLOC_PAGE_SIZE,($withval))], [AC_DEFINE(PIKE_MALLOC_PAGE_SIZE,(4 * 1024))])
5da06f2003-06-26Tomas Nilsson AC_ARG_WITH(thread_c_stack, MY_DESCR([--with-thread-c-stack=n], [tune the thread c-stack (default is 256 * 1024)]), [AC_DEFINE_UNQUOTED(PIKE_THREAD_C_STACK_SIZE,($withval))], [AC_DEFINE(PIKE_THREAD_C_STACK_SIZE,(256 * 1024))])
38c2d62002-11-24Martin Stjernholm 
8ad6e72004-03-09Henrik Grubbström (Grubba) AC_ARG_WITH(devpoll, MY_DESCR([--without-devpoll], [disable support for /dev/poll]), [],[with_devpoll=yes])
38c2d62002-11-24Martin Stjernholm AC_ARG_WITH(gdbm, MY_DESCR([--without-gdbm],[no GNU database manager support])) AC_ARG_WITH(gmp, MY_DESCR([--without-gmp],[no support for Gmp bignums]))
a1c5022001-10-06Henrik Grubbström (Grubba) AC_ARG_WITH(zlib, MY_DESCR([--without-zlib],[disable gz compression support]), [],[with_zlib=yes]) AC_ARG_WITH(ssleay, MY_DESCR([--with-ssleay], [support for the secure socket protocol (OBSOLETE)]), [],[with_ssleay=no]) AC_ARG_WITH(mysql, MY_DESCR([--without-mysql], [disable support for the Mysql database]), [],[with_mysql=yes])
a924142002-11-18Henrik Grubbström (Grubba) AC_ARG_WITH(valgrind, MY_DESCR([--with-valgrind=path],
9fb79c2004-09-27Martin Stjernholm  [Support for running with valgrind. Implies --with-cleanup-on-exit.]), [
a924142002-11-18Henrik Grubbström (Grubba)  if test "x$with_valgrind" = "xyes"; then AC_PATH_PROG(with_valgrind, valgrind, no) if test "x$with_valgrind" = "xno"; then
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN(valgrind not found, disabled.)
ac69582002-11-19Henrik Grubbström (Grubba)  else :; fi
a924142002-11-18Henrik Grubbström (Grubba)  else :; fi ], [with_valgrind=no])
a1c5022001-10-06Henrik Grubbström (Grubba) AC_ARG_WITH(checker, MY_DESCR([--with-checker], [add extra memory checking overhead (Purify)]))
e7b1602004-01-09Henrik Grubbström (Grubba) AC_ARG_WITH(gcov, MY_DESCR([--with-gcov], [compile with support for gcov (gcc-only)]))
a1c5022001-10-06Henrik Grubbström (Grubba) MY_AC_ARG_WITH(profiling, MY_DESCR([--with-profiling], [add code used to profile pike code]), [AC_DEFINE(PROFILING)])
a8a8132002-09-13Martin Stjernholm MY_AC_ARG_WITH(internal-profiling, MY_DESCR([--with-internal-profiling], [add profiling code for various internal things]), [AC_DEFINE(INTERNAL_PROFILING)])
a1c5022001-10-06Henrik Grubbström (Grubba) MY_AC_ARG_WITH(pg, MY_DESCR([--with-pg],[use the gcc -pg option]), [PROFIL=-pg]) AC_ARG_WITH(poll, MY_DESCR([--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
95161d2002-11-28Xavier Beaudouin  Solaris|HP-UX|OSF1|IRIX|Linux|UnixWare|OpenUNIX)
30d7e32003-12-04Per Hedbor # PIKE_MSG_WARN([Defaulting to --with-poll since the OS is $pike_cv_sys_os.]) # Nothing to warn about, really...
d7bcfd1998-09-29Henrik Grubbström (Grubba)  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
d0be141999-05-27Fredrik Hübinette (Hubbe)  ;;
f6c3371998-09-29Henrik Grubbström (Grubba)  esac ])
a1c5022001-10-06Henrik Grubbström (Grubba) AC_ARG_WITH(max-fd, MY_DESCR([--with-max-fd=X], [set how many filedescriptors can be used at once]), [pike_cv_max_open_fd=$withval]) MY_AC_ARG_WITH(oob, MY_DESCR([--without-oob],
15a3d22003-10-23Henrik Grubbström (Grubba)  [disable out-of-band data handling (INVALID)]), [],[ AC_MSG_ERROR([Support for out of band data is mandatory in Pike 7.5 and later.]) ])
a1c5022001-10-06Henrik Grubbström (Grubba) MY_AC_ARG_WITH(compiler-trace, MY_DESCR([--with-compiler-trace], [enable tracing of the compiler]), [AC_DEFINE(YYDEBUG)]) AC_ARG_WITH(security, MY_DESCR([--with-security], [enable internal pike security system]), [AC_DEFINE(PIKE_SECURITY)]) AC_ARG_WITH(bignums, MY_DESCR([--without-bignums],
0a86982003-11-07Martin Stjernholm  [disable internal conversion to bignums (not recommended)]),
a1c5022001-10-06Henrik Grubbström (Grubba)  [],[with_bignums=yes])
e2b7b92002-04-27Martin Stjernholm dnl Shared nodes has been disabled in an ugly way. To enable it you dnl need to remove the line that sets the OPT_NOT_SHARED flag at the dnl top of freeze_node in src/las.c. /mast dnl AC_ARG_WITH(shared-nodes, dnl MY_DESCR([--without-shared-nodes], dnl [disable the SHARED_NODES mode of the optimizer]), dnl [],[with_shared_nodes=yes])
a1c5022001-10-06Henrik Grubbström (Grubba) AC_ARG_WITH(computed-goto, MY_DESCR([--with-computed-goto], [enable use of gcc-style computed goto (EXPERIMENTAL).]), [], [with_computed_goto=no]) AC_ARG_WITH(machine-code,
e2b7b92002-04-27Martin Stjernholm  MY_DESCR([--without-machine-code],
a924142002-11-18Henrik Grubbström (Grubba)  [do not try to use of machine code on supported architectures.]),
bbb9502002-09-07Henrik Grubbström (Grubba)  [], [
8fdd252004-08-23Henrik Grubbström (Grubba)  case "x$pike_cv_sys_os" in xOpenBSD*) PIKE_MSG_WARN([OpenBSD detected, disabling machine code.
c10e142004-08-23Xavier Beaudouin  Use --with-machine-code to force usage of machine code support.])
8fdd252004-08-23Henrik Grubbström (Grubba)  with_machine_code="no" ;;
227f832004-10-24Xavier Beaudouin  xFreeBSD*) PIKE_MSG_WARN([FreeBSD detected, disabling machine code. Use --with-machine-code to force usage of machine code support.]) with_machine_code="no" ;;
c10e142004-08-23Xavier Beaudouin  esac
8fdd252004-08-23Henrik Grubbström (Grubba)  if test "x${with_machine_code-}" = x; then with_machine_code="yes"
c10e142004-08-23Xavier Beaudouin  fi
bbb9502002-09-07Henrik Grubbström (Grubba)  ])
7199a72004-10-21Henrik Grubbström (Grubba) AC_ARG_WITH(small-eval-instruction, MY_DESCR([--with-small-eval-instruction], [attempt to reduce the size of eval_instruction (EXPERIMENTAL).]), [ AC_DEFINE(PIKE_SMALL_EVAL_INSTRUCTION) with_machine_code="no" with_computed_goto="no" ])
a1c5022001-10-06Henrik Grubbström (Grubba)  MY_AC_ARG_WITH(keypair-loop, MY_DESCR([--with-keypair-loop], [enable use of keypair mapping loop method (EXPERIMENTAL).]), [AC_DEFINE(PIKE_MAPPING_KEYPAIR_LOOP)])
20e8ae2003-11-19Henrik Grubbström (Grubba) MY_AC_ARG_WITH(portable-bytecode,
e7411f2004-05-11Henrik Grubbström (Grubba)  MY_DESCR([--without-portable-bytecode], [disable portable bytecode support.]), [AC_DEFINE(PIKE_PORTABLE_BYTECODE)],[],
20e8ae2003-11-19Henrik Grubbström (Grubba)  [AC_DEFINE(PIKE_PORTABLE_BYTECODE)])
a1c5022001-10-06Henrik Grubbström (Grubba) MY_AC_ARG_WITH(lock, MY_DESCR([--without-lock], [enable experimental code for multicpu machines (EXPERIMENTAL).]), [],[AC_DEFINE(PIKE_RUN_UNLOCKED)])
e83eb92001-03-22Fredrik Hübinette (Hubbe) 
a1c5022001-10-06Henrik Grubbström (Grubba) AC_ARG_WITH(pike-type, MY_DESCR([--without-pike-type],
3913502002-06-25Henrik Grubbström (Grubba)  [disable struct pike_type (IGNORED).]))
6cb70d2001-02-21Henrik Grubbström (Grubba) 
3913502002-06-25Henrik Grubbström (Grubba) if test "x$with_pike_type" = "xno"; then
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN([Disabling of USE_PIKE_TYPE is no longer supported.])
769d1c2001-03-27Henrik Grubbström (Grubba) fi
6cb70d2001-02-21Henrik Grubbström (Grubba) 
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
cab7ce2001-08-29Martin Stjernholm required by many applications (such as Roxen). However,
5435a72000-05-04Fredrik Hübinette (Hubbe) if you know that you do not need GMP, you may re-run configure
0a86982003-11-07Martin Stjernholm with the option --without-bignums instead.])
011ad31999-10-22Fredrik Hübinette (Hubbe)  else :; fi
0a86982003-11-07Martin Stjernholm else
30d7e32003-12-04Per Hedbor  PIKE_MSG_WARN([****** Compiling without bignum support. This is discouraged. Many ****** Pike applications might not work correctly.]) sleep 10
0a86982003-11-07Martin Stjernholm fi
f6c3371998-09-29Henrik Grubbström (Grubba) 
e7b1602004-01-09Henrik Grubbström (Grubba) dnl Pike currently breaks miserably if SHARED_NODES is not defined.
15b7222003-11-07Martin Stjernholm dnl Shared nodes are still disabled bluntly. (See note above.) dnl if test "x$with_shared_nodes" != xno; then dnl echo 'Enabling the SHARED_NODES mode of the optimizer.'
de28961999-11-13Henrik Grubbström (Grubba)  AC_DEFINE(SHARED_NODES)
15b7222003-11-07Martin Stjernholm dnl else :; fi
de28961999-11-13Henrik Grubbström (Grubba) 
f6c3371998-09-29Henrik Grubbström (Grubba) if test "x$with_poll" = "xyes"; then AC_DEFINE(HAVE_AND_USE_POLL) else :; fi
a924142002-11-18Henrik Grubbström (Grubba) if test "x$with_valgrind" = "xno"; then VALGRIND=""
e040cf2002-11-23Martin Stjernholm  VALGRINDARGS=""
a924142002-11-18Henrik Grubbström (Grubba) else
e42fa82002-11-23Martin Stjernholm  VALGRIND="$with_valgrind"
e040cf2002-11-23Martin Stjernholm  # Make valgrind a bit silent by default.
ec2d752004-03-21Martin Nilsson  VALGRINDARGS="-q --tool=memcheck"
37e9f12002-11-19Henrik Grubbström (Grubba)  AC_DEFINE(USE_VALGRIND)
b7890d2002-12-11Mirar (Pontus Hagland) 
9fb79c2004-09-27Martin Stjernholm  if test "x$with_cleanup_on_exit" = "x"; then AC_DEFINE(DO_PIKE_CLEANUP) fi
b7890d2002-12-11Mirar (Pontus Hagland)  if test "x$with_copt" != "xno"; then PIKE_MSG_WARN([--without-copt is advisable when using valgrind!]) fi
a924142002-11-18Henrik Grubbström (Grubba) fi
e040cf2002-11-23Martin Stjernholm export VALGRIND VALGRINDARGS
a924142002-11-18Henrik Grubbström (Grubba) AC_SUBST(VALGRIND)
e040cf2002-11-23Martin Stjernholm AC_SUBST(VALGRINDARGS)
a924142002-11-18Henrik Grubbström (Grubba) 
bf61b91999-02-06Henrik Grubbström (Grubba) if test "x$with_checker" = "xyes"; then AC_DEFINE(__CHECKER__) else :; fi
4839dd2001-09-02Marcus Comstedt if test "x$with_relocatable_dumped_modules" = xyes; then PIKE_MODULE_RELOC=1 else PIKE_MODULE_RELOC="" fi AC_SUBST(PIKE_MODULE_RELOC)
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
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_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 
d9ea112004-12-30Henrik Grubbström (Grubba) DLOPEN_O=""
8cf37d1997-01-27Per Hedbor WARN=""
8a5cd32001-06-07Fredrik Hübinette (Hubbe) OPTIMIZE="${OPTFLAGS-}"
8cf37d1997-01-27Per Hedbor 
4b63392002-12-10Mirar (Pontus Hagland) AC_ARG_ENABLE(pedantic, MY_DESCR([--enable-pedantic],
bd841c2002-12-10Henrik Grubbström (Grubba)  [enable -pedantic compilation]))
4b63392002-12-10Mirar (Pontus Hagland) 
bd841c2002-12-10Henrik 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) 
4b63392002-12-10Mirar (Pontus Hagland)  if test "x$enable_pedantic" = "xyes"; then AC_SYS_COMPILER_FLAG(-pedantic,pedantic,WARN) fi
2901d31998-08-05Fredrik Hübinette (Hubbe) 
4b63392002-12-10Mirar (Pontus Hagland)  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
4b63392002-12-10Mirar (Pontus Hagland)  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)
30d7e32003-12-04Per Hedbor 
4b63392002-12-10Mirar (Pontus Hagland)  if test "x$with_copt" != xno; then # gcc complains that it doesn't support this when compiling # without optimizations. AC_SYS_COMPILER_FLAG(-Wuninitialized,Wuninitialized,WARN) fi 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) 
4b63392002-12-10Mirar (Pontus Hagland)  if test "x${with_static_linking-}" = "xyes" ; then AC_SYS_COMPILER_FLAG(-static,link_static,CFLAGS) else : fi
e7b1602004-01-09Henrik Grubbström (Grubba)  if test "x$with_gcov" = "xyes"; then # Support for gcov AC_SYS_COMPILER_FLAG(-fprofile-arcs, fprofile_arcs, CFLAGS) AC_SYS_COMPILER_FLAG(-ftest-coverage, ftest_coverage, CFLAGS) else :; fi
4b63392002-12-10Mirar (Pontus Hagland)  ## ## -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) 
30d7e32003-12-04Per Hedbor 
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)
769d1c2001-03-27Henrik Grubbström (Grubba)  # The -msparclite option seems to generate assembler that /bin/as doesn't
e65d8d1998-07-17Henrik Grubbström (Grubba)  # understand. /grubba 1998-07-17
7e83af2001-03-23Henrik Grubbström (Grubba)  # AC_SYS_COMPILER_FLAG(-msparclite,sparclite,CFLAGS)
50adc31998-04-17Fredrik Hübinette (Hubbe)  ;; sun4m)
7e83af2001-03-23Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-mv8,microsparc,CFLAGS)
50adc31998-04-17Fredrik Hübinette (Hubbe)  ;; sun4d)
7e83af2001-03-23Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-msupersparc,supersparc,CFLAGS)
50adc31998-04-17Fredrik Hübinette (Hubbe)  ;; sun4u)
7e83af2001-03-23Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-mcpu=ultrasparc,mcpu_ultrasparc,CFLAGS,[ AC_SYS_COMPILER_FLAG(-msupersparc,supersparc,CFLAGS)
e2172a2003-10-03Henrik Grubbström (Grubba)  ],[],[ # Some versions of gcc define __sparcv9 but aren't LP64. # Definition of __sparcv9 causes <sys/isa_defs.h> to define _LP64, # which is not a good thing for ILP32 systems... # Some versions of gcc define __sparc_v9__, which causes the # fix-included <limits.h> to think the same... AC_TRY_CPP([#include <limits.h> #include <sys/types.h> #if defined(_LP64) || (LONG_MAX != 2147483647L) #error "We might have a problem." #endif ],[],[ # We might have a problem... # Check that we indeed have a LP64 system. AC_MSG_RESULT([yes, but LP64]) AC_CHECK_SIZEOF(long, 4) # Note: the result for the following message is provided # by SYS_COMPILER_FLAG AC_MSG_CHECKING([are we really an LP64 system]) if test "x$ac_cv_sizeof_long" = "x8"; then :; #OK, we have an LP64 system! else pike_cv_option_mcpu_ultrasparc=no fi ])
d769bf2001-03-23Henrik Grubbström (Grubba)  ])
50adc31998-04-17Fredrik Hübinette (Hubbe)  ;; i586)
ecb7602002-08-20Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-mcpu=pentium,mcpu_pentium,CFLAGS,[ AC_SYS_COMPILER_FLAG(-mpentium,pentium,CFLAGS) ])
50adc31998-04-17Fredrik Hübinette (Hubbe)  ;; i686)
edfca52004-12-29Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-mcpu=i686,mcpu_i686,CFLAGS,[
7e83af2001-03-23Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-mpentiumpro,pentiumpro,CFLAGS,[
ecb7602002-08-20Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-mcpu=pentium,mcpu_pentium,CFLAGS,[ AC_SYS_COMPILER_FLAG(-mpentium,pentium,CFLAGS) ])
aa29dd2001-03-19Mirar (Pontus Hagland)  ])
50adc31998-04-17Fredrik Hübinette (Hubbe)  ])
43594f2001-09-18Fredrik Hübinette (Hubbe) # AC_SYS_COMPILER_FLAG(-march=i686,march_i686,CFLAGS)
50adc31998-04-17Fredrik Hübinette (Hubbe)  ;;
46dc322005-03-17Henrik Grubbström (Grubba)  x86_64) AC_SYS_COMPILER_FLAG(-m64,m64,CFLAGS,[ AC_SYS_COMPILER_FLAG(-mcpu=i686,mcpu_i686,CFLAGS,[ AC_SYS_COMPILER_FLAG(-mpentiumpro,pentiumpro,CFLAGS,[ AC_SYS_COMPILER_FLAG(-mcpu=pentium,mcpu_pentium,CFLAGS,[ AC_SYS_COMPILER_FLAG(-mpentium,pentium,CFLAGS) ]) ]) ]) ], [ BUNDLE_FLAGS="$BUNDLE_FLAGS --host=x86_64" ]) ;;
2e96cd2000-08-12Per Hedbor  i86pc)
46dc322005-03-17Henrik Grubbström (Grubba)  # Solaris x86 case "`optisa \`isalist 2>/dev/null\` 2>/dev/null || isalist 2>/dev/null`" in *amd64*) AC_SYS_COMPILER_FLAG(-m64,m64,CFLAGS,[ AC_SYS_COMPILER_FLAG(-mcpu=i686,mcpu_i686,CFLAGS,[ AC_SYS_COMPILER_FLAG(-mpentiumpro,pentiumpro,CFLAGS,[ AC_SYS_COMPILER_FLAG(-mcpu=pentium,mcpu_pentium,CFLAGS,[ AC_SYS_COMPILER_FLAG(-mpentium,pentium,CFLAGS) ]) ]) ]) ], [ BUNDLE_FLAGS="$BUNDLE_FLAGS --host=x86_64" ]) # AC_SYS_COMPILER_FLAG(-march=i686,march_i686,CFLAGS) ;;
2e96cd2000-08-12Per Hedbor  *pentium_pro*)
7e83af2001-03-23Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-mcpu=i686,mcpu_i686,CFLAGS,[
ecb7602002-08-20Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-mpentiumpro,pentiumpro,CFLAGS,[ AC_SYS_COMPILER_FLAG(-mcpu=pentium,mcpu_pentium,CFLAGS,[ AC_SYS_COMPILER_FLAG(-mpentium,pentium,CFLAGS) ]) ])
61fb902001-03-19Mirar (Pontus Hagland)  ])
43594f2001-09-18Fredrik Hübinette (Hubbe) # AC_SYS_COMPILER_FLAG(-march=i686,march_i686,CFLAGS)
2e96cd2000-08-12Per Hedbor  ;; *pentium*)
ecb7602002-08-20Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-mcpu=pentium,mcpu_pentium,CFLAGS,[ AC_SYS_COMPILER_FLAG(-mpentium,pentium,CFLAGS,[ AC_SYS_COMPILER_FLAG(-m486,486,CFLAGS) ])
2e96cd2000-08-12Per Hedbor  ]) ;; 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
6d50892001-07-12Henrik Grubbström (Grubba)  # # This option is not needed on AIX 5L/ia64. if test "x`uname -p`" = "xia64"; then :; else AC_SYS_COMPILER_FLAG(-bbigtoc,bbigtoc,LDFLAGS) AC_SYS_COMPILER_FLAG([-Wl,-bbigtoc],Wlbbigtoc,LDFLAGS) fi
05cd672000-09-28Henrik Grubbström (Grubba)  ])
ce3dcd2001-11-02Jonas Wallden  DO_IF_OS(Darwin, [ # aka MacOS X. # Foundation framework needed by JavaVM.framework. The OS X 10.1 linker # no longer includes indirect dependencies so we need to add them here. AC_SYS_COMPILER_FLAG(-framework Foundation, framework_Foundation, LDFLAGS)
9f95ce2003-09-22Jonas Wallden  AC_SYS_COMPILER_FLAG(-framework System, framework_System, LDFLAGS)
ce3dcd2001-11-02Jonas Wallden  # -flat_namespace only needed for linking with libMallocDebug # AC_SYS_COMPILER_FLAG(-flat_namespace, flat_namespace, LDFLAGS)
9f95ce2003-09-22Jonas Wallden  # OS X only runs on G3 or newer. Tuning for recent G4s should help them # while being ok for older machines as well. AC_SYS_COMPILER_FLAG(-mcpu=750,cpu750,OPTIMIZE) AC_SYS_COMPILER_FLAG(-mtune=7450,tune7450,OPTIMIZE)
ce3dcd2001-11-02Jonas Wallden  ])
827d132004-06-21Henrik Grubbström (Grubba)  DO_IF_OS(Linux, [ if test "x$with_machine_code" = "xno"; then :; else # WORKAROUND: mprotect(PROT_EXEC) doesn't work on Linux/x86. # Try to set the stackexec flag on the binary. # First try -z execstack (ld). AC_SYS_COMPILER_FLAG([-z execstack], z_execstack, LDFLAGS, [ # No, try passing it directly to the linker. AC_SYS_COMPILER_FLAG([-Wl,-z,execstack], Wl_z_execstack, LDFLAGS, [ # No, try --execstack (gas). AC_SYS_COMPILER_FLAG([--execstack], execstack, CFLAGS, [ # No, try passing it directly to the assembler. AC_SYS_COMPILER_FLAG([-Wa,--execstack], Wa_execstack, CFLAGS, [ # No. # FIXME: Add support for use of chstk(1). PIKE_MSG_WARN([Could not find any way to enable executable stack.]) ]) ]) ]) ]) fi ])
9211642004-12-16Henrik Grubbström (Grubba)  elif test "x${TCC-}" = xyes ; then
5866e01999-04-25Henrik Grubbström (Grubba)  # Yikes! We're using the TenDRA compiler! # Make sure we can use the system headerfiles...
d523532002-09-24Henrik Grubbström (Grubba)  # Already done by the CC test in aclocal.m4. # 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, [
166faa2003-12-03Martin Nilsson  pike_cv_tcc_lib_path="`${CC-cc} -dry conftest.c -i 2>&1 | sed -e '/tdfc/s/bin\/tdfc.*/lib\/sys/p' -ed| head -n 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
9211642004-12-16Henrik Grubbström (Grubba)  else
8cf37d1997-01-27Per Hedbor 
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) 
d4fc872003-01-16David Hedbor 
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,
c744782001-06-29Henrik Grubbström (Grubba)  # which is needed for several configure-tests.
8334e31999-01-29Fredrik Hübinette (Hubbe)  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)
211a012005-04-07Henrik Grubbström (Grubba)  # Suppress warnings and informational messages we aren't interested in. AC_DEFUN(AC_SYS_COMPILER_FLAG_QSUPPRESS, [ AC_SYS_COMPILER_FLAG(-qsuppress=$1, translit([qsuppress_$1],[-:],[__]), WARN) ]) # 1506-010 (W) Macro XX invoked with a null argument for parameter Z. AC_SYS_COMPILER_FLAG_QSUPPRESS(1506-010)
b7c2ef1999-08-08Henrik Grubbström (Grubba)  # Tell the linker to generate a large toc if needed
9773532001-07-12Henrik Grubbström (Grubba)  # # This option is not needed on AIX 5L/ia64. if test "x`uname -p`" = "xia64"; then :; else AC_SYS_COMPILER_FLAG(-bbigtoc,bbigtoc,LDFLAGS) fi
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) # 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.
7e83af2001-03-23Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-g3,g3,CFLAGS)
8334e31999-01-29Fredrik Hübinette (Hubbe)  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)
a8d54f2003-01-02Henrik Grubbström (Grubba)  # -n32 moved to smartlink so it will affect cc as well as linker
8334e31999-01-29Fredrik Hübinette (Hubbe)  # 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)
8c392e2003-01-02Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-OPT:Olimit_opt=on,OPT_Olimit_opt_on,OPTIMIZE)
8334e31999-01-29Fredrik Hübinette (Hubbe)  if test x$with_cdebug = xyes ; then
7e83af2001-03-23Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-g3,g3,CFLAGS)
8334e31999-01-29Fredrik Hübinette (Hubbe)  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) 
be4a5c2002-08-20Henrik Grubbström (Grubba)  if test x$with_dynamic_modules = xno ; then :; else
0a86982003-11-07Martin Stjernholm  PIKE_MSG_WARN([Enabling dynamic modules for Win32.])
9b15e02000-12-22Fredrik Hübinette (Hubbe) # EXTRA_MODULE_REQUIREMENTS="${EXTRA_MODULE_REQUIREMENTS} import_functions.h"
d9ea112004-12-30Henrik Grubbström (Grubba)  DLOPEN_O="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)  ])
9211642004-12-16Henrik Grubbström (Grubba)  dnl dnl This does not work with Digital UNIX cc/ld (cc thinks it is ok, ld does not) dnl dnl AC_SYS_COMPILER_FLAG(-native,native,OPTIMIZE) dnl dnl ### Ok. This is for apcc... case "$CC" in *apcc) AC_SYS_COMPILER_FLAG(-XO=5,apcc_opt,OPTIMIZE) AC_SYS_COMPILER_FLAG(-Xcallmod=2,apcc_opt_2,OPTIMIZE) ;; esac
8cf37d1997-01-27Per Hedbor 
9211642004-12-16Henrik Grubbström (Grubba)  # 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 
9211642004-12-16Henrik Grubbström (Grubba)  case "${CFLAGS-} $OPTIMIZE" in *-O*) ;; *+O*) ;; *-fast*) ;; *) case "$pike_cv_sys_os:$GCC" in UnixWare*:no|OpenUNIX*:no) ;; *) ;; esac ;; esac fi if test "$ICC" = "yes"; then # icc or ecc. # Modern versions of icc and ecc claim to be gcc, so we need to have # this outside the main if-else segment. DO_IF_OS(Linux, [ # Linux with Intel C++ # Disable excessive warnings from Linux's header files: # warning #1292: attribute "__nothrow__" ignored AC_SYS_COMPILER_FLAG(-wd1292,wd1292,WARN) # And from Pike: # remark #177: function "MKPCHARP" was declared but never referenced AC_SYS_COMPILER_FLAG(-wd177,wd177,WARN) # remark #279: controlling expression is constant AC_SYS_COMPILER_FLAG(-wd279,wd279,WARN)
b50a592004-12-16Henrik Grubbström (Grubba)  # remark #869: parameter was never referenced AC_SYS_COMPILER_FLAG(-wd869,wd869,WARN)
9211642004-12-16Henrik Grubbström (Grubba)  AC_SYS_COMPILER_FLAG(-Ob2,Ob2,OPTIMIZE) AC_SYS_COMPILER_FLAG(-ipo,ipo,OPTIMIZE) AC_SYS_COMPILER_FLAG(-ipo,ipo,EXTRALDFLAGS) AC_SYS_COMPILER_FLAG(-ipo_obj,ipo_obj,OPTIMIZE) AC_SYS_COMPILER_FLAG(-parallel, parallel,OPTIMIZE) AC_SYS_COMPILER_FLAG(-parallel, parallel,LDFLAGS) # arch dependent optimizations while maintaining # i386 compatibility AC_SYS_COMPILER_FLAG(-axKW,axKW,OPTIMIZE) ]) fi
c744782001-06-29Henrik Grubbström (Grubba) else # CFLAGS has already been set by the user. # Avoid adding anything that isn't essential. DO_IF_OS(AIX, [ # This one is needed to get the compiler to fail on errors, # which is needed for several configure-tests. AC_SYS_COMPILER_FLAG(-qhalt=e,qhalt_e,CFLAGS) ])
5267b71995-08-09Fredrik Hübinette (Hubbe) fi
d9ea112004-12-30Henrik Grubbström (Grubba) AC_SUBST(DLOPEN_O)
bcb5382001-08-23Boyd Lynn Gerber #############################################################################
9fee572005-01-06Henrik Grubbström (Grubba) # Script to translate from POSIX paths to native paths. echo "Creating posix_to_native.sh..." if test "x$PIKE_PATH_TRANSLATE" = "x"; then if test "x$pike_cv_is_mingw" = "xyes"; then # MinGW system. cat <<\EOF #!/bin/sh
672ebb2005-05-30Henrik Grubbström (Grubba) # Automatically generated by $Id: configure.in,v 1.883 2005/05/30 15:47:53 grubba Exp $.
9fee572005-01-06Henrik Grubbström (Grubba) # MinGW-version. Do NOT edit. posix_name="`cat`" posix_prefix="/" native_prefix="/" case "$posix_name" in /*) ;; *) posix_name="`pwd`/$posix_name" ;; esac case "$posix_name" in EOF
299f922005-01-10Henrik Grubbström (Grubba)  # Split and recombine the lines. # Sort the lines according to longest path first. # Convert backslashes to forward slashes. # Escape spaces, tabs and dollars. # Note, dollars must be escaped both for sed, sh and sed. # Split, and generate the case entries. # Remove any duplicate sequences of slashes. mount | \ sed -e 's/\(.*\) on \(.*\) type user.*/\2 _split_ \1/p' -ed | \ sort -r | \
b704072005-01-06Henrik Grubbström (Grubba)  sed -e 's/\\/\//g' | \
72e9c12005-01-10Henrik Grubbström (Grubba)  sed -e 's/\([[ ]]\)/\\\1/g' -e 's/\$/\\\\\\\$/g' | \
299f922005-01-10Henrik Grubbström (Grubba)  sed -e 's/\(.*\)\\ _split_\\ \(.*\)/ \1|\1\/*)\ posix_prefix=\1\ native_prefix=\2\/\
378a132005-01-07Henrik Grubbström (Grubba)  \;\;/p' -ed | \ sed -e 's/\/\//\//g'
9fee572005-01-06Henrik Grubbström (Grubba)  cat <<\EOF esac
95bdda2005-01-07Henrik Grubbström (Grubba) echo "$posix_name" | \ sed -e "s,^$posix_prefix,$native_prefix," | \ sed -e 's/\/\//\//g'
9fee572005-01-06Henrik Grubbström (Grubba) EOF else # Native POSIX system. cat <<\EOF #!/bin/sh
672ebb2005-05-30Henrik Grubbström (Grubba) # Automatically generated by $Id: configure.in,v 1.883 2005/05/30 15:47:53 grubba Exp $.
9fee572005-01-06Henrik Grubbström (Grubba) # POSIX-version. Do NOT edit. cat EOF fi else # rntcl-style cat <<\EOF #!/bin/sh
672ebb2005-05-30Henrik Grubbström (Grubba) # Automatically generated by $Id: configure.in,v 1.883 2005/05/30 15:47:53 grubba Exp $.
9fee572005-01-06Henrik Grubbström (Grubba) # RNTCL-version. Do NOT edit. sed -e "$PIKE_PATH_TRANSLATE" EOF fi >posix_to_native.sh chmod a+x posix_to_native.sh #############################################################################
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) 
ce1d9e2002-11-18Marcus Comstedt #Don't add include dirs if they give us warnings... OLD_ac_c_preproc_warn_flag="$ac_c_preproc_warn_flag" ac_c_preproc_warn_flag=yes
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'` \
fc4d962001-12-07Henrik Grubbström (Grubba)  `echo "${with_site_prefixes}/include"|sed -e 's/:/\/include /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 \
269bb22005-02-08Henrik Grubbström (Grubba)  $with_root/usr/sfw/include $with_root/opt/sfw/include \
fa58ed2005-02-11Henrik Grubbström (Grubba)  $with_root/opt/csw/include \
1ac5c02002-09-02Henrik Grubbström (Grubba)  `echo $with_root/opt/gnome*/include | sort -r` \
27462c2002-04-11Martin Stjernholm  `echo $with_root/usr/X11*/include | sort -r`
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) ;; *)
f6169d2002-06-05Henrik Grubbström (Grubba)  OLD_CPPFLAGS="${CPPFLAGS}"
8a947f1998-09-01Fredrik Hübinette (Hubbe)  CPPFLAGS="${CPPFLAGS} -I$d"
6404f32002-11-22Xavier Beaudouin  AC_TRY_CPP([#include <stdio.h>], [
f6169d2002-06-05Henrik Grubbström (Grubba)  AC_MSG_RESULT(added) if test "x$REALDIR" != xUNKNOWN; then real_include_dirs="${real_include_dirs} -I$REALDIR" else : fi ], [ AC_MSG_RESULT(fails) CPPFLAGS="${OLD_CPPFLAGS}" ])
8a947f1998-09-01Fredrik Hübinette (Hubbe)  ;; 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) 
ce1d9e2002-11-18Marcus Comstedt #Restore preprocessor warning sensitivity ac_c_preproc_warn_flag="$OLD_ac_c_preproc_warn_flag"
d93ff51997-11-02Henrik Grubbström (Grubba) echo Searching for library directories...
c0911b1997-10-03Henrik Grubbström (Grubba) if test $ldflags_is_set = no ; then
c4b41d2002-04-06Henrik Grubbström (Grubba)  for dd in `echo ${with_lib_path} | sed 's/:/ /g'` \
fc4d962001-12-07Henrik Grubbström (Grubba)  `echo "${with_site_prefixes}/lib"|sed -e 's/:/\/lib /g'` \
e7cd0a2002-04-06Henrik Grubbström (Grubba)  `echo $exec_prefix | sed "s@^NONE@$prefix/lib@g" | sed "s@^NONE@$with_root$ac_default_prefix@g"` \
cf39902001-01-19Henrik Grubbström (Grubba)  $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 \
269bb22005-02-08Henrik Grubbström (Grubba)  $with_root/usr/sfw/lib $with_root/opt/sfw/lib \
f3a82d2005-02-11Henrik Grubbström (Grubba)  $with_root/opt/csw/lib $with_root/opt/gnome-1.4/lib \
cf39902001-01-19Henrik Grubbström (Grubba)  `echo $with_root/usr/X11*/lib | sort -r`
c0911b1997-10-03Henrik Grubbström (Grubba)  do
30f2792002-11-22Henrik Grubbström (Grubba)  if test "$dd" = "/lib"; then continue; fi if test "$dd" = "/usr/lib"; then continue; fi
2ecc982002-04-06Henrik Grubbström (Grubba)  for suff in '' 32 64 '/64'; do
c4b41d2002-04-06Henrik Grubbström (Grubba)  d="$dd$suff" AC_MSG_CHECKING($d) if test -d "$d/." ; then case " $LDFLAGS " in *\ -L$d\ -R$d\ * | *\ -R$d\ -L$d\ *) AC_MSG_RESULT(already added) ;; *) OLD_LDFLAGS="${LDFLAGS}" LDFLAGS="${LDFLAGS} -R$d -L$d -lm" AC_TRY_RUN([ #include <stdio.h> #include <math.h> int main(int argc, char **argv) { double (*foo)(double) = ceil; exit(0); } ],[ LDFLAGS="$OLD_LDFLAGS -R$d -L$d" AC_MSG_RESULT(yes) ],[ LDFLAGS="$OLD_LDFLAGS" AC_MSG_RESULT(no) ],[AC_TRY_LINK([ #include <stdio.h> #include <math.h> ],[ double (*foo)(double) = ceil; exit(0); ],[ LDFLAGS="$OLD_LDFLAGS -R$d -L$d" AC_MSG_RESULT(probably) ],[ LDFLAGS="$OLD_LDFLAGS" AC_MSG_RESULT(no)])]) ;; esac else AC_MSG_RESULT(no) fi done
c0911b1997-10-03Henrik Grubbström (Grubba)  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"` \
fc4d962001-12-07Henrik Grubbström (Grubba)  `echo "${with_site_prefixes}"|sed -e 's/:/ /g'` \
cf39902001-01-19Henrik Grubbström (Grubba)  "$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 \
f3a82d2005-02-11Henrik Grubbström (Grubba)  $with_root/usr/sfw $with_root/opt/sfw $with_root/opt/csw \ $with_root/opt/gnome-1.4 \
cf39902001-01-19Henrik Grubbström (Grubba)  $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
ed616b2003-02-08Martin Stjernholm  :
a12f271998-01-10Fredrik Hübinette (Hubbe) fi
ed616b2003-02-08Martin Stjernholm # During the configure tests we need some extra includes that # shouldn't be there in the final version. CONF_CPPFLAGS_EXTRA="-I$srcdir -I`pwd`" CPPFLAGS="${CPPFLAGS} ${CONF_CPPFLAGS_EXTRA}"
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
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN([Warning, lost confdefs.h, testing will be flawed!!
c411dc1997-04-21Fredrik Hübinette (Hubbe) 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
0a86982003-11-07Martin Stjernholm  \$ $CONFIG_SHELL ./configure])
c411dc1997-04-21Fredrik Hübinette (Hubbe) fi #############################################################################
99ed771997-06-03Fredrik Hübinette (Hubbe) AC_DEFINE(POSIX_SOURCE)
c6f4a82002-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]) ])
1acce82001-01-27Martin Stjernholm 
c6f4a82002-01-27Martin Stjernholm if test "$pike_cv_sys_ansi_prototypes" = "yes"; then AC_MSG_RESULT(yes) else
518cc02002-09-10Marcus Comstedt  AC_MSG_RESULT([no, giving up...])
c6f4a82002-01-27Martin Stjernholm  exit 1
1acce82001-01-27Martin Stjernholm 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)
97c8ba2004-10-20Henrik Grubbström (Grubba) if test "x${RNTANY-}" = x ; then
2f91412004-11-01Henrik Grubbström (Grubba)  AC_PATH_PROG(RNTANY, rntany, rntany, $PATH:$EXTRA_PATH)
97c8ba2004-10-20Henrik Grubbström (Grubba)  export RNTANY fi AC_SUBST(RNTANY) # Wix compiler if test "x${CANDLE-}" = x ; then AC_PATH_PROG(CANDLE, candle, $RNTANY candle, $PATH:$EXTRA_PATH) export CANDLE fi AC_SUBST(CANDLE) # Wix linker if test "x${LIGHT-}" = x ; then AC_PATH_PROG(LIGHT, light, $RNTANY light, $PATH:$EXTRA_PATH) export LIGHT fi AC_SUBST(LIGHT)
2f91412004-11-01Henrik Grubbström (Grubba) # Wix tool if test "x${TALLOW-}" = x ; then AC_PATH_PROG(TALLOW, tallow, $RNTANY tallow, $PATH:$EXTRA_PATH) export TALLOW fi AC_SUBST(TALLOW)
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 #############################################################################
bfd5a52001-02-17Henrik Grubbström (Grubba) 
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
9edb202004-03-10Henrik Grubbström (Grubba)  if $YACC -d conftest.y 1>&AC_FD_CC 2>&AC_FD_CC; 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 #############################################################################
d523532002-09-24Henrik Grubbström (Grubba) AC_MSG_CHECKING(for the type of __yy_memcpy)
f5d7042001-01-20Henrik Grubbström (Grubba) AC_CACHE_VAL(pike_cv___yy_memcpy_count_type, [
d523532002-09-24Henrik Grubbström (Grubba)  pike_cv___yy_memcpy_from_const=
f5d7042001-01-20Henrik Grubbström (Grubba)  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
d523532002-09-24Henrik Grubbström (Grubba)  for from_const in "const" ""; do cat >conftest.y <<EOF
f5d7042001-01-20Henrik Grubbström (Grubba) %pure_parser %{ #include <stdio.h> #ifndef __GNUC__ #ifndef __cplusplus
d523532002-09-24Henrik Grubbström (Grubba) static void __yy_memcpy(char *to, $from_const char *from, $count_type count);
f5d7042001-01-20Henrik Grubbström (Grubba) #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
9edb202004-03-10Henrik Grubbström (Grubba)  echo conftest.y: 1>&AC_FD_CC cat conftest.y 1>&AC_FD_CC if $YACC -d conftest.y 1>&AC_FD_CC 2>&AC_FD_CC; then
d523532002-09-24Henrik Grubbström (Grubba)  AC_TRY_LINK([
f5d7042001-01-20Henrik Grubbström (Grubba) #include "y.tab.c"
d523532002-09-24Henrik Grubbström (Grubba)  ], [
f5d7042001-01-20Henrik Grubbström (Grubba)  yyparse(); exit(0);
d523532002-09-24Henrik Grubbström (Grubba)  ], [ pike_cv___yy_memcpy_count_type=$count_type pike_cv___yy_memcpy_from_const="$from_const" break ]) fi done if test "x$pike_cv___yy_memcpy_count_type" = "xunknown"; then :; else break
f5d7042001-01-20Henrik Grubbström (Grubba)  fi done ]) if test "x$pike_cv___yy_memcpy_count_type" = "xunknown"; then
d523532002-09-24Henrik Grubbström (Grubba)  AC_MSG_RESULT($pike_cv___yy_memcpy_count_type)
0a86982003-11-07Martin Stjernholm  AC_MSG_WARN([Defaulting to unsigned int.])
6ded522001-07-13Henrik Grubbström (Grubba)  YY_COUNT_TYPE="unsigned int"
d523532002-09-24Henrik Grubbström (Grubba)  YY_FROM_CONST=""
f5d7042001-01-20Henrik Grubbström (Grubba) else
d523532002-09-24Henrik Grubbström (Grubba)  AC_MSG_RESULT(void __yy_memcpy(char *, $pike_cv___yy_memcpy_from_const char *, $pike_cv___yy_memcpy_count_type))
6ded522001-07-13Henrik Grubbström (Grubba)  YY_COUNT_TYPE="$pike_cv___yy_memcpy_count_type"
d523532002-09-24Henrik Grubbström (Grubba)  YY_FROM_CONST="$pike_cv___yy_memcpy_from_const"
f5d7042001-01-20Henrik Grubbström (Grubba) fi
6ded522001-07-13Henrik Grubbström (Grubba) AC_SUBST(YY_COUNT_TYPE)
d523532002-09-24Henrik Grubbström (Grubba) AC_SUBST(YY_FROM_CONST)
f5d7042001-01-20Henrik Grubbström (Grubba) 
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
4ff8002004-03-12Henrik Grubbström (Grubba) AC_MSG_CHECKING([if restrict keyword is available (C99)]) AC_CACHE_VAL(pike_cv_keyword_restrict, [ AC_TRY_COMPILE([ extern int foo(void *bar[restrict], void *restrict baz); ], [], [ pike_cv_keyword_restrict="yes" ], [ pike_cv_keyword_restrict="no" ]) ]) AC_MSG_RESULT($pike_cv_keyword_restrict) if test "x$pike_cv_keyword_restrict" = "xno"; then AC_DEFINE(restrict, [ /* Not supported */ ]) fi
b9b05f2003-02-20Henrik Grubbström (Grubba) AC_C_CHAR_UNSIGNED
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 \
12368a2003-04-30Henrik Grubbström (Grubba)  memory.h values.h string.h strings.h fcntl.h sys/filio.h \ sys/sockio.h crypt.h locale.h sys/select.h net/socket.h \ sys/mman.h setjmp.h sys/user.h limits.h pthread.h \ crt/signal.h sys/id.h mach-o/dyld.h sys/ptrace.h \ 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 \
500f8e2004-11-17Henrik Grubbström (Grubba)  malloc.h netinet/in.h sys/wait.h windows.h grp.h pwd.h \
12368a2003-04-30Henrik Grubbström (Grubba)  passwd.h group.h winsock2.h signal.h sys/file.h poll.h \ sys/poll.h socket.h ieeefp.h fp_class.h floatingpoint.h \
500f8e2004-11-17Henrik Grubbström (Grubba)  float.h sys/priocntl.h sys/sched.h winbase.h errno.h \
895ced2003-10-25Martin Nilsson  stddef.h mmx.h asm/mmx.h sys/termio.h sys/termios.h \ ws2tcpip.h valgrind/memcheck.h memcheck.h valgrind.h \
32ccf92003-11-25Jonas Wallden  sys/prctl.h sys/ioctl.h mach/task_info.h mach/task.h \
500f8e2004-11-17Henrik Grubbström (Grubba)  mach/mach_init.h syscall.h sys/syscall.h devices/timer.h,,,[ #if (defined(__WINNT__) || defined(__WIN32__)) && !defined(__NT__) #define __NT__ #endif #ifndef _LARGEFILE_SOURCE # define _FILE_OFFSET_BITS 64 # define _LARGEFILE_SOURCE #endif #ifndef __STDC_EXT__ # define __STDC_EXT__ #endif /* !__STDC_EXT__ */ #ifndef _PROTOTYPES # define _PROTOTYPES #endif /* !_PROTOTYPES */ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif /* !_GNU_SOURCE */ #ifdef __NT__ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #ifndef WIN32 #define WIN32 100 /* WinNT 1.0 */ #endif #if !defined(_WIN32_WINDOWS) || (_WIN32_WINDOWS < 0x500) #undef _WIN32_WINDOWS #define _WIN32_WINDOWS 0x0500 #endif #if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x500) #undef _WIN32_WINNT #define _WIN32_WINNT 0x0500 #endif #endif /* __NT__ */ #ifdef __amigaos__ #define __USE_NETINET_IN_H #endif #ifndef __BUILTIN_VA_ARG_INCR #define __BUILTIN_VA_ARG_INCR 1 #endif /* !__BUILTIN_VA_ARG_INCR */ #ifdef HAVE_WINDOWS_H #include <windows.h> #undef HAVE_WINDOWS_H #endif
3152b42004-11-20Mattias Wingstedt /* Necessary to find sys/socket.h on MacOS X 10.3 */ #if HAVE_SYS_TYPES_H # include <sys/types.h> #endif
500f8e2004-11-17Henrik Grubbström (Grubba) ])
8ad6e72004-03-09Henrik Grubbström (Grubba) 
91e1682004-08-31Henrik Grubbström (Grubba) # Setjmp. # # POSIX defines sigsetjmp(). # BSD defines both _setjmp() and setjmp(), where setjmp() # saves the signal mask. # SVID explicitly defines setjmp() not to save the signal mask. AC_CHECK_FUNCS(sigsetjmp setjmp _setjmp siglongjmp longjmp _longjmp)
8ad6e72004-03-09Henrik Grubbström (Grubba) # Make it possible to disable use of /dev/poll. if test "x$with_devpoll" = "xno"; then :; else
8939372004-04-03Henrik Grubbström (Grubba)  AC_CHECK_HEADERS(sys/devpoll.h sys/event.h sys/epoll.h)
6f6f352004-04-04Henrik Grubbström (Grubba)  AC_CHECK_FUNCS(kqueue)
8939372004-04-03Henrik Grubbström (Grubba)  AC_MSG_CHECKING(for poll device) AC_CACHE_VAL(pike_cv_device_devpoll, [ pike_cv_poll_device="no" for device in /dev/poll /dev/epoll; do if test -w "$device"; then pike_cv_poll_device="$device" break fi done ]) AC_MSG_RESULT($pike_cv_poll_device) if test "x$pike_cv_poll_device" = "xno"; then :; else AC_DEFINE_UNQUOTED(PIKE_POLL_DEVICE, "$pike_cv_poll_device")
4b420b2004-03-10Henrik Grubbström (Grubba)  fi
8ad6e72004-03-09Henrik Grubbström (Grubba) fi
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)
3c6eaa2002-04-12Martin Stjernholm AC_CHECK_SIZEOF(long double, 0)
d0d62b2000-08-18Henrik Grubbström (Grubba) AC_CHECK_SIZEOF(long, 4)
3c6eaa2002-04-12Martin Stjernholm AC_CHECK_SIZEOF(long long, 0) AC_CHECK_SIZEOF(__int64, 0)
318a412004-12-14Martin Stjernholm AC_CHECK_SIZEOF(time_t, 4)
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)
da9b452003-03-28Martin Stjernholm AC_CHECK_SIZEOF(off_t, 4)
3ce0912003-10-10Henrik Grubbström (Grubba) AC_MSG_CHECKING(for sizeof anything) if test "$ac_cv_sizeof_long_double" != 0 -a \ "x$with_long_double_precision" = xyes ; then sizeof_float_type="$ac_cv_sizeof_long_double" elif test "x$with_double_precision" = xyes ; then sizeof_float_type="$ac_cv_sizeof_double" else sizeof_float_type="$ac_cv_sizeof_float" fi if test "$ac_cv_sizeof_long_long" != 0 -a \ "x$with_long_long_int" = xyes ; then sizeof_int_type="$ac_cv_sizeof_long_long" elif test "$ac_cv_sizeof___int64" != 0 -a \ "x$with_long_long_int" = xyes ; then sizeof_int_type="$ac_cv_sizeof___int64" elif test "x$with_long_int" = xyes ; then sizeof_int_type="$ac_cv_sizeof_long" elif test "x$with_short_int" = xyes ; then sizeof_int_type="$ac_cv_sizeof_short" elif test "x$with_unsigned_long_int" = xyes ; then sizeof_int_type="$ac_cv_sizeof_long" elif test "$ac_cv_sizeof_long_long" != 0 -a \ "x$with_unsigned_long_long_int" = xyes ; then sizeof_int_type="$ac_cv_sizeof_long_long" elif test "$ac_cv_sizeof___int64" != 0 -a \ "x$with_unsigned_long_long_int" = xyes ; then sizeof_int_type="$ac_cv_sizeof___int64" else sizeof_int_type="$ac_cv_sizeof_int" fi sizeof_anything="$ac_cv_sizeof_char_p" if test "$sizeof_float_type" -gt "$sizeof_anything"; then sizeof_anything="$sizeof_float_type" fi if test "$sizeof_int_type" -gt "$sizeof_anything"; then sizeof_anything="$sizeof_int_type" fi AC_MSG_RESULT($sizeof_anything) AC_MSG_CHECKING(for FLOAT_TYPE)
3c6eaa2002-04-12Martin Stjernholm if test "x$with_long_double_precision" = x -a \ "x$with_double_precision" = x ; then # Choose the longest available float that fits in a pointer.
3ce0912003-10-10Henrik Grubbström (Grubba)  if test "$ac_cv_sizeof_long_double" != 0 -a \ "$ac_cv_sizeof_long_double" -le "$sizeof_anything" ; then
3c6eaa2002-04-12Martin Stjernholm  with_long_double_precision=yes
3ce0912003-10-10Henrik Grubbström (Grubba)  elif test "$ac_cv_sizeof_double" -le "$sizeof_anything" ; then
3c6eaa2002-04-12Martin Stjernholm  with_double_precision=yes fi fi
3ce0912003-10-10Henrik Grubbström (Grubba) if test "$ac_cv_sizeof_long_double" != 0 -a \
3c6eaa2002-04-12Martin Stjernholm  "x$with_long_double_precision" = xyes ; then
3ce0912003-10-10Henrik Grubbström (Grubba)  AC_MSG_RESULT(long double)
3c6eaa2002-04-12Martin Stjernholm  AC_DEFINE(WITH_LONG_DOUBLE_PRECISION_SVALUE) AC_DEFINE(FLOAT_TYPE, long double) AC_DEFINE(SIZEOF_FLOAT_TYPE, SIZEOF_LONG_DOUBLE)
2f8ae62004-01-12Mirar (Pontus Hagland)  float_type="long double"
3ce0912003-10-10Henrik Grubbström (Grubba)  sizeof_float_type="$ac_cv_sizeof_long_double"
3c6eaa2002-04-12Martin Stjernholm elif test "x$with_double_precision" = xyes ; then
3ce0912003-10-10Henrik Grubbström (Grubba)  AC_MSG_RESULT(double)
3c6eaa2002-04-12Martin Stjernholm  AC_DEFINE(WITH_DOUBLE_PRECISION_SVALUE) AC_DEFINE(FLOAT_TYPE, double) AC_DEFINE(SIZEOF_FLOAT_TYPE, SIZEOF_DOUBLE)
2f8ae62004-01-12Mirar (Pontus Hagland)  float_type="double"
3ce0912003-10-10Henrik Grubbström (Grubba)  sizeof_float_type="$ac_cv_sizeof_double"
3c6eaa2002-04-12Martin Stjernholm else
3ce0912003-10-10Henrik Grubbström (Grubba)  AC_MSG_RESULT(float)
3c6eaa2002-04-12Martin Stjernholm  AC_DEFINE(FLOAT_TYPE, float) AC_DEFINE(SIZEOF_FLOAT_TYPE, SIZEOF_FLOAT)
2f8ae62004-01-12Mirar (Pontus Hagland)  float_type="float"
3ce0912003-10-10Henrik Grubbström (Grubba)  sizeof_float_type="$ac_cv_sizeof_float"
3c6eaa2002-04-12Martin Stjernholm fi
3ce0912003-10-10Henrik Grubbström (Grubba) AC_MSG_CHECKING(for INT_TYPE)
3c6eaa2002-04-12Martin Stjernholm if test "x$with_long_long_int" = x -a \ "x$with_long_int" = x -a \ "x$with_int_int" = x -a \ "x$with_short_int" = x ; then # Choose the longest available integer that fits in a pointer. # if test $ac_cv_sizeof_long_long != 0 -a \ # $ac_cv_sizeof_long_long -le $ac_cv_sizeof_char_p ; then # # This isn't a good idea on architectures where # # sizeof(long int) < sizeof(LONGEST). # # This is due to the gmp mpz api's using long int instead of # # mp_limb_{signed_}t. # #with_long_long_int=yes # : # fi
3ce0912003-10-10Henrik Grubbström (Grubba)  if test "$ac_cv_sizeof_long" -le "$sizeof_anything" ; then with_long_int=yes else with_int_int=yes fi
3c6eaa2002-04-12Martin Stjernholm  : fi
3ce0912003-10-10Henrik Grubbström (Grubba) if test "$ac_cv_sizeof_long_long" != 0 -a \
3c6eaa2002-04-12Martin Stjernholm  "x$with_long_long_int" = xyes ; then
3ce0912003-10-10Henrik Grubbström (Grubba)  AC_MSG_RESULT(long long)
3c6eaa2002-04-12Martin Stjernholm  AC_DEFINE(WITH_LONG_LONG_INT) AC_DEFINE(INT_TYPE, long long) AC_DEFINE(SIZEOF_INT_TYPE, SIZEOF_LONG_LONG)
2f8ae62004-01-12Mirar (Pontus Hagland)  int_type="long long" sizeof_int_type="$ac_cv_sizeof_long_long"
3ce0912003-10-10Henrik Grubbström (Grubba) elif test "$ac_cv_sizeof___int64" != 0 -a \ "x$with_long_long_int" = xyes ; then AC_MSG_RESULT(__int64) AC_DEFINE(WITH_LONG_LONG_INT) AC_DEFINE(INT_TYPE, __int64) AC_DEFINE(SIZEOF_INT_TYPE, SIZEOF___INT64)
2f8ae62004-01-12Mirar (Pontus Hagland)  int_type="__int64" sizeof_int_type="$ac_cv_sizeof___int64"
3c6eaa2002-04-12Martin Stjernholm elif test "x$with_long_int" = xyes ; then
3ce0912003-10-10Henrik Grubbström (Grubba)  AC_MSG_RESULT(long)
3c6eaa2002-04-12Martin Stjernholm  AC_DEFINE(WITH_LONG_INT) AC_DEFINE(INT_TYPE, long) AC_DEFINE(SIZEOF_INT_TYPE, SIZEOF_LONG)
2f8ae62004-01-12Mirar (Pontus Hagland)  int_type="long" sizeof_int_type="$ac_cv_sizeof_long"
ac60002003-11-15Martin Stjernholm dnl elif test "x$with_short_int" = xyes ; then dnl AC_MSG_RESULT(short) dnl AC_DEFINE(WITH_SHORT_INT) dnl AC_DEFINE(INT_TYPE, short) dnl AC_DEFINE(SIZEOF_INT_TYPE, SIZEOF_SHORT) dnl elif test "x$with_unsigned_long_int" = xyes ; then dnl AC_MSG_RESULT(unsigned long) dnl AC_DEFINE(WITH_UNSIGNED_LONG_INT) dnl AC_DEFINE(INT_TYPE, unsigned long) dnl AC_DEFINE(SIZEOF_INT_TYPE, SIZEOF_LONG) dnl elif test "$ac_cv_sizeof_long_long" != 0 -a \ dnl "x$with_unsigned_long_long_int" = xyes ; then dnl AC_MSG_RESULT(unsigned long long) dnl AC_DEFINE(WITH_UNSIGNED_LONG_LONG_INT) dnl AC_DEFINE(INT_TYPE, unsigned long long) dnl AC_DEFINE(SIZEOF_INT_TYPE, SIZEOF_LONG_LONG) dnl elif test "$ac_cv_sizeof___int64" != 0 -a \ dnl "x$with_unsigned_long_long_int" = xyes ; then dnl AC_MSG_RESULT(unsigned __int64) dnl AC_DEFINE(WITH_UNSIGNED_LONG_LONG_INT) dnl AC_DEFINE(INT_TYPE, unsigned __int64) dnl AC_DEFINE(SIZEOF_INT_TYPE, SIZEOF___INT64)
3c6eaa2002-04-12Martin Stjernholm else
3ce0912003-10-10Henrik Grubbström (Grubba)  AC_MSG_RESULT(int)
3c6eaa2002-04-12Martin Stjernholm  AC_DEFINE(WITH_INT_INT) AC_DEFINE(INT_TYPE, int) AC_DEFINE(SIZEOF_INT_TYPE, SIZEOF_INT)
2f8ae62004-01-12Mirar (Pontus Hagland)  int_type="int" sizeof_int_type="$ac_cv_sizeof_int"
3c6eaa2002-04-12Martin Stjernholm fi
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) 
6accea2003-01-04Xavier Beaudouin dnl Checking if poll() call is in libpoll (in general in Darwin or BSD/OS) AC_CHECK_LIB(poll, poll)
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, [
21ee4b2003-12-16Marek Habersack  AC_EGREP_CPP(oui, [
d87ab42000-08-17Henrik Grubbström (Grubba) #if defined(_WIN64) || defined(__WIN64__)
21ee4b2003-12-16Marek Habersack  oui
d87ab42000-08-17Henrik Grubbström (Grubba) #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"
bcb5382001-08-23Boyd Lynn Gerber  LIBS="-lshell32 -lkernel32 -lws2_32 -ladvapi32 $LIBS"
d87ab42000-08-17Henrik Grubbström (Grubba)  else AC_MSG_RESULT(no)
bcb5382001-08-23Boyd Lynn Gerber  LIBS="-lshell32 -lkernel32 -lws2_32 -ladvapi32 $LIBS"
d87ab42000-08-17Henrik Grubbström (Grubba)  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
0a86982003-11-07Martin Stjernholm  AC_MSG_WARN(I will compensate for this by adding -lc -lm.)
d98e0d1997-01-15Fredrik Hübinette (Hubbe)  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
0a86982003-11-07Martin Stjernholm  PIKE_MSG_WARN(Applying workaround for sched.h typo.)
f8663d1997-09-16Henrik Grubbström (Grubba)  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) 
40fb6d2003-01-05Henrik Grubbström (Grubba)  pike_cv_thread_t_type=integer
b1f4eb1998-01-13Fredrik Hübinette (Hubbe) else
9ab4461998-11-06Honza Petrous  # Test for POSIX threads
6c74552004-03-15Henrik Grubbström (Grubba)  if test "x$with_thread_library" != "xno"; then AC_MSG_CHECKING([for thread library]) AC_MSG_RESULT([$with_thread_library (--with-thread-library)]) LIBS="${OLDLIBS} $with_thread_library" else
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}" ;;
bcb5382001-08-23Boyd Lynn Gerber  xUnixWare*|xOpenUNIX*)
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 
46d6302002-05-27Henrik Grubbström (Grubba)  xOpenBSD*) CFLAGS="${CFLAGS} -pthread" LDFLAGS="${LDFLAGS} -pthread" ;;
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)
f369dd2000-03-26Fredrik Hübinette (Hubbe) 
2b30042003-12-17Marcus Comstedt  AC_PATH_PROG(PTHREAD_CONFIG,${ac_tool_prefix}pthread-config,no)
95013b2000-03-27Dan Nelson  if test "x$PTHREAD_CONFIG" = xno ; then
6c74552004-03-15Henrik Grubbström (Grubba)  # FIXME: Might want to look at OS version: # 500000 <= version < 500016: -pthread # 500016 <= version < 502102: -lc_r # 502102 <= version : -lpthread AC_SYS_COMPILER_FLAG(-pthread, pthread, CFLAGS, LIBS="$LIBS -lc_r") LD_FALLBACK_FLAGS="${LD_FALLBACK_FLAGS-} -lc_r"
f369dd2000-03-26Fredrik Hübinette (Hubbe)  else
6c74552004-03-15Henrik Grubbström (Grubba)  CFLAGS="$CFLAGS `${PTHREAD_CONFIG} --cflags`" LIBS="${OLDLIBS} `${PTHREAD_CONFIG} --libs`" LDFLAGS="$CFLAGS `${PTHREAD_CONFIG} --ldflags`"
f369dd2000-03-26Fredrik Hübinette (Hubbe)  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
6c74552004-03-15Henrik Grubbström (Grubba)  fi
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) ##########################################################################
32ccf92003-11-25Jonas Wallden  AC_MSG_CHECKING(for pthread_yield_np) AC_CACHE_VAL(pike_cv_have_pthread_yield_np,[ AC_TRY_LINK([#include <pthread.h> void foo(void) { pthread_yield_np(); } ],[],[ pike_cv_have_pthread_yield_np=yes ],[ pike_cv_have_pthread_yield_np=no ]) ]) AC_MSG_RESULT($pike_cv_have_pthread_yield_np) if test x$pike_cv_have_pthread_yield_np = xyes ; then AC_DEFINE(HAVE_PTHREAD_YIELD_NP) else : fi ##########################################################################
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) 
40fb6d2003-01-05Henrik Grubbström (Grubba)  AC_MSG_CHECKING([behaviour of the pthread_t type]) AC_CACHE_VAL(pike_cv_thread_t_type, [ AC_TRY_COMPILE([ #include <sys/types.h> #ifdef STDC_HEADERS #include <stdlib.h> #include <stddef.h> #endif #include <pthread.h> extern pthread_t bar; ], [ void *foo = (void *)(ptrdiff_t)bar; return 0; ], [ pike_cv_thread_t_type=integer ], [ pike_cv_thread_t_type=pointer ]) ]) AC_MSG_RESULT($pike_cv_thread_t_type)
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
bcb5382001-08-23Boyd Lynn Gerber  xUnixWare*|xOpenUNIX*)
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
40fb6d2003-01-05Henrik Grubbström (Grubba)  pike_cv_thread_t_type=integer
9ab4461998-11-06Honza Petrous  fi # POSIX threads
b1f4eb1998-01-13Fredrik Hübinette (Hubbe) fi # NT
50b0391997-01-27Henrik Grubbström (Grubba) else # Without threads
40fb6d2003-01-05Henrik Grubbström (Grubba)  pike_cv_thread_t_type=integer
50b0391997-01-27Henrik Grubbström (Grubba)  :
aeafe11997-01-26Per Hedbor fi
eec1371996-11-02Fredrik Hübinette (Hubbe) 
40fb6d2003-01-05Henrik Grubbström (Grubba) if test "x$pike_cv_thread_t_type" = "xpointer"; then AC_DEFINE(PIKE_THREAD_T_IS_POINTER) fi
91f3b02004-09-26Marcus Comstedt if test "x$pike_cv_sys_os" = "xWindows_NT" -o "x$pike_cv_sys_os" = "xAmigaOS"; then :; else
6c74552004-03-15Henrik Grubbström (Grubba)  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
e920982004-09-26Marcus Comstedt  ], [pike_cv_initial_stack_size=''])
6c74552004-03-15Henrik Grubbström (Grubba)  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 fi
07513e1996-10-04Fredrik Hübinette (Hubbe) ########################################################################
5267b71995-08-09Fredrik Hübinette (Hubbe) 
01185d2003-04-01Martin Stjernholm PIKE_CHECK_CONSTANTS(mutex error check flag, PTHREAD_MUTEX_ERRORCHECK PTHREAD_MUTEX_ERRORCHECK_NP, [ #ifdef HAVE_PTHREAD_H #include <pthread.h> #elif defined (HAVE_THREAD_H) #include <thread.h> #endif ], PIKE_MUTEX_ERRORCHECK) ######################################################################## PIKE_CHECK_CONSTANTS(recursive mutex flag, PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP, [ #ifdef HAVE_PTHREAD_H #include <pthread.h> #elif defined (HAVE_THREAD_H) #include <thread.h> #endif ], PIKE_MUTEX_RECURSIVE) ########################################################################
a888ce2000-12-23Henrik Grubbström (Grubba) # NOTE: The following test is hardcoded to fail when crosscompiling # It also clobbers $LIBOBJS.
64356c2003-12-19Dan Nelson 
012fe72003-12-04Henrik Grubbström (Grubba) ifdef([m4_pattern_allow], [
64356c2003-12-19Dan Nelson  # Handle the latest autoconf incompatibility...
012fe72003-12-04Henrik Grubbström (Grubba)  m4_pattern_allow(LIBOBJS) ])
a888ce2000-12-23Henrik Grubbström (Grubba) 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) 
569a8b2005-05-30Henrik Grubbström (Grubba) if test "x$ac_cv_func_mmap" = "xyes"; then # Mac OS X has an mmap that fails with ENODEV if we try # to use it for mexec_alloc et al.
672ebb2005-05-30Henrik Grubbström (Grubba)  # # NB: mmap with MAP_ANON does however work.
569a8b2005-05-30Henrik Grubbström (Grubba)  AC_MSG_CHECKING([if mmap can be used to allocate PROT_EXEC]) AC_CACHE_VAL(pike_cv_mmap_PROT_EXEC, [ AC_TRY_RUN([ #include <stdio.h> #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif #ifdef HAVE_SYS_MMAN_H #include <sys/mman.h> #endif #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> #endif #ifdef HAVE_FCNTL_H #include <fcntl.h> #endif #include <errno.h>
672ebb2005-05-30Henrik Grubbström (Grubba) #if !defined(MAP_ANONYMOUS) && defined(MAP_ANON) #define MAP_ANONYMOUS MAP_ANON #endif /* !MAP_ANONYMOUS && MAP_ANON */
569a8b2005-05-30Henrik Grubbström (Grubba)  int main(int argc, char **argv) { void *ptr;
672ebb2005-05-30Henrik Grubbström (Grubba)  int dev_zero = -1; #ifndef MAP_ANONYMOUS /* Neither MAP_ANONYMOUS nor MAP_ANON. * Map some /dev/zero. */ dev_zero = open("/dev/zero", O_RDONLY);
569a8b2005-05-30Henrik Grubbström (Grubba)  if (dev_zero < 0) { fprintf(stderr, "open(\"/dev/zero\", O_RDONLY) failed. errno: %d\n", errno); return 1; }
672ebb2005-05-30Henrik Grubbström (Grubba) #define MAP_ANONYMOUS 0 #endif /* !MAP_ANONYMOUS */
569a8b2005-05-30Henrik Grubbström (Grubba)  if ((ptr = mmap(NULL, 8192, PROT_EXEC|PROT_READ|PROT_WRITE,
672ebb2005-05-30Henrik Grubbström (Grubba)  MAP_PRIVATE|MAP_ANONYMOUS, dev_zero, 0)) == MAP_FAILED) {
569a8b2005-05-30Henrik Grubbström (Grubba)  fprintf(stderr, "mmap(NULL, 8192, PROT_EXEC|PROT_READ|PROT_WRITE,\n"
672ebb2005-05-30Henrik Grubbström (Grubba)  "MAP_PRIVATE|MAP_ANONYMOUS, %d, 0) failed. errno: %d\n",
569a8b2005-05-30Henrik Grubbström (Grubba)  dev_zero, errno); return 2; } return 0; } ], [ pike_cv_mmap_PROT_EXEC="yes" ], [ pike_cv_mmap_PROT_EXEC="no" ], [ AC_TRY_COMPILE([ #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif #ifdef HAVE_SYS_MMAN_H #include <sys/mman.h> #endif #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> #endif #ifdef HAVE_FCNTL_H #include <fcntl.h> #endif #include <errno.h>
672ebb2005-05-30Henrik Grubbström (Grubba)  #if !defined(MAP_ANONYMOUS) && defined(MAP_ANON) #define MAP_ANONYMOUS MAP_ANON #endif /* !MAP_ANONYMOUS && MAP_ANON */ #if !defined(MAP_ANONYMOUS) && defined(MAP_ANON) #define MAP_ANONYMOUS MAP_ANON #endif /* !MAP_ANONYMOUS && MAP_ANON */
569a8b2005-05-30Henrik Grubbström (Grubba)  ], [ void *ptr;
672ebb2005-05-30Henrik Grubbström (Grubba)  int dev_zero = -1; #ifndef MAP_ANONYMOUS /* Neither MAP_ANONYMOUS nor MAP_ANON. * Map some /dev/zero. */ dev_zero = open("/dev/zero", O_RDONLY);
569a8b2005-05-30Henrik Grubbström (Grubba)  if (dev_zero < 0) return 1;
672ebb2005-05-30Henrik Grubbström (Grubba) #define MAP_ANONYMOUS 0 #endif /* !MAP_ANONYMOUS */
569a8b2005-05-30Henrik Grubbström (Grubba)  if ((ptr = mmap(NULL, 8192, PROT_EXEC|PROT_READ|PROT_WRITE,
672ebb2005-05-30Henrik Grubbström (Grubba)  MAP_PRIVATE|MAP_ANONYMOUS, dev_zero, 0)) == MAP_FAILED) {
569a8b2005-05-30Henrik Grubbström (Grubba)  return 2; } return 0; ], [ pike_cv_mmap_PROT_EXEC="yes" ], [ pike_cv_mmap_PROT_EXEC="no" ]) ]) ]) AC_MSG_RESULT($pike_cv_mmap_PROT_EXEC) if test "x$pike_cv_mmap_PROT_EXEC" = "xyes"; then AC_DEFINE(MEXEC_USES_MMAP) fi fi
75920f1997-12-28Fredrik Hübinette (Hubbe) AC_CHECK_FUNCS( \
744f542003-01-21Henrik Grubbström (Grubba)  _alldiv \
54d96f2003-08-22Tomas Nilsson  _aullshr \
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 \
b143542003-02-28Henrik Grubbström (Grubba)  ptrace \
cb22561995-10-11Fredrik Hübinette (Hubbe)  rindex \
d9c7172001-03-23Henrik Grubbström (Grubba)  setbuf \
cb22561995-10-11Fredrik Hübinette (Hubbe)  setlocale \ setrlimit \
3605b81998-09-18Peter J. Holzer  setresuid \
d9c7172001-03-23Henrik Grubbström (Grubba)  setvbuf \
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)  strtod \ strtol \
5740881998-01-01Fredrik Hübinette (Hubbe)  time \
cb22561995-10-11Fredrik Hübinette (Hubbe)  times \
2ea2112002-09-07Henrik Grubbström (Grubba)  tzset \
cb22561995-10-11Fredrik Hübinette (Hubbe)  vfprintf \ vsprintf \
5a28a92003-08-04Martin Stjernholm  snprintf \
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 \ 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 \
1b28b82001-05-28Marcus Comstedt  nan \
70c9c11998-05-05Fredrik Hübinette (Hubbe)  nice \
ea959d1999-02-01Per Hedbor  __priocntl \ sched_setscheduler \ setpriority \
dac6371999-10-17Mirar (Pontus Hagland)  usleep \ nanosleep \
a85ac52001-08-23Per Hedbor  thr_yield \
f663a02003-03-05Martin Stjernholm  prctl \
cb22561995-10-11Fredrik Hübinette (Hubbe) )
5267b71995-08-09Fredrik Hübinette (Hubbe) 
87076a2003-02-24Henrik Grubbström (Grubba) # SunOS 4 realloc() returns NULL when reallocing NULL. AC_MSG_CHECKING([if realloc(NULL, SZ) works]) AC_CACHE_VAL(pike_cv_realloc_null_works, [ AC_TRY_RUN([ #include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) { void *foo = realloc(NULL, 16); return !foo; } ], [ pike_cv_realloc_null_works=yes ], [ pike_cv_realloc_null_works=no ], [ pike_cv_realloc_null_works=no
02b5552003-02-24Henrik Grubbström (Grubba)  ])
87076a2003-02-24Henrik Grubbström (Grubba) ]) if test "x$pike_cv_realloc_null_works" = "xyes"; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_WORKING_REALLOC_NULL) else AC_MSG_RESULT(no) fi
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 */
12368a2003-04-30Henrik Grubbström (Grubba) #ifdef HAVE_WINSOCK2_H #include <WinSock2.h> #ifdef HAVE_WS2TCPIP_H /* Needed for IPv6 support. */ #include <WS2tcpip.h> #endif #elif defined(HAVE_WINSOCK_H)
6cefa12000-09-27Henrik Grubbström (Grubba) #include <winsock.h> #endif
a924142002-11-18Henrik Grubbström (Grubba) /* Here is the actual test: */
6cefa12000-09-27Henrik Grubbström (Grubba) 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 */
12368a2003-04-30Henrik Grubbström (Grubba) #ifdef HAVE_WINSOCK2_H #include <WinSock2.h> #ifdef HAVE_WS2TCPIP_H /* Needed for IPv6 support. */ #include <WS2tcpip.h> #endif #elif defined(HAVE_WINSOCK_H)
3e82a71998-09-01Fredrik Hübinette (Hubbe) #include <winsock.h> #endif
a924142002-11-18Henrik Grubbström (Grubba) /* Here is 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 */
12368a2003-04-30Henrik Grubbström (Grubba) #ifdef HAVE_WINSOCK2_H #include <WinSock2.h> #ifdef HAVE_WS2TCPIP_H /* Needed for IPv6 support. */ #include <WS2tcpip.h> #endif #elif defined(HAVE_WINSOCK_H)
69bae82000-08-20Henrik Grubbström (Grubba) #include <winsock.h> #endif
a924142002-11-18Henrik Grubbström (Grubba) /* Here is 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) #############################################################################
1b28b82001-05-28Marcus Comstedt MY_CHECK_FUNCTION(infnan, [ #include <errno.h> #include <math.h> ], [ double pinf = infnan(ERANGE); double ninf = infnan(-ERANGE); double nan = infnan(EDOM); exit(!(isinf(pinf)>0 && isinf(ninf)<0 && isnan(nan))); ]) #############################################################################
c3d1032001-06-12Henrik Grubbström (Grubba) MY_CHECK_FUNCTION(_isnan, [ #include <float.h> ], [ exit(_isnan(0.0)); ]) #############################################################################
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) 
486dbe2003-04-23Marcus Comstedt AC_MSG_CHECKING(struct sockaddr_in6) AC_CACHE_VAL(pike_cv_has_struct_sockaddr_in6,[ AC_TRY_LINK([ #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif /* HAVE_SYS_TYPES_H */ #ifdef HAVE_UNISTD_H #include <unistd.h> #endif /* HAVE_UNISTD_H */ #ifdef HAVE_SYS_SOCKET_H #include <sys/socket.h> #endif /* HAVE_SYS_SOCKET_H */ #ifdef HAVE_NETINET_IN_H #include <netinet/in.h> #endif /* HAVE_NETINET_IN_H */
12368a2003-04-30Henrik Grubbström (Grubba) #ifdef HAVE_WINSOCK2_H #include <WinSock2.h> #ifdef HAVE_WS2TCPIP_H #include <WS2tcpip.h> #endif #elif defined(HAVE_WINSOCK_H) #include <winsock.h> #endif
486dbe2003-04-23Marcus Comstedt ],[ struct sockaddr_in6 foo; ],pike_cv_has_struct_sockaddr_in6=yes,pike_cv_has_struct_sockaddr_in6=no) ]) if test "$pike_cv_has_struct_sockaddr_in6" = "yes"; then AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6) fi AC_MSG_RESULT($pike_cv_has_struct_sockaddr_in6) #############################################################################
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) {
a924142002-11-18Henrik Grubbström (Grubba)  /* On some OS:s strtol() rounds this to 0x7fffffff. */
63a6e01998-05-29Henrik Grubbström (Grubba)  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) 
025dd32003-02-11Martin Stjernholm if test "x$ac_cv_func_gethrvtime" = xyes; then AC_MSG_CHECKING(if gethrvtime really works) AC_CACHE_VAL(pike_cv_func_gethrvtime_works, [ AC_TRY_RUN([ #define CONFIGURE_TEST #include "port.c" int main() { time_t start = TIME (0), now; hrtime_t vt = gethrvtime(), next_vt; if (start == (time_t) -1) return 1; /* Normal time doesn't work. */ do { /* Take some cpu time. */ now = TIME (0); next_vt = gethrvtime(); if (next_vt < vt) return 2; /* Shouldn't go backward. */ vt = next_vt;
e3e7df2003-02-12Martin Stjernholm  } while (now != (time_t) -1 && now <= start + 1);
3fb12e2003-02-21Henrik Grubbström (Grubba)  if (now == (time_t) -1) return 3; /* Normal time does not work. */
025dd32003-02-11Martin Stjernholm  if (vt <= 0) return 4; /* Should have accounted for some cpu time. */ return 0; } ], pike_cv_func_gethrvtime_works=yes, pike_cv_func_gethrvtime_works=no, pike_cv_func_gethrvtime_works=no) ]) AC_MSG_RESULT($pike_cv_func_gethrvtime_works) if test "x$pike_cv_func_gethrvtime_works" = xyes; then AC_DEFINE(HAVE_WORKING_GETHRVTIME) fi fi
9aae7e2001-06-20Per Hedbor # 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> # #include <stdio.h> # #include <sys/time.h> # # static long long hrtime_rtsc_zero; # static long long hrtime_rtsc_last; # static long long hrtime_max; # static struct timeval hrtime_timeval_zero; # static long double hrtime_conv=0.0; # # #define GETTIMEOFDAY(PTR) gettimeofday(PTR,NULL) # # #define RTSC(x) \ # __asm__ __volatile__ ( "rdtsc" \ # :"=a" (((unsigned long*)&x)[0]), \ # "=d" (((unsigned long*)&x)[1])) # # void own_gethrtime_init() # { # GETTIMEOFDAY(&hrtime_timeval_zero); # RTSC(hrtime_rtsc_zero); # hrtime_rtsc_last=hrtime_rtsc_zero; # hrtime_max=0; # } # # int own_gethrtime_update(struct timeval *ptr) # { # long long td,t,now; # GETTIMEOFDAY(ptr); # 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; # # hrtime_rtsc_last=now; # t=now-hrtime_rtsc_zero; # if (t) hrtime_conv=((long double)td)/t; # # return 1; # } # # /* this is very sensitive to the compiler; keep all crap */ # # long long gethrtime() # { # long long now; # struct timeval tv; # # 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; # } # } # # RTSC(now); # # 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; # } # # #include <stdio.h> # # int main() # { # struct timeval tv1,tv2; # long long td,t1,t2; # own_gethrtime_init(); # # usleep(10); # own_gethrtime_update(&tv2); # # t1=gethrtime(); # # gettimeofday(&tv1,NULL); # for (;;) /* busy loop */ # { # GETTIMEOFDAY(&tv2); # 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(); # # /* printf("t2-t1=%lld\n",t2-t1); */ # # if (t2==hrtime_rtsc_zero || # t2-t1>1100000 || # t2-t1<900000) return 1; # # return 0; # }], pike_cv_own_gethrtime_rdtsc=yes, # pike_cv_own_gethrtime_rdtsc=no, pike_cv_own_gethrtime_rdtsc=no) # ]) # 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;
647f5d2001-12-03Xavier Beaudouin  _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) 
4b2ccc2002-03-21Henrik Grubbström (Grubba) AC_MSG_CHECKING(if struct tm has __tm_gmtoff) AC_CACHE_VAL(pike_cv_struct_tm_has___tm_gmtoff,[ AC_TRY_COMPILE([ #ifdef TM_IN_SYS_TIME #include <sys/time.h> #else #include <time.h> #endif ],[ int _tz; struct tm foo; _tz=foo.__tm_gmtoff; ],pike_cv_struct_tm_has___tm_gmtoff=yes,pike_cv_struct_tm_has___tm_gmtoff=no) ]) if test "$pike_cv_struct_tm_has___tm_gmtoff" = "yes"; then AC_DEFINE(STRUCT_TM_HAS___TM_GMTOFF) fi AC_MSG_RESULT($pike_cv_struct_tm_has___tm_gmtoff)
c69eb51996-09-29Fredrik Hübinette (Hubbe) AC_MSG_CHECKING(for USHRT_MAX definition) AC_CACHE_VAL(pike_cv_ushrt_max_is_defined,[
21ee4b2003-12-16Marek Habersack AC_EGREP_CPP(oui,[
c69eb51996-09-29Fredrik Hübinette (Hubbe) #include <limits.h> #ifdef USHRT_MAX
21ee4b2003-12-16Marek Habersack oui
c69eb51996-09-29Fredrik Hübinette (Hubbe) #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)  [
9b62872002-10-03Henrik Grubbström (Grubba)  OLD_CPPFLAGS="$CPPFLAGS"
63a0f72003-01-27Martin Stjernholm  pike_cv_decl_$1=nonexistent
5267b71995-08-09Fredrik Hübinette (Hubbe)  for a in $2 do
63a0f72003-01-27Martin Stjernholm  AC_EGREP_HEADER($1,$a,[ pike_cv_decl_$1=existent; break ])
b933a62002-10-03Henrik Grubbström (Grubba)  # Kludge for MacOS X. Retry with the traditional cpp... CPPFLAGS="$CPPFLAGS -traditional-cpp"
63a0f72003-01-27Martin Stjernholm  AC_EGREP_HEADER($1,$a,[ pike_cv_decl_$1=existent; break ])
b933a62002-10-03Henrik Grubbström (Grubba)  CPPFLAGS="$OLD_CPPFLAGS"
5267b71995-08-09Fredrik Hübinette (Hubbe)  done
9b62872002-10-03Henrik Grubbström (Grubba)  CPPFLAGS="$OLD_CPPFLAGS"
5267b71995-08-09Fredrik Hübinette (Hubbe)  ])
06983f1996-09-22Fredrik Hübinette (Hubbe)  AC_MSG_RESULT($pike_cv_decl_$1)
63a0f72003-01-27Martin Stjernholm  if test "$pike_cv_decl_$1" = nonexistent -o "$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)
12368a2003-04-30Henrik Grubbström (Grubba) MY_CHECK_HEADERS(getpeername,sys/socket.h sys/socketvar.h sys/socketio.h winsock.h winsock2.h ws2tcpip.h)
5267b71995-08-09Fredrik Hübinette (Hubbe) MY_CHECK_HEADERS(popen,stdio.h unistd.h) MY_CHECK_HEADERS(getenv,unistd.h stdlib.h)
12368a2003-04-30Henrik Grubbström (Grubba) MY_CHECK_HEADERS(gethostname,unistd.h netdb.h winsock.h winsock2.h ws2tcpip.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) 
4499d52003-03-06Henrik Grubbström (Grubba) if test "x$ac_cv_func_ptrace" = "xyes"; then AC_MSG_CHECKING(no of arguments to ptrace) AC_CACHE_VAL(pike_cv_ptrace_takes_four_args, [ AC_TRY_COMPILE([ #ifdef HAVE_UNISTD_H #include <unistd.h> #endif /* HAVE_UNISTD_H */ #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif /* HAVE_SYS_TYPES_H */ #ifdef HAVE_SYS_PTRACE_H #include <sys/ptrace.h> #endif /* HAVE_SYS_PTRACE_H */ ],[
d574b82003-03-27Henrik Grubbström (Grubba)  ptrace(0,0,0,0);
4499d52003-03-06Henrik Grubbström (Grubba)  ],pike_cv_ptrace_takes_four_args=yes,pike_cv_ptrace_takes_four_args=no) ]) if test "$pike_cv_ptrace_takes_four_args" = yes; then AC_MSG_RESULT(4) AC_DEFINE(PTRACE_TAKES_FOUR_ARGS) else AC_MSG_RESULT(5) fi
d574b82003-03-27Henrik Grubbström (Grubba)  AC_MSG_CHECKING([type of argument 3 (addr) to ptrace]) AC_CACHE_VAL(pike_cv_ptrace_addr_type, [ AC_TRY_COMPILE([ #ifdef HAVE_UNISTD_H #include <unistd.h> #endif /* HAVE_UNISTD_H */ #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif /* HAVE_SYS_TYPES_H */ #ifdef HAVE_SYS_PTRACE_H #include <sys/ptrace.h> #endif /* HAVE_SYS_PTRACE_H */ ],[ #ifdef PTRACE_TAKES_FOUR_ARGS ptrace(0,0,(void *)0,0); #else ptrace(0,0,(void *)0,0,0); #endif ],pike_cv_ptrace_addr_type=pointer,pike_cv_ptrace_addr_type=integer) ]) if test "$pike_cv_ptrace_addr_type" = pointer; then AC_MSG_RESULT(pointer) AC_DEFINE(PTRACE_ADDR_TYPE_IS_POINTER) else AC_MSG_RESULT([integer (SVID)]) fi
4499d52003-03-06Henrik Grubbström (Grubba) fi
07513e1996-10-04Fredrik 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 ], [
0a86982003-11-07Martin Stjernholm  AC_MSG_WARN([Defaulting to down.])
6b15b72001-01-19Henrik Grubbström (Grubba)  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
d7be5b1997-01-28Fredrik Hübinette (Hubbe) ########################################################################
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) [
c6f4a82002-01-27Martin Stjernholm if test "x$enable_binary" = "xno"; then pike_cv_hardware_byteorder=0 else
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
c6f4a82002-01-27Martin Stjernholm ) fi ])
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) 
07513e1996-10-04Fredrik Hübinette (Hubbe) ########################################################################
6a36472000-12-19Marcus Comstedt 
b2d7f32003-10-30Henrik Grubbström (Grubba) AC_MSG_CHECKING(pointer alignment)
6a36472000-12-19Marcus Comstedt AC_CACHE_VAL(pike_cv_hardware_alignment, [
c6f4a82002-01-27Martin Stjernholm if test "x$enable_binary" = "xno"; then pike_cv_hardware_alignment=4 else
6a36472000-12-19Marcus Comstedt AC_TRY_RUN([ #include <stdio.h>
b2d7f32003-10-30Henrik Grubbström (Grubba) struct x { char a; void *b; };
6a36472000-12-19Marcus Comstedt 
b2d7f32003-10-30Henrik Grubbström (Grubba) struct y { void *a; char b; };
6a36472000-12-19Marcus Comstedt  int main(int argc, char *argv[]) {
b2d7f32003-10-30Henrik Grubbström (Grubba)  FILE *f; int align = (int)&(((struct x *)0)->b); if (align > sizeof(struct y)-sizeof(void *)) align = sizeof(struct y) - sizeof(void *);
6a36472000-12-19Marcus Comstedt  if(!(f=fopen("conftest.out.2","w"))) return 1;
b2d7f32003-10-30Henrik Grubbström (Grubba)  fprintf(f, "%d\n", align);
6a36472000-12-19Marcus Comstedt  fclose(f); return 0; }], pike_cv_hardware_alignment=`cat conftest.out.2`, pike_cv_hardware_alignment=4, pike_cv_hardware_alignment=4
c6f4a82002-01-27Martin Stjernholm ) fi ])
6a36472000-12-19Marcus Comstedt  AC_MSG_RESULT($pike_cv_hardware_alignment)
b2d7f32003-10-30Henrik Grubbström (Grubba) AC_DEFINE_UNQUOTED(PIKE_POINTER_ALIGNMENT,$pike_cv_hardware_alignment)
6a36472000-12-19Marcus Comstedt 
ef6d662002-04-07Martin Stjernholm ############################################################################# ## Check if we should default to --with-machine-code ############################################################################# if test "$with_machine_code" = "no"; then :; else AC_MSG_CHECKING(machine code architecture) AC_CACHE_VAL(pike_cv_machine_code_arch, [ pike_cv_machine_code_arch=unknown AC_TRY_COMPILE([
cfef2d2003-07-28Martin Stjernholm #if defined(__GNUC__)
ef6d662002-04-07Martin Stjernholm #if !defined(__i386__) && !defined(__i386) #error Not ia32 architecture #endif
cfef2d2003-07-28Martin Stjernholm #elif defined(_MSC_VER) #if !defined(_M_IX86) #error Not ia32 architecture #endif #else #error Unsupported compiler #endif
ef6d662002-04-07Martin Stjernholm  ], [], [pike_cv_machine_code_arch=ia32], []) AC_TRY_COMPILE([
cfef2d2003-07-28Martin Stjernholm #if defined(__GNUC__)
ef6d662002-04-07Martin Stjernholm #if !defined(sparc) && !defined(__sparc__) && !defined(__sparc) #error Not sparc architecture #endif
cfef2d2003-07-28Martin Stjernholm #else #error Unsupported compiler #endif
ef6d662002-04-07Martin Stjernholm  ], [], [pike_cv_machine_code_arch=sparc], []) AC_TRY_COMPILE([
cfef2d2003-07-28Martin Stjernholm #if defined(__GNUC__)
3205832002-04-08Marcus Comstedt #if !defined(__ppc__) && !defined(__powerpc__) && !defined(_POWER)
ef6d662002-04-07Martin Stjernholm #error Not ppc32 architecture #endif
cfef2d2003-07-28Martin Stjernholm #else #error Unsupported compiler #endif
ef6d662002-04-07Martin Stjernholm  ], [], [pike_cv_machine_code_arch=ppc32], []) ]) AC_MSG_RESULT($pike_cv_machine_code_arch) if test "x$pike_cv_machine_code_arch" = xunknown ; then with_machine_code="no" else with_machine_code="yes" AC_DEFINE(PIKE_USE_MACHINE_CODE) fi fi
6a36472000-12-19Marcus Comstedt ########################################################################
7a64042001-08-15Marcus Comstedt  if test yes = "$with_machine_code"; then AC_MSG_CHECKING(register name convention) AC_CACHE_VAL(pike_cv_cpu_reg_prefix, [ for pike_cv_cpu_reg_prefix in "default" "" "r" "%%" "%%r" "unknown"; do AC_TRY_COMPILE([ #define REGPREFIX "$pike_cv_cpu_reg_prefix" ], [
3205832002-04-08Marcus Comstedt #if defined(__ppc__) || defined(__powerpc__) || defined(_POWER)
7a64042001-08-15Marcus Comstedt  __asm__ __volatile__(" li "REGPREFIX"11,1"); #else
a924142002-11-18Henrik Grubbström (Grubba)  ; /* Do not need to find out */
7a64042001-08-15Marcus Comstedt #endif ],[break]) done ]) case "$pike_cv_cpu_reg_prefix" in default|unknown) AC_MSG_RESULT($pike_cv_cpu_reg_prefix);; *) AC_MSG_RESULT(${pike_cv_cpu_reg_prefix}0) AC_DEFINE_UNQUOTED(PIKE_CPU_REG_PREFIX,"$pike_cv_cpu_reg_prefix");; esac else :; fi ########################################################################
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)  ########################################################################
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) ])
4bcc441998-07-22Fredrik 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); ]) ########################################################################
5d4cf62004-01-12Marcus Comstedt MY_CHECK_FUNCTION(isunordered, [ #include <math.h> #ifdef HAVE_FLOATINGPOINT_H #include <floatingpoint.h> #endif #ifdef HAVE_IEEEFP_H #include <ieeefp.h> #endif ], [ int t = isunordered(0.0, 0.0); exit(0); ]) ########################################################################
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, [
25e4742002-10-13Xavier Beaudouin #ifdef HAVE_WINDOWS_H
9649491998-02-27Fredrik Hübinette (Hubbe) #include <windows.h>
25e4742002-10-13Xavier Beaudouin #endif #ifdef HAVE_WINBASE_H
9649491998-02-27Fredrik Hübinette (Hubbe) #include <winbase.h>
25e4742002-10-13Xavier Beaudouin #endif
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
f1a4ce2003-04-30Henrik Grubbström (Grubba) #ifdef HAVE_WINSOCK2_H #include <winsock2.h> #elif defined(HAVE_WINSOCK_H)
9649491998-02-27Fredrik Hübinette (Hubbe) #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 */
5a469f2001-04-20Henrik Grubbström (Grubba) #ifdef HAVE_STDLIB_H #include <stdlib.h> #endif /* HAVE_STDLIB_H */
c4dc222000-11-25Henrik Grubbström (Grubba) #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) {
1bc8c32001-04-17Henrik Grubbström (Grubba)  return (struct pike_string *)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);
1bc8c32001-04-17Henrik Grubbström (Grubba)  fprintf(stderr, "1\n");
c4dc222000-11-25Henrik Grubbström (Grubba)  if(strcmp(foo,"bbbbbaaaaa")) { exit(1); }
5341702000-08-28Henrik Grubbström (Grubba)  memset(foo, 0, 6);
1bc8c32001-04-17Henrik Grubbström (Grubba)  fprintf(stderr, "2\n");
5341702000-08-28Henrik Grubbström (Grubba)  for (i=6; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (foo[i]) { exit(1); }
5341702000-08-28Henrik Grubbström (Grubba)  }
08d51f2000-08-28Henrik Grubbström (Grubba)  memset(foo+1, 1, 6);
1bc8c32001-04-17Henrik Grubbström (Grubba)  fprintf(stderr, "3\n");
08d51f2000-08-28Henrik Grubbström (Grubba)  for (i=6; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (foo[i+1] != 1) { exit(1); }
08d51f2000-08-28Henrik Grubbström (Grubba)  } memset(foo+2, 0, 6);
1bc8c32001-04-17Henrik Grubbström (Grubba)  fprintf(stderr, "4\n");
08d51f2000-08-28Henrik Grubbström (Grubba)  for (i=6; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (foo[i+2]) { exit(1); }
08d51f2000-08-28Henrik Grubbström (Grubba)  } memset(foo+3, 1, 6);
1bc8c32001-04-17Henrik Grubbström (Grubba)  fprintf(stderr, "5\n");
08d51f2000-08-28Henrik Grubbström (Grubba)  for (i=6; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (foo[i+3] != 1) { exit(1); }
08d51f2000-08-28Henrik Grubbström (Grubba)  }
d21a452000-08-28Henrik Grubbström (Grubba)  memset(foo+4, 0, 6);
1bc8c32001-04-17Henrik Grubbström (Grubba)  fprintf(stderr, "6\n");
d21a452000-08-28Henrik Grubbström (Grubba)  for (i=6; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (foo[i+4]) { exit(1); }
d21a452000-08-28Henrik Grubbström (Grubba)  } memset(foo+5, 1, 6);
1bc8c32001-04-17Henrik Grubbström (Grubba)  fprintf(stderr, "7\n");
d21a452000-08-28Henrik Grubbström (Grubba)  for (i=6; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (foo[i+5] != 1) { exit(1); }
d21a452000-08-28Henrik Grubbström (Grubba)  } memset(foo+6, 0, 6);
1bc8c32001-04-17Henrik Grubbström (Grubba)  fprintf(stderr, "8\n");
d21a452000-08-28Henrik Grubbström (Grubba)  for (i=6; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (foo[i+6]) { exit(1); }
d21a452000-08-28Henrik Grubbström (Grubba)  } memset(foo+7, 1, 6);
1bc8c32001-04-17Henrik Grubbström (Grubba)  fprintf(stderr, "9\n");
d21a452000-08-28Henrik Grubbström (Grubba)  for (i=6; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (foo[i+7] != 1) { exit(1); }
d21a452000-08-28Henrik Grubbström (Grubba)  }
0e85fb2000-08-28Henrik Grubbström (Grubba)  len = 6; str = begin_shared_string(len);
1bc8c32001-04-17Henrik Grubbström (Grubba)  fprintf(stderr, "string start\n");
0e85fb2000-08-28Henrik Grubbström (Grubba)  if (!str) exit(1); for (i=len; i--;) { str->str[i] = ~0; }
c4dc222000-11-25Henrik Grubbström (Grubba)  memset(str->str, 0, len);
1bc8c32001-04-17Henrik Grubbström (Grubba)  fprintf(stderr, "string end\n");
0e85fb2000-08-28Henrik Grubbström (Grubba)  for (i = len; i--;) {
c4dc222000-11-25Henrik Grubbström (Grubba)  if (str->str[i]) { 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
d300821998-02-27Marcus Comstedt #############################################################################
4d036d2002-12-11Mirar (Pontus Hagland) AC_ARG_WITH(copt, MY_DESCR([--without-mmx], [disable MMX usage]), [], [with_mmx=])
ec29312001-03-19Mirar (Pontus Hagland) mmx_reason=' (no mmx.h found)'
4d036d2002-12-11Mirar (Pontus Hagland) if test "x$with_mmx" = xno; then mmx_reason=' (--without-mmx)' unset pike_cv_sys_has_working_mmx else
0e30572003-10-25Martin Nilsson if test "x$ac_cv_header_mmx_h" = xyes -o "x$ac_cv_header_asm_mmx_h" = xyes; then
27da5c1999-09-23Fredrik Noring  AC_MSG_CHECKING(for working MMX)
ec29312001-03-19Mirar (Pontus Hagland)  mmx_reason=' (mmx.h found, but mmx operations failed)'
9debfa1999-08-11Fredrik Hübinette (Hubbe) 
c724c41999-08-12Henrik Grubbström (Grubba)  AC_CACHE_VAL(pike_cv_sys_has_working_mmx, [ AC_TRY_LINK([
ec29312001-03-19Mirar (Pontus Hagland) #ifdef HAVE_MMX_H
9debfa1999-08-11Fredrik Hübinette (Hubbe) #include <mmx.h>
ec29312001-03-19Mirar (Pontus Hagland) #endif
895ced2003-10-25Martin Nilsson #ifdef HAVE_ASM_MMX_H #include <asm/mmx.h> #endif
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)  }
ec29312001-03-19Mirar (Pontus Hagland)  ],pike_cv_sys_has_working_mmx=yes,pike_cv_sys_has_working_mmx=no)
c724c41999-08-12Henrik Grubbström (Grubba)  ])
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)
ec29312001-03-19Mirar (Pontus Hagland)  mmx_reason=''
e8f42f1999-08-12Henrik Grubbström (Grubba)  else :; fi
4d036d2002-12-11Mirar (Pontus Hagland)  if test "x$with_copt" = "xno"; then PIKE_MSG_WARN([--without-mmx is advisable when using --without-copt.]) fi
e8f42f1999-08-12Henrik Grubbström (Grubba) else :; fi
4d036d2002-12-11Mirar (Pontus Hagland) 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
0a86982003-11-07Martin Stjernholm  AC_MSG_WARN([Object file not found - using default.])
32cf262000-08-20Henrik Grubbström (Grubba)  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
0a86982003-11-07Martin Stjernholm  AC_MSG_WARN([Object file not found - using default.])
32cf262000-08-20Henrik Grubbström (Grubba)  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
450e9d2001-05-08Henrik Grubbström (Grubba) VOLATILE sig_atomic_t sigrun[2]= { 0, 0 };
6077101999-05-15Henrik Grubbström (Grubba) RETSIGTYPE func(int sig) { write(2, "func called\n", sizeof("func called\n") - sizeof(""));
450e9d2001-05-08Henrik Grubbström (Grubba)  sigrun[0] = -1;
6077101999-05-15Henrik Grubbström (Grubba) }
93b8081995-11-02Fredrik Hübinette (Hubbe)  int main() { #define sig SIGSEGV #ifdef HAVE_SIGACTION {
fb140c2002-04-07Marcus Comstedt  static struct sigaction action;
93b8081995-11-02Fredrik Hübinette (Hubbe)  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 {
fb140c2002-04-07Marcus Comstedt  static struct sigvec action;
93b8081995-11-02Fredrik Hübinette (Hubbe)  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
3ce0912003-10-10Henrik Grubbström (Grubba)  struct pollfd sentinel; while(!strlen((char *)sigrun)) poll(&sentinel,0,100);
a3c9a72000-10-13Fredrik Hübinette (Hubbe) #else
450e9d2001-05-08Henrik Grubbström (Grubba)  while(!strlen((char *)sigrun)) sleep(1);
a3c9a72000-10-13Fredrik Hübinette (Hubbe) #endif
450e9d2001-05-08Henrik Grubbström (Grubba)  sigrun[0]=0;
93b8081995-11-02Fredrik Hübinette (Hubbe)  kill(getpid(), sig);
a3c9a72000-10-13Fredrik Hübinette (Hubbe) #ifdef HAVE_POLL
3ce0912003-10-10Henrik Grubbström (Grubba)  while(!strlen((char *)sigrun)) poll(&sentinel,0,100);
a3c9a72000-10-13Fredrik Hübinette (Hubbe) #else
450e9d2001-05-08Henrik Grubbström (Grubba)  while(!strlen((char *)sigrun)) sleep(1);
a3c9a72000-10-13Fredrik Hübinette (Hubbe) #endif
450e9d2001-05-08Henrik Grubbström (Grubba)  sigrun[0]=0;
93b8081995-11-02Fredrik Hübinette (Hubbe)  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) [
c6f4a82002-01-27Martin Stjernholm if test "x$enable_binary" = "xno"; then pike_cv_max_open_fd=256 else
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
c6f4a82002-01-27Martin Stjernholm ) fi ])
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
94cf721998-07-11Henrik Grubbström (Grubba) #############################################################################
7e2ee22001-07-08Henrik Grubbström (Grubba)  if test "x$with_computed_goto" = "xyes"; then AC_MSG_CHECKING(for gcc-style computed goto) AC_CACHE_VAL(pike_cv_gcc_computed_goto, [ AC_TRY_COMPILE([], [ void *skip = &&label; goto *skip; return 1; label: return 0; ], [ pike_cv_gcc_computed_goto=yes ], [ pike_cv_gcc_computed_goto=no ])
0341d02001-07-08Henrik Grubbström (Grubba)  ])
cf99452001-07-08Henrik Grubbström (Grubba)  AC_MSG_RESULT($pike_cv_gcc_computed_goto)
7e2ee22001-07-08Henrik Grubbström (Grubba)  if test "x$pike_cv_gcc_computed_goto" = "xyes"; then
b7890d2002-12-11Mirar (Pontus Hagland)  PIKE_MSG_WARN([Enabling computed goto (EXPERIMENTAL).])
7e2ee22001-07-08Henrik Grubbström (Grubba)  AC_DEFINE(HAVE_COMPUTED_GOTO) else :; fi else :; fi #############################################################################
ef6d662002-04-07Martin Stjernholm  if test "$with_machine_code" = "yes" ; then
9762e02002-04-17Martin Stjernholm  AC_DEFINE_UNQUOTED(PIKE_BYTECODE_METHOD, [[PIKE_BYTECODE_`echo $pike_cv_machine_code_arch | tr '[a-z]' '[A-Z]'`]])
91d3b12002-04-07Martin Stjernholm  byte_code_format=$pike_cv_machine_code_arch
ef6d662002-04-07Martin Stjernholm elif test "x$pike_cv_gcc_computed_goto" = "xyes"; then AC_DEFINE(PIKE_BYTECODE_METHOD, PIKE_BYTECODE_GOTO)
91d3b12002-04-07Martin Stjernholm  byte_code_format="computed goto"
ef6d662002-04-07Martin Stjernholm else AC_DEFINE(PIKE_BYTECODE_METHOD, PIKE_BYTECODE_DEFAULT)
91d3b12002-04-07Martin Stjernholm  byte_code_format="virtual machine"
ef6d662002-04-07Martin Stjernholm fi #############################################################################
3711761998-05-18Henrik Grubbström (Grubba) 
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)
9b62872002-10-03Henrik Grubbström (Grubba) else # NOTE: Avoid using __attribute__ if __declspec is available. # This is a kludge to descrease the number of warnings # on ecc. AC_MSG_CHECKING(for gcc function attributes) AC_CACHE_VAL(pike_cv_gcc_attributes, [ 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); } int main() { exit(0); } ], pike_cv_gcc_attributes=yes, pike_cv_gcc_attributes=no, [ echo $ac_n "crosscompiling... $ac_c" 1>&6 AC_TRY_LINK([ #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); } ], [ exit(0); ], pike_cv_gcc_attributes=yes, pike_cv_gcc_attributes=no) ]) ]) AC_MSG_RESULT($pike_cv_gcc_attributes) if test "$pike_cv_gcc_attributes" = yes; then AC_DEFINE(HAVE_FUNCTION_ATTRIBUTES) fi
f968662000-08-21Henrik Grubbström (Grubba) fi
46a4ce2004-11-09Henrik Grubbström (Grubba) AC_MSG_CHECKING(if va_list is a state pointer) AC_CACHE_VAL(pike_cv_va_list_is_state_ptr, [ AC_TRY_RUN([ #include <stdarg.h> void bar(va_list args) { va_arg(args, int); } int foo(int a, ...) { va_list args; va_start(args, a); bar(args); a = va_arg(args, int); va_end(args); return a; } int main() { return foo(2, 1, 0); } ], pike_cv_va_list_is_state_ptr=yes, pike_cv_va_list_is_state_ptr=no, # FIXME: pike_cv_va_list_is_state_ptr=unknown ) ]) if test "$pike_cv_va_list_is_state_ptr" = "yes"; then AC_MSG_RESULT(yes) AC_DEFINE(VA_LIST_IS_STATE_PTR) elif test "$pike_cv_va_list_is_state_ptr" = "unknown"; then # FIXME: "no" works on most stuff except gcc/x86_64. AC_MSG_RESULT(unknown -- assume no) else AC_MSG_RESULT(no) 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"
1ac5c02002-09-02Henrik Grubbström (Grubba)  pike_cv_sys_bad_signal_handling=""
a09e4f2001-01-21Henrik Grubbström (Grubba)  pike_cv_sys_nonblock=UNKNOWN
80f6262002-08-13Henrik Grubbström (Grubba)  # USE_FCNTL_O_NONBLOCK seems to be the most common, so let's start # with it. for method in USE_FCNTL_O_NONBLOCK USE_FCNTL_FNDELAY USE_FCNTL_O_NDELAY \
a09e4f2001-01-21Henrik Grubbström (Grubba)  USE_IOCTL_FIONBIO USE_IOCTLSOCKET_FIONBIO; do # Make sure we can run configure in a separate directory, # and set the method to try.
ed616b2003-02-08Martin Stjernholm  CPPFLAGS="$OCPPFLAGS -D$method"
a09e4f2001-01-21Henrik Grubbström (Grubba)  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
1ac5c02002-09-02Henrik Grubbström (Grubba)  if test "$pike_cv_sys_nonblock" = "UNKNOWN"; then # Some OS's don't like signals in combination with threads. # Try compiling half the test... # USE_FCNTL_O_NONBLOCK seems to be the most common, so let's start # with it. for method in USE_FCNTL_O_NONBLOCK USE_FCNTL_FNDELAY USE_FCNTL_O_NDELAY \ USE_IOCTL_FIONBIO USE_IOCTLSOCKET_FIONBIO; do # Make sure we can run configure in a separate directory, # and set the method to try.
ed616b2003-02-08Martin Stjernholm  CPPFLAGS="$OCPPFLAGS -D$method -DSHORT_TEST"
1ac5c02002-09-02Henrik Grubbström (Grubba)  AC_TRY_RUN([ #define TESTING #include "fd_control.c" ], [ pike_cv_sys_bad_signal_handling=" (signal handling failed)" pike_cv_sys_nonblock=$method break; ], [], [
be5d892002-09-03Henrik Grubbström (Grubba)  :; # Not meaningful.
1ac5c02002-09-02Henrik Grubbström (Grubba)  ]) done else :; fi
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)
6c84372002-09-03Henrik Grubbström (Grubba)  if test "${pike_cv_sys_os}" = "Windows_NT"; then :; else config_fail="No way to set nonblocking I/O" fi
5267b71995-08-09Fredrik Hübinette (Hubbe) else
1ac5c02002-09-02Henrik Grubbström (Grubba)  AC_MSG_RESULT($pike_cv_sys_nonblock$pike_cv_sys_bad_signal_handling)
06983f1996-09-22Fredrik Hübinette (Hubbe)  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,[
c6f4a82002-01-27Martin Stjernholm if test "x$enable_binary" = "xno"; then pike_cv_system_oob_working=WORKING else
29c1832001-02-02Fredrik Hübinette (Hubbe)  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) rm conftest.out.2 >/dev/null 2>/dev/null || :
c6f4a82002-01-27Martin Stjernholm fi
29c1832001-02-02Fredrik Hübinette (Hubbe) ]) 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
18099a2001-03-04Mirar (Pontus Hagland)  #######################################################################
3c6eaa2002-04-12Martin Stjernholm MY_AC_CHECK_PRINTF_INT_TYPE(size_t,
e80e622003-02-20Martin Stjernholm  "z" "" "l" "ll" "L", "",
3c6eaa2002-04-12Martin Stjernholm  PRINTSIZET, [%${res}u, %${res}x]) MY_AC_CHECK_PRINTF_INT_TYPE(ptrdiff_t,
e80e622003-02-20Martin Stjernholm  "t" "" "l" "ll" "L", "",
3c6eaa2002-04-12Martin Stjernholm  PRINTPTRDIFFT, [%${res}d, %${res}x])
fcb4c12003-02-14Martin Stjernholm MY_AC_CHECK_PRINTF_INT_TYPE(INT64,
5ce0022003-04-01Martin Stjernholm  "" "l" "ll" "I64" "L", "l",
fcb4c12003-02-14Martin Stjernholm  PRINTINT64, [%${res}d, %${res}x])
18099a2001-03-04Mirar (Pontus Hagland) 
29c1832001-02-02Fredrik Hübinette (Hubbe) #######################################################################
7b39411997-02-06Fredrik Hübinette (Hubbe) 
2fbeae2001-07-01Martin Stjernholm AC_MSG_CHECKING(if union initialization works) AC_CACHE_VAL(pike_cv_have_union_init, [
4046ee2001-07-20Martin Stjernholm  AC_TRY_RUN([ struct foo {int a;}; struct bar {char b[2];};
2fbeae2001-07-01Martin Stjernholm  union anything {
21a6252001-07-20Martin Stjernholm  struct foo foo; struct bar bar;
2fbeae2001-07-01Martin Stjernholm  }; struct svalue { unsigned type; unsigned subtype; union anything u; };
4046ee2001-07-20Martin Stjernholm  struct svalue my_svalue = {0, 0, {{4711}}}; int main() { return !(my_svalue.u.foo.a == 4711); } ], pike_cv_have_union_init=yes, pike_cv_have_union_init=no, pike_cv_have_union_init=no)])
2fbeae2001-07-01Martin Stjernholm AC_MSG_RESULT($pike_cv_have_union_init) if test "$pike_cv_have_union_init" = yes; then AC_DEFINE(HAVE_UNION_INIT) fi #######################################################################
83b1842003-02-08Martin Stjernholm AC_MSG_CHECKING(if cpu time is thread local) AC_CACHE_VAL(pike_cv_thread_local_cpu_time, [
025dd32003-02-11Martin Stjernholm  rm -f confdefs.out.2 2>/dev/null
83b1842003-02-08Martin Stjernholm  AC_TRY_RUN([ #include <stdio.h>
d0b4612003-08-06Henrik Grubbström (Grubba) /* libc_r:fputs on AIX 4.2 is broken. */ #define FPUTS(S, F) fwrite(S, sizeof(S)-sizeof(""), 1, F)
83b1842003-02-08Martin Stjernholm #ifdef PIKE_THREADS
2e1ca42003-05-09Henrik Grubbström (Grubba) #ifndef TOSTR #define TOSTR(X) #X #endif #ifndef DEFINETOSTR #define DEFINETOSTR(X) TOSTR(X) #endif
83b1842003-02-08Martin Stjernholm #define CONFIGURE_TEST
2913ba2003-02-11Martin Stjernholm #include "port.c"
83b1842003-02-08Martin Stjernholm #include "rusage.c" #include "threads.c" PIKE_MUTEX_T m; COND_T c; cpu_time_t work_time, wait_time; TH_RETURN_TYPE work_thread (void *dummy) {
0cf33b2003-08-04Martin Stjernholm  struct timeval rt_start, rt;
83b1842003-02-08Martin Stjernholm  cpu_time_t start;
e2172a2003-10-03Henrik Grubbström (Grubba)  FPUTS("work_thread waiting.\n", stderr);
83b1842003-02-08Martin Stjernholm  mt_lock (&m);
e2172a2003-10-03Henrik Grubbström (Grubba)  FPUTS("work_thread start.\n", stderr);
0cf33b2003-08-04Martin Stjernholm  GETTIMEOFDAY (&rt_start);
83b1842003-02-08Martin Stjernholm  start = get_cpu_time();
9d2b702003-02-09Martin Stjernholm  do { cpu_time_t t = get_cpu_time();
0cf33b2003-08-04Martin Stjernholm  GETTIMEOFDAY (&rt);
9d2b702003-02-09Martin Stjernholm  if (t == (cpu_time_t) -1) { work_time = t; break; } work_time = t - start;
0cf33b2003-08-04Martin Stjernholm  } while (work_time < (CPU_TIME_TICKS / 10) && rt.tv_sec <= rt_start.tv_sec + 1);
e2172a2003-10-03Henrik Grubbström (Grubba)  FPUTS("work_thread releasing main.\n", stderr);
83b1842003-02-08Martin Stjernholm  co_signal (&c); mt_unlock (&m);
e2172a2003-10-03Henrik Grubbström (Grubba)  FPUTS("work_thread done.\n", stderr);
5ce0022003-04-01Martin Stjernholm  return 0;
83b1842003-02-08Martin Stjernholm } int main() { cpu_time_t start; THREAD_T worker;
025dd32003-02-11Martin Stjernholm  FILE *res = fopen ("confdefs.out.2", "w"); /* weird name to circumvent configure cleanups */
83b1842003-02-08Martin Stjernholm  if (!res) return 2; really_low_th_init(); mt_init (&m); co_init (&c); mt_lock (&m);
e2172a2003-10-03Henrik Grubbström (Grubba)  FPUTS("Creating work_thread.\n", stderr);
83b1842003-02-08Martin Stjernholm  if (th_create (&worker, work_thread, NULL)) {
d0b4612003-08-06Henrik Grubbström (Grubba)  FPUTS("unknown (failed to create thread)", res);
83b1842003-02-08Martin Stjernholm  fclose (res);
c5e1732003-02-08Martin Stjernholm  return 3;
83b1842003-02-08Martin Stjernholm  }
9d2b702003-02-09Martin Stjernholm 
83b1842003-02-08Martin Stjernholm  start = get_cpu_time(); co_wait (&c, &m); wait_time = get_cpu_time() - start;
9d2b702003-02-09Martin Stjernholm  if (start == (cpu_time_t) -1 || work_time == (cpu_time_t) -1) {
7199a72004-10-21Henrik Grubbström (Grubba)  FPUTS("unknown (get_cpu_time does not work)", res);
83b1842003-02-08Martin Stjernholm  fclose (res);
c5e1732003-02-08Martin Stjernholm  return 4;
83b1842003-02-08Martin Stjernholm  }
2913ba2003-02-11Martin Stjernholm  if (work_time < (CPU_TIME_TICKS / 10)) {
7199a72004-10-21Henrik Grubbström (Grubba)  fprintf (res, "unknown (get_cpu_time does not work - loop took only %ld ms)",
811b8f2003-02-12Martin Stjernholm  (long) (work_time / (CPU_TIME_TICKS / 1000)));
2913ba2003-02-11Martin Stjernholm  fclose (res); return 5; }
83b1842003-02-08Martin Stjernholm  if (work_time > wait_time)
d0b4612003-08-06Henrik Grubbström (Grubba)  return 0; /* It is thread local. */
83b1842003-02-08Martin Stjernholm  else {
d0b4612003-08-06Henrik Grubbström (Grubba)  FPUTS("no", res);
83b1842003-02-08Martin Stjernholm  fclose (res);
d0b4612003-08-06Henrik Grubbström (Grubba)  return 1; /* It is not thread local. */
83b1842003-02-08Martin Stjernholm  } } #else int main() {
025dd32003-02-11Martin Stjernholm  FILE *res = fopen ("confdefs.out.2", "w"); /* weird name to circumvent configure cleanups */
2913ba2003-02-11Martin Stjernholm  if (!res) return 6;
d0b4612003-08-06Henrik Grubbström (Grubba)  FPUTS("no", res);
83b1842003-02-08Martin Stjernholm  fclose (res); return 1; } #endif ], [ pike_cv_thread_local_cpu_time=yes ], [
025dd32003-02-11Martin Stjernholm  if test -f confdefs.out.2; then pike_cv_thread_local_cpu_time=`cat confdefs.out.2`
83b1842003-02-08Martin Stjernholm  else
0a86982003-11-07Martin Stjernholm  AC_MSG_WARN([Test failed to compile. Problems in port.c, rusage.c or threads.c with CONFIGURE_TEST is defined?])
701c4d2003-04-02Martin Stjernholm  # Don't set pike_cv_thread_local_cpu_time here so that the # failure doesn't get cached. result="unknown (compilation failed)"
83b1842003-02-08Martin Stjernholm  fi ], [ pike_cv_thread_local_cpu_time="unknown (cross compilation)" ])
025dd32003-02-11Martin Stjernholm  rm -f confdefs.out.2 2>/dev/null
83b1842003-02-08Martin Stjernholm ])
701c4d2003-04-02Martin Stjernholm test x"$pike_cv_thread_local_cpu_time" != x && result="$pike_cv_thread_local_cpu_time" AC_MSG_RESULT($result)
83b1842003-02-08Martin Stjernholm if test "$pike_cv_thread_local_cpu_time" = yes; then
9699fc2003-02-10Martin Stjernholm  AC_DEFINE(CPU_TIME_IS_THREAD_LOCAL, PIKE_YES)
83b1842003-02-08Martin Stjernholm elif test "$pike_cv_thread_local_cpu_time" = no; then
9699fc2003-02-10Martin Stjernholm  AC_DEFINE(CPU_TIME_IS_THREAD_LOCAL, PIKE_NO)
83b1842003-02-08Martin Stjernholm else
9699fc2003-02-10Martin Stjernholm  AC_DEFINE(CPU_TIME_IS_THREAD_LOCAL, PIKE_UNKNOWN)
83b1842003-02-08Martin Stjernholm fi #######################################################################
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