11APP_NAME = Kiwi8
22
3- # Auto-detect version: use GITHUB_REF_NAME if set (CI), else git describe, else git branch
4- ifeq ($(origin GITHUB_REF_NAME ) , environment)
5- VERSION := $(GITHUB_REF_NAME )
6- else
7- VERSION := $(shell git describe --tags --exact-match 2>/dev/null || git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
3+ # Use GITHUB_REF_NAME from GitHub Actions, or default values for local builds
4+ VERSION ?= $(GITHUB_REF_NAME )
5+ ifeq ($(VERSION ) ,)
6+ VERSION = unknown
87endif
98
10- APP_NAME_VERSION = $(APP_NAME ) $(VERSION )
11- APP_EXE = $(APP_NAME )
9+ COMMIT_HASH := $(if $(GITHUB_SHA ) ,$(GITHUB_SHA ) ,unknown)
10+
11+ APP_MANIFEST = src/Info.plist
1212APP_BUNDLE = $(APP_NAME ) .app
13+ APP_EXE = $(APP_NAME )
1314
1415CC = clang++
15- CFLAGS = -std=c++17 -Wall -mmacosx-version-min=11.0 -arch x86_64 -arch arm64 -MMD -MP -DAPPNAME_VERSION ='"$(APP_NAME_VERSION ) "'
16+ CFLAGS = -std=c++17 -Wall -mmacosx-version-min=11.0 -arch x86_64 -arch arm64 -MMD -MP -DAPP_NAME ='"$(APP_NAME ) "' -DVERSION='" $( VERSION ) "' -DCOMMIT_HASH='" $( COMMIT_HASH ) "'
1617LFLAGS = -mmacosx-version-min=11.0
1718INCS = -I../external/sdl/build/include/ -I../external/imgui/ -I../shared/
1819LIBS = -L../external/sdl/build/lib/ -lSDL2-2.0.0 -framework Cocoa -framework OpenGL
@@ -60,6 +61,10 @@ $(LICENSE_HEADER): ../LICENSE
6061$(BOOTROM_HEADER ) : $(BOOTROM_SOURCE )
6162 python3 ../tools/generate_bootrom_header.py $(BOOTROM_SOURCE ) $(BOOTROM_HEADER )
6263
64+ # Generate Info.plist from template with version substitution
65+ $(APP_MANIFEST ) : $(APP_MANIFEST ) .in
66+ sed -e ' s/@APP_NAME@/$(APP_NAME)/g' -e ' s/@VERSION@/$(VERSION)/g' -e ' s/@COMMIT_HASH@/$(COMMIT_HASH)/g' $< > $@
67+
6368# Pattern rules for incremental compilation
6469% .o : ../shared/% .cc $(LICENSE_HEADER ) $(BOOTROM_HEADER )
6570 $(CC ) $(CFLAGS ) $(INCS ) -c $< -o $@
@@ -88,15 +93,15 @@ release/$(APP_BUNDLE)/Contents/MacOS/$(APP_EXE): $(SDL_LIB) $(OBJS)
8893 $(CC ) $(CFLAGS ) $(LIBS ) $(INCS ) $(OBJS ) -o $@ $(LFLAGS )
8994
9095# .app bundle
91- release/$(APP_BUNDLE ) : release/$(APP_BUNDLE ) /Contents/MacOS/$(APP_EXE ) $(SDL_LIB ) resources/Kiwi8.icns src/Info.plist
96+ release/$(APP_BUNDLE ) : release/$(APP_BUNDLE ) /Contents/MacOS/$(APP_EXE ) $(SDL_LIB ) resources/Kiwi8.icns $( APP_MANIFEST )
9297 mkdir -p release/$(APP_BUNDLE ) /Contents/{Resources,Frameworks}
9398
9499 # Copying the frameworks into .app bundle
95100 cp $(SDL_LIB) release/$(APP_BUNDLE)/Contents/Frameworks/libSDL2-2.0.0.dylib
96101
97102 # Moving other files into .app bundle
98103 cp resources/Kiwi8.icns release/$(APP_BUNDLE)/Contents/Resources/Kiwi8.icns
99- cp src/Info.plist release/$(APP_BUNDLE)/Contents/Info.plist
104+ cp $(APP_MANIFEST) release/$(APP_BUNDLE)/Contents/Info.plist
100105
101106 # Set the dylib's install name to be relative to the bundle
102107 install_name_tool -id @executable_path/../Frameworks/libSDL2-2.0.0.dylib release/$(APP_BUNDLE)/Contents/Frameworks/libSDL2-2.0.0.dylib
@@ -119,6 +124,7 @@ clean:
119124 $(RM ) -r debug
120125 $(RM ) -r release
121126 $(RM ) $(LICENSE_HEADER ) $(BOOTROM_HEADER )
127+ $(RM ) $(APP_MANIFEST )
122128
123129# Removes everything including SDL installation and build artifacts (full reset)
124130distclean : clean
0 commit comments