| 1 |
|
| 2 |
|
| 3 |
APP_SUPPORT_DIR:=build/package-darwin |
| 4 |
APP_DIR:=openMSX.app |
| 5 |
APP_EXE_DIR:=$(APP_DIR)/Contents/MacOS |
| 6 |
APP_PLIST:=$(APP_DIR)/Contents/Info.plist |
| 7 |
APP_RES:=$(APP_DIR)/Contents/Resources |
| 8 |
APP_ICON:=$(APP_RES)/openmsx-logo.icns |
| 9 |
|
| 10 |
|
| 11 |
DESTDIR:=$(BINDIST_DIR) |
| 12 |
INSTALL_BINARY_DIR:=$(APP_EXE_DIR) |
| 13 |
INSTALL_SHARE_DIR:=$(APP_RES)/share |
| 14 |
INSTALL_DOC_DIR:=$(APP_RES)/doc |
| 15 |
|
| 16 |
PACKAGE_FULL:=$(shell PYTHONPATH=build $(PYTHON) -c \ |
| 17 |
"import version; print(version.getVersionedPackageName())" \ |
| 18 |
) |
| 19 |
BINDIST_PACKAGE:=$(BUILD_PATH)/$(PACKAGE_FULL)-mac-$(OPENMSX_TARGET_CPU)-bin.dmg |
| 20 |
BINDIST_README:=README.html |
| 21 |
BINDIST_LICENSE:=$(INSTALL_DOC_DIR)/GPL.txt |
| 22 |
|
| 23 |
|
| 24 |
app: install $(DESTDIR)/$(APP_PLIST) $(DESTDIR)/$(APP_ICON) |
| 25 |
|
| 26 |
bindist: app codesign $(DESTDIR)/$(BINDIST_README) $(DESTDIR)/$(BINDIST_LICENSE) |
| 27 |
@echo "Creating disk image:" |
| 28 |
@hdiutil create -srcfolder $(BINDIST_DIR) \ |
| 29 |
-fs HFS+J \ |
| 30 |
-volname openMSX \ |
| 31 |
-imagekey zlib-level=9 \ |
| 32 |
-ov $(BINDIST_PACKAGE) |
| 33 |
@if [ -z "$(CODE_SIGN_IDENTITY)" ]; then \ |
| 34 |
echo " Skipping code sign, CODE_SIGN_IDENTITY not set."; \ |
| 35 |
else \ |
| 36 |
echo " Signing the disk image..."; \ |
| 37 |
codesign --force --verify --verbose --sign "$(CODE_SIGN_IDENTITY)" "$(BINDIST_PACKAGE)"; \ |
| 38 |
fi |
| 39 |
@if [ -z "$(NOTARY_PROFILE)" ]; then \ |
| 40 |
echo " Skipping notarization, NOTARY_PROFILE not set."; \ |
| 41 |
else \ |
| 42 |
echo " Notarizing the disk image..."; \ |
| 43 |
xcrun notarytool submit "$(BINDIST_PACKAGE)" --keychain-profile "$(NOTARY_PROFILE)" --wait; \ |
| 44 |
xcrun stapler staple "$(BINDIST_PACKAGE)"; \ |
| 45 |
xcrun stapler validate "$(BINDIST_PACKAGE)"; \ |
| 46 |
fi |
| 47 |
|
| 48 |
$(DESTDIR)/$(APP_PLIST): $(DESTDIR)/$(APP_DIR)/Contents/%: $(APP_SUPPORT_DIR)/% bindistclean |
| 49 |
@echo " Writing meta-info..." |
| 50 |
@mkdir -p $(@D) |
| 51 |
@sed -e 's/%ICON%/$(notdir $(APP_ICON))/' \ |
| 52 |
-e 's/%VERSION%/$(shell $(PYTHON) build/version.py triple)/' < $< > $@ |
| 53 |
@echo "APPLoMSX" > $(@D)/PkgInfo |
| 54 |
|
| 55 |
$(DESTDIR)/$(APP_ICON): $(DESTDIR)/$(APP_RES)/%: $(APP_SUPPORT_DIR)/% bindistclean |
| 56 |
@echo " Copying resources..." |
| 57 |
@mkdir -p $(@D) |
| 58 |
@cp $< $@ |
| 59 |
|
| 60 |
codesign: app |
| 61 |
@if [ -z "$(CODE_SIGN_IDENTITY)" ]; then \ |
| 62 |
echo " Skipping code sign, CODE_SIGN_IDENTITY not set."; \ |
| 63 |
else \ |
| 64 |
echo " Signing the application bundle..."; \ |
| 65 |
codesign --deep --force --verify --verbose --options runtime --sign "$(CODE_SIGN_IDENTITY)" $(DESTDIR)/$(APP_DIR); \ |
| 66 |
fi |
| 67 |
|
| 68 |
$(DESTDIR)/$(BINDIST_README): $(APP_SUPPORT_DIR)/README.html |
| 69 |
@echo " Copying README..." |
| 70 |
@mkdir -p $(@D) |
| 71 |
@cp $< $@ |
| 72 |
|
| 73 |
$(DESTDIR)/$(BINDIST_LICENSE): doc/GPL.txt app |
| 74 |
@echo " Copying license..." |
| 75 |
@mkdir -p $(@D) |
| 76 |
|
| 77 |
@awk '!/\f/ ; /\f/ { print "" }' $< > $@ |