Set VERSION property against all libraries to write versioned SONAME (#6087)

The SONAME currently written to shared libraries is unversioned, e.g.
libazure-core.so. The SDK's ABI is unstable, so replacing these .so
files with newer versions will immediately break any consumers.

Setting the VERSION property results in libazure-core.so being a symlink
that is used at build time to point to the versioned library, e.g.
libazure-core.so.1.14.0. Consumers point directly to the versioned
library and continue to work against the older version when the library
is upgraded. Once rebuilt, they then point to the newer version instead.

It is more common to use an ABI version that is separate to the library
version, but it makes sense to use the latter when the ABI is unstable.
The Boost libraries do exactly this.

This change has no effect on static libraries, which is the more common
use case. See the CMake documentation for its wider effects.

https://cmake.org/cmake/help/latest/prop_tgt/VERSION.html
This commit is contained in:
James Le Cuirot 2024-10-11 19:42:13 +01:00 committed by GitHub
parent 1da4dae17e
commit a091f4c8e0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
18 changed files with 19 additions and 0 deletions

View File

@ -86,6 +86,7 @@ create_code_coverage(attestation azure-security-attestation azure-security-attes
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-security-attestation PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
generate_documentation(azure-security-attestation ${AZ_LIBRARY_VERSION})
az_vcpkg_export(

View File

@ -177,6 +177,7 @@ target_link_libraries(azure-core-amqp PRIVATE
PUBLIC Azure::azure-core)
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-core-amqp PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
generate_documentation(azure-core-amqp ${AZ_LIBRARY_VERSION})
az_vcpkg_export(

View File

@ -83,6 +83,8 @@ get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
generate_documentation(azure-core-tracing-opentelemetry ${AZ_LIBRARY_VERSION})
if(BUILD_AZURE_CORE_TRACING_OPENTELEMETRY)
set_target_properties(azure-core-tracing-opentelemetry PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
az_vcpkg_export(
azure-core-tracing-opentelemetry
CORE_TRACING_OPENTELEMETRY

View File

@ -192,6 +192,7 @@ if(BUILD_TRANSPORT_WINHTTP)
endif()
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-core PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
generate_documentation(azure-core ${AZ_LIBRARY_VERSION})
az_vcpkg_export(

View File

@ -91,6 +91,7 @@ target_link_libraries(azure-messaging-eventhubs-checkpointstore-blob
create_code_coverage(eventhubs azure-messaging-eventhubs-checkpointstore-blob azure-messaging-eventhubs-blobcheckpointstore-test "tests?/*;samples?/*")
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-messaging-eventhubs-checkpointstore-blob PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
#generate_documentation(azure-messaging-eventhubs-checkpointstore-blob ${AZ_LIBRARY_VERSION})
generate_documentation(azure-messaging-eventhubs-checkpointstore-blob ${AZ_LIBRARY_VERSION})

View File

@ -116,6 +116,7 @@ target_compile_definitions(azure-messaging-eventhubs PRIVATE _azure_BUILDING_SDK
create_code_coverage(eventhubs azure-messaging-eventhubs azure-messaging-eventhubs-test "tests?/*;samples?/*")
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-messaging-eventhubs PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
generate_documentation(azure-messaging-eventhubs ${AZ_LIBRARY_VERSION})
add_subdirectory(test)

View File

@ -117,6 +117,7 @@ else()
endif()
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-identity PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
generate_documentation(azure-identity ${AZ_LIBRARY_VERSION})
az_vcpkg_export(

View File

@ -95,6 +95,7 @@ target_compile_definitions(azure-security-keyvault-administration PRIVATE _azure
create_code_coverage(keyvault azure-security-keyvault-administration azure-security-keyvault-administration-test "tests?/*;samples?/*")
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-security-keyvault-administration PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
generate_documentation(azure-security-keyvault-administration ${AZ_LIBRARY_VERSION})
if(BUILD_TESTING)

View File

@ -100,6 +100,7 @@ target_compile_definitions(azure-security-keyvault-certificates PRIVATE _azure_B
create_code_coverage(keyvault azure-security-keyvault-certificates azure-security-keyvault-certificates-test "tests?/*;samples?/*")
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-security-keyvault-certificates PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
generate_documentation(azure-security-keyvault-certificates ${AZ_LIBRARY_VERSION})
if(BUILD_TESTING)

View File

@ -138,6 +138,7 @@ target_compile_definitions(azure-security-keyvault-keys PRIVATE _azure_BUILDING_
create_code_coverage(keyvault azure-security-keyvault-keys azure-security-keyvault-keys-test "tests?/*;samples?/*")
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-security-keyvault-keys PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
generate_documentation(azure-security-keyvault-keys ${AZ_LIBRARY_VERSION})
if(BUILD_TESTING)

View File

@ -133,6 +133,7 @@ target_compile_definitions(azure-security-keyvault-secrets PRIVATE _azure_BUILDI
create_code_coverage(keyvault azure-security-keyvault-secrets azure-security-keyvault-secrets-test "tests?/*;samples?/*")
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-security-keyvault-secrets PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
generate_documentation(azure-security-keyvault-secrets ${AZ_LIBRARY_VERSION})
if(BUILD_TESTING)

View File

@ -96,6 +96,7 @@ target_link_libraries(azure-storage-blobs PUBLIC Azure::azure-storage-common)
target_compile_definitions(azure-storage-blobs PRIVATE _azure_BUILDING_SDK)
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-storage-blobs PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
generate_documentation(azure-storage-blobs ${AZ_LIBRARY_VERSION})
az_vcpkg_export(

View File

@ -107,6 +107,7 @@ else()
endif()
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-storage-common PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
generate_documentation(azure-storage-common ${AZ_LIBRARY_VERSION})
az_vcpkg_export(

View File

@ -92,6 +92,7 @@ target_include_directories(
target_link_libraries(azure-storage-files-datalake PUBLIC Azure::azure-storage-blobs)
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-storage-files-datalake PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
generate_documentation(azure-storage-files-datalake ${AZ_LIBRARY_VERSION})
az_vcpkg_export(

View File

@ -88,6 +88,7 @@ target_include_directories(
target_link_libraries(azure-storage-files-shares PUBLIC Azure::azure-storage-common)
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-storage-files-shares PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
generate_documentation(azure-storage-files-shares ${AZ_LIBRARY_VERSION})
az_vcpkg_export(

View File

@ -81,6 +81,7 @@ target_include_directories(
target_link_libraries(azure-storage-queues PUBLIC Azure::azure-storage-common)
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-storage-queues PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
generate_documentation(azure-storage-queues ${AZ_LIBRARY_VERSION})
az_vcpkg_export(

View File

@ -106,6 +106,7 @@ target_include_directories(
target_link_libraries(azure-data-tables PUBLIC Azure::azure-core)
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-data-tables PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
generate_documentation(azure-data-tables ${AZ_LIBRARY_VERSION})
az_vcpkg_export(

View File

@ -78,6 +78,7 @@ add_library(Azure::azure-template ALIAS azure-template)
create_code_coverage(template azure-template azure-template-test "tests?/*;samples?/*")
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
set_target_properties(azure-template PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
generate_documentation(azure-template ${AZ_LIBRARY_VERSION})
az_vcpkg_export(