diff --git a/CMakeLists.txt b/CMakeLists.txt index 327aa16240343..293f2c1cf8a97 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -741,6 +741,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 baeedd1b14e74..6d93e52f1d5bd 100644 --- a/cmake/modules/AddSwift.cmake +++ b/cmake/modules/AddSwift.cmake @@ -344,7 +344,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 54a3138bec743..4b9dcf11197b3 100644 --- a/cmake/modules/AddSwiftUnittests.cmake +++ b/cmake/modules/AddSwiftUnittests.cmake @@ -37,7 +37,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 3c866f2e65c92..103f1296fad5f 100644 --- a/cmake/modules/SwiftConfigureSDK.cmake +++ b/cmake/modules/SwiftConfigureSDK.cmake @@ -323,7 +323,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 fa29d77fe26ee..74a43e3334364 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 141655332d80b..47759ba6b8e25 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 021d1f65d5342..0dde804cdc448 100644 --- a/lib/IDE/Utils.cpp +++ b/lib/IDE/Utils.cpp @@ -400,6 +400,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 a750cdc896a08..bd6f19ef07fb5 100644 --- a/stdlib/cmake/modules/AddSwiftStdlib.cmake +++ b/stdlib/cmake/modules/AddSwiftStdlib.cmake @@ -418,7 +418,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("${LFLAGS_ARCH}" MATCHES "armv6|armv7|i686") + if("${LFLAGS_ARCH}" MATCHES "armv5|armv6|armv7|i686") list(APPEND link_libraries "atomic") endif() elseif("${LFLAGS_SDK}" STREQUAL "FREEBSD") diff --git a/utils/build-script-impl b/utils/build-script-impl index 355f1a086d86d..b3e80303fc06a 100755 --- a/utils/build-script-impl +++ b/utils/build-script-impl @@ -458,6 +458,7 @@ function verify_host_is_supported() { | haiku-x86_64 \ | linux-x86_64 \ | linux-i686 \ + | linux-armv5 \ | linux-armv6 \ | linux-armv7 \ | linux-aarch64 \ @@ -551,6 +552,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" @@ -1105,7 +1110,7 @@ function false_true() { CROSS_COMPILE_HOSTS=($CROSS_COMPILE_HOSTS) for t in "${CROSS_COMPILE_HOSTS[@]}"; do case ${t} in - macosx* | iphone* | appletv* | watch* | linux-armv6 | linux-armv7 | android-* ) + macosx* | 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 c5a86651bb869..bbdd22a755e3d 100644 --- a/utils/swift_build_support/swift_build_support/targets.py +++ b/utils/swift_build_support/swift_build_support/targets.py @@ -266,6 +266,7 @@ class StdlibDeploymentTarget(object): Linux = Platform("linux", archs=[ "x86_64", "i686", + "armv5", "armv6", "armv7", "aarch64", @@ -346,6 +347,9 @@ def host_target(): 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':