diff options
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.template | 72 |
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)} |