X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=aclocal.m4;h=d67dc286e436218113fdaaee97e4b5cbc0b52703;hb=72f5cd2fbc56c266e92f974a4561fbe878628b63;hp=e34db889ce13417427cd2fe959da18f57da01698;hpb=3d416a577d7cc35d13dfe265c4f5cb19e4f27e88;p=ghc-hetmet.git diff --git a/aclocal.m4 b/aclocal.m4 index e34db88..d67dc28 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,4 +1,4 @@ -dnl $Id: aclocal.m4,v 1.107 2002/07/23 10:08:58 simonmar Exp $ +dnl $Id: aclocal.m4,v 1.120 2003/07/20 16:33:24 panne Exp $ dnl dnl Extra autoconf macros for the Glasgow fptools dnl @@ -188,6 +188,28 @@ fi dnl +dnl Check for Greencard and version. +dnl +AC_DEFUN(FPTOOLS_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 | + 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) +]) + +dnl dnl Check for Happy and version. If we're building GHC, then we need dnl at least Happy version 1.13. If there's no installed Happy, we look dnl for a happy source tree and point the build system at that instead. @@ -337,7 +359,13 @@ if test -z "$ArCmdRaw"; then echo "You don't seem to have ar in your PATH...I have no idea how to make a library" exit 1; fi -if $ArCmdRaw clqsZ conftest.a >/dev/null 2>/dev/null; then +dnl GNU ar needs special treatment: it appears to have problems with +dnl object files with the same name if you use the 's' modifier, but +dnl simple 'ar q' works fine, and doesn't need a separate ranlib. +if $ArCmdRaw --version | grep 'GNU' >/dev/null 2>/dev/null; then + ArCmdArgs='q' + NeedRanLib='' +elif $ArCmdRaw clqsZ conftest.a >/dev/null 2>/dev/null; then ArCmdArgs="clqsZ" NeedRanLib='' elif $ArCmdRaw clqs conftest.a >/dev/null 2>/dev/null; then @@ -417,10 +445,10 @@ AC_DEFUN(FPTOOLS_HAVE_GCC, fptools_cv_have_gcc='no' else changequote(, )dnl - is_gcc_v1="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/expr 2000 \\\>= \1 \\\* 1000 + \2/g' `" + 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' - if test `eval $is_gcc_v1 2>/dev/null` = "1"; then + FPTOOLS_PROG_CHECK_VERSION($gcc_version_str, -lt, "2.0", fptools_cv_have_gcc='no' echo "" echo "your gcc version appears to be ..." @@ -428,13 +456,31 @@ changequote([, ])dnl 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 + ) fi ]) HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'` AC_SUBST(HaveGcc) ]) +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, +[ + 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') +]) +if test "$fptools_cv_gcc_needs_no_omit_lfptr" = "yes"; then + AC_DEFINE(HAVE_GCC_MNO_OMIT_LFPTR) +fi +]) + dnl Small feature test for perl version. Assumes PerlCmd dnl contains path to perl binary dnl @@ -443,15 +489,19 @@ AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION, if grep "version 5" conftest.out >/dev/null 2>&1; then : else - if grep "v5.6" conftest.out >/dev/null 2>&1; then - : - else - if grep "version 6" conftest.out >/dev/null 2>&1; then - : - else - echo "Your version of perl probably won't work." - fi - fi + if grep "v5.6" conftest.out >/dev/null 2>&1; then + : + else + if grep "v5.8" conftest.out >/dev/null 2>&1; then + : + else + if grep "version 6" conftest.out >/dev/null 2>&1; then + : + else + echo "Your version of perl probably won't work." + fi + fi + fi fi rm -fr conftest* ]) @@ -641,6 +691,10 @@ AC_CACHE_VAL(AC_CV_NAME, # include #endif +#ifdef HAVE_SYS_RESOURCE_H +# include +#endif + typedef $1 testing; main() { @@ -699,7 +753,6 @@ dnl This is set up so that the argument can be a shell variable. dnl AC_DEFUN(FPTOOLS_CHECK_CCONST, [ -eval "def_name=CCONST_$1" eval "cv_name=ac_cv_cconst_$1" AC_MSG_CHECKING(value of $1) AC_CACHE_VAL($cv_name, @@ -717,7 +770,7 @@ eval "$cv_name=-1", eval "$cv_name=-1")])dnl eval "fptools_check_cconst_result=`echo '$'{$cv_name}`" AC_MSG_RESULT($fptools_check_cconst_result) -AC_DEFINE_UNQUOTED($def_name, $fptools_check_cconst_result) +AC_DEFINE_UNQUOTED(CCONST_$1, $fptools_check_cconst_result) unset fptools_check_cconst_result ]) @@ -742,11 +795,11 @@ AC_CACHE_VAL(fptools_cv_have_o_binary, [ AC_LANG_SAVE AC_LANG_C -AC_TRY_COMPILE(, +AC_TRY_COMPILE( [#ifdef HAVE_FCNTL_H #include -#endif -int x = O_BINARY;], +#endif], +[int x = O_BINARY;], fptools_cv_have_o_binary=yes, fptools_cv_have_o_binary=no) AC_LANG_RESTORE @@ -757,130 +810,12 @@ AC_DEFINE(HAVE_O_BINARY) fi ]) -dnl *** Which one comes first, .text or .data? *** -dnl -AC_DEFUN(FPTOOLS_CODE_BEFORE_DATA, -[AC_CACHE_CHECK([if code section appears before data], fptools_cv_code_bef_data, -[AC_TRY_RUN([ -int f() { return 1; } -int i; -int main() { return ((char*)&f > (char*)&i); } - -], -fptools_cv_code_bef_data=yes, fptools_cv_code_bef_data=no,false)]) -if test "$fptools_cv_code_bef_data" = yes; then - AC_DEFINE(CODE_BEFORE_DATA) -fi -]) - dnl *** Helper function ** dnl AC_DEFUN(FPTOOLS_IN_SCOPE, [AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no) ]) -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], - [fptools_cv_end_of_text="" - not_done=1 - 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 - fptools_cv_end_of_text=$i - not_done=0 - break - fi - done - if test "$not_done" = 1; then - FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text) - if test "$fptools_end_of_text" = yes; then - fptools_cv_end_of_text="etext" - fi - fi]) - if test -n "$fptools_cv_end_of_text"; then - AC_DEFINE_UNQUOTED([TEXT_SECTION_END_MARKER], $fptools_cv_end_of_text) - else - AC_DEFINE_UNQUOTED([TEXT_SECTION_END_MARKER], dunno_end_of_text) - fi - AC_CACHE_CHECK([for end of text section marker declaration], - [fptools_cv_end_of_text_decl], - [fptools_cv_end_of_text_decl="" - not_done=1 - for i in data_start _data_start etext _etext __etext; do - FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text_decl) - if test "$fptools_end_of_text_decl" = yes; then - fptools_cv_end_of_text_decl=$i - not_done=0 - break - fi - done - if test "$not_done" = 1; then - FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text_decl) - if test "$fptools_end_of_text_decl" = yes; then - fptools_cv_end_of_text_decl="etext asm(\"etext\")" - fi - fi]) - if test -n "$fptools_cv_end_of_text_decl"; then - AC_DEFINE_UNQUOTED([TEXT_SECTION_END_MARKER_DECL], $fptools_cv_end_of_text_decl) - else - AC_DEFINE_UNQUOTED([TEXT_SECTION_END_MARKER_DECL], dunno_end_of_text_decl) - fi -]) - -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], - [fptools_cv_end_of_data="" - not_done=1 - for i in end _end __end; do - FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data) - if test "$fptools_end_of_data" = yes; then - fptools_cv_end_of_data=$i - not_done=0 - break - fi - done - if test "$not_done" = 1; then - FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data) - if test "$fptools_end_of_data" = yes; then - fptools_cv_end_of_data="end" - fi - fi]) - if test -n "$fptools_cv_end_of_data"; then - AC_DEFINE_UNQUOTED([DATA_SECTION_END_MARKER], $fptools_cv_end_of_data) - else - AC_DEFINE_UNQUOTED([DATA_SECTION_END_MARKER], dunno_end_of_data) - fi - AC_CACHE_CHECK([for end of data section marker declaration], - [fptools_cv_end_of_data_decl], - [fptools_cv_end_of_data_decl="" - not_done=1 - for i in end _end __end; do - FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data_decl) - if test "$fptools_end_of_data_decl" = yes; then - fptools_cv_end_of_data_decl=$i - not_done=0 - break - fi - done - if test "$not_done" = 1; then - FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data_decl) - if test "$fptools_end_of_data_decl" = yes; then - fptools_cv_end_of_data_decl="end asm(\"end\")" - fi - fi]) - if test -n "$fptools_cv_end_of_data_decl"; then - AC_DEFINE_UNQUOTED([DATA_SECTION_END_MARKER_DECL], $fptools_cv_end_of_data_decl) - else - AC_DEFINE_UNQUOTED([DATA_SECTION_END_MARKER_DECL], dunno_end_of_data_decl) - fi -]) - dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning @@ -1101,9 +1036,7 @@ esac ]) dnl ###################################################################### -dnl NOTE: Because of portability issues between different autoconf -dnl versions the AC_HELP_STRING macro has been removed from FPTOOLS_HAVE_OPENGL. -dnl Furthermore, caching has been completely rewritten. +dnl Note: Caching has been completely rewritten, but is still no perfect yet. dnl ###################################################################### dnl ########################### -*- Mode: M4 -*- ####################### @@ -1131,8 +1064,8 @@ dnl #################################################################### dnl @synopsis FPTOOLS_HAVE_OPENGL dnl dnl Search for OpenGL. We search first for Mesa (a GPL'ed version of -dnl OpenGL) before a vendor's version of OpenGL, unless we were -dnl specifically asked not to with `--with-Mesa=no' or `--without-Mesa'. +dnl OpenGL) before a vendor's version of OpenGL if we were specifically +dnl asked to with `--with-Mesa=yes' or `--with-Mesa'. dnl dnl The four "standard" OpenGL libraries are searched for: "-lGL", dnl "-lGLU", "-lGLX" (or "-lMesaGL", "-lMesaGLU" as the case may be) and @@ -1176,12 +1109,13 @@ AC_DEFUN(FPTOOLS_HAVE_OPENGL, AC_REQUIRE([AC_PATH_XTRA]) AC_REQUIRE([FPTOOLS_CHECK_LIBM]) -dnl Check for Mesa first, unless we were asked not to. -dnl AC_HELP_STRING([--with-Mesa], -dnl [Prefer the Mesa library over a vendors native OpenGL library (default=yes)], -dnl with_Mesa_help_string) -dnl AC_ARG_ENABLE(Mesa, $with_Mesa_help_string, use_Mesa=$enableval, use_Mesa=yes) - AC_ARG_ENABLE(Mesa, [ --with-Mesa Prefer the Mesa library over a vendors native OpenGL library (default=no)], use_Mesa=$enableval, use_Mesa=no) +dnl Check for Mesa first if we were asked to. + AC_ARG_ENABLE(Mesa, +[ --enable-mesa + Prefer Mesa over a vendor's native OpenGL library (default=no) +], + use_Mesa=$enableval, + use_Mesa=no) if test x"$use_Mesa" = xyes; then GL_search_list="MesaGL GL opengl32" @@ -1199,9 +1133,10 @@ dnl AC_ARG_ENABLE(Mesa, $with_Mesa_help_string, use_Mesa=$enableval, use_Mesa dnl If we are running under X11 then add in the appropriate libraries. if test x"$no_x" != xyes; then dnl Add everything we need to compile and link X programs to GL_CFLAGS -dnl and GL_X_LIBS. - GL_CFLAGS="$X_CFLAGS" - GL_X_LIBS="$X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS $LIBM" +dnl and GL_X_LIBS/GLUT_X_LIBS. + GL_CFLAGS="$CPPFLAGS $X_CFLAGS" + GL_X_LIBS="$X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS $LIBM" + GLUT_X_LIBS="$X_LIBS $X_PRE_LIBS -lXmu -lXt -lXi -lXext -lX11 $X_EXTRA_LIBS $LIBM" fi GL_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$GL_CFLAGS" @@ -1212,25 +1147,36 @@ dnl and GL_X_LIBS. FPTOOLS_SEARCH_LIBS([#include ], glEnd, $GL_search_list, have_GL=yes, have_GL=no) FPTOOLS_SEARCH_LIBS([#include ], gluNewQuadric, $GLU_search_list, have_GLU=yes, have_GLU=no) FPTOOLS_SEARCH_LIBS([#include ], glXWaitX, $GLX_search_list, have_GLX=yes, have_GLX=no) - FPTOOLS_SEARCH_LIBS([#include ], glutMainLoop, glut glut32, have_glut=yes, have_glut=no) if test -n "$LIBS"; then - GL_LIBS="$LIBS" + GL_LIBS="$LDFLAGS $LIBS" else - GL_LIBS= + GL_LIBS="$LDFLAGS" GL_CFLAGS= fi + LIBS="$GLUT_X_LIBS" + + FPTOOLS_SEARCH_LIBS([#include ], glutMainLoop, glut32 glut, have_glut=yes, have_glut=no) + + if test -n "$LIBS"; then + GLUT_LIBS="$LDFLAGS $LIBS" + fi + AC_CACHE_CHECK([OpenGL flags], mdl_cv_gl_cflags, [mdl_cv_gl_cflags="$GL_CFLAGS"]) GL_CFLAGS="$mdl_cv_gl_cflags" AC_SUBST(GL_CFLAGS) AC_CACHE_CHECK([OpenGL libs], mdl_cv_gl_libs, [mdl_cv_gl_libs="$GL_LIBS"]) GL_LIBS="$mdl_cv_gl_libs" AC_SUBST(GL_LIBS) + AC_CACHE_CHECK([GLUT libs], mdl_cv_glut_libs, [mdl_cv_glut_libs="$GLUT_LIBS"]) + GLUT_LIBS="$mdl_cv_glut_libs" + AC_SUBST(GLUT_LIBS) -dnl Reset GL_X_LIBS regardless, since it was just a temporary variable +dnl Reset GL_X_LIBS/GLUT_X_LIBS regardless, since they were just temporary variables dnl and we don't want to be global namespace polluters. GL_X_LIBS= + GLUT_X_LIBS= LIBS="$GL_save_LIBS" CPPFLAGS="$GL_save_CPPFLAGS" @@ -1256,7 +1202,7 @@ fi dnl dnl Check to see whether CC (gcc) supports a particular option. -dnl +dnl AC_DEFUN(FPTOOLS_CC_FLAG, [ AC_CACHE_CHECK([whether $CC accepts $1], [ac_cv_cc_$2],