config-patches
[Top][All Lists]
Advanced

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

Re: [PATCH] config.sub: Accept LLVM-style `$cpu-$vendor-windows-{gnu, mi


From: John Ericson
Subject: Re: [PATCH] config.sub: Accept LLVM-style `$cpu-$vendor-windows-{gnu, mingw}`
Date: Mon, 26 Jun 2023 20:28:14 -0400
User-agent: Cyrus-JMAP/3.9.0-alpha0-499-gf27bbf33e2-fm-20230619.001-gf27bbf33

For the record, this came out of https://github.com/NixOS/nixpkgs/pull/235230. I am one of the original/main authors of Nixpkgs/NixOS's platform specification system, and also a few years back contributed a major refactor/systematization of GNU config. (Look no further than the recent 63acb96f92473ceb5e21d873d7c0aee266b3d6d3 which fixed a spelling of mine. Sorry!)

It has been a long, slow project of mind to slowly nudge all the major platform specification systems in the world towards each other and a more systematic middle ground. This could be considered another small step in that journey.

I have yet to investigate but my co-contributor who authored that pull request may have also found some bugs in GNU config too. We'll be happy to submit patches if so.

John

On Mon, Jun 26, 2023, at 7:56 PM, John Ericson wrote:
In older times, MinGW (GCC toolchain with modified windows headers) was
the only free software toolchain for Windows. But now, LLVM has
excellent support both for MinGW ABI and Microsoft's own. (The
distinction matters for C++ more than C.)

LLVM[1], Rust[2], and other projects have taken to differentiating these
two as `...windows-gnu` vs `...windows-msvc`. I think that makes a lot
of sense, as it correctly identifiers both their commonalities and their
differences.

A lot of MinGW-supporting software, most notably GCC itself, will
presumably continue to use configs like `x86_64-pc-mingw32` and
`i686-pc-mingw32`. That's fine; this patch doesn't normalize them away
(like LLVM does) or remove them! If and when that software wants to
support the MSVC ABI without requiring MSVC itself, they can switch to
these newer configurations.

[1]: https://github.com/llvm/llvm-project/blob/a18266473be1439d324059afa0e8b124f0466428/llvm/unittests/TargetParser/TripleTest.cpp#L1907-L1951

[2]: https://github.com/rust-lang/rust/blob/36fb58e433c782e27dd41034284e157cf86d587f/compiler/rustc_target/src/spec/mod.rs#L1255-L1271


reply via email to

[Prev in Thread] Current Thread [Next in Thread]