1################################################################################
2#
3# libbpf
4#
5################################################################################
6
7LIBBPF_VERSION = 1.1.0
8LIBBPF_SITE = $(call github,libbpf,libbpf,v$(LIBBPF_VERSION))
9LIBBPF_LICENSE = GPL-2.0, LGPL-2.1, BSD-2-Clause
10LIBBPF_LICENSE_FILES = LICENSE LICENSE.BSD-2-Clause LICENSE.LGPL-2.1
11LIBBPF_CPE_ID_VALID = YES
12LIBBPF_DEPENDENCIES = host-bison host-flex host-pkgconf elfutils zlib
13HOST_LIBBPF_DEPENDENCIES = host-bison host-flex host-pkgconf host-elfutils host-zlib
14LIBBPF_INSTALL_STAGING = YES
15
16define LIBBPF_BUILD_CMDS
17	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \
18		-C $(@D)/src
19endef
20
21# bpf/bpf.h installed by libbpf uses bpf_iter_link_info that was added since
22# kernel 5.9, so we need to update some uapi headers in STAGING_DIR if the
23# toolchain is build with linux-headers < 5.9.
24# Otherwise bpf/bpf.h is broken due to out of date linux/bpf.h installed by the
25# toolchain.
26# https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=a5cbe05a6673b85bed2a63ffcfea6a96c6410cff
27ifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9),)
28LIBBPF_UPDATE_UAPI_HEADERS = install_uapi_headers
29endif
30
31define LIBBPF_INSTALL_STAGING_CMDS
32	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \
33		-C $(@D)/src install $(LIBBPF_UPDATE_UAPI_HEADERS) \
34		DESTDIR=$(STAGING_DIR)
35endef
36
37define LIBBPF_INSTALL_TARGET_CMDS
38	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \
39		-C $(@D)/src install DESTDIR=$(TARGET_DIR)
40endef
41
42define HOST_LIBBPF_INSTALL_CMDS
43	$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) \
44		-C $(@D)/src install install_uapi_headers DESTDIR=$(HOST_DIR)
45endef
46
47$(eval $(generic-package))
48$(eval $(host-generic-package))
49