linux/arch/arm/boot/compressed/Makefile
<<
>>
Prefs
   1#
   2# linux/arch/arm/boot/compressed/Makefile
   3#
   4# create a compressed vmlinuz image from the original vmlinux
   5#
   6
   7OBJS            =
   8
   9# Ensure that MMCIF loader code appears early in the image
  10# to minimise that number of bocks that have to be read in
  11# order to load it.
  12ifeq ($(CONFIG_ZBOOT_ROM_MMCIF),y)
  13OBJS            += mmcif-sh7372.o
  14endif
  15
  16# Ensure that SDHI loader code appears early in the image
  17# to minimise that number of bocks that have to be read in
  18# order to load it.
  19ifeq ($(CONFIG_ZBOOT_ROM_SH_MOBILE_SDHI),y)
  20OBJS            += sdhi-shmobile.o
  21OBJS            += sdhi-sh7372.o
  22endif
  23
  24AFLAGS_head.o += -DTEXT_OFFSET=$(TEXT_OFFSET)
  25HEAD    = head.o
  26OBJS    += misc.o decompress.o
  27ifeq ($(CONFIG_DEBUG_UNCOMPRESS),y)
  28OBJS    += debug.o
  29endif
  30FONTC   = $(srctree)/drivers/video/console/font_acorn_8x8.c
  31
  32# string library code (-Os is enforced to keep it much smaller)
  33OBJS            += string.o
  34CFLAGS_string.o := -Os
  35
  36ifeq ($(CONFIG_ARM_VIRT_EXT),y)
  37OBJS            += hyp-stub.o
  38endif
  39
  40#
  41# Architecture dependencies
  42#
  43ifeq ($(CONFIG_ARCH_ACORN),y)
  44OBJS            += ll_char_wr.o font.o
  45endif
  46
  47ifeq ($(CONFIG_ARCH_SHARK),y)
  48OBJS            += head-shark.o ofw-shark.o
  49endif
  50
  51ifeq ($(CONFIG_ARCH_SA1100),y)
  52OBJS            += head-sa1100.o
  53endif
  54
  55ifeq ($(CONFIG_CPU_XSCALE),y)
  56OBJS            += head-xscale.o
  57endif
  58
  59ifeq ($(CONFIG_PXA_SHARPSL_DETECT_MACH_ID),y)
  60OBJS            += head-sharpsl.o
  61endif
  62
  63ifeq ($(CONFIG_CPU_ENDIAN_BE32),y)
  64ifeq ($(CONFIG_CPU_CP15),y)
  65OBJS            += big-endian.o
  66else
  67# The endian should be set by h/w design.
  68endif
  69endif
  70
  71ifeq ($(CONFIG_ARCH_SHMOBILE),y)
  72OBJS            += head-shmobile.o
  73endif
  74
  75#
  76# We now have a PIC decompressor implementation.  Decompressors running
  77# from RAM should not define ZTEXTADDR.  Decompressors running directly
  78# from ROM or Flash must define ZTEXTADDR (preferably via the config)
  79# FIXME: Previous assignment to ztextaddr-y is lost here. See SHARK
  80ifeq ($(CONFIG_ZBOOT_ROM),y)
  81ZTEXTADDR       := $(CONFIG_ZBOOT_ROM_TEXT)
  82ZBSSADDR        := $(CONFIG_ZBOOT_ROM_BSS)
  83else
  84ZTEXTADDR       := 0
  85ZBSSADDR        := ALIGN(8)
  86endif
  87
  88SEDFLAGS        = s/TEXT_START/$(ZTEXTADDR)/;s/BSS_START/$(ZBSSADDR)/
  89
  90suffix_$(CONFIG_KERNEL_GZIP) = gzip
  91suffix_$(CONFIG_KERNEL_LZO)  = lzo
  92suffix_$(CONFIG_KERNEL_LZMA) = lzma
  93suffix_$(CONFIG_KERNEL_XZ)   = xzkern
  94
  95# Borrowed libfdt files for the ATAG compatibility mode
  96
  97libfdt          := fdt_rw.c fdt_ro.c fdt_wip.c fdt.c
  98libfdt_hdrs     := fdt.h libfdt.h libfdt_internal.h
  99
 100libfdt_objs     := $(addsuffix .o, $(basename $(libfdt)))
 101
 102$(addprefix $(obj)/,$(libfdt) $(libfdt_hdrs)): $(obj)/%: $(srctree)/scripts/dtc/libfdt/%
 103        $(call cmd,shipped)
 104
 105$(addprefix $(obj)/,$(libfdt_objs) atags_to_fdt.o): \
 106        $(addprefix $(obj)/,$(libfdt_hdrs))
 107
 108ifeq ($(CONFIG_ARM_ATAG_DTB_COMPAT),y)
 109OBJS    += $(libfdt_objs) atags_to_fdt.o
 110endif
 111
 112targets       := vmlinux vmlinux.lds \
 113                 piggy.$(suffix_y) piggy.$(suffix_y).o \
 114                 lib1funcs.o lib1funcs.S ashldi3.o ashldi3.S \
 115                 font.o font.c head.o misc.o $(OBJS)
 116
 117# Make sure files are removed during clean
 118extra-y       += piggy.gzip piggy.lzo piggy.lzma piggy.xzkern \
 119                 lib1funcs.S ashldi3.S $(libfdt) $(libfdt_hdrs) \
 120                 hyp-stub.S
 121
 122ifeq ($(CONFIG_FUNCTION_TRACER),y)
 123ORIG_CFLAGS := $(KBUILD_CFLAGS)
 124KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS))
 125endif
 126
 127ccflags-y := -fpic -mno-single-pic-base -fno-builtin -I$(obj)
 128asflags-y := -DZIMAGE
 129
 130# Supply kernel BSS size to the decompressor via a linker symbol.
 131KBSS_SZ = $(shell $(CROSS_COMPILE)size $(obj)/../../../../vmlinux | \
 132                awk 'END{print $$3}')
 133LDFLAGS_vmlinux = --defsym _kernel_bss_size=$(KBSS_SZ)
 134# Supply ZRELADDR to the decompressor via a linker symbol.
 135ifneq ($(CONFIG_AUTO_ZRELADDR),y)
 136LDFLAGS_vmlinux += --defsym zreladdr=$(ZRELADDR)
 137endif
 138ifeq ($(CONFIG_CPU_ENDIAN_BE8),y)
 139LDFLAGS_vmlinux += --be8
 140endif
 141# ?
 142LDFLAGS_vmlinux += -p
 143# Report unresolved symbol references
 144LDFLAGS_vmlinux += --no-undefined
 145# Delete all temporary local symbols
 146LDFLAGS_vmlinux += -X
 147# Next argument is a linker script
 148LDFLAGS_vmlinux += -T
 149
 150# For __aeabi_uidivmod
 151lib1funcs = $(obj)/lib1funcs.o
 152
 153$(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S
 154        $(call cmd,shipped)
 155
 156# For __aeabi_llsl
 157ashldi3 = $(obj)/ashldi3.o
 158
 159$(obj)/ashldi3.S: $(srctree)/arch/$(SRCARCH)/lib/ashldi3.S
 160        $(call cmd,shipped)
 161
 162# We need to prevent any GOTOFF relocs being used with references
 163# to symbols in the .bss section since we cannot relocate them
 164# independently from the rest at run time.  This can be achieved by
 165# ensuring that no private .bss symbols exist, as global symbols
 166# always have a GOT entry which is what we need.
 167# The .data section is already discarded by the linker script so no need
 168# to bother about it here.
 169check_for_bad_syms = \
 170bad_syms=$$($(CROSS_COMPILE)nm $@ | sed -n 's/^.\{8\} [bc] \(.*\)/\1/p') && \
 171[ -z "$$bad_syms" ] || \
 172  ( echo "following symbols must have non local/private scope:" >&2; \
 173    echo "$$bad_syms" >&2; rm -f $@; false )
 174
 175check_for_multiple_zreladdr = \
 176if [ $(words $(ZRELADDR)) -gt 1 -a "$(CONFIG_AUTO_ZRELADDR)" = "" ]; then \
 177        echo 'multiple zreladdrs: $(ZRELADDR)'; \
 178        echo 'This needs CONFIG_AUTO_ZRELADDR to be set'; \
 179        false; \
 180fi
 181
 182$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o \
 183                $(addprefix $(obj)/, $(OBJS)) $(lib1funcs) $(ashldi3) FORCE
 184        @$(check_for_multiple_zreladdr)
 185        $(call if_changed,ld)
 186        @$(check_for_bad_syms)
 187
 188$(obj)/piggy.$(suffix_y): $(obj)/../Image FORCE
 189        $(call if_changed,$(suffix_y))
 190
 191$(obj)/piggy.$(suffix_y).o:  $(obj)/piggy.$(suffix_y) FORCE
 192
 193CFLAGS_font.o := -Dstatic=
 194
 195$(obj)/font.c: $(FONTC)
 196        $(call cmd,shipped)
 197
 198$(obj)/vmlinux.lds: $(obj)/vmlinux.lds.in arch/arm/boot/Makefile $(KCONFIG_CONFIG)
 199        @sed "$(SEDFLAGS)" < $< > $@
 200
 201$(obj)/hyp-stub.S: $(srctree)/arch/$(SRCARCH)/kernel/hyp-stub.S
 202        $(call cmd,shipped)
 203