<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/3.26.0">
</HEAD>
<BODY>
On Wed, 2011-01-19 at 18:22 -0500, Gaetan Nadon wrote:
<BLOCKQUOTE TYPE=CITE>
<BLOCKQUOTE TYPE=CITE>
<PRE>
So, if we AC_REQUIRE([AC_PROG_CC]) before
AC_REQUIRE([AC_PROG_CC_C99]) in XORG_STRICT_OPTION, then it should
ensure the ordering, right? Or can you just keep calling them and the
last one wins? I haven't checked.
</PRE>
</BLOCKQUOTE>
The last one wins. <BR>
<BR>
If one call is in configure.ac and the other call is buried, it is confusing to the reader.<BR>
If neither is called in configure.ac, it's like any other statement that is buried in util-macros.<BR>
<BR>
I guess it's like any reusable code you can't see from the calling program. You don't know what<BR>
it does until you dig in.<BR>
<BR>
There are pros and cons. The module developer can concentrate on the configuration that is unique<BR>
to the module and not have to deal with dozens of details that are the same in all modules.<BR>
<BR>
Some modules print a summary of the important configuration aspects of the module at the<BR>
end of the configuration. That would be a nice feature.<BR>
<BR>
</BLOCKQUOTE>
It may help to take a look at the libxkbcommon configuration.<BR>
I was able to finish it up completely, so it gives a more accurate picture<BR>
than a diff one liner.<BR>
<BR>
<A HREF="http://cgit.freedesktop.org/xorg/lib/libxkbcommon/tree/configure.ac">http://cgit.freedesktop.org/xorg/lib/libxkbcommon/tree/configure.ac</A><BR>
<BR>
As a fun exercise, I inlined the code in XORG_DEFAULT_OPTIONS:
<PRE>
AC_REQUIRE([AC_PROG_INSTALL])
AC_REQUIRE([AC_PROG_CC_C99])
if test "x$GCC" = xyes ; then
CWARNFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \
-Wmissing-declarations -Wnested-externs -fno-strict-aliasing \
-Wbad-function-cast -Wformat=2"
case `$CC -dumpversion` in
3.4.* | 4.*)
        CWARNFLAGS="$CWARNFLAGS -Wold-style-definition -Wdeclaration-after-statement"
        ;
esac
else
AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
if test "x$SUNCC" = "xyes"; then
        CWARNFLAGS="-v"
fi
fi
AC_SUBST(CWARNFLAGS)
# If the module's configure.ac calls AC_PROG_CC later on, CC gets set to C89
AC_REQUIRE([AC_PROG_CC_C99])
AC_REQUIRE([XORG_CWARNFLAGS])
AC_ARG_ENABLE(strict-compilation,
                         AS_HELP_STRING([--enable-strict-compilation],
                         [Enable all warnings from compiler and make them errors (default: disabled)]),
                         [STRICT_COMPILE=$enableval], [STRICT_COMPILE=no])
if test "x$STRICT_COMPILE" = "xyes"; then
        AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
        AC_CHECK_DECL([__INTEL_COMPILER], [INTELCC="yes"], [INTELCC="no"])
        if test "x$GCC" = xyes ; then
                STRICT_CFLAGS="-pedantic -Werror"
        elif test "x$SUNCC" = "xyes"; then
                STRICT_CFLAGS="-errwarn"
elif test "x$INTELCC" = "xyes"; then
                STRICT_CFLAGS="-Werror"
        fi
