[project @ 2003-01-19 18:41:19 by wolfgang]
[ghc-hetmet.git] / aclocal.m4
index e34db88..647c077 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: aclocal.m4,v 1.107 2002/07/23 10:08:58 simonmar Exp $
+dnl $Id: aclocal.m4,v 1.111 2003/01/08 12:03:28 simonmar Exp $
 dnl 
 dnl Extra autoconf macros for the Glasgow fptools
 dnl
@@ -417,10 +417,10 @@ AC_DEFUN(FPTOOLS_HAVE_GCC,
     fptools_cv_have_gcc='no'
 else
 changequote(, )dnl
-    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' `"
+    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'
-    if test `eval $is_gcc_v1 2>/dev/null` = "1"; then
+    FPTOOLS_PROG_CHECK_VERSION($gcc_version_str, -lt, "2.0",
         fptools_cv_have_gcc='no'
         echo ""
        echo "your gcc version appears to be ..."
@@ -428,13 +428,31 @@ changequote([, ])dnl
         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
+    )
 fi
 ])
 HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
 AC_SUBST(HaveGcc)
 ])
 
+dnl
+dnl Some OSs (Mandrake Linux, in particular) configure GCC with
+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')
+])
+if test "$fptools_cv_gcc_needs_no_omit_lfptr" = "yes"; then
+   AC_DEFINE(HAVE_GCC_MNO_OMIT_LFPTR)
+fi
+])
+
 dnl Small feature test for perl version. Assumes PerlCmd
 dnl contains path to perl binary
 dnl
@@ -443,15 +461,19 @@ AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION,
 if grep "version 5" conftest.out >/dev/null 2>&1; then
    :
 else
-  if grep "v5.6" conftest.out >/dev/null 2>&1; then
-     :
-  else
-     if grep "version 6" conftest.out >/dev/null 2>&1; then
-       :
-     else
-       echo "Your version of perl probably won't work."
-     fi
-  fi
+   if grep "v5.6" conftest.out >/dev/null 2>&1; then
+      :
+   else
+      if grep "v5.8" conftest.out >/dev/null 2>&1; then
+         :
+      else
+         if grep "version 6" conftest.out >/dev/null 2>&1; then
+            :
+         else
+            echo "Your version of perl probably won't work."
+         fi  
+      fi
+   fi
 fi
 rm -fr conftest*
 ])
@@ -699,7 +721,6 @@ dnl    This is set up so that the argument can be a shell variable.
 dnl
 AC_DEFUN(FPTOOLS_CHECK_CCONST,
 [
-eval "def_name=CCONST_$1"
 eval "cv_name=ac_cv_cconst_$1"
 AC_MSG_CHECKING(value of $1)
 AC_CACHE_VAL($cv_name,
@@ -717,7 +738,7 @@ 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($def_name, $fptools_check_cconst_result)
+AC_DEFINE_UNQUOTED(CCONST_$1, $fptools_check_cconst_result)
 unset fptools_check_cconst_result
 ])
 
@@ -757,130 +778,12 @@ AC_DEFINE(HAVE_O_BINARY)
 fi
 ])
 
-dnl *** Which one comes first, .text or .data? ***
-dnl 
-AC_DEFUN(FPTOOLS_CODE_BEFORE_DATA,
-[AC_CACHE_CHECK([if code section appears before data], fptools_cv_code_bef_data,
-[AC_TRY_RUN([
-int f() { return 1; }
-int i;
-int main() { return ((char*)&f > (char*)&i); }
-
-],
-fptools_cv_code_bef_data=yes, fptools_cv_code_bef_data=no,false)])
-if test "$fptools_cv_code_bef_data" = yes; then
-  AC_DEFINE(CODE_BEFORE_DATA)
-fi
-])
-
 dnl *** Helper function **
 dnl 
 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_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_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