forked from bkaradzic/bx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
makefile
238 lines (194 loc) · 8.15 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
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
#
# Copyright 2011-2021 Branimir Karadzic. All rights reserved.
# License: https://github.com/bkaradzic/bx#license-bsd-2-clause
#
GENIE=../bx/tools/bin/$(OS)/genie
all:
$(GENIE) vs2017
$(GENIE) vs2019
$(GENIE) --gcc=android-arm gmake
$(GENIE) --gcc=android-arm64 gmake
$(GENIE) --gcc=android-x86 gmake
$(GENIE) --gcc=mingw-gcc gmake
$(GENIE) --gcc=linux-gcc gmake
$(GENIE) --gcc=haiku gmake
$(GENIE) --gcc=osx-x64 gmake
$(GENIE) --gcc=osx-arm64 gmake
$(GENIE) --gcc=ios-arm gmake
$(GENIE) --gcc=ios-simulator gmake
$(GENIE) --gcc=ios-simulator64 gmake
$(GENIE) xcode8
.build/projects/gmake-android-arm:
$(GENIE) --gcc=android-arm gmake
android-arm-debug: .build/projects/gmake-android-arm
make -R -C .build/projects/gmake-android-arm config=debug
android-arm-release: .build/projects/gmake-android-arm
make -R -C .build/projects/gmake-android-arm config=release
android-arm: android-arm-debug android-arm-release
.build/projects/gmake-android-arm64:
$(GENIE) --gcc=android-arm64 gmake
android-arm64-debug: .build/projects/gmake-android-arm64
make -R -C .build/projects/gmake-android-arm64 config=debug
android-arm64-release: .build/projects/gmake-android-arm64
make -R -C .build/projects/gmake-android-arm64 config=release
android-arm64: android-arm64-debug android-arm64-release
.build/projects/gmake-android-x86:
$(GENIE) --gcc=android-x86 gmake
android-x86-debug: .build/projects/gmake-android-x86
make -R -C .build/projects/gmake-android-x86 config=debug
android-x86-release: .build/projects/gmake-android-x86
make -R -C .build/projects/gmake-android-x86 config=release
android-x86: android-x86-debug android-x86-release
.build/projects/gmake-linux:
$(GENIE) --gcc=linux-gcc gmake
linux-debug64: .build/projects/gmake-linux
make -R -C .build/projects/gmake-linux config=debug64
linux-release64: .build/projects/gmake-linux
make -R -C .build/projects/gmake-linux config=release64
linux: linux-debug64 linux-release64
.build/projects/gmake-haiku:
$(GENIE) --gcc=haiku gmake
haiku-debug64: .build/projects/gmake-haiku
make -R -C .build/projects/gmake-haiku config=debug64
haiku-release64: .build/projects/gmake-haiku
make -R -C .build/projects/gmake-haiku config=release64
haiku: haiku-debug64 haiku-release64
.build/projects/gmake-mingw-gcc:
$(GENIE) --gcc=mingw-gcc gmake
mingw-gcc-debug32: .build/projects/gmake-mingw-gcc
make -R -C .build/projects/gmake-mingw-gcc config=debug32
mingw-gcc-release32: .build/projects/gmake-mingw-gcc
make -R -C .build/projects/gmake-mingw-gcc config=release32
mingw-gcc-debug64: .build/projects/gmake-mingw-gcc
make -R -C .build/projects/gmake-mingw-gcc config=debug64
mingw-gcc-release64: .build/projects/gmake-mingw-gcc
make -R -C .build/projects/gmake-mingw-gcc config=release64
mingw-gcc: mingw-gcc-debug32 mingw-gcc-release32 mingw-gcc-debug64 mingw-gcc-release64
.build/projects/gmake-mingw-clang:
$(GENIE) --clang=mingw-clang gmake
mingw-clang-debug32: .build/projects/gmake-mingw-clang
make -R -C .build/projects/gmake-mingw-clang config=debug32
mingw-clang-release32: .build/projects/gmake-mingw-clang
make -R -C .build/projects/gmake-mingw-clang config=release32
mingw-clang-debug64: .build/projects/gmake-mingw-clang
make -R -C .build/projects/gmake-mingw-clang config=debug64
mingw-clang-release64: .build/projects/gmake-mingw-clang
make -R -C .build/projects/gmake-mingw-clang config=release64
mingw-clang: mingw-clang-debug32 mingw-clang-release32 mingw-clang-debug64 mingw-clang-release64
.build/projects/vs2017:
$(GENIE) vs2017
.build/projects/gmake-osx-x64:
$(GENIE) --gcc=osx-x64 gmake
osx-x64-debug: .build/projects/gmake-osx-x64
make -C .build/projects/gmake-osx config=debug
osx-x64-release: .build/projects/gmake-osx-x64
make -C .build/projects/gmake-osx config=release
osx-x64: osx-x64-debug osx-x64-release
.build/projects/gmake-ios-arm:
$(GENIE) --gcc=ios-arm gmake
ios-arm-debug: .build/projects/gmake-ios-arm
make -R -C .build/projects/gmake-ios-arm config=debug
ios-arm-release: .build/projects/gmake-ios-arm
make -R -C .build/projects/gmake-ios-arm config=release
ios-arm: ios-arm-debug ios-arm-release
.build/projects/gmake-ios-simulator:
$(GENIE) --gcc=ios-simulator gmake
ios-simulator-debug: .build/projects/gmake-ios-simulator
make -R -C .build/projects/gmake-ios-simulator config=debug
ios-simulator-release: .build/projects/gmake-ios-simulator
make -R -C .build/projects/gmake-ios-simulator config=release
ios-simulator: ios-simulator-debug ios-simulator-release
.build/projects/gmake-ios-simulator64:
$(GENIE) --gcc=ios-simulator64 gmake
ios-simulator64-debug: .build/projects/gmake-ios-simulator64
make -R -C .build/projects/gmake-ios-simulator64 config=debug
ios-simulator64-release: .build/projects/gmake-ios-simulator64
make -R -C .build/projects/gmake-ios-simulator64 config=release
ios-simulator64: ios-simulator64-debug ios-simulator64-release
rebuild-shaders:
make -R -C examples rebuild
analyze:
cppcheck src/
cppcheck examples/
docs:
doxygen scripts/bgfx.doxygen
markdown README.md > .build/docs/readme.html
clean:
@echo Cleaning...
-@rm -rf .build
@mkdir .build
###
SILENT ?= @
UNAME := $(shell uname)
ifeq ($(UNAME),$(filter $(UNAME),Linux GNU Darwin Haiku))
ifeq ($(UNAME),$(filter $(UNAME),Darwin Haiku))
ifeq ($(UNAME),$(filter $(UNAME),Darwin))
OS=darwin
BUILD_PROJECT_DIR=gmake-osx-x64
BUILD_OUTPUT_DIR=osx-x64
BUILD_TOOLS_CONFIG=release
EXE=
else
OS=haiku
BUILD_PROJECT_DIR=gmake-haiku
BUILD_OUTPUT_DIR=haiku64_gcc
BUILD_TOOLS_CONFIG=release64
EXE=
endif
else
OS=linux
BUILD_PROJECT_DIR=gmake-linux
BUILD_OUTPUT_DIR=linux64_gcc
BUILD_TOOLS_CONFIG=release64
EXE=
endif
else
OS=windows
BUILD_PROJECT_DIR=gmake-mingw-gcc
BUILD_OUTPUT_DIR=win32_mingw-gcc
BUILD_TOOLS_CONFIG=release64
EXE=.exe
endif
# bin2c
.build/osx-x64/bin/bin2cRelease: .build/projects/gmake-osx-x64
$(SILENT) make -C .build/projects/gmake-osx-x64 bin2c config=$(BUILD_TOOLS_CONFIG)
tools/bin/darwin/bin2c: .build/osx-x64/bin/bin2cRelease
$(SILENT) cp $(<) $(@)
.build/linux64_gcc/bin/bin2cRelease: .build/projects/gmake-linux
$(SILENT) make -C .build/projects/gmake-linux bin2c config=$(BUILD_TOOLS_CONFIG)
tools/bin/linux/bin2c: .build/linux64_gcc/bin/bin2cRelease
$(SILENT) cp $(<) $(@)
.build/haiku64_gcc/bin/bin2cRelease: .build/projects/gmake-haiku
$(SILENT) make -C .build/projects/gmake-haiku bin2c config=$(BUILD_TOOLS_CONFIG)
tools/bin/haiku/bin2c: .build/haiku64_gcc/bin/bin2cRelease
$(SILENT) cp $(<) $(@)
.build/win64_mingw-gcc/bin/bin2cRelease.exe: .build/projects/gmake-mingw-gcc
$(SILENT) make -C .build/projects/gmake-mingw-gcc bin2c config=$(BUILD_TOOLS_CONFIG)
tools/bin/windows/bin2c.exe: .build/win64_mingw-gcc/bin/bin2cRelease.exe
$(SILENT) cp $(<) $(@)
bin2c: tools/bin/$(OS)/bin2c$(EXE)
# lemon
.build/osx-x64/bin/lemonRelease: .build/projects/gmake-osx-x64
$(SILENT) make -C .build/projects/gmake-osx-x64 lemon config=$(BUILD_TOOLS_CONFIG)
tools/bin/darwin/lemon: .build/osx-x64/bin/lemonRelease
$(SILENT) cp $(<) $(@)
.build/linux64_gcc/bin/lemonRelease: .build/projects/gmake-linux
$(SILENT) make -C .build/projects/gmake-linux lemon config=$(BUILD_TOOLS_CONFIG)
tools/bin/linux/lemon: .build/linux64_gcc/bin/lemonRelease
$(SILENT) cp $(<) $(@)
.build/haiku64_gcc/bin/lemonRelease: .build/projects/gmake-haiku
$(SILENT) make -C .build/projects/gmake-haiku lemon config=$(BUILD_TOOLS_CONFIG)
tools/bin/haiku/lemon: .build/haiku64_gcc/bin/lemonRelease
$(SILENT) cp $(<) $(@)
.build/win64_mingw-gcc/bin/lemonRelease.exe: .build/projects/gmake-mingw-gcc
$(SILENT) make -C .build/projects/gmake-mingw-gcc lemon config=$(BUILD_TOOLS_CONFIG)
tools/bin/windows/lemon.exe: .build/win64_mingw-gcc/bin/lemonRelease.exe
$(SILENT) cp $(<) $(@)
tools/bin/$(OS)/lempar.c: tools/lemon/lempar.c
$(SILENT) cp $(<) $(@)
lemon: tools/bin/$(OS)/lemon$(EXE) tools/bin/$(OS)/lempar.c
tools: bin2c lemon
dist: tools/bin/darwin/bin2c tools/bin/linux/bin2c tools/bin/windows/bin2c.exe tools/bin/haiku/bin2c
.build/$(BUILD_OUTPUT_DIR)/bin/bx.testRelease$(EXE): .build/projects/$(BUILD_PROJECT_DIR)
$(SILENT) make -C .build/projects/$(BUILD_PROJECT_DIR) bx.test config=$(BUILD_TOOLS_CONFIG)
test: .build/$(BUILD_OUTPUT_DIR)/bin/bx.testRelease$(EXE)