Skip to content

Commit 22b0526

Browse files
authored
Merge pull request #30082 from 3405691582/OpenBSD_Port_Build
Build system recognizes OpenBSD.
2 parents 0c9c901 + f8d0174 commit 22b0526

File tree

15 files changed

+47
-3
lines changed

15 files changed

+47
-3
lines changed

CMakeLists.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,8 @@ else()
570570
set(SWIFT_HOST_VARIANT_SDK_default "LINUX")
571571
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
572572
set(SWIFT_HOST_VARIANT_SDK_default "FREEBSD")
573+
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
574+
set(SWIFT_HOST_VARIANT_SDK_default "OPENBSD")
573575
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "CYGWIN")
574576
set(SWIFT_HOST_VARIANT_SDK_default "CYGWIN")
575577
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
@@ -673,6 +675,15 @@ elseif("${SWIFT_HOST_VARIANT_SDK}" STREQUAL "FREEBSD")
673675
set(SWIFT_PRIMARY_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK}")
674676
set(SWIFT_PRIMARY_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH}")
675677

678+
elseif("${SWIFT_HOST_VARIANT_SDK}" STREQUAL "OPENBSD")
679+
680+
set(SWIFT_HOST_VARIANT "openbsd" CACHE STRING
681+
"Deployment OS for Swift host tools (the compiler) [openbsd].")
682+
683+
configure_sdk_unix("OpenBSD" "${SWIFT_HOST_VARIANT_ARCH}")
684+
set(SWIFT_PRIMARY_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK}")
685+
set(SWIFT_PRIMARY_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH}")
686+
676687
elseif("${SWIFT_HOST_VARIANT_SDK}" STREQUAL "CYGWIN")
677688

678689
set(SWIFT_HOST_VARIANT "cygwin" CACHE STRING

cmake/modules/FindICU.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ foreach(MODULE ${ICU_FIND_COMPONENTS})
2424
HINTS ${PC_ICU_${MODULE}_LIBRARY_DIRS})
2525
endforeach()
2626

27-
foreach(sdk ANDROID;FREEBSD;LINUX;WINDOWS;HAIKU)
27+
foreach(sdk ANDROID;FREEBSD;OPENBSD;LINUX;WINDOWS;HAIKU)
2828
foreach(MODULE ${ICU_FIND_COMPONENTS})
2929
string(TOUPPER "${MODULE}" MODULE)
3030
if("${SWIFT_${sdk}_${SWIFT_HOST_VARIANT_ARCH}_ICU_${MODULE}_INCLUDE}" STREQUAL "")

cmake/modules/SwiftConfigureSDK.cmake

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,15 @@ macro(configure_sdk_unix name architectures)
335335
message(STATUS "FreeBSD Version: ${freebsd_system_version}")
336336

337337
set(SWIFT_SDK_FREEBSD_ARCH_x86_64_TRIPLE "x86_64-unknown-freebsd${freebsd_system_version}")
338+
elseif("${prefix}" STREQUAL "OPENBSD")
339+
if(NOT arch STREQUAL amd64)
340+
message(FATAL_ERROR "unsupported arch for OpenBSD: ${arch}")
341+
endif()
342+
343+
string(REPLACE "[-].*" "" openbsd_system_version ${CMAKE_SYSTEM_VERSION})
344+
message(STATUS "OpenBSD Version: ${openbsd_system_version}")
345+
346+
set(SWIFT_SDK_OPENBSD_ARCH_amd64_TRIPLE "amd64-unknown-openbsd${openbsd_system_version}")
338347
elseif("${prefix}" STREQUAL "CYGWIN")
339348
if(NOT arch STREQUAL x86_64)
340349
message(FATAL_ERROR "unsupported arch for cygwin: ${arch}")

