From caddbf663d7d931a0b272a00ced33a57f8141ff6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milo=C5=A1=20Komar=C4=8Devi=C4=87?= Date: Wed, 25 Jan 2023 16:31:33 +0100 Subject: [PATCH] Fix shared object versioning --- CMakeLists.txt | 9 +++++++++ src/CMakeLists.txt | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c7e6830a..7ef1ea8c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,15 @@ project(exiv2 # use TWEAK to categorize the build LANGUAGES C CXX ) +# Shared Object versioning (SemVer-like: must bump major on API breakage) +if(PROJECT_VERSION_MAJOR EQUAL 0) + # support legacy scheme (e.g. 0.27.x -> 27) + set(EXIV2LIB_SOVERSION ${PROJECT_VERSION_MINOR}) +else() + # restart from 30 + math(EXPR EXIV2LIB_SOVERSION "30 + (${PROJECT_VERSION_MAJOR} - 1)") +endif() + if(NOT CMAKE_BUILD_TYPE) set (CMAKE_BUILD_TYPE Release) endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bc3c18c0..41a672e8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -160,7 +160,7 @@ endif() set_target_properties( exiv2lib PROPERTIES VERSION ${PROJECT_VERSION} - SOVERSION ${PROJECT_VERSION_MINOR} + SOVERSION ${EXIV2LIB_SOVERSION} OUTPUT_NAME exiv2 PDB_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMPILE_FLAGS ${EXTRA_COMPILE_FLAGS}