[Bf-committers] 2.78a won't build on ppc64le
Mamoru TASAKA
mtasaka at fedoraproject.org
Sat Nov 12 16:52:34 CET 2016
Hello, all:
My name is Mamoru TASAKA from Japan. This is the first post to
this mailing list. I see that "compile or build issues should be
reported to this list", so I post to this list.
Well, recently Fedora project ( https://fedoraproject.org/ ) began
to build packages on ppc64le (powerpc 64 bit, little endian) on rawhide
(development branch), and blender 2.78a won't build on ppc64le.
Downstream report:
https://bugzilla.redhat.com/show_bug.cgi?id=1393157
gcc: 6.2.1
compiler flags:
-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mcpu=power8 -mtune=power8 -fPIC -funsigned-char -fno-strict-aliasing -std=c++11
full build log (with make -k VERBOSE=1):
https://mtasaka.fedorapeople.org/Bugfix/blender/blender-2.78a-on-ppc64le.log
The errors are summarized into 2 types.
A. There are lots of errros like:
cd /builddir/build/BUILD/blender-2.78a/cmake-make/intern/audaspace && /usr/bin/c++ -DNDEBUG -DWITH_JACK -DWITH_OPENAL -DWITH_PYTHON -DWITH_SDL -DWITH_SNDFILE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D__LITTLE_ENDIAN__ -I/builddir/build/BUILD/blender-2.78a/intern/audaspace -I/builddir/build/BUILD/blender-2.78a/intern/audaspace/FX -I/builddir/build/BUILD/blender-2.78a/intern/audaspace/intern -I/builddir/build/BUILD/blender-2.78a/intern/ffmpeg -I/builddir/build/BUILD/blender-2.78a/intern/audaspace/SDL -I/builddir/build/BUILD/blender-2.78a/intern/audaspace/OpenAL -I/builddir/build/BUILD/blender-2.78a/intern/audaspace/jack -I/builddir/build/BUILD/blender-2.78a/intern/audaspace/sndfile -I/builddir/build/BUILD/blender-2.78a/intern/audaspace/Python -isystem /usr/include/SDL2 -isystem /usr/include/AL -isystem /usr/include/jack -isystem /usr/include/python3.5m -Wredundant-decls -Wall -Wno-invalid-offsetof -Wno-sign-compare -Wlogical-op -Winit-self -Wmissing-include-dirs -Wno-div-by-zero -Wtype-limits -Werror=return-type -Werror=implicit-function-declaration -Wno-char-subscripts -Wno-unknown-pragmas -Wpointer-arith -Wwrite-strings -Wundef -Wformat-signedness -Wuninitialized -Wundef -Wmissing-declarations -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mcpu=power8 -mtune=power8 -fPIC -funsigned-char -fno-strict-aliasing -std=c++11 -fopenmp -std=c++11 -pipe -fPIC -funsigned-char -fno-strict-aliasing -O2 -DNDEBUG -o CMakeFiles/bf_intern_audaspace.dir/intern/AUD_C-API.cpp.o -c /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_C-API.cpp
In file included from /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_C-API.cpp:82:0:
/builddir/build/BUILD/blender-2.78a/intern/audaspace/OpenAL/AUD_OpenALDevice.h:113:16: error: conflicting return type specified for 'virtual __vector(4) __bool int AUD_OpenALDevice::AUD_OpenALHandle::pause()'
virtual bool pause();
^~~~~
In file included from /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_IDevice.h:36:0,
from /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_NULLDevice.h:34,
from /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_C-API.cpp:50:
/builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_IHandle.h:54:15: error: overriding 'virtual bool AUD_IHandle::pause()'
virtual bool pause()=0;
^~~~~
In file included from /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_C-API.cpp:82:0:
/builddir/build/BUILD/blender-2.78a/intern/audaspace/OpenAL/AUD_OpenALDevice.h:114:16: error: conflicting return type specified for 'virtual __vector(4) __bool int AUD_OpenALDevice::AUD_OpenALHandle::resume()'
virtual bool resume();
^~~~~~
In file included from /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_IDevice.h:36:0,
from /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_NULLDevice.h:34,
from /builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_C-API.cpp:50:
/builddir/build/BUILD/blender-2.78a/intern/audaspace/intern/AUD_IHandle.h:62:15: error: overriding 'virtual bool AUD_IHandle::resume()'
virtual bool resume()=0;
... and other messages, and same messages on other files.
Here -mcpu=power8 automatically enables -maltivec , and with -maltivec (which adds -D__ALTIVEC__), when
including SDL2 related header, it includes altivec.h (via /usr/include/SDL2/SDL_cpuinfo.h)
(see preprocessed source for AUD_C-API.cpp here:
https://mtasaka.fedorapeople.org/Bugfix/blender/ppc64le-AUD_C-API.cpp-preprocessed.log )
And including altivec.h changes "bool" definition, for example. See:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58241
Currently I have to add -mno-altivec to compilation flags.
2. One other build error is here:
cd /builddir/build/BUILD/blender-2.78a/cmake-make/extern/glog && /usr/bin/c++ -DGFLAGS_DLL_DECL="" -DGFLAGS_DLL_DECLARE_FLAG="" -DGFLAGS_DLL_DEFINE_FLAG="" -DGOOGLE_GLOG_DLL_DECL="" -DNDEBUG -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D__LITTLE_ENDIAN__ -I/builddir/build/BUILD/blender-2.78a/extern/glog/src -I/builddir/build/BUILD/blender-2.78a/extern/gflags/src -Wall -Wno-invalid-offsetof -Wno-sign-compare -Wlogical-op -Winit-self -Wmissing-include-dirs -Wno-div-by-zero -Wtype-limits -Wno-char-subscripts -Wno-unknown-pragmas -Wpointer-arith -Wformat-signedness -Wuninitialized -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mcpu=power8 -mtune=power8 -fPIC -funsigned-char -fno-strict-aliasing -std=c++11 -fopenmp -std=c++11 -pipe -fPIC -funsigned-char -fno-strict-aliasing -O2 -DNDEBUG -o CMakeFiles/extern_glog.dir/src/utilities.cc.o -c /builddir/build/BUILD/blender-2.78a/extern/glog/src/utilities.cc
In file included from /builddir/build/BUILD/blender-2.78a/extern/glog/src/utilities.cc:351:0:
/builddir/build/BUILD/blender-2.78a/extern/glog/src/stacktrace_powerpc-inl.h:121:2: error: #error Need to specify the PPC ABI for your archiecture.
#error Need to specify the PPC ABI for your archiecture.
^~~~~
Surprisingly, __linux is not defined on powerpc:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=28314
In extern/glog/src/stacktrace_powerpc-inl.h, __linux must be changed to __linux__ .
For the issue A, currently I don't know proper fix for this.
Regards,
Mamoru TASAKA <mtasaka at fedoraproject.org>
More information about the Bf-committers
mailing list