Forked from
Glasgow Haskell Compiler / GHC
59092 commits behind the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
configure.in 30.51 KiB
dnl == autoconf source for the Glasgow FP tools ==
dnl (run "grep '^dnl \*' configure.in | sed -e 's/dnl / /g; s/\*\*/ +/g;'"
dnl (or some such) to see the outline of this file)
dnl
#
# (c) The AQUA Project, Glasgow University, 1994-1998
#
# Configure script template for the Glasgow functional programming tools
#
# Process with 'autoconf' to get a working configure script.
#
# For the generated configure script, do "./configure --help" to
# see what flags are available. (Better yet, read the documentation!)
#
# First off, a distrib sanity check..
AC_INIT(mk/config.mk.in)
dnl * Declare subdirectories that have a private configure script
dnl
dnl After the toplevel configuration is complete, the script will recurse into
dnl these subdirectories (the use of cache values makes repeated checks cheap)
dnl (We probably have to add hslibs/{OpenGL,GLUT} here later...)
AC_CONFIG_SUBDIRS(ghc)
# -------------------------------------------------------------------------
# Prepare to generate the following header files
#
#
AC_CONFIG_HEADER(mk/config.h)
# No, semi-sadly, we don't do `--srcdir'...
if test x"$srcdir" != 'x.' ; then
echo "This configuration does not support the \`--srcdir' option.."
exit 1
fi
#
# Remove common automounter nonsense + convert from UNC to DOS style paths
# (UNC awareness isn't quite there yet for cygwin32-beta18 and consituent tools.)
#
hardtop=`pwd`
hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|' | sed 's|^/grasp_tmp|/local/grasp_tmp|' | sed 's|^//\(.\)/|\1:/|' `
echo ''
echo "*** The top of your build tree is: $hardtop"
# subst of hardtop is done below after we've computed hardtop_plat.
dnl--------------------------------------------------------------------
dnl * Choose host(/target/build) platform
dnl--------------------------------------------------------------------
dnl Guess host/target/build platform(s) if necessary.
AC_CANONICAL_SYSTEM
# "$host" defaults to "$target"
if test "x$host" = xNONE ; then
host=$target
fi
dnl ** canonicalize platform names
BuildPlatform=`/bin/sh $srcdir/config.sub $build` || exit 1
HostPlatform=`/bin/sh $srcdir/config.sub $host` || exit 1
TargetPlatform=`/bin/sh $srcdir/config.sub $target` || exit 1
if test x"$TargetPlatform" != x"$HostPlatform" ; then
echo "GHC configuration does not support differing host/target (i.e., cross-compiling)"
exit 1
fi
exeext=''
#
# The following will be more difficult when we *are* cross-compiling.
# Suitable names to slam in *_CPP are in platform.h.in.
# We also record the architecture, vendor, and operating system (OS)
# separately.
case $HostPlatform in
alpha*-dec-osf[[12]]*)
HostPlatform=alpha-dec-osf1 # canonicalise for our purposes
TargetPlatform=alpha-dec-osf1 # this will work for now... (hack)
BuildPlatform=alpha-dec-osf1 # hack
HostPlatform_CPP='alpha_dec_osf1'
HostArch_CPP='alpha'
HostVendor_CPP='dec'
HostOS_CPP='osf1'
;;
alpha*-dec-osf[[345]]*)
HostPlatform=alpha-dec-osf3 # canonicalise for our purposes
TargetPlatform=alpha-dec-osf3 # this will work for now... (hack)
BuildPlatform=alpha-dec-osf3 # hack
HostPlatform_CPP='alpha_dec_osf3'
HostArch_CPP='alpha'
HostVendor_CPP='dec'
HostOS_CPP='osf3'
;;
alpha*-unknown-linux)
HostPlatform=alpha-unknown-linux
TargetPlatform=alpha-unknown-linux
BuildPlatform=alpha-unknown-linux
HostPlatform_CPP='alpha_unknown_linux'
HostArch_CPP='alpha'
HostVendor_CPP='unknown'
HostOS_CPP='linux'
;;
alpha*-unknown-freebsd*)
HostPlatform=alpha-unknown-freebsd
TargetPlatform=alpha-unknown-freebsd
BuildPlatform=alpha-unknown-freebsd
HostPlatform_CPP='alpha_unknown_freebsd'
HostArch_CPP='alpha'
HostVendor_CPP='unknown'
HostOS_CPP='freebsd'
;;
hppa1.1-hp-hpux*)
HostPlatform=hppa1.1-hp-hpux # canonicalise for our purposes (hack)
TargetPlatform=hppa1.1-hp-hpux
BuildPlatform=hppa1.1-hp-hpux
HostPlatform_CPP='hppa1_1_hp_hpux'
HostArch_CPP='hppa1_1'
HostVendor_CPP='hp'
HostOS_CPP='hpux'
;;
i[[3456]]86-*-linuxaout*)
HostPlatform=i386-unknown-linuxaout # hack again
TargetPlatform=i386-unknown-linuxaout
BuildPlatform=i386-unknown-linuxaout
HostPlatform_CPP='i386_unknown_linuxaout'
HostArch_CPP='i386'
HostVendor_CPP='unknown'
HostOS_CPP='linuxaout'
;;
i[[3456]]86-*-linux*)
HostPlatform=i386-unknown-linux # hack again
TargetPlatform=i386-unknown-linux
BuildPlatform=i386-unknown-linux
HostPlatform_CPP='i386_unknown_linux'
HostArch_CPP='i386'
HostVendor_CPP='unknown'
HostOS_CPP='linux'
;;
i[[3456]]86-*-freebsd[[3-9]]*) # FreeBSD 3.0+ uses ELF
HostPlatform=i386-unknown-freebsd # hack again
TargetPlatform=i386-unknown-freebsd
BuildPlatform=i386-unknown-freebsd
HostPlatform_CPP='i386_unknown_freebsd'
HostArch_CPP='i386'
HostVendor_CPP='unknown'
HostOS_CPP='freebsd'
;;
i[[3456]]86-*-freebsd2*) # Older FreeBSDs are a.out
HostPlatform=i386-unknown-freebsd2 # hack again
TargetPlatform=i386-unknown-freebsd2
BuildPlatform=i386-unknown-freebsd2
HostPlatform_CPP='i386_unknown_freebsd2'
HostArch_CPP='i386'
HostVendor_CPP='unknown'
HostOS_CPP='freebsd2'
;;
i[[3456]]86-*-netbsd*)
HostPlatform=i386-unknown-netbsd # hack again
TargetPlatform=i386-unknown-netbsd
BuildPlatform=i386-unknown-netbsd
HostPlatform_CPP='i386_unknown_netbsd'
HostArch_CPP='i386'
HostVendor_CPP='unknown'
HostOS_CPP='netbsd'
;;
i[[3456]]86-*-openbsd*)
HostPlatform=i386-unknown-openbsd # hack again
TargetPlatform=i386-unknown-openbsd
BuildPlatform=i386-unknown-openbsd
HostPlatform_CPP='i386_unknown_openbsd'
HostArch_CPP='i386'
HostVendor_CPP='unknown'
HostOS_CPP='openbsd'
;;
i[[3456]]86-*-solaris2*)
HostPlatform=i386-unknown-solaris2 # hack again
TargetPlatform=i386-unknown-solaris2
BuildPlatform=i386-unknown-solaris2
HostPlatform_CPP='i386_unknown_solaris2'
HostArch_CPP='i386'
HostVendor_CPP='unknown'
HostOS_CPP='solaris2'
;;
i[[3456]]86-*-cygwin*)
HostPlatform=i386-unknown-cygwin32 # hack again
TargetPlatform=i386-unknown-cygwin32
BuildPlatform=i386-unknown-cygwin32
HostPlatform_CPP='i386_unknown_cygwin32'
HostArch_CPP='i386'
HostVendor_CPP='unknown'
HostOS_CPP='cygwin32'
exeext='.exe'
;;
i[[3456]]86-*-mingw32*)
HostPlatform=i386-unknown-mingw32 # hack again
TargetPlatform=i386-unknown-mingw32
BuildPlatform=i386-unknown-mingw32
HostPlatform_CPP='i386_unknown_mingw32'
HostArch_CPP='i386'
HostVendor_CPP='unknown'
HostOS_CPP='mingw32'
exeext='.exe'
;;
m68k-next-nextstep2)
HostPlatform_CPP='m68k_next_nextstep2'
HostArch_CPP='m68k'
HostVendor_CPP='next'
HostOS_CPP='nextstep2'
;;
m68k-next-nextstep3)
HostPlatform_CPP='m68k_next_nextstep3'
HostArch_CPP='m68k'
HostVendor_CPP='next'
HostOS_CPP='nextstep3'
;;
i[[3456]]86-next-nextstep3)
HostPlatform=i386-next-nextstep3 # hack again
TargetPlatform=i386-next-nextstep3
BuildPlatform=i386-next-nextstep3
HostPlatform_CPP='i386_next_nextstep3'
HostArch_CPP='i386'
HostVendor_CPP='next'
HostOS_CPP='nextstep3'
;;
m68k-sun-sunos4*)
HostPlatform=m68k-sun-sunos4
TargetPlatform=m68k-sun-sunos4 #hack
BuildPlatform=m68k-sun-sunos4 #hack
HostPlatform_CPP='m68k_sun_sunos4'
HostArch_CPP='m68k'
HostVendor_CPP='sun'
HostOS_CPP='sunos4'
;;
mips-dec-ultrix*)
HostPlatform_CPP='mips_dec_ultrix'
HostArch_CPP='mipsel' # NB a little different
HostVendor_CPP='dec'
HostOS_CPP='ultrix'
;;
mips-sgi-irix*)
HostPlatform=mips-sgi-irix
TargetPlatform=mips-sgi-irix #hack
BuildPlatform=mips-sgi-irix #hack
HostPlatform_CPP='mips_sgi_irix'
HostArch_CPP='mipseb' # NB a little different
HostVendor_CPP='sgi'
HostOS_CPP='irix'
;;
rs6000-ibm-aix*)
HostPlatform=rs6000-ibm-aix
TargetPlatform=rs6000-ibm-aix #hack
BuildPlatform=rs6000-ibm-aix #hack
HostPlatform_CPP='rs6000_ibm_aix'
HostArch_CPP='rs6000'
HostVendor_CPP='ibm'
HostOS_CPP='aix'
;;
powerpc-ibm-aix*)
HostPlatform=powerpc-ibm-aix
TargetPlatform=powerpc-ibm-aix #hack
BuildPlatform=powerpc-ibm-aix #hack
HostPlatform_CPP='powerpc_ibm_aix'
HostArch_CPP='powerpc'
HostVendor_CPP='ibm'
HostOS_CPP='aix'
;;
powerpc-apple-darwin*)
HostPlatform=powerpc-apple-darwin
TargetPlatform=powerpc-apple-darwin #hack
BuildPlatform=powerpc-apple-darwin #hack
HostPlatform_CPP='powerpc_apple_darwin'
HostArch_CPP='powerpc'
HostVendor_CPP='apple'
HostOS_CPP='darwin'
;;
sparc-sun-sunos4*)
HostPlatform=sparc-sun-sunos4
TargetPlatform=sparc-sun-sunos4 #hack
BuildPlatform=sparc-sun-sunos4 #hack
HostPlatform_CPP='sparc_sun_sunos4'
HostArch_CPP='sparc'
HostVendor_CPP='sun'
HostOS_CPP='sunos4'
;;
sparc-sun-solaris2*)
HostPlatform=sparc-sun-solaris2
TargetPlatform=sparc-sun-solaris2 #hack
BuildPlatform=sparc-sun-solaris2 #hack
HostPlatform_CPP='sparc_sun_solaris2'
HostArch_CPP='sparc'
HostVendor_CPP='sun'
HostOS_CPP='solaris2'
;;
*)
echo "Unrecognised platform: $HostPlatform"
exit 1
;;
esac
echo "Canonicalised to: $HostPlatform"
test x"$HostPlatform" != x"$TargetPlatform" && echo "Target platform set to $TargetPlatform"
test x"$BuildPlatform" != x"$HostPlatform" && echo "Build platform set to $BuildPlatform"
BuildPlatform_CPP=$HostPlatform_CPP
TargetPlatform_CPP=$HostPlatform_CPP
BuildArch_CPP=$HostArch_CPP
TargetArch_CPP=$HostArch_CPP
BuildOS_CPP=$HostOS_CPP
HostOS_Full=$host_os
TargetOS_CPP=$HostOS_CPP
BuildVendor_CPP=$HostVendor_CPP
TargetVendor_CPP=$HostVendor_CPP
dnl Cannot afford all these SUBSTs (because of braindead seds w/ 99 cmd limits)
dnl AC_SUBST(BuildPlatform)
AC_SUBST(HostPlatform)
AC_SUBST(TargetPlatform)
AC_SUBST(HostPlatform_CPP)
dnl AC_SUBST(BuildPlatform_CPP)
dnl AC_SUBST(TargetPlatform_CPP)
AC_SUBST(HostArch_CPP)
dnl AC_SUBST(BuildArch_CPP)
dnl AC_SUBST(TargetArch_CPP)
AC_SUBST(HostOS_CPP)
AC_SUBST(HostOS_Full)
dnl AC_SUBST(BuildOS_CPP)
dnl AC_SUBST(TargetOS_CPP)
AC_SUBST(HostVendor_CPP)
dnl AC_SUBST(BuildVendor_CPP)
dnl AC_SUBST(TargetVendor_CPP)
AC_SUBST(exeext)
#
# The native format for 'hardtop' (i.e., right kind of slashes on a Win32 box).
# (but with b-slashes being escaped).
case $HostPlatform in
i386-unknown-mingw32 | i386-unknown-cygwin32)
# get rid off /cygdrive/ prefix
hardtop=`echo ${hardtop} | sed -e 's%^/cygdrive/\(.\)/%\1:/%' `
hardtop_plat=`cygpath -w ${hardtop} | sed -e 's@\\\\@\\\\\\\\@g' `
;;
*)
hardtop_plat=${hardtop}
;;
esac
AC_SUBST(hardtop)
AC_SUBST(hardtop_plat)
dnl --------------------------------------------------------------
dnl * Project specific configuration options
dnl --------------------------------------------------------------
dnl What follows is a bunch of options that can either be configured
dnl through command line options to the configure script or by
dnl supplying defns in the build tree's mk/build.mk. Having the option to
dnl use either is considered a Feature.
dnl ** What command to use to compile compiler sources ?
dnl --------------------------------------------------------------
AC_ARG_WITH(ghc,
[ --with-ghc=<haskell compiler>
Use a command different from 'ghc' to compile GHC-specific Haskell code
(including GHC itself).
],
[ WithGhc="$withval" ],
[
if test "$GHC" = ""; then
AC_PATH_PROG(GHC,ghc)
fi
WithGhc=$GHC
]
)
AC_SUBST(WithGhc)
AC_ARG_WITH(hc,
[ --with-hc=<haskell compiler>
Use a command different from 'ghc' to compile generic Haskell code.
],
[WithHc="$withval"],
[WithHc=$WithGhc]
)
AC_SUBST(WithHc)
if test "$WithGhc" != ""; then
FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
AC_SUBST(GhcVersion)dnl
AC_SUBST(GhcMajVersion)dnl
AC_SUBST(GhcMinVersion)dnl
AC_SUBST(GhcPatchLevel)dnl
fi
AC_PATH_PROGS(NHC,nhc nhc98)
AC_PATH_PROG(HBC,hbc)
dnl ** Which gcc to use?
dnl --------------------------------------------------------------
AC_ARG_WITH(gcc,
[ --with-gcc=<gcc command>
Use a different command instead of 'gcc' for the GNU C compiler.
],
[WhatGccIsCalled="$withval"
CC="$withval"],
[WhatGccIsCalled="gcc"]
)
AC_SUBST(WhatGccIsCalled)
dnl ** Booting from .hc files?
dnl --------------------------------------------------------------
AC_ARG_ENABLE(hc-boot,
[ --enable-hc-boot
Boot the Glasgow Haskell Compiler from intermediate .hc files.
(This option is mostly of interest to porters.)
],
[BootingFromHc=YES],
[BootingFromHc=NO]
)
AC_SUBST(BootingFromHc)
dnl ** Booting from unregisterised .hc files?
dnl --------------------------------------------------------------
AC_ARG_ENABLE(hc-boot-unregisterised,
[ --enable-hc-boot-unregisterised
With --enable-hc-boot, treat the intermediate .hc files as
unregisterised rather than registerised code.
(This option is mostly of interest to porters.)
],
[BootingFromUnregisterisedHc=YES],
[BootingFromUnregisterisedHc=NO]
)
AC_SUBST(BootingFromUnregisterisedHc)
if test "$BootingFromHc" = "NO"; then
if test "$BootingFromUnregisterisedHc" = "YES"; then
AC_MSG_ERROR([--enable-hc-boot-unregisterised requires --enable-hc-boot.])
fi;
fi;
dnl ** Enable multi-thread friendly RTS?
dnl --------------------------------------------------------------
AC_ARG_ENABLE(threaded-rts,
[ --enable-threaded-rts
Support better interop with OS threads.
],
[ThreadedRts=YES],
[ThreadedRts=NO]
)
AC_SUBST(ThreadedRts)
dnl ** Enable the construction of Win32 DLLs?
dnl --------------------------------------------------------------
AC_ARG_ENABLE(win32-dlls,
[ --enable-win32-dlls
If on a Win32 platform running mingw32/cygwin, enable the
construction of DLLs containing ghc-compiled code.
],
[
case $HostOS_CPP in
cygwin32) ;;
mingw32) ;;
*) echo "Unrecognised win32 platform: $HostPlatform"
exit 1
;;
esac
EnableWin32DLLs=YES
],
[EnableWin32DLLs=NO]
)
AC_SUBST(EnableWin32DLLs)
if test x"$EnableWin32DLLs" = "xYES" ; then
AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
fi
dnl ** Enable the building of the OpenGL/GLUT binding in hslibs?
dnl --------------------------------------------------------------
AC_ARG_ENABLE(hopengl,
[ --enable-hopengl
Build HOpenGL, a Haskell binding for OpenGL/GLUT, too.
(This option is only relevant when hslibs are built.)
],
[GhcLibsWithHOpenGL=YES],
[GhcLibsWithHOpenGL=NO]
)
AC_SUBST(GhcLibsWithHOpenGL)
dnl ** Use a specific version of the GLUT API
dnl --------------------------------------------------------------
AC_ARG_WITH(glut-api,
[ --with-glut-api=<version>
Use a specific version of the GLUT API when building HOpenGL.
])
test -n "$with_glut_api" && CPPFLAGS="$CPPFLAGS -DGLUT_API_VERSION=$with_glut_api"
dnl ** Use a specific version of the GLUT API
dnl --------------------------------------------------------------
AC_ARG_WITH(glut-xlib,
[ --with-glut-xlib=<version>
Use a specific version of the GLUT Xlib implementation when building HOpenGL.
])
test -n "$with_glut_xlib" && CPPFLAGS="$CPPFLAGS -DGLUT_XLIB_IMPLEMENTATION=$with_glut_xlib"
dnl --------------------------------------------------------------
dnl End of configure script option section
dnl --------------------------------------------------------------
dnl --------------------------------------------------------------
dnl * General configuration checks
dnl --------------------------------------------------------------
dnl ** does #! work?
AC_SYS_INTERPRETER()
dnl ** look for `perl', but only in /bin on Windows
case $HostOS_CPP in
cygwin32|mingw32)
AC_CHECK_PROG(PerlCmd,perl,/bin/perl,,/bin)
if test -z "$PerlCmd"; then
echo "You must install the version of Perl shipped with GHC"
echo "(or a compatible one) in /bin."
exit 1
fi
;;
*)
AC_PATH_PROG(PerlCmd,perl)
if test -z "$PerlCmd"; then
echo "You must install perl before you can continue"
echo "Perhaps it is already installed, but not in your PATH?"
exit 1
else
FPTOOLS_CHECK_PERL_VERSION
fi
;;
esac
dnl ** does #! path/to/perl work? (sometimes it's too long...)
FPTOOLS_SHEBANG_PERL
dnl ** look for GCC and find out which version
dnl Figure out which C compiler to use. Gcc is preferred.
dnl If gcc, make sure it's at least 2.1
dnl
AC_PROG_CC
FPTOOLS_HAVE_GCC
dnl ** figure out how to invoke cpp directly (gcc -E is no good)
AC_PROG_CPP
dnl ** does the C compiler support the following options?
FPTOOLS_CC_FLAG(-mno-cygwin,CC_SUPPORTS_MNO_CYGWIN)
EXTRA_CC_OPTS="$CC_SUPPORTS_MNO_CYGWIN"
SRC_CC_OPTS="-O $EXTRA_CC_OPTS"
CPPFLAGS="$EXTRA_CC_OPTS $CPPFLAGS"
AC_SUBST(SRC_CC_OPTS)
dnl ** figure out how to do context diffs
FPTOOLS_PROG_DIFF
dnl ** Find find command (for Win32's benefit)
FPTOOLS_FIND_FIND
dnl ** look for a decent parser generator (bison preferred)
dnl (FPTOOLS_PROG_YACCY is AC_PROG_YACC, but with some extra testing
dnl on the suitability of the 'yacc' returned.)
FPTOOLS_PROG_YACCY
dnl ** Find lex command (lex or flex) - *doesn't* use autoconf's
dnl AC_PROG_LEX, since it doesn't actually check whether 'lex'
dnl exists if 'flex' doesn't.
AC_PROG_LEX_STRICT
dnl ** figure out how to do a BSD-ish install
AC_PROG_INSTALL
dnl If you can run configure, you certainly have /bin/sh
AC_DEFINE(HAVE_BIN_SH)
dnl ** how to invoke `ar' and `ranlib'
FPTOOLS_PROG_AR_AND_RANLIB
dnl ** Check to see whether ln -s works
AC_PROG_LN_S
dnl ** Find the path to sed
AC_PATH_PROG(SedCmd,sed)
dnl ** check for time command
AC_PATH_PROG(TimeCmd,time)
dnl ** check for tar
dnl if GNU tar is named gtar, look for it first.
AC_PATH_PROGS(TarCmd,gtar tar,tar)
dnl ** check for gzip/compress
AC_PATH_PROGS(CompressCmd,gzip compress,gzip)
dnl ** check for jade/openjade & determine a working catalog
AC_PATH_PROGS(JadeCmd,openjade jade,jade)
FPTOOLS_DOCBOOK_CATALOG(Catalog, $JadeCmd, docs/fptools-both.dsl,
/etc/sgml/catalog /etc/sgml.catalog /usr/share/sgml/CATALOG.docbkdsl glafp-utils/docbook/CATALOG*)
if test -z "$Catalog"; then
AC_MSG_RESULT([Warning: You will not be able to build the documentation.])
fi
case $Catalog in
yes) # assume it is provided by other means (e.g., SGML_CATALOG_FILES env var).
Catalog=
;;
glafp*)
case $HostOS_CPP in
mingw32)
Catalog=`cygpath -w $hardtop/$Catalog`
;;
*) Catalog=$hardtop/$Catalog
;;
esac
;;
esac
AC_SUBST(Catalog)
compress_nm=`basename $CompressCmd`
if test x"$compress_nm" = xgzip; then
CompressCmd="$CompressCmd -d"
CompressSuffix="gz"
else
CompressSuffix="Z"
fi
AC_SUBST(CompressCmd)
AC_SUBST(CompressSuffix)
AC_ARG_ENABLE(src-tree-happy,
[ --enable-src-tree-happy
Build and use source tree (fptools/happy) version of happy.
],
[UseSrcTreeHappy=YES],
[UseSrcTreeHappy=NO]
)
dnl ** check for installed happy binary + version
dnl (don't do it if we're booting from .hc files though.)
if test "$BootingFromHc" = "NO"; then
FPTOOLS_HAPPY
fi;
dnl --------------------------------------------------
dnl ### program checking section ends here ###
dnl --------------------------------------------------
dnl --------------------------------------------------
dnl * Platform header file and syscall feature tests
dnl ### checking the state of the local header files and syscalls ###
dnl ** check for full ANSI header (.h) files
AC_HEADER_STDC
dnl ** check for specific header (.h) files that we are interested in
AC_CHECK_HEADERS(Files.h arpa/inet.h assert.h console.h ctype.h dirent.h errno.h fcntl.h float.h ftw.h grp.h ieee754.h inttypes.h limits.h malloc.h memory.h nlist.h pascal.h pwd.h sgtty.h siginfo.h signal.h stat.h stdint.h stdlib.h stddef.h stdarg.h string.h sys/fault.h sys/file.h sys/ioctl.h sys/limits.h sys/mman.h sys/param.h sys/procfs.h sys/resource.h sys/signal.h sys/socket.h netdb.h netinet/in.h netinet/tcp.h sys/stat.h sys/syscall.h sys/time.h sys/timeb.h sys/timers.h sys/times.h sys/types.h sys/un.h sys/utsname.h sys/vadvise.h sys/wait.h termio.h termios.h time.h types.h unistd.h utime.h values.h vfork.h bfd.h winsock.h pthread.h)
AC_CHECK_HEADER(readline/readline.h, HaveReadlineReadlineH=YES, HaveReadlineReadlineH=NO)
AC_CHECK_HEADER(readline/history.h, HaveReadlineHistoryH=YES, HaveReadlineHistoryH=NO)
if test $HaveReadlineReadlineH = YES && test $HaveReadlineHistoryH = YES ; then
HaveReadlineHeaders=YES
AC_DEFINE(HAVE_READLINE_HEADERS,1)
else
HaveReadlineHeaders=NO
AC_DEFINE(HAVE_READLINE_HEADERS,0)
fi
AC_SUBST(HaveReadlineHeaders)
dnl ** check for DOS include files
AC_CHECK_HEADERS(dos.h conio.h io.h std.h)
dnl ** check for Windows include files
AC_CHECK_HEADERS(windows.h)
dnl ** check for OpenGL include files
AC_CHECK_HEADERS(GL/gl.h)
dnl ** check if it is safe to include both <time.h> and <sys/time.h>
AC_HEADER_TIME
dnl dynamic loading include files
AC_CHECK_HEADERS(dlfcn.h dl.h)
dnl ** check for farcalloc (in bcc)
AC_CHECK_HEADER(alloc.h,AC_CHECK_FUNCS(farcalloc))
dnl ** check for valloc (in sunos, solaris, mips, amiga, next, minix, ultrix)
AC_CHECK_HEADER(malloc.h,AC_CHECK_FUNCS(valloc))
dnl ** check for POSIX regex
HavePosixRegex=NO
AC_CHECK_HEADER(regex.h,AC_CHECK_FUNC(regcomp, HavePosixRegex=YES))
AC_SUBST(HavePosixRegex)
dnl ** how do we get a timezone name, and UTC offset ?
AC_STRUCT_TIMEZONE
dnl ** what's the type of timezone?
FPTOOLS_HAVE_TIMEZONE
FPTOOLS_TYPE_TIMEZONE
dnl ** do we have altzone?
FPTOOLS_ALTZONE
dnl ** does struct stat contain st_blksize?
AC_STRUCT_ST_BLKSIZE
dnl ** do we have long longs?
FPTOOLS_C_LONG_LONG
dnl ** what are the sizes of various types
dnl (these must come before GHC_CHECK_ALIGNMENT)
AC_CHECK_SIZEOF(char, 1)
AC_CHECK_SIZEOF(double, 8)
AC_CHECK_SIZEOF(float, 4)
AC_CHECK_SIZEOF(int, 4)
AC_CHECK_SIZEOF(long, 4)
if test "$fptools_cv_have_long_long" = yes; then
AC_CHECK_SIZEOF(long long, 8)
fi
AC_CHECK_SIZEOF(short, 2)
AC_CHECK_SIZEOF(unsigned char, 1)
AC_CHECK_SIZEOF(unsigned int, 4)
AC_CHECK_SIZEOF(unsigned long, 4)
if test "$fptools_cv_have_long_long" = yes; then
AC_CHECK_SIZEOF(unsigned long long, 8)
fi
AC_CHECK_SIZEOF(unsigned short, 2)
AC_CHECK_SIZEOF(void *, 4)
dnl ** what are alignment constraints on various types
FPTOOLS_CHECK_ALIGNMENT(char)
FPTOOLS_CHECK_ALIGNMENT(double)
FPTOOLS_CHECK_ALIGNMENT(float)
FPTOOLS_CHECK_ALIGNMENT(int)
FPTOOLS_CHECK_ALIGNMENT(long)
if test "$fptools_cv_have_long_long" = yes; then
FPTOOLS_CHECK_ALIGNMENT(long long)
fi
FPTOOLS_CHECK_ALIGNMENT(short)
FPTOOLS_CHECK_ALIGNMENT(unsigned char)
FPTOOLS_CHECK_ALIGNMENT(unsigned int)
FPTOOLS_CHECK_ALIGNMENT(unsigned long)
if test "$fptools_cv_have_long_long" = yes; then
FPTOOLS_CHECK_ALIGNMENT(unsigned long long)
fi
FPTOOLS_CHECK_ALIGNMENT(unsigned short)
FPTOOLS_CHECK_ALIGNMENT(void *)
dnl ** map standard C types and ISO types to Haskell types
FPTOOLS_CHECK_HTYPE(char)
FPTOOLS_CHECK_HTYPE(signed char)
FPTOOLS_CHECK_HTYPE(unsigned char)
FPTOOLS_CHECK_HTYPE(short)
FPTOOLS_CHECK_HTYPE(unsigned short)
FPTOOLS_CHECK_HTYPE(int)
FPTOOLS_CHECK_HTYPE(unsigned int)
FPTOOLS_CHECK_HTYPE(long)
FPTOOLS_CHECK_HTYPE(unsigned long)
if test "$fptools_cv_have_long_long" = yes; then
FPTOOLS_CHECK_HTYPE(long long)
FPTOOLS_CHECK_HTYPE(unsigned long long)
fi
FPTOOLS_CHECK_HTYPE(float)
FPTOOLS_CHECK_HTYPE(double)
FPTOOLS_CHECK_HTYPE(ptrdiff_t)
FPTOOLS_CHECK_HTYPE(size_t)
FPTOOLS_CHECK_HTYPE(wchar_t)
dnl Int32 is a HACK for non-ISO C compilers
FPTOOLS_CHECK_HTYPE(sig_atomic_t, Int32)
FPTOOLS_CHECK_HTYPE(clock_t)
FPTOOLS_CHECK_HTYPE(time_t)
FPTOOLS_CHECK_HTYPE(dev_t, Word32)
FPTOOLS_CHECK_HTYPE(ino_t)
FPTOOLS_CHECK_HTYPE(mode_t)
FPTOOLS_CHECK_HTYPE(off_t)
FPTOOLS_CHECK_HTYPE(pid_t)
FPTOOLS_CHECK_HTYPE(size_t)
FPTOOLS_CHECK_HTYPE(gid_t)
FPTOOLS_CHECK_HTYPE(uid_t)
FPTOOLS_CHECK_HTYPE(cc_t)
FPTOOLS_CHECK_HTYPE(speed_t)
FPTOOLS_CHECK_HTYPE(tcflag_t)
FPTOOLS_CHECK_HTYPE(nlink_t)
FPTOOLS_CHECK_HTYPE(ssize_t)
dnl ** Map OpenGL data types to Haskell types
if test $GhcLibsWithHOpenGL = YES ; then
FPTOOLS_CHECK_HTYPE(GLboolean)
FPTOOLS_CHECK_HTYPE(GLbyte)
FPTOOLS_CHECK_HTYPE(GLubyte)
FPTOOLS_CHECK_HTYPE(GLshort)
FPTOOLS_CHECK_HTYPE(GLushort)
FPTOOLS_CHECK_HTYPE(GLint)
FPTOOLS_CHECK_HTYPE(GLuint)
FPTOOLS_CHECK_HTYPE(GLsizei)
FPTOOLS_CHECK_HTYPE(GLenum)
FPTOOLS_CHECK_HTYPE(GLbitfield)
FPTOOLS_CHECK_HTYPE(GLfloat)
FPTOOLS_CHECK_HTYPE(GLclampf)
FPTOOLS_CHECK_HTYPE(GLdouble)
FPTOOLS_CHECK_HTYPE(GLclampd)
fi
dnl ** can we open files in binary mode?
FPTOOLS_O_BINARY
dnl ** check for GetModuleFileName and WinExec (windows only)
dnl Old: AC_CHECK_FUNCS(WinExec GetModuleFileName) dnl Windows
dnl Doesn't work because the linker can't see the functions if
dnl you omit the #include <windows.h>. (I've no idea why not...)
FPTOOLS_TRY_LINK_NOWARN(,[
#if HAVE_WINDOWS_H
#include <windows.h>
#endif
main() {
WinExec("",0);
exit(0);
}
],
[have_winexec=1],
[have_winexec=0])
if test "$have_winexec" = "1"; then
AC_DEFINE(HAVE_WINEXEC)
fi
FPTOOLS_TRY_LINK_NOWARN(,[
#if HAVE_WINDOWS_H
#include <windows.h>
#endif
main() {
char* dir;
GetModuleFileName((HMODULE)0,dir,0);
exit(0);
}
],
[have_getmodulefilename=1],
[have_getmodulefilename=0])
if test "$have_getmodulefilename" = "1"; then
AC_DEFINE(HAVE_GETMODULEFILENAME)
fi
dnl ** check return type of signal handlers
dnl Foo: assumes we can use prototypes.
dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
dnl [AC_TRY_COMPILE([#include <sys/types.h>
dnl #include <signal.h>
dnl #ifdef signal
dnl #undef signal
dnl #endif
dnl void (*signal (int, void (*)(int)))(int);
dnl ],
dnl [int i;],
dnl ac_cv_type_signal_handler=void_int,
dnl ac_cv_type_signal_handler=int_void)])
dnl if test "$ac_cv_type_signal_handler" = void_int; then
dnl AC_DEFINE(VOID_INT_SIGNALS)
dnl fi
dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
AC_TYPE_SIGNAL
if test "$ac_cv_type_signal" = void; then
AC_DEFINE(VOID_INT_SIGNALS)
fi
dnl ** check for more functions
AC_CHECK_FUNCS(strcasecmp _stricmp stricmp strcmpi)
AC_CHECK_FUNCS(strcmp)
AC_CHECK_FUNCS(realpath _fullpath)
AC_CHECK_FUNCS(PBHSetVolSync macsystem)
AC_CHECK_FUNCS(fgetpos fsetpos fseek ftell)
AC_CHECK_FUNCS(vsnprintf _vsnprintf)
AC_CHECK_FUNCS(snprintf _snprintf )
AC_CHECK_FUNCS(popen _popen )
AC_CHECK_FUNCS(pclose _pclose )
dnl ** check for specific library functions that we are interested in
AC_CHECK_FUNCS(access ftime getclock getpagesize getrusage gettimeofday mktime mprotect readlink setitimer stat lstat symlink sysconf timelocal times vadvise vfork localtime_r gmtime_r readdir_r)
dnl ** check whether this machine has gmp3 installed
AC_CHECK_LIB(gmp, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
AC_CHECK_LIB(gmp3, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp3,
HaveLibGmp=No; LibGmp=not-installed))
AC_SUBST(HaveLibGmp)
AC_SUBST(LibGmp)
dnl ** check whether this machine has GNU regex in libc.
FPTOOLS_REGEX_IN_LIBC
dnl ** check whether this machine has BFD and liberty installed (used for debugging)
dnl the order of these tests matters: bfd needs liberty
AC_CHECK_LIB(iberty, xmalloc)
AC_CHECK_LIB(bfd, bfd_init)
dnl ** check for readline, for Hugs and hslibs' Readline
dnl ncurses supersedes termcap and curses, but for compatibility,
dnl we have to check for all...
AC_CHECK_LIB(ncurses, tputs, HaveLibTermcap=YES; LibTermcap=ncurses,
AC_CHECK_LIB(termcap, tputs, HaveLibTermcap=YES; LibTermcap=termcap,
AC_CHECK_LIB(curses, tputs, HaveLibTermcap=YES; LibTermcap=curses,
HaveLibTermcap=NO; LibTermcap=not-installed)))
if test $HaveLibTermcap = YES ; then
LIBS="-l$LibTermcap $LIBS"
AC_CHECK_LIB(readline, readline, HaveLibReadline=YES, HaveLibReadline=NO)
fi
if test $HaveLibTermcap = YES && test x"$HaveLibReadline" = xYES ; then
AC_DEFINE(HAVE_READLINE_LIBS,1)
LibsReadline="readline $LibTermcap"
else
AC_DEFINE(HAVE_READLINE_LIBS,0)
LibsReadline=
fi
AC_SUBST(LibsReadline)
if test "$HaveLibReadline"; then
AC_CHECK_LIB(readline, rl_erase_empty_line,
[AC_DEFINE(HAVE_READLINE_4, 1)],
[AC_DEFINE(HAVE_READLINE_4, 0)])
AC_CHECK_LIB(readline, rl_free_undo_list,
[AC_DEFINE(HAVE_READLINE_4_2, 1)],
[AC_DEFINE(HAVE_READLINE_4_2, 0)])
else
AC_DEFINE(HAVE_READLINE_4, 0)
AC_DEFINE(HAVE_READLINE_4_2, 0)
fi
dnl ** check for math library
FPTOOLS_CHECK_LIBM()
AC_SUBST(LIBM)
case $HostOS_CPP in
cygwin32) ;;
mingw32) ;;
*) AC_PATH_XTRA() ;;
esac
dnl ################################################################
dnl Check for libraries
dnl ################################################################
AC_CHECK_LIB(dl, dlopen,
[HaveLibDL=YES
AC_DEFINE(HAVE_LIBDL)
LIBS="$LIBS -ldl"],
[HaveLibDL=NO])
AC_CHECK_FUNCS(dlopen)
AC_SUBST(HaveLibDL)
FPTOOLS_CHECK_LIB_NOWARN(m, atan)
dnl --------------------------------------------------
dnl * test for GTK+
dnl --------------------------------------------------
AC_PATH_PROGS(GTK_CONFIG, gtk-config gtk12-config)
if test "$GTK_CONFIG" != ""; then
AC_CACHE_CHECK([for version of GTK+], fptools_cv_gtk_version, [
fptools_cv_gtk_version=`$GTK_CONFIG --version`
])
GTK_VERSION=$fptools_cv_gtk_version
else
GTK_VERSION=
fi
case $fptools_cv_gtk_version in
1.[[23]].*) ;;
*) AC_MSG_WARN([GTK+ not usable; need at least version 1.2])
GTK_CONFIG=
;;
esac
AC_SUBST(GTK_CONFIG)
AC_SUBST(GTK_VERSION)
dnl --------------------------------------------------
dnl * Miscellaneous feature tests
dnl --------------------------------------------------
dnl ** can we get alloca?
AC_FUNC_ALLOCA
dnl ** determine whether or not const works
AC_C_CONST
dnl ** determine whether ANSI-function prototypes work?
AC_C_PROTOTYPES
dnl ** are we big endian?
AC_C_BIGENDIAN
# Allay users' general fear of warnings of any kind.
errprint(fptools configure script wizard sez: autoconf-2.50 or later should produce no warnings
)
errprint(if you are using 2.13 or earlier, you may get a (harmless) warning message.
)
dnl ** check for leading underscores in symbol names
FPTOOLS_UNDERSCORE
dnl ** how is the end of text section signalled?
FPTOOLS_END_TEXT_SECTION
dnl ** how is the end of data section signalled?
FPTOOLS_END_DATA_SECTION
dnl ** code before data?
FPTOOLS_CODE_BEFORE_DATA
dnl ** check for ld, and whether ld has -x option
AC_PATH_PROG(LdCmdRaw, ld)
case $HostOS_CPP in
mingw32) LdCmd=`cygpath -w ${LdCmdRaw} | sed -e 's@\\\\@/@g' `
;;
*) LdCmd=${LdCmdRaw}
;;
esac
AC_SUBST(LdCmd)
FPTOOLS_LD_X
AC_OUTPUT(mk/config.mk, echo timestamp > mk/stamp-h )