Makefile 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. #
  2. # Copyright (C) 2008-2011 OpenWrt.org
  3. #
  4. # This is free software, licensed under the GNU General Public License v2.
  5. # See /LICENSE for more information.
  6. #
  7. include $(TOPDIR)/rules.mk
  8. include $(INCLUDE_DIR)/image.mk
  9. DEVICE_VARS += DTS IMAGE_SIZE NETGEAR_BOARD_ID NETGEAR_HW_ID
  10. DEVICE_VARS += BUFFALO_TAG_PLATFORM BUFFALO_TAG_VERSION BUFFALO_TAG_MINOR
  11. DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK
  12. loadaddr-y := 0x80000000
  13. loadaddr-$(CONFIG_TARGET_ramips_rt288x) := 0x88000000
  14. loadaddr-$(CONFIG_TARGET_ramips_mt7621) := 0x80001000
  15. KERNEL_LOADADDR := $(loadaddr-y)
  16. KERNEL_DTB = kernel-bin | patch-dtb | lzma
  17. define Device/Default
  18. PROFILES = Default $$(DTS)
  19. KERNEL_DEPENDS = $$(wildcard ../dts/$$(DTS).dts)
  20. KERNEL := $(KERNEL_DTB) | uImage lzma
  21. DEVICE_DTS_DIR := ../dts
  22. IMAGES := sysupgrade.bin
  23. IMAGE_SIZE := $(ralink_default_fw_size_8M)
  24. SUPPORTED_DEVICES := $(subst _,$(comma),$(1))
  25. sysupgrade_bin := append-kernel | append-rootfs | pad-rootfs
  26. IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
  27. endef
  28. define Device/seama
  29. SEAMA_MTDBLOCK := 2
  30. IMAGES += factory.bin
  31. # 64 bytes offset:
  32. # - 28 bytes seama_header
  33. # - 36 bytes of META data (4-bytes aligned)
  34. IMAGE/default := append-kernel | pad-offset $$$$(BLOCKSIZE) 64 | append-rootfs
  35. IMAGE/sysupgrade.bin := \
  36. $$(IMAGE/default) | seama | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
  37. IMAGE/factory.bin := \
  38. $$(IMAGE/default) | pad-rootfs -x 64 | seama | seama-seal | check-size $$$$(IMAGE_SIZE)
  39. SEAMA_SIGNATURE :=
  40. endef
  41. define Build/patch-dtb
  42. $(call Image/BuildDTB,../dts/$(DTS).dts,[email protected])
  43. $(STAGING_DIR_HOST)/bin/patch-dtb $@ [email protected]
  44. endef
  45. define Build/trx
  46. $(STAGING_DIR_HOST)/bin/trx $(1) \
  47. -o $@ \
  48. -m $(IMAGE_SIZE) \
  49. -f $(IMAGE_KERNEL) \
  50. -a 4 -f $(IMAGE_ROOTFS)
  51. endef
  52. define Build/loader-common
  53. rm -rf [email protected]
  54. $(MAKE) -C lzma-loader \
  55. PKG_BUILD_DIR="[email protected]" \
  56. TARGET_DIR="$(dir $@)" LOADER_NAME="$(notdir $@)" \
  57. BOARD="$(BOARDNAME)" PLATFORM="$(PLATFORM)" \
  58. LZMA_TEXT_START=0x82000000 LOADADDR=$(KERNEL_LOADADDR) \
  59. $(1) compile loader.$(LOADER_TYPE)
  60. mv "$@.$(LOADER_TYPE)" "$@"
  61. rm -rf [email protected]
  62. endef
  63. define Build/loader-kernel
  64. $(call Build/loader-common,LOADER_DATA="$@")
  65. endef
  66. define Build/relocate-kernel
  67. rm -rf [email protected]
  68. $(CP) ../../generic/image/relocate [email protected]
  69. $(MAKE) -C [email protected] KERNEL_ADDR=$(KERNEL_LOADADDR) CROSS_COMPILE=$(TARGET_CROSS)
  70. ( \
  71. dd [email protected]/loader.bin bs=32 conv=sync && \
  72. perl -e '@s = stat("$@"); print pack("V", @s[7])' && \
  73. cat $@ \
  74. ) > [email protected]
  75. mv [email protected] $@
  76. rm -rf [email protected]
  77. endef
  78. define Build/umedia-header
  79. fix-u-media-header -T 0x46 -B $(1) -i $@ -o [email protected] && mv [email protected] $@
  80. endef
  81. define Build/edimax-header
  82. $(STAGING_DIR_HOST)/bin/mkedimaximg -i $@ -o [email protected] $(1)
  83. @mv [email protected] $@
  84. endef
  85. define Build/poray-header
  86. $(STAGING_DIR_HOST)/bin/mkporayfw $(1) -f $@ -o [email protected]
  87. mv [email protected] $@
  88. endef
  89. define Build/wrg-header
  90. mkwrgimg -i $@ -d "/dev/mtdblock/2" -s $(1) -o [email protected]
  91. mv [email protected] $@
  92. endef
  93. # combine kernel and rootfs into one image
  94. # mkdlinkfw <type> <optional extra arguments to mkdlinkfw binary>
  95. define Build/mkdlinkfw
  96. -$(STAGING_DIR_HOST)/bin/mkdlinkfw \
  97. -k $(IMAGE_KERNEL) \
  98. -r $(IMAGE_ROOTFS) \
  99. -o $@ \
  100. $(if $(DLINK_IMAGE_OFFSET), -O $(DLINK_IMAGE_OFFSET)) \
  101. -s $(DLINK_FIRMWARE_SIZE)
  102. endef
  103. define Build/mkdlinkfw-factory
  104. -$(STAGING_DIR_HOST)/bin/mkdlinkfw \
  105. -m $(DLINK_ROM_ID) -f $(DLINK_FAMILY_MEMBER) \
  106. -F $@ \
  107. -o [email protected] \
  108. $(if $(DLINK_IMAGE_OFFSET), -O $(DLINK_IMAGE_OFFSET)) \
  109. -s $(DLINK_FIRMWARE_SIZE)
  110. mv [email protected] $@
  111. endef
  112. define Build/zyimage
  113. $(STAGING_DIR_HOST)/bin/zyimage $(1) $@
  114. endef
  115. ralink_default_fw_size_4M=3866624
  116. ralink_default_fw_size_8M=8060928
  117. ralink_default_fw_size_16M=16121856
  118. ralink_default_fw_size_32M=33226752
  119. ifeq ($(SUBTARGET),rt288x)
  120. include rt288x.mk
  121. endif
  122. ifeq ($(SUBTARGET),rt305x)
  123. include rt305x.mk
  124. endif
  125. ifeq ($(SUBTARGET),rt3883)
  126. include rt3883.mk
  127. endif
  128. ifeq ($(SUBTARGET),mt7620)
  129. include mt7620.mk
  130. endif
  131. ifeq ($(SUBTARGET),mt7621)
  132. include mt7621.mk
  133. endif
  134. ifeq ($(SUBTARGET),mt76x8)
  135. include mt76x8.mk
  136. endif
  137. $(eval $(call BuildImage))