[PATCH] AC_PROG_CC: also check whether $CC supports "-c -o" together
Stefano Lattarini <[email protected]>
| Newsgroups | gmane.comp.sysutils.autoconf.patches |
|---|---|
| Message-ID | <48a5da01211c76732ca857542b1056cf0fcda8bf.1357827284.git.stefano.lattarini@gmail.com> |
This is for Automake and its 'subdir-object' mode (see automake bug#13378, in particular <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#73>), so we only make the behavior available only if the special witness macro '_AM_PROG_CC_C_O_HELPME' is defined (future Automake versions will define it). We might decide, at a later date, to make this behaviour public; but then we'll have to discuss its usefulness and design more in depth, and if they are agreed upon, adjust the documentation to match, and also decide what to do with the macro AC_PROG_CC_C_O, with it's similar (but slightly incompatible) semantics; since doing so right would bring us off-track (and Automake needs this change *today*, or better, yesterday), we proceed with this simpler hack. * lib/autoconf/c.m4 (AC_PROG_CC): Adjust. Signed-off-by: Stefano Lattarini <[email protected]> --- This should ideally go in autoconf 2.70, so that Automake from master can start relying on it right away. What I don't like about this patch is the lack of tests. Since automake will be the only user for now, that is no big deal (as long as you delay the 2.70 some days release to give me time to properly test this change in combination with the planned but not yet written changes to Automake master). But should be fixed if we ever want to make this new interface public. ACK? Thanks, Stefano lib/autoconf/c.m4 | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4 index edc663b..929e21d 100644 --- a/lib/autoconf/c.m4 +++ b/lib/autoconf/c.m4 @@ -490,7 +490,31 @@ _AC_PROG_CC_C11([ac_prog_cc_stdc=c11 ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89], [ac_prog_cc_stdc=no ac_cv_prog_cc_stdc=no])])]) -dnl +dnl This is a hook for Automake and its 'subdir-objects' mode, which +dnl needs to know whether $CC supports "-c -o" together or not. See +dnl automake bug#13378, in particular <http://debbugs.gnu.org/13378#73>. +dnl FIXME: there is some code duplication with AC_PROG_CC_C_O here. +m4_ifdef([_AM_PROG_CC_C_O_HELPME], +[set dummy $CC; ac_cc=`AS_ECHO(["$[2]"]) | \ + sed 's/[[^a-zA-Z0-9_]]/_/g;s/^[[0-9]]/_/'` +AC_MSG_CHECKING([whether $CC understands -c and -o together]) +AC_CACHE_VAL([ac_cv_prog_cc_${ac_cc}_c_o], +[AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) +# Make sure it works both with $CC and with simple cc. +# We do the test twice because some compilers refuse to overwrite an +# existing .o file with -o, though they will create one. +ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&AS_MESSAGE_LOG_FD' +rm -f conftest2.* +if _AC_DO_VAR(ac_try) && test -f conftest2.$ac_objext +then + AC_MSG_RESULT([yes]) + eval ac_cv_prog_cc_${ac_cc}_c_o=yes +else + AC_MSG_RESULT([no]) + eval ac_cv_prog_cc_${ac_cc}_c_o=no +fi +rm -f core conftest* +])])dnl AC_LANG_POP(C)dnl ])# AC_PROG_CC -- 1.8.1.rc3.192.g2d0029e