-dnl $Id: aclocal.m4,v 1.100 2002/05/05 17:03:54 panne Exp $
+dnl $Id: aclocal.m4,v 1.111 2003/01/08 12:03:28 simonmar Exp $
dnl
dnl Extra autoconf macros for the Glasgow fptools
dnl
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,
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.9],
- [AC_MSG_ERROR([Happy version 1.9 or later is required to compile GHC.])])dnl
+ 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)
+])
-# 1.9 and later is required, assume that we can use the
-# "-agc" options. NOTE: The Master of Happy-ness says:
-# "Don't use -s! (yet)"
-HappyOpts="-agc"
-AC_SUBST(HappyOpts)
+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
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 ..."
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
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
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,
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
])
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
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_save_LIBS="$LIBS"
LIBS="$GL_X_LIBS"
- FPTOOLS_SEARCH_LIBS([#include <GL/gl.h>], glEnd, $GL_search_list, have_GL=yes, have_GL=no)
- FPTOOLS_SEARCH_LIBS([#include <GL/glu.h>], gluNewQuadric, $GLU_search_list, have_GLU=yes, have_GLU=no)
- FPTOOLS_SEARCH_LIBS([#include <GL/glx.h>], glXChooseVisual, $GLX_search_list, have_GLX=yes, have_GLX=no)
- FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop, glut glut32, have_glut=yes, have_glut=no)
+ FPTOOLS_SEARCH_LIBS([#include <GL/gl.h>], glEnd, $GL_search_list, have_GL=yes, have_GL=no)
+ FPTOOLS_SEARCH_LIBS([#include <GL/glu.h>], gluNewQuadric, $GLU_search_list, have_GLU=yes, have_GLU=no)
+ FPTOOLS_SEARCH_LIBS([#include <GL/glx.h>], glXWaitX, $GLX_search_list, have_GLX=yes, have_GLX=no)
+ FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop, glut glut32, have_glut=yes, have_glut=no)
if test -n "$LIBS"; then
GL_LIBS="$LIBS"
$2="";
fi;
])
+
+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 <sys/types.h>
+#include <sys/uio.h>
+#include <sys/socket.h>], [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 <sys/types.h>
+#include <sys/uio.h>
+#include <sys/socket.h>], [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
+])
+