[project @ 2000-05-02 07:50:41 by chak]
[ghc-hetmet.git] / aclocal.m4
index 7a8c368..7d4e52b 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: aclocal.m4,v 1.32 1998/11/21 14:35:00 sof Exp $
+dnl $Id: aclocal.m4,v 1.46 1999/12/21 13:00:54 simonmar Exp $
 dnl 
 dnl Extra autoconf macros for the Glasgow fptools
 dnl
 dnl 
 dnl Extra autoconf macros for the Glasgow fptools
 dnl
@@ -7,6 +7,28 @@ dnl prefixed with FPTOOLS_ to ensure we don't clash
 dnl with any pre-supplied autoconf ones.
 
 dnl
 dnl with any pre-supplied autoconf ones.
 
 dnl
+dnl Is timezone around? (in a header file)
+dnl 
+AC_DEFUN(FPTOOLS_HAVE_TIMEZONE,
+[AC_CACHE_CHECK([timezone], fptools_cv_have_timezone,
+[AC_TRY_COMPILE([#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+#  include <sys/time.h>
+# else
+#  include <time.h>
+# endif
+#endif
+], [return timezone;], 
+fptools_cv_have_timezone=yes, fptools_cv_have_timezone=no)])
+if test "$fptools_cv_have_timezone" = yes; then
+  AC_DEFINE(HAVE_TIMEZONE)
+fi
+])
+
+dnl
 dnl Has timezone the type time_t or long (HP-UX 10.20 apparently
 dnl has `long'..)
 dnl 
 dnl Has timezone the type time_t or long (HP-UX 10.20 apparently
 dnl has `long'..)
 dnl 
@@ -23,7 +45,7 @@ AC_DEFUN(FPTOOLS_TYPE_TIMEZONE,
 # endif
 #endif
 
 # endif
 #endif
 
-extern time_t timezone;
+extern time_t timezone;        
 ],
 [int i;], fptools_cv_type_timezone=time_t, fptools_cv_type_timezone=long)])
 AC_DEFINE_UNQUOTED(TYPE_TIMEZONE, $fptools_cv_type_timezone)
 ],
 [int i;], fptools_cv_type_timezone=time_t, fptools_cv_type_timezone=long)])
 AC_DEFINE_UNQUOTED(TYPE_TIMEZONE, $fptools_cv_type_timezone)
@@ -71,10 +93,14 @@ dnl
 dnl Hack!: nlist() under Digital UNIX insist on there being an _,
 dnl but symbol table listings shows none. What is going on here?!?
 dnl
 dnl Hack!: nlist() under Digital UNIX insist on there being an _,
 dnl but symbol table listings shows none. What is going on here?!?
 dnl
+dnl Another hack: cygwin doesn't come with nlist.h , so we hardwire
+dnl the underscoredness of that "platform"
 changequote(<<, >>)dnl
 <<
 case $HostPlatform in
 alpha-dec-osf*) fptools_cv_lead_uscore='no';;
 changequote(<<, >>)dnl
 <<
 case $HostPlatform in
 alpha-dec-osf*) fptools_cv_lead_uscore='no';;
+*cygwin32) fptools_cv_lead_uscore='yes';;
+*mingw32) fptools_cv_lead_uscore='yes';;
 *) >>
 changequote([, ])dnl
 AC_TRY_RUN([#ifdef HAVE_NLIST_H
 *) >>
 changequote([, ])dnl
 AC_TRY_RUN([#ifdef HAVE_NLIST_H
@@ -108,7 +134,12 @@ esac
 ])
 
 dnl
 ])
 
 dnl
