# 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],
# 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.
#
# FP_DECL_ALTZONE
-# -------------------
+# ---------------
# Defines HAVE_DECL_ALTZONE to 1 if declared, 0 otherwise.
#
# Used by base package.
# 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.
# 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],
# FP_CHECK_CONSTS_TEMPLATE(EXPRESSION...)
-# ----------------------------------
+# ---------------------------------------
# autoheader helper for FP_CHECK_CONSTS
m4_define([FP_CHECK_CONSTS_TEMPLATE],
[AC_FOREACH([fp_Const], [$1],
# 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
])# FP_CHECK_CONSTS
-dnl ** check for leading underscores in symbol names
-dnl
-dnl Test for determining whether symbol names have a leading
-dnl underscore.
-dnl
-dnl We assume that they _haven't_ if anything goes wrong.
-dnl
-dnl Some nlist implementations seem to try to be compatible by ignoring
-dnl a leading underscore sometimes (eg. FreeBSD). We therefore have
-dnl to work around this by checking for *no* leading underscore first.
-dnl Sigh. --SDM
-dnl
-dnl Similarly on OpenBSD, but this test doesn't help. -- dons
-dnl
-AC_DEFUN(FPTOOLS_UNDERSCORE,
-[AC_CHECK_LIB(elf, nlist, LIBS="-lelf $LIBS")dnl
-AC_CACHE_CHECK([leading underscore in symbol names], fptools_cv_lead_uscore,
-
-dnl
-dnl Hack!: nlist() under Digital UNIX insist on there being an _,
-dnl but symbol table listings shows none. What is going on here?!?
-dnl
-dnl Another hack: cygwin doesn't come with nlist.h , so we hardwire
-dnl the underscoredness of that "platform"
-changequote(<<, >>)dnl
-<<
+# FP_LEADING_UNDERSCORE
+# ---------------------
+# Test for determining whether symbol names have a leading underscore. We assume
+# that they _haven't_ if anything goes wrong. Sets the output variable
+# LeadingUnderscore to YES or NO and defines LEADING_UNDERSCORE correspondingly.
+#
+# Some nlist implementations seem to try to be compatible by ignoring a leading
+# underscore sometimes (eg. FreeBSD). We therefore have to work around this by
+# checking for *no* leading underscore first. Sigh. --SDM
+#
+# Similarly on OpenBSD, but this test doesn't help. -- dons
+AC_DEFUN([FP_LEADING_UNDERSCORE],
+[AC_CHECK_LIB([elf], [nlist], [LIBS="-lelf $LIBS"])
+AC_CACHE_CHECK([leading underscore in symbol names], [fptools_cv_leading_underscore], [
+# Hack!: nlist() under Digital UNIX insist on there being an _,
+# but symbol table listings shows none. What is going on here?!?
+#
+# Another hack: cygwin doesn't come with nlist.h , so we hardwire
+# the underscoredness of that "platform"
case $HostPlatform in
*openbsd*) # x86 openbsd is ELF from 3.4 >, meaning no leading uscore
- case $build in
- i386-*2\.[[0-9]] | i386-*3\.[[0-3]] ) fptools_cv_lead_uscore='yes' ;;
- *) fptools_cv_lead_uscore='no' ;;
- esac ;;
-alpha-dec-osf*) fptools_cv_lead_uscore='no';;
-*cygwin32) fptools_cv_lead_uscore='yes';;
-*mingw32) fptools_cv_lead_uscore='yes';;
-*) >>
-changequote([, ])dnl
-AC_TRY_RUN([#ifdef HAVE_NLIST_H
+ case $build in
+ i386-*2\.@<:@0-9@:>@ | i386-*3\.@<:@0-3@:>@ ) fptools_cv_leading_underscore=yes ;;
+ *) fptools_cv_leading_underscore=no ;;
+ esac ;;
+alpha-dec-osf*) fptools_cv_leading_underscore=no;;
+*cygwin32) fptools_cv_leading_underscore=yes;;
+*mingw32) fptools_cv_leading_underscore=yes;;
+*) AC_TRY_RUN([#ifdef HAVE_NLIST_H
#include <nlist.h>
-changequote(<<, >>)dnl
-<<
struct nlist xYzzY1[] = {{"xYzzY1", 0},{0}};
struct nlist xYzzY2[] = {{"_xYzzY2", 0},{0}};
#endif
-main(argc, argv)
-int argc;
-char **argv;
+int main()
{
#ifdef HAVE_NLIST_H
if(nlist(argv[0], xYzzY1) == 0 && xYzzY1[0].n_value != 0)
exit(1);
if(nlist(argv[0], xYzzY2) == 0 && xYzzY2[0].n_value != 0)
- exit(0);>>
-changequote([, ])dnl
+ exit(0);
#endif
exit(1);
-}], fptools_cv_lead_uscore=yes, fptools_cv_lead_uscore=no, fptools_cv_lead_uscore=NO)
+}], [fptools_cv_leading_underscore=yes], [fptools_cv_leading_underscore=no], [fptools_cv_leading_underscore=no])
;;
-esac);
-LeadingUnderscore=`echo $fptools_cv_lead_uscore | sed 'y/yesno/YESNO/'`
-AC_SUBST(LeadingUnderscore)
-case $LeadingUnderscore in
-YES) AC_DEFINE([LEADING_UNDERSCORE], [1], [Define to 1 if C symbols have a leading underscore added by the compiler.]);;
-esac
-])
+esac]);
+AC_SUBST([LeadingUnderscore], [`echo $fptools_cv_leading_underscore | sed 'y/yesno/YESNO/'`])
+if test x"$fptools_cv_leading_underscore" = xyes; then
+ AC_DEFINE([LEADING_UNDERSCORE], [1], [Define to 1 if C symbols have a leading underscore added by the compiler.])
+fi])# FP_LEADING_UNDERSCORE
# FP_COMPARE_VERSIONS(VERSION1, TEST, VERSION2, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
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 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,
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 |
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.13],
- [AC_MSG_ERROR([Happy version 1.13 or later is required to compile GHC.])])[]dnl
+ 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
HappyVersion=$fptools_cv_happy_version;
AC_SUBST(HappyVersion)
])
-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)
- ArCmd="`cygpath -w ${ArCmdRaw} | sed -e 's@\\\\@/@g' ` ${ArCmdArgs}"
- ;;
- *) 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
- ArSupportsInput=''
+ fp_cv_prog_ar_needs_ranlib=yes
+fi])
+if test $fp_cv_prog_ar_needs_ranlib = yes; then
+ AC_PROG_RANLIB
+else
+ 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?
])
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
undefine([AC_CV_NAME_supported])dnl
])
-dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
-
-dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
-AC_DEFUN(FPTOOLS_TRY_LINK_NOWARN,
-[
-ac_save_LIBS="$LIBS"
-LIBS=[$1];
-cat > conftest.$ac_ext <<EOF
-dnl This sometimes fails to find confdefs.h, for some reason.
-dnl [#]line __oline__ "[$]0"
-[#]line __oline__ "configure"
-#include "confdefs.h"
-[$2]
-int t() { return 0; }
+# 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
+# additional flexibility of specifying the PROLOGUE and BODY.
+AC_DEFUN([FP_CHECK_FUNC],
+[AS_VAR_PUSHDEF([fp_func], [fp_cv_func_$1])dnl
+AC_CACHE_CHECK([for $1], fp_func,
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([$2], [$3])],
+ [AS_VAR_SET(fp_func, yes)],
+ [AS_VAR_SET(fp_func, no)])])
+AS_IF([test AS_VAR_GET(fp_func) = yes],
+ [AC_DEFINE(AS_TR_CPP(HAVE_$1), [1],
+ [Define to 1 if you have the `]$1[' function.]) $4],
+ [$5])dnl
+AS_VAR_POPDEF([fp_func])dnl
+])# FP_CHECK_FUNC
+
+
+# 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
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+<book id="test">
+ <title>A DocBook Test Document</title>
+ <chapter id="id-one">
+ <title>A Chapter Title</title>
+ <para>This is a paragraph, referencing <xref linkend="id-two"/>.</para>
+ </chapter>
+ <chapter id="id-two">
+ <title>Another Chapter Title</title>
+ <para>This is another paragraph, referencing <xref linkend="id-one"/>.</para>
+ </chapter>
+</book>
EOF
-if AC_TRY_EVAL(ac_link); then
- ifelse([$3], , :, [
- LIBS="$ac_save_LIBS"
- rm -rf conftest*
- $3])
- ifelse([$4], , , [else
- LIBS="$ac_save_LIBS"
- rm -rf conftest*
- $4
-])dnl
+]) # 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
-rm -f conftest*
-]
-)
-
-dnl Loosely based on AC_CHECK_LIB in acgeneral.m4 in autoconf distribution
-
-dnl FPTOOLS_CHECK_FLAG_NOWARN(NAME, FLAG, CODE, iftrue, iffalse)
-
-AC_DEFUN(FPTOOLS_CHECK_FLAG_NOWARN,
-[AC_MSG_CHECKING([for $1])
- AC_CACHE_VAL(ac_cv_flag_$1,
- [FPTOOLS_TRY_LINK_NOWARN("$2", [main() { $3; exit(0); } ],
- eval "ac_cv_flag_$1=yes",
- eval "ac_cv_flag_$1=no"
- )]
- )
-if eval "test \"`echo '$ac_cv_flag_'$1`\" = yes"; then
- AC_MSG_RESULT(yes)
- LIBS="$2 $LIBS"
- $4
+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
- AC_MSG_RESULT(no)
- $5
+ DIR_DOCBOOK_XSL=$fp_cv_dir_docbook_xsl
fi
-])
+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
-dnl FPTOOLS_CHECK_LIB_NOWARN(LIBRARY, FUNCTION)
-AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
-[FPTOOLS_CHECK_FLAG_NOWARN([function_$2],[],[extern char $2(); $2();],
-[changequote(, )dnl
- ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- changequote([, ])dnl
- AC_DEFINE_UNQUOTED($ac_tr_lib)
-],
-[FPTOOLS_CHECK_FLAG_NOWARN([library_$1],[-l$1],[extern char $2(); $2();],
-[changequote(, )dnl
- ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- changequote([, ])dnl
- AC_DEFINE_UNQUOTED($ac_tr_lib)
-],
-[]
-)])]
-)
+# 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
-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
-<!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
-<Article>
-<ArtHeader>
-<Title>Test</Title>
-<Author><OtherName>Test</OtherName></Author>
-<Address>Test</Address>
-<PubDate>Test</PubDate>
-</ArtHeader>
-<Sect1><Title>Test</Title>
-<Para>
-Test.
-</Para>
-</Sect1>
-</Article>
-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
-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
- $1=$fptools_cv_sgml_catalog
+# 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_PROG_GHC_PKG
+# ----------------
+# Try to find a ghc-pkg matching the ghc mentioned in the environment variable
+# WithGhc. If the latter is unset or no matching ghc-pkg can be found, try to
+# find a plain ghc-pkg. Sets the output variable GhcPkgCmd.
+AC_DEFUN([FP_PROG_GHC_PKG],
+[AC_CACHE_CHECK([for ghc-pkg matching $WithGhc], fp_cv_matching_ghc_pkg,
+[fp_ghc_pkg_guess=`echo $WithGhc | sed 's,ghc\(@<:@^/\\@:>@*\)$,ghc-pkg\1,'`
+if "$fp_ghc_pkg_guess" -l > /dev/null 2>&1; then
+ fp_cv_matching_ghc_pkg=$fp_ghc_pkg_guess
+else
+ fp_cv_matching_ghc_pkg=no
+fi])
+if test x"$fp_cv_matching_ghc_pkg" = xno; then
+ AC_PATH_PROG([GhcPkgCmd], [ghc-pkg])
+else
+ GhcPkgCmd=$fp_cv_matching_ghc_pkg
+fi])# FP_PROG_GHC_PKG
# FP_CHECK_WIN32
esac
if test x"$use_quartz_opengl" != xyes; then
- AC_CHECK_LIB([m], [main], [GL_LIBS="-lm $GL_LIBS"])
+ 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"
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 <dirent.h>
+#include <stdio.h>
+#include <errno.h>
+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 <dirent.h>
+#include <stdio.h>
+#include <string.h>
+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