git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 1/1] git-compat-util: add a test balloon for C99 support

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Nov 18, 2021, 02:26 UTC
Message-ID
<211118.86lf1m5h1y.gmgdl@evledraar.gmail.com>
In-Reply-To
<CAPUEspg=ef9xSiYsVKHfo7zogExeMwL3gMnN_bq1QcKv0fnNng@mail.gmail.com>
On Wed, Nov 17 2021, Carlo Arenas wrote:
Show 35 quoted lines
> On Wed, Nov 17, 2021 at 3:18 PM brian m. carlson
> <sandals@crustytoothpaste.net> wrote:
>>
>> On 2021-11-17 at 03:01:57, Jeff King wrote:
>> > My thinking was that breaking older compilers was preferable to breaking
>> > non-gnu ones, because at least old ones go away eventually. But your
>> > other email makes me wonder if those non-GNU ones may already be
>> > overriding CFLAGS.
>>
>> Our only problem platform, as far as I can tell, is RHEL/CentOS 7.  That
>> uses GCC 4.8, and even Ubuntu 18.04 ships with GCC 7.
>
> There are several odd BSD platforms that are still stuck in pre-GPLv3
> gcc (AKA gcc 4.2.1) like OpenBSD Alpha, hppa, landisk (and maybe also
> SPARC64 which is tier1) and that will need the same, there is indeed
> also luna88k that uses an even older gcc but hopefully will be able to
> work if it understands enough C99 and can be told to use it by this
> flag.
>
>> > Still, if we can come up with a solution that breaks neither (with some
>> > light auto-detection or heuristics in the Makefile), that could be the
>> > best of both worlds.
>>
>> I can move COMPILER_FEATURES out of config.mak.dev and into Makefile so
>> that we can make use of it.  We'll need to depend on GCC 6 for this
>> because we lack a way to distinguish 5.1 (which should work) from 5.0
>> (which will not).
>
> 5.0 works AFAIK, is anything older than 5 than does not as reported[1]
> before, but it won't be still a good fit, since it only works for gcc
> and clang AS-IS.
>
> Carlo
>
> [1] https://lore.kernel.org/git/CAPUEsphnCvK+RZ+h30ZarA1zo9yZ=ndEBrcAbKGf4W92j647vA@mail.gmail.com/

Rather than moving around COMPILER_FEATURES etc. we can just compile a C program as part of our Makefile auto-configuration. See the direction suggested in: https://lore.kernel.org/git/87bl6aypke.fsf@evledraar.gmail.com/

That example is ad-hoc, but the right way to do this is:
 1. Stick a C program somewhere, maybe git-autoconf/compiler.c 
 2. (Try to) Compile that unconditionally
 3. Emit its output to a generated file that we then "include", which
    likewise if it fails indicate that in something the Makefile can
    "include".

Since we set up that file-based dependency relationship we'll only do that auto-detection on the first build.

This is really much simpler than fiddling with the version parsing shellscript, i.e. we can just compile a program with -std=c99 or whatever and see if it works, and if it does we stick that flag in CFLAGS or equivalent.

Previous: Carlo ArenasNext: Junio C Hamano
Message 22 of 32 in “Add a test balloon for C99”
  1. 0/1 Add a test balloon for C99brian m. carlson, Nov 14, 2021
  2. 1/1 git-compat-util: add a test balloon for C99 supportbrian m. carlson, Nov 14, 2021
  3. Ævar Arnfjörð BjarmasonNov 15, 2021
  4. brian m. carlsonNov 15, 2021
  5. Eric SunshineNov 15, 2021
  6. brian m. carlsonNov 16, 2021
  7. Johannes SchindelinNov 22, 2021
  8. brian m. carlsonNov 14, 2021
  9. Junio C HamanoNov 15, 2021
  10. brian m. carlsonNov 15, 2021
  11. Junio C HamanoNov 16, 2021
  12. brian m. carlsonNov 17, 2021
  13. 0/1 Add a test balloon for C99 supportbrian m. carlson, Nov 16, 2021
  14. 1/1 git-compat-util: add a test balloon for C99 supportbrian m. carlson, Nov 16, 2021
  15. Jeff KingNov 16, 2021
  16. Ævar Arnfjörð BjarmasonNov 16, 2021
  17. Jeff KingNov 16, 2021
  18. brian m. carlsonNov 17, 2021
  19. Jeff KingNov 17, 2021
  20. brian m. carlsonNov 17, 2021
  21. Carlo ArenasNov 17, 2021
  22. Ævar Arnfjörð BjarmasonNov 18, 2021
  23. Junio C HamanoNov 18, 2021
  24. Junio C HamanoNov 17, 2021
  25. Phillip WoodNov 16, 2021
  26. brian m. carlsonNov 17, 2021
  27. Jeff KingNov 17, 2021
  28. Microsoft's C language policy (was: [PATCH 0/1] Add a test balloon for C99)Ævar Arnfjörð Bjarmason, Nov 30, 2021
  29. brian m. carlsonNov 30, 2021
  30. 0/1 Add a test balloon for C99 supportbrian m. carlson, Dec 1, 2021
  31. 1/1 git-compat-util: add a test balloon for C99 supportbrian m. carlson, Dec 1, 2021
  32. Johannes SchindelinDec 2, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.