From 491e8c173e288931101e21f5f6f48f098f16d876 Mon Sep 17 00:00:00 2001 From: Daniel Vetter Date: Tue, 5 Dec 2017 11:16:49 +0100 Subject: 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 Signed-off-by: Daniel Vetter --- docs/meson.build | 1 + .../intel-gpu-tools/generate_description_xml.sh | 46 +++++++++++++ .../intel-gpu-tools/generate_programs_xml.sh | 22 ++++++ docs/reference/intel-gpu-tools/meson.build | 80 ++++++++++++++++++++++ docs/reference/meson.build | 1 + 5 files changed, 150 insertions(+) create mode 100644 docs/meson.build create mode 100644 docs/reference/intel-gpu-tools/generate_description_xml.sh create mode 100755 docs/reference/intel-gpu-tools/generate_programs_xml.sh create mode 100644 docs/reference/intel-gpu-tools/meson.build create mode 100644 docs/reference/meson.build (limited to 'docs') diff --git a/docs/meson.build b/docs/meson.build new file mode 100644 index 00000000..ead14c40 --- /dev/null +++ b/docs/meson.build @@ -0,0 +1 @@ +subdir('reference') diff --git a/docs/reference/intel-gpu-tools/generate_description_xml.sh b/docs/reference/intel-gpu-tools/generate_description_xml.sh new file mode 100644 index 00000000..705a7bf3 --- /dev/null +++ b/docs/reference/intel-gpu-tools/generate_description_xml.sh @@ -0,0 +1,46 @@ +#!/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 "" > $output +echo "> $output +echo " \"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd\"" >> $output +echo "[" >> $output +echo " " >> $output +echo " " >> $output +echo "]>" >> $output +echo "" >> $output +echo "Description" >> $output +for test in `cat $testlist | tr ' ' '\n' | grep "^$filter" | sort`; do + echo "" >> $output; + echo "$test" | perl -pe "s/(?<=_)$KEYWORDS(?=(_|\\W))/<acronym>\\1<\\/acronym>/g" >> $output; + echo "> $output; + testprog=$testdir/$test; + ./$testprog --help-description >> $output; + echo "]]>" >> $output; + if ./$testprog --list-subtests > /dev/null ; then + echo "Subtests" >> $output; + subtest_list=`./$testprog --list-subtests`; + subtest_count=`echo $subtest_list | wc -w`; + if [ $subtest_count -gt 100 ]; then + echo "This test has over 100 subtests. " >> $output; + echo "Run $test to list them." >> $output; + else + echo "" >> $output; + for subtest in $subtest_list; do + echo "" >> $output; + echo "$subtest" | perl -pe "s/\\b$KEYWORDS\\b/\\1<\\/acronym>/g" >> $output; + echo "" >> $output; + done; + echo "" >> $output; + fi; + echo "" >> $output; + fi; + echo "" >> $output; +done; +echo "" >> $output diff --git a/docs/reference/intel-gpu-tools/generate_programs_xml.sh b/docs/reference/intel-gpu-tools/generate_programs_xml.sh new file mode 100755 index 00000000..73adc8cc --- /dev/null +++ b/docs/reference/intel-gpu-tools/generate_programs_xml.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +output=$1 +filter=$2 +testlist=$3 + +echo "" > $output +echo "> $output +echo " \"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd\"" >> $output +echo "[" >> $output +echo " " >> $output +echo " " >> $output +echo "]>" >> $output +echo "" >> $output +echo "Programs" >> $output +echo "" >> $output +for test in `cat $testlist | tr ' ' '\n' | grep "^$filter" | sort`; do + echo "" >> $output; + echo "$test" >> $output; +done; +echo "" >> $output +echo "" >> $output diff --git a/docs/reference/intel-gpu-tools/meson.build b/docs/reference/intel-gpu-tools/meson.build new file mode 100644 index 00000000..1c009229 --- /dev/null +++ b/docs/reference/intel-gpu-tools/meson.build @@ -0,0 +1,80 @@ +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) diff --git a/docs/reference/meson.build b/docs/reference/meson.build new file mode 100644 index 00000000..944f28a5 --- /dev/null +++ b/docs/reference/meson.build @@ -0,0 +1 @@ +subdir('intel-gpu-tools') -- cgit v1.2.3