-
Notifications
You must be signed in to change notification settings - Fork 6
/
Makefile
129 lines (109 loc) · 3.61 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# Required program
SHELL := /bin/bash
NMLC ?= nmlc
PYTHON ?= python3
# C compiler
CC ?= cc
CC_FLAGS ?= -C -E -nostdinc -x c-header
CP_FLAGS ?= $(shell [ "$(OSTYPE)" = "Darwin" ] && echo "-rfX" || echo "-rf")
CC_USER_FLAGS ?=
# Configurations
-include Makefile.config
# Disable default suffixes rule
.SUFFIXES:
.PHONY: all build clean download_page doc generated bundle bundle_tar
# File names
DIR_NAME ?= $(shell echo "$(REPO_NAME) $(VERSION)" | xargs | sed s/\ /\-/g)
GRF_FILE ?= $(BASE_FILENAME).grf
NML_FILE ?= $(BASE_FILENAME).nml
NFO_FILE ?= $(BASE_FILENAME).nfo
PNML_FILE ?= $(BASE_FILENAME).pnml
TAG_FILE ?= custom_tags.txt
DOC_FILE ?= docs/readme.txt
GRF_GENERATE ?= $(BASE_FILENAME).grf
NML_GENERATE ?= $(BASE_FILENAME).nml
NFO_GENERATE ?= $(BASE_FILENAME).nfo
PNML_GENERATE ?= $(BASE_FILENAME).pnml
TAR_GENERATE ?= $(BASE_FILENAME).tar
TAG_GENERATE ?= custom_tags.txt
DOC_GENERATE ?= $(DOC_FILE)
BUNDLE_FILES ?= $(GRF_FILE) $(DOC_FILE)
# target 'all' must be first target
all: build
build: $(GRF_GENERATE) doc bundle_tar
@echo "... $(VERSION) has built"
# Generate *.txt from *.ptxt
%.txt: %.ptxt generated
@echo "[DOC] $@"
@cat $< | sed -e "s/{{\VERSION}}/$(VERSION)/" > ./generated/$(notdir $@)
clean::
@-rm -rf ./generated/readme.txt
# Generate document for download page
download_page: spec.pnml
@echo "[DOWNLOAD_PAGE] $@"
@if [ ! -e ./docs/download_page/ ]; then mkdir ./docs/download_page/; fi
@if [ ! -e ./docs/download_page/_static/ ]; then mkdir ./docs/download_page/_static/; fi
@$(PYTHON) ./src/generate_doc.py
clean::
@-rm -rf $@
# Documents
doc: generated $(GRF_GENERATE) download_page
@cp $(CP_FLAGS) ./docs/changelog.md ./generated/changelog.txt
clean::
@echo "[CLEAN DOC]"
@-rm -rf ./generated/*.txt
@-rm -rf ./docs/readme.txt
# Make generated directory
generated:
@echo "[MKDIR generated]"
@if [ ! -e $@ ]; then mkdir $@; fi
clean::
@echo "[CLEAN generated]"
@-rm -rf ./generated
# Generate spec.pnml
spec.pnml: generated
$(PYTHON) ./src/spec.py
clean::
@echo "[CLEAN spec.pnml]"
@-rm -rf ./generated/spec.pnml
# Generate *.nml from *.pnml
$(NML_GENERATE): generated $(PNML_GENERATE)
@echo "[CPP] $@"
@ $(CC) -D VERSION=$(VERSION) $(CC_USER_FLAGS) $(CC_FLAGS) -o ./generated/$(NML_FILE) $(PNML_FILE)
clean::
@echo "[CLEAN NML]"
@-rm -rf $(NML_FILE)
# Generate custom_tags.txt
$(TAG_GENERATE): generated
@echo "[TAG] $@"
@echo "VERSION :$(VERSION)" > ./generated/$@
@echo "RECENT_UPDATED :$(RECENT_UPDATED)" >> ./generated/$@
@echo "AUTHOR_WEBSITE :$(AUTHOR_WEBSITE)" >> ./generated/$@
@echo "AUTHOR_EMAIL :$(AUTHOR_EMAIL)" >> ./generated/$@
clean::
@echo "[CLEAN TAG]"
@-rm -rf $(TAG_FILE)
# Generate *.grf
$(GRF_GENERATE): generated spec.pnml $(NML_GENERATE) $(TAG_GENERATE)
@echo "[NMLC] $@"
@ $(NMLC) -c --custom-tags="./generated/$(TAG_FILE)" --lang-dir="./lang/" "./generated/$(NML_FILE)" --grf="./generated/$(GRF_FILE)"
clean::
@echo "[CLEAN GRF]"
@-rm -rf $(GRF_FILE)
$(NFO_GENERATE):
clean::
@echo "[CLEAN NFO]"
@-rm -rf $(NFO_FILE)
# Make a bundle
bundle: bundle_tar
bundle_tar: $(BUNDLE_FILES)
@echo "[BUNDLE TAR]"
@ tar -cf generated/544b5555-$(DIR_NAME).tar generated/changelog.txt generated/$(GRF_FILE) generated/readme.txt --transform s/generated/544b5555-$(DIR_NAME)/
clean::
@echo "[CLEAN BUNDLE]"
@-rm -rf $(shell echo "$(REPO_NAME)*" | xargs | sed s/\ /_/g)
# Clean
clean::
@-rm -rf ./.nmlcache
@-rm -rf ./src/__pycache__
@-rm -rf ./docs/download_page