alandefreitas/matplotplusplus

Compilation fails with GCC 13 / Clang 16

tretre91 opened this issue · 0 comments

Bug category

  • bug - compilation error
  • bug - compilation warning
  • bug - runtime error
  • bug - runtime warning
  • bug - logic error

Describe the bug
Compilation fails with GCC 13.1.1 and clang 16.0.2 because <cstdint> (which defines uint8_t) is not included in source/matplot/util/colors.cpp

Steps to Reproduce

cmake -S . -B build -DCMAKE_BUILD_TYPE=RELEASE -DMATPLOTPP_BUILD_EXAMPLES=OFF -DMATPLOTPP_BUILD_TESTS=OFF -DMATPLOTPP_BUILD_INSTALLER=OFF -DMATPLOTPP_BUILD_PACKAGE=OFF
cmake --build build

Output

$ cmake -S . -B build -DCMAKE_BUILD_TYPE=RELEASE -DMATPLOTPP_BUILD_EXAMPLES=OFF -DMATPLOTPP_BUILD_TESTS=OFF -DMATPLOTPP_BUILD_INSTALLER=OFF -DMATPLOTPP_BUILD_PACKAGE=OFF
-- The C compiler identification is GNU 13.1.1
-- The CXX compiler identification is GNU 13.1.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.0") 
-- Found JPEG: /usr/lib64/libjpeg.so (found version "62") 
-- Found TIFF: /usr/lib64/libtiff.so (found version "4.4.0")  
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.13")  
-- Found PNG: /usr/lib64/libpng.so (found version "1.6.37") 
-- Looking for sgemm_
-- Looking for sgemm_ - not found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Looking for sgemm_
-- Looking for sgemm_ - found
-- Found BLAS: /usr/lib64/libopenblas.so  
-- Looking for cheev_
-- Looking for cheev_ - found
-- Found LAPACK: /usr/lib64/libopenblas.so;-lm;-ldl  
-- Could NOT find FFTW (missing: FFTW_INCLUDE_DIRS) 
-- Looking for C++ include filesystem
-- Looking for C++ include filesystem - found
-- Performing Test CXX_FILESYSTEM_NO_LINK_NEEDED
-- Performing Test CXX_FILESYSTEM_NO_LINK_NEEDED - Success
-- Looking for __fbufsize
-- Looking for __fbufsize - found
-- Configuring done (3.1s)
-- Generating done (0.0s)
-- Build files have been written to: /tmp/matplotplusplus/build
$ cmake --build build
[  2%] Building CXX object source/3rd_party/CMakeFiles/nodesoup.dir/nodesoup/src/algebra.cpp.o
[  4%] Building CXX object source/3rd_party/CMakeFiles/nodesoup.dir/nodesoup/src/fruchterman_reingold.cpp.o
[  6%] Building CXX object source/3rd_party/CMakeFiles/nodesoup.dir/nodesoup/src/kamada_kawai.cpp.o
[  9%] Building CXX object source/3rd_party/CMakeFiles/nodesoup.dir/nodesoup/src/layout.cpp.o
[ 11%] Building CXX object source/3rd_party/CMakeFiles/nodesoup.dir/nodesoup/src/nodesoup.cpp.o
[ 13%] Linking CXX static library libnodesoup.a
[ 13%] Built target nodesoup
[ 16%] Building CXX object source/matplot/CMakeFiles/matplot.dir/backend/backend_interface.cpp.o
[ 18%] Building CXX object source/matplot/CMakeFiles/matplot.dir/backend/gnuplot.cpp.o
[ 20%] Building CXX object source/matplot/CMakeFiles/matplot.dir/backend/backend_registry.cpp.o
[ 23%] Building CXX object source/matplot/CMakeFiles/matplot.dir/core/axes_type.cpp.o
[ 25%] Building CXX object source/matplot/CMakeFiles/matplot.dir/core/axes_object.cpp.o
[ 27%] Building CXX object source/matplot/CMakeFiles/matplot.dir/core/axis_type.cpp.o
[ 30%] Building CXX object source/matplot/CMakeFiles/matplot.dir/core/figure_type.cpp.o
[ 32%] Building CXX object source/matplot/CMakeFiles/matplot.dir/core/figure_registry.cpp.o
[ 34%] Building CXX object source/matplot/CMakeFiles/matplot.dir/core/legend.cpp.o
[ 37%] Building CXX object source/matplot/CMakeFiles/matplot.dir/core/line_spec.cpp.o
[ 39%] Building CXX object source/matplot/CMakeFiles/matplot.dir/util/colors.cpp.o
/tmp/matplotplusplus/source/matplot/util/colors.cpp: Dans la fonction « std::array<float, 4> matplot::to_array(std::string_view) »:
/tmp/matplotplusplus/source/matplot/util/colors.cpp:202:17: erreur: « uint8_t » n'a pas été déclaré dans cette portée
  202 |                 uint8_t a = 0;
      |                 ^~~~~~~
/tmp/matplotplusplus/source/matplot/util/colors.cpp:10:1: note: « uint8_t » est défini dans l'en-tête « <cstdint> » ; avez-vous oublié « #include <cstdint> » ?
    9 | #include <stdexcept>
  +++ |+#include <cstdint>
   10 | 
