1#
2# linux/arch/i386/boot/compressed/Makefile
3#
4# create a compressed vmlinux image from the original vmlinux
5#
6
7HEAD = head.o
8SYSTEM = $(TOPDIR)/vmlinux
9
10OBJECTS = $(HEAD) misc.o
11
12ZLDFLAGS = -e startup_32
13
14#
15# ZIMAGE_OFFSET is the load offset of the compression loader
16# BZIMAGE_OFFSET is the load offset of the high loaded compression loader
17#
18ZIMAGE_OFFSET = 0x1000
19BZIMAGE_OFFSET = 0x100000
20
21ZLINKFLAGS = -Ttext $(ZIMAGE_OFFSET) $(ZLDFLAGS)
22BZLINKFLAGS = -Ttext $(BZIMAGE_OFFSET) $(ZLDFLAGS)
23
24all: vmlinux
25
26vmlinux: piggy.o $(OBJECTS)
27	$(LD) $(ZLINKFLAGS) -o vmlinux $(OBJECTS) piggy.o
28
29bvmlinux: piggy.o $(OBJECTS)
30	$(LD) $(BZLINKFLAGS) -o bvmlinux $(OBJECTS) piggy.o
31
32head.o: head.S
33	$(CC) $(AFLAGS) -traditional -c head.S
34
35comma	:= ,
36
37ifdef CONFIG_MCOUNT
38misc.o: misc.c
39	$(CC) $(subst -pg,,$(CFLAGS)) -DKBUILD_BASENAME=$(subst $(comma),_,$(subst -,_,$(*F))) -c misc.c
40else
41misc.o: misc.c
42	$(CC) $(CFLAGS) -DKBUILD_BASENAME=$(subst $(comma),_,$(subst -,_,$(*F))) -c misc.c
43endif
44
45piggy.o:	$(SYSTEM)
46	tmppiggy=_tmp_$$$$piggy; \
47	rm -f $$tmppiggy $$tmppiggy.gz $$tmppiggy.lnk; \
48	$(OBJCOPY) $(SYSTEM) $$tmppiggy; \
49	gzip -f -9 < $$tmppiggy > $$tmppiggy.gz; \
50	echo "SECTIONS { .data : { input_len = .; LONG(input_data_end - input_data) input_data = .; *(.data) input_data_end = .; }}" > $$tmppiggy.lnk; \
51	$(LD) -r -o piggy.o -b binary $$tmppiggy.gz -b elf32-i386 -T $$tmppiggy.lnk; \
52	rm -f $$tmppiggy $$tmppiggy.gz $$tmppiggy.lnk
53
54clean:
55	rm -f vmlinux bvmlinux _tmp_*
56