Newer
Older

Dylan Aïssi
committed
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
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
# 2022 Collabora, Ltd.
#[=======================================================================[.rst:
GenerateABIDescriptor
-------
Generate an XML library descriptor file to be used
by abi-compliance-checker and apertis-abi-compare.
find_package(GenerateABIDescriptor REQUIRED)
generate_abi_descriptor(${PROJECT_NAME}
"DEFAULT"
"DEFAULT"
)
#]=======================================================================]
include(GNUInstallDirs)
function(generate_abi_descriptor LIB_NAME HEADER_PATH SHARED_PATH)
get_target_property(VER ${LIB_NAME} VERSION)
get_target_property(PUBLIC_HEADER ${LIB_NAME} PUBLIC_HEADER)
message("[abi_descriptor_generator] Generating a descriptor for ${LIB_NAME} ${VER}")
set(XML_NAME "lib${LIB_NAME}-abi-descriptor.xml")
if(HEADER_PATH STREQUAL "DEFAULT")
message("[abi_descriptor_generator] HEADER_PATH is not defined!")
message("[abi_descriptor_generator] Use the default header install location instead")
set(HDRS_PATH "/usr/include/${PROJECT_NAME}/")
else()
message("[abi_descriptor_generator] Use the defined HEADER_PATH")
set(HDRS_PATH "${HEADER_PATH}")
endif()
message("[abi_descriptor_generator] Use public headers:")
set(HEADER_LIST)
foreach(HDR ${PUBLIC_HEADER})
set(HDR_PATH " \${PATH\}${HDRS_PATH}${HDR}")
message("[abi_descriptor_generator] ${HDR_PATH}")
list(APPEND HEADER_LIST "${HDR_PATH}")
endforeach()
string(REPLACE ";" "\n" HDR_LIST "${HEADER_LIST}")
set(ABI_HEADER ${HDR_LIST})
if(SHARED_PATH STREQUAL "DEFAULT")
message("[abi_descriptor_generator] SHARED_PATH is not defined!")
message("[abi_descriptor_generator] Use the default library install location instead")
set(ABI_SHARED " \${PATH\}${CMAKE_INSTALL_FULL_LIBDIR}/lib${LIB_NAME}.so")
else()
message("[abi_descriptor_generator] Use the defined SHARED_PATH")
set(ABI_SHARED " \${PATH\}${SHARED_PATH}/lib${LIB_NAME}.so")
endif()
message("[abi_descriptor_generator] Use shared library:")
message("[abi_descriptor_generator] ${ABI_SHARED}")
configure_file("/usr/lib/cmake/GenerateABIDescriptor/GenerateABIDescriptor.xml.in" "${XML_NAME}" @ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${XML_NAME}"
DESTINATION "/usr/share/doc/lib${LIB_NAME}-dev/" )
endfunction()