# see what flags are available. (Better yet, read the documentation!)
#
-AC_INIT([fptools build system], [1.0], [cvs-fptools@haskell.org], [fptools])
+AC_INIT([The Glorious Glasgow Haskell Compilation System], [6.5], [glasgow-haskell-bugs@haskell.org], [ghc])
+
+FP_SETUP_PROJECT_VERSION
+
+# Hmmm, we fix the RPM release number to 1 here... Is this convenient?
+AC_SUBST([release], [1])
# First off, a distrib sanity check..
AC_CONFIG_SRCDIR([mk/config.mk.in])
dnl After the toplevel configuration is complete, the script will recurse into
dnl these subdirectories if they exist. The use of a cache file makes repeated
dnl checks cheap.
-AC_CONFIG_SUBDIRS([ghc libraries])
+AC_CONFIG_SUBDIRS([libraries])
# -------------------------------------------------------------------------
# Prepare to generate the following header files
HostVendor_CPP='unknown'
HostOS_CPP='openbsd'
;;
+amd64-*-freebsd*)
+ HostPlatform=x86_64-unknown-freebsd
+ TargetPlatform=x86_64-unknown-freebsd
+ BuildPlatform=x86_64-unknown-freebsd
+ HostPlatform_CPP='x86_64_unknown_freebsd'
+ HostArch_CPP='x86_64'
+ HostVendor_CPP='unknown'
+ HostOS_CPP='freebsd'
+ ;;
arm*-linux*)
HostPlatform=arm-unknown-linux # hack again
TargetPlatform=arm-unknown-linux
HostVendor_CPP='unknown'
HostOS_CPP='linux'
;;
+i[[3456]]86-*-kfreebsd*-gnu)
+ HostPlatform=i386-unknown-kfreebsdgnu # hack again
+ TargetPlatform=i386-unknown-kfreebsdgnu
+ BuildPlatform=i386-unknown-kfreebsdgnu
+ HostPlatform_CPP='i386_unknown_kfreebsdgnu'
+ HostArch_CPP='i386'
+ HostVendor_CPP='unknown'
+ HostOS_CPP='kfreebsdgnu'
+ ;;
i[[3456]]86-*-freebsd[[3-9]]*) # FreeBSD 3.0+ uses ELF
HostPlatform=i386-unknown-freebsd # hack again
TargetPlatform=i386-unknown-freebsd
HostOS_CPP='mingw32'
exeext='.exe'
;;
+i[[3456]]86-apple-darwin*)
+ HostPlatform=i386-apple-darwin
+ TargetPlatform=i386-apple-darwin #hack
+ BuildPlatform=i386-apple-darwin #hack
+ HostPlatform_CPP='i386_apple_darwin'
+ HostArch_CPP='i386'
+ HostVendor_CPP='apple'
+ HostOS_CPP='darwin'
+ ;;
+i[[3456]]86-*-gnu*)
+ HostPlatform=i386-unknown-gnu
+ TargetPlatform=i386-unknown-gnu
+ BuildPlatform=i386-unknown-gnu
+ HostPlatform_CPP=i386_unknown_gnu
+ HostArch_CPP=i386
+ HostVendor_CPP=unknown
+ HostOS_CPP=gnu
+ ;;
ia64-*-linux*)
HostPlatform=ia64-unknown-linux # hack again
TargetPlatform=ia64-unknown-linux
AC_SUBST(GhcPatchLevel)dnl
fi
+# Check whether this GHC has readline installed
+FP_GHC_HAS_READLINE
+
AC_PATH_PROGS(NHC,nhc nhc98)
AC_PATH_PROG(HBC,hbc)
AC_MSG_ERROR([GHC is required unless bootstrapping from .hc files.])
fi;
-dnl ** --enable-threaded-rts (not used any more)
-dnl --------------------------------------------------------------
-AC_ARG_ENABLE(threaded-rts,
-[AC_HELP_STRING([--enable-threaded-rts],
-[DEPRECATED (backwards compatibility only). [default=no]])],
-[ if test x"$enableval" = x"yes"; then
- ThreadedRts=YES
- else
- ThreadedRts=NO
- fi
-],
-[ThreadedRts=NO]
-)
-AC_SUBST(ThreadedRts)
-
dnl ** Enable the construction of Win32 DLLs?
dnl --------------------------------------------------------------
dnl
dnl
FP_HAVE_GCC
FP_MINGW_GCC
+FP_GCC_NEEDS_NO_OMIT_LFPTR
+FP_GCC_HAS_NO_UNIT_AT_A_TIME
dnl ** figure out how to invoke cpp directly (gcc -E is no good)
AC_PROG_CPP
dnl ** Find find command (for Win32's benefit)
FP_PROG_FIND
+dnl ** Find sort command (for the benefit of Win32 environs)
+FP_PROG_SORT
+
dnl ** figure out how to do a BSD-ish install
AC_PROG_INSTALL
dnl ** check for DocBook toolchain
FP_CHECK_DOCBOOK_DTD
-FP_DIR_DOCBOOK_XSL([/usr/share/xml/docbook/stylesheet/nwalsh/current /usr/share/xml/docbook/stylesheet/nwalsh /usr/share/sgml/docbook/docbook-xsl-stylesheets* /usr/share/sgml/docbook/xsl-stylesheets* /opt/kde?/share/apps/ksgmltools2/docbook/xsl /usr/share/docbook-xsl /usr/share/sgml/docbkxsl /usr/local/share/xsl/docbook])
+FP_DIR_DOCBOOK_XSL([/usr/share/xml/docbook/stylesheet/nwalsh/current /usr/share/xml/docbook/stylesheet/nwalsh /usr/share/sgml/docbook/docbook-xsl-stylesheets* /usr/share/sgml/docbook/xsl-stylesheets* /opt/kde?/share/apps/ksgmltools2/docbook/xsl /usr/share/docbook-xsl /usr/share/sgml/docbkxsl /usr/local/share/xsl/docbook /sw/share/xml/xsl/docbook-xsl])
FP_PROG_FO_PROCESSOR
dnl ** check for ghc-pkg command
dnl ** check for more functions
dnl ** The following have been verified to be used in ghc/, but might be used somewhere else, too.
-AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times])
+AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times ctime_r])
dnl ** For ghc/rts/gmp:
AC_CHECK_FUNCS([getpagesize])
AC_SUBST(HaveLibGmp)
AC_SUBST(LibGmp)
-dnl ** (Mac OS X only: check for HaskellSupport.framework)
-HaveFrameworkHaskellSupport=NO
-if test $HostPlatform = "powerpc-apple-darwin"; then
- AC_MSG_CHECKING([for HaskellSupport.framework])
- save_libs="$LIBS"
- LIBS="-framework HaskellSupport"
- AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkHaskellSupport=YES,)
- if test $HaveFrameworkHaskellSupport = YES; then
- AC_DEFINE([HAVE_FRAMEWORK_HASKELLSUPPORT], [1], [Define to 1 if the HaskellSupport.framework is installed (Mac OS X only).])
- fi;
- LIBS="$save_libs"
- AC_MSG_RESULT([$HaveFrameworkHaskellSupport])
-fi;
-AC_SUBST(HaveFrameworkHaskellSupport)
+dnl ** (Mac OS X only: check for GMP.framework)
+HaveFrameworkGMP=NO
+case $HostPlatform in
+*-apple-darwin)
+ AC_MSG_CHECKING([for GMP.framework])
+ save_libs="$LIBS"
+ LIBS="-framework GMP"
+ AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkGMP=YES,)
+ if test $HaveFrameworkGMP = YES; then
+ AC_DEFINE([HAVE_FRAMEWORK_GMP], [1], [Define to 1 if GMP.framework is installed (Mac OS X only).])
+ fi;
+ LIBS="$save_libs"
+ AC_MSG_RESULT([$HaveFrameworkGMP])
+ ;;
+esac
+AC_SUBST(HaveFrameworkGMP)
dnl ** check for mingwex library
AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
fi
dnl ** check for math library
-AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"], [LIBM=])
+AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes;LIBM=],[fp_libm_not_needed=dunno])
+if test x"$fp_libm_not_needed" = xdunno; then
+ AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"],[LIBM=])
+fi
AC_SUBST([LIBM])
dnl ################################################################
dnl Check for libraries
dnl ################################################################
-dnl ** check for libdl & RTLD_NEXT
-
-dnl (Mac OS X only) ... but don't check if we already have the
-dnl HaskellSupport.framework
-
-if test $HaveFrameworkHaskellSupport = YES; then
- HaveLibDL=NO
- HaveRtldNext=NO
- HaveRtldLocal=YES
- AC_DEFINE([HAVE_RTLDLOCAL], [1], [Define to 1 if RTLD_LOCAL is available.])
- HaveRtldGlobal=YES
- AC_DEFINE([HAVE_RTLDGLOBAL], [1], [Define to 1 if RTLD_GLOBAL is available.])
- HaveRtldNow=YES
- AC_DEFINE([HAVE_RTLDNOW], [1], [Define to 1 if we can see RTLD_NOW in dlfcn.h.])
- AC_SUBST(HaveLibDL)
- AC_SUBST(HaveRtldNext)
- AC_SUBST(HaveRtldLocal)
- AC_SUBST(HaveRtldGlobal)
- AC_SUBST(HaveRtldNow)
-else
- AC_CHECK_LIB(dl, dlopen,
- [HaveLibDL=YES
- AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
- LIBS="$LIBS -ldl"],
- [HaveLibDL=NO])
- 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 <dlfcn.h>
- #ifdef RTLD_NEXT
- yes
- #endif
- ], [
- AC_MSG_RESULT(yes)
- AC_DEFINE([HAVE_RTLDNEXT], [1], [Define to 1 if we can see RTLD_NEXT in dlfcn.h.])
- HaveRtldNext=YES
- ], [
- AC_MSG_RESULT(no)
- HaveRtldNext=NO
- ])
- AC_SUBST(HaveRtldNext)
-
- dnl ** RTLD_LOCAL isn't available on cygwin or openbsd
- AC_MSG_CHECKING(for RTLD_LOCAL from dlfcn.h)
- AC_EGREP_CPP(yes,
- [
- #include <dlfcn.h>
- #ifdef RTLD_LOCAL
- yes
- #endif
- ], [
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_RTLDLOCAL)
- HaveRtldLocal=YES
- ], [
- AC_MSG_RESULT(no)
- HaveRtldLocal=NO
- ])
- AC_SUBST(HaveRtldLocal)
-
- dnl ** RTLD_GLOBAL isn't available on openbsd
- AC_MSG_CHECKING(for RTLD_GLOBAL from dlfcn.h)
- AC_EGREP_CPP(yes,
- [
- #include <dlfcn.h>
- #ifdef RTLD_GLOBAL
- yes
- #endif
- ], [
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_RTLDGLOBAL)
- HaveRtldGlobal=YES
- ], [
- AC_MSG_RESULT(no)
- HaveRtldGlobal=NO
- ])
- AC_SUBST(HaveRtldGlobal)
-
- dnl ** RTLD_NOW isn't available on openbsd
- AC_MSG_CHECKING(for RTLD_NOW from dlfcn.h)
- AC_EGREP_CPP(yes,
- [
- #include <dlfcn.h>
- #ifdef RTLD_NOW
- yes
- #endif
- ], [
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_RTLDNOW)
- HaveRtldNow=YES
- ], [
- AC_MSG_RESULT(no)
- HaveRtldNow=NO
- ])
- AC_SUBST(HaveRtldNow)
-fi
+dnl ** check whether we need -ldl to get dlopen()
+
+AC_CHECK_LIB(dl, dlopen,
+ [HaveLibDL=YES
+ AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
+ LIBS="$LIBS -ldl"],
+ [HaveLibDL=NO])
+AC_SUBST(HaveLibDL)
dnl --------------------------------------------------
dnl * Miscellaneous feature tests
[Define to 1 if Apple-style dead-stripping is supported.])
],
[
+ AC_MSG_RESULT(no)
AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[0],
[Define to 1 if Apple-style dead-stripping is supported.])
])
-AC_CONFIG_FILES([mk/config.mk])
+dnl ** check for librt
+AC_CHECK_LIB(rt, clock_gettime)
+AC_CHECK_FUNCS(clock_gettime)
+
+dnl ** check for Apple's "interesting" long double compatibility scheme
+AC_MSG_CHECKING(for printf$LDBLStub)
+AC_TRY_LINK_FUNC(printf$LSBLStub,
+ [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[1],
+ [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
+ ],
+ [
+ AC_MSG_RESULT(no)
+ AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[0],
+ [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
+ ])
+
+# test for GTK+
+AC_PATH_PROGS([GTK_CONFIG], [pkg-config])
+if test -n "$GTK_CONFIG"; then
+ if $GTK_CONFIG gtk+-2.0 --atleast-version=2.0; then
+ GTK_CONFIG="$GTK_CONFIG gtk+-2.0"
+ else
+ AC_MSG_WARN([GTK+ not usable, need at least version 2.0])
+ GTK_CONFIG=
+ fi
+fi
+AC_SUBST([GTK_CONFIG])
+
+AC_CONFIG_FILES([mk/config.mk ghc.spec docs/users_guide/ug-book.xml])
AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])
AC_OUTPUT