Set default link flags to the target property
[apps/app-templates.git] / cmake / cmake.d / 03-macros.cmake
index efe3128..e483a4a 100644 (file)
@@ -124,15 +124,6 @@ macro(PROJECT_TARGET_ADD TARGET_NAME)
        set(TARGET_NAME ${TARGET_NAME})
 endmacro(PROJECT_TARGET_ADD)
 
-macro(PROJECT_HAS_TESTS)
-       foreach(T ${PROJECT_TARGETS})
-               get_target_property(TL ${T} "LABELS")
-               if(TL AND "${TL}" MATCHES "^TEST-")
-                       set(HAS_TESTS TRUE)
-               endif()
-       endforeach()
-endmacro()
-
 macro(PROJECT_PKGDEP_ADD PKG_NAME)
        set_property(GLOBAL APPEND PROPERTY PROJECT_PKG_DEPS ${PKG_NAME})
 endmacro(PROJECT_PKGDEP_ADD)
@@ -308,13 +299,15 @@ macro(project_targets_populate)
        set(PACKAGE_TEST_HTTPDIR ${PROJECT_PKG_TEST_DIR}/${HTTPDIR})
        set(PACKAGE_TEST_DATADIR ${PROJECT_PKG_TEST_DIR}/${DATADIR})
 
