## Populates "targets" for all names in the collection "libnames" that are ## part of "collection". ## ## Note that "packagename" and "internal" while not used ## in the function itself are referenced in the template. ## When "internal" is true, documentation for non-public headers ## and sources is also taken as input to Doxygen (see INPUT). <%namespace import="doxy_base" file="Doxyfile.base"/> <%def name="gen_doxyfile(libnames, packagename, collection, internal)"> <% import itertools import glob import os targets = [] docpackage = packagename.replace('+', 'p').lower() for libname in libnames: target = None for p in collection: if p.name == libname: target = p assert(target) targets.append(target) srcdoc = [] for dirpath, dirnames, filenames in os.walk('src/%s' % docpackage): for filename in filenames: if os.path.splitext(filename)[1] == '.md': srcdoc.append(os.path.join(dirpath, filename)) version = settings.core_version if packagename=='Core' else settings.cpp_version doxy_input = ' \\\n'.join(sorted(set( itertools.chain( itertools.chain.from_iterable( target.public_headers + ([] if not internal else target.headers + target.src) for target in targets), glob.glob('doc/*.md'), glob.glob('doc/%s/*.md' % docpackage), [] if not internal else srcdoc) ))) %> ${doxy_base(packagename, version, doxy_input, internal)}