private_headers = [
  'inspector',
  'a11y',
  'gtkaccelgroupprivate.h',
  'gtkaccelmapprivate.h',
  'gtkadjustmentprivate.h',
  'gtkallocatedbitmaskprivate.h',
  'gtkappchooserprivate.h',
  'gtkapplicationaccelsprivate.h',
  'gtkapplicationprivate.h',
  'gtkbindingsprivate.h',
  'gtkbitmaskprivate.h',
  'gtkboxprivate.h',
  'gtkbuilderprivate.h',
  'gtkbuttonprivate.h',
  'gtkcairoblurprivate.h',
  'gtkcellareaboxcontextprivate.h',
  'gtkclipboardprivate.h',
  'gtkcolorchooserprivate.h',
  'gtkcoloreditorprivate.h',
  'gtkcolorplaneprivate.h',
  'gtkcolorscaleprivate.h',
  'gtkcolorswatchprivate.h',
  'gtkcomboboxprivate.h',
  'gtkcontainerprivate.h',
  'gtkcssanimatedstyleprivate.h',
  'gtkcssanimationprivate.h',
  'gtkcssarrayvalueprivate.h',
  'gtkcssbgsizevalueprivate.h',
  'gtkcssbordervalueprivate.h',
  'gtkcsscolorvalueprivate.h',
  'gtkcsscornervalueprivate.h',
  'gtkcsscustompropertyprivate.h',
  'gtkcsseasevalueprivate.h',
  'gtkcssenginevalueprivate.h',
  'gtkcssenumvalueprivate.h',
  'gtkcssiconthemevalueprivate.h',
  'gtkcssimagebuiltinprivate.h',
  'gtkcssimagecrossfadeprivate.h',
  'gtkcssimagegradientprivate.h',
  'gtkcssimageiconthemeprivate.h',
  'gtkcssimagelinearprivate.h',
  'gtkcssimageprivate.h',
  'gtkcssimagescaledprivate.h',
  'gtkcssimagesurfaceprivate.h',
  'gtkcssimageurlprivate.h',
  'gtkcssimagevalueprivate.h',
  'gtkcssimagewin32private.h',
  'gtkcssinheritvalueprivate.h',
  'gtkcssinitialvalueprivate.h',
  'gtkcsskeyframesprivate.h',
  'gtkcsslookupprivate.h',
  'gtkcssmatcherprivate.h',
  'gtkcssnodeprivate.h',
  'gtkcssnodedeclarationprivate.h',
  'gtkcssnumbervalueprivate.h',
  'gtkcsspathnodeprivate.h',
  'gtkcssparserprivate.h',
  'gtkcsspositionvalueprivate.h',
  'gtkcssproviderprivate.h',
  'gtkcssrepeatvalueprivate.h',
  'gtkcssrgbavalueprivate.h',
  'gtkcsssectionprivate.h',
  'gtkcssselectorprivate.h',
  'gtkcssshadowsvalueprivate.h',
  'gtkcssshadowvalueprivate.h',
  'gtkcssshorthandpropertyprivate.h',
  'gtkcssstaticstyleprivate.h',
  'gtkcssstringvalueprivate.h',
  'gtkcssstylefuncsprivate.h',
  'gtkcssstyleprivate.h',
  'gtkcssstylepropertyprivate.h',
  'gtkcsstransformvalueprivate.h',
  'gtkcsstransientnodeprivate.h',
  'gtkcsstransitionprivate.h',
  'gtkcsstypedvalueprivate.h',
  'gtkcsstypesprivate.h',
  'gtkcssunsetvalueprivate.h',
  'gtkcssvalueprivate.h',
  'gtkcsswidgetnodeprivate.h',
  'gtkdialogprivate.h',
  'gtkentryprivate.h',
  'gtkeventcontrollerprivate.h',
  'gtkfilechooserprivate.h',
  'gtkfilechooserwidgetprivate.h',
  'gtkfontchooserprivate.h',
  'gtkgesturedragprivate.h',
  'gtkgesturelongpressprivate.h',
  'gtkgesturemultipressprivate.h',
  'gtkgesturepanprivate.h',
  'gtkgestureprivate.h',
  'gtkgesturerotateprivate.h',
  'gtkgesturesingleprivate.h',
  'gtkgestureswipeprivate.h',
  'gtkgesturezoomprivate.h',
  'gtkheaderbarprivate.h',
  'gtkhslaprivate.h',
  'gtkiconhelperprivate.h',
  'gtkiconviewprivate.h',
  'gtkimageprivate.h',
  'gtkimmoduleprivate.h',
  'gtklabelprivate.h',
  'gtklockbuttonprivate.h',
  'gtkmagnifierprivate.h',
  'gtkmenubuttonprivate.h',
  'gtkmenuitemprivate.h',
  'gtkmenuprivate.h',
  'gtkmenushellprivate.h',
  'gtkmodulesprivate.h',
  'gtkmountoperationprivate.h',
  'gtkorientableprivate.h',
  'gtkpixelcacheprivate.h',
  'gtkplacessidebarprivate.h',
  'gtkplacesviewprivate.h',
  'gtkplacesviewrowprivate.h',
  'gtkpopoverprivate.h',
  'gtkprinter-private.h',
  'gtkprintoperation-private.h',
  'gtkprivate.h',
  'gtkrangeprivate.h',
  'gtkrecentchooserprivate.h',
  'gtkrenderbackgroundprivate.h',
  'gtkrenderborderprivate.h',
  'gtkrendericonprivate.h',
  'gtkrenderprivate.h',
  'gtkroundedboxprivate.h',
  'gtkscaleprivate.h',
  'gtksearchengine.h',
  'gtksearchenginemodel.h',
  'gtksearchenginequartz.h',
  'gtksearchenginesimple.h',
  'gtksearchentryprivate.h',
  'gtkselectionprivate.h',
  'gtksettingsprivate.h',
  'gtksidebarrowprivate.h',
  'gtksizegroup-private.h',
  'gtksizerequestcacheprivate.h',
  'gtksocketprivate.h',
  'gtkstyleanimationprivate.h',
  'gtkstylecascadeprivate.h',
  'gtkstylecontextprivate.h',
  'gtkstylepropertyprivate.h',
  'gtkstyleproviderprivate.h',
  'gtktextattributesprivate.h',
  'gtktextchildprivate.h',
  'gtktexthandleprivate.h',
  'gtktextiterprivate.h',
  'gtktextmarkprivate.h',
  'gtktexttagprivate.h',
  'gtktogglebuttonprivate.h',
  'gtktoolbarprivate.h',
  'gtktoolpaletteprivate.h',
  'gtktooltipprivate.h',
  'gtktooltipwindowprivate.h',
  'gtktreeprivate.h',
  'gtkwidgetprivate.h',
  'gtkwin32themeprivate.h',
  'gtkwindowprivate.h',
  'fnmatch.h',
  'gtkactionmuxer.h',
  'gtkactionobserver.h',
  'gtkactionobservable.h',
  'gtk9slice.h',
  'gtkanimationdescription.h',
  'gtkbitmaskprivateimpl.h',
  'gtkbookmarksmanager.h',
  'gtkdbusgenerated.c',
  'gtkdbusgenerated.h',
  'gtkdebug.h',
  'gtkactionhelper.h',
  'gtkdndcursors.h',
  'gtkfilechooserdefault.h',
  'gtkfilechooserembed.h',
  'gtkfilechooserentry.h',
  'gtkfilechoosersettings.h',
  'gtkfilechooserutils.h',
  'gtkfilesystem.h',
  'gtkfilesystemmodel.h',
  'gtkfilesystemunix.h',
  'gtkfilesystemwin32.h',
  'gtkfontchooserutils.h',
  'gtkiconcache.h',
  'gtkiconcachevalidator.h',
  'gtkiconthemeparser.h',
  'gtkintl.h',
  'gtkkeyhash.h',
  'gtkkineticscrolling.h',
  'gtkmarshal.h',
  'gtkmnemonichash.h',
  'gtkmenutracker.h',
  'gtkmenutrackeritem.h',
  'gtkmenusectionbox.h',
  'gtkmodelmenu.h',
  'gtkmodelmenuitem.h',
  'gtkmodifierstyle.h',
  'gtkpathbar.h',
  'gtkprintbackend.h',
  'gtkprinteroption.h',
  'gtkprinteroptionset.h',
  'gtkprinteroptionwidget.h',
  'gtkprint-win32.h',
  'gtkprintutils.h',
  'gtkprivate.h',
  'gtkprivatetypebuiltins.h',
  'gtkquery.h',
  'gtkrbtree.h',
  'gtkrecentchooserdefault.h',
  'gtkrecentchooserutils.h',
  'gtksearchengine.h',
  'gtksearchenginesimple.h',
  'gtksearchenginequartz.h',
  'gtksequence.h',
  'gtksocketprivate.h',
  'gtktextbtree.h',
  'gtktextbufferserialize.h',
  'gtktextdisplay.h',
  'gtktextlayout.h',
  'gtktextsegment.h',
  'gtktexttypes.h',
  'gtktextutil.h',
  'gtktimeline.h',
  'gtkthemes.h',
  'gtktrashmonitor.h',
  'gtktrayicon.h',
  'gtktreedatalist.h',
  'gtktreemenu.h',
  'gtktypebuiltins.h',
  'gtkxembed.h',
  'gtkwin32embed.h',
  'gtkwin32embedwidget.h',
  'gtkwindow-decorate.h',
  'xdgmime',
  'xembed.h',
]

