mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
gen_init_cpio is currently only needed when an initramfs cpio archive is to be created out of CONFIG_INITRAMFS_SOURCE's contents. In other cases, it's not added to hostprogs and no make target is available. In preparation to use the host program from Makefile.package, define it unconditionally. The program will still only be built as needed. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de> Reviewed-by: Nathan Chancellor <nathan@kernel.org> Tested-by: Nathan Chancellor <nathan@kernel.org> Tested-by: Nicolas Schier <nsc@kernel.org> Link: https://patch.msgid.link/20251125-cpio-modules-pkg-v2-1-aa8277d89682@pengutronix.de Signed-off-by: Nicolas Schier <nsc@kernel.org>
86 lines
2.7 KiB
Makefile
86 lines
2.7 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# kbuild file for usr/ - including initramfs image
|
|
#
|
|
|
|
compress-y := copy
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_GZIP) := gzip
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_BZIP2) := bzip2
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_LZMA) := lzma
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_XZ) := xzmisc
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_LZO) := lzo
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_LZ4) := lz4
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_ZSTD) := zstd
|
|
|
|
obj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data.o
|
|
|
|
$(obj)/initramfs_data.o: $(obj)/initramfs_inc_data
|
|
|
|
hostprogs := gen_init_cpio
|
|
|
|
ramfs-input := $(CONFIG_INITRAMFS_SOURCE)
|
|
cpio-data :=
|
|
|
|
# If CONFIG_INITRAMFS_SOURCE is empty, generate a small initramfs with the
|
|
# default contents.
|
|
ifeq ($(ramfs-input),)
|
|
ramfs-input := $(src)/default_cpio_list
|
|
endif
|
|
|
|
ifeq ($(words $(ramfs-input)),1)
|
|
|
|
# If CONFIG_INITRAMFS_SOURCE specifies a single file, and it is suffixed with
|
|
# .cpio, use it directly as an initramfs.
|
|
ifneq ($(filter %.cpio,$(ramfs-input)),)
|
|
cpio-data := $(ramfs-input)
|
|
endif
|
|
|
|
# If CONFIG_INITRAMFS_SOURCE specifies a single file, and it is suffixed with
|
|
# .cpio.*, use it directly as an initramfs, and avoid double compression.
|
|
ifeq ($(words $(subst .cpio.,$(space),$(ramfs-input))),2)
|
|
cpio-data := $(ramfs-input)
|
|
compress-y := copy
|
|
endif
|
|
|
|
endif
|
|
|
|
# For other cases, generate the initramfs cpio archive based on the contents
|
|
# specified by CONFIG_INITRAMFS_SOURCE.
|
|
ifeq ($(cpio-data),)
|
|
|
|
cpio-data := $(obj)/initramfs_data.cpio
|
|
|
|
# .initramfs_data.cpio.d 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
|
|
-include $(obj)/.initramfs_data.cpio.d
|
|
|
|
# do not try to update files included in initramfs
|
|
$(deps_initramfs): ;
|
|
|
|
quiet_cmd_initfs = GEN $@
|
|
cmd_initfs = \
|
|
$(CONFIG_SHELL) $< -o $@ -l $(obj)/.initramfs_data.cpio.d \
|
|
$(addprefix -u , $(CONFIG_INITRAMFS_ROOT_UID)) \
|
|
$(addprefix -g , $(CONFIG_INITRAMFS_ROOT_GID)) \
|
|
$(if $(KBUILD_BUILD_TIMESTAMP), -d "$(KBUILD_BUILD_TIMESTAMP)") \
|
|
$(ramfs-input)
|
|
|
|
# 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)/initramfs_data.cpio: $(src)/gen_initramfs.sh $(obj)/gen_init_cpio $(deps_initramfs) FORCE
|
|
$(call if_changed,initfs)
|
|
|
|
endif
|
|
|
|
$(obj)/initramfs_inc_data: $(cpio-data) FORCE
|
|
$(call if_changed,$(compress-y))
|
|
|
|
targets += initramfs_data.cpio initramfs_inc_data
|
|
|
|
subdir-$(CONFIG_UAPI_HEADER_TEST) += include
|