2020-06-18 02:20:37 +02:00
docs_html_dir = docdir / 'html'
2020-06-18 02:28:33 +02:00
# xsltproc requires that the -o path ends with '/'
2021-10-25 18:48:59 +01:00
# Not using '/' operator due to bug in meson 0.60.0
# https://github.com/mesonbuild/meson/issues/9450
docs_builddir = join_paths ( meson . current_build_dir ( ) , '' )
2020-06-18 02:28:33 +02:00
2020-06-18 02:20:37 +02:00
docs_assets = [
'android-chrome-192x192.png' ,
'android-chrome-256x256.png' ,
'apple-touch-icon.png' ,
'browserconfig.xml' ,
'favicon.ico' ,
'favicon-16x16.png' ,
'favicon-32x32.png' ,
'manifest.json' ,
'mstile-150x150.png' ,
]
2020-06-18 02:24:51 +02:00
docs_html_in_files = [
'index' ,
'uri' ,
]
2020-06-18 02:25:19 +02:00
docs_rst_files = [
2021-03-12 11:12:47 +01:00
'aclpolkit' ,
2020-06-18 02:25:19 +02:00
'advanced-tests' ,
2021-03-12 11:53:13 +01:00
'api' ,
2022-03-07 16:38:05 +01:00
'api_extension' ,
2021-03-12 12:14:57 +01:00
'apps' ,
2021-03-12 12:04:40 +01:00
'auditlog' ,
2021-03-04 16:48:12 +00:00
'auth' ,
2020-06-18 02:25:19 +02:00
'best-practices' ,
2022-03-07 16:38:05 +01:00
'bindings' ,
2022-03-07 14:39:24 +01:00
'bugs' ,
2022-03-10 17:57:53 +01:00
'cgroups' ,
2020-06-18 02:25:19 +02:00
'ci' ,
'coding-style' ,
'committer-guidelines' ,
2021-03-12 08:34:15 +01:00
'compiling' ,
2022-03-10 16:09:32 +01:00
'contact' ,
2022-03-07 14:29:40 +01:00
'contribute' ,
2022-04-04 14:49:54 +02:00
'csharp' ,
2020-06-18 02:25:19 +02:00
'daemons' ,
2021-03-24 00:10:39 +01:00
'dbus' ,
2022-04-04 16:14:31 +02:00
'docs' ,
2022-03-10 15:32:04 +01:00
'downloads' ,
2022-03-07 16:09:03 +01:00
'drivers' ,
2022-03-10 17:57:53 +01:00
'drvbhyve' ,
2021-05-12 10:01:31 -07:00
'drvch' ,
2022-03-10 17:57:53 +01:00
'drvesx' ,
2022-03-10 17:57:53 +01:00
'drvhyperv' ,
2022-03-10 17:57:53 +01:00
'drvlxc' ,
2022-03-10 17:57:53 +01:00
'drvnodedev' ,
2022-03-10 17:57:53 +01:00
'drvopenvz' ,
2022-03-07 16:38:05 +01:00
'drvqemu' ,
2022-03-10 17:57:53 +01:00
'drvsecret' ,
2022-03-10 17:57:53 +01:00
'drvtest' ,
2022-03-10 17:57:53 +01:00
'drvvbox' ,
2022-03-10 17:57:53 +01:00
'drvvirtuozzo' ,
2022-03-10 17:57:53 +01:00
'drvvmware' ,
2022-03-10 17:57:53 +01:00
'drvxen' ,
2022-03-07 14:46:22 +01:00
'errors' ,
2022-03-10 17:57:53 +01:00
'firewall' ,
2022-03-10 17:57:53 +01:00
'format' ,
2020-06-18 02:25:19 +02:00
'formatbackup' ,
2022-04-08 10:25:27 +02:00
'formatcaps' ,
2020-06-18 02:25:19 +02:00
'formatcheckpoint' ,
2020-07-10 17:09:35 +02:00
'formatdomain' ,
2022-03-10 17:57:53 +01:00
'formatdomaincaps' ,
2022-04-08 10:25:27 +02:00
'formatnetwork' ,
2022-04-13 14:26:17 +02:00
'formatnetworkport' ,
2022-04-08 10:25:27 +02:00
'formatnode' ,
2021-03-25 16:02:59 +01:00
'formatnwfilter' ,
2022-03-07 16:16:58 +01:00
'formatsecret' ,
2022-03-04 15:55:40 +01:00
'formatsnapshot' ,
2021-12-14 15:35:41 +01:00
'formatstorage' ,
2022-03-10 17:57:54 +01:00
'formatstoragecaps' ,
2022-04-13 14:26:17 +02:00
'formatstorageencryption' ,
2020-09-24 14:22:17 +02:00
'glib-adoption' ,
2022-03-04 17:08:31 +01:00
'goals' ,
2022-03-07 16:02:55 +01:00
'governance' ,
2020-06-18 02:25:19 +02:00
'hacking' ,
2022-03-10 17:57:54 +01:00
'hooks' ,
2022-03-10 17:57:54 +01:00
'java' ,
2020-06-18 02:25:19 +02:00
'libvirt-go' ,
'libvirt-go-xml' ,
2022-03-10 17:57:54 +01:00
'logging' ,
2018-11-20 03:12:17 +03:00
'macos' ,
2021-12-01 16:30:34 +01:00
'migration' ,
2020-06-18 02:25:19 +02:00
'newreposetup' ,
2022-03-10 16:25:15 +01:00
'nss' ,
2020-06-18 02:25:19 +02:00
'pci-addresses' ,
2022-03-10 16:28:52 +01:00
'pci-hotplug' ,
2022-03-10 17:57:54 +01:00
'php' ,
2020-06-18 02:25:19 +02:00
'platforms' ,
'programming-languages' ,
2021-03-25 16:58:44 +01:00
'python' ,
2022-04-08 10:25:27 +02:00
'remote' ,
2022-03-07 14:56:53 +01:00
'securityprocess' ,
2021-03-29 22:24:40 +02:00
'storage' ,
2022-03-04 17:11:45 +01:00
'strategy' ,
2020-06-18 02:25:19 +02:00
'styleguide' ,
'submitting-patches' ,
2022-03-07 14:54:23 +01:00
'support' ,
2022-03-10 16:23:24 +01:00
'testapi' ,
2022-03-10 16:36:15 +01:00
'testsuites' ,
2022-03-10 16:34:51 +01:00
'testtck' ,
2021-03-25 18:08:51 +01:00
'windows' ,
2020-06-18 02:25:19 +02:00
]
2020-07-23 18:40:12 +02:00
# list of web targets to build for docs/web rule
install_web_deps = [ ]
install_web_files = [ ]
2020-06-18 02:20:37 +02:00
install_data ( docs_assets , install_dir : docs_html_dir )
2020-06-25 14:31:59 +02:00
2020-07-23 18:16:14 +02:00
aclperms_gen = custom_target (
'aclperms.htmlinc' ,
input : access_perm_h ,
output : 'aclperms.htmlinc' ,
command : [
2020-11-09 13:52:10 +00:00
meson_python_prog , python3_prog , genaclperms_prog , '@INPUT@' ,
2020-07-23 18:16:14 +02:00
] ,
capture : true ,
)
2020-06-29 22:14:13 +02:00
docs_timestamp = run_command (
2022-01-22 20:30:11 +01:00
python3_prog , meson_timestamp_prog . path ( ) , env : runutf8 , check : true ,
2020-06-29 22:14:13 +02:00
) . stdout ( ) . strip ( )
2020-06-18 02:24:03 +02:00
site_xsl = files ( 'site.xsl' )
page_xsl = files ( 'page.xsl' )
newapi_xsl = files ( 'newapi.xsl' )
2020-06-25 14:31:59 +02:00
docs_api_generated = custom_target (
'generate-api' ,
output : [
'libvirt-api.xml' ,
'libvirt-lxc-api.xml' ,
'libvirt-qemu-api.xml' ,
'libvirt-admin-api.xml' ,
] ,
command : [
2020-11-09 13:52:10 +00:00
meson_python_prog , python3_prog , apibuild_prog ,
2020-06-25 14:31:59 +02:00
meson . current_source_dir ( ) ,
meson . current_build_dir ( ) ,
] ,
install : true ,
install_dir : pkgdatadir / 'api' ,
depend_files : [
libvirt_common_h_in ,
libvirt_include ,
driver_sources ,
libvirt_qemu_sources ,
libvirt_lxc_sources ,
admin_sources ,
util_public_sources ,
] ,
)
docs_api_xml = docs_api_generated [ 0 ]
docs_lxc_api_xml = docs_api_generated [ 1 ]
docs_qemu_api_xml = docs_api_generated [ 2 ]
docs_admin_api_xml = docs_api_generated [ 3 ]
2020-06-18 02:23:00 +02:00
2022-01-13 08:40:56 +00:00
docs_programs_groups = [
{ 'name' : 'rst2html5' , 'prog' : [ 'rst2html5' , 'rst2html5.py' , 'rst2html5-3' ] } ,
{ 'name' : 'rst2man' , 'prog' : [ 'rst2man' , 'rst2man.py' , 'rst2man-3' ] } ,
]
foreach item : docs_programs_groups
prog = find_program ( item . get ( 'prog' ) , dirs : libvirt_sbin_path )
varname = item . get ( 'name' ) . underscorify ( )
conf . set_quoted ( varname . to_upper ( ) , prog . path ( ) )
set_variable ( '@0@_prog' . format ( varname ) , prog )
endforeach
# There are two versions of rst2html5 in the wild: one is the version
# coming from the docutils package, and the other is the one coming
# from the rst2html5 package. These versions are subtly different,
# and the libvirt documentation can only be successfully generated
# using the docutils version. Every now and then, users will report
# build failures that can be traced back to having the wrong version
# installed.
#
# The only reliable way to tell the two binaries apart seems to be
# looking look at their version information: the docutils version
# will report
#
# rst2html5 (Docutils ..., Python ..., on ...)
#
# whereas the rst2html5 version will report
#
# rst2html5 ... (Docutils ..., Python ..., on ...)
#
# with the additional bit of information being the version number for
# the rst2html5 package itself.
#
# Use this knowledge to detect the version that we know doesn't work
# for building libvirt and reject it
2022-01-22 20:30:11 +01:00
rst2html5_version = run_command ( rst2html5_prog , '--version' , check : true )
2022-01-13 08:40:56 +00:00
rst2html5_version = rst2html5_version . stdout ( ) . split ( ' ' )
if rst2html5_version [ 1 ] != '(Docutils'
error ( 'Please uninstall the rst2html5 package and install the docutils package' )
endif
2021-08-09 16:48:58 +02:00
docs_rst2html5_gen = generator (
rst2html5_prog ,
2020-06-18 02:23:00 +02:00
output : '@BASENAME@.html.in' ,
2020-08-03 07:32:29 +02:00
arguments : [ '--stylesheet=' , '--strict' , '@INPUT@' ] ,
2020-06-18 02:23:00 +02:00
capture : true ,
)
2020-06-18 02:24:51 +02:00
2020-06-18 02:25:19 +02:00
2020-10-13 17:14:53 +02:00
# html_xslt_gen config
html_xslt_gen_install_dir = docs_html_dir
html_xslt_gen = [ ]
# html_xslt_gen:
2020-06-18 02:25:19 +02:00
# each entry is a dictionary with following items:
2020-10-13 17:14:53 +02:00
# name - base file name (required), output file will become 'name.html'
# file - input file (optional, 'name.html.in' assumed if missing)
2020-08-03 16:38:31 +02:00
# source - source filename relative to repository root (optional, if there is no source)
2020-10-13 11:32:59 +02:00
# depends - explicit dependency on other input (optional)
2020-06-18 02:25:19 +02:00
2020-07-22 20:20:43 +02:00
foreach name : docs_html_in_files
2020-10-13 17:14:53 +02:00
html_xslt_gen + = {
2020-07-22 20:20:43 +02:00
'name' : name ,
2020-10-13 17:14:53 +02:00
'source' : 'docs' / name + '.html.in' ,
2020-07-22 20:20:43 +02:00
}
endforeach
2020-06-18 02:25:19 +02:00
foreach name : docs_rst_files
rst_file = '@0@.rst' . format ( name )
2020-10-13 17:14:53 +02:00
html_xslt_gen + = {
2020-06-18 02:25:19 +02:00
'name' : name ,
2021-08-09 16:48:58 +02:00
'file' : docs_rst2html5_gen . process ( rst_file ) ,
2020-08-03 16:38:31 +02:00
'source' : 'docs' / rst_file ,
2020-06-18 02:25:19 +02:00
}
endforeach
2020-10-13 17:14:53 +02:00
html_xslt_gen + = {
'name' : 'acl' ,
2020-10-13 11:32:59 +02:00
'source' : 'docs' / 'acl.html.in' ,
'depends' : aclperms_gen ,
}
2022-04-05 16:52:57 +02:00
html_xslt_gen + = {
'name' : '404' ,
'source' : 'docs' / '404.html.in' ,
'href_base' : '/' ,
}
2020-06-25 14:32:40 +02:00
hvsupport_html_in = custom_target (
'hvsupport.html.in' ,
output : 'hvsupport.html.in' ,
command : [
meson_python_prog ,
2020-11-09 13:52:10 +00:00
python3_prog ,
hvsupport_prog ,
2020-06-25 14:32:40 +02:00
meson . source_root ( ) ,
meson . build_root ( ) ,
] ,
capture : true ,
depend_files : [
public_sym_file ,
libvirt_qemu_syms ,
libvirt_lxc_syms ,
driver_header ,
] ,
depends : [
docs_api_generated ,
] ,
)
2020-10-13 17:14:53 +02:00
html_xslt_gen + = {
2020-06-25 14:32:40 +02:00
'name' : 'hvsupport' ,
'file' : hvsupport_html_in ,
}
2021-08-09 16:48:58 +02:00
news_html_in = docs_rst2html5_gen . process ( meson . source_root ( ) / 'NEWS.rst' )
2020-10-13 17:14:53 +02:00
html_xslt_gen + = {
2020-06-25 14:32:55 +02:00
'name' : 'news' ,
'file' : news_html_in ,
2020-07-22 20:20:43 +02:00
'source' : 'NEWS.rst' ,
2020-06-25 14:32:55 +02:00
}
2020-10-13 17:14:53 +02:00
# The following code between the markers must be kept identical with the other
# copies of the code in various subdirs, since meson doesn't support any kind
# of functions.
# --- begin of XSLT processing ---
2020-06-18 02:25:19 +02:00
2020-10-13 17:14:53 +02:00
foreach data : html_xslt_gen
html_filename = data [ 'name' ] + '.html'
html_file = custom_target (
html_filename ,
input : data . get ( 'file' , data [ 'name' ] + '.html.in' ) ,
output : html_filename ,
2020-06-18 02:25:19 +02:00
command : [
2020-10-12 16:13:08 +02:00
xsltproc_prog ,
'--stringparam' , 'pagesrc' , data . get ( 'source' , '' ) ,
'--stringparam' , 'builddir' , meson . build_root ( ) ,
'--stringparam' , 'timestamp' , docs_timestamp ,
2022-04-05 16:52:57 +02:00
'--stringparam' , 'href_base' , data . get ( 'href_base' , '' ) ,
2020-10-12 16:13:08 +02:00
'--nonet' ,
2022-04-05 16:52:57 +02:00
site_xsl ,
2020-06-18 02:25:19 +02:00
'@INPUT@' ,
] ,
2020-10-13 11:32:59 +02:00
depends : data . get ( 'depends' , [ ] ) ,
2020-06-18 02:25:19 +02:00
depend_files : [ page_xsl ] ,
2020-10-12 16:13:08 +02:00
capture : true ,
2020-06-18 02:25:19 +02:00
install : true ,
2020-10-13 17:14:53 +02:00
install_dir : html_xslt_gen_install_dir ,
2020-06-18 02:25:19 +02:00
)
2020-07-23 18:40:12 +02:00
2020-10-13 17:14:53 +02:00
install_web_deps + = html_file
install_web_files + = html_file . full_path ( ) + ':' + html_xslt_gen_install_dir
2020-06-18 02:25:19 +02:00
endforeach
2020-06-18 02:27:09 +02:00
2020-10-13 17:14:53 +02:00
html_xslt_gen = [ ]
# --- end of XSLT processing ---
2021-12-21 16:10:13 +01:00
subdir ( 'css' )
2020-06-18 02:27:48 +02:00
subdir ( 'fonts' )
2021-05-25 11:42:32 +01:00
subdir ( 'go' )
2020-06-18 02:28:33 +02:00
subdir ( 'html' )
2021-12-21 12:11:25 +01:00
subdir ( 'images' )
2020-06-18 02:30:14 +02:00
subdir ( 'js' )
2020-06-18 02:30:40 +02:00
subdir ( 'kbase' )
2020-06-18 02:31:31 +02:00
subdir ( 'logos' )
2020-06-25 14:33:22 +02:00
subdir ( 'manpages' )
2020-06-18 02:27:09 +02:00
foreach file : docs_assets
2020-07-23 18:40:12 +02:00
# This hack enables us to view the web pages
# from within the uninstalled build tree
2020-06-18 02:27:09 +02:00
configure_file ( input : file , output : file , copy : true )
2020-07-23 18:40:12 +02:00
install_web_files + = '@0@:@1@' . format ( meson . current_source_dir ( ) / file , docs_html_dir )
2020-06-18 02:27:09 +02:00
endforeach
2020-07-23 18:40:12 +02:00
run_target (
'install-web' ,
command : [
meson_python_prog , python3_prog . path ( ) , meson_install_web_prog . path ( ) ,
install_web_files ,
] ,
depends : install_web_deps ,
)