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 | |
f57deb0b MY |
69 | compress-$(CONFIG_KERNEL_GZIP) = gzip |
70 | compress-$(CONFIG_KERNEL_LZO) = lzo | |
71 | compress-$(CONFIG_KERNEL_LZMA) = lzma | |
72 | compress-$(CONFIG_KERNEL_XZ) = xzkern | |
73 | compress-$(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 | ||
53f67545 | 92 | targets := vmlinux vmlinux.lds piggy_data piggy.o \ |
b44c72de | 93 | lib1funcs.o ashldi3.o bswapsdi2.o \ |
684c1201 | 94 | head.o $(OBJS) |
014c257c | 95 | |
53f67545 MY |
96 | clean-files += piggy_data lib1funcs.S ashldi3.S bswapsdi2.S \ |
97 | $(libfdt) $(libfdt_hdrs) hyp-stub.S | |
f1b957d3 | 98 | |
8c36a757 AB |
99 | KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING |
100 | ||
606576ce | 101 | ifeq ($(CONFIG_FUNCTION_TRACER),y) |
014c257c AS |
102 | ORIG_CFLAGS := $(KBUILD_CFLAGS) |
103 | KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS)) | |
104 | endif | |
105 | ||
b8083f86 | 106 | ccflags-y := -fpic -mno-single-pic-base -fno-builtin -I$(obj) |
da94a829 | 107 | asflags-y := -DZIMAGE |
1da177e4 | 108 | |
5ffb04f6 | 109 | # Supply kernel BSS size to the decompressor via a linker symbol. |
1ec332a3 JK |
110 | KBSS_SZ = $(shell $(CROSS_COMPILE)size $(obj)/../../../../vmlinux | \ |
111 | awk 'END{print $$3}') | |
5ffb04f6 | 112 | LDFLAGS_vmlinux = --defsym _kernel_bss_size=$(KBSS_SZ) |
9e84ed63 RK |
113 | # Supply ZRELADDR to the decompressor via a linker symbol. |
114 | ifneq ($(CONFIG_AUTO_ZRELADDR),y) | |
d239b1dc | 115 | LDFLAGS_vmlinux += --defsym zreladdr=$(ZRELADDR) |
9e84ed63 | 116 | endif |
26584853 CM |
117 | ifeq ($(CONFIG_CPU_ENDIAN_BE8),y) |
118 | LDFLAGS_vmlinux += --be8 | |
119 | endif | |
e7db7b42 AT |
120 | # ? |
121 | LDFLAGS_vmlinux += -p | |
122 | # Report unresolved symbol references | |
123 | LDFLAGS_vmlinux += --no-undefined | |
124 | # Delete all temporary local symbols | |
125 | LDFLAGS_vmlinux += -X | |
126 | # Next argument is a linker script | |
127 | LDFLAGS_vmlinux += -T | |
128 | ||
129 | # For __aeabi_uidivmod | |
130 | lib1funcs = $(obj)/lib1funcs.o | |
131 | ||
63d15148 | 132 | $(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S |
e7db7b42 | 133 | $(call cmd,shipped) |
1da177e4 | 134 | |
a7f464f3 IK |
135 | # For __aeabi_llsl |
136 | ashldi3 = $(obj)/ashldi3.o | |
137 | ||
138 | $(obj)/ashldi3.S: $(srctree)/arch/$(SRCARCH)/lib/ashldi3.S | |
139 | $(call cmd,shipped) | |
140 | ||
017f161a KP |
141 | # For __bswapsi2, __bswapdi2 |
142 | bswapsdi2 = $(obj)/bswapsdi2.o | |
143 | ||
144 | $(obj)/bswapsdi2.S: $(srctree)/arch/$(SRCARCH)/lib/bswapsdi2.S | |
145 | $(call cmd,shipped) | |
146 | ||
8d7e4cc2 NP |
147 | # We need to prevent any GOTOFF relocs being used with references |
148 | # to symbols in the .bss section since we cannot relocate them | |
149 | # independently from the rest at run time. This can be achieved by | |
150 | # ensuring that no private .bss symbols exist, as global symbols | |
151 | # always have a GOT entry which is what we need. | |
152 | # The .data section is already discarded by the linker script so no need | |
153 | # to bother about it here. | |
154 | check_for_bad_syms = \ | |
155 | bad_syms=$$($(CROSS_COMPILE)nm $@ | sed -n 's/^.\{8\} [bc] \(.*\)/\1/p') && \ | |
156 | [ -z "$$bad_syms" ] || \ | |
157 | ( echo "following symbols must have non local/private scope:" >&2; \ | |
158 | echo "$$bad_syms" >&2; rm -f $@; false ) | |
159 | ||
60aac932 | 160 | check_for_multiple_zreladdr = \ |
4bdad983 | 161 | if [ $(words $(ZRELADDR)) -gt 1 -a "$(CONFIG_AUTO_ZRELADDR)" = "" ]; then \ |
60aac932 SH |
162 | echo 'multiple zreladdrs: $(ZRELADDR)'; \ |
163 | echo 'This needs CONFIG_AUTO_ZRELADDR to be set'; \ | |
164 | false; \ | |
165 | fi | |
166 | ||
81a0bc39 RF |
167 | efi-obj-$(CONFIG_EFI_STUB) := $(objtree)/drivers/firmware/efi/libstub/lib.a |
168 | ||
53f67545 | 169 | $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.o \ |
017f161a | 170 | $(addprefix $(obj)/, $(OBJS)) $(lib1funcs) $(ashldi3) \ |
81a0bc39 | 171 | $(bswapsdi2) $(efi-obj-y) FORCE |
60aac932 | 172 | @$(check_for_multiple_zreladdr) |
1da177e4 | 173 | $(call if_changed,ld) |
8d7e4cc2 | 174 | @$(check_for_bad_syms) |
1da177e4 | 175 | |
53f67545 | 176 | $(obj)/piggy_data: $(obj)/../Image FORCE |
f57deb0b | 177 | $(call if_changed,$(compress-y)) |
1da177e4 | 178 | |
53f67545 | 179 | $(obj)/piggy.o: $(obj)/piggy_data |
1da177e4 | 180 | |
4486b863 RK |
181 | CFLAGS_font.o := -Dstatic= |
182 | ||
183 | $(obj)/font.c: $(FONTC) | |
184 | $(call cmd,shipped) | |
1da177e4 | 185 | |
8d9f4913 JPB |
186 | AFLAGS_hyp-stub.o := -Wa,-march=armv7-a |
187 | ||
424e5994 DM |
188 | $(obj)/hyp-stub.S: $(srctree)/arch/$(SRCARCH)/kernel/hyp-stub.S |
189 | $(call cmd,shipped) |