From 8547bda445dd551c02a038f0c0b64c3fd0742d01 Mon Sep 17 00:00:00 2001 From: Kyle Date: Tue, 6 Feb 2024 00:24:03 +0800 Subject: [PATCH 1/5] Remove OpenFoundation dependency --- AG/Sources/Headers/AGBase.hpp | 1 - Package.resolved | 14 -------------- Package.swift | 21 ++++++++++++++------- Sources/_OpenGraph/include/OGBase.hpp | 17 ++++------------- 4 files changed, 18 insertions(+), 35 deletions(-) delete mode 100644 Package.resolved diff --git a/AG/Sources/Headers/AGBase.hpp b/AG/Sources/Headers/AGBase.hpp index fe77a1a6..2a7c346b 100644 --- a/AG/Sources/Headers/AGBase.hpp +++ b/AG/Sources/Headers/AGBase.hpp @@ -43,7 +43,6 @@ #include #include -#define TARGET_OS_DARWIN TARGET_OS_MAC #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..bc485fb8 100644 --- a/Package.swift +++ b/Package.swift @@ -22,6 +22,11 @@ let openGraphCompatibilityTestTarget = Target.testTarget( exclude: ["README.md"] ) +let swiftBinPath = Context.environment["_"] ?? "" +let swiftBinURL = URL(fileURLWithPath: swiftBinPath) +let SDKPath = swiftBinURL.deletingLastPathComponent().deletingLastPathComponent().path +let includePath = SDKPath.appending("/lib/swift_static") + let package = Package( name: "OpenGraph", platforms: [ @@ -36,19 +41,21 @@ 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, + .unsafeFlags(["-I", includePath]), + .define("__COREFOUNDATION_FORSWIFTFOUNDATIONONLY__", to: "1"), ], - cSettings: [clangEnumFixSetting] + cxxSettings: [ + .unsafeFlags(["-I", "/home/kyle/.swiftbox/toolchain/swift-5.9.2/usr/lib/swift_static"]), + .define("__COREFOUNDATION_FORSWIFTFOUNDATIONONLY__", to: "1"), + ] ), .target( name: "OpenGraph", @@ -63,7 +70,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" { diff --git a/Sources/_OpenGraph/include/OGBase.hpp b/Sources/_OpenGraph/include/OGBase.hpp index 7347dd62..26940862 100644 --- a/Sources/_OpenGraph/include/OGBase.hpp +++ b/Sources/_OpenGraph/include/OGBase.hpp @@ -41,10 +41,12 @@ #define OG_SWIFT_STRUCT __attribute__((swift_wrapper(struct))) -#ifdef __APPLE__ #include +#ifdef __APPLE__ #include -#define TARGET_OS_DARWIN TARGET_OS_MAC +#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 +55,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 */ From 060939f90064880b09e09f6051ac756caffefcea Mon Sep 17 00:00:00 2001 From: Kyle Date: Tue, 6 Feb 2024 00:32:11 +0800 Subject: [PATCH 2/5] Fix macro issue on Darwin platform --- AG/Sources/Headers/AGBase.hpp | 3 +++ Sources/_OpenGraph/include/OGBase.hpp | 3 +++ 2 files changed, 6 insertions(+) diff --git a/AG/Sources/Headers/AGBase.hpp b/AG/Sources/Headers/AGBase.hpp index 2a7c346b..a7864869 100644 --- a/AG/Sources/Headers/AGBase.hpp +++ b/AG/Sources/Headers/AGBase.hpp @@ -43,6 +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/Sources/_OpenGraph/include/OGBase.hpp b/Sources/_OpenGraph/include/OGBase.hpp index 26940862..9a8b3709 100644 --- a/Sources/_OpenGraph/include/OGBase.hpp +++ b/Sources/_OpenGraph/include/OGBase.hpp @@ -44,6 +44,9 @@ #include #ifdef __APPLE__ #include +#ifndef TARGET_OS_DARWIN +#define TARGET_OS_DARWIN TARGET_OS_MAC +#endif #else #include #endif From d7f0b7605223634fdf4a544c795e16e27e3cf126 Mon Sep 17 00:00:00 2001 From: Kyle Date: Tue, 6 Feb 2024 00:59:18 +0800 Subject: [PATCH 3/5] Fix Ubuntu CI build issue --- .github/workflows/ubuntu.yml | 3 +++ Package.swift | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) 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/Package.swift b/Package.swift index bc485fb8..f8bd5544 100644 --- a/Package.swift +++ b/Package.swift @@ -24,8 +24,8 @@ let openGraphCompatibilityTestTarget = Target.testTarget( let swiftBinPath = Context.environment["_"] ?? "" let swiftBinURL = URL(fileURLWithPath: swiftBinPath) -let SDKPath = swiftBinURL.deletingLastPathComponent().deletingLastPathComponent().path -let includePath = SDKPath.appending("/lib/swift_static") +let SDKPath = swiftBinURL.deletingLastPathComponent().deletingLastPathComponent().deletingLastPathComponent().path +let includePath = SDKPath.appending("/usr/lib/swift_static") let package = Package( name: "OpenGraph", @@ -53,7 +53,7 @@ let package = Package( .define("__COREFOUNDATION_FORSWIFTFOUNDATIONONLY__", to: "1"), ], cxxSettings: [ - .unsafeFlags(["-I", "/home/kyle/.swiftbox/toolchain/swift-5.9.2/usr/lib/swift_static"]), + .unsafeFlags(["-I", includePath]), .define("__COREFOUNDATION_FORSWIFTFOUNDATIONONLY__", to: "1"), ] ), From a17e1b8391126804068eb6e2d911f7f39928cbc4 Mon Sep 17 00:00:00 2001 From: Kyle Date: Tue, 6 Feb 2024 00:59:35 +0800 Subject: [PATCH 4/5] Remove clangEnumFixSetting --- Package.swift | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/Package.swift b/Package.swift index f8bd5544..731344ce 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" ) @@ -47,11 +44,6 @@ let package = Package( // The SwiftPM support for such usage is still in progress. .target( name: "_OpenGraph", - cSettings: [ - clangEnumFixSetting, - .unsafeFlags(["-I", includePath]), - .define("__COREFOUNDATION_FORSWIFTFOUNDATIONONLY__", to: "1"), - ], cxxSettings: [ .unsafeFlags(["-I", includePath]), .define("__COREFOUNDATION_FORSWIFTFOUNDATIONONLY__", to: "1"), @@ -59,8 +51,7 @@ let package = Package( ), .target( name: "OpenGraph", - dependencies: ["_OpenGraph"], - cSettings: [clangEnumFixSetting] + dependencies: ["_OpenGraph"] ), openGraphShimsTarget, openGraphTestTarget, From 57c1da74fd56d8477948dff75256f2024daddb8b Mon Sep 17 00:00:00 2001 From: Kyle Date: Tue, 6 Feb 2024 01:03:19 +0800 Subject: [PATCH 5/5] Update Setting condition --- Package.swift | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Package.swift b/Package.swift index 731344ce..75006ce9 100644 --- a/Package.swift +++ b/Package.swift @@ -45,8 +45,8 @@ let package = Package( .target( name: "_OpenGraph", cxxSettings: [ - .unsafeFlags(["-I", includePath]), - .define("__COREFOUNDATION_FORSWIFTFOUNDATIONONLY__", to: "1"), + .unsafeFlags(["-I", includePath], .when(platforms: .nonDarwinPlatforms)), + .define("__COREFOUNDATION_FORSWIFTFOUNDATIONONLY__", to: "1", .when(platforms: .nonDarwinPlatforms)), ] ), .target( @@ -117,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] + } +}