Now build rootfs+kernel images
[openwrt/svn-archive/archive.git] / openwrt / target / linux / image / au1000 / Makefile
index 04a89f9..fd805ee 100644 (file)
@@ -1,17 +1,58 @@
 include $(TOPDIR)/rules.mk
 
+LOADADDR = 0x8008c8f4          # RAM start + 16M 
+KERNEL_ENTRY = 0x80100000
+RAMSIZE = 0x04000000           # 1MB
+
+LOADER_MAKEOPTS= \
+               KDIR=$(KDIR) \
+               LOADADDR=$(LOADADDR) \
+               KERNEL_ENTRY=$(KERNEL_ENTRY) \
+               RAMSIZE=$(RAMSIZE)
+
 KDIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)
 
+lzma-loader-clean:
+       $(MAKE) -C ../generic/lzma-loader $(LOADER_MAKEOPTS) clean
 
-ifeq ($(FS),jffs2-8MB)
+lzma-loader-prepare:
+       $(MAKE) -C ../generic/lzma-loader $(LOADER_MAKEOPTS) prepare
 
-$(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).img: $(KDIR)/root.$(FS)
-       $(CP) $^ $@
+lzma-loader-compile: $(KDIR)/vmlinux.lzma lzma-loader-prepare
+       $(MAKE) -C ../generic/lzma-loader $(LOADER_MAKEOPTS) compile
+
+ifeq ($(IB),)
+$(KDIR)/vmlinux.lzma: $(KDIR)/vmlinux
+       cat $^ | $(STAGING_DIR)/bin/lzma e -si -so -eos -lc1 -lp2 -pb2 > $@ || (rm -f $@ && false)
+       
+install: $(KDIR)/vmlinux.lzma
+endif
+
+ifeq ($(KERNEL),2.6)
+FSNAME:=$(patsubst jffs2-%,jffs2,$(FS))
+
+$(KDIR)/vmlinux.srec: $(KDIR)/vmlinux
+       $(TARGET_CROSS)objcopy -O srec $(LINUX_DIR)/vmlinux $(KDIR)/vmlinux.srec
 
-install: $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).img
+ifeq ($(FS),jffs2-4MB)
 
+$(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FSNAME).bin: $(KDIR)/root.$(FS) $(KDIR)/vmlinux.srec
+       $(TARGET_CROSS)objcopy -O srec -I binary --adjust-vma 0xbe000000 $(KDIR)/root.$(FS) $(KDIR)/root.srec
+       grep -v S7 $(KDIR)/root.srec > $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).img
+       grep -v S0 $(KDIR)/vmlinux.srec >> $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).img
+
+install: $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FSNAME).bin
 endif
 
+ifeq ($(FS),jffs2-8MB)
+
+$(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FSNAME).bin: $(KDIR)/root.$(FS) $(KDIR)/vmlinux.srec
+       $(TARGET_CROSS)objcopy -O srec -I binary --adjust-vma 0xbe000000 $(KDIR)/root.$(FS) $(KDIR)/root.srec
+       grep -v S7 $(KDIR)/root.srec > $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).img
+       grep -v S0 $(KDIR)/vmlinux.srec >> $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).img
+
+install: $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FSNAME).bin
+endif
 
 ifeq ($(FS),tgz)
 
@@ -22,15 +63,32 @@ install: $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-rootfs.tar.gz
 
 endif
 
+ifeq ($(FS),squashfs)
+$(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FSNAME).bin: $(KDIR)/root.$(FS) $(KDIR)/vmlinux.srec
+       $(TARGET_CROSS)objcopy -O srec -I binary --adjust-vma 0xbe000000 $(KDIR)/root.$(FS) $(KDIR)/root.srec
+       grep -v S7 $(KDIR)/root.srec > $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FS).img
+
+endif
+
+install: $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(FSNAME).bin
+endif
 
 $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-vmlinuz: $(KDIR)/vmlinux
        $(CP) $^ $@
 
-
+ifeq ($(IB),)
+clean: lzma-loader-clean
+prepare: lzma-loader-prepare
+compile: lzma-loader-compile
+else
 clean:
 prepare:
 compile:
-install: $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-vmlinuz
+endif
 install-ib:
+       mkdir -p $(IB_DIR)/staging_dir_$(ARCH)/bin
        mkdir -p $(IB_DIR)/build_$(ARCH)/linux-$(KERNEL)-$(BOARD)
-       $(CP) $(KDIR)/bzImage $(IB_DIR)/build_$(ARCH)/linux-$(KERNEL)-$(BOARD)/
+       $(CP) $(KDIR)/loader.elf $(IB_DIR)/build_$(ARCH)/
+       $(CP) $(KDIR)/vmlinux.lzma $(IB_DIR)/build_$(ARCH)/linux-$(KERNEL)-$(BOARD)/
+       $(TARGET_CROSS)objcopy -O srec $(KDIR)/loader.elf $(KDIR)/loader.srec
+       grep -v S0 $(KDIR)/loader.srec > $(KDIR)/kernel.srec