CarVac / librtprocess

A project to make RawTherapee's processing algorithms more readily available.
Other
51 stars 23 forks source link

Build error with gcc 11 #64

Closed Vincent-FA closed 5 months ago

Vincent-FA commented 3 years ago

Hello, it seems that the new compiler on Arch Linux has problems with size_t in librtprocess headers:

/home/j/.cache/yay/siril/src/siril-0.99.8.1/subprojects/librtprocess/src/include/librtprocess.h:30:313: error: ‘size_t’ has not been declared
   30 | rpError amaze_demosaic(int raw_width, int raw_height, int winx, int winy, int winw, int winh, const float * const *rawData, float **red, float **green, float **blue, const unsigned cfarray[2][2], const std::function<bool(double)> &setProgCancel, double initGain, int border, float inputScale, float outputScale, size_t chunkSize = 2, bool measure = false);
      |                                                                                                                                                                                                                                                                                                                         ^~~~~~

I don't have access to this, it was reported on siril as a build issue here: https://aur.archlinux.org/packages/siril/

Maybe there is an include required for size_t now, apparently it's in stddef.h.

podiki commented 3 years ago

Can confirm librtprocess does not build with gcc11 (from current git version, independent of siril build). Possibly see https://www.gnu.org/software/gcc/gcc-11/porting_to.html: "GCC 11 defaults to -std=gnu++17 instead of -std=gnu++14: the C++17 standard, plus GNU extensions."

╰─ make
[  6%] Building CXX object src/CMakeFiles/rtprocess.dir/demosaic/ahd.cc.o
[ 13%] Building CXX object src/CMakeFiles/rtprocess.dir/demosaic/amaze.cc.o
[ 20%] Building CXX object src/CMakeFiles/rtprocess.dir/demosaic/bayerfast.cc.o
[ 26%] Building CXX object src/CMakeFiles/rtprocess.dir/demosaic/border.cc.o
[ 33%] Building CXX object src/CMakeFiles/rtprocess.dir/demosaic/dcb.cc.o
[ 40%] Building CXX object src/CMakeFiles/rtprocess.dir/demosaic/hphd.cc.o
[ 46%] Building CXX object src/CMakeFiles/rtprocess.dir/demosaic/igv.cc.o
[ 53%] Building CXX object src/CMakeFiles/rtprocess.dir/demosaic/lmmse.cc.o
[ 60%] Building CXX object src/CMakeFiles/rtprocess.dir/demosaic/markesteijn.cc.o
[ 66%] Building CXX object src/CMakeFiles/rtprocess.dir/demosaic/rcd.cc.o
[ 73%] Building CXX object src/CMakeFiles/rtprocess.dir/demosaic/vng4.cc.o
[ 80%] Building CXX object src/CMakeFiles/rtprocess.dir/demosaic/xtransfast.cc.o
In file included from /home/.../librtprocess/src/demosaic/xtransfast.cc:22:
/home/.../librtprocess/src/include/librtprocess.h:30:313: error: ‘size_t’ has not been declared
   30 | ProgCancel, double initGain, int border, float inputScale, float outputScale, size_t chunkSize = 2, bool measure = false);
      |                                                                               ^~~~~~

/home/.../librtprocess/src/include/librtprocess.h:34:197: error: ‘size_t’ has not been declared
   34 | nst unsigned cfarray[2][2], const std::function<bool(double)> &setProgCancel, size_t chunkSize = 2, bool measure = false, bool multiThread = true);
      |                                                                               ^~~~~~

/home/.../librtprocess/src/include/librtprocess.h:35:271: error: ‘size_t’ has not been declared
   35 | unction<bool(double)> &setProgCancel, const int passes, const bool useCieLab, size_t chunkSize = 2, bool measure = false);
      |                                                                               ^~~~~~

/home/.../librtprocess/src/include/librtprocess.h:41:79: error: ‘size_t’ has not been declared
   41 | rpError CA_correct(int winx, int winy, int winw, int winh, const bool autoCA, size_t autoIterations, const double cared, const double cablue, bool avoidColourshift, const float * const *rawDataIn, float **rawDataOut, const unsigned cfarray[2][2], const std::function<bool(double)> &setProgCancel, double fitParams[2][2][16], bool fitParamsIn, float inputScale = 65535.f, float outputScale = 65535.f, size_t chunkSize = 2, bool measure = false);
      |                                                                               ^~~~~~
/home/.../librtprocess/src/include/librtprocess.h:41:401: error: ‘size_t’ has not been declared
   41 | ], bool fitParamsIn, float inputScale = 65535.f, float outputScale = 65535.f, size_t chunkSize = 2, bool measure = false);
      |                                                                               ^~~~~~

make[2]: *** [src/CMakeFiles/rtprocess.dir/build.make:230: src/CMakeFiles/rtprocess.dir/demosaic/xtransfast.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:143: src/CMakeFiles/rtprocess.dir/all] Error 2
make: *** [Makefile:156: all] Error 2
╰─ gcc --version
gcc (GCC) 11.1.0

EDIT: See #62 as probably the fix?

EDIT 2: change from #62 does indeed resolve the build problem for me with gcc11 (not sure how that would affect builds on older gcc versions)

CarVac commented 3 years ago

I merged #62 just now.