mirror of https://github.com/grpc/grpc.git
The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)
https://grpc.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.6 KiB
72 lines
2.6 KiB
%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)}
|
|
|