diff --git a/docs/html/index.rst b/docs/html/index.rst
new file mode 100644
index 0000000000..7977ec1f05
--- /dev/null
+++ b/docs/html/index.rst
@@ -0,0 +1,65 @@
+============================
+Reference Manual for libvirt
+============================
+
+.. contents::
+
+Main libvirt APIs
+-----------------
+
+`libvirt-common `__
+ common macros and enums for the libvirt and libvirt-admin library
+
+`libvirt-domain-checkpoint `__
+ APIs for management of domain checkpoints
+
+`libvirt-domain-snapshot `__
+ APIs for management of domain snapshots
+
+`libvirt-domain `__
+ APIs for management of domains
+
+`libvirt-event `__
+ APIs for management of events
+
+`libvirt-host `__
+ APIs for management of hosts
+
+`libvirt-interface `__
+ APIs for management of interfaces
+
+`libvirt-network `__
+ APIs for management of networks
+
+`libvirt-nodedev `__
+ APIs for management of nodedevs
+
+`libvirt-nwfilter `__
+ APIs for management of nwfilters
+
+`libvirt-secret `__
+ APIs for management of secrets
+
+`libvirt-storage `__
+ APIs for management of storage pools and volumes
+
+`libvirt-stream `__
+ APIs for management of streams
+
+Error handling
+--------------
+
+`virterror `__
+ error handling interfaces for the libvirt library
+
+Special specific APIs
+---------------------
+
+`admin interface `__
+ APIs for management of the libvirt daemons
+
+`qemu driver `__
+ qemu-driver specific APIs
+
+`lxc driver `__
+ lxc-driver specific APIs
diff --git a/docs/html/meson.build b/docs/html/meson.build
index b18a8ccb5f..4d8d44d783 100644
--- a/docs/html/meson.build
+++ b/docs/html/meson.build
@@ -8,7 +8,6 @@ index_api_gen = custom_target(
docs_api_xml,
],
output: [
- 'index.html',
'libvirt-libvirt-common.html',
'libvirt-libvirt-domain.html',
'libvirt-libvirt-domain-checkpoint.html',
@@ -28,7 +27,6 @@ index_api_gen = custom_target(
xsltproc_prog, '--nonet', '-o', docs_builddir,
'--stringparam', 'builddir', meson.project_build_root(),
'--stringparam', 'timestamp', docs_timestamp,
- '--stringparam', 'indexfile', 'index.html',
'@INPUT@',
],
install: true,
@@ -77,6 +75,50 @@ foreach file : docs_html_gen
install_web_files += '@0@:@1@'.format(file.full_path(), docs_html_dir / 'html')
endforeach
+html_xslt_gen_install_dir = docs_html_dir / 'html'
+html_xslt_gen = []
+
+html_xslt_gen += {
+ 'name': 'index',
+ 'file': docs_rst2html5_gen.process('index.rst'),
+ 'source': 'docs' / 'html' / 'index.rst',
+ 'href_base': '../',
+ }
+
+# --- begin of XSLT processing ---
+
+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,
+ command: [
+ xsltproc_prog,
+ '--stringparam', 'pagesrc', data.get('source', ''),
+ '--stringparam', 'builddir', meson.project_build_root(),
+ '--stringparam', 'timestamp', docs_timestamp,
+ '--stringparam', 'href_base', data.get('href_base', ''),
+ '--nonet',
+ site_xsl,
+ '@INPUT@',
+ ],
+ depends: data.get('depends', []),
+ depend_files: [ page_xsl ],
+ capture: true,
+ install: true,
+ install_dir: html_xslt_gen_install_dir,
+ )
+
+ install_web_deps += html_file
+ install_web_files += html_file.full_path() + ':' + html_xslt_gen_install_dir
+endforeach
+
+html_xslt_gen = []
+
+# --- end of XSLT processing ---
+
test(
'check-html',
xmllint_prog,