From 383b3fae75d5e91b8b1341e399cc7fde65c95c8a Mon Sep 17 00:00:00 2001 From: Automated MSK Jenkins User <msk_jenkins@msk-ubuntu1604.desy.de> Date: Sun, 9 Feb 2020 12:42:14 +0000 Subject: [PATCH] automatic merge of project-template --- cmake/Modules/FindConfigGenerator.cmake | 40 +++++++++++++++++++ cmake/config_generator_project.cmake | 52 +++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 cmake/Modules/FindConfigGenerator.cmake create mode 100644 cmake/config_generator_project.cmake diff --git a/cmake/Modules/FindConfigGenerator.cmake b/cmake/Modules/FindConfigGenerator.cmake new file mode 100644 index 00000000..0361e650 --- /dev/null +++ b/cmake/Modules/FindConfigGenerator.cmake @@ -0,0 +1,40 @@ +####################################################################################################################### +# +# cmake module for finding the config generator +# +# returns: +# ConfigGenerator_FOUND : true or false, depending on whether the package was found +# ConfigGenerator_VERSION : the package version +# ConfigGenerator_DIR : path to the include directory +# +# @author Martin Hierholzer, DESY +# +####################################################################################################################### + +####################################################################################################################### +# +# IMPORTANT NOTE: +# +# DO NOT MODIFY THIS FILE inside a project. Instead update the project-template repository and pull the change from +# there. Make sure to keep the file generic, since it will be used by other projects, too. +# +# If you have modified this file inside a project despite this warning, make sure to cherry-pick all your changes +# into the project-template repository immediately. +# +####################################################################################################################### + +SET(ConfigGenerator_FOUND 0) + + +FIND_PATH(ConfigGenerator_DIR ConfigGeneratorConfigVersion.cmake + ${CMAKE_CURRENT_LIST_DIR} + /usr/share/llrfConfigGenerator* +) + +include(${ConfigGenerator_DIR}/ConfigGeneratorConfigVersion.cmake) +set(ConfigGenerator_VERSION ${PACKAGE_VERSION}) + +# use a macro provided by CMake to check if all the listed arguments are valid and set ConfigGenerator_FOUND accordingly +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(ConfigGenerator REQUIRED_VARS ConfigGenerator_DIR VERSION_VAR ConfigGenerator_VERSION ) + diff --git a/cmake/config_generator_project.cmake b/cmake/config_generator_project.cmake new file mode 100644 index 00000000..00fde5a5 --- /dev/null +++ b/cmake/config_generator_project.cmake @@ -0,0 +1,52 @@ +# +# cmake include to be used for config generator based projects. +# +# Configuration packages for servers can have a very simple CMakeLists.txt like this: +# +# PROJECT(exampleserver-config NONE) +# cmake_minimum_required(VERSION 3.5) +# +# # Note: Always keep MAJOR_VERSION and MINOR_VERSION identical to the server version. Count only the patch separately. +# set(${PROJECT_NAME}_MAJOR_VERSION 01) +# set(${PROJECT_NAME}_MINOR_VERSION 00) +# set(${PROJECT_NAME}_PATCH_VERSION 00) +# include(cmake/set_version_numbers.cmake) +# +# include(cmake/config_generator_project.cmake) +# + +list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules) + +find_package(ConfigGenerator 02.00 REQUIRED) + +set(DESTDIR share/ConfigGenerator-${PROJECT_NAME}-${${PROJECT_NAME}_MAJOR_VERSION}-${${PROJECT_NAME}_MINOR_VERSION}) + +# copy all script files from config generator to our build directory +file(GLOB scripts RELATIVE ${ConfigGenerator_DIR} ${ConfigGenerator_DIR}/*.sh ${ConfigGenerator_DIR}/*.py ${ConfigGenerator_DIR}/*.inc ${ConfigGenerator_DIR}/ConfigGenerator/*.py) +foreach(script ${scripts}) + configure_file("${ConfigGenerator_DIR}/${script}" "${PROJECT_BINARY_DIR}/${script}" COPYONLY) +endforeach() + +# find all server type directories in our source directory +file(GLOB hostlists RELATIVE ${PROJECT_SOURCE_DIR} */hostlist) +foreach(hostlist ${hostlists}) + string(REPLACE "/hostlist" "" servertype "${hostlist}") + list(APPEND servertypes "${servertype}") +endforeach() + +# copy all server type directories to the build directory +foreach(servertype ${servertypes}) + file(GLOB_RECURSE files RELATIVE ${PROJECT_SOURCE_DIR} ${servertype}/*) + foreach(f ${files}) + configure_file("${f}" "${PROJECT_BINARY_DIR}/${f}" COPYONLY) + endforeach() +endforeach() + +# install server types (scripts are installed by upstream config generator project) +foreach(servertype ${servertypes}) + install(DIRECTORY "${servertype}/settings" DESTINATION "${DESTDIR}/${servertype}") + install(DIRECTORY "${servertype}/templates" DESTINATION "${DESTDIR}/${servertype}") + file(GLOB thefiles LIST_DIRECTORIES no "${servertype}/*") + install(FILES ${thefiles} DESTINATION "${DESTDIR}/${servertype}") +endforeach() + -- GitLab