diff --git a/CMakeLists.txt b/CMakeLists.txt index bff92654a..b307dfc82 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,13 +32,16 @@ if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) set(SLS_MASTER_PROJECT ON) endif() -option (SLS_USE_HDF5 "HDF5 File format" OFF) -option (SLS_USE_TEXTCLIENT "Text Client" ON) -option (SLS_USE_RECEIVER "Receiver" ON) -option (SLS_USE_GUI "GUI" OFF) -option (SLS_USE_SIMULATOR "Simulator" OFF) -option (SLS_USE_TESTS "TESTS" OFF) -option (SLS_USE_INTEGRATION_TESTS "Integration Tests" OFF) +option(SLS_USE_HDF5 "HDF5 File format" OFF) +option(SLS_BUILD_SHARED_LIBRARIES "Build shared libaries" ON) +option(SLS_USE_TEXTCLIENT "Text Client" ON) +option(SLS_USE_DETECTOR "Detector libs" ON) +option(SLS_USE_RECEIVER "Receiver" ON) +option(SLS_USE_RECEIVER_BINARIES "Receiver binaries" ON) +option(SLS_USE_GUI "GUI" OFF) +option(SLS_USE_SIMULATOR "Simulator" OFF) +option(SLS_USE_TESTS "TESTS" OFF) +option(SLS_USE_INTEGRATION_TESTS "Integration Tests" OFF) option(SLS_USE_SANITIZER "Sanitizers for debugging" OFF) option(SLS_USE_PYTHON "Python bindings" OFF) option(SLS_USE_CTBGUI "ctb GUI" OFF) @@ -200,9 +203,9 @@ endif(SLS_USE_TESTS) # Common functionallity to detector and receiver add_subdirectory(slsSupportLib) -if (SLS_USE_TEXTCLIENT) +if (SLS_USE_DETECTOR OR SLS_USE_TEXTCLIENT) add_subdirectory(slsDetectorSoftware) -endif (SLS_USE_TEXTCLIENT) +endif () if (SLS_USE_RECEIVER) add_subdirectory(slsReceiverSoftware) diff --git a/slsDetectorSoftware/CMakeLists.txt b/slsDetectorSoftware/CMakeLists.txt index 0f8aff770..91697a939 100755 --- a/slsDetectorSoftware/CMakeLists.txt +++ b/slsDetectorSoftware/CMakeLists.txt @@ -26,6 +26,8 @@ target_link_libraries(slsDetectorObject slsProjectWarnings ) +set(DETECTOR_LIBRARY_TARGETS slsDetectorObject) + set(PUBLICHEADERS include/sls/detectorData.h @@ -35,13 +37,16 @@ set(PUBLICHEADERS ) #Shared library -add_library(slsDetectorShared SHARED $) -target_link_libraries(slsDetectorShared PUBLIC slsDetectorObject) -set_target_properties(slsDetectorShared PROPERTIES - LIBRARY_OUTPUT_NAME SlsDetector - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin - PUBLIC_HEADER "${PUBLICHEADERS}" -) +if(SLS_BUILD_SHARED_LIBRARIES) + add_library(slsDetectorShared SHARED $) + target_link_libraries(slsDetectorShared PUBLIC slsDetectorObject) + set_target_properties(slsDetectorShared PROPERTIES + LIBRARY_OUTPUT_NAME SlsDetector + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin + PUBLIC_HEADER "${PUBLICHEADERS}" + ) + list(APPEND DETECTOR_LIBRARY_TARGETS slsDetectorShared) +endif(SLS_BUILD_SHARED_LIBRARIES) #Static library add_library(slsDetectorStatic STATIC $) @@ -52,54 +57,59 @@ set_target_properties(slsDetectorStatic PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin PUBLIC_HEADER "${PUBLICHEADERS}" ) +list(APPEND DETECTOR_LIBRARY_TARGETS slsDetectorStatic) + + + -# message("Detector LTO_AVAILABLE:" ${SLS_LTO_AVAILABLE}) if((CMAKE_BUILD_TYPE STREQUAL "Release") AND SLS_LTO_AVAILABLE) - set_property(TARGET slsDetectorObject PROPERTY INTERPROCEDURAL_OPTIMIZATION True) - set_property(TARGET slsDetectorStatic PROPERTY INTERPROCEDURAL_OPTIMIZATION True) - set_property(TARGET slsDetectorShared PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + set_property(TARGET ${DETECTOR_LIBRARY_TARGETS} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + # set_property(TARGET slsDetectorObject PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + # set_property(TARGET slsDetectorStatic PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + # set_property(TARGET slsDetectorShared PROPERTY INTERPROCEDURAL_OPTIMIZATION True) endif() -# Loop over list to generate command line binaries -set(bin_names "sls_detector_put" - "sls_detector_get" - "sls_detector_acquire" - "sls_detector_help") -set(cmd_name "PUT" "GET" "READOUT" "HELP") -list(LENGTH bin_names len1) -math(EXPR len2 "${len1} - 1") -foreach(val RANGE ${len2}) - list(GET bin_names ${val} val1) - list(GET cmd_name ${val} val2) - message(STATUS "${val1} ${val2}") +if(SLS_USE_TEXTCLIENT) + # Loop over list to generate command line binaries + set(bin_names "sls_detector_put" + "sls_detector_get" + "sls_detector_acquire" + "sls_detector_help") + set(cmd_name "PUT" "GET" "READOUT" "HELP") + list(LENGTH bin_names len1) + math(EXPR len2 "${len1} - 1") - add_executable(${val1} src/CmdLineApp.cpp) - target_link_libraries(${val1} - slsDetectorStatic - pthread - rt - ) - set_target_properties(${val1} PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin - COMPILE_DEFINITIONS ${val2}=1 - ) - if(SLS_LTO_AVAILABLE) - set_property(TARGET ${val1} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) - endif() -endforeach() + foreach(val RANGE ${len2}) + list(GET bin_names ${val} val1) + list(GET cmd_name ${val} val2) + message(STATUS "${val1} ${val2}") + add_executable(${val1} src/CmdLineApp.cpp) + target_link_libraries(${val1} + slsDetectorStatic + pthread + rt + ) + set_target_properties(${val1} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin + COMPILE_DEFINITIONS ${val2}=1 + ) + if(SLS_LTO_AVAILABLE) + set_property(TARGET ${val1} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + endif() + endforeach() + install(TARGETS ${bin_names} DESTINATION bin) -install(TARGETS ${bin_names} DESTINATION bin) - +endif(SLS_USE_TEXTCLIENT) if (SLS_USE_TESTS) add_subdirectory(tests) endif(SLS_USE_TESTS) -install(TARGETS slsDetectorShared slsDetectorObject slsDetectorStatic +install(TARGETS ${DETECTOR_LIBRARY_TARGETS} EXPORT "${TARGETS_EXPORT_NAME}" RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} diff --git a/slsReceiverSoftware/CMakeLists.txt b/slsReceiverSoftware/CMakeLists.txt index 8b3bde5a6..ad2a958c5 100755 --- a/slsReceiverSoftware/CMakeLists.txt +++ b/slsReceiverSoftware/CMakeLists.txt @@ -56,15 +56,19 @@ if (SLS_USE_HDF5) endif () endif (SLS_USE_HDF5) +set(RECEIVER_LIBRARY_TARGETS slsReceiverObject) #Shared library -add_library(slsReceiverShared SHARED $) -target_link_libraries(slsReceiverShared PUBLIC slsReceiverObject) -set_target_properties(slsReceiverShared PROPERTIES - LIBRARY_OUTPUT_NAME SlsReceiver - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin - PUBLIC_HEADER "${PUBLICHEADERS}" -) +if(SLS_BUILD_SHARED_LIBRARIES) + add_library(slsReceiverShared SHARED $) + target_link_libraries(slsReceiverShared PUBLIC slsReceiverObject) + set_target_properties(slsReceiverShared PROPERTIES + LIBRARY_OUTPUT_NAME SlsReceiver + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin + PUBLIC_HEADER "${PUBLICHEADERS}" + ) + list(APPEND RECEIVER_LIBRARY_TARGETS slsReceiverShared) +endif(SLS_BUILD_SHARED_LIBRARIES) #Static library add_library(slsReceiverStatic STATIC $) @@ -74,63 +78,74 @@ set_target_properties(slsReceiverStatic PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin PUBLIC_HEADER "${PUBLICHEADERS}" ) +list(APPEND RECEIVER_LIBRARY_TARGETS slsReceiverStatic) + -# message("Receiver LTO_AVAILABLE:" ${SLS_LTO_AVAILABLE}) if((CMAKE_BUILD_TYPE STREQUAL "Release") AND SLS_LTO_AVAILABLE) - set_property(TARGET slsReceiverObject PROPERTY INTERPROCEDURAL_OPTIMIZATION True) - set_property(TARGET slsReceiverStatic PROPERTY INTERPROCEDURAL_OPTIMIZATION True) - set_property(TARGET slsReceiverShared PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + set_property(TARGET ${RECEIVER_LIBRARY_TARGETS} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) endif() -add_executable(slsReceiver - src/ReceiverApp.cpp -) +# Receiver binaries -set_target_properties(slsReceiver PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin -) -if(SLS_LTO_AVAILABLE) - set_property(TARGET slsReceiver PROPERTY INTERPROCEDURAL_OPTIMIZATION True) -endif() +if (SLS_USE_RECEIVER_BINARIES) + add_executable(slsReceiver + src/ReceiverApp.cpp + ) -target_link_libraries(slsReceiver PUBLIC - PUBLIC - slsReceiverStatic - pthread - rt - PRIVATE - slsProjectWarnings -) + set_target_properties(slsReceiver PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin + ) + if(SLS_LTO_AVAILABLE) + set_property(TARGET slsReceiver PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + endif() -add_executable(slsMultiReceiver - src/MultiReceiverApp.cpp -) + target_link_libraries(slsReceiver PUBLIC + PUBLIC + slsReceiverStatic + pthread + rt + PRIVATE + slsProjectWarnings + ) + add_executable(slsMultiReceiver + src/MultiReceiverApp.cpp + ) -set_target_properties(slsMultiReceiver PROPERTIES - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin -) -if(SLS_LTO_AVAILABLE) - set_property(TARGET slsMultiReceiver PROPERTY INTERPROCEDURAL_OPTIMIZATION True) -endif() + set_target_properties(slsMultiReceiver PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin + ) + if(SLS_LTO_AVAILABLE) + set_property(TARGET slsMultiReceiver PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + endif() -target_link_libraries(slsMultiReceiver - PUBLIC - slsReceiverStatic - pthread - rt - PRIVATE - slsProjectWarnings -) + target_link_libraries(slsMultiReceiver + PUBLIC + slsReceiverStatic + pthread + rt + PRIVATE + slsProjectWarnings + ) -if (SLS_USE_TESTS) - add_subdirectory(tests) -endif(SLS_USE_TESTS) - - -install(TARGETS slsReceiverShared slsReceiver slsMultiReceiver slsReceiverObject slsReceiverStatic + install(TARGETS slsReceiver slsMultiReceiver + EXPORT "${TARGETS_EXPORT_NAME}" + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sls +) + +endif(SLS_USE_RECEIVER_BINARIES) + +if (SLS_USE_TESTS) + add_subdirectory(tests) +endif(SLS_USE_TESTS) + + +install(TARGETS ${RECEIVER_LIBRARY_TARGETS} EXPORT "${TARGETS_EXPORT_NAME}" RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} diff --git a/slsSupportLib/CMakeLists.txt b/slsSupportLib/CMakeLists.txt index 2d67cadfc..cb35702bb 100755 --- a/slsSupportLib/CMakeLists.txt +++ b/slsSupportLib/CMakeLists.txt @@ -72,15 +72,21 @@ if (SLS_USE_TESTS) add_subdirectory(tests) endif(SLS_USE_TESTS) -# Add shared library version of the support lib -add_library(slsSupportShared SHARED $) -target_link_libraries(slsSupportShared PUBLIC slsSupportObject) +#List of targets to support adding removing targets as config +set(SUPPORT_LIBRARY_TARGETS slsSupportObject) -set_target_properties(slsSupportShared PROPERTIES - LIBRARY_OUTPUT_NAME SlsSupport - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin - PUBLIC_HEADER "${PUBLICHEADERS}" -) +# Add shared library version of the support lib +if(SLS_BUILD_SHARED_LIBRARIES) + add_library(slsSupportShared SHARED $) + target_link_libraries(slsSupportShared PUBLIC slsSupportObject) + + set_target_properties(slsSupportShared PROPERTIES + LIBRARY_OUTPUT_NAME SlsSupport + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin + PUBLIC_HEADER "${PUBLICHEADERS}" + ) + list(APPEND SUPPORT_LIBRARY_TARGETS slsSupportShared) +endif(SLS_BUILD_SHARED_LIBRARIES) # Add static version of the support lib add_library(slsSupportStatic STATIC $) @@ -91,14 +97,13 @@ set_target_properties(slsSupportStatic PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin PUBLIC_HEADER "${PUBLICHEADERS}" ) +list(APPEND SUPPORT_LIBRARY_TARGETS slsSupportStatic) if((CMAKE_BUILD_TYPE STREQUAL "Release") AND SLS_LTO_AVAILABLE) - set_property(TARGET slsSupportObject PROPERTY INTERPROCEDURAL_OPTIMIZATION True) - set_property(TARGET slsSupportShared PROPERTY INTERPROCEDURAL_OPTIMIZATION True) - set_property(TARGET slsSupportStatic PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + set_property(TARGET ${SUPPORT_LIBRARY_TARGETS} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) endif() -install(TARGETS slsSupportShared slsSupportStatic slsSupportObject +install(TARGETS ${SUPPORT_LIBRARY_TARGETS} EXPORT "${TARGETS_EXPORT_NAME}" LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 93c52afeb..18cac72b3 100755 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -28,11 +28,11 @@ target_link_libraries(tests slsProjectWarnings ) -if (SLS_USE_TEXTCLIENT) +if (SLS_USE_DETECTOR) target_link_libraries(tests PUBLIC slsDetectorShared ) -endif (SLS_USE_TEXTCLIENT) +endif (SLS_USE_DETECTOR) if (SLS_USE_RECEIVER) target_link_libraries(tests PUBLIC