CXX = g++ CXXFLAGS = -g -Isrc LD = ld LINKFLAGS = -lGL -lglfw CC = gcc CCFLAGS = -g -Isrc XNOECRAFT_CPP_SRCS = $(shell find src/ -name '*.cpp') XNOECRAFT_C_SRCS = $(shell find src/ -name '*.c') XNOECRAFT_RES = $(shell find res/ -type f) XNOECRAFT_OBJS = $(patsubst src/%.cpp,build/%.o,$(XNOECRAFT_CPP_SRCS)) $(patsubst src/%.c,build/%.o,$(XNOECRAFT_C_SRCS)) $(patsubst res/%.dat,build/%.o,$(XNOECRAFT_RES)) XNOECRAFT_SRC_DIRS = $(shell find src/* -type d) XNOECRAFT_RES_DIRS = $(shell find res/* -type d) XNOECRAFT_OBJ_DIRS = $(patsubst src/%,build/%,$(XNOECRAFT_SRC_DIRS)) $(patsubst res/%,build/%,$(XNOECRAFT_RES_DIRS)) .PHONY = all cleanbuild clean prepare all: prepare build/xnoecraft ./build/xnoecraft cleanbuild: clean prepare build/xnoecraft clean: rm -r build prepare: $(XNOECRAFT_OBJ_DIRS) build/xnoecraft: $(XNOECRAFT_OBJS) $(CXX) $(LINKFLAGS) -o $@ $^ build/%.o: src/%.cpp $(CXX) $(CXXFLAGS) -o $@ -c $< build/%.o: src/%.c $(CC) $(CCFLAGS) -o $@ -c $< build/%.o: res/%.dat $(LD) -r -b binary $< -o $@ $(XNOECRAFT_OBJ_DIRS): mkdir -p $@