On 2020/11/21 16:48, Dimitri Karamazov wrote: > I'm trying to update blender to the latest version, but stumbled upon > some errors. > C++17 doesn't support register storage class, but it is part of XKBLIb > headers, > > I tried things like "-Wno-register" to MAKE_FLAGS, then > #pragma Clang diagnostic ignored "-Wregister" before the > header to no avail. > > FAILED: intern/ghost/CMakeFiles/bf_intern_ghost.dir/intern/GHOST_ISystem.cpp.o > /usr/ports/pobj/blender-2.90.1/bin/c++ -DGLEW_NO_GLU -DNDEBUG > -DWITH_ASSERT_ABORT -DWITH_GHOST_X11 > -DWITH_GL_PROFILE_CORE -DWITH_OPENGL -DWITH_X11_ALPHA -DWITH_X11_XF86VMODE > -DWITH_X11_XFIXES -DWITH_X11_XINPUT > -DWITH_XDND -DWITH_XF86KEYSYM -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE > -D_LARGEFILE_SOURCE -D__LITTLE_ENDIAN__ > -I/usr/ports/pobj/blender-2.90.1/blender-2.90.1/intern/ghost > -I/usr/ports/pobj/blender-2.90.1/blender-2.90.1/intern/glew-mx > -I/usr/ports/pobj/blender-2.90.1/blender-2.90.1/source/blender/imbuf > -I/usr/ports/pobj/blender-2.90.1/blender-2.90.1/source/blender/makesdna > -I/usr/ports/pobj/blender-2.90.1/blender-2.90.1/extern/xdnd -Wall > -Wno-tautological-compare -Wno-unknown-pragmas > -Wno-char-subscripts -Wno-overloaded-virtual -Wno-sign-compare > -Wno-invalid-offsetof -O2 -pipe -I/usr/local/include > -I/usr/X11R6/include -pthread -std=c++11 -std=c++17 -pipe -fPIC > -funsigned-char -fno-strict-aliasing -DNDEBUG -MD -MT > intern/ghost/CMakeFiles/bf_intern_ghost.dir/intern/GHOST_ISystem.cpp.o -MF > intern/ghost/CMakeFiles/bf_intern_ghost.dir/intern/GHOST_ISystem.cpp.o.d -o > intern/ghost/CMakeFiles/bf_intern_ghost.dir/intern/GHOST_ISystem.cpp.o -c > /usr/ports/pobj/blender-2.90.1/blender-2.90.1/intern/ghost/intern/GHOST_ISystem.cpp > In file included from > /usr/ports/pobj/blender-2.90.1/blender-2.90.1/intern/ghost/intern/GHOST_ISystem.cpp:37: > In file included from > /usr/ports/pobj/blender-2.90.1/blender-2.90.1/intern/ghost/intern/GHOST_SystemX11.h:27: > /usr/X11R6/include/X11/XKBlib.h:399:5: error: ISO C++17 does not allow > 'register' storage class specifier [-Wregister] > register KeySym * /* sym_return */, > ^~~~~~~~~ > 1 error generated. > ninja: build stopped: subcommand failed. > *** Error 1 in /usr/ports/graphics/blender > (/usr/ports/devel/cmake/cmake.port.mk:34 'do-build': @cd > /usr/ports/pobj/blender-2.90.1/build-amd...) > *** Error 2 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2921 > '/usr/ports/pobj/blender-2.90.1/build-amd64/.build_done': @cd > /usr/ports/gra...) > *** Error 2 in /usr/ports/graphics/blender > (/usr/ports/infrastructure/mk/bsd.port.mk:2584 'build': > @lock=blender-2.90.1; export _LOCKS_HELD...) > > Is forcing -std=c++11 good enough? It goes past that error to
> /usr/ports/pobj/blender-2.90.1/blender-2.90.1/extern/ceres/include/ceres/internal/integer_sequence_algorithm.h:64:21: > error: no template named 'integer_sequence' in namespace 'std'; did you mean > '__integer_sequence'? > struct SumImpl<std::integer_sequence<T, N, Ns...>> { > ~~~~~^~~~~~~~~~~~~~~~ > __integer_sequence > /usr/include/c++/v1/__tuple:93:8: note: '__integer_sequence' declared here > If you look in the c++ headers in /usr/include you'll find --snip--------- #if _LIBCPP_STD_VER > 11 template<class _Tp, _Tp... _Ip> struct _LIBCPP_TEMPLATE_VIS integer_sequence { --snip--------- suggesting it does need >11 for this. (this was added in c++14 I think). Try removing "register" in your local xkblib headers to see if things build with that.