Handle controller plugin populate and install
[apps/app-templates.git] / cmake / cmake.d / 03-macros.cmake
index a706773..8af81d6 100644 (file)
@@ -121,15 +121,6 @@ macro(configure_files_in_dir dir)
        endforeach()
 endmacro(configure_files_in_dir)
 
-macro(add_required_module PKG_CONFIG)
-       string(REGEX REPLACE "[<>]?=.*$" "" XPREFIX ${PKG_CONFIG})
-       PKG_CHECK_MODULES(${XPREFIX} REQUIRED ${PKG_CONFIG})
-
-       INCLUDE_DIRECTORIES(${${XPREFIX}_INCLUDE_DIRS})
-       list(APPEND link_libraries ${${XPREFIX}_LDFLAGS})
-       add_compile_options (${${XPREFIX}_CFLAGS})
-endmacro(add_required_module)
-
 # Create custom target dedicated for HTML5 and DATA AGL target type
 macro(add_input_files INPUT_FILES)
        if(NOT DEFINED XML_FILES)
@@ -162,21 +153,21 @@ macro(add_input_files INPUT_FILES)
                add_custom_command(TARGET ${TARGET_NAME}
                        PRE_BUILD
                        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-                       COMMAND ${XML_CHECKER} ${file}
+                       COMMAND which ${XML_CHECKER} > /dev/null 2>&1 && ${XML_CHECKER} ${file} || ${CMAKE_COMMAND} -E cmake_echo_color --red "Warning: XML_CHECKER not found"
                )
        endforeach()
        foreach(file ${LUA_LIST})
        add_custom_command(TARGET ${TARGET_NAME}
                PRE_BUILD
                WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-               COMMAND ${LUA_CHECKER} ${file}
+               COMMAND which ${LUA_CHECKER} > /dev/null 2>&1 && ${LUA_CHECKER} ${file} || ${CMAKE_COMMAND} -E cmake_echo_color --red "Warning: LUA_CHECKER not found"
        )
        endforeach()
        foreach(file ${JSON_LIST})
        add_custom_command(TARGET ${TARGET_NAME}
                PRE_BUILD
                WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-               COMMAND cat ${file} | ${JSON_CHECKER}
+               COMMAND which ${JSON_CHECKER} > /dev/null 2>&1 && ${JSON_CHECKER} ${file} || ${CMAKE_COMMAND} -E cmake_echo_color --red "Warning: JSON_CHECKER not found"
        )
        endforeach()
 
@@ -224,6 +215,7 @@ macro(project_targets_populate)
                set(POPULE_PACKAGE_TARGET "project_populate_${TARGET}")
 
                get_target_property(P ${TARGET} PREFIX)
+               get_target_property(S ${TARGET} SUFFIX)
                get_target_property(BD ${TARGET} BINARY_DIR)
                get_target_property(SD ${TARGET} SOURCE_DIR)
                get_target_property(OUT ${TARGET} OUTPUT_NAME)
@@ -236,16 +228,24 @@ macro(project_targets_populate)
                        endif()
                endif()
 
-               if(${T} STREQUAL "BINDING")
-                       list(APPEND BINDINGS_LIST "${P}${OUT}")
-                       add_custom_command(OUTPUT ${PACKAGE_LIBDIR}/${P}${OUT}.so
-                               DEPENDS ${BD}/${P}${OUT}.so
+               if(${T} STREQUAL "BINDING" OR ${T} STREQUAL "PLUGIN")
+                       if(NOT S)
+                               list(APPEND BINDINGS_LIST "${P}${OUT}")
+                               set(S ".so")
+                       else()
+                               set(PACKAGE_LIBDIR_BCK "${PACKAGE_LIBDIR}")
+                               set(PACKAGE_LIBDIR "${PACKAGE_LIBDIR}/plugins")
+                       endif()
+
+                       add_custom_command(OUTPUT ${PACKAGE_LIBDIR}/${P}${OUT}${S}
+                               DEPENDS ${BD}/${P}${OUT}${S}
                                COMMAND mkdir -p ${PACKAGE_LIBDIR}
-                               COMMAND cp ${BD}/${P}${OUT}.so ${PACKAGE_LIBDIR}
+                               COMMAND cp ${BD}/${P}${OUT}${S} ${PACKAGE_LIBDIR}
                        )
-                       add_custom_target(${POPULE_PACKAGE_TARGET} DEPENDS ${PACKAGE_LIBDIR}/${P}${OUT}.so)
+                       add_custom_target(${POPULE_PACKAGE_TARGET} DEPENDS ${PACKAGE_LIBDIR}/${P}${OUT}${S})
                        add_dependencies(populate ${POPULE_PACKAGE_TARGET})
                        add_dependencies(${POPULE_PACKAGE_TARGET} ${TARGET})
+                       set(PACKAGE_LIBDIR ${PACKAGE_LIBDIR_BCK})
                elseif(${T} STREQUAL "BINDINGV2")
                        if (OPENAPI_DEF)
                                add_custom_command(OUTPUT ${SD}/${OPENAPI_DEF}.h
@@ -308,7 +308,23 @@ macro(project_targets_populate)
                        )
                        add_dependencies(populate ${POPULE_PACKAGE_TARGET})
                        add_dependencies(${POPULE_PACKAGE_TARGET} ${TARGET})
-               endif(${T} STREQUAL "BINDING")
+                       elseif(${T} STREQUAL "BINDING-CONFIG")
+                       # Generate list of output files instead of just one output directory
+                       get_target_property(SF ${TARGET} SOURCES)
+                       foreach(file ${SF})
+                               get_filename_component(JUST_FILENAME ${file} NAME)
+                               list(APPEND OUTPUT_FILES ${PACKAGE_ETCDIR}/${JUST_FILENAME})
+                       endforeach()
+                       add_custom_target(${POPULE_PACKAGE_TARGET})
+                       add_custom_command(TARGET ${POPULE_PACKAGE_TARGET}
+                               POST_BUILD
+                               COMMAND mkdir -p ${PACKAGE_ETCDIR}
+                               COMMAND touch ${PACKAGE_ETCDIR}
+                               COMMAND cp -r ${BD}/${TARGET}/* ${PACKAGE_ETCDIR}
+                       )
+                       add_dependencies(populate ${POPULE_PACKAGE_TARGET})
+                       add_dependencies(${POPULE_PACKAGE_TARGET} ${TARGET})
+               endif()
                elseif(${CMAKE_BUILD_TYPE} MATCHES "[Dd][Ee][Bb][Uu][Gg]")
                        MESSAGE("${Yellow}.. Warning: ${TARGET} ignored when packaging.${ColourReset}")
                endif()
@@ -462,17 +478,17 @@ macro(deb_package_build)
 endmacro(deb_package_build)
 
 macro(project_package_build)
-       if(EXISTS ${TEMPLATE_DIR})
-               rpm_package_build()
-       endif()
+#      if(EXISTS ${TEMPLATE_DIR})
+#              rpm_package_build()
+#      endif()
 
        if(EXISTS ${TEMPLATE_DIR})
                wgt_package_build()
        endif()
 
-       if(EXISTS ${TEMPLATE_DIR})
-               deb_package_build()
-       endif()
+#      if(EXISTS ${TEMPLATE_DIR})
+#              deb_package_build()
+#      endif()
 endmacro(project_package_build)
 
 macro(project_subdirs_add)