File: license.cmake

package info (click to toggle)
llama.cpp 8064%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 76,488 kB
  • sloc: cpp: 353,828; ansic: 51,268; python: 30,090; lisp: 11,788; sh: 6,290; objc: 1,395; javascript: 924; xml: 384; makefile: 233
file content (40 lines) | stat: -rw-r--r-- 1,445 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
39
40
define_property(GLOBAL PROPERTY LICENSE_TEXT
    BRIEF_DOCS "Embedded licenses"
    FULL_DOCS  "Global string containing all aggregated licenses"
)

function(license_add_file NAME FILE)
    if(NOT IS_ABSOLUTE "${FILE}")
        set(FILE "${CMAKE_CURRENT_SOURCE_DIR}/${FILE}")
    endif()
    if(EXISTS "${FILE}")
        set(TITLE "License for ${NAME}")
        string(REGEX REPLACE "." "=" UNDERLINE "${TITLE}")
        file(READ "${FILE}" TEXT)
        get_property(TMP GLOBAL PROPERTY LICENSE_TEXT)
        string(APPEND TMP "R\"=L=(${TITLE}\n${UNDERLINE}\n\n${TEXT})=L=\",\n")
        set_property(GLOBAL PROPERTY LICENSE_TEXT "${TMP}")
    else()
        message(WARNING "License file '${FILE}' not found")
    endif()
endfunction()

function(license_generate TARGET_NAME)
    message(STATUS "Generating embedded license file for target: ${TARGET_NAME}")
    get_property(TEXT GLOBAL PROPERTY LICENSE_TEXT)

    set(CPP_CONTENT "// Generated by CMake\n\n")
    string(APPEND CPP_CONTENT "const char* LICENSES[] = {\n")
    string(APPEND CPP_CONTENT "${TEXT}")
    string(APPEND CPP_CONTENT "nullptr\n")
    string(APPEND CPP_CONTENT "};\n")

    set(CPP_FILE "${CMAKE_BINARY_DIR}/license.cpp")
    file(WRITE "${CPP_FILE}" "${CPP_CONTENT}")

    if(TARGET ${TARGET_NAME})
        target_sources(${TARGET_NAME} PRIVATE "${CPP_FILE}")
    else()
        message(FATAL_ERROR "Target '${TARGET_NAME}' does not exist")
    endif()
endfunction()