X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=aclocal.m4;h=3f0ec004fccd6fdcc5820bd370878228f2971886;hp=db0904beb047092fe2a47f5fdacdb5145ca37b89;hb=a9afdc24b1b2bbe63d71e8e2890770edfa8a6a8d;hpb=9b568f44572383f07ce0f7bf9ab9478410262475 diff --git a/aclocal.m4 b/aclocal.m4 index db0904b..3f0ec00 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -44,38 +44,6 @@ AC_DEFUN([FP_EVAL_STDERR], ])# FP_EVAL_STDERR -# FP_CHECK_FLAG(FLAG, [ACTION-IF-SUPPORTED], [ACTION-IF-NOT-SUPPORTED]) -# --------------------------------------------------------------------- -# Check to see whether the compiler for the current language supports a -# particular option. -# -# Implementation note: When given an unkown option, GCC issues an warning on -# stderr only, but returns an exit value of 0 nevertheless. Consequently we have -# to check stderr *and* the exit value. -# -# Used by ghc. -AC_DEFUN([FP_CHECK_FLAG], -[AC_LANG_COMPILER_REQUIRE()dnl -AC_LANG_CASE([C], [fp_compiler="$CC" m4_pushdef([fp_Flags], [CFLAGS])], - [C++], [fp_compiler="$CXX" m4_pushdef([fp_Flags], [CXXFLAGS])], - [Fortran 77], [fp_compiler="$F77" m4_pushdef([fp_Flags], [FFLAGS])]) -m4_pushdef([fp_Cache], [fp_cv_[]fp_Flags[]AS_TR_SH([$1])])[]dnl -AC_CACHE_CHECK([whether $fp_compiler accepts $1], [fp_Cache], -[AC_LANG_CONFTEST([AC_LANG_PROGRAM()]) -fp_save_flags="$fp_Flags" -fp_Flags="$fp_Flags $1" -fp_Cache=no -if FP_EVAL_STDERR([$ac_compile conftest.$ac_ext]) >/dev/null; then - test -s conftest.err || fp_Cache=yes -fi -fp_Flags="$fp_save_flags" -rm -f conftest.err conftest.$ac_ext]) -AS_IF([test $fp_Cache = yes], [$2], [$3])[]dnl -m4_popdef([fp_Cache])[]dnl -m4_popdef([fp_Flags])[]dnl -])# FP_CHECK_FLAG - - # FP_PROG_CONTEXT_DIFF # -------------------- # Figure out how to do context diffs. Sets the output variable ContextDiffCmd. @@ -88,7 +56,7 @@ AC_DEFUN([FP_PROG_CONTEXT_DIFF], [echo foo > conftest1 echo foo > conftest2 fp_cv_context_diff=no -for fp_var in '-C 1' '-c1' +for fp_var in '-U 1' '-u1' '-C 1' '-c1' do if diff $fp_var conftest1 conftest2 > /dev/null 2>&1; then fp_cv_context_diff="diff $fp_var" @@ -256,6 +224,16 @@ dnl for a happy source tree and point the build system at that instead. dnl AC_DEFUN([FPTOOLS_HAPPY], [AC_PATH_PROG(HappyCmd,happy,) +# Happy is passed to Cabal, so we need a native path +if test "x$HostPlatform" = "xi386-unknown-mingw32" && \ + test "${OSTYPE}" != "msys" && \ + test "${HappyCmd}" != "" +then + # Canonicalise to :/path/to/gcc + HappyCmd=`cygpath -m ${HappyCmd}` + AC_MSG_NOTICE([normalized happy command to $HappyCmd]) +fi + AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version, changequote(, )dnl [if test x"$HappyCmd" != x; then @@ -285,6 +263,15 @@ dnl Darn, I forgot to make Haddock print out its version number when dnl invoked with -v. We could try generating some HTML and grepping dnl through that to find the version number, but I think we'll make dnl do without it for now. +# Haddock is passed to Cabal, so we need a native path +if test "x$HostPlatform" = "xi386-unknown-mingw32" && \ + test "${OSTYPE}" != "msys" && \ + test "${HaddockCmd}" != "" +then + # Canonicalise to :/path/to/gcc + HaddockCmd=`cygpath -m ${HaddockCmd}` + AC_MSG_NOTICE([normalized haddock command to $HaddockCmd]) +fi ]) dnl @@ -294,6 +281,15 @@ dnl AC_DEFUN([FPTOOLS_ALEX], [ AC_PATH_PROG(AlexCmd,alex,) +# Alex is passed to Cabal, so we need a native path +if test "x$HostPlatform" = "xi386-unknown-mingw32" && \ + test "${OSTYPE}" != "msys" && \ + test "${AlexCmd}" != "" +then + # Canonicalise to :/path/to/gcc + AlexCmd=`cygpath -m ${AlexCmd}` +fi + AC_CACHE_CHECK([for version of alex], fptools_cv_alex_version, changequote(, )dnl [if test x"$AlexCmd" != x; then @@ -922,18 +918,18 @@ else fi])# FP_PROG_GHC_PKG -# FP_GHC_HAS_READLINE +# FP_GHC_HAS_EDITLINE # ------------------- -AC_DEFUN([FP_GHC_HAS_READLINE], +AC_DEFUN([FP_GHC_HAS_EDITLINE], [AC_REQUIRE([FP_PROG_GHC_PKG]) -AC_CACHE_CHECK([whether ghc has readline package], [fp_cv_ghc_has_readline], -[if "${GhcPkgCmd-ghc-pkg}" --show-package readline >/dev/null 2>&1; then - fp_cv_ghc_has_readline=yes +AC_CACHE_CHECK([whether ghc has editline package], [fp_cv_ghc_has_editline], +[if "${GhcPkgCmd-ghc-pkg}" --show-package editline >/dev/null 2>&1; then + fp_cv_ghc_has_editline=yes else - fp_cv_ghc_has_readline=no + fp_cv_ghc_has_editline=no fi]) -AC_SUBST([GhcHasReadline], [`echo $fp_cv_ghc_has_readline | sed 'y/yesno/YESNO/'`]) -])# FP_GHC_HAS_READLINE +AC_SUBST([GhcHasEditline], [`echo $fp_cv_ghc_has_editline | sed 'y/yesno/YESNO/'`]) +])# FP_GHC_HAS_EDITLINE # FP_GCC_EXTRA_FLAGS @@ -972,6 +968,11 @@ AC_CACHE_CHECK([for extra options to pass gcc when compiling via C], [fp_cv_gcc_ )], []) ;; + sparc-*-solaris2) + FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [4.2], + [fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -fno-toplevel-reorder"], + []) + ;; esac ]) AC_SUBST([GccExtraViaCOpts],$fp_cv_gcc_extra_opts) @@ -1031,10 +1032,19 @@ ProjectPatchLevel=`echo $ProjectPatchLevel | sed 's/\.//'` AC_SUBST([ProjectPatchLevel]) ])# FP_SETUP_PROJECT_VERSION + +# Check for a working timer_create(). We need a pretty detailed check +# here, because there exist partially-working implementations of +# timer_create() in certain versions of Linux (see bug #1933). +# AC_DEFUN([FP_CHECK_TIMER_CREATE], [AC_CACHE_CHECK([for a working timer_create(CLOCK_REALTIME)], [fptools_cv_timer_create_works], [AC_TRY_RUN([ +#include +#ifdef HAVE_STDLIB_H +#include +#endif #ifdef HAVE_TIME_H #include #endif @@ -1044,19 +1054,103 @@ AC_DEFUN([FP_CHECK_TIMER_CREATE], #ifdef HAVE_UNISTD_H #include #endif + +static volatile int tock = 0; +static void handler(int i) +{ + tock = 1; +} + +static void timeout(int i) +{ + // timer_settime() has been known to hang, so just in case + // we install a 1-second timeout (see #2257) + exit(99); +} + int main(int argc, char *argv[]) { -#if HAVE_TIMER_CREATE && HAVE_TIMER_SETTIME + struct sigevent ev; timer_t timer; + struct itimerspec it; + struct sigaction action; + int m,n,count = 0; + ev.sigev_notify = SIGEV_SIGNAL; ev.sigev_signo = SIGVTALRM; + + action.sa_handler = handler; + action.sa_flags = 0; + sigemptyset(&action.sa_mask); + if (sigaction(SIGVTALRM, &action, NULL) == -1) { + fprintf(stderr,"SIGVTALRM problem\n"); + exit(3); + } + + action.sa_handler = timeout; + action.sa_flags = 0; + sigemptyset(&action.sa_mask); + if (sigaction(SIGALRM, &action, NULL) == -1) { + fprintf(stderr,"SIGALRM problem\n"); + exit(3); + } + alarm(1); + if (timer_create(CLOCK_PROCESS_CPUTIME_ID, &ev, &timer) != 0) { + fprintf(stderr,"No CLOCK_PROCESS_CPUTIME_ID timer\n"); exit(1); } -#else - exit(1) -#endif + + it.it_value.tv_sec = 0; + it.it_value.tv_nsec = 1; + it.it_interval = it.it_value; + if (timer_settime(timer, 0, &it, NULL) != 0) { + fprintf(stderr,"settime problem\n"); + exit(4); + } + + tock = 0; + + for(n = 3; n < 20000; n++){ + for(m = 2; m <= n/2; m++){ + if (!(n%m)) count++; + if (tock) goto out; + } + } +out: + + if (!tock) { + fprintf(stderr,"no CLOCK_PROCESS_CPUTIME_ID signal\n"); + exit(5); + } + + timer_delete(timer); + + if (timer_create(CLOCK_REALTIME, &ev, &timer) != 0) { + fprintf(stderr,"No CLOCK_REALTIME timer\n"); + exit(2); + } + + it.it_value.tv_sec = 0; + it.it_value.tv_nsec = 1000000; + it.it_interval = it.it_value; + if (timer_settime(timer, 0, &it, NULL) != 0) { + fprintf(stderr,"settime problem\n"); + exit(4); + } + + tock = 0; + + usleep(3000); + + if (!tock) { + fprintf(stderr,"no CLOCK_REALTIME signal\n"); + exit(5); + } + + timer_delete(timer); + exit(0); } ], @@ -1091,6 +1185,35 @@ AC_DEFUN([CHECK_GMP], AC_REQUIRE([AC_PROG_CC]) ]) +# FP_CHECK_MACOSX_DEPLOYMENT_TARGET +# --------------------------------- +AC_DEFUN([FP_CHECK_MACOSX_DEPLOYMENT_TARGET], +[ +if test "x$TargetOS_CPP-$TargetVendor_CPP" = "xdarwin-apple"; then + AC_MSG_CHECKING([Mac OS X deployment target]) + case $FP_MACOSX_DEPLOYMENT_TARGET in + none) ;; + 10.4) MACOSX_DEPLOYMENT_VERSION=10.4 + MACOSX_DEPLOYMENT_SDK=/Developer/SDKs/MacOSX10.4u.sdk + ;; + 10.4u) MACOSX_DEPLOYMENT_VERSION=10.4 + MACOSX_DEPLOYMENT_SDK=/Developer/SDKs/MacOSX10.4u.sdk + ;; + *) MACOSX_DEPLOYMENT_VERSION=$FP_MACOSX_DEPLOYMENT_TARGET + MACOSX_DEPLOYMENT_SDK=/Developer/SDKs/MacOSX${FP_MACOSX_DEPLOYMENT_TARGET}.sdk + ;; + esac + if test "x$FP_MACOSX_DEPLOYMENT_TARGET" = "xnone"; then + AC_MSG_RESULT(none) + else + if test ! -d $MACOSX_DEPLOYMENT_SDK; then + AC_MSG_ERROR([Unknown deployment target $FP_MACOSX_DEPLOYMENT_TARGET]) + fi + AC_MSG_RESULT([${MACOSX_DEPLOYMENT_VERSION} (${MACOSX_DEPLOYMENT_SDK})]) + fi +fi +]) + # -------------------------------------------------------------- # Calculate absolute path to build tree # -------------------------------------------------------------- @@ -1121,10 +1244,7 @@ dnl Remove common automounter nonsense dnl hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|'` -hardtop_plat="$hardtop" - AC_SUBST(hardtop) -AC_SUBST(hardtop_plat) AC_MSG_RESULT(${hardtop})