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