PageRenderTime 40ms CodeModel.GetById 14ms RepoModel.GetById 1ms app.codeStats 0ms

/make/tsx19-kernel-modules.mk

https://bitbucket.org/rainlake/optware
Makefile | 238 lines | 152 code | 27 blank | 59 comment | 8 complexity | 100e601eccb79e942e4f9fd7c881b565 MD5 | raw file
  1. ###########################################################
  2. #
  3. # kernel-modules
  4. #
  5. ###########################################################
  6. ifeq ($(OPTWARE_TARGET), $(filter tsx19, $(OPTWARE_TARGET)))
  7. TSX19_KERNEL_SITE=http://www.qnap.com
  8. TSX19_KERNEL_SOURCE=QNAP_TS_X19_GPL_linux-2.6.22.18.tar.bz2
  9. # KERNEL_SOURCE_SITE=http://www.kernel.org/pub/linux/kernel/v2.6
  10. # KERNEL_SOURCE=linux-2.6.22.18.tar.bz2
  11. KERNEL_VERSION=2.6.22.18
  12. KERNEL-MODULES_DIR=linux-$(KERNEL_VERSION)
  13. KERNEL-MODULES_MAINTAINER=NSLU2 Linux <nslu2-linux@yahoogroups.com>
  14. KERNEL-IMAGE_DESCRIPTION=Kernel
  15. KERNEL-MODULE_DESCRIPTION=Kernel module
  16. KERNEL-MODULES_DESCRIPTION=Kernel modules
  17. KERNEL-MODULES_SECTION=kernel
  18. KERNEL-MODULES_PRIORITY=optional
  19. KERNEL-MODULES_DEPENDS=
  20. KERNEL-MODULES_SUGGESTS=
  21. KERNEL-MODULES_CONFLICTS=
  22. KERNEL-MODULES=`find $(KERNEL-MODULES_IPK_DIR) -name *.ko`
  23. #
  24. # KERNEL-MODULES_IPK_VERSION should be incremented when the ipk changes.
  25. #
  26. KERNEL-MODULES_IPK_VERSION=1
  27. #
  28. # KERNEL-MODULES_CONFFILES should be a list of user-editable files
  29. #KERNEL-MODULES_CONFFILES=/opt/etc/kernel-modules.conf /opt/etc/init.d/SXXkernel-modules
  30. #
  31. # KERNEL-MODULES_PATCHES should list any patches, in the the order in
  32. # which they should be applied to the source code.
  33. #
  34. #KERNEL-MODULES_PATCHES = \
  35. $(TSX19_KERNEL_SOURCE_DIR)/arch-arm-Makefile.patch \
  36. #
  37. # If the compilation of the package requires additional
  38. # compilation or linking flags, then list them here.
  39. #
  40. KERNEL-MODULES_CPPFLAGS=
  41. KERNEL-MODULES_LDFLAGS=
  42. TSX19_KERNEL_SOURCE_DIR=$(SOURCE_DIR)/kernel-modules/qnap-ts-x19
  43. KERNEL_BUILD_DIR=$(BUILD_DIR)/linux-2.6.22.18
  44. KERNEL-MODULES_IPK_DIR=$(BUILD_DIR)/kernel-modules-$(KERNEL_VERSION)-ipk
  45. KERNEL-MODULE_IPKS_DIR=$(BUILD_DIR)/kernel-module-$(KERNEL_VERSION)-ipks
  46. KERNEL-MODULES_IPK=$(BUILD_DIR)/kernel-modules_$(KERNEL_VERSION)-$(KERNEL-MODULES_IPK_VERSION)_$(TARGET_ARCH).ipk
  47. KERNEL-IMAGE_IPK_DIR=$(BUILD_DIR)/kernel-image-$(KERNEL_VERSION)-ipk
  48. KERNEL-IMAG_IPK=$(BUILD_DIR)/kernel-image_$(KERNEL_VERSION)-$(KERNEL-MODULES_IPK_VERSION)_$(TARGET_ARCH).ipk
  49. #
  50. # This is the dependency on the source code. If the source is missing,
  51. # then it will be fetched from the site using wget.
  52. #
  53. $(DL_DIR)/$(TSX19_KERNEL_SOURCE):
  54. $(WGET) -P $(@D) $(SOURCES_NLO_SITE)/$(@F)
  55. #
  56. # The source code depends on it existing within the download directory.
  57. # This target will be called by the top level Makefile to download the
  58. # source code's archive (.tar.gz, .bz2, etc.)
  59. #
  60. kernel-modules-source: $(DL_DIR)/$(TSX19_KERNEL_SOURCE) $(KERNEL-MODULES_PATCHES)
  61. KERNEL-MODULES-FLAGS = ARCH=arm ROOTDIR=$(KERNEL_BUILD_DIR) CROSS_COMPILE=$(TARGET_CROSS)
  62. KERNEL-MODULES_CONFIG_METHOD=oldconfig
  63. $(KERNEL_BUILD_DIR)/.configured: \
  64. $(DL_DIR)/$(TSX19_KERNEL_SOURCE) $(KERNEL-MODULES_PATCHES) \
  65. $(TSX19_KERNEL_SOURCE_DIR)/defconfig make/tsx19-kernel-modules.mk
  66. $(MAKE) u-boot-mkimage
  67. rm -rf $(KERNEL-MODULES_DIR) $(@D)
  68. tar -C $(BUILD_DIR) -xvjf $(DL_DIR)/$(TSX19_KERNEL_SOURCE)
  69. if test -n "$(KERNEL-MODULES_PATCHES)" ; \
  70. then cat $(KERNEL-MODULES_PATCHES) | \
  71. patch -d $(BUILD_DIR)/$(KERNEL-MODULES_DIR) -p1 ; \
  72. fi
  73. if test "$(BUILD_DIR)/$(KERNEL-MODULES_DIR)" != "$(@D)" ; \
  74. then mv $(BUILD_DIR)/$(KERNEL-MODULES_DIR) $(@D) ; \
  75. fi
  76. cp $(TSX19_KERNEL_SOURCE_DIR)/defconfig $(@D)/.config
  77. $(MAKE) -C $(@D) $(KERNEL-MODULES-FLAGS) $(KERNEL-MODULES_CONFIG_METHOD)
  78. touch $@
  79. kernel-modules-unpack: $(KERNEL_BUILD_DIR)/.configured
  80. #
  81. # This builds the actual binary.
  82. #
  83. $(KERNEL_BUILD_DIR)/.built: $(KERNEL_BUILD_DIR)/.configured
  84. rm -f $@
  85. PATH=$(HOST_STAGING_PREFIX)/bin:$$PATH \
  86. $(MAKE) -C $(@D) $(KERNEL-MODULES-FLAGS) uImage modules
  87. touch $@
  88. kernel-modules: $(KERNEL_BUILD_DIR)/.built
  89. $(KERNEL_BUILD_DIR)/.staged: $(KERNEL_BUILD_DIR)/.built
  90. rm -f $@
  91. rm -rf $(STAGING_DIR)/src/linux
  92. mkdir -p $(STAGING_DIR)/src/linux
  93. cp $(KERNEL_BUILD_DIR)/.config $(STAGING_DIR)/src/linux
  94. cp -a $(KERNEL_BUILD_DIR)/* $(STAGING_DIR)/src/linux
  95. touch $@
  96. kernel-modules-stage: $(KERNEL_BUILD_DIR)/.staged
  97. #
  98. # This rule creates a control file for ipkg. It is no longer
  99. # necessary to create a seperate control file under sources/kernel-modules
  100. #
  101. $(KERNEL-MODULES_IPK_DIR)/CONTROL/control:
  102. install -d $(@D)
  103. ( \
  104. echo "Package: kernel-modules"; \
  105. echo "Architecture: $(TARGET_ARCH)"; \
  106. echo "Priority: $(KERNEL-MODULES_PRIORITY)"; \
  107. echo "Section: $(KERNEL-MODULES_SECTION)"; \
  108. echo "Version: $(KERNEL_VERSION)-$(KERNEL-MODULES_IPK_VERSION)"; \
  109. echo "Maintainer: $(KERNEL-MODULES_MAINTAINER)"; \
  110. echo "Source: $(TSX19_KERNEL_SOURCE_SITE)/$(TSX19_KERNEL_SOURCE)"; \
  111. echo "Description: $(KERNEL-MODULES_DESCRIPTION)"; \
  112. echo -n "Depends: kernel-image"; \
  113. ) >> $@
  114. for m in $(KERNEL-MODULES); do \
  115. m=`basename $$m .ko`; \
  116. n=`echo $$m | sed -e 's/_/-/g' | tr '[A-Z]' '[a-z]'`; \
  117. install -d $(KERNEL-MODULE_IPKS_DIR)/$$n/CONTROL; \
  118. rm -f $(KERNEL-MODULE_IPKS_DIR)/$$n/CONTROL/control; \
  119. ( \
  120. echo -n ", kernel-module-$$n" >> $@; \
  121. echo "Package: kernel-module-$$n"; \
  122. echo "Architecture: $(TARGET_ARCH)"; \
  123. echo "Priority: $(KERNEL-MODULES_PRIORITY)"; \
  124. echo "Section: $(KERNEL-MODULES_SECTION)"; \
  125. echo "Version: $(KERNEL_VERSION)-$(KERNEL-MODULES_IPK_VERSION)"; \
  126. echo "Maintainer: $(KERNEL-MODULES_MAINTAINER)"; \
  127. echo "Source: $(TSX19_KERNEL_SOURCE_SITE)/$(TSX19_KERNEL_SOURCE)"; \
  128. echo "Description: $(KERNEL-MODULE_DESCRIPTION) $$m"; \
  129. echo -n "Depends: "; \
  130. DEPS="$(KERNEL-MODULES_DEPENDS)"; \
  131. for i in `grep "/$$m.ko:" $(KERNEL-MODULES_IPK_DIR)/opt/lib/modules/$(KERNEL_VERSION)*/modules.dep|cut -d ":" -f 2`; do \
  132. if test -n "$$DEPS"; then DEPS="$$DEPS,"; fi; \
  133. j=`basename $$i .ko | sed -e 's/_/-/g' | tr '[A-Z]' '[a-z]'`; \
  134. DEPS="$$DEPS kernel-module-$$j"; \
  135. done; \
  136. echo "$$DEPS";\
  137. echo "Suggests: $(KERNEL-MODULES_SUGGESTS)"; \
  138. echo "Conflicts: $(KERNEL-MODULES_CONFLICTS)"; \
  139. ) >> $(KERNEL-MODULE_IPKS_DIR)/$$n/CONTROL/control; \
  140. done
  141. echo "" >> $@
  142. $(KERNEL-IMAGE_IPK_DIR)/CONTROL/control:
  143. install -d $(@D)
  144. rm -f $@
  145. ( \
  146. echo "Package: kernel-image"; \
  147. echo "Architecture: $(TARGET_ARCH)"; \
  148. echo "Priority: $(KERNEL-MODULES_PRIORITY)"; \
  149. echo "Section: $(KERNEL-MODULES_SECTION)"; \
  150. echo "Version: $(KERNEL_VERSION)-$(KERNEL-MODULES_IPK_VERSION)"; \
  151. echo "Maintainer: $(KERNEL-MODULES_MAINTAINER)"; \
  152. echo "Source: $(TSX19_KERNEL_SOURCE_SITE)/$(TSX19_KERNEL_SOURCE)"; \
  153. echo "Description: $(KERNEL-IMAGE_DESCRIPTION)"; \
  154. ) >> $@
  155. #
  156. # This builds the IPK files.
  157. #
  158. $(KERNEL_BUILD_DIR)/.ipkdone: $(KERNEL_BUILD_DIR)/.built
  159. rm -f $(BUILD_DIR)/kernel-modules_*_$(TARGET_ARCH).ipk
  160. rm -f $(BUILD_DIR)/kernel-module-*_$(TARGET_ARCH).ipk
  161. # rm -f $(BUILD_DIR)/kernel-image_*_$(TARGET_ARCH).ipk
  162. # # Package the kernel image first
  163. # rm -rf $(KERNEL-IMAGE_IPK_DIR)* $(BUILD_DIR)/kernel-image_*_$(TARGET_ARCH).ipk
  164. # $(MAKE) $(KERNEL-IMAGE_IPK_DIR)/CONTROL/control
  165. # install -d $(KERNEL-IMAGE_IPK_DIR)/boot/
  166. # install -m 644 $(KERNEL_BUILD_DIR)/arch/arm/boot/uImage \
  167. $(KERNEL-IMAGE_IPK_DIR)/boot/uImage-$(KERNEL_VERSION)-optware-build-$(KERNEL-MODULES_IPK_VERSION)
  168. # ( cd $(BUILD_DIR); $(IPKG_BUILD) $(KERNEL-IMAGE_IPK_DIR) )
  169. # Now package the kernel modules
  170. rm -rf $(KERNEL-MODULES_IPK_DIR)* $(KERNEL-MODULE_IPKS_DIR)
  171. mkdir -p $(KERNEL-MODULES_IPK_DIR)/opt/lib/modules
  172. $(MAKE) -C $(KERNEL_BUILD_DIR) $(KERNEL-MODULES-FLAGS) \
  173. INSTALL_MOD_PATH=$(KERNEL-MODULES_IPK_DIR)/opt modules_install
  174. for m in $(KERNEL-MODULES); do \
  175. m=`basename $$m .ko`; \
  176. n=`echo $$m | sed -e 's/_/-/g' | tr '[A-Z]' '[a-z]'`; \
  177. ( cd $(KERNEL-MODULES_IPK_DIR) ; install -D -m 644 `find . -iname $$m.ko` $(KERNEL-MODULE_IPKS_DIR)/$$n/`find . -iname $$m.ko` ); \
  178. done
  179. $(MAKE) $(KERNEL-MODULES_IPK_DIR)/CONTROL/control
  180. for m in $(KERNEL-MODULES); do \
  181. m=`basename $$m .ko`; \
  182. n=`echo $$m | sed -e 's/_/-/g' | tr '[A-Z]' '[a-z]'`; \
  183. cd $(BUILD_DIR); $(IPKG_BUILD) $(KERNEL-MODULE_IPKS_DIR)/$$n; \
  184. done
  185. rm -f $(KERNEL-MODULES_IPK_DIR)/opt/lib/modules/$(KERNEL_VERSION)/build
  186. rm -f $(KERNEL-MODULES_IPK_DIR)/opt/lib/modules/$(KERNEL_VERSION)/source
  187. rm -rf $(KERNEL-MODULES_IPK_DIR)/opt/lib/modules/$(KERNEL_VERSION)/kernel
  188. ( cd $(BUILD_DIR); $(IPKG_BUILD) $(KERNEL-MODULES_IPK_DIR) )
  189. touch $@
  190. #
  191. # This is called from the top level makefile to create the IPK file.
  192. #
  193. kernel-modules-ipk: $(KERNEL_BUILD_DIR)/.ipkdone
  194. tsx19-kernel-modules-ipk: $(KERNEL_BUILD_DIR)/.ipkdone
  195. #
  196. # This is called from the top level makefile to clean all of the built files.
  197. #
  198. kernel-modules-clean:
  199. rm -f $(KERNEL_BUILD_DIR)/.built
  200. -$(MAKE) -C $(KERNEL_BUILD_DIR) clean
  201. #
  202. # This is called from the top level makefile to clean all dynamically created
  203. # directories.
  204. #
  205. kernel-modules-dirclean:
  206. rm -rf $(BUILD_DIR)/$(KERNEL-MODULES_DIR) $(KERNEL_BUILD_DIR)
  207. rm -rf $(KERNEL-MODULES_IPK_DIR)* $(KERNEL-IMAGE_IPK_DIR)* $(KERNEL-MODULE_IPKS_DIR)
  208. rm -f $(BUILD_DIR)/kernel-modules_*_$(TARGET_ARCH).ipk
  209. rm -f $(BUILD_DIR)/kernel-module-*_$(TARGET_ARCH).ipk
  210. rm -f $(BUILD_DIR)/kernel-image_*_$(TARGET_ARCH).ipk
  211. endif