facebookincubator/gloo

Add SOVERSION support to cmake build

Closed this issue · 0 comments

I've created a debian package for gloo here: https://salsa.debian.org/lumin-guest/gloo

To meet Debian's requirement I patched gloo as follows

Purpose: Add SOVERSION to shared object
Forward:

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 09c7ac4..42f96b2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,6 +7,10 @@ set(GLOO_VERSION_MINOR 5)
 set(GLOO_VERSION_PATCH 0)
 set(GLOO_VERSION
     "${GLOO_VERSION_MAJOR}.${GLOO_VERSION_MINOR}.${GLOO_VERSION_PATCH}")
+set(DEB_MAINT_VERSION
+    "${GLOO_VERSION_MAJOR}.${GLOO_VERSION_MINOR}.${GLOO_VERSION_PATCH}")
+set(DEB_MAINT_SOVERSION
+    "${GLOO_VERSION_MAJOR}.${GLOO_VERSION_MINOR}.${GLOO_VERSION_PATCH}")
 
 # Gloo assumes 64-bit and doesn't run builds/tests for anything else.
 if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)

diff --git a/gloo/CMakeLists.txt b/gloo/CMakeLists.txt
index 7327905..727d751 100644
--- a/gloo/CMakeLists.txt
+++ b/gloo/CMakeLists.txt
@@ -83,6 +83,12 @@ configure_file(config.h.in config.h)
 
 add_library(gloo ${GLOO_STATIC_OR_SHARED} ${GLOO_SRCS})
 add_library(gloo_builder ${GLOO_STATIC_OR_SHARED} ${GLOO_BUILDER_SRCS})
+set_target_properties(gloo PROPERTIES
+       VERSION ${DEB_MAINT_VERSION}
+       SOVERSION ${DEB_MAINT_SOVERSION})
+set_target_properties(gloo_builder PROPERTIES
+       VERSION ${DEB_MAINT_VERSION}
+       SOVERSION ${DEB_MAINT_SOVERSION})
 target_link_libraries(gloo PRIVATE ${gloo_DEPENDENCY_LIBS})
 target_link_libraries(gloo_builder PUBLIC gloo)
 if(USE_CUDA)

https://salsa.debian.org/lumin-guest/gloo/blob/master/debian/patches/deb_soversion.patch

The variable names are not appropriate for a pull request, so I just paste the patch here.