X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=configure.in;h=fbb093dcffc856abc9540d5108489dedcc4990ff;hb=46518c83e1d4a479eec18c7fa87d2df1d60ec07f;hp=f64b761cd18e0d740fd40747d9782292504f8eb1;hpb=cea3f8428fd4d5337e6814e20e5be18e6911ea7b;p=ghc-hetmet.git diff --git a/configure.in b/configure.in index f64b761..fbb093d 100644 --- a/configure.in +++ b/configure.in @@ -1,65 +1,64 @@ dnl == autoconf source for the Glasgow FP tools == -dnl (grep for '^dnl' to see the outline of this file) +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 -dnl * INITIAL SETUP, CHOICE OF PLATFORM(S) -#!/bin/sh # -# (c) The AQUA Project, Glasgow University, 1994-1997 +# (c) The AQUA Project, Glasgow University, 1994-1998 # -# Configure script for the Glasgow functional programming tools -# (created automagically by autoconf...do not edit by hand) +# Configure script template for the Glasgow functional programming tools # -# Do "./configure --help" to see what flags are available. -# (Better yet, read the documentation!) +# 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, we don't do `--srcdir'... +# 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 some automounter nonsense (Glasgow specific gruff) +# 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/|/|' | sed 's|^/grasp_tmp|/local/grasp_tmp|'` - -#OLD: hardtop=`echo $hardtop | sed 's|^/tmp_mnt/|/|' | sed 's|^/export/|/|' | sed 's|^/grasp_tmp|/local/grasp_tmp|'` +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" AC_SUBST(hardtop) -# ------------------------------------------------------------------------- -dnl ** choose host(/target/build) platform -# -# Guess host/target/build platform(s) if necessary. -# +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 -# "$build" defaults to "$host" -#if test "x$build" = xNONE ; then -# build=$host -#else -# echo "This configuration does not support the \`--build' option." -# exit 1 -#fi dnl ** canonicalize platform names -# Canonicali[sz]e those babies 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 @@ -68,13 +67,15 @@ 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[[1234]]*) +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 @@ -83,6 +84,33 @@ alpha-dec-osf[[1234]]*) HostVendor_CPP='dec' HostOS_CPP='osf1' ;; +alpha-dec-osf[[34]]*) + 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 @@ -110,7 +138,7 @@ i[[3456]]86-*-linux*) HostVendor_CPP='unknown' HostOS_CPP='linux' ;; -i[[3456]]86-*-freebsd*) +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 @@ -119,6 +147,15 @@ i[[3456]]86-*-freebsd*) 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 @@ -128,6 +165,15 @@ i[[3456]]86-*-netbsd*) 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 @@ -137,7 +183,7 @@ i[[3456]]86-*-solaris2*) HostVendor_CPP='unknown' HostOS_CPP='solaris2' ;; -i[[3456]]86-*-cygwin32*) +i[[3456]]86-*-cygwin*) HostPlatform=i386-unknown-cygwin32 # hack again TargetPlatform=i386-unknown-cygwin32 BuildPlatform=i386-unknown-cygwin32 @@ -145,6 +191,22 @@ i[[3456]]86-*-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' + # We assume you're using mingw32 via the gcc that comes + # with cygwin, and not the native port, so let's augment + # the gcc command-line used here with -mno-cygwin to + # arrange for good things to happen. + CFLAGS="-mno-cygwin $CFLAGS" ;; m68k-next-nextstep2) HostPlatform_CPP='m68k_next_nextstep2' @@ -232,7 +294,7 @@ sparc-sun-solaris2*) exit 1 ;; esac -echo "Which we'll canonicalise into: $HostPlatform" +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" @@ -268,287 +330,233 @@ AC_SUBST(HostVendor_CPP) dnl AC_SUBST(BuildVendor_CPP) dnl AC_SUBST(TargetVendor_CPP) -# ------------------------------------------------------------------------- -dnl -dnl * _GENERAL_ CONFIGURATION CHECKS -# -dnl ** are we at Glasgow? -# -# This stuff is in danger of going away.. -# -if test -d /local/fp -a -d /users/fp/simonpj; then - echo "Brilliant! You must be a Glaswegian." - AT_GLASGOW=1 - if test "x$prefix" = xNONE; then - prefix=/local/fp - echo "Assuming installation prefix of $prefix" - fi - if test "x$exec_prefix" = xNONE; then - # Sigh: the defn of exec_prefix does not include the bin* bit... - # WDP 94/07 - exec_prefix=/local/fp - echo "Assuming binary installation prefix of $exec_prefix" - fi -else - AT_GLASGOW=0 -fi -AC_SUBST(AT_GLASGOW) -test -n "$verbose" && echo " setting AT_GLASGOW to $AT_GLASGOW" -# -# -# -dnl ** does #! work? -# -AC_SYS_INTERPRETER() -# -dnl ** look for `perl', but watch out for version 4.035 -# -AC_CHECK_PROG(PerlCmd,perl,$ac_dir/$ac_word) -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 - $PerlCmd -v >conftest.out 2>&1 - if egrep "version 4" conftest.out >/dev/null 2>&1; then - if egrep "Patch level: 35" conftest.out >/dev/null 2>&1; then - echo " -************************************************************************ -Uh-oh...looks like you have Perl 4.035. - -Perl version 4.035 has a bug to do with recursion that will bite if -you run the lit2texi script, when making Info files from -literate files of various sorts. Either use the current version -(4.036), an older version (e.g., perl 4.019) or apply the patch in -glafp-utils/perl-4.035-fixes to your 4.035 perl. -************************************************************************ -" - fi - else - if egrep "version 5" conftest.out >/dev/null 2>&1; then - : - else - echo "I'm not sure if your version of perl will work," - echo "but it's worth a shot, eh?" - fi - fi - rm -fr conftest* +AC_SUBST(exeext) + +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 -------------------------------------------------------------- +if test "$GHC" = ""; then + AC_PATH_PROG(GHC,ghc) fi -# -dnl ** does #!.../perl work? (sometimes it's too long...) -echo "checking if \`#!$PerlCmd' works in shell scripts" -echo "#!$PerlCmd"' -exit $1; -' > conftest -chmod u+x conftest -(SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null) -if test $? -ne 69; then - echo "It does!" -else - echo "It doesn't! Perhaps \`#!$PerlCmd' is too long (often 32 characters max)" - exit 1 + +AC_ARG_WITH(hc, +[ --with-hc= + Use a command different from 'ghc' to compile generic Haskell code. +], +[WithHc="$withval"], +[WithHc=$GHC] +) +AC_SUBST(WithHc) + +AC_ARG_WITH(ghc, +[ --with-ghc= + Use a command different from 'ghc' to compile GHC-specific Haskell code + (including GHC itself). +], +[WithGhc="$withval"], +[WithGhc=$GHC] +) +AC_SUBST(WithGhc) + +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 -rm -f conftest -# -dnl ** check if perl library is properly installed -# (by seeing if a "do 'getopts.pl'" works... -if $PerlCmd -e 'do "getopts.pl" || exit(1); exit(0);' > /dev/null 2>&1 ; then - : -else - echo "I think your perl library is misinstalled:" - echo "The following script did not work:" - echo ' do "getopts.pl" || exit(1); exit(0);' - echo 'But, anyway, we will continue in our quest..' + +AC_PATH_PROGS(NHC,nhc nhc98) +AC_PATH_PROG(HBC,hbc) + +dnl ** Which gcc to use? +dnl -------------------------------------------------------------- +AC_ARG_WITH(gcc, +[ --with-gcc= + Use a different command instead of 'gcc' for the GNU C compiler. +], +[WhatGccIsCalled="$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 ** 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= + 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= + 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 -# Figure out which C compiler to use. Gcc is preferred. -# If gcc, make sure it's at least 2.1 -# +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 -if test -z "$GCC"; then - echo "You would be better off with gcc" - echo "Perhaps it is already installed, but not in your PATH?" - HaveGcc='NO' -else - gcc -v > conftest.out 2>&1 - echo '/version (\d+)\.(\d+)/ && $1*10+$2 > 20 && print "YES";' > conftest.pl - HaveGcc=`eval $PerlCmd -n conftest.pl conftest.out` - if test -z "$HaveGcc"; then - echo "I'm not sure if your version of gcc will work," - echo "but it's worth a shot, eh?" - HaveGcc='YES' - fi - rm -fr conftest* -fi -AC_SUBST(HaveGcc) +FPTOOLS_HAVE_GCC + +dnl ** figure out how to invoke cpp directly (gcc -E is no good) +AC_PROG_CPP -# Deprecated (AC_PROG_CC does it): AC_C_CROSS -# dnl ** figure out how to do context diffs -# (NB: NeXTStep thinks diff'ing a file against itself is "trouble") -# -echo foo > conftest1 -echo foo > conftest2 -if diff -C 1 conftest1 conftest2 > /dev/null 2>&1 ; then - ContextDiffCmd='diff -C 1' -else - if diff -c1 conftest1 conftest2 > /dev/null 2>&1 ; then - ContextDiffCmd='diff -c1' - else - echo "Can't figure out how to do context diffs." - echo "Neither \`diff -C 1' nor \`diff -c1' works." - exit 1 - fi -fi -rm -f conftest1 conftest2 -AC_SUBST(ContextDiffCmd) -# +FPTOOLS_PROG_DIFF + +dnl ** Find find command (for Win32's benefit) +AC_PATH_PROG(FindCmd, find) + dnl ** look for a decent parser generator (bison preferred) -# -# -AC_CHECK_PROG(YaccCmd, bison, bison -y) -if test -z "$YaccCmd"; then - echo "Can't find bison out there..." - AC_CHECK_PROG(WhatCmd, what, what, :) - AC_CHECK_PROG(YaccCmd, yacc, $ac_dir/$ac_word) - if test -z "$YaccCmd"; then - echo "But that's okay...I can't find yacc either." - YaccCmd=: - else - $WhatCmd $YaccCmd > conftest.out - if egrep 'y1\.c 1\..*SMI' conftest.out >/dev/null 2>&1; then - echo "I don't trust your $YaccCmd; it looks like an old Sun yacc" - if test -f /usr/lang/yacc; then - echo "I'm going to use /usr/lang/yacc instead" - YaccCmd=/usr/lang/yacc - else - echo "I'm assuming the worst...no parser generator at all" - YaccCmd=: - fi - elif egrep 'y1\.c.*Revision: 4\.2\.6\.3.*DEC' conftest.out >/dev/null 2>&1; then - echo "I don't trust your $YaccCmd; it looks like a lame DEC yacc" - echo "I'm assuming the worst...no parser generator at all" - YaccCmd=: - else - echo "But that's okay...as far as I know, your yacc will work." - fi - rm -fr conftest* - fi -fi +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) and library (-ll or -lfl) -# +dnl ( not that we care about the latter, see mk/config.mk.in ) AC_PROG_LEX -# ------------------------------------------------------------------------- -# -dnl ** figure out how to invoke cpp directly (gcc -E is no good) -# -AC_PROG_CPP -if echo $CPP | egrep gcc >/dev/null 2>&1; then - echo > conftest.c - gcc -v -E conftest.c >/dev/null 2>conftest.out - echo '/(\S+\/cpp)/ && print "$1";' > conftest.pl - # GNUCPP: used in jmake.c (GnuCppCmd) and in mkdependC - # (where we could do with the usual pre-#defines) - GNUCPP="`eval $PerlCmd -n conftest.pl conftest.out`" - test -n "$verbose" && echo " setting GNUCPP to $GNUCPP" - # RAWCPP: we do not want *any* pre-#defines... - # (e.g., hscpp, mkdependHS) - RAWCPP="`eval $PerlCmd -n conftest.pl conftest.out` -traditional" - test -n "$verbose" && echo " setting RAWCPP to $RAWCPP" - rm -fr conftest* -fi -# ToDo: what are GNUCPP and RAWCPP if the above if didn't fire? WDP 95/02 -AC_SUBST(GNUCPP) -AC_SUBST(RAWCPP) -# + dnl ** figure out how to do a BSD-ish install -# AC_PROG_INSTALL -# -dnl ** figure out what arguments to feed to `ar' -# -AC_CHECK_PROG(ArCmd,ar,$ac_dir/$ac_word) -if test -z "$ArCmd"; then - echo "You don't seem to have ar...I have no idea how to make a library" - exit 1; -fi -if $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then - ArCmd="$ArCmd clqs" - NeedRanLib='' -elif $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then - ArCmd="$ArCmd cqs" - NeedRanLib='' -elif $ArCmd clq conftest.a >/dev/null 2>/dev/null; then - ArCmd="$ArCmd clq" - NeedRanLib='YES' -elif $ArCmd cq conftest.a >/dev/null 2>/dev/null; then - ArCmd="$ArCmd cq" - NeedRanLib='YES' -elif $ArCmd cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then - ArCmd="$ArCmd cq" - NeedRanLib='YES' -else - echo "I can't figure out how to use your $ArCmd" - exit 1 -fi -rm -rf conftest* -test -n "$ArCmd" && test -n "$verbose" && echo " setting ArCmd to $ArCmd" -AC_SUBST(ArCmd) -# -dnl ** figure out if we need `ranlib' -# -if test -z "$NeedRanLib"; then - # we hackily override a few platforms on a case-by-case basis - case $HostPlatform in - i386-*-linuxaout) - NeedRanLib='YES' - ;; - *) RANLIB=':' - ;; - esac - test -n "$verbose" && echo " setting RANLIB to $RANLIB" -fi -if test -n "$NeedRanLib"; then - AC_PROG_RANLIB -fi -AC_SUBST(RANLIB) -# -# + +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() -AC_SUBST(LN_S) -# -dnl ** Find the path to sed ** -AC_PATH_PROG(SedCmd,sed,$ac_dir/$ac_word) -# -# It better be around somewhere (we wouldn't -# exec this script properly if it wasn't!) -# -AC_SUBST(SedCmd) -# -dnl ** check for time command ** -AC_PATH_PROG(TimeCmd,time,$ac_dir/$ac_word) -# -AC_SUBST(TimeCmd) -# -dnl ** check for tar ** -# -# if GNU tar is named gtar, look for it first. -# +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) -AC_SUBST(TarCmd) -# -dnl ** check for gzip/compress ** +dnl ** check for gzip/compress AC_PATH_PROGS(CompressCmd,gzip compress,gzip) -compress_nm=`basename $CompressCmd` +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 /usr/share/sgml/CATALOG.docbkdsl $hardtop/glafp-utils/docbook/CATALOG*) +if test -z "$Catalog"; then + AC_MSG_RESULT([Warning: You will not be able to build the documentation.]) +fi +AC_SUBST(Catalog) +compress_nm=`basename $CompressCmd` if test x"$compress_nm" = xgzip; then CompressCmd="$CompressCmd -d" CompressSuffix="gz" @@ -557,96 +565,340 @@ else fi AC_SUBST(CompressCmd) AC_SUBST(CompressSuffix) -# -dnl ** check for installed happy binary -# -AC_PATH_PROG(HappyCmd,happy) -AC_SUBST(HappyCmd) -# -# -dnl ** check for installed lx binary -# -AC_PATH_PROG(LxCmd,lx) -AC_SUBST(LxCmd) -# -# + +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(dirent.h fcntl.h grp.h malloc.h memory.h nlist.h pwd.h siginfo.h signal.h stdlib.h string.h sys/fault.h sys/file.h sys/mman.h sys/param.h sys/procfs.h sys/resource.h sys/signal.h sys/socket.h sys/stat.h sys/syscall.h sys/time.h sys/timeb.h sys/timers.h sys/times.h sys/types.h sys/utsname.h sys/vadvise.h sys/wait.h termios.h time.h types.h unistd.h utime.h vfork.h readline/readline.h ) -# +AC_CHECK_HEADERS(Files.h assert.h console.h ctype.h dirent.h errno.h fcntl.h float.h ftw.h grp.h ieee754.h malloc.h memory.h nlist.h pascal.h pwd.h sgtty.h siginfo.h signal.h stat.h stdint.h stdlib.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 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/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) + +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 and -# 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 ** how do we get a timezone name, and UTC offset ? -# AC_STRUCT_TIMEZONE -HaveAltZone=yes -AC_MSG_CHECKING([for altzone]) -AC_TRY_LINK([#include ], [return altzone;], AC_DEFINE(HAVE_ALTZONE),HaveAltZone=no) -AC_MSG_RESULT($HaveAltZone) -# -dnl ** determine the type of signal() -# + +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) + +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 . (I've no idea why not...) + +FPTOOLS_TRY_LINK_NOWARN(,[ +#if HAVE_WINDOWS_H +#include +#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 +#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 +dnl #include +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 setitimer stat sysconf timelocal times vadvise vfork) -# +AC_CHECK_FUNCS(access ftime getclock getpagesize getrusage gettimeofday mktime mprotect readlink setitimer stat symlink sysconf timelocal times vadvise vfork) + +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="-lreadline -l$LibTermcap" +else + AC_DEFINE(HAVE_READLINE_LIBS,0) + LibsReadline= +fi +AC_SUBST(LibsReadline) + +dnl ################################################################ +dnl Check for libraries +dnl ################################################################ + +FPTOOLS_CHECK_LIB_NOWARN(dl, dlopen) +FPTOOLS_CHECK_LIB_NOWARN(dld, shl_load) +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: "don't worry, the above warning is harmless (to us.)") +) + dnl ** check for leading underscores in symbol names -# We assume that they _aren't_ there if anything goes wrong. -# -echo checking for a leading underscore in symbol names -AC_TRY_RUN( -[#ifdef HAVE_NLIST_H -#include -struct nlist xYzzY[] = {{"_xYzzY", 0},{0}}; -#endif +FPTOOLS_UNDERSCORE -main(argc, argv) -int argc; -char **argv; -{ -#ifdef HAVE_NLIST_H - if(nlist(argv[0], xYzzY) == 0 && xYzzY[0].n_value != 0) - exit(0); -#endif - exit(1); -}], LeadingUnderscore='YES', LeadingUnderscore='NO', LeadingUnderscore='YES') -test -n "$verbose" && echo " setting LeadingUnderscore to $LeadingUnderscore" -AC_SUBST(LeadingUnderscore) +dnl ** how is the end of text section signalled? +FPTOOLS_END_TEXT_SECTION -AC_OUTPUT(mk/config.mk, echo timestamp > mk/stamp-h ) +dnl ** how is the end of data section signalled? +FPTOOLS_END_DATA_SECTION -# -# It'll break soon enough if it didn't, but we perform a sanity -# check here on the generated config.mk file to see if the -# sed that was used is of the well-behaved sort. -# -#grep @ mk/config.mk > conftest.out -#if grep -v '# enclosed in @at-signs@.' conftest.out >/dev/null 2>&1; then -# : -#else -# echo 'Hmm..suspicious, did the configure script perform all the @..@ substitutions in mk/config.mk?..'; -# grep -v '# enclosed in @at-signs@.' conftest.out /dev/null -#fi -#rm -f conftest* +dnl ** code before data? +FPTOOLS_CODE_BEFORE_DATA + +AC_OUTPUT(mk/config.mk, echo timestamp > mk/stamp-h ) echo '' echo '************************************************' echo '*** NOW DO: gmake boot followed by gmake all' +echo '*** (where gmake == GNU make)' echo '************************************************' exit 0