connor horman <chorma...@gmail.com> writes: > It seems to me reading this thread that we've come into two > conflicting realities: * There exists targets that need to be > distinguished, and * They are not distinct in any component that > config.sub has, therefore they cannot and should not be distinguished. > > mingw and msvc both use the NT kernel, and the windows operating > system. So it seems to me that windows, the OS, is the correct way to > describe them. According to the discussions on this thread, they > should thusly both canonicalize to the same target. And yet, not only > is there desire to separate these targets, they already are. > > LLVM (as well as my own target parsing tool) refer to the last two > components as "sys" with two subcomponents (of which at least one > exists), being os and env. IMO, this seems a far more coherent > definition that satisfies the requirements, and even more correctly > matches targets that already exist.
The objective is to keep the status quo unchanged till Hell freezes over, so that no programs will ever be broken. > musl is another extreme example: There is no musl OS. The last > component being musl refers to the use of the musl libc. The resulting > binary can then be used on either a GNU system or a non-GNU linux > system like alpine, void, or iglunix. Thus musl cannot be regarded as > an "OPERATING_SYSTEM" but rather an an environment. > > Even on linux-gnu the definition is murky at best. While I won't > dispute the existence of a GNU operating system running atop the linux > kernel, in many cases, the actual linux-gnu tag merely refers to > glibc. Few things using targets nowadays actually cares about the rest > of the tools, and when they do care that they exist (on --host or even > --target), they typically don't care that they're provided by GNU, and > even may not care that they match the interface of the tool provided > by GNU. Only on --build are the tools really cared about, and I don't > see many things matching the build tuple or even canonicalizing it. If > we thus define an "Operating System" as "kernel+libc+tools atop that" > it becomes clear to me that few things written nowadays care about the > "GNU Operating System" and only really care about the "GNU > Environment". For the purpose of compiling programs, systems using the GNU libc are equivalent to GNU systems. config.* does not draw excessively fine distinctions between them. In keeping with that, systems using the Musl libc are so similar that they may as well be considered as a single operating system. This contrasts with MinGW and MSVC, whose discrepancies are of sufficient consequence to warrant individual identification by config.*. And as configurations which embody these distinctions _already exist_, they should never change, nor be supplanted by new and purportedly ``improved'' configurations. I reiterate, until the very end of time...