@@ -10,6 +10,7 @@ include(CheckFunctionExists)
1010include (CheckCSourceCompiles)
1111include (CheckIncludeFile)
1212include (UseCompat)
13+ include (ABICheck)
1314include (SourceFormat)
1415include (GenDoc)
1516
@@ -34,15 +35,17 @@ endif()
3435# normalize build type string
3536string (TOUPPER "${CMAKE_BUILD_TYPE} " BUILD_TYPE_UPPER)
3637if ("${BUILD_TYPE_UPPER} " STREQUAL "RELEASE" )
37- set (CMAKE_BUILD_TYPE "Release" CACHE STRING "Build Type" FORCE)
38- elseif ("${BUILD_TYPE_UPPER} " STREQUAL "DEBUG" )
39- set (CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build Type" FORCE)
40- elseif ("${BUILD_TYPE_UPPER} " STREQUAL "RELWITHDEBINFO" )
41- set (CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Build Type" FORCE)
42- elseif ("${BUILD_TYPE_UPPER} " STREQUAL "RELWITHDEBUG" )
43- set (CMAKE_BUILD_TYPE "RelWithDebug" CACHE STRING "Build Type" FORCE)
44- elseif ("${BUILD_TYPE_UPPER} " STREQUAL "DOCONLY" )
45- set (CMAKE_BUILD_TYPE "DocOnly" CACHE STRING "Build Type" FORCE)
38+ set (CMAKE_BUILD_TYPE "Release" CACHE STRING "Build Type" FORCE)
39+ elseif ("${BUILD_TYPE_UPPER} " STREQUAL "DEBUG" )
40+ set (CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build Type" FORCE)
41+ elseif ("${BUILD_TYPE_UPPER} " STREQUAL "RELWITHDEBINFO" )
42+ set (CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Build Type" FORCE)
43+ elseif ("${BUILD_TYPE_UPPER} " STREQUAL "RELWITHDEBUG" )
44+ set (CMAKE_BUILD_TYPE "RelWithDebug" CACHE STRING "Build Type" FORCE)
45+ elseif ("${BUILD_TYPE_UPPER} " STREQUAL "ABICHECK" )
46+ set (CMAKE_BUILD_TYPE "ABICheck" CACHE STRING "Build Type" FORCE)
47+ elseif ("${BUILD_TYPE_UPPER} " STREQUAL "DOCONLY" )
48+ set (CMAKE_BUILD_TYPE "DocOnly" CACHE STRING "Build Type" FORCE)
4649endif ()
4750
4851# Version of the project
@@ -108,6 +111,7 @@ endif()
108111set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_COVERAGE} -Wall -Wextra -fvisibility=hidden -std=gnu99" )
109112set (CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O2" )
110113set (CMAKE_C_FLAGS_DEBUG "-g -O0" )
114+ set (CMAKE_C_FLAGS_ABICHECK "-g -Og" )
111115
112116# options
113117option (ENABLE_SSH "Enable NETCONF over SSH support (via libssh)" ON )
@@ -149,7 +153,6 @@ if(ENABLE_TLS)
149153endif ()
150154
151155set (headers
152- ${PROJECT_BINARY_DIR} /src/config.h
153156 src/log .h
154157 src/netconf.h
155158 src/session.h
@@ -279,7 +282,7 @@ install(TARGETS netconf2 DESTINATION ${CMAKE_INSTALL_LIBDIR})
279282# install headers
280283install (FILES ${CMAKE_CURRENT_BINARY_DIR} /nc_client.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
281284install (FILES ${CMAKE_CURRENT_BINARY_DIR} /nc_server.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
282- install (FILES ${headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /libnetconf2)
285+ install (FILES ${headers} ${PROJECT_BINARY_DIR} /src/config.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /libnetconf2)
283286
284287# install pkg-config file
285288find_package (PkgConfig)
@@ -320,6 +323,11 @@ endif()
320323# generate doxygen documentation for libnetconf2 API
321324gen_doc("${doxy_files} " ${LIBNETCONF2_VERSION} ${LIBNETCONF2_DESCRIPTION} "" )
322325
326+ # generate API/ABI report
327+ if ("${BUILD_TYPE_UPPER} " STREQUAL "ABICHECK" )
328+ lib_abi_check(netconf2 "${headers} " ${LIBNETCONF2_SOVERSION_FULL} a11ddd9f032e0b7bdaa8583c49f4eca168c9c642)
329+ endif ()
330+
323331# clean cmake cache
324332add_custom_target (cleancache
325333 COMMAND make clean
0 commit comments