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" <[email protected]> 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
> <[email protected]> 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
> >
> >
>
>