You could try skipping this test [and assume --with-hypre-include and
--with-hypre-lib options are correct] - and see if this works.
diff --git a/config/BuildSystem/config/packages/hypre.py
b/config/BuildSystem/config/packages/hypre.py
index 5bc88322aa2..2d6c7932e17 100644
--- a/config/BuildSystem/config/packages/hypre.py
+++ b/config/BuildSystem/config/packages/hypre.py
@@ -11,7 +11,7 @@ class Configure(config.package.GNUPackage):
self.requiresversion = 1
self.gitcommit = 'v'+self.version
self.download =
['git://https://github.com/hypre-space/hypre','https://github.com/hypre-space/hypre/archive/'+self.gitcommit+'.tar.gz']
- self.functions = ['HYPRE_IJMatrixCreate']
+ self.functions = []
self.includes = ['HYPRE.h']
self.liblist = [['libHYPRE.a']]
self.buildLanguages = ['C','Cxx']
Satish
On Wed, 19 Jul 2023, Barry Smith wrote:
>
> You don't indicate what type of libraries you built hypre with; static or
> shared. My guess is you ended up with shared
>
> I think the answer to your difficulty is hidden in __cdecl (Satish will
> know much better than me). When you are looking for symbols in Windows shared
> libraries you have to prepend something to the function prototype to have it
> successfully found. For example the PETSc include files have these things
> __declspec(dllimport) The configure test fails because it does not provide
> the needed prototype. Likely you built PTScotch with static libraries so no
> problem.
>
> The simplest fix would be to build static hypre libraries. I think it is a
> major project to get PETSc configure and macro system to work properly with
> external packages that are in Windows shared libraries since more use of
> __declspec would be needed.
>
> Barry
>
> The PETSc installation instructions should probably say something about
> external packages with Windows shared libraries.
>
>
>
>
>
>
>
> > On Jul 19, 2023, at 10:52 AM, Daniel Stone <[email protected]>
> > wrote:
> >
> > Hello,
> >
> > I'm working on getting a petsc build running on windows. One necessary
> > package to include is Hypre. I've been able to build Hypre seperately using
> > cmake, and confirmed that the library works
> > by setting up a VS project to run some of the example programs.
> >
> > My attempted petsc build is being done through cygwin. I've been able to
> > (with varying degrees of difficulty), build a fairly plain petsc, and one
> > that downloads and builds ptscotch (after some modifications
> > to both ptscotch and the config script). I am now attempting to include
> > Hypre (using the --hypre-iclude and --hypre-lib flags, etc). Note that the
> > same compilers are being used for both Hypre and for petsc
> > through cygwin - the new intel oneapi compilers (icx and ifx, after again
> > varying amounts of pain to work around their awkwardness with the config
> > script).
> >
> > I'm seeing a problem when the config script does some tests on the included
> > hypre lib. The source code looks like:
> >
> > #include "confdefs.h"
> > #include "conffix.h"
> > /* Override any gcc2 internal prototype to avoid an error. */
> >
> > #include "HYPRE.h"
> >
> > char HYPRE_IJMatrixCreate();
> > static void _check_HYPRE_IJMatrixCreate() { HYPRE_IJMatrixCreate(); }
> >
> > int main() {
> > _check_HYPRE_IJMatrixCreate();;
> > return 0;
> > }
> >
> >
> > As I understand this is a fairly standard type of stub program used by the
> > config script to check that it is able to link to certain symbols in given
> > libraries. Tests like this have succeeded in my builds that
> > include PTScotch.
> >
> > I keep getting a linker error with the above test, including if I seperate
> > it out and try to build it seperately:
> >
> > unresolved external symbol "char __cdel HYPRE_IJMatrixCreate(void)" ....
> >
> > Ok, it looks like a problem with either the library or linker commands. But
> > here's the interesting thing - If I transplant this code into VS, with the
> > same project setting that allows it to build the much more
> > nontrivial Hypre example programs, I get the same error:
> >
> > Error LNK2001 unresolved external symbol "char __cdecl
> > HYPRE_IJMatrixCreate(void)" (?HYPRE_IJMatrixCreate@@YADXZ) hypretry1
> > C:\Users\DanielOGS\source\repos\hypretry1\hypretry1\Source.obj 1
> >
> > So it seems like there might be something about this type of stub program
> > that is not working with my Hypre library. I don't fully understand this
> > program - it's able to call the function with no arguments, but
> > it also needs to be linked against a library containing the function,
> > apparently by wrapping it in a static void function? Not something I've
> > seen before.
> >
> > Does anyone have any insight into what might be going wrong - or really
> > just any explaination of how the stub program works so I can figure out why
> > it isn't in this case?
> >
> > Many thanks,
> >
> > Daniel
>
>