You can run 'pkg-config --static --libs 
PETSC_DIR/PETSC_ARCH/lib/pkgconfig/petsc.pc' to verify if pkg-config is able to 
obtain 'Libs.private' values.

And then you would need help from someone who can debug cmake - on why 
PETSC_STATIC set by cmake does not reflect this value [as it should - per the 
FindPkgConfig doc]

[sorry - I don't understand cmake - or how one would debug cmake issues]

Satish

On Tue, 22 Feb 2022, Palmer, Bruce J via petsc-users wrote:

> The static versions of the variables exist (PETSC_STATIC), but they appear to 
> have the same values as the non-static variables.
> 
> As I mentioned, I'm a complete novice at pkgconfig, but it looks like if you 
> could add the contents of Libs.private to the link line, you'd be in 
> business. Any idea how to access this information from CMake?
> 
> Bruce
> 
> On 2/22/22, 10:22 AM, "Satish Balay" <ba...@mcs.anl.gov> wrote:
> 
>     
> https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcmake.org%2Fcmake%2Fhelp%2Flatest%2Fmodule%2FFindPkgConfig.html&amp;data=04%7C01%7CBruce.Palmer%40pnnl.gov%7Ca582313d16214bb7771708d9f63037c4%7Cd6faa5f90ae240338c0130048a38deeb%7C0%7C0%7C637811509227495697%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=xE81D5%2FNF5PR3KSc48FD9CQSkQ%2F%2BdLqe8wKNjvW7xOM%3D&amp;reserved=0
> 
>     >>>
>     Two sets of values exist: One for the common case (<XXX> = <prefix>) and 
> another for the information pkg-config provides when called with the --static 
> option (<XXX> = <prefix>_STATIC).
>     <<<
> 
>     So perhaps CMAKE is already setting the _STATIC variant of (for PETSC_LIB 
> or equivalent) variable that's currently used)?
> 
>     Satish
> 
>     On Tue, 22 Feb 2022, Palmer, Bruce J via petsc-users wrote:
> 
>     > The contents of the petsc.pc file are listed below. It looks good to 
> me. The Libs.private variable seems to include the -lf2clapack and -lf2cblas 
> libraries. I don't know how this info gets propagated up the build chain.
>     > 
>     > Bruce
>     > 
>     > 
> prefix=/pic/projects/gridpack/software/petsc-3.16.3/linux-openmpi-gnu-cxx-complex-opt
>     > exec_prefix=${prefix}
>     > includedir=${prefix}/include
>     > libdir=${prefix}/lib
>     > ccompiler=mpicc
>     > cflags_extra=-fPIC -Wall -Wwrite-strings -Wno-strict-aliasing 
> -Wno-unknown-pragmas -fstack-protector -fvisibility=hidden -g -O
>     > cflags_dep=-MMD -MP
>     > ldflag_rpath=-Wl,-rpath,
>     > cxxcompiler=mpicxx
>     > cxxflags_extra=-Wall -Wwrite-strings -Wno-strict-aliasing 
> -Wno-unknown-pragmas -fstack-protector -fvisibility=hidden -g -O  -std=gnu++11
>     > fcompiler=mpif90
>     > fflags_extra=-Wall -ffree-line-length-0 -Wno-unused-dummy-argument -g -O
>     > 
>     > Name: PETSc
>     > Description: Library to solve ODEs and algebraic equations
>     > Version: 3.16.3
>     > Cflags:   -I${includedir} 
> -I/pic/projects/gridpack/software/petsc-3.16.3/include
>     > Libs: -L${libdir} -lpetsc
>     > Libs.private: 
> -L/pic/projects/gridpack/software/petsc-3.16.3/linux-openmpi-gnu-cxx-complex-opt/lib
>  -L/share/apps/openmpi/3.0.1/gcc/6.1.0/lib 
> -L/qfs/projects/ops/rh6/gcc/6.1.0/lib/gcc/x86_64-pc-linux-gnu/6.1.0 
> -L/qfs/projects/ops/rh6/gcc/6.1.0/lib/gcc 
> -L/qfs/projects/ops/rh6/gcc/6.1.0/lib64 -L/qfs/projects/ops/rh6/gcc/6.1.0/lib 
> -lspqr -lumfpack -lklu -lcholmod -lbtf -lccolamd -lcolamd -lcamd -lamd 
> -lsuitesparseconfig -lrt -lsuperlu -lsuperlu_dist -lf2clapack -lf2cblas 
> -lparmetis -lmetis -lm -lstdc++ -ldl -lmpi_usempif08 -lmpi_usempi_ignore_tkr 
> -lmpi_mpifh -lmpi -lgfortran -lm -lgfortran -lm -lgcc_s -lquadmath -lpthread 
> -lquadmath -lstdc++ -ldl
>     > 
>     > On 2/22/22, 8:39 AM, "Satish Balay" <ba...@mcs.anl.gov> wrote:
>     > 
>     >     The relevant pkg-config commands are:
>     > 
>     >     balay@sb /home/balay/petsc (release=)
>     >     $ pkg-config --libs arch-linux-c-debug/lib/pkgconfig/petsc.pc 
>     >     -L/home/balay/petsc/arch-linux-c-debug/lib -lpetsc 
>     >     balay@sb /home/balay/petsc (release=)
>     >     $ pkg-config --shared --libs 
> arch-linux-c-debug/lib/pkgconfig/petsc.pc 
>     >     -L/home/balay/petsc/arch-linux-c-debug/lib -lpetsc 
>     >     balay@sb /home/balay/petsc (release=)
>     >     $ pkg-config --static --libs 
> arch-linux-c-debug/lib/pkgconfig/petsc.pc 
>     >     -L/home/balay/petsc/arch-linux-c-debug/lib -lpetsc 
> -L/home/balay/soft/mpich-3.4.2/lib -L/usr/lib/gcc/x86_64-redhat-linux/11 
> -llapack -lblas -lm -lX11 -lstdc++ -ldl -lmpifort -lmpi -lgfortran -lm 
> -lgfortran -lm -lgcc_s -lquadmath -lstdc++ -ldl 
>     > 
>     > 
>     >     And more example usages in share/petsc/Makefile.user
>     > 
>     >     Satish
>     > 
>     > 
>     >     On Tue, 22 Feb 2022, Barry Smith wrote:
>     > 
>     >     >  Bruce,
>     >     > 
>     >     >   Can you please send the PkgConfig calls that you make to get 
> the PETSc values? And then exactly what PETSc PkgConfig returns.
>     >     > 
>     >     > Thanks
>     >     > 
>     >     >    Barry
>     >     > 
>     >     > 
>     >     > > On Feb 22, 2022, at 11:03 AM, Palmer, Bruce J via petsc-users 
> <petsc-users@mcs.anl.gov> wrote:
>     >     > > 
>     >     > > Hi,
>     >     > >  
>     >     > > We recently switched the CMake configuration on our GridPACK 
> application to use the PkgConfig utility instead of Jeb Brown’s 
> FindPETSc.cmake module. This seems to work on a number of platforms but it is 
> failing to link on others. It appears that the build cannot find the LAPACK 
> and BLAS libraries. The PETSc library I’m linking to (v3.16.3) was configured 
> with -download-f2cblaslapack so it should have these libraries, but when I 
> try and link one of the test applications in GridPACK I get the errors
>     >     > >  
>     >     > > /share/apps/gcc/6.1.0/bin/g++ -pthread -g -rdynamic 
> CMakeFiles/greetings.dir/test/greetings.cpp.o -o greetings  
> -Wl,-rpath,/qfs/projects/ops/rh6/openmpi/3.0.1/gcc/6.1.0/lib 
> ../math/libgridpack_math.a libgridpack_parallel.a 
> ../timer/libgridpack_timer.a ../environment/libgridpack_environment.a 
> ../math/libgridpack_math.a 
> /pic/projects/gridpack/software/boost_1_65_0/lib/libboost_mpi.a 
> /pic/projects/gridpack/software/boost_1_65_0/lib/libboost_serialization.a 
> /pic/projects/gridpack/software/boost_1_65_0/lib/libboost_random.a 
> /pic/projects/gridpack/software/boost_1_65_0/lib/libboost_filesystem.a 
> /pic/projects/gridpack/software/boost_1_65_0/lib/libboost_system.a 
> /pic/projects/gridpack/software/ga-5.7/build_pr/lib/libga++.a 
> /pic/projects/gridpack/software/ga-5.7/build_pr/lib/libga.a 
> /pic/projects/gridpack/software/ga-5.7/build_pr/lib/libarmci.a -lrt 
> /usr/lib64/librt.so /usr/lib64/libdl.so 
> /qfs/projects/ops/rh6/openmpi/3.0.1/gcc/6.1.0/lib/libmpi.so 
> ../timer/libgridpack_
 timer.a 
 libgri
>      dpack_
>     >      parallel.a ../configuration/libgridpack_configuration.a 
> /pic/projects/gridpack/software/petsc-3.16.3/linux-openmpi-gnu-cxx-complex-opt/lib/libpetsc.a
>  
>     >     > > 
> /pic/projects/gridpack/software/petsc-3.16.3/linux-openmpi-gnu-cxx-complex-opt/lib/libpetsc.a(zstart.o):
>  In function `petscinitializef_':
>     >     > > 
> /pic/projects/gridpack/software/petsc-3.16.3/src/sys/objects/ftn-custom/zstart.c:280:
>  undefined reference to `mpi_init_'
>     >     > > 
> /pic/projects/gridpack/software/petsc-3.16.3/linux-openmpi-gnu-cxx-complex-opt/lib/libpetsc.a(baijfact.o):
>  In function `MatSolve_SeqBAIJ_N':
>     >     > > 
> /pic/projects/gridpack/software/petsc-3.16.3/src/mat/impls/baij/seq/baijfact.c:1462:
>  undefined reference to `zgemv_'
>     >     > > 
> /pic/projects/gridpack/software/petsc-3.16.3/src/mat/impls/baij/seq/baijfact.c:1475:
>  undefined reference to `zgemv_'
>     >     > > 
> /pic/projects/gridpack/software/petsc-3.16.3/src/mat/impls/baij/seq/baijfact.c:1478:
>  undefined reference to `zgemv_'
>     >     > > 
> /pic/projects/gridpack/software/petsc-3.16.3/linux-openmpi-gnu-cxx-complex-opt/lib/libpetsc.a(baijfact.o):
>  In function `MatSolve_SeqBAIJ_N_NaturalOrdering':
>     >     > > 
> /pic/projects/gridpack/software/petsc-3.16.3/src/mat/impls/baij/seq/baijfact.c:1407:
>  undefined reference to `zgemv_'
>     >     > > 
> /pic/projects/gridpack/software/petsc-3.16.3/src/mat/impls/baij/seq/baijfact.c:1420:
>  undefined reference to `zgemv_'
>     >     > > 
> /pic/projects/gridpack/software/petsc-3.16.3/linux-openmpi-gnu-cxx-complex-opt/lib/libpetsc.a(baijfact.o):/pic/projects/gridpack/software/petsc-3.16.3/sr
>     >     > >  
>     >     > > I suspect that the reason it worked for others and not for me 
> is that they had viable blas and lapack libraries in their path and I don’t. 
> Is there anything special you need to do to make sure that the build is 
> pointed at the libraries that get created with the -download-f2cblaslapack 
> option?
>     >     > >  
>     >     > > Bruce Palmer
>     >     > 
>     >     > 
>     > 
>     > 
> 
> 

Reply via email to