-
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathbuild_shaders.makefile
More file actions
96 lines (73 loc) · 2.59 KB
/
build_shaders.makefile
File metadata and controls
96 lines (73 loc) · 2.59 KB
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# Platform Detection
include platform.Makefile
#-------------------------------------------
# Shader Compilation
#-------------------------------------------
SHADER_INCLUDES = -I$(wildcard shaders/include/)
VSC_BUILD_DIR := ./.shader_compiler.build
VSC_SOURCE_DIR := ./toolchain/shader_compiler
SHADER_COMPILER = $(VSC_BUILD_DIR)/vsc
# toolchain/shader_compiler/makefile creates vsc.exe executable, while the targets 'shader-release' and 'shader-debug' check for 'vsc'
# this leads to unconditionally compiling the .v3dshader files everytime 'make -s build' is triggered
ifeq (Windows,$(PLATFORM))
SHADER_COMPILER := $(addsuffix .exe,$(SHADER_COMPILER))
endif
SHADER_SOURCES = $(wildcard ./shaders/*/*.v3dshader ./shaders/*/*/*.v3dshader)
SHADER_BINARIES = $(subst .v3dshader,.sb, $(SHADER_SOURCES))
SHADER_COMPILER_COMPILATION_MODE =
# Meson build system
MESON := meson
$(SHADER_COMPILER):
$(MESON) setup $(VSC_BUILD_DIR) $(VSC_SOURCE_DIR) --reconfigure --buildtype=$(SHADER_COMPILER_COMPILATION_MODE)
$(MESON) compile -C $(VSC_BUILD_DIR)
%.sb: %.v3dshader $(SHADER_COMPILER)
$(SHADER_COMPILER) $(SHADER_INCLUDES) $< $@
.PHONY: vsc
.PHONY: vsc-debug
.PHONY: vsc-release
.PHONY: vsc-clean
vsc: vsc-debug
vsc-debug: SHADER_COMPILER_COMPILATION_MODE += debug
vsc-debug: $(SHADER_COMPILER)
vsc-release: SHADER_COMPILER_COMPILATION_MODE += release
vsc-release: $(SHADER_COMPILER)
vsc-clean:
$(RM) -rf $(VSC_BUILD_DIR)
.PHONY: shader-debug
.PHONY: shader-release
.PHONY: shader
.PHONY: shader-clean
shader-debug: vsc-debug
shader-debug: $(SHADER_BINARIES)
shader-release: vsc-release
shader-release: $(SHADER_BINARIES)
shader: shader-debug
shader-clean:
ifeq (Windows,$(PLATFORM))
$(RM) $(subst /,\, $(SHADER_BINARIES))
endif
ifeq (Linux,$(PLATFORM))
$(RM) $(SHADER_BINARIES)
endif
GLSL_SHADERS = $(wildcard shaders/*.frag shaders/*.vert shaders/*/*.frag shaders/*/*.vert shaders/*/*/*.frag shaders/*/*/*.vert shaders/*/*/*/*.frag shaders/*/*/*/*.vert)
SPIRV_SHADERS = $(addsuffix .spv, $(GLSL_SHADERS))
SPIRV_COMPILER = glslc
%.vert.spv: %.vert
$(SPIRV_COMPILER) $(SHADER_INCLUDES) $< -o $@
%.frag.spv: %.frag
$(SPIRV_COMPILER) $(SHADER_INCLUDES) $< -o $@
.PHONY: glsl-shader
.PHONY: glsl-shader-clean
glsl-shader: $(SPIRV_SHADERS)
glsl-shader-clean:
ifeq (Windows,$(PLATFORM))
$(RM) $(subst /,\, $(SPIRV_SHADERS))
endif
ifeq (Linux,$(PLATFORM))
$(RM) $(SPIRV_SHADERS)
endif
.PHONY: all
all : glsl-shader shader-debug
.PHONY: clean
clean : glsl-shader-clean shader-clean vsc-clean
#-------------------------------------------