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