-
Notifications
You must be signed in to change notification settings - Fork 2
/
build.ninja
92 lines (77 loc) · 2.4 KB
/
build.ninja
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
builddir = obj
config = $
-O1 -ggdb $
-DTXT_DEBUG -DALG_DEBUG $
-DINP_KEYS -DINP_TEXT -DINP_MOUSE
cflags = -fPIC -fdiagnostics-color=always
lflags = -shared
incl = -I ext/include
libs = -L ext/lib -lglfw3 -lvulkan
corelibs = ERROR_PLATFORM_UNDEFINED
rule cc
depfile = $out.d
deps = gcc
command = clang -MD -MF $out.d $
$config $cflags $incl -c $in -o $out
rule ld
command = clang $in $corelibs $libs $lflags -o $out
rule ar
command = lib $in $libs /out:$out
build $builddir/lib.o: cc lib.c
build $builddir/inp.o: cc inp.c
build $builddir/lib_nopic.o: cc lib.c
cflags =
build $builddir/inp_nopic.o: cc inp.c
cflags =
build bin/libtxtquad.so: $
ld $builddir/lib.o $builddir/inp.o
corelibs = -ldl -lX11 -lm -lpthread
build so: phony bin/libtxtquad.so
build bin/libtxtquad.dylib: $
ld $builddir/lib.o $builddir/inp.o
corelibs = -framework Cocoa -framework IOKit
lflags = -undefined dynamic_lookup -shared $
-Wl,-install_name,@rpath/libtxtquad.dylib
build dylib: phony bin/libtxtquad.dylib
build bin/txtquad.lib: $
ar $builddir/lib_nopic.o $builddir/inp_nopic.o
corelibs =
libs = ext/lib/glfw3.lib ext/lib/vulkan.lib
build lib: phony bin/txtquad.lib
### EXAMPLES ###
demo = 1
sflags =
rule shc
command = glslc $sflags $in -o $out
rule lde
command = clang $in $libs -o $out
build assets/vert.spv: shc text.vert $
| config.h
build assets/vert_compat.spv: shc text.vert $
| config.h
sflags = -DPLATFORM_COMPAT_VBO
build assets/frag.spv: shc text.frag
build $builddir/demos.o: cc examples/demos.c
config = -O0 -ggdb -DDEMO_$demo
incl = -I ext/include -I ..
build $builddir/demos_nopic.o: cc examples/demos.c
config = -O0 -ggdb -DDEMO_$demo
incl = -I ext/include -I ..
cflags =
build bin/demos: $
lde $builddir/demos.o $
| so assets/vert.spv assets/frag.spv
libs = -L bin -ltxtquad -rpath bin -lm
build demos: phony bin/demos
build bin/demos.macos: $
lde $builddir/demos.o $
| dylib assets/vert_compat.spv assets/frag.spv
libs = -L bin -ltxtquad -rpath bin
build demos.macos: phony bin/demos.macos
build bin/demos.exe: $
lde $builddir/demos_nopic.o $
| lib assets/vert.spv assets/frag.spv
libs = -L bin -ltxtquad $
-lmsvcrt -luser32 -lshell32 -lgdi32 $
-Wl,-nodefaultlib:libcmt -Wl,-nodefaultlib:msvcrtd -Wl,-machine:x64
build demos.exe: phony bin/demos.exe