Files
playdate-kit/Examples/HelloPlaydate/Makefile
T
javier 2e7ee12ec1
CI / Build & test (macOS) (push) Has been cancelled
CI / Embedded Swift cross-compile (push) Has been cancelled
Documentation / deploy (push) Has been cancelled
Adjusted the naming of the library in the Package file.
2026-07-25 12:02:55 +02:00

51 lines
2.2 KiB
Makefile

REPO_ROOT := $(shell git rev-parse --show-toplevel)
PRODUCT := HelloPlaydate.pdx
include $(REPO_ROOT)/Examples/swift.mk
# MARK: - Build PlaydateKit Wrapper Swift Module
build/Modules/playdate_device.o: $(REPO_ROOT)/Sources/PlaydateKit/*.swift
@mkdir -p build/Modules
$(SWIFT_EXEC) $(SWIFT_FLAGS) $(SWIFT_FLAGS_DEVICE) -c $^ -emit-module -o $@
build/Modules/playdate_simulator.o: $(REPO_ROOT)/Sources/PlaydateKit/*.swift
@mkdir -p build/Modules
$(SWIFT_EXEC) $(SWIFT_FLAGS) $(SWIFT_FLAGS_SIMULATOR) -c $^ -emit-module -o $@
# MARK: - Build Game Swift Object
# The wrapper module is a normal prerequisite so wrapper edits also rebuild
# the game object; only the Swift sources are compiler inputs.
build/game_device.o: Sources/HelloPlaydate/*.swift build/Modules/playdate_device.o
$(SWIFT_EXEC) $(SWIFT_FLAGS) $(SWIFT_FLAGS_DEVICE) -c $(filter %.swift,$^) -o $@
$(OBJDIR)/pdex.elf: build/game_device.o
OBJS += build/game_device.o
# The wrapper object carries symbols that are not emitted into the game
# object, such as the posix_memalign shim the Embedded Swift runtime needs.
# common.mk expanded OBJS before this line, so the link prerequisite has to
# be added explicitly as well.
$(OBJDIR)/pdex.elf: build/Modules/playdate_device.o
OBJS += build/Modules/playdate_device.o
build/game_simulator.o: Sources/HelloPlaydate/*.swift build/Modules/playdate_simulator.o
$(SWIFT_EXEC) $(SWIFT_FLAGS) $(SWIFT_FLAGS_SIMULATOR) -c $(filter %.swift,$^) -o $@
$(OBJDIR)/pdex.${DYLIB_EXT}: build/game_simulator.o
SIMCOMPILER += build/game_simulator.o
# MARK: - Convenience Targets
# The SDK's common.mk (included via swift.mk) already provides the build
# targets, all packaging $(PRODUCT) with pdc:
# make device binary + simulator dylib (alias: all)
# make simulator simulator dylib only
# make device device binary only
.PHONY: run clean-swiftpm
# Build the simulator flavor and launch the pdx in the Playdate Simulator.
run: simulator
open -a "$(SDK)/bin/Playdate Simulator.app" $(PRODUCT)
# common.mk's clean removes the build folder, $(PRODUCT), and the binaries
# copied into Source/; also drop the .build folder SwiftPM leaves behind
# when building with build.sh.
clean: clean-swiftpm
clean-swiftpm:
-rm -rf .build