How to get autoconf to respect CC="gcc -std=c89"?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I still intend GNU Nettle to work with a c89 compiler, and I've been
testing for that by configuring with

  ./configure CC='gcc -std=c89'

This used to catch accidental use of more recent C language features,
like declarations not at the start of a block.

However, I just realized that with recent autoconf (I'm now using
autoconf-2.71), AC_PROG_CC has become more helpful, and in this
configuration it automatically changes CC to 'gcc -std=c89 -std=gnu11'.
It's documented at
https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/html_node/C-Compiler.html#index-AC_005fPROG_005fCC-1,

  If necessary, options are added to CC to enable support for ISO
  Standard C features with extensions, preferring the newest edition of
  the C standard that is supported.

I'm sure that is a very useful feature in most cases, and a natural
extension of the ancient autoconf feature of automatically adding flags
needed to enable c89 aka ANSI-C.

However, it completely defeats this way of testing that the project can
be built with a c89 ompiler.

Is there some way of telling autoconf to be less helpful, and attempt to
add options only when needed to enable some particular version (in my
case c89, less conservative projects might want to target c99 in the
same way), but not add anything to enable even later language features?

An alternative but less general approach would be some hack to skip this
magic in the specific case that the compiler is gcc and CC already
includes some -std=* argument.

I think similar concerns apply to AC_PROG_CXX, and maybe this kind of
testing is more important there due to higher speed of C++ language
changes.

BTW, I suspect that there's a typo in the corresponding docs for
AC_PROG_CXX, it says

  After calling this macro, you can check whether the C++ compiler has
  been set to accept standard C++ by inspecting the shell variable
  ac_prog_cc_stdc.

"ac_prog_cc_stdc" looks wrong, since that's for AC_PROG_CC, not AC_PROG_CXX?

Regards,
/Niels

-- 
Niels Möller. PGP key CB4962D070D77D7FCB8BA36271D8F1FF368C6677.
Internet email is subject to wholesale government surveillance.






[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux