diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d631b1c..30df611f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,6 +39,7 @@ cmake_dependent_option(BUILD_OFI_TRANSPORT "Build experimental OFI transport." O cmake_dependent_option(BUILD_DDS_PLUGIN "Build DDS plugin." OFF "BUILD_FAIRMQ" OFF) cmake_dependent_option(BUILD_PMIX_PLUGIN "Build PMIx plugin." OFF "BUILD_FAIRMQ" OFF) cmake_dependent_option(BUILD_EXAMPLES "Build FairMQ examples." ON "BUILD_FAIRMQ" OFF) +option(BUILD_SDK "Build the FairMQ controller SDK." OFF) option(BUILD_DOCS "Build FairMQ documentation." OFF) option(FAST_BUILD "Fast production build. Not recommended for development." OFF) ################################################################################ @@ -73,7 +74,7 @@ if(BUILD_NANOMSG_TRANSPORT) ) endif() -if(BUILD_DDS_PLUGIN) +if(BUILD_DDS_PLUGIN OR BUILD_SDK) find_package2(PRIVATE DDS REQUIRED VERSION 2.4 ) @@ -87,7 +88,7 @@ if(BUILD_PMIX_PLUGIN) ) endif() -if(BUILD_FAIRMQ) +if(BUILD_FAIRMQ OR BUILD_SDK) find_package2(PUBLIC FairLogger REQUIRED VERSION 1.2.0 ) @@ -113,6 +114,9 @@ if(BUILD_FAIRMQ) DDS FairLogger ) +endif() + +if(BUILD_FAIRMQ) find_package2(PRIVATE ZeroMQ REQUIRED VERSION 4.1.5 ) @@ -161,6 +165,10 @@ if(BUILD_DOCS) doxygen_add_docs(doxygen README.md fairmq) add_custom_target(docs ALL DEPENDS doxygen) endif() + +if(BUILD_SDK) + add_subdirectory(fairmq/sdk) +endif() ################################################################################ @@ -189,6 +197,9 @@ endif() if(BUILD_DOCS) list(APPEND PROJECT_PACKAGE_COMPONENTS docs) endif() +if(BUILD_SDK) + list(APPEND PROJECT_PACKAGE_COMPONENTS sdk) +endif() ################################################################################ @@ -355,6 +366,12 @@ else() set(docs_summary "${BRed} NO${CR} (default, enable with ${BMagenta}-DBUILD_DOCS=ON${CR})") endif() message(STATUS " ${BWhite}docs${CR} ${docs_summary}") +if(BUILD_SDK) + set(sdk_summary "${BGreen}YES${CR} (disable with ${BMagenta}-DBUILD_SDK=OFF${CR})") +else() + set(sdk_summary "${BRed} NO${CR} (default, enable with ${BMagenta}-DBUILD_SDK=ON${CR})") +endif() +message(STATUS " ${BWhite}sdk${CR} ${sdk_summary}") message(STATUS " ") if(RUN_STATIC_ANALYSIS) list(LENGTH PROJECT_STATIC_ANALYSERS size) diff --git a/cmake/FairMQConfig.cmake.in b/cmake/FairMQConfig.cmake.in index 5613a514..f4c16e2d 100644 --- a/cmake/FairMQConfig.cmake.in +++ b/cmake/FairMQConfig.cmake.in @@ -13,12 +13,12 @@ set(@PROJECT_NAME@_VERSION @PROJECT_VERSION@) set(@PROJECT_NAME@_GIT_VERSION @PROJECT_GIT_VERSION@) set(@PROJECT_NAME@_GIT_DATE @PROJECT_GIT_DATE@) -set_and_check(@PROJECT_NAME@_PREFIX @PACKAGE_CMAKE_INSTALL_PREFIX@) -set_and_check(@PROJECT_NAME@_BINDIR @PACKAGE_CMAKE_INSTALL_PREFIX@/@PROJECT_INSTALL_BINDIR@) -set_and_check(@PROJECT_NAME@_INCDIR @PACKAGE_CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@) -set_and_check(@PROJECT_NAME@_LIBDIR @PACKAGE_CMAKE_INSTALL_PREFIX@/@PROJECT_INSTALL_LIBDIR@) -set_and_check(@PROJECT_NAME@_DATADIR @PACKAGE_CMAKE_INSTALL_PREFIX@/@PROJECT_INSTALL_DATADIR@) -set_and_check(@PROJECT_NAME@_CMAKEMODDIR @PACKAGE_CMAKE_INSTALL_PREFIX@/@PROJECT_INSTALL_CMAKEMODDIR@) +set(@PROJECT_NAME@_PREFIX @PACKAGE_CMAKE_INSTALL_PREFIX@) +set(@PROJECT_NAME@_BINDIR @PACKAGE_CMAKE_INSTALL_PREFIX@/@PROJECT_INSTALL_BINDIR@) +set(@PROJECT_NAME@_INCDIR @PACKAGE_CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@) +set(@PROJECT_NAME@_LIBDIR @PACKAGE_CMAKE_INSTALL_PREFIX@/@PROJECT_INSTALL_LIBDIR@) +set(@PROJECT_NAME@_DATADIR @PACKAGE_CMAKE_INSTALL_PREFIX@/@PROJECT_INSTALL_DATADIR@) +set(@PROJECT_NAME@_CMAKEMODDIR @PACKAGE_CMAKE_INSTALL_PREFIX@/@PROJECT_INSTALL_CMAKEMODDIR@) set(@PROJECT_NAME@_CXX_STANDARD_REQUIRED @CMAKE_CXX_STANDARD_REQUIRED@) set(@PROJECT_NAME@_CXX_STANDARD @CMAKE_CXX_STANDARD@) diff --git a/fairmq/sdk/CMakeLists.txt b/fairmq/sdk/CMakeLists.txt new file mode 100644 index 00000000..d6cc2096 --- /dev/null +++ b/fairmq/sdk/CMakeLists.txt @@ -0,0 +1,80 @@ +################################################################################ +# Copyright (C) 2019 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH # +# # +# This software is distributed under the terms of the # +# GNU Lesser General Public Licence (LGPL) version 3, # +# copied verbatim in the file "LICENSE" # +################################################################################ + +################ +# libFairMQSDK # +################ +set(target FairMQ_SDK) + +set(SDK_PUBLIC_HEADER_FILES + Session.h + Topology.h +) + +set(SDK_PRIVATE_HEADER_FILES +) + +set(SDK_SOURCE_FILES + Session.cxx + Topology.cxx +) + +add_library(${target} + ${SDK_SOURCE_FILES} + ${SDK_PUBLIC_HEADER_FILES} # for IDE integration + ${SDK_PRIVATE_HEADER_FILES} # for IDE integration +) +set_target_properties(${target} PROPERTIES LABELS coverage) +target_compile_definitions(${target} PUBLIC BOOST_ERROR_CODE_HEADER_ONLY) +target_include_directories(${target} + PUBLIC + $ + $ +) +target_link_libraries(${target} + PUBLIC + FairLogger::FairLogger + + PRIVATE + DDS::dds_intercom_lib + DDS::dds_protocol_lib +) +set_target_properties(${target} PROPERTIES + VERSION ${PROJECT_GIT_VERSION} + SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" +) + +############### +# executables # +############### +add_executable(fairmq runFairMQ.cxx) +target_link_libraries(fairmq + PRIVATE + FairMQ_SDK + Boost::program_options +) + +install( + TARGETS + FairMQ_SDK + fairmq + + EXPORT ${PROJECT_EXPORT_SET} + RUNTIME DESTINATION ${PROJECT_INSTALL_BINDIR} + LIBRARY DESTINATION ${PROJECT_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${PROJECT_INSTALL_LIBDIR} +) + +# preserve relative path and prepend fairmq +foreach(HEADER ${SDK_PUBLIC_HEADER_FILES}) + get_filename_component(_path ${HEADER} DIRECTORY) + file(TO_CMAKE_PATH ${PROJECT_INSTALL_INCDIR}/${_path} _destination) + install(FILES ${HEADER} + DESTINATION ${_destination} + ) +endforeach() diff --git a/fairmq/sdk/Session.cxx b/fairmq/sdk/Session.cxx new file mode 100644 index 00000000..e69de29b diff --git a/fairmq/sdk/Session.h b/fairmq/sdk/Session.h new file mode 100644 index 00000000..e69de29b diff --git a/fairmq/sdk/Topology.cxx b/fairmq/sdk/Topology.cxx new file mode 100644 index 00000000..e69de29b diff --git a/fairmq/sdk/Topology.h b/fairmq/sdk/Topology.h new file mode 100644 index 00000000..e69de29b diff --git a/fairmq/sdk/runFairMQ.cxx b/fairmq/sdk/runFairMQ.cxx new file mode 100644 index 00000000..8e76be37 --- /dev/null +++ b/fairmq/sdk/runFairMQ.cxx @@ -0,0 +1,15 @@ +/******************************************************************************** + * Copyright (C) 2019 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * + * * + * This software is distributed under the terms of the * + * GNU Lesser General Public Licence (LGPL) version 3, * + * copied verbatim in the file "LICENSE" * + ********************************************************************************/ + +#include + +int main(int argc, char *argv[]) +{ + + return 0; +}