Adjusted the naming of the library in the Package file.
This commit is contained in:
1 parent
f6645d2613
commit
2e7ee12ec1
37 files changed
+75
-57
No files matched your search
@@ -52,10 +52,10 @@ jobs:
|
|||||||
- name: Generate documentation
|
- name: Generate documentation
|
||||||
run: |
|
run: |
|
||||||
swift package --allow-writing-to-directory docs \
|
swift package --allow-writing-to-directory docs \
|
||||||
generate-documentation --target PlayDate \
|
generate-documentation --target PlaydateKit \
|
||||||
--disable-indexing \
|
--disable-indexing \
|
||||||
--transform-for-static-hosting \
|
--transform-for-static-hosting \
|
||||||
--hosting-base-path play-date \
|
--hosting-base-path playdate-kit \
|
||||||
--output-path docs
|
--output-path docs
|
||||||
|
|
||||||
- uses: actions/upload-pages-artifact@v3
|
- uses: actions/upload-pages-artifact@v3
|
||||||
|
|||||||
+15
-4
@@ -15,8 +15,8 @@
|
|||||||
buildForAnalyzing = "YES">
|
buildForAnalyzing = "YES">
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "pdex"
|
BlueprintIdentifier = "PlaydateKit"
|
||||||
BuildableName = "pdex"
|
BuildableName = "PlaydateKit"
|
||||||
ReferencedContainer = "container:">
|
ReferencedContainer = "container:">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildActionEntry>
|
</BuildActionEntry>
|
||||||
@@ -28,6 +28,17 @@
|
|||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
shouldAutocreateTestPlan = "YES">
|
shouldAutocreateTestPlan = "YES">
|
||||||
|
<Testables>
|
||||||
|
<TestableReference
|
||||||
|
skipped = "NO">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "PlaydateKitTests"
|
||||||
|
BuildableName = "PlaydateKitTests"
|
||||||
|
ReferencedContainer = "container:">
|
||||||
|
</BuildableReference>
|
||||||
|
</TestableReference>
|
||||||
|
</Testables>
|
||||||
</TestAction>
|
</TestAction>
|
||||||
<LaunchAction
|
<LaunchAction
|
||||||
buildConfiguration = "Debug"
|
buildConfiguration = "Debug"
|
||||||
@@ -50,8 +61,8 @@
|
|||||||
<MacroExpansion>
|
<MacroExpansion>
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "pdex"
|
BlueprintIdentifier = "PlaydateKit"
|
||||||
BuildableName = "pdex"
|
BuildableName = "PlaydateKit"
|
||||||
ReferencedContainer = "container:">
|
ReferencedContainer = "container:">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</MacroExpansion>
|
</MacroExpansion>
|
||||||
@@ -2,12 +2,12 @@ REPO_ROOT := $(shell git rev-parse --show-toplevel)
|
|||||||
PRODUCT := HelloPlaydate.pdx
|
PRODUCT := HelloPlaydate.pdx
|
||||||
include $(REPO_ROOT)/Examples/swift.mk
|
include $(REPO_ROOT)/Examples/swift.mk
|
||||||
|
|
||||||
# MARK: - Build PlayDate Wrapper Swift Module
|
# MARK: - Build PlaydateKit Wrapper Swift Module
|
||||||
build/Modules/playdate_device.o: $(REPO_ROOT)/Sources/PlayDate/*.swift
|
build/Modules/playdate_device.o: $(REPO_ROOT)/Sources/PlaydateKit/*.swift
|
||||||
@mkdir -p build/Modules
|
@mkdir -p build/Modules
|
||||||
$(SWIFT_EXEC) $(SWIFT_FLAGS) $(SWIFT_FLAGS_DEVICE) -c $^ -emit-module -o $@
|
$(SWIFT_EXEC) $(SWIFT_FLAGS) $(SWIFT_FLAGS_DEVICE) -c $^ -emit-module -o $@
|
||||||
|
|
||||||
build/Modules/playdate_simulator.o: $(REPO_ROOT)/Sources/PlayDate/*.swift
|
build/Modules/playdate_simulator.o: $(REPO_ROOT)/Sources/PlaydateKit/*.swift
|
||||||
@mkdir -p build/Modules
|
@mkdir -p build/Modules
|
||||||
$(SWIFT_EXEC) $(SWIFT_FLAGS) $(SWIFT_FLAGS_SIMULATOR) -c $^ -emit-module -o $@
|
$(SWIFT_EXEC) $(SWIFT_FLAGS) $(SWIFT_FLAGS_SIMULATOR) -c $^ -emit-module -o $@
|
||||||
|
|
||||||
@@ -47,4 +47,4 @@ run: simulator
|
|||||||
# when building with build.sh.
|
# when building with build.sh.
|
||||||
clean: clean-swiftpm
|
clean: clean-swiftpm
|
||||||
clean-swiftpm:
|
clean-swiftpm:
|
||||||
-rm -rf .build
|
-rm -rf .build
|
||||||
@@ -13,15 +13,20 @@ let package = Package(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
dependencies: [
|
dependencies: [
|
||||||
.package(path: "../.."),
|
// The explicit name overrides the identity a path dependency
|
||||||
|
// otherwise derives from the checkout directory's name.
|
||||||
|
.package(
|
||||||
|
name: "playdate-kit",
|
||||||
|
path: "../.."
|
||||||
|
),
|
||||||
],
|
],
|
||||||
targets: [
|
targets: [
|
||||||
.target(
|
.target(
|
||||||
name: "HelloPlaydate",
|
name: "HelloPlaydate",
|
||||||
dependencies: [
|
dependencies: [
|
||||||
.product(
|
.product(
|
||||||
name: "PlayDate",
|
name: "PlaydateKit",
|
||||||
package: "play-date"
|
package: "playdate-kit"
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Hello Playdate
|
# Hello Playdate
|
||||||
|
|
||||||
A minimal game built on the `play-date` bindings: a bouncing box, a crank-aimed needle, button handling, a system menu item, and an FPS counter.
|
A minimal game built on the `playdate-kit` bindings: a bouncing box, a crank-aimed needle, button handling, a system menu item, and an FPS counter.
|
||||||
|
|
||||||
## Build and run (Playdate Simulator)
|
## Build and run (Playdate Simulator)
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
//
|
//
|
||||||
// Game.swift
|
// Game.swift
|
||||||
// A minimal Playdate game built on the play-date Swift bindings: a
|
// A minimal Playdate game built on the playdate-kit Swift bindings: a
|
||||||
// bouncing box, a crank-aimed needle, button logging, and a system menu
|
// bouncing box, a crank-aimed needle, button logging, and a system menu
|
||||||
// item.
|
// item.
|
||||||
//
|
//
|
||||||
|
|
||||||
import CPlaydate
|
import CPlaydate
|
||||||
import PlayDate
|
import PlaydateKit
|
||||||
|
|
||||||
@_cdecl("eventHandler")
|
@_cdecl("eventHandler")
|
||||||
public func eventHandler(
|
public func eventHandler(
|
||||||
|
|||||||
+2
-2
@@ -82,13 +82,13 @@ SWIFT_FLAGS_DEVICE := \
|
|||||||
$(addprefix -Xcc , $(C_FLAGS_DEVICE)) \
|
$(addprefix -Xcc , $(C_FLAGS_DEVICE)) \
|
||||||
-target armv7em-none-none-eabi \
|
-target armv7em-none-none-eabi \
|
||||||
-Xfrontend -experimental-platform-c-calling-convention=arm_aapcs_vfp \
|
-Xfrontend -experimental-platform-c-calling-convention=arm_aapcs_vfp \
|
||||||
-module-alias PlayDate=playdate_device \
|
-module-alias PlaydateKit=playdate_device \
|
||||||
|
|
||||||
C_FLAGS_SIMULATOR := \
|
C_FLAGS_SIMULATOR := \
|
||||||
|
|
||||||
SWIFT_FLAGS_SIMULATOR := \
|
SWIFT_FLAGS_SIMULATOR := \
|
||||||
$(addprefix -Xcc , $(C_FLAGS_SIMULATOR)) \
|
$(addprefix -Xcc , $(C_FLAGS_SIMULATOR)) \
|
||||||
-module-alias PlayDate=playdate_simulator \
|
-module-alias PlaydateKit=playdate_simulator \
|
||||||
|
|
||||||
SIMCOMPILER += \
|
SIMCOMPILER += \
|
||||||
-nostdlib \
|
-nostdlib \
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Development lifecycle front door for the play-date package. All logic
|
# Development lifecycle front door for the playdate-kit package. All logic
|
||||||
# lives in SwiftPM, Scripts/, and the example's own Makefile; the targets
|
# lives in SwiftPM, Scripts/, and the example's own Makefile; the targets
|
||||||
# here only dispatch. Run `make` or `make help` for the list.
|
# here only dispatch. Run `make` or `make help` for the list.
|
||||||
#
|
#
|
||||||
@@ -39,16 +39,16 @@ upgrade: ## Update the SwiftPM dependencies to their latest allowed versions
|
|||||||
embedded: ## Compile-only device check (Embedded Swift, armv7em-none-none-eabi)
|
embedded: ## Compile-only device check (Embedded Swift, armv7em-none-none-eabi)
|
||||||
SWIFT_BIN="$(SWIFT_BIN)" Scripts/build-embedded.sh
|
SWIFT_BIN="$(SWIFT_BIN)" Scripts/build-embedded.sh
|
||||||
|
|
||||||
consumer-test: ## Build and run a scratch package depending on play-date
|
consumer-test: ## Build and run a scratch package depending on playdate-kit
|
||||||
Scripts/consumer-test.sh
|
Scripts/consumer-test.sh
|
||||||
|
|
||||||
check: build test embedded consumer-test ## Everything CI runs: build, test, embedded, consumer-test
|
check: build test embedded consumer-test ## Everything CI runs: build, test, embedded, consumer-test
|
||||||
|
|
||||||
docs: ## Generate the DocC documentation archive
|
docs: ## Generate the DocC documentation archive
|
||||||
swift package generate-documentation --target PlayDate
|
swift package generate-documentation --target PlaydateKit
|
||||||
|
|
||||||
docs-preview: ## Preview the DocC documentation in a local web server
|
docs-preview: ## Preview the DocC documentation in a local web server
|
||||||
swift package --disable-sandbox preview-documentation --target PlayDate
|
swift package --disable-sandbox preview-documentation --target PlaydateKit
|
||||||
|
|
||||||
example: ## Build the HelloPlaydate example (device + simulator pdx)
|
example: ## Build the HelloPlaydate example (device + simulator pdx)
|
||||||
$(MAKE) -C $(EXAMPLE_DIR)
|
$(MAKE) -C $(EXAMPLE_DIR)
|
||||||
|
|||||||
+8
-8
@@ -3,11 +3,11 @@
|
|||||||
import PackageDescription
|
import PackageDescription
|
||||||
|
|
||||||
let package = Package(
|
let package = Package(
|
||||||
name: "play-date",
|
name: "playdate-kit",
|
||||||
products: [
|
products: [
|
||||||
.library(
|
.library(
|
||||||
name: "PlayDate",
|
name: "PlaydateKit",
|
||||||
targets: ["PlayDate"]
|
targets: ["PlaydateKit"]
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
dependencies: [
|
dependencies: [
|
||||||
@@ -26,17 +26,17 @@ let package = Package(
|
|||||||
pkgConfig: "playdate"
|
pkgConfig: "playdate"
|
||||||
),
|
),
|
||||||
.target(
|
.target(
|
||||||
name: "PlayDate",
|
name: "PlaydateKit",
|
||||||
dependencies: ["CPlaydate"],
|
dependencies: ["CPlaydate"],
|
||||||
path: "Sources/PlayDate",
|
path: "Sources/PlaydateKit",
|
||||||
swiftSettings: [
|
swiftSettings: [
|
||||||
.enableUpcomingFeature("ApproachableConcurrency"),
|
.enableUpcomingFeature("ApproachableConcurrency"),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
.testTarget(
|
.testTarget(
|
||||||
name: "PlayDateTests",
|
name: "PlaydateKitTests",
|
||||||
dependencies: ["PlayDate"],
|
dependencies: ["PlaydateKit"],
|
||||||
path: "Tests/PlayDate",
|
path: "Tests/PlaydateKit",
|
||||||
swiftSettings: [
|
swiftSettings: [
|
||||||
.enableUpcomingFeature("ApproachableConcurrency"),
|
.enableUpcomingFeature("ApproachableConcurrency"),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# PlayDate
|
# PlaydateKit
|
||||||
|
|
||||||
[](https://github.com/<you>/play-date/actions/workflows/ci.yml)
|
[](https://github.com/<you>/playdate-kit/actions/workflows/ci.yml)
|
||||||
|
|
||||||
Swift bindings to the [Playdate](https://play.date) C API.
|
Swift bindings to the [Playdate](https://play.date) C API.
|
||||||
|
|
||||||
@@ -48,14 +48,14 @@ If Xcode had the package open before you ran the script, make it re-read the man
|
|||||||
```swift
|
```swift
|
||||||
// Package.swift of your game
|
// Package.swift of your game
|
||||||
dependencies: [
|
dependencies: [
|
||||||
.package(url: "https://github.com/<you>/play-date.git", from: "0.1.0"),
|
.package(url: "https://github.com/<you>/playdate-kit.git", from: "0.1.0"),
|
||||||
// …or, while developing locally:
|
// …or, while developing locally:
|
||||||
// .package(path: "../play-date"),
|
// .package(path: "../playdate-kit"),
|
||||||
],
|
],
|
||||||
targets: [
|
targets: [
|
||||||
.target(
|
.target(
|
||||||
name: "MyGame",
|
name: "MyGame",
|
||||||
dependencies: [.product(name: "PlayDate", package: "play-date")]
|
dependencies: [.product(name: "PlaydateKit", package: "playdate-kit")]
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
@@ -66,7 +66,7 @@ A Playdate game has a single C entry point, `eventHandler`. Export it with `@_cd
|
|||||||
|
|
||||||
```swift
|
```swift
|
||||||
import CPlaydate
|
import CPlaydate
|
||||||
import PlayDate
|
import PlaydateKit
|
||||||
|
|
||||||
@_cdecl("eventHandler")
|
@_cdecl("eventHandler")
|
||||||
func eventHandler(
|
func eventHandler(
|
||||||
@@ -289,7 +289,7 @@ try Lua.addFunction(double, name: "mylib.double")
|
|||||||
|
|
||||||
## Conventions
|
## Conventions
|
||||||
|
|
||||||
- **Namespaces.** The subsystem namespaces (`System`, `Graphics`, `Sound`, …) live at the top level of the module; only the raw C API bootstrap stays under `Playdate` (`Playdate.initialize(with:)`, `Playdate.api`). On a name collision with another module, qualify with the module name: `PlayDate.System`.
|
- **Namespaces.** The subsystem namespaces (`System`, `Graphics`, `Sound`, …) live at the top level of the module; only the raw C API bootstrap stays under `Playdate` (`Playdate.initialize(with:)`, `Playdate.api`). On a name collision with another module, qualify with the module name: `PlaydateKit.System`.
|
||||||
- **Errors.** Fallible operations use typed throws — `throws(PlaydateError)` generally, `throws(Network.NetError)` for network I/O — so `catch` gives you a concrete type, and no `any Error` existentials are needed.
|
- **Errors.** Fallible operations use typed throws — `throws(PlaydateError)` generally, `throws(Network.NetError)` for network I/O — so `catch` gives you a concrete type, and no `any Error` existentials are needed.
|
||||||
- **Ownership.** A wrapper that *creates* a C object frees it on `deinit`; keep the wrapper referenced for as long as you use it. Wrappers vending OS-owned objects (a `Bitmap` from a `BitmapTable`, a track from a `Sequence`, …) don't free them — keep the owner alive instead, as documented on each API. Resources a C object keeps referencing (a sprite's image, a synth's sample, modulators, menu-item option titles) are retained by the wrapper automatically.
|
- **Ownership.** A wrapper that *creates* a C object frees it on `deinit`; keep the wrapper referenced for as long as you use it. Wrappers vending OS-owned objects (a `Bitmap` from a `BitmapTable`, a track from a `Sequence`, …) don't free them — keep the owner alive instead, as documented on each API. Resources a C object keeps referencing (a sprite's image, a synth's sample, modulators, menu-item option titles) are retained by the wrapper automatically.
|
||||||
- **Callbacks.** Where the C API provides a userdata slot, closures are supported everywhere and delivered back with the right wrapper. A few C callbacks have no userdata (serial messages, headphone changes, scoreboard
|
- **Callbacks.** Where the C API provides a userdata slot, closures are supported everywhere and delivered back with the right wrapper. A few C callbacks have no userdata (serial messages, headphone changes, scoreboard
|
||||||
@@ -305,7 +305,7 @@ Shipping a `.pdx` needs the Playdate toolchain on top:
|
|||||||
- **Simulator** builds compile your game as a host dylib placed in the pdx (`Examples/HelloPlaydate/build.sh` shows the SwiftPM-based flow).
|
- **Simulator** builds compile your game as a host dylib placed in the pdx (`Examples/HelloPlaydate/build.sh` shows the SwiftPM-based flow).
|
||||||
- **Device** builds cross-compile with Embedded Swift for ARM Cortex-M7 (`-enable-experimental-feature Embedded`, triple `armv7em-none-none-eabi`, `-fshort-enums` to match the firmware ABI) and link through the SDK's own make infrastructure.
|
- **Device** builds cross-compile with Embedded Swift for ARM Cortex-M7 (`-enable-experimental-feature Embedded`, triple `armv7em-none-none-eabi`, `-fshort-enums` to match the firmware ABI) and link through the SDK's own make infrastructure.
|
||||||
|
|
||||||
[`Examples/swift.mk`](Examples/swift.mk) packages the device pipeline: it locates the SDK and a Swift snapshot toolchain, compiles the `PlayDate` wrapper as a module-aliased Embedded Swift module, and hooks the game objects into the SDK's `common.mk`. A game needs only a short Makefile on top — [`Examples/HelloPlaydate/Makefile`](Examples/HelloPlaydate/Makefile) is the template, and `make` in that directory produces a `.pdx` containing both the device binary and the simulator dylib. Swift code is compiled `-Osize` by default (measured ~15% smaller than `-O` on the example); override with `make SWIFT_OPT=-O`. The setup follows Apple's [swift-playdate-examples](https://github.com/apple/swift-playdate-examples), adapted to this package.
|
[`Examples/swift.mk`](Examples/swift.mk) packages the device pipeline: it locates the SDK and a Swift snapshot toolchain, compiles the `PlaydateKit` wrapper as a module-aliased Embedded Swift module, and hooks the game objects into the SDK's `common.mk`. A game needs only a short Makefile on top — [`Examples/HelloPlaydate/Makefile`](Examples/HelloPlaydate/Makefile) is the template, and `make` in that directory produces a `.pdx` containing both the device binary and the simulator dylib. Swift code is compiled `-Osize` by default (measured ~15% smaller than `-O` on the example); override with `make SWIFT_OPT=-O`. The setup follows Apple's [swift-playdate-examples](https://github.com/apple/swift-playdate-examples), adapted to this package.
|
||||||
|
|
||||||
The wrappers are written within the Embedded Swift subset for exactly this reason: no Foundation, no reflection, no untyped throws. That claim is enforced, not aspirational: `Scripts/build-embedded.sh` cross-compiles the whole module for `armv7em-none-none-eabi` with Embedded Swift enabled and the device's `-fshort-enums` ABI, and CI runs it on every push. Running it locally needs the same snapshot toolchain and Arm GNU toolchain headers:
|
The wrappers are written within the Embedded Swift subset for exactly this reason: no Foundation, no reflection, no untyped throws. That claim is enforced, not aspirational: `Scripts/build-embedded.sh` cross-compiles the whole module for `armv7em-none-none-eabi` with Embedded Swift enabled and the device's `-fshort-enums` ABI, and CI runs it on every push. Running it locally needs the same snapshot toolchain and Arm GNU toolchain headers:
|
||||||
|
|
||||||
@@ -324,7 +324,7 @@ A root Makefile fronts the development lifecycle; a bare `make` (or `make help`)
|
|||||||
| `make build` / `make test` | Build the bindings for the host / run the unit tests |
|
| `make build` / `make test` | Build the bindings for the host / run the unit tests |
|
||||||
| `make outdated` / `make upgrade` | Show / apply updates to the SwiftPM dependencies |
|
| `make outdated` / `make upgrade` | Show / apply updates to the SwiftPM dependencies |
|
||||||
| `make embedded` | Compile-only device check (Embedded Swift, `armv7em-none-none-eabi`) |
|
| `make embedded` | Compile-only device check (Embedded Swift, `armv7em-none-none-eabi`) |
|
||||||
| `make consumer-test` | Build and run a scratch package depending on play-date |
|
| `make consumer-test` | Build and run a scratch package depending on playdate-kit |
|
||||||
| `make check` | Everything CI runs: build, test, embedded, consumer-test |
|
| `make check` | Everything CI runs: build, test, embedded, consumer-test |
|
||||||
| `make docs` / `make docs-preview` | Generate / preview the DocC documentation |
|
| `make docs` / `make docs-preview` | Generate / preview the DocC documentation |
|
||||||
| `make example` / `make example-run` | Build the HelloPlaydate example / open it in the Playdate Simulator |
|
| `make example` / `make example-run` | Build the HelloPlaydate example / open it in the Playdate Simulator |
|
||||||
@@ -352,7 +352,7 @@ Sideload the device build from the Playdate Simulator (Device ▸ Upload Game to
|
|||||||
The API reference is a DocC catalog. Generate it locally with:
|
The API reference is a DocC catalog. Generate it locally with:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
swift package generate-documentation --target PlayDate
|
swift package generate-documentation --target PlaydateKit
|
||||||
```
|
```
|
||||||
|
|
||||||
or browse it with Xcode's documentation viewer (Product ▸ Build Documentation). Pushes to `main` publish the rendered docs to GitHub Pages via `.github/workflows/docs.yml` (enable Pages ▸ Source: GitHub Actions in the repository settings once).
|
or browse it with Xcode's documentation viewer (Product ▸ Build Documentation). Pushes to `main` publish the rendered docs to GitHub Pages via `.github/workflows/docs.yml` (enable Pages ▸ Source: GitHub Actions in the repository settings once).
|
||||||
@@ -370,17 +370,17 @@ Scripts/
|
|||||||
module at your SDK installation
|
module at your SDK installation
|
||||||
build-embedded.sh Compile-only device check: Embedded Swift for
|
build-embedded.sh Compile-only device check: Embedded Swift for
|
||||||
armv7em-none-none-eabi with the device ABI (CI)
|
armv7em-none-none-eabi with the device ABI (CI)
|
||||||
consumer-test.sh Builds a scratch package depending on play-date
|
consumer-test.sh Builds a scratch package depending on playdate-kit
|
||||||
to prove settings propagate to consumers (CI)
|
to prove settings propagate to consumers (CI)
|
||||||
Sources/
|
Sources/
|
||||||
CPlaydate/ System library target: module map + umbrella header
|
CPlaydate/ System library target: module map + umbrella header
|
||||||
importing pd_api.h from the SDK, plus inline shims for
|
importing pd_api.h from the SDK, plus inline shims for
|
||||||
the variadic log/error functions
|
the variadic log/error functions
|
||||||
PlayDate/ The Swift bindings, one file per subsystem
|
PlaydateKit/ The Swift bindings, one file per subsystem
|
||||||
(Sound and Graphics are split across several files),
|
(Sound and Graphics are split across several files),
|
||||||
plus the PlayDate.docc documentation catalog
|
plus the PlaydateKit.docc documentation catalog
|
||||||
Tests/
|
Tests/
|
||||||
PlayDate/ Host-runnable tests for the pure value types
|
PlaydateKit/ Host-runnable tests for the pure value types
|
||||||
```
|
```
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Cross-compiles the PlayDate target for Playdate hardware (Embedded Swift,
|
# Cross-compiles the PlaydateKit target for Playdate hardware (Embedded Swift,
|
||||||
# ARM Cortex-M7) as a compile-only check that the bindings stay within the
|
# ARM Cortex-M7) as a compile-only check that the bindings stay within the
|
||||||
# Embedded Swift subset. Linking is left to game projects.
|
# Embedded Swift subset. Linking is left to game projects.
|
||||||
#
|
#
|
||||||
@@ -46,7 +46,7 @@ echo "Using arm-none-eabi headers: $include_dir"
|
|||||||
# bare-metal ELF objects.
|
# bare-metal ELF objects.
|
||||||
exec "$swift_bin" build \
|
exec "$swift_bin" build \
|
||||||
--build-system native \
|
--build-system native \
|
||||||
--target PlayDate \
|
--target PlaydateKit \
|
||||||
--triple armv7em-none-none-eabi \
|
--triple armv7em-none-none-eabi \
|
||||||
-Xswiftc -enable-experimental-feature -Xswiftc Embedded \
|
-Xswiftc -enable-experimental-feature -Xswiftc Embedded \
|
||||||
-Xswiftc -wmo \
|
-Xswiftc -wmo \
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Verifies the package works as a SwiftPM dependency: generates a scratch
|
# Verifies the package works as a SwiftPM dependency: generates a scratch
|
||||||
# executable package that depends on play-date, imports both modules, and
|
# executable package that depends on playdate-kit, imports both modules, and
|
||||||
# runs it. This guards the pkg-config setup — target settings that don't
|
# runs it. This guards the pkg-config setup — target settings that don't
|
||||||
# propagate to consumers (or manifest validation failures) surface here,
|
# propagate to consumers (or manifest validation failures) surface here,
|
||||||
# not on this package's own build.
|
# not on this package's own build.
|
||||||
@@ -21,12 +21,14 @@ import PackageDescription
|
|||||||
let package = Package(
|
let package = Package(
|
||||||
name: "consumer",
|
name: "consumer",
|
||||||
dependencies: [
|
dependencies: [
|
||||||
.package(path: "$package_dir"),
|
// The explicit name overrides the identity a path dependency
|
||||||
|
// otherwise derives from the checkout directory's name.
|
||||||
|
.package(name: "playdate-kit", path: "$package_dir"),
|
||||||
],
|
],
|
||||||
targets: [
|
targets: [
|
||||||
.executableTarget(
|
.executableTarget(
|
||||||
name: "consumer",
|
name: "consumer",
|
||||||
dependencies: [.product(name: "PlayDate", package: "play-date")]
|
dependencies: [.product(name: "PlaydateKit", package: "playdate-kit")]
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
@@ -34,7 +36,7 @@ EOF
|
|||||||
|
|
||||||
cat > "$scratch_dir/Sources/consumer/main.swift" <<'EOF'
|
cat > "$scratch_dir/Sources/consumer/main.swift" <<'EOF'
|
||||||
import CPlaydate
|
import CPlaydate
|
||||||
import PlayDate
|
import PlaydateKit
|
||||||
|
|
||||||
// Touch a type from each module to prove both import and link.
|
// Touch a type from each module to prove both import and link.
|
||||||
let event = SystemEvent(event: kEventInit, argument: 0)
|
let event = SystemEvent(event: kEventInit, argument: 0)
|
||||||
|
|||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1
-1
@@ -11,7 +11,7 @@ install an update callback:
|
|||||||
|
|
||||||
```swift
|
```swift
|
||||||
import CPlaydate
|
import CPlaydate
|
||||||
import PlayDate
|
import PlaydateKit
|
||||||
|
|
||||||
@_cdecl("eventHandler")
|
@_cdecl("eventHandler")
|
||||||
func eventHandler(
|
func eventHandler(
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
# ``PlayDate``
|
# ``PlaydateKit``
|
||||||
|
|
||||||
Swift bindings to the Playdate C API.
|
Swift bindings to the Playdate C API.
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// PlayDate.swift
|
// PlaydateKit.swift
|
||||||
// Swift bindings to the Playdate C API.
|
// Swift bindings to the Playdate C API.
|
||||||
//
|
//
|
||||||
// The C API is delivered as a `PlaydateAPI` struct of function pointers that
|
// The C API is delivered as a `PlaydateAPI` struct of function pointers that
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
public import CPlaydate
|
public import CPlaydate
|
||||||
|
|
||||||
/// The raw C API bootstrap. Everything else in this module (System,
|
/// The raw C API bootstrap. Everything else in this module (System,
|
||||||
/// Graphics, Sprite, Sound, ...) lives at the top level of the `PlayDate`
|
/// Graphics, Sprite, Sound, ...) lives at the top level of the `PlaydateKit`
|
||||||
/// module and requires `initialize(with:)` to have been called first.
|
/// module and requires `initialize(with:)` to have been called first.
|
||||||
public enum Playdate {
|
public enum Playdate {
|
||||||
/// The raw C API. Populated by `initialize(with:)`.
|
/// The raw C API. Populated by `initialize(with:)`.
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -9,7 +9,7 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
import CPlaydate
|
import CPlaydate
|
||||||
@testable import PlayDate
|
@testable import PlaydateKit
|
||||||
|
|
||||||
enum Mock {
|
enum Mock {
|
||||||
// MARK: - Stable API allocations
|
// MARK: - Stable API allocations
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import Testing
|
import Testing
|
||||||
@testable import PlayDate
|
@testable import PlaydateKit
|
||||||
|
|
||||||
// Most of the binding requires a running Playdate (the API struct is handed
|
// Most of the binding requires a running Playdate (the API struct is handed
|
||||||
// to the game at launch), so these tests cover the pure value types and the
|
// to the game at launch), so these tests cover the pure value types and the
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
import CPlaydate
|
import CPlaydate
|
||||||
import Testing
|
import Testing
|
||||||
@testable import PlayDate
|
@testable import PlaydateKit
|
||||||
|
|
||||||
@Suite(.serialized)
|
@Suite(.serialized)
|
||||||
struct WrapperTests {
|
struct WrapperTests {
|
||||||
Reference in new issue
Block a user