Skip to content

Commit 57bbf14

Browse files
authored
Changes to support OpenBSD. (apple#52)
* [cmake] Support amd64 architecture name. On OpenBSD, "x86_64" is called "amd64", and therefore recognition of this name is required for the cmake build. * [cmake] Add missing file. This is required since, for example, `Deque+Extras` requires `_withContiguousStorageIfAvailable_SR14663`. * ManagedBuffer.capacity is unavailable on OpenBSD. ManagedBuffer requires nonstandard API to implement `capacity` and subsequently is unavailable on OpenBSD. For portability, just use `minimumCapacity` on this platform.
1 parent d45e634 commit 57bbf14

File tree

4 files changed

+24
-6
lines changed

4 files changed

+24
-6
lines changed

Sources/DequeModule/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ add_library(DequeModule
1212
_DequeBufferHeader.swift
1313
_DequeSlot.swift
1414
_UnsafeWrappedBuffer.swift
15+
Compatibility.swift
1516
Deque._Storage.swift
1617
Deque._UnsafeHandle.swift
1718
Deque.swift

Sources/DequeModule/Deque._Storage.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,13 @@ extension Deque._Storage {
4848
internal init(minimumCapacity: Int) {
4949
let object = _DequeBuffer<Element>.create(
5050
minimumCapacity: minimumCapacity,
51-
makingHeaderWith: { object in
52-
_DequeBufferHeader(capacity: object.capacity, count: 0, startSlot: .zero)
51+
makingHeaderWith: {
52+
#if os(OpenBSD)
53+
let capacity = minimumCapacity
54+
#else
55+
let capacity = $0.capacity
56+
#endif
57+
return _DequeBufferHeader(capacity: capacity, count: 0, startSlot: .zero)
5358
})
5459
self.init(_buffer: _Buffer(unsafeBufferObject: object))
5560
}

Sources/DequeModule/Deque._UnsafeHandle.swift

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,13 @@ extension Deque._UnsafeHandle {
298298
let object = _DequeBuffer<Element>.create(
299299
minimumCapacity: minimumCapacity,
300300
makingHeaderWith: {
301-
_DequeBufferHeader(
302-
capacity: $0.capacity,
301+
#if os(OpenBSD)
302+
let capacity = minimumCapacity
303+
#else
304+
let capacity = $0.capacity
305+
#endif
306+
return _DequeBufferHeader(
307+
capacity: capacity,
303308
count: count,
304309
startSlot: .zero)
305310
})
@@ -327,8 +332,13 @@ extension Deque._UnsafeHandle {
327332
let object = _DequeBuffer<Element>.create(
328333
minimumCapacity: minimumCapacity,
329334
makingHeaderWith: {
330-
_DequeBufferHeader(
331-
capacity: $0.capacity,
335+
#if os(OpenBSD)
336+
let capacity = minimumCapacity
337+
#else
338+
let capacity = $0.capacity
339+
#endif
340+
return _DequeBufferHeader(
341+
capacity: capacity,
332342
count: count,
333343
startSlot: .zero)
334344
})

cmake/modules/SwiftSupport.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ function(get_swift_host_arch result_var_name)
3131
set("${result_var_name}" "armv7" PARENT_SCOPE)
3232
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7-a")
3333
set("${result_var_name}" "armv7" PARENT_SCOPE)
34+
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "amd64")
35+
set("${result_var_name}" "amd64" PARENT_SCOPE)
3436
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64")
3537
set("${result_var_name}" "x86_64" PARENT_SCOPE)
3638
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "IA64")

0 commit comments

Comments
 (0)