<div dir="ltr"><div>Hi Giovanni,<br><br></div><div>It seems there's still some compatibility issues with upstream and the Intel compiler.  Really it's sloppy logic in how the C headers and their linkage are specified.  I've addressed this in a fork on github: <a href="https://github.com/chuckatkins/qhull.git">https://github.com/chuckatkins/qhull.git</a> .  Basically I've made the headers responsible for defining their C linkage instead of forcing the consuming C++ code to know about it.  I've got a pull request to merge it upstream but until then you can try it from my fork.  I tested it on Moonlight and was able to build with the latest GNU, Intel and PGI compilers.<br><br><br></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr">- Chuck<br></div></div></div>
<br><div class="gmail_quote">On Wed, Jan 20, 2016 at 9:34 AM, Ben Boeckel <span dir="ltr"><<a href="mailto:ben.boeckel@kitware.com" target="_blank">ben.boeckel@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Tue, Jan 19, 2016 at 19:05:38 -0700, Giovanni A. Cone wrote:<br>
>     I'm attempting to get PV 4.4.0 builds of Paraview<br>
> against Intel 14 and 15 on our HPC systems.  One item that<br>
> some users have asked us for was the Cosmotools integration.<br>
> This ultimately needs the Qhull library to be built.  Builds<br>
> against GCC 4.8.2 went through without a hitch.  However the<br>
> Intel builds all failed with an odd cryptic syntax error<br>
> message that I do not fully comprehend (sorry I'm still<br>
> stuck in Fortranistan).<br>
><br>
> Building CXX object<br>
</span>           ^^^<br>
<br>
See below.<br>
<span class=""><br>
> CMakeFiles/qhullcpp.dir/src/libqhullcpp/Coordinates.cpp.o<br>
> In file included from<br>
> /tmp/conega/BUILD/lightshow/paraview-4.4.0-osmesa/intel-15_openmpi-1.6.5/BUILD01/qhull/src/qhull/src/libqhull/poly2.c(16):<br>
> /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):<br>
> warning #77: this declaration has no storage class or type<br>
> specifier<br>
>    template <typename T><br>
>    ^<br>
><br>
> In file included from<br>
> /tmp/conega/BUILD/lightshow/paraview-4.4.0-osmesa/intel-15_openmpi-1.6.5/BUILD01/qhull/src/qhull/src/libqhull/poly2.c(16):<br>
> /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):<br>
> error: expected a ";"<br>
>    template <typename T><br>
>             ^<br>
>  From what little I understand of C and C++, I believe that<br>
> "templates" are a C++ construct.  I'm thinking the Intel<br>
> compiler is attempting to digest the above as "straight-up<br>
> C" and failing.<br>
<br>
</span>Marked above, it is compiling as C++, but it appears that it is trying<br>
to parse template as an identifier rather than a keyword. My guess is<br>
that it is something like:<br>
<br>
    struct foo {<br>
        int member;<br>
    } // no semicolon<br>
    template ...<br>
<br>
which parses into a function returning a foo struct (declared there as<br>
well) named 'template'.<br>
<span class=""><br>
> The error messages put the blame on<br>
> QHULL_SRC_ROOT/src/libqhull/qhull_a.h  around line 105<br>
><br>
> I then decided to snoop on <a href="http://github.com" rel="noreferrer" target="_blank">github.com</a> for another qhull<br>
> repo.  I found one<br>
> at<br>
><br>
> <a href="https://github.com/qhull/qhull" rel="noreferrer" target="_blank">https://github.com/qhull/qhull</a><br>
><br>
>  From which I believe the "<a href="https://github.com/mathstuf/qhull" rel="noreferrer" target="_blank">https://github.com/mathstuf/qhull</a><br>
> next branch" repo that Paraview wants to use was forked from.<br>
<br>
</span>Not originally, but it is now that qhull has moved from sourceforge to<br>
github (it was originally forked from George Zegaris' clone which he<br>
mirrored from sourceforge to github, but I recently re-forked the proper<br>
repo).<br>
<span class=""><br>
> Point being that the mainline non-forked Qhull has something<br>
> different in the preprocessor conditional surrounding the<br>
> above offensive line of source:<br>
><br>
> #if defined(__cplusplus) && defined(__INTEL_COMPILER) &&<br>
> !defined(QHULL_OS_WIN)<br>
><br>
> while the mathstuf/qhull repo DOES NOT have the above<br>
> "defined(__cplusplus)" preproc conditional.<br>
<br>
</span>My 'next' branch is based off an old release, so differences to upstream<br>
are not surprising.<br>
<span class=""><br>
> I tested to see if the addition would at least allow the<br>
> 'mathstuf/qhull next branch' source to properly build with<br>
> Intel 14 and 15.  It got about to 36% and then failed with<br>
> the error message:<br>
<br>
</span>All my branch does is fix an Xcode compilation errors where std::<br>
iterator tags are forward declared improperly.<br>
<span class=""><br>
> In file included from<br>
> /tmp/conega/qhull_SRC/src/libqhullcpp/QhullIterator.h(13),<br>
> from /tmp/conega/qhull_SRC/src/libqhullcpp/Coordinates.h(13),<br>
> from /tmp/conega/qhull_SRC/src/libqhullcpp/Coordinates.cpp(11):<br>
> /tmp/conega/qhull_SRC/src/libqhull/qhull_a.h(106): error:<br>
> this declaration may not have extern "C" linkage<br>
>    template <typename T><br>
>    ^<br>
<br>
</span>It appears that something is doing<br>
<br>
    extern "C" {<br>
    #include "qhull.h"<br>
    }<br>
<br>
which won't work since qhull is a C++ header. Are there any 'extern "C"'<br>
bits around? Passing -E (or whatever Intel's equivalent is) to dump the<br>
preprocessed source would help to see. The __cplusplus check may be<br>
guarding against that line in upstream.<br>
<span class=""><br>
> So at least the conditional helped a bit for what I believe<br>
> is the "straight up C" part of the build.<br>
><br>
><br>
> I'll CC the author of the fork Ben Boeckel about this.<br>
<br>
</span>That's me too :) . Seems I forgot to change the author setting for that<br>
clone :/ . Rewrote the commit with the proper email.<br>
<span class="HOEnZb"><font color="#888888"><br>
--Ben<br>
</font></span><div class="HOEnZb"><div class="h5">_______________________________________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the ParaView Wiki at: <a href="http://paraview.org/Wiki/ParaView" rel="noreferrer" target="_blank">http://paraview.org/Wiki/ParaView</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=ParaView" rel="noreferrer" target="_blank">http://markmail.org/search/?q=ParaView</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/paraview" rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/paraview</a><br>
</div></div></blockquote></div><br></div>