From cd0a9e983c984e3a6a08397dc2ca4500886ec48b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Fri, 8 Oct 2021 22:31:06 +0400 Subject: [PATCH 01/11] docs/sphinx: add loaded modules to generated depfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau Reviewed-by: John Snow Reviewed-by: Paolo Bonzini --- docs/sphinx/depfile.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/sphinx/depfile.py b/docs/sphinx/depfile.py index 277fdf0f56..b6fb926df1 100644 --- a/docs/sphinx/depfile.py +++ b/docs/sphinx/depfile.py @@ -12,6 +12,7 @@ import os import sphinx +import sys __version__ = '1.0' @@ -20,8 +21,17 @@ def get_infiles(env): yield env.doc2path(x) yield from ((os.path.join(env.srcdir, dep) for dep in env.dependencies[x])) + for mod in sys.modules.values(): + if hasattr(mod, '__file__'): + if mod.__file__: + yield mod.__file__ -def write_depfile(app, env): + +def write_depfile(app, exception): + if exception: + return + + env = app.env if not env.config.depfile: return @@ -42,7 +52,7 @@ def write_depfile(app, env): def setup(app): app.add_config_value('depfile', None, 'env') app.add_config_value('depfile_stamp', None, 'env') - app.connect('env-updated', write_depfile) + app.connect('build-finished', write_depfile) return dict( version = __version__, From 905655ea6ab6f25371415f2483e02ab34e3bb98a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Sat, 9 Oct 2021 01:46:10 +0400 Subject: [PATCH 02/11] docs/sphinx: add static files to generated depfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau Reviewed-by: John Snow Reviewed-by: Paolo Bonzini --- docs/sphinx/depfile.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/sphinx/depfile.py b/docs/sphinx/depfile.py index b6fb926df1..99539adb48 100644 --- a/docs/sphinx/depfile.py +++ b/docs/sphinx/depfile.py @@ -13,6 +13,7 @@ import os import sphinx import sys +from pathlib import Path __version__ = '1.0' @@ -25,6 +26,10 @@ def get_infiles(env): if hasattr(mod, '__file__'): if mod.__file__: yield mod.__file__ + # this is perhaps going to include unused files: + for static_path in env.config.html_static_path: + for path in Path(static_path).rglob('*'): + yield str(path) def write_depfile(app, exception): From 0dd35c16297a365bc99115284ab3e77da9986368 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Sat, 9 Oct 2021 01:57:51 +0400 Subject: [PATCH 03/11] docs/sphinx: add templates files to generated depfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau Reviewed-by: John Snow Reviewed-by: Paolo Bonzini --- docs/conf.py | 2 +- docs/sphinx/depfile.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index ff6e92c6e2..edc2bf8fcb 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -74,7 +74,7 @@ needs_sphinx = '1.6' extensions = ['kerneldoc', 'qmp_lexer', 'hxtool', 'depfile', 'qapidoc'] # Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] +templates_path = [os.path.join(qemu_docdir, '_templates')] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: diff --git a/docs/sphinx/depfile.py b/docs/sphinx/depfile.py index 99539adb48..afdcbcec6e 100644 --- a/docs/sphinx/depfile.py +++ b/docs/sphinx/depfile.py @@ -27,7 +27,7 @@ def get_infiles(env): if mod.__file__: yield mod.__file__ # this is perhaps going to include unused files: - for static_path in env.config.html_static_path: + for static_path in env.config.html_static_path + env.config.templates_path: for path in Path(static_path).rglob('*'): yield str(path) From 706bbad2bacf21bed3e61d99203afe85b73f97f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Fri, 15 Oct 2021 14:35:10 +0400 Subject: [PATCH 04/11] tests/qapi-schema/meson: add depfile to sphinx doc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau Reviewed-by: John Snow Reviewed-by: Paolo Bonzini --- tests/qapi-schema/meson.build | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build index df5acfd08b..d91d972af2 100644 --- a/tests/qapi-schema/meson.build +++ b/tests/qapi-schema/meson.build @@ -242,6 +242,7 @@ if build_docs input: files('doc-good.json', 'doc-good.rst'), build_by_default: true, depend_files: sphinx_extn_depends, + depfile: 'docs.d', # We use -E to suppress Sphinx's caching, because # we want it to always really run the QAPI doc # generation code. It also means we don't @@ -250,6 +251,8 @@ if build_docs '-b', 'text', '-E', '-c', meson.project_source_root() / 'docs', '-D', 'master_doc=doc-good', + '-Ddepfile=@DEPFILE@', + '-Ddepfile_stamp=doc-good.stamp', meson.current_source_dir(), meson.current_build_dir()]) From 89bcfe780a8e1a900d94014dfdef756cc3eb8221 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Fri, 15 Oct 2021 14:36:16 +0400 Subject: [PATCH 05/11] meson: drop sphinx_extn_depends MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Module dependencies is now handled by depfile.py. Signed-off-by: Marc-André Lureau Reviewed-by: John Snow Reviewed-by: Paolo Bonzini --- docs/meson.build | 9 +-------- tests/qapi-schema/meson.build | 1 - 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/docs/meson.build b/docs/meson.build index 19cce670a2..34fda6853d 100644 --- a/docs/meson.build +++ b/docs/meson.build @@ -37,13 +37,6 @@ endif if build_docs SPHINX_ARGS += ['-Dversion=' + meson.project_version(), '-Drelease=' + config_host['PKGVERSION']] - sphinx_extn_depends = [ meson.current_source_dir() / 'sphinx/depfile.py', - meson.current_source_dir() / 'sphinx/hxtool.py', - meson.current_source_dir() / 'sphinx/kerneldoc.py', - meson.current_source_dir() / 'sphinx/kernellog.py', - meson.current_source_dir() / 'sphinx/qapidoc.py', - meson.current_source_dir() / 'sphinx/qmp_lexer.py', - qapi_gen_depends ] sphinx_template_files = [ meson.project_source_root() / 'docs/_templates/footer.html' ] have_ga = have_tools and config_host.has_key('CONFIG_GUEST_AGENT') @@ -77,7 +70,7 @@ if build_docs output: 'docs.stamp', input: files('conf.py'), depfile: 'docs.d', - depend_files: [ sphinx_extn_depends, sphinx_template_files ], + depend_files: [ sphinx_template_files ], command: [SPHINX_ARGS, '-Ddepfile=@DEPFILE@', '-Ddepfile_stamp=@OUTPUT0@', '-b', 'html', '-d', private_dir, diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build index d91d972af2..caf0791ba8 100644 --- a/tests/qapi-schema/meson.build +++ b/tests/qapi-schema/meson.build @@ -241,7 +241,6 @@ if build_docs output: ['doc-good.txt'], input: files('doc-good.json', 'doc-good.rst'), build_by_default: true, - depend_files: sphinx_extn_depends, depfile: 'docs.d', # We use -E to suppress Sphinx's caching, because # we want it to always really run the QAPI doc From ed9e6d65edaeeefd33eaa873ab983d170bd8b3c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Fri, 15 Oct 2021 14:37:52 +0400 Subject: [PATCH 06/11] meson: drop sphinx_template_files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Static files dependencies is now handled by depfile.py. Signed-off-by: Marc-André Lureau Reviewed-by: John Snow Reviewed-by: Paolo Bonzini --- docs/meson.build | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/meson.build b/docs/meson.build index 34fda6853d..27c6e156ff 100644 --- a/docs/meson.build +++ b/docs/meson.build @@ -37,8 +37,6 @@ endif if build_docs SPHINX_ARGS += ['-Dversion=' + meson.project_version(), '-Drelease=' + config_host['PKGVERSION']] - sphinx_template_files = [ meson.project_source_root() / 'docs/_templates/footer.html' ] - have_ga = have_tools and config_host.has_key('CONFIG_GUEST_AGENT') man_pages = { @@ -70,7 +68,6 @@ if build_docs output: 'docs.stamp', input: files('conf.py'), depfile: 'docs.d', - depend_files: [ sphinx_template_files ], command: [SPHINX_ARGS, '-Ddepfile=@DEPFILE@', '-Ddepfile_stamp=@OUTPUT0@', '-b', 'html', '-d', private_dir, From 96871b38547211d8d91e7d059a3322e67b53657c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Sat, 9 Oct 2021 01:06:38 +0400 Subject: [PATCH 07/11] docs/sphinx: set navigation_with_keys=True MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Allow navigating to the previous/next page using the keyboard's left and right arrows. I wish this would be the default, and that the themes would provide more key navigation, but that doesn't seem on the roadmap. Signed-off-by: Marc-André Lureau Reviewed-by: John Snow Reviewed-by: Paolo Bonzini --- docs/conf.py | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/conf.py b/docs/conf.py index edc2bf8fcb..f536483bc3 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -166,6 +166,7 @@ html_theme = 'sphinx_rtd_theme' if LooseVersion(sphinx_rtd_theme.__version__) >= LooseVersion("0.4.3"): html_theme_options = { "style_nav_header_background": "#802400", + "navigation_with_keys": True, } html_logo = os.path.join(qemu_docdir, "../ui/icons/qemu_128x128.png") From 9423751645d27ae1146ca645431c368f09cb3b6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Sat, 9 Oct 2021 01:47:56 +0400 Subject: [PATCH 08/11] docs/sphinx: add 's' keyboard binding to focus search MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is pretty ubiquitous. ('/' is already taken by some browsers for quick search) Signed-off-by: Marc-André Lureau Reviewed-by: John Snow Reviewed-by: Paolo Bonzini --- docs/conf.py | 4 ++++ docs/sphinx-static/custom.js | 9 +++++++++ 2 files changed, 13 insertions(+) create mode 100644 docs/sphinx-static/custom.js diff --git a/docs/conf.py b/docs/conf.py index f536483bc3..3161b8b127 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -182,6 +182,10 @@ html_css_files = [ 'theme_overrides.css', ] +html_js_files = [ + 'custom.js', +] + html_context = { "display_gitlab": True, "gitlab_user": "qemu-project", diff --git a/docs/sphinx-static/custom.js b/docs/sphinx-static/custom.js new file mode 100644 index 0000000000..71a8605305 --- /dev/null +++ b/docs/sphinx-static/custom.js @@ -0,0 +1,9 @@ +document.addEventListener('keydown', (event) => { + // find a better way to look it up? + let search_input = document.getElementsByName('q')[0]; + + if (event.code === 'KeyS' && document.activeElement !== search_input) { + event.preventDefault(); + search_input.focus(); + } +}); From 450e0f28a476342baf1ed14a6c2a230e738f83bf Mon Sep 17 00:00:00 2001 From: John Snow Date: Mon, 4 Oct 2021 17:52:36 -0400 Subject: [PATCH 09/11] docs: remove non-reference uses of single backticks The single backtick markup in ReST is the "default role". Currently, Sphinx's default role is called "content". Sphinx suggests you can use the "Any" role instead to turn any single-backtick enclosed item into a cross-reference. This is useful for things like autodoc for Python docstrings, where it's often nicer to reference other types with `foo` instead of the more laborious :py:meth:`foo`. It's also useful in multi-domain cases to easily reference definitions from other Sphinx domains, such as referencing C code definitions from outside of kerneldoc comments. Before we do that, though, we'll need to turn all existing usages of the "content" role to inline verbatim markup wherever it does not correctly resolve into a cross-refernece by using double backticks instead. Signed-off-by: John Snow Reviewed-by: Eduardo Habkost Reviewed-by: Alexander Bulekov Message-Id: <20211004215238.1523082-2-jsnow@redhat.com> --- docs/devel/fuzzing.rst | 9 +++++---- docs/devel/tcg-plugins.rst | 2 +- docs/interop/live-block-operations.rst | 2 +- docs/system/guest-loader.rst | 2 +- include/qemu/module.h | 6 +++--- qapi/block-core.json | 4 ++-- qemu-options.hx | 4 ++-- 7 files changed, 15 insertions(+), 14 deletions(-) diff --git a/docs/devel/fuzzing.rst b/docs/devel/fuzzing.rst index 2749bb9bed..784ecb99e6 100644 --- a/docs/devel/fuzzing.rst +++ b/docs/devel/fuzzing.rst @@ -182,10 +182,11 @@ The output should contain a complete list of matched MemoryRegions. OSS-Fuzz -------- -QEMU is continuously fuzzed on `OSS-Fuzz` __(https://github.com/google/oss-fuzz). -By default, the OSS-Fuzz build will try to fuzz every fuzz-target. Since the -generic-fuzz target requires additional information provided in environment -variables, we pre-define some generic-fuzz configs in +QEMU is continuously fuzzed on `OSS-Fuzz +`_. By default, the OSS-Fuzz build +will try to fuzz every fuzz-target. Since the generic-fuzz target +requires additional information provided in environment variables, we +pre-define some generic-fuzz configs in ``tests/qtest/fuzz/generic_fuzz_configs.h``. Each config must specify: - ``.name``: To identify the fuzzer config diff --git a/docs/devel/tcg-plugins.rst b/docs/devel/tcg-plugins.rst index 59a7d838be..f93ef4fe52 100644 --- a/docs/devel/tcg-plugins.rst +++ b/docs/devel/tcg-plugins.rst @@ -211,7 +211,7 @@ The hotpages plugin can be configured using the following arguments: This is an instruction classifier so can be used to count different types of instructions. It has a number of options to refine which get -counted. You can give a value to the `count` argument for a class of +counted. You can give a value to the ``count`` argument for a class of instructions to break it down fully, so for example to see all the system registers accesses:: diff --git a/docs/interop/live-block-operations.rst b/docs/interop/live-block-operations.rst index 9e3635b233..814c29bbe1 100644 --- a/docs/interop/live-block-operations.rst +++ b/docs/interop/live-block-operations.rst @@ -640,7 +640,7 @@ at this point: (QEMU) block-job-complete device=job0 In either of the above cases, if you once again run the -`query-block-jobs` command, there should not be any active block +``query-block-jobs`` command, there should not be any active block operation. Comparing 'commit' and 'mirror': In both then cases, the overlay images diff --git a/docs/system/guest-loader.rst b/docs/system/guest-loader.rst index 4320d1183f..9ef9776bf0 100644 --- a/docs/system/guest-loader.rst +++ b/docs/system/guest-loader.rst @@ -51,4 +51,4 @@ The full syntax of the guest-loader is:: ``bootargs=`` This is an optional field for kernel blobs which will pass command - like via the `/chosen/module@/bootargs` node. + like via the ``/chosen/module@/bootargs`` node. diff --git a/include/qemu/module.h b/include/qemu/module.h index 3deac0078b..5fcc323b2a 100644 --- a/include/qemu/module.h +++ b/include/qemu/module.h @@ -77,14 +77,14 @@ void module_allow_arch(const char *arch); /** * DOC: module info annotation macros * - * `scripts/modinfo-collect.py` will collect module info, + * ``scripts/modinfo-collect.py`` will collect module info, * using the preprocessor and -DQEMU_MODINFO. * - * `scripts/modinfo-generate.py` will create a module meta-data database + * ``scripts/modinfo-generate.py`` will create a module meta-data database * from the collected information so qemu knows about module * dependencies and QOM objects implemented by modules. * - * See `*.modinfo` and `modinfo.c` in the build directory to check the + * See ``*.modinfo`` and ``modinfo.c`` in the build directory to check the * script results. */ #ifdef QEMU_MODINFO diff --git a/qapi/block-core.json b/qapi/block-core.json index b290782bf2..33e8507d10 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -491,11 +491,11 @@ # @granularity: granularity of the dirty bitmap in bytes (since 1.4) # # @recording: true if the bitmap is recording new writes from the guest. -# Replaces `active` and `disabled` statuses. (since 4.0) +# Replaces ``active`` and ``disabled`` statuses. (since 4.0) # # @busy: true if the bitmap is in-use by some operation (NBD or jobs) # and cannot be modified via QMP or used by another operation. -# Replaces `locked` and `frozen` statuses. (since 4.0) +# Replaces ``locked`` and ``frozen`` statuses. (since 4.0) # # @persistent: true if the bitmap was stored on disk, is scheduled to be stored # on disk, or both. (since 4.0) diff --git a/qemu-options.hx b/qemu-options.hx index f051536b63..7749f59300 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -1895,8 +1895,8 @@ SRST Valid parameters are: ``grab-mod=`` : Used to select the modifier keys for toggling - the mouse grabbing in conjunction with the "g" key. `` can be - either `lshift-lctrl-lalt` or `rctrl`. + the mouse grabbing in conjunction with the "g" key. ```` can be + either ``lshift-lctrl-lalt`` or ``rctrl``. ``alt_grab=on|off`` : Use Control+Alt+Shift-g to toggle mouse grabbing. This parameter is deprecated - use ``grab-mod`` instead. From ca0a0d122c760a0763c68f348560bddfe482813c Mon Sep 17 00:00:00 2001 From: John Snow Date: Mon, 4 Oct 2021 17:52:37 -0400 Subject: [PATCH 10/11] docs: (further) remove non-reference uses of single backticks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The series rotted already. Here's the new changes. Signed-off-by: John Snow Reviewed-by: Damien Hedde [ extra backticks fixes ] Signed-off-by: Marc-André Lureau Message-Id: <20211004215238.1523082-3-jsnow@redhat.com> --- docs/devel/build-system.rst | 16 ++++++++-------- docs/system/i386/sgx.rst | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/devel/build-system.rst b/docs/devel/build-system.rst index 7f106d2f1c..ae536ef75d 100644 --- a/docs/devel/build-system.rst +++ b/docs/devel/build-system.rst @@ -47,14 +47,14 @@ command line options for which a same-named Meson option exists; dashes in the command line are replaced with underscores. Many checks on the compilation environment are still found in configure -rather than `meson.build`, but new checks should be added directly to -`meson.build`. +rather than ``meson.build``, but new checks should be added directly to +``meson.build``. Patches are also welcome to move existing checks from the configure -phase to `meson.build`. When doing so, ensure that `meson.build` does -not use anymore the keys that you have removed from `config-host.mak`. -Typically these will be replaced in `meson.build` by boolean variables, -``get_option('optname')`` invocations, or `dep.found()` expressions. +phase to ``meson.build``. When doing so, ensure that ``meson.build`` does +not use anymore the keys that you have removed from ``config-host.mak``. +Typically these will be replaced in ``meson.build`` by boolean variables, +``get_option('optname')`` invocations, or ``dep.found()`` expressions. In general, the remaining checks have little or no interdependencies, so they can be moved one by one. @@ -298,7 +298,7 @@ comprises the following tasks: - Add code to perform the actual feature check. - - Add code to include the feature status in `config-host.h` + - Add code to include the feature status in ``config-host.h`` - Add code to print out the feature status in the configure summary upon completion. @@ -334,7 +334,7 @@ The other supporting code is generally simple:: For the configure script to parse the new option, the ``scripts/meson-buildoptions.sh`` file must be up-to-date; ``make -update-buildoptions`` (or just `make`) will take care of updating it. +update-buildoptions`` (or just ``make``) will take care of updating it. Support scripts diff --git a/docs/system/i386/sgx.rst b/docs/system/i386/sgx.rst index f103ae2a2f..9aa161af1a 100644 --- a/docs/system/i386/sgx.rst +++ b/docs/system/i386/sgx.rst @@ -77,9 +77,9 @@ CPUID Due to its myriad dependencies, SGX is currently not listed as supported in any of Qemu's built-in CPU configuration. To expose SGX (and SGX Launch -Control) to a guest, you must either use `-cpu host` to pass-through the +Control) to a guest, you must either use ``-cpu host`` to pass-through the host CPU model, or explicitly enable SGX when using a built-in CPU model, -e.g. via `-cpu ,+sgx` or `-cpu ,+sgx,+sgxlc`. +e.g. via ``-cpu ,+sgx`` or ``-cpu ,+sgx,+sgxlc``. All SGX sub-features enumerated through CPUID, e.g. SGX2, MISCSELECT, ATTRIBUTES, etc... can be restricted via CPUID flags. Be aware that enforcing @@ -126,7 +126,7 @@ creating VM with SGX. Feature Control ~~~~~~~~~~~~~~~ -Qemu SGX updates the `etc/msr_feature_control` fw_cfg entry to set the SGX +Qemu SGX updates the ``etc/msr_feature_control`` fw_cfg entry to set the SGX (bit 18) and SGX LC (bit 17) flags based on their respective CPUID support, i.e. existing guest firmware will automatically set SGX and SGX LC accordingly, assuming said firmware supports fw_cfg.msr_feature_control. From c11b3a1dd324d1f7dc8512bb840ffd8226fbd0a7 Mon Sep 17 00:00:00 2001 From: John Snow Date: Mon, 4 Oct 2021 17:52:38 -0400 Subject: [PATCH 11/11] docs/sphinx: change default role to "any" This interprets single-backtick syntax in all of our Sphinx docs as a cross-reference to *something*, including Python symbols. From here on out, new uses of `backticks` will cause a build failure if the target cannot be referenced. Signed-off-by: John Snow Reviewed-by: Eduardo Habkost Reviewed-by: Peter Maydell Message-Id: <20211004215238.1523082-4-jsnow@redhat.com> --- docs/conf.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/conf.py b/docs/conf.py index 3161b8b127..763e7d2434 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -85,6 +85,11 @@ source_suffix = '.rst' # The master toctree document. master_doc = 'index' +# Interpret `single-backticks` to be a cross-reference to any kind of +# referenceable object. Unresolvable or ambiguous references will emit a +# warning at build time. +default_role = 'any' + # General information about the project. project = u'QEMU' copyright = u'2021, The QEMU Project Developers'