-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
64 lines (46 loc) · 1.6 KB
/
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
SRC_DIR := src/
BIN_DIR := bin/
OBJ_DIR := bin/obj/
SHR_DIR := shr/
CC := g++
CC_FLAGS := -std=c++20 -g -O0 -Iinc -Iinc/graphics -Iinc/math -Iinc/scenegraph -Istui/inc -Wall
CC_INCLUDE :=
LD := g++
LD_FLAGS := -g
LD_INCLUDE := -lpthread -lglfw -lvulkan -ldl -lX11 -lXrandr -lXi
SC := glslc
SC_FLAGS :=
DEP_FLAGS := -MMD -MP
CC_FILES_IN := $(wildcard $(SRC_DIR)*.cpp) $(wildcard $(SRC_DIR)*/*.cpp)
CC_FILES_OUT := $(patsubst $(SRC_DIR)%.cpp, $(OBJ_DIR)%.o, $(CC_FILES_IN))
CC_FILES_DEP := $(patsubst $(SRC_DIR)%.cpp, $(OBJ_DIR)%.d, $(CC_FILES_IN))
SC_V_FILES_IN := $(wildcard $(SHR_DIR)*.vert)
SC_F_FILES_IN := $(wildcard $(SHR_DIR)*.frag)
SC_FILES_OUT := $(patsubst $(SHR_DIR)%.vert, $(BIN_DIR)%_vert.spv, $(SC_V_FILES_IN)) $(patsubst $(SHR_DIR)%.frag, $(BIN_DIR)%_frag.spv, $(SC_F_FILES_IN))
EXE_OUT := $(BIN_DIR)planetarium
.PHONY: clean $(BIN_DIR) $(OBJ_DIR)
all: execute
$(OBJ_DIR)%.o: $(SRC_DIR)%.cpp
@mkdir -p $(dir $@)
@echo "Compiling" $< to $@
@$(CC) $(CC_FLAGS) $(CC_INCLUDE) $(DEP_FLAGS) -c $< -o $@
-include $(CC_FILES_DEP)
$(BIN_DIR)%_vert.spv: $(SHR_DIR)%.vert
@mkdir -p $(BIN_DIR)
@echo "Compiling vertex shader" $<
@$(SC) $< -o $@
$(BIN_DIR)%_frag.spv: $(SHR_DIR)%.frag
@mkdir -p $(BIN_DIR)
@echo "Compiling fragment shader" $<
@$(SC) $< -o $@
shaders: $(SC_FILES_OUT)
@cp $(SC_FILES_OUT) .
$(EXE_OUT): $(CC_FILES_OUT)
@echo "Linking" $(EXE_OUT)
@$(LD) $(LD_FLAGS) -o $@ $(CC_FILES_OUT) $(LD_INCLUDE)
build: $(EXE_OUT)
execute: $(EXE_OUT) shaders
@$(EXE_OUT)
clean:
@rm -r $(BIN_DIR)
@rm *.spv