mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 12:44:11 +08:00
97ba4416d6
You do not need to use $(shell ...) in recipe lines, as they are already executed in a shell. An alternative solution is $$(...), which is an escaped sequence of the shell's command substituion, $(...). For this case, there is a reason to avoid $(shell ...). Kbuild detects command changes by using the if_changed macro, which compares the previous command recorded in .*.cmd with the current command from Makefile. If they differ, Kbuild re-runs the build rule. To diff the commands, Make must expand $(shell ...) first. It means that hexdump is executed every time, even when nothing needs rebuilding. If Kbuild determines that vmlinux.bin needs rebuilding, hexdump will be executed again to evaluate the 'cmd' macro, one more time to really build vmlinux.bin, and finally yet again to record the expanded command into .*.cmd. Replace $(shell ...) with $$(...) to avoid multiple, unnecessay shell evaluations. Since Make is agnostic about the shell code, $(...), the if_changed macro compares the string "$(hexdump -s16 -n4 ...)" verbatim, so hexdump is run only for building vmlinux.bin. For the same reason, $(shell ...) in EFI_ZBOOT_OBJCOPY_FLAGS should be eliminated. While I was here, I replaced '&&' with ';' because a command for if_changed is executed with 'set -e'. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Reviewed-by: Ard Biesheuvel <ardb@kernel.org> Link: https://lore.kernel.org/r/20231218080127.907460-1-masahiroy@kernel.org Signed-off-by: Will Deacon <will@kernel.org>
51 lines
1.3 KiB
Makefile
51 lines
1.3 KiB
Makefile
#
|
|
# arch/arm64/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) 2012, ARM Ltd.
|
|
# Author: Will Deacon <will.deacon@arm.com>
|
|
#
|
|
# Based on the ia64 boot/Makefile.
|
|
#
|
|
|
|
OBJCOPYFLAGS_Image :=-O binary -R .note -R .note.gnu.build-id -R .comment -S
|
|
|
|
targets := Image Image.bz2 Image.gz Image.lz4 Image.lzma Image.lzo Image.zst
|
|
|
|
$(obj)/Image: vmlinux FORCE
|
|
$(call if_changed,objcopy)
|
|
|
|
$(obj)/Image.bz2: $(obj)/Image FORCE
|
|
$(call if_changed,bzip2)
|
|
|
|
$(obj)/Image.gz: $(obj)/Image FORCE
|
|
$(call if_changed,gzip)
|
|
|
|
$(obj)/Image.lz4: $(obj)/Image FORCE
|
|
$(call if_changed,lz4)
|
|
|
|
$(obj)/Image.lzma: $(obj)/Image FORCE
|
|
$(call if_changed,lzma)
|
|
|
|
$(obj)/Image.lzo: $(obj)/Image FORCE
|
|
$(call if_changed,lzo)
|
|
|
|
$(obj)/Image.zst: $(obj)/Image FORCE
|
|
$(call if_changed,zstd)
|
|
|
|
EFI_ZBOOT_PAYLOAD := Image
|
|
EFI_ZBOOT_BFD_TARGET := elf64-littleaarch64
|
|
EFI_ZBOOT_MACH_TYPE := ARM64
|
|
EFI_ZBOOT_FORWARD_CFI := $(CONFIG_ARM64_BTI_KERNEL)
|
|
|
|
EFI_ZBOOT_OBJCOPY_FLAGS = --add-symbol zboot_code_size=0x$$( \
|
|
$(NM) vmlinux|grep _kernel_codesize|cut -d' ' -f1)
|
|
|
|
include $(srctree)/drivers/firmware/efi/libstub/Makefile.zboot
|