CFLAGS containing quoted arguments to compiler does not work

"(GalaxyMaster)" <[email protected]>
Newsgroups gmane.comp.sysutils.autoconf.bugs
Message-ID <01000185d265297e-4e976268-73cd-44dd-ba30-a6937b5dc91e-000000@email.amazonses.com>
Hello,

[I am not subscribed to the list, so if you need me to respond, please CC me on
your replies -- the following is a bug report]

I just stumbled upon this and decided to report it.  There is a test on whether
C compiler works (actually, the test is in lang.m4 and is generic) and when
this test is running it fails on a perfectly acceptable command line for the C
compiler:
===
galaxy@apollo:~/autoconf-test $ ls -l
total 8
-rw-r--r-- 1 galaxy galaxy 19 Jan 21 02:41 configure.ac
-rw-r--r-- 1 galaxy galaxy 25 Jan 21 02:43 main.c
galaxy@apollo:~/autoconf-test $ cat configure.ac
AC_INIT
AC_PROG_CC
galaxy@apollo:~/autoconf-test $ cat main.c
int main() { return 0; }
galaxy@apollo:~/autoconf-test $ autoconf -f
/usr/share/autoconf/autoconf/trailer.m4:4: warning: AC_OUTPUT was never used
galaxy@apollo:~/autoconf-test $ export CFLAGS="-Dsomething='one two'"
galaxy@apollo:~/autoconf-test $ ./configure
checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in `/home/galaxy/autoconf-test':
configure: error: C compiler cannot create executables
See `config.log' for more details
galaxy@apollo:~/autoconf-test $ gcc "$CFLAGS" -c main.c
galaxy@apollo:~/autoconf-test $ ls -l main.*
-rw-r--r-- 1 galaxy galaxy   25 Jan 21 02:43 main.c
-rw------- 1 galaxy galaxy 1080 Jan 21 02:51 main.o
galaxy@apollo:~/autoconf-test $
===

I believe it is due to not handling the CFLAGS variable with proper quotation,
since if we look into "config.log" we see:
===
configure:2586: gcc -Dsomething='one two'   conftest.c  >&5
<command-line>: warning: missing terminating ' character
/bin/ld: cannot find two': No such file or directory
collect2: error: ld returned 1 exit status
===

which can be easily replicated with bare gcc as:
===
galaxy@apollo:~/autoconf-test $ gcc $CFLAGS -c main.c
<command-line>: warning: missing terminating ' character
gcc: warning: two': linker input file unused because linking not done
gcc: error: two': linker input file not found: No such file or directory
galaxy@apollo:~/autoconf-test $
===

Interestingly enough, the "configure:2586: gcc -Dsomething='one two'
conftest.c  >&5" line is misleading, since if that was the line executed it
would have succeeded:
===
galaxy@apollo:~/autoconf-test $ gcc -Dsomething='one two' main.c
galaxy@apollo:~/autoconf-test $
===

Unfortunately, my autoconf-fu is not that great to quickly identify the
culprit.

-- 
(GM)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.