[petsc-dev] PETSc.pc: missing rpath ?

Jed Brown jed at jedbrown.org
Tue Jan 2 08:02:17 CST 2018


Some people don't want RPATH.  It was discussed here.

https://mid.mail-archive.com/CAEymZafiQtwKDxh0myQ1LD_uByGKv5JyQ9PGzK3ZTmFPcOR=Kw@mail.gmail.com

The RPATH flag is stored in a variable ldflag_rpath in PETSc.pc so you
can add it to PETSc paths, as done in this sample makefile.

PETSc.pc := $(PETSC_DIR)/$(PETSC_ARCH)/lib/pkgconfig/PETSc.pc

CC := $(shell pkg-config --variable=ccompiler $(PETSc.pc))
CXX := $(shell pkg-config --variable=cxxcompiler $(PETSc.pc))
FC := $(shell pkg-config --variable=fcompiler $(PETSc.pc))
CFLAGS := $(shell pkg-config --variable=cflags_extra $(PETSc.pc)) $(shell pkg-config --cflags-only-other $(PETSc.pc))
FFLAGS := $(shell pkg-config --variable=fflags_extra $(PETSc.pc))
CPPFLAGS := $(shell pkg-config --cflags-only-I $(PETSc.pc))
LDFLAGS := $(shell pkg-config --libs-only-L --libs-only-other $(PETSc.pc))
LDFLAGS += $(patsubst -L%, $(shell pkg-config --variable=ldflag_rpath $(PETSc.pc))%, $(shell pkg-config --libs-only-L $(PETSc.pc)))
LDLIBS := $(shell pkg-config --libs-only-l $(PETSc.pc)) -lm

print:
	@echo CC=$(CC)
	@echo CFLAGS=$(CFLAGS)
	@echo CPPFLAGS=$(CPPFLAGS)
	@echo LDFLAGS=$(LDFLAGS)
	@echo LDLIBS=$(LDLIBS)

Franck Houssen <franck.houssen at inria.fr> writes:

> I believe -rpath is missing in PETSc.pc: is this intented ? Or forgotten ? If so, can someone add this to the PETSc.pc and push that in master/maint ? 
> As PETSc is a lib to be used from user-defined applications, rpath is really critical !.. 
>
> Franck 
>
>>> grep "Libs:" petsc/local/lib/pkgconfig/PETSc.pc slepc/local/lib/pkgconfig/SLEPc.pc 
> petsc/local/lib/pkgconfig/PETSc.pc:16:Libs: -L${libdir} -lpetsc 
> slepc/local/lib/pkgconfig/SLEPc.pc:11:Libs: -Wl,-rpath,${libdir} -L${libdir} -lslepc 


More information about the petsc-dev mailing list