fi
#
-# Remove some automounter nonsense (Glasgow specific gruff)
+# Remove common automounter nonsense + convert from UNC to DOS style paths
+# (cygwin32-beta18 for UNC isn't quite there yet.)
#
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.
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
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
HostArch_CPP='i386'
HostVendor_CPP='unknown'
HostOS_CPP='cygwin32'
+ exeext='.exe'
;;
m68k-next-nextstep2)
HostPlatform_CPP='m68k_next_nextstep2'
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
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"
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 * Booting from .hc files?
+#--------------------------------------------------------------
+AC_ARG_ENABLE(hc-boot,
+ [
+Boot the Glasgow Haskell Compiler from intermediate .hc files.
+(This option is mostly of interest for porters.)
+ ],
+
+ BootingFromHc=YES,
+ BootingFromHc=NO
+)
+AC_SUBST(BootingFromHc)
+
# -------------------------------------------------------------------------
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?
#
#
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*
+FPTOOLS_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
-# (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);'
- exit 1
-fi
#
+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
#
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
+FPTOOLS_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)
+FPTOOLS_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
+# (FPTOOLS_PROG_YACCY is AC_PROG_YACC, but with some extra testing
+# on the suitability of the 'yacc' returned.)
+FPTOOLS_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)
+FPTOOLS_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"
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
+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;
+
+#### 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 )
+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 bfd.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?
+FPTOOLS_TYPE_TIMEZONE
+
#
-AC_TYPE_SIGNAL
+dnl ** do we have altzone?
+FPTOOLS_ALTZONE
+
+dnl ** does struct stat contain st_blksize?
+#
+AC_STRUCT_ST_BLKSIZE
+
+dnl ** what are the sizes of various types
+dnl (these must come before GHC_CHECK_ALIGNMENT)
+AC_CHECK_SIZEOF(unsigned int,4)
+AC_CHECK_SIZEOF(float, 4)
+AC_CHECK_SIZEOF(double, 8)
+AC_CHECK_SIZEOF(long, 4)
+AC_CHECK_SIZEOF(void *, 4)
+
+dnl ** what are alignment constraints on various types
+FPTOOLS_CHECK_ALIGNMENT(unsigned int) dnl redundant but harmless
+FPTOOLS_CHECK_ALIGNMENT(long)
+FPTOOLS_CHECK_ALIGNMENT(float)
+FPTOOLS_CHECK_ALIGNMENT(double)
+
+dnl ** do we have long longs?
+FPTOOLS_C_LONG_LONG
+
#
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?
+dnl ** check whether this machine has GMP 2.0 installed
#
-AC_FUNC_ALLOCA
+AC_CHECK_LIB(gmp, mpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
+ AC_CHECK_LIB(gmp2, mpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp2,
+ HaveLibGmp=No; LibGmp=not-installed))
+AC_SUBST(HaveLibGmp)
+AC_SUBST(LibGmp)
+
#
-dnl ** determine whether or not const works
+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)
+
#
+# Misc
+#
+dnl ** can we get alloca?
+AC_FUNC_ALLOCA
+dnl ** determine whether or not const works
AC_C_CONST
+dnl ** are we big endian?
+AC_C_BIGENDIAN
+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)
+#
+FPTOOLS_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