Re: How to get autoconf to respect CC="gcc -std=c89"?
Jacob Bachmeyer <[email protected]> Sat, 07 Oct 2023 21:36:48 -0500
| Newsgroups | gmane.comp.sysutils.autoconf.general,gmane.comp.sysutils.autoconf.patches |
|---|---|
| Message-ID | <[email protected]> |
Niels Möller wrote: > Paul Eggert <[email protected]> writes: > > >> This doesn't let you say "I want either c89 or c99, but not c11". >> > > That's right, I tried only the very simplest thing. Providing a list > makes sense, thoguh. What should the interface be? > > AC_C_STANDARD_VERSION([c99 c89]) > > looks reasonable to me; list in order of preference, and whitespace > separation. That's consistent with AC_PROG_CC. But that means that > > AC_C_STANDARD_VERSION([c89 c99]) > > is a bit meaningless; if compiler has c89, that's what will be used, and > if it doesn't have c89, it won't have c99 either. Free compilers may behave that way, however I have vague memories of a compiler that dropped support for K&R function definitions many years ago, long before GCC did. Since Autoconf seeks portability, including to non-free systems, preferring C89 but accepting C99 is reasonable to express. There may be non-free compilers out there that do not accept C89 but do accept C99. > [...] > I considered trying this out, but then there's some impedance mismatch > between the whitespace separated list to AC_C_STANDARD_VERSION, and the > comma-separated list required by m4_map. Certainly doable, but what's > the easiest way to transform > > [c99 c89] > > into > > [99, 89] > > ? > Some quick tests here suggest that "patsubst(patsubst([c99 c89], [c]), [ ], [, ])" should do that trick. >>> + m4_ifdef([_AC_C_STANDARD_VERSION_LIST], >>> + [m4_fatal([AC_PROG_C_STANDARD_VERSION should only be used once], 1)]) >>> >> Why have this check? >> > > I figured the user should get some error message if using > AC_C_STANDARD_VERSION too late, e.g., after some AC_FOO that implicitly > uses AC_PROG_CC, which will also trigger this check. Not sure of > m4_fatal is the right way to signals error to the user, though. (And > error message could be improved). > How about "error: AC_PROG_CC_STANDARD_EDITION used after AC_PROG_CC invoked"? -- Jacob