X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=aclocal.m4;h=e7f51e62648152f2f777c72726f39e01595d4881;hb=e0933fa4f2f4950e42c8b3dedeaa6b1622c762d9;hp=d07f3652254f79893e7be4ee2f3542fa886b294d;hpb=9c75067ef972c8003dede073a68e953ed15c61ad;p=ghc-hetmet.git diff --git a/aclocal.m4 b/aclocal.m4 index d07f365..e7f51e6 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -4,11 +4,83 @@ # ensure we don't clash with any pre-supplied autoconf ones. -# FP_ALTZONE +# FP_EVAL_STDERR(COMMAND) +# ------------------------ +# Eval COMMAND, save its stderr (without lines resulting from shell tracing) +# into the file conftest.err and the exit status in the variable fp_status. +AC_DEFUN([FP_EVAL_STDERR], +[{ (eval $1) 2>conftest.er1 + fp_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + (exit $fp_status); }[]dnl +])# 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. +# +# Note: NeXTStep thinks diff'ing a file against itself is "trouble". +# +# Used by ghc, glafp-utils/ltx, and glafp-utils/runstdtest. +AC_DEFUN([FP_PROG_CONTEXT_DIFF], +[AC_CACHE_CHECK([for a working context diff], [fp_cv_context_diff], +[echo foo > conftest1 +echo foo > conftest2 +fp_cv_context_diff=no +for fp_var in '-C 1' '-c1' +do + if diff $fp_var conftest1 conftest2 > /dev/null 2>&1; then + fp_cv_context_diff="diff $fp_var" + break + fi +done]) +if test x"$fp_cv_context_diff" = xno; then + AC_MSG_ERROR([cannot figure out how to do context diffs]) +fi +AC_SUBST(ContextDiffCmd, [$fp_cv_context_diff]) +])# FP_PROG_CONTEXT_DIFF + + +# FP_DECL_ALTZONE # ------------------- # Defines HAVE_DECL_ALTZONE to 1 if declared, 0 otherwise. +# # Used by base package. -AC_DEFUN([FP_ALTZONE], +AC_DEFUN([FP_DECL_ALTZONE], [AC_REQUIRE([AC_HEADER_TIME])dnl AC_CHECK_HEADERS([sys/time.h]) AC_CHECK_DECLS([altzone], [], [],[#if TIME_WITH_SYS_TIME @@ -21,7 +93,7 @@ AC_CHECK_DECLS([altzone], [], [],[#if TIME_WITH_SYS_TIME # include # endif #endif]) -])# FP_ALTZONE +])# FP_DECL_ALTZONE # FP_COMPUTE_INT(EXPRESSION, VARIABLE, INCLUDES, IF-FAILS) @@ -29,8 +101,10 @@ AC_CHECK_DECLS([altzone], [], [],[#if TIME_WITH_SYS_TIME # Assign VARIABLE the value of the compile-time EXPRESSION using INCLUDES for # compilation. Execute IF-FAILS when unable to determine the value. Works for # cross-compilation, too. -# Note: We are lazy and use an internal autoconf macro, but it is supported in -# autoconf versions 2.50 up to the actual 2.57, so there is little risk. +# +# Implementation note: We are lazy and use an internal autoconf macro, but it +# is supported in autoconf versions 2.50 up to the actual 2.57, so there is +# little risk. AC_DEFUN([FP_COMPUTE_INT], [_AC_COMPUTE_INT([$1], [$2], [$3], [$4])[]dnl ])# FP_COMPUTE_INT @@ -42,22 +116,61 @@ AC_DEFUN([FP_COMPUTE_INT], # given type. Defines ALIGNMENT_TYPE. 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_FATAL([$0: requires literal arguments])])[]dnl +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_FAILURE([cannot compute alignment ($1), 77])]) + [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 @@ -121,7 +234,7 @@ esac); LeadingUnderscore=`echo $fptools_cv_lead_uscore | sed 'y/yesno/YESNO/'` AC_SUBST(LeadingUnderscore) case $LeadingUnderscore in -YES) AC_DEFINE(LEADING_UNDERSCORE);; +YES) AC_DEFINE([LEADING_UNDERSCORE], [1], [Define to 1 if C symbols have a leading underscore added by the compiler.]);; esac ]) @@ -270,31 +383,6 @@ AlexVersion=$fptools_cv_alex_version; AC_SUBST(AlexVersion) ]) -dnl -dnl What's the best way of doing context diffs? -dnl -dnl (NB: NeXTStep thinks diff'ing a file against itself is "trouble") -dnl -AC_DEFUN(FPTOOLS_PROG_DIFF, -[AC_CACHE_CHECK([for ok way to do context diffs], fptools_cv_context_diffs, -[echo foo > conftest1 -echo foo > conftest2 -if diff -C 1 conftest1 conftest2 > /dev/null 2>&1 ; then - fptools_cv_context_diffs='diff -C 1' -else - if diff -c1 conftest1 conftest2 > /dev/null 2>&1 ; then - fptools_cv_context_diffs='diff -c1' - else - echo "Can't figure out how to do context diffs." - echo "Neither \`diff -C 1' nor \`diff -c1' works." - exit 1 - fi -fi -rm -f conftest1 conftest2 -]) -ContextDiffCmd=$fptools_cv_context_diffs -AC_SUBST(ContextDiffCmd) -]) dnl dnl Check whether ld supports -x @@ -450,7 +538,7 @@ AC_DEFUN(FPTOOLS_GCC_NEEDS_NO_OMIT_LFPTR, fptools_cv_gcc_needs_no_omit_lfptr='yes') ]) if test "$fptools_cv_gcc_needs_no_omit_lfptr" = "yes"; then - AC_DEFINE(HAVE_GCC_MNO_OMIT_LFPTR) + AC_DEFINE([HAVE_GCC_MNO_OMIT_LFPTR], [1], [Define to 1 if gcc supports -mno-omit-leaf-frame-pointer.]) fi ]) @@ -649,51 +737,12 @@ main() { ifelse([$2], , AC_CV_NAME=NotReallyAType, AC_CV_NAME=$2), ifelse([$3], , AC_CV_NAME=NotReallyATypeCross, AC_CV_NAME=$3))]) dnl AC_MSG_RESULT($AC_CV_NAME) -AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME) +AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [Define to Haskell type for $1]) undefine([AC_TYPE_NAME])dnl 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) -unset fptools_check_cconst_result -]) - -dnl ** Invoke AC_CHECK_CCONST on each argument (which have to separate with -dnl spaces) -dnl -AC_DEFUN(FPTOOLS_CHECK_CCONSTS, -[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, @@ -715,7 +764,7 @@ 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) + AC_DEFINE([HAVE_O_BINARY], [1], [Define to 1 if fcntl.h defines O_BINARY.]) fi ]) @@ -1070,56 +1119,3 @@ dnl and we don't want to be global namespace polluters. ]) # LocalWords: fi - - -dnl -dnl Check to see whether CC (gcc) supports a particular option. -dnl -AC_DEFUN(FPTOOLS_CC_FLAG, -[ -AC_CACHE_CHECK([whether $CC accepts $1], [ac_cv_cc_$2], -[save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $1" - AC_LANG_C - AC_TRY_COMPILE(,[int main(){return(0);}], - [ac_cv_cc_$2=yes], - [ac_cv_cc_$2=no]) - CFLAGS="$save_CFLAGS" -]) -if test "$ac_cv_cc_$2"x = "yesx"; then - $2=$1; -else - $2=""; -fi; -]) - -dnl -dnl Check to see whether 'struct msghdr' contains msg_control -dnl -AC_DEFUN(FPTOOLS_MSGHDR_MSG_CONTROL, -[AC_CACHE_CHECK([for msg_control in struct msghdr], fptools_cv_struct_msghdr_msg_control, -[AC_TRY_COMPILE([#include -#include -#include ], [struct msghdr m; m.msg_control;], -fptools_cv_struct_msghdr_msg_control=yes, fptools_cv_struct_msghdr_msg_control=no)]) -if test $fptools_cv_struct_msghdr_msg_control = yes; then - AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL) -fi -AC_SUBST(HAVE_MSGHDR_MSG_CONTROL)dnl -]) - -dnl -dnl Check to see whether 'struct msghdr' contains msg_accrights -dnl -AC_DEFUN(FPTOOLS_MSGHDR_MSG_ACCRIGHTS, -[AC_CACHE_CHECK([for msg_accrights in struct msghdr], fptools_cv_struct_msghdr_msg_accrights, -[AC_TRY_COMPILE([#include -#include -#include ], [struct msghdr m; m.msg_accrights;], -fptools_cv_struct_msghdr_msg_accrights=yes, fptools_cv_struct_msghdr_msg_accrights=no)]) -if test $fptools_cv_struct_msghdr_msg_accrights = yes; then - AC_DEFINE(HAVE_MSGHDR_MSG_ACCRIGHTS) -fi -AC_SUBST(HAVE_MSGHDR_MSG_ACCRIGHTS)dnl -]) -