[ITK-dev] ITK 4.8, castxml, and 32-bits Debian/gcc

Steve M. Robbins steve at sumost.ca
Sun Sep 20 23:03:20 EDT 2015


Hi,

Just began looking at a build failure for Debian 32-bits that shows up when wrapping is enabled [1].   The failure shows in the build log as:

[ 13%] Building C object Modules/ThirdParty/OpenJPEG/src/openjpeg/CMakeFiles/itkopenjpeg.dir/raw.c.o
cd /home/steve/Packages/insighttoolkit/build-area/insighttoolkit4-4.8.0/BUILD/Modules/ThirdParty/OpenJPEG/src/openjpeg && /usr/bin/cc  -Ditkopenjpeg_EXPORTS -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2   -Wno-uninitialized -Wno-unused-parameter -Wall -Wcast-align -Wdisabled-optimization -Wextra -Wformat=2 -Winvalid-pch -Wno-format-nonliteral -Wpointer-arith -Wshadow -Wunused -Wwrite-strings -funit-at-a-time -Wno-strict-overflow  -w -fPIC -I/usr/include/gdcm-2.4 -I/home/steve/Packages/insighttoolkit/build-area/insighttoolkit4-4.8.0/BUILD/Modules/ThirdParty/OpenJPEG/src/openjpeg -I/home/steve/Packages/insighttoolkit/build-area/insighttoolkit4-4.8.0/Modules/ThirdParty/OpenJPEG/src/openjpeg    -o CMakeFiles/itkopenjpeg.dir/raw.c.o   -c /home/steve/Packages/insighttoolkit/build-area/insighttoolkit4-4.8.0/Modules/ThirdParty/OpenJPEG/src/openjpeg/raw.c
In file included from /home/steve/Packages/insighttoolkit/build-area/insighttoolkit4-4.8.0/BUILD/Wrapping/Modules/ITKCommon/vcl_complex.cxx:5:
In file included from /home/steve/Packages/insighttoolkit/build-area/insighttoolkit4-4.8.0/Modules/Core/Common/include/itkContinuousIndex.h:22:
In file included from /home/steve/Packages/insighttoolkit/build-area/insighttoolkit4-4.8.0/Modules/Core/Common/include/itkIndex.h:23:
In file included from /home/steve/Packages/insighttoolkit/build-area/insighttoolkit4-4.8.0/Modules/Core/Common/include/itkMath.h:32:
In file included from /home/steve/Packages/insighttoolkit/build-area/insighttoolkit4-4.8.0/Modules/Core/Common/include/itkMathDetail.h:43:
/usr/share/castxml/clang/include/emmintrin.h:28:2: error: "SSE2 instruction set not enabled"
#error "SSE2 instruction set not enabled"
 ^


The lines in emmintrin.h tests CPP symbol __SSE2__, which is not defined for 32-bit compiler in Debian.   Interestingly, the content of itkMathDetail.h near line 43 is:

    42  #if defined( ITK_HAVE_EMMINTRIN_H ) && !defined( __GCCXML__ )
    43  #include <emmintrin.h> // sse 2 intrinsics
    44  #endif /* ITK_HAVE_EMMINTRIN_H && ! __GCCXML__ */

First observation: prior to ITK 4.8, we used gccxml which defines __GCCXML__ and thus avoids including emmintrin.h.  Now we are using castxml, which does not define this symbol.  For compatibility, maybe it should?  Brad?


Secondly, I am slightly surprised that ITK should even need to guard against including things when __GCCXML __ is defined.   I had naively assumed that gccxml should be seeing the same code as the regular parser.  Is this a work-around for some gccxml issues of the past or is it still needed?


Thirdly, the emmintrin.h file that castxml uses presumably comes from clang and clearly depends on the symbol __SSE2__ being defined.  However, the emmintrin.h shipped with GCC does not; does this represent an incompatibility between castxml and gcc?

steve at riemann{insighttoolkit4-4.8.0}g++ -E /usr/lib/gcc/i586-linux-gnu/5/include/emmintrin.h  >/dev/null
steve at riemann{insighttoolkit4-4.8.0}g++ -E /usr/share/castxml/clang/include/emmintrin.h >/dev/null
/usr/share/castxml/clang/include/emmintrin.h:28:2: error: #error "SSE2 instruction set not enabled"
 #error "SSE2 instruction set not enabled"
  ^
steve at riemann{insighttoolkit4-4.8.0}

Thanks,
-Steve

[1] https://buildd.debian.org/status/fetch.php?pkg=insighttoolkit4&arch=i386&ver=4.8.0-1&stamp=1440593857

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 811 bytes
Desc: This is a digitally signed message part.
URL: <http://public.kitware.com/pipermail/insight-developers/attachments/20150920/78bfdaa3/attachment.sig>


More information about the Insight-developers mailing list