OXYGENHUB
◆ main openmsx / build / package-darwin / app.mk
2.7 KiB · Makefile · last changed chore(): initial commit 1 month ago source blame history raw
e8555c89 Andy McCall 1
# Create an application directory for Darwin.
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
# Override install locations.
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
# TODO: What is needed for an app folder?
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
# Remove form feeds from the GPL document, so Safari will treat it as text.
77
	@awk '!/\f/ ; /\f/ { print "" }' $< > $@