[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190319231236.GF7431@mini-arch.hsd1.ca.comcast.net>
Date: Tue, 19 Mar 2019 16:12:36 -0700
From: Stanislav Fomichev <sdf@...ichev.me>
To: Luca Boccassi <bluca@...ian.org>
Cc: netdev@...r.kernel.org
Subject: Re: [PATCH bpf-next] tools/bpf: generate pkg-config file for libbpf
On 03/19, Luca Boccassi wrote:
> On Tue, 2019-03-19 at 14:23 -0700, Stanislav Fomichev wrote:
> > On 03/19, Luca Boccassi wrote:
> > > Generate a libbpf.pc file at build time so that users can rely
> > > on pkg-config to find the library, its CFLAGS and LDFLAGS.
> > >
> > > Signed-off-by: Luca Boccassi <bluca@...ian.org>
> > > ---
> > > tools/lib/bpf/.gitignore | 1 +
> > > tools/lib/bpf/Makefile | 18 +++++++++++++++---
> > > tools/lib/bpf/libbpf.pc.template | 11 +++++++++++
> > > 3 files changed, 27 insertions(+), 3 deletions(-)
> > > create mode 100644 tools/lib/bpf/libbpf.pc.template
> > >
> > > diff --git a/tools/lib/bpf/.gitignore b/tools/lib/bpf/.gitignore
> > > index 4db74758c674..7d9e182a1f51 100644
> > > --- a/tools/lib/bpf/.gitignore
> > > +++ b/tools/lib/bpf/.gitignore
> > > @@ -1,3 +1,4 @@
> > > libbpf_version.h
> > > +libbpf.pc
> > > FEATURE-DUMP.libbpf
> > > test_libbpf
> > > diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile
> > > index a05c43468bd0..542c64e2a6d9 100644
> > > --- a/tools/lib/bpf/Makefile
> > > +++ b/tools/lib/bpf/Makefile
> > > @@ -80,6 +80,7 @@ libdir_SQ = $(subst ','\'',$(libdir))
> > > libdir_relative_SQ = $(subst ','\'',$(libdir_relative))
> > >
> > > LIB_FILE = libbpf.a libbpf.so
> > > +PC_FILE = libbpf.pc
> > >
> > > VERSION = $(BPF_VERSION)
> > > PATCHLEVEL = $(BPF_PATCHLEVEL)
> > > @@ -137,7 +138,7 @@ GLOBAL_SYM_COUNT = $(shell readelf -s --wide
> > > $(BPF_IN) | \
> > > VERSIONED_SYM_COUNT = $(shell readelf -s --wide $(OUTPUT)libbpf.so
> > > | \
> > > grep -Eo '[^ ]+@...BPF_' | cut -d@
> > > -f1 | sort -u | wc -l)
> > >
> > > -CMD_TARGETS = $(LIB_FILE)
> > > +CMD_TARGETS = $(LIB_FILE) $(PC_FILE)
> > >
> > > CXX_TEST_TARGET = $(OUTPUT)test_libbpf
> > >
> > > @@ -179,6 +180,12 @@ $(OUTPUT)libbpf.a: $(BPF_IN)
> > > $(OUTPUT)test_libbpf: test_libbpf.cpp $(OUTPUT)libbpf.a
> > > $(QUIET_LINK)$(CXX) $(INCLUDES) $^ -lelf -o $@
> > >
> > > +$(OUTPUT)libbpf.pc:
> > > + $(QUIET_LINK)sed -e "s|@...FIX@|$(prefix)|" \
> >
> > Maybe QUIET_GEN instead? Or QUIET_INSTALL
> > (tools/lib/traceevent/Makefile)?
>
> Changed to QUIET_GEN in v2.
>
> > > + -e "s|@...DIR@|$(libdir_SQ)|" \
> > > + -e "s|@...SION@|$(shell make --no-print-directory
> > > -sC ../../.. kernelversion)|" \
> >
> > Make it its own variable, like we do in bpftool?
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tr
> > ee/tools/bpf/bpftool/Makefile#n26
>
> Done in v2.
>
> > Also, I wonder what would happen in the case of out-of-tree libbpf:
> > https://github.com/libbpf/libbpf
> >
> > Should there be some fallback?
>
> That tree looks like it's autosynced from the kernel tree, isn't it?
> Then it will just pick up the change and start generating the pc file
> as well, won't it?
Yes, it's autosynched, but it autosyncs only tools/lib/bpf directory
and it lacks top-level makefile with kernelversion target. I guess in
this case make will spill out an error to stderr and version will be empty.
>
> --
> Kind regards,
> Luca Boccassi
Powered by blists - more mailing lists