Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
  • C cmsgemos
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 100
    • Issues 100
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 13
    • Merge requests 13
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • cmsgemonline
  • gem-daq
  • cmsgemos
  • Issues
  • #64

Closed
Open
Created May 04, 2020 by Laurent Petre@lpetreOwner

Use C++17 on the CTP7

Summary

Currently, the CTP7 is limited to C++11 (with a non-fully compliant C++11 standard library) with some parts from C++14 (GCC 4.9.2). In addition of not providing the latest, very convenient, C++ features, it create an imbalance better the gemrpc module and the other cmsgemos modules. This is particularly striking in the xhal library/framework which must be compatible with this old compiler although it would clearly benefit from C++17 features.

As long as rcpsvc, or any other system-compiled C++ library, is involved it is not possible to use a completely different toolchain than the one that has been used to compile the CTP7 Linux image.

Nevertheless, it is possible to safely compile the CTP7 software with modern LLVM releases (which natively support cross-compilation) as long as the system C++ standard library is used (Xilinx SDK 2016.2 or Linaro 4.9.2). Although it won't provides all the C++17, the new language features will be available (constexpr if, structured bindings, nested namespaces,...)

The change in the CTP7 toolchain is simple and clang 7.0 is already installed on the main development machine and CI in order to get clang-format. Careful tests are required, but no major issue is expected.

Assignee
Assign to
Time tracking