meson: build texi doc

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2020-08-05 13:07:48 +02:00
parent bac35bf517
commit acfdaac577
6 changed files with 104 additions and 105 deletions

106
Makefile
View File

@ -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:'

View File

@ -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

View File

@ -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

View File

@ -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']}

View File

@ -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',

2
version.texi.in Normal file
View File

@ -0,0 +1,2 @@
@set VERSION @VERSION@
@set CONFDIR @qemu_confdir@