On Sat, November 21, 2020 18:09, Stuart Henderson wrote:
> 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:2
>> 1:
>> 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.
>
>
I avoided that since I thought it was too invasive, but blender-2.90.1
builds and works fine with it.
register is unused and reserved in c++17, and deprecated since C++11,
is this diff okay?

Index: lib/libX11/include/X11/XKBlib.h
===================================================================
RCS file: /cvs/xenocara/lib/libX11/include/X11/XKBlib.h,v
retrieving revision 1.4
diff -u -p -r1.4 XKBlib.h
--- lib/libX11/include/X11/XKBlib.h     30 May 2011 19:19:30 -0000      1.4
+++ lib/libX11/include/X11/XKBlib.h     22 Nov 2020 07:44:40 -0000
@@ -396,7 +396,11 @@ extern     Bool            XkbTranslateKeyCode(

 extern int             XkbTranslateKeySym(
     Display *                  /* dpy */,
+#if _LIBCPP_STD_VER > 11
+    KeySym *                   /* sym_return */,
+#else
     register KeySym *          /* sym_return */,
+#endif
     unsigned int               /* modifiers */,
     char *                     /* buffer */,
     int                        /* nbytes */,

Or should I just remove the keyword?

Index: lib/libX11/include/X11/XKBlib.h
===================================================================
RCS file: /cvs/xenocara/lib/libX11/include/X11/XKBlib.h,v
retrieving revision 1.4
diff -u -p -r1.4 XKBlib.h
--- lib/libX11/include/X11/XKBlib.h     30 May 2011 19:19:30 -0000      1.4
+++ lib/libX11/include/X11/XKBlib.h     22 Nov 2020 07:29:01 -0000
@@ -396,7 +396,7 @@ extern      Bool            XkbTranslateKeyCode(

 extern int             XkbTranslateKeySym(
     Display *                  /* dpy */,
-    register KeySym *          /* sym_return */,
+    KeySym *                   /* sym_return */,
     unsigned int               /* modifiers */,
     char *                     /* buffer */,
     int                        /* nbytes */,


Reply via email to