X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=aclocal.m4;h=c2e50b02e4ba5c7513a786bc50b4abdc740ab36c;hp=46b55507e38025cdea71d192d636a5da8a86ce22;hb=be5ed22c3679f6195f2d73f1ed9951fb61af473e;hpb=d2f7d10f15a70574bceb690d26bc1f397d9806ca diff --git a/aclocal.m4 b/aclocal.m4 index 46b5550..c2e50b0 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,4 +1,4 @@ -dnl $Id: aclocal.m4,v 1.75 2001/06/26 23:12:19 sof Exp $ +dnl $Id: aclocal.m4,v 1.123 2003/08/13 13:35:07 simonmar Exp $ dnl dnl Extra autoconf macros for the Glasgow fptools dnl @@ -86,11 +86,11 @@ AC_DEFUN(FPTOOLS_REGEX_IN_LIBC, re_search_2 (&patbuf, "", 0, "",0, 0,0,0,0); ], fptools_cv_have_regex=yes, fptools_cv_have_regex=no)]) if test "$fptools_cv_have_regex" = yes; then - HaveRegex=YES + HaveGNURegex=YES else - HaveRegex=NO + HaveGNURegex=NO fi -AC_SUBST(HaveRegex) +AC_SUBST(HaveGNURegex) ]) @@ -188,8 +188,30 @@ 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.9. If there's no installed Happy, we look +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. dnl AC_DEFUN(FPTOOLS_HAPPY, @@ -197,9 +219,11 @@ AC_DEFUN(FPTOOLS_HAPPY, if test -d $srcdir/happy; then SrcTreeHappyCmd=$hardtop/happy/src/happy-inplace fi -#AC_PATH_PROG(HappyCmd,happy,$SrcTreeHappyCmd) -HappyCmd=$SrcTreeHappyCmd -AC_SUBST(HappyCmd) +if test x"$UseSrcTreeHappy" = xYES; then + HappyCmd=$SrcTreeHappyCmd +else + AC_PATH_PROG(HappyCmd,happy,$SrcTreeHappyCmd) +fi AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version, changequote(, )dnl [if test x"$HappyCmd" = x"$SrcTreeHappyCmd"; then @@ -212,15 +236,70 @@ else fi; changequote([, ])dnl ]) -if test -d $srcdir/ghc; then - FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_happy_version],-lt,[1.9], - [AC_MSG_ERROR([Happy version 1.9 or later is required to compile GHC.])])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 fi HappyVersion=$fptools_cv_happy_version; AC_SUBST(HappyVersion) ]) 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 +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 +dnl do without it for now. +]) + +dnl +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, +[ +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_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 + fptools_cv_alex_version="`$AlexCmd -v | + grep 'Alex [Vv]ersion' | sed -e 's/Alex [Vv]ersion \([0-9\.]*\).*/\1/g'`" ; +else + fptools_cv_alex_version=""; +fi; +changequote([, ])dnl +]) +if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Lexer.hs; then + FPTOOLS_PROG_CHECK_VERSION([$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 What's the best way of doing context diffs? dnl dnl (NB: NeXTStep thinks diff'ing a file against itself is "trouble") @@ -247,6 +326,29 @@ AC_SUBST(ContextDiffCmd) ]) 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 +${CC-cc} -c conftest.c +if ${LdCmd} -r -x -o foo.o conftest.o; then + fptools_cv_ld_x=yes +else + fptools_cv_ld_x=no +fi +rm -rf conftest.c conftest.o foo.o +]) +if test "$fptools_cv_ld_x" = yes; then + LdXFlag=-x +else + LdXFlag= +fi +AC_SUBST(LdXFlag) +]) + +dnl dnl Finding the Right Yacc dnl AC_DEFUN(FPTOOLS_PROG_YACCY, @@ -282,36 +384,62 @@ AC_SUBST(YaccCmd) dnl *** Checking for ar and its arguments + whether we need ranlib. dnl -dnl ArCmd and RANLIB are AC_SUBST'ed +dnl ArCmd, ArSupportsInput and RANLIB are AC_SUBST'ed +dnl On Digital UNIX, we test for the -Z (compress) and +dnl -input (take list of files from external file) flags. dnl AC_DEFUN(FPTOOLS_PROG_AR_AND_RANLIB, -[AC_PATH_PROG(ArCmd,ar) -if test -z "$ArCmd"; then +[AC_PATH_PROG(ArCmdRaw,ar) +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 $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then - ArCmd="$ArCmd clqs" +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 $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then - ArCmd="$ArCmd cqs" +elif $ArCmdRaw clqs conftest.a >/dev/null 2>/dev/null; then + ArCmdArgs="clqs" NeedRanLib='' -elif $ArCmd clq conftest.a >/dev/null 2>/dev/null; then - ArCmd="$ArCmd clq" +elif $ArCmdRaw cqs conftest.a >/dev/null 2>/dev/null; then + ArCmdArgs="cqs" + NeedRanLib='' +elif $ArCmdRaw clq conftest.a >/dev/null 2>/dev/null; then + ArCmdArgs="clq" NeedRanLib='YES' -elif $ArCmd cq conftest.a >/dev/null 2>/dev/null; then - ArCmd="$ArCmd cq" +elif $ArCmdRaw cq conftest.a >/dev/null 2>/dev/null; then + ArCmdArgs="cq" NeedRanLib='YES' -elif $ArCmd cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then - ArCmd="$ArCmd cq" +elif $ArCmdRaw cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then + ArCmdArgs="cq" NeedRanLib='YES' else echo "I can't figure out how to use your $ArCmd" exit 1 fi rm -rf conftest* +case $HostPlatform in + *mingw32) + ArCmd="`cygpath -w ${ArCmdRaw} | sed -e 's@\\\\@/@g' ` ${ArCmdArgs}" + ;; + *) ArCmd="${ArCmdRaw} ${ArCmdArgs}" + ;; +esac test -n "$ArCmd" && test -n "$verbose" && echo " setting ArCmd to $ArCmd" AC_SUBST(ArCmd) +if $ArCmd conftest.a -input /dev/null >/dev/null 2>/dev/null; then + ArSupportsInput='-input' +else + ArSupportsInput='' +fi +rm -rf conftest* +test -n "$ArSupportsInput" && test -n "$verbose" && echo " setting ArSupportsInput to $ArSupportsInput" +AC_SUBST(ArSupportsInput) if test -z "$NeedRanLib"; then RANLIB=':' test -n "$verbose" && echo " setting RANLIB to $RANLIB" @@ -352,20 +480,42 @@ AC_DEFUN(FPTOOLS_HAVE_GCC, fptools_cv_have_gcc='no' else changequote(, )dnl - cmd_string="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/expr 20 \\\< \1 \\\* 10 + \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 - if test `eval $cmd_string 2>/dev/null` != "1"; then - echo '' - echo "I'm not sure if your version of gcc will work," - echo "but it's worth a shot, eh?" - fi fptools_cv_have_gcc='yes' + FPTOOLS_PROG_CHECK_VERSION($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) ]) +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 @@ -374,20 +524,60 @@ 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* ]) 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) +else +FindCmd=$Find2Cmd +AC_SUBST(FindCmd) +fi +]) + +dnl +dnl FPTOOLS_NOCACHE_CHECK prints a message, then sets the +dnl values of the second argument to the result of running +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_MSG_CHECKING([$1]) + $3 + AC_MSG_RESULT([$][$2]) +]) + +dnl dnl FPTOOLS_GHC_VERSION(version) dnl FPTOOLS_GHC_VERSION(major, minor [, patchlevel]) dnl FPTOOLS_GHC_VERSION(version, major, minor, patchlevel) @@ -396,47 +586,44 @@ dnl Test for version of installed ghc. Uses $GHC. dnl [original version pinched from c2hs] dnl AC_DEFUN(FPTOOLS_GHC_VERSION, -[define([FPTOOLS_CV_GHC_VERSION], [fptools_cv_ghc_version])dnl -AC_CACHE_CHECK([version of ghc], FPTOOLS_CV_GHC_VERSION, [dnl -${WithGhc-ghc} --version > conftestghc 2>&1 +[FPTOOLS_NOCACHE_CHECK([version of ghc], [fptools_version_of_ghc], +["${WithGhc-ghc}" --version > conftestghc 2>&1 cat conftestghc >&AC_FD_CC -dnl `Useless Use Of cat' award... -changequote(<<, >>)dnl - FPTOOLS_CV_GHC_VERSION=`cat conftestghc | sed -n -e 's/, patchlevel *\([0-9]\)/.\1/;s/.* version \([0-9][0-9.]*\).*/\1/p'` -changequote([, ])dnl +#Useless Use Of cat award... + fptools_version_of_ghc=`cat conftestghc | sed -n -e 's/, patchlevel *\([[0-9]]\)/.\1/;s/.* version \([[0-9]][[0-9.]]*\).*/\1/p'` rm -fr conftest* - if test "[$]FPTOOLS_CV_GHC_VERSION" = "" + if test "[$]fptools_version_of_ghc" = "" then - FPTOOLS_CV_GHC_VERSION='unknown' - fi]) -changequote(<<, >>)dnl -FPTOOLS_CV_GHC_VERSION<<_major>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^\([0-9]\).*/\1/'` -FPTOOLS_CV_GHC_VERSION<<_minor>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^[0-9]\.\([0-9]*\).*/\1/'` -FPTOOLS_CV_GHC_VERSION<<_pl>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -n -e 's/^[0-9]\.[0-9]*\.\([0-9]*\)/\1/p'` -changequote([, ])dnl -if test "[$]FPTOOLS_CV_GHC_VERSION[_pl]" = "" + fptools_version_of_ghc='unknown' + fi +fptools_version_of_ghc[_major]=`echo [$]fptools_version_of_ghc | sed -e 's/^\([[0-9]]\).*/\1/'` +fptools_version_of_ghc[_minor]=`echo [$]fptools_version_of_ghc | sed -e 's/^[[0-9]]\.\([[0-9]]*\).*/\1/'` +fptools_version_of_ghc[_pl]=`echo [$]fptools_version_of_ghc | sed -n -e 's/^[[0-9]]\.[[0-9]]*\.\([[0-9]]*\)/\1/p'` +# +if test "[$]fptools_version_of_ghc[_pl]" = "" then - FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor]" - FPTOOLS_CV_GHC_VERSION[_pl]="0" + fptools_version_of_ghc[_all]="[$]fptools_version_of_ghc[_major].[$]fptools_version_of_ghc[_minor]" + fptools_version_of_ghc[_pl]="0" else - FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor].[$]FPTOOLS_CV_GHC_VERSION[_pl]" + fptools_version_of_ghc[_all]="[$]fptools_version_of_ghc[_major].[$]fptools_version_of_ghc[_minor].[$]fptools_version_of_ghc[_pl]" fi +# ifelse($#, [1], [dnl -[$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]" +[$1]="[$]fptools_version_of_ghc[_all]" ], $#, [2], [dnl -[$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]" -[$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]" +[$1]="[$]fptools_version_of_ghc[_major]" +[$2]="[$]fptools_version_of_ghc[_minor]" ], $#, [3], [dnl -[$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]" -[$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]" -[$3]="[$]FPTOOLS_CV_GHC_VERSION[_pl]" +[$1]="[$]fptools_version_of_ghc[_major]" +[$2]="[$]fptools_version_of_ghc[_minor]" +[$3]="[$]fptools_version_of_ghc[_pl]" ], $#, [4], [dnl -[$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]" -[$2]="[$]FPTOOLS_CV_GHC_VERSION[_major]" -[$3]="[$]FPTOOLS_CV_GHC_VERSION[_minor]" -[$4]="[$]FPTOOLS_CV_GHC_VERSION[_pl]" -], [AC_MSG_ERROR([wrong number of arguments to [$0]])])dnl -undefine([FPTOOLS_CV_GHC_VERSION])dnl +[$1]="[$]fptools_version_of_ghc[_all]" +[$2]="[$]fptools_version_of_ghc[_major]" +[$3]="[$]fptools_version_of_ghc[_minor]" +[$4]="[$]fptools_version_of_ghc[_pl]" +]) +]) ])dnl @@ -498,14 +685,53 @@ AC_MSG_CHECKING(Haskell type for $1) AC_CACHE_VAL(AC_CV_NAME, [AC_TRY_RUN([#include #include + +#ifdef HAVE_SYS_TYPES_H +# include +#endif + +#ifdef HAVE_UNISTD_H +# include +#endif + +#ifdef HAVE_SYS_STAT_H +# include +#endif + +#ifdef HAVE_FCNTL_H +# include +#endif + #ifdef HAVE_SIGNAL_H -#include +# include #endif + #ifdef HAVE_TIME_H -#include +# include +#endif + +#ifdef HAVE_TERMIOS_H +# include #endif + +#ifdef HAVE_STRING_H +# include +#endif + +#ifdef HAVE_CTYPE_H +# include +#endif + #ifdef HAVE_GL_GL_H -#include +# include +#endif + +#ifdef HAVE_OPENGL_GL_H +# include +#endif + +#ifdef HAVE_SYS_RESOURCE_H +# include #endif typedef $1 testing; @@ -566,7 +792,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, @@ -581,10 +806,10 @@ main() }], eval "$cv_name=`cat conftestval`", eval "$cv_name=-1", -ifelse([$2], , , eval "$cv_name=$2"))])dnl +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 ]) @@ -609,11 +834,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 @@ -624,81 +849,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_MSG_CHECKING([for end of text section marker]) -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 - AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, $i)) - AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, $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 - AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, etext)) - AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, etext asm("etext"))) -else - AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, dunno_what_it_is) - AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, dunno_what_it_is) -fi -fi -AC_MSG_RESULT([$]fptools_cv_end_of_text) +AC_DEFUN(FPTOOLS_IN_SCOPE, +[AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no) ]) -dnl *** What's the end-of-data-section marker called? *** -dnl -AC_DEFUN(FPTOOLS_END_DATA_SECTION, -[AC_MSG_CHECKING([for end of data section marker]) -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 - AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, $i)]) - AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, $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 - AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, end asm("end"))]) - AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, end)]) -else - AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, dunno_what_it_is)]) - AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, dunno_what_it_is)]) -fi -fi -AC_MSG_RESULT([$]fptools_cv_end_of_data) -]) - - dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning @@ -774,7 +930,7 @@ AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN, dnl check for prototypes dnl -AC_DEFUN(AC_C_PROTOTYPES, +AC_DEFUN([AC_C_PROTOTYPES], [AC_CACHE_CHECK([prototypes], ac_cv_prototypes, [AC_TRY_COMPILE([ void foo(int); @@ -787,7 +943,7 @@ return; ac_cv_prototypes=yes, ac_cv_prototypes=no)]) if test "$ac_cv_prototypes" = yes; then -AC_DEFINE(HAVE_PROTOTYPES) +AC_DEFINE([HAVE_PROTOTYPES]) fi ]) @@ -820,13 +976,18 @@ Test. EOF fptools_cv_sgml_catalog=no -for fptools_catalog in $4; do - ac_try="$2 -t rtf -d $3#print -c $fptools_catalog conftest.sgml" - if AC_TRY_EVAL(ac_try); then - fptools_cv_sgml_catalog=[$]fptools_catalog - break - fi -done +if test -z "$SGML_CATALOG_FILES" ; then + for fptools_catalog in $4; do + ac_try="$2 -t rtf -d $3#print -c $fptools_catalog conftest.sgml" + if AC_TRY_EVAL(ac_try); then + fptools_cv_sgml_catalog=[$]fptools_catalog + break + fi + done +else +# If the env var SGML_CATALOG_FILES is defined, assume things are cool. + fptools_cv_sgml_catalog="yes" +fi ]) rm -rf conftest* if test $fptools_cv_sgml_catalog != "no"; then @@ -900,7 +1061,7 @@ AC_DEFUN(FPTOOLS_CHECK_LIBM, [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case "$host" in -*-*-beos* | *-*-macosx*) +*-*-beos*) # These system don't have libm ;; *-ncr-sysv4.3*) @@ -914,9 +1075,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 -*- ####################### @@ -944,8 +1103,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 @@ -989,12 +1148,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=yes)], use_Mesa=$enableval, use_Mesa=yes) +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" @@ -1010,11 +1170,12 @@ dnl AC_ARG_ENABLE(Mesa, $with_Mesa_help_string, use_Mesa=$enableval, use_Mesa AC_LANG_C dnl If we are running under X11 then add in the appropriate libraries. - if ! test x"$no_x" = xyes; then + 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" @@ -1022,28 +1183,39 @@ dnl and GL_X_LIBS. GL_save_LIBS="$LIBS" LIBS="$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 ], glXChooseVisual, $GLX_search_list, have_GLX=yes, have_GLX=no) - FPTOOLS_SEARCH_LIBS([#include ], glutMainLoop, glut glut32, have_glut=yes, have_glut=no) + 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) 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" @@ -1068,19 +1240,53 @@ fi ]) dnl -dnl Check to see whether CC (gcc) supports the -mwin32 option. -dnl -AC_DEFUN(FPTOOLS_CC_MWIN32, -[AC_CACHE_CHECK([whether $CC accepts -mwin32], ac_cv_cc_supports_mwin32, +dnl Check to see whether CC (gcc) supports a particular option. +dnl +AC_DEFUN(FPTOOLS_CC_FLAG, +[ +AC_CACHE_CHECK([whether $CC accepts $1], [ac_cv_cc_$2], [save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -mwin32" + CFLAGS="$CFLAGS $1" AC_LANG_C - AC_TRY_COMPILE(,[int main(){return(0);}], ac_cv_cc_supports_mwin32=yes, ac_cv_cc_supports_mwin32=no) - CFLAGS="$CFLAGS_save"]) -if test "$ac_cv_cc_supports_mwin32" = yes; then - CC_MWIN32_FLAG="-mwin32"; + AC_TRY_COMPILE(,[int main(){return(0);}], + [ac_cv_cc_$2=yes], + [ac_cv_cc_$2=no]) + CFLAGS="$save_CFLAGS" +]) +if test "$ac_cv_cc_$2"x = "yesx"; then + $2=$1; else - CC_MWIN32_FLAG=""; + $2=""; fi; -AC_SUBST(CC_MWIN32_FLAG) ]) + +dnl +dnl Check to see whether 'struct msghdr' contains msg_control +dnl +AC_DEFUN(FPTOOLS_MSGHDR_MSG_CONTROL, +[AC_CACHE_CHECK([for msg_control in struct msghdr], fptools_cv_struct_msghdr_msg_control, +[AC_TRY_COMPILE([#include +#include +#include ], [struct msghdr m; m.msg_control;], +fptools_cv_struct_msghdr_msg_control=yes, fptools_cv_struct_msghdr_msg_control=no)]) +if test $fptools_cv_struct_msghdr_msg_control = yes; then + AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL) +fi +AC_SUBST(HAVE_MSGHDR_MSG_CONTROL)dnl +]) + +dnl +dnl Check to see whether 'struct msghdr' contains msg_accrights +dnl +AC_DEFUN(FPTOOLS_MSGHDR_MSG_ACCRIGHTS, +[AC_CACHE_CHECK([for msg_accrights in struct msghdr], fptools_cv_struct_msghdr_msg_accrights, +[AC_TRY_COMPILE([#include +#include +#include ], [struct msghdr m; m.msg_accrights;], +fptools_cv_struct_msghdr_msg_accrights=yes, fptools_cv_struct_msghdr_msg_accrights=no)]) +if test $fptools_cv_struct_msghdr_msg_accrights = yes; then + AC_DEFINE(HAVE_MSGHDR_MSG_ACCRIGHTS) +fi +AC_SUBST(HAVE_MSGHDR_MSG_ACCRIGHTS)dnl +]) +