mirror of
https://github.com/google/flatbuffers.git
synced 2026-07-02 11:08:19 +00:00
Use full project version as SOVERSION for the shared library (#7777)
Since flatbuffers is using calendar versioning and does not provide any ABI stability guarantees, use the complete version as SOVERSION for the shared library rather than just the major component. This prevents breaking reverse dependencies on incompatible upgrades. Fixes #7759
This commit is contained in:
@@ -438,14 +438,12 @@ endif()
|
|||||||
if(FLATBUFFERS_BUILD_SHAREDLIB)
|
if(FLATBUFFERS_BUILD_SHAREDLIB)
|
||||||
add_library(flatbuffers_shared SHARED ${FlatBuffers_Library_SRCS})
|
add_library(flatbuffers_shared SHARED ${FlatBuffers_Library_SRCS})
|
||||||
|
|
||||||
# Shared object version: "major.minor.micro"
|
# FlatBuffers use calendar-based versioning and do not provide any ABI
|
||||||
# - micro updated every release when there is no API/ABI changes
|
# stability guarantees. Therefore, always use the full version as SOVERSION
|
||||||
# - minor updated when there are additions in API/ABI
|
# in order to avoid breaking reverse dependencies on upgrades.
|
||||||
# - major (ABI number) updated when there are changes in ABI (or removals)
|
set(FlatBuffers_Library_SONAME_FULL "${PROJECT_VERSION}")
|
||||||
set(FlatBuffers_Library_SONAME_MAJOR ${VERSION_MAJOR})
|
|
||||||
set(FlatBuffers_Library_SONAME_FULL "${FlatBuffers_Library_SONAME_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
|
|
||||||
set_target_properties(flatbuffers_shared PROPERTIES OUTPUT_NAME flatbuffers
|
set_target_properties(flatbuffers_shared PROPERTIES OUTPUT_NAME flatbuffers
|
||||||
SOVERSION "${FlatBuffers_Library_SONAME_MAJOR}"
|
SOVERSION "${FlatBuffers_Library_SONAME_FULL}"
|
||||||
VERSION "${FlatBuffers_Library_SONAME_FULL}")
|
VERSION "${FlatBuffers_Library_SONAME_FULL}")
|
||||||
if(FLATBUFFERS_ENABLE_PCH)
|
if(FLATBUFFERS_ENABLE_PCH)
|
||||||
add_pch_to_target(flatbuffers_shared include/flatbuffers/pch/pch.h)
|
add_pch_to_target(flatbuffers_shared include/flatbuffers/pch/pch.h)
|
||||||
|
|||||||
@@ -525,14 +525,12 @@ endif()
|
|||||||
if(FLATBUFFERS_BUILD_SHAREDLIB)
|
if(FLATBUFFERS_BUILD_SHAREDLIB)
|
||||||
add_library(flatbuffers_shared SHARED ${FlatBuffers_Library_SRCS})
|
add_library(flatbuffers_shared SHARED ${FlatBuffers_Library_SRCS})
|
||||||
target_link_libraries(flatbuffers_shared PRIVATE $<BUILD_INTERFACE:ProjectConfig>)
|
target_link_libraries(flatbuffers_shared PRIVATE $<BUILD_INTERFACE:ProjectConfig>)
|
||||||
# Shared object version: "major.minor.micro"
|
# FlatBuffers use calendar-based versioning and do not provide any ABI
|
||||||
# - micro updated every release when there is no API/ABI changes
|
# stability guarantees. Therefore, always use the full version as SOVERSION
|
||||||
# - minor updated when there are additions in API/ABI
|
# in order to avoid breaking reverse dependencies on upgrades.
|
||||||
# - major (ABI number) updated when there are changes in ABI (or removals)
|
set(FlatBuffers_Library_SONAME_FULL "${PROJECT_VERSION}")
|
||||||
set(FlatBuffers_Library_SONAME_MAJOR ${VERSION_MAJOR})
|
|
||||||
set(FlatBuffers_Library_SONAME_FULL "${FlatBuffers_Library_SONAME_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
|
|
||||||
set_target_properties(flatbuffers_shared PROPERTIES OUTPUT_NAME flatbuffers
|
set_target_properties(flatbuffers_shared PROPERTIES OUTPUT_NAME flatbuffers
|
||||||
SOVERSION "${FlatBuffers_Library_SONAME_MAJOR}"
|
SOVERSION "${FlatBuffers_Library_SONAME_FULL}"
|
||||||
VERSION "${FlatBuffers_Library_SONAME_FULL}")
|
VERSION "${FlatBuffers_Library_SONAME_FULL}")
|
||||||
if(FLATBUFFERS_ENABLE_PCH)
|
if(FLATBUFFERS_ENABLE_PCH)
|
||||||
add_pch_to_target(flatbuffers_shared include/flatbuffers/pch/pch.h)
|
add_pch_to_target(flatbuffers_shared include/flatbuffers/pch/pch.h)
|
||||||
|
|||||||
Reference in New Issue
Block a user