No optimization in DEBUG build configuration
[apps/app-templates.git] / cmake / cmake.d / 02-macros.cmake
index 0415e54..3713d80 100644 (file)
@@ -20,7 +20,7 @@
 #--------------------------------------------------------------------------
 #  WARNING:
 #     Do not change this cmake template
-#     Customise your preferences in "./etc/config.cmake"
+#     Customise your preferences in "./conf.d/cmake/config.cmake"
 #--------------------------------------------------------------------------
 # Generic useful macro
 # -----------------------
@@ -42,7 +42,9 @@ macro(configure_files_in_dir dir)
        foreach(file ${filelist})
                get_filename_component(filename ${file} NAME)
                string(REGEX REPLACE "target" "${RSYNC_TARGET}" destinationfile ${filename})
+               string(REGEX REPLACE ".in$" "" destinationfile ${destinationfile})
                configure_file(${file} ${CMAKE_CURRENT_BINARY_DIR}/target/${destinationfile})
+               set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_BINARY_DIR}/target/${destinationfile}")
        endforeach()
 endmacro(configure_files_in_dir)
 
@@ -55,7 +57,9 @@ macro(project_targets_populate)
        set(PACKAGE_HTTPDIR ${PROJECT_PKG_BUILD_DIR}/htdocs)
        set(PACKAGE_DATADIR ${PROJECT_PKG_BUILD_DIR}/data)
 
-       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})
                get_property(PROJECT_TARGETS GLOBAL PROPERTY PROJECT_TARGETS)
        foreach(TARGET ${PROJECT_TARGETS})
                get_target_property(T ${TARGET} LABELS)
@@ -77,41 +81,45 @@ macro(project_targets_populate)
                        endif()
 
                        if(${T} STREQUAL "BINDING")
