gnucash-docs master: Multiple changes pushed

John Ralls jralls at code.gnucash.org
Sun Sep 8 15:32:56 EDT 2019


Updated	 via  https://github.com/Gnucash/gnucash-docs/commit/c52384e7 (commit)
	 via  https://github.com/Gnucash/gnucash-docs/commit/73beb776 (commit)
	 via  https://github.com/Gnucash/gnucash-docs/commit/b7619e03 (commit)
	 via  https://github.com/Gnucash/gnucash-docs/commit/9f9e20f6 (commit)
	 via  https://github.com/Gnucash/gnucash-docs/commit/67f0c717 (commit)
	 via  https://github.com/Gnucash/gnucash-docs/commit/12ff0d04 (commit)
	 via  https://github.com/Gnucash/gnucash-docs/commit/50a06ccd (commit)
	 via  https://github.com/Gnucash/gnucash-docs/commit/9899639b (commit)
	 via  https://github.com/Gnucash/gnucash-docs/commit/ac183ad9 (commit)
	 via  https://github.com/Gnucash/gnucash-docs/commit/ee29380c (commit)
	 via  https://github.com/Gnucash/gnucash-docs/commit/715f7fa0 (commit)
	 via  https://github.com/Gnucash/gnucash-docs/commit/8cec38d5 (commit)
	 via  https://github.com/Gnucash/gnucash-docs/commit/2c6180f5 (commit)
	from  https://github.com/Gnucash/gnucash-docs/commit/c1ae6d7b (commit)



commit c52384e78dc4f7b471129c7c27cf18c18e6fcb36
Merge: c1ae6d7 73beb77
Author: John Ralls <jralls at ceridwen.us>
Date:   Sun Sep 8 12:32:38 2019 -0700

    Merge branch 'maint'


commit 73beb776ae77e5354f9602dda8921d15181ff75c
Author: John Ralls <jralls at ceridwen.us>
Date:   Sun Sep 8 12:31:20 2019 -0700

    Fix the cmake dist dependencies in the autotools build.

diff --git a/Makefile.am b/Makefile.am
index aee79df..b40a831 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -12,13 +12,17 @@ EXTRA_DIST = COPYING-DOCS \
 	     xsl \
 	     HACKING \
 	     README \
-	     cmake/dist.cmake \
-	     cmake/epub.cmake \
-	     cmake/gnc_doc_targets.cmake \
-	     cmake/MakeDistCheck.cmake \
-	     cmake/MakeDist.cmake \
-	     cmake/pdf.cmake \
-	     cmake/xmldocs.cmake \
+	     cmake/AddChmTarget.cmake \
+	     cmake/AddEpubTarget.cmake
+	     cmake/AddGHelpTarget.cmake
+	     cmake/AddGncDocTargets.cmake
+	     cmake/AddHtmlTarget.cmake
+	     cmake/AddPdfTarget.cmake
+	     cmake/cmake_uninstall.cmake.in
+	     cmake/DistCommon.cmake
+	     cmake/MakeChm.cmake
+	     cmake/MakeDistCheck.cmake
+	     cmake/MakeDist.cmake
 	     fonts/gothic.xml \
 	     fonts/mincho.xml \
 	     fonts/truetype/ume-tgo4.ttf \

commit b7619e039ad2a0f0dda0ece81294b1cae08582f7
Author: John Ralls <jralls at ceridwen.us>
Date:   Sat Sep 7 17:35:31 2019 -0700

    Release Documentation for GnuCash 3.7.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1df8f7b..de17a57 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,13 +6,13 @@ project (gnucash-docs)
 
 # Version number of gnucash
 set (GNUCASH_MAJOR_VERSION 3)
-set (GNUCASH_MINOR_VERSION 6)
+set (GNUCASH_MINOR_VERSION 7)
 set (VERSION "${GNUCASH_MAJOR_VERSION}.${GNUCASH_MINOR_VERSION}")
 set (GNUCASH_LATEST_STABLE_SERIES 3.x)
 
 set (PACKAGE gnucash-docs)
 set (PACKAGE_NAME GnuCash Docs)
