![Paul Smith](/assets/img/avatar_default.png)
The kbuild system takes advantage of an incorrect behavior in GNU make. Once this behavior is fixed, all files in the kernel rebuild every time, even if nothing has changed. This patch ensures kbuild works with both the incorrect and correct behaviors of GNU make. For more details on the incorrect behavior, see: http://lists.gnu.org/archive/html/bug-make/2006-03/msg00003.html Changes in this patch: - Keep all targets that are to be marked .PHONY in a variable, PHONY. - Add .PHONY: $(PHONY) to mark them properly. - Remove any $(PHONY) files from the $? list when determining whether targets are up-to-date or not. Signed-off-by: Paul Smith <psmith@gnu.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
95 lines
2.5 KiB
Makefile
95 lines
2.5 KiB
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 $(ZRELADDR) -e $(ZRELADDR) \
|
|
-n 'Linux-$(KERNELRELEASE)' -d $< $@
|
|
|
|
$(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)"
|
|
|
|
subdir- := bootp compressed
|