From: luca.boccassi@gmail.com
To: netdev@vger.kernel.org
Cc: alexei.starovoitov@gmail.com
Subject: [PATCH bpf-next v8] tools/bpf: generate pkg-config file for libbpf
Date: Thu, 28 Mar 2019 11:33:53 +0000 [thread overview]
Message-ID: <20190328113353.20936-1-luca.boccassi@gmail.com> (raw)
In-Reply-To: <20190319210639.6282-1-bluca@debian.org>
From: Luca Boccassi <bluca@debian.org>
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@debian.org>
Acked-by: Andrey Ignatov <rdna@fb.com>
---
v2: use QUIET_GEN instead of QUIET_LINK to generate pc file,
save kernel version in its own variable instead of calling
make inline
v3: use LIBBPF_VERSION instead of kernel_version
v4: use -I${prefix}/include rather than -I${prefix}/include/bpf
in the Cflags field as requested, to keep consistency with
how the headers are used now and to avoid a dependency from
the pc file to the headers installation
v5: add acked-by, add SPDX line to pc file
v6: remove URL field, generalize Description field
v7: fix build with make OUTPUT=/foo/bar/ by prefixing $(OUTPUT)
to the pc file variable
v8: rebased on latest bpf-next to solve merge conflict
(not that indentation looks wrong on 2 lines because the
"+" added by the diff makes the first tab start at the 8th
column rather than the 7th, it align once applied though)
tools/lib/bpf/.gitignore | 1 +
tools/lib/bpf/Makefile | 19 ++++++++++++++++---
tools/lib/bpf/libbpf.pc.template | 12 ++++++++++++
3 files changed, 29 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 5bf8e52c41fc..0fe54fe4cc04 100644
--- a/tools/lib/bpf/Makefile
+++ b/tools/lib/bpf/Makefile
@@ -90,6 +90,7 @@ LIBBPF_VERSION = $(BPF_VERSION).$(BPF_PATCHLEVEL).$(BPF_EXTRAVERSION)
LIB_TARGET = libbpf.a libbpf.so.$(LIBBPF_VERSION)
LIB_FILE = libbpf.a libbpf.so*
+PC_FILE = libbpf.pc
# Set compile option CFLAGS
ifdef EXTRA_CFLAGS
@@ -134,13 +135,14 @@ VERSION_SCRIPT := libbpf.map
LIB_TARGET := $(addprefix $(OUTPUT),$(LIB_TARGET))
LIB_FILE := $(addprefix $(OUTPUT),$(LIB_FILE))
+PC_FILE := $(addprefix $(OUTPUT),$(PC_FILE))
GLOBAL_SYM_COUNT = $(shell readelf -s --wide $(BPF_IN) | \
awk '/GLOBAL/ && /DEFAULT/ && !/UND/ {s++} END{print s}')
VERSIONED_SYM_COUNT = $(shell readelf -s --wide $(OUTPUT)libbpf.so | \
grep -Eo '[^ ]+@LIBBPF_' | cut -d@ -f1 | sort -u | wc -l)
-CMD_TARGETS = $(LIB_TARGET)
+CMD_TARGETS = $(LIB_TARGET) $(PC_FILE)
CXX_TEST_TARGET = $(OUTPUT)test_libbpf
@@ -187,6 +189,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_GEN)sed -e "s|@PREFIX@|$(prefix)|" \
+ -e "s|@LIBDIR@|$(libdir_SQ)|" \
+ -e "s|@VERSION@|$(LIBBPF_VERSION)|" \
+ < libbpf.pc.template > $@
+
check: check_abi
check_abi: $(OUTPUT)libbpf.so
@@ -223,7 +231,12 @@ install_headers:
$(call do_install,libbpf.h,$(prefix)/include/bpf,644);
$(call do_install,btf.h,$(prefix)/include/bpf,644);
-install: install_lib
+install_pkgconfig: $(PC_FILE)
+ $(call QUIET_INSTALL, $(PC_FILE)) \
+ $(call do_install,$(PC_FILE),$(libdir_SQ)/pkgconfig,644)
+
+
+install: install_lib install_pkgconfig
### Cleaning rules
@@ -233,7 +246,7 @@ config-clean:
clean:
$(call QUIET_CLEAN, libbpf) $(RM) $(TARGETS) $(CXX_TEST_TARGET) \
- *.o *~ *.a *.so *.so.$(VERSION) .*.d .*.cmd LIBBPF-CFLAGS
+ *.o *~ *.a *.so *.so.$(VERSION) .*.d .*.cmd *.pc LIBBPF-CFLAGS
$(call QUIET_CLEAN, core-gen) $(RM) $(OUTPUT)FEATURE-DUMP.libbpf
diff --git a/tools/lib/bpf/libbpf.pc.template b/tools/lib/bpf/libbpf.pc.template
new file mode 100644
index 000000000000..ac17fcef2108
--- /dev/null
+++ b/tools/lib/bpf/libbpf.pc.template
@@ -0,0 +1,12 @@
+# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
+
+prefix=@PREFIX@
+libdir=@LIBDIR@
+includedir=${prefix}/include
+
+Name: libbpf
+Description: BPF library
+Version: @VERSION@
+Libs: -L${libdir} -lbpf
+Requires.private: libelf
+Cflags: -I${includedir}
--
2.20.1
next prev parent reply other threads:[~2019-03-28 11:34 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-19 21:06 [PATCH bpf-next] tools/bpf: generate pkg-config file for libbpf Luca Boccassi
2019-03-19 21:23 ` Stanislav Fomichev
2019-03-19 23:02 ` Luca Boccassi
2019-03-19 23:12 ` Stanislav Fomichev
2019-03-19 23:00 ` [PATCH bpf-next v2] " Luca Boccassi
2019-03-19 23:17 ` Stanislav Fomichev
2019-03-20 13:22 ` Luca Boccassi
2019-03-20 13:30 ` Luca Boccassi
2019-03-20 17:21 ` Stanislav Fomichev
2019-03-20 20:39 ` Luca Boccassi
2019-03-20 20:44 ` Stanislav Fomichev
2019-03-20 20:54 ` Daniel Borkmann
2019-03-20 21:13 ` Stanislav Fomichev
2019-03-20 13:28 ` [PATCH bpf-next v3] " luca.boccassi
2019-03-20 23:58 ` Andrey Ignatov
2019-03-21 10:29 ` Luca Boccassi
2019-03-21 10:25 ` [PATCH bpf-next v4] " luca.boccassi
2019-03-21 16:00 ` Andrey Ignatov
2019-03-21 22:01 ` Alexei Starovoitov
2019-03-21 22:19 ` Daniel Borkmann
2019-03-21 22:34 ` Luca Boccassi
2019-03-21 22:23 ` Luca Boccassi
2019-03-21 22:27 ` [PATCH bpf-next v5] " luca.boccassi
2019-03-21 22:33 ` [PATCH bpf-next v6] " luca.boccassi
2019-03-21 22:43 ` Alexei Starovoitov
2019-03-21 23:10 ` Luca Boccassi
2019-03-21 23:09 ` [PATCH bpf-next v7] " luca.boccassi
2019-03-26 20:12 ` Alexei Starovoitov
2019-03-26 20:17 ` Luca Boccassi
2019-03-28 11:33 ` luca.boccassi [this message]
2019-03-28 16:09 ` [PATCH bpf-next v8] " Daniel Borkmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190328113353.20936-1-luca.boccassi@gmail.com \
--to=luca.boccassi@gmail.com \
--cc=alexei.starovoitov@gmail.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.