Linux内核arch/arm/boot/Makefile阅读

root@Ubuntu:/usr/src/linux-headers-2.6.32-26/arch/arm/boot# cat Makefile

#

# arch/arm/boot/Makefile

#

# This file is included by the global makefile so that you can add your own

# architecture-specific flags and dependencies.

#

# This file is subject to the terms and conditions of the GNU General Public

# License.  See the file "COPYING" in the main directory of this archive

# for more details.

#

# Copyright (C) 1995-2002 Russell King

#

MKIMAGE         := $(srctree)/scripts/mkuboot.sh

ifneq ($(MACHINE),)

include $(srctree)/$(MACHINE)/Makefile.boot

endif

# Note: the following conditions must always be true:

#   ZRELADDR == virt_to_phys(PAGE_OFFSET + TEXT_OFFSET)

#   PARAMS_PHYS must be within 4MB of ZRELADDR

#   INITRD_PHYS must be in RAM

ZRELADDR    := $(zreladdr-y)

PARAMS_PHYS := $(params_phys-y)

INITRD_PHYS := $(initrd_phys-y)

export ZRELADDR INITRD_PHYS PARAMS_PHYS

targets := Image zImage xipImage bootpImage uImage  #规则的目标,好几个啊。

ifeq ($(CONFIG_XIP_KERNEL),y)

$(obj)/xipImage: vmlinux FORCE

$(call if_changed,objcopy)

@echo '  Kernel: $@ is ready (physical address: $(CONFIG_XIP_PHYS_ADDR))'

$(obj)/Image $(obj)/zImage: FORCE

@echo 'Kernel configured for XIP (CONFIG_XIP_KERNEL=y)'

@echo 'Only the xipImage target is available in this case'

@false

else

$(obj)/xipImage: FORCE

@echo 'Kernel not configured for XIP (CONFIG_XIP_KERNEL!=y)'

@false

$(obj)/Image: vmlinux FORCE

$(call if_changed,objcopy)

@echo '  Kernel: $@ is ready'

$(obj)/compressed/vmlinux: $(obj)/Image FORCE

$(Q)$(MAKE) $(build)=$(obj)/compressed $@

$(obj)/zImage: $(obj)/compressed/vmlinux FORCE

$(call if_changed,objcopy)

@echo '  Kernel: $@ is ready'

endif

quiet_cmd_uimage = UIMAGE  $@

      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \

  -C none -a $(LOADADDR) -e $(STARTADDR) \

  -n 'Linux-$(KERNELRELEASE)' -d $< $@

ifeq ($(CONFIG_ZBOOT_ROM),y)

$(obj)/uImage: LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)

else

$(obj)/uImage: LOADADDR=$(ZRELADDR)

endif

ifeq ($(CONFIG_THUMB2_KERNEL),y)

# Set bit 0 to 1 so that "mov pc, rx" switches to Thumb-2 mode

$(obj)/uImage: STARTADDR=$(shell echo $(LOADADDR) | sed -e "s/.$$/1/")

else

$(obj)/uImage: STARTADDR=$(LOADADDR)

endif

$(obj)/uImage: $(obj)/zImage FORCE

$(call if_changed,uimage)

@echo '  Image $@ is ready'

$(obj)/bootp/bootp: $(obj)/zImage initrd FORCE

$(Q)$(MAKE) $(build)=$(obj)/bootp $@

@:

$(obj)/bootpImage: $(obj)/bootp/bootp FORCE

$(call if_changed,objcopy)

@echo '  Kernel: $@ is ready'

PHONY += initrd FORCE

initrd:

@test "$(INITRD_PHYS)" != "" || \

(echo This machine does not support INITRD; exit -1)

@test "$(INITRD)" != "" || \

(echo You must specify INITRD; exit -1)

install: $(obj)/Image

$(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \

$(obj)/Image System.map "$(INSTALL_PATH)"

zinstall: $(obj)/zImage

$(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \

$(obj)/zImage System.map "$(INSTALL_PATH)"

zi:

$(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \

$(obj)/zImage System.map "$(INSTALL_PATH)"

i:

$(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \

$(obj)/Image System.map "$(INSTALL_PATH)"

subdir-    := bootp compressed