1# Copyright (c) 2019 - 2024 David Guibert
4# SPDX-License-Identifier: Apache-2.0
6macro(add_link_lib_impl target_name)
7 # STATIC_LIBRARY, MODULE_LIBRARY, SHARED_LIBRARY, OBJECT_LIBRARY,
8 # INTERFACE_LIBRARY, EXECUTABLE include(CMakePrintHelpers)
9 # cmake_print_properties(TARGETS ${target_name} PROPERTIES IMPORTED TYPE
10 # IMPORTED_LOCATION LOCATION IMPORTED_LINK_LIBRARIES
11 # IMPORTED_INCLUDE_DIRECTORIES IMPORTED_LINK_OPTIONS INTERFACE_LINK_LIBRARIES
12 # INTERFACE_INCLUDE_DIRECTORIES INTERFACE_COMPILE_OPTIONS
13 # INTERFACE_LINK_OPTIONS LINK_LIBRARIES INCLUDE_DIRECTORIES COMPILE_OPTIONS
17 get_target_property(INTERFACE_LINK_LIBRARIES ${target_name}
18 INTERFACE_LINK_LIBRARIES)
19 list(APPEND deps "${INTERFACE_LINK_LIBRARIES}")
20 get_target_property(LINK_LIBRARIES ${target_name} LINK_LIBRARIES)
21 list(APPEND deps "${LINK_LIBRARIES}")
22 get_target_property(LOCATION ${target_name} LOCATION)
23 list(APPEND deps "${LOCATION}")
24 # message(STATUS "deps: ${deps}")
27 # message(STATUS "dep: ${dep} -> target")
28 add_link_lib_impl(${dep})
31 # message(STATUS "dep: ${dep} -> found")
32 if("${dep}" MATCHES "\.\(so\|.a\)")
33 string(APPEND link_libs " ${dep}")
35 string(APPEND link_libs " -l${dep}")
42macro(add_link_lib target_name)
44 add_link_lib_impl(${target_name})
47macro(add_inc_dirs_impl target_name)
48 # STATIC_LIBRARY, MODULE_LIBRARY, SHARED_LIBRARY, OBJECT_LIBRARY,
49 # INTERFACE_LIBRARY, EXECUTABLE include(CMakePrintHelpers)
50 # cmake_print_properties(TARGETS ${target_name} PROPERTIES IMPORTED TYPE
51 # IMPORTED_LOCATION LOCATION IMPORTED_LINK_LIBRARIES
52 # IMPORTED_INCLUDE_DIRECTORIES IMPORTED_LINK_OPTIONS INTERFACE_LINK_LIBRARIES
53 # INTERFACE_INCLUDE_DIRECTORIES INTERFACE_COMPILE_OPTIONS
54 # INTERFACE_LINK_OPTIONS LINK_LIBRARIES INCLUDE_DIRECTORIES COMPILE_OPTIONS
58 get_target_property(INTERFACE_LINK_LIBRARIES ${target_name}
59 INTERFACE_LINK_LIBRARIES)
60 if(INTERFACE_LINK_LIBRARIES)
61 list(APPEND incs "${INTERFACE_LINK_LIBRARIES}")
64 get_target_property(INTERFACE_INCLUDE_DIRECTORIES_ ${target_name}
65 INTERFACE_INCLUDE_DIRECTORIES)
66 if(INTERFACE_INCLUDE_DIRECTORIES_)
67 list(APPEND incs "${INTERFACE_INCLUDE_DIRECTORIES_}")
69 get_target_property(INCLUDE_DIRECTORIES_ ${target_name} INCLUDE_DIRECTORIES)
70 if(INCLUDE_DIRECTORIES_)
71 list(APPEND incs "${INCLUDE_DIRECTORIES_}")
73 # message(STATUS "incs: ${incs}")
75 # message(STATUS "iterate over ${inc}")
77 # message(STATUS "inc: ${inc} -> target")
78 add_inc_dirs_impl(${inc})
80 if(NOT "${inc}" MATCHES "\.\(so\|.a\)$")
81 # message(STATUS "inc: ${inc} -> found")
82 string(APPEND inc_dirs " -I${inc}")
88macro(add_inc_dirs target_name)
90 add_inc_dirs_impl(${target_name})