Commit | Line | Data |
---|---|---|
b2441318 | 1 | # SPDX-License-Identifier: GPL-2.0 |
d39a206b SR |
2 | # |
3 | # kbuild file for usr/ - including initramfs image | |
4 | # | |
1da177e4 | 5 | |
65e00e04 MY |
6 | # cmd_bzip2, cmd_lzma, cmd_lzo, cmd_lz4 from scripts/Makefile.lib appends the |
7 | # size at the end of the compressed file, which unfortunately does not work | |
8 | # with unpack_to_rootfs(). Make size_append no-op. | |
9 | override size_append := : | |
9e3596b0 | 10 | |
d4e9056d | 11 | compress-y := shipped |
65e00e04 MY |
12 | compress-$(CONFIG_INITRAMFS_COMPRESSION_GZIP) := gzip |
13 | compress-$(CONFIG_INITRAMFS_COMPRESSION_BZIP2) := bzip2 | |
14 | compress-$(CONFIG_INITRAMFS_COMPRESSION_LZMA) := lzma | |
15 | compress-$(CONFIG_INITRAMFS_COMPRESSION_XZ) := xzmisc | |
16 | compress-$(CONFIG_INITRAMFS_COMPRESSION_LZO) := lzo | |
17 | compress-$(CONFIG_INITRAMFS_COMPRESSION_LZ4) := lz4 | |
a30d8a39 | 18 | compress-$(CONFIG_INITRAMFS_COMPRESSION_ZSTD) := zstd |
6ae64e42 | 19 | |
6ae64e42 | 20 | obj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data.o |
1da177e4 | 21 | |
65e00e04 | 22 | $(obj)/initramfs_data.o: $(obj)/initramfs_inc_data |
1da177e4 | 23 | |
65e00e04 MY |
24 | ramfs-input := $(strip $(shell echo $(CONFIG_INITRAMFS_SOURCE))) |
25 | cpio-data := | |
26 | ||
27 | # If CONFIG_INITRAMFS_SOURCE is empty, generate a small initramfs with the | |
28 | # default contents. | |
29 | ifeq ($(ramfs-input),) | |
30 | ramfs-input := $(srctree)/$(src)/default_cpio_list | |
31 | endif | |
32 | ||
33 | ifeq ($(words $(ramfs-input)),1) | |
34 | ||
35 | # If CONFIG_INITRAMFS_SOURCE specifies a single file, and it is suffixed with | |
36 | # .cpio, use it directly as an initramfs. | |
37 | ifneq ($(filter %.cpio,$(ramfs-input)),) | |
38 | cpio-data := $(ramfs-input) | |
39 | endif | |
40 | ||
41 | # If CONFIG_INITRAMFS_SOURCE specifies a single file, and it is suffixed with | |
42 | # .cpio.*, use it directly as an initramfs, and avoid double compression. | |
43 | ifeq ($(words $(subst .cpio.,$(space),$(ramfs-input))),2) | |
44 | cpio-data := $(ramfs-input) | |
45 | compress-y := shipped | |
46 | endif | |
47 | ||
48 | endif | |
49 | ||
50 | # For other cases, generate the initramfs cpio archive based on the contents | |
51 | # specified by CONFIG_INITRAMFS_SOURCE. | |
52 | ifeq ($(cpio-data),) | |
53 | ||
54 | cpio-data := $(obj)/initramfs_data.cpio | |
d39a206b | 55 | |
5f2fb52f | 56 | hostprogs := gen_init_cpio |
d39a206b | 57 | |
65e00e04 | 58 | # .initramfs_data.cpio.d is used to identify all files included |
d39a206b SR |
59 | # in initramfs and to detect if any files are added/removed. |
60 | # Removed files are identified by directory timestamp being updated | |
61 | # The dependency list is generated by gen_initramfs.sh -l | |
65e00e04 | 62 | -include $(obj)/.initramfs_data.cpio.d |
9e3596b0 | 63 | |
58a2f7d8 SR |
64 | # do not try to update files included in initramfs |
65 | $(deps_initramfs): ; | |
66 | ||
65e00e04 MY |
67 | quiet_cmd_initfs = GEN $@ |
68 | cmd_initfs = \ | |
69 | $(CONFIG_SHELL) $< -o $@ -l $(obj)/.initramfs_data.cpio.d \ | |
70 | $(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \ | |
71 | $(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID)) \ | |
72 | $(ramfs-input) | |
73 | ||
a26ee60f | 74 | # We rebuild initramfs_data.cpio if: |
c7fe0608 | 75 | # 1) Any included file is newer than initramfs_data.cpio |
d39a206b | 76 | # 2) There are changes in which files are included (added or deleted) |
a26ee60f | 77 | # 3) If gen_init_cpio are newer than initramfs_data.cpio |
c7fe0608 | 78 | # 4) Arguments to gen_initramfs.sh changes |
65e00e04 | 79 | $(obj)/initramfs_data.cpio: $(src)/gen_initramfs.sh $(obj)/gen_init_cpio $(deps_initramfs) FORCE |
d39a206b | 80 | $(call if_changed,initfs) |
d6fc9fcb | 81 | |
65e00e04 MY |
82 | endif |
83 | ||
84 | $(obj)/initramfs_inc_data: $(cpio-data) FORCE | |
85 | $(call if_changed,$(compress-y)) | |
86 | ||
87 | targets += initramfs_data.cpio initramfs_inc_data | |
88 | ||
d6fc9fcb | 89 | subdir-$(CONFIG_UAPI_HEADER_TEST) += include |