diff --git a/.appveyor.yml b/.appveyor.yml index 4df25d7bf1..8286e26a1d 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -4,9 +4,13 @@ image: Visual Studio 2015 environment: QT5_ROOT_DIRECTORY: C:\Qt\5.11.3 + HDF5_DIR: C:\Program Files\HDF_Group\HDF5\1.8.21\cmake install: - git submodule update --init --recursive + - curl -fsS -O https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.21/bin/hdf5-1.8.21-Std-win7_64-vs14.zip + - 7z x -bb0 hdf5-1.8.21-Std-win7_64-vs14.zip + - msiexec /package hdf5\HDF5-1.8.21-win64.msi /quiet - choco install doxygen.install - choco install cmake - choco install wixtoolset diff --git a/.gitmodules b/.gitmodules index bb3e627e88..74da17fb90 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "thirdparty/simpleini"] path = thirdparty/simpleini url = https://github.com/brofield/simpleini.git +[submodule "thirdparty/spdlog"] + path = thirdparty/spdlog + url = https://github.com/gabime/spdlog.git diff --git a/.travis.yml b/.travis.yml index 712d255ed8..3f7d78480a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,9 +13,10 @@ addons: - graphviz - zlib1g-dev - qt5-default + - libhdf5-dev - cmake - cmake-data - + script: - mkdir _build - cd _build diff --git a/CMakeLists.txt b/CMakeLists.txt index 51c8ed6670..df57c68d97 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,7 @@ cmake_policy(SET CMP0054 NEW) # command line build options # use it that way cmake .. -DBUILD_APPS=ON -DBUILD_SAMPLES=ON # -------------------------------------------------------- +option(HAS_HDF5 "Platform supports HDF5 library" ON) option(HAS_QT5 "Platform supports Qt 5 library" ON) option(HAS_CAPNPROTO "Platform supports Cap'n Proto library" OFF) @@ -52,6 +53,7 @@ option(ECAL_NPCAP_SUPPORT "Enable the eCAL Npcap Receiver ( # Set option regarding third party library builds option(ECAL_THIRDPARTY_BUILD_CMAKE_FUNCTIONS "Build CMakeFunctions with eCAL" ON) option(ECAL_THIRDPARTY_BUILD_PROTOBUF "Build Protobuf with eCAL" ON) +option(ECAL_THIRDPARTY_BUILD_SPDLOG "Build spdlog with eCAL" ON) # there is a CMake issue with testing threading availibility via TEST_RUN @@ -62,19 +64,6 @@ endif() # find_project(eCAL calls shall be ignored, eCAL is build as part of the project) set(as_subproject eCAL) -if (ECAL_THIRDPARTY_BUILD_CMAKE_FUNCTIONS) -list(APPEND as_subproject CMakeFunctions) -endif () -if (ECAL_THIRDPARTY_BUILD_PROTOBUF) -list(APPEND as_subproject Protobuf) -endif () - - -macro(find_package) - if(NOT "${ARGV0}" IN_LIST as_subproject) - _find_package(${ARGV}) - endif() -endmacro() # Normalize backslashes from Windows paths file(TO_CMAKE_PATH "${CMAKE_MODULE_PATH}" CMAKE_MODULE_PATH) @@ -86,11 +75,8 @@ message(STATUS "Prefix Path: ${CMAKE_PREFIX_PATH}") # -------------------------------------------------------- # third party dependencies as requested # -------------------------------------------------------- -if (ECAL_THIRDPARTY_BUILD_CMAKE_FUNCTIONS) - add_subdirectory(thirdparty/cmake_functions) -endif () - if (ECAL_THIRDPARTY_BUILD_PROTOBUF) + list(APPEND as_subproject Protobuf) if(MSVC) # supress google protobuf warnings for windows platform set(CMAKE_CXX_FLAGS_OLD "${CMAKE_CXX_FLAGS}") @@ -119,6 +105,30 @@ if (ECAL_THIRDPARTY_BUILD_PROTOBUF) endif() endif() +if (ECAL_THIRDPARTY_BUILD_SPDLOG) + list(APPEND as_subproject spdlog) + add_subdirectory(thirdparty/spdlog) + add_library(spdlog::spdlog ALIAS spdlog) +endif () + + + +if (ECAL_THIRDPARTY_BUILD_CMAKE_FUNCTIONS) + list(APPEND as_subproject CMakeFunctions) +endif() + +macro(find_package) + if(NOT "${ARGV0}" IN_LIST as_subproject) + _find_package(${ARGV}) + endif() +endmacro() + +if (ECAL_THIRDPARTY_BUILD_CMAKE_FUNCTIONS) + add_subdirectory(thirdparty/cmake_functions) +endif () + + + find_package(CMakeFunctions REQUIRED) git_revision_information() @@ -276,6 +286,7 @@ add_subdirectory(ecal/core/src) # -------------------------------------------------------- # custom libs # -------------------------------------------------------- +add_subdirectory(lib/ThreadingUtils) add_subdirectory(lib/EcalUtils) if(HAS_QT5) add_subdirectory(lib/CustomQt) @@ -283,6 +294,10 @@ endif() if(ECAL_NPCAP_SUPPORT) add_subdirectory(lib/Udpcap) endif() +add_subdirectory(lib/EcalParser) +if(HAS_QT5) + add_subdirectory(lib/QEcalParser) +endif(HAS_QT5) # -------------------------------------------------------- # ecal mon plugin sdk @@ -299,6 +314,14 @@ if(BUILD_TIME) add_subdirectory(contrib/ecaltime) endif() +# -------------------------------------------------------- +# ecal hdf5 support +# -------------------------------------------------------- +if(HAS_HDF5) + add_subdirectory(contrib/ecalhdf5/src) + add_subdirectory(contrib/message) +endif() + # -------------------------------------------------------- # console applications # -------------------------------------------------------- @@ -309,6 +332,18 @@ if(BUILD_APPS) add_subdirectory(app/util/eCALStop/src) endif() +# -------------------------------------------------------- +# applications using hdf5 +# -------------------------------------------------------- +if(BUILD_APPS AND HAS_HDF5) + add_subdirectory(app/play/eCALPlayCore) + add_subdirectory(app/play/eCALPlay) + + add_subdirectory(app/rec/rec_cli) + add_subdirectory(app/rec/rec_core) + add_subdirectory(app/rec/rec_server_core) +endif() + # -------------------------------------------------------- # qt applications # -------------------------------------------------------- @@ -320,6 +355,13 @@ if(BUILD_APPS AND HAS_QT5) set(ECAL_MON_PLUGIN_DIR ecal/plugins/mon) endif() add_subdirectory(app/mon/eCALMonPlugins) +# -------------------------------------------------------- +# Qt5 Apps using HDF5 +# -------------------------------------------------------- +if(BUILD_APPS AND HAS_QT5 AND HAS_HDF5) + add_subdirectory(app/play/eCALPlayGUI) + add_subdirectory(app/rec/rec_gui) +endif() endif() # -------------------------------------------------------- diff --git a/README.md b/README.md index 5afd7ad3e5..584c145ea6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - + # eCAL - enhanced Communication Abstraction Layer Copyright (c) 2019, Continental Corporation. @@ -80,40 +80,56 @@ All options can be passed on the command line `cmake -D