[project @ 2003-11-15 19:15:16 by panne]
[ghc-hetmet.git] / aclocal.m4
index ea73a21..7472ce3 100644 (file)
@@ -269,15 +269,15 @@ AS_IF([test "$fp_num1" $2 "$fp_num2"], [$4], [$5])[]dnl
 
 
 dnl
-dnl Check for Greencard and version.
+dnl Check for GreenCard and version.
 dnl
 AC_DEFUN(FPTOOLS_GREENCARD,
 [
-AC_PATH_PROG(GreencardCmd,greencard)
+AC_PATH_PROG(GreenCardCmd,greencard)
 AC_CACHE_CHECK([for version of greencard], fptools_cv_greencard_version,
 changequote(, )dnl
-[if test x"$GreencardCmd" != x; then
-   fptools_cv_greencard_version="`$GreencardCmd --version |
+[if test x"$GreenCardCmd" != x; then
+   fptools_cv_greencard_version="`$GreenCardCmd --version |
                          grep 'version' | sed -e 's/greencard. version \([^ ]*\).*/\1/g'`"
 else
    fptools_cv_greencard_version=""
@@ -286,8 +286,8 @@ changequote([, ])dnl
 ])
 FP_COMPARE_VERSIONS([$fptools_cv_greencard_version],[-lt],[$1],
   [AC_MSG_ERROR([greencard version $1 or later is required (found '$fptools_cv_greencard_version')])])[]dnl
-GreencardVersion=$fptools_cv_greencard_version
-AC_SUBST(GreencardVersion)
+GreenCardVersion=$fptools_cv_greencard_version
+AC_SUBST(GreenCardVersion)
 ])
 
 dnl
@@ -372,10 +372,10 @@ else
 fi;
 changequote([, ])dnl
 ])
-dnl if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Lexer.hs; then
-dnl   FP_COMPARE_VERSIONS([$fptools_cv_alex_version],[-lt],[2.0],
-dnl   [AC_MSG_ERROR([Alex version 2.0 or later is required to compile GHC.])])[]dnl
-dnl fi
+if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Lexer.hs; then
+  FP_COMPARE_VERSIONS([$fptools_cv_alex_version],[-lt],[2.0],
+  [AC_MSG_ERROR([Alex version 2.0 or later is required to compile GHC.])])[]dnl
+fi
 AlexVersion=$fptools_cv_alex_version;
 AC_SUBST(AlexVersion)
 ])
@@ -561,28 +561,36 @@ fi
 rm -fr conftest*
 ])
 
-dnl
-dnl Getting at the right version of 'find'
-dnl (i.e., not the MS util on a Win32 box).
-dnl
-AC_DEFUN(FPTOOLS_FIND_FIND,
-[
-AC_PATH_PROG(Find2Cmd, find)
-$Find2Cmd --version > conftest.out 2>&1 
-if grep "FIND: Parameter format" conftest.out >/dev/null 2>&1 ; then
-   # Encountered MS' find utility, which is not what we're after.
-   #
-   # HACK - AC_CHECK_PROG is useful here in that does let you reject
-   # an (absolute) entry in the path (Find2Cmd). It is not so useful
-   # in that it doesn't let you (AFAIU) set VARIABLE equal to the 
-   # absolute path eventually found. So, hack around this by inspecting
-   # what variables hold the abs. path & use them directly.
-   AC_CHECK_PROG(FindCmd,find,`echo $ac_dir/$ac_word`,find,,$Find2Cmd)
+
+# FP_CHECK_PROG(VARIABLE, PROG-TO-CHECK-FOR,
+#               [VALUE-IF-NOT-FOUND], [PATH], [REJECT])
+# -----------------------------------------------------
+# HACK: A small wrapper around AC_CHECK_PROG, setting VARIABLE to the full path
+# of PROG-TO-CHECK-FOR when found.
+AC_DEFUN([FP_CHECK_PROG],
+[AC_CHECK_PROG([$1], [$2], [$as_dir/$ac_word$ac_exec_ext], [$3], [$4], [$5])][]dnl
+)# FP_CHECK_PROC
+
+
+# FP_PROG_FIND
+# ------------
+# Find a non-WinDoze version of the "find" utility.
+AC_DEFUN([FP_PROG_FIND],
+[AC_PATH_PROG([fp_prog_find], [find])
+echo foo > conftest.txt
+$fp_prog_find conftest.txt -print > conftest.out 2>&1
+if grep '^conftest.txt$' conftest.out > /dev/null 2>&1 ; then
+  # OK, looks like a real "find".
+  FindCmd="$fp_prog_find"
 else
-FindCmd=$Find2Cmd
-AC_SUBST(FindCmd)
+  # Found a poor WinDoze version of "find", ignore it.
+  AC_MSG_WARN([$fp_prog_find looks like a non-*nix find, ignoring it])
+  FP_CHECK_PROG([FindCmd], [find], [], [], [$fp_prog_find])
 fi
-])
+rm -f conftest.txt conftest.out
+AC_SUBST([FindCmd])[]dnl
+])# FP_PROG_FIND
+
 
 dnl
 dnl FPTOOLS_NOCACHE_CHECK prints a message, then sets the
@@ -657,57 +665,65 @@ dnl The name to #define.
 define(<<AC_TYPE_NAME>>, translit(htype_$1, [a-z *], [A-Z_P]))dnl
 dnl The cache variable name.
 define(<<AC_CV_NAME>>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl
+define(<<AC_CV_NAME_supported>>, translit(fptools_cv_htype_sup_$1, [ *], [_p]))dnl
 changequote([, ])dnl
 AC_MSG_CHECKING(Haskell type for $1)
 AC_CACHE_VAL(AC_CV_NAME,
-[AC_TRY_RUN([#include <stdio.h>
+[AC_CV_NAME_supported=yes
+fp_check_htype_save_cppflags="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+AC_TRY_RUN([#include <stdio.h>
 #include <stddef.h>
 
-#ifdef HAVE_SYS_TYPES_H
+#if HAVE_SYS_TYPES_H
 # include <sys/types.h>
 #endif
 
-#ifdef HAVE_UNISTD_H
+#if HAVE_UNISTD_H
 # include <unistd.h>
 #endif
 
-#ifdef HAVE_SYS_STAT_H
+#if HAVE_SYS_STAT_H
 # include <sys/stat.h>
 #endif
 
-#ifdef HAVE_FCNTL_H
+#if HAVE_FCNTL_H
 # include <fcntl.h>
 #endif
 
-#ifdef HAVE_SIGNAL_H
+#if HAVE_SIGNAL_H
 # include <signal.h>
 #endif
 
-#ifdef HAVE_TIME_H
+#if HAVE_TIME_H
 # include <time.h>
 #endif
 
-#ifdef HAVE_TERMIOS_H
+#if HAVE_TERMIOS_H
 # include <termios.h>
 #endif
 
-#ifdef HAVE_STRING_H
+#if HAVE_STRING_H
 # include <string.h>
 #endif
 
-#ifdef HAVE_CTYPE_H
+#if HAVE_CTYPE_H
 # include <ctype.h>
 #endif
 
-#ifdef HAVE_GL_GL_H
+#if defined(HAVE_GL_GL_H)
 # include <GL/gl.h>
+#elif defined(HAVE_OPENGL_GL_H)
+# include <OpenGL/gl.h>
 #endif
 
-#ifdef HAVE_OPENGL_GL_H
-# include <OpenGL/gl.h>
+#if defined(HAVE_AL_ALC_H)
+# include <AL/alc.h>
+#elif defined(HAVE_OPENAL_ALC_H)
+# include <OpenAL/alc.h>
 #endif
 
-#ifdef HAVE_SYS_RESOURCE_H
+#if HAVE_SYS_RESOURCE_H
 # include <sys/resource.h>
 #endif
 
@@ -727,16 +743,21 @@ main() {
   }
   fclose(f);
   exit(0);
-}], AC_CV_NAME=`cat conftestval`,
-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, [Define to Haskell type for $1])
+}],AC_CV_NAME=`cat conftestval`,
+ifelse([$2], , [AC_CV_NAME=NotReallyAType; AC_CV_NAME_supported=no], AC_CV_NAME=$2),
+ifelse([$3], , [AC_CV_NAME=NotReallyATypeCross; AC_CV_NAME_supported=no], AC_CV_NAME=$3))]) dnl
+CPPFLAGS="$fp_check_htype_save_cppflags"
+if test "$AC_CV_NAME_supported" = yes; then
+  AC_MSG_RESULT($AC_CV_NAME)
+  AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [Define to Haskell type for $1])
+else
+  AC_MSG_RESULT([not supported])
+fi
 undefine([AC_TYPE_NAME])dnl
 undefine([AC_CV_NAME])dnl
+undefine([AC_CV_NAME_supported])dnl
 ])
 
-
 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
 
 dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
@@ -1057,7 +1078,9 @@ dnl and GL_X_LIBS/GLUT_X_LIBS.
     GL_CFLAGS=
   fi
 
-  LIBS="$GLUT_X_LIBS"
+  dnl Keep the GL/GLU/GLX libs, but expand the rest to what GLUT needs.
+  dnl (Some systems, like OpenBSD, need the GL/GLU libs.)
+  LIBS=`echo "$LIBS" | sed "s@$GL_X_LIBS@$GLUT_X_LIBS@"`
 
   FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop,  glut32 glut,      have_glut=yes, have_glut=no)
 
@@ -1086,4 +1109,22 @@ dnl and we don't want to be global namespace polluters.
   AC_LANG_RESTORE
 ])
 
+
+dnl @synopsis FP_EMPTY_STRUCTS
+dnl 
+dnl Check whether empty structs is accepted by CC.
+dnl
+AC_DEFUN(FP_EMPTY_STRUCTS,
+[AC_CACHE_CHECK(empty struct support, fptools_cv_empty_structs,
+[AC_TRY_COMPILE([
+typedef struct { /*empty*/ } StgFoo;
+],
+[int i;], 
+fptools_cv_empty_structs=yes,
+fptools_cv_empty_structs=no)])
+if test "$fptools_cv_empty_structs" = yes; then
+AC_DEFINE([SUPPORTS_EMPTY_STRUCTS], [1], [Define to 1 if C compiler supports declaration of empty structure types.])
+fi
+])
+
 # LocalWords:  fi