-dnl Check for Happy and version.
+dnl Check for Happy and version.  If we're building GHC, then we need
+dnl at least Happy version 1.6.  If there's no installed Happy, we look
+dnl for a happy source tree and point the build system at that instead.
+dnl
+dnl ToDo: when we reset HappyCmd to the source tree, autoconf doesn't
+dnl seems to insert it in the cache file.  sigh.
 dnl
 AC_DEFUN(FPTOOLS_HAPPY,
 [AC_PATH_PROG(HappyCmd,happy)
 dnl
 AC_DEFUN(FPTOOLS_HAPPY,
 [AC_PATH_PROG(HappyCmd,happy)
@@ -117,17 +148,23 @@ AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
    fptools_cv_happy_version="`$HappyCmd -v |
 changequote(, )dnl
                          grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
    fptools_cv_happy_version="`$HappyCmd -v |
 changequote(, )dnl
                          grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
-changequote([, ])dnl
+elif test -d $srcdir/happy; then
+   HappyCmd=$hardtop/happy/src/happy-inplace;
+   fptools_cv_happy_version=`grep '^ProjectVersion[    ]*=' $srcdir/happy/mk/version.mk | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
+   echo -n "using happy from the source tree... ";
 else
    fptools_cv_happy_version="";
 fi;
 else
    fptools_cv_happy_version="";
 fi;
-if expr "$fptools_cv_happy_version" "<" 1.4 > /dev/null 2>&1; then
-   echo
-   echo "Happy version 1.4 or later is required to compile GHC."
-   exit 1;
+changequote([, ])dnl
+if expr "$fptools_cv_happy_version" "<" 1.6 > /dev/null 2>&1; then
+   if test -d $srcdir/ghc; then
+     echo
+     echo "Happy version 1.6 or later is required to compile GHC."
+     exit 1;
+   fi
 fi;
 ])
 fi;
 ])
-HappyVersion=$ac_cv_happy_version;
+HappyVersion=$fptools_cv_happy_version;
 AC_SUBST(HappyVersion)
 ])
 
 AC_SUBST(HappyVersion)
 ])
 
@@ -277,36 +314,6 @@ HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
 AC_SUBST(HaveGcc)
 ])
 
 AC_SUBST(HaveGcc)
 ])
 
-dnl
-dnl FPTOOLS_PROG_GNUCPP gathers the path to the cpp that the
-dnl gcc driver calls upon.
-dnl
-dnl Substitutes: GNUCPP and RAWCPP (latter is 'GNUCPP -traditional')
-dnl
-AC_DEFUN(FPTOOLS_PROG_GNUCPP,
-[AC_CACHE_CHECK([how to invoke GNU cpp directly], fptools_cv_gnu_cpp,
-[if test "$HaveGcc" = "YES"; then
-       echo > conftest.c
-       gcc -v -E conftest.c >/dev/null 2>conftest.out
-       # \x5c = backslash
-       echo 'tr/\x5c/\//; /(\S+\/)cpp/ && print "[$]{1}cpp -iprefix [$]1";' > conftest.pl
-       fptools_cv_gnu_cpp="`eval $PerlCmd -n conftest.pl conftest.out`"
-       rm -fr conftest*
- else
-       # We need to be able to invoke CPP directly, preferably
-       # with input from stdin (mkdependHS and hscpp depend on
-       # this at the moment).
-       # Take a guess at what to use, this probably won't work.
-       echo Warning: GNU cpp not found, using $CPP
-       fptools_cv_gnu_cpp = $CPP
- fi
-])
-GNUCPP=$fptools_cv_gnu_cpp
-RAWCPP="$GNUCPP -traditional"
-AC_SUBST(GNUCPP)
-AC_SUBST(RAWCPP)
-])
-
 dnl Small feature test for perl version. Assumes PerlCmd
 dnl contains path to perl binary
 dnl
 dnl Small feature test for perl version. Assumes PerlCmd
 dnl contains path to perl binary
 dnl
@@ -454,55 +461,56 @@ AC_DEFUN(FPTOOLS_IN_SCOPE,AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=y
 dnl *** What's the end-of-text-section marker called? ***
 dnl
 AC_DEFUN(FPTOOLS_END_TEXT_SECTION,
 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,
-[
+[AC_MSG_CHECKING([for end of text section marker])
 not_done=1
 not_done=1
-for i in etext _etext __etext; do
-  FPTOOLS_IN_SCOPE($i,$i,fptools_cv_end_of_text)
-  if test "$fptools_cv_end_of_text" = yes; then
-   AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, $i)
-   AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, $i)
+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
    not_done=0
    break
   fi
 done
 if test "$not_done" = 1; then
-FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_cv_end_of_text);
-if test "$fptools_cv_end_of_text" = yes; then
-  AC_DEFINE(TEXT_SECTION_END_MARKER_DECL, etext asm("etext"))
-  AC_DEFINE(TEXT_SECTION_END_MARKER, etext)
+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
 else
-  AC_DEFINE(TEXT_SECTION_END_MARKER, dunno_what_it_is)
+  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
 fi
 fi
-])])
+AC_MSG_RESULT([$]fptools_cv_end_of_text)
+])
 
 dnl *** What's the end-of-data-section marker called? ***
 dnl
 AC_DEFUN(FPTOOLS_END_DATA_SECTION,
 
 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,
-[
+[AC_MSG_CHECKING([for end of data section marker])
 not_done=1
 for i in end _end __end; do
 not_done=1
 for i in end _end __end; do
-  FPTOOLS_IN_SCOPE($i,$i,fptools_cv_end_of_data)
-  if test "$fptools_cv_end_of_data" = yes; then
-   AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, $i)
-   AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, $i)
+  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
    not_done=0
    break
   fi
 done
 if test "$not_done" = 1; then
-FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_cv_end_of_data);
-if test "$fptools_cv_end_of_data" = yes; then
-  AC_DEFINE(DATA_SECTION_END_MARKER_DECL, end asm("end"))
-  AC_DEFINE(DATA_SECTION_END_MARKER, end)
+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
 else
-  AC_DEFINE(DATA_SECTION_END_MARKER_DECL, dunno_what_it_is)
-  AC_DEFINE(DATA_SECTION_END_MARKER, dunno_what_it_is)
+  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
 fi
 fi
-])])
+AC_MSG_RESULT([$]fptools_cv_end_of_data)
+])