summaryrefslogtreecommitdiffstats
path: root/cmake/scripts/common/AddonHelpers.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/scripts/common/AddonHelpers.cmake')
-rw-r--r--cmake/scripts/common/AddonHelpers.cmake53
1 files changed, 43 insertions, 10 deletions
diff --git a/cmake/scripts/common/AddonHelpers.cmake b/cmake/scripts/common/AddonHelpers.cmake
index 2f3f302..c541ad7 100644
--- a/cmake/scripts/common/AddonHelpers.cmake
+++ b/cmake/scripts/common/AddonHelpers.cmake
@@ -92,6 +92,7 @@ macro (build_addon target prefix libs)
92 endforeach() 92 endforeach()
93 endif() 93 endif()
94 94
95 message(STATUS "Addon dependency check ...")
95 # Set defines used in addon.xml.in and read from versions.h to set add-on 96 # Set defines used in addon.xml.in and read from versions.h to set add-on
96 # version parts automatically 97 # version parts automatically
97 file(STRINGS ${KODI_INCLUDE_DIR}/versions.h BIN_ADDON_PARTS) 98 file(STRINGS ${KODI_INCLUDE_DIR}/versions.h BIN_ADDON_PARTS)
@@ -108,7 +109,8 @@ macro (build_addon target prefix libs)
108 if("${include_name}" MATCHES "_DEPENDS") 109 if("${include_name}" MATCHES "_DEPENDS")
109 # Use start definition name as base for other value type 110 # Use start definition name as base for other value type
110 list(GET loop_var 0 list_name) 111 list(GET loop_var 0 list_name)
111 string(REPLACE "_DEPENDS" "" depends_name ${list_name}) 112 string(REPLACE "_DEPENDS" "_MIN" depends_minver ${list_name})
113 string(REPLACE "_DEPENDS" "" depends_ver ${list_name})
112 string(REPLACE "_DEPENDS" "_XML_ID" xml_entry_name ${list_name}) 114 string(REPLACE "_DEPENDS" "_XML_ID" xml_entry_name ${list_name})
113 string(REPLACE "_DEPENDS" "_USED" used_type_name ${list_name}) 115 string(REPLACE "_DEPENDS" "_USED" used_type_name ${list_name})
114 116
@@ -120,16 +122,14 @@ macro (build_addon target prefix libs)
120 foreach(src_file ${USED_SOURCES}) 122 foreach(src_file ${USED_SOURCES})
121 file(STRINGS ${src_file} BIN_ADDON_SRC_PARTS) 123 file(STRINGS ${src_file} BIN_ADDON_SRC_PARTS)
122 foreach(loop_var ${BIN_ADDON_SRC_PARTS}) 124 foreach(loop_var ${BIN_ADDON_SRC_PARTS})
123 string(FIND "${loop_var}" "#include" matchres) 125 string(REGEX MATCH "^[ \t]*#[ \t]*(include|import)[ \t]*[<\"](kodi\/)?(.+)[\">]" include_name "${loop_var}")
124 if("${matchres}" EQUAL 0) 126 if(include_name AND CMAKE_MATCH_3 MATCHES ^${depend_header})
125 string(REPLACE " " ";" loop_var "${loop_var}") 127 get_directory_property(CURRENT_DEFS COMPILE_DEFINITIONS)
126 list(GET loop_var 1 include_name) 128 if(NOT used_type_name IN_LIST CURRENT_DEFS)
127 string(REGEX REPLACE "[<>\"]|kodi/" "" include_name "${include_name}") 129 set(ADDON_DEPENDS "${ADDON_DEPENDS}\n<import addon=\"${${xml_entry_name}}\" minversion=\"${${depends_minver}}\" version=\"${${depends_ver}}\"/>")
128 if(include_name MATCHES ${depend_header}) 130 # Inform with them the addon header about used type, if not present before
129 set(ADDON_DEPENDS "${ADDON_DEPENDS}\n<import addon=\"${${xml_entry_name}}\" version=\"${${depends_name}}\"/>")
130 # Inform with them the addon header about used type
131 add_definitions(-D${used_type_name}) 131 add_definitions(-D${used_type_name})
132 message(STATUS "Added usage definition: ${used_type_name}") 132 message(STATUS " - Added API usage definition: ${used_type_name} (Version: \"${${depends_ver}}\", Min. Version: \"${${depends_minver}}\")")
133 set(FOUND_HEADER_USAGE 1) 133 set(FOUND_HEADER_USAGE 1)
134 endif() 134 endif()
135 endif() 135 endif()
@@ -276,6 +276,18 @@ macro (build_addon target prefix libs)
276 install(FILES ${${prefix}_ADDITIONAL_BINARY} DESTINATION ${target} 276 install(FILES ${${prefix}_ADDITIONAL_BINARY} DESTINATION ${target}
277 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG}) 277 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
278 endif() 278 endif()
279 if(${prefix}_ADDITIONAL_BINARY_EXE)
280 install(PROGRAMS ${${prefix}_ADDITIONAL_BINARY_EXE} DESTINATION ${target}
281 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
282 endif()
283 if(${prefix}_ADDITIONAL_BINARY_PARTS)
284 install(FILES ${${prefix}_ADDITIONAL_BINARY_PARTS} DESTINATION ${target}
285 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
286 endif()
287 if(${prefix}_ADDITIONAL_BINARY_DIRS)
288 install(DIRECTORY ${${prefix}_ADDITIONAL_BINARY_DIRS} DESTINATION ${target} USE_SOURCE_PERMISSIONS
289 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
290 endif()
279 else() # NOT WIN32 291 else() # NOT WIN32
280 if(NOT CPACK_PACKAGE_DIRECTORY) 292 if(NOT CPACK_PACKAGE_DIRECTORY)
281 set(CPACK_PACKAGE_DIRECTORY ${CMAKE_BINARY_DIR}) 293 set(CPACK_PACKAGE_DIRECTORY ${CMAKE_BINARY_DIR})
@@ -296,6 +308,18 @@ macro (build_addon target prefix libs)
296 install(FILES ${${prefix}_ADDITIONAL_BINARY} DESTINATION ${target} 308 install(FILES ${${prefix}_ADDITIONAL_BINARY} DESTINATION ${target}
297 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG}) 309 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
298 endif() 310 endif()
311 if(${prefix}_ADDITIONAL_BINARY_EXE)
312 install(PROGRAMS ${${prefix}_ADDITIONAL_BINARY_EXE} DESTINATION ${target}
313 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
314 endif()
315 if(${prefix}_ADDITIONAL_BINARY_PARTS)
316 install(FILES ${${prefix}_ADDITIONAL_BINARY_PARTS} DESTINATION ${target}
317 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
318 endif()
319 if(${prefix}_ADDITIONAL_BINARY_DIRS)
320 install(DIRECTORY ${${prefix}_ADDITIONAL_BINARY_DIRS} DESTINATION ${target} USE_SOURCE_PERMISSIONS
321 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
322 endif()
299 endif() 323 endif()
300 add_cpack_workaround(${target} ${${prefix}_VERSION} ${ext}) 324 add_cpack_workaround(${target} ${${prefix}_VERSION} ${ext})
301 else() 325 else()
@@ -339,6 +363,15 @@ macro (build_addon target prefix libs)
339 if(${prefix}_ADDITIONAL_BINARY) 363 if(${prefix}_ADDITIONAL_BINARY)
340 install(FILES ${${prefix}_ADDITIONAL_BINARY} DESTINATION ${CMAKE_INSTALL_LIBDIR}/addons/${target}) 364 install(FILES ${${prefix}_ADDITIONAL_BINARY} DESTINATION ${CMAKE_INSTALL_LIBDIR}/addons/${target})
341 endif() 365 endif()
366 if(${prefix}_ADDITIONAL_BINARY_EXE)
367 install(PROGRAMS ${${prefix}_ADDITIONAL_BINARY_EXE} DESTINATION ${CMAKE_INSTALL_LIBDIR}/addons/${target})
368 endif()
369 if(${prefix}_ADDITIONAL_BINARY_PARTS)
370 install(FILES ${${prefix}_ADDITIONAL_BINARY_PARTS} DESTINATION ${CMAKE_INSTALL_LIBDIR}/addons/${target})
371 endif()
372 if(${prefix}_ADDITIONAL_BINARY_DIRS)
373 install(DIRECTORY ${${prefix}_ADDITIONAL_BINARY_DIRS} DESTINATION ${CMAKE_INSTALL_LIBDIR}/addons/${target} USE_SOURCE_PERMISSIONS)
374 endif()
342 endif() 375 endif()
343 if(${APP_NAME_UC}_BUILD_DIR) 376 if(${APP_NAME_UC}_BUILD_DIR)
344 file(GLOB_RECURSE files ${CMAKE_CURRENT_SOURCE_DIR}/${target}/*) 377 file(GLOB_RECURSE files ${CMAKE_CURRENT_SOURCE_DIR}/${target}/*)