From patchwork Tue Dec 5 10:16:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 10092635 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 214466035E for ; Tue, 5 Dec 2017 10:17:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 16E3B28D1B for ; Tue, 5 Dec 2017 10:17:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0B3A528D1D; Tue, 5 Dec 2017 10:17:03 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.4 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED, T_DKIM_INVALID, URIBL_BLACK autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 129F228D1D for ; Tue, 5 Dec 2017 10:17:02 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 680606E4B9; Tue, 5 Dec 2017 10:17:01 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2FE116E4B9 for ; Tue, 5 Dec 2017 10:16:59 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id l141so252680wmg.1 for ; Tue, 05 Dec 2017 02:16:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=xS62cwQDRWNC1rJNwsE5g63kOm2KV6asHsaoWo0hOHY=; b=FoBjczyY9Hi90/6ETRcGOFgAseWjOmYebUTBzjr6vWi5ZYaSLq/XDcYulwEdHW5BV4 GUfd3/PkhtHK72riJ4S25nua4yCzYvOEnN01c3bkxCDZxpfSWbaCodjwCMl94D+Si8o+ Zf1ftaFXUSvh7vCLayubob3/iQlqUZ7OO4Wqk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=xS62cwQDRWNC1rJNwsE5g63kOm2KV6asHsaoWo0hOHY=; b=B7zB9TSEbCtzjnsmBB9NSzLvKmG05eDdXmJb9IQJwHj48WBWc//Z4DKkYlekGvjKRO u74ayohgv4Pf1wXZoScqV3na1IuUFX9YQzh9jsQNWtrPOPsH7FzJCyi0LgJfQrn0BRtE vW8Ofr0jH340cvPSV6c8CbU2CuVkEQ8BMEJ575Bl+kOVnGWsQjmYAlQsuN6PzilZ1UQI L7N50bphJsr+rwbBp4GrS517x0f0uOsWEqAQ/FEjYN7uX/RgAR2EKX9PXeppoQ3OHupt /qO8acUVepgzQYDtzSdObi+NCwJqYKbjMGf9ZJGag5S/0AKFPnWFP3G7L7Zh0XtbZFXe amLA== X-Gm-Message-State: AJaThX4xAdP1X+qkbOJszZfoev5U4a3tcO8mJ2fN6Tf+32t5QuLeTFfO A1DiioJP0EPFkHlXIcq4l3ueXgcj X-Google-Smtp-Source: AGs4zMa6xNNl1EFeYtD29rgx1k1fXQuYG9Qi5ESYJFiouWWDoXEAluhBHiB3RMTX/iW3JN/Kw/RAGQ== X-Received: by 10.80.179.74 with SMTP id r10mr20378450edd.174.1512469017414; Tue, 05 Dec 2017 02:16:57 -0800 (PST) Received: from phenom.ffwll.local ([2a02:168:5635:0:39d2:f87e:2033:9f6]) by smtp.gmail.com with ESMTPSA id u10sm36596edm.56.2017.12.05.02.16.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 05 Dec 2017 02:16:56 -0800 (PST) From: Daniel Vetter To: Intel Graphics Development Date: Tue, 5 Dec 2017 11:16:49 +0100 Message-Id: <20171205101650.14289-2-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.15.0 In-Reply-To: <20171205101650.14289-1-daniel.vetter@ffwll.ch> References: <20171205101650.14289-1-daniel.vetter@ffwll.ch> Cc: Daniel Vetter Subject: [Intel-gfx] [PATCH i-g-t 2/3] meson: gtkdoc support X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Virus-Scanned: ClamAV using ClamSMTP 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). 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 + meson.build | 3 + meson.sh | 2 +- tests/meson.build | 6 +- 8 files changed, 158 insertions(+), 3 deletions(-) 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 diff --git a/docs/meson.build b/docs/meson.build new file mode 100644 index 000000000000..ead14c4015d9 --- /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 000000000000..705a7bf3f180 --- /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 000000000000..73adc8cc7bfc --- /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 000000000000..1c009229aae2 --- /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 000000000000..944f28a5615e --- /dev/null +++ b/docs/reference/meson.build @@ -0,0 +1 @@ +subdir('intel-gpu-tools') diff --git a/meson.build b/meson.build index a564893dc7cb..0950d3c7bbd5 100644 --- a/meson.build +++ b/meson.build @@ -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') diff --git a/meson.sh b/meson.sh index cbf1a9326dbe..ae8e3488d962 100755 --- a/meson.sh +++ b/meson.sh @@ -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 diff --git a/tests/meson.build b/tests/meson.build index 443513b74eb8..94cb8bb48cc7 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -257,12 +257,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, @@ -278,7 +280,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,