swift: Linux Support

This commit is contained in:
2025-06-16 07:14:26 +10:00
parent fbce9754d7
commit 340448cf4c
12 changed files with 53 additions and 43 deletions

View File

@@ -2,6 +2,19 @@
import PackageDescription
func resources(shaders: [String], data: [String] = []) -> [PackageDescription.Resource] {
shaders.flatMap { name in
#if os(macOS)
[ .process("../../../data/shaders/\(name).metallib") ]
#else
[
.process("../../../data/shaders/\(name).vtx.spv"),
.process("../../../data/shaders/\(name).frg.spv"),
]
#endif
} + data.map { resource in .process("../../../data/\(resource)") }
}
let package = Package(
name: "NeHe-SDL_GPU",
products: [
@@ -18,38 +31,34 @@ let package = Package(
],
dependencies: [
.package(url: "https://github.com/GayPizzaSpecifications/SDL3Swift.git", branch: "main"),
.package(url: "https://github.com/keyvariable/kvSIMD.swift.git", .upToNextMajor(from: "1.1.0")),
],
targets: [
.target(
name: "NeHe",
dependencies: [ .product(name: "SDLSwift", package: "SDL3Swift") ],
dependencies: [
.product(name: "SDLSwift", package: "SDL3Swift"),
.product(name: "kvSIMD", package: "kvSIMD.swift"),
],
path: "src/swift/NeHe"),
.executableTarget(name: "Lesson1", dependencies: [ "NeHe" ], path: "src/swift/Lesson1"),
.executableTarget(name: "Lesson2", dependencies: [ "NeHe" ], path: "src/swift/Lesson2", resources: [
.process("../../../data/shaders/lesson2.metallib") ]),
.executableTarget(name: "Lesson3", dependencies: [ "NeHe" ], path: "src/swift/Lesson3", resources: [
.process("../../../data/shaders/lesson3.metallib") ]),
.executableTarget(name: "Lesson4", dependencies: [ "NeHe" ], path: "src/swift/Lesson4", resources: [
.process("../../../data/shaders/lesson3.metallib") ]),
.executableTarget(name: "Lesson5", dependencies: [ "NeHe" ], path: "src/swift/Lesson5", resources: [
.process("../../../data/shaders/lesson3.metallib") ]),
.executableTarget(name: "Lesson6", dependencies: [ "NeHe" ], path: "src/swift/Lesson6", resources: [
.process("../../../data/shaders/lesson6.metallib"),
.process("../../../data/NeHe.bmp") ]),
.executableTarget(name: "Lesson7", dependencies: [ "NeHe" ], path: "src/swift/Lesson7", resources: [
.process("../../../data/shaders/lesson6.metallib"),
.process("../../../data/shaders/lesson7.metallib"),
.process("../../../data/Crate.bmp") ]),
.executableTarget(name: "Lesson8", dependencies: [ "NeHe" ], path: "src/swift/Lesson8", resources: [
.process("../../../data/shaders/lesson7.metallib"),
.process("../../../data/shaders/lesson8.metallib"),
.process("../../../data/Glass.bmp") ]),
.executableTarget(name: "Lesson9", dependencies: [ "NeHe" ], path: "src/swift/Lesson9", resources: [
.process("../../../data/shaders/lesson9.metallib"),
.process("../../../data/Star.bmp") ]),
.executableTarget(name: "Lesson10", dependencies: [ "NeHe" ], path: "src/swift/Lesson10", resources: [
.process("../../../data/shaders/lesson6.metallib"),
.process("../../../data/Mud.bmp"),
.process("../../../data/World.txt") ]),
],
.executableTarget(name: "Lesson2", dependencies: [ "NeHe" ], path: "src/swift/Lesson2", resources:
resources(shaders: [ "lesson2" ])),
.executableTarget(name: "Lesson3", dependencies: [ "NeHe" ], path: "src/swift/Lesson3", resources:
resources(shaders: [ "lesson3" ])),
.executableTarget(name: "Lesson4", dependencies: [ "NeHe" ], path: "src/swift/Lesson4", resources:
resources(shaders: [ "lesson3" ])),
.executableTarget(name: "Lesson5", dependencies: [ "NeHe" ], path: "src/swift/Lesson5", resources:
resources(shaders: [ "lesson3" ])),
.executableTarget(name: "Lesson6", dependencies: [ "NeHe" ], path: "src/swift/Lesson6", resources:
resources(shaders: [ "lesson6" ], data: [ "NeHe.bmp" ])),
.executableTarget(name: "Lesson7", dependencies: [ "NeHe" ], path: "src/swift/Lesson7", resources:
resources(shaders: [ "lesson6", "lesson7" ], data: [ "Crate.bmp" ])),
.executableTarget(name: "Lesson8", dependencies: [ "NeHe" ], path: "src/swift/Lesson8", resources:
resources(shaders: [ "lesson7", "lesson8" ], data: [ "Glass.bmp" ])),
.executableTarget(name: "Lesson9", dependencies: [ "NeHe" ], path: "src/swift/Lesson9", resources:
resources(shaders: [ "lesson9" ], data: [ "Star.bmp" ])),
.executableTarget(name: "Lesson10", dependencies: [ "NeHe" ], path: "src/swift/Lesson10", resources:
resources(shaders: [ "lesson6" ], data: [ "Mud.bmp", "World.txt" ])),
]
)