diff --git a/CMakeLists.txt b/CMakeLists.txt index 95d7f014b9f07..a770924e7491a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -570,6 +570,8 @@ else() set(SWIFT_HOST_VARIANT_SDK_default "LINUX") elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD") set(SWIFT_HOST_VARIANT_SDK_default "FREEBSD") + elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD") + set(SWIFT_HOST_VARIANT_SDK_default "OPENBSD") elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "CYGWIN") set(SWIFT_HOST_VARIANT_SDK_default "CYGWIN") elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") @@ -673,6 +675,15 @@ elseif("${SWIFT_HOST_VARIANT_SDK}" STREQUAL "FREEBSD") set(SWIFT_PRIMARY_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK}") set(SWIFT_PRIMARY_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH}") +elseif("${SWIFT_HOST_VARIANT_SDK}" STREQUAL "OPENBSD") + + set(SWIFT_HOST_VARIANT "openbsd" CACHE STRING + "Deployment OS for Swift host tools (the compiler) [openbsd].") + + configure_sdk_unix("OpenBSD" "${SWIFT_HOST_VARIANT_ARCH}") + set(SWIFT_PRIMARY_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK}") + set(SWIFT_PRIMARY_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH}") + elseif("${SWIFT_HOST_VARIANT_SDK}" STREQUAL "CYGWIN") set(SWIFT_HOST_VARIANT "cygwin" CACHE STRING diff --git a/cmake/modules/FindICU.cmake b/cmake/modules/FindICU.cmake index 1b5c53a22b5b1..611773c4a2d05 100644 --- a/cmake/modules/FindICU.cmake +++ b/cmake/modules/FindICU.cmake @@ -24,7 +24,7 @@ foreach(MODULE ${ICU_FIND_COMPONENTS}) HINTS ${PC_ICU_${MODULE}_LIBRARY_DIRS}) endforeach() -foreach(sdk ANDROID;FREEBSD;LINUX;WINDOWS;HAIKU) +foreach(sdk ANDROID;FREEBSD;OPENBSD;LINUX;WINDOWS;HAIKU) foreach(MODULE ${ICU_FIND_COMPONENTS}) string(TOUPPER "${MODULE}" MODULE) if("${SWIFT_${sdk}_${SWIFT_HOST_VARIANT_ARCH}_ICU_${MODULE}_INCLUDE}" STREQUAL "") diff --git a/cmake/modules/SwiftConfigureSDK.cmake b/cmake/modules/SwiftConfigureSDK.cmake index f2fee24e5567d..c150a7b9fa469 100644 --- a/cmake/modules/SwiftConfigureSDK.cmake +++ b/cmake/modules/SwiftConfigureSDK.cmake @@ -320,6 +320,15 @@ macro(configure_sdk_unix name architectures) message(STATUS "FreeBSD Version: ${freebsd_system_version}") set(SWIFT_SDK_FREEBSD_ARCH_x86_64_TRIPLE "x86_64-unknown-freebsd${freebsd_system_version}") + elseif("${prefix}" STREQUAL "OPENBSD") + if(NOT arch STREQUAL amd64) + message(FATAL_ERROR "unsupported arch for OpenBSD: ${arch}") + endif() + + string(REPLACE "[-].*" "" openbsd_system_version ${CMAKE_SYSTEM_VERSION}) + message(STATUS "OpenBSD Version: ${openbsd_system_version}") + + set(SWIFT_SDK_OPENBSD_ARCH_amd64_TRIPLE "amd64-unknown-openbsd${openbsd_system_version}") elseif("${prefix}" STREQUAL "CYGWIN") if(NOT arch STREQUAL x86_64) message(FATAL_ERROR "unsupported arch for cygwin: ${arch}") diff --git a/cmake/modules/SwiftSetIfArchBitness.cmake b/cmake/modules/SwiftSetIfArchBitness.cmake index 9983cad817169..2929e50fa0ce0 100644 --- a/cmake/modules/SwiftSetIfArchBitness.cmake +++ b/cmake/modules/SwiftSetIfArchBitness.cmake @@ -15,6 +15,7 @@ function(set_if_arch_bitness var_name) "${SIA_ARCH}" STREQUAL "armv7s") set("${var_name}" "${SIA_CASE_32_BIT}" PARENT_SCOPE) elseif("${SIA_ARCH}" STREQUAL "x86_64" OR + "${SIA_ARCH}" STREQUAL "amd64" OR "${SIA_ARCH}" STREQUAL "arm64" OR "${SIA_ARCH}" STREQUAL "arm64e" OR "${SIA_ARCH}" STREQUAL "aarch64" OR diff --git a/stdlib/private/RuntimeUnittest/CMakeLists.txt b/stdlib/private/RuntimeUnittest/CMakeLists.txt index 904099933531f..3f042f605613a 100644 --- a/stdlib/private/RuntimeUnittest/CMakeLists.txt +++ b/stdlib/private/RuntimeUnittest/CMakeLists.txt @@ -10,6 +10,7 @@ add_swift_target_library(swiftRuntimeUnittest ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES SWIFT_MODULE_DEPENDS StdlibUnittest SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc SWIFT_MODULE_DEPENDS_WINDOWS MSVCRT diff --git a/stdlib/private/StdlibCollectionUnittest/CMakeLists.txt b/stdlib/private/StdlibCollectionUnittest/CMakeLists.txt index e107820f52e72..0efaf5ab37f0b 100644 --- a/stdlib/private/StdlibCollectionUnittest/CMakeLists.txt +++ b/stdlib/private/StdlibCollectionUnittest/CMakeLists.txt @@ -21,6 +21,7 @@ add_swift_target_library(swiftStdlibCollectionUnittest ${SWIFT_STDLIB_LIBRARY_BU SWIFT_MODULE_DEPENDS StdlibUnittest SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc SWIFT_MODULE_DEPENDS_WINDOWS MSVCRT diff --git a/stdlib/private/StdlibUnicodeUnittest/CMakeLists.txt b/stdlib/private/StdlibUnicodeUnittest/CMakeLists.txt index 810aa81860744..20aaa0a81bfa8 100644 --- a/stdlib/private/StdlibUnicodeUnittest/CMakeLists.txt +++ b/stdlib/private/StdlibUnicodeUnittest/CMakeLists.txt @@ -9,6 +9,7 @@ add_swift_target_library(swiftStdlibUnicodeUnittest ${SWIFT_STDLIB_LIBRARY_BUILD SWIFT_MODULE_DEPENDS StdlibUnittest SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc SWIFT_MODULE_DEPENDS_WINDOWS MSVCRT diff --git a/stdlib/private/StdlibUnittest/CMakeLists.txt b/stdlib/private/StdlibUnittest/CMakeLists.txt index 710ccede83171..d1f61270a89b6 100644 --- a/stdlib/private/StdlibUnittest/CMakeLists.txt +++ b/stdlib/private/StdlibUnittest/CMakeLists.txt @@ -38,6 +38,7 @@ add_swift_target_library(swiftStdlibUnittest ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} SWIFT_MODULE_DEPENDS_WATCHOS Darwin Foundation SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc SWIFT_MODULE_DEPENDS_WINDOWS MSVCRT WinSDK diff --git a/stdlib/private/SwiftPrivateLibcExtras/CMakeLists.txt b/stdlib/private/SwiftPrivateLibcExtras/CMakeLists.txt index 22979ebc7ce8b..b923d3f1d5e99 100644 --- a/stdlib/private/SwiftPrivateLibcExtras/CMakeLists.txt +++ b/stdlib/private/SwiftPrivateLibcExtras/CMakeLists.txt @@ -15,6 +15,7 @@ add_swift_target_library(swiftSwiftPrivateLibcExtras ${SWIFT_STDLIB_LIBRARY_BUIL SWIFT_MODULE_DEPENDS_WATCHOS Darwin SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc SWIFT_MODULE_DEPENDS_WINDOWS MSVCRT WinSDK diff --git a/stdlib/private/SwiftPrivateThreadExtras/CMakeLists.txt b/stdlib/private/SwiftPrivateThreadExtras/CMakeLists.txt index 4e9b794a716c3..76487eb500314 100644 --- a/stdlib/private/SwiftPrivateThreadExtras/CMakeLists.txt +++ b/stdlib/private/SwiftPrivateThreadExtras/CMakeLists.txt @@ -12,11 +12,12 @@ add_swift_target_library(swiftSwiftPrivateThreadExtras ${SWIFT_STDLIB_LIBRARY_BU SWIFT_MODULE_DEPENDS_WATCHOS Darwin SWIFT_MODULE_DEPENDS_LINUX Glibc SWIFT_MODULE_DEPENDS_FREEBSD Glibc + SWIFT_MODULE_DEPENDS_OPENBSD Glibc SWIFT_MODULE_DEPENDS_CYGWIN Glibc SWIFT_MODULE_DEPENDS_HAIKU Glibc SWIFT_MODULE_DEPENDS_WINDOWS MSVCRT WinSDK SWIFT_COMPILE_FLAGS ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS} - TARGET_SDKS ALL_APPLE_PLATFORMS CYGWIN FREEBSD HAIKU LINUX WINDOWS ANDROID + TARGET_SDKS ALL_APPLE_PLATFORMS CYGWIN FREEBSD OPENBSD HAIKU LINUX WINDOWS ANDROID INSTALL_IN_COMPONENT stdlib-experimental DARWIN_INSTALL_NAME_DIR "${SWIFT_DARWIN_STDLIB_PRIVATE_INSTALL_NAME_DIR}") diff --git a/stdlib/public/Platform/CMakeLists.txt b/stdlib/public/Platform/CMakeLists.txt index 8c9d8ab212c83..8ded40c5791ff 100644 --- a/stdlib/public/Platform/CMakeLists.txt +++ b/stdlib/public/Platform/CMakeLists.txt @@ -44,7 +44,7 @@ add_swift_target_library(swiftGlibc ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_O ${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS} ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS} LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}" - TARGET_SDKS ANDROID CYGWIN FREEBSD LINUX HAIKU + TARGET_SDKS ANDROID CYGWIN FREEBSD OPENBSD LINUX HAIKU INSTALL_IN_COMPONENT sdk-overlay DEPENDS glibc_modulemap) @@ -68,6 +68,7 @@ set(glibc_modulemap_target_list) foreach(sdk ${SWIFT_SDKS}) if(NOT "${sdk}" STREQUAL "LINUX" AND NOT "${sdk}" STREQUAL "FREEBSD" AND + NOT "${sdk}" STREQUAL "OPENBSD" AND NOT "${sdk}" STREQUAL "ANDROID" AND NOT "${sdk}" STREQUAL "CYGWIN" AND NOT "${sdk}" STREQUAL "HAIKU") diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index d721eed76cd57..3e1e86d1d19a3 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -92,6 +92,7 @@ function(get_test_dependencies SDK result_var_name) ("${SDK}" STREQUAL "LINUX") OR ("${SDK}" STREQUAL "CYGWIN") OR ("${SDK}" STREQUAL "FREEBSD") OR + ("${SDK}" STREQUAL "OPENBSD") OR ("${SDK}" STREQUAL "ANDROID") OR ("${SDK}" STREQUAL "WINDOWS") OR ("${SDK}" STREQUAL "HAIKU")) diff --git a/utils/build-script-impl b/utils/build-script-impl index 6d4d84df7568f..86ca58f69a6ea 100755 --- a/utils/build-script-impl +++ b/utils/build-script-impl @@ -404,6 +404,7 @@ function verify_host_is_supported() { local host="$1" case ${host} in freebsd-x86_64 \ + | openbsd-amd64 \ | cygwin-x86_64 \ | haiku-x86_64 \ | linux-x86_64 \ diff --git a/utils/swift_build_support/swift_build_support/targets.py b/utils/swift_build_support/swift_build_support/targets.py index 18721d60eb0dd..5cfae070d3f56 100644 --- a/utils/swift_build_support/swift_build_support/targets.py +++ b/utils/swift_build_support/swift_build_support/targets.py @@ -150,6 +150,8 @@ class StdlibDeploymentTarget(object): FreeBSD = Platform("freebsd", archs=["x86_64"]) + OpenBSD = Platform("openbsd", archs=["amd64"]) + Cygwin = Platform("cygwin", archs=["x86_64"]) Android = AndroidPlatform("android", archs=["armv7", "aarch64"]) @@ -166,6 +168,7 @@ class StdlibDeploymentTarget(object): AppleWatch, AppleWatchSimulator, Linux, FreeBSD, + OpenBSD, Cygwin, Android, Windows, @@ -221,6 +224,10 @@ def host_target(): if machine == 'amd64': return StdlibDeploymentTarget.FreeBSD.x86_64 + elif system == 'OpenBSD': + if machine == 'amd64': + return StdlibDeploymentTarget.OpenBSD.amd64 + elif system == 'CYGWIN_NT-10.0': if machine == 'x86_64': return StdlibDeploymentTarget.Cygwin.x86_64 diff --git a/utils/swift_build_support/swift_build_support/toolchain.py b/utils/swift_build_support/swift_build_support/toolchain.py index b7c8247374e2a..c2874c6a4997a 100644 --- a/utils/swift_build_support/swift_build_support/toolchain.py +++ b/utils/swift_build_support/swift_build_support/toolchain.py @@ -176,6 +176,11 @@ def _release_date(self): return int(out) +class OpenBSD(GenericUnix): + def __init__(self): + super(OpenBSD, self).__init__(['']) + + class Cygwin(Linux): # Currently, Cygwin is considered as the same as Linux. pass @@ -203,6 +208,8 @@ def host_toolchain(**kwargs): return Linux() elif sys == 'FreeBSD': return FreeBSD() + elif sys == 'OpenBSD': + return OpenBSD() elif sys.startswith('CYGWIN'): return Cygwin() elif sys == 'Windows':