forked from Minki/linux
9668097599
Currently, this script is run twice, for the dependency list, and then for the cpio archive. The first one is re-run every time although its build log is suppressed so nobody notices it. Make it work more efficiently by generating the cpio and the dependency list at the same time. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
58 lines
2.0 KiB
Makefile
58 lines
2.0 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# kbuild file for usr/ - including initramfs image
|
|
#
|
|
|
|
suffix_y = $(subst $\",,$(CONFIG_INITRAMFS_COMPRESSION))
|
|
datafile_y = initramfs_data.cpio$(suffix_y)
|
|
datafile_d_y = .$(datafile_y).d
|
|
AFLAGS_initramfs_data.o += -DINITRAMFS_IMAGE="usr/$(datafile_y)"
|
|
|
|
# clean rules do not have CONFIG_INITRAMFS_COMPRESSION. So clean up after all
|
|
# possible compression formats.
|
|
clean-files += initramfs_data.cpio*
|
|
|
|
# Generate builtin.o based on initramfs_data.o
|
|
obj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data.o
|
|
|
|
# initramfs_data.o contains the compressed initramfs_data.cpio image.
|
|
# The image is included using .incbin, a dependency which is not
|
|
# tracked automatically.
|
|
$(obj)/initramfs_data.o: $(obj)/$(datafile_y) FORCE
|
|
|
|
#####
|
|
# Generate the initramfs cpio archive
|
|
|
|
hostprogs-y := gen_init_cpio
|
|
ramfs-input := $(if $(filter-out "",$(CONFIG_INITRAMFS_SOURCE)), \
|
|
$(shell echo $(CONFIG_INITRAMFS_SOURCE)),-d)
|
|
ramfs-args := \
|
|
$(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \
|
|
$(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID))
|
|
|
|
# $(datafile_d_y) is used to identify all files included
|
|
# in initramfs and to detect if any files are added/removed.
|
|
# Removed files are identified by directory timestamp being updated
|
|
# The dependency list is generated by gen_initramfs.sh -l
|
|
ifneq ($(wildcard $(obj)/$(datafile_d_y)),)
|
|
include $(obj)/$(datafile_d_y)
|
|
endif
|
|
|
|
quiet_cmd_initfs = GEN $@
|
|
cmd_initfs = $(CONFIG_SHELL) $< -o $@ -l $(obj)/$(datafile_d_y) $(ramfs-args) $(ramfs-input)
|
|
|
|
targets := $(datafile_y)
|
|
|
|
# do not try to update files included in initramfs
|
|
$(deps_initramfs): ;
|
|
|
|
# We rebuild initramfs_data.cpio if:
|
|
# 1) Any included file is newer than initramfs_data.cpio
|
|
# 2) There are changes in which files are included (added or deleted)
|
|
# 3) If gen_init_cpio are newer than initramfs_data.cpio
|
|
# 4) Arguments to gen_initramfs.sh changes
|
|
$(obj)/$(datafile_y): $(src)/gen_initramfs.sh $(obj)/gen_init_cpio $(deps_initramfs) FORCE
|
|
$(call if_changed,initfs)
|
|
|
|
subdir-$(CONFIG_UAPI_HEADER_TEST) += include
|