X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=aclocal.m4;h=62c5de71cd8f01e83d1e26e7d0e6533188af7633;hp=3b40d7039a7dbc098becc08a564cda90931fa5f0;hb=d0a684e232d82a32079cbe2cc04cffa0ebf4b4f3;hpb=054725a03aca2cbfc062985f201bb11d9eb8d632 diff --git a/aclocal.m4 b/aclocal.m4 index 3b40d70..62c5de7 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -27,7 +27,7 @@ AC_DEFUN([FP_EVAL_STDERR], # to check stderr *and* the exit value. # # Used by ghc. -AC_DEFUN(FP_CHECK_FLAG, +AC_DEFUN([FP_CHECK_FLAG], [AC_LANG_COMPILER_REQUIRE()dnl AC_LANG_CASE([C], [fp_compiler="$CC" m4_pushdef([fp_Flags], [CFLAGS])], [C++], [fp_compiler="$CXX" m4_pushdef([fp_Flags], [CXXFLAGS])], @@ -220,7 +220,7 @@ AS_IF([test "$fp_num1" $2 "$fp_num2"], [$4], [$5])[]dnl dnl dnl Check for GreenCard and version. dnl -AC_DEFUN(FPTOOLS_GREENCARD, +AC_DEFUN([FPTOOLS_GREENCARD], [ AC_PATH_PROG(GreenCardCmd,greencard) AC_CACHE_CHECK([for version of greencard], fptools_cv_greencard_version, @@ -244,21 +244,11 @@ dnl Check for Happy and version. If we're building GHC, then we need dnl at least Happy version 1.14. If there's no installed Happy, we look dnl for a happy source tree and point the build system at that instead. dnl -AC_DEFUN(FPTOOLS_HAPPY, -[ -if test -d $srcdir/happy; then - SrcTreeHappyCmd=$hardtop/happy/src/happy-inplace -fi -if test x"$UseSrcTreeHappy" = xYES; then - HappyCmd=$SrcTreeHappyCmd -else - AC_PATH_PROG(HappyCmd,happy,$SrcTreeHappyCmd) -fi +AC_DEFUN([FPTOOLS_HAPPY], +[AC_PATH_PROG(HappyCmd,happy,) AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version, changequote(, )dnl -[if test x"$HappyCmd" = x"$SrcTreeHappyCmd" -a -e $srcdir/happy/mk/version.mk; then - fptools_cv_happy_version=`grep '^ProjectVersion[ ]*=' $srcdir/happy/mk/version.mk | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`; -elif test x"$HappyCmd" != x; then +[if test x"$HappyCmd" != x; then fptools_cv_happy_version="`$HappyCmd -v | grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ; else @@ -266,10 +256,8 @@ else fi; changequote([, ])dnl ]) -if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Parser.hs; then - FP_COMPARE_VERSIONS([$fptools_cv_happy_version],[-lt],[1.14], - [AC_MSG_ERROR([Happy version 1.14 or later is required to compile GHC.])])[]dnl -fi +FP_COMPARE_VERSIONS([$fptools_cv_happy_version],[-lt],[1.15], + [AC_MSG_ERROR([Happy version 1.15 or later is required to compile GHC.])])[]dnl HappyVersion=$fptools_cv_happy_version; AC_SUBST(HappyVersion) ]) @@ -278,16 +266,8 @@ dnl dnl Check for Haddock and version. If there's no installed Haddock, we look dnl for a haddock source tree and point the build system at that instead. dnl -AC_DEFUN(FPTOOLS_HADDOCK, -[ -if test -d $srcdir/haddock; then - SrcTreeHaddockCmd=$hardtop/haddock/src/haddock-inplace -fi -if test x"$UseSrcTreeHaddock" = xYES; then - HaddockCmd=$SrcTreeHaddockCmd -else - AC_PATH_PROG(HaddockCmd,haddock,$SrcTreeHaddockCmd) -fi +AC_DEFUN([FPTOOLS_HADDOCK], +[AC_PATH_PROG(HaddockCmd,haddock,) dnl Darn, I forgot to make Haddock print out its version number when dnl invoked with -v. We could try generating some HTML and grepping dnl through that to find the version number, but I think we'll make @@ -299,21 +279,12 @@ dnl Check for Alex and version. If we're building GHC, then we need dnl at least Alex version 2.0. If there's no installed Alex, we look dnl for a alex source tree and point the build system at that instead. dnl -AC_DEFUN(FPTOOLS_ALEX, +AC_DEFUN([FPTOOLS_ALEX], [ -if test -d $srcdir/alex; then - SrcTreeAlexCmd=$hardtop/alex/src/alex-inplace -fi -if test x"$UseSrcTreeAlex" = xYES; then - AlexCmd=$SrcTreeAlexCmd -else - AC_PATH_PROG(AlexCmd,alex,$SrcTreeAlexCmd) -fi +AC_PATH_PROG(AlexCmd,alex,) AC_CACHE_CHECK([for version of alex], fptools_cv_alex_version, changequote(, )dnl -[if test x"$AlexCmd" = x"$SrcTreeAlexCmd"; then - fptools_cv_alex_version=`grep '^ProjectVersion[ ]*=' $srcdir/alex/mk/version.mk | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`; -elif test x"$AlexCmd" != x; then +[if test x"$AlexCmd" != x; then fptools_cv_alex_version="`$AlexCmd -v | grep 'Alex [Vv]ersion' | sed -e 's/Alex [Vv]ersion \([0-9\.]*\).*/\1/g'`" ; else @@ -321,37 +292,78 @@ else fi; changequote([, ])dnl ]) -if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Lexer.hs; then - FP_COMPARE_VERSIONS([$fptools_cv_alex_version],[-lt],[2.0], +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) ]) -dnl -dnl Check whether ld supports -x -dnl -AC_DEFUN(FPTOOLS_LD_X, -[AC_CACHE_CHECK([whether ld understands -x], fptools_cv_ld_x, -[ -echo 'foo() {}' > conftest.c +# FP_PROG_LD +# ---------- +# Sets the output variable LdCmd to the (non-Cygwin version of the) full path +# of ld. Exits if no ld can be found +AC_DEFUN([FP_PROG_LD], +[AC_PATH_PROG([fp_prog_ld_raw], [ld]) +if test -z "$fp_prog_ld_raw"; then + AC_MSG_ERROR([cannot find ld in your PATH, no idea how to link]) +fi +LdCmd=$fp_prog_ld_raw +case $HostPlatform in + *mingw32) if test x${OSTYPE} != xmsys; then + LdCmd="`cygpath -w ${fp_prog_ld_raw} | sed -e 's@\\\\@/@g'`" + AC_MSG_NOTICE([normalized ld command to $LdCmd]) + fi + # Insist on >= ld-2.15.x, since earlier versions doesn't handle + # the generation of relocatable object files with large amounts + # of relocations correctly. (cf. HSbase.o splittage-hack) + fp_prog_ld_version=`${LdCmd} --version | sed -n '/GNU ld/p' | tr -cd 0-9 | cut -b1-3` + FP_COMPARE_VERSIONS([$fp_prog_ld_version],[-lt],[214], + [AC_MSG_ERROR([GNU ld version later than 2.14 required to compile GHC on Windows.])])[]dnl + ;; +esac +AC_SUBST([LdCmd]) +])# FP_PROG_LD + + +# FP_PROG_LD_X +# ------------ +# Sets the output variable LdXFlag to -x if ld supports this flag, otherwise the +# variable's value is empty. +AC_DEFUN([FP_PROG_LD_X], +[AC_REQUIRE([FP_PROG_LD]) +AC_CACHE_CHECK([whether ld understands -x], [fp_cv_ld_x], +[echo 'foo() {}' > conftest.c ${CC-cc} -c conftest.c -if ${LdCmd} -r -x -o foo.o conftest.o; then - fptools_cv_ld_x=yes +if ${LdCmd} -r -x -o conftest2.o conftest.o > /dev/null 2>&1; then + fp_cv_ld_x=yes else - fptools_cv_ld_x=no + fp_cv_ld_x=no fi -rm -rf conftest.c conftest.o foo.o -]) -if test "$fptools_cv_ld_x" = yes; then - LdXFlag=-x +rm -rf conftest*]) +if test "$fp_cv_ld_x" = yes; then + LdXFlag=-x else - LdXFlag= + LdXFlag= fi -AC_SUBST(LdXFlag) -]) +AC_SUBST([LdXFlag]) +])# FP_PROG_LD_X + + +# FP_PROG_LD_IS_GNU +# ----------------- +# Sets the output variable LdIsGNULd to YES or NO, depending on whether it is +# GNU ld or not. +AC_DEFUN([FP_PROG_LD_IS_GNU], +[AC_REQUIRE([FP_PROG_LD]) +AC_CACHE_CHECK([whether ld is GNU ld], [fp_cv_gnu_ld], +[if ${LdCmd} --version 2> /dev/null | grep "GNU" > /dev/null 2>&1; then + fp_cv_gnu_ld=yes +else + fp_cv_gnu_ld=no +fi]) +AC_SUBST([LdIsGNULd], [`echo $fp_cv_gnu_ld | sed 'y/yesno/YESNO/'`]) +])# FP_PROG_LD_IS_GNU # FP_PROG_AR @@ -429,9 +441,14 @@ AC_SUBST([ArCmd], ["$fp_prog_ar $fp_prog_ar_args"]) AC_DEFUN([FP_PROG_AR_NEEDS_RANLIB], [AC_REQUIRE([FP_PROG_AR_IS_GNU]) AC_REQUIRE([FP_PROG_AR_ARGS]) +AC_REQUIRE([AC_PROG_CC]) AC_CACHE_CHECK([whether ranlib is needed], [fp_cv_prog_ar_needs_ranlib], [if test $fp_prog_ar_is_gnu = yes; then fp_cv_prog_ar_needs_ranlib=no +elif echo $TargetPlatform | grep "^.*-apple-darwin$" > /dev/null 2> /dev/null; then + # It's quite tedious to check for Apple's crazy timestamps in .a files, + # so we hardcode it. + fp_cv_prog_ar_needs_ranlib=yes elif echo $fp_prog_ar_args | grep "s" > /dev/null 2> /dev/null; then fp_cv_prog_ar_needs_ranlib=no else @@ -475,7 +492,7 @@ AC_SUBST([ArSupportsInput]) dnl dnl AC_SHEBANG_PERL - can we she-bang perl? dnl -AC_DEFUN(FPTOOLS_SHEBANG_PERL, +AC_DEFUN([FPTOOLS_SHEBANG_PERL], [AC_CACHE_CHECK([if your perl works in shell scripts], fptools_cv_shebang_perl, [echo "#!$PerlCmd"' exit $1; @@ -490,62 +507,53 @@ fi rm -f conftest ])]) -dnl -dnl Extra testing of the result AC_PROG_CC, testing the gcc version no. -dnl *Must* be called after AC_PROG_CC -dnl -AC_DEFUN(FPTOOLS_HAVE_GCC, -[AC_CACHE_CHECK([whether you have an ok gcc], fptools_cv_have_gcc, -[if test -z "$GCC"; then - echo '' - echo "You would be better off with gcc" - echo "Perhaps it is already installed, but not in your PATH?" - fptools_cv_have_gcc='no' + +# FP_HAVE_GCC +# ----------- +# Extra testing of the result AC_PROG_CC, testing the gcc version no. Sets the +# output variables HaveGcc and GccVersion. +AC_DEFUN([FP_HAVE_GCC], +[AC_REQUIRE([AC_PROG_CC]) +if test -z "$GCC"; then + fp_have_gcc=NO else -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' - 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])]) -fi -]) -HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'` -AC_SUBST(HaveGcc) -GccVersion=`gcc --version | grep mingw | cut -f 3 -d ' '` -AC_SUBST(GccVersion) + fp_have_gcc=YES +fi +if test "$fp_have_gcc" = "NO" -a -d $srcdir/ghc; then + AC_MSG_ERROR([gcc is required]) +fi +AC_CACHE_CHECK([version of gcc], [fp_gcc_version], +[if test "$fp_have_gcc" = "YES"; then + fp_gcc_version="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [[^0-9]]*\([[0-9.]]*\).*/\1/g'`" + FP_COMPARE_VERSIONS([$fp_gcc_version], [-lt], [2.0], + [AC_MSG_ERROR([Need at least gcc version 2.0 (3.4+ recommended)])]) + else + fp_gcc_version="not-installed" + fi ]) +AC_SUBST([HaveGcc], [$fp_have_gcc]) +AC_SUBST([GccVersion], [$fp_gcc_version]) +])# FP_HAVE_GCC -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], -[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])# FPTOOLS_GCC_NEEDS_NO_OMIT_LFPTR - +AC_DEFUN([FP_MINGW_GCC], +[ + case $HostOS_CPP in + mingw*) AC_MSG_CHECKING([whether $CC is a mingw gcc]) + if $CC -v 2>&1 | grep mingw >/dev/null; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + AC_MSG_ERROR([Please use --with-gcc to specify a mingw gcc]) + fi;; + *) ;; + esac +]) dnl Small feature test for perl version. Assumes PerlCmd dnl contains path to perl binary dnl -AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION, +AC_DEFUN([FPTOOLS_CHECK_PERL_VERSION], [$PerlCmd -v >conftest.out 2>&1 -if grep "version 5" conftest.out >/dev/null 2>&1; then - : -else if grep "v5.6" conftest.out >/dev/null 2>&1; then : else @@ -555,11 +563,10 @@ else if grep "version 6" conftest.out >/dev/null 2>&1; then : else - echo "Your version of perl probably won't work." - fi + AC_MSG_ERROR([your version of perl probably won't work, try upgrading it.]) + fi fi fi -fi rm -fr conftest* ]) @@ -594,6 +601,25 @@ AC_SUBST([FindCmd])[]dnl ])# FP_PROG_FIND +# FP_PROG_SORT +# ------------ +# Find a Unix-like sort +AC_DEFUN([FP_PROG_SORT], +[AC_PATH_PROG([fp_prog_sort], [sort]) +echo conwip > conftest.txt +$fp_prog_sort -f conftest.txt > conftest.out 2>&1 +if grep 'conwip' conftest.out > /dev/null 2>&1 ; then + # The goods + SortCmd="$fp_prog_sort" +else + # Summink else..pick next one. + AC_MSG_WARN([$fp_prog_sort looks like a non-*nix sort, ignoring it]) + FP_CHECK_PROG([SortCmd], [sort], [], [], [$fp_prog_sort]) +fi +rm -f conftest.txt conftest.out +AC_SUBST([SortCmd])[]dnl +])# FP_PROG_SORT + dnl dnl FPTOOLS_NOCACHE_CHECK prints a message, then sets the dnl values of the second argument to the result of running @@ -601,7 +627,7 @@ dnl the commands given by the third. It does not cache its dnl result, so it is suitable for checks which should be dnl run every time. dnl -AC_DEFUN(FPTOOLS_NOCACHE_CHECK, +AC_DEFUN([FPTOOLS_NOCACHE_CHECK], [AC_MSG_CHECKING([$1]) $3 AC_MSG_RESULT([$][$2]) @@ -615,7 +641,7 @@ dnl dnl Test for version of installed ghc. Uses $GHC. dnl [original version pinched from c2hs] dnl -AC_DEFUN(FPTOOLS_GHC_VERSION, +AC_DEFUN([FPTOOLS_GHC_VERSION], [FPTOOLS_NOCACHE_CHECK([version of ghc], [fptools_version_of_ghc], ["${WithGhc-ghc}" --version > conftestghc 2>&1 cat conftestghc >&AS_MESSAGE_LOG_FD @@ -657,110 +683,6 @@ ifelse($#, [1], [dnl ])dnl -dnl ** Map an arithmetic C type to a Haskell type. -dnl Based on autconf's AC_CHECK_SIZEOF. - -dnl FPTOOLS_CHECK_HTYPE(TYPE [, DEFAULT_VALUE, [, VALUE-FOR-CROSS-COMPILATION]) -AC_DEFUN(FPTOOLS_CHECK_HTYPE, -[changequote(<<, >>)dnl -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_CV_NAME_supported=yes -fp_check_htype_save_cppflags="$CPPFLAGS" -CPPFLAGS="$CPPFLAGS $X_CFLAGS" -AC_RUN_IFELSE([AC_LANG_SOURCE([[#include -#include - -#if HAVE_SYS_TYPES_H -# include -#endif - -#if HAVE_UNISTD_H -# include -#endif - -#if HAVE_SYS_STAT_H -# include -#endif - -#if HAVE_FCNTL_H -# include -#endif - -#if HAVE_SIGNAL_H -# include -#endif - -#if HAVE_TIME_H -# include -#endif - -#if HAVE_TERMIOS_H -# include -#endif - -#if HAVE_STRING_H -# include -#endif - -#if HAVE_CTYPE_H -# include -#endif - -#if defined(HAVE_GL_GL_H) -# include -#elif defined(HAVE_OPENGL_GL_H) -# include -#endif - -#if defined(HAVE_AL_ALC_H) -# include -#elif defined(HAVE_OPENAL_ALC_H) -# include -#endif - -#if HAVE_SYS_RESOURCE_H -# include -#endif - -typedef $1 testing; - -main() { - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - if (((testing)((int)((testing)1.4))) == ((testing)1.4)) { - fprintf(f, "%s%d\n", - ((testing)(-1) < (testing)0) ? "Int" : "Word", - sizeof(testing)*8); - } else { - fprintf(f,"%s\n", - (sizeof(testing) > sizeof(double)) ? "LDouble" : - (sizeof(testing) == sizeof(double)) ? "Double" : "Float"); - } - fclose(f); - exit(0); -}]])],[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 -]) - - # FP_CHECK_FUNC(FUNCTION, PROLOGUE, BODY, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # --------------------------------------------------------------------------------- # A variant of AC_CHECK_FUNCS, limited to a single FUNCTION, but with the @@ -975,200 +897,76 @@ else fi])# FP_PROG_GHC_PKG -# FP_CHECK_WIN32 -# -------------- -# If Windows is the target platform (e.g. MinGW/MSYS or Cygwin with -# -mno-cygwin), the variable "is_win32" is set to "yes", otherwise (e.g. *nix -# systems or plain Cygwin) it is set to "no". -AC_DEFUN([FP_CHECK_WIN32], -[AC_CACHE_CHECK([for Windows environment], [fp_cv_is_win32], - [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [ -#if !_WIN32 - syntax error; -#endif -])], [fp_cv_is_win32=yes], [fp_cv_is_win32=no])]) -is_win32="$fp_cv_is_win32"[]dnl -])# FP_CHECK_WIN32 - - -# FP_PATH_X -# --------- -# Same as AC_PATH_X, but works even for broken Cygwins which try to include the -# non-existant header when -mno-cygwin is used. -AC_DEFUN([FP_PATH_X], -[AC_REQUIRE([FP_CHECK_WIN32]) -if test x"$is_win32" = xyes; then - no_x=yes -else - AC_PATH_X -fi -])# FP_PATH_X - - -# FP_PATH_XTRA -# ------------ -# Same as AC_PATH_XTRA, but works even for broken Cygwins which try to include -# the non-existant header when -mno-cygwin is used. -AC_DEFUN([FP_PATH_XTRA], -[AC_REQUIRE([FP_CHECK_WIN32]) -if test x"$is_win32" = xyes; then - no_x=yes -else - AC_PATH_XTRA -fi -])# FP_PATH_XTRA - - -# FP_CHECK_GL_HELPER(LIBNAME, LIBS, INCLUDES, FUNCTION-BODY) -# ---------------------------------------------------------- -# Try each library in LIBS to successfully link INCLUDES plus FUNCTION-BODY, -# setting LIBNAME_CFLAGS and LIBNAME_LIBS to the corresponding values. Sets -# no_LIBNAME to "yes" if no suitable library was found. (LIBNAME_CFLAGS0 -# contains the value of LIBNAME_CFLAGS without CPPFLAGS, and LIBNAME_LIBS0 -# contains the value of LIBNAME_LIBS without LDFLAGS, but these are only -# used internally.) -AC_DEFUN([FP_CHECK_GL_HELPER], -[AC_CACHE_CHECK([for $1 library], [fp_cv_check_$1_lib], - [fp_cv_check_$1_lib="no" - fp_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS ${$1_CFLAGS}" - fp_save_LIBS="$LIBS" - for fp_try_lib in $2; do - # transform "-lfoo" to "foo.lib" when using cl - if test x"$CC" = xcl; then - fp_try_lib=`echo $fp_try_lib | sed -e 's/^-l//' -e 's/$/.lib/'` - fi - LIBS="$fp_try_lib ${$1_LIBS} $fp_save_LIBS" - AC_LINK_IFELSE([AC_LANG_PROGRAM([$3], [$4])], [fp_cv_check_$1_lib="$fp_try_lib ${$1_LIBS}"; break]) - done - LIBS="$fp_save_LIBS" - CPPFLAGS="$fp_save_CPPFLAGS"]) - - if test x"$fp_cv_check_$1_lib" = xno; then - no_$1=yes - $1_CFLAGS= - $1_LIBS= - else - $1_CFLAGS0="${$1_CFLAGS}" - $1_CFLAGS="$CPPFLAGS ${$1_CFLAGS0}" - $1_LIBS0="$fp_cv_check_$1_lib" - $1_LIBS="$LDFLAGS ${$1_LIBS0}" - fi -])# FP_CHECK_GL_HELPER - - -# FP_CHECK_GL -# ----------- -AC_DEFUN([FP_CHECK_GL], -[AC_REQUIRE([FP_PATH_X]) -AC_REQUIRE([AC_CANONICAL_TARGET]) - -AC_ARG_ENABLE([hopengl], - [AC_HELP_STRING([--enable-hopengl], - [build a Haskell binding for OpenGL (GL/GLU). On Mac OS X, use - --enable-hopengl=x11 to use X11 instead of the "native" libraries. - (default=no)])], - [enable_opengl=$enableval], [enable_opengl=no]) - -if test x"$enable_opengl" = xno; then - no_GL=yes +# FP_GHC_HAS_READLINE +# ------------------- +AC_DEFUN([FP_GHC_HAS_READLINE], +[AC_REQUIRE([FP_PROG_GHC_PKG]) +AC_CACHE_CHECK([whether ghc has readline package], [fp_cv_ghc_has_readline], +[if "${GhcPkgCmd-ghc-pkg}" --show-package readline >/dev/null 2>&1; then + fp_cv_ghc_has_readline=yes else - use_quartz_opengl=no - case $target_os in - darwin*) - if test x"$enable_opengl" != xx11; then - AC_DEFINE([USE_QUARTZ_OPENGL], [1], - [Define to 1 if native OpenGL should be used on Mac OS X]) - use_quartz_opengl=yes - fi - ;; - esac - - if test x"$use_quartz_opengl" != xyes; then - AC_CHECK_LIB([m], [atan], [GL_LIBS="-lm $GL_LIBS"]) - - if test x"$no_x" != xyes; then - test -n "$x_includes" && GL_CFLAGS="-I$x_includes $GL_CFLAGS" - test -n "$x_libraries" && GL_LIBS="-L$x_libraries -lX11 $GL_LIBS" - fi - - FP_CHECK_GL_HELPER([GL], [-lGL -lopengl32], [@%:@include ], [glEnd()]) - - if test x"$no_GL" != xyes; then - # Ugly: To get wglGetProcAddress on Windows, we have to link with - # opengl32.dll, too, even when we are using Cygwin with X11. - case "$GL_LIBS" in - *-lopengl32*|*opengl32.lib*) ;; - *) fp_save_LIBS="$LIBS" - LIBS="$LIBS -lopengl32" - AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include ]], [[glEnd()]])], - [GL_LIBS="$GL_LIBS -lopengl32"; GL_LIBS0="$GL_LIBS0 -lopengl32"]) - LIBS="$fp_save_LIBS" - ;; - esac - fi - fi -fi - -AC_SUBST([GL_CFLAGS]) -AC_SUBST([GL_LIBS]) -])# FP_CHECK_GL - - -# FP_CHECK_GLU -# ------------ -AC_DEFUN([FP_CHECK_GLU], -[AC_REQUIRE([FP_CHECK_GL])dnl -GLU_CFLAGS="$GL_CFLAGS0" -GLU_LIBS="$GL_LIBS0" - -if test x"$enable_opengl" = xno; then - no_GLU=yes -elif test x"$use_quartz_opengl" != xyes; then - FP_CHECK_GL_HELPER([GLU], [-lglu32 -lGLU], [@%:@include ], [gluNewQuadric()]) -fi - -AC_SUBST([GLU_CFLAGS]) -AC_SUBST([GLU_LIBS]) -])# FP_CHECK_GLU - - -# FP_CHECK_GLUT -# ------------- -AC_DEFUN([FP_CHECK_GLUT], -[AC_REQUIRE([FP_CHECK_GLU]) -FP_PATH_XTRA + fp_cv_ghc_has_readline=no + fi]) +AC_SUBST([GhcHasReadline], [`echo $fp_cv_ghc_has_readline | sed 'y/yesno/YESNO/'`]) +])# FP_GHC_HAS_READLINE + + +# FP_GCC_NEEDS_NO_OMIT_LFPTR +# -------------------------- +# Some OSs (Mandrake Linux, in particular) configure GCC with +# -momit-leaf-frame-pointer on by default. If this is the case, we need to turn +# it off for mangling to work. The test is currently a bit crude, using only the +# version number of gcc. Defines HAVE_GCC_MNO_OMIT_LFPTR. +AC_DEFUN([FP_GCC_NEEDS_NO_OMIT_LFPTR], +[AC_REQUIRE([FP_HAVE_GCC]) +AC_CACHE_CHECK([whether gcc needs -mno-omit-leaf-frame-pointer], [fp_cv_gcc_needs_no_omit_lfptr], +[FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [3.2], + [fp_cv_gcc_needs_no_omit_lfptr=yes], + [fp_cv_gcc_needs_no_omit_lfptr=no])]) +if test "$fp_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])# FP_GCC_NEEDS_NO_OMIT_LFPTR + +# FP_GCC_HAS_NO_UNIT_AT_A_TIME +# -------------------------- +AC_DEFUN([FP_GCC_HAS_NO_UNIT_AT_A_TIME], +[AC_REQUIRE([FP_HAVE_GCC]) +AC_CACHE_CHECK([whether gcc has -fno-unit-at-a-time], [fp_cv_gcc_has_no_unit_at_a_time], +[FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [3.4], + [fp_cv_gcc_has_no_unit_at_a_time=yes], + [fp_cv_gcc_has_no_unit_at_a_time=no])]) +if test "$fp_cv_gcc_has_no_unit_at_a_time" = "yes"; then + AC_DEFINE([HAVE_GCC_HAS_NO_UNIT_AT_A_TIME], [1], [Define to 1 if gcc supports -fno-unit-at-a-time.]) +fi]) -if test x"$enable_opengl" = xno; then - no_GLUT=yes -elif test x"$use_quartz_opengl" != xyes; then - GLUT_CFLAGS="$GLU_CFLAGS0" - GLUT_LIBS="$GLU_LIBS0" +# FP_SETUP_PROJECT_VERSION +# --------------------- +AC_DEFUN([FP_SETUP_PROJECT_VERSION], +[# Some renamings +AC_SUBST([ProjectName], [$PACKAGE_NAME]) +AC_SUBST([ProjectVersion], [$PACKAGE_VERSION]) + +# Split PACKAGE_VERSION into (possibly empty) parts +VERSION_MAJOR=`echo $PACKAGE_VERSION | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\1'/` +VERSION_TMP=`echo $PACKAGE_VERSION | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\3'/` +VERSION_MINOR=`echo $VERSION_TMP | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\1'/` +ProjectPatchLevel=`echo $VERSION_TMP | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\3'/` + +# Calculate project version as an integer, using 2 digits for minor version +case $VERSION_MINOR in + ?) ProjectVersionInt=${VERSION_MAJOR}0${VERSION_MINOR} ;; + ??) ProjectVersionInt=${VERSION_MAJOR}${VERSION_MINOR} ;; + *) AC_MSG_ERROR([bad minor version in $PACKAGE_VERSION]) ;; +esac +AC_SUBST([ProjectVersionInt]) - if test x"$no_x" != xyes; then - GLUT_LIBS="$X_PRE_LIBS -lXmu -lXi $X_EXTRA_LIBS $GLUT_LIBS" - fi +# The project patchlevel is zero unless stated otherwise +test -z "$ProjectPatchLevel" && ProjectPatchLevel=0 - AC_CHECK_HEADERS([windows.h GL/glut.h]) - # Note 1: On Cygwin with X11, GL/GLU functions use the "normal" calling - # convention, but GLUT functions use stdcall. To get this right, it is - # necessary to include first. - # Note 2: MinGW/MSYS comes without a GLUT header, so we use Cygwin's one in - # that case. - FP_CHECK_GL_HELPER([GLUT], [-lglut32 -lglut], [ -#if HAVE_WINDOWS_H -#include -#endif -#if HAVE_GL_GLUT_H -#include -#else -#include "glut_local.h" -#endif - ], [glutMainLoop()]) -fi +# Remove dots from the patch level; this allows us to have versions like 6.4.1.20050508 +ProjectPatchLevel=`echo $ProjectPatchLevel | sed 's/\.//'` -AC_SUBST([GLUT_CFLAGS]) -AC_SUBST([GLUT_LIBS]) -])# FP_CHECK_GLUT +AC_SUBST([ProjectPatchLevel]) +])# FP_SETUP_PROJECT_VERSION # LocalWords: fi