# 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

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 := $(srctree)/$(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

hostprogs := gen_init_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 \
	$(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \
	$(if $(CONFIG_INITRAMFS_ROOT_GID), -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
