phantasia

Phantasia - 2D SDL3 RPG prototype.
git clone git://git.beep.wimdupont.com/phantasia.git
Log | Files | Refs | README | LICENSE

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)