Skip to content

Commit 7d9d798

Browse files
authored
Merge pull request #41686 from MillerTechnologyPeru/feature/armv5-trunk
[stdlib] Added Armv5 support
2 parents 67c679b + b85e673 commit 7d9d798

File tree

10 files changed

+25
-5
lines changed

10 files changed

+25
-5
lines changed

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -741,6 +741,8 @@ else()
741741
set(SWIFT_HOST_VARIANT_ARCH_default "powerpc64le")
742742
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "s390x")
743743
set(SWIFT_HOST_VARIANT_ARCH_default "s390x")
744+
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "armv5|armv5te")
745+
set(SWIFT_HOST_VARIANT_ARCH_default "armv5")
744746
# FIXME: Only matches v6l/v7l - by far the most common variants
745747
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv6l")
746748
set(SWIFT_HOST_VARIANT_ARCH_default "armv6")

cmake/modules/AddSwift.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ function(_add_host_variant_link_flags target)
344344
target_link_libraries(${target} PRIVATE
345345
pthread
346346
dl)
347-
if("${SWIFT_HOST_VARIANT_ARCH}" MATCHES "armv6|armv7|i686")
347+
if("${SWIFT_HOST_VARIANT_ARCH}" MATCHES "armv5|armv6|armv7|i686")
348348
target_link_libraries(${target} PRIVATE atomic)
349349
endif()
350350
elseif(SWIFT_HOST_VARIANT_SDK STREQUAL FREEBSD)

cmake/modules/AddSwiftUnittests.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ function(add_swift_unittest test_dirname)
3737
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")
3838
target_compile_options(${test_dirname} PRIVATE
3939
-march=core2)
40-
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "armv6|armv7|i686")
40+
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "armv5|armv6|armv7|i686")
4141
set_property(TARGET "${test_dirname}" APPEND PROPERTY LINK_LIBRARIES
4242
"atomic")
4343
endif()

cmake/modules/SwiftConfigureSDK.cmake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,9 @@ macro(configure_sdk_unix name architectures)
323323
endif()
324324

325325
if("${prefix}" STREQUAL "LINUX")
326-
if(arch MATCHES "(armv6|armv7)")
326+
if(arch MATCHES "(armv5)")
327+
set(SWIFT_SDK_LINUX_ARCH_${arch}_TRIPLE "${arch}-unknown-linux-gnueabi")
328+
elseif(arch MATCHES "(armv6|armv7)")
327329
set(SWIFT_SDK_LINUX_ARCH_${arch}_TRIPLE "${arch}-unknown-linux-gnueabihf")
328330
elseif(arch MATCHES "(aarch64|i686|powerpc64|powerpc64le|s390x|x86_64)")
329331
set(SWIFT_SDK_LINUX_ARCH_${arch}_TRIPLE "${arch}-unknown-linux-gnu")

cmake/modules/SwiftSetIfArchBitness.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ function(set_if_arch_bitness var_name)
99
if("${SIA_ARCH}" STREQUAL "i386" OR
1010
"${SIA_ARCH}" STREQUAL "i686" OR
1111
"${SIA_ARCH}" STREQUAL "x86" OR
12+
"${SIA_ARCH}" STREQUAL "armv5" OR
1213
"${SIA_ARCH}" STREQUAL "armv6" OR
1314
"${SIA_ARCH}" STREQUAL "armv7" OR
1415
"${SIA_ARCH}" STREQUAL "armv7k" OR

lib/Basic/Platform.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,8 @@ StringRef swift::getMajorArchitectureName(const llvm::Triple &Triple) {
218218
return "armv7";
219219
case llvm::Triple::SubArchType::ARMSubArch_v6:
220220
return "armv6";
221+
case llvm::Triple::SubArchType::ARMSubArch_v5:
222+
return "armv5";
221223
default:
222224
break;
223225
}

lib/IDE/Utils.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,10 @@ static std::string adjustClangTriple(StringRef TripleStr) {
400400
OS << "armv6k"; break;
401401
case llvm::Triple::SubArchType::ARMSubArch_v6t2:
402402
OS << "armv6t2"; break;
403+
case llvm::Triple::SubArchType::ARMSubArch_v5:
404+
OS << "armv5"; break;
405+
case llvm::Triple::SubArchType::ARMSubArch_v5te:
406+
OS << "armv5te"; break;
403407
default:
404408
// Adjust i386-macosx to x86_64 because there is no Swift stdlib for i386.
405409
if ((Triple.getOS() == llvm::Triple::MacOSX ||

stdlib/cmake/modules/AddSwiftStdlib.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ function(_add_target_variant_link_flags)
418418
MACCATALYST_BUILD_FLAVOR "${LFLAGS_MACCATALYST_BUILD_FLAVOR}")
419419
if("${LFLAGS_SDK}" STREQUAL "LINUX")
420420
list(APPEND link_libraries "pthread" "dl")
421-
if("${LFLAGS_ARCH}" MATCHES "armv6|armv7|i686")
421+
if("${LFLAGS_ARCH}" MATCHES "armv5|armv6|armv7|i686")
422422
list(APPEND link_libraries "atomic")
423423
endif()
424424
elseif("${LFLAGS_SDK}" STREQUAL "FREEBSD")

utils/build-script-impl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,7 @@ function verify_host_is_supported() {
458458
| haiku-x86_64 \
459459
| linux-x86_64 \
460460
| linux-i686 \
461+
| linux-armv5 \
461462
| linux-armv6 \
462463
| linux-armv7 \
463464
| linux-aarch64 \
@@ -551,6 +552,10 @@ function set_build_options_for_host() {
551552
;;
552553
esac
553554
;;
555+
linux-armv5)
556+
SWIFT_HOST_TRIPLE="armv5-unknown-linux-gnueabi"
557+
llvm_target_arch="ARM"
558+
;;
554559
linux-armv6)
555560
SWIFT_HOST_TRIPLE="armv6-unknown-linux-gnueabihf"
556561
llvm_target_arch="ARM"
@@ -1105,7 +1110,7 @@ function false_true() {
11051110
CROSS_COMPILE_HOSTS=($CROSS_COMPILE_HOSTS)
11061111
for t in "${CROSS_COMPILE_HOSTS[@]}"; do
11071112
case ${t} in
1108-
macosx* | iphone* | appletv* | watch* | linux-armv6 | linux-armv7 | android-* )
1113+
macosx* | iphone* | appletv* | watch* | linux-armv5 | linux-armv6 | linux-armv7 | android-* )
11091114
;;
11101115
*)
11111116
echo "Unknown host to cross-compile for: ${t}"

utils/swift_build_support/swift_build_support/targets.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ class StdlibDeploymentTarget(object):
266266
Linux = Platform("linux", archs=[
267267
"x86_64",
268268
"i686",
269+
"armv5",
269270
"armv6",
270271
"armv7",
271272
"aarch64",
@@ -346,6 +347,9 @@ def host_target():
346347
elif machine.startswith('armv6'):
347348
# linux-armv6* is canonicalized to 'linux-armv6'
348349
return StdlibDeploymentTarget.Linux.armv6
350+
elif machine.startswith('armv5'):
351+
# linux-armv5* is canonicalized to 'linux-armv5'
352+
return StdlibDeploymentTarget.Linux.armv5
349353
elif machine == 'aarch64':
350354
return StdlibDeploymentTarget.Linux.aarch64
351355
elif machine == 'ppc64':

0 commit comments

Comments
 (0)