From 5dc5423c7fcf1e595235a2e97adc1f34e27712bf Mon Sep 17 00:00:00 2001 From: Kyle Date: Mon, 8 Sep 2025 00:39:42 +0800 Subject: [PATCH 1/8] Update Package.swift --- .gitignore | 1 + .spi.yml | 3 +-- Package.swift | 32 ++++++++++++++++---------------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index 0023a53..7630fc5 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ DerivedData/ .swiftpm/configuration/registries.json .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata .netrc +.claude/ diff --git a/.spi.yml b/.spi.yml index f002684..5a8ae3f 100644 --- a/.spi.yml +++ b/.spi.yml @@ -1,5 +1,4 @@ version: 1 builder: configs: - - swift_version: 6.0 - documentation_targets: [OpenRenderBox] + - documentation_targets: [OpenRenderBox] diff --git a/Package.swift b/Package.swift index 06fa67d..9068505 100644 --- a/Package.swift +++ b/Package.swift @@ -66,16 +66,16 @@ if libraryEvolutionCondition { // MARK: - Targets -let openBoxTarget = Target.target( +let openRenderBoxTarget = Target.target( name: "OpenRenderBox", cSettings: sharedCSettings, cxxSettings: sharedCxxSettings ) -let openBoxShimsTarget = Target.target( +let openRenderBoxShimsTarget = Target.target( name: "OpenRenderBoxShims", swiftSettings: sharedSwiftSettings ) -let openBoxTestTarget = Target.testTarget( +let openRenderBoxTestTarget = Target.testTarget( name: "OpenRenderBoxTests", dependencies: [ "OpenRenderBox", @@ -83,7 +83,7 @@ let openBoxTestTarget = Target.testTarget( exclude: ["README.md"], swiftSettings: sharedSwiftSettings ) -let openBoxCompatibilityTestTarget = Target.testTarget( +let openRenderBoxCompatibilityTestTarget = Target.testTarget( name: "OpenRenderBoxCompatibilityTests", dependencies: [ .product(name: "RealModule", package: "swift-numerics"), @@ -114,11 +114,11 @@ let package = Package( .package(url: "https://github.com/apple/swift-numerics", from: "1.0.2"), ], targets: [ - openBoxTarget, - openBoxShimsTarget, + openRenderBoxTarget, + openRenderBoxShimsTarget, - openBoxTestTarget, - openBoxCompatibilityTestTarget, + openRenderBoxTestTarget, + openRenderBoxCompatibilityTestTarget, ], cxxLanguageStandard: .cxx20 ) @@ -135,10 +135,10 @@ if renderBoxCondtion { privateFrameworkRepo = Package.Dependency.package(url: "https://github.com/OpenSwiftUIProject/DarwinPrivateFrameworks.git", branch: "main") } package.dependencies.append(privateFrameworkRepo) - var swiftSettings: [SwiftSetting] = (openBoxShimsTarget.swiftSettings ?? []) + var swiftSettings: [SwiftSetting] = (openRenderBoxShimsTarget.swiftSettings ?? []) swiftSettings.append(.define("OPENRENDERBOX_RENDERBOX")) - openBoxShimsTarget.swiftSettings = swiftSettings - openBoxShimsTarget.dependencies.append( + openRenderBoxShimsTarget.swiftSettings = swiftSettings + openRenderBoxShimsTarget.dependencies.append( .product(name: "RenderBox", package: "DarwinPrivateFrameworks") ) @@ -149,20 +149,20 @@ if renderBoxCondtion { default: nil } } else { - openBoxShimsTarget.dependencies.append("OpenRenderBox") + openRenderBoxShimsTarget.dependencies.append("OpenRenderBox") } let compatibilityTestCondition = envEnable("OPENRENDERBOX_COMPATIBILITY_TEST") if compatibilityTestCondition && renderBoxCondtion { - openBoxCompatibilityTestTarget.dependencies.append( + openRenderBoxCompatibilityTestTarget.dependencies.append( .product(name: "RenderBox", package: "DarwinPrivateFrameworks") ) - var swiftSettings: [SwiftSetting] = (openBoxCompatibilityTestTarget.swiftSettings ?? []) + var swiftSettings: [SwiftSetting] = (openRenderBoxCompatibilityTestTarget.swiftSettings ?? []) swiftSettings.append(.define("OPENRENDERBOX_COMPATIBILITY_TEST")) - openBoxCompatibilityTestTarget.swiftSettings = swiftSettings + openRenderBoxCompatibilityTestTarget.swiftSettings = swiftSettings } else { - openBoxCompatibilityTestTarget.dependencies.append("OpenRenderBox") + openRenderBoxCompatibilityTestTarget.dependencies.append("OpenRenderBox") } extension [Platform] { From c85365ef2cd75b19acac926e85925165ff498481 Mon Sep 17 00:00:00 2001 From: Kyle Date: Mon, 8 Sep 2025 00:50:33 +0800 Subject: [PATCH 2/8] Update OpenRenderBox folder structure --- Sources/OpenRenderBox/Path/ORBPath.cpp | 2 +- Sources/OpenRenderBox/Path/ORBPathStorage.cpp | 6 +++--- Sources/OpenRenderBox/Path/PathStorage.cpp | 4 ++-- Sources/OpenRenderBox/UUID/ORBUUID.mm | 2 +- Sources/OpenRenderBox/Util/assert.cpp | 4 ++-- Sources/OpenRenderBox/Util/log.cpp | 8 ++++---- .../include/{ => OpenRenderBox}/ORBBase.h | 8 ++------ .../include/{ => OpenRenderBox}/ORBPath.h | 4 +--- .../include/{ => OpenRenderBox}/ORBPathStorage.h | 4 +--- .../include/{ => OpenRenderBox}/ORBSwiftSupport.h | 4 +--- .../{ => OpenRenderBox}/ORBTargetConditionals.h | 4 +--- .../include/{ => OpenRenderBox}/ORBUUID.h | 4 +--- .../include/{ => OpenRenderBox}/ORBVersion.h | 4 +--- .../OpenRenderBox/OpenRenderBox-umbrella.h | 9 +++++++++ .../OpenRenderBoxCxx}/Path/PathStorage.hpp | 9 ++++----- .../OpenRenderBoxCxx}/Util/assert.hpp | 6 ++---- .../{ => include/OpenRenderBoxCxx}/Util/log.hpp | 6 ++---- Sources/OpenRenderBox/include/module.modulemap | 4 ++++ .../include/module.private.modulemap | 15 +++++++++++++++ 19 files changed, 57 insertions(+), 50 deletions(-) rename Sources/OpenRenderBox/include/{ => OpenRenderBox}/ORBBase.h (92%) rename Sources/OpenRenderBox/include/{ => OpenRenderBox}/ORBPath.h (90%) rename Sources/OpenRenderBox/include/{ => OpenRenderBox}/ORBPathStorage.h (95%) rename Sources/OpenRenderBox/include/{ => OpenRenderBox}/ORBSwiftSupport.h (92%) rename Sources/OpenRenderBox/include/{ => OpenRenderBox}/ORBTargetConditionals.h (98%) rename Sources/OpenRenderBox/include/{ => OpenRenderBox}/ORBUUID.h (88%) rename Sources/OpenRenderBox/include/{ => OpenRenderBox}/ORBVersion.h (66%) create mode 100644 Sources/OpenRenderBox/include/OpenRenderBox/OpenRenderBox-umbrella.h rename Sources/OpenRenderBox/{ => include/OpenRenderBoxCxx}/Path/PathStorage.hpp (97%) rename Sources/OpenRenderBox/{ => include/OpenRenderBoxCxx}/Util/assert.hpp (70%) rename Sources/OpenRenderBox/{ => include/OpenRenderBoxCxx}/Util/log.hpp (71%) create mode 100644 Sources/OpenRenderBox/include/module.modulemap create mode 100644 Sources/OpenRenderBox/include/module.private.modulemap diff --git a/Sources/OpenRenderBox/Path/ORBPath.cpp b/Sources/OpenRenderBox/Path/ORBPath.cpp index e7ea020..c7c0542 100644 --- a/Sources/OpenRenderBox/Path/ORBPath.cpp +++ b/Sources/OpenRenderBox/Path/ORBPath.cpp @@ -5,7 +5,7 @@ // Created by Kyle on 2025/3/25. // -#include "ORBPath.h" +#include void ORBPathRetain(ORBPath path) { // TODO diff --git a/Sources/OpenRenderBox/Path/ORBPathStorage.cpp b/Sources/OpenRenderBox/Path/ORBPathStorage.cpp index 6aa178f..33f33f0 100644 --- a/Sources/OpenRenderBox/Path/ORBPathStorage.cpp +++ b/Sources/OpenRenderBox/Path/ORBPathStorage.cpp @@ -2,9 +2,9 @@ // ORBPathStorage.cpp // OpenRenderBox -#include "ORBPathStorage.h" -#include "PathStorage.hpp" -#include "../Util/assert.hpp" +#include +#include +#include using namespace ORB; diff --git a/Sources/OpenRenderBox/Path/PathStorage.cpp b/Sources/OpenRenderBox/Path/PathStorage.cpp index 2273755..c6282c2 100644 --- a/Sources/OpenRenderBox/Path/PathStorage.cpp +++ b/Sources/OpenRenderBox/Path/PathStorage.cpp @@ -2,8 +2,8 @@ // PathStorage.cpp // OpenRenderBox -#include "PathStorage.hpp" -#include "../Util/assert.hpp" +#include +#include namespace ORB { namespace Path { diff --git a/Sources/OpenRenderBox/UUID/ORBUUID.mm b/Sources/OpenRenderBox/UUID/ORBUUID.mm index 7df8f25..f64d560 100644 --- a/Sources/OpenRenderBox/UUID/ORBUUID.mm +++ b/Sources/OpenRenderBox/UUID/ORBUUID.mm @@ -2,7 +2,7 @@ // ORBUUID.mm // OpenRenderBox -#include "ORBUUID.h" +#include #if ORB_TARGET_OS_DARWIN ORBUUID ORBUUIDInitFromNSUUID(NSUUID *uuid) { diff --git a/Sources/OpenRenderBox/Util/assert.cpp b/Sources/OpenRenderBox/Util/assert.cpp index 6c1c3c9..ecd758c 100644 --- a/Sources/OpenRenderBox/Util/assert.cpp +++ b/Sources/OpenRenderBox/Util/assert.cpp @@ -2,8 +2,8 @@ // assert.cpp // OpenRenderBox -#include "assert.hpp" -#include "log.hpp" +#include +#include char* error_message = nullptr; diff --git a/Sources/OpenRenderBox/Util/log.cpp b/Sources/OpenRenderBox/Util/log.cpp index 83687b8..ba6c674 100644 --- a/Sources/OpenRenderBox/Util/log.cpp +++ b/Sources/OpenRenderBox/Util/log.cpp @@ -1,18 +1,18 @@ // -// OGLog.cpp +// log.cpp // OpenRenderBox -#include "log.hpp" +#include #if ORB_TARGET_OS_DARWIN namespace ORB { os_log_t misc_log() { - static os_log_t log = os_log_create("org.openswiftuiproject.openbox", "misc"); + static os_log_t log = os_log_create("org.openswiftuiproject.openrenderbox", "misc"); return log; } os_log_t error_log() { - static os_log_t log = os_log_create("org.openswiftuiproject.openbox", "error"); + static os_log_t log = os_log_create("org.openswiftuiproject.openrenderbox", "error"); return log; } } /* ORB */ diff --git a/Sources/OpenRenderBox/include/ORBBase.h b/Sources/OpenRenderBox/include/OpenRenderBox/ORBBase.h similarity index 92% rename from Sources/OpenRenderBox/include/ORBBase.h rename to Sources/OpenRenderBox/include/OpenRenderBox/ORBBase.h index b07a47c..800a12d 100644 --- a/Sources/OpenRenderBox/include/ORBBase.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/ORBBase.h @@ -2,10 +2,7 @@ // ORBBase.h // OpenRenderBox -#ifndef ORBBase_h -#define ORBBase_h - -#include "ORBVersion.h" +#pragma once #if DEBUG #define ORB_ASSERTION @@ -63,10 +60,9 @@ #define ORB_EXPORT CF_EXPORT #define ORB_BRIDGED_TYPE CF_BRIDGED_TYPE -#if TARGET_OS_DARWIN && __ORBJC__ +#if ORB_TARGET_OS_DARWIN && __ORBJC__ #define ORB_ORBJC_FOUNDATION 1 #else #define ORB_ORBJC_FOUNDATION 0 #endif /* TARGET_OS_DARWIN && __ORBJC__ */ -#endif /* ORBBase_h */ diff --git a/Sources/OpenRenderBox/include/ORBPath.h b/Sources/OpenRenderBox/include/OpenRenderBox/ORBPath.h similarity index 90% rename from Sources/OpenRenderBox/include/ORBPath.h rename to Sources/OpenRenderBox/include/OpenRenderBox/ORBPath.h index ba434ea..a1189c3 100644 --- a/Sources/OpenRenderBox/include/ORBPath.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/ORBPath.h @@ -2,8 +2,7 @@ // ORBPath.h // OpenRenderBox -#ifndef ORBPath_h -#define ORBPath_h +#pragma once #include "ORBBase.h" @@ -32,4 +31,3 @@ ORB_EXTERN_C_END ORB_ASSUME_NONNULL_END -#endif /* ORBPath_h */ diff --git a/Sources/OpenRenderBox/include/ORBPathStorage.h b/Sources/OpenRenderBox/include/OpenRenderBox/ORBPathStorage.h similarity index 95% rename from Sources/OpenRenderBox/include/ORBPathStorage.h rename to Sources/OpenRenderBox/include/OpenRenderBox/ORBPathStorage.h index 1de590f..4c8d750 100644 --- a/Sources/OpenRenderBox/include/ORBPathStorage.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/ORBPathStorage.h @@ -2,8 +2,7 @@ // ORBPathStorage.h // OpenRenderBox -#ifndef ORBPathStorage_h -#define ORBPathStorage_h +#pragma once #include "ORBBase.h" #include "ORBPath.h" @@ -62,4 +61,3 @@ ORB_EXTERN_C_END ORB_ASSUME_NONNULL_END -#endif /* ORBPathStorage_h */ diff --git a/Sources/OpenRenderBox/include/ORBSwiftSupport.h b/Sources/OpenRenderBox/include/OpenRenderBox/ORBSwiftSupport.h similarity index 92% rename from Sources/OpenRenderBox/include/ORBSwiftSupport.h rename to Sources/OpenRenderBox/include/OpenRenderBox/ORBSwiftSupport.h index df63253..ee1726a 100644 --- a/Sources/OpenRenderBox/include/ORBSwiftSupport.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/ORBSwiftSupport.h @@ -2,8 +2,7 @@ // ORBSwiftSupport.h // OpenRenderBox -#ifndef ORBSwiftSupport_h -#define ORBSwiftSupport_h +#pragma once #if __has_attribute(swift_name) #define ORB_SWIFT_NAME(_name) __attribute__((swift_name(#_name))) @@ -42,4 +41,3 @@ #define ORB_SWIFT_INDIRECT_RESULT #endif -#endif /* ORBSwiftSupport_h */ diff --git a/Sources/OpenRenderBox/include/ORBTargetConditionals.h b/Sources/OpenRenderBox/include/OpenRenderBox/ORBTargetConditionals.h similarity index 98% rename from Sources/OpenRenderBox/include/ORBTargetConditionals.h rename to Sources/OpenRenderBox/include/OpenRenderBox/ORBTargetConditionals.h index e69e456..bd07a73 100644 --- a/Sources/OpenRenderBox/include/ORBTargetConditionals.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/ORBTargetConditionals.h @@ -18,8 +18,7 @@ */ -#ifndef __OPENRENDERBOXTARGETCONDITIONALS__ -#define __OPENRENDERBOXTARGETCONDITIONALS__ +#pragma once /**************************************************************************************************** TARGET_CPU_* @@ -274,4 +273,3 @@ #define ORB_TARGET_RT_64_BIT 0 #endif -#endif /* __OPENRENDERBOXTARGETCONDITIONALS__ */ diff --git a/Sources/OpenRenderBox/include/ORBUUID.h b/Sources/OpenRenderBox/include/OpenRenderBox/ORBUUID.h similarity index 88% rename from Sources/OpenRenderBox/include/ORBUUID.h rename to Sources/OpenRenderBox/include/OpenRenderBox/ORBUUID.h index f757023..03abba2 100644 --- a/Sources/OpenRenderBox/include/ORBUUID.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/ORBUUID.h @@ -2,8 +2,7 @@ // ORBUUID.hpp // OpenRenderBox -#ifndef ORBUUID_hpp -#define ORBUUID_hpp +#pragma once #include "ORBBase.h" @@ -29,4 +28,3 @@ ORBUUID ORBUUIDInitFromHash(uint64_t words0, uint64_t words1, uint32_t words2) O ORB_EXTERN_C_END -#endif /* ORBUUID_hpp */ diff --git a/Sources/OpenRenderBox/include/ORBVersion.h b/Sources/OpenRenderBox/include/OpenRenderBox/ORBVersion.h similarity index 66% rename from Sources/OpenRenderBox/include/ORBVersion.h rename to Sources/OpenRenderBox/include/OpenRenderBox/ORBVersion.h index d9243d5..351f68a 100644 --- a/Sources/OpenRenderBox/include/ORBVersion.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/ORBVersion.h @@ -2,8 +2,7 @@ // ORBVersion.h // OpenRenderBox -#ifndef ORBVersion_h -#define ORBVersion_h +#pragma once #define ORB_RELEASE_2024 2024 @@ -11,4 +10,3 @@ #define ORB_TARGET_RELEASE 2024 #endif -#endif /* ORBVersion_h */ diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/OpenRenderBox-umbrella.h b/Sources/OpenRenderBox/include/OpenRenderBox/OpenRenderBox-umbrella.h new file mode 100644 index 0000000..e43e179 --- /dev/null +++ b/Sources/OpenRenderBox/include/OpenRenderBox/OpenRenderBox-umbrella.h @@ -0,0 +1,9 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include diff --git a/Sources/OpenRenderBox/Path/PathStorage.hpp b/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Path/PathStorage.hpp similarity index 97% rename from Sources/OpenRenderBox/Path/PathStorage.hpp rename to Sources/OpenRenderBox/include/OpenRenderBoxCxx/Path/PathStorage.hpp index 15b75cc..5d0c64b 100644 --- a/Sources/OpenRenderBox/Path/PathStorage.hpp +++ b/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Path/PathStorage.hpp @@ -2,11 +2,11 @@ // PathStorage.hpp // OpenRenderBox -#ifndef PathStorage_hpp -#define PathStorage_hpp +#pragma once + +#include +#include -#include "ORBBase.h" -#include "../Util/assert.hpp" #include ORB_ASSUME_NONNULL_BEGIN @@ -226,4 +226,3 @@ struct ORBPathStorage { ORB_ASSUME_NONNULL_END -#endif /* PathStorage_hpp */ diff --git a/Sources/OpenRenderBox/Util/assert.hpp b/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Util/assert.hpp similarity index 70% rename from Sources/OpenRenderBox/Util/assert.hpp rename to Sources/OpenRenderBox/include/OpenRenderBoxCxx/Util/assert.hpp index e92ae7a..3c3978b 100644 --- a/Sources/OpenRenderBox/Util/assert.hpp +++ b/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Util/assert.hpp @@ -2,14 +2,12 @@ // assert.hpp // OpenRenderBox -#ifndef assert_hpp -#define assert_hpp +#pragma once -#include "ORBBase.h" +#include namespace ORB { void precondition_failure(const char *format, ...) __cold __dead2; void non_fatal_precondition_failure(const char *format, ...); } /* ORB */ -#endif /* assert_hpp */ diff --git a/Sources/OpenRenderBox/Util/log.hpp b/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Util/log.hpp similarity index 71% rename from Sources/OpenRenderBox/Util/log.hpp rename to Sources/OpenRenderBox/include/OpenRenderBoxCxx/Util/log.hpp index cc0decf..a015fb5 100644 --- a/Sources/OpenRenderBox/Util/log.hpp +++ b/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Util/log.hpp @@ -2,10 +2,9 @@ // log.hpp // OpenRenderBox -#ifndef log_hpp -#define log_hpp +#pragma once -#include "ORBBase.h" +#include #if ORB_TARGET_OS_DARWIN @@ -18,4 +17,3 @@ os_log_t error_log(); #endif /* ORB_TARGET_OS_DARWIN */ -#endif /* log_hpp */ diff --git a/Sources/OpenRenderBox/include/module.modulemap b/Sources/OpenRenderBox/include/module.modulemap new file mode 100644 index 0000000..f74339a --- /dev/null +++ b/Sources/OpenRenderBox/include/module.modulemap @@ -0,0 +1,4 @@ +module OpenRenderBox { + umbrella header "OpenRenderBox/OpenRenderBox-umbrella.h" + export * +} diff --git a/Sources/OpenRenderBox/include/module.private.modulemap b/Sources/OpenRenderBox/include/module.private.modulemap new file mode 100644 index 0000000..14fb45e --- /dev/null +++ b/Sources/OpenRenderBox/include/module.private.modulemap @@ -0,0 +1,15 @@ +module OpenRenderBoxCxx_Private { + export * +} + +module OpenRenderBoxCxx_Private.Path { + requires cplusplus + umbrella "OpenRenderBoxCxx/Path" + export * +} + +module OpenRenderBoxCxx_Private.Util { + requires cplusplus + umbrella "OpenRenderBoxCxx/Util" + export * +} From 60430cf06cef437af1d564ddd2144185e24ca49b Mon Sep 17 00:00:00 2001 From: Kyle Date: Mon, 8 Sep 2025 01:17:17 +0800 Subject: [PATCH 3/8] Update target and add CxxTests --- Package.swift | 9 +++++---- Sources/OpenRenderBox/UUID/ORBUUID.mm | 2 +- .../include/OpenRenderBox/ORBUUID.h | 4 ++-- .../include/OpenRenderBoxCxx/Util/log.hpp | 4 ++++ .../OpenRenderBox/include/module.modulemap | 17 ++++++++++++++++ .../include/module.private.modulemap | 15 -------------- .../README.md | 0 .../OpenRenderBoxCxxTests/Util/LogTests.swift | 20 +++++++++++++++++++ Tests/OpenRenderBoxTests/DummyTests.swift | 8 -------- 9 files changed, 49 insertions(+), 30 deletions(-) delete mode 100644 Sources/OpenRenderBox/include/module.private.modulemap rename Tests/{OpenRenderBoxTests => OpenRenderBoxCxxTests}/README.md (100%) create mode 100644 Tests/OpenRenderBoxCxxTests/Util/LogTests.swift delete mode 100644 Tests/OpenRenderBoxTests/DummyTests.swift diff --git a/Package.swift b/Package.swift index 9068505..5d3bb6f 100644 --- a/Package.swift +++ b/Package.swift @@ -75,13 +75,14 @@ let openRenderBoxShimsTarget = Target.target( name: "OpenRenderBoxShims", swiftSettings: sharedSwiftSettings ) -let openRenderBoxTestTarget = Target.testTarget( - name: "OpenRenderBoxTests", +let openRenderBoxCxxTestTarget = Target.testTarget( + name: "OpenRenderBoxCxxTests", dependencies: [ "OpenRenderBox", ], exclude: ["README.md"], - swiftSettings: sharedSwiftSettings + cSettings: sharedCSettings + [.define("SWIFT_TESTING")], + swiftSettings: sharedSwiftSettings + [.interoperabilityMode(.Cxx)] ) let openRenderBoxCompatibilityTestTarget = Target.testTarget( name: "OpenRenderBoxCompatibilityTests", @@ -117,7 +118,7 @@ let package = Package( openRenderBoxTarget, openRenderBoxShimsTarget, - openRenderBoxTestTarget, + openRenderBoxCxxTestTarget, openRenderBoxCompatibilityTestTarget, ], cxxLanguageStandard: .cxx20 diff --git a/Sources/OpenRenderBox/UUID/ORBUUID.mm b/Sources/OpenRenderBox/UUID/ORBUUID.mm index f64d560..94fe154 100644 --- a/Sources/OpenRenderBox/UUID/ORBUUID.mm +++ b/Sources/OpenRenderBox/UUID/ORBUUID.mm @@ -4,7 +4,7 @@ #include -#if ORB_TARGET_OS_DARWIN +#if ORB_TARGET_OS_DARWIN && __OBJC__ ORBUUID ORBUUIDInitFromNSUUID(NSUUID *uuid) { ORBUUID ob_uuid; [uuid getUUIDBytes:ob_uuid.bytes]; diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/ORBUUID.h b/Sources/OpenRenderBox/include/OpenRenderBox/ORBUUID.h index 03abba2..1bd5938 100644 --- a/Sources/OpenRenderBox/include/OpenRenderBox/ORBUUID.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/ORBUUID.h @@ -6,7 +6,7 @@ #include "ORBBase.h" -#if ORB_TARGET_OS_DARWIN +#if ORB_TARGET_OS_DARWIN && __OBJC__ #include #endif @@ -16,7 +16,7 @@ typedef struct ORBUUID { ORB_EXTERN_C_BEGIN -#if ORB_TARGET_OS_DARWIN +#if ORB_TARGET_OS_DARWIN && __OBJC__ ORB_EXPORT ORB_REFINED_FOR_SWIFT ORBUUID ORBUUIDInitFromNSUUID(NSUUID *uuid) ORB_SWIFT_NAME(ORBUUID.init(uuid:)); diff --git a/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Util/log.hpp b/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Util/log.hpp index a015fb5..e8383e8 100644 --- a/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Util/log.hpp +++ b/Sources/OpenRenderBox/include/OpenRenderBoxCxx/Util/log.hpp @@ -10,10 +10,14 @@ #include +ORB_ASSUME_NONNULL_BEGIN + namespace ORB { os_log_t misc_log(); os_log_t error_log(); } /* ORB */ +ORB_ASSUME_NONNULL_END + #endif /* ORB_TARGET_OS_DARWIN */ diff --git a/Sources/OpenRenderBox/include/module.modulemap b/Sources/OpenRenderBox/include/module.modulemap index f74339a..9d63041 100644 --- a/Sources/OpenRenderBox/include/module.modulemap +++ b/Sources/OpenRenderBox/include/module.modulemap @@ -2,3 +2,20 @@ module OpenRenderBox { umbrella header "OpenRenderBox/OpenRenderBox-umbrella.h" export * } + +module OpenRenderBoxCxx { + requires cplusplus + export * +} + +module OpenRenderBoxCxx.Path { + requires cplusplus + umbrella "OpenRenderBoxCxx/Path" + export * +} + +module OpenRenderBoxCxx.Util { + requires cplusplus + umbrella "OpenRenderBoxCxx/Util" + export * +} diff --git a/Sources/OpenRenderBox/include/module.private.modulemap b/Sources/OpenRenderBox/include/module.private.modulemap deleted file mode 100644 index 14fb45e..0000000 --- a/Sources/OpenRenderBox/include/module.private.modulemap +++ /dev/null @@ -1,15 +0,0 @@ -module OpenRenderBoxCxx_Private { - export * -} - -module OpenRenderBoxCxx_Private.Path { - requires cplusplus - umbrella "OpenRenderBoxCxx/Path" - export * -} - -module OpenRenderBoxCxx_Private.Util { - requires cplusplus - umbrella "OpenRenderBoxCxx/Util" - export * -} diff --git a/Tests/OpenRenderBoxTests/README.md b/Tests/OpenRenderBoxCxxTests/README.md similarity index 100% rename from Tests/OpenRenderBoxTests/README.md rename to Tests/OpenRenderBoxCxxTests/README.md diff --git a/Tests/OpenRenderBoxCxxTests/Util/LogTests.swift b/Tests/OpenRenderBoxCxxTests/Util/LogTests.swift new file mode 100644 index 0000000..ef3c8c0 --- /dev/null +++ b/Tests/OpenRenderBoxCxxTests/Util/LogTests.swift @@ -0,0 +1,20 @@ +// +// LogTests.swift +// OpenRenderBox +// +// Created by Kyle on 2025/9/8. +// + +#if canImport(Darwin) +import OpenRenderBoxCxx.Util +import Testing + +@Suite +struct LogTests { + @Test + func table() { + _ = ORB.misc_log() + _ = ORB.error_log() + } +} +#endif diff --git a/Tests/OpenRenderBoxTests/DummyTests.swift b/Tests/OpenRenderBoxTests/DummyTests.swift deleted file mode 100644 index ab9f77e..0000000 --- a/Tests/OpenRenderBoxTests/DummyTests.swift +++ /dev/null @@ -1,8 +0,0 @@ -// -// DummyTests.swift -// OpenRenderBoxTests - -@testable import OpenRenderBox -import Testing - -struct DummyTests {} From 58d68786049b868dceeb2150fb76eb31f58417f0 Mon Sep 17 00:00:00 2001 From: Kyle Date: Mon, 8 Sep 2025 01:28:39 +0800 Subject: [PATCH 4/8] Fix include issue --- Sources/OpenRenderBox/include/OpenRenderBox/ORBPath.h | 2 +- Sources/OpenRenderBox/include/OpenRenderBox/ORBPathStorage.h | 4 ++-- Sources/OpenRenderBox/include/OpenRenderBox/ORBUUID.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/ORBPath.h b/Sources/OpenRenderBox/include/OpenRenderBox/ORBPath.h index a1189c3..04c9a56 100644 --- a/Sources/OpenRenderBox/include/OpenRenderBox/ORBPath.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/ORBPath.h @@ -4,7 +4,7 @@ #pragma once -#include "ORBBase.h" +#include ORB_ASSUME_NONNULL_BEGIN diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/ORBPathStorage.h b/Sources/OpenRenderBox/include/OpenRenderBox/ORBPathStorage.h index 4c8d750..e413eab 100644 --- a/Sources/OpenRenderBox/include/OpenRenderBox/ORBPathStorage.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/ORBPathStorage.h @@ -4,8 +4,8 @@ #pragma once -#include "ORBBase.h" -#include "ORBPath.h" +#include +#include #if ORB_TARGET_OS_DARWIN #include diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/ORBUUID.h b/Sources/OpenRenderBox/include/OpenRenderBox/ORBUUID.h index 1bd5938..e270b2c 100644 --- a/Sources/OpenRenderBox/include/OpenRenderBox/ORBUUID.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/ORBUUID.h @@ -4,7 +4,7 @@ #pragma once -#include "ORBBase.h" +#include #if ORB_TARGET_OS_DARWIN && __OBJC__ #include From a1d8765ad3fee666ed9d0f0f547b7a733f966201 Mon Sep 17 00:00:00 2001 From: Kyle Date: Mon, 8 Sep 2025 01:57:29 +0800 Subject: [PATCH 5/8] Update ORBVersion --- Package.swift | 5 +---- Sources/OpenRenderBox/Version/ORBVersion.c | 10 ++++++++++ .../OpenRenderBox/include/OpenRenderBox/ORBVersion.h | 3 ++- .../include/OpenRenderBox/OpenRenderBox-umbrella.h | 5 +++-- 4 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 Sources/OpenRenderBox/Version/ORBVersion.c diff --git a/Package.swift b/Package.swift index 5d3bb6f..2abccea 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 6.0 +// swift-tools-version: 6.1 import Foundation import PackageDescription @@ -117,7 +117,6 @@ let package = Package( targets: [ openRenderBoxTarget, openRenderBoxShimsTarget, - openRenderBoxCxxTestTarget, openRenderBoxCompatibilityTestTarget, ], @@ -142,7 +141,6 @@ if renderBoxCondtion { openRenderBoxShimsTarget.dependencies.append( .product(name: "RenderBox", package: "DarwinPrivateFrameworks") ) - let rbVersion = Context.environment["DARWIN_PRIVATE_FRAMEWORKS_TARGET_RELEASE"].flatMap { Int($0) } ?? 2024 package.platforms = switch rbVersion { case 2024: [.iOS(.v18), .macOS(.v15), .macCatalyst(.v18), .tvOS(.v18), .watchOS(.v10), .visionOS(.v2)] @@ -158,7 +156,6 @@ if compatibilityTestCondition && renderBoxCondtion { openRenderBoxCompatibilityTestTarget.dependencies.append( .product(name: "RenderBox", package: "DarwinPrivateFrameworks") ) - var swiftSettings: [SwiftSetting] = (openRenderBoxCompatibilityTestTarget.swiftSettings ?? []) swiftSettings.append(.define("OPENRENDERBOX_COMPATIBILITY_TEST")) openRenderBoxCompatibilityTestTarget.swiftSettings = swiftSettings diff --git a/Sources/OpenRenderBox/Version/ORBVersion.c b/Sources/OpenRenderBox/Version/ORBVersion.c new file mode 100644 index 0000000..c8774ab --- /dev/null +++ b/Sources/OpenRenderBox/Version/ORBVersion.c @@ -0,0 +1,10 @@ +// +// ORBVersion.c +// OpenRenderBox + +#include + +#if OPENRENDERBOX_RELEASE == OPENRENDERBOX_RELEASE_2024 +const double OpenRenderBoxVersionNumber __attribute__ ((used)) = (double)6.0; +const unsigned char OpenRenderBoxVersionString[] __attribute__ ((used)) = "@(#)PROAGRAM:OpenRenderBox PROJECT:OpenRenderBox-6.0.87\n"; +#endif diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/ORBVersion.h b/Sources/OpenRenderBox/include/OpenRenderBox/ORBVersion.h index 351f68a..8c68275 100644 --- a/Sources/OpenRenderBox/include/OpenRenderBox/ORBVersion.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/ORBVersion.h @@ -4,9 +4,10 @@ #pragma once +#include + #define ORB_RELEASE_2024 2024 #ifndef ORB_TARGET_RELEASE #define ORB_TARGET_RELEASE 2024 #endif - diff --git a/Sources/OpenRenderBox/include/OpenRenderBox/OpenRenderBox-umbrella.h b/Sources/OpenRenderBox/include/OpenRenderBox/OpenRenderBox-umbrella.h index e43e179..27b00d2 100644 --- a/Sources/OpenRenderBox/include/OpenRenderBox/OpenRenderBox-umbrella.h +++ b/Sources/OpenRenderBox/include/OpenRenderBox/OpenRenderBox-umbrella.h @@ -1,5 +1,3 @@ -#pragma once - #include #include #include @@ -7,3 +5,6 @@ #include #include #include + +ORB_EXPORT double OpenRenderBoxVersionNumber; +ORB_EXPORT const unsigned char OpenRenderBoxVersionString[]; From 5b2362ed1b16a7510bbd04cb0ec45e0fa9e012dd Mon Sep 17 00:00:00 2001 From: Kyle Date: Mon, 8 Sep 2025 01:59:28 +0800 Subject: [PATCH 6/8] Add scripts to bump DarwinPrivateFrameworks --- .gitignore | 1 + Scripts/bump_rb_pr.sh | 179 +++++++++++++++++++++++++++++++++++++ Scripts/gen_rb_template.sh | 45 ++++++++++ 3 files changed, 225 insertions(+) create mode 100755 Scripts/bump_rb_pr.sh create mode 100755 Scripts/gen_rb_template.sh diff --git a/.gitignore b/.gitignore index 7630fc5..2b3eccb 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ DerivedData/ .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata .netrc .claude/ +.rb_template/ diff --git a/Scripts/bump_rb_pr.sh b/Scripts/bump_rb_pr.sh new file mode 100755 index 0000000..faaa7c9 --- /dev/null +++ b/Scripts/bump_rb_pr.sh @@ -0,0 +1,179 @@ +#!/bin/zsh + +set -e + +# A `realpath` alternative using the default C implementation. +filepath() { + [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}" +} + +# Capture script name for usage display +SCRIPT_NAME="$(basename "$0")" + +# Usage function +show_usage() { + cat << EOF +Usage: $SCRIPT_NAME [branch] [--force] [--help] + +Automated script to update DarwinPrivateFrameworks with RenderBox changes. + +Arguments: + branch Target branch to generate from (default: main) + +Options: + --force Force push the branch when creating PR + --help Show this help message + +Examples: + $SCRIPT_NAME # Update from main branch + $SCRIPT_NAME develop # Update from develop branch + $SCRIPT_NAME main --force # Update from main with force push + $SCRIPT_NAME --help # Show this help + +Description: + This script automates the process of updating DarwinPrivateFrameworks + with the latest RenderBox changes by: + 1. Setting up a git worktree for the target branch + 2. Cloning DarwinPrivateFrameworks repository + 3. Generating RB template from OpenRenderBox + 4. Updating headers and Swift interface templates + 5. Creating and pushing a PR with the changes +EOF +} + +# Parse command line arguments +TARGET_BRANCH="main" +FORCE_PUSH="" + +# Parse arguments +while [[ $# -gt 0 ]]; do + case $1 in + --help) + show_usage + exit 0 + ;; + --force) + FORCE_PUSH="--force" + shift + ;; + *) + TARGET_BRANCH="$1" + shift + ;; + esac +done + +SCRIPT_ROOT="$(dirname $(dirname $(filepath $0)))" +ORB_REPO_DIR="$SCRIPT_ROOT/.orb_repo" +OPENRENDERBOX_ROOT="$ORB_REPO_DIR" +RB_REPO_DIR="$SCRIPT_ROOT/.rb_repo" + +echo "Starting DarwinPrivateFrameworks bump PR workflow..." +echo "Target branch: $TARGET_BRANCH" +if [[ -n "$FORCE_PUSH" ]]; then + echo "Force push: enabled" +fi + +# Cleanup function +cleanup() { + if [[ -d "$RB_REPO_DIR" ]]; then + echo "Cleaning up temporary repository..." + rm -rf "$RB_REPO_DIR" + fi + if [[ -d "$ORB_REPO_DIR" ]]; then + echo "Cleaning up git worktree..." + cd "$SCRIPT_ROOT" + git worktree remove --force "$ORB_REPO_DIR" 2>/dev/null || true + fi +} + +# Set trap to cleanup on exit +trap cleanup EXIT + +cd "$SCRIPT_ROOT" + +# Step 1: Setup git worktree for target branch +echo "Setting up git worktree for branch: $TARGET_BRANCH" +if [[ -d "$ORB_REPO_DIR" ]]; then + git worktree remove --force "$ORB_REPO_DIR" 2>/dev/null || true +fi + +git worktree add "$ORB_REPO_DIR" "$TARGET_BRANCH" + +# Step 2: Clone DarwinPrivateFrameworks repository +echo "Cloning DarwinPrivateFrameworks repository..." +if [[ -d "$RB_REPO_DIR" ]]; then + rm -rf "$RB_REPO_DIR" +fi + +gh repo clone OpenSwiftUIProject/DarwinPrivateFrameworks "$RB_REPO_DIR" + +# Step 3: Create new branch based on target branch name +echo "Creating new branch: update-rb-$TARGET_BRANCH" +cd "$RB_REPO_DIR" +git checkout -b "update-rb-$TARGET_BRANCH" + +# Step 4: Generate RB template +echo "Generating RB template..." +cd "$OPENRENDERBOX_ROOT" +./Scripts/gen_rb_template.sh + +# Step 5: Update DarwinPrivateFrameworks with generated content +echo "Updating DarwinPrivateFrameworks content..." + +# Update headers in Sources/Headers +if [[ -d ".rb_template/Headers" ]]; then + echo "Updating headers..." + rm -rf "$RB_REPO_DIR/RB/2024/Sources/Headers"/* + cp -r .rb_template/Headers/* "$RB_REPO_DIR/RB/2024/Sources/Headers/" +fi + +# Step 6: Commit changes in DarwinPrivateFrameworks +echo "Committing changes..." +cd "$RB_REPO_DIR" + +git add . +if git diff --staged --quiet; then + echo "No changes to commit" +else + git commit -m "feat(rb): Update RenderBox from OpenRenderBox $TARGET_BRANCH + +- Updated headers from OpenRenderBox sources +- Generated from OpenRenderBox branch: $TARGET_BRANCH" +fi + +# Step 7: Update xcframeworks +echo "Updating xcframeworks..." +swift package update-xcframeworks --allow-writing-to-package-directory + +# Commit xcframework updates +git add . +if git diff --staged --quiet; then + echo "No xcframework changes to commit" +else + git commit -m "chore(generated): Update RB framework" +fi + +# Step 8: Push branch and create PR +echo "Pushing branch and creating PR..." +git push origin "update-rb-$TARGET_BRANCH" $FORCE_PUSH + +# Create PR +PR_TITLE="Update RenderBox from OpenRenderBox $TARGET_BRANCH" +PR_BODY="Automated update of RenderBox framework from OpenRenderBox. + +**Changes:** +- Updated headers from OpenRenderBox sources +- Updated xcframework binaries + +**Source Branch:** $TARGET_BRANCH +**Generated by:** OpenRenderBox bump script" + +gh pr create \ + --title "$PR_TITLE" \ + --body "$PR_BODY" \ + --head "update-rb-$TARGET_BRANCH" \ + --base main + +echo "✅ PR created successfully!" +echo "Branch: update-rb-$TARGET_BRANCH" diff --git a/Scripts/gen_rb_template.sh b/Scripts/gen_rb_template.sh new file mode 100755 index 0000000..5019ff1 --- /dev/null +++ b/Scripts/gen_rb_template.sh @@ -0,0 +1,45 @@ +#!/bin/zsh + +# A `realpath` alternative using the default C implementation. +filepath() { + [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}" +} + +gen_interface() { + swift build -c release -Xswiftc -emit-module-interface -Xswiftc -enable-library-evolution -Xswiftc -no-verify-emitted-module-interface -Xswiftc -package-name -Xswiftc OpenRenderBox -Xswiftc -Osize + + mkdir -p .rb_template +} + +gen_header() { + mkdir -p .rb_template/Headers + + cp -r Sources/OpenRenderBox/include/OpenRenderBox/* .rb_template/Headers/ + + # Rename files from ORBxx to RBxx and OpenRenderBoxxx to RenderBoxxx + find .rb_template/Headers -name "ORB*" -type f | while read file; do + new_name=$(echo "$file" | sed 's/ORB/RB/g') + mv "$file" "$new_name" + done + + find .rb_template/Headers -name "OpenRenderBox*" -type f | while read file; do + new_name=$(echo "$file" | sed 's/OpenRenderBox/RenderBox/g') + mv "$file" "$new_name" + done + + # Update content in all header files + find .rb_template/Headers -name "*.h" -type f | while read file; do + sed -i '' 's/OpenRenderBox/RenderBox/g' "$file" + sed -i '' 's/OPENRENDERBOX/RENDERBOX/g' "$file" + sed -i '' 's/ORB/RB/g' "$file" + done + + echo "Generated template headers successfully" +} + +OPENRENDERBOX_ROOT="$(dirname $(dirname $(filepath $0)))" + +cd $OPENRENDERBOX_ROOT + +gen_interface +gen_header From 0a7387a68be52820d02475e36e77e00b6fa3eeec Mon Sep 17 00:00:00 2001 From: Kyle Date: Mon, 8 Sep 2025 02:04:39 +0800 Subject: [PATCH 7/8] Bump RB dependency See https://github.com/OpenSwiftUIProject/DarwinPrivateFrameworks/pull/21 --- Package.resolved | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Package.resolved b/Package.resolved index 766e889..fd1d9c9 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "b2bb0d92da74ae42042fe8f1185c86d1e3b9e89e8778a1afeeff2c920de101b6", + "originHash" : "8cfd173a66f2bb13ac51d2015d199a4d0b9536ff17abacbdcdf2004b2baeada1", "pins" : [ { "identity" : "darwinprivateframeworks", @@ -7,7 +7,7 @@ "location" : "https://github.com/OpenSwiftUIProject/DarwinPrivateFrameworks.git", "state" : { "branch" : "main", - "revision" : "6ef0aae7ac472a4c47cd0569000138f5c852eb67" + "revision" : "53c0103e449cd0fecc931d8a1af63e7ff036d575" } }, { From d582f042a222e6bceece6b33067249e380be7964 Mon Sep 17 00:00:00 2001 From: Kyle Date: Mon, 8 Sep 2025 02:08:44 +0800 Subject: [PATCH 8/8] Fix warning --- Sources/OpenRenderBox/Version/ORBVersion.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/OpenRenderBox/Version/ORBVersion.c b/Sources/OpenRenderBox/Version/ORBVersion.c index c8774ab..55cd767 100644 --- a/Sources/OpenRenderBox/Version/ORBVersion.c +++ b/Sources/OpenRenderBox/Version/ORBVersion.c @@ -5,6 +5,6 @@ #include #if OPENRENDERBOX_RELEASE == OPENRENDERBOX_RELEASE_2024 -const double OpenRenderBoxVersionNumber __attribute__ ((used)) = (double)6.0; +double OpenRenderBoxVersionNumber __attribute__ ((used)) = (double)6.0; const unsigned char OpenRenderBoxVersionString[] __attribute__ ((used)) = "@(#)PROAGRAM:OpenRenderBox PROJECT:OpenRenderBox-6.0.87\n"; #endif