meson: Move the detection logic for sphinx to meson
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com> Message-Id: <20201015220626.418-4-luoyonggang@gmail.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
9dc6ee3fd7
commit
e366766046
59
configure
vendored
59
configure
vendored
@ -297,7 +297,7 @@ brlapi=""
|
|||||||
curl=""
|
curl=""
|
||||||
iconv="auto"
|
iconv="auto"
|
||||||
curses="auto"
|
curses="auto"
|
||||||
docs=""
|
docs="auto"
|
||||||
fdt="auto"
|
fdt="auto"
|
||||||
netmap="no"
|
netmap="no"
|
||||||
sdl="auto"
|
sdl="auto"
|
||||||
@ -820,15 +820,6 @@ do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
sphinx_build=
|
|
||||||
for binary in sphinx-build-3 sphinx-build
|
|
||||||
do
|
|
||||||
if has "$binary"
|
|
||||||
then
|
|
||||||
sphinx_build=$(command -v "$binary")
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Check for ancillary tools used in testing
|
# Check for ancillary tools used in testing
|
||||||
genisoimage=
|
genisoimage=
|
||||||
@ -1228,9 +1219,9 @@ for opt do
|
|||||||
;;
|
;;
|
||||||
--disable-crypto-afalg) crypto_afalg="no"
|
--disable-crypto-afalg) crypto_afalg="no"
|
||||||
;;
|
;;
|
||||||
--disable-docs) docs="no"
|
--disable-docs) docs="disabled"
|
||||||
;;
|
;;
|
||||||
--enable-docs) docs="yes"
|
--enable-docs) docs="enabled"
|
||||||
;;
|
;;
|
||||||
--disable-vhost-net) vhost_net="no"
|
--disable-vhost-net) vhost_net="no"
|
||||||
;;
|
;;
|
||||||
@ -4419,45 +4410,6 @@ if check_include linux/btrfs.h ; then
|
|||||||
btrfs=yes
|
btrfs=yes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# If we're making warnings fatal, apply this to Sphinx runs as well
|
|
||||||
sphinx_werror=""
|
|
||||||
if test "$werror" = "yes"; then
|
|
||||||
sphinx_werror="-W"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check we have a new enough version of sphinx-build
|
|
||||||
has_sphinx_build() {
|
|
||||||
# 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 either
|
|
||||||
# sphinx-build doesn't exist at all or if it is too old.
|
|
||||||
mkdir -p "$TMPDIR1/sphinx"
|
|
||||||
touch "$TMPDIR1/sphinx/index.rst"
|
|
||||||
"$sphinx_build" $sphinx_werror -c "$source_path/docs" \
|
|
||||||
-b html "$TMPDIR1/sphinx" \
|
|
||||||
"$TMPDIR1/sphinx/out" >> config.log 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check if tools are available to build documentation.
|
|
||||||
if test "$docs" != "no" ; then
|
|
||||||
if has_sphinx_build; then
|
|
||||||
sphinx_ok=yes
|
|
||||||
else
|
|
||||||
sphinx_ok=no
|
|
||||||
fi
|
|
||||||
if test "$sphinx_ok" = "yes"; then
|
|
||||||
docs=yes
|
|
||||||
else
|
|
||||||
if test "$docs" = "yes" ; then
|
|
||||||
if has $sphinx_build && test "$sphinx_ok" != "yes"; then
|
|
||||||
echo "Warning: $sphinx_build exists but it is either too old or uses too old a Python version" >&2
|
|
||||||
fi
|
|
||||||
feature_not_found "docs" "Install a Python 3 version of python-sphinx"
|
|
||||||
fi
|
|
||||||
docs=no
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Search for bswap_32 function
|
# Search for bswap_32 function
|
||||||
byteswap_h=no
|
byteswap_h=no
|
||||||
cat > $TMPC << EOF
|
cat > $TMPC << EOF
|
||||||
@ -6093,9 +6045,6 @@ qemu_version=$(head $source_path/VERSION)
|
|||||||
echo "PKGVERSION=$pkgversion" >>$config_host_mak
|
echo "PKGVERSION=$pkgversion" >>$config_host_mak
|
||||||
echo "SRC_PATH=$source_path" >> $config_host_mak
|
echo "SRC_PATH=$source_path" >> $config_host_mak
|
||||||
echo "TARGET_DIRS=$target_list" >> $config_host_mak
|
echo "TARGET_DIRS=$target_list" >> $config_host_mak
|
||||||
if [ "$docs" = "yes" ] ; then
|
|
||||||
echo "BUILD_DOCS=yes" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
if test "$modules" = "yes"; then
|
if test "$modules" = "yes"; then
|
||||||
# $shacmd can generate a hash started with digit, which the compiler doesn't
|
# $shacmd can generate a hash started with digit, which the compiler doesn't
|
||||||
# like as an symbol. So prefix it with an underscore
|
# like as an symbol. So prefix it with an underscore
|
||||||
@ -6784,7 +6733,6 @@ fi
|
|||||||
echo "ROMS=$roms" >> $config_host_mak
|
echo "ROMS=$roms" >> $config_host_mak
|
||||||
echo "MAKE=$make" >> $config_host_mak
|
echo "MAKE=$make" >> $config_host_mak
|
||||||
echo "PYTHON=$python" >> $config_host_mak
|
echo "PYTHON=$python" >> $config_host_mak
|
||||||
echo "SPHINX_BUILD=$sphinx_build" >> $config_host_mak
|
|
||||||
echo "GENISOIMAGE=$genisoimage" >> $config_host_mak
|
echo "GENISOIMAGE=$genisoimage" >> $config_host_mak
|
||||||
echo "MESON=$meson" >> $config_host_mak
|
echo "MESON=$meson" >> $config_host_mak
|
||||||
echo "NINJA=$ninja" >> $config_host_mak
|
echo "NINJA=$ninja" >> $config_host_mak
|
||||||
@ -7066,6 +7014,7 @@ NINJA=$ninja $meson setup \
|
|||||||
-Dgettext=$gettext -Dxkbcommon=$xkbcommon -Du2f=$u2f \
|
-Dgettext=$gettext -Dxkbcommon=$xkbcommon -Du2f=$u2f \
|
||||||
-Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt \
|
-Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt \
|
||||||
-Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
|
-Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
|
||||||
|
-Ddocs=$docs -Dsphinx_build=$sphinx_build \
|
||||||
$cross_arg \
|
$cross_arg \
|
||||||
"$PWD" "$source_path"
|
"$PWD" "$source_path"
|
||||||
|
|
||||||
|
@ -1,4 +1,50 @@
|
|||||||
|
if get_option('sphinx_build') == ''
|
||||||
|
sphinx_build = find_program(['sphinx-build-3', 'sphinx-build'],
|
||||||
|
required: get_option('docs'))
|
||||||
|
else
|
||||||
|
sphinx_build = find_program(get_option('sphinx_build'),
|
||||||
|
required: get_option('docs'))
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Check if tools are available to build documentation.
|
||||||
|
build_docs = false
|
||||||
|
if sphinx_build.found()
|
||||||
|
SPHINX_ARGS = [sphinx_build]
|
||||||
|
# If we're making warnings fatal, apply this to Sphinx runs as well
|
||||||
|
if get_option('werror')
|
||||||
|
SPHINX_ARGS += [ '-W' ]
|
||||||
|
endif
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
run_command('mkdir', ['-p', tmpdir / 'sphinx'])
|
||||||
|
run_command('touch', [tmpdir / 'sphinx/index.rst'])
|
||||||
|
sphinx_build_test_out = run_command(SPHINX_ARGS + [
|
||||||
|
'-c', meson.current_source_dir(),
|
||||||
|
'-b', 'html', tmpdir / 'sphinx',
|
||||||
|
tmpdir / 'sphinx/out'])
|
||||||
|
build_docs = (sphinx_build_test_out.returncode() == 0)
|
||||||
|
|
||||||
|
if not build_docs
|
||||||
|
warning('@0@ exists but it is either too old or uses too old a Python version'.format(get_option('sphinx_build')))
|
||||||
|
if get_option('docs').enabled()
|
||||||
|
error('Install a Python 3 version of python-sphinx')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
if build_docs
|
if build_docs
|
||||||
|
SPHINX_ARGS += ['-Dversion=' + meson.project_version(), '-Drelease=' + config_host['PKGVERSION']]
|
||||||
|
|
||||||
|
sphinx_extn_depends = [ meson.source_root() / 'docs/sphinx/depfile.py',
|
||||||
|
meson.source_root() / 'docs/sphinx/hxtool.py',
|
||||||
|
meson.source_root() / 'docs/sphinx/kerneldoc.py',
|
||||||
|
meson.source_root() / 'docs/sphinx/kernellog.py',
|
||||||
|
meson.source_root() / 'docs/sphinx/qapidoc.py',
|
||||||
|
meson.source_root() / 'docs/sphinx/qmp_lexer.py',
|
||||||
|
qapi_gen_depends ]
|
||||||
|
|
||||||
configure_file(output: 'index.html',
|
configure_file(output: 'index.html',
|
||||||
input: files('index.html.in'),
|
input: files('index.html.in'),
|
||||||
configuration: {'VERSION': meson.project_version()},
|
configuration: {'VERSION': meson.project_version()},
|
||||||
|
30
meson.build
30
meson.build
@ -17,7 +17,13 @@ cc = meson.get_compiler('c')
|
|||||||
config_host = keyval.load(meson.current_build_dir() / 'config-host.mak')
|
config_host = keyval.load(meson.current_build_dir() / 'config-host.mak')
|
||||||
enable_modules = 'CONFIG_MODULES' in config_host
|
enable_modules = 'CONFIG_MODULES' in config_host
|
||||||
enable_static = 'CONFIG_STATIC' in config_host
|
enable_static = 'CONFIG_STATIC' in config_host
|
||||||
build_docs = 'BUILD_DOCS' in config_host
|
|
||||||
|
# Temporary directory used for files created while
|
||||||
|
# configure runs. Since it is in the build directory
|
||||||
|
# we can safely blow away any previous version of it
|
||||||
|
# (and we need not jump through hoops to try to delete
|
||||||
|
# it when configure exits.)
|
||||||
|
tmpdir = meson.current_build_dir() / 'meson-private/temp'
|
||||||
|
|
||||||
if get_option('qemu_suffix').startswith('/')
|
if get_option('qemu_suffix').startswith('/')
|
||||||
error('qemu_suffix cannot start with a /')
|
error('qemu_suffix cannot start with a /')
|
||||||
@ -1266,22 +1272,6 @@ foreach d : hx_headers
|
|||||||
endforeach
|
endforeach
|
||||||
genh += hxdep
|
genh += hxdep
|
||||||
|
|
||||||
SPHINX_ARGS = [config_host['SPHINX_BUILD'],
|
|
||||||
'-Dversion=' + meson.project_version(),
|
|
||||||
'-Drelease=' + config_host['PKGVERSION']]
|
|
||||||
|
|
||||||
if get_option('werror')
|
|
||||||
SPHINX_ARGS += [ '-W' ]
|
|
||||||
endif
|
|
||||||
|
|
||||||
sphinx_extn_depends = [ meson.source_root() / 'docs/sphinx/depfile.py',
|
|
||||||
meson.source_root() / 'docs/sphinx/hxtool.py',
|
|
||||||
meson.source_root() / 'docs/sphinx/kerneldoc.py',
|
|
||||||
meson.source_root() / 'docs/sphinx/kernellog.py',
|
|
||||||
meson.source_root() / 'docs/sphinx/qapidoc.py',
|
|
||||||
meson.source_root() / 'docs/sphinx/qmp_lexer.py',
|
|
||||||
qapi_gen_depends ]
|
|
||||||
|
|
||||||
###################
|
###################
|
||||||
# Collect sources #
|
# Collect sources #
|
||||||
###################
|
###################
|
||||||
@ -1866,8 +1856,8 @@ endif
|
|||||||
subdir('scripts')
|
subdir('scripts')
|
||||||
subdir('tools')
|
subdir('tools')
|
||||||
subdir('pc-bios')
|
subdir('pc-bios')
|
||||||
subdir('tests')
|
|
||||||
subdir('docs')
|
subdir('docs')
|
||||||
|
subdir('tests')
|
||||||
if 'CONFIG_GTK' in config_host
|
if 'CONFIG_GTK' in config_host
|
||||||
subdir('po')
|
subdir('po')
|
||||||
endif
|
endif
|
||||||
@ -1949,7 +1939,7 @@ summary_info += {'QEMU_CFLAGS': config_host['QEMU_CFLAGS']}
|
|||||||
summary_info += {'QEMU_LDFLAGS': config_host['QEMU_LDFLAGS']}
|
summary_info += {'QEMU_LDFLAGS': config_host['QEMU_LDFLAGS']}
|
||||||
summary_info += {'make': config_host['MAKE']}
|
summary_info += {'make': config_host['MAKE']}
|
||||||
summary_info += {'python': '@0@ (version: @1@)'.format(python.full_path(), python.language_version())}
|
summary_info += {'python': '@0@ (version: @1@)'.format(python.full_path(), python.language_version())}
|
||||||
summary_info += {'sphinx-build': config_host['SPHINX_BUILD']}
|
summary_info += {'sphinx-build': sphinx_build.found()}
|
||||||
summary_info += {'genisoimage': config_host['GENISOIMAGE']}
|
summary_info += {'genisoimage': config_host['GENISOIMAGE']}
|
||||||
# TODO: add back version
|
# TODO: add back version
|
||||||
summary_info += {'slirp support': slirp_opt == 'disabled' ? false : slirp_opt}
|
summary_info += {'slirp support': slirp_opt == 'disabled' ? false : slirp_opt}
|
||||||
@ -2017,7 +2007,7 @@ if config_host.has_key('CONFIG_XEN_BACKEND')
|
|||||||
summary_info += {'xen ctrl version': config_host['CONFIG_XEN_CTRL_INTERFACE_VERSION']}
|
summary_info += {'xen ctrl version': config_host['CONFIG_XEN_CTRL_INTERFACE_VERSION']}
|
||||||
endif
|
endif
|
||||||
summary_info += {'brlapi support': config_host.has_key('CONFIG_BRLAPI')}
|
summary_info += {'brlapi support': config_host.has_key('CONFIG_BRLAPI')}
|
||||||
summary_info += {'Documentation': config_host.has_key('BUILD_DOCS')}
|
summary_info += {'Documentation': build_docs}
|
||||||
summary_info += {'PIE': get_option('b_pie')}
|
summary_info += {'PIE': get_option('b_pie')}
|
||||||
summary_info += {'vde support': config_host.has_key('CONFIG_VDE')}
|
summary_info += {'vde support': config_host.has_key('CONFIG_VDE')}
|
||||||
summary_info += {'netmap support': config_host.has_key('CONFIG_NETMAP')}
|
summary_info += {'netmap support': config_host.has_key('CONFIG_NETMAP')}
|
||||||
|
@ -2,7 +2,11 @@ option('qemu_suffix', type : 'string', value: 'qemu',
|
|||||||
description: 'Suffix for QEMU data/modules/config directories (can be empty)')
|
description: 'Suffix for QEMU data/modules/config directories (can be empty)')
|
||||||
option('docdir', type : 'string', value : 'doc',
|
option('docdir', type : 'string', value : 'doc',
|
||||||
description: 'Base directory for documentation installation (can be empty)')
|
description: 'Base directory for documentation installation (can be empty)')
|
||||||
|
option('sphinx_build', type : 'string', value : '',
|
||||||
|
description: 'Use specified sphinx-build [$sphinx_build] for building document (default to be empty)')
|
||||||
|
|
||||||
|
option('docs', type : 'feature', value : 'auto',
|
||||||
|
description: 'Documentations build support')
|
||||||
option('gettext', type : 'boolean', value : true,
|
option('gettext', type : 'boolean', value : true,
|
||||||
description: 'Localization of the GTK+ user interface')
|
description: 'Localization of the GTK+ user interface')
|
||||||
option('sparse', type : 'feature', value : 'auto',
|
option('sparse', type : 'feature', value : 'auto',
|
||||||
|
Loading…
Reference in New Issue
Block a user