File: AddXdgHelpTarget.cmake

package info (click to toggle)
gnucash-docs 5.13-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 164,260 kB
  • sloc: xml: 101,090; ruby: 229; makefile: 59; sh: 8
file content (98 lines) | stat: -rw-r--r-- 4,009 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#
# Functions to install the docbook xml sources for use with gnome help
#
# Paremeters:
# - targetbase: basename of the target to build. Will also be used
#               as part of 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_xdghelp_target targetbase lang entities figures)

    set(docname "gnucash-${targetbase}")
    set(BUILD_DIR_BASE "${DATADIR_BUILD}/help/${lang}")
    set(BUILD_DIR "${BUILD_DIR_BASE}/${docname}")

    # Define location where KDE's help system looks for <doc>
    # when invoked with help:<doc>
    set(kde_lang ${lang})
    if (lang STREQUAL "C")
        set(kde_lang "en")
    endif()
    set(BUILD_DIR_KDE_BASE "${DATADIR_BUILD}/doc/HTML")

    set(source_files "")
    foreach(xml_file ${entities} index.docbook)
        list(APPEND source_files "${CMAKE_CURRENT_SOURCE_DIR}/${xml_file}")
    endforeach()

    set(dtd_files "${CMAKE_SOURCE_DIR}/docbook/gnc-docbookx.dtd"
                  "${CMAKE_SOURCE_DIR}/docbook/gnc-gui-struct.dtd"
                  "${CMAKE_SOURCE_DIR}/docbook/gnc-gui-C.dtd"
                  "${CMAKE_SOURCE_DIR}/docbook/gnc-gui-${lang}.dtd")
    list(REMOVE_DUPLICATES dtd_files)
    list(APPEND source_files ${dtd_files})

    set(dest_files "")
    foreach(xml_file ${entities} index.docbook gnc-docbookx.dtd)
        list(APPEND dest_files "${BUILD_DIR}/${xml_file}")
    endforeach()

    add_custom_command(
      OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xdghelptrigger"
      COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_DIR}"
      COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_DIR}/figures"

      # Add links to make our documentation visible for KDE's help system
      COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_DIR_KDE_BASE}/${kde_lang}"
      COMMAND ${CMAKE_COMMAND} -E create_symlink "${BUILD_DIR}" "${BUILD_DIR_KDE_BASE}/${kde_lang}/${docname}"
      COMMAND touch "${CMAKE_CURRENT_BINARY_DIR}/xdghelptrigger")


    add_custom_command(
        OUTPUT ${dest_files}
        COMMAND ${CMAKE_COMMAND} -E copy ${source_files} "${BUILD_DIR}"
        DEPENDS ${entities} "index.docbook" ${dtd_files} "${CMAKE_CURRENT_BINARY_DIR}/xdghelptrigger"
        WORKING_DIRECTORY "${BUILD_DIR}")

    # Copy figures for this document
    set(source_figures "")
    foreach(figure ${figures})
        list(APPEND source_figures "${CMAKE_CURRENT_SOURCE_DIR}/${figure}")
    endforeach()

    set(dest_figures "")
    foreach(figure ${figures})
        list(APPEND dest_figures "${BUILD_DIR}/${figure}")
    endforeach()

    if(dest_figures)
        add_custom_command(
            OUTPUT ${dest_figures}
            COMMAND ${CMAKE_COMMAND} -E copy ${source_figures} "${BUILD_DIR}/figures"
            DEPENDS ${source_figures} "${CMAKE_CURRENT_BINARY_DIR}/xdghelptrigger")
    endif()

    add_custom_target("${lang}-${targetbase}-xdghelp"
        DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xdghelptrigger"
                 ${dest_files} ${dest_figures})

    add_dependencies(${lang}-xdghelp "${lang}-${targetbase}-xdghelp")

    set(doc_install_dir_base "${CMAKE_INSTALL_DATADIR}/help/${lang}")
    set(doc_install_dir "${doc_install_dir_base}/${docname}")
    install(FILES ${source_files}
        DESTINATION "${doc_install_dir}"
        COMPONENT "xdghelp")
    install(FILES ${figures}
        DESTINATION "${doc_install_dir}/figures"
        COMPONENT "xdghelp")

    # Add links to make our documentation visible for KDE's help system
    set(doc_install_dir_kde_base "\$ENV{DESTDIR}${CMAKE_INSTALL_DATADIR}/doc/HTML")
    install(CODE "execute_process (COMMAND ${CMAKE_COMMAND} -E make_directory \"${doc_install_dir_kde_base}\")"
        COMPONENT "xdghelp")
    install(CODE "execute_process (COMMAND ${CMAKE_COMMAND} -E create_symlink \"../../../${doc_install_dir_base}\" \"${doc_install_dir_kde_base}/${kde_lang}\")"
        COMPONENT "xdghelp")
endfunction()