-set (PACKAGE_VERSION 3.6)
+set (PACKAGE_VERSION 3.7)
 set (PACKAGE_BUGREPORT "https://bugs.gnucash.org/describecomponents.cgi?product=Documentation")
 set (PACKAGE_TARNAME ${PACKAGE})
 set (PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
diff --git a/ChangeLog b/ChangeLog
index 057ffe3..e91f307 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,167 @@
+2019-09-07 Geert Janssens 
+
+	* CMake - update installation components (HEAD -> maint, origin/maint)
+
+2019-09-07 Geert Janssens 
+
+	* CMake - revisit image handling
+
+2019-09-07 Geert Janssens 
+
+	* CMake - revisit xml target
+
+2019-09-07 Geert Janssens 
+
+	* CMake - refactor targets into custom commands
+
+2019-09-06 Geert Janssens 
+
+	* CMake - Define options to enable or disable document formats
+
+2019-09-06 Geert Janssens 
+
+	* CMake - Add uninstall target
+
+2019-09-06 Geert Janssens 
+
+	* CMake - revisit build and install file locations
+
+2019-09-04 Geert Janssens 
+
+	* CMake - add chm target for windows documentation
+
+2019-09-04 Geert Janssens 
+
+	* CMake - Use xslt parameter to set chm file name
+
+2019-09-04 Geert Janssens 
+
+	* CMake - Rename cmake modules for clarity
+
+2019-09-02 Geert Janssens 
+
+	* CMake - Make note of missing Windows chm build rules
+
+2019-09-02 Geert Janssens 
+
+	* CMake - add dist and distcheck targets
+
+2019-09-02 Geert Janssens 
+
+	* paper format fixup
+
+2019-09-02 Geert Janssens 
+
+	* CMake - factor out common calls to reduce code duplication
+
+2019-09-02 Geert Janssens 
+
+	* cmake pdf - determine papersize on source directory instead of environment
+
+2019-09-02 Geert Janssens 
+
+	* Add epub and mobi support to cmake build system
+
+2019-09-02 Geert Janssens 
+
+	* Add a note about the cmake build system
+
+2019-09-02 Geert Janssens 
+
+	* Add pdf targets to CMake build system
+
+2019-09-02 Geert Janssens 
+
+	* Drop scrollkeeper/omf related bits from cmake build system
+
+2019-08-31 Geert Janssens 
+
+	* Provide rules to build xml and html versions of our docs
+
+2019-08-31 Geert Janssens 
+
+	* Setup basic structure for cmake based build system
+
+2019-08-17 Geert Janssens 
+
+	* Bug 797324 - yelp 3.32.2 does not find entities while listing 'all documents'
+
+2019-08-16 Frank H. Ellenberger 
+
+	* Apply commit 5f84f78 also on de and ru
+
+2019-08-16 Frank H. Ellenberger 
+
+	* Remove a totally wrong sentence about expenses
+
+2019-08-16 Frank H. Ellenberger 
+
+	* 2 "This" for different parts is confusing
+
+2019-08-16 Frank H. Ellenberger 
+
+	* Minor review of platform compatibility
+
+2019-08-12 Frank H. Ellenberger 
+
+	* 1 Tippfeher und mehrere "mindestens " FQ-Version
+
+2019-08-11 Frank H. Ellenberger 
+
+	* A few minor textual improvements of Help:Tips
+
+2019-08-11 Frank H. Ellenberger 
+
+	* Reformat help tips
+
+2019-08-11 Frank H. Ellenberger 
+
+	* Add note about fundlibrary's id
+
+2019-08-07 Frank H. Ellenberger 
+
+	* remove gnome-money.png
+
+2019-08-07 Frank H. Ellenberger 
+
+	* Define ac_abs_top_srcdir before first use
+
+2019-08-06 John Ralls 
+
+	* Fix fragile method of getting an absolute path to the soure directory.
+
+2019-08-04 Frank H. Ellenberger 
+
+	* Reformat Author section
+
+2019-08-04 Frank H. Ellenberger 
+
+	* Minor improvements on Import Matcher section
+
+2019-08-01 David Cousens 
+
+	* Improve Transactions:Import matcher -corrections
+
+2019-07-31 David Cousens 
+
+	* Improve Transactions:Import  matcher
+
+2019-07-25 Frank H. Ellenberger 
+
+	* Merge commit 'da3bd778e8d9662ff834f395867fb9500f48904f' into maint
+
+2019-07-14 Tad 
+
+	* PR #124: Optimize all PNGs with optipng
+
+2019-07-24 Frank H. Ellenberger 
+
+	* Fix syntax of a note in previous commit from PR #125
+
+2019-07-16 David Cousens 
+
+	* Help:Transactions: Modify Matcher and Multiple Selection Docs
+
 2018-12-30 John Ralls 
 
 	* Release GnuCash Documentation for version 3.4. (tag: 3.4)
diff --git a/NEWS b/NEWS
index c4bef07..c9038cb 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,12 @@
 Version History
 ---------------
+ 3.7    - 8 September 2019
+        o Bug 797324 - yelp 3.32.2 does not find entities while listing 'all
+                       documents'
+        o Now builds with CMake as well as with autotools.
+        o All pngs have been optimized, reducing the size of the documentation
+          by ~28MB.
+        o Document the new import matcher multiselection feature.
  3.6    - 20 June 2019
         o Guide: Move the FDL appendix into the appendix part
         o Guide Bus: Add IDs to tables so that they will appear in the
diff --git a/configure.ac b/configure.ac
index cbb15ee..14d5c95 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
 # copyright (c) 2003-2016 GnuCash Development Team
 
 dnl Process this file with autoconf to produce a configure script.
-AC_INIT([gnucash-docs], [3.6], [https://bugs.gnucash.org/describecomponents.cgi?product=Documentation], , [https://www.gnucash.org/])
+AC_INIT([gnucash-docs], [3.7], [https://bugs.gnucash.org/describecomponents.cgi?product=Documentation], , [https://www.gnucash.org/])
 AC_CANONICAL_HOST
 
 dnl ==========================================================================
diff --git a/docbook/gnc-docbookx.dtd b/docbook/gnc-docbookx.dtd
index 038e214..72a38ad 100644
--- a/docbook/gnc-docbookx.dtd
+++ b/docbook/gnc-docbookx.dtd
@@ -32,10 +32,10 @@ own entity definitions to use across all of our DocBook pages. -->
   
   1. Publication - should only be changed by the release manager!
 -->
-<!ENTITY manrevision "3.6">
-<!ENTITY date "30 June 2019">
+<!ENTITY manrevision "3.7">
+<!ENTITY date "8 September 2019">
 <!ENTITY vers-unstable "master">
-<!ENTITY vers-stable "3.6">
+<!ENTITY vers-stable "3.7">
 <!ENTITY series-unstable "master">
 <!ENTITY series-stable "3">
 
diff --git a/guide/C/gnucash-guide.xml b/guide/C/gnucash-guide.xml
index 72e494b..6aa36ed 100644
--- a/guide/C/gnucash-guide.xml
+++ b/guide/C/gnucash-guide.xml
@@ -10,8 +10,8 @@
 -->
 <!--
       (Do not remove this comment block.)
-  Version: 3.5
-  Last modified: 31 March 2019
+  Version: 3.7
+  Last modified: 9 September 2019
   Maintainers:
         Gnucash Development Team <gnucash-devel at gnucash.org>
   Translators:
@@ -89,6 +89,14 @@
   </authorgroup>
 
   <revhistory>
+      <revision>
+        <revnumber>&app; Tutorial and Concepts Guide v3.7</revnumber>
+        <date>9 September 2019</date>
+        <revdescription>
+          <para role="author">Multiple authors</para>
+          <para role="publisher">&app; Documentation Team</para>
+        </revdescription>
+      </revision>
       <revision>
         <revnumber>&app; Tutorial and Concepts Guide v3.6</revnumber>
         <date>30 June 2019</date>
diff --git a/guide/de/gnucash-guide.xml b/guide/de/gnucash-guide.xml
index 2d5c3cb..3af9cdc 100644
--- a/guide/de/gnucash-guide.xml
+++ b/guide/de/gnucash-guide.xml
@@ -10,8 +10,8 @@
 -->
 <!--
       (Do not remove this comment block.)
-  Version: 3.5
-  Last modified: 31 March 2019 
+  Version: 3.7
+  Last modified: 8 September 2019
   Maintainers:
         Gnucash Development Team <gnucash-devel at gnucash.org>
   Translators:
@@ -106,6 +106,14 @@
   </authorgroup>
 
   <revhistory>
+      <revision>
+        <revnumber>&app; Tutorial and Concepts Guide v3.7</revnumber>
+        <date>8 September 2019</date>
+        <revdescription>
+          <para role="author">Multiple authors</para>
+          <para role="publisher">&app; Documentation Team</para>
+        </revdescription>
+      </revision>
       <revision>
         <revnumber>&app; Tutorial and Concepts Guide v3.6</revnumber>
         <date>30 June 2019</date>
diff --git a/guide/it/gnucash-guide.xml b/guide/it/gnucash-guide.xml
index 769ba27..876ce1b 100644
--- a/guide/it/gnucash-guide.xml
+++ b/guide/it/gnucash-guide.xml
@@ -104,6 +104,14 @@
   </authorgroup>
 
   <revhistory>
+      <revision>
+        <revnumber>GnuCash Tutorial and Concepts Guide v3.7</revnumber>
+        <date>8 September 2019</date>
+        <revdescription>
+          <para role="author">Autori multipli</para>
+          <para role="publisher">Gruppo della documentazione di &app;</para>
+        </revdescription>
+      </revision>
       <revision>
         <revnumber>GnuCash Tutorial and Concepts Guide v3.6</revnumber>
         <date>30 June 2019</date>
diff --git a/guide/pt/gnucash-guide.xml b/guide/pt/gnucash-guide.xml
index e1af565..a0760d8 100644
--- a/guide/pt/gnucash-guide.xml
+++ b/guide/pt/gnucash-guide.xml
@@ -90,9 +90,17 @@
   </authorgroup>
 
   <revhistory>
+      <revision>
+        <revnumber>&app;Tutorial e guia de conceitos v3.7</revnumber>
+        <date>8 de septembro de 2019</date>
+        <revdescription>
+          <para role="author">Múltiplos autores</para>
+          <para role="publisher">Equipa de documentação do &app;</para>
+        </revdescription>
+      </revision>
       <revision>
         <revnumber>&app;Tutorial e guia de conceitos v3.6</revnumber>
-        <date>30 de junho de 2018</date>
+        <date>30 de junho de 2019</date>
         <revdescription>
           <para role="author">Múltiplos autores</para>
           <para role="publisher">Equipa de documentação do &app;</para>
diff --git a/guide/ru/gnucash-guide.xml b/guide/ru/gnucash-guide.xml
index 9dd0ff9..ccdd103 100644
--- a/guide/ru/gnucash-guide.xml
+++ b/guide/ru/gnucash-guide.xml
@@ -10,8 +10,8 @@
 -->
 <!--
       (Do not remove this comment block.)
-  Version: 3.1
-  Last modified: 28 April 2018
+  Version: 3.7
+  Last modified: 8 September 2019
   Maintainers:
         Gnucash Development Team <gnucash-devel at gnucash.org>
   Translators:
@@ -100,6 +100,14 @@
   </authorgroup>
 
   <revhistory>
+      <revision>
+        <revnumber>&app; Tutorial and Concepts Guide v3.7</revnumber>
+        <date>8 September2019</date>
+        <revdescription>
+          <para role="author">Multiple authors</para>
+          <para role="publisher">&app; Documentation Team</para>
+        </revdescription>
+      </revision>
       <revision>
         <revnumber>&app; Tutorial and Concepts Guide v3.6</revnumber>
         <date>30 June 2019</date>
diff --git a/help/C/gnucash-help.xml b/help/C/gnucash-help.xml
index 72e4158..20e8bc9 100644
--- a/help/C/gnucash-help.xml
+++ b/help/C/gnucash-help.xml
@@ -3,8 +3,8 @@
 
 <!--
       (Do not remove this comment block.)
-  Version: 3.5
-  Last modified: 31 March 2019
+  Version: 3.7
+  Last modified: 8 September 2019
   Maintainers:
         Gnucash Development Team <gnucash-devel at gnucash.org>
   Translators:
@@ -48,6 +48,14 @@
     </authorgroup>
 
     <revhistory>
+      <revision>
+        <revnumber>&app; Help Manual v3.7</revnumber>
+        <date>8 September 2019</date>
+        <revdescription>
+          <para role="author">Multiple authors</para>
+          <para role="publisher">&app; Documentation Team</para>
+        </revdescription>
+      </revision>
       <revision>
         <revnumber>&app; Help Manual v3.6</revnumber>
         <date>30 June 2019</date>
diff --git a/help/de/gnucash-help.xml b/help/de/gnucash-help.xml
index 83209e0..61b15e6 100644
--- a/help/de/gnucash-help.xml
+++ b/help/de/gnucash-help.xml
@@ -9,8 +9,8 @@
 -->
 <!--
       (Do not remove this comment block.)
-  Version: 3.1
-  Last modified: 28 April 2018
+  Version: 3.7
+  Last modified: 8 September 2019
   Maintainers:
         Gnucash Development Team <gnucash-devel at gnucash.org>
   Translators:
@@ -78,6 +78,14 @@
 
     <revhistory>
 
+      <revision>
+        <revnumber>&app; Hilfe v3.7</revnumber>
+        <date>8 September 2019</date>
+        <revdescription>
+          <para role="author">Multiple Authors </para>
+          <para role="publisher">&app; Development Team</para>
+        </revdescription>
+      </revision>
       <revision>
         <revnumber>&app; Hilfe v3.6</revnumber>
         <date>30 June 2019</date>
diff --git a/help/it/gnucash-help.xml b/help/it/gnucash-help.xml
index 232849c..a5b78bc 100644
--- a/help/it/gnucash-help.xml
+++ b/help/it/gnucash-help.xml
@@ -176,6 +176,14 @@
     </authorgroup>
 
     <revhistory>
+      <revision>
+        <revnumber>GnuCash Help Manual v3.7</revnumber>
+        <date>8 September 2019</date>
+        <revdescription>
+          <para role="author">Vari autori</para>
+          <para role="publisher">Gruppo della documentazione di &app;</para>
+        </revdescription>
+      </revision>
       <revision>
         <revnumber>GnuCash Help Manual v3.6</revnumber>
         <date>30 June 2019</date>
diff --git a/help/pt/gnucash-help.xml b/help/pt/gnucash-help.xml
index 007cf5e..b55fd24 100644
--- a/help/pt/gnucash-help.xml
+++ b/help/pt/gnucash-help.xml
@@ -54,6 +54,14 @@
     </authorgroup>
 
     <revhistory>
+      <revision>
+        <revnumber>Manual de ajuda do &app; v3.7</revnumber>
+        <date>8 de septembro de 2019</date>
+        <revdescription>
+          <para role="author">Múltiplos autores</para>
+          <para role="publisher">Equipa de documentação do &app;</para>
+        </revdescription>
+      </revision>
       <revision>
         <revnumber>Manual de ajuda do &app; v3.6</revnumber>
         <date>31 de junho de 2019</date>

commit 9f9e20f623063a0840d40c9eb1a11adcc856038a
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Sat Sep 7 15:42:19 2019 +0200

    CMake - update installation components
    
    Installation is normally only done in preparation of packaging the docs.
    At that point one would want to install all documents in a given format
    at once. So make the installation components document name independent.
    There are now two components: ghelp and chm. One for integration on linux
    into the gnome help system and one for integration on Windows.
    All other document types don't define installation targets so no other
    components for installation are defined either.

diff --git a/cmake/AddChmTarget.cmake b/cmake/AddChmTarget.cmake
index 0416b08..d6be1af 100644
--- a/cmake/AddChmTarget.cmake
+++ b/cmake/AddChmTarget.cmake
@@ -32,6 +32,6 @@ function (add_chm_target docname lang entities figures)
             "${BUILD_DIR}/${chmfile}"
             "${BUILD_DIR}/${mapfile}"
         DESTINATION "${CMAKE_INSTALL_DOCDIR}/${lang}"
-        COMPONENT "${docname}-chm")
+        COMPONENT "chm")
 
 endfunction()
diff --git a/cmake/AddGHelpTarget.cmake b/cmake/AddGHelpTarget.cmake
index a8bc9ec..a974d0d 100644
--- a/cmake/AddGHelpTarget.cmake
+++ b/cmake/AddGHelpTarget.cmake
@@ -47,8 +47,8 @@ function (add_ghelp_target docname lang entities figures)
 
     install(FILES ${source_files}
         DESTINATION "${CMAKE_INSTALL_DATADIR}/gnome/help/${docname}/${lang}"
-        COMPONENT "${docname}-xml")
+        COMPONENT "ghelp")
     install(FILES ${figures}
         DESTINATION "${CMAKE_INSTALL_DATADIR}/gnome/help/${docname}/${lang}/figures"
-        COMPONENT "${docname}-xml")
+        COMPONENT "ghelp")
 endfunction()

commit 67f0c71751da67d324cde31ce11e4217b6d7d5e6
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Sat Sep 7 12:22:11 2019 +0200

    CMake - revisit image handling
    
    - replace variable figdir with the hardcoded valude 'figures'. We don't
      need that much flexibility in defining where the images are stored.
    - determine list of images on a higher level so we don't have to copy
      the same code in each target function. Note there are two
      function calls to determine the list of images: one to use in the
      target functions (with absolute paths) and one to use for the
      dist target (with pathnames relative to the current source directory)

diff --git a/cmake/AddChmTarget.cmake b/cmake/AddChmTarget.cmake
index ea17dbd..0416b08 100644
--- a/cmake/AddChmTarget.cmake
+++ b/cmake/AddChmTarget.cmake
@@ -1,4 +1,4 @@
-function (add_chm_target docname lang entities figdir)
+function (add_chm_target docname lang entities figures)
 
     set(chmfile "${docname}.chm")
     set(mapfile "${docname}.hhmap")
@@ -6,8 +6,6 @@ function (add_chm_target docname lang entities figdir)
     set(BUILD_DIR "${DOCDIR_BUILD}/${lang}")
     file(MAKE_DIRECTORY "${BUILD_DIR}")
 
-    file(GLOB figures "${CMAKE_CURRENT_SOURCE_DIR}/${figdir}/*.png")
-
     file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/htmlhelp")
     add_custom_command(
         OUTPUT "${BUILD_DIR}/${chmfile}" "${BUILD_DIR}/${mapfile}"
diff --git a/cmake/AddEpubTarget.cmake b/cmake/AddEpubTarget.cmake
index c3ede27..46b2063 100644
--- a/cmake/AddEpubTarget.cmake
+++ b/cmake/AddEpubTarget.cmake
@@ -1,8 +1,7 @@
-function (add_epub_target docname lang entities figdir)
+function (add_epub_target docname lang entities figures)
 
     set(epubfile "${docname}.epub")
     set(EPUB_TMPDIR "${CMAKE_CURRENT_BINARY_DIR}/epub")
-    file(GLOB figures "${CMAKE_CURRENT_SOURCE_DIR}/${figdir}/*.png")
 
     set(BUILD_DIR "${DOCDIR_BUILD}/${lang}")
     file(MAKE_DIRECTORY "${BUILD_DIR}")
diff --git a/cmake/AddGHelpTarget.cmake b/cmake/AddGHelpTarget.cmake
index 0b34ddd..a8bc9ec 100644
--- a/cmake/AddGHelpTarget.cmake
+++ b/cmake/AddGHelpTarget.cmake
@@ -8,12 +8,11 @@
 # - entities: list of all xml files this document is composed of
 # - figdir: name of the directory holding the images
 
-function (add_ghelp_target docname lang entities figdir)
+function (add_ghelp_target docname lang entities figures)
 
-    file(GLOB figures "${CMAKE_CURRENT_SOURCE_DIR}/${figdir}/*.png")
     set(BUILD_DIR "${DATADIR_BUILD}/gnome/help/${docname}/${lang}")
     file(MAKE_DIRECTORY "${BUILD_DIR}")
-    file(MAKE_DIRECTORY "${BUILD_DIR}/${figdir}")
+    file(MAKE_DIRECTORY "${BUILD_DIR}/figures")
 
     set(source_files "")
     foreach(xml_file ${entities} ${docname}.xml)
@@ -33,10 +32,10 @@ function (add_ghelp_target docname lang entities figdir)
         WORKING_DIRECTORY "${BUILD_DIR}")
 
     # Copy figures for this document
-    file(MAKE_DIRECTORY "${BUILD_DIR}/${figdir}")
+    file(MAKE_DIRECTORY "${BUILD_DIR}/figures")
     add_custom_command(
         OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ghelp_figtrigger"
-        COMMAND ${CMAKE_COMMAND} -E copy ${figures} "${BUILD_DIR}/${figdir}"
+        COMMAND ${CMAKE_COMMAND} -E copy ${figures} "${BUILD_DIR}/figures"
         COMMAND touch "${CMAKE_CURRENT_BINARY_DIR}/ghelp_figtrigger"
         DEPENDS ${figures})
 
@@ -50,6 +49,6 @@ function (add_ghelp_target docname lang entities figdir)
         DESTINATION "${CMAKE_INSTALL_DATADIR}/gnome/help/${docname}/${lang}"
         COMPONENT "${docname}-xml")
     install(FILES ${figures}
-        DESTINATION "${CMAKE_INSTALL_DATADIR}/gnome/help/${docname}/${lang}/${figdir}"
+        DESTINATION "${CMAKE_INSTALL_DATADIR}/gnome/help/${docname}/${lang}/figures"
         COMPONENT "${docname}-xml")
 endfunction()
