File: MapnikInstall.cmake

package info (click to toggle)
mapnik 4.2.1%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 18,592 kB
  • sloc: cpp: 163,859; python: 1,332; sh: 690; xml: 161; makefile: 123; perl: 28; lisp: 13
file content (98 lines) | stat: -rw-r--r-- 3,811 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
#
# Install library targets that consuming users need.
#
function(mapnik_install _target)
    install(TARGETS ${_target}
        EXPORT MapnikTargets
        INCLUDES DESTINATION ${MAPNIK_INCLUDE_DIR}
        RUNTIME DESTINATION ${MAPNIK_BIN_DIR}
            COMPONENT MapnikRuntime
        LIBRARY DESTINATION ${MAPNIK_LIB_DIR}
            COMPONENT MapnikRuntime
            NAMELINK_COMPONENT MapnikDevelopment
        ARCHIVE DESTINATION ${MAPNIK_ARCHIVE_DIR}
            COMPONENT MapnikDevelopment
    )
    get_target_property(TARGET_TYPE "${_target}" TYPE)
    if (TARGET_TYPE STREQUAL "SHARED_LIBRARY")
        set_property(GLOBAL APPEND PROPERTY TARGETS ${_target})
    endif()
endfunction()

#
# Install plugins
#
function(mapnik_install_plugin _target)
    if(NOT BUILD_SHARED_PLUGINS)
        return()
    endif()
    install(TARGETS ${_target}
        RUNTIME DESTINATION ${PLUGINS_INSTALL_DIR}
            COMPONENT MapnikPluginRuntime
        LIBRARY DESTINATION ${PLUGINS_INSTALL_DIR}
            COMPONENT MapnikPluginRuntime
            NAMELINK_COMPONENT MapnikPluginDevelopment
        ARCHIVE DESTINATION ${PLUGINS_INSTALL_DIR}
            COMPONENT MapnikPluginDevelopment
    )
    set_property(GLOBAL APPEND PROPERTY PLUGINS ${_target})
endfunction()

#
# Install executables. These are available via COMPONENTS in find_package
#
function(mapnik_install_utility _target)
    set(_target_name "mapnikUtilityTargets_${_target}")
    install(TARGETS ${_target}
        EXPORT ${_target_name}
        INCLUDES DESTINATION ${MAPNIK_INCLUDE_DIR}
        RUNTIME DESTINATION ${MAPNIK_BIN_DIR}
            COMPONENT MapnikRuntime
        LIBRARY DESTINATION ${MAPNIK_LIB_DIR}
            COMPONENT MapnikRuntime
            NAMELINK_COMPONENT MapnikDevelopment
        ARCHIVE DESTINATION ${MAPNIK_ARCHIVE_DIR}
            COMPONENT MapnikDevelopment
    )
    install(EXPORT ${_target_name}
        FILE ${_target_name}.cmake
        NAMESPACE mapnik::
        DESTINATION ${MAPNIK_CMAKE_DIR}
    )
    set_property(GLOBAL APPEND PROPERTY MAPNIK_UTILITIES ${_target})
endfunction()

function(mapnik_install_targets)
    if(INSTALL_DEPENDENCIES AND WIN32)
        # https://cmake.org/cmake/help/latest/policy/CMP0087.html
        cmake_policy(SET CMP0087 NEW)
        get_property(_installed_utilities GLOBAL PROPERTY MAPNIK_UTILITIES)
        get_property(_installed_targets GLOBAL PROPERTY TARGETS)
        get_property(_installed_plugins GLOBAL PROPERTY PLUGINS)
        set(_internal_executables "")
        set(_internal_libraries "")

        foreach(_target IN LISTS _installed_utilities)
            list(APPEND _internal_executables "\${CMAKE_INSTALL_PREFIX}/${MAPNIK_BIN_DIR}/$<TARGET_FILE_NAME:${_target}>")
        endforeach()
        foreach(_target IN LISTS _installed_targets)
            list(APPEND _internal_libraries "\${CMAKE_INSTALL_PREFIX}/${MAPNIK_BIN_DIR}/$<TARGET_FILE_NAME:${_target}>")
        endforeach()
        foreach(_target IN LISTS _installed_plugins)
            list(APPEND _internal_libraries "\${CMAKE_INSTALL_PREFIX}/${PLUGINS_INSTALL_DIR}/$<TARGET_FILE_NAME:${_target}>")
        endforeach()
        # all other executables get auto detected and fixed.
        if(_internal_executables)
            list(GET _internal_executables 0 _internal_executables)
        endif()

        INSTALL(CODE "
            message(STATUS \"internal_executables: ${_internal_executables}\")
            message(STATUS \"internal_libraries: ${_internal_libraries}\")
            message(STATUS \"ADDITIONAL_LIBARIES_PATHS: ${ADDITIONAL_LIBARIES_PATHS}\")

            include(BundleUtilities)
            fixup_bundle(\"${_internal_executables}\" \"${_internal_libraries}\" \"${ADDITIONAL_LIBARIES_PATHS}\")
        " COMPONENT MapnikRuntime)
    endif()
endfunction()