[gtk/ebassi/gidocgen: 20/483] Generate GTK API reference(s) with gi-docgen




commit 6a0a0794197cf3bcc9eeae1e68b2aa1131b586dc
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Wed Feb 10 13:41:53 2021 +0000

    Generate GTK API reference(s) with gi-docgen
    
    Stop using gtk-doc, and switch to gi-docgen.
    
    The gi-docgen tool generates API references through the introspection
    data, which has various benefits:
    
     - it does not parse C code
     - it does not generate and run C code to introspect types at build time
     - it does not present a different API from the one we're exporting
    
    Additionally, gi-docgen:
    
     - does not generate DocBook XML in order to generate HTML
     - does not go through xsltproc
     - parses proper Markdown
    
    Which makes it markedly faster than gtk-doc has ever been.

 docs/reference/gdk/gdk4.toml.in        |  74 +++++
 docs/reference/gdk/images/gtk-logo.svg | 138 +++++++++
 docs/reference/gdk/meson.build         | 239 ++++-----------
 docs/reference/gsk/gsk4.toml.in        |  41 +++
 docs/reference/gsk/gtk-logo.svg        | 138 +++++++++
 docs/reference/gsk/meson.build         | 102 +------
 docs/reference/gtk/gtk4.toml.in        | 225 ++++++++++++++
 docs/reference/gtk/images/gtk-logo.png | Bin 0 -> 4736 bytes
 docs/reference/gtk/images/gtk-logo.svg | 138 +++++++++
 docs/reference/gtk/meson.build         | 543 ++-------------------------------
 docs/reference/meson.build             |   5 +
 meson.build                            |   7 +-
 12 files changed, 851 insertions(+), 799 deletions(-)
---
diff --git a/docs/reference/gdk/gdk4.toml.in b/docs/reference/gdk/gdk4.toml.in
new file mode 100644
index 0000000000..cf7f160125
--- /dev/null
+++ b/docs/reference/gdk/gdk4.toml.in
@@ -0,0 +1,74 @@
+[library]
+version = "@version@"
+browse_url = "https://gitlab.gnome.org/GNOME/gtk/";
+repository_url = "https://gitlab.gnome.org/GNOME/gtk.git";
+website_url = "https://www.gtk.org";
+authors = "GTK Development Team"
+logo_url = "gtk-logo.svg"
+license = "GPL-2.1-or-later"
+description = "The GTK toolkit"
+dependencies = [ "GObject-2.0", "Graphene-1.0", "Pango-1.0" ]
+
+  [dependencies."GObject-2.0"]
+  name = "GObject"
+  description = "The base type system library"
+  docs_url = "https://developer.gnome.org/gobject/stable";
+
+  [dependencies."Graphene-1.0"]
+  name = "Graphene"
+  description = "A thin layer of mathematical types for 3D libraries"
+  docs_url = "https://ebassi.github.io/graphene/docs";
+
+  [dependencies."Pango-1.0"]
+  name = "Pango"
+  description = "Text shaping and rendering"
+  docs_url = "https://developer.gnome.org/pango/stable";
+
+[theme]
+name = "basic"
+
+[source-location]
+base_url = "https://gitlab.gnome.org/GNOME/gtk/-/blob/master/";
+
+[extra]
+content_images = [
+  "images/gtk-logo.svg",
+  "images/rotated-text.png",
+  "images/default_cursor.png",
+  "images/help_cursor.png",
+  "images/pointer_cursor.png",
+  "images/context_menu_cursor.png",
+  "images/progress_cursor.png",
+  "images/wait_cursor.png",
+  "images/cell_cursor.png",
+  "images/crosshair_cursor.png",
+  "images/text_cursor.png",
+  "images/vertical_text_cursor.png",
+  "images/alias_cursor.png",
+  "images/copy_cursor.png",
+  "images/no_drop_cursor.png",
+  "images/move_cursor.png",
+  "images/not_allowed_cursor.png",
+  "images/grab_cursor.png",
+  "images/grabbing_cursor.png",
+  "images/all_scroll_cursor.png",
+  "images/col_resize_cursor.png",
+  "images/row_resize_cursor.png",
+  "images/n_resize_cursor.png",
+  "images/e_resize_cursor.png",
+  "images/s_resize_cursor.png",
+  "images/w_resize_cursor.png",
+  "images/ne_resize_cursor.png",
+  "images/nw_resize_cursor.png",
+  "images/sw_resize_cursor.png",
+  "images/se_resize_cursor.png",
+  "images/ew_resize_cursor.png",
+  "images/ns_resize_cursor.png",
+  "images/nesw_resize_cursor.png",
+  "images/nwse_resize_cursor.png",
+  "images/zoom_in_cursor.png",
+  "images/zoom_out_cursor.png",
+  "images/popup-anchors.png",
+  "images/popup-flip.png",
+  "images/popup-slide.png",
+]
diff --git a/docs/reference/gdk/images/gtk-logo.svg b/docs/reference/gdk/images/gtk-logo.svg
new file mode 100644
index 0000000000..9edbe2da97
--- /dev/null
+++ b/docs/reference/gdk/images/gtk-logo.svg
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="128"
+   height="128"
+   id="svg6843"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14"
+   version="1.0"
+   sodipodi:docname="gtk-logo.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/home/ebassi/Pictures/gtk-logo-256.png"
+   inkscape:export-xdpi="192"
+   inkscape:export-ydpi="192">
+  <defs
+     id="defs6845">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="-50 : 600 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="700 : 600 : 1"
+       inkscape:persp3d-origin="300 : 400 : 1"
+       id="perspective13" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.8284271"
+     inkscape:cx="69.874353"
+     inkscape:cy="64.313526"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     width="128px"
+     height="128px"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1016"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid7947" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata6848">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title />
+        <dc:date />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:rights>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:publisher>
+        <dc:identifier />
+        <dc:source />
+        <dc:relation />
+        <dc:language />
+        <dc:subject>
+          <rdf:Bag />
+        </dc:subject>
+        <dc:coverage />
+        <dc:description />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:contributor>
+        <cc:license
+           rdf:resource="" />
+      </cc:Work>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <path
+       sodipodi:nodetypes="ccccc"
+       id="path6976"
+       d="M 20.88413,30.82696 L 53.816977,55.527708 L 107.33282,39.060543 L 70.587303,17.177763 L 
20.88413,30.82696 z"
+       
style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.12364459;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
 />
+    <path
+       id="path6978"
+       d="M 22.94243,82.287118 L 20.88413,30.82696 L 53.816977,55.527708 L 53.816977,111.10486 L 
22.94243,82.287118 z"
+       
style="fill:#e40000;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.12364459;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
 />
+    <path
+       id="path6980"
+       d="M 53.816977,111.10486 L 103.21619,90.5207 L 107.33282,39.060543 L 53.816977,55.527708 L 
53.816977,111.10486 z"
+       
style="fill:#7fe719;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.12364459;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
 />
+    <path
+       sodipodi:nodetypes="ccc"
+       id="path6982"
+       d="M 23.216626,81.319479 L 70.48573,67.361442 L 103.38422,90.444516"
+       
style="opacity:1;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
 />
+    <path
+       sodipodi:nodetypes="cc"
+       id="path6984"
+       d="M 70.434539,17.875593 L 70.434539,66.984877"
+       
style="opacity:1;fill:#babdb6;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
 />
