get_linked_lagom_libraries.cmake 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. function(add_lagom_library list item)
  2. list(FIND "${list}" "${item}" item_is_present)
  3. if (item_is_present EQUAL -1)
  4. set("${list}" "${${list}}" "${item}" PARENT_SCOPE)
  5. endif()
  6. endfunction()
  7. function(get_linked_lagom_libraries_impl target output)
  8. if (NOT TARGET "${target}")
  9. return()
  10. endif()
  11. get_target_property(target_is_imported "${target}" IMPORTED)
  12. if (target_is_imported)
  13. return()
  14. endif()
  15. get_target_property(target_type "${target}" TYPE)
  16. if ("${target_type}" STREQUAL "SHARED_LIBRARY")
  17. add_lagom_library("${output}" "${target}")
  18. elseif ("${target_type}" STREQUAL "INTERFACE_LIBRARY")
  19. return()
  20. endif()
  21. get_target_property(target_libraries "${target}" LINK_LIBRARIES)
  22. foreach(target_library IN LISTS target_libraries)
  23. get_linked_lagom_libraries_impl("${target_library}" "${output}")
  24. endforeach()
  25. set("${output}" "${${output}}" PARENT_SCOPE)
  26. endfunction()
  27. function(get_linked_lagom_libraries target output)
  28. get_linked_lagom_libraries_impl(${target} ${output})
  29. set("${output}" "${${output}}" PARENT_SCOPE)
  30. endfunction()