diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 2557ab1c..596d7d04 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -17,6 +17,9 @@ jobs: container: swift:${{ matrix.swift_version }}-jammy steps: - uses: actions/checkout@v4 + - name: Swift version + run: | + which swift && swift --version - name: Building and running tests in debug mode with coverage run: | swift test \ diff --git a/AG/Sources/Headers/AGBase.hpp b/AG/Sources/Headers/AGBase.hpp index fe77a1a6..a7864869 100644 --- a/AG/Sources/Headers/AGBase.hpp +++ b/AG/Sources/Headers/AGBase.hpp @@ -43,7 +43,9 @@ #include #include +#ifndef TARGET_OS_DARWIN #define TARGET_OS_DARWIN TARGET_OS_MAC +#endif #define AG_OPTIONS CF_OPTIONS #define AG_EXTERN_C_BEGIN CF_EXTERN_C_BEGIN #define AG_EXTERN_C_END CF_EXTERN_C_END diff --git a/Package.resolved b/Package.resolved deleted file mode 100644 index 7d3980f1..00000000 --- a/Package.resolved +++ /dev/null @@ -1,14 +0,0 @@ -{ - "pins" : [ - { - "identity" : "openfoundation", - "kind" : "remoteSourceControl", - "location" : "https://github.com/OpenSwiftUIProject/OpenFoundation", - "state" : { - "revision" : "cd2cdb300d53e3e68fda8b690a703a7c5096d9d0", - "version" : "0.0.2" - } - } - ], - "version" : 2 -} diff --git a/Package.swift b/Package.swift index eea2ca5a..75006ce9 100644 --- a/Package.swift +++ b/Package.swift @@ -4,9 +4,6 @@ import Foundation import PackageDescription -// https://github.com/llvm/llvm-project/issues/48757 -let clangEnumFixSetting = CSetting.unsafeFlags(["-Wno-elaborated-enum-base"], .when(platforms: [.linux])) - let openGraphShimsTarget = Target.target( name: "OpenGraphShims" ) @@ -22,6 +19,11 @@ let openGraphCompatibilityTestTarget = Target.testTarget( exclude: ["README.md"] ) +let swiftBinPath = Context.environment["_"] ?? "" +let swiftBinURL = URL(fileURLWithPath: swiftBinPath) +let SDKPath = swiftBinURL.deletingLastPathComponent().deletingLastPathComponent().deletingLastPathComponent().path +let includePath = SDKPath.appending("/usr/lib/swift_static") + let package = Package( name: "OpenGraph", platforms: [ @@ -36,24 +38,20 @@ let package = Package( .library(name: "OpenGraphShims", targets: ["OpenGraphShims"]), .library(name: "OpenGraph", targets: ["OpenGraph"]), ], - dependencies: [ - .package(url: "https://github.com/OpenSwiftUIProject/OpenFoundation", from: "0.0.2"), - ], targets: [ // FIXME: Merge into one target // OpenGraph is a C++ & Swift mix target. // The SwiftPM support for such usage is still in progress. .target( name: "_OpenGraph", - dependencies: [ - .product(name: "OpenFoundation", package: "OpenFoundation"), - ], - cSettings: [clangEnumFixSetting] + cxxSettings: [ + .unsafeFlags(["-I", includePath], .when(platforms: .nonDarwinPlatforms)), + .define("__COREFOUNDATION_FORSWIFTFOUNDATIONONLY__", to: "1", .when(platforms: .nonDarwinPlatforms)), + ] ), .target( name: "OpenGraph", - dependencies: ["_OpenGraph"], - cSettings: [clangEnumFixSetting] + dependencies: ["_OpenGraph"] ), openGraphShimsTarget, openGraphTestTarget, @@ -63,7 +61,7 @@ let package = Package( ) func envEnable(_ key: String, default defaultValue: Bool = false) -> Bool { - guard let value = ProcessInfo.processInfo.environment[key] else { + guard let value = Context.environment[key] else { return defaultValue } if value == "1" { @@ -119,3 +117,9 @@ if swiftTestingCondition { swiftSettings.append(.define("OPENGRAPH_SWIFT_TESTING")) openGraphTestTarget.swiftSettings = swiftSettings } + +extension [Platform] { + static var nonDarwinPlatforms: [Platform] { + [.linux, .android, .wasi, .openbsd, .windows] + } +} diff --git a/Sources/_OpenGraph/include/OGBase.hpp b/Sources/_OpenGraph/include/OGBase.hpp index 7347dd62..9a8b3709 100644 --- a/Sources/_OpenGraph/include/OGBase.hpp +++ b/Sources/_OpenGraph/include/OGBase.hpp @@ -41,10 +41,15 @@ #define OG_SWIFT_STRUCT __attribute__((swift_wrapper(struct))) -#ifdef __APPLE__ #include +#ifdef __APPLE__ #include +#ifndef TARGET_OS_DARWIN #define TARGET_OS_DARWIN TARGET_OS_MAC +#endif +#else +#include +#endif #define OG_OPTIONS CF_OPTIONS #define OG_EXTERN_C_BEGIN CF_EXTERN_C_BEGIN #define OG_EXTERN_C_END CF_EXTERN_C_END @@ -53,15 +58,4 @@ #define OG_EXPORT CF_EXPORT #define OG_REFINED_FOR_SWIFT CF_REFINED_FOR_SWIFT #define OG_SWIFT_NAME CF_SWIFT_NAME -#else -#include -#define OG_OPTIONS OF_OPTIONS -#define OG_EXTERN_C_BEGIN OF_EXTERN_C_BEGIN -#define OG_EXTERN_C_END OF_EXTERN_C_END -#define OG_ASSUME_NONNULL_BEGIN OF_ASSUME_NONNULL_BEGIN -#define OG_ASSUME_NONNULL_END OF_ASSUME_NONNULL_END -#define OG_EXPORT OF_EXPORT -#define OG_REFINED_FOR_SWIFT OF_REFINED_FOR_SWIFT -#define OG_SWIFT_NAME OF_SWIFT_NAME -#endif /* __APPLE__ */ #endif /* OGBase_h */