[build] Generate the LICENSE.md for mbgl-core
Add a script that for everything we link against mbgl-core, it will check the license and generate a file all the dependencies listed with the respective authors, project urls and license.
This commit is contained in:
40
scripts/license.cmake
Normal file
40
scripts/license.cmake
Normal file
@@ -0,0 +1,40 @@
|
||||
# Generate the license file for the target ${param} at config time
|
||||
|
||||
function(mbgl_generate_license param)
|
||||
# Fake targets or non relevant.
|
||||
set(BLACKLIST "mbgl-compiler-options")
|
||||
|
||||
get_target_property(LIBRARIES ${param} LINK_LIBRARIES)
|
||||
list(INSERT LIBRARIES 0 ${param})
|
||||
|
||||
# cmake-format: off
|
||||
foreach(LIBRARY IN LISTS LIBRARIES)
|
||||
# cmake-format: on
|
||||
if(${LIBRARY} IN_LIST BLACKLIST)
|
||||
continue()
|
||||
endif()
|
||||
|
||||
if(TARGET ${LIBRARY})
|
||||
get_target_property(NAME ${LIBRARY} INTERFACE_MAPBOX_NAME)
|
||||
get_target_property(URL ${LIBRARY} INTERFACE_MAPBOX_URL)
|
||||
get_target_property(AUTHOR ${LIBRARY} INTERFACE_MAPBOX_AUTHOR)
|
||||
get_target_property(LICENSE ${LIBRARY} INTERFACE_MAPBOX_LICENSE)
|
||||
|
||||
if(NOT LICENSE OR NOT EXISTS ${LICENSE})
|
||||
message(FATAL_ERROR "License not found for target: ${LIBRARY}")
|
||||
endif()
|
||||
|
||||
file(READ ${LICENSE} LICENSE_DATA)
|
||||
|
||||
string(APPEND LICENSE_LIST "### [${NAME}](${URL}) by ${AUTHOR}\n\n")
|
||||
string(APPEND LICENSE_LIST "```\n${LICENSE_DATA}\n```\n\n")
|
||||
string(APPEND LICENSE_LIST "---\n\n")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
file(WRITE ${CMAKE_BINARY_DIR}/${param}.license ${LICENSE_LIST})
|
||||
|
||||
add_custom_target(${param}-license COMMAND cat ${CMAKE_BINARY_DIR}/${param}.license)
|
||||
endfunction()
|
||||
|
||||
mbgl_generate_license(mbgl-core)
|
||||
Reference in New Issue
Block a user