polyadvent

A game engine from scratch in C
git clone git://jb55.com/polyadvent
Log | Files | Refs | README

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