gear/Makefile
2024-08-19 11:54:40 +12:00

53 lines
1.2 KiB
Makefile

BINARY=gear
SHADERC=sokol-shdc
CFLAGS=-I. -Iinclude -Wall -Wextra -Werror -Wno-header-guard -std=c99
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): shaders $(C_OBJ) $(OBJC_OBJ)
$(CC) $(C_OBJ) $(OBJC_OBJ) $(LDFLAGS) -o $(BINARY)
shaders: $(SHADER_OBJ)
@echo Shaders compiled
%.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)