@@ -29,24 +29,24 @@ if(ACTIVATE_LINTER)
2929 include (clang-tidy)
3030endif ()
3131
32- # Versionning
33- # ===========
32+ # Versioning
33+ # ==========
3434file (STRINGS "${SPARROW_IPC_INCLUDE_DIR} /sparrow_ipc/config/sparrow_ipc_version.hpp" sparrow_ipc_version_defines
3535 REGEX "constexpr int SPARROW_IPC_VERSION_(MAJOR|MINOR|PATCH)" )
3636
3737foreach (ver ${sparrow_ipc_version_defines} )
38- if (ver MATCHES "constexpr int SPARROW_VERSION_ (MAJOR|MINOR|PATCH) = ([0-9]+);$" )
38+ if (ver MATCHES "constexpr int SPARROW_IPC_VERSION_ (MAJOR|MINOR|PATCH) = ([0-9]+);$" )
3939 set (PROJECT_VERSION_${CMAKE_MATCH_1} "${CMAKE_MATCH_2} " CACHE INTERNAL "" )
4040 endif ()
4141endforeach ()
4242
4343set (CMAKE_PROJECT_VERSION
4444 ${PROJECT_VERSION_MAJOR} .${PROJECT_VERSION_MINOR} .${PROJECT_VERSION_PATCH} )
4545
46- message (STATUS "Building sparrow_ipc v${CMAKE_PROJECT_VERSION} " )
46+ message (STATUS "Building sparrow-ipc v${CMAKE_PROJECT_VERSION} " )
4747
4848# Binary version
49- # See the following URL for explanations about the binary versionning
49+ # See the following URL for more info on the binary versioning
5050# https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html#Updating-version-info
5151file (STRINGS "${SPARROW_IPC_INCLUDE_DIR} /sparrow_ipc/config/sparrow_ipc_version.hpp" sparrow_ipc_version_defines
5252 REGEX "constexpr int SPARROW_IPC_BINARY_(CURRENT|REVISION|AGE)" )
@@ -60,7 +60,7 @@ endforeach()
6060set (SPARROW_IPC_BINARY_VERSION
6161 ${SPARROW_IPC_BINARY_CURRENT} .${SPARROW_IPC_BINARY_REVISION} .${SPARROW_IPC_BINARY_AGE} )
6262
63- message (STATUS "sparrow_ipc binary version: v${SPARROW_IPC_BINARY_VERSION} " )
63+ message (STATUS "sparrow-ipc binary version: v${SPARROW_IPC_BINARY_VERSION} " )
6464
6565# Build options
6666# =============
@@ -101,6 +101,7 @@ set(SPARROW_IPC_HEADERS
101101 ${SPARROW_IPC_INCLUDE_DIR} /sparrow_ipc/arrow_interface/arrow_schema.hpp
102102 ${SPARROW_IPC_INCLUDE_DIR} /sparrow_ipc/arrow_interface/arrow_schema/private_data.hpp
103103 ${SPARROW_IPC_INCLUDE_DIR} /sparrow_ipc/config/config.hpp
104+ ${SPARROW_IPC_INCLUDE_DIR} /config/sparrow_ipc_version.hpp
104105 ${SPARROW_IPC_INCLUDE_DIR} /sparrow_ipc/deserialize_variable_size_binary_array.hpp
105106 ${SPARROW_IPC_INCLUDE_DIR} /sparrow_ipc/deserialize_fixedsizebinary_array.hpp
106107 ${SPARROW_IPC_INCLUDE_DIR} /sparrow_ipc/deserialize_primitive_array.hpp
@@ -200,8 +201,26 @@ target_compile_definitions(sparrow-ipc
200201 ${SPARROW_IPC_COMPILE_DEFINITIONS} )
201202
202203if (UNIX )
204+ # CMake does not compute the version number of so files as libtool
205+ # does on Linux. Strictly speaking, we should exclude FreeBSD and
206+ # Apple from this, but that would require having different version
207+ # numbers depending on the platform. We prefer to follow the
208+ # libtool pattern everywhere.
209+ math (EXPR SPARROW_IPC_BINARY_COMPATIBLE "${SPARROW_IPC_BINARY_CURRENT} - ${SPARROW_IPC_BINARY_AGE} " )
210+ set_target_properties (
211+ sparrow-ipc
212+ PROPERTIES
213+ VERSION "${SPARROW_IPC_BINARY_COMPATIBLE} .${SPARROW_IPC_BINARY_REVISION} .${SPARROW_IPC_BINARY_AGE} "
214+ SOVERSION ${SPARROW_IPC_BINARY_COMPATIBLE}
215+ )
203216 target_compile_options (sparrow-ipc PRIVATE "-fvisibility=hidden" )
204217else ()
218+ set_target_properties (
219+ sparrow-ipc
220+ PROPERTIES
221+ VERSION ${SPARROW_IPC_BINARY_VERSION}
222+ SOVERSION ${SPARROW_IPC_BINARY_CURRENT}
223+ )
205224 target_compile_definitions (sparrow-ipc PRIVATE SPARROW_IPC_EXPORTS)
206225endif ()
207226
0 commit comments