X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=configure.in;h=9124666bfeba5937c2b543968a90745863eb1ca9;hb=ca392637df83efdce9c51dc3f467d382842c0dfb;hp=97acf325ae55d0091ce65e026722fc8248656b3d;hpb=bc71b23779d7453bfd6e8dc1bc3e68040a09b1c0;p=ghc-hetmet.git diff --git a/configure.in b/configure.in index 97acf32..9124666 100644 --- a/configure.in +++ b/configure.in @@ -1,17 +1,18 @@ 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) @@ -21,7 +22,7 @@ AC_INIT(mk/config.mk.in) # 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 @@ -29,7 +30,7 @@ fi # # Remove common automounter nonsense + convert from UNC to DOS style paths -# (cygwin32-beta18 for UNC isn't quite there yet.) +# (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:/|' ` @@ -38,27 +39,19 @@ 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 @@ -120,14 +113,23 @@ i[[3456]]86-*-linux*) HostVendor_CPP='unknown' HostOS_CPP='linux' ;; -i[[3456]]86-*-freebsd*) - HostPlatform=i386-unknown-freebsd # hack again - TargetPlatform=i386-unknown-freebsd - BuildPlatform=i386-unknown-freebsd - HostPlatform_CPP='i386_unknown_freebsd' +i[[3456]]86-*-freebsd3*) # FreeBSD 3.0+ uses ELF + HostPlatform=i386-unknown-freebsd3 # hack again + TargetPlatform=i386-unknown-freebsd3 + BuildPlatform=i386-unknown-freebsd3 + HostPlatform_CPP='i386_unknown_freebsd3' HostArch_CPP='i386' HostVendor_CPP='unknown' - HostOS_CPP='freebsd' + HostOS_CPP='freebsd3' + ;; +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 @@ -157,6 +159,16 @@ i[[3456]]86-*-cygwin32*) 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' @@ -281,112 +293,129 @@ dnl AC_SUBST(TargetVendor_CPP) AC_SUBST(exeext) -# ------------------------------------------------------------------------- -dnl -dnl * _GENERAL_ CONFIGURATION CHECKS -# +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-hc, +[ --with-ghc-hc= + Use a command different from 'ghc-2.10' to compile up the GHC compiler sources. + (no claims currently made that this will work with a compiler other than a + recent version of GHC, but you could always try...) +], +[WithGhcHc="$withval"], +[WithGhcHc="ghc"] +) +AC_SUBST(WithGhcHc) + +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 -------------------------------------------------------------- +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 watch out for version 4.035 -# 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 -AC_CHECK_PERL_VERSION +FPTOOLS_CHECK_PERL_VERSION fi -# -dnl ** does #!.../perl work? (sometimes it's too long...) -# -AC_SHEBANG_PERL +dnl ** does #! path/to/perl work? (sometimes it's too long...) +FPTOOLS_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 -# -# 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 -AC_HAVE_GCC +FPTOOLS_HAVE_GCC -# dnl ** figure out how to invoke cpp directly (gcc -E is no good) -# AC_PROG_CPP -AC_PROG_GNUCPP +FPTOOLS_PROG_GNUCPP -# dnl ** figure out how to do context diffs -# -AC_PROG_DIFF +FPTOOLS_PROG_DIFF + -# dnl ** look for a decent parser generator (bison preferred) -# -# (AC_PROG_YACCY is AC_PROG_YACC, but with some extra testing -# on the suitability of the 'yacc' returned.) -AC_PROG_YACCY +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 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' -# -AC_PROG_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 ** -# + +dnl ** Find the path to sed AC_PATH_PROG(SedCmd,sed) -# -dnl ** check for time command ** + +dnl ** check for time command AC_PATH_PROG(TimeCmd,time) -# -dnl ** check for tar ** -# -# if GNU tar is named gtar, look for it first. -# + +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 ** +dnl ** check for gzip/compress AC_PATH_PROGS(CompressCmd,gzip compress,gzip) compress_nm=`basename $CompressCmd` @@ -399,76 +428,204 @@ fi AC_SUBST(CompressCmd) AC_SUBST(CompressSuffix) -# dnl ** check for installed happy binary + version -# -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) +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 #### +dnl -------------------------------------------------- +dnl ### program checking section ends here ### +dnl -------------------------------------------------- -####-------------------------------------------------- -#### checking the state of the local header files and syscalls #### +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 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 readline/readline.h bfd.h) + +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 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 -# -dnl what's the type of timezone? -AC_TYPE_TIMEZONE +dnl ** what's the type of timezone? +FPTOOLS_TYPE_TIMEZONE + +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 ** 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 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) +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 gmp2 installed +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 ** 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 ################################################################ +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 * Miscellaneous feature tests +dnl -------------------------------------------------- -# -# 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() + +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 ** determine the return type of signal() AC_TYPE_SIGNAL -# dnl ** check for leading underscores in symbol names -# -AC_UNDERSCORE +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 AC_OUTPUT(mk/config.mk, echo timestamp > mk/stamp-h )