Skip to content

Commit 6d56023

Browse files
committed
Handle versioning
1 parent 963b02b commit 6d56023

File tree

3 files changed

+54
-7
lines changed

3 files changed

+54
-7
lines changed

CMakeLists.txt

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,24 +29,24 @@ if(ACTIVATE_LINTER)
2929
include(clang-tidy)
3030
endif()
3131

32-
# Versionning
33-
# ===========
32+
# Versioning
33+
# ==========
3434
file(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

3737
foreach(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()
4141
endforeach()
4242

4343
set(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
5151
file(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()
6060
set(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

202203
if(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")
204217
else()
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)
206225
endif()
207226

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#pragma once
2+
3+
namespace sparrow_ipc
4+
{
5+
constexpr int SPARROW_IPC_VERSION_MAJOR = 0;
6+
constexpr int SPARROW_IPC_VERSION_MINOR = 0;
7+
constexpr int SPARROW_IPC_VERSION_PATCH = 1;
8+
9+
constexpr int SPARROW_IPC_BINARY_CURRENT = 0;
10+
constexpr int SPARROW_IPC_BINARY_REVISION = 0;
11+
constexpr int SPARROW_IPC_BINARY_AGE = 0;
12+
}

tests/main.cpp

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
22

3+
#include <string>
4+
35
#include "doctest/doctest.h"
46

5-
//TODO check version?
7+
#include "config/sparrow_ipc_version.hpp"
8+
9+
TEST_CASE("versions exist and are readable")
10+
{
11+
using namespace sparrow_ipc;
12+
[[maybe_unused]] const std::string printable_version = std::string("sparrow-ipc version: ")
13+
+ std::to_string(SPARROW_IPC_VERSION_MAJOR) + "."
14+
+ std::to_string(SPARROW_IPC_VERSION_MINOR) + "."
15+
+ std::to_string(SPARROW_IPC_VERSION_PATCH);
16+
17+
[[maybe_unused]] const std::string printable_binary_version = std::string("sparrow-ipc binary version: ")
18+
+ std::to_string(SPARROW_IPC_BINARY_CURRENT) + "."
19+
+ std::to_string(SPARROW_IPC_BINARY_REVISION) + "."
20+
+ std::to_string(SPARROW_IPC_BINARY_AGE);
21+
}

0 commit comments

Comments
 (0)