images = [
  'images/aboutdialog.png',
  'images/accel-label.png',
  'images/action-bar.png',
  'images/appchooserbutton.png',
  'images/appchooserdialog.png',
  'images/assistant.png',
  'images/box-packing.png',
  'images/box-expand.png',
  'images/button.png',
  'images/check-button.png',
  'images/color-button.png',
  'images/colorchooser.png',
  'images/combo-box.png',
  'images/combo-box-entry.png',
  'images/combo-box-text.png',
  'images/entry.png',
  'images/figure-hierarchical-drawing.png',
  'images/figure-windowed-label.png',
  'images/file-button.png',
  'images/filechooser.png',
  'images/font-button.png',
  'images/fontchooser.png',
  'images/frame.png',
  'images/glarea.png',
  'images/headerbar.png',
  'images/icon-view.png',
  'images/image.png',
  'images/info-bar.png',
  'images/label.png',
  'images/levelbar.png',
  'images/link-button.png',
  'images/list-and-tree.png',
  'images/lock-button.png',
  'images/lockbutton.png',
  'images/lockbutton-locked.png',
  'images/lockbutton-unlocked.png',
  'images/lockbutton-sorry.png',
  'images/menubar.png',
  'images/menu-button.png',
  'images/messagedialog.png',
  'images/multiline-text.png',
  'images/notebook.png',
  'images/panes.png',
  'images/pagesetupdialog.png',
  'images/placessidebar.png',
  'images/popup-anchors.png',
  'images/popup-flip.png',
  'images/popup-slide.png',
  'images/printdialog.png',
  'images/progressbar.png',
  'images/radio-group.png',
  'images/recentchooserdialog.png',
  'images/scales.png',
  'images/scrollbar.png',
  'images/scrolledwindow.png',
  'images/search-bar.png',
  'images/search-entry.png',
  'images/separator.png',
  'images/sidebar.png',
  'images/spinbutton.png',
  'images/spinner.png',
  'images/stack.png',
  'images/stackswitcher.png',
  'images/statusbar.png',
  'images/toggle-button.png',
  'images/toolbar.png',
  'images/toolpalette.png',
  'images/tree-view-coordinates.png',
  'images/volumebutton.png',
  'images/window.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/widget-hvalign.png',
  'images/window-default.png',
  'images/hello-world.png',
  'images/grid-packing.png',
  'images/drawing.png',
  'images/switch.png',
  'images/linear.png',
  'images/ease.png',
  'images/ease-in-out.png',
  'images/ease-in.png',
  'images/ease-out.png',
  'images/gradient1.png',
  'images/gradient2.png',
  'images/gradient3.png',
  'images/gradient4.png',
  'images/border1.png',
  'images/border2.png',
  'images/border3.png',
  'images/slices.png',
  'images/checks.png',
  'images/options.png',
  'images/arrows.png',
  'images/expanders.png',
  'images/background.png',
  'images/frames.png',
  'images/frame-gap.png',
  'images/sliders.png',
  'images/focus.png',
  'images/handles.png',
  'images/extensions.png',
  'images/numerableicon.png',
  'images/numerableicon2.png',
  'images/bloatpad-osx.png',
  'images/bloatpad-gnome.png',
  'images/bloatpad-xfce.png',
  'images/down-center.png',
  'images/down-end.png',
  'images/down-start.png',
  'images/left-center.png',
  'images/left-end.png',
  'images/left-start.png',
  'images/right-center.png',
  'images/right-end.png',
  'images/right-start.png',
  'images/up-center.png',
  'images/up-end.png',
  'images/up-start.png',
  'images/list-box.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/getting-started-app10.png',
  'images/exampleapp.png',
  'images/flow-box.png',
  'images/inspector.png',
  'images/gedit-shortcuts.png',
  'images/clocks-shortcuts.png',
  'images/builder-shortcuts.png',
]

