File: TemplateFinder.cmake

package info (click to toggle)
martchus-cpp-utilities 5.28.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,352 kB
  • sloc: cpp: 12,471; awk: 18; ansic: 12; makefile: 10
file content (38 lines) | stat: -rw-r--r-- 1,692 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
cmake_minimum_required(VERSION 3.17.0 FATAL_ERROR)

# prevent multiple inclusion
if (DEFINED TEMPLATE_FINDER_LOADED)
    return()
endif ()
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}")
    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}")
        # check own source directory
        set(${OUTPUT_VAR}
            "${CMAKE_CURRENT_SOURCE_DIR}/cmake/templates/${FILE_NAME}"
            PARENT_SCOPE)
        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}")
        # check sources of project
        set(${OUTPUT_VAR}
            "${${PROJECT_VAR_NAME}_SOURCE_DIR}/cmake/templates/${FILE_NAME}"
            PARENT_SCOPE)
        message(STATUS "Using template for ${FILE_NAME} from ${PROJECT_VAR_NAME} source directory.")
    elseif (EXISTS "${${PROJECT_VAR_NAME}_CONFIG_DIRS}/templates/${FILE_NAME}")
        # check installed version of project
        set(${OUTPUT_VAR}
            "${${PROJECT_VAR_NAME}_CONFIG_DIRS}/templates/${FILE_NAME}"
            PARENT_SCOPE)
        message(STATUS "Using template for ${FILE_NAME} from ${PROJECT_VAR_NAME} installation.")
    else ()
        message(FATAL_ERROR "Template for ${FILE_NAME} file can not be located.")
    endif ()
endfunction ()