Spaces:
Running on Zero
Running on Zero
| 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() | |