-
Martin Christoph Hierholzer authoredMartin Christoph Hierholzer authored
config_generator_project.cmake 1.96 KiB
#
# 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()