[project @ 2003-08-19 12:35:47 by panne]
[ghc-hetmet.git] / aclocal.m4
index 19370ff..f4bff2d 100644 (file)
@@ -4,11 +4,35 @@
 # ensure we don't clash with any pre-supplied autoconf ones.
 
 
-# FP_ALTZONE
+# FP_PROG_CONTEXT_DIFF
+# --------------------
+# Figure out how to do context diffs. Sets the output variable ContextDiffCmd.
+# NB: 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 +45,42 @@ AC_CHECK_DECLS([altzone], [], [],[#if TIME_WITH_SYS_TIME
 #  include <time.h>
 # endif
 #endif])
-])# FP_ALTZONE
+])# FP_DECL_ALTZONE
+
+
+# FP_COMPUTE_INT(EXPRESSION, VARIABLE, INCLUDES, IF-FAILS)
+# ---------------------------------------------------------
+# 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.
+AC_DEFUN([FP_COMPUTE_INT],
+[_AC_COMPUTE_INT([$1], [$2], [$3], [$4])[]dnl
+])# FP_COMPUTE_INT
+
+
+# FP_CHECK_ALIGNMENT(TYPE, [IGNORED], [INCLUDES = DEFAULT-INCLUDES])
+# ------------------------------------------------------------------
+# A variation of AC_CHECK_SIZEOF for computing the alignment restrictions of a
+# 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]),
+[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])],
+                 [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_CHECK_ALIGNMENT
 
 
 dnl ** check for leading underscores in symbol names
@@ -236,31 +295,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
@@ -531,49 +565,6 @@ ifelse($#, [1], [dnl
 ])dnl
 
 
-dnl ** figure out the alignment restriction of a type
-dnl    (required SIZEOF test but AC_CHECK_SIZEOF doesn't call PROVIDE
-dnl     so we can't call REQUIRE)
-
-dnl FPTOOLS_CHECK_ALIGNMENT(TYPE)
-AC_DEFUN(FPTOOLS_CHECK_ALIGNMENT,
-[changequote(<<, >>)dnl
-dnl The name to #define.
-define(<<AC_TYPE_NAME>>, translit(alignment_$1, [a-z *], [A-Z_P]))dnl
-dnl The cache variable name.
-define(<<AC_CV_NAME>>, translit(ac_cv_alignment_$1, [ *], [_p]))dnl
-dnl The name of the corresponding size.
-define(<<AC_CV_SIZEOF_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
-changequote([, ])dnl
-AC_MSG_CHECKING(alignment of $1)
-AC_CACHE_VAL(AC_CV_NAME,
-[AC_TRY_RUN([
-#include <stdio.h>
-#if HAVE_STDDEF_H
-#include <stddef.h>
-#endif
-#ifndef offsetof
-#define offsetof(ty,field) ((size_t)((char *)&((ty *)0)->field - (char *)(ty *)0))
-#endif
-int
-main()
-{
-  FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
-  fprintf(f, "%d", offsetof(struct { char c; $1 ty;},ty));
-  exit(0);
-}],
-AC_CV_NAME=`cat conftestval`,
-AC_CV_NAME=$AC_CV_SIZEOF_NAME,
-AC_CV_NAME=$AC_CV_SIZEOF_NAME)])
-AC_MSG_RESULT($AC_CV_NAME)
-AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
-AC_PROVIDE($AC_TYPE_NAME)
-undefine([AC_TYPE_NAME])dnl
-undefine([AC_CV_NAME])dnl
-undefine([AC_CV_SIZEOF_NAME])dnl
-])
-
 dnl ** Map an arithmetic C type to a Haskell type.
 dnl    Based on autconf's AC_CHECK_SIZEOF.
 
@@ -728,12 +719,6 @@ AC_DEFINE(HAVE_O_BINARY)
 fi
 ])
 
-dnl *** Helper function **
-dnl 
-AC_DEFUN(FPTOOLS_IN_SCOPE,
-[AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no)
-])
-
 
 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
 
@@ -807,24 +792,6 @@ AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
 )])]
 )
 
-dnl check for prototypes
-dnl
-AC_DEFUN([AC_C_PROTOTYPES],
-[AC_CACHE_CHECK([prototypes], ac_cv_prototypes,
-[AC_TRY_COMPILE([
-void foo(int);
-void foo(i)
-int i; { 
-return;
-}
-],
-[int i;], 
-ac_cv_prototypes=yes,
-ac_cv_prototypes=no)])
-if test "$ac_cv_prototypes" = yes; then
-AC_DEFINE([HAVE_PROTOTYPES])
-fi
-])
 
 dnl ** Check which CATALOG file we have to use with DocBook SGML.
 dnl