]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | # |
2 | # linux/arch/arm/boot/compressed/Makefile | |
3 | # | |
4 | # create a compressed vmlinuz image from the original vmlinux | |
5 | # | |
6 | ||
f45b1149 SH |
7 | OBJS = |
8 | ||
e69edc79 | 9 | AFLAGS_head.o += -DTEXT_OFFSET=$(TEXT_OFFSET) |
1da177e4 | 10 | HEAD = head.o |
f45b1149 | 11 | OBJS += misc.o decompress.o |
3b4af9bc SG |
12 | ifeq ($(CONFIG_DEBUG_UNCOMPRESS),y) |
13 | OBJS += debug.o | |
14 | endif | |
ee89bd6b | 15 | FONTC = $(srctree)/lib/fonts/font_acorn_8x8.c |
1da177e4 | 16 | |
df4879fa NP |
17 | # string library code (-Os is enforced to keep it much smaller) |
18 | OBJS += string.o | |
19 | CFLAGS_string.o := -Os | |
20 | ||
424e5994 DM |
21 | ifeq ($(CONFIG_ARM_VIRT_EXT),y) |
22 | OBJS += hyp-stub.o | |
23 | endif | |
24 | ||
75c34906 VS |
25 | GCOV_PROFILE := n |
26 | ||
1da177e4 LT |
27 | # |
28 | # Architecture dependencies | |
29 | # | |
30 | ifeq ($(CONFIG_ARCH_ACORN),y) | |
4486b863 | 31 | OBJS += ll_char_wr.o font.o |
1da177e4 LT |
32 | endif |
33 | ||
1da177e4 LT |
34 | ifeq ($(CONFIG_ARCH_SA1100),y) |
35 | OBJS += head-sa1100.o | |
36 | endif | |
37 | ||
38 | ifeq ($(CONFIG_CPU_XSCALE),y) | |
39 | OBJS += head-xscale.o | |
40 | endif | |
41 | ||
9c3fca2e | 42 | ifeq ($(CONFIG_PXA_SHARPSL_DETECT_MACH_ID),y) |
1da177e4 LT |
43 | OBJS += head-sharpsl.o |
44 | endif | |
45 | ||
26584853 | 46 | ifeq ($(CONFIG_CPU_ENDIAN_BE32),y) |
f12d0d7c | 47 | ifeq ($(CONFIG_CPU_CP15),y) |
1da177e4 | 48 | OBJS += big-endian.o |
f12d0d7c HC |
49 | else |
50 | # The endian should be set by h/w design. | |
51 | endif | |
1da177e4 LT |
52 | endif |
53 | ||
54 | # | |
55 | # We now have a PIC decompressor implementation. Decompressors running | |
56 | # from RAM should not define ZTEXTADDR. Decompressors running directly | |
57 | # from ROM or Flash must define ZTEXTADDR (preferably via the config) | |
58 | # FIXME: Previous assignment to ztextaddr-y is lost here. See SHARK | |
59 | ifeq ($(CONFIG_ZBOOT_ROM),y) | |
60 | ZTEXTADDR := $(CONFIG_ZBOOT_ROM_TEXT) | |
61 | ZBSSADDR := $(CONFIG_ZBOOT_ROM_BSS) | |
62 | else | |
63 | ZTEXTADDR := 0 | |
3bd2cbb9 | 64 | ZBSSADDR := ALIGN(8) |
1da177e4 LT |
65 | endif |
66 | ||
c79bf928 | 67 | CPPFLAGS_vmlinux.lds := -DTEXT_START="$(ZTEXTADDR)" -DBSS_START="$(ZBSSADDR)" |
1da177e4 | 68 | |
e7db7b42 AT |
69 | suffix_$(CONFIG_KERNEL_GZIP) = gzip |
70 | suffix_$(CONFIG_KERNEL_LZO) = lzo | |
6e8699f7 | 71 | suffix_$(CONFIG_KERNEL_LZMA) = lzma |
a7f464f3 | 72 | suffix_$(CONFIG_KERNEL_XZ) = xzkern |
f9b493ac | 73 | suffix_$(CONFIG_KERNEL_LZ4) = lz4 |
e7db7b42 | 74 | |
b90b9a38 NP |
75 | # Borrowed libfdt files for the ATAG compatibility mode |
76 | ||
77 | libfdt := fdt_rw.c fdt_ro.c fdt_wip.c fdt.c | |
78 | libfdt_hdrs := fdt.h libfdt.h libfdt_internal.h | |
79 | ||
80 | libfdt_objs := $(addsuffix .o, $(basename $(libfdt))) | |
81 | ||
82 | $(addprefix $(obj)/,$(libfdt) $(libfdt_hdrs)): $(obj)/%: $(srctree)/scripts/dtc/libfdt/% | |
83 | $(call cmd,shipped) | |
84 | ||
85 | $(addprefix $(obj)/,$(libfdt_objs) atags_to_fdt.o): \ | |
86 | $(addprefix $(obj)/,$(libfdt_hdrs)) | |
87 | ||
88 | ifeq ($(CONFIG_ARM_ATAG_DTB_COMPAT),y) | |
89 | OBJS += $(libfdt_objs) atags_to_fdt.o | |
90 | endif | |
91 | ||
e7db7b42 AT |
92 | targets := vmlinux vmlinux.lds \ |
93 | piggy.$(suffix_y) piggy.$(suffix_y).o \ | |
017f161a KP |
94 | lib1funcs.o lib1funcs.S ashldi3.o ashldi3.S bswapsdi2.o \ |
95 | bswapsdi2.S font.o font.c head.o misc.o $(OBJS) | |
014c257c | 96 | |
f1b957d3 | 97 | # Make sure files are removed during clean |
f9b493ac | 98 | extra-y += piggy.gzip piggy.lzo piggy.lzma piggy.xzkern piggy.lz4 \ |
017f161a | 99 | lib1funcs.S ashldi3.S bswapsdi2.S $(libfdt) $(libfdt_hdrs) \ |
c79bf928 | 100 | hyp-stub.S |
f1b957d3 | 101 | |
8c36a757 AB |
102 | KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING |
103 | ||
606576ce | 104 | ifeq ($(CONFIG_FUNCTION_TRACER),y) |
014c257c AS |
105 | ORIG_CFLAGS := $(KBUILD_CFLAGS) |
106 | KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS)) | |
107 | endif | |
108 | ||
7f66cd3f KC |
109 | # -fstack-protector-strong triggers protection checks in this code, |
110 | # but it is being used too early to link to meaningful stack_chk logic. | |
111 | nossp_flags := $(call cc-option, -fno-stack-protector) | |
112 | CFLAGS_atags_to_fdt.o := $(nossp_flags) | |
113 | CFLAGS_fdt.o := $(nossp_flags) | |
114 | CFLAGS_fdt_ro.o := $(nossp_flags) | |
115 | CFLAGS_fdt_rw.o := $(nossp_flags) | |
116 | CFLAGS_fdt_wip.o := $(nossp_flags) | |
117 | ||
b8083f86 | 118 | ccflags-y := -fpic -mno-single-pic-base -fno-builtin -I$(obj) |
da94a829 | 119 | asflags-y := -DZIMAGE |
1da177e4 | 120 | |
5ffb04f6 | 121 | # Supply kernel BSS size to the decompressor via a linker symbol. |
1ec332a3 JK |
122 | KBSS_SZ = $(shell $(CROSS_COMPILE)size $(obj)/../../../../vmlinux | \ |
123 | awk 'END{print $$3}') | |
5ffb04f6 | 124 | LDFLAGS_vmlinux = --defsym _kernel_bss_size=$(KBSS_SZ) |
9e84ed63 RK |
125 | # Supply ZRELADDR to the decompressor via a linker symbol. |
126 | ifneq ($(CONFIG_AUTO_ZRELADDR),y) | |
d239b1dc | 127 | LDFLAGS_vmlinux += --defsym zreladdr=$(ZRELADDR) |
9e84ed63 | 128 | endif |
26584853 CM |
129 | ifeq ($(CONFIG_CPU_ENDIAN_BE8),y) |
130 | LDFLAGS_vmlinux += --be8 | |
131 | endif | |
e7db7b42 AT |
132 | # ? |
133 | LDFLAGS_vmlinux += -p | |
134 | # Report unresolved symbol references | |
135 | LDFLAGS_vmlinux += --no-undefined | |
136 | # Delete all temporary local symbols | |
137 | LDFLAGS_vmlinux += -X | |
138 | # Next argument is a linker script | |
139 | LDFLAGS_vmlinux += -T | |
140 | ||
141 | # For __aeabi_uidivmod | |
142 | lib1funcs = $(obj)/lib1funcs.o | |
143 | ||
63d15148 | 144 | $(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S |
e7db7b42 | 145 | $(call cmd,shipped) |
1da177e4 | 146 | |
a7f464f3 IK |
147 | # For __aeabi_llsl |
148 | ashldi3 = $(obj)/ashldi3.o | |
149 | ||
150 | $(obj)/ashldi3.S: $(srctree)/arch/$(SRCARCH)/lib/ashldi3.S | |
151 | $(call cmd,shipped) | |
152 | ||
017f161a KP |
153 | # For __bswapsi2, __bswapdi2 |
154 | bswapsdi2 = $(obj)/bswapsdi2.o | |
155 | ||
156 | $(obj)/bswapsdi2.S: $(srctree)/arch/$(SRCARCH)/lib/bswapsdi2.S | |
157 | $(call cmd,shipped) | |
158 | ||
8d7e4cc2 NP |
159 | # We need to prevent any GOTOFF relocs being used with references |
160 | # to symbols in the .bss section since we cannot relocate them | |
161 | # independently from the rest at run time. This can be achieved by | |
162 | # ensuring that no private .bss symbols exist, as global symbols | |
163 | # always have a GOT entry which is what we need. | |
164 | # The .data section is already discarded by the linker script so no need | |
165 | # to bother about it here. | |
166 | check_for_bad_syms = \ | |
167 | bad_syms=$$($(CROSS_COMPILE)nm $@ | sed -n 's/^.\{8\} [bc] \(.*\)/\1/p') && \ | |
168 | [ -z "$$bad_syms" ] || \ | |
169 | ( echo "following symbols must have non local/private scope:" >&2; \ | |
170 | echo "$$bad_syms" >&2; rm -f $@; false ) | |
171 | ||
60aac932 | 172 | check_for_multiple_zreladdr = \ |
4bdad983 | 173 | if [ $(words $(ZRELADDR)) -gt 1 -a "$(CONFIG_AUTO_ZRELADDR)" = "" ]; then \ |
60aac932 SH |
174 | echo 'multiple zreladdrs: $(ZRELADDR)'; \ |
175 | echo 'This needs CONFIG_AUTO_ZRELADDR to be set'; \ | |
176 | false; \ | |
177 | fi | |
178 | ||
81a0bc39 RF |
179 | efi-obj-$(CONFIG_EFI_STUB) := $(objtree)/drivers/firmware/efi/libstub/lib.a |
180 | ||
e7db7b42 | 181 | $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o \ |
017f161a | 182 | $(addprefix $(obj)/, $(OBJS)) $(lib1funcs) $(ashldi3) \ |
81a0bc39 | 183 | $(bswapsdi2) $(efi-obj-y) FORCE |
60aac932 | 184 | @$(check_for_multiple_zreladdr) |
1da177e4 | 185 | $(call if_changed,ld) |
8d7e4cc2 | 186 | @$(check_for_bad_syms) |
1da177e4 | 187 | |
e7db7b42 AT |
188 | $(obj)/piggy.$(suffix_y): $(obj)/../Image FORCE |
189 | $(call if_changed,$(suffix_y)) | |
1da177e4 | 190 | |
e7db7b42 | 191 | $(obj)/piggy.$(suffix_y).o: $(obj)/piggy.$(suffix_y) FORCE |
1da177e4 | 192 | |
4486b863 RK |
193 | CFLAGS_font.o := -Dstatic= |
194 | ||
195 | $(obj)/font.c: $(FONTC) | |
196 | $(call cmd,shipped) | |
1da177e4 | 197 | |
424e5994 DM |
198 | $(obj)/hyp-stub.S: $(srctree)/arch/$(SRCARCH)/kernel/hyp-stub.S |
199 | $(call cmd,shipped) |