From 690e307f35719c1804d50f99bac2cd910885de04 Mon Sep 17 00:00:00 2001 From: Tyler Jaacks Date: Thu, 25 Jul 2024 17:38:48 -0500 Subject: [PATCH 1/6] Added Linux build support. --- Examples/Life/Package.swift | 16 ++++---- Examples/Life/Source/pdex.so | Bin 0 -> 71856 bytes Examples/SwiftBreak/Package.swift | 13 +++--- Examples/SwiftBreak/Source/pdex.so | Bin 0 -> 84176 bytes Examples/Template/Package.swift | 13 +++--- Examples/swift.mk | 64 +++++++++++++++++++---------- Package.swift | 18 ++++---- 7 files changed, 75 insertions(+), 49 deletions(-) create mode 100755 Examples/Life/Source/pdex.so create mode 100755 Examples/SwiftBreak/Source/pdex.so diff --git a/Examples/Life/Package.swift b/Examples/Life/Package.swift index 434555d..2287ffc 100644 --- a/Examples/Life/Package.swift +++ b/Examples/Life/Package.swift @@ -2,10 +2,13 @@ import PackageDescription -let gccIncludePrefix = - "/usr/local/playdate/gcc-arm-none-eabi-9-2019-q4-major/lib/gcc/arm-none-eabi/9.2.1" -guard let home = Context.environment["HOME"] else { - fatalError("could not determine home directory") +// TODO: Give this variable a better name both for the code and the enviroment variable. +guard let gccIncludePrefix = Context.environment["GCC_ARM_PLAYDATE_PATH"] else { + fatalError("Make sure you have the GCC_ARM_PLAYDATE_PATH variable defined.") +} + +guard let playdate_sdk_path = Context.environment["PLAYDATE_SDK_PATH"] else { + fatalError("Make sure you have the PLAYDATE_SDK_PATH variable defined.") } let swiftSettingsSimulator: [SwiftSetting] = [ @@ -19,15 +22,12 @@ let swiftSettingsSimulator: [SwiftSetting] = [ "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/include", "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/include-fixed", "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/../../../../arm-none-eabi/include", - "-I", "\(home)/Developer/PlaydateSDK/C_API", + "-I", "\(playdate_sdk_path)/C_API", ]), ] let package = Package( name: "Life", - platforms: [ - .macOS(.v14) - ], products: [ .library(name: "Life", targets: ["Life"]) ], diff --git a/Examples/Life/Source/pdex.so b/Examples/Life/Source/pdex.so new file mode 100755 index 0000000000000000000000000000000000000000..3329e852881dcd944ae4f773b082874b338947b7 GIT binary patch literal 71856 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 literal 0 HcmV?d00001 diff --git a/Examples/Template/Package.swift b/Examples/Template/Package.swift index 2127fc8..4d53416 100644 --- a/Examples/Template/Package.swift +++ b/Examples/Template/Package.swift @@ -2,10 +2,13 @@ import PackageDescription -let gccIncludePrefix = - "/usr/local/playdate/gcc-arm-none-eabi-9-2019-q4-major/lib/gcc/arm-none-eabi/9.2.1" -guard let home = Context.environment["HOME"] else { - fatalError("could not determine home directory") +// TODO: Give this variable a better name both for the code and the enviroment variable. +guard let gccIncludePrefix = Context.environment["GCC_ARM_PLAYDATE_PATH"] else { + fatalError("Make sure you have the GCC_ARM_PLAYDATE_PATH variable defined.") +} + +guard let playdate_sdk_path = Context.environment["PLAYDATE_SDK_PATH"] else { + fatalError("Make sure you have the PLAYDATE_SDK_PATH variable defined.") } let swiftSettingsSimulator: [SwiftSetting] = [ @@ -19,7 +22,7 @@ let swiftSettingsSimulator: [SwiftSetting] = [ "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/include", "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/include-fixed", "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/../../../../arm-none-eabi/include", - "-I", "\(home)/Developer/PlaydateSDK/C_API", + "-I", "\(playdate_sdk_path)/C_API", ]), ] diff --git a/Examples/swift.mk b/Examples/swift.mk index d3fc471..32b418e 100644 --- a/Examples/swift.mk +++ b/Examples/swift.mk @@ -13,26 +13,35 @@ endif include $(SDK)/C_API/buildsupport/common.mk -# Determine the Swift toolchain by order of preference: -# -# 1. the presence of a TOOLCHAINS environment value -# 2. a Swift toolchain installed for the current user (e.g. 'Install for me only') -# 3. a Swift toolchain installed for all users (e.g. 'Install for all users on this computer') -RELATIVE_TOOLCHAIN_PATH = Library/Developer/Toolchains/swift-latest.xctoolchain -ifneq ($(TOOLCHAINS),) -else ifneq ($(wildcard $(HOME)/$(RELATIVE_TOOLCHAIN_PATH)),) -TOOLCHAINS = $(shell plutil -extract CFBundleIdentifier raw -o - $(HOME)/$(RELATIVE_TOOLCHAIN_PATH)/Info.plist) -else ifneq ($(wildcard /$(RELATIVE_TOOLCHAIN_PATH)),) -TOOLCHAINS = $(shell plutil -extract CFBundleIdentifier raw -o - /$(RELATIVE_TOOLCHAIN_PATH)/Info.plist) -else -$(error Swift toolchain not found; set ENV value TOOLCHAINS (e.g. TOOLCHAINS=org.swift.59202403121a make)) -endif +UNAME_S := $(shell uname -s) GCC_INCLUDE_PATHS := $(shell $(CC) -E -Wp,-v -xc /dev/null 2>&1 | egrep '^ ' | xargs echo ) -SWIFT_EXEC := "$(shell TOOLCHAINS=$(TOOLCHAINS) xcrun -f swiftc)" -TOOLCHAIN_PATH := $(shell echo $(SWIFT_EXEC)|sed s'/.xctoolchain.*/.xctoolchain/') -$(info Using Swift toolchain "$(TOOLCHAINS)" (from $(TOOLCHAIN_PATH))) +ifeq ($(UNAME_S),Linux) + # TODO: Maybe find this via environment variable or something. + SWIFT_EXEC := "swiftc" +endif +ifeq ($(UNAME_S),Darwin) + # Determine the Swift toolchain by order of preference: + # + # 1. the presence of a TOOLCHAINS environment value + # 2. a Swift toolchain installed for the current user (e.g. 'Install for me only') + # 3. a Swift toolchain installed for all users (e.g. 'Install for all users on this computer') + RELATIVE_TOOLCHAIN_PATH = Library/Developer/Toolchains/swift-latest.xctoolchain + ifneq ($(TOOLCHAINS),) + else ifneq ($(wildcard $(HOME)/$(RELATIVE_TOOLCHAIN_PATH)),) + TOOLCHAINS = $(shell plutil -extract CFBundleIdentifier raw -o - $(HOME)/$(RELATIVE_TOOLCHAIN_PATH)/Info.plist) + else ifneq ($(wildcard /$(RELATIVE_TOOLCHAIN_PATH)),) + TOOLCHAINS = $(shell plutil -extract CFBundleIdentifier raw -o - /$(RELATIVE_TOOLCHAIN_PATH)/Info.plist) + else + $(error Swift toolchain not found; set ENV value TOOLCHAINS (e.g. TOOLCHAINS=org.swift.59202403121a make)) + endif + + SWIFT_EXEC := "$(shell TOOLCHAINS=$(TOOLCHAINS) xcrun -f swiftc)" + TOOLCHAIN_PATH := $(shell echo $(SWIFT_EXEC)|sed s'/.xctoolchain.*/.xctoolchain/') + + $(info Using Swift toolchain "$(TOOLCHAINS)" (from $(TOOLCHAIN_PATH))) +endif C_FLAGS := \ $(addprefix -I ,$(GCC_INCLUDE_PATHS)) \ @@ -72,8 +81,19 @@ SWIFT_FLAGS_SIMULATOR := \ $(addprefix -Xcc , $(C_FLAGS_SIMULATOR)) \ -module-alias Playdate=playdate_simulator \ -SIMCOMPILER += \ - -nostdlib \ - -dead_strip \ - -Wl,-exported_symbol,_eventHandlerShim \ - -Wl,-exported_symbol,_eventHandler \ + +ifeq ($(UNAME_S),Linux) + SIMCOMPILER += \ + -nostdlib \ + -dead_strip \ + # TODO: Figure out to fix this. + #-Wl,-exported_symbol,_eventHandlerShim \ + -Wl,-exported_symbol,_eventHandler +endif +ifeq ($(UNAME_S),Darwin) + SIMCOMPILER += \ + -nostdlib \ + -dead_strip \ + -Wl,-exported_symbol,_eventHandlerShim \ + -Wl,-exported_symbol,_eventHandler +endif \ No newline at end of file diff --git a/Package.swift b/Package.swift index 01a75c4..4a03770 100644 --- a/Package.swift +++ b/Package.swift @@ -2,10 +2,13 @@ import PackageDescription -let gccIncludePrefix = - "/usr/local/playdate/gcc-arm-none-eabi-9-2019-q4-major/lib/gcc/arm-none-eabi/9.2.1" -guard let home = Context.environment["HOME"] else { - fatalError("could not determine home directory") +// TODO: Give this variable a better name both for the code and the enviroment variable. +guard let gccIncludePrefix = Context.environment["GCC_ARM_PLAYDATE_PATH"] else { + fatalError("Make sure you have the GCC_ARM_PLAYDATE_PATH variable defined.") +} + +guard let playdate_sdk_path = Context.environment["PLAYDATE_SDK_PATH"] else { + fatalError("Make sure you have the PLAYDATE_SDK_PATH variable defined.") } let swiftSettingsSimulator: [SwiftSetting] = [ @@ -19,7 +22,7 @@ let swiftSettingsSimulator: [SwiftSetting] = [ "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/include", "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/include-fixed", "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/../../../../arm-none-eabi/include", - "-I", "\(home)/Developer/PlaydateSDK/C_API", + "-I", "\(playdate_sdk_path)/C_API", ]), ] @@ -29,15 +32,12 @@ let cSettingsSimulator: [CSetting] = [ "-I", "\(gccIncludePrefix)/include", "-I", "\(gccIncludePrefix)/include-fixed", "-I", "\(gccIncludePrefix)/../../../../arm-none-eabi/include", - "-I", "\(home)/Developer/PlaydateSDK/C_API", + "-I", "\(playdate_sdk_path)/C_API", ]) ] let package = Package( name: "swift-playdate-examples", - platforms: [ - .macOS(.v14) - ], products: [ .library(name: "Playdate", targets: ["Playdate"]), .library(name: "CPlaydate", targets: ["CPlaydate"]), From 767de245aaa659b573702569608679ffd6cc664b Mon Sep 17 00:00:00 2001 From: Tyler Jaacks Date: Thu, 1 Aug 2024 21:42:02 -0500 Subject: [PATCH 2/6] Update Package.swift --- Package.swift | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Package.swift b/Package.swift index 4a03770..444a19b 100644 --- a/Package.swift +++ b/Package.swift @@ -2,12 +2,11 @@ import PackageDescription -// TODO: Give this variable a better name both for the code and the enviroment variable. -guard let gccIncludePrefix = Context.environment["GCC_ARM_PLAYDATE_PATH"] else { - fatalError("Make sure you have the GCC_ARM_PLAYDATE_PATH variable defined.") +guard let gccIncludePrefix = Context.environment["GCC_ARM_INCLUDE_PREFIX_PATH"] else { + fatalError("Make sure you have the GCC_ARM_INCLUDE_PREFIX_PATH variable defined.") } -guard let playdate_sdk_path = Context.environment["PLAYDATE_SDK_PATH"] else { +guard let playdateSdkPath = Context.environment["PLAYDATE_SDK_PATH"] else { fatalError("Make sure you have the PLAYDATE_SDK_PATH variable defined.") } @@ -22,7 +21,7 @@ let swiftSettingsSimulator: [SwiftSetting] = [ "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/include", "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/include-fixed", "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/../../../../arm-none-eabi/include", - "-I", "\(playdate_sdk_path)/C_API", + "-I", "\(playdateSdkPath)/C_API", ]), ] @@ -32,7 +31,7 @@ let cSettingsSimulator: [CSetting] = [ "-I", "\(gccIncludePrefix)/include", "-I", "\(gccIncludePrefix)/include-fixed", "-I", "\(gccIncludePrefix)/../../../../arm-none-eabi/include", - "-I", "\(playdate_sdk_path)/C_API", + "-I", "\(playdateSdkPath)/C_API", ]) ] From 626ebb88aa2a5b8f83574e1d8d7537dfe2b5c3b1 Mon Sep 17 00:00:00 2001 From: Tyler Jaacks Date: Thu, 1 Aug 2024 21:42:42 -0500 Subject: [PATCH 3/6] Update Package.swift --- Examples/Template/Package.swift | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Examples/Template/Package.swift b/Examples/Template/Package.swift index 4d53416..7f14575 100644 --- a/Examples/Template/Package.swift +++ b/Examples/Template/Package.swift @@ -2,12 +2,11 @@ import PackageDescription -// TODO: Give this variable a better name both for the code and the enviroment variable. -guard let gccIncludePrefix = Context.environment["GCC_ARM_PLAYDATE_PATH"] else { - fatalError("Make sure you have the GCC_ARM_PLAYDATE_PATH variable defined.") +guard let gccIncludePrefix = Context.environment["GCC_ARM_INCLUDE_PREFIX_PATH"] else { + fatalError("Make sure you have the GCC_ARM_INCLUDE_PREFIX_PATH variable defined.") } -guard let playdate_sdk_path = Context.environment["PLAYDATE_SDK_PATH"] else { +guard let playdateSdkPath = Context.environment["PLAYDATE_SDK_PATH"] else { fatalError("Make sure you have the PLAYDATE_SDK_PATH variable defined.") } @@ -22,7 +21,7 @@ let swiftSettingsSimulator: [SwiftSetting] = [ "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/include", "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/include-fixed", "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/../../../../arm-none-eabi/include", - "-I", "\(playdate_sdk_path)/C_API", + "-I", "\(playdateSdkPath)/C_API", ]), ] From 5655ab6ae752059be90514e4fcaae844ce97652b Mon Sep 17 00:00:00 2001 From: Tyler Jaacks Date: Thu, 1 Aug 2024 21:43:09 -0500 Subject: [PATCH 4/6] Update Package.swift --- Examples/SwiftBreak/Package.swift | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Examples/SwiftBreak/Package.swift b/Examples/SwiftBreak/Package.swift index 2c63c0c..146244c 100644 --- a/Examples/SwiftBreak/Package.swift +++ b/Examples/SwiftBreak/Package.swift @@ -2,12 +2,11 @@ import PackageDescription -// TODO: Give this variable a better name both for the code and the enviroment variable. -guard let gccIncludePrefix = Context.environment["GCC_ARM_PLAYDATE_PATH"] else { - fatalError("Make sure you have the GCC_ARM_PLAYDATE_PATH variable defined.") +guard let gccIncludePrefix = Context.environment["GCC_ARM_INCLUDE_PREFIX_PATH"] else { + fatalError("Make sure you have the GCC_ARM_INCLUDE_PREFIX_PATH variable defined.") } -guard let playdate_sdk_path = Context.environment["PLAYDATE_SDK_PATH"] else { +guard let playdateSdkPath = Context.environment["PLAYDATE_SDK_PATH"] else { fatalError("Make sure you have the PLAYDATE_SDK_PATH variable defined.") } @@ -23,7 +22,7 @@ let swiftSettingsSimulator: [SwiftSetting] = [ "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/include", "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/include-fixed", "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/../../../../arm-none-eabi/include", - "-I", "\(playdate_sdk_path)/C_API", + "-I", "\(playdateSdkPath)/C_API", ]), ] From 72894b6a91c5e1694c25ec3e5977908e3e266ac1 Mon Sep 17 00:00:00 2001 From: Tyler Jaacks Date: Thu, 1 Aug 2024 21:43:28 -0500 Subject: [PATCH 5/6] Update Package.swift --- Examples/Life/Package.swift | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Examples/Life/Package.swift b/Examples/Life/Package.swift index 2287ffc..026a5b6 100644 --- a/Examples/Life/Package.swift +++ b/Examples/Life/Package.swift @@ -2,12 +2,11 @@ import PackageDescription -// TODO: Give this variable a better name both for the code and the enviroment variable. -guard let gccIncludePrefix = Context.environment["GCC_ARM_PLAYDATE_PATH"] else { - fatalError("Make sure you have the GCC_ARM_PLAYDATE_PATH variable defined.") +guard let gccIncludePrefix = Context.environment["GCC_ARM_INCLUDE_PREFIX_PATH"] else { + fatalError("Make sure you have the GCC_ARM_INCLUDE_PREFIX_PATH variable defined.") } -guard let playdate_sdk_path = Context.environment["PLAYDATE_SDK_PATH"] else { +guard let playdateSdkPath = Context.environment["PLAYDATE_SDK_PATH"] else { fatalError("Make sure you have the PLAYDATE_SDK_PATH variable defined.") } @@ -22,7 +21,7 @@ let swiftSettingsSimulator: [SwiftSetting] = [ "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/include", "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/include-fixed", "-Xcc", "-I", "-Xcc", "\(gccIncludePrefix)/../../../../arm-none-eabi/include", - "-I", "\(playdate_sdk_path)/C_API", + "-I", "\(playdateSdkPath)/C_API", ]), ] From b71191e38433070d64d10e2aefe99b54137da00f Mon Sep 17 00:00:00 2001 From: Tyler Jaacks Date: Thu, 1 Aug 2024 21:50:43 -0500 Subject: [PATCH 6/6] Update swift.mk --- Examples/swift.mk | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Examples/swift.mk b/Examples/swift.mk index 32b418e..01bc60a 100644 --- a/Examples/swift.mk +++ b/Examples/swift.mk @@ -18,7 +18,6 @@ UNAME_S := $(shell uname -s) GCC_INCLUDE_PATHS := $(shell $(CC) -E -Wp,-v -xc /dev/null 2>&1 | egrep '^ ' | xargs echo ) ifeq ($(UNAME_S),Linux) - # TODO: Maybe find this via environment variable or something. SWIFT_EXEC := "swiftc" endif ifeq ($(UNAME_S),Darwin) @@ -96,4 +95,4 @@ ifeq ($(UNAME_S),Darwin) -dead_strip \ -Wl,-exported_symbol,_eventHandlerShim \ -Wl,-exported_symbol,_eventHandler -endif \ No newline at end of file +endif