+  </g>
+</svg>
diff --git a/docs/reference/gdk/meson.build b/docs/reference/gdk/meson.build
index cdd018def9..18bcf15f14 100644
--- a/docs/reference/gdk/meson.build
+++ b/docs/reference/gdk/meson.build
@@ -1,190 +1,63 @@
-private_headers = [
-  'gdk-autocleanup.h',
-  'gdk-private.h',
-  'gdkapplaunchcontextprivate.h',
-  'gdkcairocontextprivate.h',
-  'gdkcairoprivate.h',
-  'gdkclipboardprivate.h',
-  'gdkcontentformatsprivate.h',
-  'gdkcontentproviderprivate.h',
-  'gdkcursorprivate.h',
-  'gdkdebug.h',
-  'gdkdevicepadprivate.h',
-  'gdkdeviceprivate.h',
-  'gdkdevicetoolprivate.h',
-  'gdkdisplaymanagerprivate.h',
-  'gdkdisplayprivate.h',
-  'gdkdndprivate.h',
-  'gdkdragprivate.h',
-  'gdkdragsurfaceprivate.h',
-  'gdkdrawcontextprivate.h',
-  'gdkdropprivate.h',
-  'gdkeventsprivate.h',
-  'gdkframeclockidleprivate.h',
-  'gdkframeclockprivate.h',
-  'gdkglcontextprivate.h',
-  'gdkgltextureprivate.h',
-  'gdkinternals.h',
-  'gdkintl.h',
-  'gdkkeysprivate.h',
-  'gdkkeysyms.h',
-  'gdkmarshalers.h',
-  'gdkmemorytextureprivate.h',
-  'gdkmonitorprivate.h',
-  'gdkpipeiostreamprivate.h',
-  'gdkpopupprivate.h',
-  'gdkprofilerprivate.h',
-  'gdkrgbaprivate.h',
-  'gdkscreenprivate.h',
-  'gdkseatdefaultprivate.h',
-  'gdkseatprivate.h',
-  'gdksnapshotprivate.h',
-  'gdksurfaceimpl.h',
-  'gdksurfaceprivate.h',
-  'gdktextureprivate.h',
-  'gdktoplevelprivate.h',
-  'gdktoplevelsizeprivate.h',
-  'gdkvulkancontextprivate.h',
-
-  'filetransferportalprivate.h',
-  'gdkconstructor.h',
-  'keyname-table.h',
-
-  # gdk/x11
-  'gdkasync.h',
-  'gdkcairocontext-x11.h',
-  'gdkclipboard-x11.h',
-  'gdkdevice-xi2-private.h',
-  'gdkdevicemanagerprivate-core.h',
-  'gdkdisplay-x11.h',
-  'gdkeventsource.h',
-  'gdkeventtranslator.h',
-  'gdkglcontext-x11.h',
-  'gdkkeys-x11.h',
-  'gdkmonitor-x11.h',
-  'gdkprivate-x11.h',
-  'gdkscreen-x11.h',
-  'gdkselectioninputstream-x11.h',
-  'gdkselectionoutputstream-x11.h',
-  'gdksurface-x11.h',
-  'gdktextlistconverter-x11.h',
-  'gdkvisual-x11.h',
-  'gdkvulkancontext-x11.h',
-  'gdkx-autocleanups.h',
-  'MwmUtil.h',
-  'xsettings-client.h',
-
-  # gdk/wayland
-  'gdkcairocontext-wayland.h',
-  'gdkclipboard-wayland.h',
-  'gdkdevice-wayland-private.h',
-  'gdkdisplay-wayland.h',
-  'gdkglcontext-wayland.h',
-  'gdkmonitor-wayland.h',
-  'gdkprimary-wayland.h',
-  'gdkprivate-wayland.h',
-  'gdkseat-wayland.h',
-  'gdksurface-wayland.h',
-  'gdkvulkancontext-wayland.h',
-  'wm-button-layout-translation.h',
-  'gtk-primary-selection-client-protocol.h',
-  'gtk-shell-client-protocol.h',
-  'idle-inhibit-unstable-v1-client-protocol.h',
-  'keyboard-shortcuts-inhibit-unstable-v1-client-protocol.h',
-  'pointer-gestures-unstable-v1-client-protocol.h',
-  'primary-selection-unstable-v1-client-protocol.h',
-  'server-decoration-client-protocol.h',
-  'tablet-unstable-v2-client-protocol.h',
-  'xdg-foreign-unstable-v1-client-protocol.h',
-  'xdg-shell-unstable-v6-client-protocol.h',
-  'xdg-output-unstable-v1-client-protocol.h',
-  'xdg-shell-client-protocol.h',
-  'xdg-shell-unstable-v6-client-protocol.h',
-  'wayland-cursor.h',
-  'os-compatibility.h',
-  'xcursor.h',
-
-  'broadway',
-  'wayland/cursor',
-  'macos',
-  'win32',
+expand_content_md_files = [
 ]
 
-images = [
-  'images/rotated-text.png',
-  'images/default_cursor.png',
-  'images/help_cursor.png',
-  'images/pointer_cursor.png',
-  'images/context_menu_cursor.png',
-  'images/progress_cursor.png',
-  'images/wait_cursor.png',
-  'images/cell_cursor.png',
-  'images/crosshair_cursor.png',
-  'images/text_cursor.png',
-  'images/vertical_text_cursor.png',
-  'images/alias_cursor.png',
-  'images/copy_cursor.png',
-  'images/no_drop_cursor.png',
-  'images/move_cursor.png',
-  'images/not_allowed_cursor.png',
-  'images/grab_cursor.png',
-  'images/grabbing_cursor.png',
-  'images/all_scroll_cursor.png',
-  'images/col_resize_cursor.png',
-  'images/row_resize_cursor.png',
-  'images/n_resize_cursor.png',
-  'images/e_resize_cursor.png',
-  'images/s_resize_cursor.png',
-  'images/w_resize_cursor.png',
-  'images/ne_resize_cursor.png',
-  'images/nw_resize_cursor.png',
-  'images/sw_resize_cursor.png',
-  'images/se_resize_cursor.png',
-  'images/ew_resize_cursor.png',
-  'images/ns_resize_cursor.png',
-  'images/nesw_resize_cursor.png',
-  'images/nwse_resize_cursor.png',
-  'images/zoom_in_cursor.png',
-  'images/zoom_out_cursor.png',
-  'images/popup-anchors.png',
-  'images/popup-flip.png',
-  'images/popup-slide.png',
-]
-
-src_dir = [ gdkinc ]
-
-if x11_enabled
-  src_dir += [ gdkx11_inc ]
-endif
-
-if wayland_enabled
-  src_dir += [ gdkwayland_inc ]
-endif
+gdk4_toml = configure_file(input: 'gdk4.toml.in', output: 'gdk4.toml', configuration: toml_conf)
 
 if get_option('gtk_doc')
-  configure_file(input: 'version.xml.in', output: 'version.xml', configuration: version_conf)
-
-  gnome.gtkdoc('gdk4',
-    mode: 'none',
-    main_xml: 'gdk4-docs.xml',
-    src_dir: src_dir,
-    dependencies: libgtk_dep,
-    gobject_typesfile: join_paths(meson.current_source_dir(), 'gdk4.types'),
-    scan_args: [
-      '--ignore-decorators=_GDK_EXTERN|G_GNUC_WARN_UNUSED_RESULT',
-      '--ignore-headers=' + ' '.join(private_headers),
+  custom_target('gdk4-doc',
+    input: [ gdk4_toml, gdk_gir[0] ],
+    output: 'gdk4',
+    command: [
+      gidocgen,
+      'generate',
+      '--add-include-path=@0@'.format(meson.current_build_dir() / '../../../gtk'),
+      '--config=@INPUT0@',
+      '--output-dir=@OUTPUT@',
+      '--no-namespace-dir',
+      '--content-dir=@0@'.format(meson.current_source_dir()),
+      '@INPUT1@',
     ],
-    mkdb_args: [
-      '--ignore-files=' + ' '.join(private_headers),
-    ],
-    fixxref_args: [
-      '--html-dir=@0@'.format(docpath),
-      '--extra-dir=@0@'.format(join_paths(glib_docpath, 'glib')),
-      '--extra-dir=@0@'.format(join_paths(glib_docpath, 'gobject')),
-      '--extra-dir=@0@'.format(join_paths(glib_docpath, 'gio')),
-      '--extra-dir=@0@'.format(cairo_docpath),
-    ],
-    html_assets: images,
-    install: true,
+    depend_files: [ expand_content_md_files ],
+    build_by_default: true,
   )
+
+  if x11_enabled
+    custom_target('gdk4-x11-doc',
+      input: [ gdk4_toml, gdk_x11_gir[0] ],
+      output: 'gdk4-x11',
+      command: [
+        gidocgen,
+        'generate',
+        '--add-include-path=@0@'.format(meson.current_build_dir() / '../../../gtk'),
+        '--config=@INPUT0@',
+        '--output-dir=@OUTPUT@',
+        '--no-namespace-dir',
+        '--content-dir=@0@'.format(meson.current_source_dir()),
+        '@INPUT1@',
+      ],
+      depends: [ gdk_gir[0] ],
+      depend_files: [ expand_content_md_files ],
+      build_by_default: true,
+    )
+  endif
+
+  if wayland_enabled
+    custom_target('gdk4-wayland-doc',
+      input: [ gdk4_toml, gdk_wayland_gir[0] ],
+      output: 'gdk4-wayland',
+      command: [
+        gidocgen,
+        'generate',
+        '--add-include-path=@0@'.format(meson.current_build_dir() / '../../../gtk'),
+        '--config=@INPUT0@',
+        '--output-dir=@OUTPUT@',
+        '--no-namespace-dir',
+        '--content-dir=@0@'.format(meson.current_source_dir()),
+        '@INPUT1@',
+      ],
+      depends: [ gdk_gir[0] ],
+      depend_files: [ expand_content_md_files ],
+      build_by_default: true,
+    )
+  endif
 endif
diff --git a/docs/reference/gsk/gsk4.toml.in b/docs/reference/gsk/gsk4.toml.in
new file mode 100644
index 0000000000..8a28cab779
--- /dev/null
+++ b/docs/reference/gsk/gsk4.toml.in
@@ -0,0 +1,41 @@
+[library]
+version = "@version@"
+browse_url = "https://gitlab.gnome.org/GNOME/gtk/";
+repository_url = "https://gitlab.gnome.org/GNOME/gtk.git";
+website_url = "https://www.gtk.org";
+authors = "GTK Development Team"
+logo_url = "gtk-logo.svg"
+license = "GPL-2.1-or-later"
+description = "The GTK toolkit"
+dependencies = [ "GObject-2.0", "Graphene-1.0", "Pango-1.0", "Gdk-4.0" ]
+
+  [dependencies."GObject-2.0"]
+  name = "GObject"
+  description = "The base type system library"
+  docs_url = "https://developer.gnome.org/gobject/stable";
+
+  [dependencies."Graphene-1.0"]
+  name = "Graphene"
+  description = "A thin layer of mathematical types for 3D libraries"
+  docs_url = "https://ebassi.github.io/graphene/docs";
+
+  [dependencies."Pango-1.0"]
+  name = "Pango"
+  description = "Text shaping and rendering"
+  docs_url = "https://developer.gnome.org/pango/stable";
+
+  [dependencies."Gdk-4.0"]
+  name = "GDK"
+  description = "The GTK windowing system abstraction"
+  docs_url = "../../Gdk/4.0/"
+
+[theme]
+name = "basic"
+
+[source-location]
+base_url = "https://gitlab.gnome.org/GNOME/gtk/-/blob/master/";
+
+[extra]
+content_images = [
+  "gtk-logo.svg",
+]
diff --git a/docs/reference/gsk/gtk-logo.svg b/docs/reference/gsk/gtk-logo.svg
new file mode 100644
index 0000000000..9edbe2da97
--- /dev/null
+++ b/docs/reference/gsk/gtk-logo.svg
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="128"
+   height="128"
+   id="svg6843"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14"
+   version="1.0"
+   sodipodi:docname="gtk-logo.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/home/ebassi/Pictures/gtk-logo-256.png"
+   inkscape:export-xdpi="192"
+   inkscape:export-ydpi="192">
+  <defs
+     id="defs6845">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="-50 : 600 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="700 : 600 : 1"
+       inkscape:persp3d-origin="300 : 400 : 1"
+       id="perspective13" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.8284271"
+     inkscape:cx="69.874353"
+     inkscape:cy="64.313526"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     width="128px"
+     height="128px"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1016"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid7947" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata6848">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title />
+        <dc:date />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:rights>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:publisher>
+        <dc:identifier />
+        <dc:source />
+        <dc:relation />
+        <dc:language />
+        <dc:subject>
+          <rdf:Bag />
+        </dc:subject>
+        <dc:coverage />
+        <dc:description />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:contributor>
+        <cc:license
+           rdf:resource="" />
+      </cc:Work>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <path
+       sodipodi:nodetypes="ccccc"
+       id="path6976"
+       d="M 20.88413,30.82696 L 53.816977,55.527708 L 107.33282,39.060543 L 70.587303,17.177763 L 
20.88413,30.82696 z"
+       
style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.12364459;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
 />
+    <path
+       id="path6978"
+       d="M 22.94243,82.287118 L 20.88413,30.82696 L 53.816977,55.527708 L 53.816977,111.10486 L 
22.94243,82.287118 z"
+       
style="fill:#e40000;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.12364459;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
 />
+    <path
+       id="path6980"
+       d="M 53.816977,111.10486 L 103.21619,90.5207 L 107.33282,39.060543 L 53.816977,55.527708 L 
53.816977,111.10486 z"
+       
style="fill:#7fe719;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.12364459;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
 />
+    <path
+       sodipodi:nodetypes="ccc"
+       id="path6982"
+       d="M 23.216626,81.319479 L 70.48573,67.361442 L 103.38422,90.444516"
+       
style="opacity:1;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
 />
+    <path
+       sodipodi:nodetypes="cc"
+       id="path6984"
+       d="M 70.434539,17.875593 L 70.434539,66.984877"
+       
style="opacity:1;fill:#babdb6;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
 />
+  </g>
+</svg>
diff --git a/docs/reference/gsk/meson.build b/docs/reference/gsk/meson.build
index bf54aa1dcb..aede56e534 100644
--- a/docs/reference/gsk/meson.build
+++ b/docs/reference/gsk/meson.build
@@ -1,91 +1,21 @@
-private_headers = [
-  'gsk-autocleanup.h',
-
-  'gskcairoblurprivate.h',
-  'gskcairorendererprivate.h',
-  'gskdebugprivate.h',
-  'gskdiffprivate.h',
-  'gskglshaderprivate.h',
-  'gskprivate.h',
-  'gskprofilerprivate.h',
-  'gskrendererprivate.h',
-  'gskrendernodeprivate.h',
-  'gskrendernodeparserprivate.h',
-  'gskroundedrectprivate.h',
-  'gsktransformprivate.h',
-
-  # gsk/gl
-  'glutilsprivate.h',
-  'gskgldriverprivate.h',
-  'gskglglyphcacheprivate.h',
-  'gskgliconcacheprivate.h',
-  'gskglimageprivate.h',
-  'gskglnodesampleprivate.h',
-  'gskglprofilerprivate.h',
-  'gskglrendererprivate.h',
-  'gskglrenderopsprivate.h',
-  'gskglshaderbuilderprivate.h',
-  'gskglshadowcacheprivate.h',
-  'gskgltextureatlasprivate.h',
-  'opbuffer.h',
-  'stb_rect_pack.h',
-
-  # gsk/vulkan
-  'gskvulkanblendmodepipelineprivate.h',
-  'gskvulkanblurpipelineprivate.h',
-  'gskvulkanborderpipelineprivate.h',
-  'gskvulkanboxshadowpipelineprivate.h',
-  'gskvulkanbufferprivate.h',
-  'gskvulkanclipprivate.h',
-  'gskvulkancolorpipelineprivate.h',
-  'gskvulkancolortextpipelineprivate.h',
-  'gskvulkancommandpoolprivate.h',
-  'gskvulkancrossfadepipelineprivate.h',
-  'gskvulkaneffectpipelineprivate.h',
-  'gskvulkanglyphcacheprivate.h',
-  'gskvulkanimageprivate.h',
-  'gskvulkanlineargradientpipelineprivate.h',
-  'gskvulkanmemoryprivate.h',
-  'gskvulkanpipelineprivate.h',
-  'gskvulkanpushconstantsprivate.h',
-  'gskvulkanrendererprivate.h',
-  'gskvulkanrenderpassprivate.h',
-  'gskvulkanrenderprivate.h',
-  'gskvulkanshaderprivate.h',
-  'gskvulkantextpipelineprivate.h',
-  'gskvulkantexturepipelineprivate.h',
-]
-
-images = [
-]
+gsk4_toml = configure_file(input: 'gsk4.toml.in', output: 'gsk4.toml', configuration: toml_conf)
 
 if get_option('gtk_doc')
-  configure_file(input: 'version.xml.in', output: 'version.xml', configuration: version_conf)
-
-  gnome.gtkdoc('gsk4',
-    mode: 'none',
-    main_xml: 'gsk4-docs.xml',
-    src_dir: [
-      gskinc,
-    ],
-    dependencies: libgtk_dep,
-    gobject_typesfile: join_paths(meson.current_source_dir(), 'gsk4.types'),
-    scan_args: [
-      '--ignore-decorators=_GDK_EXTERN',
-      '--ignore-headers=' + ' '.join(private_headers),
-    ],
-    mkdb_args: [
-      '--ignore-files=' + ' '.join(private_headers),
-    ],
-    fixxref_args: [
-      '--html-dir=@0@'.format(docpath),
-      '--extra-dir=@0@'.format(join_paths(glib_docpath, 'glib')),
-      '--extra-dir=@0@'.format(join_paths(glib_docpath, 'gobject')),
-      '--extra-dir=@0@'.format(join_paths(glib_docpath, 'gio')),
-      '--extra-dir=@0@'.format(cairo_docpath),
-      '--extra-dir=../gdk',
+  custom_target('gsk4-doc',
+    input: [ gsk4_toml, gsk_gir[0] ],
+    output: 'gsk4',
+    command: [
+      gidocgen,
+      'generate',
+      '--add-include-path=@0@'.format(meson.current_build_dir() / '../../../gtk'),
+      '--config=@INPUT0@',
+      '--output-dir=@OUTPUT@',
+      '--no-namespace-dir',
+      '--content-dir=@0@'.format(meson.current_source_dir()),
+      '@INPUT1@',
     ],
-    html_assets: images,
-    install: true,
+    depends: [ gdk_gir[0] ],
+    depend_files: [ expand_content_md_files ],
+    build_by_default: true,
   )
 endif
diff --git a/docs/reference/gtk/gtk4.toml.in b/docs/reference/gtk/gtk4.toml.in
new file mode 100644
index 0000000000..f71d310373
--- /dev/null
+++ b/docs/reference/gtk/gtk4.toml.in
@@ -0,0 +1,225 @@
+[library]
+version = "@version@"
+browse_url = "https://gitlab.gnome.org/GNOME/gtk/";
+repository_url = "https://gitlab.gnome.org/GNOME/gtk.git";
+website_url = "https://www.gtk.org";
+authors = "GTK Development Team"
+logo_url = "gtk-logo.svg"
+license = "GPL-2.1-or-later"
+description = "The GTK toolkit"
+dependencies = [ "GObject-2.0", "Graphene-1.0", "Pango-1.0", "Gdk-4.0", "Gsk-4.0" ]
+
+  [dependencies."GObject-2.0"]
+  name = "GObject"
+  description = "The base type system library"
+  docs_url = "https://developer.gnome.org/gobject/stable";
+
+  [dependencies."Graphene-1.0"]
+  name = "Graphene"
+  description = "A thin layer of mathematical types for 3D libraries"
+  docs_url = "https://ebassi.github.io/graphene/docs";
+
+  [dependencies."Pango-1.0"]
+  name = "Pango"
+  description = "Text shaping and rendering"
+  docs_url = "https://developer.gnome.org/pango/stable";
+
+  [dependencies."Gdk-4.0"]
+  name = "GDK"
+  description = "The GTK windowing system abstraction"
+  docs_url = "../../Gdk/4.0/"
+
+  [dependencies."Gsk-4.0"]
+  name = "GSK"
+  description = "The GTK rendering abstraction"
+  docs_url = "../../Gsk/4.0/"
+
+[theme]
+name = "basic"
+
+[source-location]
+base_url = "https://gitlab.gnome.org/GNOME/gtk/-/blob/master/";
+
+[extra]
+# The same order will be used when generating the index
+content_files = [
+  "getting_started.md",
+  "building.md",
+  "compiling.md",
+  "running.md",
+  "question_index.md",
+  "resources.md",
+  "actions.md",
+  "input-handling.md",
+  "drawing-model.md",
+  "css-overview.md",
+  "css-properties.md",
+  "section-accessibility.md",
+  "section-list-widget.md",
+  "section-text-widget.md",
+  "section-tree-widget.md",
+  "migrating-2to4.md",
+  "migrating-3to4.md",
+  "broadway.md",
+  "osx.md",
+  "wayland.md",
+  "windows.md",
+  "x11.md",
+]
+content_images = [
+  "images/aboutdialog.png",
+  "images/action-bar.png",
+  "images/appchooserbutton.png",
+  "images/appchooserdialog.png",
+  "images/arrows.png",
+  "images/assistant.png",
+  "images/background.png",
+  "images/bloatpad-gnome.png",
+  "images/bloatpad-osx.png",
+  "images/bloatpad-xfce.png",
+  "images/border1.png",
+  "images/border2.png",
+  "images/border3.png",
+  "images/box.png",
+  "images/box-expand.png",
+  "images/box-packing.png",
+  "images/builder-shortcuts.png",
+  "images/button.png",
+  "images/calendar.png",
+  "images/capture-bubble.png",
+  "images/centerbox.png",
+  "images/check-button.png",
+  "images/checks.png",
+  "images/clocks-shortcuts.png",
+  "images/color-button.png",
+  "images/colorchooser.png",
+  "images/combo-box-entry.png",
+  "images/combo-box.png",
+  "images/combo-box-text.png",
+  "images/down-center.png",
+  "images/down-end.png",
+  "images/down-start.png",
+  "images/drop-down.png",
+  "images/drawing.png",
+  "images/drawingarea.png",
+  "images/ease-in-out.png",
+  "images/ease-in.png",
+  "images/ease-out.png",
+  "images/ease.png",
+  "images/editable-label.png",
+  "images/emojichooser.png",
+  "images/entry.png",
+  "images/exampleapp.png",
+  "images/expanders.png",
+  "images/expander.png",
+  "images/extensions.png",
+  "images/figure-hierarchical-drawing.png",
+  "images/figure-windowed-label.png",
+  "images/file-button.png",
+  "images/filechooser.png",
+  "images/flow-box.png",
+  "images/focus.png",
+  "images/font-button.png",
+  "images/fontchooser.png",
+  "images/frame-gap.png",
+  "images/frame.png",
+  "images/frames.png",
+  "images/gedit-shortcuts.png",
+  "images/getting-started-app10.png",
+  "images/getting-started-app1.png",
+  "images/getting-started-app2.png",
+  "images/getting-started-app3.png",
+  "images/getting-started-app4.png",
+  "images/getting-started-app6.png",
+  "images/getting-started-app7.png",
+  "images/getting-started-app8.png",
+  "images/getting-started-app9.png",
+  "images/glarea.png",
+  "images/gradient1.png",
+  "images/gradient2.png",
+  "images/gradient3.png",
+  "images/gradient4.png",
+  "images/grid.png",
+  "images/grid-packing.png",
+  "images/gtk-logo.png",
+  "images/gtk-logo.svg",
+  "images/handles.png",
+  "images/headerbar.png",
+  "images/hello-world.png",
+  "images/icon-view.png",
+  "images/image.png",
+  "images/info-bar.png",
+  "images/inspector.png",
+  "images/label.png",
+  "images/layout-btlr.png",
+  "images/layout-btrl.png",
+  "images/layout-lrbt.png",
+  "images/layout-lrtb.png",
+  "images/layout-rlbt.png",
+  "images/layout-rltb.png",
+  "images/layout-tblr.png",
+  "images/layout-tbrl.png",
+  "images/left-center.png",
+  "images/left-end.png",
+  "images/left-start.png",
+  "images/levelbar.png",
+  "images/linear.png",
+  "images/link-button.png",
+  "images/list-and-tree.png",
+  "images/list-box.png",
+  "images/lockbutton-locked.png",
+  "images/lock-button.png",
+  "images/lockbutton.png",
+  "images/lockbutton-sorry.png",
+  "images/lockbutton-unlocked.png",
+  "images/media-controls.png",
+  "images/menu.png",
+  "images/menubar.png",
+  "images/menu-button.png",
+  "images/messagedialog.png",
+  "images/multiline-text.png",
+  "images/notebook.png",
+  "images/options.png",
+  "images/overlay.png",
+  "images/pagesetupdialog.png",
+  "images/panes.png",
+  "images/password-entry.png",
+  "images/picture.png",
+  "images/popover.png",
+  "images/printdialog.png",
+  "images/progressbar.png",
+  "images/right-center.png",
+  "images/right-end.png",
+  "images/right-start.png",
+  "images/scales.png",
+  "images/scrollbar.png",
+  "images/scrolledwindow.png",
+  "images/search-bar.png",
+  "images/search-entry.png",
+  "images/separator.png",
+  "images/shortcuts-window.png",
+  "images/sidebar.png",
+  "images/slices.png",
+  "images/sliders.png",
+  "images/spinbutton.png",
+  "images/spinner.png",
+  "images/stack.png",
+  "images/stackswitcher.png",
+  "images/statusbar.png",
+  "images/switch.png",
+  "images/toggle-button.png",
+  "images/toolbar.png",
+  "images/tree-view-coordinates.png",
+  "images/up-center.png",
+  "images/up-end.png",
+  "images/up-start.png",
+  "images/video.png",
+  "images/volumebutton.png",
+  "images/widget-hvalign.png",
+  "images/windowcontrols.png",
+  "images/window-default.png",
+  "images/window.png",
+  "images/rich-list.png",
+  "images/data-table.png",
+  "images/navigation-sidebar.png",
+]
diff --git a/docs/reference/gtk/images/gtk-logo.png b/docs/reference/gtk/images/gtk-logo.png
new file mode 100644
index 0000000000..28e546b965
Binary files /dev/null and b/docs/reference/gtk/images/gtk-logo.png differ
diff --git a/docs/reference/gtk/images/gtk-logo.svg b/docs/reference/gtk/images/gtk-logo.svg
new file mode 100644
index 0000000000..9edbe2da97
--- /dev/null
+++ b/docs/reference/gtk/images/gtk-logo.svg
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="128"
+   height="128"
+   id="svg6843"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14"
+   version="1.0"
+   sodipodi:docname="gtk-logo.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/home/ebassi/Pictures/gtk-logo-256.png"
+   inkscape:export-xdpi="192"
+   inkscape:export-ydpi="192">
+  <defs
+     id="defs6845">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="-50 : 600 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="700 : 600 : 1"
+       inkscape:persp3d-origin="300 : 400 : 1"
+       id="perspective13" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.8284271"
+     inkscape:cx="69.874353"
+     inkscape:cy="64.313526"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     width="128px"
+     height="128px"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1016"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid7947" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata6848">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title />
+        <dc:date />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:rights>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:publisher>
+        <dc:identifier />
+        <dc:source />
+        <dc:relation />
+        <dc:language />
+        <dc:subject>
+          <rdf:Bag />
+        </dc:subject>
+        <dc:coverage />
+        <dc:description />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:contributor>
+        <cc:license
+           rdf:resource="" />
+      </cc:Work>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <path
+       sodipodi:nodetypes="ccccc"
+       id="path6976"
+       d="M 20.88413,30.82696 L 53.816977,55.527708 L 107.33282,39.060543 L 70.587303,17.177763 L 
20.88413,30.82696 z"
+       
style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.12364459;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
 />
+    <path
+       id="path6978"
+       d="M 22.94243,82.287118 L 20.88413,30.82696 L 53.816977,55.527708 L 53.816977,111.10486 L 
22.94243,82.287118 z"
+       
style="fill:#e40000;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.12364459;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
 />
+    <path
+       id="path6980"
+       d="M 53.816977,111.10486 L 103.21619,90.5207 L 107.33282,39.060543 L 53.816977,55.527708 L 
53.816977,111.10486 z"
+       
style="fill:#7fe719;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.12364459;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
 />
+    <path
+       sodipodi:nodetypes="ccc"
+       id="path6982"
+       d="M 23.216626,81.319479 L 70.48573,67.361442 L 103.38422,90.444516"
+       
style="opacity:1;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
 />
+    <path
+       sodipodi:nodetypes="cc"
+       id="path6984"
+       d="M 70.434539,17.875593 L 70.434539,66.984877"
+       
style="opacity:1;fill:#babdb6;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
 />
+  </g>
+</svg>
diff --git a/docs/reference/gtk/meson.build b/docs/reference/gtk/meson.build
index a2e28b586f..b50bec2c18 100644
--- a/docs/reference/gtk/meson.build
+++ b/docs/reference/gtk/meson.build
@@ -1,471 +1,4 @@
-fs = import('fs')
-
-private_headers = [
-  'gtkaccelgroupprivate.h',
-  'gtkaccelmapprivate.h',
-  'gtkaccessibleattributesetprivate.h',
-  'gtkaccessibleattributevalueprivate.h',
-  'gtkaccessibleprivate.h',
-  'gtkaccessiblevalueprivate.h',
-  'gtkactionhelperprivate.h',
-  'gtkactionmuxerprivate.h',
-  'gtkactionobservableprivate.h',
-  'gtkactionobserverprivate.h',
-  'gtkadjustmentprivate.h',
-  'gtkallocatedbitmaskprivate.h',
-  'gtkappchooserprivate.h',
-  'gtkapplicationaccelsprivate.h',
-  'gtkapplicationprivate.h',
-  'gtkatcontextprivate.h',
-  'gtkbindingsprivate.h',
-  'gtkbitmaskprivateimpl.h',
-  'gtkbitmaskprivate.h',
-  'gtkbuildableprivate.h',
-  'gtkbuilderprivate.h',
-  'gtkbuilderscopeprivate.h',
-  'gtkbuiltiniconprivate.h',
-  'gtkbuttonprivate.h',
-  'gtkcellareaboxcontextprivate.h',
-  'gtkcheckbuttonprivate.h',
-  'gtkcolorchooserprivate.h',
-  'gtkcoloreditorprivate.h',
-  'gtkcolorpickerkwinprivate.h',
-  'gtkcolorpickerportalprivate.h',
-  'gtkcolorpickerprivate.h',
-  'gtkcolorpickershellprivate.h',
-  'gtkcolorplaneprivate.h',
-  'gtkcolorscaleprivate.h',
-  'gtkcolorswatchprivate.h',
-  'gtkcolumnlistitemfactoryprivate.h',
-  'gtkcolumnviewcellprivate.h',
-  'gtkcolumnviewcolumnprivate.h',
-  'gtkcolumnviewlayoutprivate.h',
-  'gtkcolumnviewprivate.h',
-  'gtkcolumnviewsorterprivate.h',
-  'gtkcolumnviewtitleprivate.h',
-  'gtkcomboboxprivate.h',
-  'gtkcomposetable.h',
-  'gtkconstraintexpressionprivate.h',
-  'gtkconstraintguideprivate.h',
-  'gtkconstraintlayoutprivate.h',
-  'gtkconstraintprivate.h',
-  'gtkconstraintsolverprivate.h',
-  'gtkconstrainttypesprivate.h',
-  'gtkconstraintvflparserprivate.h',
-  'gtkcountingbloomfilterprivate.h',
-  'gtkcssanimatedstyleprivate.h',
-  'gtkcssanimationprivate.h',
-  'gtkcssarrayvalueprivate.h',
-  'gtkcssbgsizevalueprivate.h',
-  'gtkcssbordervalueprivate.h',
-  'gtkcssboxesimplprivate.h',
-  'gtkcssboxesprivate.h',
-  'gtkcsscalcvalueprivate.h',
-  'gtkcsscolorvalueprivate.h',
-  'gtkcsscornervalueprivate.h',
-  'gtkcssdataurlprivate.h',
-  'gtkcssdimensionvalueprivate.h',
-  'gtkcssdynamicprivate.h',
-  'gtkcsseasevalueprivate.h',
-  'gtkcssenumvalueprivate.h',
-  'gtkcssfiltervalueprivate.h',
-  'gtkcssfontfeaturesvalueprivate.h',
-  'gtkcssfontvariationsvalueprivate.h',
-  'gtkcssiconthemevalueprivate.h',
-  'gtkcssimageconicprivate.h',
-  'gtkcssimagecrossfadeprivate.h',
-  'gtkcssimagefallbackprivate.h',
-  'gtkcssimageiconthemeprivate.h',
-  'gtkcssimageinvalidprivate.h',
-  'gtkcssimagelinearprivate.h',
-  'gtkcssimagepaintableprivate.h',
-  'gtkcssimageprivate.h',
-  'gtkcssimageradialprivate.h',
-  'gtkcssimagerecolorprivate.h',
-  'gtkcssimagescaledprivate.h',
-  'gtkcssimageurlprivate.h',
-  'gtkcssimagevalueprivate.h',
-  'gtkcssimagewin32private.h',
-  'gtkcssinheritvalueprivate.h',
-  'gtkcssinitialvalueprivate.h',
-  'gtkcsskeyframesprivate.h',
-  'gtkcsslocationprivate.h',
-  'gtkcsslookupprivate.h',
-  'gtkcssmatcherprivate.h',
-  'gtkcssnodedeclarationprivate.h',
-  'gtkcssnodeprivate.h',
-  'gtkcssnodestylecacheprivate.h',
-  'gtkcssnumbervalueprivate.h',
-  'gtkcsspalettevalueprivate.h',
-  'gtkcssparserprivate.h',
-  'gtkcsspathnodeprivate.h',
-  'gtkcsspositionvalueprivate.h',
-  'gtkcssproviderprivate.h',
-  'gtkcssrepeatvalueprivate.h',
-  'gtkcssrgbavalueprivate.h',
-  'gtkcsssectionprivate.h',
-  'gtkcssselectorprivate.h',
-  'gtkcssserializerprivate.h',
-  'gtkcssshadowsvalueprivate.h',
-  'gtkcssshadowvalueprivate.h',
-  'gtkcssshorthandpropertyprivate.h',
-  'gtkcssstaticstyleprivate.h',
-  'gtkcssstringvalueprivate.h',
-  'gtkcssstylechangeprivate.h',
-  'gtkcssstyleprivate.h',
-  'gtkcssstylepropertyprivate.h',
-  'gtkcsstokenizerprivate.h',
-  'gtkcsstransformvalueprivate.h',
-  'gtkcsstransientnodeprivate.h',
-  'gtkcsstransitionprivate.h',
-  'gtkcsstypesprivate.h',
-  'gtkcssunsetvalueprivate.h',
-  'gtkcssvalueprivate.h',
-  'gtkcsswidgetnodeprivate.h',
-  'gtkcsswin32sizevalueprivate.h',
-  'gtkdialogprivate.h',
-  'gtkdragdestprivate.h',
-  'gtkdropprivate.h',
-  'gtkemojicompletion.h',
-  'gtkentryprivate.h',
-  'gtkeventcontrollerlegacyprivate.h',
-  'gtkeventcontrollerprivate.h',
-  'gtkfilechoosererrorstackprivate.h',
-  'gtkfilechoosernativeprivate.h',
-  'gtkfilechooserprivate.h',
-  'gtkfilechooserwidgetprivate.h',
-  'gtkfilefilterprivate.h',
-  'gtkflowboxprivate.h',
-  'gtkfontchooserprivate.h',
-  'gtkfontchooserwidgetprivate.h',
-  'gtkgesturedragprivate.h',
-  'gtkgesturelongpressprivate.h',
-  'gtkgesturemultipressprivate.h',
-  'gtkgesturepanprivate.h',
-  'gtkgestureprivate.h',
-  'gtkgesturerotateprivate.h',
-  'gtkgesturesingleprivate.h',
-  'gtkgesturestylusprivate.h',
-  'gtkgestureswipeprivate.h',
-  'gtkgesturezoomprivate.h',
-  'gtkgizmoprivate.h',
-  'gtkheaderbarprivate.h',
-  'gtkhslaprivate.h',
-  'gtkiconcacheprivate.h',
-  'gtkiconcachevalidatorprivate.h',
-  'gtkiconhelperprivate.h',
-  'gtkiconprivate.h',
-  'gtkiconthemeprivate.h',
-  'gtkiconviewprivate.h',
-  'gtkimagedefinitionprivate.h',
-  'gtkimageprivate.h',
-  'gtkimcontextbroadway.h',
-  'gtkimcontextime.h',
-  'gtkimcontextquartz.h',
-  'gtkimcontextsimpleprivate.h',
-  'gtkimcontextsimpleseqs.h',
-  'gtkimcontextwayland.h',
-  'gtkimmoduleprivate.h',
-  'gtkimmodule.h',
-  'gtkintl.h',
-  'gtkistringprivate.h',
-  'gtkkineticscrollingprivate.h',
-  'gtklabelprivate.h',
-  'gtklayoutmanagerprivate.h',
-  'gtklistbaseprivate.h',
-  'gtklistitemprivate.h',
-  'gtklistitemfactoryprivate.h',
-  'gtklistitemmanagerprivate.h',
-  'gtklistitemwidgetprivate.h',
-  'gtklistlistmodelprivate.h',
-  'gtklockbuttonprivate.h',
-  'gtkmagnifierprivate.h',
-  'gtkmediafileprivate.h',
-  'gtkmenubuttonprivate.h',
-  'gtkmenusectionboxprivate.h',
-  'gtkmenutrackeritemprivate.h',
-  'gtkmenutrackerprivate.h',
-  'gtkmodelbuttonprivate.h',
-  'gtkmodulesprivate.h',
-  'gtkmountoperationprivate.h',
-  'gtknativedialogprivate.h',
-  'gtknativeprivate.h',
-  'gtknomediafileprivate.h',
-  'gtkpango.h',
-  'gtkpasswordentrybufferprivate.h',
-  'gtkpasswordentryprivate.h',
-  'gtkpathbar.h',
-  'gdkpixbufutilsprivate.h',
-  'gtkplacessidebarprivate.h',
-  'gtkplacesviewprivate.h',
-  'gtkplacesviewrowprivate.h',
-  'gtkpointerfocusprivate.h',
-  'gtkpopcountprivate.h',
-  'gtkpopovermenubarprivate.h',
-  'gtkpopovermenuprivate.h',
-  'gtkpopoverprivate.h',
-  'gtkprintbackendprivate.h',
-  'gtkprinterprivate.h',
-  'gtkprintoperation-portal.h',
-  'gtkprintoperation-private.h',
-  'gtkprintutils.h',
-  'gtkprivate.h',
-  'gtkprogresstrackerprivate.h',
-  'gtkpropertylookuplistmodelprivate.h',
-  'gtkquery.h',
-  'gtkrangeprivate.h',
-  'gtkrbtreeprivate.h',
-  'gtkrenderbackgroundprivate.h',
-  'gtkrenderborderprivate.h',
-  'gtkrendericonprivate.h',
-  'gtkrendernodepaintableprivate.h',
-  'gtkrootprivate.h',
-  'gtkroundedboxprivate.h',
-  'gtkscalerprivate.h',
-  'gtksearchengine.h',
-  'gtksearchenginemodel.h',
-  'gtksearchenginequartz.h',
-  'gtksearchenginetracker3.h',
-  'gtksearchentryprivate.h',
-  'gtksecurememoryprivate.h',
-  'gtksettingsprivate.h',
-  'gtkshortcutactionprivate.h',
-  'gtkshortcutcontrollerprivate.h',
-  'gtkshortcutmanagerprivate.h',
-  'gtkshortcutsshortcutprivate.h',
-  'gtkshortcutswindowprivate.h',
-  'gtksidebarrowprivate.h',
-  'gtksizegroup-private.h',
-  'gtksizerequestcacheprivate.h',
-  'gtksnapshotprivate.h',
-  'gtksorterprivate.h',
-  'gtksortkeysprivate.h',
-  'gtkspinbuttonprivate.h',
-  'gtkstyleanimationprivate.h',
-  'gtkstylecascadeprivate.h',
-  'gtkstylecontextprivate.h',
-  'gtkstylepropertyprivate.h',
-  'gtkstyleproviderprivate.h',
-  'gtktestatcontextprivate.h',
-  'gtktextattributes.h',
-  'gtktextbufferprivate.h',
-  'gtktextchildprivate.h',
-  'gtktextdisplayprivate.h',
-  'gtktexthandleprivate.h',
-  'gtktexthistoryprivate.h',
-  'gtktextiterprivate.h',
-  'gtktextlayoutprivate.h',
-  'gtktextlinedisplaycacheprivate.h',
-  'gtktextmarkprivate.h',
-  'gtktextprivate.h',
-  'gtktextsegment.h',
-  'gtktexttagprivate.h',
-  'gtktextutil.h',
-  'gtktextviewchildprivate.h',
-  'gtktextviewprivate.h',
-  'gtktogglebuttonprivate.h',
-  'gtktoolbarprivate.h',
-  'gtktooltipprivate.h',
-  'gtktooltipwindowprivate.h',
-  'gtktreedatalist.h',
-  'gtktreepopoverprivate.h',
-  'gtktreeprivate.h',
-  'gtktreerbtreeprivate.h',
-  'gtkutilsprivate.h',
-  'gtkwidgetpaintableprivate.h',
-  'gtkwidgetpathprivate.h',
-  'gtkwidgetprivate.h',
-  'gtkwin32drawprivate.h',
-  'gtkwin32themeprivate.h',
-  'gtkwindowprivate.h',
-
-  'gsettings-mapping.h',
-  'gskpango.h',
-  'gtkdbusgenerated.h',
-  'imm-extra.h',
-  'language-names.h',
-  'open-type-layout.h',
-  'script-names.h',
-  'text-input-unstable-v3-client-protocol.h',
-
-  'a11y',
-  'inspector',
-  'roaring',
-  'timsort',
-  'tools',
-]
-
-images = [
-  'images/aboutdialog.png',
-  'images/action-bar.png',
-  'images/appchooserbutton.png',
-  'images/appchooserdialog.png',
-  'images/arrows.png',
-  'images/assistant.png',
-  'images/background.png',
-  'images/bloatpad-gnome.png',
-  'images/bloatpad-osx.png',
-  'images/bloatpad-xfce.png',
-  'images/border1.png',
-  'images/border2.png',
-  'images/border3.png',
-  'images/box.png',
-  'images/box-expand.png',
-  'images/box-packing.png',
-  'images/builder-shortcuts.png',
-  'images/button.png',
-  'images/calendar.png',
-  'images/capture-bubble.png',
-  'images/centerbox.png',
-  'images/check-button.png',
-  'images/checks.png',
-  'images/clocks-shortcuts.png',
-  'images/color-button.png',
-  'images/colorchooser.png',
-  'images/combo-box-entry.png',
-  'images/combo-box.png',
-  'images/combo-box-text.png',
-  'images/down-center.png',
-  'images/down-end.png',
-  'images/down-start.png',
-  'images/drop-down.png',
-  'images/drawing.png',
-  'images/drawingarea.png',
-  'images/ease-in-out.png',
-  'images/ease-in.png',
-  'images/ease-out.png',
-  'images/ease.png',
-  'images/editable-label.png',
-  'images/emojichooser.png',
-  'images/entry.png',
-  'images/exampleapp.png',
-  'images/expanders.png',
-  'images/expander.png',
-  'images/extensions.png',
-  'images/figure-hierarchical-drawing.png',
-  'images/figure-windowed-label.png',
-  'images/file-button.png',
-  'images/filechooser.png',
-  'images/flow-box.png',
-  'images/focus.png',
-  'images/font-button.png',
-  'images/fontchooser.png',
-  'images/frame-gap.png',
-  'images/frame.png',
-  'images/frames.png',
-  'images/gedit-shortcuts.png',
-  'images/getting-started-app10.png',
-  'images/getting-started-app1.png',
-  'images/getting-started-app2.png',
-  'images/getting-started-app3.png',
-  'images/getting-started-app4.png',
-  'images/getting-started-app6.png',
-  'images/getting-started-app7.png',
-  'images/getting-started-app8.png',
-  'images/getting-started-app9.png',
-  'images/glarea.png',
-  'images/gradient1.png',
-  'images/gradient2.png',
-  'images/gradient3.png',
-  'images/gradient4.png',
-  'images/grid.png',
-  'images/grid-packing.png',
-  'images/handles.png',
-  'images/headerbar.png',
-  'images/hello-world.png',
-  'images/icon-view.png',
-  'images/image.png',
-  'images/info-bar.png',
-  'images/inspector.png',
-  'images/label.png',
-  'images/layout-btlr.png',
-  'images/layout-btrl.png',
-  'images/layout-lrbt.png',
-  'images/layout-lrtb.png',
-  'images/layout-rlbt.png',
-  'images/layout-rltb.png',
-  'images/layout-tblr.png',
-  'images/layout-tbrl.png',
-  'images/left-center.png',
-  'images/left-end.png',
-  'images/left-start.png',
-  'images/levelbar.png',
-  'images/linear.png',
-  'images/link-button.png',
-  'images/list-and-tree.png',
-  'images/list-box.png',
-  'images/lockbutton-locked.png',
-  'images/lock-button.png',
-  'images/lockbutton.png',
-  'images/lockbutton-sorry.png',
-  'images/lockbutton-unlocked.png',
-  'images/media-controls.png',
-  'images/menu.png',
-  'images/menubar.png',
-  'images/menu-button.png',
-  'images/messagedialog.png',
-  'images/multiline-text.png',
-  'images/notebook.png',
-  'images/options.png',
-  'images/overlay.png',
-  'images/pagesetupdialog.png',
-  'images/panes.png',
-  'images/password-entry.png',
-  'images/picture.png',
-  'images/popover.png',
-  'images/printdialog.png',
-  'images/progressbar.png',
-  'images/right-center.png',
-  'images/right-end.png',
-  'images/right-start.png',
-  'images/scales.png',
-  'images/scrollbar.png',
-  'images/scrolledwindow.png',
-  'images/search-bar.png',
-  'images/search-entry.png',
-  'images/separator.png',
-  'images/shortcuts-window.png',
-  'images/sidebar.png',
-  'images/slices.png',
-  'images/sliders.png',
-  'images/spinbutton.png',
-  'images/spinner.png',
-  'images/stack.png',
-  'images/stackswitcher.png',
-  'images/statusbar.png',
-  'images/switch.png',
-  'images/toggle-button.png',
-  'images/toolbar.png',
-  'images/tree-view-coordinates.png',
-  'images/up-center.png',
-  'images/up-end.png',
-  'images/up-start.png',
-  'images/video.png',
-  'images/volumebutton.png',
-  'images/widget-hvalign.png',
-  'images/windowcontrols.png',
-  'images/window-default.png',
-  'images/window.png',
-  'images/rich-list.png',
-  'images/data-table.png',
-  'images/navigation-sidebar.png'
-]
-
-content_files = [
-  'gtk4-broadwayd.xml',
-  'gtk4-builder-tool.xml',
-  'gtk4-demo-application.xml',
-  'gtk4-demo.xml',
-  'gtk4-encode-symbolic-svg.xml',
-  'gtk4-icon-browser.xml',
-  'gtk4-launch.xml',
-  'gtk4-query-settings.xml',
-  'gtk4-update-icon-cache.xml',
-  'gtk4-widget-factory.xml',
-  'overview.xml',
-  'visual_index.xml',
-]
-
+# XXX: gi-docgen needs a deps file
 expand_content_md_files = [
   'broadway.md',
   'osx.md',
@@ -491,67 +24,25 @@ expand_content_md_files = [
   'question_index.md',
 ]
 
-types_conf = configuration_data()
-if os_win32
-  types_conf.set('DISABLE_ON_W32', '%')
-else
-  types_conf.set('DISABLE_ON_W32', '')
-endif
-
-if os_darwin
-  types_conf.set('DISABLE_ON_QUARTZ', '%')
-else
-  types_conf.set('DISABLE_ON_QUARTZ', '')
-endif
+gtk4_toml = configure_file(input: 'gtk4.toml.in', output: 'gtk4.toml', configuration: toml_conf)
 
 if get_option('gtk_doc')
-  configure_file(input: 'version.xml.in', output: 'version.xml', configuration: version_conf)
-
-  # gtk-markdown-to-docbook uses pandoc
-  pandoc = find_program('pandoc', required: true)
-  expand_md = find_program('gtk-markdown-to-docbook')
-  expand_md_targets = []
-  foreach t : expand_content_md_files
-    expand_md_targets += custom_target(t,
-      input: [ t ],
-      output: [ fs.replace_suffix(t, '.xml') ],
-      command: [ expand_md, '@INPUT@', '@OUTPUT@'],
-    )
-  endforeach
-
-  gnome.gtkdoc('gtk4',
-    mode: 'none',
-    main_xml: 'gtk4-docs.xml',
-    src_dir: [
-      gtkinc,
-    ],
-    dependencies: libgtk_dep,
-    gobject_typesfile: configure_file(
-      input: 'gtk4.types.in',
-      output: 'gtk4.types',
-      configuration: types_conf,
-    ),
-    scan_args: [
-      '--ignore-decorators=_GDK_EXTERN|G_GNUC_WARN_UNUSED_RESULT',
-      '--ignore-headers=' + ' '.join(private_headers),
-    ],
-    mkdb_args: [
-      '--default-includes=gtk/gtk.h',
-      '--ignore-files=' + ' '.join(private_headers),
-    ],
-    fixxref_args: [
-      '--html-dir=@0@'.format(docpath),
-      '--extra-dir=@0@'.format(join_paths(glib_docpath, 'glib')),
-      '--extra-dir=@0@'.format(join_paths(glib_docpath, 'gobject')),
-      '--extra-dir=@0@'.format(join_paths(glib_docpath, 'gio')),
-      '--extra-dir=@0@'.format(cairo_docpath),
-      '--extra-dir=@0@'.format(gdkpixbuf_docpath),
-      '--extra-dir=../gdk',
-      '--extra-dir=../gsk',
+  custom_target('gtk4-doc',
+    input: [ gtk4_toml, gtk_gir[0] ],
+    output: 'gtk4',
+    command: [
+      gidocgen,
+      'generate',
+      '--add-include-path=@0@'.format(meson.current_build_dir() / '../../../gtk'),
+      '--config=@INPUT0@',
+      '--output-dir=@OUTPUT@',
+      '--no-namespace-dir',
+      '--content-dir=@0@'.format(meson.current_source_dir()),
+      '@INPUT1@',
     ],
-    content_files: content_files + expand_md_targets,
-    html_assets: images,
-    install: true,
+    depends: [ gdk_gir[0], gsk_gir[0] ],
+    depend_files: [ expand_content_md_files ],
+    build_by_default: true,
   )
 endif
 
diff --git a/docs/reference/meson.build b/docs/reference/meson.build
index 4536addda4..24d0daadb1 100644
--- a/docs/reference/meson.build
+++ b/docs/reference/meson.build
@@ -17,6 +17,11 @@ if get_option('gtk_doc')
   src_dir_conf.set('SRC_DIR', meson.source_root())
 endif
 
+toml_conf = configuration_data()
+toml_conf.set('version', meson.project_version())
+
+gidocgen = find_program('gi-docgen', required: get_option('gtk_doc'))
+
 subdir('gdk')
 subdir('gsk')
 subdir('gtk')
diff --git a/meson.build b/meson.build
index 145a848a86..e2342d627c 100644
--- a/meson.build
+++ b/meson.build
@@ -395,10 +395,9 @@ graphene_dep   = dependency('graphene-gobject-1.0', version: graphene_req,
                             fallback: ['graphene', 'graphene_dep'])
 iso_codes_dep  = dependency('iso-codes', required: false)
 
-gtk_doc_dep    = dependency('gtk-doc', version: '>=1.33',
-                            fallback: ['gtk-doc', 'dummy_dep'],
-                            default_options: ['tests=false', 'yelp_manual=false'],
-                            required: get_option('gtk_doc'))
+gidocgen_dep    = dependency('gi-docgen', version: '>= 2021.1',
+                             fallback: ['gi-docgen', 'dummy_dep'],
+                             required: get_option('gtk_doc'))
 
 fontconfig_dep = [] # only used in x11 backend
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]