2023-05-11 06:54:29 +03:00
|
|
|
sphinx_build = find_program(fs.parent(python.full_path()) / 'sphinx-build',
|
2023-02-21 04:24:55 +03:00
|
|
|
required: get_option('docs'))
|
2020-10-16 01:06:25 +03:00
|
|
|
|
|
|
|
# Check if tools are available to build documentation.
|
|
|
|
build_docs = false
|
|
|
|
if sphinx_build.found()
|
2021-08-12 13:24:27 +03:00
|
|
|
SPHINX_ARGS = ['env', 'CONFDIR=' + qemu_confdir, sphinx_build, '-q']
|
2020-10-16 01:06:25 +03:00
|
|
|
# If we're making warnings fatal, apply this to Sphinx runs as well
|
|
|
|
if get_option('werror')
|
2023-03-14 14:44:31 +03:00
|
|
|
SPHINX_ARGS += [ '-W', '-Dkerneldoc_werror=1' ]
|
2020-10-16 01:06:25 +03:00
|
|
|
endif
|
|
|
|
|
2023-05-03 23:39:46 +03:00
|
|
|
sphinx_version = run_command(SPHINX_ARGS + ['--version'],
|
|
|
|
check: true).stdout().split()[1]
|
|
|
|
if sphinx_version.version_compare('>=1.7.0')
|
|
|
|
SPHINX_ARGS += ['-j', 'auto']
|
|
|
|
else
|
|
|
|
nproc = find_program('nproc')
|
|
|
|
if nproc.found()
|
|
|
|
jobs = run_command(nproc, check: true).stdout()
|
|
|
|
SPHINX_ARGS += ['-j', jobs]
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2020-10-16 01:06:25 +03:00
|
|
|
# This is a bit awkward but works: create a trivial document and
|
|
|
|
# try to run it with our configuration file (which enforces a
|
|
|
|
# version requirement). This will fail if sphinx-build is too old.
|
2021-12-17 11:52:03 +03:00
|
|
|
run_command('mkdir', ['-p', tmpdir / 'sphinx'], check: true)
|
|
|
|
run_command('touch', [tmpdir / 'sphinx/index.rst'], check: true)
|
2020-10-16 01:06:25 +03:00
|
|
|
sphinx_build_test_out = run_command(SPHINX_ARGS + [
|
|
|
|
'-c', meson.current_source_dir(),
|
|
|
|
'-b', 'html', tmpdir / 'sphinx',
|
2021-12-17 11:52:03 +03:00
|
|
|
tmpdir / 'sphinx/out'], check: false)
|
2020-10-16 01:06:25 +03:00
|
|
|
build_docs = (sphinx_build_test_out.returncode() == 0)
|
|
|
|
|
|
|
|
if not build_docs
|
2021-03-23 14:53:28 +03:00
|
|
|
warning('@0@: @1@'.format(sphinx_build.full_path(), sphinx_build_test_out.stderr()))
|
2020-10-16 01:06:25 +03:00
|
|
|
if get_option('docs').enabled()
|
2021-03-23 14:53:28 +03:00
|
|
|
error('Install a Python 3 version of python-sphinx and the readthedoc theme')
|
2020-10-16 01:06:25 +03:00
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2020-08-05 16:49:10 +03:00
|
|
|
if build_docs
|
2022-04-20 18:33:54 +03:00
|
|
|
SPHINX_ARGS += ['-Dversion=' + meson.project_version(), '-Drelease=' + get_option('pkgversion')]
|
2020-10-16 01:06:25 +03:00
|
|
|
|
2020-08-05 16:49:10 +03:00
|
|
|
man_pages = {
|
2021-01-28 17:58:01 +03:00
|
|
|
'qemu-ga.8': (have_ga ? 'man8' : ''),
|
|
|
|
'qemu-ga-ref.7': (have_ga ? 'man7' : ''),
|
docs/interop: Convert qemu-qmp-ref to rST
Convert qemu-qmp-ref to rST format. This includes dropping
the plain-text, pdf and info format outputs for this document;
as with all our other Sphinx-based documentation, we provide
HTML and manpage only.
The qemu-qmp-ref.rst is somewhat more stripped down than
the .texi was, because we do not (currently) attempt to
generate indexes for the commands, events and data types
being documented.
Again, we drop the direct link from index.html.in now that
the QMP ref is part of the interop manual.
This commit removes the code from the root meson.build file that
handled the various Texinfo-based outputs, because we no longer
generate any documentation except for the Sphinx HTML manuals and the
manpages, and the code can't handle having an empty list of files
to process.. We'll do further cleanup of the remainders of
Texinfo support in subsequent commits.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20200925162316.21205-10-peter.maydell@linaro.org>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
[Unicode legacy literal dumbed down to plain string literal, TODO
comment on displaying QEMU version added, "make html" fixed,
storage-daemon/qapi/meson.build updated]
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2020-09-25 19:23:04 +03:00
|
|
|
'qemu-qmp-ref.7': 'man7',
|
2020-12-09 13:38:00 +03:00
|
|
|
'qemu-storage-daemon-qmp-ref.7': (have_tools ? 'man7' : ''),
|
2020-08-05 16:49:10 +03:00
|
|
|
'qemu-img.1': (have_tools ? 'man1' : ''),
|
|
|
|
'qemu-nbd.8': (have_tools ? 'man8' : ''),
|
2020-11-12 17:40:40 +03:00
|
|
|
'qemu-pr-helper.8': (have_tools ? 'man8' : ''),
|
2021-01-08 19:14:15 +03:00
|
|
|
'qemu-storage-daemon.1': (have_tools ? 'man1' : ''),
|
2021-10-07 16:08:14 +03:00
|
|
|
'qemu-trace-stap.1': (stap.found() ? 'man1' : ''),
|
2020-08-05 16:49:10 +03:00
|
|
|
'virtfs-proxy-helper.1': (have_virtfs_proxy_helper ? 'man1' : ''),
|
|
|
|
'qemu.1': 'man1',
|
|
|
|
'qemu-block-drivers.7': 'man7',
|
|
|
|
'qemu-cpu-models.7': 'man7'
|
|
|
|
}
|
|
|
|
|
|
|
|
sphinxdocs = []
|
|
|
|
sphinxmans = []
|
2020-08-11 10:07:04 +03:00
|
|
|
|
2021-01-15 18:44:49 +03:00
|
|
|
private_dir = meson.current_build_dir() / 'manual.p'
|
|
|
|
output_dir = meson.current_build_dir() / 'manual'
|
|
|
|
input_dir = meson.current_source_dir()
|
|
|
|
|
|
|
|
this_manual = custom_target('QEMU manual',
|
2020-08-05 16:49:10 +03:00
|
|
|
build_by_default: build_docs,
|
2021-01-15 18:44:49 +03:00
|
|
|
output: 'docs.stamp',
|
|
|
|
input: files('conf.py'),
|
|
|
|
depfile: 'docs.d',
|
2020-08-11 10:07:04 +03:00
|
|
|
command: [SPHINX_ARGS, '-Ddepfile=@DEPFILE@',
|
|
|
|
'-Ddepfile_stamp=@OUTPUT0@',
|
|
|
|
'-b', 'html', '-d', private_dir,
|
|
|
|
input_dir, output_dir])
|
2021-01-15 18:44:49 +03:00
|
|
|
sphinxdocs += this_manual
|
|
|
|
install_subdir(output_dir, install_dir: qemu_docdir, strip_directory: true)
|
2020-08-05 16:49:10 +03:00
|
|
|
|
2021-01-15 18:44:49 +03:00
|
|
|
these_man_pages = []
|
|
|
|
install_dirs = []
|
|
|
|
foreach page, section : man_pages
|
|
|
|
these_man_pages += page
|
|
|
|
install_dirs += section == '' ? false : get_option('mandir') / section
|
2020-08-05 16:49:10 +03:00
|
|
|
endforeach
|
2021-01-15 18:44:49 +03:00
|
|
|
|
|
|
|
sphinxmans += custom_target('QEMU man pages',
|
|
|
|
build_by_default: build_docs,
|
|
|
|
output: these_man_pages,
|
|
|
|
input: this_manual,
|
|
|
|
install: build_docs,
|
|
|
|
install_dir: install_dirs,
|
|
|
|
command: [SPHINX_ARGS, '-b', 'man', '-d', private_dir,
|
|
|
|
input_dir, meson.current_build_dir()])
|
|
|
|
|
2020-08-05 16:49:10 +03:00
|
|
|
alias_target('sphinxdocs', sphinxdocs)
|
docs/interop: Convert qemu-qmp-ref to rST
Convert qemu-qmp-ref to rST format. This includes dropping
the plain-text, pdf and info format outputs for this document;
as with all our other Sphinx-based documentation, we provide
HTML and manpage only.
The qemu-qmp-ref.rst is somewhat more stripped down than
the .texi was, because we do not (currently) attempt to
generate indexes for the commands, events and data types
being documented.
Again, we drop the direct link from index.html.in now that
the QMP ref is part of the interop manual.
This commit removes the code from the root meson.build file that
handled the various Texinfo-based outputs, because we no longer
generate any documentation except for the Sphinx HTML manuals and the
manpages, and the code can't handle having an empty list of files
to process.. We'll do further cleanup of the remainders of
Texinfo support in subsequent commits.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20200925162316.21205-10-peter.maydell@linaro.org>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
[Unicode legacy literal dumbed down to plain string literal, TODO
comment on displaying QEMU version added, "make html" fixed,
storage-daemon/qapi/meson.build updated]
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2020-09-25 19:23:04 +03:00
|
|
|
alias_target('html', sphinxdocs)
|
2020-08-05 16:49:10 +03:00
|
|
|
alias_target('man', sphinxmans)
|
|
|
|
endif
|
2024-07-24 15:45:53 +03:00
|
|
|
|
|
|
|
test('QAPI firmware.json regression tests', qapi_gen,
|
|
|
|
args: ['-o', meson.current_build_dir() / 'qapi',
|
|
|
|
meson.current_source_dir() / 'interop/firmware.json'],
|
|
|
|
suite: ['qapi-schema', 'qapi-interop'])
|