|
|
|
%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', '%s_mock.grpc.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)}
|