Makefile (1990B)
1 NAME ?= polyadvent 2 BIN ?= $(NAME) 3 PREFIX ?= /usr/local 4 FLAGS= -O0 -g -DDEBUG -U_FORTIFY_SOURCE 5 #FLAGS= -O2 6 # release build lol 7 #FLAGS=-DGLFW_INCLUDE_NONE -DNDEBUG -Og -g 8 9 TINYCC_CFLAGS=-DSTBI_NO_SIMD -DSDL_DISABLE_IMMINTRIN_H $(shell pkg-config --cflags sdl2 gl x11) 10 TINYCC_LDFLAGS=$(shell pkg-config --libs sdl2 gl) \ 11 $(shell pkg-config --libs-only-L x11 xcb xau xdmcp xext xcursor xrender xfixes xinerama xi xrandr xscrnsaver xxf86vm) 12 13 14 CFLAGS = -DGLFW_INCLUDE_NONE $(FLAGS) -Isrc \ 15 $(TINYCC_CFLAGS) \ 16 -Wall -Werror -Wextra -std=c99 \ 17 -Wno-unused-function \ 18 -Wno-unused-parameter \ 19 -Wno-unused-variable \ 20 -Wmissing-field-initializers \ 21 -Wno-cast-align \ 22 -Wno-padded 23 24 LDFLAGS = $(TINYCC_LDFLAGS) -lSDL2 -lGL -lm 25 SRC=src 26 27 SRCS=$(wildcard $(SRC)/*.c) $(wildcard rogue/*.c) 28 PLYS=$(wildcard data/models/*.ply) 29 30 MODELS=$(PLYS:.ply=.mdl) 31 OBJS=$(SRCS:.c=.o) 32 33 TESTS = test/test_dae 34 TESTS += test/test_resource 35 TESTS += test/test_scene 36 37 TOOLS = tools/compile-model 38 39 all: $(BIN) $(MODELS) 40 41 clean: 42 rm -f main.o polyadvent.o src/main.o test/*.o tools/*.o $(TOOLS) $(MODELS) $(OBJS) $(TESTS) $(SHLIB) $(BIN) $(SRC)/*.d* 43 44 %.o: %.c %.h 45 @echo "$(CC) $<" 46 @$(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $< 47 48 test/%: test/%.o $(OBJS) 49 @echo "$(CC) $@" 50 @$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@ 51 52 COMPILE_MODEL_DEPS=tools/compile-model.c src/ply.c src/mdl.c src/mkgeom.c src/file.c 53 54 tools/compile-model: $(COMPILE_MODEL_DEPS) src/ply.h src/mdl.h 55 @echo "$(CC) $@" 56 @$(CC) $(CFLAGS) $(COMPILE_MODEL_DEPS) $(LDFLAGS) -o $@ 57 58 tools: $(TOOLS) 59 60 data/models/%.mdl: data/models/%.ply tools/compile-model 61 @echo "compile-model $@" 62 @./tools/compile-model $< $@ 63 64 check: $(TESTS) $(MODELS) 65 ./test/test_dae 66 ./test/test_resource 67 ./test/test_scene 68 69 $(BIN): main.o $(OBJS) 70 @echo "$(CC) $@" 71 @$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@ 72 73 install: $(BIN) 74 install -d $(PREFIX)/bin 75 install $(BIN) $(PREFIX)/bin 76 77 TAGS: 78 etags $(SRCS) 79 80 tags: 81 ctags $(SRCS) $(SRCS:.c=.h) $(HEADERS) 82 83 .PHONY: TAGS tags clean clean-models polyadvent