pommedoro/Makefile

96 lines
3.3 KiB
Makefile

APP_NAME = Pommedoro
BUILD_DIR = .build
RELEASE_BIN = $(BUILD_DIR)/arm64-apple-macosx/release/$(APP_NAME)
APP_BUNDLE = $(BUILD_DIR)/$(APP_NAME).app
CONTENTS = $(APP_BUNDLE)/Contents
MACOS_DIR = $(CONTENTS)/MacOS
RESOURCES_DIR = $(CONTENTS)/Resources
LAUNCH_AGENT_LABEL = com.pommedoro.app
LAUNCH_AGENT_PLIST = $(HOME)/Library/LaunchAgents/$(LAUNCH_AGENT_LABEL).plist
.PHONY: all build bundle install clean run icons install-agent uninstall-agent dmg
all: bundle
build:
swift build -c release
icons:
@echo "Generating icons from SVG..."
@mkdir -p Resources/Pommedoro.iconset
@for size in 16 32 64 128 256 512 1024; do \
rsvg-convert -w $$size -h $$size Resources/boot-logo.svg \
-o Resources/Pommedoro.iconset/icon_$${size}x$${size}.png; \
done
@cp Resources/Pommedoro.iconset/icon_32x32.png Resources/Pommedoro.iconset/icon_16x16@2x.png
@cp Resources/Pommedoro.iconset/icon_64x64.png Resources/Pommedoro.iconset/icon_32x32@2x.png
@cp Resources/Pommedoro.iconset/icon_256x256.png Resources/Pommedoro.iconset/icon_128x128@2x.png
@cp Resources/Pommedoro.iconset/icon_512x512.png Resources/Pommedoro.iconset/icon_256x256@2x.png
@cp Resources/Pommedoro.iconset/icon_1024x1024.png Resources/Pommedoro.iconset/icon_512x512@2x.png
@rm -f Resources/Pommedoro.iconset/icon_64x64.png Resources/Pommedoro.iconset/icon_1024x1024.png
@iconutil -c icns Resources/Pommedoro.iconset -o Resources/Pommedoro.icns
@rm -rf Resources/Pommedoro.iconset
@echo "Icon generated: Resources/Pommedoro.icns"
bundle: build
@echo "Creating $(APP_NAME).app bundle..."
@rm -rf $(APP_BUNDLE)
@mkdir -p $(MACOS_DIR)
@mkdir -p $(RESOURCES_DIR)
@cp $(RELEASE_BIN) $(MACOS_DIR)/$(APP_NAME)
@cp Resources/Info.plist $(CONTENTS)/Info.plist
@cp Resources/$(APP_NAME).icns $(RESOURCES_DIR)/$(APP_NAME).icns
@echo "Built $(APP_BUNDLE)"
install: bundle
@echo "Installing to /Applications..."
@rm -rf /Applications/$(APP_NAME).app
@cp -R $(APP_BUNDLE) /Applications/$(APP_NAME).app
@echo "Installed /Applications/$(APP_NAME).app"
run: bundle
@open $(APP_BUNDLE)
install-agent: install
@echo "Installing LaunchAgent..."
@mkdir -p $(HOME)/Library/LaunchAgents
@/usr/libexec/PlistBuddy -c "Clear dict" /dev/null 2>/dev/null; \
printf '<?xml version="1.0" encoding="UTF-8"?>\n\
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n\
<plist version="1.0">\n\
<dict>\n\
\t<key>Label</key>\n\
\t<string>$(LAUNCH_AGENT_LABEL)</string>\n\
\t<key>Program</key>\n\
\t<string>/Applications/$(APP_NAME).app/Contents/MacOS/$(APP_NAME)</string>\n\
\t<key>RunAtLoad</key>\n\
\t<true/>\n\
\t<key>KeepAlive</key>\n\
\t<false/>\n\
</dict>\n\
</plist>\n' > $(LAUNCH_AGENT_PLIST)
@echo "LaunchAgent installed: $(LAUNCH_AGENT_PLIST)"
uninstall-agent:
@echo "Removing LaunchAgent..."
@rm -f $(LAUNCH_AGENT_PLIST)
@echo "LaunchAgent removed"
dmg: bundle
@echo "Creating DMG..."
@rm -f $(BUILD_DIR)/$(APP_NAME).dmg
@mkdir -p $(BUILD_DIR)/dmg-staging
@cp -R $(APP_BUNDLE) $(BUILD_DIR)/dmg-staging/
@ln -s /Applications $(BUILD_DIR)/dmg-staging/Applications
@hdiutil create -volname "$(APP_NAME)" \
-srcfolder $(BUILD_DIR)/dmg-staging \
-ov -format UDZO \
$(BUILD_DIR)/$(APP_NAME).dmg
@rm -rf $(BUILD_DIR)/dmg-staging
@echo "Created $(BUILD_DIR)/$(APP_NAME).dmg"
clean:
swift package clean
rm -rf $(APP_BUNDLE)