Last active
March 28, 2022 02:36
Swift 5.5.3 patched for Armv5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/CMakeLists.txt b/CMakeLists.txt | |
index 7a3cc3af07a..d99fbc56348 100644 | |
--- a/CMakeLists.txt | |
+++ b/CMakeLists.txt | |
@@ -285,7 +285,7 @@ set(SWIFT_ANDROID_DEPLOY_DEVICE_PATH "" CACHE STRING | |
# | |
foreach(sdk ANDROID;FREEBSD;LINUX;WINDOWS;HAIKU;WASI) | |
- foreach(arch aarch64;armv6;armv7;i686;powerpc64;powerpc64le;s390x;wasm32;x86_64) | |
+ foreach(arch aarch64;armv5;armv6;armv7;i686;powerpc64;powerpc64le;s390x;wasm32;x86_64) | |
set(SWIFT_${sdk}_${arch}_ICU_UC "" CACHE STRING | |
"Path to a directory containing the icuuc library for ${sdk}") | |
set(SWIFT_${sdk}_${arch}_ICU_UC_INCLUDE "" CACHE STRING | |
@@ -636,6 +636,8 @@ else() | |
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc64le") | |
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "s390x") | |
set(SWIFT_HOST_VARIANT_ARCH_default "s390x") | |
+ elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "armv5|armv5te") | |
+ set(SWIFT_HOST_VARIANT_ARCH_default "armv5") | |
# FIXME: Only matches v6l/v7l - by far the most common variants | |
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv6l") | |
set(SWIFT_HOST_VARIANT_ARCH_default "armv6") | |
diff --git a/cmake/modules/AddSwift.cmake b/cmake/modules/AddSwift.cmake | |
index f244b6b46f6..c22cac55546 100644 | |
--- a/cmake/modules/AddSwift.cmake | |
+++ b/cmake/modules/AddSwift.cmake | |
@@ -301,7 +301,7 @@ function(_add_host_variant_link_flags target) | |
target_link_libraries(${target} PRIVATE | |
pthread | |
dl) | |
- if("${SWIFT_HOST_VARIANT_ARCH}" MATCHES "armv6|armv7|i686") | |
+ if("${SWIFT_HOST_VARIANT_ARCH}" MATCHES "armv5|armv6|armv7|i686") | |
target_link_libraries(${target} PRIVATE atomic) | |
endif() | |
elseif(SWIFT_HOST_VARIANT_SDK STREQUAL FREEBSD) | |
diff --git a/cmake/modules/AddSwiftUnittests.cmake b/cmake/modules/AddSwiftUnittests.cmake | |
index 0690973abd3..640c4068a08 100644 | |
--- a/cmake/modules/AddSwiftUnittests.cmake | |
+++ b/cmake/modules/AddSwiftUnittests.cmake | |
@@ -38,7 +38,7 @@ function(add_swift_unittest test_dirname) | |
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64") | |
target_compile_options(${test_dirname} PRIVATE | |
-march=core2) | |
- elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "armv6|armv7|i686") | |
+ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "armv5|armv6|armv7|i686") | |
set_property(TARGET "${test_dirname}" APPEND PROPERTY LINK_LIBRARIES | |
"atomic") | |
endif() | |
diff --git a/cmake/modules/SwiftConfigureSDK.cmake b/cmake/modules/SwiftConfigureSDK.cmake | |
index 8a32c12abb1..01e830ae6aa 100644 | |
--- a/cmake/modules/SwiftConfigureSDK.cmake | |
+++ b/cmake/modules/SwiftConfigureSDK.cmake | |
@@ -335,7 +335,9 @@ macro(configure_sdk_unix name architectures) | |
endif() | |
if("${prefix}" STREQUAL "LINUX") | |
- if(arch MATCHES "(armv6|armv7)") | |
+ if(arch MATCHES "(armv5)") | |
+ set(SWIFT_SDK_LINUX_ARCH_${arch}_TRIPLE "${arch}-unknown-linux-gnueabi") | |
+ elseif(arch MATCHES "(armv6|armv7)") | |
set(SWIFT_SDK_LINUX_ARCH_${arch}_TRIPLE "${arch}-unknown-linux-gnueabihf") | |
elseif(arch MATCHES "(aarch64|i686|powerpc64|powerpc64le|s390x|x86_64)") | |
set(SWIFT_SDK_LINUX_ARCH_${arch}_TRIPLE "${arch}-unknown-linux-gnu") | |
diff --git a/cmake/modules/SwiftSetIfArchBitness.cmake b/cmake/modules/SwiftSetIfArchBitness.cmake | |
index fa29d77fe26..74a43e33343 100644 | |
--- a/cmake/modules/SwiftSetIfArchBitness.cmake | |
+++ b/cmake/modules/SwiftSetIfArchBitness.cmake | |
@@ -9,6 +9,7 @@ function(set_if_arch_bitness var_name) | |
if("${SIA_ARCH}" STREQUAL "i386" OR | |
"${SIA_ARCH}" STREQUAL "i686" OR | |
"${SIA_ARCH}" STREQUAL "x86" OR | |
+ "${SIA_ARCH}" STREQUAL "armv5" OR | |
"${SIA_ARCH}" STREQUAL "armv6" OR | |
"${SIA_ARCH}" STREQUAL "armv7" OR | |
"${SIA_ARCH}" STREQUAL "armv7k" OR | |
diff --git a/lib/Basic/Platform.cpp b/lib/Basic/Platform.cpp | |
index bd1fce5423a..b32539a8c5c 100644 | |
--- a/lib/Basic/Platform.cpp | |
+++ b/lib/Basic/Platform.cpp | |
@@ -218,6 +218,8 @@ StringRef swift::getMajorArchitectureName(const llvm::Triple &Triple) { | |
return "armv7"; | |
case llvm::Triple::SubArchType::ARMSubArch_v6: | |
return "armv6"; | |
+ case llvm::Triple::SubArchType::ARMSubArch_v5: | |
+ return "armv5"; | |
default: | |
break; | |
} | |
diff --git a/lib/IDE/Utils.cpp b/lib/IDE/Utils.cpp | |
index 9ddb31de194..2878dbdb534 100644 | |
--- a/lib/IDE/Utils.cpp | |
+++ b/lib/IDE/Utils.cpp | |
@@ -393,6 +393,10 @@ static std::string adjustClangTriple(StringRef TripleStr) { | |
OS << "armv6k"; break; | |
case llvm::Triple::SubArchType::ARMSubArch_v6t2: | |
OS << "armv6t2"; break; | |
+ case llvm::Triple::SubArchType::ARMSubArch_v5: | |
+ OS << "armv5"; break; | |
+ case llvm::Triple::SubArchType::ARMSubArch_v5te: | |
+ OS << "armv5te"; break; | |
default: | |
// Adjust i386-macosx to x86_64 because there is no Swift stdlib for i386. | |
if ((Triple.getOS() == llvm::Triple::MacOSX || | |
diff --git a/stdlib/cmake/modules/AddSwiftStdlib.cmake b/stdlib/cmake/modules/AddSwiftStdlib.cmake | |
index fac9eec3f35..014526d4054 100644 | |
--- a/stdlib/cmake/modules/AddSwiftStdlib.cmake | |
+++ b/stdlib/cmake/modules/AddSwiftStdlib.cmake | |
@@ -358,7 +358,7 @@ function(_add_target_variant_link_flags) | |
MACCATALYST_BUILD_FLAVOR "${LFLAGS_MACCATALYST_BUILD_FLAVOR}") | |
if("${LFLAGS_SDK}" STREQUAL "LINUX") | |
list(APPEND link_libraries "pthread" "dl") | |
- if("${SWIFT_HOST_VARIANT_ARCH}" MATCHES "armv6|armv7|i686") | |
+ if("${SWIFT_HOST_VARIANT_ARCH}" MATCHES "armv5|armv6|armv7|i686") | |
list(APPEND link_libraries PRIVATE "atomic") | |
endif() | |
elseif("${LFLAGS_SDK}" STREQUAL "FREEBSD") | |
diff --git a/utils/build-script-impl b/utils/build-script-impl | |
index aa72cfbf06d..c0838ae3198 100755 | |
--- a/utils/build-script-impl | |
+++ b/utils/build-script-impl | |
@@ -415,6 +415,7 @@ function verify_host_is_supported() { | |
| haiku-x86_64 \ | |
| linux-x86_64 \ | |
| linux-i686 \ | |
+ | linux-armv5 \ | |
| linux-armv6 \ | |
| linux-armv7 \ | |
| linux-aarch64 \ | |
@@ -507,6 +508,10 @@ function set_build_options_for_host() { | |
;; | |
esac | |
;; | |
+ linux-armv5) | |
+ SWIFT_HOST_TRIPLE="armv5-unknown-linux-gnueabi" | |
+ llvm_target_arch="ARM" | |
+ ;; | |
linux-armv6) | |
SWIFT_HOST_TRIPLE="armv6-unknown-linux-gnueabihf" | |
llvm_target_arch="ARM" | |
@@ -1052,7 +1057,7 @@ function false_true() { | |
CROSS_COMPILE_HOSTS=($CROSS_COMPILE_HOSTS) | |
for t in "${CROSS_COMPILE_HOSTS[@]}"; do | |
case ${t} in | |
- macosx-arm64* | iphone* | appletv* | watch* | linux-armv6 | linux-armv7 | android-* ) | |
+ macosx-arm64* | iphone* | appletv* | watch* | linux-armv5 | linux-armv6 | linux-armv7 | android-* ) | |
;; | |
*) | |
echo "Unknown host to cross-compile for: ${t}" | |
diff --git a/utils/swift_build_support/swift_build_support/targets.py b/utils/swift_build_support/swift_build_support/targets.py | |
index 2cb86fb3571..d540570ea91 100644 | |
--- a/utils/swift_build_support/swift_build_support/targets.py | |
+++ b/utils/swift_build_support/swift_build_support/targets.py | |
@@ -224,6 +224,7 @@ class StdlibDeploymentTarget(object): | |
Linux = Platform("linux", archs=[ | |
"x86_64", | |
"i686", | |
+ "armv5", | |
"armv6", | |
"armv7", | |
"aarch64", | |
@@ -301,6 +302,9 @@ class StdlibDeploymentTarget(object): | |
elif machine.startswith('armv6'): | |
# linux-armv6* is canonicalized to 'linux-armv6' | |
return StdlibDeploymentTarget.Linux.armv6 | |
+ elif machine.startswith('armv5'): | |
+ # linux-armv5* is canonicalized to 'linux-armv5' | |
+ return StdlibDeploymentTarget.Linux.armv5 | |
elif machine == 'aarch64': | |
return StdlibDeploymentTarget.Linux.aarch64 | |
elif machine == 'ppc64': |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment