ath79: move seama image recipe to the common Makefile
[openwrt/openwrt.git] / target / linux / ath79 / image / Makefile
1 include $(TOPDIR)/rules.mk
2 include $(INCLUDE_DIR)/image.mk
3
4 KERNEL_LOADADDR = 0x80060000
5
6 DEVICE_VARS += LOADER_FLASH_OFFS LOADER_TYPE
7 DEVICE_VARS += LOADER_FLASH_MAX LOADER_KERNEL_MAGIC
8 DEVICE_VARS += NETGEAR_BOARD_ID NETGEAR_HW_ID
9 DEVICE_VARS += RAS_BOARD RAS_ROOTFS_SIZE RAS_VERSION
10 DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK
11
12 define Build/loader-common
13 rm -rf $@.src
14 $(MAKE) -C lzma-loader \
15 PKG_BUILD_DIR="$@.src" \
16 TARGET_DIR="$(dir $@)" LOADER_NAME="$(notdir $@)" \
17 $(1) compile loader.$(LOADER_TYPE)
18 mv "$@.$(LOADER_TYPE)" "$@"
19 rm -rf $@.src
20 endef
21
22 define Build/loader-kernel
23 $(call Build/loader-common, \
24 LOADER_DATA="$@" \
25 BOARD="$(DEVICE_NAME)" )
26 endef
27
28 define Build/loader-okli-compile
29 $(call Build/loader-common, \
30 FLASH_OFFS=$(LOADER_FLASH_OFFS) \
31 FLASH_MAX=$(LOADER_FLASH_MAX) \
32 KERNEL_MAGIC=$(LOADER_KERNEL_MAGIC) \
33 BOARD="$(DEVICE_NAME)" )
34 endef
35
36 # Arguments: <output name> <kernel offset>
37 define Build/loader-okli
38 dd if=$(KDIR)/loader-$(word 1,$(1)).$(LOADER_TYPE) bs=$(word 2,$(1)) conv=sync of="$@.new"
39 cat "$@" >> "$@.new"
40 mv "$@.new" "$@"
41 endef
42
43 define Build/append-loader-okli
44 cat "$(KDIR)/loader-$(word 1,$(1)).$(LOADER_TYPE)" >> "$@"
45 endef
46
47 define Build/append-loader-okli-uimage
48 cat "$(KDIR)/loader-$(word 1,$(1)).uImage" >> "$@"
49 endef
50
51 define Build/relocate-kernel
52 rm -rf $@.relocate
53 $(CP) ../../generic/image/relocate $@.relocate
54 $(MAKE) -j1 -C $@.relocate KERNEL_ADDR=$(KERNEL_LOADADDR) CROSS_COMPILE=$(TARGET_CROSS)
55 ( \
56 dd if=$@.relocate/loader.bin bs=32 conv=sync && \
57 perl -e '@s = stat("$@"); print pack("N", @s[7])' && \
58 cat "$@" \
59 ) > "$@.new"
60 mv "$@.new" "$@"
61 rm -rf $@.relocate
62 endef
63
64
65 define Device/Default
66 DEVICE_DTS_DIR := ../dts
67 DEVICE_DTS = $$(SOC)_$(1)
68 PROFILES = Default
69 MTDPARTS :=
70 BLOCKSIZE := 64k
71 KERNEL := kernel-bin | append-dtb | lzma | uImage lzma
72 KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | uImage lzma
73 LOADER_KERNEL_MAGIC :=
74 LOADER_FLASH_MAX :=
75 LOADER_FLASH_OFFS :=
76 LOADER_TYPE :=
77 COMPILE :=
78 IMAGES := sysupgrade.bin
79 IMAGE/sysupgrade.bin = append-kernel | pad-to $$$$(BLOCKSIZE) | \
80 append-rootfs | pad-rootfs | check-size | append-metadata
81 endef
82
83 define Device/loader-okli-uimage
84 LOADER_TYPE := bin
85 COMPILE := loader-$(1).bin loader-$(1).uImage
86 COMPILE/loader-$(1).bin := loader-okli-compile
87 COMPILE/loader-$(1).uImage := loader-okli-compile | pad-to 64k | \
88 lzma | uImage lzma
89 endef
90
91 define Device/seama
92 KERNEL := kernel-bin | append-dtb | relocate-kernel | lzma
93 KERNEL_INITRAMFS := $$(KERNEL) | seama
94 IMAGES += factory.bin
95 SEAMA_MTDBLOCK := 1
96
97 # 64 bytes offset:
98 # - 28 bytes seama_header
99 # - 36 bytes of META data (4-bytes aligned)
100 IMAGE/default := append-kernel | pad-offset $$$$(BLOCKSIZE) 64 | append-rootfs
101 IMAGE/sysupgrade.bin := $$(IMAGE/default) | seama | pad-rootfs | \
102 check-size | append-metadata
103 IMAGE/factory.bin := $$(IMAGE/default) | pad-rootfs -x 64 | seama | \
104 seama-seal | check-size
105 SEAMA_SIGNATURE :=
106 endef
107
108 include $(SUBTARGET).mk
109
110 ifeq ($(SUBTARGET),generic)
111 include generic-tp-link.mk
112 include generic-ubnt.mk
113 endif
114
115 ifeq ($(SUBTARGET),tiny)
116 include tiny-netgear.mk
117 include tiny-tp-link.mk
118 include tiny-ubnt.mk
119 endif
120
121 $(eval $(call BuildImage))