X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=cmake%2Fcmake.d%2F03-macros.cmake;h=8af81d6e5fe5740261bf46aef4bd9f897ab01da2;hb=908a0372d53c74a037da3debe1e276a214343c41;hp=6e223b20aa4965213d18d3a7b03b95c70b676797;hpb=350c5b97459226f7e031c73edb3a79a2d99cb250;p=apps%2Fapp-templates.git diff --git a/cmake/cmake.d/03-macros.cmake b/cmake/cmake.d/03-macros.cmake index 6e223b2..8af81d6 100644 --- a/cmake/cmake.d/03-macros.cmake +++ b/cmake/cmake.d/03-macros.cmake @@ -123,19 +123,29 @@ endmacro(configure_files_in_dir) # Create custom target dedicated for HTML5 and DATA AGL target type macro(add_input_files INPUT_FILES) - set(XML_LIST ${INPUT_FILES}) - set(LUA_LIST ${INPUT_FILES}) - set(JSON_LIST ${INPUT_FILES}) + if(NOT DEFINED XML_FILES) + set(ext_reg "xml$") + set(XML_LIST ${INPUT_FILES}) + list_filter(XML_LIST ext_reg) + endif() + if(NOT DEFINED LUA_LIST) + set(ext_reg "lua$") + set(LUA_LIST ${INPUT_FILES}) + list_filter(LUA_LIST ext_reg) + endif() + if(NOT DEFINED JSON_FILES) + set(ext_reg "json$") + set(JSON_LIST ${INPUT_FILES}) + list_filter(JSON_LIST ext_reg) + endif() + # These are v3.6 subcommand. Not used as default for now as # many dev use Ubuntu 16.04 which have only 3.5 version #list(FILTER XML_LIST INCLUDE REGEX "xml$") #list(FILTER LUA_LIST INCLUDE REGEX "lua$") #list(FILTER JSON_LIST INCLUDE REGEX "json$") - list_filter(XML_LIST "xml$") - list_filter(LUA_LIST "lua$") - list_filter(JSON_LIST "json$") - add_custom_target(${TARGET_NAME} + add_custom_target(${TARGET_NAME} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME} ) @@ -143,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() @@ -205,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) @@ -217,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 @@ -289,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() @@ -336,8 +371,13 @@ macro(remote_targets_populate) add_custom_target(remote-target-populate COMMAND chmod +x ${CMAKE_CURRENT_BINARY_DIR}/target/*.sh COMMAND rsync -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --archive --delete ${PROJECT_PKG_BUILD_DIR}/ ${RSYNC_TARGET}:${RSYNC_PREFIX}/${PROJECT_NAME} - COMMENT "${REMOTE_LAUNCH}" ) + + add_custom_command(TARGET remote-target-populate + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green --bold ${REMOTE_LAUNCH} + ) + add_dependencies(remote-target-populate populate) endif() endmacro(remote_targets_populate) @@ -438,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) @@ -476,7 +516,7 @@ macro(project_closing_msg) add_custom_target(${PROJECT_NAME}_build_done ALL COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --cyan "++ ${CLOSING_MESSAGE}" ) - add_dependencies(${PROJECT_NAME}_build_done - ${DEPENDENCIES_TARGET} ${PROJECT_TARGETS}) + add_dependencies(${PROJECT_NAME}_build_done + ${PROJECT_TARGETS} populate) endif() endmacro()