xref: /aosp_15_r20/external/grpc-grpc/templates/tools/doxygen/Doxyfile.include (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1## Populates "targets" for all names in the collection "libnames" that are
2## part of "collection".
3##
4## Note that "packagename" and "internal" while not used
5## in the function itself are referenced in the template.
6## When "internal" is true, documentation for non-public headers
7## and sources is also taken as input to Doxygen (see INPUT).
8<%namespace import="doxy_base" file="Doxyfile.base"/>
9<%def name="gen_doxyfile(libnames, packagename, collection, internal)">
10<%
11  import itertools
12  import glob
13  import os
14  targets = []
15  docpackage = packagename.replace('+', 'p').lower()
16  for libname in libnames:
17    target = None
18    for p in collection:
19      if p.name == libname:
20        target = p
21    assert(target)
22    targets.append(target)
23  srcdoc = []
24  for dirpath, dirnames, filenames in os.walk('src/%s' % docpackage):
25    for filename in filenames:
26      if os.path.splitext(filename)[1] == '.md':
27        srcdoc.append(os.path.join(dirpath, filename))
28
29  version = settings.core_version if packagename=='Core' else settings.cpp_version
30  doxy_input = ' \\\n'.join(sorted(set(
31        itertools.chain(
32            itertools.chain.from_iterable(
33    			      target.public_headers +
34    				    ([]
35    				     if not internal
36    				     else target.headers + target.src)
37    			      for target in targets),
38            glob.glob('doc/*.md'),
39            glob.glob('doc/%s/*.md' % docpackage),
40            [] if not internal else srcdoc)
41    )))
42%>
43${doxy_base(packagename, version, doxy_input, internal)}
44</%def>
45