BINARY=gear SHADERC=sokol-shdc CFLAGS=-I. -Iinclude -Wall -Wextra -Werror -Wno-header-guard SHADER_FLAGS=--slang glsl430:hlsl5:metal_macos C_FILES=$(shell find -L * -type f -name '*.c') C_OBJ=$(C_FILES:.c=.o) SHADER_FILES=$(shell find -L * -type f -name '*.glsl') SHADER_OBJ=$(SHADER_FILES:.glsl=.glsl.h) ifeq ($(OS), Windows_NT) CFLAGS += -DSOKOL_D3D11 BINARY := $(BINARY).exe else UNAME_S := $(shell uname -s) ifeq ($(UNAME_S), Linux) CFLAGS += -DSOKOL_GLCORE endif ifeq ($(UNAME_S), Darwin) CFLAGS += -DSOKOL_METAL LDFLAGS += -framework Cocoa -framework QuartzCore -framework Metal -framework MetalKit -framework AudioToolbox OBJC_FILES=$(shell find -L * -type f -name '*.m') OBJC_OBJ=$(OBJC_FILES:.m=.o) endif endif $(BINARY): $(SHADER_OBJ) $(C_OBJ) $(OBJC_OBJ) $(CC) $(C_OBJ) $(OBJC_OBJ) $(LDFLAGS) -o $(BINARY) %.glsl.h: %.glsl $(SHADERC) --input $< --output $@ $(SHADER_FLAGS) %.o: %.c $(CC) -o $@ -c $< $(CFLAGS) %.o: %.m $(CC) -o $@ -c $< $(OBJC_FLAGS) $(CFLAGS) run: $(BINARY) ./$(BINARY) bear: clean bear -- $(MAKE) $(BINARY) clean: rm -rf $(C_OBJ) $(OBJC_OBJ) $(SHADER_OBJ) $(BINARY)