blob: 740753c0fb232259a83d99c51df3bc5a2bfea86e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
function (install_imported)
cmake_parse_arguments (ARG "" "DESTINATION" "TARGETS" ${ARGN})
if (NOT DEFINED ARG_DESTINATION)
message (FATAL_ERROR "DESTINATION not defined")
endif ()
foreach (target ${ARG_TARGETS})
get_target_property (location ${target} LOCATION)
get_target_property (version ${target} VERSION)
get_target_property (soversion ${target} SOVERSION)
get_target_property (output_name ${target} OUTPUT_NAME)
get_target_property (suffix ${target} SUFFIX)
get_target_property (type ${target} TYPE)
if (NOT ${type} STREQUAL "SHARED_LIBRARY")
message (FATAL_ERROR "install_imported: ${type} not supported")
endif ()
if (${location} STREQUAL "${target}-NOTFOUND")
return ()
endif ()
if (NOT ${version} STREQUAL "version-NOTFOUND")
set (version ".${version}")
else ()
set (version "")
endif ()
if (NOT ${soversion} STREQUAL "soversion-NOTFOUND")
set (soversion ".${soversion}")
else ()
set (soversion "")
endif ()
if (${output_name} STREQUAL "output_name-NOTFOUND")
set (output_name ${target})
endif ()
set (name_noversion "${CMAKE_SHARED_LIBRARY_PREFIX}${output_name}${CMAKE_SHARED_LIBRARY_SUFFIX}")
if (APPLE)
set (name_version "${CMAKE_SHARED_LIBRARY_PREFIX}${output_name}${version}${CMAKE_SHARED_LIBRARY_SUFFIX}")
set (name_soversion "${CMAKE_SHARED_LIBRARY_PREFIX}${output_name}${soversion}${CMAKE_SHARED_LIBRARY_SUFFIX}")
else ()
set (name_version "${CMAKE_SHARED_LIBRARY_PREFIX}${output_name}${CMAKE_SHARED_LIBRARY_SUFFIX}${version}")
set (name_soversion "${CMAKE_SHARED_LIBRARY_PREFIX}${output_name}${CMAKE_SHARED_LIBRARY_SUFFIX}${soversion}")
endif ()
if (NOT IS_ABSOLUTE ${location})
set (location ${CMAKE_CURRENT_SOURCE_DIR}/${location})
endif ()
if (NOT ${name_noversion} STREQUAL ${name_soversion})
add_custom_command (
OUTPUT ${name_noversion}
COMMAND ${CMAKE_COMMAND} -E create_symlink ${name_soversion} ${name_noversion} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
MAIN_DEPENDENCY ${name_soversion}
)
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${name_noversion} DESTINATION ${ARG_DESTINATION})
endif ()
if (NOT ${name_soversion} STREQUAL ${name_version})
add_custom_command (
OUTPUT ${name_soversion}
COMMAND ${CMAKE_COMMAND} -E create_symlink ${name_version} ${name_soversion} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
MAIN_DEPENDENCY ${name_version}
)
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${name_soversion} DESTINATION ${ARG_DESTINATION})
endif ()
add_custom_command (
OUTPUT ${name_version}
COMMAND ${CMAKE_COMMAND} -E copy "${location}" "${CMAKE_CURRENT_BINARY_DIR}/${name_version}"
MAIN_DEPENDENCY ${location}
)
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${name_version} DESTINATION ${ARG_DESTINATION})
add_custom_target(
imported_${output_name} ALL
DEPENDS ${name_version} ${name_noversion} ${name_soversion}
)
endforeach ()
endfunction ()
|