kernel-headers.mk 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  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:=$(strip $(subst ",, $(BR2_DEFAULT_KERNEL_HEADERS)))
  10. #"
  11. LINUX_HEADERS_SITE:=127.0.0.1
  12. LINUX_HEADERS_SOURCE:=unspecified-kernel-headers
  13. LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-null
  14. ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.4.25")
  15. VERSION:=2
  16. PATCHLEVEL:=4
  17. SUBLEVEL:=25
  18. LINUX_HEADERS_SITE:=http://www.uclibc.org/downloads/toolchain
  19. LINUX_HEADERS_SOURCE:=linux-libc-headers-2.4.25.tar.bz2
  20. LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.4.25
  21. endif
  22. ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.4.27")
  23. VERSION:=2
  24. PATCHLEVEL:=4
  25. SUBLEVEL:=27
  26. LINUX_HEADERS_SITE:=http://www.uclibc.org/downloads/toolchain
  27. LINUX_HEADERS_SOURCE:=linux-libc-headers-2.4.27.tar.bz2
  28. LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.4.27
  29. endif
  30. ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.4.29")
  31. VERSION:=2
  32. PATCHLEVEL:=4
  33. SUBLEVEL:=29
  34. LINUX_HEADERS_SITE:=http://www.uclibc.org/downloads/toolchain
  35. LINUX_HEADERS_SOURCE:=linux-libc-headers-2.4.29.tar.bz2
  36. LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.4.29
  37. endif
  38. ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.4.31")
  39. VERSION:=2
  40. PATCHLEVEL:=4
  41. SUBLEVEL:=31
  42. LINUX_HEADERS_SITE:=http://www.uclibc.org/downloads/toolchain
  43. LINUX_HEADERS_SOURCE:=linux-libc-headers-2.4.31.tar.bz2
  44. LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.4.31
  45. endif
  46. ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.6.9")
  47. VERSION:=2
  48. PATCHLEVEL:=6
  49. SUBLEVEL:=9
  50. LINUX_HEADERS_SITE:=http://ep09.pld-linux.org/~mmazur/linux-libc-headers/
  51. LINUX_HEADERS_SOURCE:=linux-libc-headers-2.6.9.1.tar.bz2
  52. LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.6.9.1
  53. endif
  54. ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.6.10")
  55. VERSION:=2
  56. PATCHLEVEL:=6
  57. SUBLEVEL:=10
  58. LINUX_HEADERS_SITE:=http://ep09.pld-linux.org/~mmazur/linux-libc-headers/
  59. LINUX_HEADERS_SOURCE:=linux-libc-headers-2.6.10.0.tar.bz2
  60. LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.6.10.0
  61. endif
  62. ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.6.11")
  63. VERSION:=2
  64. PATCHLEVEL:=6
  65. SUBLEVEL:=11
  66. LINUX_HEADERS_SITE:=http://ep09.pld-linux.org/~mmazur/linux-libc-headers/
  67. LINUX_HEADERS_SOURCE:=linux-libc-headers-2.6.11.0.tar.bz2
  68. LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.6.11.0
  69. endif
  70. ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.6.12")
  71. VERSION:=2
  72. PATCHLEVEL:=6
  73. SUBLEVEL:=12
  74. LINUX_HEADERS_SITE:=http://ep09.pld-linux.org/~mmazur/linux-libc-headers/
  75. LINUX_HEADERS_SOURCE:=linux-libc-headers-2.6.12.0.tar.bz2
  76. LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.6.12.0
  77. endif
  78. LINUX_HEADERS_IS_KERNEL=n
  79. ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.6.18")
  80. VERSION:=2
  81. PATCHLEVEL:=6
  82. SUBLEVEL:=18
  83. LINUX_HEADERS_SITE:=http://www.kernel.org/pub/linux/kernel/v2.6/
  84. LINUX_HEADERS_SOURCE:=linux-2.6.18.tar.bz2
  85. LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-2.6.18
  86. LINUX_HEADERS_IS_KERNEL=y
  87. endif
  88. LINUX_HEADERS_VERSION:=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)
  89. LINUX_HEADERS_DIR:=$(TOOL_BUILD_DIR)/linux
  90. LINUX_HEADERS_DO_MOVE=n
  91. ifneq ($(LINUX_HEADERS_UNPACK_DIR),$(LINUX_HEADERS_DIR))
  92. LINUX_HEADERS_DO_MOVE=y
  93. endif
  94. ifeq ($(LINUX_HEADERS_IS_KERNEL),y)
  95. LINUX_HEADERS_DO_MOVE=n
  96. endif
  97. $(DL_DIR)/$(LINUX_HEADERS_SOURCE):
  98. mkdir -p $(DL_DIR)
  99. $(WGET) -P $(DL_DIR) $(LINUX_HEADERS_SITE)/$(LINUX_HEADERS_SOURCE)
  100. ifeq ($(LINUX_HEADERS_DO_MOVE),y)
  101. $(LINUX_HEADERS_DIR)/.unpacked: $(DL_DIR)/$(LINUX_HEADERS_SOURCE)
  102. rm -rf $(LINUX_HEADERS_DIR)
  103. mkdir -p $(TOOL_BUILD_DIR)
  104. bzcat $(DL_DIR)/$(LINUX_HEADERS_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
  105. mv $(LINUX_HEADERS_UNPACK_DIR) $(LINUX_HEADERS_DIR)
  106. touch $(LINUX_HEADERS_DIR)/.unpacked
  107. else
  108. $(LINUX_HEADERS_UNPACK_DIR)/.unpacked: $(DL_DIR)/$(LINUX_HEADERS_SOURCE)
  109. rm -rf $(LINUX_HEADERS_DIR)
  110. mkdir -p $(TOOL_BUILD_DIR)
  111. bzcat $(DL_DIR)/$(LINUX_HEADERS_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
  112. touch $(LINUX_HEADERS_UNPACK_DIR)/.unpacked
  113. endif
  114. ifeq ($(LINUX_HEADERS_IS_KERNEL),y)
  115. # full kernel tarball >= 2.6.18
  116. KERNEL_ARCH:=$(shell $(SHELL) -c 'if test "$(ARCH)" = "i486" -o "$(ARCH)" = "i586"; then echo i386; else echo $(ARCH); fi')
  117. $(LINUX_HEADERS_UNPACK_DIR)/.patched: $(LINUX_HEADERS_UNPACK_DIR)/.unpacked
  118. toolchain/patch-kernel.sh $(LINUX_HEADERS_UNPACK_DIR) toolchain/kernel-headers linux-$(LINUX_HEADERS_VERSION)\*.patch
  119. $(LINUX_HEADERS_DIR)/.configured: $(LINUX_HEADERS_UNPACK_DIR)/.patched
  120. (cd $(LINUX_HEADERS_UNPACK_DIR) ; \
  121. $(MAKE) ARCH=$(KERNEL_ARCH) INSTALL_HDR_PATH=$(LINUX_HEADERS_DIR) headers_install)
  122. touch $(LINUX_HEADERS_DIR)/.configured
  123. else
  124. # the sanitized kernel-headers
  125. $(LINUX_HEADERS_DIR)/.patched: $(LINUX_HEADERS_DIR)/.unpacked
  126. toolchain/patch-kernel.sh $(LINUX_HEADERS_DIR) toolchain/kernel-headers linux-libc-headers-$(LINUX_HEADERS_VERSION)\*.patch
  127. ifeq ($(strip $(ARCH)),nios2)
  128. toolchain/patch-kernel.sh $(LINUX_HEADERS_DIR) toolchain/kernel-headers linux-libc-headers-$(LINUX_HEADERS_VERSION)-nios2nommu.patch.conditional
  129. endif
  130. touch $(LINUX_HEADERS_DIR)/.patched
  131. $(LINUX_HEADERS_DIR)/.configured: $(LINUX_HEADERS_DIR)/.patched
  132. rm -f $(LINUX_HEADERS_DIR)/include/asm
  133. @if [ ! -f $(LINUX_HEADERS_DIR)/Makefile ] ; then \
  134. echo -e "VERSION = $(VERSION)\nPATCHLEVEL = $(PATCHLEVEL)\n" > \
  135. $(LINUX_HEADERS_DIR)/Makefile; \
  136. echo -e "SUBLEVEL = $(SUBLEVEL)\nEXTRAVERSION =\n" >> \
  137. $(LINUX_HEADERS_DIR)/Makefile; \
  138. echo -e "KERNELRELEASE=\$$(VERSION).\$$(PATCHLEVEL).\$$(SUBLEVEL)\$$(EXTRAVERSION)" >> \
  139. $(LINUX_HEADERS_DIR)/Makefile; \
  140. fi;
  141. @if [ "$(ARCH)" = "powerpc" ];then \
  142. (cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-ppc$(NOMMU) asm;) \
  143. elif [ "$(ARCH)" = "mips" ];then \
  144. (cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-mips$(NOMMU) asm;) \
  145. elif [ "$(ARCH)" = "mipsel" ];then \
  146. (cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-mips$(NOMMU) asm;) \
  147. elif [ "$(ARCH)" = "nios2" ];then \
  148. (cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-nios2nommu asm;) \
  149. elif [ "$(ARCH)" = "arm" ];then \
  150. (cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-arm$(NOMMU) asm; \
  151. cd asm; \
  152. if [ ! -L proc ] ; then \
  153. ln -fs proc-armv proc; \
  154. ln -fs arch-ebsa285 arch; fi); \
  155. elif [ "$(ARCH)" = "armeb" ];then \
  156. (cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-arm$(NOMMU) asm; \
  157. cd asm; \
  158. if [ ! -L proc ] ; then \
  159. ln -fs proc-armv proc; \
  160. ln -fs arch-ebsa285 arch; fi); \
  161. elif [ "$(ARCH)" = "cris" ];then \
  162. (cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-cris asm;) \
  163. elif [ "$(ARCH)" = "sh3" ];then \
  164. (cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-sh asm; \
  165. cd asm; \
  166. ln -s cpu-sh3 cpu) \
  167. elif [ "$(ARCH)" = "sh3eb" ];then \
  168. (cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-sh asm; \
  169. cd asm; \
  170. ln -s cpu-sh3 cpu) \
  171. elif [ "$(ARCH)" = "sh4" ];then \
  172. (cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-sh asm; \
  173. cd asm; \
  174. ln -s cpu-sh4 cpu) \
  175. elif [ "$(ARCH)" = "sh4eb" ];then \
  176. (cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-sh asm; \
  177. cd asm; \
  178. ln -s cpu-sh4 cpu) \
  179. elif [ "$(ARCH)" = "i386" -o "$(ARCH)" = "i486" -o "$(ARCH)" = "i586" -o "$(ARCH)" = "i686" ];then \
  180. (cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-i386$(NOMMU) asm;) \
  181. else \
  182. (cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-$(ARCH)$(NOMMU) asm;) \
  183. fi
  184. touch $(LINUX_HEADERS_DIR)/include/linux/autoconf.h;
  185. touch $(LINUX_HEADERS_DIR)/.configured
  186. endif
  187. $(LINUX_KERNEL): $(LINUX_HEADERS_DIR)/.configured
  188. kernel-headers: $(LINUX_HEADERS_DIR)/.configured
  189. kernel-headers-source: $(DL_DIR)/$(LINUX_HEADERS_SOURCE)
  190. kernel-headers-clean: clean
  191. rm -f $(LINUX_KERNEL)
  192. rm -rf $(LINUX_HEADERS_DIR)
  193. kernel-headers-dirclean:
  194. rm -rf $(LINUX_HEADERS_DIR)
  195. .PHONY: kernel-headers