-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbroken_makefile
72 lines (52 loc) · 1.85 KB
/
broken_makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
UNAME = $(shell uname -s)
# cmake wrapper
#external dependencies
VENDOR = libvendor.so
VENDORDIR = libs
BUILDDIR = bin
EXEC = SpiritRender
LIB = libspirit.so
CFLAGS += --std=gnu2x -Wall -Werror -Wextra
CFLAGS += -Wno-unused-value -Wno-unused-parameter
CFLAGS += -Wno-ignored-qualifiers
# library includes
CFLAGS += -I./src/ -I./$(VENDORDIR)/json-c/ -I./$(VENDORDIR)/cglm/include/
CFLAGS += -I./$(VENDORDIR)/glfw/include/
CFLAGS += -I./$(VENDORDIR)/shaderc/libshaderc/include/
LDFLAGS += -L./$(VENDORDIR)/$(BUILDDIR)/ -lvendor -lvulkan -lm -lstdc++
# LDFLAGS += -L./$(VENDORDIR)/$(BUILDDIR)/glslang/glslang/ -lglslang
# LDFLAGS += -L./$(VENDORDIR)/$(BUILDDIR)/spirv-tools/source -lSPIRV-Tools
DEBUGGER = gdb
DEBUGGERARGS = --silent
SRCDIRS = $(wildcard src/**/) $(wildcard src/**/**/)
OBJDIRS = $(SRCDIRS:%=$(BUILDDIR)/%)
SRC = $(wildcard src/*.c) $(wildcard src/**/*.c) $(wildcard src/**/**/*.c)
OBJ = $(SRC:%.c=$(BUILDDIR)/%.o)
.PHONY = clean all default test noshade debug
# all: dirs library test run
default: dirs vendor library exec run
dirs:
mkdir -p ./$(BUILDDIR) ./libs/$(BUILDDIR) $(OBJDIRS)
run:
./$(BUILDDIR)/$(EXEC)
test:
./$(BUILDDIR)/$(EXEC) --test
noshade:
./$(BUILDDIR)/$(EXEC) --delete-shader-cache
debug:
cd $(BUILDDIR)
$(DEBUGGER) $(DEBUGGERARGS) $(BUILDDIR)/$(EXEC)
cmake:
cmake -B $(BUILDDIR) -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
cp $(BUILDDIR)/compile_commands.json ./compile_commands.json
exec:
cc test/testmain.c -o $(BUILDDIR)/$(EXEC) $(CFLAGS) -lvulkan -lm -L./$(BUILDDIR) -lspirit
library: $(OBJ)
cc -shared -fPIC -o $(BUILDDIR)/$(LIB) $^ $(CFLAGS) $(LDFLAGS)
$(BUILDDIR)/%.o: %.c
cc $(CFLAGS) -o $@ -c $<
vendor: .gitmodules
cmake -B libs/$(BUILDDIR) -G Unix\ Makefiles -S ./$(VENDORDIR)
make -C $(VENDORDIR)/$(BUILDDIR) -s
clean:
rm -Rf ./$(OBJ) ./$(BUILDDIR)/$(LIB) ./$(BUILDDIR)/$(EXEC) ./$(OBJDIRS)