-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathmakefile
145 lines (117 loc) · 6.05 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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# Versions
# nice user-facing version naming
NAMING_VERSION := 0.7
# Default target
.PHONY: all
all: baseset baseset_highdef newgrf
# Basesets
# "Classic" 8bpp 1x zoom baseset
.PHONY: baseset
baseset: baseset/OpenGFX2_Classic-$(NAMING_VERSION).zip
baseset/OpenGFX2_Classic-$(NAMING_VERSION).zip: baseset/OpenGFX2_Classic-$(NAMING_VERSION).tar
cd baseset && zip -9 -r OpenGFX2_Classic-$(NAMING_VERSION).zip OpenGFX2_Classic-$(NAMING_VERSION).tar
# "High Def" 32bpp 4x zoom baseset
.PHONY: baseset_highdef
baseset_highdef: baseset/OpenGFX2_HighDef-$(NAMING_VERSION).zip
baseset/OpenGFX2_HighDef-$(NAMING_VERSION).zip: baseset/OpenGFX2_HighDef-$(NAMING_VERSION).tar
cd baseset && zip -9 -r OpenGFX2_HighDef-$(NAMING_VERSION).zip OpenGFX2_HighDef-$(NAMING_VERSION).tar
# Base set packaging
.PRECIOUS: OpenGFX2_Classic-$(NAMING_VERSION).tar OpenGFX2_HighDef-$(NAMING_VERSION).tar
BASESET_GRFS = ogfx2c_arctic ogfx2e_extra ogfx2h_tropical ogfx2i_logos ogfx2t_toyland ogfx21_base
BASESET_DOCS = README.md LICENSE CHANGELOG.md
baseset/OpenGFX2_Classic-$(NAMING_VERSION).tar: baseset/opengfx2_8.obg $(BASESET_DOCS) $(foreach grf,$(BASESET_GRFS),baseset/$(grf)_8.grf)
mkdir -p baseset/OpenGFX2_Classic-$(NAMING_VERSION)
cp README.md baseset/OpenGFX2_Classic-$(NAMING_VERSION)/readme.md
cp LICENSE baseset/OpenGFX2_Classic-$(NAMING_VERSION)/license.txt
cp CHANGELOG.md baseset/OpenGFX2_Classic-$(NAMING_VERSION)/changelog.md
cp $(foreach grf,$(BASESET_GRFS),baseset/$(grf)_8.grf) baseset/OpenGFX2_Classic-$(NAMING_VERSION)/
cp baseset/opengfx2_8.obg baseset/OpenGFX2_Classic-$(NAMING_VERSION)/
cd baseset && tar -cf OpenGFX2_Classic-$(NAMING_VERSION).tar OpenGFX2_Classic-$(NAMING_VERSION)/
rm -r baseset/OpenGFX2_Classic-$(NAMING_VERSION)
baseset/OpenGFX2_HighDef-$(NAMING_VERSION).tar: baseset/opengfx2_32ez.obg $(BASESET_DOCS) $(foreach grf,$(BASESET_GRFS),baseset/$(grf)_32ez.grf)
mkdir -p baseset/OpenGFX2_HighDef-$(NAMING_VERSION)
cp README.md baseset/OpenGFX2_HighDef-$(NAMING_VERSION)/readme.md
cp LICENSE baseset/OpenGFX2_HighDef-$(NAMING_VERSION)/license.txt
cp CHANGELOG.md baseset/OpenGFX2_HighDef-$(NAMING_VERSION)/changelog.md
cp $(foreach grf,$(BASESET_GRFS),baseset/$(grf)_32ez.grf) baseset/OpenGFX2_HighDef-$(NAMING_VERSION)/
cp baseset/opengfx2_32ez.obg baseset/OpenGFX2_HighDef-$(NAMING_VERSION)/
cd baseset && tar -cf OpenGFX2_HighDef-$(NAMING_VERSION).tar OpenGFX2_HighDef-$(NAMING_VERSION)/
rm -r baseset/OpenGFX2_HighDef-$(NAMING_VERSION)
# OBG for baseset
# FORCE, as baseset_generate_obg checks for necessary updates
.PRECIOUS: baseset/opengfx2_8.obg baseset/opengfx2_32ez.obg
baseset/opengfx2_8.obg: baseset/baseset_generate_obg.py baseset/lang/*.lng $(foreach grf,$(BASESET_GRFS),baseset/$(grf)_8.grf) $(foreach grf,$(BASESET_GRFS),baseset/$(grf)_8.md5)
python3 baseset/baseset_generate_obg.py 8 baseset/
baseset/opengfx2_32ez.obg: baseset/baseset_generate_obg.py baseset/lang/*.lng $(foreach grf,$(BASESET_GRFS),baseset/$(grf)_32ez.grf) $(foreach grf,$(BASESET_GRFS),baseset/$(grf)_32ez.md5)
python3 baseset/baseset_generate_obg.py 32ez baseset/
# GRF and MD5, via NML intermediate, for baseset
# FORCE, as nml_preprocessor includes arbitrary pnml files
.PRECIOUS: baseset/%.grf baseset/%.md5 baseset/%.nml
baseset/%_8.grf: graphics_1 baseset/lang/*.lng FORCE
$(eval PREF=$(word 1, $(subst _, ,$(basename $(notdir $@)))))
$(eval NAME=$(word 2, $(subst _, ,$(basename $(notdir $@)))))
$(eval ZOOM=$(word 3, $(subst _, ,$(basename $(notdir $@)))))
python3 templates/nml_preprocessor.py baseset/$(PREF)_$(NAME).pnml $(ZOOM)
cd baseset && nmlc -p DOS --quiet -c $(PREF)_$(NAME)_$(ZOOM).nml --md5 $(PREF)_$(NAME)_$(ZOOM).md5
baseset/%_32ez.grf: graphics_4 baseset/lang/*.lng FORCE
$(eval PREF=$(word 1, $(subst _, ,$(basename $(notdir $@)))))
$(eval NAME=$(word 2, $(subst _, ,$(basename $(notdir $@)))))
$(eval ZOOM=$(word 3, $(subst _, ,$(basename $(notdir $@)))))
echo $(PREF) $(NAME) $(ZOOM)
python3 templates/nml_preprocessor.py baseset/$(PREF)_$(NAME).pnml $(ZOOM)
cd baseset && nmlc -p DOS --quiet -c $(PREF)_$(NAME)_$(ZOOM).nml --md5 $(PREF)_$(NAME)_$(ZOOM).md5
# NewGRFs
.PHONY: newgrf
NEWGRFS = landscape objects settings stations trees trams trains
newgrf: $(foreach grf,$(NEWGRFS),newgrf/ogfx2_$(grf).grf)
# GRF, via NML intermediate, for NewGRFs
# FORCE, as nml_preprocessor includes arbitrary pnml files
.PRECIOUS: newgrf/ogfx2_%.grf newgrf/ogfx2_%.nml
newgrf/%.grf: graphics_4 FORCE
$(eval PREF=$(word 1, $(subst _, ,$(basename $(notdir $@)))))
$(eval NAME=$(word 2, $(subst _, ,$(basename $(notdir $@)))))
echo $(PREF) $(NAME)
python3 templates/nml_preprocessor.py newgrf/$(PREF)_$(NAME).pnml 32ez
mv newgrf/$(PREF)_$(NAME)_32ez.nml newgrf/$(PREF)_$(NAME).nml
cd newgrf && nmlc -p DOS --quiet -c -l lang/$(NAME) $(PREF)_$(NAME).nml
# Graphics
# Python generation of all graphics from PNG sources
# FORCE as generate_graphics.py will check what updates are necessary
.PHONY: graphics
graphics: graphics_4.tmp
.PHONY: graphics_4
graphics_4: graphics_4.tmp
.PHONY: graphics_1
graphics_1: graphics_1.tmp
.PRECIOUS: graphics_%.tmp
graphics_%.tmp: graphics/fonts/openttd-ttf FORCE
cd graphics/fonts/openttd-ttf && git pull
$(eval ZOOM=$(word 2, $(subst _, ,$(basename $(notdir $@)))))
python3 graphics/generate_graphics.py $(ZOOM)
# Get font git dependencies
graphics/fonts/openttd-ttf:
cd graphics/fonts && git clone https://github.com/OpenTTD/OpenTTD-TTF
# Clean
.PHONY: clean
clean: clean_baseset clean_newgrf clean_graphics
# Clean baseset
.PHONY: clean_baseset
clean_baseset:
rm -f baseset/*.grf baseset/*.md5 baseset/*.obg baseset/*.tar baseset/*.nml
rm -rf baseset/.nmlcache
# Clean NewGRFs
.PHONY: clean_newgrf
clean_newgrf:
rm -f newgrf/*.grf newgrf/*.nml
rm -rf newgrf/.nmlcache
# Clean graphics
.PHONY: clean_graphics
clean_graphics:
rm -f graphics*.tmp
find graphics -type d -name "pygen" -exec rm -rf {} +
find graphics -type f -name "*_8bpp.png" -exec rm {} +
find graphics -type f -name "*_bt32bpp.png" -exec rm {} +
find graphics -type f -name "*_rm32bpp.png" -exec rm {} +
find graphics -type d -name "__pycache__" -exec rm -rf {} +
rm -rf graphics/fonts/openttd-ttf
FORCE: ;