Commit 491e8c17 authored by Daniel Vetter's avatar Daniel Vetter

meson: gtkdoc support

Bunch of neat improvements:

- xml generates correctly depend upon the test binaries
- no need to re-run autogen.sh when new chapters/functions get added,
  all handed by meson

Still one issue:

- the gtkdoc target doesn't depend upon the custom_target yet, hacked
  around using build_by_default: true

  This is an issue known to upstream already:

  https://github.com/mesonbuild/meson/issues/2148

v2: Bump meson version to 0.42, since that's the first release which
adds the build dir when running the gtkdoc tools, and hence allows
including generated files.

v2:
- Undo the bump, it's only needed for generated source files. Other
  generated files as input should work with 0.40 already.

- Generate version.xml from version.xml.in, which allows us to keep
  the &version; entity.

v3: Add github issue link.

v4:
- Resurrect lost KEYWORDS (Petri)
- Fix issue when running with a clean build, files() doesn't work on generate
  files (Petri).
Reviewed-by: Petri Latvala's avatarPetri Latvala <petri.latvala@intel.com>
Signed-off-by: Daniel Vetter's avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 10e3e5d4
subdir('reference')
#!/bin/sh
output=$1
filter=$2
testlist=$3
testdir=$(dirname $testlist)
KEYWORDS="(invalid|hang|swap|thrash|crc|tiled|tiling|rte|ctx|render|blt|bsd|vebox|exec|rpm)"
echo "<?xml version=\"1.0\"?>" > $output
echo "<!DOCTYPE refsect1 PUBLIC \"-//OASIS//DTD DocBook XML V4.3//EN\"" >> $output
echo " \"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd\"" >> $output
echo "[" >> $output
echo " <!ENTITY % local.common.attrib \"xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'\">" >> $output
echo " <!ENTITY version SYSTEM \"version.xml\">" >> $output
echo "]>" >> $output
echo "<refsect1>" >> $output
echo "<title>Description</title>" >> $output
for test in `cat $testlist | tr ' ' '\n' | grep "^$filter" | sort`; do
echo "<refsect2 id=\"$test\"><title>" >> $output;
echo "$test" | perl -pe "s/(?<=_)$KEYWORDS(?=(_|\\W))/<acronym>\\1<\\/acronym>/g" >> $output;
echo "</title><para><![CDATA[" >> $output;
testprog=$testdir/$test;
./$testprog --help-description >> $output;
echo "]]></para>" >> $output;
if ./$testprog --list-subtests > /dev/null ; then
echo "<refsect3><title>Subtests</title>" >> $output;
subtest_list=`./$testprog --list-subtests`;
subtest_count=`echo $subtest_list | wc -w`;
if [ $subtest_count -gt 100 ]; then
echo "<para>This test has over 100 subtests. " >> $output;
echo "Run <command>$test</command> <option>--list-subtests</option> to list them.</para>" >> $output;
else
echo "<simplelist>" >> $output;
for subtest in $subtest_list; do
echo "<member>" >> $output;
echo "$subtest" | perl -pe "s/\\b$KEYWORDS\\b/<acronym>\\1<\\/acronym>/g" >> $output;
echo "</member>" >> $output;
done;
echo "</simplelist>" >> $output;
fi;
echo "</refsect3>" >> $output;
fi;
echo "</refsect2>" >> $output;
done;
echo "</refsect1>" >> $output
#!/bin/sh
output=$1
filter=$2
testlist=$3
echo "<?xml version=\"1.0\"?>" > $output
echo "<!DOCTYPE refsect1 PUBLIC \"-//OASIS//DTD DocBook XML V4.3//EN\"" >> $output
echo " \"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd\"" >> $output
echo "[" >> $output
echo " <!ENTITY % local.common.attrib \"xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'\">" >> $output
echo " <!ENTITY version SYSTEM \"version.xml\">" >> $output
echo "]>" >> $output
echo "<refsect1>" >> $output
echo "<title>Programs</title>" >> $output
echo "<informaltable pgwide=\"1\" frame=\"none\"><tgroup cols=\"2\"><tbody>" >> $output
for test in `cat $testlist | tr ' ' '\n' | grep "^$filter" | sort`; do
echo "<row><entry role=\"program_name\">" >> $output;
echo "<link linkend=\"$test\">$test</link></entry></row>" >> $output;
done;
echo "</tbody></tgroup></informaltable>" >> $output
echo "</refsect1>" >> $output
gnome = import('gnome')
ignore_headers = [
'gen6_render.h',
'gen7_media.h',
'gen7_render.h',
'gen8_media.h',
'gen8_render.h',
'gpgpu_fill.h',
'i830_reg.h',
'i915_3d.h',
'i915_pciids.h',
'i915_reg.h',
'igt_edid_template.h',
'intel_reg.h',
'debug.h',
'instdone.h',
'media_fill.h',
'rendercopy.h',
'media_spin.h',
'media_fill_gen9.h',
'gen9_render.h',
'version.h',
]
test_groups = [
'amdgpu',
'chamelium',
'core',
'debugfs',
'drm',
'drv',
'gem',
'gen3',
'gen7',
'gvt',
'kms',
'meta',
'perf',
'pm',
'prime',
'sw_sync',
'testdisplay',
'tools',
'vgem',
]
gen_description = find_program('generate_description_xml.sh')
gen_programs = find_program('generate_programs_xml.sh')
test_list_files = []
foreach group : test_groups
programs_xml = 'igt_test_programs_' + group + '_programs.xml'
custom_target(programs_xml,
output : programs_xml,
build_by_default : true,
command : [ gen_programs, '@OUTPUT@', group, test_list ])
description_xml = 'igt_test_programs_' + group + '_description.xml'
custom_target(description_xml,
output : description_xml,
build_by_default : true,
depends : test_executables,
command : [ gen_description, '@OUTPUT@', group, test_list ])
endforeach
configure_file(input: 'version.xml.in',
output: 'version.xml',
install: false, configuration: config)
gnome.gtkdoc('intel-gpu-tools',
content_files : ['igt_test_programs.xml'],
dependencies : lib_igt,
install : true,
main_xml : 'intel-gpu-tools-docs.xml',
scan_args : '--rebuild-sections',
mkdb_args : '--output-format=xml',
ignore_headers : ignore_headers,
src_dir : inc_for_gtkdoc)
subdir('intel-gpu-tools')
......@@ -28,6 +28,8 @@ endforeach
inc = include_directories('include/drm-uapi', 'lib', '.')
inc_for_gtkdoc = include_directories('lib')
config = configuration_data()
libdrm = dependency('libdrm', version : '>=2.4.82')
......@@ -136,3 +138,4 @@ if libdrm_intel.found()
endif
endif
subdir('man')
subdir('docs')
......@@ -28,7 +28,7 @@ install uninstall:
echo "meson install support not yet completed" && false
docs:
echo "meson gtkdoc support not yet completed" && false
ninja -C build intel-gpu-tools-doc
EOF
......
......@@ -258,12 +258,14 @@ endif
libexecdir = join_paths(get_option('prefix'), get_option('libexecdir'), 'intel-gpu-tools')
test_executables = []
foreach prog : test_progs
link = []
if prog == 'perf_pmu'
link += lib_igt_perf
endif
executable(prog, prog + '.c',
test_executables += executable(prog, prog + '.c',
dependencies : test_deps,
install_dir : libexecdir,
link_with : link,
......@@ -279,7 +281,7 @@ test_progs += 'testdisplay'
pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), 'intel-gpu-tools')
gen_testlist = find_program('generate_testlist.sh')
custom_target('testlist',
test_list = custom_target('testlist',
output : 'test-list.txt',
command : [ gen_testlist, '@OUTPUT@', test_progs ],
install : true,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment