X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=aclocal.m4;h=797380915353814b4e27c8952d89d358cd3054d8;hb=03aa2ef64390090c64d0fcf81b1050a9f3a4a452;hp=9ae1145ddfd6d041f441cbd0461bd5acbbce355d;hpb=ef934baea32e045d799eb059d5371feb15cf111e;p=ghc-hetmet.git diff --git a/aclocal.m4 b/aclocal.m4 index 9ae1145..7973809 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,4 +1,4 @@ -dnl $Id: aclocal.m4,v 1.74 2001/06/25 05:25:31 sof Exp $ +dnl $Id: aclocal.m4,v 1.83 2001/09/20 14:08:13 sewardj Exp $ dnl dnl Extra autoconf macros for the Glasgow fptools dnl @@ -280,7 +280,9 @@ AC_SUBST(YaccCmd) dnl *** Checking for ar and its arguments + whether we need ranlib. dnl -dnl ArCmd and RANLIB are AC_SUBST'ed +dnl ArCmd, ArSupportsInput and RANLIB are AC_SUBST'ed +dnl On Digital UNIX, we test for the -Z (compress) and +dnl -input (take list of files from external file) flags. dnl AC_DEFUN(FPTOOLS_PROG_AR_AND_RANLIB, [AC_PATH_PROG(ArCmd,ar) @@ -288,7 +290,10 @@ if test -z "$ArCmd"; then echo "You don't seem to have ar in your PATH...I have no idea how to make a library" exit 1; fi -if $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then +if $ArCmd clqsZ conftest.a >/dev/null 2>/dev/null; then + ArCmd="$ArCmd clqsZ" + NeedRanLib='' +elif $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then ArCmd="$ArCmd clqs" NeedRanLib='' elif $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then @@ -310,6 +315,14 @@ fi rm -rf conftest* test -n "$ArCmd" && test -n "$verbose" && echo " setting ArCmd to $ArCmd" AC_SUBST(ArCmd) +if $ArCmd conftest.a -input /dev/null >/dev/null 2>/dev/null; then + ArSupportsInput='-input' +else + ArSupportsInput='' +fi +rm -rf conftest* +test -n "$ArSupportsInput" && test -n "$verbose" && echo " setting ArSupportsInput to $ArSupportsInput" +AC_SUBST(ArSupportsInput) if test -z "$NeedRanLib"; then RANLIB=':' test -n "$verbose" && echo " setting RANLIB to $RANLIB" @@ -350,14 +363,28 @@ AC_DEFUN(FPTOOLS_HAVE_GCC, fptools_cv_have_gcc='no' else changequote(, )dnl - cmd_string="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/expr 20 \\\< \1 \\\* 10 + \2/g' `" + is_gcc_v1="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/expr 2000 \\\>= \1 \\\* 1000 + \2/g' `" + is_gcc_v3="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/expr 3000 \\\<= \1 \\\* 1000 + \2/g' `" changequote([, ])dnl - if test `eval $cmd_string 2>/dev/null` != "1"; then - echo '' - echo "I'm not sure if your version of gcc will work," - echo "but it's worth a shot, eh?" - fi fptools_cv_have_gcc='yes' + if test `eval $is_gcc_v1 2>/dev/null` = "1"; then + 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]) + fi + if test `eval $is_gcc_v3 2>/dev/null` = "1"; then + fptools_cv_have_gcc='no' + echo "" + echo "your gcc version appears to be ..." + $CC --version + echo "gcc versions 3.0 and above are not yet supported." + echo "we recommend 2.95.3, although versions back to 2.7.2 should be ok." + AC_MSG_ERROR([gcc 3.0 and above is not currently supported]) + fi fi ]) HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'` @@ -386,6 +413,19 @@ rm -fr conftest* ]) dnl +dnl FPTOOLS_NOCACHE_CHECK prints a message, then sets the +dnl values of the second argument to the result of running +dnl the commands given by the third. It does not cache its +dnl result, so it is suitable for checks which should be +dnl run every time. +dnl +AC_DEFUN(FPTOOLS_NOCACHE_CHECK, +[AC_MSG_CHECKING([$1]) + $3 + AC_MSG_RESULT([$][$2]) +]) + +dnl dnl FPTOOLS_GHC_VERSION(version) dnl FPTOOLS_GHC_VERSION(major, minor [, patchlevel]) dnl FPTOOLS_GHC_VERSION(version, major, minor, patchlevel) @@ -394,47 +434,44 @@ dnl Test for version of installed ghc. Uses $GHC. dnl [original version pinched from c2hs] dnl AC_DEFUN(FPTOOLS_GHC_VERSION, -[define([FPTOOLS_CV_GHC_VERSION], [fptools_cv_ghc_version])dnl -AC_CACHE_CHECK([version of ghc], FPTOOLS_CV_GHC_VERSION, [dnl -${WithGhc-ghc} --version > conftestghc 2>&1 +[FPTOOLS_NOCACHE_CHECK([version of ghc], [fptools_version_of_ghc], +[${WithGhc-ghc} --version > conftestghc 2>&1 cat conftestghc >&AC_FD_CC -dnl `Useless Use Of cat' award... -changequote(<<, >>)dnl - FPTOOLS_CV_GHC_VERSION=`cat conftestghc | sed -n -e 's/, patchlevel *\([0-9]\)/.\1/;s/.* version \([0-9][0-9.]*\).*/\1/p'` -changequote([, ])dnl +#Useless Use Of cat award... + fptools_version_of_ghc=`cat conftestghc | sed -n -e 's/, patchlevel *\([[0-9]]\)/.\1/;s/.* version \([[0-9]][[0-9.]]*\).*/\1/p'` rm -fr conftest* - if test "[$]FPTOOLS_CV_GHC_VERSION" = "" + if test "[$]fptools_version_of_ghc" = "" then - FPTOOLS_CV_GHC_VERSION='unknown' - fi]) -changequote(<<, >>)dnl -FPTOOLS_CV_GHC_VERSION<<_major>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^\([0-9]\).*/\1/'` -FPTOOLS_CV_GHC_VERSION<<_minor>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^[0-9]\.\([0-9]*\).*/\1/'` -FPTOOLS_CV_GHC_VERSION<<_pl>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -n -e 's/^[0-9]\.[0-9]*\.\([0-9]*\)/\1/p'` -changequote([, ])dnl -if test "[$]FPTOOLS_CV_GHC_VERSION[_pl]" = "" + fptools_version_of_ghc='unknown' + fi +fptools_version_of_ghc[_major]=`echo [$]fptools_version_of_ghc | sed -e 's/^\([[0-9]]\).*/\1/'` +fptools_version_of_ghc[_minor]=`echo [$]fptools_version_of_ghc | sed -e 's/^[[0-9]]\.\([[0-9]]*\).*/\1/'` +fptools_version_of_ghc[_pl]=`echo [$]fptools_version_of_ghc | sed -n -e 's/^[[0-9]]\.[[0-9]]*\.\([[0-9]]*\)/\1/p'` +# +if test "[$]fptools_version_of_ghc[_pl]" = "" then - FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor]" - FPTOOLS_CV_GHC_VERSION[_pl]="0" + fptools_version_of_ghc[_all]="[$]fptools_version_of_ghc[_major].[$]fptools_version_of_ghc[_minor]" + fptools_version_of_ghc[_pl]="0" else - FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor].[$]FPTOOLS_CV_GHC_VERSION[_pl]" + fptools_version_of_ghc[_all]="[$]fptools_version_of_ghc[_major].[$]fptools_version_of_ghc[_minor].[$]fptools_version_of_ghc[_pl]" fi +# ifelse($#, [1], [dnl -[$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]" +[$1]="[$]fptools_version_of_ghc[_all]" ], $#, [2], [dnl -[$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]" -[$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]" +[$1]="[$]fptools_version_of_ghc[_major]" +[$2]="[$]fptools_version_of_ghc[_minor]" ], $#, [3], [dnl -[$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]" -[$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]" -[$3]="[$]FPTOOLS_CV_GHC_VERSION[_pl]" +[$1]="[$]fptools_version_of_ghc[_major]" +[$2]="[$]fptools_version_of_ghc[_minor]" +[$3]="[$]fptools_version_of_ghc[_pl]" ], $#, [4], [dnl -[$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]" -[$2]="[$]FPTOOLS_CV_GHC_VERSION[_major]" -[$3]="[$]FPTOOLS_CV_GHC_VERSION[_minor]" -[$4]="[$]FPTOOLS_CV_GHC_VERSION[_pl]" -], [AC_MSG_ERROR([wrong number of arguments to [$0]])])dnl -undefine([FPTOOLS_CV_GHC_VERSION])dnl +[$1]="[$]fptools_version_of_ghc[_all]" +[$2]="[$]fptools_version_of_ghc[_major]" +[$3]="[$]fptools_version_of_ghc[_minor]" +[$4]="[$]fptools_version_of_ghc[_pl]" +]) +]) ])dnl @@ -579,7 +616,7 @@ main() }], eval "$cv_name=`cat conftestval`", eval "$cv_name=-1", -ifelse([$2], , , eval "$cv_name=$2"))])dnl +eval "$cv_name=-1")])dnl eval "fptools_check_cconst_result=`echo '$'{$cv_name}`" AC_MSG_RESULT($fptools_check_cconst_result) AC_DEFINE_UNQUOTED($def_name, $fptools_check_cconst_result) @@ -640,63 +677,112 @@ fi dnl *** Helper function ** dnl -AC_DEFUN(FPTOOLS_IN_SCOPE,AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no)) +AC_DEFUN(FPTOOLS_IN_SCOPE, +[AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no) +]) dnl *** What's the end-of-text-section marker called? *** dnl -AC_DEFUN(FPTOOLS_END_TEXT_SECTION, -[AC_MSG_CHECKING([for end of text section marker]) -not_done=1 -for i in data_start _data_start etext _etext __etext; do - FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text) - if test "$fptools_end_of_text" = yes; then - AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, $i)) - AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, $i)) - not_done=0 - break - fi -done -if test "$not_done" = 1; then -FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text); -if test "$fptools_end_of_text" = yes; then - AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, etext)) - AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, etext asm("etext"))) -else - AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, dunno_what_it_is) - AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, dunno_what_it_is) -fi -fi -AC_MSG_RESULT([$]fptools_cv_end_of_text) -]) - +AC_DEFUN([FPTOOLS_END_TEXT_SECTION], +[AC_CACHE_CHECK([for end of text section marker], + [fptools_cv_end_of_text], + [fptools_cv_end_of_text="" + not_done=1 + for i in data_start _data_start etext _etext __etext; do + FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text) + if test "$fptools_end_of_text" = yes; then + fptools_cv_end_of_text=$i + not_done=0 + break + fi + done + if test "$not_done" = 1; then + FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text) + if test "$fptools_end_of_text" = yes; then + fptools_cv_end_of_text="etext" + fi + fi]) + if test -n "$fptools_cv_end_of_text"; then + AC_DEFINE_UNQUOTED([TEXT_SECTION_END_MARKER], $fptools_cv_end_of_text) + else + AC_DEFINE_UNQUOTED([TEXT_SECTION_END_MARKER], dunno_end_of_text) + fi + AC_CACHE_CHECK([for end of text section marker declaration], + [fptools_cv_end_of_text_decl], + [fptools_cv_end_of_text_decl="" + not_done=1 + for i in data_start _data_start etext _etext __etext; do + FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text_decl) + if test "$fptools_end_of_text_decl" = yes; then + fptools_cv_end_of_text_decl=$i + not_done=0 + break + fi + done + if test "$not_done" = 1; then + FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text_decl) + if test "$fptools_end_of_text_decl" = yes; then + fptools_cv_end_of_text_decl="etext asm(\"etext\")" + fi + fi]) + if test -n "$fptools_cv_end_of_text_decl"; then + AC_DEFINE_UNQUOTED([TEXT_SECTION_END_MARKER_DECL], $fptools_cv_end_of_text_decl) + else + AC_DEFINE_UNQUOTED([TEXT_SECTION_END_MARKER_DECL], dunno_end_of_text_decl) + fi +]) + dnl *** What's the end-of-data-section marker called? *** dnl -AC_DEFUN(FPTOOLS_END_DATA_SECTION, -[AC_MSG_CHECKING([for end of data section marker]) -not_done=1 -for i in end _end __end; do - FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data) - if test "$fptools_end_of_data" = yes; then - AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, $i)]) - AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, $i)]) - not_done=0 - break - fi -done -if test "$not_done" = 1; then -FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data); -if test "$fptools_end_of_data" = yes; then - AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, end asm("end"))]) - AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, end)]) -else - AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, dunno_what_it_is)]) - AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, dunno_what_it_is)]) -fi -fi -AC_MSG_RESULT([$]fptools_cv_end_of_data) -]) - - +AC_DEFUN([FPTOOLS_END_DATA_SECTION], +[AC_CACHE_CHECK([for end of data section marker], + [fptools_cv_end_of_data], + [fptools_cv_end_of_data="" + not_done=1 + for i in end _end __end; do + FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data) + if test "$fptools_end_of_data" = yes; then + fptools_cv_end_of_data=$i + not_done=0 + break + fi + done + if test "$not_done" = 1; then + FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data) + if test "$fptools_end_of_data" = yes; then + fptools_cv_end_of_data="end" + fi + fi]) + if test -n "$fptools_cv_end_of_data"; then + AC_DEFINE_UNQUOTED([DATA_SECTION_END_MARKER], $fptools_cv_end_of_data) + else + AC_DEFINE_UNQUOTED([DATA_SECTION_END_MARKER], dunno_end_of_data) + fi + AC_CACHE_CHECK([for end of data section marker declaration], + [fptools_cv_end_of_data_decl], + [fptools_cv_end_of_data_decl="" + not_done=1 + for i in end _end __end; do + FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data_decl) + if test "$fptools_end_of_data_decl" = yes; then + fptools_cv_end_of_data_decl=$i + not_done=0 + break + fi + done + if test "$not_done" = 1; then + FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data_decl) + if test "$fptools_end_of_data_decl" = yes; then + fptools_cv_end_of_data_decl="end asm(\"end\")" + fi + fi]) + if test -n "$fptools_cv_end_of_data_decl"; then + AC_DEFINE_UNQUOTED([DATA_SECTION_END_MARKER_DECL], $fptools_cv_end_of_data_decl) + else + AC_DEFINE_UNQUOTED([DATA_SECTION_END_MARKER_DECL], dunno_end_of_data_decl) + fi +]) + dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning @@ -772,7 +858,7 @@ AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN, dnl check for prototypes dnl -AC_DEFUN(AC_C_PROTOTYPES, +AC_DEFUN([AC_C_PROTOTYPES], [AC_CACHE_CHECK([prototypes], ac_cv_prototypes, [AC_TRY_COMPILE([ void foo(int); @@ -785,7 +871,7 @@ return; ac_cv_prototypes=yes, ac_cv_prototypes=no)]) if test "$ac_cv_prototypes" = yes; then -AC_DEFINE(HAVE_PROTOTYPES) +AC_DEFINE([HAVE_PROTOTYPES]) fi ]) @@ -1064,3 +1150,24 @@ then test -z "$LEX" && AC_MSG_ERROR(['lex' or 'flex' is required to compile GHC.]) 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=$extra_flag; +else + $2=$extra_flag; +fi; +])