X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Fbrcm47xx%2Fimage%2FMakefile;h=c6ec0fe90c1573f7758f31dc08342c9eabc564a7;hb=f08a10f2b98535c256cc4066c6c90b746890b820;hp=1bfcc9321b7bb64bf98d333fe0ec06bdb2dd0cea;hpb=5d3b728372f5eee003afa81c3e88a8e9d9d4d19c;p=openwrt%2Fopenwrt.git diff --git a/target/linux/brcm47xx/image/Makefile b/target/linux/brcm47xx/image/Makefile index 1bfcc9321b..c6ec0fe90c 100644 --- a/target/linux/brcm47xx/image/Makefile +++ b/target/linux/brcm47xx/image/Makefile @@ -12,7 +12,17 @@ define Build/Clean endef define Image/Prepare + # Optimized LZMA compression (with dictionary), handled by lzma-loader. cat $(KDIR)/vmlinux | $(STAGING_DIR_HOST)/bin/lzma e -si -so -eos -lc1 -lp2 -pb2 > $(KDIR)/vmlinux.lzma + + # Less optimal LZMA compression (no dictionary), handled by CFE. + $(STAGING_DIR_HOST)/bin/lzma e -so -d16 $(KDIR)/vmlinux > $(KDIR)/vmlinux-nodictionary.lzma + + gzip -nc9 $(KDIR)/vmlinux > $(KDIR)/vmlinux.gz +ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),) + cat $(KDIR)/vmlinux-initramfs | $(STAGING_DIR_HOST)/bin/lzma e -si -so -eos -lc1 -lp2 -pb2 > $(KDIR)/vmlinux-initramfs.lzma + $(STAGING_DIR_HOST)/bin/lzma e -so -d16 $(KDIR)/vmlinux-initramfs > $(KDIR)/vmlinux-initramfs-nodictionary.lzma +endif rm -f $(KDIR)/loader.gz $(MAKE) -C lzma-loader \ BUILD_DIR="$(KDIR)" \ @@ -34,6 +44,11 @@ define Image/Build/dwl3150 echo "BCM-5352-2050-0000000-01" >> $(BIN_DIR)/openwrt-dwl3150-$(2).bin endef +# $(1): filesystem type. +# $(2): device model (used for output file). +# $(3): pattern (device specific magic). +# $(4): version. +# $(5): simplified filesystem type (without block size). define Image/Build/CyberTAN $(STAGING_DIR_HOST)/bin/addpattern -4 -p $(3) -v v$(4) -i $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx -o $(BIN_DIR)/openwrt-$(2)-$(5).bin $(if $(6),-s $(6)) endef @@ -56,6 +71,21 @@ define Image/Build/Edi $(STAGING_DIR_HOST)/bin/trx2edips $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx $(BIN_DIR)/openwrt-$(2)-$(3).bin endef +define Image/Build/Huawei + dd if=/dev/zero of=$(BIN_DIR)/openwrt-$(2)-$(3)-gz.bin bs=92 count=1 + echo -ne 'HDR0\x08\x00\x00\x00' >> $(BIN_DIR)/openwrt-$(2)-$(3)-gz.bin + cat $(BIN_DIR)/$(IMG_PREFIX)-$(1)-gz.trx >> $(BIN_DIR)/openwrt-$(2)-$(3)-gz.bin +endef + +# $(1): filesystem type. +# $(2): device model (used for output file). +# $(3): board_id (device specific magic). +# $(4): region. +# $(5): simplified filesystem type (without block size). +define Image/Build/Chk + $(STAGING_DIR_HOST)/bin/mkchkimg -o $(BIN_DIR)/openwrt-$(2)-$(5).chk -k $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx -b $(3) -r $(4) +endef + define trxalign/jffs2-128k -a 0x20000 -f $(KDIR)/root.$(1) endef @@ -74,65 +104,245 @@ define Image/Build/trxV2 $(call Image/Build/CyberTAN2,$(1),$(2),$(3),$(4),$(5),$(if $(6),$(6))) endef -define Image/Build/jffs2-128k - $(call Image/Build/CyberTAN,$(1),wrt54gs,W54S,4.80.1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrtsl54gs,W54U,2.08.1,$(patsubst jffs2-%,jffs2,$(1))) +################################################# +# Images +################################################# + +define Build/trx-with-loader + $(STAGING_DIR_HOST)/bin/trx \ + -o $@ \ + -f $(KDIR)/loader.gz \ + -f $(word 1,$^) \ + $(call trxalign/$(FILESYSTEM),$(FILESYSTEM)) +endef + +define Build/asus-trx + $(STAGING_DIR_HOST)/bin/asustrx -p $(PRODUCTID) -i $@ -o $@.new + mv $@.new $@ +endef + +define Build/linksys-bin + $(STAGING_DIR_HOST)/bin/addpattern -4 -p $(DEVICE_ID) -v v$(VERSION) -i $@ -o $@.new + mv $@.new $@ +endef + +define Build/netgear-chk + $(STAGING_DIR_HOST)/bin/mkchkimg \ + -o $@.new \ + -k $@ \ + -b $(BOARD_ID) \ + -r $(REGION) + mv $@.new $@ +endef + +################################################# +# Devices +################################################# + +DEVICE_VARS += PRODUCTID +DEVICE_VARS += DEVICE_ID VERSION +DEVICE_VARS += BOARD_ID REGION + +define Device/Default + KERNEL := kernel-bin + IMAGE_NAME = $$(IMAGE_PREFIX)-$$(1).$$(2) + KERNEL_NAME = vmlinux.lzma + FILESYSTEMS := $(FS_64K) + IMAGES := trx + IMAGE/trx := trx-with-loader +endef + +define Device/asus + IMAGES := trx + IMAGE/trx := trx-with-loader | asus-trx +endef + +define AsusDevice + define Device/asus-$(1) + $$(Device/asus) + PRODUCTID := $(2) + endef + TARGET_DEVICES += asus-$(1) +endef + +define Device/linksys + IMAGES := bin + IMAGE/bin := trx-with-loader | linksys-bin +endef + +define LinksysDevice + define Device/linksys-$(1) + $$(Device/linksys) + DEVICE_ID := $(2) + VERSION := $(3) + endef + TARGET_DEVICES += linksys-$(1) +endef + +define Device/netgear + IMAGES := chk + IMAGE/chk := trx-with-loader | netgear-chk +endef + +define NetgearDevice + define Device/netgear-$(1) + $$(Device/netgear) + BOARD_ID := $(2) + REGION := $(3) + endef + TARGET_DEVICES += netgear-$(1) +endef + +################################################# +# Subtarget generic +################################################# + +ifeq ($(SUBTARGET),generic) + # BCM4705 with tg3 + $(eval $(call LinksysDevice,wrt300n-v1.1,EWC2,1.51.2)) + $(eval $(call LinksysDevice,wrt310n-v1,310N,1.0.10)) + $(eval $(call LinksysDevice,wrt350n-v1,EWCG,1.04.1)) + $(eval $(call LinksysDevice,wrt610n-v1,610N,1.0.1)) + + # BCMA SoC with SSB WiFi + $(eval $(call LinksysDevice,wrt610n-v2,610N,2.0.0)) + $(eval $(call LinksysDevice,e3000-v1,61XN,1.0.3)) +endif + +################################################# +# Subtarget legacy +################################################# + +# $(1): filesystem type. +define Image/Build/legacy/devices-with-128k-blocks $(call Image/Build/trxV2,$(1),wrt54g3gv2-vf,3G2V,3.00.24,$(patsubst jffs2-%,jffs2,$(1)),6) $(call Image/Build/wgt634u,$(1),$(patsubst jffs2-%,jffs2,$(1))) endef -define Image/Build/jffs2-64k - $(call Image/Build/CyberTAN,$(1),wrt54g3g,W54F,2.20.1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt54g3g-em,W3GN,2.20.1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt54g,W54G,4.71.1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt54gs_v4,W54s,1.09.1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt150n,N150,1.51.3,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt300n_v1,EWCB,1.03.6,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt300n_v11,EWC2,1.51.2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt350n_v1,EWCG,1.04.1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt610n_v1,610N,1.0.1,$(patsubst jffs2-%,jffs2,$(1))) -# $(call Image/Build/CyberTAN,$(1),wrt610n_v2,610N,2.0.0,$(patsubst jffs2-%,jffs2,$(1))) -# $(call Image/Build/CyberTAN,$(1),e3000_v1,61XN,1.0.3,$(patsubst jffs2-%,jffs2,$(1))) -# $(call Image/Build/CyberTAN,$(1),e3200_v1,3200,1.0.1,$(patsubst jffs2-%,jffs2,$(1))) +# $(1): filesystem type. +define Image/Build/legacy/devices-with-64k-blocks + $(call Image/Build/dwl3150,$(1),$(patsubst jffs2-%,jffs2,$(1))) + $(call Image/Build/Edi,$(1),ps1208mfg,$(patsubst jffs2-%,jffs2,$(1))) + $(call Image/Build/Huawei,$(1),e970,$(1)) $(call Image/Build/Motorola,$(1),wa840g,2,$(patsubst jffs2-%,jffs2,$(1))) $(call Image/Build/Motorola,$(1),we800g,3,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Edi,$(1),ps1208mfg,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/dwl3150,$(1),$(patsubst jffs2-%,jffs2,$(1))) + $(call Image/Build/Motorola,$(1),wr850g,1,$(1)) + $(call Image/Build/USR,$(1),usr5461,$(1)) endef -define Image/Build/squashfs - $(call Image/Build/jffs2-64k,$(1)) - $(call Image/Build/jffs2-128k,$(1)) +# $(1): filesystem type. +define Image/Build/legacy/jffs2-64k + $(call Image/Build/legacy/devices-with-64k-blocks,$(1)) endef -define Image/Build/Initramfs - $(STAGING_DIR_HOST)/bin/trx -o $(BIN_DIR)/$(IMG_PREFIX)-initramfs.trx -f $(KDIR)/loader.gz -f $(KDIR)/vmlinux.lzma +# $(1): filesystem type. +define Image/Build/legacy/jffs2-128k + $(call Image/Build/legacy/devices-with-128k-blocks,$(1)) endef -define Image/Build/Chk - $(STAGING_DIR_HOST)/bin/mkchkimg -o $(BIN_DIR)/openwrt-$(2)-$(5).chk -k $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx -b $(3) -r $(4) +# $(1): filesystem type. +define Image/Build/legacy/squashfs + $(call Image/Build/legacy/devices-with-64k-blocks,$(1)) + $(call Image/Build/legacy/devices-with-128k-blocks,$(1)) endef +define Device/linksys-wrt54gs + $(Device/linksys) + FILESYSTEMS := $(FS_128K) + DEVICE_ID := W54S + VERSION := 4.80.1 +endef + +define Device/linksys-wrtsl54gs + $(Device/linksys) + FILESYSTEMS := $(FS_128K) + DEVICE_ID := W54U + VERSION := 2.08.1 +endef + +ifeq ($(SUBTARGET),legacy) + TARGET_DEVICES += \ + linksys-wrt54gs \ + linksys-wrtsl54gs + + $(eval $(call LinksysDevice,wrt54g3g,W54F,2.20.1)) + $(eval $(call LinksysDevice,wrt54g3g-em,W3GN,2.20.1)) + $(eval $(call LinksysDevice,wrt54g,W54G,4.71.1)) + $(eval $(call LinksysDevice,wrt54gs-v4,W54s,1.09.1)) + $(eval $(call LinksysDevice,wrt150n,N150,1.51.3)) + $(eval $(call LinksysDevice,wrt160n-v1,N150,1.50.1)) + $(eval $(call LinksysDevice,wrt300n-v1,EWCB,1.03.6)) + $(eval $(call NetgearDevice,wgr614-v8,U12H072T00_NETGEAR,2)) + $(eval $(call NetgearDevice,wndr3300-v1,U12H093T00_NETGEAR,2)) + $(eval $(call NetgearDevice,wnr834b-v2,U12H081T00_NETGEAR,2)) +endif + +################################################# +# Subtarget mips74k +################################################# + +ifeq ($(SUBTARGET),mips74k) + $(eval $(call AsusDevice,rt-n66u,RT-N66U)) + $(eval $(call LinksysDevice,wrt160n-v3,N150,3.0.3)) + $(eval $(call LinksysDevice,wrt310n-v2,310N,2.0.1)) + $(eval $(call LinksysDevice,wrt320n-v1,320N,1.0.5)) + $(eval $(call LinksysDevice,e900-v1,E900,1.0.4)) + $(eval $(call LinksysDevice,e1000-v1-v2-v2.1,E100,1.1.3)) + $(eval $(call LinksysDevice,e1200-v1,E120,1.0.3)) + $(eval $(call LinksysDevice,e1200-v2-new,E122,1.0.4)) + $(eval $(call LinksysDevice,e1500-v1,E150,1.0.5)) + $(eval $(call LinksysDevice,e1550-v1,1550,1.0.3)) + $(eval $(call LinksysDevice,e2000-v1,32XN,1.0.4)) + $(eval $(call LinksysDevice,e2500-v1,E25X,1.0.7)) + $(eval $(call LinksysDevice,e2500-v2,E25X,2.0.0)) + $(eval $(call LinksysDevice,e2500-v2.1,25RU,2.1.0)) + $(eval $(call LinksysDevice,e2500-v3,25V3,3.0.0)) + $(eval $(call LinksysDevice,e3200-v1,3200,1.0.1)) + $(eval $(call LinksysDevice,e4200-v1,4200,1.0.5)) + $(eval $(call NetgearDevice,wgr614-v10_north-america,U12H139T01_NETGEAR,2)) + $(eval $(call NetgearDevice,wgr614-v10_other-regions,U12H139T01_NETGEAR,1)) + $(eval $(call NetgearDevice,wndr3400-v1,U12H155T00_NETGEAR,2)) + $(eval $(call NetgearDevice,wndr3400-v2,U12H187T00_NETGEAR,2)) + $(eval $(call NetgearDevice,wndr3400-v3,U12H208T00_NETGEAR,1)) + $(eval $(call NetgearDevice,wndr3700-v3,U12H194T00_NETGEAR,2)) + $(eval $(call NetgearDevice,wndr4000,U12H181T00_NETGEAR,2)) + $(eval $(call NetgearDevice,wnr1000-v3,U12H139T00_NETGEAR,2)) + $(eval $(call NetgearDevice,wnr2000v2,U12H114T00_NETGEAR,2)) + $(eval $(call NetgearDevice,wnr3000rp,U12H163T01_NETGEAR,1)) + $(eval $(call NetgearDevice,wnr3500l-v1-north-america,U12H136T99_NETGEAR,2)) + $(eval $(call NetgearDevice,wnr3500l-v1-other-regions,U12H136T99_NETGEAR,1)) + $(eval $(call NetgearDevice,wnr3500l-v2,U12H172T00_NETGEAR,1)) + $(eval $(call NetgearDevice,wnr3500-v2,U12H127T00_NETGEAR,2)) +endif + +################################################# +# Shared BuildImage defines +################################################# + +define Image/Build/Initramfs + $(STAGING_DIR_HOST)/bin/trx -o $(BIN_DIR)/$(IMG_PREFIX)-initramfs.trx -f $(KDIR)/loader.gz -f $(KDIR)/vmlinux-initramfs.lzma + $(STAGING_DIR_HOST)/bin/trx -o $(BIN_DIR)/$(IMG_PREFIX)-initramfs-noloader-nodictionary.trx -f $(KDIR)/vmlinux-initramfs-nodictionary.lzma +endef + +# $(1): filesystem type. define Image/Build $(STAGING_DIR_HOST)/bin/trx -o $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx \ -f $(KDIR)/loader.gz -f $(KDIR)/vmlinux.lzma \ $(call trxalign/$(1),$(1)) - $(call Image/Build/$(1),$(1)) - $(call Image/Build/Motorola,$(1),wr850g,1,$(1)) - $(call Image/Build/USR,$(1),usr5461,$(1)) -# $(call Image/Build/Chk,$(1),wgr614_v8,U12H072T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) + $(STAGING_DIR_HOST)/bin/trx -o $(BIN_DIR)/$(IMG_PREFIX)-$(1)-noloader-nodictionary.trx \ + -f $(KDIR)/vmlinux-nodictionary.lzma \ + $(call trxalign/$(1),$(1)) + $(STAGING_DIR_HOST)/bin/trx -o $(BIN_DIR)/$(IMG_PREFIX)-$(1)-gz.trx \ + -f $(KDIR)/vmlinux.gz \ + $(call trxalign/$(1),$(1)) + $(call Image/Build/$(SUBTARGET)/$(1),$(1)) # $(call Image/Build/Chk,$(1),wgr614_v9,U12H094T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) -# $(call Image/Build/Chk,$(1),wndr3300,U12H093T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Chk,$(1),wndr3400_v1,U12H155T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) -# $(call Image/Build/Chk,$(1),wndr3400_v2,U12H187T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) # $(call Image/Build/Chk,$(1),wndr3400_vcna,U12H155T01_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) -# $(call Image/Build/Chk,$(1),wndr4000,U12H181T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Chk,$(1),wnr834b_v2,U12H081T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) -# $(call Image/Build/Chk,$(1),wnr2000v2,U12H114T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) -# $(call Image/Build/Chk,$(1),wnr3500L,U12H136T99_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) # $(call Image/Build/Chk,$(1),wnr3500U,U12H136T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) -# $(call Image/Build/Chk,$(1),wnr3500v2,U12H127T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) # $(call Image/Build/Chk,$(1),wnr3500v2_VC,U12H127T70_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) +ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),) + $(call Image/Build/Initramfs) +endif endef $(eval $(call BuildImage))