Skip to content
Snippets Groups Projects
  1. Nov 01, 2022
  2. Oct 19, 2022
  3. Oct 18, 2022
  4. Oct 12, 2022
  5. Oct 11, 2022
    • Laurent Petre's avatar
      Merge branch 'feature/toolchains-misc-updates' into 'main' · 5318c306
      Laurent Petre authored
      Misc toolchains updates (a.k.a. C++17 on the CTP7)
      
      Closes #242 and #64
      
      See merge request !287
      5318c306
    • Laurent Petre's avatar
      Bump external dependencies versions · fecfc601
      Laurent Petre authored and Camilla Galloni's avatar Camilla Galloni committed
      * {fmt} from 7.1.3 to 9.1.0
      
        For the new features and the improved documentation.
      
      * libpqxx from 7.2.1 to 7.7.4
      
        For the new features and a ton of bugfixes. Not that it may be the
        last usable branch in cmsgemos before some time. Version 8.0.0 might
        require C++20.
      
      * pybind11 from 2.6.2 to 2.7.1
      
        While more recent versions have been published (2.8.x, 2.9.x, and
        2.10.x), this is the last one that seems compatible with the CTP7
        target. Starting from version 2.8.x, any usage of gempy fails with an
        assertion within Python. [0] That version introduced changes in the
        thread-local storage handling which is clearly related to the
        assertion failure. Considering that starting from version 2.10.0,
        Python 2.7 is not supported by the pybind11 project anymore, chances
        of bugfixes are small.
      
        Anyway, update to benefit from nice new helpers and performance
        optimizations as well as bugfixes. We should really move on with the
        Python version!
      
        [0] Python-2.7.9/Python/thread.c:346: PyThread_set_key_value:
            Assertion `value != ((void *)0)' failed.
      
      At the time of writing this commit, all external dependencies are now
      updated to their last stable compatible version.
      fecfc601
    • Laurent Petre's avatar
      Simplify the gemhardware CMakeLists.txt indentation · 2e3edcb3
      Laurent Petre authored and Camilla Galloni's avatar Camilla Galloni committed
      2e3edcb3
    • Laurent Petre's avatar
      Mark the xDAQ-provided DIM library as NO_SONAME · 9df2937d
      Laurent Petre authored and Camilla Galloni's avatar Camilla Galloni committed
      libdim.so provided by the xDAQ packages does not have a SONAME. Mark it
      as such in FindxDAQ.cmake for clean linking.
      9df2937d
    • Laurent Petre's avatar
      Enforce static build of locally build libraries · 90e1bbbf
      Laurent Petre authored and Camilla Galloni's avatar Camilla Galloni committed
      The log4cplus dependency was accidentally built has a shared library.
      It was actually setting the BUILD_SHARED_LIBS cache variable for the
      whole CMake project which could have had an impact in the cmsgemos core
      libraries.
      
      In order to avoid such situations in the future, preset the global
      variable BUILD_SHARED_LIBS to OFF. Would an adventurous developer play
      with the option, it would be his responsibility.
      
      Some binaries still require to be built as shared object. Those are
      manually specified it on a library-per-library basis.
      
      If conflicts between the FetchContent projects and the main project
      continue to be seen, the ExternalProject option may be envisioned.
      90e1bbbf
    • Laurent Petre's avatar
      Enable LTO by default in release mode, if available · 01c0a382
      Laurent Petre authored and Camilla Galloni's avatar Camilla Galloni committed
      01c0a382
    • Laurent Petre's avatar
      Use a pre-compiled version of {fmt} · bf2485f0
      Laurent Petre authored and Camilla Galloni's avatar Camilla Galloni committed
      This change aims at improving the compilatin speed. Notice that the
      deployment is not affected due to the usage of static linking.
      bf2485f0
    • Laurent Petre's avatar
      Enhance the external dependencies isolation · abcc8b4d
      Laurent Petre authored and Camilla Galloni's avatar Camilla Galloni committed
      The FetchContent calls have always been a weak point of the build
      system. There are now many external dependencies so improveme this
      weakness.
      
      1. Perform all actions in Build*.cmake via a function. This prevent
         variables leaks throught the creation of a new scope.
      
      2. Build on the targets we need, not all of them (i.e. add the
         EXCLUDE_FROM_ALL property on all external dependencies source
         directories).
      abcc8b4d
    • Laurent Petre's avatar
      Fix register permissions stored in LMDB · d2e827f7
      Laurent Petre authored and Camilla Galloni's avatar Camilla Galloni committed
      The register permissions (RO, WO, RW) stored in LMDB were corrupted and
      were containing the register mode (single/block). The register
      permission checks were also incorrect, leading to the bug being unoticed
      and leaving the permissions not actually checked. Fix both bugs.
      
      Found thanks to the warnings raised by Clang++ 14 in gemharware. Other
      warnings have been fixed as well.
      d2e827f7
    • Laurent Petre's avatar
      Use Clang/LLVM and C++17 for the CTP7 target · 307382fd
      Laurent Petre authored and Camilla Galloni's avatar Camilla Galloni committed
      Finally!
      
      Please note that the CTP7 sysroot has been updated. An update of the
      CTP7 libs on the back-end board is also required.
      
      Care must be taken whenever introducing new C++ dependencies since those
      have to be built against the recent libc++.
      307382fd
    • Laurent Petre's avatar
      Get rid of the Protobuf dependency · 53f4507a
      Laurent Petre authored and Camilla Galloni's avatar Camilla Galloni committed
      Since the implementation of the templated RPC method calls in xHAL, the
      Protobuf layer in gemrpc was essentially existing only for legacy
      reasons. Facing the Protobuf cross-compilation complexity (the code
      generator version must match the runtime library version) and the need
      to support more targets, the decision was taken remove this useless
      layer.
      
      This commit replaces the key based messages by binary messages. Cereal,
      already used for serialization of the RPC method arguments and return
      values, is used to serialize defined message types.
      
      Only the minimal amount of changes have been implemented in order to get
      rid of the Protobuf dependency. Additional clean-up and changes may be
      desirable in the future.
      53f4507a
    • Laurent Petre's avatar
      Find the Xerces-C++ dependency while configuring gemhardware · c70c60d8
      Laurent Petre authored and Camilla Galloni's avatar Camilla Galloni committed
      Until now, Xerces-C++ was always assumed installed on the system (or
      sysroot). This is an error prone assumption with the multiple supported
      targets. Use the CMake facilities to find the package and fail as early
      as possible if missing.
      c70c60d8
Loading