mirror of
https://github.com/netdata/libbpf.git
synced 2026-03-20 16:29:07 +08:00
Make it possible to include libbpf into projects built by Meson build system as a subproject. This is the case e.g. for systemd. meson.build declares dependencies which may be used in parent projects: `libbpf_static_dep` for static library `libbpf_shared_dep` for shared library `bpf_includes` provides the location of bpf.h, btf.h and libbpf.h Parent projects need to introduce git wrap to build libbpf: https://github.com/mesonbuild/meson/blob/master/docs/markdown/Wrap-dependency-system-manual.md#wrap-git An alternative approach is applying a patch with meson.build for libbpf while building a parent project: https://github.com/mesonbuild/meson/blob/master/docs/markdown/Wrap-dependency-system-manual.md#wrap-file Imo it's less transparent and would add more headache. meson.build is placed in the source root because that's how Meson expects it to be placed. The related discussion is in https://github.com/systemd/systemd/pull/12151
63 lines
2.4 KiB
Plaintext
63 lines
2.4 KiB
Plaintext
|
|
This is a mirror of bpf-next linux tree
|
|
(https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next)
|
|
bpf-next/tools/lib/bpf directory plus its supporting header files.
|
|
|
|
The following files will by sync'ed with bpf-next repo:
|
|
src/ <-> bpf-next/tools/lib/bpf/
|
|
include/uapi/linux/bpf_common.h <-> bpf-next/tools/include/uapi/linux/bpf_common.h
|
|
include/uapi/linux/bpf.h <-> bpf-next/tools/include/uapi/linux/bpf.h
|
|
include/uapi/linux/btf.h <-> bpf-next/tools/include/uapi/linux/btf.h
|
|
include/uapi/linux/if_link.h <-> bpf-next/tools/include/uapi/linux/if_link.h
|
|
include/uapi/linux/if_xdp.h <-> bpf-next/tools/include/uapi/linux/if_xdp.h
|
|
include/uapi/linux/netlink.h <-> bpf-next/tools/include/uapi/linux/netlink.h
|
|
include/tools/libc_compat.h <-> bpf-next/tools/include/tools/libc_compat.h
|
|
|
|
Other header files at this repo (include/linux/*.h) are reduced versions of
|
|
their counterpart files at bpf-next/tools/include/linux/*.h to make compilation
|
|
successful.
|
|
|
|
Build
|
|
=====
|
|
libelf is an internal dependency of libbpf and thus it is required to link
|
|
against and must be installed on the system for applications to work.
|
|
pkg-config is used by default to find libelf, and the program called can be
|
|
overridden with PKG_CONFIG.
|
|
If using pkg-config at build time is not desired, it can be disabled by setting
|
|
NO_PKG_CONFIG=1 when calling make.
|
|
|
|
To build both static libbpf.a and shared libbpf.so:
|
|
cd src
|
|
make
|
|
|
|
To build only static libbpf.a library in directory
|
|
build/ and install them together with libbpf headers in a staging directory
|
|
root/:
|
|
cd src
|
|
mkdir build root
|
|
BUILD_STATIC_ONLY=y OBJDIR=build DESTDIR=root make install
|
|
|
|
To build both static libbpf.a and shared libbpf.so against a custom libelf
|
|
dependency installed in /build/root/ and install them together with libbpf
|
|
headers in a build directory /build/root/:
|
|
|
|
cd src
|
|
PKG_CONFIG_PATH=/build/root/lib64/pkgconfig DESTDIR=/build/root make install
|
|
|
|
To integrate libbpf into a project which uses Meson building system define
|
|
[wrap-git] file in `subprojects` folder.
|
|
To add libbpf dependency to the parent parent project, e.g. for
|
|
libbpf_static_dep:
|
|
|
|
libbpf_obj = subproject('libbpf', required : true)
|
|
libbpf_static_dep = libbpf_proj.get_variable('libbpf_static_dep')
|
|
|
|
To validate changes to meson.build
|
|
|
|
python3 meson.py build
|
|
ninja -C build/
|
|
|
|
To install headers, libs and pkgconfig
|
|
cd build
|
|
ninja install
|