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
18 # Manually include kernel version and hash from kernel details file
19 GENERIC_PLATFORM_DIR
:= $(CURDIR
)/..
/..
/..
/target
/linux
/generic
20 include $(GENERIC_PLATFORM_DIR
)/kernel-
$(PKG_PATCHVER
)
22 PKG_VERSION
:=$(PKG_PATCHVER
)$(strip $(LINUX_VERSION-
$(PKG_PATCHVER
)))
23 PKG_SOURCE
:=$(PKG_NAME
)-$(PKG_VERSION
).
tar.xz
24 PKG_SOURCE_URL
:=@KERNEL
/linux
/kernel
/v
$(word 1,$(subst .
, ,$(PKG_PATCHVER
))).x
25 PKG_HASH
:=$(LINUX_KERNEL_HASH-
$(strip $(PKG_VERSION
)))
26 PKG_BUILD_DIR
:=$(KERNEL_BUILD_DIR
)/bpf-headers
/$(PKG_NAME
)-$(PKG_VERSION
)
28 GENERIC_BACKPORT_DIR
:= $(GENERIC_PLATFORM_DIR
)/backport
$(if
$(wildcard $(GENERIC_PLATFORM_DIR
)/backport-
$(PKG_PATCHVER
)),-$(PKG_PATCHVER
))
29 GENERIC_PATCH_DIR
:= $(GENERIC_PLATFORM_DIR
)/pending
$(if
$(wildcard $(GENERIC_PLATFORM_DIR
)/pending-
$(PKG_PATCHVER
)),-$(PKG_PATCHVER
))
30 GENERIC_HACK_DIR
:= $(GENERIC_PLATFORM_DIR
)/hack
$(if
$(wildcard $(GENERIC_PLATFORM_DIR
)/hack-
$(PKG_PATCHVER
)),-$(PKG_PATCHVER
))
31 GENERIC_FILES_DIR
:= $(foreach dir,$(wildcard $(GENERIC_PLATFORM_DIR
)/files
$(GENERIC_PLATFORM_DIR
)/files-
$(PKG_PATCHVER
)),"$(dir)")
32 PATCH_DIR
:= $(CURDIR
)/patches
35 REAL_LINUX_DIR
:= $(LINUX_DIR
)
36 LINUX_DIR
:= $(PKG_BUILD_DIR
)
38 include $(INCLUDE_DIR
)/bpf.mk
39 include $(INCLUDE_DIR
)/package.mk
41 define Package
/bpf-headers
43 CATEGORY
:=Kernel modules
44 TITLE
:=eBPF kernel headers
51 export HOST_EXTRACFLAGS
=-I
$(STAGING_DIR_HOST
)/include
54 $(MAKE
) -C
$(PKG_BUILD_DIR
) \
56 CROSS_COMPILE
=$(BPF_ARCH
)-linux- \
57 LLVM
=1 KBUILD_SYM32
=n \
58 CC
="$(CLANG) --target=$(BPF_TARGET)" \
59 LD
="$(TARGET_CROSS)ld" \
61 HOSTCXX
="$(HOSTCXX)" \
62 KBUILD_HOSTLDLIBS
="-L$(STAGING_DIR_HOST)/lib" \
63 CONFIG_SHELL
="$(BASH)" \
64 INSTALL_HDR_PATH
="$(PKG_BUILD_DIR)/user_headers"
67 $(Kernel
/Patch
/Default
)
70 define Quilt
/Refresh
/Package
71 $(Quilt
/Refresh
/Kernel
)
74 BPF_DOC
= $(PKG_BUILD_DIR
)/scripts
/bpf_doc.py
76 define Build
/Configure
/64
77 echo
'CONFIG_CPU_MIPS64_R2=y' >> $(PKG_BUILD_DIR
)/.config
78 echo
'CONFIG_64BIT=y' >> $(PKG_BUILD_DIR
)/.config
81 define Build
/Configure
82 grep
-vE
'CONFIG_(CPU_.*ENDIAN|HZ)' $(PKG_BUILD_DIR
)/arch
/mips
/configs
/generic_defconfig
> $(PKG_BUILD_DIR
)/.config
83 echo
'CONFIG_CPU_$(if $(CONFIG_BIG_ENDIAN),BIG,LITTLE)_ENDIAN=y' >> $(PKG_BUILD_DIR
)/.config
84 $(if
$(CONFIG_ARCH_64BIT
),$(Build
/Configure
/64))
85 grep CONFIG_HZ
$(REAL_LINUX_DIR
)/.config
>> $(PKG_BUILD_DIR
)/.config
86 yes
'' |
$(KERNEL_MAKE
) oldconfig
87 grep
'CONFIG_HZ=' $(REAL_LINUX_DIR
)/.config | \
89 bc
-q
$(LINUX_DIR
)/kernel
/time
/timeconst.bc \
90 > $(LINUX_DIR
)/include/generated
/timeconst.h
92 --file
$(LINUX_DIR
)/tools
/include/uapi
/linux
/bpf.h \
93 > $(PKG_BUILD_DIR
)/tools
/lib
/bpf
/bpf_helper_defs.h
97 $(KERNEL_MAKE
) archprepare headers_install
100 define Build
/InstallDev
101 mkdir
-p
$(1)/bpf-headers
/arch
$(1)/bpf-headers
/tools
103 $(PKG_BUILD_DIR
)/arch
/$(BPF_KARCH
) \
104 $(1)/bpf-headers
/arch
/
106 $(PKG_BUILD_DIR
)/tools
/lib \
107 $(PKG_BUILD_DIR
)/tools
/testing \
108 $(1)/bpf-headers
/tools
/
110 $(PKG_BUILD_DIR
)/include \
111 $(PKG_BUILD_DIR
)/samples \
112 $(PKG_BUILD_DIR
)/scripts \
113 $(PKG_BUILD_DIR
)/user_headers \
116 $(CURDIR
)/files
/stdarg.h \
117 $(1)/bpf-headers
/include
120 $(eval
$(call BuildPackage
,bpf-headers
))