aboutsummaryrefslogtreecommitdiffhomepage
path: root/templates/tools/run_tests/generated/sources_and_headers.json.template
diff options
context:
space:
mode:
Diffstat (limited to 'templates/tools/run_tests/generated/sources_and_headers.json.template')
-rw-r--r--templates/tools/run_tests/generated/sources_and_headers.json.template72
1 files changed, 72 insertions, 0 deletions
diff --git a/templates/tools/run_tests/generated/sources_and_headers.json.template b/templates/tools/run_tests/generated/sources_and_headers.json.template
new file mode 100644
index 0000000000..1c5c9747d6
--- /dev/null
+++ b/templates/tools/run_tests/generated/sources_and_headers.json.template
@@ -0,0 +1,72 @@
+%YAML 1.2
+--- |
+ <%!
+ import json
+ import os
+
+ def proto_headers(src):
+ out = []
+ for f in src:
+ name, ext = os.path.splitext(f)
+ if ext == '.proto':
+ out.extend(fmt % name for fmt in ['%s.grpc.pb.h', '%s.pb.h'])
+ return out
+
+ def all_targets(targets, libs, filegroups):
+ for tgt in targets:
+ yield ('target', tgt)
+ for tgt in libs:
+ yield ('lib', tgt)
+ for tgt in filegroups:
+ yield ('filegroup', tgt)
+
+ def no_protos_filter(src):
+ return os.path.splitext(src)[1] != '.proto'
+
+ def no_third_party_filter(src):
+ return not src.startswith('third_party/')
+
+ def filter_srcs(srcs, filters):
+ out = []
+ for s in srcs:
+ filter_passes = (f(s) for f in filters)
+ if all(filter_passes):
+ out.append(s)
+ return out
+ %>
+
+ ${json.dumps([{"name": tgt.name,
+ "type": typ,
+ "is_filegroup": False,
+ "language": tgt.language,
+ "third_party": tgt.boringssl or tgt.zlib,
+ "src": sorted(
+ filter_srcs(tgt.own_src, (no_protos_filter, no_third_party_filter)) +
+ filter_srcs(tgt.own_public_headers, (no_protos_filter, no_third_party_filter)) +
+ filter_srcs(tgt.own_headers, (no_third_party_filter,))),
+ "headers": sorted(
+ tgt.own_public_headers +
+ tgt.own_headers +
+ proto_headers(tgt.own_src)),
+ "deps": sorted(tgt.get('deps', []) +
+ tgt.get('uses', []) +
+ tgt.get('filegroups', []))}
+ for typ, tgt in all_targets(targets, libs, [])] +
+ [{"name": tgt.name,
+ "type": typ,
+ "is_filegroup": True,
+ "language": tgt.language,
+ "third_party": tgt.boringssl or tgt.zlib,
+ "src": sorted(
+ filter_srcs(tgt.own_src, (no_protos_filter, no_third_party_filter)) +
+ filter_srcs(tgt.own_public_headers, (no_protos_filter, no_third_party_filter)) +
+ filter_srcs(tgt.own_headers, (no_third_party_filter,))),
+ "headers": sorted(
+ tgt.own_public_headers +
+ tgt.own_headers +
+ proto_headers(tgt.own_src)),
+ "deps": sorted(tgt.get('deps', []) +
+ tgt.get('uses', []) +
+ tgt.get('filegroups', []))}
+ for typ, tgt in all_targets([], [], filegroups)],
+ sort_keys=True, indent=2)}