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