[project @ 1998-02-05 12:23:33 by simonm]
[ghc-hetmet.git] / configure.in
index 89dfaeb..7560289 100644 (file)
@@ -31,15 +31,13 @@ fi
 # Remove some automounter nonsense (Glasgow specific gruff)
 #
 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|'`
 
 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.
@@ -69,13 +67,14 @@ if test x"$TargetPlatform" != x"$HostPlatform" ; then
     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
@@ -84,6 +83,15 @@ 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'
+        ;;
 hppa1.1-hp-hpux*)
        HostPlatform=hppa1.1-hp-hpux  # canonicalise for our purposes (hack)
        TargetPlatform=hppa1.1-hp-hpux
@@ -146,6 +154,7 @@ i[[3456]]86-*-cygwin32*)
         HostArch_CPP='i386'
         HostVendor_CPP='unknown'
         HostOS_CPP='cygwin32'
+       exeext='.exe'
         ;;
 m68k-next-nextstep2)
         HostPlatform_CPP='m68k_next_nextstep2'
@@ -192,6 +201,15 @@ mips-sgi-irix*)
         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
@@ -224,7 +242,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"
 
@@ -233,55 +251,40 @@ 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)
+
 # -------------------------------------------------------------------------
 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?
 #
@@ -289,252 +292,103 @@ AC_SYS_INTERPRETER()
 #
 dnl ** look for `perl', but watch out for version 4.035
 #
-AC_CHECK_PROG(PerlCmd,perl,$ac_dir/$ac_word)
+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
+   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_CHECK_PERL_VERSION
 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
-fi
-rm -f conftest
 #
-dnl ** check if perl library is properly installed
+AC_SHEBANG_PERL
+
+# Remove: we work around the problem in the single place
+# where we rely on something (getopts) from the libraries.
+#
+#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..'
-fi
+#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..'
+#fi
 #
+
 #
 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
 #
 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)
+AC_HAVE_GCC
+
+#
+dnl ** figure out how to invoke cpp directly (gcc -E is no good)
+#
+AC_PROG_CPP
+AC_PROG_GNUCPP
 
-# 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)
+AC_PROG_DIFF
+
 #
 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
+# (AC_PROG_YACCY is AC_PROG_YACC, but with some extra testing 
+# on the suitability of the 'yacc' returned.)
+AC_PROG_YACCY
 
+#
 dnl ** Find lex command (lex or flex) and library (-ll or -lfl)
 #
 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'
+dnl ** how to invoke `ar' and `ranlib'
 #
-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)
+AC_PROG_AR_AND_RANLIB
+
 #
 #
 dnl ** Check to see whether ln -s works
 #
-AC_PROG_LN_S()
-AC_SUBST(LN_S)
+AC_PROG_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)
+AC_PATH_PROG(SedCmd,sed)
+
 #
 dnl ** check for time command **
-AC_PATH_PROG(TimeCmd,time,$ac_dir/$ac_word)
-# 
-AC_SUBST(TimeCmd)
+AC_PATH_PROG(TimeCmd,time)
+
 #
 dnl ** check for tar **
 #
 # 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 **
 AC_PATH_PROGS(CompressCmd,gzip compress,gzip)
 
 compress_nm=`basename $CompressCmd`
-
 if test x"$compress_nm" = xgzip; then
   CompressCmd="$CompressCmd -d"
   CompressSuffix="gz"
@@ -543,92 +397,88 @@ else
 fi
 AC_SUBST(CompressCmd)
 AC_SUBST(CompressSuffix)
+
 #
-dnl ** check for installed happy binary
+dnl ** check for installed happy binary + version
 #
-AC_PATH_PROG(HappyCmd,happy)
-AC_SUBST(HappyCmd)
+AC_HAPPY
+
+if test x"$HappyCmd" != x; then
+   if expr $HappyVersion \< "1.3" >/dev/null; then
+       echo "   Happy Version 1.3 or later is required to compile GHC."
+       echo "   Using the Happy sources in the tree.";
+       HappyCmd=""
+   fi
+fi
+
 #
 #
 dnl ** check for installed lx binary
 #
 AC_PATH_PROG(LxCmd,lx)
-AC_SUBST(LxCmd)
+
 #
+dnl ** check for installed green-card binary
+#
+AC_PATH_PROG(GreencardCmd,green-card)
+
+#### program checking section ends here ####
+
+####--------------------------------------------------
+#### 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 )
+
 #
 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
 #
 AC_HEADER_TIME
 #
-dnl ** how do we get a timezone name?
+dnl ** how do we get a timezone name, and UTC offset ?
 #
 AC_STRUCT_TIMEZONE
+
 # 
-dnl ** determine the type of signal()
+dnl what's the type of timezone?
+AC_TYPE_TIMEZONE
+
 #
-AC_TYPE_SIGNAL
+dnl do we have altzone?
+AC_ALTZONE
+
 #
 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)
+
 #
-dnl ** can we get alloca?
+# Misc
 #
+dnl ** can we get alloca?
 AC_FUNC_ALLOCA
-#
 dnl ** determine whether or not const works
-#
 AC_C_CONST
+dnl ** determine the type of signal()
+AC_TYPE_SIGNAL
+
 #
 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 <nlist.h>
-struct nlist xYzzY[] = {{"_xYzzY", 0},{0}};
-#endif
-
-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)
+#
+AC_UNDERSCORE
 
 AC_OUTPUT(mk/config.mk, echo timestamp > mk/stamp-h )
 
-#
-# 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*
-
 echo ''
 echo '************************************************'
 echo '*** NOW DO: gmake boot followed by gmake all'
+echo '***         (where gmake == GNU make)'
 echo '************************************************'
 exit 0