Browse Source

cmake: do not force use of new signature for target_link_libraries

Renz Christian Bagaporo 6 years ago
parent
commit
2a5b02097b
1 changed files with 10 additions and 7 deletions
  1. 10 7
      tools/cmake/component.cmake

+ 10 - 7
tools/cmake/component.cmake

@@ -295,7 +295,15 @@ macro(__component_set_dependencies reqs type)
     foreach(req ${reqs})
         if(req IN_LIST build_component_targets)
             __component_get_property(req_lib ${req} COMPONENT_LIB)
-            target_link_libraries(${component_lib} ${type} ${req_lib})
+            if("${type}" STREQUAL "PRIVATE")
+                set_property(TARGET ${component_lib} APPEND PROPERTY LINK_LIBRARIES ${req_lib})
+                set_property(TARGET ${component_lib} APPEND PROPERTY INTERFACE_LINK_LIBRARIES $<LINK_ONLY:${req_lib}>)
+            elseif("${type}" STREQUAL "PUBLIC")
+                set_property(TARGET ${component_lib} APPEND PROPERTY LINK_LIBRARIES ${req_lib})
+                set_property(TARGET ${component_lib} APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${req_lib})
+            else() # INTERFACE
+                set_property(TARGET ${component_lib} APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${req_lib})
+            endif()
         endif()
     endforeach()
 endmacro()
@@ -312,12 +320,7 @@ macro(__component_set_all_dependencies)
         __component_set_dependencies("${priv_reqs}" PRIVATE)
     else()
         __component_get_property(reqs ${component_target} __REQUIRES)
-        foreach(req ${reqs})
-            if(req IN_LIST build_component_targets)
-                __component_get_property(req_lib ${req} COMPONENT_LIB)
-                target_link_libraries(${component_lib} INTERFACE ${req_lib})
-            endif()
-        endforeach()
+        __component_set_dependencies("${reqs}" INTERFACE)
     endif()
 endmacro()