Changeset View
Changeset View
Standalone View
Standalone View
KF5CoreAddonsMacros.cmake
Show First 20 Lines • Show All 115 Lines • ▼ Show 20 Line(s) | 113 | function(kcoreaddons_add_plugin plugin) | |||
---|---|---|---|---|---|
116 | set(multiValueArgs SOURCES) | 116 | set(multiValueArgs SOURCES) | ||
117 | cmake_parse_arguments(KCA_ADD_PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) | 117 | cmake_parse_arguments(KCA_ADD_PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) | ||
118 | 118 | | |||
119 | if(NOT KCA_ADD_PLUGIN_SOURCES) | 119 | if(NOT KCA_ADD_PLUGIN_SOURCES) | ||
120 | message(FATAL_ERROR "kcoreaddons_add_plugin called without SOURCES parameter") | 120 | message(FATAL_ERROR "kcoreaddons_add_plugin called without SOURCES parameter") | ||
121 | endif() | 121 | endif() | ||
122 | get_filename_component(json "${KCA_ADD_PLUGIN_JSON}" REALPATH) | 122 | get_filename_component(json "${KCA_ADD_PLUGIN_JSON}" REALPATH) | ||
123 | 123 | | |||
124 | # ensure we recompile the corresponding object files when the json file changes | | |||
125 | set(dependent_sources ) | | |||
126 | foreach(source ${KCA_ADD_PLUGIN_SOURCES}) | | |||
127 | get_filename_component(source "${source}" REALPATH) | | |||
128 | if(EXISTS "${source}") | | |||
129 | file(STRINGS "${source}" match REGEX "K_PLUGIN_FACTORY_WITH_JSON") | | |||
130 | if(match) | | |||
131 | list(APPEND dependent_sources "${source}") | | |||
132 | endif() | | |||
133 | endif() | | |||
134 | endforeach() | | |||
135 | if(NOT dependent_sources) | | |||
136 | # fallback to all sources - better safe than sorry... | | |||
137 | set(dependent_sources ${KCA_ADD_PLUGIN_SOURCES}) | | |||
138 | endif() | | |||
139 | set_property(SOURCE ${dependent_sources} APPEND PROPERTY OBJECT_DEPENDS ${json}) | | |||
140 | | ||||
141 | add_library(${plugin} MODULE ${KCA_ADD_PLUGIN_SOURCES}) | 124 | add_library(${plugin} MODULE ${KCA_ADD_PLUGIN_SOURCES}) | ||
142 | set_property(TARGET ${plugin} APPEND PROPERTY AUTOGEN_TARGET_DEPENDS ${json}) | 125 | set_property(TARGET ${plugin} APPEND PROPERTY AUTOGEN_TARGET_DEPENDS ${json}) | ||
143 | # If find_package(ECM 5.38) or higher is called, output the plugin in a INSTALL_NAMESPACE subfolder. | 126 | # If find_package(ECM 5.38) or higher is called, output the plugin in a INSTALL_NAMESPACE subfolder. | ||
144 | # See https://community.kde.org/Guidelines_and_HOWTOs/Making_apps_run_uninstalled | 127 | # See https://community.kde.org/Guidelines_and_HOWTOs/Making_apps_run_uninstalled | ||
145 | if(NOT ("${ECM_GLOBAL_FIND_VERSION}" VERSION_LESS "5.38.0")) | 128 | if(NOT ("${ECM_GLOBAL_FIND_VERSION}" VERSION_LESS "5.38.0")) | ||
146 | set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${KCA_ADD_PLUGIN_INSTALL_NAMESPACE}") | 129 | set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${KCA_ADD_PLUGIN_INSTALL_NAMESPACE}") | ||
147 | endif() | 130 | endif() | ||
148 | 131 | | |||
149 | if (NOT KCA_ADD_PLUGIN_INSTALL_NAMESPACE) | 132 | if (NOT KCA_ADD_PLUGIN_INSTALL_NAMESPACE) | ||
150 | message(FATAL_ERROR "Must specify INSTALL_NAMESPACE for ${plugin}") | 133 | message(FATAL_ERROR "Must specify INSTALL_NAMESPACE for ${plugin}") | ||
151 | endif() | 134 | endif() | ||
152 | install(TARGETS ${plugin} DESTINATION ${PLUGIN_INSTALL_DIR}/${KCA_ADD_PLUGIN_INSTALL_NAMESPACE}) | 135 | install(TARGETS ${plugin} DESTINATION ${PLUGIN_INSTALL_DIR}/${KCA_ADD_PLUGIN_INSTALL_NAMESPACE}) | ||
153 | endfunction() | 136 | endfunction() |