blob: b2cd41b9a2ad659789accadbcb06fc381590bbac [file] [log] [blame]
Ehsana03cd1f2019-09-24 15:56:59 -04001COMMON_COPTS = [
2 "-DSPIRV_CHECK_CONTEXT",
3 "-DSPIRV_COLOR_TERMINAL",
4 ] + select({
5 "@bazel_tools//src/conditions:windows": [""],
6 "//conditions:default": [
7 "-DSPIRV_LINUX",
8 "-DSPIRV_TIMER_ENABLED",
9 "-Wall",
10 "-Wextra",
11 "-Wnon-virtual-dtor",
12 "-Wno-missing-field-initializers",
13 "-Werror",
14 "-std=c++11",
15 "-fvisibility=hidden",
16 "-fno-exceptions",
17 "-fno-rtti",
18 "-Wno-long-long",
19 "-Wshadow",
20 "-Wundef",
21 "-Wconversion",
22 "-Wno-sign-conversion",
23 ],
24})
25
26TEST_COPTS = COMMON_COPTS + select({
Ehsanbc84daf2019-09-27 09:13:32 -040027 "@bazel_tools//src/conditions:windows": [
28 # Disable C4503 "decorated name length exceeded" warning,
29 # triggered by some heavily templated types.
30 # We don't care much about that in test code.
31 # Important to do since we have warnings-as-errors.
32 "/wd4503"
33 ],
Ehsana03cd1f2019-09-24 15:56:59 -040034 "//conditions:default": [
35 "-Wno-undef",
36 "-Wno-self-assign",
37 "-Wno-shadow",
38 "-Wno-unused-parameter"
39 ],
40})
41
alan-baker50300452020-07-30 12:08:53 -040042DEBUGINFO_GRAMMAR_JSON_FILE = "@spirv_headers//:spirv_ext_inst_debuginfo_grammar_unified1"
43CLDEBUGINFO100_GRAMMAR_JSON_FILE = "@spirv_headers//:spirv_ext_inst_opencl_debuginfo_100_grammar_unified1"
Greg Fischer1454c952021-09-15 12:38:53 -060044SHDEBUGINFO100_GRAMMAR_JSON_FILE = "@spirv_headers//:spirv_ext_inst_nonsemantic_shader_debuginfo_100_grammar_unified1"
Ehsana03cd1f2019-09-24 15:56:59 -040045
46def generate_core_tables(version = None):
47 if not version:
48 fail("Must specify version", "version")
49 grammars = [
50 "@spirv_headers//:spirv_core_grammar_" + version,
51 DEBUGINFO_GRAMMAR_JSON_FILE,
David Neto64f36ea2019-12-19 17:16:26 -050052 CLDEBUGINFO100_GRAMMAR_JSON_FILE,
Ehsana03cd1f2019-09-24 15:56:59 -040053 ]
54 outs = [
55 "core.insts-{}.inc".format(version),
56 "operand.kinds-{}.inc".format(version),
57 ]
58 fmtargs = grammars + outs
59 native.genrule(
60 name = "gen_core_tables_" + version,
61 srcs = grammars,
62 outs = outs,
63 cmd = (
64 "$(location :generate_grammar_tables) " +
65 "--spirv-core-grammar=$(location {0}) " +
66 "--extinst-debuginfo-grammar=$(location {1}) " +
David Neto64f36ea2019-12-19 17:16:26 -050067 "--extinst-cldebuginfo100-grammar=$(location {2}) " +
68 "--core-insts-output=$(location {3}) " +
69 "--operand-kinds-output=$(location {4})"
Ehsana03cd1f2019-09-24 15:56:59 -040070 ).format(*fmtargs),
71 tools = [":generate_grammar_tables"],
72 visibility = ["//visibility:private"],
73 )
74
75def generate_enum_string_mapping(version = None):
76 if not version:
77 fail("Must specify version", "version")
78 grammars = [
79 "@spirv_headers//:spirv_core_grammar_" + version,
80 DEBUGINFO_GRAMMAR_JSON_FILE,
David Neto64f36ea2019-12-19 17:16:26 -050081 CLDEBUGINFO100_GRAMMAR_JSON_FILE,
Ehsana03cd1f2019-09-24 15:56:59 -040082 ]
83 outs = [
84 "extension_enum.inc",
85 "enum_string_mapping.inc",
86 ]
87 fmtargs = grammars + outs
88 native.genrule(
89 name = "gen_enum_string_mapping",
90 srcs = grammars,
91 outs = outs,
92 cmd = (
93 "$(location :generate_grammar_tables) " +
94 "--spirv-core-grammar=$(location {0}) " +
95 "--extinst-debuginfo-grammar=$(location {1}) " +
David Neto64f36ea2019-12-19 17:16:26 -050096 "--extinst-cldebuginfo100-grammar=$(location {2}) " +
97 "--extension-enum-output=$(location {3}) " +
98 "--enum-string-mapping-output=$(location {4})"
Ehsana03cd1f2019-09-24 15:56:59 -040099 ).format(*fmtargs),
100 tools = [":generate_grammar_tables"],
101 visibility = ["//visibility:private"],
102 )
103
104def generate_opencl_tables(version = None):
105 if not version:
106 fail("Must specify version", "version")
107 grammars = [
108 "@spirv_headers//:spirv_opencl_grammar_" + version,
109 ]
110 outs = ["opencl.std.insts.inc"]
111 fmtargs = grammars + outs
112 native.genrule(
113 name = "gen_opencl_tables_" + version,
114 srcs = grammars,
115 outs = outs,
116 cmd = (
117 "$(location :generate_grammar_tables) " +
118 "--extinst-opencl-grammar=$(location {0}) " +
119 "--opencl-insts-output=$(location {1})"
120 ).format(*fmtargs),
121 tools = [":generate_grammar_tables"],
122 visibility = ["//visibility:private"],
123 )
124
125def generate_glsl_tables(version = None):
126 if not version:
127 fail("Must specify version", "version")
128 grammars = [
129 "@spirv_headers//:spirv_glsl_grammar_" + version,
130 ]
131 outs = ["glsl.std.450.insts.inc"]
132 fmtargs = grammars + outs
133 native.genrule(
134 name = "gen_glsl_tables_" + version,
135 srcs = grammars,
136 outs = outs,
137 cmd = (
138 "$(location :generate_grammar_tables) " +
139 "--extinst-glsl-grammar=$(location {0}) " +
140 "--glsl-insts-output=$(location {1})"
141 ).format(*fmtargs),
142 tools = [":generate_grammar_tables"],
143 visibility = ["//visibility:private"],
144 )
145
David Neto64f36ea2019-12-19 17:16:26 -0500146def generate_vendor_tables(extension, operand_kind_prefix = ""):
Ehsana03cd1f2019-09-24 15:56:59 -0400147 if not extension:
148 fail("Must specify extension", "extension")
David Neto64f36ea2019-12-19 17:16:26 -0500149 extension_rule = extension.replace("-", "_").replace(".", "_")
alan-baker50300452020-07-30 12:08:53 -0400150 grammars = ["@spirv_headers//:spirv_ext_inst_{}_grammar_unified1".format(extension_rule)]
Ehsana03cd1f2019-09-24 15:56:59 -0400151 outs = ["{}.insts.inc".format(extension)]
David Neto64f36ea2019-12-19 17:16:26 -0500152 prefices = [operand_kind_prefix]
153 fmtargs = grammars + outs + prefices
Ehsana03cd1f2019-09-24 15:56:59 -0400154 native.genrule(
155 name = "gen_vendor_tables_" + extension_rule,
156 srcs = grammars,
157 outs = outs,
158 cmd = (
159 "$(location :generate_grammar_tables) " +
160 "--extinst-vendor-grammar=$(location {0}) " +
David Neto64f36ea2019-12-19 17:16:26 -0500161 "--vendor-insts-output=$(location {1}) " +
162 "--vendor-operand-kind-prefix={2}"
Ehsana03cd1f2019-09-24 15:56:59 -0400163 ).format(*fmtargs),
164 tools = [":generate_grammar_tables"],
165 visibility = ["//visibility:private"],
166 )
167
168def generate_extinst_lang_headers(name, grammar = None):
169 if not grammar:
170 fail("Must specify grammar", "grammar")
Geoff Langfb6e3e42020-02-25 00:46:52 -0500171 outs = [name + ".h"]
172 fmtargs = outs
Ehsana03cd1f2019-09-24 15:56:59 -0400173 native.genrule(
174 name = "gen_extinst_lang_headers_" + name,
175 srcs = [grammar],
Geoff Langfb6e3e42020-02-25 00:46:52 -0500176 outs = outs,
Ehsana03cd1f2019-09-24 15:56:59 -0400177 cmd = (
178 "$(location :generate_language_headers) " +
Ehsana03cd1f2019-09-24 15:56:59 -0400179 "--extinst-grammar=$< " +
Geoff Langfb6e3e42020-02-25 00:46:52 -0500180 "--extinst-output-path=$(location {0})"
Ehsana03cd1f2019-09-24 15:56:59 -0400181 ).format(*fmtargs),
182 tools = [":generate_language_headers"],
183 visibility = ["//visibility:private"],
184 )
185
186def base_test(name, srcs, deps = []):
187 if srcs == []:
188 return
189 if name[-5:] != "_test":
190 name = name + "_test"
191 native.cc_test(
192 name = "base_" + name,
193 srcs = srcs,
194 compatible_with = [],
195 copts = TEST_COPTS,
Ehsan82f84c42019-10-09 15:14:42 -0500196 size = "large",
Ehsana03cd1f2019-09-24 15:56:59 -0400197 deps = [
198 ":test_common",
199 "@com_google_googletest//:gtest_main",
200 "@com_google_googletest//:gtest",
201 "@com_google_effcee//:effcee",
202 ] + deps,
203 )
204
dong-ja706dc272021-08-06 13:03:59 -0500205def lint_test(name, srcs, deps = []):
206 if name[-5:] != "_test":
207 name = name + "_test"
208 native.cc_test(
209 name = "lint_" + name,
210 srcs = srcs,
211 compatible_with = [],
212 copts = TEST_COPTS,
213 size = "large",
214 deps = [
215 ":spirv_tools_lint",
216 "@com_google_googletest//:gtest_main",
217 "@com_google_googletest//:gtest",
218 "@com_google_effcee//:effcee",
219 ] + deps,
220 )
221
Ehsana03cd1f2019-09-24 15:56:59 -0400222def link_test(name, srcs, deps = []):
223 if name[-5:] != "_test":
224 name = name + "_test"
225 native.cc_test(
226 name = "link_" + name,
227 srcs = srcs,
228 compatible_with = [],
229 copts = TEST_COPTS,
Ehsan82f84c42019-10-09 15:14:42 -0500230 size = "large",
Ehsana03cd1f2019-09-24 15:56:59 -0400231 deps = [
232 ":link_test_common",
233 "@com_google_googletest//:gtest_main",
234 "@com_google_googletest//:gtest",
235 "@com_google_effcee//:effcee",
236 ] + deps,
237 )
238
239def opt_test(name, srcs, deps = []):
240 if name[-5:] != "_test":
241 name = name + "_test"
242 native.cc_test(
243 name = "opt_" + name,
244 srcs = srcs,
245 compatible_with = [],
246 copts = TEST_COPTS,
Ehsan82f84c42019-10-09 15:14:42 -0500247 size = "large",
Ehsana03cd1f2019-09-24 15:56:59 -0400248 deps = [
249 ":opt_test_common",
250 "@com_google_googletest//:gtest_main",
251 "@com_google_googletest//:gtest",
252 "@com_google_effcee//:effcee",
253 ] + deps,
254 )
255
256def reduce_test(name, srcs, deps = []):
257 if name[-5:] != "_test":
258 name = name + "_test"
259 native.cc_test(
260 name = "reduce_" + name,
261 srcs = srcs,
262 compatible_with = [],
263 copts = TEST_COPTS,
Ehsan82f84c42019-10-09 15:14:42 -0500264 size = "large",
Ehsana03cd1f2019-09-24 15:56:59 -0400265 deps = [
266 ":reduce_test_common",
267 ":spirv_tools_reduce",
268 "@com_google_googletest//:gtest_main",
269 "@com_google_googletest//:gtest",
270 "@com_google_effcee//:effcee",
271 ] + deps,
272 )
273
274def util_test(name, srcs, deps = []):
275 if name[-5:] != "_test":
276 name = name + "_test"
277 native.cc_test(
278 name = "util_" + name,
279 srcs = srcs,
280 compatible_with = [],
281 copts = TEST_COPTS,
Ehsan82f84c42019-10-09 15:14:42 -0500282 size = "large",
Ehsana03cd1f2019-09-24 15:56:59 -0400283 deps = [
284 ":opt_test_common",
285 "@com_google_googletest//:gtest_main",
286 "@com_google_googletest//:gtest",
287 "@com_google_effcee//:effcee",
288 ] + deps,
289 )
290
Ehsan82f84c42019-10-09 15:14:42 -0500291def val_test(name, srcs = [], copts = [], deps = [], **kwargs):
Ehsana03cd1f2019-09-24 15:56:59 -0400292 if name[-5:] != "_test":
293 name = name + "_test"
294 if name[:4] != "val_":
295 name = "val_" + name
296 native.cc_test(
297 name = name,
298 srcs = srcs,
299 compatible_with = [],
300 copts = TEST_COPTS + copts,
Ehsan82f84c42019-10-09 15:14:42 -0500301 size = "large",
Ehsana03cd1f2019-09-24 15:56:59 -0400302 deps = [
303 ":val_test_common",
304 "@com_google_googletest//:gtest_main",
305 "@com_google_googletest//:gtest",
306 "@com_google_effcee//:effcee",
307 ] + deps,
308 **kwargs
309 )