cmake/modules/SwiftSetIfArchBitness.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ function(set_if_arch_bitness var_name)
1515
"${SIA_ARCH}" STREQUAL "armv7s")
1616
set("${var_name}" "${SIA_CASE_32_BIT}" PARENT_SCOPE)
1717
elseif("${SIA_ARCH}" STREQUAL "x86_64" OR
18+
"${SIA_ARCH}" STREQUAL "amd64" OR
1819
"${SIA_ARCH}" STREQUAL "arm64" OR
1920
"${SIA_ARCH}" STREQUAL "arm64e" OR
2021
"${SIA_ARCH}" STREQUAL "aarch64" OR

stdlib/private/RuntimeUnittest/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ add_swift_target_library(swiftRuntimeUnittest ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES
1010
SWIFT_MODULE_DEPENDS StdlibUnittest
1111
SWIFT_MODULE_DEPENDS_LINUX Glibc
1212
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
13+
SWIFT_MODULE_DEPENDS_OPENBSD Glibc
1314
SWIFT_MODULE_DEPENDS_CYGWIN Glibc
1415
SWIFT_MODULE_DEPENDS_HAIKU Glibc
1516
SWIFT_MODULE_DEPENDS_WINDOWS MSVCRT

stdlib/private/StdlibCollectionUnittest/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ add_swift_target_library(swiftStdlibCollectionUnittest ${SWIFT_STDLIB_LIBRARY_BU
2121
SWIFT_MODULE_DEPENDS StdlibUnittest
2222
SWIFT_MODULE_DEPENDS_LINUX Glibc
2323
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
24+
SWIFT_MODULE_DEPENDS_OPENBSD Glibc
2425
SWIFT_MODULE_DEPENDS_CYGWIN Glibc
2526
SWIFT_MODULE_DEPENDS_HAIKU Glibc
2627
SWIFT_MODULE_DEPENDS_WINDOWS MSVCRT

stdlib/private/StdlibUnicodeUnittest/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ add_swift_target_library(swiftStdlibUnicodeUnittest ${SWIFT_STDLIB_LIBRARY_BUILD
99
SWIFT_MODULE_DEPENDS StdlibUnittest
1010
SWIFT_MODULE_DEPENDS_LINUX Glibc
1111
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
12+
SWIFT_MODULE_DEPENDS_OPENBSD Glibc
1213
SWIFT_MODULE_DEPENDS_CYGWIN Glibc
1314
SWIFT_MODULE_DEPENDS_HAIKU Glibc
1415
SWIFT_MODULE_DEPENDS_WINDOWS MSVCRT

stdlib/private/StdlibUnittest/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ add_swift_target_library(swiftStdlibUnittest ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES}
3838
SWIFT_MODULE_DEPENDS_WATCHOS Darwin Foundation
3939
SWIFT_MODULE_DEPENDS_LINUX Glibc
4040
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
41+
SWIFT_MODULE_DEPENDS_OPENBSD Glibc
4142
SWIFT_MODULE_DEPENDS_CYGWIN Glibc
4243
SWIFT_MODULE_DEPENDS_HAIKU Glibc
4344
SWIFT_MODULE_DEPENDS_WINDOWS MSVCRT WinSDK

stdlib/private/SwiftPrivateLibcExtras/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ add_swift_target_library(swiftSwiftPrivateLibcExtras ${SWIFT_STDLIB_LIBRARY_BUIL
1515
SWIFT_MODULE_DEPENDS_WATCHOS Darwin
1616
SWIFT_MODULE_DEPENDS_LINUX Glibc
1717
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
18+
SWIFT_MODULE_DEPENDS_OPENBSD Glibc
1819
SWIFT_MODULE_DEPENDS_CYGWIN Glibc
1920
SWIFT_MODULE_DEPENDS_HAIKU Glibc
2021
SWIFT_MODULE_DEPENDS_WINDOWS MSVCRT WinSDK

stdlib/private/SwiftPrivateThreadExtras/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@ add_swift_target_library(swiftSwiftPrivateThreadExtras ${SWIFT_STDLIB_LIBRARY_BU
1212
SWIFT_MODULE_DEPENDS_WATCHOS Darwin
1313
SWIFT_MODULE_DEPENDS_LINUX Glibc
1414
SWIFT_MODULE_DEPENDS_FREEBSD Glibc
15+
SWIFT_MODULE_DEPENDS_OPENBSD Glibc
1516
SWIFT_MODULE_DEPENDS_CYGWIN Glibc
1617
SWIFT_MODULE_DEPENDS_HAIKU Glibc
1718
SWIFT_MODULE_DEPENDS_WINDOWS MSVCRT WinSDK
1819
SWIFT_COMPILE_FLAGS ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
19-
TARGET_SDKS ALL_APPLE_PLATFORMS CYGWIN FREEBSD HAIKU LINUX WINDOWS ANDROID
20+
TARGET_SDKS ALL_APPLE_PLATFORMS CYGWIN FREEBSD OPENBSD HAIKU LINUX WINDOWS ANDROID
2021
INSTALL_IN_COMPONENT stdlib-experimental
2122
DARWIN_INSTALL_NAME_DIR "${SWIFT_DARWIN_STDLIB_PRIVATE_INSTALL_NAME_DIR}")
2223

stdlib/public/Platform/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ add_swift_target_library(swiftGlibc ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_O
4444
${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}
4545
${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
4646
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
47-
TARGET_SDKS ANDROID CYGWIN FREEBSD LINUX HAIKU
47+
TARGET_SDKS ANDROID CYGWIN FREEBSD OPENBSD LINUX HAIKU
4848
INSTALL_IN_COMPONENT sdk-overlay
4949
DEPENDS glibc_modulemap)
5050

@@ -68,6 +68,7 @@ set(glibc_modulemap_target_list)
6868
foreach(sdk ${SWIFT_SDKS})
6969
if(NOT "${sdk}" STREQUAL "LINUX" AND
7070
NOT "${sdk}" STREQUAL "FREEBSD" AND
71+
NOT "${sdk}" STREQUAL "OPENBSD" AND
7172
NOT "${sdk}" STREQUAL "ANDROID" AND
7273
NOT "${sdk}" STREQUAL "CYGWIN" AND
7374
NOT "${sdk}" STREQUAL "HAIKU")

test/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ function(get_test_dependencies SDK result_var_name)
9292
("${SDK}" STREQUAL "LINUX") OR
9393
("${SDK}" STREQUAL "CYGWIN") OR
9494
("${SDK}" STREQUAL "FREEBSD") OR
95+
("${SDK}" STREQUAL "OPENBSD") OR
9596
("${SDK}" STREQUAL "ANDROID") OR
9697
("${SDK}" STREQUAL "WINDOWS") OR
9798
("${SDK}" STREQUAL "HAIKU"))

utils/build-script-impl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,7 @@ function verify_host_is_supported() {
404404
local host="$1"
405405
case ${host} in
406406
freebsd-x86_64 \
407+
| openbsd-amd64 \
407408
| cygwin-x86_64 \
408409
| haiku-x86_64 \
409410
| linux-x86_64 \

utils/swift_build_support/swift_build_support/targets.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,8 @@ class StdlibDeploymentTarget(object):
150150

151151
FreeBSD = Platform("freebsd", archs=["x86_64"])
152152

153+
OpenBSD = Platform("openbsd", archs=["amd64"])
154+
153155
Cygwin = Platform("cygwin", archs=["x86_64"])
154156

155157
Android = AndroidPlatform("android", archs=["armv7", "aarch64"])
@@ -166,6 +168,7 @@ class StdlibDeploymentTarget(object):
166168
AppleWatch, AppleWatchSimulator,
167169
Linux,
168170
FreeBSD,
171+
OpenBSD,
169172
Cygwin,
170173
Android,
171174
Windows,
@@ -221,6 +224,10 @@ def host_target():
221224
if machine == 'amd64':
222225
return StdlibDeploymentTarget.FreeBSD.x86_64
223226

227+
elif system == 'OpenBSD':
228+
if machine == 'amd64':
229+
return StdlibDeploymentTarget.OpenBSD.amd64
230+
224231
elif system == 'CYGWIN_NT-10.0':
225232
if machine == 'x86_64':
226233
return StdlibDeploymentTarget.Cygwin.x86_64

utils/swift_build_support/swift_build_support/toolchain.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,11 @@ def _release_date(self):
176176
return int(out)
177177

178178

179+
class OpenBSD(GenericUnix):
180+
def __init__(self):
181+
super(OpenBSD, self).__init__([''])
182+
183+
179184
class Cygwin(Linux):
180185
# Currently, Cygwin is considered as the same as Linux.
181186
pass
@@ -203,6 +208,8 @@ def host_toolchain(**kwargs):
203208
return Linux()
204209
elif sys == 'FreeBSD':
205210
return FreeBSD()
211+
elif sys == 'OpenBSD':
212+
return OpenBSD()
206213
elif sys.startswith('CYGWIN'):
207214
return Cygwin()
208215
elif sys == 'Windows':

0 commit comments

Comments
 (0)