X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=aclocal.m4;h=0fb7fcd00643e1370d3b36c30bc7f08153999e49;hb=9c9c4ea91664b802dff3b580f21ea1f3c3ccb369;hp=564bcca8a61074e011704043741fd61ceed616a4;hpb=007ad2be2af3375088b3ec774578cc6a1d218ff6;p=ghc-hetmet.git diff --git a/aclocal.m4 b/aclocal.m4 index 564bcca..0fb7fcd 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -117,22 +117,60 @@ AC_DEFUN([FP_COMPUTE_INT], AC_DEFUN([FP_CHECK_ALIGNMENT], [AS_LITERAL_IF([$1], [], [AC_FATAL([$0: requires literal arguments])])[]dnl -AC_CHECK_TYPE([$1], [], [], [$3]) -AC_CACHE_CHECK([alignment of $1], AS_TR_SH([fp_cv_alignment_$1]), +AC_CHECK_TYPE([$1], [], [], [$3])[]dnl +m4_pushdef([fp_Cache], [AS_TR_SH([fp_cv_alignment_$1])])[]dnl +AC_CACHE_CHECK([alignment of $1], [fp_Cache], [if test "$AS_TR_SH([ac_cv_type_$1])" = yes; then FP_COMPUTE_INT([(long) (&((struct { char c; $1 ty; } *)0)->ty)], - [AS_TR_SH([fp_cv_alignment_$1])], + [fp_Cache], [AC_INCLUDES_DEFAULT([$3])], [AC_MSG_ERROR([cannot compute alignment ($1) See `config.log' for more details.], [77])]) else - AS_TR_SH([fp_cv_alignment_$1])=0 -fi])dnl -AC_DEFINE_UNQUOTED(AS_TR_CPP(alignment_$1), $AS_TR_SH([fp_cv_alignment_$1]), - [The alignment of a `$1'.]) + fp_Cache=0 +fi])[]dnl +AC_DEFINE_UNQUOTED(AS_TR_CPP(alignment_$1), $fp_Cache, [The alignment of a `$1'.])[]dnl +m4_popdef([fp_Cache])[]dnl ])# FP_CHECK_ALIGNMENT +# FP_CHECK_CONST(EXPRESSION, [INCLUDES = DEFAULT-INCLUDES], [VALUE-IF-FAIL = -1]) +# --------------------------------------------------------------------------------- +# Defines CONST_EXPRESSION to the value of the compile-time EXPRESSION, using +# INCLUDES. If the value cannot be determined, use VALUE-IF-FAIL. +AC_DEFUN([FP_CHECK_CONST], +[AS_VAR_PUSHDEF([fp_Cache], [fp_cv_const_$1])[]dnl +AC_CACHE_CHECK([value of $1], fp_Cache, +[FP_COMPUTE_INT([$1], fp_check_const_result, [AC_INCLUDES_DEFAULT([$2])], + [fp_check_const_result=m4_default([$3], ['-1'])]) +AS_VAR_SET(fp_Cache, [$fp_check_const_result])])[]dnl +AC_DEFINE_UNQUOTED(AS_TR_CPP([CONST_$1]), AS_VAR_GET(fp_Cache), [The value of $1.])[]dnl +AS_VAR_POPDEF([fp_Cache])[]dnl +])# FP_CHECK_CONST + + +# FP_CHECK_CONSTS_TEMPLATE(EXPRESSION...) +# ---------------------------------- +# autoheader helper for FP_CHECK_CONSTS +m4_define([FP_CHECK_CONSTS_TEMPLATE], +[AC_FOREACH([fp_Const], [$1], + [AH_TEMPLATE(AS_TR_CPP(CONST_[]fp_Const), + [The value of ]fp_Const[.])])[]dnl +])# FP_CHECK_CONSTS_TEMPLATE + + +# FP_CHECK_CONSTS(EXPRESSION..., [INCLUDES = DEFAULT-INCLUDES], [VALUE-IF-FAIL = -1]) +# ------------------------------------------------------------------------------------- +# List version of FP_CHECK_CONST +AC_DEFUN(FP_CHECK_CONSTS, +[FP_CHECK_CONSTS_TEMPLATE([$1])dnl +for fp_const_name in $1 +do +FP_CHECK_CONST([$fp_const_name], [$2], [$3]) +done +])# FP_CHECK_CONSTS + + dnl ** check for leading underscores in symbol names dnl dnl Test for determining whether symbol names have a leading @@ -200,59 +238,56 @@ YES) AC_DEFINE([LEADING_UNDERSCORE], [1], [Define to 1 if C symbols have a leadi esac ]) -dnl -dnl FPTOOLS_PROG_CHECK_VERSION(VERSIONSTR1, TEST, VERSIONSTR2, -dnl ACTION-IF-TRUE [, ACTION-IF-FALSE]) -dnl -dnl compare versions field-wise (separator is '.') -dnl TEST is one of {-lt,-le,-eq,-ge,-gt} -dnl -dnl quite shell-independant and SUSv2 compliant code -dnl -dnl NOTE: the loop could be unrolled within autoconf, but the -dnl macro code would be a) longer and b) harder to debug... ;) -dnl -AC_DEFUN(FPTOOLS_PROG_CHECK_VERSION, -[if ( IFS="."; - a="[$1]"; b="[$3]"; - while test -n "$a$b" - do - set -- [$]a; h1="[$]1"; shift 2>/dev/null; a="[$]*" - set -- [$]b; h2="[$]1"; shift 2>/dev/null; b="[$]*" - test -n "[$]h1" || h1=0; test -n "[$]h2" || h2=0 - test [$]{h1} -eq [$]{h2} || break - done - test [$]{h1} [$2] [$]{h2} - ) -then ifelse([$4],,[:],[ - $4]) -ifelse([$5],,, -[else - $5]) -fi -])])dnl + +# FP_COMPARE_VERSIONS(VERSION1, TEST, VERSION2, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +# ---------------------------------------------------------------------------------- +# Compare dotted version numbers VERSION1 and VERSION2 lexicographically according +# to TEST (one of -eq, -ne, -lt, -le, -gt, or -ge). +AC_DEFUN([FP_COMPARE_VERSIONS], +[fp_version1=$1; fp_version2=$3 +fp_save_IFS=$IFS; IFS='.' +while test x"$fp_version1" != x || test x"$fp_version2" != x +do + + set dummy $fp_version1; shift + fp_num1="" + test $[@%:@] = 0 || { fp_num1="[$]1"; shift; } + test x"$fp_num1" = x && fp_num1="0" + fp_version1="[$]*" + + set dummy $fp_version2; shift + fp_num2="" + test $[@%:@] = 0 || { fp_num2="[$]1"; shift; } + test x"$fp_num2" = x && fp_num2="0" + fp_version2="[$]*" + + test "$fp_num1" = "$fp_num2" || break; +done +IFS=$fp_save_IFS +AS_IF([test "$fp_num1" $2 "$fp_num2"], [$4], [$5])[]dnl +])# FP_COMPARE_VERSIONS dnl -dnl Check for Greencard and version. +dnl Check for GreenCard and version. dnl AC_DEFUN(FPTOOLS_GREENCARD, [ -AC_PATH_PROG(GreencardCmd,greencard) +AC_PATH_PROG(GreenCardCmd,greencard) AC_CACHE_CHECK([for version of greencard], fptools_cv_greencard_version, changequote(, )dnl -[if test x"$GreencardCmd" != x; then - fptools_cv_greencard_version="`$GreencardCmd --version | +[if test x"$GreenCardCmd" != x; then + fptools_cv_greencard_version="`$GreenCardCmd --version | grep 'version' | sed -e 's/greencard. version \([^ ]*\).*/\1/g'`" else fptools_cv_greencard_version="" fi changequote([, ])dnl ]) -FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_greencard_version],-lt,$1, - [AC_MSG_ERROR([greencard version $1 or later is required (found '$fptools_cv_greencard_version')])])dnl -GreencardVersion=$fptools_cv_greencard_version -AC_SUBST(GreencardVersion) +FP_COMPARE_VERSIONS([$fptools_cv_greencard_version],[-lt],[$1], + [AC_MSG_ERROR([greencard version $1 or later is required (found '$fptools_cv_greencard_version')])])[]dnl +GreenCardVersion=$fptools_cv_greencard_version +AC_SUBST(GreenCardVersion) ]) dnl @@ -283,8 +318,8 @@ fi; changequote([, ])dnl ]) if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Parser.hs; then - FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_happy_version],-lt,[1.13], - [AC_MSG_ERROR([Happy version 1.13 or later is required to compile GHC.])])dnl + FP_COMPARE_VERSIONS([$fptools_cv_happy_version],[-lt],[1.13], + [AC_MSG_ERROR([Happy version 1.13 or later is required to compile GHC.])])[]dnl fi HappyVersion=$fptools_cv_happy_version; AC_SUBST(HappyVersion) @@ -338,8 +373,8 @@ fi; changequote([, ])dnl ]) dnl if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Lexer.hs; then -dnl FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_alex_version],-lt,[2.0], -dnl [AC_MSG_ERROR([Alex version 2.0 or later is required to compile GHC.])])dnl +dnl FP_COMPARE_VERSIONS([$fptools_cv_alex_version],[-lt],[2.0], +dnl [AC_MSG_ERROR([Alex version 2.0 or later is required to compile GHC.])])[]dnl dnl fi AlexVersion=$fptools_cv_alex_version; AC_SUBST(AlexVersion) @@ -471,15 +506,14 @@ changequote(, )dnl gcc_version_str="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1\.\2/g' `" changequote([, ])dnl fptools_cv_have_gcc='yes' - FPTOOLS_PROG_CHECK_VERSION($gcc_version_str, -lt, "2.0", - fptools_cv_have_gcc='no' + FP_COMPARE_VERSIONS([$gcc_version_str], [-lt], [2.0], + [fptools_cv_have_gcc='no' echo "" echo "your gcc version appears to be ..." $CC --version echo "gcc prior to 2.0 and have never worked with ghc." echo "we recommend 2.95.3, although versions back to 2.7.2 should be ok." - AC_MSG_ERROR([gcc 1.X has never been supported]) - ) + AC_MSG_ERROR([gcc 1.X has never been supported])]) fi ]) HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'` @@ -492,17 +526,15 @@ dnl -momit-leaf-frame-pointer on by default. If this is the case, we dnl need to turn it off for mangling to work. The test is currently a bit dnl crude, using only the version number of gcc. dnl -AC_DEFUN(FPTOOLS_GCC_NEEDS_NO_OMIT_LFPTR, -[AC_CACHE_CHECK([whether gcc needs -mno-omit-leaf-frame-pointer], fptools_cv_gcc_needs_no_omit_lfptr, -[ - fptools_cv_gcc_needs_no_omit_lfptr='no' - FPTOOLS_PROG_CHECK_VERSION($gcc_version_str, -ge, "3.2", - fptools_cv_gcc_needs_no_omit_lfptr='yes') -]) +AC_DEFUN([FPTOOLS_GCC_NEEDS_NO_OMIT_LFPTR], +[AC_CACHE_CHECK([whether gcc needs -mno-omit-leaf-frame-pointer], [fptools_cv_gcc_needs_no_omit_lfptr], +[FP_COMPARE_VERSIONS([$gcc_version_str], [-ge], [3.2], + [fptools_cv_gcc_needs_no_omit_lfptr=yes], + [fptools_cv_gcc_needs_no_omit_lfptr=no])]) if test "$fptools_cv_gcc_needs_no_omit_lfptr" = "yes"; then AC_DEFINE([HAVE_GCC_MNO_OMIT_LFPTR], [1], [Define to 1 if gcc supports -mno-omit-leaf-frame-pointer.]) -fi -]) +fi])# FPTOOLS_GCC_NEEDS_NO_OMIT_LFPTR + dnl Small feature test for perl version. Assumes PerlCmd dnl contains path to perl binary @@ -705,82 +737,6 @@ undefine([AC_CV_NAME])dnl ]) -dnl ** Obtain the value of a C constant. -dnl The value will be `(-1)' if the constant is undefined. -dnl -dnl This is set up so that the argument can be a shell variable. -dnl -AC_DEFUN(FPTOOLS_CHECK_CCONST, -[ -eval "cv_name=ac_cv_cconst_$1" -AC_MSG_CHECKING(value of $1) -AC_CACHE_VAL($cv_name, -[AC_TRY_RUN([#include -#include -main() -{ - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", $1); - exit(0); -}], -eval "$cv_name=`cat conftestval`", -eval "$cv_name=-1", -eval "$cv_name=-1")])dnl -eval "fptools_check_cconst_result=`echo '$'{$cv_name}`" -AC_MSG_RESULT($fptools_check_cconst_result) -AC_DEFINE_UNQUOTED(CCONST_$1, $fptools_check_cconst_result, [The value of $1.]) -unset fptools_check_cconst_result -]) - - -# FP_CHECK_CCONSTS_TEMPLATE(CONST...) -# ----------------------------------- -m4_define([FP_CHECK_CCONSTS_TEMPLATE], -[AC_FOREACH([FP_Const], [$1], - [AH_TEMPLATE(AS_TR_CPP(CCONST_[]FP_Const), - [The value of ]FP_Const[.])])[]dnl -])# FP_CHECK_CCONSTS_TEMPLATE - - -dnl ** Invoke AC_CHECK_CCONST on each argument (which have to separate with -dnl spaces) -dnl -AC_DEFUN(FPTOOLS_CHECK_CCONSTS, -[FP_CHECK_CCONSTS_TEMPLATE([$1])dnl -for ac_const_name in $1 -do -FPTOOLS_CHECK_CCONST($ac_const_name)dnl -done -]) - - -dnl *** Can we open files in binary mode? *** -dnl -AC_DEFUN(FPTOOLS_O_BINARY, -[ -AC_REQUIRE([AC_PROG_CC]) -AC_MSG_CHECKING(whether we can open files in binary mode) -AC_CACHE_VAL(fptools_cv_have_o_binary, -[ -AC_LANG_SAVE -AC_LANG_C -AC_TRY_COMPILE( -[#ifdef HAVE_FCNTL_H -#include -#endif], -[int x = O_BINARY;], -fptools_cv_have_o_binary=yes, -fptools_cv_have_o_binary=no) -AC_LANG_RESTORE -]) -AC_MSG_RESULT($fptools_cv_have_o_binary) -if test "$fptools_cv_have_o_binary" = yes; then - AC_DEFINE([HAVE_O_BINARY], [1], [Define to 1 if fcntl.h defines O_BINARY.]) -fi -]) - - dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)