[Paraview] Troubles building mathstuf/qhull subproject using PV 4.4.0 superbuild with Intel >14.x compilers

Giovanni A. Cone conega at lanl.gov
Tue Jan 19 21:05:38 EST 2016


Hola Gang,

    I'm attempting to get PV 4.4.0 builds of Paraview 
against Intel 14 and 15 on our HPC systems.  One item that 
some users have asked us for was the Cosmotools integration. 
This ultimately needs the Qhull library to be built.  Builds 
against GCC 4.8.2 went through without a hitch.  However the 
Intel builds all failed with an odd cryptic syntax error 
message that I do not fully comprehend (sorry I'm still 
stuck in Fortranistan).

Building CXX object 
CMakeFiles/qhullcpp.dir/src/libqhullcpp/Coordinates.cpp.o
In file included from 
/tmp/conega/BUILD/lightshow/paraview-4.4.0-osmesa/intel-15_openmpi-1.6.5/BUILD01/qhull/src/qhull/src/libqhull/poly2.c(16):
/tmp/conega/BUILD/lightshow/paraview-4.4.0-osmesa/intel-15_openmpi-1.6.5/BUILD01/qhull/src/qhull/src/libqhull/qhull_a.h(106): 
warning #77: this declaration has no storage class or type 
specifier
   template <typename T>
   ^

In file included from 
/tmp/conega/BUILD/lightshow/paraview-4.4.0-osmesa/intel-15_openmpi-1.6.5/BUILD01/qhull/src/qhull/src/libqhull/poly2.c(16):
/tmp/conega/BUILD/lightshow/paraview-4.4.0-osmesa/intel-15_openmpi-1.6.5/BUILD01/qhull/src/qhull/src/libqhull/qhull_a.h(106): 
error: expected a ";"
   template <typename T>
            ^
 From what little I understand of C and C++, I believe that 
"templates" are a C++ construct.  I'm thinking the Intel 
compiler is attempting to digest the above as "straight-up 
C" and failing.

The error messages put the blame on 
QHULL_SRC_ROOT/src/libqhull/qhull_a.h  around line 105

I then decided to snoop on github.com for another qhull 
repo.  I found one
at

https://github.com/qhull/qhull

 From which I believe the "https://github.com/mathstuf/qhull 
next branch" repo that Paraview wants to use was forked from.

Point being that the mainline non-forked Qhull has something 
different in the preprocessor conditional surrounding the 
above offensive line of source:

#if defined(__cplusplus) && defined(__INTEL_COMPILER) && 
!defined(QHULL_OS_WIN)

while the mathstuf/qhull repo DOES NOT have the above 
"defined(__cplusplus)" preproc conditional.

I tested to see if the addition would at least allow the 
'mathstuf/qhull next branch' source to properly build with 
Intel 14 and 15.  It got about to 36% and then failed with 
the error message:

In file included from 
/tmp/conega/qhull_SRC/src/libqhullcpp/QhullIterator.h(13),
from /tmp/conega/qhull_SRC/src/libqhullcpp/Coordinates.h(13),
from /tmp/conega/qhull_SRC/src/libqhullcpp/Coordinates.cpp(11):
/tmp/conega/qhull_SRC/src/libqhull/qhull_a.h(106): error: 
this declaration may not have extern "C" linkage
   template <typename T>
   ^

So at least the conditional helped a bit for what I believe 
is the "straight up C" part of the build.


I'll CC the author of the fork Ben Boeckel about this.
-- 
!   Giovanni "Vann" Cone
!   LANL HPC-3 Consultant
!   TA-3, BLDG 2327, RM 1128
!   Schedule B
!...............................
!   I fight for the users!
END OF LINE


More information about the ParaView mailing list