1# 2# Copyright (C) 2010-2012 OpenWrt.org 3# 4# This is free software, licensed under the GNU General Public License v2. 5# See /LICENSE for more information. 6# 7include $(TOPDIR)/rules.mk 8include $(INCLUDE_DIR)/image.mk 9 10JFFS2_BLOCKSIZE = 64k 128k 256k 11 12ase_cmdline=-console=ttyLTQ0,115200 rootfstype=squashfs,jffs2 13xway_cmdline=-console=ttyLTQ1,115200 rootfstype=squashfs,jffs2 14falcon_cmdline=-console=ttyLTQ0,115200 rootfstype=squashfs,jffs2 15svip_cmdline=-console=ttyLTQ0,115200 rootfstype=squashfs,jffs2 16sx76x_cmdline=console=ttyLTQ1,115200 rootfstype=squashfs,jffs2 17 18define CompressLzma 19 $(STAGING_DIR_HOST)/bin/lzma e $(1) $(2) 20endef 21 22define PatchKernelLzma 23 cp $(KDIR)/vmlinux $(KDIR)/vmlinux-$(1) 24 $(STAGING_DIR_HOST)/bin/patch-cmdline $(KDIR)/vmlinux-$(1) '$(strip $(2))' 25 $(call CompressLzma,$(KDIR)/vmlinux-$(1),$(KDIR)/vmlinux-$(1).lzma) 26endef 27 28define MkBrnImage 29 mkbrncmdline -i $(KDIR)/vmlinux-$(4) -o $(KDIR)/vmlinux-$(4)-brn BRN-BOOT $(6) 30 $(call CompressLzma,$(KDIR)/vmlinux-$(4)-brn,$(KDIR)/vmlinux-$(4)-brn.lzma) 31 mkbrnimg -s $(1) -m $(2) -o $(3) $(KDIR)/vmlinux-$(4)-brn.lzma $(KDIR)/root.$(5) 32endef 33 34define MkImageLzma 35 mkimage -A mips -O linux -T kernel -a 0x80002000 -C lzma \ 36 -e 0x80002000 -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \ 37 -d $(KDIR)/vmlinux-$(1).lzma $(KDIR)/uImage-$(1) 38endef 39 40define MkImageEVA 41 lzma2eva 0x80002000 0x80002000 $(KDIR)/vmlinux-$(1).lzma $(KDIR)/$(1).eva.prealign 42 dd if=$(KDIR)/$(1).eva.prealign of=$(KDIR)/$(1).eva bs=64k conv=sync 43 cat ./eva.dummy.squashfs >> $(KDIR)/$(1).eva 44endef 45 46define CompressGzip 47 gzip -c $(1) > $(2) 48endef 49 50define PatchKernelGzip 51 cp $(KDIR)/vmlinux $(KDIR)/vmlinux-$(1) 52 $(STAGING_DIR_HOST)/bin/patch-cmdline $(KDIR)/vmlinux-$(1) '$(strip $(2))' 53 $(call CompressGzip,$(KDIR)/vmlinux-$(1),$(KDIR)/vmlinux-$(1).gzip) 54endef 55 56define MkImageGzip 57 mkimage -A mips -O linux -T kernel -a 0x80002000 -C gzip \ 58 -e 0x80002000 -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \ 59 -d $(KDIR)/vmlinux-$(1).gzip $(KDIR)/uImage-$(1) 60endef 61 62define Image/Build/squashfs 63 cat $(KDIR)/uImage-$(2) $(KDIR)/root.$(1) > $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).image 64 $(call prepare_generic_squashfs,$(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).image) 65 $(if $(3),$(call MkBrnImage,$(3),$(4),$(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(3)-brnImage,$(2),$(1),$(5))) 66endef 67 68define Image/BuildEVA/squashfs 69 cat $(KDIR)/$(2).eva $(KDIR)/root.$(1) > $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).image.eva 70 $(call prepare_generic_squashfs,$(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).image.eva) 71endef 72 73define Image/Build/jffs2-64k 74 dd if=$(KDIR)/uImage-$(2) of=$(KDIR)/uImage-$(2)-$(1) bs=64k conv=sync 75 cat $(KDIR)/uImage-$(2)-$(1) $(KDIR)/root.$(1) > $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).image 76endef 77 78define Image/Build/jffs2-128k 79 dd if=$(KDIR)/uImage-$(2) of=$(KDIR)/uImage-$(2)-$(1) bs=128k conv=sync 80 cat $(KDIR)/uImage-$(2)-$(1) $(KDIR)/root.$(1) > $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).image 81endef 82 83define Image/Build/jffs2-256k 84 dd if=$(KDIR)/uImage-$(2) of=$(KDIR)/uImage-$(2)-$(1) bs=256k conv=sync 85 cat $(KDIR)/uImage-$(2)-$(1) $(KDIR)/root.$(1) > $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).image 86endef 87 88define Image/BuildKernel/Template 89 $(call PatchKernelLzma,$(1),$(if $(2),$(2) machtype=$(1),)) 90 $(call MkImageLzma,$(1)) 91 $(CP) $(KDIR)/uImage-$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1)-uImage 92endef 93 94define Image/BuildKernelEVA/Template 95 $(call PatchKernelLzma,$(1),$(if $(2),$(2) machtype=$(1),)) 96 $(call MkImageEVA,$(1)) 97 $(CP) $(KDIR)/$(1).eva $(BIN_DIR)/$(IMG_PREFIX)-$(1).eva 98endef 99 100define Image/BuildKernelGzip/Template 101 $(call PatchKernelGzip,$(1),$(if $(2),$(2) machtype=$(1),)) 102 $(call MkImageGzip,$(1)) 103 $(CP) $(KDIR)/uImage-$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1)-uImage 104endef 105 106ifeq ($(CONFIG_TARGET_lantiq_danube),y) 107 108Image/BuildKernel/Profile/EASY50712=$(call Image/BuildKernel/Template,EASY50712,$(xway_cmdline)) 109Image/BuildKernel/Profile/ARV3527P=$(call Image/BuildKernel/Template,ARV3527P,$(xway_cmdline)) 110Image/BuildKernel/Profile/ARV4510PW=$(call Image/BuildKernel/Template,ARV4510PW,$(xway_cmdline)) 111Image/BuildKernel/Profile/ARV4518PW=$(call Image/BuildKernel/Template,ARV4518PW,$(xway_cmdline)) 112Image/BuildKernel/Profile/ARV4519PW=$(call Image/BuildKernel/Template,ARV4519PW,$(xway_cmdline)) 113Image/BuildKernel/Profile/ARV4520PW=$(call Image/BuildKernel/Template,ARV4520PW,$(xway_cmdline)) 114Image/BuildKernel/Profile/ARV4525PW=$(call Image/BuildKernel/Template,ARV4525PW,$(xway_cmdline)) 115Image/BuildKernel/Profile/ARV7525PW=$(call Image/BuildKernel/Template,ARV7525PW,$(xway_cmdline)) 116Image/BuildKernel/Profile/ARV452CPW=$(call Image/BuildKernel/Template,ARV452CPW,$(xway_cmdline)) 117Image/BuildKernel/Profile/ARV7518PW=$(call Image/BuildKernel/Template,ARV7518PW,$(xway_cmdline)) 118Image/BuildKernel/Profile/ARV752DPW=$(call Image/BuildKernel/Template,ARV752DPW,$(xway_cmdline)) 119Image/BuildKernel/Profile/ARV752DPW22=$(call Image/BuildKernel/Template,ARV752DPW22,$(xway_cmdline)) 120Image/BuildKernel/Profile/GIGASX76X=$(call Image/BuildKernel/Template,GIGASX76X,$(sx76x_cmdline)) 121Image/BuildKernel/Profile/BTHOMEHUBV2B=$(call Image/BuildKernel/Template,BTHOMEHUBV2B,$(xway_cmdline)) 122Image/BuildKernel/Profile/BTHOMEHUBV2BOPENRG=$(call Image/BuildKernel/Template,BTHOMEHUBV2BOPENRG,$(xway_cmdline)) 123 124Image/Build/Profile/EASY50712=$(call Image/Build/$(1),$(1),EASY50712) 125Image/Build/Profile/ARV3527P=$(call Image/Build/$(1),$(1),ARV3527P) 126Image/Build/Profile/ARV4510PW=$(call Image/Build/$(1),$(1),ARV4510PW) 127Image/Build/Profile/ARV4518PW=$(call Image/Build/$(1),$(1),ARV4518PW) 128Image/Build/Profile/ARV4519PW=$(call Image/Build/$(1),$(1),ARV4519PW,BRNDA4519,0x12345678,memsize=32) 129Image/Build/Profile/ARV4520PW=$(call Image/Build/$(1),$(1),ARV4520PW,BRNDANUBE,0x12345678,memsize=32) 130Image/Build/Profile/ARV4525PW=$(call Image/Build/$(1),$(1),ARV4525PW,BRNDTW502,0x12345678,memsize=32) 131Image/Build/Profile/ARV7525PW=$(call Image/Build/$(1),$(1),ARV7525PW) 132Image/Build/Profile/ARV452CPW=$(call Image/Build/$(1),$(1),ARV452CPW) 133Image/Build/Profile/ARV7518PW=$(call Image/Build/$(1),$(1),ARV7518PW,BRNDA7519,0x12345678,memsize=64) 134Image/Build/Profile/ARV752DPW=$(call Image/Build/$(1),$(1),ARV752DPW) 135Image/Build/Profile/ARV752DPW22=$(call Image/Build/$(1),$(1),ARV752DPW22) 136Image/Build/Profile/GIGASX76X=$(call Image/Build/$(1),$(1),GIGASX76X) 137Image/Build/Profile/BTHOMEHUBV2B=$(call Image/Build/$(1),$(1),BTHOMEHUBV2B) 138Image/Build/Profile/BTHOMEHUBV2BOPENRG=$(call Image/Build/$(1),$(1),BTHOMEHUBV2BOPENRG) 139 140define Image/BuildKernel/Profile/Generic 141 $(call Image/BuildKernel/Template,NONE) 142endef 143 144define Image/Build/Profile/Generic 145 $(call Image/Build/$(1),$(1),NONE) 146 $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1).rootfs 147endef 148endif 149 150ifeq ($(CONFIG_TARGET_lantiq_ar9),y) 151Image/BuildKernel/Profile/WBMR=$(call Image/BuildKernel/Template,WBMR,$(xway_cmdline)) 152Image/BuildKernel/Profile/DGN3500B=$(call Image/BuildKernel/Template,DGN3500B,$(xway_cmdline)) 153Image/BuildKernel/Profile/P2601HNFX=$(call Image/BuildKernel/Template,P2601HNFX,$(xway_cmdline)) 154Image/BuildKernel/Profile/H201L=$(call Image/BuildKernel/Template,H201L,$(xway_cmdline)) 155Image/BuildKernel/Profile/FRITZ7320=$(call Image/BuildKernelEVA/Template,FRITZ7320,$(xway_cmdline)) 156 157Image/Build/Profile/WBMR=$(call Image/Build/$(1),$(1),WBMR) 158Image/Build/Profile/DGN3500B=$(call Image/Build/$(1),$(1),DGN3500B) 159Image/Build/Profile/P2601HNFX=$(call Image/Build/$(1),$(1),P2601HNFX) 160Image/Build/Profile/H201L=$(call Image/Build/$(1),$(1),H201L) 161Image/Build/Profile/FRITZ7320=$(call Image/BuildEVA/$(1),$(1),FRITZ7320) 162 163define Image/BuildKernel/Profile/Generic 164 $(call Image/BuildKernel/Template,NONE) 165endef 166 167define Image/Build/Profile/Generic 168 $(call Image/Build/$(1),$(1),NONE) 169 $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1).rootfs 170endef 171endif 172 173ifeq ($(CONFIG_TARGET_lantiq_falcon)$(CONFIG_TARGET_lantiq_falcon_stable),y) 174 175Image/BuildKernel/Profile/EASY98000=$(call Image/BuildKernel/Template,EASY98000,$(falcon_cmdline)) 176Image/BuildKernel/Profile/EASY98020=$(call Image/BuildKernel/Template,EASY98020,$(falcon_cmdline)) 177 178Image/Build/Profile/EASY98000=$(call Image/Build/$(1),$(1),EASY98000) 179Image/Build/Profile/EASY98020=$(call Image/Build/$(1),$(1),EASY98020) 180 181define Image/BuildKernel/Profile/Generic 182 $(call Image/BuildKernel/Template,NONE) 183endef 184 185define Image/Build/Profile/Generic 186 $(call Image/Build/$(1),$(1),NONE) 187 $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1).rootfs 188endef 189endif 190 191ifeq ($(CONFIG_TARGET_lantiq_ase),y) 192 193Image/BuildKernel/Profile/EASY50601=$(call Image/BuildKernel/Template,EASY50601,$(ase_cmdline)) 194Image/Build/Profile/EASY50601=$(call Image/Build/$(1),$(1),EASY50601) 195 196define Image/BuildKernel/Profile/Generic 197 $(call Image/BuildKernel/Template,NONE) 198endef 199 200define Image/Build/Profile/Generic 201 $(call Image/Build/$(1),$(1),NONE) 202 $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1).rootfs 203endef 204endif 205 206ifeq ($(CONFIG_TARGET_lantiq_vr9),y) 207define Image/BuildKernel/Profile/FRITZ3370 208 $(call Image/BuildKernel/Template,FRITZ3370,$(xway_cmdline)) 209 $(call Image/BuildKernelEVA/Template,FRITZ3370,$(xway_cmdline)) 210endef 211 212Image/Build/Profile/FRITZ3370=$(call Image/Build/$(1),$(1),FRITZ3370) 213 214define Image/BuildKernel/Profile/Generic 215 $(call Image/BuildKernel/Template,NONE) 216endef 217 218define Image/Build/Profile/Generic 219 $(call Image/Build/$(1),$(1),NONE) 220 $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1).rootfs 221endef 222endif 223 224ifeq ($(CONFIG_TARGET_lantiq_svip_be),y) 225define Image/BuildKernel/Profile/EASY33016 226 $(call Image/BuildKernelGzip/Template,EASY33016,$(svip_cmdline)) 227endef 228 229define Image/Build/Profile/EASY33016 230 $(call Image/Build/$(1),$(1),EASY33016) 231endef 232 233define Image/BuildKernel/Profile/EASY336 234 $(call Image/BuildKernelGzip/Template,EASY33016,$(svip_cmdline)) 235endef 236 237define Image/Build/Profile/EASY336 238 $(call Image/Build/$(1),$(1),EASY33016) 239endef 240 241define Image/BuildKernel/Profile/Generic 242 $(call Image/BuildKernelGzip/Template,EASY33016,$(svip_cmdline)) 243 $(call Image/BuildKernelGzip/Template,EASY336,$(svip_cmdline)) 244 $(call Image/BuildKernelGzip/Template,NONE) 245endef 246 247define Image/Build/Profile/Generic 248 $(call Image/Build/$(1),$(1),EASY33016) 249 $(call Image/Build/$(1),$(1),EASY336) 250 $(call Image/Build/$(1),$(1),NONE) 251 $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1).rootfs 252endef 253endif 254 255ifeq ($(CONFIG_TARGET_lantiq_svip_le),y) 256define Image/BuildKernel/Profile/EASY336 257 $(call Image/BuildKernelGzip/Template,EASY33016,$(svip_cmdline)) 258endef 259 260define Image/Build/Profile/EASY336 261 $(call Image/Build/$(1),$(1),EASY33016) 262endef 263 264define Image/BuildKernel/Profile/Generic 265 $(call Image/BuildKernelGzip/Template,EASY336,$(svip_cmdline)) 266 $(call Image/BuildKernelGzip/Template,NONE) 267endef 268 269define Image/Build/Profile/Generic 270 $(call Image/Build/$(1),$(1),EASY336) 271 $(call Image/Build/$(1),$(1),NONE) 272 $(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(1).rootfs 273endef 274endif 275 276define Image/BuildKernel 277 $(call Image/BuildKernel/Profile/$(PROFILE)) 278endef 279 280define Image/Build 281 $(call Image/Build/Profile/$(PROFILE),$(1)) 282endef 283 284$(eval $(call BuildImage)) 285