/tmp/matplotplusplus/source/matplot/util/colors.cpp:204:28: erreur: expected « ; » before « a1 »
  204 |                     uint8_t a1 = static_cast<uint8_t>(
      |                            ^~~
      |                            ;
/tmp/matplotplusplus/source/matplot/util/colors.cpp:209:28: erreur: expected « ; » before « a2 »
  209 |                     uint8_t a2 = static_cast<uint8_t>(
      |                            ^~~
      |                            ;
/tmp/matplotplusplus/source/matplot/util/colors.cpp:213:21: erreur: « a » n'a pas été déclaré dans cette portée
  213 |                     a = (a1 << 4u) | a2;
      |                     ^
/tmp/matplotplusplus/source/matplot/util/colors.cpp:213:26: erreur: « a1 » n'a pas été déclaré dans cette portée; vouliez-vous employer « y1 » ?
  213 |                     a = (a1 << 4u) | a2;
      |                          ^~
      |                          y1
/tmp/matplotplusplus/source/matplot/util/colors.cpp:213:38: erreur: « a2 » n'a pas été déclaré dans cette portée
  213 |                     a = (a1 << 4u) | a2;
      |                                      ^~
/tmp/matplotplusplus/source/matplot/util/colors.cpp:215:24: erreur: expected « ; » before « r1 »
  215 |                 uint8_t r1 = static_cast<uint8_t>(
      |                        ^~~
      |                        ;
/tmp/matplotplusplus/source/matplot/util/colors.cpp:219:24: erreur: expected « ; » before « r2 »
  219 |                 uint8_t r2 = static_cast<uint8_t>(
      |                        ^~~
      |                        ;
/tmp/matplotplusplus/source/matplot/util/colors.cpp:223:24: erreur: expected « ; » before « r »
  223 |                 uint8_t r = (r1 << 4u) | r2;
      |                        ^~
      |                        ;
/tmp/matplotplusplus/source/matplot/util/colors.cpp:224:24: erreur: expected « ; » before « g1 »
  224 |                 uint8_t g1 = static_cast<uint8_t>(
      |                        ^~~
      |                        ;
/tmp/matplotplusplus/source/matplot/util/colors.cpp:228:24: erreur: expected « ; » before « g2 »
  228 |                 uint8_t g2 = static_cast<uint8_t>(
      |                        ^~~
      |                        ;
/tmp/matplotplusplus/source/matplot/util/colors.cpp:232:24: erreur: expected « ; » before « g »
  232 |                 uint8_t g = (g1 << 4u) | g2;
      |                        ^~
      |                        ;
/tmp/matplotplusplus/source/matplot/util/colors.cpp:233:24: erreur: expected « ; » before « b1 »
  233 |                 uint8_t b1 = static_cast<uint8_t>(
      |                        ^~~
      |                        ;
/tmp/matplotplusplus/source/matplot/util/colors.cpp:237:24: erreur: expected « ; » before « b2 »
  237 |                 uint8_t b2 = static_cast<uint8_t>(
      |                        ^~~
      |                        ;
/tmp/matplotplusplus/source/matplot/util/colors.cpp:241:24: erreur: expected « ; » before « b »
  241 |                 uint8_t b = (b1 << 4u) | b2;
      |                        ^~
      |                        ;
/tmp/matplotplusplus/source/matplot/util/colors.cpp:242:48: erreur: « a » n'a pas été déclaré dans cette portée
  242 |                 result[0] = static_cast<float>(a) / 255;
      |                                                ^
/tmp/matplotplusplus/source/matplot/util/colors.cpp:243:48: erreur: « r » n'a pas été déclaré dans cette portée
  243 |                 result[1] = static_cast<float>(r) / 255;
      |                                                ^
/tmp/matplotplusplus/source/matplot/util/colors.cpp:244:48: erreur: « g » n'a pas été déclaré dans cette portée
  244 |                 result[2] = static_cast<float>(g) / 255;
      |                                                ^
/tmp/matplotplusplus/source/matplot/util/colors.cpp:245:48: erreur: « b » n'a pas été déclaré dans cette portée
  245 |                 result[3] = static_cast<float>(b) / 255;
      |                                                ^
/tmp/matplotplusplus/source/matplot/util/colors.cpp: Dans la fonction « std::string matplot::to_string(const std::array<float, 4>&) »:
/tmp/matplotplusplus/source/matplot/util/colors.cpp:274:18: erreur: « uint8_t » n'a pas été déclaré dans cette portée
  274 |         auto a = uint8_t(c[0] * 255);
      |                  ^~~~~~~
/tmp/matplotplusplus/source/matplot/util/colors.cpp:274:18: note: « uint8_t » est défini dans l'en-tête « <cstdint> » ; avez-vous oublié « #include <cstdint> » ?
/tmp/matplotplusplus/source/matplot/util/colors.cpp:278:16: erreur: expected « ; » before « mask »
  278 |         uint8_t mask = 0b00001111;
      |                ^~~~~
      |                ;
/tmp/matplotplusplus/source/matplot/util/colors.cpp:280:29: erreur: « mask » n'a pas été déclaré dans cette portée
  280 |         str[3] = digits[a & mask];
      |                             ^~~~
gmake[2]: *** [source/matplot/CMakeFiles/matplot.dir/build.make:216: source/matplot/CMakeFiles/matplot.dir/util/colors.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:157: source/matplot/CMakeFiles/matplot.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2

Platform

  • cross-platform issue - linux
  • cross-platform issue - windows
  • cross-platform issue - macos

Environment Details:

  • OS: fedora linux
  • OS Version: 38
  • Compiler: GCC
  • Compiler version: 13.1.1

Additional context