X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=aclocal.m4;h=d76755296cf4329bf718fa3a4e2514373a4f6bef;hb=50afb3c579d9eba76f4433881f3a8c67c11fa8bc;hp=918aaba5cccb67f8bc1cd38485b0fb9f21c3ec5f;hpb=a69327edb251674e7828445fbf1263ffc55823a2;p=ghc-hetmet.git diff --git a/aclocal.m4 b/aclocal.m4 index 918aaba..d767552 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -5,7 +5,7 @@ # FP_EVAL_STDERR(COMMAND) -# ------------------------ +# ----------------------- # Eval COMMAND, save its stderr (without lines resulting from shell tracing) # into the file conftest.err and the exit status in the variable fp_status. AC_DEFUN([FP_EVAL_STDERR], @@ -18,7 +18,7 @@ AC_DEFUN([FP_EVAL_STDERR], # FP_CHECK_FLAG(FLAG, [ACTION-IF-SUPPORTED], [ACTION-IF-NOT-SUPPORTED]) -# ----------------------------------------------------------------------- +# --------------------------------------------------------------------- # Check to see whether the compiler for the current language supports a # particular option. # @@ -76,7 +76,7 @@ AC_SUBST(ContextDiffCmd, [$fp_cv_context_diff]) # FP_DECL_ALTZONE -# ------------------- +# --------------- # Defines HAVE_DECL_ALTZONE to 1 if declared, 0 otherwise. # # Used by base package. @@ -97,7 +97,7 @@ AC_CHECK_DECLS([altzone], [], [],[#if TIME_WITH_SYS_TIME # FP_COMPUTE_INT(EXPRESSION, VARIABLE, INCLUDES, IF-FAILS) -# --------------------------------------------------------- +# -------------------------------------------------------- # Assign VARIABLE the value of the compile-time EXPRESSION using INCLUDES for # compilation. Execute IF-FAILS when unable to determine the value. Works for # cross-compilation, too. @@ -135,7 +135,7 @@ m4_popdef([fp_Cache])[]dnl # 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. AC_DEFUN([FP_CHECK_CONST], @@ -150,7 +150,7 @@ AS_VAR_POPDEF([fp_Cache])[]dnl # FP_CHECK_CONSTS_TEMPLATE(EXPRESSION...) -# ---------------------------------- +# --------------------------------------- # autoheader helper for FP_CHECK_CONSTS m4_define([FP_CHECK_CONSTS_TEMPLATE], [AC_FOREACH([fp_Const], [$1], @@ -160,7 +160,7 @@ m4_define([FP_CHECK_CONSTS_TEMPLATE], # FP_CHECK_CONSTS(EXPRESSION..., [INCLUDES = DEFAULT-INCLUDES], [VALUE-IF-FAIL = -1]) -# ------------------------------------------------------------------------------------- +# ----------------------------------------------------------------------------------- # List version of FP_CHECK_CONST AC_DEFUN(FP_CHECK_CONSTS, [FP_CHECK_CONSTS_TEMPLATE([$1])dnl @@ -307,7 +307,7 @@ else fi AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version, changequote(, )dnl -[if test x"$HappyCmd" = x"$SrcTreeHappyCmd"; then +[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 fptools_cv_happy_version="`$HappyCmd -v | @@ -405,77 +405,123 @@ AC_SUBST(LdXFlag) ]) -dnl *** Checking for ar and its arguments + whether we need ranlib. -dnl -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(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 -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 - ArCmdArgs="clqs" - NeedRanLib='' -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 $ArCmdRaw cq conftest.a >/dev/null 2>/dev/null; then - ArCmdArgs="cq" - NeedRanLib='YES' -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 +# FP_PROG_AR +# ---------- +# Sets fp_prog_ar_raw to the full path of ar and fp_prog_ar to a non-Cygwin +# version of it. Exits if no ar can be found +AC_DEFUN([FP_PROG_AR], +[AC_PATH_PROG([fp_prog_ar_raw], [ar]) +if test -z "$fp_prog_ar_raw"; then + AC_MSG_ERROR([cannot find ar in your PATH, no idea how to make a library]) fi -rm -rf conftest* +fp_prog_ar=$fp_prog_ar_raw case $HostPlatform in - *mingw32) - if test ${OSTYPE} == "msys" - then - ArCmd="${ArCmdRaw} ${ArCmdArgs}" - else - ArCmd="`cygpath -w ${ArCmdRaw} | sed -e 's@\\\\@/@g' ` ${ArCmdArgs}" - fi - ;; - *) ArCmd="${ArCmdRaw} ${ArCmdArgs}" - ;; + *mingw32) if test x${OSTYPE} != xmsys; then + fp_prog_ar="`cygpath -w ${fp_prog_ar_raw} | sed -e 's@\\\\@/@g'`" + AC_MSG_NOTICE([normalized ar command to $fp_prog_ar]) + fi + ;; 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' +])# FP_PROG_AR + + +# FP_PROG_AR_IS_GNU +# ----------------- +# Sets fp_prog_ar_is_gnu to yes or no, depending on whether it is GNU ar or not. +AC_DEFUN([FP_PROG_AR_IS_GNU], +[AC_REQUIRE([FP_PROG_AR]) +AC_CACHE_CHECK([whether $fp_prog_ar_raw is GNU ar], [fp_cv_prog_ar_is_gnu], +[if $fp_prog_ar_raw --version 2> /dev/null | grep "GNU" > /dev/null 2>&1; then + fp_cv_prog_ar_is_gnu=yes +else + fp_cv_prog_ar_is_gnu=no +fi]) +fp_prog_ar_is_gnu=$fp_cv_prog_ar_is_gnu +])# FP_PROG_AR_IS_GNU + + +# FP_PROG_AR_ARGS +# --------------- +# Sets fp_prog_ar_args to the arguments for ar and the output variable ArCmd +# to a non-Cygwin invocation of ar including these arguments. +AC_DEFUN([FP_PROG_AR_ARGS], +[AC_REQUIRE([FP_PROG_AR_IS_GNU]) +AC_CACHE_CHECK([for ar arguments], [fp_cv_prog_ar_args], +[ +# GNU ar needs special treatment: it appears to have problems with +# object files with the same name if you use the 's' modifier, but +# simple 'ar q' works fine, and doesn't need a separate ranlib. +if test $fp_prog_ar_is_gnu = yes; then + fp_cv_prog_ar_args="q" +else + touch conftest.dummy + for fp_var in clqsZ clqs cqs clq cq ; do + rm -f conftest.a + if $fp_prog_ar_raw $fp_var conftest.a conftest.dummy > /dev/null 2> /dev/null; then + fp_cv_prog_ar_args=$fp_var + break + fi + done + rm -f conftest* + if test -z "$fp_cv_prog_ar_args"; then + AC_MSG_ERROR([cannot figure out how to use your $fp_prog_ar_raw]) + fi +fi]) +fp_prog_ar_args=$fp_cv_prog_ar_args +AC_SUBST([ArCmd], ["$fp_prog_ar $fp_prog_ar_args"]) + +])# FP_PROG_AR_ARGS + + +# FP_PROG_AR_NEEDS_RANLIB +# ----------------------- +# Sets the output variable RANLIB to "ranlib" if it is needed and found, +# to ":" otherwise. +AC_DEFUN([FP_PROG_AR_NEEDS_RANLIB], +[AC_REQUIRE([FP_PROG_AR_IS_GNU]) +AC_REQUIRE([FP_PROG_AR_ARGS]) +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 $fp_prog_ar_args | grep "s" > /dev/null 2> /dev/null; then + fp_cv_prog_ar_needs_ranlib=no +else + fp_cv_prog_ar_needs_ranlib=yes +fi]) +if test $fp_cv_prog_ar_needs_ranlib = yes; then + AC_PROG_RANLIB else - ArSupportsInput='' + RANLIB=":" + AC_SUBST([RANLIB]) 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" - AC_SUBST(RANLIB) +])# FP_PROG_AR_NEEDS_RANLIB + + +# FP_PROG_AR_SUPPORTS_INPUT +# ------------------------- +# Sets the output variable ArSupportsInput to "-input" or "", depending on +# whether ar supports -input flag is supported or not. +AC_DEFUN([FP_PROG_AR_SUPPORTS_INPUT], +[AC_REQUIRE([FP_PROG_AR_IS_GNU]) +AC_REQUIRE([FP_PROG_AR_ARGS]) +AC_CACHE_CHECK([whether $fp_prog_ar_raw supports -input], [fp_cv_prog_ar_supports_input], +[fp_cv_prog_ar_supports_input=no +if test $fp_prog_ar_is_gnu = no; then + rm -f conftest* + touch conftest.lst + if $fp_prog_ar_raw $fp_prog_ar_args conftest.a -input conftest.lst > /dev/null 2> /dev/null; then + fp_cv_prog_ar_supports_input=yes + fi + rm -f conftest* +fi]) +if test $fp_cv_prog_ar_supports_input = yes; then + ArSupportsInput="-input" else - AC_PROG_RANLIB + ArSupportsInput="" fi -]) +AC_SUBST([ArSupportsInput]) +])# FP_PROG_AR_SUPPORTS_INPUT + dnl dnl AC_SHEBANG_PERL - can we she-bang perl? @@ -523,6 +569,8 @@ 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) ]) dnl @@ -782,53 +830,128 @@ AS_VAR_POPDEF([fp_func])dnl ])# FP_CHECK_FUNC -dnl ** Check which CATALOG file we have to use with DocBook SGML. -dnl -dnl FPTOOLS_DOCBOOK_CATALOG(VARIABLE, JADE, STYLESHEET, CATALOGS-TO-CHECK-FOR) -dnl -dnl If any of the catalogs given in CATALOGS-TO-CHECK-FOR works on this -dnl platform, let VARIABLE refer to this catalog; otherwise, VARIABLE -dnl is set to "no". JADE is the jade executable and STYLESHEET -dnl a DocBook style sheet. -dnl -AC_DEFUN(FPTOOLS_DOCBOOK_CATALOG, -[AC_CACHE_CHECK([for DocBook CATALOG], fptools_cv_sgml_catalog, -[ -cat > conftest.sgml << EOF - -
- -Test -Test -
Test
-Test -
-Test - -Test. - - -
+# FP_GEN_DOCBOOK_XML +# ------------------ +# Generates a DocBook XML V4.2 document in conftest.xml. +AC_DEFUN([FP_GEN_DOCBOOK_XML], +[rm -f conftest.xml +cat > conftest.xml << EOF + + + + A DocBook Test Document + + A Chapter Title + This is a paragraph, referencing . + + + Another Chapter Title + This is another paragraph, referencing . + + EOF -fptools_cv_sgml_catalog=no -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 +]) # FP_GEN_DOCBOOK_XML + + +# FP_PROG_XSLTPROC +# ---------------- +# Sets the output variable XsltprocCmd to the full path of the XSLT processor +# xsltproc. XsltprocCmd is empty if xsltproc could not be found. +AC_DEFUN([FP_PROG_XSLTPROC], +[AC_PATH_PROG([XsltprocCmd], [xsltproc]) +if test -z "$XsltprocCmd"; then + AC_MSG_WARN([cannot find xsltproc in your PATH, you will not be able to build the documentation]) +fi +])# FP_PROG_XSLTPROC + + +# FP_DIR_DOCBOOK_XSL(XSL-DIRS) +# ---------------------------- +# Check which of the directories XSL-DIRS contains DocBook XSL stylesheets. The +# output variable DIR_DOCBOOK_XSL will contain the first usable directory or +# will be empty if none could be found. +AC_DEFUN([FP_DIR_DOCBOOK_XSL], +[AC_REQUIRE([FP_PROG_XSLTPROC])dnl +if test -n "$XsltprocCmd"; then + AC_CACHE_CHECK([for DocBook XSL stylesheet directory], fp_cv_dir_docbook_xsl, + [FP_GEN_DOCBOOK_XML + fp_cv_dir_docbook_xsl=no + for fp_var in $1; do + if $XsltprocCmd ${fp_var}/html/docbook.xsl conftest.xml > /dev/null 2>&1; then + fp_cv_dir_docbook_xsl=$fp_var + break + fi + done + rm -rf conftest*]) +fi +if test x"$fp_cv_dir_docbook_xsl" = xno; then + AC_MSG_WARN([cannot find DocBook XSL stylesheets, you will not be able to build the documentation]) + DIR_DOCBOOK_XSL= else -# If the env var SGML_CATALOG_FILES is defined, assume things are cool. - fptools_cv_sgml_catalog="yes" + DIR_DOCBOOK_XSL=$fp_cv_dir_docbook_xsl fi -]) -rm -rf conftest* -if test $fptools_cv_sgml_catalog != "no"; then - $1=$fptools_cv_sgml_catalog +AC_SUBST([DIR_DOCBOOK_XSL]) +])# FP_DIR_DOCBOOK_XSL + + +# FP_PROG_XMLLINT +# ---------------- +# Sets the output variable XmllintCmd to the full path of the XSLT processor +# xmllint. XmllintCmd is empty if xmllint could not be found. +AC_DEFUN([FP_PROG_XMLLINT], +[AC_PATH_PROG([XmllintCmd], [xmllint]) +if test -z "$XmllintCmd"; then + AC_MSG_WARN([cannot find xmllint in your PATH, you will not be able to validate your documentation]) fi -]) +])# FP_PROG_XMLLINT + + +# FP_CHECK_DOCBOOK_DTD +# -------------------- +AC_DEFUN([FP_CHECK_DOCBOOK_DTD], +[AC_REQUIRE([FP_PROG_XMLLINT])dnl +if test -n "$XmllintCmd"; then + AC_MSG_CHECKING([for DocBook DTD]) + FP_GEN_DOCBOOK_XML + if $XmllintCmd --valid --noout conftest.xml > /dev/null 2>&1; then + AC_MSG_RESULT([ok]) + else + AC_MSG_RESULT([failed]) + AC_MSG_WARN([cannot find a DTD for DocBook XML V4.2, you will not be able to validate your documentation]) + AC_MSG_WARN([check your XML_CATALOG_FILES environment variable and/or /etc/xml/catalog]) + fi + rm -rf conftest* +fi +])# FP_CHECK_DOCBOOK_DTD + + +# FP_PROG_FO_PROCESSOR +# -------------------- +# Try to find an FO processor. PassiveTeX output is sometimes a bit strange, so +# try FOP first. Furthermore, /usr/bin/fop is broken in SuSE 9.1, so try the +# "real" fop.sh first. Sets the output variables FopCmd, XmltexCmd, DvipsCmd, +# and PdfxmltexCmd. +AC_DEFUN([FP_PROG_FO_PROCESSOR], +[AC_PATH_PROGS([FopCmd], [fop.sh fop], [], [$PATH:/usr/share/fop]) +AC_PATH_PROG([XmltexCmd], [xmltex]) +AC_PATH_PROG([DvipsCmd], [dvips]) +if test -z "$FopCmd"; then + if test -z "$XmltexCmd"; then + AC_MSG_WARN([cannot find an FO => DVI converter, you will not be able to build DVI or PostScript documentation]) + else + if test -z "$DvipsCmd"; then + AC_MSG_WARN([cannot find a DVI => PS converter, you will not be able to build PostScript documentation]) + fi + fi + AC_PATH_PROG([PdfxmltexCmd], [pdfxmltex]) + if test -z "$PdfxmltexCmd"; then + AC_MSG_WARN([cannot find an FO => PDF converter, you will not be able to build PDF documentation]) + fi +elif test -z "$XmltexCmd"; then + AC_MSG_WARN([cannot find an FO => DVI converter, you will not be able to build DVI documentation]) +fi +])# FP_PROG_FO_PROCESSOR # FP_CHECK_WIN32 @@ -1045,4 +1168,101 @@ AC_DEFINE([SUPPORTS_EMPTY_STRUCTS], [1], [Define to 1 if C compiler supports dec fi ]) + +dnl @synopsis FP_READDIR_EOF_ERRNO +dnl +dnl Check what readdir() sets 'errno' to upon reaching +dnl end of directory; not setting it is the correct thing to do, +dnl but mingw based versions have set it to ENOENT until recently +dnl (summer 2004). +dnl +dnl +AC_DEFUN(FP_READDIR_EOF_ERRNO, +[AC_CACHE_CHECK([what readdir sets errno to upon EOF], fptools_cv_readdir_eof_errno, +[AC_TRY_RUN([#include +#include +#include +int +main(argc, argv) +int argc; +char **argv; +{ + FILE *f=fopen("conftestval", "w"); +#if defined(__MINGW32__) + int fd = mkdir("testdir"); +#else + int fd = mkdir("testdir", 0666); +#endif + DIR* dp; + struct dirent* de; + int err = 0; + + if (!f) return 1; + if (fd == -1) { + fprintf(stderr,"unable to create directory; quitting.\n"); + return 1; + } + close(fd); + dp = opendir("testdir"); + if (!dp) { + fprintf(stderr,"unable to browse directory; quitting.\n"); + rmdir("testdir"); + return 1; + } + + /* the assumption here is that readdir() will only return NULL + * due to reaching the end of the directory. + */ + while (de = readdir(dp)) { + ; + } + err = errno; + fprintf(f,"%d", err); + fclose(f); + closedir(de); + rmdir("testdir"); + return 0; +}],fptools_cv_readdir_eof_errno=`cat conftestval`, fptools_cv_readdir_eof_errno=bogus, fptools_cv_readdir_eof_errno=0)]) +dnl the cross value is somewhat bogus. +AC_DEFINE_UNQUOTED([READDIR_ERRNO_EOF], [$fptools_cv_readdir_eof_errno], [readdir() sets errno to this upon EOF]) +]) + +dnl @synopsis FP_DIRENT_FLAT_LAYOUT +dnl +dnl Check whether 'struct dirent' (in dirent.h) has d_name defined +dnl as being the final field in a struct, or a pointer to somewhere +dnl else. The former is the standardly thing to do, but mingw defns +dnl have for the longest time gone for the latter. They no longer do, +dnl hence the need to configure test for this. +dnl +dnl +AC_DEFUN(FP_DIRENT_FLAT_LAYOUT, +[AC_CACHE_CHECK([if struct dirent layout is flat], fptools_cv_dirent_flat_layout, +[AC_TRY_RUN([#include +#include +#include +int +main(argc, argv) +int argc; +char **argv; +{ + struct dirent de; + /* + * Check whether d_name is defined as + * struct dirent { .... ; char d_name[..]; } + * or + * struct dirent { .... ; char* d_name; } + * + * Returns 0 if the former. + */ + memset(&de,0,sizeof(struct dirent)); + return ((int)de.d_name == 0); +}],fptools_cv_dirent_flat_layout=yes, fptools_cv_dirent_flat_layout=no, fptools_cv_dirent_flat_layout=yes)]) +dnl the cross value is somewhat bogus. +if test "$fptools_cv_dirent_flat_layout" = yes; then +AC_DEFINE([STRUCT_DIRENT_FLAT_LAYOUT], [1], [Define to 1 if struct dirent is a flat structure]) +fi +]) + + # LocalWords: fi