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

/make/dt2-kernel-modules.mk

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