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 # Manually include kernel version and hash from kernel details file
18 include $(INCLUDE_DIR
)/kernel-
$(PKG_PATCHVER
)
20 PKG_VERSION
:=$(PKG_PATCHVER
)$(strip $(LINUX_VERSION-
$(PKG_PATCHVER
)))
21 PKG_SOURCE
:=$(PKG_NAME
)-$(PKG_VERSION
).
tar.xz
22 PKG_SOURCE_URL
:=$(LINUX_SITE
)
23 PKG_HASH
:=$(LINUX_KERNEL_HASH-
$(strip $(PKG_VERSION
)))
24 PKG_BUILD_DIR
:=$(KERNEL_BUILD_DIR
)/bpf-headers
/$(PKG_NAME
)-$(PKG_VERSION
)
26 GENERIC_PLATFORM_DIR
:= $(CURDIR
)/..
/..
/..
/target
/linux
/generic
27 GENERIC_BACKPORT_DIR
:= $(GENERIC_PLATFORM_DIR
)/backport
$(if
$(wildcard $(GENERIC_PLATFORM_DIR
)/backport-
$(PKG_PATCHVER
)),-$(PKG_PATCHVER
))
28 GENERIC_PATCH_DIR
:= $(GENERIC_PLATFORM_DIR
)/pending
$(if
$(wildcard $(GENERIC_PLATFORM_DIR
)/pending-
$(PKG_PATCHVER
)),-$(PKG_PATCHVER
))
29 GENERIC_HACK_DIR
:= $(GENERIC_PLATFORM_DIR
)/hack
$(if
$(wildcard $(GENERIC_PLATFORM_DIR
)/hack-
$(PKG_PATCHVER
)),-$(PKG_PATCHVER
))
30 GENERIC_FILES_DIR
:= $(foreach dir,$(wildcard $(GENERIC_PLATFORM_DIR
)/files
$(GENERIC_PLATFORM_DIR
)/files-
$(PKG_PATCHVER
)),"$(dir)")
31 PATCH_DIR
:= $(CURDIR
)/patches
34 REAL_LINUX_DIR
:= $(LINUX_DIR
)
35 LINUX_DIR
:= $(PKG_BUILD_DIR
)
37 include $(INCLUDE_DIR
)/bpf.mk
38 include $(INCLUDE_DIR
)/package.mk
40 define Package
/bpf-headers
43 TITLE
:=eBPF kernel headers
50 export HOST_EXTRACFLAGS
=-I
$(STAGING_DIR_HOST
)/include
53 $(MAKE
) -C
$(PKG_BUILD_DIR
) \
55 CROSS_COMPILE
=$(BPF_ARCH
)-linux- \
56 LLVM
=1 CC
="$(CLANG)" LD
="$(TARGET_CROSS)ld" \
58 HOSTCXX
="$(HOSTCXX)" \
59 KBUILD_HOSTLDLIBS
="-L$(STAGING_DIR_HOST)/lib" \
60 CONFIG_SHELL
="$(BASH)" \
61 INSTALL_HDR_PATH
="$(PKG_BUILD_DIR)/user_headers"
64 $(Kernel
/Patch
/Default
)
67 BPF_DOC
= $(PKG_BUILD_DIR
)/scripts
/bpf_doc.py
69 define Build
/Configure
/64
70 echo
'CONFIG_CPU_MIPS64_R2=y' >> $(PKG_BUILD_DIR
)/.config
71 echo
'CONFIG_64BIT=y' >> $(PKG_BUILD_DIR
)/.config
74 define Build
/Configure
75 grep
-vE
'CONFIG_(CPU_.*ENDIAN|HZ)' $(PKG_BUILD_DIR
)/arch
/mips
/configs
/generic_defconfig
> $(PKG_BUILD_DIR
)/.config
76 echo
'CONFIG_CPU_$(if $(CONFIG_BIG_ENDIAN),BIG,LITTLE)_ENDIAN=y' >> $(PKG_BUILD_DIR
)/.config
77 $(if
$(CONFIG_ARCH_64BIT
),$(Build
/Configure
/64))
78 grep CONFIG_HZ
$(REAL_LINUX_DIR
)/.config
>> $(PKG_BUILD_DIR
)/.config
79 yes
'' |
$(KERNEL_MAKE
) oldconfig
80 grep
'CONFIG_HZ=' $(REAL_LINUX_DIR
)/.config | \
82 bc
-q
$(LINUX_DIR
)/kernel
/time
/timeconst.bc \
83 > $(LINUX_DIR
)/include/generated
/timeconst.h
85 --file
$(LINUX_DIR
)/tools
/include/uapi
/linux
/bpf.h \
86 > $(PKG_BUILD_DIR
)/tools
/lib
/bpf
/bpf_helper_defs.h
90 $(KERNEL_MAKE
) archprepare headers_install
93 define Build
/InstallDev
94 mkdir
-p
$(1)/bpf-headers
/arch
$(1)/bpf-headers
/tools
96 $(PKG_BUILD_DIR
)/arch
/$(BPF_KARCH
) \
97 $(1)/bpf-headers
/arch
/
99 $(PKG_BUILD_DIR
)/tools
/lib \
100 $(PKG_BUILD_DIR
)/tools
/testing \
101 $(1)/bpf-headers
/tools
/
103 $(PKG_BUILD_DIR
)/include \
104 $(PKG_BUILD_DIR
)/samples \
105 $(PKG_BUILD_DIR
)/scripts \
106 $(PKG_BUILD_DIR
)/user_headers \
109 $(CURDIR
)/files
/stdarg.h \
110 $(1)/bpf-headers
/include
113 $(eval
$(call BuildPackage
,bpf-headers
))