2 # This Makefile fragment incorporates all the declarations and rules
3 # common to products for this vendor.
5 # It is included by <product>/Makefile
8 .PHONY: image.clean image.tag image.copy image.dir image.linuz image.arm.zimage image.cramfs
9 .PHONY: image.sh.mot image.sh.abs image.flash image.configs
10 .PHONY: romfs.dirs romfs.symlinks romfs.default romfs.recover romfs.rc romfs.version
12 # Note: These must all be used only in romfs.post::
13 .PHONY: romfs.no-ixp400-modules romfs.ixp425-microcode romfs.ixp425-boot
15 # Stop dd from being so noisy
18 # Override this if necessary
27 # You probably want to add this to ROMFS_DIRS
28 DEFAULT_ROMFS_DIRS := bin sbin dev/flash dev/pts etc/config lib/modules proc var \
29 home/httpd/cgi-bin usr/bin usr/sbin
32 rm -f mkcramfs mksquashfs mksquashfs7z
35 mkcramfs: $(ROOTDIR)/user/cramfs/mkcramfs.c
36 $(HOSTCC) -o $@ -I$(STAGEDIR)/include $< -lz
40 make -C $(ROOTDIR)/user/squashfs/squashfs-tools mksquashfs
41 ln -fs $(ROOTDIR)/user/squashfs/squashfs-tools/mksquashfs .
45 make -C $(ROOTDIR)/user/squashfs/squashfs-tools mksquashfs7z
46 ln -fs $(ROOTDIR)/user/squashfs/squashfs-tools/mksquashfs7z .
48 # Tags an image with vendor,product,version and adds the checksum
50 printf '\0%s\0%s\0%s' $(VERSIONPKG) $(HW_VENDOR) $(HW_PRODUCT) >>$(IMAGE)
51 $(ROOTDIR)/tools/cksum -b -o 2 $(IMAGE) >> $(IMAGE)
54 @set -e; for i in $(IMAGE) $(KERNELZ) $(IMAGEDIR)/sh.mot $(IMAGEDIR)/sh.abs; do \
55 [ -n "$(NO_BUILD_INTO_TFTPBOOT)" ] && continue; \
56 [ -f $$i ] || continue; \
57 echo cp $$i /tftpboot; \
60 @[ -n "$(NO_BUILD_INTO_TFTPBOOT)" ] || ( echo cp $(IMAGE) /tftpboot/$(CONFIG_PRODUCT).bin; cp $(IMAGE) /tftpboot/$(CONFIG_PRODUCT).bin )
63 [ -d $(IMAGEDIR) ] || mkdir -p $(IMAGEDIR)
64 rm -rf $(ROMFSDIR)/man[1-9]
66 # Create ZIMAGE as vmlinux -> objcopy -> $(ZIMAGE)
68 $(CROSS)objcopy -O binary $(ROOTDIR)/$(LINUXDIR)/vmlinux $(IMAGEDIR)/linux.bin
69 gzip -c -9 < $(IMAGEDIR)/linux.bin >$(ZIMAGE)
71 # Create ZIMAGE as arm/arm/boot/zImage
73 cp $(ROOTDIR)/$(LINUXDIR)/arch/arm/boot/zImage $(ZIMAGE)
75 image.cramfs: mkcramfs
76 ./mkcramfs -z -r $(ROMFSDIR) $(ROMFSIMG)
78 image.squashfs: mksquashfs
79 rm -f $(ROMFSIMG); mksquashfs=`pwd`/mksquashfs; cd $(ROMFSDIR); \
80 $$mksquashfs . $(ROMFSIMG) -all-root -noappend $(SQUASH_ENDIAN)
82 image.squashfs7z: mksquashfs7z
83 rm -f $(ROMFSIMG); mksquashfs7z=`pwd`/mksquashfs7z; cd $(ROMFSDIR); \
84 $$mksquashfs7z . $(ROMFSIMG) -all-root -noappend $(SQUASH_ENDIAN)
86 # Create (possibly) mbr + cramfs + zimage/linuz
88 cat $(MBRIMG) $(ROMFSIMG) $(ZIMAGE) >$(IMAGE)
90 addr.txt: $(ROOTDIR)/$(LINUXDIR)/vmlinux
91 $(CROSS)nm $(ROOTDIR)/$(LINUXDIR)/vmlinux | \
92 grep " __bss_start$$" | \
93 cut -d' ' -f1 | xargs printf "0x%s\n" >$@
96 image.sh.mot: addr.txt
97 @ADDR=`cat addr.txt`; \
98 $(CROSS)objcopy --add-section=.romfs=$(ROMFSIMG) \
99 --adjust-section-vma=.romfs=$${ADDR} --no-adjust-warnings \
100 --set-section-flags=.romfs=alloc,load,data \
102 $(ROOTDIR)/$(LINUXDIR)/vmlinux $(IMAGEDIR)/sh.mot
104 image.sh.abs: addr.txt
105 ADDR=`cat addr.txt`; \
106 $(CROSS)objcopy --add-section=.romfs=$(ROMFSIMG) \
107 --adjust-section-vma=.romfs=$${ADDR} --no-adjust-warnings \
108 --set-section-flags=.romfs=alloc,load,data \
109 $(ROOTDIR)/$(LINUXDIR)/vmlinux $(IMAGEDIR)/sh.abs
112 [ ! -f $(ROOTDIR)/boot/boot.bin ] || $(MAKE) vendor_flashbin
117 cp $(ROOTDIR)/.config configs/config.device
118 cp $(ROOTDIR)/config/.config configs/config.vendor-$(patsubst linux-%,%,$(CONFIG_LINUXDIR))
119 cp $(ROOTDIR)/$(CONFIG_LINUXDIR)/.config configs/config.$(CONFIG_LINUXDIR)
120 cp $(ROOTDIR)/$(CONFIG_LIBCDIR)/.config configs/config.$(CONFIG_LIBCDIR)
121 tar czf $(IMAGEDIR)/configs.tar.gz configs
126 @for i in $(ROMFS_DIRS); do \
127 mkdir -p $(ROMFSDIR)/$$i; \
131 $(ROMFSINST) -s /var/tmp /tmp
132 $(ROMFSINST) -s /var/mnt /mnt
133 $(ROMFSINST) -s /var/tmp/log /dev/log
136 $(ROMFSINST) ../romfs /
139 $(ROMFSINST) ../romfs.recover /
142 $(ROMFSINST) /etc/rc; \
143 [ ! -f filesystems ] || $(ROMFSINST) /etc/filesystems
145 romfs.no-ixp400-modules:
146 rm -f $(ROMFSDIR)/lib/modules/*/kernel/ixp425/ixp400/ixp400_*.o
148 romfs.ixp425-microcode:
149 [ ! -f $(ROOTDIR)/modules/ixp425/ixp400-2.0/IxNpeMicrocode.dat ] || $(ROMFSINST) -d $(ROOTDIR)/modules/ixp425/ixp400-2.0/IxNpeMicrocode.dat /etc/IxNpeMicrocode.dat
150 [ ! -f $(ROOTDIR)/modules/ixp425/ixp400-2.1/IxNpeMicrocode.dat ] || $(ROMFSINST) -d $(ROOTDIR)/modules/ixp425/ixp400-2.1/IxNpeMicrocode.dat /etc/IxNpeMicrocode.dat
151 [ ! -f $(ROOTDIR)/modules/ixp425/ixp400-2.4/IxNpeMicrocode.dat ] || $(ROMFSINST) -d $(ROOTDIR)/modules/ixp425/ixp400-2.4/IxNpeMicrocode.dat /etc/IxNpeMicrocode.dat
154 -$(ROMFSINST) -d $(ROOTDIR)/boot/ixp425/bios.bin /boot/biosplus.bin
155 -$(ROMFSINST) -d $(ROOTDIR)/boot/ixp425/boot.bin /boot/bootplus.bin
158 echo "$(VERSIONSTR) -- " $(BUILD_START_STRING) > $(ROMFSDIR)/etc/version