kernel-headers.mk 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #############################################################
  2. #
  3. # Setup the kernel headers. I include a generic package of
  4. # kernel headers here, so you shouldn't need to include your
  5. # own. Be aware these kernel headers _will_ get blown away
  6. # by a 'make clean' so don't put anything sacred in here...
  7. #
  8. #############################################################
  9. DEFAULT_KERNEL_HEADERS:=$(call qstrip,$(BR2_DEFAULT_KERNEL_HEADERS))
  10. LINUX_HEADERS_SITE:=127.0.0.1
  11. LINUX_HEADERS_SOURCE:=unspecified-kernel-headers
  12. LINUX_HEADERS_UNPACK_DIR:=$(TOOLCHAIN_DIR)/linux-libc-headers-null
  13. # parse linux version string
  14. LNXVER:=$(subst ., , $(strip $(DEFAULT_KERNEL_HEADERS)))
  15. VERSION:=$(word 1, $(LNXVER))
  16. PATCHLEVEL:=$(word 2, $(LNXVER))
  17. SUBLEVEL:=$(word 3, $(LNXVER))
  18. EXTRAVERSION:=$(word 4, $(LNXVER))
  19. LOCALVERSION:=
  20. # should contain prepended dot
  21. SUBLEVEL:=$(if $(SUBLEVEL),.$(SUBLEVEL),)
  22. EXTRAVERSION:=$(if $(EXTRAVERSION),.$(EXTRAVERSION),)
  23. LINUX_HEADERS_VERSION:=$(VERSION).$(PATCHLEVEL)$(SUBLEVEL)$(EXTRAVERSION)
  24. ifeq ($(findstring x2.6.,x$(DEFAULT_KERNEL_HEADERS)),x2.6.)
  25. LINUX_HEADERS_SITE:=$(BR2_KERNEL_MIRROR)/linux/kernel/v2.6/
  26. else
  27. LINUX_HEADERS_SITE:=$(BR2_KERNEL_MIRROR)/linux/kernel/v3.x/
  28. endif
  29. LINUX_HEADERS_SOURCE:=linux-$(LINUX_HEADERS_VERSION).tar.bz2
  30. LINUX_HEADERS_CAT:=$(BZCAT)
  31. LINUX_HEADERS_UNPACK_DIR:=$(TOOLCHAIN_DIR)/linux-$(LINUX_HEADERS_VERSION)
  32. LINUX_HEADERS_DIR:=$(TOOLCHAIN_DIR)/linux
  33. # long term support kernels are stored in a longterm/v2.6.x subdir
  34. ifeq ($(BR2_KERNEL_HEADERS_2_6_35),y)
  35. DEFAULT_KERNEL_HEADERS_MAJOR := \
  36. $(shell echo $(DEFAULT_KERNEL_HEADERS) | sed 's/\.[0-9]*$$//')
  37. # += adds a space between
  38. LINUX_HEADERS_SITE:= \
  39. $(LINUX_HEADERS_SITE)longterm/v$(DEFAULT_KERNEL_HEADERS_MAJOR)/
  40. endif
  41. LINUX_HEADERS_DEPENDS:=
  42. $(LINUX_HEADERS_UNPACK_DIR)/.unpacked: $(DL_DIR)/$(LINUX_HEADERS_SOURCE)
  43. $(Q)$(call MESSAGE,"Extracting kernel headers")
  44. rm -rf $(LINUX_HEADERS_DIR)
  45. $(INSTALL) -d $(@D)
  46. $(LINUX_HEADERS_CAT) $(DL_DIR)/$(LINUX_HEADERS_SOURCE) | \
  47. tar $(TAR_STRIP_COMPONENTS)=1 -C $(@D) $(TAR_OPTIONS) -
  48. touch $@
  49. $(LINUX_HEADERS_UNPACK_DIR)/.patched: $(LINUX_HEADERS_UNPACK_DIR)/.unpacked $(LINUX_HEADERS_DEPENDS)
  50. $(Q)$(call MESSAGE,"Patching kernel headers")
  51. support/scripts/apply-patches.sh $(LINUX_HEADERS_UNPACK_DIR) toolchain/kernel-headers \
  52. linux-$(LINUX_HEADERS_VERSION)-\*.patch{,.gz,.bz2}
  53. ifneq ($(KERNEL_HEADERS_PATCH_DIR),)
  54. support/scripts/apply-patches.sh $(LINUX_HEADERS_UNPACK_DIR) $(KERNEL_HEADERS_PATCH_DIR) \
  55. linux-$(LINUX_HEADERS_VERSION)-\*.patch{,.gz,.bz2}
  56. endif
  57. touch $@
  58. $(LINUX_HEADERS_DIR)/.configured: $(LINUX_HEADERS_UNPACK_DIR)/.patched
  59. $(Q)$(call MESSAGE,"Installing kernel headers")
  60. (cd $(LINUX_HEADERS_UNPACK_DIR); \
  61. $(MAKE) ARCH=$(KERNEL_ARCH) \
  62. HOSTCC="$(HOSTCC)" HOSTCFLAGS="$(HOSTCFLAGS)" \
  63. HOSTCXX="$(HOSTCXX)" \
  64. INSTALL_HDR_PATH=$(LINUX_HEADERS_DIR) headers_install; \
  65. )
  66. touch $@
  67. $(DL_DIR)/$(LINUX_HEADERS_SOURCE):
  68. ifeq ($(BR2_KERNEL_HEADERS_SNAP),y)
  69. $(error No local $@ found, cannot continue. Are you sure you wanted to enable BR2_KERNEL_HEADERS_SNAP?)
  70. endif
  71. $(call MESSAGE,"Downloading kernel headers")
  72. $(call DOWNLOAD,$(LINUX_HEADERS_SITE)/$(LINUX_HEADERS_SOURCE))
  73. kernel-headers: $(LINUX_HEADERS_DIR)/.configured
  74. kernel-headers-source: $(DL_DIR)/$(LINUX_HEADERS_SOURCE)
  75. kernel-headers-clean: clean
  76. rm -rf $(LINUX_HEADERS_DIR)
  77. kernel-headers-dirclean:
  78. rm -rf $(LINUX_HEADERS_DIR)
  79. rm -rf $(LINUX_HEADERS_UNPACK_DIR)
  80. .PHONY: kernel-headers