1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 2d39a206bSSam Ravnborg# 3d39a206bSSam Ravnborg# kbuild file for usr/ - including initramfs image 4d39a206bSSam Ravnborg# 51da177e4SLinus Torvalds 6a5575df5SMasahiro Yamadacompress-y := copy 765e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_GZIP) := gzip 865e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_BZIP2) := bzip2 965e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_LZMA) := lzma 1065e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_XZ) := xzmisc 1165e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_LZO) := lzo 1265e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_LZ4) := lz4 13a30d8a39SNick Terrellcompress-$(CONFIG_INITRAMFS_COMPRESSION_ZSTD) := zstd 146ae64e42SHendrik Brueckner 156ae64e42SHendrik Bruecknerobj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data.o 161da177e4SLinus Torvalds 1765e00e04SMasahiro Yamada$(obj)/initramfs_data.o: $(obj)/initramfs_inc_data 181da177e4SLinus Torvalds 19129ab0d2SMasahiro Yamadaramfs-input := $(CONFIG_INITRAMFS_SOURCE) 2065e00e04SMasahiro Yamadacpio-data := 2165e00e04SMasahiro Yamada 2265e00e04SMasahiro Yamada# If CONFIG_INITRAMFS_SOURCE is empty, generate a small initramfs with the 2365e00e04SMasahiro Yamada# default contents. 2465e00e04SMasahiro Yamadaifeq ($(ramfs-input),) 2565e00e04SMasahiro Yamadaramfs-input := $(srctree)/$(src)/default_cpio_list 2665e00e04SMasahiro Yamadaendif 2765e00e04SMasahiro Yamada 2865e00e04SMasahiro Yamadaifeq ($(words $(ramfs-input)),1) 2965e00e04SMasahiro Yamada 3065e00e04SMasahiro Yamada# If CONFIG_INITRAMFS_SOURCE specifies a single file, and it is suffixed with 3165e00e04SMasahiro Yamada# .cpio, use it directly as an initramfs. 3265e00e04SMasahiro Yamadaifneq ($(filter %.cpio,$(ramfs-input)),) 3365e00e04SMasahiro Yamadacpio-data := $(ramfs-input) 3465e00e04SMasahiro Yamadaendif 3565e00e04SMasahiro Yamada 3665e00e04SMasahiro Yamada# If CONFIG_INITRAMFS_SOURCE specifies a single file, and it is suffixed with 3765e00e04SMasahiro Yamada# .cpio.*, use it directly as an initramfs, and avoid double compression. 3865e00e04SMasahiro Yamadaifeq ($(words $(subst .cpio.,$(space),$(ramfs-input))),2) 3965e00e04SMasahiro Yamadacpio-data := $(ramfs-input) 40a5575df5SMasahiro Yamadacompress-y := copy 4165e00e04SMasahiro Yamadaendif 4265e00e04SMasahiro Yamada 4365e00e04SMasahiro Yamadaendif 4465e00e04SMasahiro Yamada 4565e00e04SMasahiro Yamada# For other cases, generate the initramfs cpio archive based on the contents 4665e00e04SMasahiro Yamada# specified by CONFIG_INITRAMFS_SOURCE. 4765e00e04SMasahiro Yamadaifeq ($(cpio-data),) 4865e00e04SMasahiro Yamada 4965e00e04SMasahiro Yamadacpio-data := $(obj)/initramfs_data.cpio 50d39a206bSSam Ravnborg 515f2fb52fSMasahiro Yamadahostprogs := gen_init_cpio 52d39a206bSSam Ravnborg 5365e00e04SMasahiro Yamada# .initramfs_data.cpio.d is used to identify all files included 54d39a206bSSam Ravnborg# in initramfs and to detect if any files are added/removed. 55d39a206bSSam Ravnborg# Removed files are identified by directory timestamp being updated 56d39a206bSSam Ravnborg# The dependency list is generated by gen_initramfs.sh -l 5765e00e04SMasahiro Yamada-include $(obj)/.initramfs_data.cpio.d 589e3596b0SNicholas Piggin 5958a2f7d8SSam Ravnborg# do not try to update files included in initramfs 6058a2f7d8SSam Ravnborg$(deps_initramfs): ; 6158a2f7d8SSam Ravnborg 6265e00e04SMasahiro Yamadaquiet_cmd_initfs = GEN $@ 6365e00e04SMasahiro Yamada cmd_initfs = \ 6465e00e04SMasahiro Yamada $(CONFIG_SHELL) $< -o $@ -l $(obj)/.initramfs_data.cpio.d \ 6565e00e04SMasahiro Yamada $(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \ 6665e00e04SMasahiro Yamada $(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID)) \ 67*7f8256aeSBenjamin Gray $(if $(KBUILD_BUILD_TIMESTAMP), -d "$(KBUILD_BUILD_TIMESTAMP)") \ 6865e00e04SMasahiro Yamada $(ramfs-input) 6965e00e04SMasahiro Yamada 70a26ee60fSAlain Knaff# We rebuild initramfs_data.cpio if: 71c7fe0608SEugen Cazacu# 1) Any included file is newer than initramfs_data.cpio 72d39a206bSSam Ravnborg# 2) There are changes in which files are included (added or deleted) 73a26ee60fSAlain Knaff# 3) If gen_init_cpio are newer than initramfs_data.cpio 74c7fe0608SEugen Cazacu# 4) Arguments to gen_initramfs.sh changes 7565e00e04SMasahiro Yamada$(obj)/initramfs_data.cpio: $(src)/gen_initramfs.sh $(obj)/gen_init_cpio $(deps_initramfs) FORCE 76d39a206bSSam Ravnborg $(call if_changed,initfs) 77d6fc9fcbSMasahiro Yamada 7865e00e04SMasahiro Yamadaendif 7965e00e04SMasahiro Yamada 8065e00e04SMasahiro Yamada$(obj)/initramfs_inc_data: $(cpio-data) FORCE 8165e00e04SMasahiro Yamada $(call if_changed,$(compress-y)) 8265e00e04SMasahiro Yamada 8365e00e04SMasahiro Yamadatargets += initramfs_data.cpio initramfs_inc_data 8465e00e04SMasahiro Yamada 85d6fc9fcbSMasahiro Yamadasubdir-$(CONFIG_UAPI_HEADER_TEST) += include 86