patch-2.2.18 linux/arch/arm/boot/compressed/Makefile

Next file: linux/arch/arm/boot/compressed/head-netwinder.S
Previous file: linux/arch/arm/boot/Makefile
Back to the patch index
Back to the overall index

diff -u --new-file --recursive --exclude-from /usr/src/exclude v2.2.17/arch/arm/boot/compressed/Makefile linux/arch/arm/boot/compressed/Makefile
@@ -2,32 +2,97 @@
 # linux/arch/arm/boot/compressed/Makefile
 #
 # create a compressed vmlinuz image from the original vmlinux
+
+HEAD		 = head.o
+OBJS		 = misc.o
+SYSTEM		 = $(TOPDIR)/vmlinux
+CFLAGS		 = -O2 -DSTDC_HEADERS $(CFLAGS_PROC)
+FONTC		 = $(TOPDIR)/drivers/video/font_acorn_8x8.c
+ZLDFLAGS	 = -p -X -T vmlinux.lds
+
 #
-# With this config, max compressed image size = 640k
-# Uncompressed image size = 1.3M (text+data)
+# Architecture dependencies
+#
+ifeq ($(CONFIG_ARCH_ACORN),y)
+OBJS		+= ll_char_wr.o font.o
+endif
+
+ifeq ($(CONFIG_CPU_26),y)
+ZTEXTADDR	 = 0x02080000
+endif
+
+ifeq ($(CONFIG_ARCH_RPC),y)
+ZTEXTADDR	 = 0x10008000
+endif
+
+ifeq ($(CONFIG_ARCH_EBSA110),y)
+ZTEXTADDR	 = 0x00008000
+endif
+
+ifeq ($(CONFIG_FOOTBRIDGE),y)
+ZTEXTADDR	 = 0x00008000
+endif
+
+ifeq ($(CONFIG_ARCH_NETWINDER),y)
+OBJS		+= head-netwinder.o
+endif
+
+ifeq ($(CONFIG_ARCH_NEXUSPCI),y)
+HEAD		 = head-nexuspci.o
+OBJS		+= $(TOPDIR)/arch/arm/lib/ll_char_wr_scc.o
+ZTEXTADDR	 = 0x40200000
+ZRELADDR	 = 0x40008000
+endif
+
+ifeq ($(CONFIG_ARCH_SA1100),y)
+OBJS		+= head-sa1100.o
+ifeq ($(CONFIG_SA1100_VICTOR),y)
+ZTEXTADDR	 = 0x00002000
+ZBSSADDR	 = 0xc0100000
+else
+ZTEXTADDR	 = 0xc0008000
+endif
+ZRELADDR	 = 0xc0008000
+endif
 
-SYSTEM	=$(TOPDIR)/vmlinux
-HEAD	=$(COMPRESSED_HEAD)
-OBJS	=$(HEAD) misc.o $(COMPRESSED_EXTRA)
-CFLAGS	=-O2 -DSTDC_HEADERS $(CFLAGS_PROC)
-ARFLAGS =rc
+#
+# If you don't define ZRELADDR above,
+# then it defaults to ZTEXTADDR
+#
+ifeq ($(ZRELADDR),)
+ZRELADDR	= $(ZTEXTADDR)
+endif
+
+SEDFLAGS	= s/TEXT_START/$(ZTEXTADDR)/;s/LOAD_ADDR/$(ZRELADDR)/;
+
+ifneq ($(ZBSSADDR),)
+SEDFLAGS	+= s/BSS_START/$(ZBSSADDR)/
+else
+SEDFLAGS	+= s/BSS_START/ALIGN(4)/
+endif
 
 all:		vmlinux
 
-vmlinux:	piggy.o $(OBJS)
-		$(LD) $(ZLINKFLAGS) -o vmlinux $(OBJS) piggy.o
+vmlinux:	$(HEAD) $(OBJS) piggy.o vmlinux.lds
+		$(LD) $(ZLDFLAGS) $(HEAD) $(OBJS) piggy.o $(GCCLIB) -o vmlinux
 
 $(HEAD): 	$(HEAD:.o=.S)
-		$(CC) -traditional -DLOADADDR=$(ZRELADDR) -c $(HEAD:.o=.S)
+		$(CC) $(AFLAGS) -traditional -c $(HEAD:.o=.S)
 
 piggy.o:	$(SYSTEM)
-		tmppiggy=_tmp_$$$$piggy; \
-		rm -f $$tmppiggy $$tmppiggy.gz $$tmppiggy.lnk; \
-		$(OBJCOPY) $(SYSTEM) $$tmppiggy; \
-		gzip -f -9 < $$tmppiggy > $$tmppiggy.gz; \
-		echo "SECTIONS { .data : { input_len = .; LONG(input_data_end - input_data) input_data = .; *(.data) input_data_end = .; }}" > $$tmppiggy.lnk; \
-		$(LD) -r -o piggy.o -b binary $$tmppiggy.gz -b elf32-arm -T $$tmppiggy.lnk; \
-		rm -f $$tmppiggy $$tmppiggy.gz $$tmppiggy.lnk;
+		$(OBJCOPY) $(SYSTEM) piggy
+		gzip -9 < piggy > piggy.gz
+		$(LD) -r -o $@ -b binary piggy.gz
+		rm -f piggy piggy.gz
+
+font.o:		$(FONTC)
+		$(CC) $(CFLAGS) -Dstatic= -c -o $@ $(FONTC)
+
+vmlinux.lds:	vmlinux.lds.in
+		@sed "$(SEDFLAGS)" < vmlinux.lds.in > $@
+
+clean:;		rm -f vmlinux core piggy* vmlinux.lds
 
-clean:;		rm -f vmlinux core
+.PHONY:	vmlinux.lds clean
 
+misc.o: misc.c $(TOPDIR)/include/asm/arch/uncompress.h $(TOPDIR)/lib/inflate.c

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)