X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=cmake%2Fcommon.cmake;h=d23614f13ea8b240bb95cd708de92a50fec37a61;hb=67979984ee8be9b96bf600d5191ab9df303ba73e;hp=77ef9ce3037470541d15ab44235642d08799d92b;hpb=f8e95903ac0f2937289bb3e1dcb27899c03b8cc9;p=apps%2Fapp-templates.git diff --git a/cmake/common.cmake b/cmake/common.cmake index 77ef9ce..d23614f 100644 --- a/cmake/common.cmake +++ b/cmake/common.cmake @@ -52,7 +52,11 @@ macro(PROJECT_TARGET_ADD TARGET_NAME) set(TARGET_NAME ${TARGET_NAME}) endmacro(PROJECT_TARGET_ADD) -# Check GCC minimal version version +macro(PROJECT_PKGDEP_ADD PKG_NAME) + set_property(GLOBAL APPEND PROPERTY PROJECT_PKG_DEPS ${PKG_NAME}) +endmacro(PROJECT_PKGDEP_ADD) + +# Check GCC minimal version if (gcc_minimal_version) message (STATUS "${Blue}-- Check gcc_minimal_version (found gcc version ${CMAKE_C_COMPILER_VERSION}) (found g++ version ${CMAKE_CXX_COMPILER_VERSION})${ColourReset}") if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${gcc_minimal_version} OR CMAKE_C_COMPILER_VERSION VERSION_LESS ${gcc_minimal_version}) @@ -60,6 +64,14 @@ if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${gcc_minimal_version} OR CMAKE_C_CO endif() endif(gcc_minimal_version) +# Check Kernel minimal version +if (kernel_minimal_version) + message (STATUS "${Blue}-- Check kernel_minimal_version (found kernel version ${CMAKE_SYSTEM_VERSION})${ColourReset}") + if (CMAKE_SYSTEM_VERSION VERSION_LESS ${kernel_minimal_version}) + message(FATAL_ERROR "${Red}**** FATAL: Require at least ${kernel_minimal_version} please use a recent kernel.") +endif() +endif(kernel_minimal_version) + macro(defstr name value) add_definitions(-D${name}=${value}) endmacro(defstr) @@ -147,12 +159,12 @@ macro(remote_targets_populate) ) if(NOT RSYNC_TARGET OR NOT RSYNC_PREFIX) - message (".. Warning: RSYNC_TARGET RSYNC_PREFIX not defined 'make remote-target-populate' not instanciated") + message ("${Yellow}.. Warning: RSYNC_TARGET RSYNC_PREFIX not defined 'make remote-target-populate' not instanciated${ColourReset}") add_custom_target(remote-target-populate - COMMENT "*** Fatal: RSYNC_TARGET RSYNC_PREFIX required with 'make remote-target-populate'" + COMMENT "${Red}*** Fatal: RSYNC_TARGET RSYNC_PREFIX environment variables required with 'make remote-target-populate'${ColourReset}" COMMAND exit -1 ) - else() + else() configure_file(${SSH_TEMPLATE_DIR}/start-on-target.in ${CMAKE_CURRENT_BINARY_DIR}/target/start-on-${RSYNC_TARGET}.sh) configure_file(${GDB_TEMPLATE_DIR}/gdb-on-target.in ${CMAKE_CURRENT_BINARY_DIR}/target/gdb-on-${RSYNC_TARGET}.ini) @@ -160,96 +172,96 @@ macro(remote_targets_populate) add_custom_target(remote-target-populate DEPENDS populate COMMAND chmod +x ${CMAKE_CURRENT_BINARY_DIR}/target/start-on-${RSYNC_TARGET}.sh - COMMAND rsync --archive --delete ${PROJECT_PKG_DIR}/ ${RSYNC_TARGET}:${RSYNC_PREFIX}/${PROJECT_NAME} + COMMAND rsync --archive --delete ${PROJECT_PKG_BUILD_DIR}/ ${RSYNC_TARGET}:${RSYNC_PREFIX}/${PROJECT_NAME} COMMENT "${REMOTE_LAUNCH}" ) endif() endmacro(remote_targets_populate) macro(wgt_package_build) - if(NOT EXISTS ${TEMPLATE_WGT_DIR}/config.xml.in OR NOT EXISTS ${TEMPLATE_WGT_DIR}/icon-default.png) - MESSAGE(SEND_ERROR "${Red}WARNING ! Missing mandatory files to build widget file.\nYou need config.xml.in and ${PROJECT_ICON} files in ${TEMPLATE_WGT_DIR} folder.${ColourReset}") - else() - # Build widget spec file from template only once (Fulup good idea or should depend on time ????) - if(NOT EXISTS ${TEMPLATE_WGT_DIR}/config.xml.in OR NOT EXISTS ${TEMPLATE_WGT_DIR}/${PROJECT_ICON}) - configure_file(${TEMPLATE_WGT_DIR}/config.xml.in ${PROJECT_PKG_BUILD_DIR}/config.xml) - configure_file(${TEMPLATE_WGT_DIR}/config.xml.in ${PROJECT_PKG_ENTRY_POINT}/config.xml) - file(COPY ${TEMPLATE_WGT_DIR}/icon-default.png DESTINATION ${PROJECT_PKG_BUILD_DIR}/${PROJECT_ICON}) - endif(NOT EXISTS ${TEMPLATE_WGT_DIR}/config.xml.in OR NOT EXISTS ${TEMPLATE_WGT_DIR}/${PROJECT_ICON}) - - # Fulup ??? copy any extra file in wgt/etc into populate package before building the widget - file(GLOB PROJECT_CONF_FILES "${TEMPLATE_WGT_DIR}/etc/*") - if(${PROJECT_CONF_FILES}) - file(COPY "${TEMPLATE_WGT_DIR}/etc/*" DESTINATION ${PROJECT_PKG_BUILD_DIR}/etc/) - endif(${PROJECT_CONF_FILES}) - - add_custom_command(OUTPUT ${PROJECT_NAME}.wgt - DEPENDS ${PROJECT_TARGETS} - COMMAND wgtpkg-pack -f -o ${PROJECT_NAME}.wgt ${PROJECT_PKG_BUILD_DIR} - ) + if(NOT EXISTS ${WGT_TEMPLATE_DIR}/config.xml.in OR NOT EXISTS ${WGT_TEMPLATE_DIR}/icon-default.png) + MESSAGE(FATAL_ERROR "${Red}WARNING ! Missing mandatory files to build widget file.\nYou need config.xml.in and ${PROJECT_ICON} files in ${WGT_TEMPLATE_DIR} folder.${ColourReset}") + endif() - add_custom_target(widget DEPENDS ${PROJECT_NAME}.wgt) - add_dependencies(widget populate) - set(ADDITIONAL_MAKE_CLEAN_FILES, "${PROJECT_NAME}.wgt") + configure_file(${WGT_TEMPLATE_DIR}/config.xml.in ${PROJECT_PKG_BUILD_DIR}/config.xml) + configure_file(${WGT_TEMPLATE_DIR}/config.xml.in ${PROJECT_PKG_ENTRY_POINT}/config.xml) + file(COPY ${WGT_TEMPLATE_DIR}/icon-default.png DESTINATION ${PROJECT_PKG_BUILD_DIR}/${PROJECT_ICON}) - if(PACKAGE_MESSAGE) - add_custom_command(TARGET widget - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --cyan "++ ${PACKAGE_MESSAGE}") - endif() + # Fulup ??? copy any extra file in wgt/etc into populate package before building the widget + file(GLOB PROJECT_CONF_FILES "${WGT_TEMPLATE_DIR}/etc/*") + if(${PROJECT_CONF_FILES}) + file(COPY "${WGT_TEMPLATE_DIR}/etc/*" DESTINATION ${PROJECT_PKG_BUILD_DIR}/etc/) + endif(${PROJECT_CONF_FILES}) + + add_custom_command(OUTPUT ${PROJECT_NAME}.wgt + DEPENDS ${PROJECT_TARGETS} + COMMAND wgtpkg-pack -f -o ${PROJECT_NAME}.wgt ${PROJECT_PKG_BUILD_DIR} + ) + + add_custom_target(widget DEPENDS ${PROJECT_NAME}.wgt) + add_dependencies(widget populate) + set(ADDITIONAL_MAKE_CLEAN_FILES, "${PROJECT_NAME}.wgt") + + if(PACKAGE_MESSAGE) + add_custom_command(TARGET widget + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --cyan "++ ${PACKAGE_MESSAGE}") endif() endmacro(wgt_package_build) macro(rpm_package_build) - if(NOT EXISTS ${TEMPLATE_RPM_DIR}/config.spec.in) - MESSAGE(STATUS "Missing mandatory files: you need config.spec.in in ${TEMPLATE_RPM_DIR} folder.") - else() - # extract PROJECT_PKG_DEPS and replace ; by , for RPM spec file - get_property(PROJECT_PKG_DEPS GLOBAL PROPERTY PROJECT_PKG_DEPS) - foreach (PKFCONF ${PROJECT_PKG_DEPS}) + if(NOT EXISTS ${RPM_TEMPLATE_DIR}/rpm-config.spec.in) + MESSAGE(FATAL_ERROR "${Red}Missing mandatory files: you need rpm-config.spec.in in ${RPM_TEMPLATE_DIR} folder.${ColourReset}") + endif() + + # extract PROJECT_PKG_DEPS and replace ; by , for RPM spec file + get_property(PROJECT_PKG_DEPS GLOBAL PROPERTY PROJECT_PKG_DEPS) + foreach (PKFCONF ${PROJECT_PKG_DEPS}) set(RPM_PKG_DEPS "${RPM_PKG_DEPS}, pkgconfig(${PKFCONF})") - endforeach() + endforeach() - # build rpm spec file from template - configure_file(${TEMPLATE_RPM_DIR}/config.spec.in ${PROJECT_PKG_BUILD_DIR}/config.spec) + # build rpm spec file from template + configure_file(${RPM_TEMPLATE_DIR}/rpm-config.spec.in ${PROJECT_PKG_BUILD_DIR}/${PROJECT_NAME}.spec) + configure_file(${RPM_TEMPLATE_DIR}/rpm-config.spec.in ${PROJECT_PKG_ENTRY_POINT}/${PROJECT_NAME}.spec) - add_custom_command(OUTPUT ${PROJECT_NAME}.spec - DEPENDS ${PROJECT_TARGETS} - COMMAND rpmbuild -ba ${PROJECT_PKG_BUILD_DIR}/config.spec - ) + add_custom_command(OUTPUT ${PROJECT_NAME}.spec + DEPENDS ${PROJECT_TARGETS} + COMMAND rpmbuild -ba ${PROJECT_PKG_BUILD_DIR}/${PROJECT_NAME}.spec + ) - add_custom_target(rpm DEPENDS ${PROJECT_NAME}.spec) - add_dependencies(rpm populate) - set(ADDITIONAL_MAKE_CLEAN_FILES, "${PROJECT_NAME}.spec") + add_custom_target(rpm DEPENDS ${PROJECT_NAME}.spec) + add_dependencies(rpm populate) + set(ADDITIONAL_MAKE_CLEAN_FILES, "${PROJECT_NAME}.spec") - if(PACKAGE_MESSAGE) - add_custom_command(TARGET rpm - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --cyan "++ ${PACKAGE_MESSAGE}") - endif() + if(PACKAGE_MESSAGE) + add_custom_command(TARGET rpm + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --cyan "++ ${PACKAGE_MESSAGE}") endif() endmacro(rpm_package_build) macro(project_package_build) - if(EXISTS ${TEMPLATE_RPM_DIR}) + if(EXISTS ${RPM_TEMPLATE_DIR}) rpm_package_build() endif() - if(EXISTS ${TEMPLATE_WGT_DIR}) + if(EXISTS ${WGT_TEMPLATE_DIR}) wgt_package_build() endif() - if(EXISTS ${TEMPLATE_DEB_DIR}) + if(EXISTS ${DEB_TEMPLATE_DIR}) deb_package_build() endif() endmacro(project_package_build) macro(project_subdirs_add) - if(${ARGV0}) + set (ARGSLIST ${ARGN}) + list(LENGTH ARGSLIST ARGSNUM) + if(${ARGSNUM} GREATER 0) file(GLOB filelist "${ARGV0}") else() - file(GLOB filelist "*") - endif(${ARGV0}) + file(GLOB filelist "*") + endif() foreach(filename ${filelist}) if(EXISTS "${filename}/CMakeLists.txt") @@ -268,6 +280,9 @@ project(${PROJECT_NAME} VERSION ${PROJECT_VERSION} LANGUAGES ${PROJECT_LANGUAGES set(PROJECT_LIBDIR "${CMAKE_SOURCE_DIR}/libs" CACHE PATH "Subpath to libraries") set(PROJECT_RESOURCES "${CMAKE_SOURCE_DIR}/data" CACHE PATH "Subpath to data") +set(AFB_TOKEN "" CACHE PATH "Default AFB_TOKEN") +set(AFB_REMPORT "1234" CACHE PATH "Default AFB_TOKEN") + INCLUDE(FindPkgConfig) INCLUDE(CheckIncludeFiles) INCLUDE(CheckLibraryExists) @@ -336,16 +351,20 @@ if(PACKAGE_PREFIX) else() set(PROJECT_PKG_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/package CACHE PATH "Where the package will be built") endif() -set(PROJECT_PKG_ENTRY_POINT ${CMAKE_SOURCE_DIR}/packaging CACHE PATH "Where package build files, like rpm.spec file or config.xml, are write.") -set (PKG_TEMPLATE_PREFIX ${CMAKE_SOURCE_DIR}/etc CACHE PATH "Default Package Templates Directory") -set(TEMPLATE_WGT_DIR "${CMAKE_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/default/wgt" CACHE PATH "Subpath to a directory where are stored needed files to build widget") -set(TEMPLATE_RPM_DIR "${CMAKE_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/default/rpm" CACHE PATH "Subpath to a directory where are stored needed files to build rpm package") -set(TEMPLATE_DEB_DIR "${CMAKE_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/default/deb" CACHE PATH "Subpath to a directory where are stored needed files to build deb package") +set (PKG_TEMPLATE_PREFIX ${CMAKE_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR} CACHE PATH "Default Package Templates Directory") +set(SSH_TEMPLATE_DIR "${PKG_TEMPLATE_PREFIX}/ssh" CACHE PATH "Subpath to a directory where are stored needed files to launch on remote target to debuging purposes") +set(GDB_TEMPLATE_DIR "${PKG_TEMPLATE_PREFIX}/gdb" CACHE PATH "Subpath to a directory where are stored needed files to launch debuging server on a remote target. Use gdbserver.") +set(WGT_TEMPLATE_DIR "${PKG_TEMPLATE_PREFIX}/wgt" CACHE PATH "Subpath to a directory where are stored needed files to build widget") +set(RPM_TEMPLATE_DIR "${PKG_TEMPLATE_PREFIX}/rpm" CACHE PATH "Subpath to a directory where are stored needed files to build rpm package") +set(DEB_TEMPLATE_DIR "${PKG_TEMPLATE_PREFIX}/deb" CACHE PATH "Subpath to a directory where are stored needed files to build deb package") + +string(REGEX REPLACE "^(.*)/.*$" "\\1" ENTRY_POINT "${PKG_TEMPLATE_PREFIX}") +set(PROJECT_PKG_ENTRY_POINT ${ENTRY_POINT}/packaging CACHE PATH "Where package build files, like rpm.spec file or config.xml, are write.") # Default Linkflag if(NOT BINDINGS_LINK_FLAG) - set(BINDINGS_LINK_FLAG "-Wl,--version-script=${CMAKE_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/default/cmake/export.map") + set(BINDINGS_LINK_FLAG "-Wl,--version-script=${PKG_TEMPLATE_PREFIX}/cmake/export.map") endif() # Add a dummy target to enable global dependency order @@ -370,3 +389,6 @@ macro(project_closing_msg) ${DEPENDENCIES_TARGET} ${PROJECT_TARGETS}) endif() endmacro() + +# Add RSYSTARGET +remote_targets_populate()