diff --git a/cmake/AddGncDocTargets.cmake b/cmake/AddGncDocTargets.cmake
index a1ee5e9..ae054f8 100644
--- a/cmake/AddGncDocTargets.cmake
+++ b/cmake/AddGncDocTargets.cmake
@@ -2,6 +2,10 @@ function (add_gnc_doc_targets docname entities)
 
     get_filename_component(lang ${CMAKE_CURRENT_SOURCE_DIR} NAME)
 
+    file(GLOB_RECURSE figures
+        "${CMAKE_CURRENT_SOURCE_DIR}/figures/*.png"
+        "${CMAKE_CURRENT_SOURCE_DIR}/figures/figures/*.svg")
+
     if(entities)
         # Add a target to run xml lint checks on this document's source xml files
         add_custom_target("${lang}-${docname}-check"
@@ -15,19 +19,19 @@ function (add_gnc_doc_targets docname entities)
 
         # Add targets for each document format that is enabled
         if (WITH_CHM)
-            add_chm_target(${docname} ${lang} "${entities}" figures)
+            add_chm_target(${docname} ${lang} "${entities}" "${figures}")
         endif()
         if (WITH_GHELP)
-            add_ghelp_target(${docname} ${lang} "${entities}" figures)
+            add_ghelp_target(${docname} ${lang} "${entities}" "${figures}")
         endif()
         if (WITH_HTML)
-            add_html_target(${docname} ${lang} "${entities}" figures)
+            add_html_target(${docname} ${lang} "${entities}" "${figures}")
         endif()
         if (WITH_PDF)
-            add_pdf_target(${docname} ${lang} "${entities}" figures)
+            add_pdf_target(${docname} ${lang} "${entities}" "${figures}")
         endif()
         if (WITH_EPUB)
-            add_epub_target(${docname} ${lang} "${entities}" figures)
+            add_epub_target(${docname} ${lang} "${entities}" "${figures}")
         endif()
         if (WITH_MOBI)
             add_mobi_target(${docname} ${lang})
@@ -39,15 +43,15 @@ function (add_gnc_doc_targets docname entities)
         Makefile.in
         ${docname}-${lang}.omf)
 
