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