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.

Reply via email to