On 9/18/23 10:57, Po Lu wrote:
John Ericson <l...@johnericson.me> writes:
You just said it is a defunct attempt
Only inasmuch as MSVC became intractable for Emacs's own purposes.
It is defunct because using Autotools with Microsoft's own compilers
basically impossible. Everything that supports Microsoft's own tools is
now using CMake or Meson for that, and bypassing GNU config and the rest
completely.LLVM however offers both GCC- and MSVC-style CLIs, and so it
is actually feasible to combine LLVM targeting `windows-msvc` with
Autotools. (Cross compiling from Unix also helps make things easier too.)
There is no Emacs-specific story in what I wrote above. No doubt perhaps
Emacs did encounter some unique problems in addition, but pain along
these lines would affect everyone using `winnt` in this way. These
multiple better options (Autotools with LLVM, CMake, Meson) obviate
using `winnt` completely.
emacs gave up on that! If anyone else is still using `winnt` we'll
here about it if we do a deprecation.
We must not obsolete or remove a triplet that has served us faithfully
for eons, as recently as a decade ago.
Deprecation doesn't break anything. There is no problem with
deprecation. It is just a warning saying that something is no longer
encouraged.
Use llvmmsvc or something similar, if distinguishing between MSVC and
LLVM is truly of such paramount importance.
LLVM's `windows-msvc` *is* the real `windows-msvc`; no one is trying to
distinguish LLVM vs Microsoft's own tools in GNU config, just as no one
is distinguishing GCC vs LLVM in GNU config.
Microsoft's own tools do not use GNU configs or anything like that, so
the choice of triple doesn't matter; that is why winnt was fine a decade
ago. LLVM however does support similar configs, and people add configs
to GNU configs for LLVM all the time, not just I. (For example, the
recent requests for "arm64ec" and "arm64_32" are things that *only* LLVM
supports, not GCC.) LLVM *does not support* any `*winnt*` configs; you
must use `windows-msvc` with it. So if GNU config does not this triple
and instead just supports the likely abandoned and unused `winnt`, it is
actively hostile to the one extant free software toolchain that targets
this platform.
Everyone else that supported changing/removing `windows-gnu` like you
also wrote that `windows-msvc` sounded useful and we should keep it.
And in any case, `windows-msvc' is a no-go: there is a dash in
between, rendering the msvc an operating system identifier.
You do realize that GNU config already parses "operating system
identifiers" that are blatantly not operating systems, and has done so
for years? "elf", "coff", "musl", "uclibc" are all currently valid
examples that are blatantly not OSes; but expediently accepted as OSes
in order to support certain configs. We should continue to be practical
and support `windows-msvc` just as we previously supported things like
`linux-musl`.
The whole point of the massive other thread in spitting out KEY=value\n
is so that that we can improve our categorization without any breakages,
and relieve downstream projects like autotools from reverse engineering
what we do. There are two choices: accept these "fake" OSes and other
lies, or admit that the dash-separated format is ambiguous because
sometime we do kernel-abi / os-abi not kernel-os. Let's go with the
second, which can allow us to stop pretending musl, msvc, etc. are OSes
internally, and share their now-corrected categorization with the rest
of the world.
John