summaryrefslogtreecommitdiff
path: root/scripts/license.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/license.cmake')
-rw-r--r--scripts/license.cmake40
1 files changed, 40 insertions, 0 deletions
diff --git a/scripts/license.cmake b/scripts/license.cmake
new file mode 100644
index 0000000000..e3a7d2aaa4
--- /dev/null
+++ b/scripts/license.cmake
@@ -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)