gear/Makefile

80 lines
2.1 KiB
Makefile
Raw Normal View History

2024-08-17 19:12:22 +12:00
BINARY=gear
SHADERC=sokol-shdc
2024-08-31 17:42:56 +12:00
CFLAGS=-I. -Iinclude -Wall -Wextra -Werror -Wno-header-guard -Wno-comment -g
LDFLAGS=-g
2024-08-17 19:12:22 +12:00
SHADER_FLAGS=--slang glsl430:hlsl5:metal_macos
C_FILES=$(shell find -L src -type f -name '*.c')
2024-08-17 19:12:22 +12:00
C_OBJ=$(C_FILES:.c=.o)
SHADER_FILES=$(shell find -L * -type f -name '*.glsl')
SHADER_OBJ=$(SHADER_FILES:.glsl=.glsl.h)
2024-09-01 14:10:06 +12:00
RESOURCES_DIR=res
RESOURCES_C=$(RESOURCES_DIR)/res.c
2024-09-01 14:10:06 +12:00
RESOURCES_OBJ=$(RESOURCES_DIR)/res.o
RESOURCES_H=include/gear/resources.h
RESOURCE_FILES=$(shell find -L res -type f -not -name '*.o' -not -name '*.c')
2024-09-01 14:10:06 +12:00
ifeq ($(CC), gcc)
CFLAGS += -Wno-use-after-free
endif
2024-08-17 19:12:22 +12:00
ifeq ($(OS), Windows_NT)
2024-09-01 14:10:06 +12:00
CFLAGS += -DSOKOL_D3D11 -D_CRT_SECURE_NO_WARNINGS
2024-08-18 13:06:00 +12:00
BINARY := $(BINARY).exe
2024-08-17 19:12:22 +12:00
else
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S), Linux)
CFLAGS += -DSOKOL_GLCORE
2024-08-19 18:03:22 +12:00
LDFLAGS += $(shell pkg-config --libs x11 xi xcursor gl) -ldl -pthread -lm -lasound
2024-08-17 19:12:22 +12:00
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
2024-09-01 14:10:06 +12:00
.PHONY: shaders resources
$(BINARY): shaders resources $(C_OBJ) $(OBJC_OBJ)
2024-09-01 14:10:06 +12:00
$(CC) $(C_OBJ) $(OBJC_OBJ) $(RESOURCES_OBJ) $(LDFLAGS) -o $(BINARY)
2024-08-17 19:12:22 +12:00
2024-08-19 11:54:40 +12:00
shaders: $(SHADER_OBJ)
@echo Shaders compiled
2024-09-01 14:10:06 +12:00
resources:
@echo "// Generated resource file" > res/res.c
$(foreach res, $(RESOURCE_FILES), xxd -i $(res) >> $(RESOURCES_C);)
$(CC) -o $(RESOURCES_OBJ) -c $(RESOURCES_C)
2024-09-01 14:10:06 +12:00
@echo "#ifndef __G_RESOURCES_H__" > $(RESOURCES_H)
@echo "#define __G_RESOURCES_H__" >> $(RESOURCES_H)
@nm -g -j $(RESOURCES_OBJ) | \
awk '{ if($$0 ~ /len$$/) { print "extern int " substr($$0, 2) ";" } else { print "extern char " substr($$0, 2) "[];" } }' >> $(RESOURCES_H)
2024-09-01 14:10:06 +12:00
@echo "#endif" >> $(RESOURCES_H)
@echo Resources compiled
2024-08-17 19:12:22 +12:00
%.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:
2024-09-01 14:10:06 +12:00
rm -rf $(C_OBJ) $(OBJC_OBJ) $(SHADER_OBJ) $(RESOURCES_OBJ) $(RESOURCES_H) $(BINARY)