From 2e2803083016fc59401019dddb88a9d0b2f94b1f Mon Sep 17 00:00:00 2001
From: Florian Uhlig <f.uhlig@gsi.de>
Date: Wed, 11 May 2022 16:32:58 +0200
Subject: [PATCH] Fix flesnet compilation and installation

Update to latest flesnet version
This version disables all code which need cpprest if the package isn't found
on the system. All functionality needed for CbmRoot is build.

Fix link errors on several systems
macosx, Debian11

Fix git clone issue on CentOS

Add installation of flesnet libraries and headers
---
 external/InstallFlesnet.cmake | 56 +++++++++++++++++++++++++++++++++--
 1 file changed, 53 insertions(+), 3 deletions(-)

diff --git a/external/InstallFlesnet.cmake b/external/InstallFlesnet.cmake
index e02ca7ef8f..1d6fd0015b 100644
--- a/external/InstallFlesnet.cmake
+++ b/external/InstallFlesnet.cmake
@@ -3,9 +3,10 @@
 # The included libraries provide the interface to the experiment data in timeslices
 # both online and in timeslice archive (.tsa) files.
 
-set(FLESNET_VERSION b1b8c37d6db9a66122ee375bea608c6c6e848665) # 2022-02-24
+set(FLESNET_VERSION b503c3ce500c1b25894c393ff4bae2f5ba058a22) # 2022-06-10
 
 set(FLESNET_SRC_URL "https://github.com/cbm-fles/flesnet")
+
 set(FLESNET_DESTDIR "${PROJECT_BINARY_DIR}/external/flesnet-prefix")
 
 download_project_if_needed(
@@ -22,13 +23,24 @@ If(ProjectUpdated)
   Message("flesnet source directory was changed so build directory was deleted")
 EndIf()
 
+if(APPLE)
+  execute_process(COMMAND brew --prefix --installed openssl
+                  RESULT_VARIABLE OPENSSL_FOUND
+                  OUTPUT_VARIABLE OPENSSL_PATH
+                  OUTPUT_STRIP_TRAILING_WHITESPACE
+                 )
+endif()
+
 ExternalProject_Add(
   flesnet
   SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/flesnet
-  CMAKE_CACHE_ARGS -DINCLUDE_ZMQ:BOOL=TRUE -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON
+  CMAKE_CACHE_ARGS
+  -DINCLUDE_ZMQ:BOOL=TRUE
+  -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON
+  -DOPENSSL_ROOT_DIR:FILEPATH=${OPENSSL_PATH}
   BUILD_IN_SOURCE 0
   LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1
-  BUILD_COMMAND ${CMAKE_COMMAND} --build . --target logging fles_ipc
+  BUILD_COMMAND ${CMAKE_COMMAND} --build . -j 1 --target logging fles_ipc
   BUILD_BYPRODUCTS ${FLESNET_DESTDIR}/src/flesnet-build/lib/fles_ipc/${CMAKE_STATIC_LIBRARY_PREFIX}fles_ipc${CMAKE_STATIC_LIBRARY_SUFFIX}
   INSTALL_COMMAND ""
 )
@@ -50,7 +62,45 @@ target_compile_definitions(external::fles_logging
 
 add_library(external::fles_ipc STATIC IMPORTED GLOBAL)
 add_dependencies(external::fles_ipc flesnet external::fles_logging)
+
+set(dir_to_link
+    ${FLESNET_DESTDIR}/src/flesnet-build/src/zeromq-build/lib/${CMAKE_STATIC_LIBRARY_PREFIX}zmq${CMAKE_STATIC_LIBRARY_SUFFIX}
+   )
+find_package("GnuTLS" 3.6.7)
+if(GNUTLS_FOUND)
+  list(APPEND dir_to_link
+       ${GNUTLS_LIBRARIES}
+      )
+endif()
+list(APPEND dir_to_link
+     ${FLESNET_DESTDIR}/src/flesnet-build/lib/logging/${CMAKE_STATIC_LIBRARY_PREFIX}logging${CMAKE_STATIC_LIBRARY_SUFFIX}
+    )
+list(APPEND dir_to_link
+     ${Boost_LOG_LIBRARY}
+     ${Boost_FILESYSTEM_LIBRARY}
+     ${Boost_REGEX_LIBRARY}
+     ${Boost_SERIALIZATION_LIBRARY}     
+    )
+if(NOT APPLE)
+  list(APPEND dir_to_link ${Boost_THREAD_LIBRARY})
+endif()
+
 set_target_properties(external::fles_ipc PROPERTIES
   IMPORTED_LOCATION ${FLESNET_DESTDIR}/src/flesnet-build/lib/fles_ipc/${CMAKE_STATIC_LIBRARY_PREFIX}fles_ipc${CMAKE_STATIC_LIBRARY_SUFFIX}
   INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/flesnet/lib/fles_ipc
+  IMPORTED_LINK_INTERFACE_LIBRARIES "${dir_to_link}"
 )
+
+
+
+Install(FILES ${FLESNET_DESTDIR}/src/flesnet-build/lib/fles_ipc/${CMAKE_STATIC_LIBRARY_PREFIX}fles_ipc${CMAKE_STATIC_LIBRARY_SUFFIX}
+              ${FLESNET_DESTDIR}/src/flesnet-build/lib/shm_ipc/${CMAKE_STATIC_LIBRARY_PREFIX}shm_ipc${CMAKE_STATIC_LIBRARY_SUFFIX}
+              ${FLESNET_DESTDIR}/src/flesnet-build/src/zeromq-build/lib/${CMAKE_STATIC_LIBRARY_PREFIX}zmq${CMAKE_STATIC_LIBRARY_SUFFIX}
+        DESTINATION lib
+       )
+
+file(GLOB LIB_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/flesnet/lib/fles_ipc/*.hpp)
+
+Install(FILES ${LIB_HEADERS}
+        DESTINATION include
+       )
-- 
GitLab