31 lines
1.2 KiB
CMake
31 lines
1.2 KiB
CMake
#
|
|
# ABI Check related macros
|
|
#
|
|
# ABI compliance checker can be obtained from
|
|
# http://ispras.linux-foundation.org/index.php/ABI_compliance_checker
|
|
# Checked using version 1.21.12
|
|
|
|
MACRO(ABICHECK _libname)
|
|
set(ABICHECK_TMPDIR ${CMAKE_CURRENT_BINARY_DIR}/abi-check-headers)
|
|
set(ABICHECK_COMMAND abi-compliance-checker -l ${_libname} -v2 ${FULL_SO_VERSION}
|
|
-relpath ${CMAKE_CURRENT_BINARY_DIR} -dump-abi abi-descriptor.xml
|
|
|| cat ${CMAKE_CURRENT_BINARY_DIR}/logs/${_libname}/[0-9]*/log.txt)
|
|
get_directory_property(INCLUDE_DIRS INCLUDE_DIRECTORIES)
|
|
list(REMOVE_DUPLICATES INCLUDE_DIRS)
|
|
string(REGEX REPLACE ";" "\n" INCLUDE_DIRS "${INCLUDE_DIRS}")
|
|
configure_file("${CMAKE_SOURCE_DIR}/abi-descriptor.template" abi-descriptor.xml)
|
|
# discover and substitute list of include directories for ABI compatibility
|
|
# checks
|
|
file(GLOB ABICHECK_HEADERS RELATIVE ${CMAKE_CURRENT_BINARY_DIR} *.h)
|
|
set(ABICHECK_HEADERS ${ABICHECK_HEADERS} ${CMAKE_SOURCE_DIR}/ws_symbol_export.h)
|
|
add_custom_target(dumpabi-${_libname} DEPENDS ${_libname}.abi.tar.gz)
|
|
set_target_properties(dumpabi-${_libname} PROPERTIES FOLDER "Auxiliary")
|
|
if (WIN32)
|
|
set(ABI_COPY_COMMAND xcopy)
|
|
set(ABI_COPY_FLAGS /d)
|
|
else()
|
|
set(ABI_COPY_COMMAND cp)
|
|
set(ABI_COPY_FLAGS)
|
|
endif()
|
|
ENDMACRO()
|