ceafcc076327f258b28f3d172a3be53841742c5b
[openwrt/openwrt.git] / package / kernel / bpf-headers / Makefile
1 #
2 # Copyright (C) 2006-2009 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7 include $(TOPDIR)/rules.mk
8
9 override QUILT:=
10 override HOST_QUILT:=
11
12 include $(INCLUDE_DIR)/kernel.mk
13
14
15 PKG_NAME:=linux
16 PKG_PATCHVER:=6.12
17
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)
21
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)
27
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
33 FILES_DIR :=
34
35 REAL_LINUX_DIR := $(LINUX_DIR)
36 LINUX_DIR := $(PKG_BUILD_DIR)
37
38 include $(INCLUDE_DIR)/bpf.mk
39 include $(INCLUDE_DIR)/package.mk
40
41 define Package/bpf-headers
42 SECTION:=kernel
43 CATEGORY:=Kernel modules
44 TITLE:=eBPF kernel headers
45 BUILDONLY:=1
46 HIDDEN:=1
47 endef
48
49 PKG_CONFIG_PATH:=
50
51 export HOST_EXTRACFLAGS=-I$(STAGING_DIR_HOST)/include
52
53 KERNEL_MAKE := \
54 $(MAKE) -C $(PKG_BUILD_DIR) \
55 ARCH=$(BPF_KARCH) \
56 CROSS_COMPILE=$(BPF_ARCH)-linux- \
57 LLVM=1 KBUILD_SYM32=n \
58 CC="$(CLANG) --target=$(BPF_TARGET)" \
59 LD="$(TARGET_CROSS)ld" \
60 HOSTCC="$(HOSTCC)" \
61 HOSTCXX="$(HOSTCXX)" \
62 KBUILD_HOSTLDLIBS="-L$(STAGING_DIR_HOST)/lib" \
63 CONFIG_SHELL="$(BASH)" \
64 INSTALL_HDR_PATH="$(PKG_BUILD_DIR)/user_headers"
65
66 define Build/Patch
67 $(Kernel/Patch/Default)
68 endef
69
70 define Quilt/Refresh/Package
71 $(Quilt/Refresh/Kernel)
72 endef
73
74 BPF_DOC = $(PKG_BUILD_DIR)/scripts/bpf_doc.py
75
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
79 endef
80
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 | \
88 cut -d= -f2 | \
89 bc -q $(LINUX_DIR)/kernel/time/timeconst.bc \
90 > $(LINUX_DIR)/include/generated/timeconst.h
91 $(BPF_DOC) --header \
92 --file $(LINUX_DIR)/tools/include/uapi/linux/bpf.h \
93 > $(PKG_BUILD_DIR)/tools/lib/bpf/bpf_helper_defs.h
94 endef
95
96 define Build/Compile
97 $(KERNEL_MAKE) archprepare headers_install
98 endef
99
100 define Build/InstallDev
101 mkdir -p $(1)/bpf-headers/arch $(1)/bpf-headers/tools
102 $(CP) \
103 $(PKG_BUILD_DIR)/arch/$(BPF_KARCH) \
104 $(1)/bpf-headers/arch/
105 $(CP) \
106 $(PKG_BUILD_DIR)/tools/lib \
107 $(PKG_BUILD_DIR)/tools/testing \
108 $(1)/bpf-headers/tools/
109 $(CP) \
110 $(PKG_BUILD_DIR)/include \
111 $(PKG_BUILD_DIR)/samples \
112 $(PKG_BUILD_DIR)/scripts \
113 $(PKG_BUILD_DIR)/user_headers \
114 $(1)/bpf-headers
115 $(CP) \
116 $(CURDIR)/files/stdarg.h \
117 $(1)/bpf-headers/include
118 endef
119
120 $(eval $(call BuildPackage,bpf-headers))