Makefile: Add "rebuild-nodes" make target

Add "rebuild-nodes" make target to rebuild nodes for all levels that
match a specified pattern. Document "rebuild-nodes" in
BUILD-SYSTEM.adoc. Modify map06.wad so it adheres to the "no padding
between the lumps" constraint.
master
Steven Elliott 2019-12-15 14:49:15 -06:00
parent 0f7e672fa9
commit 9e7b4f20b5
3 changed files with 37 additions and 0 deletions

View File

@ -241,3 +241,29 @@ around. Some of them are listed here.
any +TEXTURE1+ lumps it generates. To work around this, a “dummy”
IWAD file containing an empty +TEXTURE1+ lump is contained inside
the +dummy+ directory.
== Node builder
Each Freedoom level found in the "levels" directory should have exactly
11 lumps in a https://zdoom.org/wiki/WAD[particular order] with no
padding between the lumps. Of those 11 lumps 6 (<map name>, THINGS,
LINEDEFS, SIDEDEFS, VERTEXES and SECTORS) are maintained by a level
editor such as GZDoom Builder, SLADE or Eureka. The remaining 5 lumps
(SEGS, SSECTORS, NODES, REJECT and BLOCKMAP) are added by a node
builder. The Freedoom project uses the
https://github.com/Doom-Utils/zennode[ZenNode] node builder. For
example, to rebuild the nodes for all 100 levels run the
"rebuild-nodes" make target in the top level makefile:
[source,bash]
-----------------
make rebuild-nodes
-----------------
To control how the node builder is invoked, or which levels are
rebuilt, override the NODE_BUILDER and NODE_BUILDER_LEVELS make
variables respectively. For example, to specify the full path to
ZenNode when it's not in the path and to rebuild only the first
chapter of Freedoom 1 as well all of the deathmatch levels:
[source,bash]
-----------------
make NODE_BUILDER=/opt/zennode/ZenNode NODE_BUILDER_LEVELS="c1m? dm??" rebuild-nodes
-----------------

View File

@ -9,6 +9,8 @@ CPP=scripts/simplecpp
DEUTEX=deutex
DEUTEX_BASIC_ARGS=-v0 -rate accept
DEUTEX_ARGS=$(DEUTEX_BASIC_ARGS) -doom2 bootstrap/
NODE_BUILDER=ZenNode
NODE_BUILDER_LEVELS=c?m? dm?? map??
FREEDOOM1=$(WADS)/freedoom1.wad
FREEDOOM2=$(WADS)/freedoom2.wad
@ -147,6 +149,15 @@ test: test-map-names
fix-map-names:
scripts/fix-map-names levels
# Rebuild the nodes for the level WADs. By default this invokes "ZenNode" on
# all 100 level WADs. Override the "NODE_BUILDER" prefixed variables to
# configure.
rebuild-nodes: $(addprefix levels/,$(addsuffix .wad,$(NODE_BUILDER_LEVELS)))
for level in $^; \
do \
$(NODE_BUILDER) $$level -o $$level; \
done
%.6:
$(MAKE) ASCIIDOC_MAN="$(ASCIIDOC_MAN)" -C dist $@

Binary file not shown.