5776c2ee6953d2203ffffd1008e5df98d6bba8bc
[openwrt/openwrt.git] / target / linux / kirkwood / image / Makefile
1 #
2 # Copyright (C) 2009-2013 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 NAND_BLOCKSIZE := 2048-128k
9
10 include $(TOPDIR)/rules.mk
11 include $(INCLUDE_DIR)/image.mk
12
13 DEVICE_VARS += KERNEL_SIZE
14 KERNEL_LOADADDR:=0x8000
15 TARGET_DEVICES = linksys-audi linksys-viper dockstar goflexnet goflexhome
16
17 UBI_OPTS:="-m 2048 -p 128KiB -s 512"
18 UBIFS_OPTS:="-m 2048 -e 126KiB -c 4096"
19
20 define Device/Default
21 KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts)
22 KERNEL := kernel-bin | append-dtb | uImage none
23 KERNEL_NAME := zImage
24 KERNEL_SUFFIX := -uImage
25 KERNEL_INSTALL := 1
26 endef
27
28 define Device/dockstar
29 DEVICE_DTS := kirkwood-dockstar
30 PAGESIZE := 2048
31 SUBPAGESIZE := 512
32 BLOCKSIZE := 128KiB
33 FILESYSTEMS := squashfs
34 PROFILES := Generic DOCKSTAR
35 IMAGES := factory.bin sysupgrade.tar
36 IMAGE/factory.bin := append-ubi
37 IMAGE/sysupgrade.tar := sysupgrade-nand
38 KERNEL_IN_UBI := 1
39 KERNEL := kernel-bin | append-dtb
40 endef
41
42 define Device/goflexnet
43 $(Device/dockstar)
44 PROFILES := Generic GOFLEXNET
45 DEVICE_DTS := kirkwood-goflexnet
46 endef
47
48 define Device/goflexhome
49 $(Device/dockstar)
50 PROFILES := Generic GOFLEXHOME
51 DEVICE_DTS := kirkwood-goflexhome
52 endef
53
54 define Device/linksys-audi
55 DEVICE_DTS := kirkwood-linksys-audi
56 PAGESIZE := 512
57 SUBPAGESIZE := 256
58 BLOCKSIZE := 16KiB
59 KERNEL_SIZE := 2624k
60 FILESYSTEMS := squashfs
61 PROFILES := Generic AUDI
62 IMAGES := factory.bin sysupgrade.tar
63 IMAGE/factory.bin := append-kernel $$$$(KERNEL_SIZE) | append-ubi
64 IMAGE/sysupgrade.tar := sysupgrade-nand
65 endef
66
67 define Device/linksys-viper
68 DEVICE_DTS := kirkwood-linksys-viper
69 PAGESIZE := 2048
70 SUBPAGESIZE := 512
71 BLOCKSIZE := 128KiB
72 KERNEL_SIZE := 2688k
73 FILESYSTEMS := squashfs
74 PROFILES := Generic VIPER
75 IMAGES := factory.bin sysupgrade.tar
76 IMAGE/factory.bin := append-kernel $$$$(KERNEL_SIZE) | append-ubi
77 IMAGE/sysupgrade.tar := sysupgrade-nand
78 endef
79
80 define Image/BuildKernel/Template
81
82 $(CP) $(KDIR)/zImage $(BIN_DIR)/$(IMG_PREFIX)-zImage
83 echo -ne '\x00\x00\x00\x00' >> $(BIN_DIR)/$(IMG_PREFIX)-zImage
84 $(call Image/BuildKernel/MkuImage, \
85 none, 0x8000, 0x8000, \
86 $(BIN_DIR)/$(IMG_PREFIX)-zImage, \
87 $(BIN_DIR)/$(IMG_PREFIX)-uImage \
88 )
89
90 ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
91 $(CP) $(KDIR)/zImage-initramfs $(BIN_DIR)/$(IMG_PREFIX)-zImage-initramfs
92 echo -ne '\x00\x00\x00\x00' >> $(BIN_DIR)/$(IMG_PREFIX)-zImage-initramfs
93 $(call Image/BuildKernel/MkuImage, \
94 none, 0x8000, 0x8000, \
95 $(BIN_DIR)/$(IMG_PREFIX)-zImage-initramfs, \
96 $(BIN_DIR)/$(IMG_PREFIX)-uImage-initramfs \
97 )
98 endif
99
100 ifneq ($(1),)
101 $(CP) $(DTS_DIR)/kirkwood-$(1).dtb $(BIN_DIR)/$(IMG_PREFIX)-$(1).dtb
102
103 $(CP) $(KDIR)/zImage $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE_SANITIZED)-zImage
104 cat $(BIN_DIR)/$(IMG_PREFIX)-$(1).dtb >> $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE_SANITIZED)-zImage
105 $(call Image/BuildKernel/MkuImage, \
106 none, 0x8000, 0x8000, \
107 $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE_SANITIZED)-zImage, \
108 $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE_SANITIZED)-uImage \
109 )
110
111 ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
112 $(CP) $(KDIR)/zImage-initramfs $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE_SANITIZED)-zImage-initramfs
113 cat $(BIN_DIR)/$(IMG_PREFIX)-$(1).dtb >> $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE_SANITIZED)-zImage-initramfs
114 $(call Image/BuildKernel/MkuImage, \
115 none, 0x8000, 0x8000, \
116 $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE_SANITIZED)-zImage-initramfs, \
117 $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE_SANITIZED)-uImage-initramfs \
118 )
119 endif
120 endif
121 endef
122
123 define Image/InstallKernel/Template
124
125 ifneq ($(CONFIG_TARGET_ROOTFS_INCLUDE_KERNEL),)
126 $(INSTALL_DIR) $(TARGET_DIR)/boot
127 ifneq ($(CONFIG_TARGET_ROOTFS_INCLUDE_UIMAGE),)
128 $(CP) $(BIN_DIR)/$(IMG_PREFIX)-uImage $(TARGET_DIR)/boot/
129 ln -sf $(IMG_PREFIX)-uImage $(TARGET_DIR)/boot/uImage
130 endif
131 ifneq ($(CONFIG_TARGET_ROOTFS_INCLUDE_ZIMAGE),)
132 $(CP) $(BIN_DIR)/$(IMG_PREFIX)-zImage $(TARGET_DIR)/boot/
133 ln -sf $(IMG_PREFIX)-zImage $(TARGET_DIR)/boot/zImage
134 endif
135 endif
136
137 ifneq ($(CONFIG_TARGET_ROOTFS_INCLUDE_DTB),)
138 $(INSTALL_DIR) $(TARGET_DIR)/boot
139 ifneq ($(1),)
140 $(CP) $(BIN_DIR)/$(IMG_PREFIX)-$(1).dtb $(TARGET_DIR)/boot/
141 ln -sf $(IMG_PREFIX)-$(1).dtb $(TARGET_DIR)/boot/$(1).dtb
142 endif
143 endif
144 endef
145
146 define Image/Build/jffs2-nand-2048-128k
147 dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE_SANITIZED)-$(1).img \
148 bs=2048 conv=sync
149 endef
150
151 define Image/Build/squashfs
152 $(call prepare_generic_squashfs,$(KDIR)/root.squashfs)
153 ( \
154 dd if=$(KDIR)/zImage bs=4096k conv=sync; \
155 dd if=$(KDIR)/root.$(1) bs=128k conv=sync; \
156 ) > $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE_SANITIZED)-$(1).img
157 endef
158
159 define Image/Build/ubifs
160
161 ifneq ($($(PROFILE)_UBIFS_OPTS),)
162 $(CP) $(KDIR)/root.ubifs $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE_SANITIZED)-rootfs.ubifs
163 endif
164 endef
165
166 define Image/Build/ubi
167
168 ifneq ($($(PROFILE)_UBI_OPTS),)
169 $(CP) $(KDIR)/root.ubi $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE_SANITIZED)-rootfs.ubi
170 endif
171 endef
172
173 Image/BuildKernel/Template/Generic=$(call Image/BuildKernel/Template)
174 Image/InstallKernel/Template/Generic=$(call Image/InstallKernel/Template)
175
176 Image/BuildKernel/Template/IB62X0=$(call Image/BuildKernel/Template,ib62x0)
177 Image/InstallKernel/Template/IB62X0=$(call Image/InstallKernel/Template,ib62x0)
178
179 Image/BuildKernel/Template/ICONNECT=$(call Image/BuildKernel/Template,iconnect)
180 Image/InstallKernel/Template/ICONNECT=$(call Image/InstallKernel/Template,iconnect)
181
182 IOMEGA_IX2_200_UBIFS_OPTS:="-m 512 -e 15872 -c 2048"
183 IOMEGA_IX2_200_UBI_OPTS:="-m 512 -p 16384 -s 256"
184
185 Image/BuildKernel/Template/IOMEGA_IX2_200=$(call Image/BuildKernel/Template,iomega_ix2_200)
186 Image/InstallKernel/Template/IOMEGA_IX2_200=$(call Image/InstallKernel/Template,iomega_ix2_200)
187
188 Image/BuildKernel/Template/NSA310S=$(call Image/BuildKernel/Template,nsa310s)
189 Image/InstallKernel/Template/NSA310S=$(call Image/InstallKernel/Template,nsa310s)
190
191 Image/BuildKernel/Template/POGOE02=$(call Image/BuildKernel/Template,pogo_e02)
192 Image/InstallKernel/Template/POGOE02=$(call Image/InstallKernel/Template,pogo_e02)
193
194 Image/BuildKernel/Template/SHEEVAPLUG=$(call Image/BuildKernel/Template,sheevaplug)
195 Image/InstallKernel/Template/SHEEVAPLUG=$(call Image/InstallKernel/Template,sheevaplug)
196
197 Image/BuildKernel/Template/SHEEVAPLUGSATA=$(call Image/BuildKernel/Template,sheevaplug-esata)
198 Image/InstallKernel/Template/SHEEVAPLUGSATA=$(call Image/InstallKernel/Template,sheevaplug-esata)
199
200 Image/BuildKernel/Template/GuruplugServerPlus=$(call Image/BuildKernel/Template,guruplug-server-plus)
201 Image/InstallKernel/Template/GuruplugServerPlus=$(call Image/InstallKernel/Template,guruplug-server-plus)
202
203 Image/BuildKernel/Template/Topkick1281P2=$(call Image/BuildKernel/Template,topkick)
204 Image/InstallKernel/Template/Topkick1281P2=$(call Image/InstallKernel/Template,topkick)
205
206 define Image/BuildKernel
207 $(call Image/BuildKernel/Template/$(PROFILE))
208 endef
209
210 define Image/InstallKernel
211 $(call Image/InstallKernel/Template/$(PROFILE))
212 endef
213
214 define Image/Build
215 $(if $(Image/Build/$(1)), \
216 $(call Image/Build/$(1),$(1)), \
217 $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE_SANITIZED)-$(1).img \
218 )
219 endef
220
221 $(eval $(call BuildImage))