Skip to content
Snippets Groups Projects
Commit 3e33325f authored by Dylan Aïssi's avatar Dylan Aïssi
Browse files

apertis-abi-compare: add a cmake module generating descriptor file at build time


Signed-off-by: default avatarDylan Aïssi <dylan.aissi@collabora.com>
parent 64c25ac8
No related branches found
No related tags found
3 merge requests!44Merge changes from apertis/v2022-updates into apertis/v2022,!40apertis-abi-compare: add a cmake module generating descriptor file at build time,!38Backport v2022-updates <- v2023pre: Improvement ABI checker script
......@@ -3,6 +3,7 @@ all clean install:
$(MAKE) -C doc $@
$(MAKE) -C tests $@
$(MAKE) -C tools $@
$(MAKE) -C cmake $@
check: all
$(MAKE) -C tests check
......
<ABI_Descriptor>
<version>
${VER}
</version>
<headers>
@ABI_HEADER@
</headers>
<libs>
@ABI_SHARED@
</libs>
</ABI_Descriptor>
# 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()
INSTALL ?= install
PREFIX ?= /usr
cmakedir = $(PREFIX)/lib/cmake/GenerateABIDescriptor/
CMAKE_TOOLDIR ?= $(DESTDIR)$(cmakedir)
CMAKE = \
GenerateABIDescriptorConfig.cmake \
GenerateABIDescriptor.xml.in
all:
clean:
install:
$(INSTALL) -d $(CMAKE_TOOLDIR)
for f in $(CMAKE); \
do \
$(INSTALL) $$f $(CMAKE_TOOLDIR); \
done
usr/bin/
usr/share/man
etc/xdg/ade/sysroot.conf
usr/lib/cmake/
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment