diff --git a/Sources/OpenSwiftUIShims/ProtocolDescriptor.c b/Sources/OpenSwiftUIShims/ProtocolDescriptor.c index 7336cbf..282fa2c 100644 --- a/Sources/OpenSwiftUIShims/ProtocolDescriptor.c +++ b/Sources/OpenSwiftUIShims/ProtocolDescriptor.c @@ -1,11 +1,11 @@ // -// ProtocolDescriptor.m +// ProtocolDescriptor.c // // // Created by Kyle on 2023/10/3. // -#import "ProtocolDescriptor.h" +#include "ProtocolDescriptor.h" OF_EXPORT const void *$s11OpenSwiftUI4ViewMp; diff --git a/Sources/OpenSwiftUIShims/dyld_Private.c b/Sources/OpenSwiftUIShims/dyld_Private.c new file mode 100644 index 0000000..aad8a3b --- /dev/null +++ b/Sources/OpenSwiftUIShims/dyld_Private.c @@ -0,0 +1,14 @@ +// +// dyld_Private.c +// +// +// Created by Kyle on 2023/10/3. +// + +#include "dyld_Private.h" + +#if !TARGET_OS_DARWIN +bool dyld_program_sdk_at_least(dyld_build_version_t version) { + return true; +} +#endif diff --git a/Sources/OpenSwiftUIShims/include/dyld_Private.h b/Sources/OpenSwiftUIShims/include/dyld_Private.h index 3f8a6bf..7e39cdf 100644 --- a/Sources/OpenSwiftUIShims/include/dyld_Private.h +++ b/Sources/OpenSwiftUIShims/include/dyld_Private.h @@ -8,6 +8,7 @@ #ifndef dyld_Private_h #define dyld_Private_h +#include #include #include @@ -18,6 +19,7 @@ typedef struct { uint32_t version; } dyld_build_version_t; +// Always return true on non-Darwin platform extern bool dyld_program_sdk_at_least(dyld_build_version_t version); #endif /* dyld_Private_h */ diff --git a/Tests/OpenSwiftUITests/Shims/LockedPointerTests.swift b/Tests/OpenSwiftUITests/Shims/LockedPointerTests.swift index 9e24f9f..a1dd96c 100644 --- a/Tests/OpenSwiftUITests/Shims/LockedPointerTests.swift +++ b/Tests/OpenSwiftUITests/Shims/LockedPointerTests.swift @@ -53,11 +53,20 @@ final class LockedPointerTests: XCTestCase { } func testLocking() { + #if canImport(os) let pointer = LockedPointer(type: Int.self) XCTAssertEqual(pointer.rawValue.pointee.lock._os_unfair_lock_opaque, 0) pointer.lock() XCTAssertNotEqual(pointer.rawValue.pointee.lock._os_unfair_lock_opaque, 0) pointer.unlock() XCTAssertEqual(pointer.rawValue.pointee.lock._os_unfair_lock_opaque, 0) + #else + let pointer = LockedPointer(type: Int.self) + XCTAssertEqual(pointer.rawValue.pointee.lock, 0) + pointer.lock() + XCTAssertNotEqual(pointer.rawValue.pointee.lock, 0) + pointer.unlock() + XCTAssertEqual(pointer.rawValue.pointee.lock, 0) + #endif } }