aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2020-08-05 13:07:48 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2020-08-21 06:30:42 -0400
commitacfdaac577130e86ebefe5564cfd121c16dbc3c4 (patch)
treee77a0822082ff21e6f092e935dfce4f771dab1dd
parentbac35bf5175fb16470a73492c23161e80361eeeb (diff)
meson: build texi doc
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--Makefile106
-rw-r--r--docs/interop/qemu-ga-ref.texi2
-rw-r--r--docs/interop/qemu-qmp-ref.texi2
-rw-r--r--meson.build85
-rw-r--r--qga/meson.build12
-rw-r--r--version.texi.in2
6 files changed, 104 insertions, 105 deletions
diff --git a/Makefile b/Makefile
index 511c7102b1..f442895309 100644
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,6 @@ BUILD_DIR=$(CURDIR)
SRC_PATH=.
UNCHECKED_GOALS := %clean TAGS cscope ctags dist \
- html info pdf txt \
help check-help print-% \
docker docker-% vm-help vm-test vm-build-%
@@ -128,20 +127,13 @@ generated-files-y += .git-submodule-status
Makefile: ;
configure: ;
-.PHONY: all clean cscope distclean html info install install-doc \
- pdf txt recurse-all dist msi FORCE
+.PHONY: all clean cscope distclean install \
+ recurse-all dist msi FORCE
$(call set-vpath, $(SRC_PATH))
LIBS+=-lz $(LIBS_TOOLS)
-ifdef BUILD_DOCS
-DOCS+=docs/interop/qemu-qmp-ref.html docs/interop/qemu-qmp-ref.txt docs/interop/qemu-qmp-ref.7
-DOCS+=docs/interop/qemu-ga-ref.html docs/interop/qemu-ga-ref.txt docs/interop/qemu-ga-ref.7
-else
-DOCS=
-endif
-
SUBDIR_MAKEFLAGS=$(if $(V),,--no-print-directory --quiet) BUILD_DIR=$(BUILD_DIR)
ifneq ($(wildcard config-host.mak),)
@@ -150,7 +142,7 @@ endif
include $(SRC_PATH)/tests/Makefile.include
-all: $(DOCS) $(if $(BUILD_DOCS),sphinxdocs) recurse-all modules
+all: recurse-all modules
# LIBFDT_lib="": avoid breaking existing trees with objects requiring -fPIC
DTC_MAKE_ARGS=-I$(SRC_PATH)/dtc VPATH=$(SRC_PATH)/dtc -C dtc V="$(V)" LIBFDT_lib=""
@@ -223,7 +215,7 @@ qemu-%.tar.bz2:
distclean: clean ninja-distclean
-test -f ninjatool && ./ninjatool $(if $(V),-v,) -t clean -g
- rm -f config-host.mak config-host.h* $(DOCS)
+ rm -f config-host.mak config-host.h*
rm -f tests/tcg/config-*.mak
rm -f config-all-disas.mak config.status
rm -f po/*.mo tests/qemu-iotests/common.env
@@ -234,12 +226,6 @@ distclean: clean ninja-distclean
rm -f Makefile.ninja ninjatool ninjatool.stamp Makefile.mtest
rm -f config.log
rm -f linux-headers/asm
- rm -f docs/version.texi
- rm -f docs/interop/qemu-ga-qapi.texi docs/interop/qemu-qmp-qapi.texi
- rm -f docs/interop/qemu-qmp-ref.7 docs/interop/qemu-ga-ref.7
- rm -f docs/interop/qemu-qmp-ref.txt docs/interop/qemu-ga-ref.txt
- rm -f docs/interop/qemu-qmp-ref.pdf docs/interop/qemu-ga-ref.pdf
- rm -f docs/interop/qemu-qmp-ref.html docs/interop/qemu-ga-ref.html
rm -Rf .sdk
KEYMAPS=da en-gb et fr fr-ch is lt no pt-br sv \
@@ -273,29 +259,6 @@ else
BLOBS=
endif
-install-doc: $(DOCS)
- $(INSTALL_DIR) "$(DESTDIR)$(qemu_docdir)"
- $(INSTALL_DATA) docs/interop/qemu-qmp-ref.html "$(DESTDIR)$(qemu_docdir)/interop"
- $(INSTALL_DATA) docs/interop/qemu-qmp-ref.txt "$(DESTDIR)$(qemu_docdir)/interop"
-ifdef CONFIG_POSIX
- $(INSTALL_DIR) "$(DESTDIR)$(mandir)/man1"
- $(INSTALL_DATA) $(MANUAL_BUILDDIR)/system/qemu.1 "$(DESTDIR)$(mandir)/man1"
- $(INSTALL_DIR) "$(DESTDIR)$(mandir)/man7"
- $(INSTALL_DATA) docs/interop/qemu-qmp-ref.7 "$(DESTDIR)$(mandir)/man7"
-ifeq ($(CONFIG_GUEST_AGENT),y)
- $(INSTALL_DATA) docs/interop/qemu-ga-ref.html "$(DESTDIR)$(qemu_docdir)/interop"
- $(INSTALL_DATA) docs/interop/qemu-ga-ref.txt "$(DESTDIR)$(qemu_docdir)/interop"
- $(INSTALL_DATA) docs/interop/qemu-ga-ref.7 "$(DESTDIR)$(mandir)/man7"
-endif
-endif
-ifdef CONFIG_VIRTFS
- $(INSTALL_DIR) "$(DESTDIR)$(mandir)/man1"
- $(INSTALL_DATA) $(MANUAL_BUILDDIR)/tools/virtfs-proxy-helper.1 "$(DESTDIR)$(mandir)/man1"
-endif
-ifeq ($(CONFIG_LINUX)$(CONFIG_SECCOMP)$(CONFIG_LIBCAP_NG),yyy)
- $(INSTALL_DATA) $(MANUAL_BUILDDIR)/tools/virtiofsd.1 "$(DESTDIR)$(mandir)/man1"
-endif
-
install-datadir:
$(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)"
@@ -310,8 +273,7 @@ ICON_SIZES=16x16 24x24 32x32 48x48 64x64 128x128 256x256 512x512
# Needed by "meson install"
export DESTDIR
-install: all $(if $(BUILD_DOCS),install-doc) \
- install-datadir install-localstatedir
+install: all install-datadir install-localstatedir
ifdef CONFIG_TRACE_SYSTEMTAP
$(INSTALL_PROG) "scripts/qemu-trace-stap" $(DESTDIR)$(bindir)
endif
@@ -342,62 +304,6 @@ endif
$(INSTALL_DATA) $(SRC_PATH)/pc-bios/keymaps/$$x "$(DESTDIR)$(qemu_datadir)/keymaps"; \
done
-# documentation
-MAKEINFO=makeinfo
-MAKEINFOINCLUDES= -I docs -I $(<D) -I $(@D)
-MAKEINFOFLAGS=--no-split --number-sections $(MAKEINFOINCLUDES)
-TEXI2PODFLAGS=$(MAKEINFOINCLUDES) -DVERSION="$(VERSION)" -DCONFDIR="$(qemu_confdir)"
-TEXI2PDFFLAGS=$(if $(V),,--quiet) -I $(SRC_PATH) $(MAKEINFOINCLUDES)
-
-docs/version.texi: $(SRC_PATH)/VERSION config-host.mak
- $(call quiet-command,(\
- echo "@set VERSION $(VERSION)" && \
- echo "@set CONFDIR $(qemu_confdir)" \
- )> $@,"GEN","$@")
-
-%.html: %.texi docs/version.texi
- $(call quiet-command,LC_ALL=C $(MAKEINFO) $(MAKEINFOFLAGS) --no-headers \
- --html $< -o $@,"GEN","$@")
-
-%.info: %.texi docs/version.texi
- $(call quiet-command,$(MAKEINFO) $(MAKEINFOFLAGS) $< -o $@,"GEN","$@")
-
-%.txt: %.texi docs/version.texi
- $(call quiet-command,LC_ALL=C $(MAKEINFO) $(MAKEINFOFLAGS) --no-headers \
- --plaintext $< -o $@,"GEN","$@")
-
-%.pdf: %.texi docs/version.texi
- $(call quiet-command,texi2pdf $(TEXI2PDFFLAGS) $< -o $@,"GEN","$@")
-
-docs/interop/qemu-qmp-qapi.texi: qapi/qapi-doc.texi
- @cp -p $< $@
-
-docs/interop/qemu-ga-qapi.texi: qga/qga-qapi-doc.texi
- @cp -p $< $@
-
-html: docs/interop/qemu-qmp-ref.html docs/interop/qemu-ga-ref.html sphinxdocs
-info: docs/interop/qemu-qmp-ref.info docs/interop/qemu-ga-ref.info
-pdf: docs/interop/qemu-qmp-ref.pdf docs/interop/qemu-ga-ref.pdf
-txt: docs/interop/qemu-qmp-ref.txt docs/interop/qemu-ga-ref.txt
-
-docs/interop/qemu-ga-ref.dvi docs/interop/qemu-ga-ref.html \
- docs/interop/qemu-ga-ref.info docs/interop/qemu-ga-ref.pdf \
- docs/interop/qemu-ga-ref.txt docs/interop/qemu-ga-ref.7: \
- docs/interop/qemu-ga-ref.texi docs/interop/qemu-ga-qapi.texi
-
-docs/interop/qemu-qmp-ref.dvi docs/interop/qemu-qmp-ref.html \
- docs/interop/qemu-qmp-ref.info docs/interop/qemu-qmp-ref.pdf \
- docs/interop/qemu-qmp-ref.txt docs/interop/qemu-qmp-ref.7: \
- docs/interop/qemu-qmp-ref.texi docs/interop/qemu-qmp-qapi.texi
-
-$(filter %.1 %.7 %.8,$(DOCS)): scripts/texi2pod.pl
- $(call quiet-command, \
- perl -Ww -- $(SRC_PATH)/scripts/texi2pod.pl $(TEXI2PODFLAGS) $< $@.pod && \
- $(POD2MAN) --section=$(subst .,,$(suffix $@)) --center=" " --release=" " $@.pod > $@, \
- "GEN","$@")
-
-man: $(filter %.1 %.7 %.8,$(DOCS))
-
ifdef CONFIG_WIN32
INSTALLER = qemu-setup-$(VERSION)$(EXESUF)
@@ -496,7 +402,7 @@ endif
$(call print-help,vm-help,Help about targets running tests inside VM)
@echo ''
@echo 'Documentation targets:'
- $(call print-help,html info pdf txt,Build documentation in specified format)
+ $(call print-help,html info pdf txt man,Build documentation in specified format)
@echo ''
ifdef CONFIG_WIN32
@echo 'Windows targets:'
diff --git a/docs/interop/qemu-ga-ref.texi b/docs/interop/qemu-ga-ref.texi
index ddb76ce1c2..a23cc2ed7f 100644
--- a/docs/interop/qemu-ga-ref.texi
+++ b/docs/interop/qemu-ga-ref.texi
@@ -65,7 +65,7 @@ along with this manual. If not, see http://www.gnu.org/licenses/.
@c for texi2pod:
@c man begin DESCRIPTION
-@include qemu-ga-qapi.texi
+@include qga/qga-qapi-doc.texi
@c man end
diff --git a/docs/interop/qemu-qmp-ref.texi b/docs/interop/qemu-qmp-ref.texi
index bb25758bd0..ea1d7fe6c2 100644
--- a/docs/interop/qemu-qmp-ref.texi
+++ b/docs/interop/qemu-qmp-ref.texi
@@ -65,7 +65,7 @@ along with this manual. If not, see http://www.gnu.org/licenses/.
@c for texi2pod:
@c man begin DESCRIPTION
-@include qemu-qmp-qapi.texi
+@include qapi/qapi-doc.texi
@c man end
diff --git a/meson.build b/meson.build
index e270569f4d..fd7b362fb7 100644
--- a/meson.build
+++ b/meson.build
@@ -1052,6 +1052,91 @@ subdir('pc-bios')
subdir('tests')
subdir('docs')
+if build_docs
+ makeinfo = find_program('makeinfo', required: build_docs)
+
+ docs_inc = [
+ '-I', meson.current_source_dir(),
+ '-I', meson.current_build_dir() / 'docs',
+ '-I', '@OUTDIR@',
+ ]
+
+ version_texi = configure_file(output: 'version.texi',
+ input: 'version.texi.in',
+ configuration: {'VERSION': meson.project_version(),
+ 'qemu_confdir': config_host['qemu_confdir']})
+
+ texi = {
+ 'qemu-qmp-ref': ['docs/interop/qemu-qmp-ref.texi', qapi_doc_texi, version_texi],
+ }
+ if 'CONFIG_GUEST_AGENT' in config_host
+ texi += {'qemu-ga-ref': ['docs/interop/qemu-ga-ref.texi', qga_qapi_doc_texi, version_texi]}
+ endif
+
+ if makeinfo.found()
+ cmd = [
+ 'env', 'LC_ALL=C', makeinfo, '--no-split', '--number-sections', docs_inc,
+ '@INPUT0@', '-o', '@OUTPUT@',
+ ]
+ foreach ext, args: {
+ 'info': [],
+ 'html': ['--no-headers', '--html'],
+ 'txt': ['--no-headers', '--plaintext'],
+ }
+ t = []
+ foreach doc, input: texi
+ output = doc + '.' + ext
+ t += custom_target(output,
+ input: input,
+ output: output,
+ install: true,
+ install_dir: config_host['qemu_docdir'] / 'interop',
+ command: cmd + args)
+ endforeach
+ alias_target(ext, t)
+ endforeach
+ endif
+
+ texi2pdf = find_program('texi2pdf', required: false)
+
+ if texi2pdf.found()
+ pdfs = []
+ foreach doc, input: texi
+ output = doc + '.pdf'
+ pdfs += custom_target(output,
+ input: input,
+ output: output,
+ command: [texi2pdf, '-q', docs_inc, '@INPUT0@', '-o', '@OUTPUT@'],
+ build_by_default: false)
+ endforeach
+ alias_target('pdf', pdfs)
+ endif
+
+ texi2pod = find_program('scripts/texi2pod.pl')
+ pod2man = find_program('pod2man', required: build_docs)
+
+ if pod2man.found()
+ foreach doc, input: texi
+ man = doc + '.7'
+ pod = custom_target(man + '.pod',
+ input: input,
+ output: man + '.pod',
+ command: [texi2pod,
+ '-DVERSION="' + meson.project_version() + '"',
+ '-DCONFDIR="' + config_host['qemu_confdir'] + '"',
+ '@INPUT0@', '@OUTPUT@'])
+ man = custom_target(man,
+ input: pod,
+ output: man,
+ capture: true,
+ install: true,
+ install_dir: config_host['mandir'] / 'man7',
+ command: [pod2man, '--utf8', '--section=7', '--center=" "',
+ '--release=" "', '@INPUT@'])
+ endforeach
+ endif
+endif
+
summary_info = {}
summary_info += {'Install prefix': config_host['prefix']}
summary_info += {'BIOS directory': config_host['qemu_datadir']}
diff --git a/qga/meson.build b/qga/meson.build
index 2b91261427..3f28f74b52 100644
--- a/qga/meson.build
+++ b/qga/meson.build
@@ -1,7 +1,6 @@
qga_qapi_outputs = [
'qga-qapi-commands.c',
'qga-qapi-commands.h',
- 'qga-qapi-doc.texi',
'qga-qapi-emit-events.c',
'qga-qapi-emit-events.h',
'qga-qapi-events.c',
@@ -17,12 +16,19 @@ qga_qapi_outputs = [
]
qga_qapi_files = custom_target('QGA QAPI files',
- output: qga_qapi_outputs,
+ output: qga_qapi_outputs + ['qga-qapi-doc.texi'],
input: 'qapi-schema.json',
command: [ qapi_gen, '-o', 'qga', '-p', 'qga-', '@INPUT0@' ],
depend_files: qapi_gen_depends)
+
qga_ss = ss.source_set()
-qga_ss.add(qga_qapi_files)
+i = 0
+foreach output: qga_qapi_outputs
+ qga_ss.add(qga_qapi_files[i])
+ i = i + 1
+endforeach
+qga_qapi_doc_texi = qga_qapi_files[i]
+
qga_ss.add(files(
'commands.c',
'guest-agent-command-state.c',
diff --git a/version.texi.in b/version.texi.in
new file mode 100644
index 0000000000..0a723b8be6
--- /dev/null
+++ b/version.texi.in
@@ -0,0 +1,2 @@
+@set VERSION @VERSION@
+@set CONFDIR @qemu_confdir@