Makefile 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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. override QUILT:=
  9. override HOST_QUILT:=
  10. include $(INCLUDE_DIR)/kernel.mk
  11. PKG_NAME:=linux
  12. PKG_PATCHVER:=6.12
  13. # Manually include kernel version and hash from kernel details file
  14. GENERIC_PLATFORM_DIR := $(CURDIR)/../../../target/linux/generic
  15. include $(GENERIC_PLATFORM_DIR)/kernel-$(PKG_PATCHVER)
  16. PKG_VERSION:=$(PKG_PATCHVER)$(strip $(LINUX_VERSION-$(PKG_PATCHVER)))
  17. PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
  18. PKG_SOURCE_URL:=@KERNEL/linux/kernel/v$(word 1,$(subst ., ,$(PKG_PATCHVER))).x
  19. PKG_HASH:=$(LINUX_KERNEL_HASH-$(strip $(PKG_VERSION)))
  20. PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/bpf-headers/$(PKG_NAME)-$(PKG_VERSION)
  21. GENERIC_BACKPORT_DIR := $(GENERIC_PLATFORM_DIR)/backport$(if $(wildcard $(GENERIC_PLATFORM_DIR)/backport-$(PKG_PATCHVER)),-$(PKG_PATCHVER))
  22. GENERIC_PATCH_DIR := $(GENERIC_PLATFORM_DIR)/pending$(if $(wildcard $(GENERIC_PLATFORM_DIR)/pending-$(PKG_PATCHVER)),-$(PKG_PATCHVER))
  23. GENERIC_HACK_DIR := $(GENERIC_PLATFORM_DIR)/hack$(if $(wildcard $(GENERIC_PLATFORM_DIR)/hack-$(PKG_PATCHVER)),-$(PKG_PATCHVER))
  24. GENERIC_FILES_DIR := $(foreach dir,$(wildcard $(GENERIC_PLATFORM_DIR)/files $(GENERIC_PLATFORM_DIR)/files-$(PKG_PATCHVER)),"$(dir)")
  25. PATCH_DIR := $(CURDIR)/patches
  26. FILES_DIR :=
  27. REAL_LINUX_DIR := $(LINUX_DIR)
  28. LINUX_DIR := $(PKG_BUILD_DIR)
  29. include $(INCLUDE_DIR)/bpf.mk
  30. include $(INCLUDE_DIR)/package.mk
  31. define Package/bpf-headers
  32. SECTION:=kernel
  33. CATEGORY:=Kernel modules
  34. TITLE:=eBPF kernel headers
  35. BUILDONLY:=1
  36. HIDDEN:=1
  37. endef
  38. PKG_CONFIG_PATH:=
  39. export HOST_EXTRACFLAGS=-I$(STAGING_DIR_HOST)/include
  40. KERNEL_MAKE := \
  41. $(MAKE) -C $(PKG_BUILD_DIR) \
  42. ARCH=$(BPF_KARCH) \
  43. CROSS_COMPILE=$(BPF_ARCH)-linux- \
  44. LLVM=1 KBUILD_SYM32=n \
  45. CC="$(CLANG) --target=$(BPF_TARGET)" \
  46. LD="$(TARGET_CROSS)ld" \
  47. HOSTCC="$(HOSTCC)" \
  48. HOSTCXX="$(HOSTCXX)" \
  49. KBUILD_HOSTLDLIBS="-L$(STAGING_DIR_HOST)/lib" \
  50. CONFIG_SHELL="$(BASH)" \
  51. INSTALL_HDR_PATH="$(PKG_BUILD_DIR)/user_headers"
  52. define Build/Patch
  53. $(Kernel/Patch/Default)
  54. endef
  55. define Quilt/Refresh/Package
  56. $(Quilt/Refresh/Kernel)
  57. endef
  58. BPF_DOC = $(PKG_BUILD_DIR)/scripts/bpf_doc.py
  59. define Build/Configure/64
  60. echo 'CONFIG_CPU_MIPS64_R2=y' >> $(PKG_BUILD_DIR)/.config
  61. echo 'CONFIG_64BIT=y' >> $(PKG_BUILD_DIR)/.config
  62. endef
  63. define Build/Configure
  64. grep -vE 'CONFIG_(CPU_.*ENDIAN|HZ)' $(PKG_BUILD_DIR)/arch/mips/configs/generic_defconfig > $(PKG_BUILD_DIR)/.config
  65. echo 'CONFIG_CPU_$(if $(CONFIG_BIG_ENDIAN),BIG,LITTLE)_ENDIAN=y' >> $(PKG_BUILD_DIR)/.config
  66. $(if $(CONFIG_ARCH_64BIT),$(Build/Configure/64))
  67. grep CONFIG_HZ $(REAL_LINUX_DIR)/.config >> $(PKG_BUILD_DIR)/.config
  68. yes '' | $(KERNEL_MAKE) oldconfig
  69. grep 'CONFIG_HZ=' $(REAL_LINUX_DIR)/.config | \
  70. cut -d= -f2 | \
  71. bc -q $(LINUX_DIR)/kernel/time/timeconst.bc \
  72. > $(LINUX_DIR)/include/generated/timeconst.h
  73. $(BPF_DOC) --header \
  74. --file $(LINUX_DIR)/tools/include/uapi/linux/bpf.h \
  75. > $(PKG_BUILD_DIR)/tools/lib/bpf/bpf_helper_defs.h
  76. endef
  77. define Build/Compile
  78. $(KERNEL_MAKE) archprepare headers_install
  79. endef
  80. define Build/InstallDev
  81. mkdir -p $(1)/bpf-headers/arch $(1)/bpf-headers/tools
  82. $(CP) \
  83. $(PKG_BUILD_DIR)/arch/$(BPF_KARCH) \
  84. $(1)/bpf-headers/arch/
  85. $(CP) \
  86. $(PKG_BUILD_DIR)/tools/lib \
  87. $(PKG_BUILD_DIR)/tools/testing \
  88. $(1)/bpf-headers/tools/
  89. $(CP) \
  90. $(PKG_BUILD_DIR)/include \
  91. $(PKG_BUILD_DIR)/samples \
  92. $(PKG_BUILD_DIR)/scripts \
  93. $(PKG_BUILD_DIR)/user_headers \
  94. $(1)/bpf-headers
  95. $(CP) \
  96. $(CURDIR)/files/stdarg.h \
  97. $(1)/bpf-headers/include
  98. endef
  99. $(eval $(call BuildPackage,bpf-headers))