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