From dba650f68ea9dbd0d1f491f6d78a3fc50cc0d828 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Thu, 4 Nov 2021 16:58:20 +0100
Subject: [PATCH] WIP mixed shared/static setup

---
 CMakeLists.txt | 28 +++++++++++++++++++++++-----
 1 file changed, 23 insertions(+), 5 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3890c12..b3fd25f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -43,6 +43,10 @@ option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
 
 set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
 
+###########################################
+### Special treatment for "Windows",
+### a proprietary OS by "MicroSoft".
+###########################################
 IF (WIN32)
     cmake_minimum_required(VERSION 3.15)
     cmake_policy(SET CMP0091 NEW)
@@ -190,11 +194,25 @@ target_include_directories(caosdb PUBLIC
     $<INSTALL_INTERFACE:include>
 )
 
-add_library(ccaosdb src/ccaosdb.cpp)
-target_link_libraries(ccaosdb
-    ${LIBCAOSDB}
-    ${CONAN_LIBS}
-)
+add_library(ccaosdb SHARED src/ccaosdb.cpp)
+IF (WIN32)
+    set_target_properties(caosdb PROPERTIES
+        LINK_FLAGS "/WHOLEARCHIVE"
+    )
+    target_link_libraries(ccaosdb
+        ${LIBCAOSDB}
+        ${CONAN_LIBS}
+    )
+ELSE()
+    set_target_properties(caosdb PROPERTIES
+        COMPILE_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
+    target_link_libraries(ccaosdb
+        "-Wl,--whole-archive"
+        ${LIBCAOSDB}
+        "-Wl,--no-whole-archive"
+        ${CONAN_LIBS}
+    )
+ENDIF()
 
 add_executable(ccaosdbcli EXCLUDE_FROM_ALL src/ccaosdbcli.c)
 target_include_directories(ccaosdbcli SYSTEM PUBLIC
-- 
GitLab