content_files = [
  'broadway.xml',
  'broadwayd.xml',
  'building.sgml',
  'css-overview.xml',
  'css-properties.xml',
  'gtk3-demo-application.xml',
  'gtk3-demo.xml',
  'gtk3-icon-browser.xml',
  'gtk3-widget-factory.xml',
  'gtk-builder-tool.xml',
  'gtk-encode-symbolic-svg.xml',
  'gtk-launch.xml',
  'gtk-query-immodules-3.0.xml',
  'gtk-query-settings.xml',
  'gtk-update-icon-cache.xml',
  'osx.sgml',
  'overview.xml',
  'resources.sgml',
  'running.sgml',
  'visual_index.xml',
  'wayland.xml',
  'windows.sgml',
  'x11.sgml',
]

expand_content_files = [
  'compiling.sgml',
  'drawing-model.xml',
  join_paths(meson.current_build_dir(), 'getting_started.xml'),
  'glossary.xml',
  'input-handling.xml',
  'migrating-2to3.xml',
  'migrating-3xtoy.xml',
  'migrating-checklist.sgml',
  'migrating-GtkGrid.xml',
  'migrating-GtkStyleContext.xml',
  'migrating-smclient-GtkApplication.xml',
  'migrating-unique-GtkApplication.xml',
  'question_index.sgml',
  'text_widget.sgml',
  'tree_widget.sgml',
]

