Skip to content

Commit f8d0174

Browse files
committed
Build system recognizes OpenBSD.
Commit for CMake and build scripts to recognize OpenBSD. To keep this commit relatively short, this just deals with the rather simple and uncontroversial changes to the build system. Note that OpenBSD calls "x86_64" as "amd64", Since the Swift stdlib will be put in a subdirectory named after ARCH, to ensure the standard library is properly found later, we use the native architecture name for OpenBSD in the build system rather than trying to deal with the difference the other way around.
1 parent f724d1f commit f8d0174

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
@@ -320,6 +320,15 @@ macro(configure_sdk_unix name architectures)
320320
message(STATUS "FreeBSD Version: ${freebsd_system_version}")
321321

322322
set(SWIFT_SDK_FREEBSD_ARCH_x86_64_TRIPLE "x86_64-unknown-freebsd${freebsd_system_version}")
323+
elseif("${prefix}" STREQUAL "OPENBSD")
324+
if(NOT arch STREQUAL amd64)
325+
message(FATAL_ERROR "unsupported arch for OpenBSD: ${arch}")
326+
endif()
327+
328+
string(REPLACE "[-].*" "" openbsd_system_version ${CMAKE_SYSTEM_VERSION})
329+
message(STATUS "OpenBSD Version: ${openbsd_system_version}")
330+
331+
set(SWIFT_SDK_OPENBSD_ARCH_amd64_TRIPLE "amd64-unknown-openbsd${openbsd_system_version}")
323332
elseif("${prefix}" STREQUAL "CYGWIN")
324333
if(NOT arch STREQUAL x86_64)
325334
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)