CC=g++ LIBS= CFLAGS=-c -Wall -fPIC -std=c++20 LDFLAGS= SOURCES=src/armor.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 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 src/dmtool.bash $(pkg-config --variable=completionsdir bash-completion)/dmtool $(EXECUTABLE): $(OBJECTS) $(CC) $(OBJECTS) -o $@ $(LDFLAGS) src/armor.o: src/armor.cc src/armor.h src/item.h src/json.hpp src/entry.h \ src/jsonable.h src/utils.h src/creature.h src/rules.h $(CC) $(CFLAGS) $< -o $@ src/creature.o: src/creature.cc src/creature.h src/json.hpp src/rules.h \ src/jsonable.h src/utils.h src/entry.h src/dice.h src/feature.h \ src/weapon.h src/item.h src/armor.h src/attack.h $(CC) $(CFLAGS) $< -o $@ src/dice.o: src/dice.cc src/dice.h $(CC) $(CFLAGS) $< -o $@ src/dmtool.o: src/dmtool.cc src/entry.h src/json.hpp src/jsonable.h \ src/utils.h src/settings.h src/creature.h src/rules.h src/dice.h \ src/weapon.h src/item.h $(CC) $(CFLAGS) $< -o $@ src/entry.o: src/entry.cc src/entry.h src/json.hpp src/jsonable.h \ src/utils.h src/feature.h src/item.h src/spell.h src/creature.h \ src/rules.h $(CC) $(CFLAGS) $< -o $@ src/feature.o: src/feature.cc src/json.hpp src/feature.h src/entry.h \ src/jsonable.h src/utils.h src/spellcasting.h src/spell.h src/rules.h \ src/attack.h src/weapon.h src/item.h $(CC) $(CFLAGS) $< -o $@ src/item.o: src/item.cc src/json.hpp src/item.h src/entry.h \ src/jsonable.h src/utils.h src/weapon.h src/rules.h src/armor.h $(CC) $(CFLAGS) $< -o $@ src/rules.o: src/rules.cc src/rules.h src/jsonable.h src/json.hpp \ src/utils.h $(CC) $(CFLAGS) $< -o $@ src/settings.o: src/settings.cc src/settings.h $(CC) $(CFLAGS) $< -o $@ src/spellcasting.o: src/spellcasting.cc src/spellcasting.h src/feature.h \ src/json.hpp src/entry.h src/jsonable.h src/utils.h src/spell.h \ src/rules.h src/creature.h $(CC) $(CFLAGS) $< -o $@ src/spell.o: src/spell.cc src/spell.h src/json.hpp src/entry.h \ src/jsonable.h src/utils.h $(CC) $(CFLAGS) $< -o $@ src/utils.o: src/utils.cc src/utils.h src/json.hpp src/settings.h $(CC) $(CFLAGS) $< -o $@ src/weapon.o: src/weapon.cc src/weapon.h src/item.h src/json.hpp \ src/entry.h src/jsonable.h src/utils.h src/rules.h src/creature.h \ src/dice.h $(CC) $(CFLAGS) $< -o $@ clean: rm -f src/*.o $(LIBRARY) $(EXECUTABLE)