-    file(GLOB_RECURSE figures
+    file(GLOB_RECURSE figures_dist
         RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
-        figures/*.png)
+        figures/*.png figures/*.svg)
 
     add_to_dist(
         CMakeLists.txt
         ${docname}.xml
         ${entities}
         ${autotoolsfiles}
-        ${figures})
+        ${figures_dist})
 
 endfunction()
diff --git a/cmake/AddHtmlTarget.cmake b/cmake/AddHtmlTarget.cmake
index dc17d8d..ea3dcd5 100644
--- a/cmake/AddHtmlTarget.cmake
+++ b/cmake/AddHtmlTarget.cmake
@@ -8,15 +8,14 @@
 # - entities: list of all xml files this document is composed of
 # - figdir: name of the directory holding the images
 
-function (add_html_target docname lang entities figdir)
+function (add_html_target docname lang entities figures)
 
-    file(GLOB figures "${CMAKE_CURRENT_SOURCE_DIR}/${figdir}/*.png")
     set(styledir "${CMAKE_SOURCE_DIR}/stylesheet")
     file(GLOB styleicons "${CMAKE_SOURCE_DIR}/stylesheet/*.png")
 
     set(BUILD_DIR "${DOCDIR_BUILD}/${lang}/${docname}")
     file(MAKE_DIRECTORY "${BUILD_DIR}")
-    file(MAKE_DIRECTORY "${BUILD_DIR}/${figdir}")
+    file(MAKE_DIRECTORY "${BUILD_DIR}/figures")
     file(MAKE_DIRECTORY "${BUILD_DIR}/stylesheet")
 
     # Convert xml to html with xsltproc
@@ -33,10 +32,10 @@ function (add_html_target docname lang entities figdir)
         DEPENDS ${entities} "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd")
 
     # Copy figures for this document
-    file(MAKE_DIRECTORY "${BUILD_DIR}/${figdir}")
+    file(MAKE_DIRECTORY "${BUILD_DIR}/figures")
     add_custom_command(
         OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html_figtrigger"
-        COMMAND ${CMAKE_COMMAND} -E copy ${figures} "${BUILD_DIR}/${figdir}"
+        COMMAND ${CMAKE_COMMAND} -E copy ${figures} "${BUILD_DIR}/figures"
         COMMAND touch "${CMAKE_CURRENT_BINARY_DIR}/html_figtrigger"
         DEPENDS ${figures})
 
diff --git a/cmake/AddPdfTarget.cmake b/cmake/AddPdfTarget.cmake
index 7d73946..b813b51 100644
--- a/cmake/AddPdfTarget.cmake
+++ b/cmake/AddPdfTarget.cmake
@@ -1,8 +1,7 @@
-function (add_pdf_target docname lang entities figdir)
+function (add_pdf_target docname lang entities figures)
 
     set(fofile "${docname}.fo")
     set(pdffile "${docname}.pdf")
-    file(GLOB figures "${CMAKE_CURRENT_SOURCE_DIR}/${figdir}/*.png")
 
     set(BUILD_DIR "${DOCDIR_BUILD}/${lang}")
     file(MAKE_DIRECTORY "${BUILD_DIR}")

commit 12ff0d04151c1ecdac26dc30a320afd1c11344ee
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Sat Sep 7 11:43:06 2019 +0200

    CMake - revisit xml target
    
    This is really a target to install the documentation where gnome help
    searches for it rather than some generic xml target. Rename the
    target to ghelp to make this more explicit.
    
    In addition add rules to 'install' in the build directory just like
    all the other targets. The real install target is also kept as
    this is what distro packagers will be using eventually.
    
    Lastly, move the check target to a separate location as it's not
    ghelp specific. It is used to run xmllint on the source files
    which would benefit all document formats. It has been made optional
    though as calling 'make check' will always run the check. Setting
    it as dependency for other targets would in turn cause the other
    targets to always rebuild even if no source files were changed.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0edfdbb..1df8f7b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -22,9 +22,9 @@ set (PACKAGE_URL "https://www.gnucash.org/")
 set (CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}")
 include (AddChmTarget)
 include (AddEpubTarget)
+include (AddGHelpTarget)
 include (AddHtmlTarget)
 include (AddPdfTarget)
-include (AddXmlTarget)
 include (AddGncDocTargets)
 include (DistCommon)
 include (GNUInstallDirs)
@@ -41,13 +41,13 @@ unset(dist_files CACHE)
 # On any other platform chm and mobi are disabled by default
 
 if(NOT WIN32)
-    option (WITH_XML "Enable build rules for xml document format" ON)
+    option (WITH_GHELP "Enable build rules for gnome help document format" ON)
     option (WITH_HTML "Enable build rules for html document format" ON)
     option (WITH_PDF "Enable build rules for pdf document format" ON)
     option (WITH_EPUB "Enable build rules for epub document format" ON)
     option (WITH_CHM "Enable build rules for chm document format" OFF)
 else()
-    option (WITH_XML "Enable build rules for xml document format" OFF)
+    option (WITH_GHELP "Enable build rules for gnome help document format" OFF)
     option (WITH_HTML "Enable build rules for html document format" OFF)
     option (WITH_PDF "Enable build rules for pdf document format" OFF)
     option (WITH_EPUB "Enable build rules for epub document format" OFF)
@@ -144,8 +144,8 @@ add_custom_target(check)
 if (WITH_HTML)
     add_custom_target(html)
 endif()
-if (WITH_XML)
-    add_custom_target(xml)
+if (WITH_GHELP)
+    add_custom_target(ghelp)
 endif()
 if (WITH_PDF)
     add_custom_target(pdf)
diff --git a/cmake/AddGHelpTarget.cmake b/cmake/AddGHelpTarget.cmake
new file mode 100644
index 0000000..0b34ddd
--- /dev/null
+++ b/cmake/AddGHelpTarget.cmake
@@ -0,0 +1,55 @@
+#
+# Functions to install the docbook xml sources for use with gnome help
+#
+# Paremeters:
+# - docname: basename of the main xml file. Will be used to locate
+#            this primary xml file and for various output files/directories
+# - lang: language of the current document
+# - entities: list of all xml files this document is composed of
+# - figdir: name of the directory holding the images
+
+function (add_ghelp_target docname lang entities figdir)
+
+    file(GLOB figures "${CMAKE_CURRENT_SOURCE_DIR}/${figdir}/*.png")
+    set(BUILD_DIR "${DATADIR_BUILD}/gnome/help/${docname}/${lang}")
+    file(MAKE_DIRECTORY "${BUILD_DIR}")
+    file(MAKE_DIRECTORY "${BUILD_DIR}/${figdir}")
+
+    set(source_files "")
+    foreach(xml_file ${entities} ${docname}.xml)
+        list(APPEND source_files "${CMAKE_CURRENT_SOURCE_DIR}/${xml_file}")
+    endforeach()
+    list(APPEND source_files "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd")
+
+    set(dest_files "")
+    foreach(xml_file ${entities} ${docname}.xml gnc-docbookx.dtd)
+        list(APPEND dest_files "${BUILD_DIR}/${xml_file}")
+    endforeach()
+
+    add_custom_command(
+        OUTPUT ${dest_files}
+        COMMAND ${CMAKE_COMMAND} -E copy ${source_files} "${BUILD_DIR}"
+        DEPENDS ${entities} "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd"
+        WORKING_DIRECTORY "${BUILD_DIR}")
+
+    # Copy figures for this document
+    file(MAKE_DIRECTORY "${BUILD_DIR}/${figdir}")
+    add_custom_command(
+        OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ghelp_figtrigger"
+        COMMAND ${CMAKE_COMMAND} -E copy ${figures} "${BUILD_DIR}/${figdir}"
+        COMMAND touch "${CMAKE_CURRENT_BINARY_DIR}/ghelp_figtrigger"
+        DEPENDS ${figures})
+
+    add_custom_target("${lang}-${docname}-ghelp"
+        DEPENDS ${dest_files}
+                "${CMAKE_CURRENT_BINARY_DIR}/ghelp_figtrigger")
+
+    add_dependencies(${docname}-ghelp "${lang}-${docname}-ghelp")
+
+    install(FILES ${source_files}
+        DESTINATION "${CMAKE_INSTALL_DATADIR}/gnome/help/${docname}/${lang}"
+        COMPONENT "${docname}-xml")
+    install(FILES ${figures}
+        DESTINATION "${CMAKE_INSTALL_DATADIR}/gnome/help/${docname}/${lang}/${figdir}"
+        COMPONENT "${docname}-xml")
+endfunction()
diff --git a/cmake/AddGncDocTargets.cmake b/cmake/AddGncDocTargets.cmake
index a6d2f04..a1ee5e9 100644
--- a/cmake/AddGncDocTargets.cmake
+++ b/cmake/AddGncDocTargets.cmake
@@ -3,12 +3,22 @@ function (add_gnc_doc_targets docname entities)
     get_filename_component(lang ${CMAKE_CURRENT_SOURCE_DIR} NAME)
 
     if(entities)
-        add_check_target(${docname} ${lang} "${entities}" figures)
+        # Add a target to run xml lint checks on this document's source xml files
+        add_custom_target("${lang}-${docname}-check"
+            COMMAND  ${XMLLINT} --postvalid
+                                --xinclude
+                                --noout
+                                --path ${CMAKE_SOURCE_DIR}/docbook
+                                ${CMAKE_CURRENT_SOURCE_DIR}/${docname}.xml
+            DEPENDS ${entities} "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd")
+        add_dependencies(${docname}-check "${lang}-${docname}-check")
+
+        # Add targets for each document format that is enabled
         if (WITH_CHM)
             add_chm_target(${docname} ${lang} "${entities}" figures)
         endif()
-        if (WITH_XML)
-            add_xml_target(${docname} ${lang} "${entities}" figures)
+        if (WITH_GHELP)
+            add_ghelp_target(${docname} ${lang} "${entities}" figures)
         endif()
         if (WITH_HTML)
             add_html_target(${docname} ${lang} "${entities}" figures)
diff --git a/cmake/AddHtmlTarget.cmake b/cmake/AddHtmlTarget.cmake
index b94ee64..dc17d8d 100644
--- a/cmake/AddHtmlTarget.cmake
+++ b/cmake/AddHtmlTarget.cmake
@@ -35,9 +35,9 @@ function (add_html_target docname lang entities figdir)
     # Copy figures for this document
     file(MAKE_DIRECTORY "${BUILD_DIR}/${figdir}")
     add_custom_command(
-        OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/figurestrigger"
+        OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html_figtrigger"
         COMMAND ${CMAKE_COMMAND} -E copy ${figures} "${BUILD_DIR}/${figdir}"
-        COMMAND touch "${CMAKE_CURRENT_BINARY_DIR}/figurestrigger"
+        COMMAND touch "${CMAKE_CURRENT_BINARY_DIR}/html_figtrigger"
         DEPENDS ${figures})
 
     # Copy style icons for this document (warning, info,...)
@@ -50,7 +50,7 @@ function (add_html_target docname lang entities figdir)
 
     add_custom_target("${lang}-${docname}-html"
         DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/htmltrigger"
-                "${CMAKE_CURRENT_BINARY_DIR}/figurestrigger"
+                "${CMAKE_CURRENT_BINARY_DIR}/html_figtrigger"
                 "${CMAKE_CURRENT_BINARY_DIR}/styletrigger")
 
     add_dependencies(${docname}-html "${lang}-${docname}-html")
diff --git a/cmake/AddXmlTarget.cmake b/cmake/AddXmlTarget.cmake
deleted file mode 100644
index a74c9bf..0000000
--- a/cmake/AddXmlTarget.cmake
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Functions to generate xml (docbook) documentation
-#
-# Paremeters:
-# - docname: basename of the main xml file. Will be used to locate
-#            this primary xml file and for various output files/directories
-# - lang: language of the current document
-# - entities: list of all xml files this document is composed of
-# - figdir: name of the directory holding the images
-
-# ************** Rules to install xml files for gnome-help ***********************
-function (add_xml_target docname lang entities figdir)
-
-    set(xml_files "${entities}")
-    list(APPEND xml_files "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd")
-    file(GLOB figures "${CMAKE_CURRENT_SOURCE_DIR}/${figdir}/*.png")
-
-    install(FILES ${xml_files}
-        DESTINATION "${CMAKE_INSTALL_DATADIR}/gnome/help/${docname}/${lang}"
-        COMPONENT "${docname}-xml")
-    install(FILES ${figures}
-        DESTINATION "${CMAKE_INSTALL_DATADIR}/gnome/help/${docname}/${lang}/${figdir}"
-        COMPONENT "${docname}-xml")
-endfunction()
-
-
-function (add_check_target docname lang entities figdir)
-    add_custom_target("${lang}-${docname}-check"
-        COMMAND  ${XMLLINT} --postvalid
-                            --xinclude
-                            --noout
-                            --path ${CMAKE_SOURCE_DIR}/docbook
-                            ${CMAKE_CURRENT_SOURCE_DIR}/${docname}.xml
-        DEPENDS ${entities} "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd")
-
-    add_dependencies(${docname}-check "${lang}-${docname}-check")
-
-endfunction()
diff --git a/guide/CMakeLists.txt b/guide/CMakeLists.txt
index 2048a53..8b047f7 100644
--- a/guide/CMakeLists.txt
+++ b/guide/CMakeLists.txt
@@ -8,10 +8,9 @@ if (WITH_HTML)
     add_dependencies(html ${docname}-html)
 endif()
 
-if (WITH_XML)
-    add_custom_target(${docname}-xml
-        DEPENDS ${docname}-check)
-    add_dependencies(xml ${docname}-xml)
+if (WITH_GHELP)
+    add_custom_target(${docname}-ghelp)
+    add_dependencies(ghelp ${docname}-ghelp)
 endif()
 
 if (WITH_PDF)
diff --git a/help/CMakeLists.txt b/help/CMakeLists.txt
index aa52ae0..dc75695 100644
--- a/help/CMakeLists.txt
+++ b/help/CMakeLists.txt
@@ -8,10 +8,9 @@ if (WITH_HTML)
     add_dependencies(html ${docname}-html)
 endif()
 
-if (WITH_XML)
-    add_custom_target(${docname}-xml
-        DEPENDS ${docname}-check)
-    add_dependencies(xml ${docname}-xml)
+if (WITH_GHELP)
+    add_custom_target(${docname}-ghelp)
+    add_dependencies(ghelp ${docname}-ghelp)
 endif()
 
 if (WITH_PDF)

commit 50a06ccd1f391064b202efd92597610ea087e98d
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Sat Sep 7 10:40:17 2019 +0200

    CMake - refactor targets into custom commands
    
    A custom target will always run its commands. However we only want
    to run the commands if one of the dependencies changes. This is
    exactly how custom commands work. A custom target is still defined as well
    for each document/lang/format triplet as that is needed for dependency
    management across directories and to have a direct target to pass to make
    
    Note for the html target(s) this posed a challenge. When cmake is run
    to set up the build system it is unknown still what the final html files
    will be for the html targets so it's impossible to add dependencies at
    set up time. Instead a dummy file is created when the html build rule
    is run. Whenever any of the dependencies is newer than this dummy file
    the build rule will be triggered.

diff --git a/cmake/AddChmTarget.cmake b/cmake/AddChmTarget.cmake
index 28cf33b..ea17dbd 100644
--- a/cmake/AddChmTarget.cmake
+++ b/cmake/AddChmTarget.cmake
@@ -9,7 +9,8 @@ function (add_chm_target docname lang entities figdir)
     file(GLOB figures "${CMAKE_CURRENT_SOURCE_DIR}/${figdir}/*.png")
 
     file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/htmlhelp")
-    add_custom_target("${lang}-${docname}-chm"
+    add_custom_command(
+        OUTPUT "${BUILD_DIR}/${chmfile}" "${BUILD_DIR}/${mapfile}"
         COMMAND ${CMAKE_COMMAND} -v
            -D docname=${docname}
            -D SRC_DIR=${CMAKE_SOURCE_DIR}
@@ -21,10 +22,12 @@ function (add_chm_target docname lang entities figdir)
            "-Dentities=\"${entities}\""
            -D HHC=${HHC}
            -P ${CMAKE_SOURCE_DIR}/cmake/MakeChm.cmake
-        BYPRODUCTS "${BUILD_DIR}/${chmfile}" "${BUILD_DIR}/${mapfile}"
         DEPENDS ${entities} "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd" ${figures}
         WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/htmlhelp")
 
+    add_custom_target("${lang}-${docname}-chm"
+        DEPENDS "${BUILD_DIR}/${chmfile}" "${BUILD_DIR}/${mapfile}")
+
     add_dependencies(${docname}-chm "${lang}-${docname}-chm")
 
     install(FILES
diff --git a/cmake/AddEpubTarget.cmake b/cmake/AddEpubTarget.cmake
index 515ece8..c3ede27 100644
--- a/cmake/AddEpubTarget.cmake
+++ b/cmake/AddEpubTarget.cmake
@@ -7,7 +7,8 @@ function (add_epub_target docname lang entities figdir)
     set(BUILD_DIR "${DOCDIR_BUILD}/${lang}")
     file(MAKE_DIRECTORY "${BUILD_DIR}")
 
-    add_custom_target("${lang}-${docname}-epub"
+    add_custom_command(
+        OUTPUT "${BUILD_DIR}/${epubfile}"
         COMMAND rm -fr "${EPUB_TMPDIR}"
         COMMAND mkdir "${EPUB_TMPDIR}"
         COMMAND echo "application/epub+zip" > "${EPUB_TMPDIR}/mimetype"
@@ -21,9 +22,11 @@ function (add_epub_target docname lang entities figdir)
                             "${CMAKE_CURRENT_SOURCE_DIR}/${docname}.xml"
         COMMAND cmake -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/figures" "${EPUB_TMPDIR}/OEBPS/figures"
         COMMAND cd "${EPUB_TMPDIR}" && zip -X -r "${BUILD_DIR}/${epubfile}" mimetype META-INF OEBPS
-        BYPRODUCTS "${BUILD_DIR}/${epubfile}"
         DEPENDS ${entities} "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd" ${figures})
 
+    add_custom_target("${lang}-${docname}-epub"
+        DEPENDS "${BUILD_DIR}/${epubfile}")
+
     add_dependencies(${docname}-epub "${lang}-${docname}-epub")
 
 endfunction()
@@ -36,10 +39,13 @@ function (add_mobi_target docname lang)
     set(epubfile "${BUILD_DIR}/${docname}.epub")
     set(mobifile "${BUILD_DIR}/${docname}.mobi")
 
+    add_custom_command(
+        OUTPUT "${mobifile}"
+        COMMAND ${EBOOK_CONVERT} "${epubfile}" "${mobifile}"
+        DEPENDS "${epubfile}")
+
     add_custom_target("${lang}-${docname}-mobi"
-        COMMAND ${EBOOK_CONVERT} ${epubfile} ${mobifile}
-        BYPRODUCTS "${mobifile}"
-        DEPENDS "${lang}-${docname}-epub")
+        DEPENDS "${epubfile}")
 
     add_dependencies(${docname}-mobi "${lang}-${docname}-mobi")
 
diff --git a/cmake/AddHtmlTarget.cmake b/cmake/AddHtmlTarget.cmake
index 4e4c05a..b94ee64 100644
--- a/cmake/AddHtmlTarget.cmake
+++ b/cmake/AddHtmlTarget.cmake
@@ -16,32 +16,42 @@ function (add_html_target docname lang entities figdir)
 
     set(BUILD_DIR "${DOCDIR_BUILD}/${lang}/${docname}")
     file(MAKE_DIRECTORY "${BUILD_DIR}")
+    file(MAKE_DIRECTORY "${BUILD_DIR}/${figdir}")
+    file(MAKE_DIRECTORY "${BUILD_DIR}/stylesheet")
 
     # Convert xml to html with xsltproc
     # xsltproc --xinclude -o outputdir/ /usr/share/sgml/docbook/xsl-stylesheets/html/chunk.xsl filename.xml
-    add_custom_target("${lang}-${docname}-html-files"
+    add_custom_command(
+        OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/htmltrigger"
         COMMAND  ${XSLTPROC} ${XSLTPROCFLAGS} ${XSLTPROCFLAGS_HTML}
                              -o "${BUILD_DIR}/"
                              --param use.id.as.filename "1"
                              --stringparam chunker.output.encoding UTF-8
                              "${CMAKE_SOURCE_DIR}/xsl/general-customization.xsl"
                              "${CMAKE_CURRENT_SOURCE_DIR}/${docname}.xml"
+        COMMAND touch "${CMAKE_CURRENT_BINARY_DIR}/htmltrigger"
         DEPENDS ${entities} "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd")
 
     # Copy figures for this document
     file(MAKE_DIRECTORY "${BUILD_DIR}/${figdir}")
-    add_custom_target("${lang}-${docname}-html-figures"
-        COMMAND  ${CMAKE_COMMAND} -E copy ${figures} "${BUILD_DIR}/${figdir}"
+    add_custom_command(
+        OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/figurestrigger"
+        COMMAND ${CMAKE_COMMAND} -E copy ${figures} "${BUILD_DIR}/${figdir}"
+        COMMAND touch "${CMAKE_CURRENT_BINARY_DIR}/figurestrigger"
         DEPENDS ${figures})
 
     # Copy style icons for this document (warning, info,...)
     file(MAKE_DIRECTORY "${BUILD_DIR}/stylesheet")
-    add_custom_target("${lang}-${docname}-html-style"
+    add_custom_command(
+        OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/styletrigger"
         COMMAND  ${CMAKE_COMMAND} -E copy ${styleicons} "${BUILD_DIR}/stylesheet"
+        COMMAND touch "${CMAKE_CURRENT_BINARY_DIR}/styletrigger"
         DEPENDS ${styleicons})
 
     add_custom_target("${lang}-${docname}-html"
-        DEPENDS "${lang}-${docname}-html-files" "${lang}-${docname}-html-figures" "${lang}-${docname}-html-style")
+        DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/htmltrigger"
+                "${CMAKE_CURRENT_BINARY_DIR}/figurestrigger"
+                "${CMAKE_CURRENT_BINARY_DIR}/styletrigger")
 
     add_dependencies(${docname}-html "${lang}-${docname}-html")
 
diff --git a/cmake/AddPdfTarget.cmake b/cmake/AddPdfTarget.cmake
index 4d96226..7d73946 100644
--- a/cmake/AddPdfTarget.cmake
+++ b/cmake/AddPdfTarget.cmake
@@ -20,24 +20,28 @@ function (add_pdf_target docname lang entities figdir)
         endif()
     endif()
 
-    add_custom_target("${lang}-${docname}-fo"
+    add_custom_command(
+        OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${fofile}"
         COMMAND ${XSLTPROC} ${XSLTPROCFLAGS} ${XSLTPROCFLAGS_FO}
                             -o "${CMAKE_CURRENT_BINARY_DIR}/${fofile}"
                             --stringparam fop1.extensions 1
                             "${CMAKE_SOURCE_DIR}/xsl/1.79.2/fo/docbook.xsl"
                             "${CMAKE_CURRENT_SOURCE_DIR}/${docname}.xml"
-        BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/${fofile}"
         DEPENDS ${entities} "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd")
 
     configure_file("${FOP_XCONF}" "${CMAKE_CURRENT_BINARY_DIR}/fop.xconf")
-    add_custom_target("${lang}-${docname}-pdf"
+
+    add_custom_command(
+        OUTPUT "${BUILD_DIR}/${pdffile}"
         COMMAND ${FOP} ${FOPFLAGS}
                         -l ${lang}
                         -c "${CMAKE_CURRENT_BINARY_DIR}/fop.xconf"
                         -fo "${CMAKE_CURRENT_BINARY_DIR}/${fofile}"
                         -pdf "${BUILD_DIR}/${pdffile}"
-        BYPRODUCTS "${BUILD_DIR}/${pdffile}"
-        DEPENDS ${lang}-${docname}-fo ${figures})
+        DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${fofile}" ${figures})
+
+    add_custom_target("${lang}-${docname}-pdf"
+        DEPENDS "${BUILD_DIR}/${pdffile}")
 
     add_dependencies(${docname}-pdf "${lang}-${docname}-pdf")
 
diff --git a/cmake/MakeChm.cmake b/cmake/MakeChm.cmake
index ae773eb..ef977f9 100644
--- a/cmake/MakeChm.cmake
+++ b/cmake/MakeChm.cmake
@@ -53,7 +53,6 @@ foreach(src_xml ${entities})
     endforeach()
 endforeach()
 
-
 set(HHP "${HHP};${MAP}")
 string(REPLACE ";" "\n" HHP_OUT "${HHP}")
 string(REPLACE ";" "\n" HHMAP_OUT "${HHMAP}")

commit 9899639bd32b9e369da978bf1b026ff51145e248
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Fri Sep 6 19:48:57 2019 +0200

    CMake - Define options to enable or disable document formats
    
    The defaults depend on the target platform
    - Windows: only the chm format is enabled by default
    - Other: all but chm and mobi formats are enabled by default

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 404d8f6..0edfdbb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -35,7 +35,24 @@ unset(dist_files CACHE)
 # ############################################################
 # These options are settable from the CMake command line. For example,
 # to enable mobi, put -D WITH_MOBI=ON on the command line.
-
+# To mimic the autotools' behaviour the targets enabled by default
+# are different for Windows vs the other supported platforms.
+# On windows only chm is enabled by default
+# On any other platform chm and mobi are disabled by default
+
+if(NOT WIN32)
+    option (WITH_XML "Enable build rules for xml document format" ON)
+    option (WITH_HTML "Enable build rules for html document format" ON)
+    option (WITH_PDF "Enable build rules for pdf document format" ON)
+    option (WITH_EPUB "Enable build rules for epub document format" ON)
+    option (WITH_CHM "Enable build rules for chm document format" OFF)
+else()
+    option (WITH_XML "Enable build rules for xml document format" OFF)
+    option (WITH_HTML "Enable build rules for html document format" OFF)
+    option (WITH_PDF "Enable build rules for pdf document format" OFF)
+    option (WITH_EPUB "Enable build rules for epub document format" OFF)
+    option (WITH_CHM "Enable build rules for chm document format" ON)
+endif()
 option (WITH_MOBI "Enable build rules for Mobipocket document format" OFF)
 
 # ############################################################
@@ -74,21 +91,22 @@ if(NOT XMLLINT)
 endif(NOT XMLLINT)
 
 # Check for optional fop
-set (PDF YES)
-find_program(FOP fop)
-if(NOT FOP)
-    message(WARNING "Can't find fop. You will not be able to generate PDF files.")
-    set (PDF NO)
-endif(NOT FOP)
-
-set(MOBI NO)
+if(WITH_PDF)
+    find_program(FOP fop)
+    if(NOT FOP)
+        message(WARNING "Can't find fop. You will not be able to generate PDF files.")
+        set (WITH_PDF OFF)
+    endif(NOT FOP)
+endif()
+
 if(WITH_MOBI)
     find_program(EBOOK_CONVERT ebook-convert)
-    if (EBOOK_CONVERT)
-        set(MOBI YES)
-    else()
+    if (NOT EBOOK_CONVERT)
+        set(WITH_MOBI OFF)
         message(SEND_ERROR "Couldn't find ebook-convert required for mobi file format support. Please install the Calibre package: https://www.calibre-ebook.com/")
     endif()
+    # Mobi is based on epub so enable epub if mobi is requested
+    set(WITH_EPUB ON)
 else()
     message(STATUS "Mobi file format support is disabled.  Specify -DWITH_MOBY=ON if you want to enable it.")
 endif()
@@ -104,32 +122,43 @@ set (FOP_XCONF_DFLT "${CMAKE_SOURCE_DIR}/fop.xconf.in")
 set (FOP_XCONF "${FOP_XCONF_DFLT}")
 
 # Find the htmlhelp compiler for chm output
-if(WIN32)
-    find_program(HHC hhc.exe
-        PATHS "c:/Program Files (x86)/Html Help Workshop" "c:/Program Files/Html Help Workshop")
-    if(NOT HHC)
-        message(ERROR "Html Help Workshop not found")
-    endif()
-else(WIN32)
-    find_program(HHC chmcmd)
-    if(NOT HHC)
-        message(STATUS "Free Pascal's chmcmd not found. The chm build rules will not be able to generate the final chm file, but are still enabled for debugging purposes.")
-    endif()
-endif(WIN32)
+if(WITH_CHM)
+    if(WIN32)
+        find_program(HHC hhc.exe
+            PATHS "c:/Program Files (x86)/Html Help Workshop" "c:/Program Files/Html Help Workshop")
+        if(NOT HHC)
+            message(SEND_ERROR "Html Help Workshop not found")
+        endif()
+    else(WIN32)
+        find_program(HHC chmcmd)
+        if(NOT HHC)
+            set(WITH_CHM OFF)
+            message(WARNING "Free Pascal's chmcmd not found. Chm related targets will be disabled.")
+        endif()
+    endif(WIN32)
+endif(WITH_CHM)
 
 # The global targets. Their dependencies will be filled in by subsequent commands in
 # the respective subdirectories.
-add_custom_target(html)
 add_custom_target(check)
-add_custom_target(xml)
-if (PDF)
+if (WITH_HTML)
+    add_custom_target(html)
+endif()
+if (WITH_XML)
+    add_custom_target(xml)
+endif()
+if (WITH_PDF)
     add_custom_target(pdf)
 endif()
-add_custom_target(epub)
-if (MOBI)
+if (WITH_EPUB)
+    add_custom_target(epub)
+endif()
+if (WITH_MOBI)
     add_custom_target(mobi)
 endif()
-add_custom_target(chm)
+if (WITH_CHM)
+    add_custom_target(chm)
+endif()
 
 
 add_subdirectory (guide)
diff --git a/cmake/AddEpubTarget.cmake b/cmake/AddEpubTarget.cmake
index da241aa..515ece8 100644
--- a/cmake/AddEpubTarget.cmake
+++ b/cmake/AddEpubTarget.cmake
@@ -39,7 +39,7 @@ function (add_mobi_target docname lang)
     add_custom_target("${lang}-${docname}-mobi"
         COMMAND ${EBOOK_CONVERT} ${epubfile} ${mobifile}
         BYPRODUCTS "${mobifile}"
-        DEPENDS "${epubfile}")
+        DEPENDS "${lang}-${docname}-epub")
 
     add_dependencies(${docname}-mobi "${lang}-${docname}-mobi")
 
diff --git a/cmake/AddGncDocTargets.cmake b/cmake/AddGncDocTargets.cmake
index cf4c277..a6d2f04 100644
--- a/cmake/AddGncDocTargets.cmake
+++ b/cmake/AddGncDocTargets.cmake
@@ -3,14 +3,23 @@ function (add_gnc_doc_targets docname entities)
     get_filename_component(lang ${CMAKE_CURRENT_SOURCE_DIR} NAME)
 
     if(entities)
-        add_chm_target(${docname} ${lang} "${entities}" figures)
-        add_xml_target(${docname} ${lang} "${entities}" figures)
-        add_html_target(${docname} ${lang} "${entities}" figures)
-        if (PDF)
+        add_check_target(${docname} ${lang} "${entities}" figures)
+        if (WITH_CHM)
+            add_chm_target(${docname} ${lang} "${entities}" figures)
+        endif()
+        if (WITH_XML)
+            add_xml_target(${docname} ${lang} "${entities}" figures)
+        endif()
+        if (WITH_HTML)
+            add_html_target(${docname} ${lang} "${entities}" figures)
+        endif()
+        if (WITH_PDF)
             add_pdf_target(${docname} ${lang} "${entities}" figures)
         endif()
-        add_epub_target(${docname} ${lang} "${entities}" figures)
-        if (MOBI)
+        if (WITH_EPUB)
+            add_epub_target(${docname} ${lang} "${entities}" figures)
+        endif()
+        if (WITH_MOBI)
             add_mobi_target(${docname} ${lang})
         endif()
     endif()
diff --git a/cmake/AddXmlTarget.cmake b/cmake/AddXmlTarget.cmake
index 21189c5..a74c9bf 100644
--- a/cmake/AddXmlTarget.cmake
+++ b/cmake/AddXmlTarget.cmake
@@ -21,7 +21,10 @@ function (add_xml_target docname lang entities figdir)
     install(FILES ${figures}
         DESTINATION "${CMAKE_INSTALL_DATADIR}/gnome/help/${docname}/${lang}/${figdir}"
         COMPONENT "${docname}-xml")
+endfunction()
+
 
+function (add_check_target docname lang entities figdir)
     add_custom_target("${lang}-${docname}-check"
         COMMAND  ${XMLLINT} --postvalid
                             --xinclude
@@ -32,8 +35,4 @@ function (add_xml_target docname lang entities figdir)
 
     add_dependencies(${docname}-check "${lang}-${docname}-check")
 
-# TODO Uninstall target
-# uninstall-hook:
-# 	rmdir --ignore-fail-on-non-empty "$(DESTDIR)$(gnomehelpfiguresdir)"
-# 	rmdir --ignore-fail-on-non-empty "$(DESTDIR)$(gnomehelpdir)"
 endfunction()
diff --git a/guide/CMakeLists.txt b/guide/CMakeLists.txt
index 86633bf..2048a53 100644
--- a/guide/CMakeLists.txt
+++ b/guide/CMakeLists.txt
@@ -1,31 +1,38 @@
 set (docname "gnucash-guide")
 
-add_custom_target(${docname}-html)
-add_dependencies(html ${docname}-html)
-
 add_custom_target(${docname}-check)
 add_dependencies(check ${docname}-check)
 
-add_custom_target(${docname}-xml
-    DEPENDS ${docname}-check
-)
-add_dependencies(xml ${docname}-xml)
+if (WITH_HTML)
+    add_custom_target(${docname}-html)
+    add_dependencies(html ${docname}-html)
+endif()
+
+if (WITH_XML)
+    add_custom_target(${docname}-xml
+        DEPENDS ${docname}-check)
+    add_dependencies(xml ${docname}-xml)
+endif()
 
-if (PDF)
+if (WITH_PDF)
     add_custom_target(${docname}-pdf)
     add_dependencies(pdf ${docname}-pdf)
 endif()
 
-add_custom_target(${docname}-epub)
-add_dependencies(epub ${docname}-epub)
+if (WITH_EPUB)
+    add_custom_target(${docname}-epub)
+    add_dependencies(epub ${docname}-epub)
+endif()
 
-if (MOBI)
+if (WITH_MOBI)
     add_custom_target(${docname}-mobi)
     add_dependencies(mobi ${docname}-mobi)
 endif()
 
-add_custom_target(${docname}-chm)
-add_dependencies(chm ${docname}-chm)
+if (WITH_CHM)
+    add_custom_target(${docname}-chm)
+    add_dependencies(chm ${docname}-chm)
+endif()
 
 add_subdirectory(C)
 add_subdirectory(de)
diff --git a/help/CMakeLists.txt b/help/CMakeLists.txt
index 6aabf28..aa52ae0 100644
--- a/help/CMakeLists.txt
+++ b/help/CMakeLists.txt
@@ -1,31 +1,38 @@
 set (docname "gnucash-help")
 
-add_custom_target(${docname}-html)
-add_dependencies(html ${docname}-html)
-
 add_custom_target(${docname}-check)
 add_dependencies(check ${docname}-check)
 
-add_custom_target(${docname}-xml
-    DEPENDS ${docname}-check
-)
-add_dependencies(xml ${docname}-xml)
+if (WITH_HTML)
+    add_custom_target(${docname}-html)
+    add_dependencies(html ${docname}-html)
+endif()
+
+if (WITH_XML)
+    add_custom_target(${docname}-xml
+        DEPENDS ${docname}-check)
+    add_dependencies(xml ${docname}-xml)
+endif()
 
-if (PDF)
+if (WITH_PDF)
     add_custom_target(${docname}-pdf)
     add_dependencies(pdf ${docname}-pdf)
 endif()
 
-add_custom_target(${docname}-epub)
-add_dependencies(epub ${docname}-epub)
+if (WITH_EPUB)
+    add_custom_target(${docname}-epub)
+    add_dependencies(epub ${docname}-epub)
+endif()
 
-if (MOBI)
+if (WITH_MOBI)
     add_custom_target(${docname}-mobi)
     add_dependencies(mobi ${docname}-mobi)
 endif()
 
-add_custom_target(${docname}-chm)
-add_dependencies(chm ${docname}-chm)
+if (WITH_CHM)
+    add_custom_target(${docname}-chm)
+    add_dependencies(chm ${docname}-chm)
+endif()
 
 add_subdirectory(C)
 add_subdirectory(de)

commit ac183ad9135f62d36cdaff7111926abee0a4feb3
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Fri Sep 6 19:13:26 2019 +0200

    CMake - Add uninstall target

diff --git a/CMakeLists.txt b/CMakeLists.txt
index fefa165..404d8f6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -201,3 +201,12 @@ add_custom_target(distcheck DEPENDS dist
         )
 
 ############################# END MAKE DIST #################
+
+# uninstall target
+configure_file(
+        "${CMAKE_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
+        "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
+        @ONLY)
+
+add_custom_target(uninstall
+        COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
diff --git a/CMakeNotes.txt b/CMakeNotes.txt
index 05d2670..6a84f1a 100644
--- a/CMakeNotes.txt
+++ b/CMakeNotes.txt
@@ -8,10 +8,9 @@ Current status:
 - the common code to generate xml (install only) and html (build
   and install) has been ported to cmake commands
 - pdf, epub and mobi generation has been ported
-- dist and distcheck targets are implemented
+- dist and distcheck and uninstall targets are implemented
 
 To do:
-- provide uninstall functionality like in the gnucash cmake build system
 - handle the special build rules for it (guide and help)
 - add windows specific chm file generation
 
diff --git a/cmake/cmake_uninstall.cmake.in b/cmake/cmake_uninstall.cmake.in
new file mode 100644
index 0000000..f3b1d03
--- /dev/null
+++ b/cmake/cmake_uninstall.cmake.in
@@ -0,0 +1,23 @@
+# This is taken from https://cmake.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F
+
+if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+  message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+
+file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
+string(REGEX REPLACE "\n" ";" files "${files}")
+foreach(file ${files})
+  message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
+  if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+    exec_program(
+      "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
+      OUTPUT_VARIABLE rm_out
+      RETURN_VALUE rm_retval
+      )
+    if(NOT "${rm_retval}" STREQUAL 0)
+      message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
+    endif(NOT "${rm_retval}" STREQUAL 0)
+  else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+    message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
+  endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+endforeach(file)

commit ee29380ca75fb3af0b559a578271aea289de7252
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Fri Sep 6 19:03:15 2019 +0200

    CMake - revisit build and install file locations
    
    - add install rules only for xml (gnome-help) and chm (windows help).
      For the other documentation formats there's not much use as they
      are not typically installed
    - at build time mimic the install locations. That is all final documents
      that we build will be stored under BUILD_DIR/share/doc/gnucash-docs/LANG
      You will find there a directory for the html format and the final documents
      for the other formats (pdf, chm, epub, mobi)
    - files that are only needed to build the end document formats will
      remain in the traditional build directories
      (BUILDDIR/guide/LANG and BUILDDIR/help/LANG)
      These are for example the intermediate fo file (which is used
      for final pdf generation), the fop xconf file, a temporary directory
      used for epub generation,...

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b6b7023..fefa165 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -52,6 +52,10 @@ set(JAPANESE_MINCHO_TTF "ume-tmo3.ttf" CACHE STRING "Mincho TrueType font used f
 set(JAPANESE_GOTHIC_TTF "ume-tmo3.ttf" CACHE STRING "Gothic TrueType font used for Japanese pdf")
 set(japanese_fontdir "${CMAKE_SOURCE_DIR}/fonts/truetype" CACHE STRING "Directory to search for Japanese fonts")
 
+# Buildtime destination directories for our generated documentation
+set(DATADIR_BUILD "${CMAKE_BINARY_DIR}/share")
+set(DOCDIR_BUILD  "${DATADIR_BUILD}/doc/${PACKAGE}")
+
 # ############################################################
 # Find the documentation dependencies
 
diff --git a/cmake/AddChmTarget.cmake b/cmake/AddChmTarget.cmake
index 61aebc7..28cf33b 100644
--- a/cmake/AddChmTarget.cmake
+++ b/cmake/AddChmTarget.cmake
@@ -3,6 +3,9 @@ function (add_chm_target docname lang entities figdir)
     set(chmfile "${docname}.chm")
     set(mapfile "${docname}.hhmap")
 
+    set(BUILD_DIR "${DOCDIR_BUILD}/${lang}")
+    file(MAKE_DIRECTORY "${BUILD_DIR}")
+
     file(GLOB figures "${CMAKE_CURRENT_SOURCE_DIR}/${figdir}/*.png")
 
     file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/htmlhelp")
@@ -12,15 +15,22 @@ function (add_chm_target docname lang entities figdir)
            -D SRC_DIR=${CMAKE_SOURCE_DIR}
            -D CURRENT_SRC_DIR=${CMAKE_CURRENT_SOURCE_DIR}
            -D CURRENT_BIN_DIR=${CMAKE_CURRENT_BINARY_DIR}
+           -D BUILD_DIR=${BUILD_DIR}
            -D XSLTPROC=${XSLTPROC}
            "-DXSLTPROCFLAGS=\"${XSLTPROCFLAGS}\""
            "-Dentities=\"${entities}\""
            -D HHC=${HHC}
            -P ${CMAKE_SOURCE_DIR}/cmake/MakeChm.cmake
-        # TODO amend htmlhelp.hhp, create mymaps and htmlhelp.hhmap, run hhc
+        BYPRODUCTS "${BUILD_DIR}/${chmfile}" "${BUILD_DIR}/${mapfile}"
         DEPENDS ${entities} "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd" ${figures}
         WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/htmlhelp")
 
     add_dependencies(${docname}-chm "${lang}-${docname}-chm")
 
+    install(FILES
+            "${BUILD_DIR}/${chmfile}"
+            "${BUILD_DIR}/${mapfile}"
+        DESTINATION "${CMAKE_INSTALL_DOCDIR}/${lang}"
+        COMPONENT "${docname}-chm")
+
 endfunction()
diff --git a/cmake/AddEpubTarget.cmake b/cmake/AddEpubTarget.cmake
index c2498eb..da241aa 100644
--- a/cmake/AddEpubTarget.cmake
+++ b/cmake/AddEpubTarget.cmake
@@ -1,9 +1,12 @@
 function (add_epub_target docname lang entities figdir)
 
     set(epubfile "${docname}.epub")
-    set(EPUB_TMPDIR "${CMAKE_CURRENT_BINARY_DIR}/epub_tmp")
+    set(EPUB_TMPDIR "${CMAKE_CURRENT_BINARY_DIR}/epub")
     file(GLOB figures "${CMAKE_CURRENT_SOURCE_DIR}/${figdir}/*.png")
 
+    set(BUILD_DIR "${DOCDIR_BUILD}/${lang}")
+    file(MAKE_DIRECTORY "${BUILD_DIR}")
+
     add_custom_target("${lang}-${docname}-epub"
         COMMAND rm -fr "${EPUB_TMPDIR}"
         COMMAND mkdir "${EPUB_TMPDIR}"
@@ -17,26 +20,27 @@ function (add_epub_target docname lang entities figdir)
                             "${CMAKE_SOURCE_DIR}/xsl/1.79.2/epub/docbook.xsl"
                             "${CMAKE_CURRENT_SOURCE_DIR}/${docname}.xml"
         COMMAND cmake -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/figures" "${EPUB_TMPDIR}/OEBPS/figures"
-        COMMAND cd "${EPUB_TMPDIR}" && zip -X -r ../${epubfile} mimetype META-INF OEBPS
+        COMMAND cd "${EPUB_TMPDIR}" && zip -X -r "${BUILD_DIR}/${epubfile}" mimetype META-INF OEBPS
+        BYPRODUCTS "${BUILD_DIR}/${epubfile}"
         DEPENDS ${entities} "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd" ${figures})
 
     add_dependencies(${docname}-epub "${lang}-${docname}-epub")
 
-#     CLEANFILES += $(epubfile)
-
 endfunction()
 
 function (add_mobi_target docname lang)
 
-    set(epubfile "${CMAKE_CURRENT_BINARY_DIR}/${docname}.epub")
-    set(mobifile "${CMAKE_CURRENT_BINARY_DIR}/${docname}.mobi")
+    set(BUILD_DIR "${DOCDIR_BUILD}/${lang}")
+    file(MAKE_DIRECTORY "${BUILD_DIR}")
+
+    set(epubfile "${BUILD_DIR}/${docname}.epub")
+    set(mobifile "${BUILD_DIR}/${docname}.mobi")
 
     add_custom_target("${lang}-${docname}-mobi"
         COMMAND ${EBOOK_CONVERT} ${epubfile} ${mobifile}
-        DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${docname}.epub")
+        BYPRODUCTS "${mobifile}"
+        DEPENDS "${epubfile}")
 
     add_dependencies(${docname}-mobi "${lang}-${docname}-mobi")
 
-#     CLEANFILES += $(epubfile)
-
 endfunction()
diff --git a/cmake/AddHtmlTarget.cmake b/cmake/AddHtmlTarget.cmake
index 40417e8..4e4c05a 100644
--- a/cmake/AddHtmlTarget.cmake
+++ b/cmake/AddHtmlTarget.cmake
@@ -14,15 +14,14 @@ function (add_html_target docname lang entities figdir)
     set(styledir "${CMAKE_SOURCE_DIR}/stylesheet")
     file(GLOB styleicons "${CMAKE_SOURCE_DIR}/stylesheet/*.png")
 
-    # TODO clean target
-    #CLEANFILES += $(docname)/*.html
+    set(BUILD_DIR "${DOCDIR_BUILD}/${lang}/${docname}")
+    file(MAKE_DIRECTORY "${BUILD_DIR}")
 
     # Convert xml to html with xsltproc
     # xsltproc --xinclude -o outputdir/ /usr/share/sgml/docbook/xsl-stylesheets/html/chunk.xsl filename.xml
-    file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${docname}")
     add_custom_target("${lang}-${docname}-html-files"
         COMMAND  ${XSLTPROC} ${XSLTPROCFLAGS} ${XSLTPROCFLAGS_HTML}
-                             -o "${CMAKE_CURRENT_BINARY_DIR}/${docname}/"
+                             -o "${BUILD_DIR}/"
                              --param use.id.as.filename "1"
                              --stringparam chunker.output.encoding UTF-8
                              "${CMAKE_SOURCE_DIR}/xsl/general-customization.xsl"
@@ -30,15 +29,15 @@ function (add_html_target docname lang entities figdir)
         DEPENDS ${entities} "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd")
 
     # Copy figures for this document
-    file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${docname}/${figdir}")
+    file(MAKE_DIRECTORY "${BUILD_DIR}/${figdir}")
     add_custom_target("${lang}-${docname}-html-figures"
-        COMMAND  ${CMAKE_COMMAND} -E copy ${figures} "${CMAKE_CURRENT_BINARY_DIR}/${docname}/${figdir}"
+        COMMAND  ${CMAKE_COMMAND} -E copy ${figures} "${BUILD_DIR}/${figdir}"
         DEPENDS ${figures})
 
     # Copy style icons for this document (warning, info,...)
-    file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${docname}/stylesheet")
+    file(MAKE_DIRECTORY "${BUILD_DIR}/stylesheet")
     add_custom_target("${lang}-${docname}-html-style"
-        COMMAND  ${CMAKE_COMMAND} -E copy ${styleicons} "${CMAKE_CURRENT_BINARY_DIR}/${docname}/stylesheet"
+        COMMAND  ${CMAKE_COMMAND} -E copy ${styleicons} "${BUILD_DIR}/stylesheet"
         DEPENDS ${styleicons})
 
     add_custom_target("${lang}-${docname}-html"
@@ -46,30 +45,4 @@ function (add_html_target docname lang entities figdir)
 
     add_dependencies(${docname}-html "${lang}-${docname}-html")
 
-    install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${docname}
-        DESTINATION "${CMAKE_INSTALL_DOCDIR}/${PACKAGE_NAME}/${lang}"
-        COMPONENT "${lang}-${docname}-html")
-
-    # TODO uninstall target
-#     uninstall-html:
-#             -if test "$(docname)"; then \
-#                 if test "$(figdir)"; then \
-#                     for file in $(docname)/$(figdir)/*.png; do \
-#                         basefile=`basename $$file`; \
-#                         rm -f "$(DESTDIR)$(otherdocdir)/$(docname)/$(figdir)/$$basefile"; \
-#                     done; \
-#                     rmdir --ignore-fail-on-non-empty "$(DESTDIR)$(otherdocdir)/$(docname)/$(figdir)"; \
-#                 fi; \
-#                 for file in $(styledir)/*.png; do \
-#                     basefile=`basename $$file`; \
-#                     rm -f "$(DESTDIR)$(otherdocdir)/$(docname)/stylesheet/$$basefile"; \
-#                 done; \
-#                 rmdir --ignore-fail-on-non-empty "$(DESTDIR)$(otherdocdir)/$(docname)/stylesheet"; \
-#                 for file in $(docname)/*.html; do \
-#                     basefile=`basename $$file`; \
-#                     rm -f "$(DESTDIR)$(otherdocdir)/$(docname)/$$basefile"; \
-#                 done; \
-#                 rmdir --ignore-fail-on-non-empty "$(DESTDIR)$(otherdocdir)/$(docname)"; \
-#                 rmdir --ignore-fail-on-non-empty "$(DESTDIR)$(otherdocdir)"; \
-#             fi
 endfunction()
diff --git a/cmake/AddPdfTarget.cmake b/cmake/AddPdfTarget.cmake
index b1af7ac..4d96226 100644
--- a/cmake/AddPdfTarget.cmake
+++ b/cmake/AddPdfTarget.cmake
@@ -4,6 +4,9 @@ function (add_pdf_target docname lang entities figdir)
     set(pdffile "${docname}.pdf")
     file(GLOB figures "${CMAKE_CURRENT_SOURCE_DIR}/${figdir}/*.png")
 
+    set(BUILD_DIR "${DOCDIR_BUILD}/${lang}")
+    file(MAKE_DIRECTORY "${BUILD_DIR}")
+
     # Determine paper format depending on language (which maps to the document's directory name)
     # * for language "C" (fallback language) determine paper format based on current locale
     # * for other languages, the will be set to letter. All others use A4.
@@ -23,6 +26,7 @@ function (add_pdf_target docname lang entities figdir)
                             --stringparam fop1.extensions 1
                             "${CMAKE_SOURCE_DIR}/xsl/1.79.2/fo/docbook.xsl"
                             "${CMAKE_CURRENT_SOURCE_DIR}/${docname}.xml"
+        BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/${fofile}"
         DEPENDS ${entities} "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd")
 
     configure_file("${FOP_XCONF}" "${CMAKE_CURRENT_BINARY_DIR}/fop.xconf")
@@ -31,7 +35,8 @@ function (add_pdf_target docname lang entities figdir)
                         -l ${lang}
                         -c "${CMAKE_CURRENT_BINARY_DIR}/fop.xconf"
                         -fo "${CMAKE_CURRENT_BINARY_DIR}/${fofile}"
-                        -pdf "${CMAKE_CURRENT_BINARY_DIR}/${pdffile}"
+                        -pdf "${BUILD_DIR}/${pdffile}"
+        BYPRODUCTS "${BUILD_DIR}/${pdffile}"
         DEPENDS ${lang}-${docname}-fo ${figures})
 
     add_dependencies(${docname}-pdf "${lang}-${docname}-pdf")
diff --git a/cmake/AddXmlTarget.cmake b/cmake/AddXmlTarget.cmake
index 9c1a13d..21189c5 100644
--- a/cmake/AddXmlTarget.cmake
+++ b/cmake/AddXmlTarget.cmake
@@ -17,10 +17,10 @@ function (add_xml_target docname lang entities figdir)
 
     install(FILES ${xml_files}
         DESTINATION "${CMAKE_INSTALL_DATADIR}/gnome/help/${docname}/${lang}"
-        COMPONENT "${lang}-${docname}-xml")
+        COMPONENT "${docname}-xml")
     install(FILES ${figures}
         DESTINATION "${CMAKE_INSTALL_DATADIR}/gnome/help/${docname}/${lang}/${figdir}"
-        COMPONENT "${lang}-${docname}-xml")
+        COMPONENT "${docname}-xml")
 
     add_custom_target("${lang}-${docname}-check"
         COMMAND  ${XMLLINT} --postvalid
@@ -32,10 +32,8 @@ function (add_xml_target docname lang entities figdir)
 
     add_dependencies(${docname}-check "${lang}-${docname}-check")
 
-# TODO Uninstall and dist targets
+# TODO Uninstall target
 # uninstall-hook:
 # 	rmdir --ignore-fail-on-non-empty "$(DESTDIR)$(gnomehelpfiguresdir)"
 # 	rmdir --ignore-fail-on-non-empty "$(DESTDIR)$(gnomehelpdir)"
-#
-# EXTRA_DIST = ${xml_files} ${omffile} ${figures}
 endfunction()
diff --git a/cmake/MakeChm.cmake b/cmake/MakeChm.cmake
index 46f62bf..ae773eb 100644
--- a/cmake/MakeChm.cmake
+++ b/cmake/MakeChm.cmake
@@ -58,11 +58,13 @@ set(HHP "${HHP};${MAP}")
 string(REPLACE ";" "\n" HHP_OUT "${HHP}")
 string(REPLACE ";" "\n" HHMAP_OUT "${HHMAP}")
 file(APPEND "${htmlhelpdir}/htmlhelp.hhp" ${HHP_OUT})
-file(WRITE "${CURRENT_BIN_DIR}/htmlhelp/${mapfile}" ${HHMAP_OUT})
+file(WRITE "${BUILD_DIR}/${mapfile}" ${HHMAP_OUT})
 
 execute_process(
     COMMAND ${HHC} htmlhelp.hhp
-    WORKING_DIRECTORY "${CURRENT_BIN_DIR}/htmlhelp"
-#    OUTPUT_QUIET
-#    ERROR_QUIET
+    WORKING_DIRECTORY "${htmlhelpdir}"
+    OUTPUT_QUIET
+    ERROR_QUIET
 )
+
+file(COPY "${htmlhelpdir}/${docname}.chm" DESTINATION "${BUILD_DIR}")

commit 715f7fa0e69b33b079f1b847cfe009147bcae398
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Wed Sep 4 22:07:49 2019 +0200

    CMake - add chm target for windows documentation

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9332fcd..b6b7023 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,6 +20,7 @@ set (PACKAGE_URL "https://www.gnucash.org/")
 
 # Extra cmake macros
 set (CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}")
+include (AddChmTarget)
 include (AddEpubTarget)
 include (AddHtmlTarget)
 include (AddPdfTarget)
@@ -98,21 +99,19 @@ endif()
 set (FOP_XCONF_DFLT "${CMAKE_SOURCE_DIR}/fop.xconf.in")
 set (FOP_XCONF "${FOP_XCONF_DFLT}")
 
-#
-# ac_cv_gnc_windows="no"
-# case $host_os in
-#   mingw*)
-#   ac_cv_gnc_windows="yes"
-#   AC_PATH_PROG([HHC], hhc.exe, [hhc_not_found], [/c/Program Files (x86)/Html Help Workshop:/c/Program Files/Html Help Workshop])
-#   if test ! -x "${HHC}"; then
-#      AC_MSG_ERROR([Html Help Workshop Not Found])
-#   fi
-#   AM_EXTRA_RECURSIVE_TARGETS([chm install-chm])
-#   ;;
-#   *)
-#   ;;
-# esac
-# AM_CONDITIONAL([GNC_WINDOWS], [test x${ac_cv_gnc_windows} = "xyes"])
+# Find the htmlhelp compiler for chm output
+if(WIN32)
+    find_program(HHC hhc.exe
+        PATHS "c:/Program Files (x86)/Html Help Workshop" "c:/Program Files/Html Help Workshop")
+    if(NOT HHC)
+        message(ERROR "Html Help Workshop not found")
+    endif()
+else(WIN32)
+    find_program(HHC chmcmd)
+    if(NOT HHC)
+        message(STATUS "Free Pascal's chmcmd not found. The chm build rules will not be able to generate the final chm file, but are still enabled for debugging purposes.")
+    endif()
+endif(WIN32)
 
 # The global targets. Their dependencies will be filled in by subsequent commands in
 # the respective subdirectories.
@@ -126,6 +125,7 @@ add_custom_target(epub)
 if (MOBI)
     add_custom_target(mobi)
 endif()
+add_custom_target(chm)
 
 
 add_subdirectory (guide)
diff --git a/cmake/AddChmTarget.cmake b/cmake/AddChmTarget.cmake
new file mode 100644
index 0000000..61aebc7
--- /dev/null
+++ b/cmake/AddChmTarget.cmake
@@ -0,0 +1,26 @@
+function (add_chm_target docname lang entities figdir)
+
+    set(chmfile "${docname}.chm")
+    set(mapfile "${docname}.hhmap")
+
+    file(GLOB figures "${CMAKE_CURRENT_SOURCE_DIR}/${figdir}/*.png")
+
+    file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/htmlhelp")
+    add_custom_target("${lang}-${docname}-chm"
+        COMMAND ${CMAKE_COMMAND} -v
+           -D docname=${docname}
+           -D SRC_DIR=${CMAKE_SOURCE_DIR}
+           -D CURRENT_SRC_DIR=${CMAKE_CURRENT_SOURCE_DIR}
+           -D CURRENT_BIN_DIR=${CMAKE_CURRENT_BINARY_DIR}
+           -D XSLTPROC=${XSLTPROC}
+           "-DXSLTPROCFLAGS=\"${XSLTPROCFLAGS}\""
+           "-Dentities=\"${entities}\""
+           -D HHC=${HHC}
+           -P ${CMAKE_SOURCE_DIR}/cmake/MakeChm.cmake
+        # TODO amend htmlhelp.hhp, create mymaps and htmlhelp.hhmap, run hhc
+        DEPENDS ${entities} "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd" ${figures}
+        WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/htmlhelp")
+
+    add_dependencies(${docname}-chm "${lang}-${docname}-chm")
+
+endfunction()
diff --git a/cmake/AddGncDocTargets.cmake b/cmake/AddGncDocTargets.cmake
index e3c14ec..cf4c277 100644
--- a/cmake/AddGncDocTargets.cmake
+++ b/cmake/AddGncDocTargets.cmake
@@ -3,6 +3,7 @@ function (add_gnc_doc_targets docname entities)
     get_filename_component(lang ${CMAKE_CURRENT_SOURCE_DIR} NAME)
 
     if(entities)
+        add_chm_target(${docname} ${lang} "${entities}" figures)
         add_xml_target(${docname} ${lang} "${entities}" figures)
         add_html_target(${docname} ${lang} "${entities}" figures)
         if (PDF)
diff --git a/cmake/MakeChm.cmake b/cmake/MakeChm.cmake
new file mode 100644
index 0000000..46f62bf
--- /dev/null
+++ b/cmake/MakeChm.cmake
@@ -0,0 +1,68 @@
+# Create CHM help files for Win32
+# Procedure translated to cmake from make_chm() in gnucash-on-windows.git:install-impl.sh,
+# originally written by Andreas Köhler.
+
+
+set(chmfile "${docname}.chm")
+set(mapfile "${docname}.hhmap")
+set(htmlhelpdir "${CURRENT_BIN_DIR}/htmlhelp")
+
+#string(REPLACE ";" " " xlstprocflagslst "${XSLTPROCFLAGS}")
+#message(STATUS "XSLTPROCFLAGS: ${XSLTPROCFLAGS}\nxlstprocflagslst: ${xlstprocflagslst}")
+
+set(htmlhelp_xsl "http://docbook.sourceforge.net/release/xsl/current/htmlhelp/htmlhelp.xsl")
+
+execute_process(
+    # FIXME Reusing ${XSLTPROCFLAGS} fails as xsltproc gets this as one single parameter instead of 3...
+    COMMAND ${XSLTPROC} --path "${SRC_DIR}/docbook" --xinclude
+                        --stringparam htmlhelp.chm ${chmfile}
+                        "${SRC_DIR}/xsl/1.79.2/htmlhelp/htmlhelp.xsl"
+                        "${CURRENT_SRC_DIR}/${docname}.xml"
+    WORKING_DIRECTORY "${htmlhelpdir}")
+
+file(COPY "${CURRENT_SRC_DIR}/figures" DESTINATION "${htmlhelpdir}")
+
+set(count 0)
+set(HPP "")
+list(APPEND HHP "" "[ALIAS]" "IDH_0=index.html")
+set(MAP "")
+list(APPEND MAP "" "[MAP]" "#define IDH_0 0")
+set(HHMAP "[MAP]")
+message(STATUS "Searching for anchors...")
+
+file(GLOB allhtml RELATIVE "${htmlhelpdir}" "${htmlhelpdir}/*.html")
+foreach(src_xml ${entities})
+    file(STRINGS "${CURRENT_SRC_DIR}/${src_xml}" sectlines REGEX "sect.*id=[\"'][^\"']*[\"']")
+    foreach(sectline ${sectlines})
+        string(REGEX REPLACE ".*sect.*id=[\"']([^\"']*)[\"'].*" "\\1" sectid ${sectline})
+        #message(STATUS "allhtml: ${allhtml}\nsectline: ${sectline}\nsrc_xml: ${sectid}")
+        unset(html_id_file)
+        foreach(htmlfile ${allhtml})
+            file(STRINGS "${htmlhelpdir}/${htmlfile}" searchresult REGEX "[\"']${sectid}[\"']")
+            if(searchresult)
+                set(html_id_file ${htmlfile})
+                break()
+            endif()
+        endforeach()
+        if(html_id_file)
+            MATH(EXPR count "${count}+1")
+            list(APPEND HHP "IDH_${count}=${html_id_file}#${sectid}")
+            list(APPEND MAP "#define IDH_${count} ${count}")
+            list(APPEND HHMAP "${sectid}=${count}")
+        endif()
+    endforeach()
+endforeach()
+
+
+set(HHP "${HHP};${MAP}")
+string(REPLACE ";" "\n" HHP_OUT "${HHP}")
+string(REPLACE ";" "\n" HHMAP_OUT "${HHMAP}")
+file(APPEND "${htmlhelpdir}/htmlhelp.hhp" ${HHP_OUT})
+file(WRITE "${CURRENT_BIN_DIR}/htmlhelp/${mapfile}" ${HHMAP_OUT})
+
+execute_process(
+    COMMAND ${HHC} htmlhelp.hhp
+    WORKING_DIRECTORY "${CURRENT_BIN_DIR}/htmlhelp"
+#    OUTPUT_QUIET
+#    ERROR_QUIET
+)
diff --git a/guide/CMakeLists.txt b/guide/CMakeLists.txt
index b099e2b..86633bf 100644
--- a/guide/CMakeLists.txt
+++ b/guide/CMakeLists.txt
@@ -24,6 +24,9 @@ if (MOBI)
     add_dependencies(mobi ${docname}-mobi)
 endif()
 
+add_custom_target(${docname}-chm)
+add_dependencies(chm ${docname}-chm)
+
 add_subdirectory(C)
 add_subdirectory(de)
 add_subdirectory(it)
diff --git a/help/CMakeLists.txt b/help/CMakeLists.txt
index ab7aab2..6aabf28 100644
--- a/help/CMakeLists.txt
+++ b/help/CMakeLists.txt
@@ -24,6 +24,9 @@ if (MOBI)
     add_dependencies(mobi ${docname}-mobi)
 endif()
 
+add_custom_target(${docname}-chm)
+add_dependencies(chm ${docname}-chm)
+
 add_subdirectory(C)
 add_subdirectory(de)
 add_subdirectory(it)

commit 8cec38d55670d2858332d48db06287f4596533cf
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Wed Sep 4 16:14:06 2019 +0200

    CMake - Use xslt parameter to set chm file name

diff --git a/chm.make b/chm.make
index d91d9f8..ddc293f 100644
--- a/chm.make
+++ b/chm.make
@@ -19,7 +19,7 @@ install-chm-local: $(chmfile) $(mapfile)
 	$(INSTALL_DATA) $(mapfile) $(DESTDIR)$(docdir)/$(lang)
 
 .xml.chm:
-	${XSLTPROC} $(XSLTPROCFLAGS) ${htmlhelp_xsl} ${srcdir}/$(docname).xml
+	${XSLTPROC} $(XSLTPROCFLAGS) --stringparam htmlhelp.chm $(chmfile) ${htmlhelp_xsl} ${srcdir}/$(docname).xml
 	if test ! -d ${builddir}/figures ; then \
 		ln -s ${srcdir}/figures ${builddir} ; \
 	fi
@@ -41,7 +41,6 @@ install-chm-local: $(chmfile) $(mapfile)
 	cat mymaps >> htmlhelp.hhp
 	rm mymaps
 	"${HHC}" htmlhelp.hhp  >/dev/null  || true
-	mv htmlhelp.chm $(chmfile)
 	mv htmlhelp.hhmap $(mapfile)
 
 CLEANFILES += $(chmfile) $(mapfile) htmlhelp.hhp *.html toc.hhc

commit 2c6180f5ba509e2ce13a040f59f6abba28b141f9
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Wed Sep 4 15:13:50 2019 +0200

    CMake - Rename cmake modules for clarity
    
    This also moves the html rules to a separate file

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 32a76f7..9332fcd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,11 +20,12 @@ set (PACKAGE_URL "https://www.gnucash.org/")
 
 # Extra cmake macros
 set (CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}")
-include (xmldocs)
-include (pdf)
-include (epub)
-include (gnc_doc_targets)
-include (dist)
+include (AddEpubTarget)
+include (AddHtmlTarget)
+include (AddPdfTarget)
+include (AddXmlTarget)
+include (AddGncDocTargets)
+include (DistCommon)
 include (GNUInstallDirs)
 
 # Clear cache variables that will be filled later during the cmake run
diff --git a/cmake/epub.cmake b/cmake/AddEpubTarget.cmake
similarity index 100%
rename from cmake/epub.cmake
rename to cmake/AddEpubTarget.cmake
diff --git a/cmake/gnc_doc_targets.cmake b/cmake/AddGncDocTargets.cmake
similarity index 100%
rename from cmake/gnc_doc_targets.cmake
rename to cmake/AddGncDocTargets.cmake
diff --git a/cmake/xmldocs.cmake b/cmake/AddHtmlTarget.cmake
similarity index 71%
rename from cmake/xmldocs.cmake
rename to cmake/AddHtmlTarget.cmake
index 455e94e..40417e8 100644
--- a/cmake/xmldocs.cmake
+++ b/cmake/AddHtmlTarget.cmake
@@ -1,5 +1,5 @@
 #
-# Functions to generate xml (docbook) or html documentation
+# Functions to generate html documentation
 #
 # Paremeters:
 # - docname: basename of the main xml file. Will be used to locate
@@ -8,39 +8,6 @@
 # - entities: list of all xml files this document is composed of
 # - figdir: name of the directory holding the images
 
-# ************** Rules to install xml files for gnome-help ***********************
-function (add_xml_target docname lang entities figdir)
-
-    set(xml_files "${entities}")
-    list(APPEND xml_files "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd")
-    file(GLOB figures "${CMAKE_CURRENT_SOURCE_DIR}/${figdir}/*.png")
-
-    install(FILES ${xml_files}
-        DESTINATION "${CMAKE_INSTALL_DATADIR}/gnome/help/${docname}/${lang}"
-        COMPONENT "${lang}-${docname}-xml")
-    install(FILES ${figures}
-        DESTINATION "${CMAKE_INSTALL_DATADIR}/gnome/help/${docname}/${lang}/${figdir}"
-        COMPONENT "${lang}-${docname}-xml")
-
-    add_custom_target("${lang}-${docname}-check"
-        COMMAND  ${XMLLINT} --postvalid
-                            --xinclude
-                            --noout
-                            --path ${CMAKE_SOURCE_DIR}/docbook
-                            ${CMAKE_CURRENT_SOURCE_DIR}/${docname}.xml
-        DEPENDS ${entities} "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd")
-
-    add_dependencies(${docname}-check "${lang}-${docname}-check")
-
-# TODO Uninstall and dist targets
-# uninstall-hook:
-# 	rmdir --ignore-fail-on-non-empty "$(DESTDIR)$(gnomehelpfiguresdir)"
-# 	rmdir --ignore-fail-on-non-empty "$(DESTDIR)$(gnomehelpdir)"
-#
-# EXTRA_DIST = ${xml_files} ${omffile} ${figures}
-endfunction()
-
-# ************** Rules to make and install html documentation ********************
 function (add_html_target docname lang entities figdir)
 
     file(GLOB figures "${CMAKE_CURRENT_SOURCE_DIR}/${figdir}/*.png")
diff --git a/cmake/pdf.cmake b/cmake/AddPdfTarget.cmake
similarity index 100%
rename from cmake/pdf.cmake
rename to cmake/AddPdfTarget.cmake
diff --git a/cmake/AddXmlTarget.cmake b/cmake/AddXmlTarget.cmake
new file mode 100644
index 0000000..9c1a13d
--- /dev/null
+++ b/cmake/AddXmlTarget.cmake
@@ -0,0 +1,41 @@
+#
+# Functions to generate xml (docbook) documentation
+#
+# Paremeters:
+# - docname: basename of the main xml file. Will be used to locate
+#            this primary xml file and for various output files/directories
+# - lang: language of the current document
+# - entities: list of all xml files this document is composed of
+# - figdir: name of the directory holding the images
+
+# ************** Rules to install xml files for gnome-help ***********************
+function (add_xml_target docname lang entities figdir)
+
+    set(xml_files "${entities}")
+    list(APPEND xml_files "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd")
+    file(GLOB figures "${CMAKE_CURRENT_SOURCE_DIR}/${figdir}/*.png")
+
+    install(FILES ${xml_files}
+        DESTINATION "${CMAKE_INSTALL_DATADIR}/gnome/help/${docname}/${lang}"
+        COMPONENT "${lang}-${docname}-xml")
+    install(FILES ${figures}
+        DESTINATION "${CMAKE_INSTALL_DATADIR}/gnome/help/${docname}/${lang}/${figdir}"
+        COMPONENT "${lang}-${docname}-xml")
+
+    add_custom_target("${lang}-${docname}-check"
+        COMMAND  ${XMLLINT} --postvalid
+                            --xinclude
+                            --noout
+                            --path ${CMAKE_SOURCE_DIR}/docbook
+                            ${CMAKE_CURRENT_SOURCE_DIR}/${docname}.xml
+        DEPENDS ${entities} "${docname}.xml" "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd")
+
+    add_dependencies(${docname}-check "${lang}-${docname}-check")
+
+# TODO Uninstall and dist targets
+# uninstall-hook:
+# 	rmdir --ignore-fail-on-non-empty "$(DESTDIR)$(gnomehelpfiguresdir)"
+# 	rmdir --ignore-fail-on-non-empty "$(DESTDIR)$(gnomehelpdir)"
+#
+# EXTRA_DIST = ${xml_files} ${omffile} ${figures}
+endfunction()
diff --git a/cmake/dist.cmake b/cmake/DistCommon.cmake
similarity index 100%
rename from cmake/dist.cmake
rename to cmake/DistCommon.cmake
diff --git a/cmake/MakeDist.cmake b/cmake/MakeDist.cmake
index 76f17d1..7ae269e 100644
--- a/cmake/MakeDist.cmake
+++ b/cmake/MakeDist.cmake
@@ -8,7 +8,7 @@
 # 3. Create the tarball and compress it with gzip and bzip2.
 # 4. Then remove the dist directory.
 
-include(${CMAKE_MODULE_PATH}/dist.cmake)
+include(${CMAKE_MODULE_PATH}/DistCommon.cmake)
 
 function(make_dist PACKAGE_PREFIX GNUCASH_SOURCE_DIR BUILD_SOURCE_DIR)
 
diff --git a/cmake/MakeDistCheck.cmake b/cmake/MakeDistCheck.cmake
index abb2532..c634134 100644
--- a/cmake/MakeDistCheck.cmake
+++ b/cmake/MakeDistCheck.cmake
@@ -1,5 +1,5 @@
 
-include(${CMAKE_MODULE_PATH}/dist.cmake)
+include(${CMAKE_MODULE_PATH}/DistCommon.cmake)
 
 function(run_dist_check PACKAGE_PREFIX EXT)
 



Summary of changes:
 CMakeLists.txt                            | 121 +++++++++++++++-------
 CMakeNotes.txt                            |   3 +-
 ChangeLog                                 | 164 ++++++++++++++++++++++++++++++
 Makefile.am                               |  18 ++--
 NEWS                                      |   7 ++
 chm.make                                  |   3 +-
 cmake/AddChmTarget.cmake                  |  37 +++++++
 cmake/{epub.cmake => AddEpubTarget.cmake} |  35 ++++---
 cmake/AddGHelpTarget.cmake                |  54 ++++++++++
 cmake/AddGncDocTargets.cmake              |  57 +++++++++++
 cmake/AddHtmlTarget.cmake                 |  57 +++++++++++
 cmake/{pdf.cmake => AddPdfTarget.cmake}   |  20 ++--
 cmake/{dist.cmake => DistCommon.cmake}    |   0
 cmake/MakeChm.cmake                       |  69 +++++++++++++
 cmake/MakeDist.cmake                      |   2 +-
 cmake/MakeDistCheck.cmake                 |   2 +-
 cmake/cmake_uninstall.cmake.in            |  23 +++++
 cmake/gnc_doc_targets.cmake               |  33 ------
 cmake/xmldocs.cmake                       | 108 --------------------
 docbook/gnc-docbookx.dtd                  |   6 +-
 guide/C/gnucash-guide.xml                 |  12 ++-
 guide/CMakeLists.txt                      |  31 ++++--
 guide/de/gnucash-guide.xml                |  12 ++-
 guide/it/gnucash-guide.xml                |   8 ++
 guide/pt/gnucash-guide.xml                |  10 +-
 guide/ru/gnucash-guide.xml                |  12 ++-
 help/C/gnucash-help.xml                   |  12 ++-
 help/CMakeLists.txt                       |  31 ++++--
 help/de/gnucash-help.xml                  |  12 ++-
 help/it/gnucash-help.xml                  |   8 ++
 help/pt/gnucash-help.xml                  |   8 ++
 31 files changed, 727 insertions(+), 248 deletions(-)
 create mode 100644 cmake/AddChmTarget.cmake
 rename cmake/{epub.cmake => AddEpubTarget.cmake} (60%)
 create mode 100644 cmake/AddGHelpTarget.cmake
 create mode 100644 cmake/AddGncDocTargets.cmake
 create mode 100644 cmake/AddHtmlTarget.cmake
 rename cmake/{pdf.cmake => AddPdfTarget.cmake} (78%)
 rename cmake/{dist.cmake => DistCommon.cmake} (100%)
 create mode 100644 cmake/MakeChm.cmake
 create mode 100644 cmake/cmake_uninstall.cmake.in
 delete mode 100644 cmake/gnc_doc_targets.cmake
 delete mode 100644 cmake/xmldocs.cmake



More information about the gnucash-changes mailing list