###########################################################################
# Copyright 2015, 2016, 2017 IoT.bzh
#
# author: Fulup Ar Foll <fulup@iot.bzh>
# contrib: Romain Forlot <romain.forlot@iot.bzh>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
###########################################################################
#--------------------------------------------------------------------------
# WARNING:
# Do not change this cmake template
# Customise your preferences in "./conf.d/cmake/config.cmake"
#--------------------------------------------------------------------------
# Generic useful macro
# -----------------------
macro(PROJECT_TARGET_ADD TARGET_NAME)
set_property(GLOBAL APPEND PROPERTY PROJECT_TARGETS ${TARGET_NAME})
set(TARGET_NAME ${TARGET_NAME})
endmacro(PROJECT_TARGET_ADD)
macro(PROJECT_PKGDEP_ADD PKG_NAME)
set_property(GLOBAL APPEND PROPERTY PROJECT_PKG_DEPS ${PKG_NAME})
endmacro(PROJECT_PKGDEP_ADD)
macro(defstr name value)
add_definitions(-D${name}=${value})
endmacro(defstr)
macro(configure_files_in_dir dir)
file(GLOB filelist "${dir}/*in")
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)
# Pre-packaging
macro(project_targets_populate)
# Default Widget default directory
set(PACKAGE_BINDIR ${PROJECT_PKG_BUILD_DIR}/bin)
set(PACKAGE_ETCDIR ${PROJECT_PKG_BUILD_DIR}/etc)
set(PACKAGE_LIBDIR ${PROJECT_PKG_BUILD_DIR}/lib)
set(PACKAGE_HTTPDIR ${PROJECT_PKG_BUILD_DIR}/htdocs)
set(PACKAGE_DATADIR ${PROJECT_PKG_BUILD_DIR}/data)
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)
if(T)
# Declaration of a custom command that will populate widget tree with the target
set(POPULE_PACKAGE_TARGET "project_populate_${TARGET}")
get_target_property(P ${TARGET} PREFIX)
get_target_property(BD ${TARGET} BINARY_DIR)
get_target_property(SD ${TARGET} SOURCE_DIR)
get_target_property(OUT ${TARGET} OUTPUT_NAME)
if(P MATCHES "NOTFOUND$")
if (${T} STREQUAL "BINDING")
set(P "lib")
else()
set(P "")
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
COMMAND mkdir -p ${PACKAGE_LIBDIR}
COMMAND cp ${BD}/${P}${OUT}.so ${PACKAGE_LIBDIR}
)
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}${OUT}
DEPENDS ${BD}/${P}${OUT}
COMMAND