<div dir="ltr"><div>Ben, Giovanni,<br>My changes to qhull to fix the Intel compiler were merged upstream so we don't need to use private forks anymore.  I'll change the superbuild repo to point to upstream.  In the meantime, you can use the current upstream master at <a href="https://github.com/qhull/qhull.git">https://github.com/qhull/qhull.git</a> .  I tested it the build with GCC, Intel, and PGI.<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>