xref: /linux/usr/Makefile (revision 65e00e04e5aea34b256814cfa21b32e3b94a2402)
1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
2d39a206bSSam Ravnborg#
3d39a206bSSam Ravnborg# kbuild file for usr/ - including initramfs image
4d39a206bSSam Ravnborg#
51da177e4SLinus Torvalds
6*65e00e04SMasahiro Yamada# cmd_bzip2, cmd_lzma, cmd_lzo, cmd_lz4 from scripts/Makefile.lib appends the
7*65e00e04SMasahiro Yamada# size at the end of the compressed file, which unfortunately does not work
8*65e00e04SMasahiro Yamada# with unpack_to_rootfs(). Make size_append no-op.
9*65e00e04SMasahiro Yamadaoverride size_append := :
109e3596b0SNicholas Piggin
11*65e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_NONE)	:= shipped
12*65e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_GZIP)	:= gzip
13*65e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_BZIP2)	:= bzip2
14*65e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_LZMA)	:= lzma
15*65e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_XZ)	:= xzmisc
16*65e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_LZO)	:= lzo
17*65e00e04SMasahiro Yamadacompress-$(CONFIG_INITRAMFS_COMPRESSION_LZ4)	:= lz4
186ae64e42SHendrik Brueckner
196ae64e42SHendrik Bruecknerobj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data.o
201da177e4SLinus Torvalds
21*65e00e04SMasahiro Yamada$(obj)/initramfs_data.o: $(obj)/initramfs_inc_data
221da177e4SLinus Torvalds
23*65e00e04SMasahiro Yamadaramfs-input := $(strip $(shell echo $(CONFIG_INITRAMFS_SOURCE)))
24*65e00e04SMasahiro Yamadacpio-data :=
25*65e00e04SMasahiro Yamada
26*65e00e04SMasahiro Yamada# If CONFIG_INITRAMFS_SOURCE is empty, generate a small initramfs with the
27*65e00e04SMasahiro Yamada# default contents.
28*65e00e04SMasahiro Yamadaifeq ($(ramfs-input),)
29*65e00e04SMasahiro Yamadaramfs-input := $(srctree)/$(src)/default_cpio_list
30*65e00e04SMasahiro Yamadaendif
31*65e00e04SMasahiro Yamada
32*65e00e04SMasahiro Yamadaifeq ($(words $(ramfs-input)),1)
33*65e00e04SMasahiro Yamada
34*65e00e04SMasahiro Yamada# If CONFIG_INITRAMFS_SOURCE specifies a single file, and it is suffixed with
35*65e00e04SMasahiro Yamada# .cpio, use it directly as an initramfs.
36*65e00e04SMasahiro Yamadaifneq ($(filter %.cpio,$(ramfs-input)),)
37*65e00e04SMasahiro Yamadacpio-data := $(ramfs-input)
38*65e00e04SMasahiro Yamadaendif
39*65e00e04SMasahiro Yamada
40*65e00e04SMasahiro Yamada# If CONFIG_INITRAMFS_SOURCE specifies a single file, and it is suffixed with
41*65e00e04SMasahiro Yamada# .cpio.*, use it directly as an initramfs, and avoid double compression.
42*65e00e04SMasahiro Yamadaifeq ($(words $(subst .cpio.,$(space),$(ramfs-input))),2)
43*65e00e04SMasahiro Yamadacpio-data := $(ramfs-input)
44*65e00e04SMasahiro Yamadacompress-y := shipped
45*65e00e04SMasahiro Yamadaendif
46*65e00e04SMasahiro Yamada
47*65e00e04SMasahiro Yamadaendif
48*65e00e04SMasahiro Yamada
49*65e00e04SMasahiro Yamada# For other cases, generate the initramfs cpio archive based on the contents
50*65e00e04SMasahiro Yamada# specified by CONFIG_INITRAMFS_SOURCE.
51*65e00e04SMasahiro Yamadaifeq ($(cpio-data),)
52*65e00e04SMasahiro Yamada
53*65e00e04SMasahiro Yamadacpio-data := $(obj)/initramfs_data.cpio
54d39a206bSSam Ravnborg
55d39a206bSSam Ravnborghostprogs-y := gen_init_cpio
56d39a206bSSam Ravnborg
57*65e00e04SMasahiro Yamada# .initramfs_data.cpio.d is used to identify all files included
58d39a206bSSam Ravnborg# in initramfs and to detect if any files are added/removed.
59d39a206bSSam Ravnborg# Removed files are identified by directory timestamp being updated
60d39a206bSSam Ravnborg# The dependency list is generated by gen_initramfs.sh -l
61*65e00e04SMasahiro Yamada-include $(obj)/.initramfs_data.cpio.d
629e3596b0SNicholas Piggin
6358a2f7d8SSam Ravnborg# do not try to update files included in initramfs
6458a2f7d8SSam Ravnborg$(deps_initramfs): ;
6558a2f7d8SSam Ravnborg
66*65e00e04SMasahiro Yamadaquiet_cmd_initfs = GEN     $@
67*65e00e04SMasahiro Yamada      cmd_initfs = \
68*65e00e04SMasahiro Yamada	$(CONFIG_SHELL) $< -o $@ -l $(obj)/.initramfs_data.cpio.d \
69*65e00e04SMasahiro Yamada	$(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \
70*65e00e04SMasahiro Yamada	$(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID)) \
71*65e00e04SMasahiro Yamada	$(ramfs-input)
72*65e00e04SMasahiro Yamada
73a26ee60fSAlain Knaff# We rebuild initramfs_data.cpio if:
74c7fe0608SEugen Cazacu# 1) Any included file is newer than initramfs_data.cpio
75d39a206bSSam Ravnborg# 2) There are changes in which files are included (added or deleted)
76a26ee60fSAlain Knaff# 3) If gen_init_cpio are newer than initramfs_data.cpio
77c7fe0608SEugen Cazacu# 4) Arguments to gen_initramfs.sh changes
78*65e00e04SMasahiro Yamada$(obj)/initramfs_data.cpio: $(src)/gen_initramfs.sh $(obj)/gen_init_cpio $(deps_initramfs) FORCE
79d39a206bSSam Ravnborg	$(call if_changed,initfs)
80d6fc9fcbSMasahiro Yamada
81*65e00e04SMasahiro Yamadaendif
82*65e00e04SMasahiro Yamada
83*65e00e04SMasahiro Yamada$(obj)/initramfs_inc_data: $(cpio-data) FORCE
84*65e00e04SMasahiro Yamada	$(call if_changed,$(compress-y))
85*65e00e04SMasahiro Yamada
86*65e00e04SMasahiro Yamadatargets += initramfs_data.cpio initramfs_inc_data
87*65e00e04SMasahiro Yamada
88d6fc9fcbSMasahiro Yamadasubdir-$(CONFIG_UAPI_HEADER_TEST) += include
89