Skip to content

Commit 0251577

Browse files
committed
Add cassandra compatibility symlinks
Add symlinks to ease migration from the Apache CPP Driver: - libcassandra.so -> libscylladb.so - libcassandra_static.a -> libscylladb_static.a - cassandra.pc pkg-config file (links against -lscylladb) These are installed by default (CASS_INSTALL_CASSANDRA_COMPAT=ON) and can be disabled if not needed.
1 parent 34f31fb commit 0251577

3 files changed

Lines changed: 44 additions & 0 deletions

File tree

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ option(CASS_USE_STATIC_LIBS "Link static libraries when building executables" OF
6666
option(CASS_USE_STD_ATOMIC "Use std::atomic library" ON)
6767
option(CASS_USE_TIMERFD "Use timerfd (Linux only)" ON)
6868
option(CASS_USE_LIBUV "Use libuv" OFF)
69+
option(CASS_INSTALL_CASSANDRA_COMPAT "Install cassandra compatibility symlinks" ON)
6970

7071
set(CASS_CPP_STANDARD "11" CACHE STRING "C++ standard (11, 14, 17, etc.)")
7172

scylla-rust-wrapper/CMakeLists.txt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,21 @@ if(APPLE)
3636
set(INSTALL_NAME_SHARED_SYMLINK_VERSION "libscylladb.${PROJECT_VERSION_MAJOR}.dylib")
3737
set(INSTALL_NAME_SHARED_SYMLINK_NO_VERSION "libscylladb.dylib")
3838
set(CMAKE_Rust_FLAGS_SONAME "-Clink-arg=-Wl,-install_name,@rpath/libscylladb.${PROJECT_VERSION_MAJOR}.dylib -Clink-arg=-Wl,-current_version,${PROJECT_VERSION_STRING} -Clink-arg=-Wl,-compatibility_version,${PROJECT_VERSION_MAJOR}")
39+
set(CASSANDRA_COMPAT_SHARED_SYMLINK "libcassandra.dylib")
40+
set(CASSANDRA_COMPAT_STATIC_SYMLINK "libcassandra_static.a")
3941
elseif(WIN32)
4042
set(INSTALL_NAME_SHARED "scylladb.dll")
4143
set(INSTALL_NAME_SHARED_IMPLIB "scylladb.lib")
4244
set(CMAKE_Rust_FLAGS_SONAME "")
45+
set(CASSANDRA_COMPAT_SHARED_SYMLINK "cassandra.dll")
46+
set(CASSANDRA_COMPAT_STATIC_SYMLINK "cassandra_static.lib")
4347
else()
4448
set(INSTALL_NAME_SHARED "libscylladb.so.${PROJECT_VERSION_STRING}")
4549
set(INSTALL_NAME_SHARED_SYMLINK_VERSION "libscylladb.so.${PROJECT_VERSION_MAJOR}")
4650
set(INSTALL_NAME_SHARED_SYMLINK_NO_VERSION "libscylladb.so")
4751
set(CMAKE_Rust_FLAGS_SONAME "-Clink-arg=-Wl,-soname=libscylladb.so.${PROJECT_VERSION_MAJOR}")
52+
set(CASSANDRA_COMPAT_SHARED_SYMLINK "libcassandra.so")
53+
set(CASSANDRA_COMPAT_STATIC_SYMLINK "libcassandra_static.a")
4854
endif()
4955
if(WIN32)
5056
set(INSTALL_NAME_STATIC "scylladb_static.lib")
@@ -72,6 +78,9 @@ if(CASS_BUILD_SHARED)
7278
if(NOT WIN32)
7379
create_symlink(${INSTALL_NAME_SHARED} ${INSTALL_NAME_SHARED_SYMLINK_VERSION})
7480
create_symlink(${INSTALL_NAME_SHARED} ${INSTALL_NAME_SHARED_SYMLINK_NO_VERSION})
81+
if(CASS_INSTALL_CASSANDRA_COMPAT)
82+
create_symlink(${INSTALL_NAME_SHARED_SYMLINK_NO_VERSION} ${CASSANDRA_COMPAT_SHARED_SYMLINK})
83+
endif()
7584
endif()
7685
endif()
7786
if(CASS_BUILD_STATIC)
@@ -80,6 +89,9 @@ if(CASS_BUILD_STATIC)
8089
add_library(scylladb_static STATIC IMPORTED GLOBAL)
8190
add_dependencies(scylladb_static ${INSTALL_NAME_STATIC}_copy)
8291
set_target_properties(scylladb_static PROPERTIES IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/${INSTALL_NAME_STATIC})
92+
if(CASS_INSTALL_CASSANDRA_COMPAT AND NOT WIN32)
93+
create_symlink(${INSTALL_NAME_STATIC} ${CASSANDRA_COMPAT_STATIC_SYMLINK})
94+
endif()
8395
endif()
8496

8597
#-------------------------------------
@@ -196,6 +208,26 @@ if(CASS_BUILD_STATIC)
196208
endif()
197209
endif()
198210

211+
# Cassandra compatibility symlinks (for migration from Apache CPP Driver)
212+
if(CASS_INSTALL_CASSANDRA_COMPAT AND NOT WIN32)
213+
if(CASS_BUILD_SHARED)
214+
install(FILES ${CMAKE_BINARY_DIR}/${CASSANDRA_COMPAT_SHARED_SYMLINK}
215+
DESTINATION ${CMAKE_INSTALL_LIBDIR}
216+
COMPONENT ${SCYLLA_DRIVER_DEV_COMPONENT_NAME})
217+
endif()
218+
if(CASS_BUILD_STATIC)
219+
install(FILES ${CMAKE_BINARY_DIR}/${CASSANDRA_COMPAT_STATIC_SYMLINK}
220+
DESTINATION ${CMAKE_INSTALL_LIBDIR}
221+
COMPONENT ${SCYLLA_DRIVER_DEV_COMPONENT_NAME})
222+
endif()
223+
if(CASS_INSTALL_PKG_CONFIG AND PKG_CONFIG_FOUND)
224+
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cassandra.pc.in" "cassandra.pc" @ONLY)
225+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/cassandra.pc"
226+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
227+
COMPONENT ${SCYLLA_DRIVER_DEV_COMPONENT_NAME})
228+
endif()
229+
endif()
230+
199231
#-------------------
200232
# Uninstall target
201233
#-------------------
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
prefix=@prefix@
2+
exec_prefix=@exec_prefix@
3+
libdir=@libdir@
4+
includedir=@includedir@
5+
6+
Name: cassandra
7+
Description: ScyllaDB CPP RS Driver (cassandra compatibility)
8+
Version: @version@
9+
Libs: -L${libdir} -lscylladb
10+
Cflags: -I${includedir}
11+
URL: https://github.com/scylladb/cpp-rs-driver/

0 commit comments

Comments
 (0)