diff options
Diffstat (limited to 'arch/i386/boot/compressed/Makefile')
-rw-r--r-- | arch/i386/boot/compressed/Makefile | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/arch/i386/boot/compressed/Makefile b/arch/i386/boot/compressed/Makefile index 258ea95224f6..a661217f33ec 100644 --- a/arch/i386/boot/compressed/Makefile +++ b/arch/i386/boot/compressed/Makefile | |||
@@ -4,22 +4,42 @@ | |||
4 | # create a compressed vmlinux image from the original vmlinux | 4 | # create a compressed vmlinux image from the original vmlinux |
5 | # | 5 | # |
6 | 6 | ||
7 | targets := vmlinux vmlinux.bin vmlinux.bin.gz head.o misc.o piggy.o | 7 | targets := vmlinux vmlinux.bin vmlinux.bin.gz head.o misc.o piggy.o \ |
8 | vmlinux.bin.all vmlinux.relocs | ||
8 | EXTRA_AFLAGS := -traditional | 9 | EXTRA_AFLAGS := -traditional |
9 | 10 | ||
10 | LDFLAGS_vmlinux := -Ttext $(IMAGE_OFFSET) -e startup_32 | 11 | LDFLAGS_vmlinux := -T |
12 | CFLAGS_misc.o += -fPIC | ||
13 | hostprogs-y := relocs | ||
11 | 14 | ||
12 | $(obj)/vmlinux: $(obj)/head.o $(obj)/misc.o $(obj)/piggy.o FORCE | 15 | $(obj)/vmlinux: $(src)/vmlinux.lds $(obj)/head.o $(obj)/misc.o $(obj)/piggy.o FORCE |
13 | $(call if_changed,ld) | 16 | $(call if_changed,ld) |
14 | @: | 17 | @: |
15 | 18 | ||
16 | $(obj)/vmlinux.bin: vmlinux FORCE | 19 | $(obj)/vmlinux.bin: vmlinux FORCE |
17 | $(call if_changed,objcopy) | 20 | $(call if_changed,objcopy) |
18 | 21 | ||
22 | quiet_cmd_relocs = RELOCS $@ | ||
23 | cmd_relocs = $(obj)/relocs $< > $@;$(obj)/relocs --abs-relocs $< | ||
24 | $(obj)/vmlinux.relocs: vmlinux $(obj)/relocs FORCE | ||
25 | $(call if_changed,relocs) | ||
26 | |||
27 | vmlinux.bin.all-y := $(obj)/vmlinux.bin | ||
28 | vmlinux.bin.all-$(CONFIG_RELOCATABLE) += $(obj)/vmlinux.relocs | ||
29 | quiet_cmd_relocbin = BUILD $@ | ||
30 | cmd_relocbin = cat $(filter-out FORCE,$^) > $@ | ||
31 | $(obj)/vmlinux.bin.all: $(vmlinux.bin.all-y) FORCE | ||
32 | $(call if_changed,relocbin) | ||
33 | |||
34 | ifdef CONFIG_RELOCATABLE | ||
35 | $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin.all FORCE | ||
36 | $(call if_changed,gzip) | ||
37 | else | ||
19 | $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE | 38 | $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE |
20 | $(call if_changed,gzip) | 39 | $(call if_changed,gzip) |
40 | endif | ||
21 | 41 | ||
22 | LDFLAGS_piggy.o := -r --format binary --oformat elf32-i386 -T | 42 | LDFLAGS_piggy.o := -r --format binary --oformat elf32-i386 -T |
23 | 43 | ||
24 | $(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.gz FORCE | 44 | $(obj)/piggy.o: $(src)/vmlinux.scr $(obj)/vmlinux.bin.gz FORCE |
25 | $(call if_changed,ld) | 45 | $(call if_changed,ld) |