diff --git a/.gitignore b/.gitignore index 63881a2cbc..668a16a426 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,6 @@ CMakeLists.txt.user # CLion project files /.idea + +#macOS +.DS_Store \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index ab67305ca7..2fd567c2b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,7 +39,7 @@ option(HAS_HDF5 "Platform supports HDF5 library" option(HAS_QT5 "Platform supports Qt 5 library" ON) option(HAS_CAPNPROTO "Platform supports Cap'n Proto library" OFF) -option(BUILD_DOCS "Build the eCAL documentation" ON) +option(BUILD_DOCS "Build the eCAL documentation" OFF) option(BUILD_APPS "Build the eCAL applications" ON) option(BUILD_SAMPLES "Build the eCAL samples" ON) option(BUILD_TIME "Build the eCAL time interfaces" ON) @@ -116,7 +116,7 @@ if (ECAL_THIRDPARTY_BUILD_PROTOBUF) add_executable(protobuf::protoc ALIAS protoc) set(Protobuf_PROTOC_EXECUTABLE protoc) endif() - set(Protobuf_VERSION 3.5.1) + set(Protobuf_VERSION 3.11.4) endif() if (ECAL_THIRDPARTY_BUILD_SPDLOG) @@ -310,24 +310,24 @@ endif() # -------------------------------------------------------- # protobuf utilities # -------------------------------------------------------- -add_subdirectory(contrib/ecalproto/src) +add_subdirectory(contrib/ecalproto) # -------------------------------------------------------- # ecal core internal protobuf # -------------------------------------------------------- -add_subdirectory(ecal/pb/src) +add_subdirectory(ecal/pb) # -------------------------------------------------------- # ecal core # -------------------------------------------------------- -add_subdirectory(ecal/core/src) +add_subdirectory(ecal/core) # -------------------------------------------------------- # custom libs # -------------------------------------------------------- add_subdirectory(lib/ThreadingUtils) add_subdirectory(lib/CustomTclap) -add_subdirectory(lib/EcalUtils) +add_subdirectory(lib/ecal_utils) if(HAS_QT5) add_subdirectory(lib/CustomQt) endif() @@ -358,7 +358,7 @@ endif() # ecal hdf5 support # -------------------------------------------------------- if(HAS_HDF5) - add_subdirectory(contrib/ecalhdf5/src) + add_subdirectory(contrib/ecalhdf5) add_subdirectory(contrib/message) endif() @@ -374,7 +374,7 @@ endif() # -------------------------------------------------------- if(BUILD_CSHARP_BINDING AND WIN32) add_subdirectory(lang/csharp/Continental/eCAL/Core/) - #add_subdirectory(lang/csharp/Continental/eCAL/Protobuf/) + add_subdirectory(lang/csharp/Continental/eCAL/Protobuf/) endif() # -------------------------------------------------------- @@ -382,7 +382,7 @@ endif() # -------------------------------------------------------- add_subdirectory(app/apps) if(BUILD_APPS) - add_subdirectory(app/mon/topic) + add_subdirectory(app/mon/mon_cli) add_subdirectory(app/util/config) add_subdirectory(app/util/stop) endif() @@ -437,24 +437,24 @@ if(BUILD_TESTS) # test contrib # ------------------------------------------------------ if(HAS_HDF5) - add_subdirectory(testing/contrib/ecalhdf5/hdf5_test/src) + add_subdirectory(testing/contrib/ecalhdf5/hdf5_test) endif() - add_subdirectory(testing/contrib/ecalproto/dynproto_test/src) - add_subdirectory(testing/contrib/ecalproto/ecal_proto_test/src) + add_subdirectory(testing/contrib/ecalproto/dynproto_test) + add_subdirectory(testing/contrib/ecalproto/ecal_proto_test) # ------------------------------------------------------ # test ecal # ------------------------------------------------------ - add_subdirectory(testing/ecal/clientserver_test/src) - add_subdirectory(testing/ecal/core_test/src) - add_subdirectory(testing/ecal/event_test/src) - add_subdirectory(testing/ecal/expmap_test/src) + add_subdirectory(testing/ecal/clientserver_test) + add_subdirectory(testing/ecal/core_test) + add_subdirectory(testing/ecal/event_test) + add_subdirectory(testing/ecal/expmap_test) if(NOT ECAL_LAYER_ICEORYX) - add_subdirectory(testing/ecal/io_memfile_test/src) + add_subdirectory(testing/ecal/io_memfile_test) endif(NOT ECAL_LAYER_ICEORYX) - add_subdirectory(testing/ecal/pubsub_inproc_test/src) - add_subdirectory(testing/ecal/pubsub_proto_test/src) - add_subdirectory(testing/ecal/pubsub_test/src) + add_subdirectory(testing/ecal/pubsub_inproc_test) + add_subdirectory(testing/ecal/pubsub_proto_test) + add_subdirectory(testing/ecal/pubsub_test) endif() # -------------------------------------------------------- diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000000..882e2001c0 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,2 @@ +@Library('ecal-ci') _ +executeMatrixPipeline() diff --git a/README.md b/README.md index 7546810de3..ffc4ae3fc6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ - - # eCAL - enhanced Communication Abstraction Layer Copyright (c) 2019, Continental Corporation. @@ -50,43 +48,26 @@ git submodule update eCAL is using CMake as build system. When configuring with CMake, you can turn on / off the following features. -- `HAS_HDF5`, default: `ON` - Platform supports HDF5 library, necessary to build eCAL recording / replay tools -- `HAS_QT5`, default: `ON` - Platform supports Qt 5 library, necessary to build eCAL monitoring tool -- `HAS_CAPNPROTO`, default: `OFF` - Platform supports Cap'n Proto library, necessary to use capnp serialization as message system and to enable eCAL monitoring capnp message reflection - eCAL does not add Cap'n Proto as a submodule. If you set this option to `ON`, please make sure that the library is installed on your system and CMake can find it (consider setting CMAKE_PREFIX_PATH to point to the library). -- `BUILD_DOCS`, default `ON` - Build the eCAL documentation, requires the installation of doxygen and a recent CMake version (>= 3.14 preferred, but some lower versions might work) -- `BUILD_APPS`, default `ON`, - Build the eCAL applications, such as the monitoring tool -- `BUILD_SAMPLES`, default `OFF` - Build the eCAL sample applications -- `BUILD_TIME`, default `ON` - Build the eCAL time interfaces, necessary if you want to use ecal in time synchronized mode (based on ptp for example) -- `BUILD_PY_BINDING`, default `OFF` - Build the eCAL python language binding -- `BUILD_CSHARP_BINDING`, default `OFF` - Build the eCAL C# language binding -- `BUILD_TESTS', default `OFF` - Build the eCAL google tests -- `ECAL_LAYER_ICEORYX`, default `OFF` - Use iceoryx shared memory as local communication layer, requires [eclipse/iceoryx](https://github.com/eclipse/iceoryx) installation -- `ECAL_INCLUDE_PY_SAMPLES`, default: `OFF` - Include python language sample projects into CMake -- `ECAL_INSTALL_SAMPLE_SOURCES`, default: `ON` - Install the sources of eCAL samples -- `ECAL_JOIN_MULTICAST_TWICE`, default: `OFF` - Specific multicast network bug workaround -- `ECAL_NPCAP_SUPPORT`, default `OFF` - Enable the eCAL to use Npcap for udp socket communication (i.e. the Win10 performance fix) -- `ECAL_THIRDPARTY_BUILD_PROTOBUF`, default `ON` - Build Protobuf with eCAL, included as a submodule in the thirdparty folder. You can always use your custom protobuf installation, this is only for convenience. Note, at least protobuf 3.0 is required to compile eCAL, we recommend using 3.5.1 or newer (tested with 3.5.1). -- `ECAL_THIRDPARTY_BUILD_SPDLOG`, default `ON` - Build Spdlog with eCAL, included as a submodule in the thirdparty folder. You can always use your custom spdlog installation, this is only for convenience. -- `ECAL_THIRDPARTY_BUILD_GTEST`, default `OFF` - Build GoogleTest with eCAL, included as a submodule in the thirdparty folder. You can always use your custom gtest installation, this is only for convenience. +| CMake option | Default | Description | +|----------------------------------|---------|------------ | +| `HAS_HDF5` | `ON` | Platform supports HDF5 library, necessary to build eCAL recording / replay tools | +| `HAS_QT5` | `ON` | Platform supports Qt 5 library, necessary to build eCAL monitoring tool | +| `HAS_CAPNPROTO` | `OFF` | Platform supports Cap'n Proto library, necessary to use capnp serialization as message system and to enable eCAL monitoring capnp message reflection. eCAL does not add Cap'n Proto as a submodule. If you set this option to `ON`, please make sure that the library is installed on your system and CMake can find it (consider setting CMAKE_PREFIX_PATH to point to the library). | +| `BUILD_DOCS` | `OFF` | Build the eCAL documentation, requires the installation of doxygen and a recent CMake version (>= 3.14 preferred, but some lower versions might work) | +| `BUILD_APPS` | `ON` | Build the eCAL applications, such as the monitoring tool | +| `BUILD_SAMPLES` | `OFF` | Build the eCAL sample applications | +| `BUILD_TIME` | `ON` | Build the eCAL time interfaces, necessary if you want to use ecal in time synchronized mode (based on ptp for example) | +| `BUILD_PY_BINDING` | `OFF` | Build the eCAL python language binding | +| `BUILD_CSHARP_BINDING` | `OFF` | Build the eCAL C# language binding | +| `BUILD_TESTS` | `OFF` | Build the eCAL google tests | +| `ECAL_LAYER_ICEORYX` | `OFF` | Use iceoryx shared memory as local communication layer, requires [eclipse/iceoryx](https://github.com/eclipse/iceoryx) installation | +| `ECAL_INCLUDE_PY_SAMPLES` | `OFF` | Include python language sample projects into CMake | +| `ECAL_INSTALL_SAMPLE_SOURCES` | `ON` | Install the sources of eCAL samples | +| `ECAL_JOIN_MULTICAST_TWICE` | `OFF` | Specific multicast network bug workaround | +| `ECAL_NPCAP_SUPPORT` | `OFF` | Enable the eCAL to use Npcap for udp socket communication (i.e. the Win10 performance fix) | +| `ECAL_THIRDPARTY_BUILD_PROTOBUF` | `ON` | Build Protobuf with eCAL, included as a submodule in the thirdparty folder. You can always use your custom protobuf installation, this is only for convenience. Note, at least protobuf 3.0 is required to compile eCAL, we recommend using 3.11.4 or newer (tested with 3.11.4). | +| `ECAL_THIRDPARTY_BUILD_SPDLOG` | `ON` | Build Spdlog with eCAL, included as a submodule in the thirdparty folder. You can always use your custom spdlog installation, this is only for convenience. | +| `ECAL_THIRDPARTY_BUILD_GTEST` | `OFF` | Build GoogleTest with eCAL, included as a submodule in the thirdparty folder. You can always use your custom gtest installation, this is only for convenience. | All options can be passed on the command line `cmake -D