wesnoth/data/tools/Makefile
2023-08-11 21:41:42 +02:00

107 lines
3.7 KiB
Makefile

# Recipes for various sanity checks.
#
# Hack DATA if our location in the Wesnoth source tree changes.
# It needs to point to the top-level data directory.
DATA = ../../data
#
# The MAINLINE definition should expand to all directories considered
# to be part of the mainline distribution.
MAINLINE = $(DATA)/core $(DATA)/multiplayer $(DATA)/themes $(DATA)/campaigns/*
#
# Define UMC to point to a local copy of user-made content to run checks on.
# Note, this needs to expand to a list with one subdirectory per UMC campaign,
# otherwise the visibility checks aren't going to work right.
#UMC = ../../../../wesnoth-umc-dev/trunk/*
#
# Macro reference destination dir.
DEST = .
sanity-check: unresolved lint
lint:
# Check for obsolete WML, broken references, consistency.
./wmllint --dryrun $(MAINLINE) $(UMC)
unresolved:
@echo "# Report on unresolved macro calls and resource references"
@./wmlscope --unresolved $(MAINLINE) $(UMC)
all:
@echo "# Report on usage of all macros and resources"
@./wmlscope --crossreference $(MAINLINE) $(UMC)
utils-unused:
@echo "# Report on unused utility macros"
@./wmlscope --crossreference --from $(DATA)/core/macros --refcount 0 $(MAINLINE) $(UMC)
# Beware of removing images listed in this report unless you know
# UMC is not relying on them!
#
# References to terrain graphics go through so many layers of nasty
# opaque macros that trying to reference-check them is hopeless.
# So suppress reporting them unused even if they seem to have
# no references.
FORCE_USED = --force-used "terrain/"
images-unused:
@echo "# Report on unused images"
@./wmlscope --crossreference --from images --refcount 0 $(FORCE_USED) $(MAINLINE) $(UMC)
all-unused:
@echo "# Report on unused resource files and macros"
@./wmlscope --crossreference --refcount 0 --force-used "terrain/" $(MAINLINE) $(UMC)
utils-macros:
@echo "# Report on usage of utility macros"
@./wmlscope --crossreference --from $(DATA)/core/macros $(MAINLINE) $(UMC)
collisions:
@echo "# Report on duplicate resource files."
@./wmlscope --collisions $(MAINLINE) $(UMC)
# Report a list of symbols and resources defined in mainline.
definitions:
@./wmlscope --definitions --exclude data/scenarios --exclude data/campaigns $(MAINLINE)
# Generate a reference page for the utility macros.
macro-reference.html: helpheader.html helptrailer.html wmlscope
@{ cat helpheader.html; ./wmlscope --extracthelp --exclude data/scenarios --exclude data/tutorial --exclude data/campaigns $(DATA)/core/macros/; cat helptrailer.html; } > $(DEST)/macro-reference.html
# Report on unchecked macro calls
unchecked:
@./wmlscope --unchecked $(MAINLINE) $(UMC)
# Reindent the mainline content
#
# The schema and GUI directories are currently mainly indented with tabs.
# Although the schema isn't reindented here, it's at least checked for consistency.
reindent:
@./wmlindent \
--exclude=$(DATA)/languages \
--exclude=$(DATA)/gui \
--exclude=$(DATA)/test/scenarios/cve_tests \
--exclude=$(DATA)/test/scenarios/lua_tests \
--exclude=$(DATA)/test/scenarios/wml_tests/TerrainWML \
--exclude=$(DATA)/schema \
$(DATA)
@find $(DATA)/schema -name \*.cfg -print0 | xargs -0 ./check_mixed_indent
# Extract a table of keybindings
bindings:
@./extractbindings < $(DATA)/core/hotkeys.cfg
# Look at the difficulty-rank order of the campaigns
rank:
@awk -F= '$$1 ~ "^[[:blank:]]*rank$$" { n=split(FILENAME, f, "/"); print $$2, "\t", f[n-1] }' $(DATA)/campaigns/*/_main.cfg | sort -n
# For performing test lifts of mainline
lift:
./wmllint --verbose $(MAINLINE) $(UMC)
trylift:
./wmllint --dryrun --verbose $(MAINLINE) $(UMC)
diffs:
./wmllint --diffs $(MAINLINE) $(UMC)
revert:
./wmllint --revert $(MAINLINE) $(UMC)
clean:
./wmllint --clean $(MAINLINE) $(UMC)
rm -f macro-reference.html