X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=aclocal.m4;h=f2762b30b862d69b0230cfb3196970f4ca19e5c9;hp=9d1e1cab9b0228665917e32a19228e3a63bd7ab7;hb=8a2809c29de9f23eba7ca682b48390033a9d40f6;hpb=51f782f416a8aa05153a9f2dcef34d8bcb79f1ed diff --git a/aclocal.m4 b/aclocal.m4 index 9d1e1ca..f2762b3 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -168,6 +168,10 @@ case $HostPlatform in alpha-dec-osf*) fptools_cv_leading_underscore=no;; *cygwin32) fptools_cv_leading_underscore=yes;; *mingw32) fptools_cv_leading_underscore=yes;; + + # HACK: Apple doesn't seem to provide nlist in the 64-bit-libraries +x86_64-apple-darwin*) fptools_cv_leading_underscore=yes;; + *) AC_RUN_IFELSE([AC_LANG_SOURCE([[#ifdef HAVE_NLIST_H #include struct nlist xYzzY1[] = {{"xYzzY1", 0},{0}}; @@ -315,24 +319,30 @@ AC_SUBST(AlexVersion) # Sets the output variable LdCmd to the (non-Cygwin version of the) full path # of ld. Exits if no ld can be found AC_DEFUN([FP_PROG_LD], -[AC_PATH_PROG([fp_prog_ld_raw], [ld]) -if test -z "$fp_prog_ld_raw"; then - AC_MSG_ERROR([cannot find ld in your PATH, no idea how to link]) +[ +if test -z "$1" +then + AC_PATH_PROG([fp_prog_ld_raw], [ld]) + if test -z "$fp_prog_ld_raw"; then + AC_MSG_ERROR([cannot find ld in your PATH, no idea how to link]) + fi + LdCmd=$fp_prog_ld_raw + case $HostPlatform in + *mingw32) if test x${OSTYPE} != xmsys; then + LdCmd="`cygpath -w ${fp_prog_ld_raw} | sed -e 's@\\\\@/@g'`" + AC_MSG_NOTICE([normalized ld command to $LdCmd]) + fi + # Insist on >= ld-2.15.x, since earlier versions doesn't handle + # the generation of relocatable object files with large amounts + # of relocations correctly. (cf. HSbase.o splittage-hack) + fp_prog_ld_version=`${LdCmd} --version | sed -n '/GNU ld/p' | tr -cd 0-9 | cut -b1-3` + FP_COMPARE_VERSIONS([$fp_prog_ld_version],[-lt],[214], + [AC_MSG_ERROR([GNU ld version later than 2.14 required to compile GHC on Windows.])])[]dnl + ;; + esac +else + LdCmd="$1" fi -LdCmd=$fp_prog_ld_raw -case $HostPlatform in - *mingw32) if test x${OSTYPE} != xmsys; then - LdCmd="`cygpath -w ${fp_prog_ld_raw} | sed -e 's@\\\\@/@g'`" - AC_MSG_NOTICE([normalized ld command to $LdCmd]) - fi - # Insist on >= ld-2.15.x, since earlier versions doesn't handle - # the generation of relocatable object files with large amounts - # of relocations correctly. (cf. HSbase.o splittage-hack) - fp_prog_ld_version=`${LdCmd} --version | sed -n '/GNU ld/p' | tr -cd 0-9 | cut -b1-3` - FP_COMPARE_VERSIONS([$fp_prog_ld_version],[-lt],[214], - [AC_MSG_ERROR([GNU ld version later than 2.14 required to compile GHC on Windows.])])[]dnl - ;; -esac AC_SUBST([LdCmd]) ])# FP_PROG_LD @@ -601,6 +611,15 @@ echo foo > conftest.txt $fp_prog_find conftest.txt -print > conftest.out 2>&1 if grep '^conftest.txt$' conftest.out > /dev/null 2>&1 ; then # OK, looks like a real "find". + case $HostPlatform in + *mingw32) + if test x${OSTYPE} != xmsys + then + fp_prog_find="`cygpath --mixed ${fp_prog_find}`" + AC_MSG_NOTICE([normalized find command to $fp_prog_find]) + fi ;; + *) ;; + esac FindCmd="$fp_prog_find" else # Found a poor WinDoze version of "find", ignore it. @@ -950,10 +969,45 @@ if test "$fp_cv_gcc_has_no_unit_at_a_time" = "yes"; then AC_DEFINE([HAVE_GCC_HAS_NO_UNIT_AT_A_TIME], [1], [Define to 1 if gcc supports -fno-unit-at-a-time.]) fi]) +# FP_GCC_HAS_WRAPV +# -------------------------- +AC_DEFUN([FP_GCC_HAS_WRAPV], +[AC_REQUIRE([FP_HAVE_GCC]) +AC_CACHE_CHECK([whether gcc has -fwrapv], [fp_cv_gcc_has_wrapv], +[FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [3.4], + [fp_cv_gcc_has_wrapv=yes], + [fp_cv_gcc_has_wrapv=no])]) +if test "$fp_cv_gcc_has_wrapv" = "yes"; then + AC_DEFINE([HAVE_GCC_HAS_WRAPV], [1], [Define to 1 if gcc supports -fwrapv.]) +fi]) + # FP_SETUP_PROJECT_VERSION # --------------------- AC_DEFUN([FP_SETUP_PROJECT_VERSION], -[# Some renamings +[ +if test "$RELEASE" = "NO"; then + AC_MSG_CHECKING([for GHC version date]) + if test -f VERSION_DATE; then + PACKAGE_VERSION=${PACKAGE_VERSION}.`cat VERSION_DATE` + AC_MSG_RESULT(given $PACKAGE_VERSION) + elif test -d _darcs; then + changequote(, )dnl + ver_date=`darcs changes --quiet --no-summary --xml | head -500 | grep 'date=' | sed "s/^.*date='\([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\).*$/\1/g" | sort -n | tail -1` + if echo $ver_date | grep '^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$' 2>&1 >/dev/null; then true; else + changequote([, ])dnl + AC_MSG_ERROR([failed to detect version date: check that darcs is in your path]) + fi + PACKAGE_VERSION=${PACKAGE_VERSION}.$ver_date + AC_MSG_RESULT(inferred $PACKAGE_VERSION) + elif test -f VERSION; then + PACKAGE_VERSION=`cat VERSION` + AC_MSG_RESULT(given $PACKAGE_VERSION) + else + AC_MSG_WARN([cannot determine snapshot version: no _darcs directory and no VERSION file]) + fi +fi + +# Some renamings AC_SUBST([ProjectName], [$PACKAGE_NAME]) AC_SUBST([ProjectVersion], [$PACKAGE_VERSION]) @@ -980,4 +1034,131 @@ ProjectPatchLevel=`echo $ProjectPatchLevel | sed 's/\.//'` AC_SUBST([ProjectPatchLevel]) ])# FP_SETUP_PROJECT_VERSION +AC_DEFUN([FP_CHECK_TIMER_CREATE], + [AC_CACHE_CHECK([for a working timer_create(CLOCK_REALTIME)], + [fptools_cv_timer_create_works], + [AC_TRY_RUN([ +#ifdef HAVE_TIME_H +#include +#endif +#ifdef HAVE_SIGNAL_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +int main(int argc, char *argv[]) +{ +#if HAVE_TIMER_CREATE && HAVE_TIMER_SETTIME + struct sigevent ev; + timer_t timer; + ev.sigev_notify = SIGEV_SIGNAL; + ev.sigev_signo = SIGVTALRM; + if (timer_create(CLOCK_PROCESS_CPUTIME_ID, &ev, &timer) != 0) { + exit(1); + } +#else + exit(1) +#endif + exit(0); +} + ], + [fptools_cv_timer_create_works=yes], + [fptools_cv_timer_create_works=no]) + ]) +case $fptools_cv_timer_create_works in + yes) AC_DEFINE([USE_TIMER_CREATE], 1, + [Define to 1 if we can use timer_create(CLOCK_PROCESS_CPUTIME_ID,...)]);; +esac +]) + +# FP_ARG_GMP +# ------------- +AC_DEFUN([FP_ARG_GMP], +[ +AC_ARG_WITH([gmp-includes], + [AC_HELP_STRING([--with-gmp-includes], + [directory containing gmp.h])], + [gmp_includes=$withval], + [gmp_includes=NONE]) + +AC_ARG_WITH([gmp-libraries], + [AC_HELP_STRING([--with-gmp-libraries], + [directory containing gmp library])], + [gmp_libraries=$withval], + [gmp_libraries=NONE]) +])# FP_ARG_GMP + +AC_DEFUN([CHECK_GMP], +[AC_REQUIRE([AC_PROG_CPP]) +AC_REQUIRE([AC_PROG_CC]) +]) + +# -------------------------------------------------------------- +# Calculate absolute path to build tree +# -------------------------------------------------------------- + +AC_DEFUN([FP_FIND_ROOT],[ +AC_MSG_CHECKING(for path to top of build tree) + +hardtop=`pwd` + +dnl Remove common automounter nonsense +dnl +hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|' | sed 's|^//\(.\)/|\1:/|' ` + +dnl Find 'hardtop_plat', the native format for 'hardtop' +dnl (i.e., right kind of \dnl slashes on a Win32 box, but with b-slashes +dnl being escaped). +dnl +dnl Note OSTYPE: On Cygwin we need to use 'cygpath' to convert +dnl /cygdrive/c/foo to c:/foo but we must not do that if we +dnl aren't building using Cygwin (notably msys), because +dnl cygpath doesn't exist. It seems that 'bash' sets +dnl OSTYPE to 'cygwin' or 'msys' respectively, but cygwin's +dnl 'sh' does not. So we hackily assume that if the shell +dnl hasn't set it to 'msys' then we must be in Cygwin. +dnl Sigh. +dnl +dnl The Right Thing is probably to test $BuildPlatform +dnl instead, but we are sloppy about setting that correctly +dnl at the moment, so we just work around for now. +dnl +dnl The quotes round "$(OSTYPE)" are essential, for the +dnl Cygwin-sh case where OSTYPE is not set. +case $HostPlatform in + i386-unknown-mingw32 | i386-unknown-cygwin32) + if test "${OSTYPE}" != "msys" + then + # convert $hardtop to a path that mingw will understand too + cyghardtop=${hardtop} + hardtop=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@/@g'` + hardtop_plat=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@\\\\\\\\@g'` + else +dnl OK, so we're in the MSYS case. hardtop looks like /c/.... +dnl We want to make hardtop_plat into c:/... +dnl Stop using [] for quotes temporarily, so we can use [] in the sed regexp +changequote(, )dnl + hardtop_plat=`echo ${hardtop} | sed -e 's@^/\\([a-zA-Z]\\)/@\\1:/@g'` +changequote([, ])dnl + fi + ;; + *) + hardtop_plat=${hardtop} + ;; +esac +AC_SUBST(hardtop) +AC_SUBST(hardtop_plat) + +AC_MSG_RESULT(${hardtop}) + +# We don't support building in directories with spaces. +case "$hardtop" in + *' '*) AC_MSG_ERROR([ + The build system does not support building in a directory containing + space characters. Suggestion: move the build tree somewhere else.]) + ;; +esac +]) + # LocalWords: fi