content_files += expand_content_files

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

if x11_enabled
  types_conf.set('ENABLE_ON_X11', '')
else
  types_conf.set('ENABLE_ON_X11', '%')
endif

if get_option('gtk_doc')

    configure_file(input: 'version.xml.in', output: 'version.xml', configuration: version_conf)
    configure_file(input: 'getting_started.xml.in', output: 'getting_started.xml', configuration: src_dir_conf)

    gnome.gtkdoc('gtk3',
                 mode: 'none',
                 main_xml: 'gtk-docs.sgml',
                 src_dir: [
                   gtkinc,
                ],
                 dependencies: libgtk_dep,
                 gobject_typesfile: configure_file(
                   input: 'gtk3.types.in',
                   output: 'gtk3.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',
                 ],
                 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',
                 ],
                 content_files: content_files,
                 expand_content_files: expand_content_files,
                 html_assets: images,
                 install: true)
endif

xsltproc = find_program('xsltproc', required: false)
if get_option('man') and not xsltproc.found()
  error('No xsltproc found, but man pages were explicitly enabled')
endif

if get_option('man') and xsltproc.found()
  xlstproc_flags = [
    '--nonet',
    '--stringparam', 'man.output.quietly', '1',
    '--stringparam', 'funcsynopsis.style', 'ansi',
    '--stringparam', 'man.th.extra1.suppress', '1',
    '--stringparam', 'man.authors.section.enabled', '0',
    '--stringparam', 'man.copyright.section.enabled', '0',
  ]

  man_files = [
    [ 'gtk-query-immodules-3.0', '1', ],
    [ 'gtk-update-icon-cache', '1', ],
    [ 'gtk-encode-symbolic-svg', '1', ],
    [ 'gtk-launch', '1', ],
    [ 'gtk-builder-tool', '1', ],
    [ 'gtk-query-settings', '1', ],
  ]

  if get_option('demos')
    man_files += [
      [ 'gtk3-demo', '1', ],
      [ 'gtk3-demo-application', '1', ],
      [ 'gtk3-widget-factory', '1', ],
      [ 'gtk3-icon-browser', '1', ],
    ]
  endif

  if broadway_enabled
    man_files += [[ 'broadwayd', '1', ]]
  endif

  foreach man: man_files
    man_name = man.get(0)
    man_section = man.get(1, '1')
    custom_target('@0@.@1@'.format(man_name, man_section),
                  input: '@0@.xml'.format(man_name),
                  output: '@0@.@1@'.format(man_name, man_section),
                  command: [
                    xsltproc,
                    xlstproc_flags,
                    '-o', '@OUTPUT@',
                    'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl',
                    '@INPUT@',
                  ],
                  install: true,
                  install_dir: join_paths(get_option('mandir'), 'man@0@'.format(man_section)))
  endforeach
endif
