Makefile (3767B)
1 BIN = bin/phantasia 2 SMOKE = bin/ph-smoke 3 RENDER_SMOKE = bin/ph-render-smoke 4 MAPC = bin/ph-mapc 5 OBJDIR = obj 6 MAPDIR = $(OBJDIR)/maps 7 MAPSRC = $(wildcard data/maps/*.txt) 8 MAPBIN = $(MAPSRC:data/maps/%.txt=$(MAPDIR)/%.phmap) 9 TILESET_SRC = assets/vendor/graphics/overworld-grass-biome/TilesetGrass/overworld_tileset_grass.png 10 TILESET_BMP = $(OBJDIR)/assets/overworld_tileset_grass.bmp 11 HERO_SRC = assets/vendor/graphics/base-character-16x16/Hero.png 12 HERO_BMP = $(OBJDIR)/assets/hero.bmp 13 ITEMS_SRC = assets/vendor/graphics/16x16-rpg-items/items.png 14 ITEMS_BMP = $(OBJDIR)/assets/items.bmp 15 CRITTERS_SRC = assets/vendor/graphics/16x16-animated-critters/16x16babies.png 16 CRITTERS_BMP = $(OBJDIR)/assets/critters.bmp 17 AUDIO = \ 18 assets/vendor/audio/calm-loop/meadow.wav \ 19 assets/vendor/audio/peacefull-ville/stonehollow.wav \ 20 assets/vendor/audio/battle-theme/battle.wav \ 21 assets/vendor/audio/rpg-sound-pack/attack.wav \ 22 assets/vendor/audio/rpg-sound-pack/hit.wav \ 23 assets/vendor/audio/rpg-sound-pack/spell.wav \ 24 assets/vendor/audio/rpg-sound-pack/menu.wav \ 25 assets/vendor/audio/rpg-sound-pack/pickup.wav \ 26 assets/vendor/audio/rpg-sound-pack/drop.wav \ 27 assets/vendor/audio/rpg-sound-pack/step.wav \ 28 assets/vendor/audio/rpg-sound-pack/interact.wav \ 29 assets/vendor/audio/rpg-sound-pack/trade.wav 30 31 SRC = \ 32 src/engine/area.c \ 33 src/engine/audio.c \ 34 src/engine/battle.c \ 35 src/engine/render.c \ 36 src/engine/save.c \ 37 src/engine/world.c \ 38 src/game/content.c \ 39 src/game/presentation.c \ 40 src/game/main.c 41 42 MAPC_SRC = src/tools/mapc.c src/game/content.c 43 CONFIG = config.h 44 45 OBJ = $(SRC:src/%.c=$(OBJDIR)/%.o) 46 SMOKE_OBJ = $(OBJDIR)/tests/smoke.o 47 RENDER_SMOKE_OBJ = $(OBJDIR)/tests/render.o 48 CORE_OBJ = $(filter-out $(OBJDIR)/engine/render.o $(OBJDIR)/game/main.o \ 49 $(OBJDIR)/game/presentation.o,$(OBJ)) 50 DEP = $(OBJ:.o=.d) $(SMOKE_OBJ:.o=.d) $(RENDER_SMOKE_OBJ:.o=.d) 51 52 SDL3_CFLAGS = $(shell pkg-config --cflags sdl3 2>/dev/null) 53 SDL3_LDLIBS = $(shell pkg-config --libs sdl3 2>/dev/null) 54 55 CPPFLAGS = -I. -Isrc 56 CFLAGS = -std=c99 -Wall -Wextra -Wpedantic -O2 -MMD -MP 57 LDLIBS = -lm 58 59 ifneq ($(strip $(SDL3_LDLIBS)),) 60 CPPFLAGS += -DPH_USE_SDL=1 61 CFLAGS += $(SDL3_CFLAGS) 62 LDLIBS += $(SDL3_LDLIBS) 63 else 64 CPPFLAGS += -DPH_USE_SDL=0 65 endif 66 67 .PHONY: all clean render-smoke smoke 68 69 all: $(BIN) $(MAPBIN) $(TILESET_BMP) $(HERO_BMP) $(ITEMS_BMP) $(CRITTERS_BMP) 70 71 $(BIN): $(OBJ) $(MAPBIN) $(TILESET_BMP) $(HERO_BMP) $(ITEMS_BMP) $(CRITTERS_BMP) $(AUDIO) 72 @mkdir -p $(dir $@) 73 $(CC) $(OBJ) -o $@ $(LDLIBS) 74 75 $(SMOKE): $(CORE_OBJ) $(SMOKE_OBJ) 76 @mkdir -p $(dir $@) 77 $(CC) $^ -o $@ $(LDLIBS) 78 79 $(RENDER_SMOKE): $(CORE_OBJ) $(OBJDIR)/engine/render.o \ 80 $(OBJDIR)/game/presentation.o $(RENDER_SMOKE_OBJ) $(MAPBIN) \ 81 $(TILESET_BMP) $(HERO_BMP) $(ITEMS_BMP) $(CRITTERS_BMP) $(AUDIO) 82 @mkdir -p $(dir $@) 83 $(CC) $(CORE_OBJ) $(OBJDIR)/engine/render.o $(OBJDIR)/game/presentation.o \ 84 $(RENDER_SMOKE_OBJ) \ 85 -o $@ $(LDLIBS) 86 87 $(MAPC): $(MAPC_SRC) $(CONFIG) 88 @mkdir -p $(dir $@) 89 $(CC) $(CPPFLAGS) $(CFLAGS) $(MAPC_SRC) -o $@ 90 91 $(OBJDIR)/%.o: src/%.c 92 @mkdir -p $(dir $@) 93 $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ 94 95 $(OBJ) $(SMOKE_OBJ) $(RENDER_SMOKE_OBJ): $(CONFIG) 96 97 $(CONFIG): 98 cp config.def.h $@ 99 100 $(MAPDIR)/%.phmap: data/maps/%.txt $(MAPC) 101 @mkdir -p $(dir $@) 102 $(MAPC) $< $@ 103 104 $(TILESET_BMP): $(TILESET_SRC) Makefile 105 @mkdir -p $(dir $@) 106 magick $< -background black -alpha remove -alpha off BMP3:$@ 107 108 $(HERO_BMP): $(HERO_SRC) 109 @mkdir -p $(dir $@) 110 magick $< -alpha off BMP3:$@ 111 112 $(ITEMS_BMP): $(ITEMS_SRC) 113 @mkdir -p $(dir $@) 114 magick $< BMP3:$@ 115 116 $(CRITTERS_BMP): $(CRITTERS_SRC) 117 @mkdir -p $(dir $@) 118 magick $< -alpha off BMP3:$@ 119 120 smoke: $(MAPBIN) $(SMOKE) 121 $(SMOKE) 122 123 render-smoke: $(RENDER_SMOKE) 124 SDL_AUDIODRIVER=dummy SDL_VIDEODRIVER=dummy $(RENDER_SMOKE) 125 126 clean: 127 rm -rf bin $(OBJDIR) 128 129 -include $(DEP)