cpp-utilities/cmake/modules/TemplateFinder.cmake

39 lines
1.7 KiB
CMake
Raw Permalink Normal View History

cmake_minimum_required(VERSION 3.17.0 FATAL_ERROR)
2020-01-10 17:58:41 +01:00
2018-02-21 23:00:32 +01:00
# prevent multiple inclusion
2019-02-06 17:30:52 +01:00
if (DEFINED TEMPLATE_FINDER_LOADED)
2018-02-21 23:00:32 +01:00
return()
2019-02-06 17:30:52 +01:00
endif ()
2018-02-21 23:00:32 +01:00
set(TEMPLATE_FINDER_LOADED YES)
function (find_template_file FILE_NAME_WITHOUT_EXTENSION PROJECT_VAR_NAME OUTPUT_VAR)
find_template_file_full_name("${FILE_NAME_WITHOUT_EXTENSION}.in" "${PROJECT_VAR_NAME}" "${OUTPUT_VAR}")
2023-05-16 21:39:10 +02:00
set(${OUTPUT_VAR}
"${${OUTPUT_VAR}}"
PARENT_SCOPE)
endfunction ()
function (find_template_file_full_name FILE_NAME PROJECT_VAR_NAME OUTPUT_VAR)
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/templates/${FILE_NAME}")
2018-02-21 23:00:32 +01:00
# check own source directory
2019-11-30 17:58:01 +01:00
set(${OUTPUT_VAR}
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/templates/${FILE_NAME}"
2019-11-30 17:58:01 +01:00
PARENT_SCOPE)
2018-02-21 23:00:32 +01:00
message(STATUS "Using template for ${FILE_NAME} from own (${META_PROJECT_NAME}) source directory.")
elseif (EXISTS "${${PROJECT_VAR_NAME}_SOURCE_DIR}/cmake/templates/${FILE_NAME}")
2018-02-21 23:00:32 +01:00
# check sources of project
2019-11-30 17:58:01 +01:00
set(${OUTPUT_VAR}
"${${PROJECT_VAR_NAME}_SOURCE_DIR}/cmake/templates/${FILE_NAME}"
2019-11-30 17:58:01 +01:00
PARENT_SCOPE)
2018-02-21 23:00:32 +01:00
message(STATUS "Using template for ${FILE_NAME} from ${PROJECT_VAR_NAME} source directory.")
elseif (EXISTS "${${PROJECT_VAR_NAME}_CONFIG_DIRS}/templates/${FILE_NAME}")
2018-02-21 23:00:32 +01:00
# check installed version of project
2019-11-30 17:58:01 +01:00
set(${OUTPUT_VAR}
"${${PROJECT_VAR_NAME}_CONFIG_DIRS}/templates/${FILE_NAME}"
2019-11-30 17:58:01 +01:00
PARENT_SCOPE)
2018-02-21 23:00:32 +01:00
message(STATUS "Using template for ${FILE_NAME} from ${PROJECT_VAR_NAME} installation.")
2019-02-06 17:30:52 +01:00
else ()
2018-02-21 23:00:32 +01:00
message(FATAL_ERROR "Template for ${FILE_NAME} file can not be located.")
2019-02-06 17:30:52 +01:00
endif ()
endfunction ()