https://cmake.org/cmake/help/latest/module/FindPkgConfig.html

>>>
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