CC=g++ LIBS=libconfuse nlohmann_json CFLAGS=-c -Wall -fPIC -std=c++20 LDFLAGS= SOURCES=src/armor.cc src/cmd.cc src/cmd_fsops.cc src/cmd_manipulate.cc src/cmd_query.cc src/cmd_usage.cc src/creature.cc src/dice.cc src/dmtool.cc src/entry.cc src/feature.cc src/item.cc src/rules.cc src/settings.cc src/spellcasting.cc src/spell.cc src/utils.cc src/weapon.cc OBJECTS=$(SOURCES:.cc=.o) LIBRARY= EXECUTABLE=dmtool ifeq ($(PREFIX),) PREFIX := /usr endif all: $(SOURCES) $(EXECUTABLE) parsed: parser/scrapeToJson.py parser/utils.py parser/verified.txt python parser/scrapeToJson.py touch parsed/ install: $(EXECUTABLE) parsed install -d $(DESTDIR)$(PREFIX)/share/dmtool/ cp -r parsed/* $(DESTDIR)$(PREFIX)/share/dmtool/ install -d $(DESTDIR)$(PREFIX)/bin/ install -m 755 $(EXECUTABLE) $(DESTDIR)$(PREFIX)/bin/ install -m 644 files/dmtool.bash $(DESTDIR)/usr/share/bash-completion/completions/dmtool install -m 644 files/dmtool.conf $(DESTDIR)/etc/dmtool.conf $(EXECUTABLE): $(OBJECTS) $(CC) $(OBJECTS) -o $@ $(LDFLAGS) `pkg-config $(LIBS) --libs` src/armor.o: src/armor.cc src/armor.h src/item.h src/entry.h \ src/defines.h src/creature.h src/rules.h src/utils.h src/feature.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/cmd.o: src/cmd.cc src/cmd.h src/settings.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/cmd_fsops.o: src/cmd_fsops.cc src/cmd.h src/utils.h src/entry.h \ src/defines.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/cmd_manipulate.o: src/cmd_manipulate.cc src/cmd.h src/utils.h \ src/entry.h src/defines.h src/creature.h src/rules.h src/feature.h \ src/item.h src/spellcasting.h src/spell.h src/settings.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/cmd_query.o: src/cmd_query.cc src/cmd.h src/utils.h src/entry.h \ src/defines.h src/creature.h src/rules.h src/feature.h src/item.h \ src/dice.h src/weapon.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/cmd_usage.o: src/cmd_usage.cc src/cmd.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/creature.o: src/creature.cc src/creature.h src/rules.h src/utils.h \ src/entry.h src/defines.h src/feature.h src/item.h src/dice.h \ src/weapon.h src/armor.h src/attack.h src/spellcasting.h src/spell.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/dice.o: src/dice.cc src/dice.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/dmtool.o: src/dmtool.cc src/cmd.h src/utils.h src/entry.h \ src/defines.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/entry.o: src/entry.cc src/entry.h src/defines.h src/utils.h \ src/feature.h src/item.h src/spell.h src/creature.h src/rules.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/feature.o: src/feature.cc src/feature.h src/entry.h src/defines.h \ src/spellcasting.h src/spell.h src/rules.h src/utils.h src/attack.h \ src/weapon.h src/item.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/item.o: src/item.cc src/item.h src/entry.h src/defines.h src/weapon.h \ src/rules.h src/utils.h src/armor.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/rules.o: src/rules.cc src/rules.h src/utils.h src/entry.h \ src/defines.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/settings.o: src/settings.cc src/settings.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/spellcasting.o: src/spellcasting.cc src/spellcasting.h src/feature.h \ src/entry.h src/defines.h src/spell.h src/rules.h src/utils.h \ src/creature.h src/item.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/spell.o: src/spell.cc src/spell.h src/entry.h src/defines.h \ src/utils.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/utils.o: src/utils.cc src/utils.h src/entry.h src/defines.h \ src/settings.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` src/weapon.o: src/weapon.cc src/weapon.h src/item.h src/entry.h \ src/defines.h src/rules.h src/utils.h src/creature.h src/feature.h \ src/dice.h $(CC) $(CFLAGS) $< -o $@ `pkg-config $(LIBS) --cflags` clean: rm -f src/*.o $(LIBRARY) $(EXECUTABLE)