-                               add_custom_command(OUTPUT ${PACKAGE_LIBDIR}/${P}${TARGET}.so
-                                       DEPENDS ${TARGET}
+                               list(APPEND BINDINGS_LIST "${P}${OUT}")
+                               add_custom_command(OUTPUT ${PACKAGE_LIBDIR}/${P}${OUT}.so
+                                       DEPENDS ${BD}/${P}${OUT}.so
                                        COMMAND mkdir -p ${PACKAGE_LIBDIR}
                                        COMMAND cp ${BD}/${P}${OUT}.so ${PACKAGE_LIBDIR}
                                )
-                               add_custom_target(${POPULE_PACKAGE_TARGET} DEPENDS ${PACKAGE_LIBDIR}/${P}${TARGET}.so)
+message ("DEPENDS ${BD}/${P}${OUT}.so")
+                               add_custom_target(${POPULE_PACKAGE_TARGET} DEPENDS ${PACKAGE_LIBDIR}/${P}${OUT}.so)
                                add_dependencies(populate ${POPULE_PACKAGE_TARGET})
+                               add_dependencies(${POPULE_PACKAGE_TARGET} ${TARGET})
                        elseif(${T} STREQUAL "EXECUTABLE")
-                               add_custom_command(OUTPUT ${PACKAGE_BINDIR}/${P}${TARGET}
-                                       DEPENDS ${TARGET}
+                               add_custom_command(OUTPUT ${PACKAGE_BINDIR}/${P}${OUT}
+                                       DEPENDS ${BD}/${P}${OUT}
                                        COMMAND mkdir -p ${PACKAGE_BINDIR}
                                        COMMAND cp ${BD}/${P}${OUT} ${PACKAGE_BINDIR}
                                )
-                               add_custom_target(${POPULE_PACKAGE_TARGET} DEPENDS ${PACKAGE_BINDIR}/${P}${TARGET})
+                               add_custom_target(${POPULE_PACKAGE_TARGET} DEPENDS ${PACKAGE_BINDIR}/${P}${OUT})
                                add_dependencies(populate ${POPULE_PACKAGE_TARGET})
+                               add_dependencies(${POPULE_PACKAGE_TARGET} ${TARGET})
                        elseif(${T} STREQUAL "HTDOCS")
                                add_custom_command(OUTPUT ${PACKAGE_HTTPDIR}-xx
-                                       DEPENDS ${TARGET}
+                                       DEPENDS ${BD}/${P}${OUT}
                                        COMMAND mkdir -p ${PACKAGE_HTTPDIR}
                                        COMMAND touch ${PACKAGE_HTTPDIR}
-                                       COMMAND cp -r ${SD}/* ${PACKAGE_HTTPDIR}
-                                       COMMAND rm -f ${PACKAGE_HTTPDIR}/CMakeLists.txt
+                                       COMMAND cp -r ${BD}/${P}${OUT}/* ${PACKAGE_HTTPDIR}
                                )
-                                       add_custom_target(${POPULE_PACKAGE_TARGET} DEPENDS ${PACKAGE_HTTPDIR}-xx)
-                                       add_dependencies(populate ${POPULE_PACKAGE_TARGET})
+                               add_custom_target(${POPULE_PACKAGE_TARGET} DEPENDS ${PACKAGE_HTTPDIR}-xx)
+                               add_dependencies(populate ${POPULE_PACKAGE_TARGET})
+                               add_dependencies(${POPULE_PACKAGE_TARGET} ${TARGET})
                        elseif(${T} STREQUAL "DATA")
                                add_custom_command(OUTPUT ${PACKAGE_DATADIR}-xx
-                                       DEPENDS ${TARGET}
+                                       DEPENDS ${BD}/${P}${OUT}
                                        COMMAND mkdir -p ${PACKAGE_DATADIR}
                                        COMMAND touch ${PACKAGE_DATADIR}
-                                       COMMAND cp -r ${SD}/* ${PACKAGE_DATADIR}
-                                       COMMAND rm -f ${PACKAGE_DATADIR}/CMakeLists.txt
+                                       COMMAND cp -r ${BD}/${P}${OUT}/* ${PACKAGE_DATADIR}
                                )
-                                       add_custom_target(${POPULE_PACKAGE_TARGET} DEPENDS ${PACKAGE_DATADIR}-xx)
-                                       add_dependencies(populate ${POPULE_PACKAGE_TARGET})
+                               add_custom_target(${POPULE_PACKAGE_TARGET} DEPENDS ${PACKAGE_DATADIR}-xx)
+                               add_dependencies(populate ${POPULE_PACKAGE_TARGET})
+                               add_dependencies(${POPULE_PACKAGE_TARGET} ${TARGET})
                        endif(${T} STREQUAL "BINDING")
                elseif(${CMAKE_BUILD_TYPE} MATCHES "[Dd][Ee][Bb][Uu][Gg]")
                        MESSAGE(".. Warning: ${TARGET} ignored when packaging.")
@@ -121,10 +129,10 @@ endmacro(project_targets_populate)
 
 macro(remote_targets_populate)
        if (DEFINED ENV{RSYNC_TARGET})
-       set (RSYNC_TARGET $ENV{RSYNC_TARGET})
+               set (RSYNC_TARGET $ENV{RSYNC_TARGET})
        endif()
        if (DEFINED ENV{RSYNC_PREFIX})
-       set (RSYNC_PREFIX $ENV{RSYNC_PREFIX})
+               set (RSYNC_PREFIX $ENV{RSYNC_PREFIX})
        endif()
 
        set(
@@ -139,16 +147,29 @@ macro(remote_targets_populate)
                        COMMAND exit -1
                )
        else()
+               set(BINDINGS_REGEX "not_set")
+               if(DEFINED BINDINGS_LIST)
+                       list(LENGTH BINDINGS_LIST BINDINGS_LIST_LENGTH)
+                       if(BINDINGS_LIST_LENGTH EQUAL 1)
+                               list(GET BINDINGS_LIST 0 BINDINGS_REGEX)
+                               string(APPEND BINDINGS_REGEX ".so")
+                       elseif(BINDINGS_LIST_LENGTH GREATER 1)
+                               foreach(B IN LISTS BINDINGS_LIST)
+                                       STRING(APPEND BINDINGS_STR "${B}|")
+                               endforeach()
+                                       STRING(REGEX REPLACE "^(.*)\\|$" "(\\1).so" BINDINGS_REGEX ${BINDINGS_STR})
+                       endif()
+               endif()
 
                configure_files_in_dir(${SSH_TEMPLATE_DIR})
                configure_files_in_dir(${GDB_TEMPLATE_DIR})
 
                add_custom_target(remote-target-populate
-                       DEPENDS 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_dependencies(remote-target-populate populate)
        endif()
 endmacro(remote_targets_populate)
 
@@ -187,7 +208,7 @@ macro(wgt_package_build)
 
        add_custom_target(widget DEPENDS ${PROJECT_NAME}.wgt)
        add_dependencies(widget populate packaging_wgt)
-       set(ADDITIONAL_MAKE_CLEAN_FILES, "${PROJECT_NAME}.wgt")
+       set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.wgt")
 
        if(NOT RSYNC_TARGET)
                message ("${Yellow}.. Warning: RSYNC_TARGET not defined 'make widget-target-install' not instanciated${ColourReset}")
@@ -221,7 +242,6 @@ macro(rpm_package_build)
 
        add_custom_target(rpm DEPENDS ${NPKG_PROJECT_NAME}.spec)
        add_dependencies(rpm populate packaging)
-       set(ADDITIONAL_MAKE_CLEAN_FILES, "${PROJECT_NAME}.spec")
 
        if(PACKAGE_MESSAGE)
        add_custom_command(TARGET rpm
@@ -276,4 +296,4 @@ macro(project_closing_msg)
                 add_dependencies(${PROJECT_NAME}_build_done
                        ${DEPENDENCIES_TARGET} ${PROJECT_TARGETS})
        endif()
-endmacro()
\ No newline at end of file
+endmacro()