2024-09-02 17:35:13 +12:00
|
|
|
BINARY=gear-bin
|
2024-08-17 19:12:22 +12:00
|
|
|
|
|
|
|
SHADERC=sokol-shdc
|
|
|
|
|
2024-09-08 17:37:47 +12:00
|
|
|
CFLAGS=-I. -Iinclude -Wall -Wextra -Werror -Wno-header-guard -Wno-comment -Wno-unused-parameter -Wno-unused-function -Ofast
|
|
|
|
CXXFLAGS=$(CFLAGS) -std=c++11
|
2024-08-31 17:42:56 +12:00
|
|
|
LDFLAGS=-g
|
2024-08-17 19:12:22 +12:00
|
|
|
SHADER_FLAGS=--slang glsl430:hlsl5:metal_macos
|
|
|
|
|
2024-09-02 17:18:27 +12:00
|
|
|
C_FILES=$(shell find -L src -type f -name '*.c')
|
2024-08-17 19:12:22 +12:00
|
|
|
C_OBJ=$(C_FILES:.c=.o)
|
|
|
|
|
2024-09-08 17:37:47 +12:00
|
|
|
CXX_FILES=$(shell find -L src -type f -name '*.cpp')
|
|
|
|
CXX_OBJ=$(CXX_FILES:.cpp=.o)
|
|
|
|
|
2024-08-17 19:12:22 +12:00
|
|
|
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
|
2024-09-02 17:18:27 +12:00
|
|
|
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
|
2024-09-02 17:18:27 +12:00
|
|
|
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-02 17:33:46 +12:00
|
|
|
.PHONY: shaders resources run clean bear
|
2024-09-01 14:10:06 +12:00
|
|
|
|
2024-09-08 17:37:47 +12:00
|
|
|
$(BINARY): $(SHADER_OBJ) $(RESOURCES_H) $(C_OBJ) $(CXX_OBJ) $(OBJC_OBJ)
|
|
|
|
$(CXX) $(C_OBJ) $(CXX_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)
|
2024-09-02 17:33:46 +12:00
|
|
|
@echo "Shaders compiled"
|
2024-08-19 11:54:40 +12:00
|
|
|
|
2024-09-02 17:33:46 +12:00
|
|
|
resources: $(RESOURCES_OBJ) $(RESOURCES_H)
|
|
|
|
@echo "Resources compiled"
|
|
|
|
|
2024-09-02 17:50:33 +12:00
|
|
|
$(RESOURCES_C):
|
2024-09-02 17:33:46 +12:00
|
|
|
@echo "// Generated resource file" > $(RESOURCES_C)
|
2024-09-02 17:18:27 +12:00
|
|
|
$(foreach res, $(RESOURCE_FILES), xxd -i $(res) >> $(RESOURCES_C);)
|
2024-09-02 17:50:33 +12:00
|
|
|
|
|
|
|
$(RESOURCES_OBJ): $(RESOURCES_C) $(RESOURCE_FILES)
|
2024-09-02 17:33:46 +12:00
|
|
|
$(CC) -o $@ -c $(RESOURCES_C)
|
2024-09-02 17:18:27 +12:00
|
|
|
|
2024-09-02 17:33:46 +12:00
|
|
|
$(RESOURCES_H): $(RESOURCES_OBJ)
|
|
|
|
@echo "#ifndef __G_RESOURCES_H__" > $@
|
|
|
|
@echo "#define __G_RESOURCES_H__" >> $@
|
2024-09-07 17:05:20 +12:00
|
|
|
nm -g -j $(RESOURCES_OBJ) | sed "s/^_//" | \
|
|
|
|
awk '{ if($$0 ~ /len$$/) { print "extern int " $$0 ";" } else { print "extern char " $$0 "[];" } }' >> $@
|
2024-09-02 17:33:46 +12:00
|
|
|
@echo "#endif" >> $@
|
|
|
|
@echo "Resources compiled"
|
2024-09-01 14:10:06 +12:00
|
|
|
|
2024-08-17 19:12:22 +12:00
|
|
|
%.glsl.h: %.glsl
|
|
|
|
$(SHADERC) --input $< --output $@ $(SHADER_FLAGS)
|
|
|
|
|
|
|
|
%.o: %.c
|
|
|
|
$(CC) -o $@ -c $< $(CFLAGS)
|
|
|
|
|
2024-09-08 17:37:47 +12:00
|
|
|
%.o: %.cpp
|
|
|
|
$(CXX) -o $@ -c $< $(CXXFLAGS)
|
|
|
|
|
2024-08-17 19:12:22 +12:00
|
|
|
%.o: %.m
|
|
|
|
$(CC) -o $@ -c $< $(OBJC_FLAGS) $(CFLAGS)
|
|
|
|
|
|
|
|
run: $(BINARY)
|
|
|
|
./$(BINARY)
|
|
|
|
|
|
|
|
bear: clean
|
|
|
|
bear -- $(MAKE) $(BINARY)
|
|
|
|
|
|
|
|
clean:
|
2024-09-02 17:50:33 +12:00
|
|
|
rm -rf $(C_OBJ) $(OBJC_OBJ) $(SHADER_OBJ) $(RESOURCES_OBJ) $(RESOURCES_C) $(RESOURCES_H) $(BINARY)
|