From 940ffaab6f1ba5b9da229ae845ab9b92f33dccde Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Wed, 27 Oct 2021 10:23:31 +0200
Subject: [PATCH] Add option for static linkage

---
 CMakeLists.txt                |  9 +++++----
 include/caosdb/constants.h.in | 16 ++++++++--------
 2 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index efd84d0..fac894b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -39,6 +39,7 @@ set(CMAKE_C_STANDARD_REQUIRED ON)
 set(CMAKE_CXX_EXTENSIONS OFF)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+option(BUILD_SHARED_LIBRARY "Build using shared libraries" ON)
 
 set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
 
@@ -147,8 +148,8 @@ add_custom_command(
 ###############################################################################
 
 if("${CMAKE_BUILD_TYPE}" MATCHES "Debug")
-    add_library(caosdb_grpc SHARED ${GRPC_GENERATED})
-    add_library(caosdb SHARED ${libcaosdb_INCL} ${libcaosdb_SRC})
+    add_library(caosdb_grpc ${GRPC_GENERATED})
+    add_library(caosdb ${libcaosdb_INCL} ${libcaosdb_SRC})
     target_link_libraries(caosdb caosdb_grpc)
     target_link_libraries(caosdb_grpc ${CONAN_LIBS})
     set(LIBCAOSDB caosdb caosdb_grpc)
@@ -164,7 +165,7 @@ if("${CMAKE_BUILD_TYPE}" MATCHES "Debug")
     )
 else()
     add_library(caosdb
-        SHARED ${libcaosdb_INCL} ${libcaosdb_SRC} ${GRPC_GENERATED})
+        ${libcaosdb_INCL} ${libcaosdb_SRC} ${GRPC_GENERATED})
     set(LIBCAOSDB caosdb)
 endif()
 target_link_libraries(caosdb
@@ -179,7 +180,7 @@ target_include_directories(caosdb PUBLIC
     $<INSTALL_INTERFACE:include>
 )
 
-add_library(ccaosdb SHARED src/ccaosdb.cpp)
+add_library(ccaosdb src/ccaosdb.cpp)
 target_link_libraries(ccaosdb
     ${LIBCAOSDB}
     ${CONAN_LIBS}
diff --git a/include/caosdb/constants.h.in b/include/caosdb/constants.h.in
index bfec36b..72dc62a 100644
--- a/include/caosdb/constants.h.in
+++ b/include/caosdb/constants.h.in
@@ -26,18 +26,18 @@
 namespace caosdb {
 #endif
 // clang-format off
-const int LIBCAOSDB_VERSION_MAJOR = @libcaosdb_VERSION_MAJOR@;
-const int LIBCAOSDB_VERSION_MINOR = @libcaosdb_VERSION_MINOR@;
-const int LIBCAOSDB_VERSION_PATCH = @libcaosdb_VERSION_PATCH@;
-const int COMPATIBLE_SERVER_VERSION_MAJOR = @libcaosdb_COMPATIBLE_SERVER_VERSION_MAJOR@;
-const int COMPATIBLE_SERVER_VERSION_MINOR = @libcaosdb_COMPATIBLE_SERVER_VERSION_MINOR@;
-const int COMPATIBLE_SERVER_VERSION_PATCH = @libcaosdb_COMPATIBLE_SERVER_VERSION_PATCH@;
-const char* COMPATIBLE_SERVER_VERSION_PRE_RELEASE = "@libcaosdb_COMPATIBLE_SERVER_VERSION_PRE_RELEASE@";
+static const int LIBCAOSDB_VERSION_MAJOR = @libcaosdb_VERSION_MAJOR@;
+static const int LIBCAOSDB_VERSION_MINOR = @libcaosdb_VERSION_MINOR@;
+static const int LIBCAOSDB_VERSION_PATCH = @libcaosdb_VERSION_PATCH@;
+static const int COMPATIBLE_SERVER_VERSION_MAJOR = @libcaosdb_COMPATIBLE_SERVER_VERSION_MAJOR@;
+static const int COMPATIBLE_SERVER_VERSION_MINOR = @libcaosdb_COMPATIBLE_SERVER_VERSION_MINOR@;
+static const int COMPATIBLE_SERVER_VERSION_PATCH = @libcaosdb_COMPATIBLE_SERVER_VERSION_PATCH@;
+static const char* COMPATIBLE_SERVER_VERSION_PRE_RELEASE = "@libcaosdb_COMPATIBLE_SERVER_VERSION_PRE_RELEASE@";
 
 /**
  * Precedence of configuration files from highest to lowest.
  */
-const char* LIBCAOSDB_CONFIGURATION_FILES_PRECEDENCE[] = {
+static const char* LIBCAOSDB_CONFIGURATION_FILES_PRECEDENCE[] = {
   "$CAOSDB_CLIENT_CONFIGURATION",
   "caosdb_client.json",
   "caosdb-client.json",
-- 
GitLab