xref: /openbmc/linux/usr/Makefile (revision 2612e3bbc0386368a850140a6c9b990cd496a5ec)
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