X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=aclocal.m4;h=7472ce38eed83be90b766dd0221d8cde7c94f7c4;hb=b9267a7e597428ad9c8ce3a06e452dcfe7226300;hp=e7f51e62648152f2f777c72726f39e01595d4881;hpb=e0933fa4f2f4950e42c8b3dedeaa6b1622c762d9;p=ghc-hetmet.git diff --git a/aclocal.m4 b/aclocal.m4 index e7f51e6..7472ce3 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -134,7 +134,7 @@ m4_popdef([fp_Cache])[]dnl ])# FP_CHECK_ALIGNMENT -# FP_CHECK_CONST(EXPRESSION, [INCLUDES = DEFAULT-INCLUDES], [VALUE-IF-FAIL = (-1)]) +# FP_CHECK_CONST(EXPRESSION, [INCLUDES = DEFAULT-INCLUDES], [VALUE-IF-FAIL = -1]) # --------------------------------------------------------------------------------- # Defines CONST_EXPRESSION to the value of the compile-time EXPRESSION, using # INCLUDES. If the value cannot be determined, use VALUE-IF-FAIL. @@ -142,7 +142,7 @@ AC_DEFUN([FP_CHECK_CONST], [AS_VAR_PUSHDEF([fp_Cache], [fp_cv_const_$1])[]dnl AC_CACHE_CHECK([value of $1], fp_Cache, [FP_COMPUTE_INT([$1], fp_check_const_result, [AC_INCLUDES_DEFAULT([$2])], - [fp_check_const_result=m4_default([$3], ['(-1)'])]) + [fp_check_const_result=m4_default([$3], ['-1'])]) AS_VAR_SET(fp_Cache, [$fp_check_const_result])])[]dnl AC_DEFINE_UNQUOTED(AS_TR_CPP([CONST_$1]), AS_VAR_GET(fp_Cache), [The value of $1.])[]dnl AS_VAR_POPDEF([fp_Cache])[]dnl @@ -159,7 +159,7 @@ m4_define([FP_CHECK_CONSTS_TEMPLATE], ])# FP_CHECK_CONSTS_TEMPLATE -# FP_CHECK_CONSTS(EXPRESSION..., [INCLUDES = DEFAULT-INCLUDES], [VALUE-IF-FAIL = (-1)]) +# FP_CHECK_CONSTS(EXPRESSION..., [INCLUDES = DEFAULT-INCLUDES], [VALUE-IF-FAIL = -1]) # ------------------------------------------------------------------------------------- # List version of FP_CHECK_CONST AC_DEFUN(FP_CHECK_CONSTS, @@ -238,59 +238,56 @@ YES) AC_DEFINE([LEADING_UNDERSCORE], [1], [Define to 1 if C symbols have a leadi esac ]) -dnl -dnl FPTOOLS_PROG_CHECK_VERSION(VERSIONSTR1, TEST, VERSIONSTR2, -dnl ACTION-IF-TRUE [, ACTION-IF-FALSE]) -dnl -dnl compare versions field-wise (separator is '.') -dnl TEST is one of {-lt,-le,-eq,-ge,-gt} -dnl -dnl quite shell-independant and SUSv2 compliant code -dnl -dnl NOTE: the loop could be unrolled within autoconf, but the -dnl macro code would be a) longer and b) harder to debug... ;) -dnl -AC_DEFUN(FPTOOLS_PROG_CHECK_VERSION, -[if ( IFS="."; - a="[$1]"; b="[$3]"; - while test -n "$a$b" - do - set -- [$]a; h1="[$]1"; shift 2>/dev/null; a="[$]*" - set -- [$]b; h2="[$]1"; shift 2>/dev/null; b="[$]*" - test -n "[$]h1" || h1=0; test -n "[$]h2" || h2=0 - test [$]{h1} -eq [$]{h2} || break - done - test [$]{h1} [$2] [$]{h2} - ) -then ifelse([$4],,[:],[ - $4]) -ifelse([$5],,, -[else - $5]) -fi -])])dnl + +# FP_COMPARE_VERSIONS(VERSION1, TEST, VERSION2, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +# ---------------------------------------------------------------------------------- +# Compare dotted version numbers VERSION1 and VERSION2 lexicographically according +# to TEST (one of -eq, -ne, -lt, -le, -gt, or -ge). +AC_DEFUN([FP_COMPARE_VERSIONS], +[fp_version1=$1; fp_version2=$3 +fp_save_IFS=$IFS; IFS='.' +while test x"$fp_version1" != x || test x"$fp_version2" != x +do + + set dummy $fp_version1; shift + fp_num1="" + test $[@%:@] = 0 || { fp_num1="[$]1"; shift; } + test x"$fp_num1" = x && fp_num1="0" + fp_version1="[$]*" + + set dummy $fp_version2; shift + fp_num2="" + test $[@%:@] = 0 || { fp_num2="[$]1"; shift; } + test x"$fp_num2" = x && fp_num2="0" + fp_version2="[$]*" + + test "$fp_num1" = "$fp_num2" || break; +done +IFS=$fp_save_IFS +AS_IF([test "$fp_num1" $2 "$fp_num2"], [$4], [$5])[]dnl +])# FP_COMPARE_VERSIONS 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="" fi changequote([, ])dnl ]) -FPTOOLS_PROG_CHECK_VERSION([$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) +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) ]) dnl @@ -321,8 +318,8 @@ fi; changequote([, ])dnl ]) if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Parser.hs; then - FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_happy_version],-lt,[1.13], - [AC_MSG_ERROR([Happy version 1.13 or later is required to compile GHC.])])dnl + FP_COMPARE_VERSIONS([$fptools_cv_happy_version],[-lt],[1.13], + [AC_MSG_ERROR([Happy version 1.13 or later is required to compile GHC.])])[]dnl fi HappyVersion=$fptools_cv_happy_version; AC_SUBST(HappyVersion) @@ -375,10 +372,10 @@ else fi; changequote([, ])dnl ]) -dnl if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Lexer.hs; then -dnl FPTOOLS_PROG_CHECK_VERSION([$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) ]) @@ -509,15 +506,14 @@ changequote(, )dnl 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' - FPTOOLS_PROG_CHECK_VERSION($gcc_version_str, -lt, "2.0", - fptools_cv_have_gcc='no' + FP_COMPARE_VERSIONS([$gcc_version_str], [-lt], [2.0], + [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]) - ) + AC_MSG_ERROR([gcc 1.X has never been supported])]) fi ]) HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'` @@ -530,17 +526,15 @@ 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') -]) +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], +[FP_COMPARE_VERSIONS([$gcc_version_str], [-ge], [3.2], + [fptools_cv_gcc_needs_no_omit_lfptr=yes], + [fptools_cv_gcc_needs_no_omit_lfptr=no])]) if test "$fptools_cv_gcc_needs_no_omit_lfptr" = "yes"; then AC_DEFINE([HAVE_GCC_MNO_OMIT_LFPTR], [1], [Define to 1 if gcc supports -mno-omit-leaf-frame-pointer.]) -fi -]) +fi])# FPTOOLS_GCC_NEEDS_NO_OMIT_LFPTR + dnl Small feature test for perl version. Assumes PerlCmd dnl contains path to perl binary @@ -567,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 @@ -663,57 +665,65 @@ dnl The name to #define. define(<>, translit(htype_$1, [a-z *], [A-Z_P]))dnl dnl The cache variable name. define(<>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl +define(<>, 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 +[AC_CV_NAME_supported=yes +fp_check_htype_save_cppflags="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $X_CFLAGS" +AC_TRY_RUN([#include #include -#ifdef HAVE_SYS_TYPES_H +#if HAVE_SYS_TYPES_H # include #endif -#ifdef HAVE_UNISTD_H +#if HAVE_UNISTD_H # include #endif -#ifdef HAVE_SYS_STAT_H +#if HAVE_SYS_STAT_H # include #endif -#ifdef HAVE_FCNTL_H +#if HAVE_FCNTL_H # include #endif -#ifdef HAVE_SIGNAL_H +#if HAVE_SIGNAL_H # include #endif -#ifdef HAVE_TIME_H +#if HAVE_TIME_H # include #endif -#ifdef HAVE_TERMIOS_H +#if HAVE_TERMIOS_H # include #endif -#ifdef HAVE_STRING_H +#if HAVE_STRING_H # include #endif -#ifdef HAVE_CTYPE_H +#if HAVE_CTYPE_H # include #endif -#ifdef HAVE_GL_GL_H +#if defined(HAVE_GL_GL_H) # include +#elif defined(HAVE_OPENGL_GL_H) +# include #endif -#ifdef HAVE_OPENGL_GL_H -# include +#if defined(HAVE_AL_ALC_H) +# include +#elif defined(HAVE_OPENAL_ALC_H) +# include #endif -#ifdef HAVE_SYS_RESOURCE_H +#if HAVE_SYS_RESOURCE_H # include #endif @@ -733,42 +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 *** Can we open files in binary mode? *** -dnl -AC_DEFUN(FPTOOLS_O_BINARY, -[ -AC_REQUIRE([AC_PROG_CC]) -AC_MSG_CHECKING(whether we can open files in binary mode) -AC_CACHE_VAL(fptools_cv_have_o_binary, -[ -AC_LANG_SAVE -AC_LANG_C -AC_TRY_COMPILE( -[#ifdef HAVE_FCNTL_H -#include -#endif], -[int x = O_BINARY;], -fptools_cv_have_o_binary=yes, -fptools_cv_have_o_binary=no) -AC_LANG_RESTORE -]) -AC_MSG_RESULT($fptools_cv_have_o_binary) -if test "$fptools_cv_have_o_binary" = yes; then - AC_DEFINE([HAVE_O_BINARY], [1], [Define to 1 if fcntl.h defines O_BINARY.]) -fi -]) - - dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse) @@ -1089,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 ], glutMainLoop, glut32 glut, have_glut=yes, have_glut=no) @@ -1118,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