From bcdca636a8c791c4f0df38723c183a1331d7f334 Mon Sep 17 00:00:00 2001 From: stackotter Date: Mon, 8 Apr 2024 10:39:45 +1000 Subject: [PATCH] Create DefaultBackend which adapts to match the current platform (will use for examples once AppKitBackend is ready) --- Package.swift | 19 +++++++++++++++++++ Sources/DefaultBackend/DefaultBackend.swift | 21 +++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 Sources/DefaultBackend/DefaultBackend.swift diff --git a/Package.swift b/Package.swift index e11ab87c..977b75fd 100644 --- a/Package.swift +++ b/Package.swift @@ -55,6 +55,19 @@ var swift510Products: [Product] = [] ] #endif +let defaultBackend: String +if let backend = ProcessInfo.processInfo.environment["SCUI_DEFAULT_BACKEND"] { + defaultBackend = backend +} else { + #if os(macOS) + defaultBackend = "AppKitBackend" + #elseif os(Windows) + defaultBackend = "WinUIBackend" + #else + defaultBackend = "GtkBackend" + #endif +} + let package = Package( name: "swift-cross-ui", platforms: [.macOS(.v10_15)], @@ -109,6 +122,12 @@ let package = Package( name: "SwiftCrossUITests", dependencies: ["SwiftCrossUI"] ), + .target( + name: "DefaultBackend", + dependencies: [ + .target(name: defaultBackend) + ] + ), .target(name: "AppKitBackend", dependencies: ["SwiftCrossUI"]), .target( name: "QtBackend", diff --git a/Sources/DefaultBackend/DefaultBackend.swift b/Sources/DefaultBackend/DefaultBackend.swift new file mode 100644 index 00000000..827732af --- /dev/null +++ b/Sources/DefaultBackend/DefaultBackend.swift @@ -0,0 +1,21 @@ +#if canImport(AppKitBackend) + import AppKitBackend + public typealias DefaultBackend = AppKitBackend +#elseif canImport(GtkBackend) + import GtkBackend + public typealias DefaultBackend = GtkBackend +#elseif canImport(QtBackend) + import QtBackend + public typealias DefaultBackend = QtBackend +#elseif canImport(WinUIBackend) + import WinUIBackend + public typealias DefaultBackend = WinUIBackend +#elseif canImport(CursesBackend) + import CursesBackend + public typealias DefaultBackend = CursesBackend +#elseif canImport(LVGLBackend) + import LVGLBackend + public typealias DefaultBackend = LVGLBackend +#else + #error("Unknown backend selected") +#endif