Makefile 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. # This file is part of the OpenADK project. OpenADK is copyrighted
  2. # material, please see the LICENCE file in the top-level directory.
  3. include $(TOPDIR)/rules.mk
  4. include $(TOPDIR)/mk/kernel.mk
  5. include $(TOPDIR)/mk/modules.mk
  6. include $(TOPDIR)/mk/kernel-build.mk
  7. include $(TOPDIR)/mk/image.mk
  8. KERNEL:=$(LINUX_DIR)/$(ADK_TARGET_KERNEL)
  9. OSTRIP:=-R .reginfo -R .notes -R .note -R .comment -R .mdebug -R .note.gnu.build-id
  10. # target helper text
  11. ifeq ($(ADK_TARGET_FS),nfsroot)
  12. targethelp:
  13. @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
  14. @echo 'The nfs root tarball is: ${FW_DIR}/${ROOTFSUSERTARBALL}'
  15. ifeq ($(ADK_TARGET_SYSTEM_FON_FON2100),y)
  16. @echo 'Type the following in Redboot:'
  17. @echo 'RedBoot> load $(TARGET_KERNEL)'
  18. @echo 'RedBoot> go'
  19. endif
  20. ifeq ($(ADK_TARGET_SYSTEM_LEMOTE_YEELONG),y)
  21. @echo 'Boot your Lemote Yeelong and type following commands in PMON:'
  22. @echo 'PMON> ifaddr rtl0 <ip-address-client>'
  23. @echo 'PMON> load tftp://<ip-address-server>/${TARGET_KERNEL}'
  24. @echo 'PMON> g'
  25. endif
  26. endif
  27. ifeq ($(ADK_TARGET_FS),yaffs)
  28. targethelp:
  29. @echo 'The root tarball is: ${FW_DIR}/${ROOTFSTARBALL}'
  30. @echo 'Format your NAND with Routerboot, boot via NFS and'
  31. @echo 'then install kernel and filesystem via:'
  32. @echo 'adkinstall ${ROOTFSTARBALL}'
  33. endif
  34. ifeq ($(ADK_TARGET_FS),usb)
  35. targethelp:
  36. @echo 'The root tarball is: ${FW_DIR}/${ROOTFSTARBALL}'
  37. ifeq ($(ADK_TARGET_SYSTEM_LEMOTE_YEELONG),y)
  38. @echo "Startup the netbook and type del to enter PMON:"
  39. @echo "PMON> load /dev/fs/ext2@usb0/boot/kernel"
  40. @echo "PMON> g"
  41. endif
  42. endif
  43. ifeq ($(ADK_TARGET_FS),archive)
  44. targethelp:
  45. @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSTARBALL)"
  46. ifeq ($(ADK_HARDWARE_QEMU),y)
  47. @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
  48. @echo "Use following command to create a QEMU Image:"
  49. @echo "./scripts/create.sh qemu-${CPU_ARCH}.img $(FW_DIR)/$(ROOTFSTARBALL)"
  50. @echo "Start qemu with following options:"
  51. @echo 'qemu-system-${CPU_ARCH} -nographic -M malta -device e1000,netdev=adk0 -netdev user,id=adk0 -kernel $(FW_DIR)/$(TARGET_KERNEL) qemu-${CPU_ARCH}.img'
  52. endif
  53. ifeq ($(ADK_TARGET_SYSTEM_LEMOTE_YEELONG),y)
  54. @echo "Startup the Lemote Yeelong and type del to enter PMON:"
  55. @echo "PMON> load /dev/fs/ext2@wd0a/boot/kernel"
  56. @echo "PMON> g root=/dev/sda1"
  57. endif
  58. ifeq ($(ADK_TARGET_SYSTEM_MIKROTIK_RB532),y)
  59. @echo "Use following command to install it on CF card:"
  60. @echo "sudo ./scripts/install-rb532.sh /dev/sdX $(FW_DIR)/$(ROOTFSTARBALL)"
  61. endif
  62. endif
  63. ifeq ($(ADK_TARGET_FS),initramfsarchive)
  64. targethelp:
  65. @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
  66. @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSUSERTARBALL)"
  67. endif
  68. ifeq ($(ADK_TARGET_FS),initramfs)
  69. targethelp:
  70. @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
  71. @echo 'The initramfs image is: ${FW_DIR}/${INITRAMFS}'
  72. ifeq ($(ADK_HARDWARE_QEMU),y)
  73. @echo "Start qemu with following command line:"
  74. @echo 'qemu-system-${CPU_ARCH} -nographic -M malta -device e1000,netdev=adk0 -netdev user,id=adk0 -kernel $(FW_DIR)/$(TARGET_KERNEL) -initrd ${FW_DIR}/${INITRAMFS}'
  75. endif
  76. endif
  77. ifeq ($(ADK_TARGET_FS),initramfs-piggyback)
  78. targethelp:
  79. @echo 'The kernel+initramfs file is: $(FW_DIR)/${TARGET_KERNEL}'
  80. ifeq ($(ADK_HARDWARE_QEMU),y)
  81. @echo "Start qemu with following command line:"
  82. @echo 'qemu-system-${CPU_ARCH} -nographic -M malta -device e1000,netdev=adk0 -netdev user,id=adk0 -kernel $(FW_DIR)/$(TARGET_KERNEL)'
  83. endif
  84. endif
  85. ifeq ($(ADK_TARGET_FS),squashfs)
  86. targethelp:
  87. ifeq ($(ADK_TARGET_SYSTEM_BROADCOM_BCM47XX),y)
  88. @echo 'You can flash the image via tftp:'
  89. @echo 'tftp 192.168.1.1'
  90. @echo 'tftp> binary'
  91. @echo "tftp> put $(ROOTFSSQUASHFS) upgrade_code.bin"
  92. endif
  93. endif
  94. # image creation and kernel install
  95. ifeq ($(ADK_TARGET_SYSTEM_BROADCOM_BCM47XX),y)
  96. kernel-install:
  97. ${TARGET_CROSS}objcopy ${OSTRIP} -S ${LINUX_DIR}/vmlinuz.elf \
  98. ${BUILD_DIR}/${TARGET_KERNEL}
  99. ${BUILD_DIR}/${ROOTFSSQUASHFS}: ${BUILD_DIR}/root.squashfs
  100. ${TARGET_CROSS}objcopy -O binary ${BUILD_DIR}/${TARGET_KERNEL} \
  101. ${BUILD_DIR}/${TARGET_KERNEL}.bin
  102. gzip -n9 <${BUILD_DIR}/${TARGET_KERNEL}.bin \
  103. >${BUILD_DIR}/${TARGET_KERNEL}.bin.gz
  104. printf '\0' >>${BUILD_DIR}/${TARGET_KERNEL}.bin.gz
  105. PATH='${TARGET_PATH}' trx -o $@~ -f ${BUILD_DIR}/${TARGET_KERNEL}.bin.gz -a 1024 -f ${BUILD_DIR}/root.squashfs
  106. ifneq ($(ADK_TARGET_BROADCOM_MODEL_ASUS_WL500GP),y)
  107. PATH='${TARGET_PATH}' addpattern -4 ${ADK_TOOLS_ADDPATTERN_ARGS} -g -i $@~ -o $@
  108. else
  109. cp $@~ $@
  110. endif
  111. endif
  112. ifeq ($(ADK_TARGET_SYSTEM_LINKSYS_AG241),y)
  113. kernel-install:
  114. ${TARGET_CROSS}objcopy -S -O srec $(KERNEL) $(LINUX_DIR)/vmlinux.srec
  115. PATH='${TARGET_PATH}' srec2bin $(LINUX_DIR)/vmlinux.srec $(LINUX_DIR)/vmlinux.bin
  116. (dd if=/dev/zero bs=16 count=1; cat $(LINUX_DIR)/vmlinux.bin) > $(LINUX_DIR)/vmlinux.tmp
  117. PATH='${TARGET_PATH}' addpattern -p AG3B -b -r 2.0 -i $(LINUX_DIR)/vmlinux.tmp \
  118. -o $(BUILD_DIR)/$(TARGET_KERNEL) 2>/dev/null
  119. endif
  120. ifeq ($(ADK_TARGET_SYSTEM_MIKROTIK_RB532),y)
  121. kernel-install:
  122. $(TARGET_CROSS)objcopy $(OSTRIP) -S $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL)
  123. @cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/${TARGET_KERNEL}
  124. endif
  125. ifeq ($(ADK_TARGET_SYSTEM_MIKROTIK_RB4XX),y)
  126. kernel-install:
  127. $(TARGET_CROSS)objcopy $(OSTRIP) -S $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL)
  128. @cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/${TARGET_KERNEL}
  129. endif
  130. ifeq ($(ADK_TARGET_SYSTEM_FON_FON2100),y)
  131. kernel-install:
  132. $(TARGET_CROSS)objcopy $(OSTRIP) -S $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL)
  133. @cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/${TARGET_KERNEL}
  134. ${BUILD_DIR}/${ROOTFSSQUASHFS}: ${BUILD_DIR}/root.squashfs
  135. $(TARGET_CROSS)objcopy $(OSTRIP) -S $(LINUX_DIR)/vmlinux $(BUILD_DIR)/vmlinux.strip
  136. dd if=$(BUILD_DIR)/vmlinux.strip of=${BUILD_DIR}/vmlinux bs=65536 conv=sync
  137. lzma -9efzc ${BUILD_DIR}/vmlinux > $(FW_DIR)/${TARGET_KERNEL}
  138. cp ${BUILD_DIR}/root.squashfs ${BUILD_DIR}/${ROOTFSSQUASHFS}
  139. endif
  140. ifeq ($(ADK_TARGET_SYSTEM_LEMOTE_YEELONG),y)
  141. kernel-install:
  142. $(TARGET_CROSS)objcopy $(OSTRIP) -S $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL)
  143. @cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/${TARGET_KERNEL}
  144. endif
  145. ifeq ($(ADK_HARDWARE_QEMU),y)
  146. kernel-install:
  147. $(TARGET_CROSS)objcopy $(OSTRIP) -S $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL)
  148. @cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/${TARGET_KERNEL}
  149. endif
  150. # filesystem specific targets
  151. ifeq ($(ADK_TARGET_FS),nfsroot)
  152. imageinstall: kernel-install $(FW_DIR)/$(ROOTFSUSERTARBALL) targethelp
  153. endif
  154. ifeq ($(ADK_TARGET_FS),yaffs)
  155. imageinstall: $(FW_DIR)/$(ROOTFSTARBALL) targethelp
  156. endif
  157. ifeq ($(ADK_TARGET_FS),archive)
  158. imageinstall: $(FW_DIR)/$(ROOTFSTARBALL) targethelp
  159. endif
  160. ifeq ($(ADK_TARGET_FS),initramfsarchive)
  161. imageinstall: kernel-install $(FW_DIR)/$(ROOTFSUSERTARBALL) targethelp
  162. endif
  163. ifeq ($(ADK_TARGET_FS),initramfs)
  164. imageinstall: kernel-install $(FW_DIR)/$(INITRAMFS) targethelp
  165. endif
  166. ifeq ($(ADK_TARGET_FS),initramfs-piggyback)
  167. imageinstall: createinitramfs targethelp
  168. @cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
  169. endif
  170. ifeq ($(ADK_TARGET_FS),usb)
  171. imageinstall: $(FW_DIR)/$(ROOTFSTARBALL) targethelp
  172. endif
  173. ifeq ($(ADK_TARGET_FS),squashfs)
  174. imageinstall: kernel-install ${BUILD_DIR}/${ROOTFSSQUASHFS} targethelp
  175. @if [ $$($(STATCMD) ${BUILD_DIR}/${ROOTFSSQUASHFS}) -gt 3801088 ];then \
  176. echo 'Image is too big!'; \
  177. else \
  178. ${CP} ${BUILD_DIR}/${ROOTFSSQUASHFS} ${FW_DIR}/${ROOTFSSQUASHFS}; \
  179. echo The image file is $(ROOTFSSQUASHFS); \
  180. fi
  181. endif