diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2018-07-06 10:47:18 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2018-07-12 14:05:52 +1000 |
commit | deadbf35c41dc4e740659e816445095e0819c196 (patch) | |
tree | 02b85756a772a617f7fc564be282c1542b48f1eb /doc/meson.build | |
parent | 6b73d93ca44e263716d0644e3d947a4793c8c82c (diff) |
doc: move the meson.build in as subdir()
Doing so means we can ditch the specific input list for doxygen and just copy
all files over into our builddir/doc/ subdir, then use that subdirectory as
input data.
This relies on meson putting a subdir() into a subdirectory in the build
directory. This isn't technically guaranteed but I also suspect that if meson
ever changes that, lots of other projects will break. Even in that case we
should build just fine since we now filter for *.h and *.dox and don't copy
any other doxygen-commented files into the builddir anyway.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'doc/meson.build')
-rw-r--r-- | doc/meson.build | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/doc/meson.build b/doc/meson.build new file mode 100644 index 00000000..39b0cde8 --- /dev/null +++ b/doc/meson.build @@ -0,0 +1,139 @@ +prg_install = find_program('install') + +doxygen = find_program('doxygen', required : false) +if not doxygen.found() + error('Program "doxygen" not found or not executable. Try building with -Ddocumentation=false') +endif +dot = find_program('dot', required : false) +if not dot.found() + error('Program "dot" not found or not executable. Try building with -Ddocumentation=false') +endif + +doxygen_version_cmd = run_command(doxygen.path(), '--version') +if doxygen_version_cmd.returncode() != 0 + error('Command "doxygen --version" failed.') +endif +doxygen_version = doxygen_version_cmd.stdout() +if doxygen_version.version_compare('< 1.8.3') + error('doxygen needs to be at least version 1.8.3 (have @0@)'.format(doxygen_version)) +endif +grep = find_program('grep') +dot_version_cmd = run_command(dot.path(), '-V') +if dot_version_cmd.returncode() != 0 + error('Command "dot -V" failed.') +endif +# dot -V output is (to stderr): +# dot - graphviz version 2.38.0 (20140413.2041) +dot_version = dot_version_cmd.stderr().split(' ')[4] +if dot_version.version_compare('< 2.26') + error('Graphviz dot needs to be at least version 2.26 (have @0@)'.format(dot_version)) +endif + +readme = vcs_tag(command : ['git', 'log', '-1', '--format=%h'], + fallback : 'unknown', + input : '../README.md', + output : 'README.md', + replace_string: '__GIT_VERSION__') + +src_doxygen = files( + # source files + '../src/libinput.h', + # written docs + 'absolute-axes.dox', + 'absolute-coordinate-ranges.dox', + 'architecture.dox', + 'building.dox', + 'button_debouncing.dox', + 'clickpad-softbuttons.dox', + 'contributing.dox', + 'device-configuration-via-udev.dox', + 'device-quirks.dox', + 'faqs.dox', + 'gestures.dox', + 'middle-button-emulation.dox', + 'normalization-of-relative-motion.dox', + 'palm-detection.dox', + 'page-hierarchy.dox', + 'pointer-acceleration.dox', + 'reporting-bugs.dox', + 'scrolling.dox', + 'seats.dox', + 'switches.dox', + 't440-support.dox', + 'tablet-support.dox', + 'tapping.dox', + 'test-suite.dox', + 'timestamps.dox', + 'tools.dox', + 'touchpad-jumping-cursors.dox', + 'touchpad-pressure.dox', + 'touchpad-jitter.dox', + 'touchpads.dox', + 'trackpoints.dox', + 'what-is-libinput.dox', + # dot drawings + 'dot/seats-sketch.gv', + 'dot/seats-sketch-libinput.gv', + 'dot/libinput-stack-wayland.gv', + 'dot/libinput-stack-xorg.gv', + 'dot/libinput-stack-gnome.gv', + 'dot/evemu.gv', + # svgs + 'svg/button-debouncing-wave-diagram.svg', + 'svg/button-scrolling.svg', + 'svg/clickfinger.svg', + 'svg/clickfinger-distance.svg', + 'svg/edge-scrolling.svg', + 'svg/gesture-2fg-ambiguity.svg', + 'svg/palm-detection.svg', + 'svg/pinch-gestures.svg', + 'svg/pinch-gestures-softbuttons.svg', + 'svg/ptraccel-linear.svg', + 'svg/ptraccel-low-dpi.svg', + 'svg/ptraccel-touchpad.svg', + 'svg/ptraccel-trackpoint.svg', + 'svg/software-buttons.svg', + 'svg/swipe-gestures.svg', + 'svg/tablet-axes.svg', + 'svg/tablet-cintiq24hd-modes.svg', + 'svg/tablet-interfaces.svg', + 'svg/tablet-intuos-modes.svg', + 'svg/tablet-left-handed.svg', + 'svg/tablet-out-of-bounds.svg', + 'svg/tablet.svg', + 'svg/tap-n-drag.svg', + 'svg/thumb-detection.svg', + 'svg/top-software-buttons.svg', + 'svg/touchscreen-gestures.svg', + 'svg/twofinger-scrolling.svg', + # style files + 'style/header.html', + 'style/footer.html', + 'style/customdoxygen.css', + 'style/bootstrap.css', + 'style/libinputdoxygen.css', +) + +doxyfiles = custom_target('doxyfiles', + input : src_doxygen, + output : '.', + command : [prg_install, '-t', '@OUTDIR@', '@INPUT@'], + build_by_default: true) + +doc_config = configuration_data() +doc_config.set('PACKAGE_NAME', meson.project_name()) +doc_config.set('PACKAGE_VERSION', meson.project_version()) +doc_config.set('builddir', meson.current_build_dir()) + +doxyfile = configure_file(input : 'libinput.doxygen.in', + output : 'libinput.doxygen', + configuration : doc_config, + install : false) + +custom_target('doxygen', + input : [ doxyfile, readme ] + src_doxygen, + output : [ 'Documentation' ], + command : [ doxygen, doxyfile ], + install : false, + depends: [doxyfiles, readme], + build_by_default : true) |