fi
CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"
AC_SUBST([CWARNFLAGS])
        AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR],
                [`echo $PACKAGE_VERSION | cut -d . -f 1`],
                [Major version of this package])
        PVM=`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1`
        if test "x$PVM" = "x"; then
                PVM="0"
        fi
        AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR],
                [$PVM],
                [Minor version of this package])
        PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1`
        if test "x$PVP" = "x"; then
                PVP="0"
        fi
        AC_DEFINE_UNQUOTED([PACKAGE_VERSION_PATCHLEVEL],
                [$PVP],
                [Patch version of this package])
CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \
mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \
|| (rm -f \$(top_srcdir)/.changelog.tmp; touch \$(top_srcdir)/ChangeLog; \
echo 'git directory not found: installing possibly empty changelog.' >&2)"
AC_SUBST([CHANGELOG_CMD])
AC_DEFUN([XORG_INSTALL], [
AC_REQUIRE([PKG_PROG_PKG_CONFIG])
macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros`
INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \
mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \
|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \
echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)"
AC_SUBST([INSTALL_CMD])
AC_DEFUN([XORG_MANPAGE_SECTIONS],[
AC_REQUIRE([AC_CANONICAL_HOST])
AC_REQUIRE([AC_PROG_SED])
if test x$APP_MAN_SUFFIX = x ; then
APP_MAN_SUFFIX=1
fi
if test x$APP_MAN_DIR = x ; then
APP_MAN_DIR='$(mandir)/man$(APP_MAN_SUFFIX)'
fi
if test x$LIB_MAN_SUFFIX = x ; then
LIB_MAN_SUFFIX=3
fi
if test x$LIB_MAN_DIR = x ; then
LIB_MAN_DIR='$(mandir)/man$(LIB_MAN_SUFFIX)'
fi
if test x$FILE_MAN_SUFFIX = x ; then
case $host_os in
        solaris*)        FILE_MAN_SUFFIX=4 ;;
        *)                FILE_MAN_SUFFIX=5 ;;
esac
fi
if test x$FILE_MAN_DIR = x ; then
FILE_MAN_DIR='$(mandir)/man$(FILE_MAN_SUFFIX)'
fi
if test x$MISC_MAN_SUFFIX = x ; then
case $host_os in
        solaris*)        MISC_MAN_SUFFIX=5 ;;
        *)                MISC_MAN_SUFFIX=7 ;;
esac
fi
if test x$MISC_MAN_DIR = x ; then
MISC_MAN_DIR='$(mandir)/man$(MISC_MAN_SUFFIX)'
fi
if test x$DRIVER_MAN_SUFFIX = x ; then
case $host_os in
        solaris*)        DRIVER_MAN_SUFFIX=7 ;;
        *)                DRIVER_MAN_SUFFIX=4 ;;
esac
fi
if test x$DRIVER_MAN_DIR = x ; then
DRIVER_MAN_DIR='$(mandir)/man$(DRIVER_MAN_SUFFIX)'
fi
if test x$ADMIN_MAN_SUFFIX = x ; then
case $host_os in
        solaris*)        ADMIN_MAN_SUFFIX=1m ;;
        *)                ADMIN_MAN_SUFFIX=8 ;;
esac
fi
if test x$ADMIN_MAN_DIR = x ; then
ADMIN_MAN_DIR='$(mandir)/man$(ADMIN_MAN_SUFFIX)'
fi
AC_SUBST([APP_MAN_SUFFIX])
AC_SUBST([LIB_MAN_SUFFIX])
AC_SUBST([FILE_MAN_SUFFIX])
AC_SUBST([MISC_MAN_SUFFIX])
AC_SUBST([DRIVER_MAN_SUFFIX])
AC_SUBST([ADMIN_MAN_SUFFIX])
AC_SUBST([APP_MAN_DIR])
AC_SUBST([LIB_MAN_DIR])
AC_SUBST([FILE_MAN_DIR])
AC_SUBST([MISC_MAN_DIR])
AC_SUBST([DRIVER_MAN_DIR])
AC_SUBST([ADMIN_MAN_DIR])
XORG_MAN_PAGE="X Version 11"
AC_SUBST([XORG_MAN_PAGE])
MAN_SUBSTS="\
        -e 's|__vendorversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \
        -e 's|__xorgversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \
        -e 's|__xservername__|Xorg|g' \
        -e 's|__xconfigfile__|xorg.conf|g' \
        -e 's|__projectroot__|\$(prefix)|g' \
        -e 's|__apploaddir__|\$(appdefaultdir)|g' \
        -e 's|__appmansuffix__|\$(APP_MAN_SUFFIX)|g' \
        -e 's|__drivermansuffix__|\$(DRIVER_MAN_SUFFIX)|g' \
        -e 's|__adminmansuffix__|\$(ADMIN_MAN_SUFFIX)|g' \
        -e 's|__libmansuffix__|\$(LIB_MAN_SUFFIX)|g' \
        -e 's|__miscmansuffix__|\$(MISC_MAN_SUFFIX)|g' \
        -e 's|__filemansuffix__|\$(FILE_MAN_SUFFIX)|g'"
AC_SUBST([MAN_SUBSTS])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
[AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
</PRE>
</BODY>
</HTML>