2 # Copyright (C) 2006-2009 OpenWrt.org
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
7 include $(TOPDIR
)/rules.mk
12 include $(INCLUDE_DIR
)/kernel.mk
17 PKG_VERSION
:=$(PKG_PATCHVER
)$(strip $(LINUX_VERSION-
$(PKG_PATCHVER
)))
18 PKG_SOURCE
:=$(PKG_NAME
)-$(PKG_VERSION
).
tar.xz
19 PKG_SOURCE_URL
:=$(LINUX_SITE
)
20 PKG_HASH
:=$(LINUX_KERNEL_HASH-
$(strip $(PKG_VERSION
)))
21 PKG_BUILD_DIR
:=$(KERNEL_BUILD_DIR
)/bpf-headers
/$(PKG_NAME
)-$(PKG_VERSION
)
23 GENERIC_PLATFORM_DIR
:= $(CURDIR
)/..
/..
/..
/target
/linux
/generic
24 GENERIC_BACKPORT_DIR
:= $(GENERIC_PLATFORM_DIR
)/backport
$(if
$(wildcard $(GENERIC_PLATFORM_DIR
)/backport-
$(PKG_PATCHVER
)),-$(PKG_PATCHVER
))
25 GENERIC_PATCH_DIR
:= $(GENERIC_PLATFORM_DIR
)/pending
$(if
$(wildcard $(GENERIC_PLATFORM_DIR
)/pending-
$(PKG_PATCHVER
)),-$(PKG_PATCHVER
))
26 GENERIC_HACK_DIR
:= $(GENERIC_PLATFORM_DIR
)/hack
$(if
$(wildcard $(GENERIC_PLATFORM_DIR
)/hack-
$(PKG_PATCHVER
)),-$(PKG_PATCHVER
))
27 GENERIC_FILES_DIR
:= $(foreach dir,$(wildcard $(GENERIC_PLATFORM_DIR
)/files
$(GENERIC_PLATFORM_DIR
)/files-
$(PKG_PATCHVER
)),"$(dir)")
28 PATCH_DIR
:= $(CURDIR
)/patches
31 REAL_LINUX_DIR
:= $(LINUX_DIR
)
32 LINUX_DIR
:= $(PKG_BUILD_DIR
)
34 include $(INCLUDE_DIR
)/bpf.mk
35 include $(INCLUDE_DIR
)/package.mk
37 define Package
/bpf-headers
40 TITLE
:=eBPF kernel headers
47 export HOST_EXTRACFLAGS
=-I
$(STAGING_DIR_HOST
)/include
50 $(MAKE
) -C
$(PKG_BUILD_DIR
) \
52 CROSS_COMPILE
=$(BPF_ARCH
)-linux- \
53 LLVM
=1 CC
="$(CLANG)" LD
="$(TARGET_CROSS)ld" \
55 HOSTCXX
="$(HOSTCXX)" \
56 HOST_LOADLIBES
="-L$(STAGING_DIR_HOST)/lib" \
57 KBUILD_HOSTLDLIBS
="-L$(STAGING_DIR_HOST)/lib" \
58 CONFIG_SHELL
="$(BASH)" \
59 INSTALL_HDR_PATH
="$(PKG_BUILD_DIR)/user_headers"
62 $(Kernel
/Patch
/Default
)
65 BPF_DOC
= $(PKG_BUILD_DIR
)/scripts
/bpf_helpers_doc.py
67 define Build
/Configure
/64
68 echo
'CONFIG_CPU_MIPS64_R2=y' >> $(PKG_BUILD_DIR
)/.config
69 echo
'CONFIG_64BIT=y' >> $(PKG_BUILD_DIR
)/.config
72 define Build
/Configure
73 grep
-vE
'CONFIG_(CPU_.*ENDIAN|HZ)' $(PKG_BUILD_DIR
)/arch
/mips
/configs
/generic_defconfig
> $(PKG_BUILD_DIR
)/.config
74 echo
'CONFIG_CPU_$(if $(CONFIG_BIG_ENDIAN),BIG,LITTLE)_ENDIAN=y' >> $(PKG_BUILD_DIR
)/.config
75 $(if
$(CONFIG_ARCH_64BIT
),$(Build
/Configure
/64))
76 grep CONFIG_HZ
$(REAL_LINUX_DIR
)/.config
>> $(PKG_BUILD_DIR
)/.config
77 yes
'' |
$(KERNEL_MAKE
) oldconfig
78 grep
'CONFIG_HZ=' $(REAL_LINUX_DIR
)/.config | \
80 bc
-q
$(LINUX_DIR
)/kernel
/time
/timeconst.bc \
81 > $(LINUX_DIR
)/include/generated
/timeconst.h
83 --file
$(LINUX_DIR
)/tools
/include/uapi
/linux
/bpf.h \
84 > $(PKG_BUILD_DIR
)/tools
/lib
/bpf
/bpf_helper_defs.h
88 $(KERNEL_MAKE
) archprepare headers_install
91 define Build
/InstallDev
92 mkdir
-p
$(1)/bpf-headers
/arch
$(1)/bpf-headers
/tools
94 $(PKG_BUILD_DIR
)/arch
/$(BPF_KARCH
) \
95 $(1)/bpf-headers
/arch
/
97 $(PKG_BUILD_DIR
)/tools
/lib \
98 $(PKG_BUILD_DIR
)/tools
/testing \
99 $(1)/bpf-headers
/tools
/
101 $(PKG_BUILD_DIR
)/include \
102 $(PKG_BUILD_DIR
)/samples \
103 $(PKG_BUILD_DIR
)/scripts \
104 $(PKG_BUILD_DIR
)/user_headers \
108 $(eval
$(call BuildPackage
,bpf-headers
))