mirror of
git://git.savannah.gnu.org/config.git
synced 2025-07-06 13:18:21 +12:00
config.sub: Accept LLVM-style $cpu-$vendor-windows-{gnu,msvc}
In older times, MinGW (GCC toolchain with modified windows headers) was the only free software toolchain for Windows. But now, LLVM has 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]:a18266473b/llvm/unittests/TargetParser/TripleTest.cpp (L1907-L1951)
[2]:36fb58e433/compiler/rustc_target/src/spec/mod.rs (L1255-L1271)
This commit is contained in:

committed by
Dmitry V. Levin

parent
4ad4bb7c30
commit
91f6a7f616
13
config.sub
vendored
13
config.sub
vendored
@ -4,7 +4,7 @@
|
||||
|
||||
# shellcheck disable=SC2006,SC2268 # see below for rationale
|
||||
|
||||
timestamp='2023-06-23'
|
||||
timestamp='2023-06-26'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
@ -145,7 +145,8 @@ case $1 in
|
||||
nto-qnx* | linux-* | uclinux-uclibc* \
|
||||
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
|
||||
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
|
||||
| storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)
|
||||
| storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \
|
||||
| windows-* )
|
||||
basic_machine=$field1
|
||||
basic_os=$maybe_os
|
||||
;;
|
||||
@ -1766,7 +1767,7 @@ case $os in
|
||||
;;
|
||||
none)
|
||||
;;
|
||||
kernel* )
|
||||
kernel* | msvc* )
|
||||
# Restricted further below
|
||||
;;
|
||||
*)
|
||||
@ -1785,6 +1786,8 @@ case $kernel-$os in
|
||||
;;
|
||||
managarm-mlibc* | managarm-kernel* )
|
||||
;;
|
||||
windows*-gnu* | windows*-msvc*)
|
||||
;;
|
||||
-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )
|
||||
# These are just libc implementations, not actual OSes, and thus
|
||||
# require a kernel.
|
||||
@ -1799,6 +1802,10 @@ case $kernel-$os in
|
||||
echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
|
||||
exit 1
|
||||
;;
|
||||
*-msvc* )
|
||||
echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
|
||||
exit 1
|
||||
;;
|
||||
kfreebsd*-gnu* | kopensolaris*-gnu*)
|
||||
;;
|
||||
vxworks-simlinux | vxworks-simwindows | vxworks-spe)
|
||||
|
Reference in New Issue
Block a user