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