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 1/2] 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} From dd48bb13ee1ee0dd8943913e73b3d820eda468a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milo=C5=A1=20Komar=C4=8Devi=C4=87?= Date: Thu, 30 Mar 2023 11:54:13 +0200 Subject: [PATCH 2/2] Add equivalent soversion to meson build --- meson.build | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/meson.build b/meson.build index a8c40431..8b03a009 100644 --- a/meson.build +++ b/meson.build @@ -30,6 +30,11 @@ exiv_conf = configure_file(output: 'exiv2lib_export.h', configuration: exiv_api) cdata = configuration_data() cdata.set('EXV_PACKAGE_NAME', meson.project_name()) ver = meson.project_version().split('.') +if ver[0] == '0' + sover = ver[1].to_int() +else + sover = 30 + (ver[0].to_int() - 1) +endif cdata.set('PROJECT_VERSION_MAJOR', ver[0]) cdata.set('PROJECT_VERSION_MINOR', ver[1]) cdata.set('PROJECT_VERSION_PATCH', ver[2]) @@ -306,6 +311,7 @@ exiv2 = library( xmp_lib, cpp_args: cargs, version: meson.project_version(), + soversion: sover, gnu_symbol_visibility: 'hidden', link_with: convertlib, dependencies: [deps, exiv2int_dep],