-       if(NOT ${CMAKE_BUILD_TYPE} STREQUAL "RELEASE")
-               add_custom_target(populate
+       if(${BUILD_TEST_WGT})
+               add_custom_command(OUTPUT ${PACKAGE_BINDIR} ${PACKAGE_ETCDIR} ${PACKAGE_LIBDIR} ${PACKAGE_HTTPDIR} ${PACKAGE_DATADIR} ${PACKAGE_TEST_BINDIR} ${PACKAGE_TEST_ETCDIR} ${PACKAGE_TEST_LIBDIR} ${PACKAGE_TEST_HTTPDIR} ${PACKAGE_TEST_DATADIR}
                        COMMAND mkdir -p ${PACKAGE_BINDIR} ${PACKAGE_ETCDIR} ${PACKAGE_LIBDIR} ${PACKAGE_HTTPDIR} ${PACKAGE_DATADIR}
                        COMMAND mkdir -p ${PACKAGE_TEST_BINDIR} ${PACKAGE_TEST_ETCDIR} ${PACKAGE_TEST_LIBDIR} ${PACKAGE_TEST_HTTPDIR} ${PACKAGE_TEST_DATADIR})
+               add_custom_target(populate DEPENDS ${PACKAGE_BINDIR} ${PACKAGE_ETCDIR} ${PACKAGE_LIBDIR} ${PACKAGE_HTTPDIR} ${PACKAGE_DATADIR} ${PACKAGE_TEST_BINDIR} ${PACKAGE_TEST_ETCDIR} ${PACKAGE_TEST_LIBDIR} ${PACKAGE_TEST_HTTPDIR} ${PACKAGE_TEST_DATADIR})
        else()
-               add_custom_target(populate
+               add_custom_command(OUTPUT ${PACKAGE_BINDIR} ${PACKAGE_ETCDIR} ${PACKAGE_LIBDIR} ${PACKAGE_HTTPDIR} ${PACKAGE_DATADIR}
                        COMMAND mkdir -p ${PACKAGE_BINDIR} ${PACKAGE_ETCDIR} ${PACKAGE_LIBDIR} ${PACKAGE_HTTPDIR} ${PACKAGE_DATADIR})
+               add_custom_target(populate DEPENDS ${PACKAGE_BINDIR} ${PACKAGE_ETCDIR} ${PACKAGE_LIBDIR} ${PACKAGE_HTTPDIR} ${PACKAGE_DATADIR})
        endif()
 
        # Dirty trick to define a default INSTALL command for app-templates handled
@@ -363,7 +356,7 @@ macro(project_targets_populate)
                                        set(S ".ctlso")
                                endif()
                                generate_one_populate_target(${P}${OUT}${S} "${PACKAGE_LIBDIR}/plugins")
-                       elseif(NOT ${CMAKE_BUILD_TYPE} STREQUAL "RELEASE" AND ${T} STREQUAL "TEST-PLUGIN")
+                       elseif(${T} STREQUAL "TEST-PLUGIN")
                                if(NOT S)
                                        set(S ".ctlso")
                                endif()
@@ -374,18 +367,27 @@ macro(project_targets_populate)
                                endif()
                                list(APPEND BINDINGS_LIST "${P}${OUT}${S}")
                                generate_one_populate_target(${P}${OUT}${S} ${PACKAGE_LIBDIR})
+                               SET_TARGET_PROPERTIES(${T} PROPERTIES
+                                       LINK_FLAGS  ${BINDINGS_LINK_FLAG}
+                               )
                        elseif(${T} STREQUAL "BINDINGV2")
                                if(NOT S)
                                        set(S ".so")
                                endif()
                                afb_genskel("-2")
                                generate_one_populate_target(${P}${OUT}${S} ${PACKAGE_LIBDIR})
+                               SET_TARGET_PROPERTIES(${T} PROPERTIES
+                                       LINK_FLAGS  ${BINDINGS_LINK_FLAG}
+                               )
                        elseif(${T} STREQUAL "BINDINGV3")
                                if(NOT S)
                                        set(S ".so")
                                endif()
                                afb_genskel("-3")
                                generate_one_populate_target(${P}${OUT}${S} ${PACKAGE_LIBDIR})
+                               SET_TARGET_PROPERTIES(${T} PROPERTIES
+                                       LINK_FLAGS  ${BINDINGS_LINK_FLAG}
+                               )
                        elseif(${T} STREQUAL "EXECUTABLE")
                                if(NOT S)
                                        set(S "")
@@ -396,7 +398,7 @@ macro(project_targets_populate)
                                else()
                                        generate_one_populate_target(${P}${OUT}${S} ${PACKAGE_BINDIR})
                                endif()
-                       elseif(NOT ${CMAKE_BUILD_TYPE} STREQUAL "RELEASE" AND ${T} STREQUAL "TEST-EXECUTABLE")
+                       elseif(${T} STREQUAL "TEST-EXECUTABLE")
                                if(NOT S)
                                        set(S "")
                                endif()
@@ -408,18 +410,18 @@ macro(project_targets_populate)
                                endif()
                        elseif(${T} STREQUAL "HTDOCS")
                                generate_one_populate_target(${P}${OUT} ${PACKAGE_HTTPDIR})
-                       elseif(NOT ${CMAKE_BUILD_TYPE} STREQUAL "RELEASE" AND ${T} STREQUAL "TEST-HTDOCS")
+                       elseif(${T} STREQUAL "TEST-HTDOCS")
                                generate_one_populate_target(${P}${OUT} ${PACKAGE_HTTPDIR})
                        elseif(${T} STREQUAL "DATA" )
                                generate_one_populate_target(${TARGET} ${PACKAGE_DATADIR})
-                       elseif(NOT ${CMAKE_BUILD_TYPE} STREQUAL "RELEASE" AND ${T} STREQUAL "TEST-DATA")
+                       elseif(${T} STREQUAL "TEST-DATA")
                                generate_one_populate_target(${TARGET} ${PACKAGE_TEST_DATADIR})
                        elseif(${T} STREQUAL "BINDING-CONFIG" )
                                generate_one_populate_target(${TARGET} ${PACKAGE_ETCDIR})
-                       elseif(NOT ${CMAKE_BUILD_TYPE} STREQUAL "RELEASE" AND ${T} STREQUAL "TEST-CONFIG")
+                       elseif(${T} STREQUAL "TEST-CONFIG")
                                generate_one_populate_target(${TARGET} ${PACKAGE_TEST_ETCDIR})
                        endif()
-                       elseif(${CMAKE_BUILD_TYPE} MATCHES "[Dd][Ee][Bb][Uu][Gg]")
+                       elseif("${CMAKE_BUILD_TYPE}" MATCHES "[Dd][Ee][Bb][Uu][Gg]")
                                MESSAGE("${Yellow}.. Warning: ${TARGET} ignored when packaging.${ColourReset}")
                endif()
        endforeach()
@@ -477,6 +479,10 @@ macro(remote_targets_populate)
 endmacro(remote_targets_populate)
 
 macro(wgt_package_build)
+       if(NOT EXISTS ${TEST_WIDGET_CONFIG_TEMPLATE})
+               MESSAGE(STATUS "${BoldBlue}Notice!:Using default test widget configuration's file.\n-- If you want to use a customized test-config.xml template then specify TEST_WIDGET_CONFIG_TEMPLATE in your config.cmake file.${ColourReset}")
+               set(TEST_WIDGET_CONFIG_TEMPLATE "${CMAKE_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/test-wgt/test-config.xml.in" CACHE PATH "Path to the test widget config file template (test-config.xml.in)")
+       endif()
        if(NOT EXISTS ${WIDGET_CONFIG_TEMPLATE})
                MESSAGE(FATAL_ERROR "${Red}WARNING ! Missing mandatory files to build widget file.\nYou need a config.xml template: please specify WIDGET_CONFIG_TEMPLATE correctly.${ColourReset}")
        endif()
@@ -505,22 +511,10 @@ macro(wgt_package_build)
                set(WIDGET_ENTRY_POINT lib)
        endif()
 
-       add_custom_command(OUTPUT ${PROJECT_PKG_BUILD_DIR}/config.xml
-               COMMAND ${CMAKE_COMMAND} -DINFILE=${WIDGET_CONFIG_TEMPLATE} -DOUTFILE=${PROJECT_PKG_BUILD_DIR}/config.xml -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake
-               COMMAND cp ${ICON_PATH} ${PROJECT_PKG_BUILD_DIR}/${PROJECT_ICON}
-       )
-       add_custom_command(OUTPUT ${PROJECT_PKG_TEST_DIR}/test-config.xml ${PROJECT_PKG_TEST_DIR}/bin/launcher
-               COMMAND ${CMAKE_COMMAND} -DINFILE=${CMAKE_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/test-widget/test-config.xml.in -DOUTFILE=${PROJECT_PKG_TEST_DIR}/config.xml -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake
-               COMMAND cp ${ICON_PATH} ${PROJECT_PKG_TEST_DIR}/${PROJECT_ICON}
-               COMMAND cp ${CMAKE_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}//test-widget/launcher.sh.in ${PROJECT_PKG_TEST_DIR}/bin/launcher
-       )
-
        if(NOT ${CMAKE_BUILD_TYPE} STREQUAL "RELEASE")
                string(TOLOWER "${PROJECT_NAME}-${CMAKE_BUILD_TYPE}" WGT_NAME)
-               add_custom_target(packaging_wgt DEPENDS ${PROJECT_PKG_BUILD_DIR}/config.xml ${PROJECT_PKG_TEST_DIR}/test-config.xml ${PROJECT_PKG_TEST_DIR}/bin/launcher)
        else()
                string(TOLOWER "${PROJECT_NAME}" WGT_NAME)
-               add_custom_target(packaging_wgt DEPENDS ${PROJECT_PKG_BUILD_DIR}/config.xml)
        endif()
 
        # Fulup ??? copy any extra file in wgt/etc into populate package before building the widget
@@ -543,6 +537,17 @@ macro(wgt_package_build)
                endif()
        endif()
 
+       add_custom_command(OUTPUT ${PROJECT_PKG_BUILD_DIR}/config.xml
+               COMMAND ${CMAKE_COMMAND} -DINFILE=${WIDGET_CONFIG_TEMPLATE} -DOUTFILE=${PROJECT_PKG_BUILD_DIR}/config.xml -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake
+               COMMAND cp ${ICON_PATH} ${PROJECT_PKG_BUILD_DIR}/${PROJECT_ICON}
+       )
+       add_custom_command(OUTPUT ${PROJECT_PKG_TEST_DIR}/config.xml ${PROJECT_PKG_TEST_DIR}/bin/launcher
+               COMMAND ${CMAKE_COMMAND} -DINFILE=${TEST_WIDGET_CONFIG_TEMPLATE} -DOUTFILE=${PROJECT_PKG_TEST_DIR}/config.xml -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake
+               COMMAND mkdir -p ${PROJECT_PKG_TEST_DIR}/bin
+               COMMAND cp ${ICON_PATH} ${PROJECT_PKG_TEST_DIR}/${PROJECT_ICON}
+               COMMAND cp ${CMAKE_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/test-widget/launcher.sh.in ${PROJECT_PKG_TEST_DIR}/bin/launcher
+       )
+
        add_custom_command(OUTPUT ${WGT_NAME}.wgt
                DEPENDS ${PROJECT_TARGETS}
                COMMAND ${packCMD}
@@ -553,11 +558,12 @@ macro(wgt_package_build)
                COMMAND ${packCMDTest}
        )
 
-       PROJECT_HAS_TESTS()
-       if(NOT ${CMAKE_BUILD_TYPE} STREQUAL "RELEASE" AND HAS_TESTS)
+       if(${BUILD_TEST_WGT})
+               add_custom_target(packaging_wgt DEPENDS ${PROJECT_PKG_BUILD_DIR}/config.xml ${PROJECT_PKG_TEST_DIR}/config.xml ${PROJECT_PKG_TEST_DIR}/bin/launcher)
                add_custom_target(widget DEPENDS ${WGT_NAME}.wgt ${WGT_NAME}-test.wgt)
                set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_BINARY_DIR}/${WGT_NAME}-test.wgt")
        else()
+               add_custom_target(packaging_wgt DEPENDS ${PROJECT_PKG_BUILD_DIR}/config.xml)
                add_custom_target(widget DEPENDS ${WGT_NAME}.wgt)
        endif()