d38ee715554273b4b8d760a64560849de6d8e473
[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 += DEVICE_DTS KERNEL_SIZE PAGESIZE BLOCKSIZE SUBPAGESIZE KERNEL_IN_UBI
14 KERNEL_LOADADDR:=0x8000
15 TARGET_DEVICES = linksys-audi linksys-viper dockstar goflexnet goflexhome
16
17 define Device/Default
18   KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts)
19   KERNEL := kernel-bin | append-dtb | uImage none
20   KERNEL_NAME := zImage
21   KERNEL_IN_UBI :=
22 endef
23
24 define Device/dockstar
25   DEVICE_DTS := kirkwood-dockstar
26   PAGESIZE := 2048
27   SUBPAGESIZE := 512
28   BLOCKSIZE := 128KiB
29   FILESYSTEMS := squashfs
30   PROFILES := Generic DOCKSTAR
31   IMAGES := factory.bin sysupgrade.tar
32   IMAGE/factory.bin := append-ubi
33   IMAGE/sysupgrade.tar := sysupgrade-nand
34   KERNEL_IN_UBI := 1
35   KERNEL := kernel-bin | append-dtb
36 endef
37
38 define Device/goflexnet
39 $(Device/dockstar)
40   PROFILES := Generic GOFLEXNET
41   DEVICE_DTS := kirkwood-goflexnet
42 endef
43
44 define Device/goflexhome
45 $(Device/dockstar)
46   PROFILES := Generic GOFLEXHOME
47   DEVICE_DTS := kirkwood-goflexhome
48 endef
49
50 define Device/linksys-audi
51   DEVICE_DTS := kirkwood-linksys-audi
52   PAGESIZE := 512
53   SUBPAGESIZE := 256
54   BLOCKSIZE := 16KiB
55   KERNEL_SIZE := 2624k
56   FILESYSTEMS := squashfs
57   PROFILES := Generic AUDI
58   IMAGES := factory.bin sysupgrade.tar
59   IMAGE/factory.bin := append-kernel $$$$(KERNEL_SIZE) | append-ubi
60   IMAGE/sysupgrade.tar := sysupgrade-nand
61 endef
62
63 define Device/linksys-viper
64   DEVICE_DTS := kirkwood-linksys-viper
65   PAGESIZE := 2048
66   SUBPAGESIZE := 512
67   BLOCKSIZE := 128KiB
68   KERNEL_SIZE := 2688k
69   FILESYSTEMS := squashfs
70   PROFILES := Generic VIPER
71   IMAGES := factory.bin sysupgrade.tar
72   IMAGE/factory.bin := append-kernel $$$$(KERNEL_SIZE) | append-ubi
73   IMAGE/sysupgrade.tar := sysupgrade-nand
74 endef
75
76 define Build/append-dtb
77         cat $(DTS_DIR)/$(DEVICE_DTS).dtb >> $@
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 Image/BuildKernel/Template/IOMEGA_IX2_200=$(call Image/BuildKernel/Template,iomega_ix2_200)
183 Image/InstallKernel/Template/IOMEGA_IX2_200=$(call Image/InstallKernel/Template,iomega_ix2_200)
184
185 Image/BuildKernel/Template/NSA310S=$(call Image/BuildKernel/Template,nsa310s)
186 Image/InstallKernel/Template/NSA310S=$(call Image/InstallKernel/Template,nsa310s)
187
188 Image/BuildKernel/Template/POGOE02=$(call Image/BuildKernel/Template,pogo_e02)
189 Image/InstallKernel/Template/POGOE02=$(call Image/InstallKernel/Template,pogo_e02)
190
191 Image/BuildKernel/Template/SHEEVAPLUG=$(call Image/BuildKernel/Template,sheevaplug)
192 Image/InstallKernel/Template/SHEEVAPLUG=$(call Image/InstallKernel/Template,sheevaplug)
193
194 Image/BuildKernel/Template/SHEEVAPLUGSATA=$(call Image/BuildKernel/Template,sheevaplug-esata)
195 Image/InstallKernel/Template/SHEEVAPLUGSATA=$(call Image/InstallKernel/Template,sheevaplug-esata)
196
197 Image/BuildKernel/Template/GuruplugServerPlus=$(call Image/BuildKernel/Template,guruplug-server-plus)
198 Image/InstallKernel/Template/GuruplugServerPlus=$(call Image/InstallKernel/Template,guruplug-server-plus)
199
200 Image/BuildKernel/Template/Topkick1281P2=$(call Image/BuildKernel/Template,topkick)
201 Image/InstallKernel/Template/Topkick1281P2=$(call Image/InstallKernel/Template,topkick)
202
203 define Image/BuildKernel
204         $(call Image/BuildKernel/Template/$(PROFILE))
205 endef
206
207 define Image/InstallKernel
208         $(call Image/InstallKernel/Template/$(PROFILE))
209 endef
210
211 define Image/Build
212         $(if $(Image/Build/$(1)), \
213                 $(call Image/Build/$(1),$(1)), \
214                 $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE_SANITIZED)-$(1).img \
215         )
216 endef
217
218 $(eval $(call BuildImage))