mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
While doxygen can handle markdown pages, support for it is very limited: markdown pages can only be included as a whole page, they get an automatic title (custom titles are possible but aren't standard markdown) and it's not possible to use \subpage without messing with the markdown again. Any markdown page will thus end up as separate item in the doxygen output, not really suitable for generating a good page hiearchy. Let's switch the tutorial to use doxygen directly instead of markdown, short of using code/endcode instead of markdown's ``` there isn't that much difference anyway but it allows us to structure things nicer in the online docs.
92 lines
2.8 KiB
Meson
92 lines
2.8 KiB
Meson
doxyfile_conf = configuration_data()
|
|
doxyfile_conf.set('PACKAGE_NAME', meson.project_name())
|
|
doxyfile_conf.set('PACKAGE_VERSION', meson.project_version())
|
|
doxyfile_conf.set('top_srcdir', meson.source_root())
|
|
doxyfile_conf.set('top_builddir', meson.build_root())
|
|
|
|
if find_program('dot', required: false).found()
|
|
doxyfile_conf.set('HAVE_DOT', 'YES')
|
|
else
|
|
doxyfile_conf.set('HAVE_DOT', 'NO')
|
|
endif
|
|
|
|
inputs = []
|
|
foreach h : pipewire_headers
|
|
inputs += meson.source_root() / 'src' / 'pipewire' / h
|
|
endforeach
|
|
foreach h : pipewire_sources
|
|
inputs += meson.source_root() / 'src' / 'pipewire' / h
|
|
endforeach
|
|
|
|
# SPA headers use static inline functions. Doxygen doesn't extract those
|
|
# unless we have EXTRACT_STATIC set - but we don't want it to extract
|
|
# everything in the rest of the tree.
|
|
# The shell script here basically does a:
|
|
# cp spa/* builddir/spa/ && sed -i 's/^static//' buildir/spa/**.h
|
|
# The copied files are passed to doxygen as input and they are parsed as
|
|
# normal functions.
|
|
# Because this uses globbing, this target won't rebuild if the headers
|
|
# change but meh.
|
|
spa_header_dirs = []
|
|
sed = find_program('sed', required: false)
|
|
if sed.found()
|
|
spa_srcdir = meson.source_root() / 'spa' / 'include' / 'spa'
|
|
spa_dstdir = meson.current_build_dir() / 'spa'
|
|
spa_strip_static = custom_target(
|
|
'spa-strip-static',
|
|
command: [ find_program('strip-static.sh'), spa_srcdir, spa_dstdir ],
|
|
build_by_default: true,
|
|
output: 'spa',
|
|
)
|
|
spa_header_dirs += spa_dstdir
|
|
else
|
|
spa_strip_static = []
|
|
endif
|
|
|
|
extra_docs = [
|
|
'pipewire-overview.md',
|
|
'pipewire-design.md',
|
|
'pipewire-architecture.md',
|
|
'pipewire-objects-design.md',
|
|
'tutorial.dox',
|
|
'tutorial1.dox',
|
|
'tutorial2.dox',
|
|
'tutorial3.dox',
|
|
'tutorial4.dox',
|
|
'tutorial5.dox',
|
|
'tutorial6.dox',
|
|
'spa-index.md',
|
|
'spa-design.md',
|
|
'spa-pod.md',
|
|
'spa-buffer.md',
|
|
'pulseaudio.md',
|
|
]
|
|
|
|
foreach extra : extra_docs
|
|
inputs += meson.source_root() / 'doc' / extra
|
|
endforeach
|
|
|
|
cssfiles = [
|
|
meson.source_root() / 'doc' / 'doxygen-awesome.css',
|
|
meson.source_root() / 'doc' / 'custom.css'
|
|
]
|
|
|
|
doxyfile_conf.set('inputs', ' '.join(inputs + [spa_dstdir]))
|
|
doxyfile_conf.set('cssfiles', ' '.join(cssfiles))
|
|
|
|
doxyfile = configure_file(input: 'Doxyfile.in',
|
|
output: 'Doxyfile',
|
|
configuration: doxyfile_conf)
|
|
|
|
docdir = get_option('docdir')
|
|
if docdir == ''
|
|
docdir = pipewire_datadir / 'doc' / meson.project_name()
|
|
endif
|
|
|
|
html_target = custom_target('pipewire-docs',
|
|
input: [ doxyfile ] + inputs + cssfiles,
|
|
output: [ 'html' ],
|
|
command: [ doxygen, doxyfile ],
|
|
depends: spa_strip_static,
|
|
install: true,
|
|
install_dir: docdir)
|