X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=configure.in;h=8855fcf414b68b93a95883f721ea34e65a28d766;hb=2205f0ceeb65d8acb7db953bf4fd2ad673dc55ee;hp=5483184876277ccf3dda8d4718ef7d177348b6b8;hpb=524bacb7b8f4220960427cd862f8e25ffce8c1a6;p=ghc-hetmet.git diff --git a/configure.in b/configure.in index 5483184..8855fcf 100644 --- a/configure.in +++ b/configure.in @@ -35,6 +35,17 @@ if test x"$srcdir" != 'x.' ; then 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-------------------------------------------------------------------- @@ -192,6 +203,15 @@ i[[3456]]86-*-mingw32*) HostOS_CPP='mingw32' exeext='.exe' ;; +ia64-*-linux*) + HostPlatform=ia64-unknown-linux # hack again + TargetPlatform=ia64-unknown-linux + BuildPlatform=ia64-unknown-linux + HostPlatform_CPP='ia64_unknown_linux' + HostArch_CPP='ia64' + HostVendor_CPP='unknown' + HostOS_CPP='linux' + ;; m68k-next-nextstep2) HostPlatform_CPP='m68k_next_nextstep2' HostArch_CPP='m68k' @@ -255,15 +275,15 @@ powerpc-ibm-aix*) HostVendor_CPP='ibm' HostOS_CPP='aix' ;; -powerpc-apple-macosx*) - HostPlatform=powerpc-apple-macosx - TargetPlatform=powerpc-apple-macosx #hack - BuildPlatform=powerpc-apple-macosx #hack - HostPlatform_CPP='powerpc_apple_macosx' - HostArch_CPP='powerpc' - HostVendor_CPP='apple' - HostOS_CPP='macosx' - ;; +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 @@ -326,27 +346,19 @@ dnl AC_SUBST(TargetVendor_CPP) AC_SUBST(exeext) # -# 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" +# 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) - hardtop_plat=`cygpath -w ${hardtop}` - ;; - i386-unknown-cygwin32) - hardtop_plat=`cygpath -w ${hardtop}` + 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) -# The native format (i.e., right kind of slashes on a Win32 box). AC_SUBST(hardtop_plat) dnl -------------------------------------------------------------- @@ -439,6 +451,17 @@ 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, @@ -542,13 +565,15 @@ 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(-mwin32,CC_SUPPORTS_MWIN32) -FPTOOLS_CC_FLAG(-mno-cygwin,CC_SUPPORTS_MNO_CYGWIN) +dnl ** Without optimization some INLINE trickery fails for GHCi +SRC_CC_OPTS="-O" -EXTRA_CC_OPTS="$CC_SUPPORTS_MNO_CYGWIN $CC_SUPPORTS_MWIN32" -SRC_CC_OPTS="-O $EXTRA_CC_OPTS" -CPPFLAGS="$EXTRA_CC_OPTS $CPPFLAGS" +dnl ** Try to add -mno-cygwin to the C compiler options for mingw32 targets +if test x"$TargetOS_CPP" = x"mingw32"; then + FPTOOLS_CC_FLAG(-mno-cygwin,CC_SUPPORTS_MNO_CYGWIN) + SRC_CC_OPTS="$CC_SUPPORTS_MNO_CYGWIN $SRC_CC_OPTS" + CPPFLAGS="$CC_SUPPORTS_MNO_CYGWIN $CPPFLAGS" +fi AC_SUBST(SRC_CC_OPTS) dnl ** figure out how to do context diffs @@ -576,7 +601,6 @@ 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 @@ -604,6 +628,9 @@ 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) @@ -626,6 +653,13 @@ 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 @@ -644,7 +678,7 @@ 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) +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 sys/uio.h) AC_CHECK_HEADER(readline/readline.h, HaveReadlineReadlineH=YES, HaveReadlineReadlineH=NO) AC_CHECK_HEADER(readline/history.h, HaveReadlineHistoryH=YES, HaveReadlineHistoryH=NO) @@ -679,6 +713,11 @@ 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 @@ -695,6 +734,10 @@ AC_STRUCT_ST_BLKSIZE dnl ** do we have long longs? FPTOOLS_C_LONG_LONG +dnl ** check what fields struct msghdr contains +FPTOOLS_MSGHDR_MSG_ACCRIGHTS +FPTOOLS_MSGHDR_MSG_CONTROL + dnl ** what are the sizes of various types dnl (these must come before GHC_CHECK_ALIGNMENT) AC_CHECK_SIZEOF(char, 1) @@ -757,6 +800,18 @@ 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(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 @@ -852,15 +907,21 @@ 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) +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)) + HaveLibGmp=NO; LibGmp=not-installed)) AC_SUBST(HaveLibGmp) AC_SUBST(LibGmp) +if test "$HaveLibGmp" = "NO"; then +if test "$HostArch_CPP" = "ia64"; then +AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64).]) +fi; +fi; + dnl ** check whether this machine has GNU regex in libc. FPTOOLS_REGEX_IN_LIBC @@ -913,10 +974,14 @@ mingw32) ;; *) AC_PATH_XTRA() ;; esac +FPTOOLS_HAVE_OPENGL + dnl ################################################################ dnl Check for libraries dnl ################################################################ +dnl ** check for libdl & RTLD_NEXT + AC_CHECK_LIB(dl, dlopen, [HaveLibDL=YES AC_DEFINE(HAVE_LIBDL) @@ -925,6 +990,42 @@ AC_CHECK_LIB(dl, dlopen, AC_CHECK_FUNCS(dlopen) AC_SUBST(HaveLibDL) +dnl ** sometimes RTLD_NEXT is hidden in #ifdefs we really don't wan to set +AC_MSG_CHECKING(for RTLD_NEXT from dlfcn.h) +AC_EGREP_CPP(yes, +[ + #include + #ifdef RTLD_NEXT + yes + #endif +], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_RTLDNEXT) + HaveRtldNext=YES +], [ + AC_MSG_RESULT(no) + HaveRtldNext=NO + ]) +AC_SUBST(HaveRtldNext) + +dnl ** RTLD_LOCAL isn't available on cygwin +AC_MSG_CHECKING(for RTLD_LOCAL from dlfcn.h) +AC_EGREP_CPP(yes, +[ + #include + #ifdef RTLD_LOCAL + yes + #endif +], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_RTLDLOCAL) + HaveRtldLocal=YES +], [ + AC_MSG_RESULT(no) + HaveRtldLocal=NO + ]) +AC_SUBST(HaveRtldLocal) + FPTOOLS_CHECK_LIB_NOWARN(m, atan) dnl -------------------------------------------------- @@ -985,7 +1086,14 @@ dnl ** code before data? FPTOOLS_CODE_BEFORE_DATA dnl ** check for ld, and whether ld has -x option -AC_PATH_PROG(LdCmd, ld) +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 )