File: module_utils.cmake

package info (click to toggle)
xdg-utils-cxx 1.0.1-3.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 456 kB
  • sloc: cpp: 2,461; ansic: 10; makefile: 6
file content (64 lines) | stat: -rw-r--r-- 2,051 bytes parent folder | download
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
function(add_xdgutils_module name srcs)
    if(XDG_UTILS_SHARED)
        message("Creating ${name} as SHARED library")
        add_library(${name} SHARED ${srcs})
    else()
        message("-- Creating module target: ${name} STATIC")
        add_library(${name} STATIC ${srcs})
    endif()

    message("-- Creating module target alias: ${PROJECT_NAME}::${name}")
    add_library(${PROJECT_NAME}::${name} ALIAS ${name})

    # Configure target properties
    target_include_directories(
        ${name}
        PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
        PUBLIC $<BUILD_INTERFACE:${PROJECT_INCLUDEDIR}>
        PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
    )

    set_target_properties(
        ${name} PROPERTIES
        PREFIX "lib${PROJECT_NAME}"
        PUBLIC INTERFACE_LINK_DIRECTORIES $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
        PUBLIC INTERFACE_LINK_DIRECTORIES $<INSTALL_INTERFACE:${PROJECT_INSTALL_LIBDIR}>
        VERSION ${PROJECT_VERSION}
    )
endfunction()

##
# Install module resources
##
SET(PROJECT_INSTALL_LIBS "" CACHE INTERNAL "Libs binaries")
function(install_xdgutils_module name)
    # Install binaries
    install(
        TARGETS ${name}
        EXPORT ${name}
        LIBRARY DESTINATION ${PROJECT_INSTALL_LIBDIR} COMPONENT ${name}
        ARCHIVE DESTINATION ${PROJECT_INSTALL_LIBDIR} COMPONENT ${name}
    )

    # Install library headers
    install(
        DIRECTORY ${PROJECT_INCLUDEDIR}/${PROJECT_NAME}/${name}
        DESTINATION ${PROJECT_INSTALL_INCLUDEDIR}
        COMPONENT ${name}
    )

    # Build cmake target config files
    export(EXPORT ${name} NAMESPACE ${PROJECT_NAME}::)

    # Install cmake target config files
    install(
        EXPORT ${name}
        FILE "${PROJECT_NAME}${name}.cmake"
        NAMESPACE ${PROJECT_NAME}::
        DESTINATION ${PROJECT_INSTALL_CMAKEDIR}
        COMPONENT ${name}
    )

    # Register library
    SET(PROJECT_INSTALL_LIBS ${PROJECT_INSTALL_LIBS} "${PROJECT_NAME}${name}" CACHE INTERNAL "Libs binaries")
endfunction()