From 0bb1737930204960461fabc06abac9fb1fc991b1 Mon Sep 17 00:00:00 2001 From: Martin Hierholzer <martin.hierholzer@desy.de> Date: Thu, 30 Jan 2020 14:07:31 +0100 Subject: [PATCH] added cmake include for config-generator-based projects --- cmake/config_generator_project.cmake | 51 ++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 cmake/config_generator_project.cmake diff --git a/cmake/config_generator_project.cmake b/cmake/config_generator_project.cmake new file mode 100644 index 0000000..9591b35 --- /dev/null +++ b/cmake/config_generator_project.cmake @@ -0,0 +1,51 @@ +# +# 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) +# +# 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 01.00 REQUIRED) + +set(DESTDIR share/ConfigGenerator${ConfigGenerator_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