sources_and_headers.json.template 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. %YAML 1.2
  2. --- |
  3. <%!
  4. import json
  5. import os
  6. def proto_headers(src):
  7. out = []
  8. for f in src:
  9. name, ext = os.path.splitext(f)
  10. if ext == '.proto':
  11. out.extend(fmt % name for fmt in ['%s.grpc.pb.h', '%s.pb.h'])
  12. return out
  13. def no_protos_filter(src):
  14. return os.path.splitext(src)[1] != '.proto'
  15. def no_third_party_filter(src):
  16. return not src.startswith('third_party/')
  17. def filter_srcs(srcs, filters):
  18. out = []
  19. for s in srcs:
  20. filter_passes = (f(s) for f in filters)
  21. if all(filter_passes):
  22. out.append(s)
  23. return out
  24. %>
  25. ${json.dumps([{"name": tgt.name,
  26. "language": tgt.language,
  27. "src": sorted(
  28. filter_srcs(tgt.src, (no_protos_filter, no_third_party_filter)) +
  29. filter_srcs(tgt.get('public_headers', []), (no_protos_filter, no_third_party_filter)) +
  30. filter_srcs(tgt.get('headers', []), (no_third_party_filter,))),
  31. "headers": sorted(
  32. tgt.get('public_headers', []) +
  33. tgt.get('headers', []) +
  34. proto_headers(tgt.src)),
  35. "deps": sorted(tgt.get('deps', []))}
  36. for tgt in (targets + libs)
  37. if not tgt.boringssl and not tgt.zlib],
  38. sort_keys=True, indent=2)}