File: plugin_config.cmake

package info (click to toggle)
sight 25.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 43,252 kB
  • sloc: cpp: 310,629; xml: 17,622; ansic: 9,960; python: 1,379; sh: 144; makefile: 33
file content (49 lines) | stat: -rw-r--r-- 2,311 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
# Compute project requirement and generate service registration code
function(plugin_setup PROJECT)

    # set variables used in the configure_file command
    set(PROJECT_NAME ${PROJECT})
    get_target_property(PROJECT_VERSION ${PROJECT} SIGHT_PROJECT_VERSION)

    # Filter modules and app requirements from the requirement list
    foreach(CURRENT_REQUIREMENT ${${PROJECT}_REQUIREMENTS})
        # to only consider modules and app
        get_target_property(TARGET_TYPE ${CURRENT_REQUIREMENT} SIGHT_TARGET_TYPE)
        if("${${CURRENT_REQUIREMENT}_TYPE}" STREQUAL "MODULE" OR "${${CURRENT_REQUIREMENT}_TYPE}" STREQUAL "APP")
            list(APPEND PROJECT_REQUIREMENTS ${CURRENT_REQUIREMENT})
        endif()
    endforeach()

    if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/rc/plugin.xml")
        set(PLUGIN_CONFIG_COMMAND
            ${CMAKE_COMMAND} -DPROJECT="${PROJECT}" -DPROJECT_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
            -DCMAKE_SCRIPTS_DIR="${FWCMAKE_BUILD_FILES_DIR}"
            -DREGISTERSERVICE_OUTPUT_PATH="${CMAKE_CURRENT_BINARY_DIR}" -DPROJECT_NAME="${PROJECT_NAME}" -P
            "${FWCMAKE_RESOURCE_PATH}/build/plugin_config_command.cmake"
        )
        list(APPEND PLUGIN_CONFIG_COMMAND_DEPENDS "${FWCMAKE_RESOURCE_PATH}/build/plugin_config.cmake"
             "${FWCMAKE_RESOURCE_PATH}/build/plugin_config_command.cmake"
        )

        add_custom_command(
            OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/registerServices.cpp"
            COMMAND ${PLUGIN_CONFIG_COMMAND}
            MAIN_DEPENDENCY "${FWCMAKE_BUILD_FILES_DIR}/registerServices.cpp.in"
            DEPENDS ${PLUGIN_CONFIG_COMMAND_DEPENDS} "${CMAKE_CURRENT_SOURCE_DIR}/rc/plugin.xml"
            COMMENT "Generating service registration file for ${PROJECT}"
        )

        # Determine if the plugin need to be started in the profile.xml
        file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/rc/plugin.xml" PLUGIN_CONTENT)
        foreach(LINE ${PLUGIN_CONTENT})
            if("${LINE}" MATCHES "<plugin.*")
                if("${LINE}" MATCHES "<plugin.*autostart=\"true\".*")
                    set_target_properties(${PROJECT} PROPERTIES SIGHT_START ON)
                endif()
                break() # Do not parse the rest of the file
            endif()
        endforeach()

    endif()

endfunction()