At Sunday 25 July 2010, Philip Prindeville wrote: > Hi. > > We're passing a lot of information into configure manually because > a lot of packages didn't used to handle cross-compilation > correctly, but lately those packages have been getting better. > > We'd like to start to peel away options that we pass to configure. > > But, to ensure that the results are still correct, we'd want to > capture the summary of results and diff files together, a "before" > and "after" changes to our build infrastructure to make sure that > the outputs are now discovered as the correct values, rather than > being "forced" from the command line or environment. > > confdefs.h is one idea, but I'm not sure it captures *all* of the > state. Does it? > > config.log and config.status are too wordy, and their output can > vary (based on autoconf versions) yet still come up with the > correct final result, so those seem unlikely (unless we just > extract the relevant portions of these). > > What's the collective wisdom of the group? Hello Philip. I'm not sure how much what I'm going to suggest will be useful to you, but anyway... have you tried taking a look at the temporary file `subs.awk' created by config.status, at least when a "recent" (post-2006) autoconf version is used? It might be a nice complement for confdefs.h/config.h. (Note that you can force config.status not to delete its temporary files with the `--debug' option). For example, running autoconf's own config.status on my machine, I get (more or less): $ ./config.status --version GNU Autoconf config.status 2.66.1-f2a8-dirty configured by ./configure, generated by GNU Autoconf 2.65.75-9c27, with options "" Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. $ ./config.status --debug config.status: creating tests/Makefile config.status: creating tests/atlocal config.status: creating man/Makefile config.status: creating lib/emacs/Makefile config.status: creating Makefile config.status: creating doc/Makefile config.status: creating lib/Makefile config.status: creating lib/Autom4te/Makefile config.status: creating lib/autoscan/Makefile config.status: creating lib/m4sugar/Makefile config.status: creating lib/autoconf/Makefile config.status: creating lib/autotest/Makefile config.status: creating bin/Makefile config.status: executing tests/atconfig commands $ cat conf??????/subs.awk BEGIN { S["LTLIBOBJS"]="" S["LIBOBJS"]="" S["MAKE_CASE_SENSITIVE_FALSE"]="#" S["MAKE_CASE_SENSITIVE_TRUE"]="" S["SED"]="/bin/sed" S["EGREP"]="/bin/grep -E" S["GREP"]="/bin/grep" S["lispdir"]="${datarootdir}/emacs/site-lisp" S["EMACSLOADPATH"]="" S["EMACS"]="emacs" S["TEST_EMACS"]="emacs" S["PERL_FLOCK"]="yes" S["PERL"]="/usr/bin/perl" S["HELP2MAN"]="${SHELL} /home/stefano/src/autoconf/build-aux/missing --run help2man" S["M4_DEBUGFILE"]="--debugfile" S["M4_GNU"]="--gnu" S["M4"]="/usr/bin/m4" S["EXPR"]="/usr/bin/expr" S["ac_cv_dir_trailing_space"]="yes" S["ac_cv_unsupported_fs_chars"]="" S["ac_cv_sh_n_works"]="yes" S["am__untar"]="${AMTAR} xf -" S["am__tar"]="${AMTAR} chof - \"$$tardir\"" S["AMTAR"]="${SHELL} /home/stefano/src/autoconf/build-aux/missing --run tar" S["am__leading_dot"]="." S["SET_MAKE"]="" S["AWK"]="gawk" S["mkdir_p"]="/bin/mkdir -p" S["MKDIR_P"]="/bin/mkdir -p" S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" S["STRIP"]="" S["install_sh"]="${SHELL} /home/stefano/src/autoconf/build-aux/install-sh" S["MAKEINFO"]="${SHELL} /home/stefano/src/autoconf/build-aux/missing --run makeinfo" S["AUTOHEADER"]="${SHELL} /home/stefano/src/autoconf/build-aux/missing --run autoheader" S["AUTOMAKE"]="${SHELL} /home/stefano/src/autoconf/build-aux/missing --run automake-1.11" S["AUTOCONF"]="${SHELL} /home/stefano/src/autoconf/build-aux/missing --run autoconf" S["ACLOCAL"]="${SHELL} /home/stefano/src/autoconf/build-aux/missing --run aclocal-1.11" S["VERSION"]="2.66.1-f2a8-dirty" S["PACKAGE"]="autoconf" S["CYGPATH_W"]="echo" S["am__isrc"]="" S["INSTALL_DATA"]="${INSTALL} -m 644" S["INSTALL_SCRIPT"]="${INSTALL}" S["INSTALL_PROGRAM"]="${INSTALL}" S["target_alias"]="" S["host_alias"]="" S["build_alias"]="" S["LIBS"]="" S["ECHO_T"]="" S["ECHO_N"]="-n" S["ECHO_C"]="" S["DEFS"]="-DPACKAGE_NAME=\\\"GNU\\ Autoconf\\\" ... [CUT] S["mandir"]="${datarootdir}/man" S["localedir"]="${datarootdir}/locale" S["libdir"]="${exec_prefix}/lib" S["psdir"]="${docdir}" S["pdfdir"]="${docdir}" S["dvidir"]="${docdir}" S["htmldir"]="${docdir}" S["infodir"]="${datarootdir}/info" S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" S["oldincludedir"]="/usr/include" S["includedir"]="${prefix}/include" S["localstatedir"]="${prefix}/var" S["sharedstatedir"]="${prefix}/com" S["sysconfdir"]="${prefix}/etc" S["datadir"]="${datarootdir}" S["datarootdir"]="${prefix}/share" S["libexecdir"]="${exec_prefix}/libexec" S["sbindir"]="${exec_prefix}/sbin" S["bindir"]="${exec_prefix}/bin" S["program_transform_name"]="s,x,x," S["prefix"]="/usr/local" S["exec_prefix"]="${prefix}" S["PACKAGE_URL"]="http://www.gnu.org/software/autoconf/" S["PACKAGE_BUGREPORT"]="bug-autoconf@xxxxxxx" S["PACKAGE_STRING"]="GNU Autoconf 2.66.1-f2a8-dirty" S["PACKAGE_VERSION"]="2.66.1-f2a8-dirty" S["PACKAGE_TARNAME"]="autoconf" S["PACKAGE_NAME"]="GNU Autoconf" S["PATH_SEPARATOR"]=":" S["SHELL"]="/bin/sh" for (key in S) S_is_set[key] = 1 FS = "" ... (MORE AWK CODE) Hope that helps; if not, maybe someone more knowledgeable than me will jump in. Regards, Stefano _______________________________________________ Autoconf mailing list Autoconf@xxxxxxx http://lists.gnu.org/mailman/listinfo/autoconf