HPCW 3.0
Loading...
Searching...
No Matches
macros.cmake
Go to the documentation of this file.
1# Copyright (c) 2019 - 2024 David Guibert
2# All rights reserved.
3#
4# SPDX-License-Identifier: Apache-2.0
5
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
14 # LINK_OPTIONS )
15
16 set(deps "")
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}")
25 foreach(dep ${deps})
26 if(TARGET ${dep})
27 # message(STATUS "dep: ${dep} -> target")
28 add_link_lib_impl(${dep})
29 else()
30 if(dep)
31 # message(STATUS "dep: ${dep} -> found")
32 if("${dep}" MATCHES "\.\‍(so\|.a\‍)")
33 string(APPEND link_libs " ${dep}")
34 else()
35 string(APPEND link_libs " -l${dep}")
36 endif()
37 endif()
38 endif()
39 endforeach()
40endmacro()
41
42macro(add_link_lib target_name)
43 set(link_libs "")
44 add_link_lib_impl(${target_name})
45endmacro()
46
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
55 # LINK_OPTIONS )
56
57 set(incs "")
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}")
62 endif()
63
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_}")
68 endif()
69 get_target_property(INCLUDE_DIRECTORIES_ ${target_name} INCLUDE_DIRECTORIES)
70 if(INCLUDE_DIRECTORIES_)
71 list(APPEND incs "${INCLUDE_DIRECTORIES_}")
72 endif()
73 # message(STATUS "incs: ${incs}")
74 foreach(inc ${incs})
75 # message(STATUS "iterate over ${inc}")
76 if(TARGET ${inc})
77 # message(STATUS "inc: ${inc} -> target")
78 add_inc_dirs_impl(${inc})
79 else()
80 if(NOT "${inc}" MATCHES "\.\‍(so\|.a\‍)$")
81 # message(STATUS "inc: ${inc} -> found")
82 string(APPEND inc_dirs " -I${inc}")
83 endif()
84 endif()
85 endforeach()
86endmacro()
87
88macro(add_inc_dirs target_name)
89 set(inc_dirs "")
90 add_inc_dirs_impl(${target_name})
91endmacro()