]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
AC_PROG_CC: also check whether $CC supports "-c -o" together
authorStefano Lattarini <stefano.lattarini@gmail.com>
Thu, 10 Jan 2013 14:14:24 +0000 (15:14 +0100)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Fri, 11 Jan 2013 10:11:31 +0000 (11:11 +0100)
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 make the new 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 its similar (but
slightly incompatible) semantics; since doing so right now 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 <stefano.lattarini@gmail.com>
lib/autoconf/c.m4

index 990c32a7e95a33e4c629c721f50cfc8089d0d48d..affd7658fc1421909613888679f40db1a784a66c 100644 (file)
@@ -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