xref: /linux/arch/x86/boot/compressed/Makefile (revision db569afa4e69ceaf89b3723a8f9cd2846ed09c76)
1*db569afaSSam Ravnborg#
2*db569afaSSam Ravnborg# linux/arch/x86/boot/compressed/Makefile
3*db569afaSSam Ravnborg#
4*db569afaSSam Ravnborg# create a compressed vmlinux image from the original vmlinux
5*db569afaSSam Ravnborg#
6*db569afaSSam Ravnborg
7*db569afaSSam Ravnborgtargets := vmlinux vmlinux.bin vmlinux.bin.gz head_$(BITS).o misc_$(BITS).o piggy.o
8*db569afaSSam Ravnborg
9*db569afaSSam RavnborgKBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2
10*db569afaSSam RavnborgKBUILD_CFLAGS += -fno-strict-aliasing -fPIC
11*db569afaSSam Ravnborgcflags-$(CONFIG_X86_64) := -mcmodel=small
12*db569afaSSam RavnborgKBUILD_CFLAGS += $(cflags-y)
13*db569afaSSam RavnborgKBUILD_CFLAGS += $(call cc-option,-ffreestanding)
14*db569afaSSam RavnborgKBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
15*db569afaSSam Ravnborg
16*db569afaSSam RavnborgKBUILD_AFLAGS  := $(KBUILD_CFLAGS) -D__ASSEMBLY__
17*db569afaSSam Ravnborg
18*db569afaSSam RavnborgLDFLAGS := -m elf_$(UTS_MACHINE)
19*db569afaSSam RavnborgLDFLAGS_vmlinux := -T
20*db569afaSSam Ravnborg
21*db569afaSSam Ravnborg$(obj)/vmlinux: $(src)/vmlinux_$(BITS).lds $(obj)/head_$(BITS).o $(obj)/misc_$(BITS).o $(obj)/piggy.o FORCE
22*db569afaSSam Ravnborg	$(call if_changed,ld)
23*db569afaSSam Ravnborg	@:
24*db569afaSSam Ravnborg
25*db569afaSSam Ravnborg$(obj)/vmlinux.bin: vmlinux FORCE
26*db569afaSSam Ravnborg	$(call if_changed,objcopy)
27*db569afaSSam Ravnborg
28*db569afaSSam Ravnborg
290530bf37SThomas Gleixnerifeq ($(CONFIG_X86_32),y)
30*db569afaSSam Ravnborgtargets += vmlinux.bin.all vmlinux.relocs
31*db569afaSSam Ravnborghostprogs-y := relocs
32*db569afaSSam Ravnborg
33*db569afaSSam Ravnborgquiet_cmd_relocs = RELOCS  $@
34*db569afaSSam Ravnborg      cmd_relocs = $(obj)/relocs $< > $@;$(obj)/relocs --abs-relocs $<
35*db569afaSSam Ravnborg$(obj)/vmlinux.relocs: vmlinux $(obj)/relocs FORCE
36*db569afaSSam Ravnborg	$(call if_changed,relocs)
37*db569afaSSam Ravnborg
38*db569afaSSam Ravnborgvmlinux.bin.all-y := $(obj)/vmlinux.bin
39*db569afaSSam Ravnborgvmlinux.bin.all-$(CONFIG_RELOCATABLE) += $(obj)/vmlinux.relocs
40*db569afaSSam Ravnborgquiet_cmd_relocbin = BUILD   $@
41*db569afaSSam Ravnborg      cmd_relocbin = cat $(filter-out FORCE,$^) > $@
42*db569afaSSam Ravnborg$(obj)/vmlinux.bin.all: $(vmlinux.bin.all-y) FORCE
43*db569afaSSam Ravnborg	$(call if_changed,relocbin)
44*db569afaSSam Ravnborg
45*db569afaSSam Ravnborgifdef CONFIG_RELOCATABLE
46*db569afaSSam Ravnborg$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin.all FORCE
47*db569afaSSam Ravnborg	$(call if_changed,gzip)
480530bf37SThomas Gleixnerelse
49*db569afaSSam Ravnborg$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE
50*db569afaSSam Ravnborg	$(call if_changed,gzip)
510530bf37SThomas Gleixnerendif
52*db569afaSSam RavnborgLDFLAGS_piggy.o := -r --format binary --oformat elf32-i386 -T
53*db569afaSSam Ravnborg
54*db569afaSSam Ravnborgelse
55*db569afaSSam Ravnborg$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE
56*db569afaSSam Ravnborg	$(call if_changed,gzip)
57*db569afaSSam Ravnborg
58*db569afaSSam RavnborgLDFLAGS_piggy.o := -r --format binary --oformat elf64-x86-64 -T
59*db569afaSSam Ravnborgendif
60*db569afaSSam Ravnborg
61*db569afaSSam Ravnborg
62*db569afaSSam Ravnborg$(obj)/piggy.o: $(obj)/vmlinux_$(BITS).scr $(obj)/vmlinux.bin.gz FORCE
63*db569afaSSam Ravnborg	$(call if_changed,ld)
64