ROOT_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) CFLAGS = -I $(ROOT_DIR)/include -I/usr/local/include -O0 -g -Wall -Wextra LDFLAGS = -L/opt/homebrew/opt/llvm/lib -L/opt/homebrew/opt/llvm/lib/c++ -L/opt/homebrew/lib -lglfw -lvulkan -ldl -Xlinker -rpath -Xlinker /opt/homebrew/lib CC = /opt/homebrew/opt/llvm/bin/clang CPP = /opt/homebrew/opt/llvm/bin/clang++ DSYM = /opt/homebrew/opt/llvm/bin/dsymutil GDB = /opt/homebrew/opt/llvm/bin/lldb SOURCES = src/main.c src/render.c src/vma.cpp src/pipeline.c OBJECTS = $(addsuffix .o, $(basename $(SOURCES))) VERT_SPV = $(addsuffix .vert.spv, $(basename $(wildcard shader_src/*.vert))) FRAG_SPV = $(addsuffix .frag.spv, $(basename $(wildcard shader_src/*.frag))) export MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS=1 .PHONY: all all: roleplay $(VERT_SPV) $(FRAG_SPV) roleplay: $(OBJECTS) $(CPP) $(CFLAGS) $(LDFLAGS) -o $@ $^ %.o: %.cpp $(CPP) $(CFLAGS) -c -o $@ $< %.o: %.c $(CC) $(CFLAGS) -c -o $@ $< .PHONY: clean clean_compdb clean: rm -f $(FRAG_SPV) rm -f $(VERT_SPV) rm -f $(OBJECTS) rm -f roleplay rm -rf roleplay.dSYM clean_compdb: rm -rf .compdb rm compile_commands.json run: roleplay ./roleplay roleplay.dSYM: roleplay $(DSYM) roleplay debug: roleplay roleplay.dSYM $(GDB) roleplay %.vert.spv: %.vert glslangValidator -V -o $@ $< %.frag.spv: %.frag glslangValidator -V -o $@ $<