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.