Blame view

usr/Makefile 2.93 KB
b24413180   Greg Kroah-Hartman   License cleanup: ...
1
  # SPDX-License-Identifier: GPL-2.0
d39a206bc   Sam Ravnborg   kbuild: rebuild i...
2
3
4
  #
  # kbuild file for usr/ - including initramfs image
  #
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
5

65e00e04e   Masahiro Yamada   initramfs: refact...
6
7
8
9
  # cmd_bzip2, cmd_lzma, cmd_lzo, cmd_lz4 from scripts/Makefile.lib appends the
  # size at the end of the compressed file, which unfortunately does not work
  # with unpack_to_rootfs(). Make size_append no-op.
  override size_append := :
9e3596b0c   Nicholas Piggin   kbuild: initramfs...
10

d4e9056da   Masahiro Yamada   initramfs: do not...
11
  compress-y					:= shipped
65e00e04e   Masahiro Yamada   initramfs: refact...
12
13
14
15
16
17
  compress-$(CONFIG_INITRAMFS_COMPRESSION_GZIP)	:= gzip
  compress-$(CONFIG_INITRAMFS_COMPRESSION_BZIP2)	:= bzip2
  compress-$(CONFIG_INITRAMFS_COMPRESSION_LZMA)	:= lzma
  compress-$(CONFIG_INITRAMFS_COMPRESSION_XZ)	:= xzmisc
  compress-$(CONFIG_INITRAMFS_COMPRESSION_LZO)	:= lzo
  compress-$(CONFIG_INITRAMFS_COMPRESSION_LZ4)	:= lz4
a30d8a39f   Nick Terrell   usr: Add support ...
18
  compress-$(CONFIG_INITRAMFS_COMPRESSION_ZSTD)	:= zstd
6ae64e428   Hendrik Brueckner   initramfs: genera...
19

6ae64e428   Hendrik Brueckner   initramfs: genera...
20
  obj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data.o
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
21

65e00e04e   Masahiro Yamada   initramfs: refact...
22
  $(obj)/initramfs_data.o: $(obj)/initramfs_inc_data
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
23

65e00e04e   Masahiro Yamada   initramfs: refact...
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  ramfs-input := $(strip $(shell echo $(CONFIG_INITRAMFS_SOURCE)))
  cpio-data :=
  
  # If CONFIG_INITRAMFS_SOURCE is empty, generate a small initramfs with the
  # default contents.
  ifeq ($(ramfs-input),)
  ramfs-input := $(srctree)/$(src)/default_cpio_list
  endif
  
  ifeq ($(words $(ramfs-input)),1)
  
  # If CONFIG_INITRAMFS_SOURCE specifies a single file, and it is suffixed with
  # .cpio, use it directly as an initramfs.
  ifneq ($(filter %.cpio,$(ramfs-input)),)
  cpio-data := $(ramfs-input)
  endif
  
  # If CONFIG_INITRAMFS_SOURCE specifies a single file, and it is suffixed with
  # .cpio.*, use it directly as an initramfs, and avoid double compression.
  ifeq ($(words $(subst .cpio.,$(space),$(ramfs-input))),2)
  cpio-data := $(ramfs-input)
  compress-y := shipped
  endif
  
  endif
  
  # For other cases, generate the initramfs cpio archive based on the contents
  # specified by CONFIG_INITRAMFS_SOURCE.
  ifeq ($(cpio-data),)
  
  cpio-data := $(obj)/initramfs_data.cpio
d39a206bc   Sam Ravnborg   kbuild: rebuild i...
55

5f2fb52fa   Masahiro Yamada   kbuild: rename ho...
56
  hostprogs := gen_init_cpio
d39a206bc   Sam Ravnborg   kbuild: rebuild i...
57

65e00e04e   Masahiro Yamada   initramfs: refact...
58
  # .initramfs_data.cpio.d is used to identify all files included
d39a206bc   Sam Ravnborg   kbuild: rebuild i...
59
60
61
  # in initramfs and to detect if any files are added/removed.
  # Removed files are identified by directory timestamp being updated
  # The dependency list is generated by gen_initramfs.sh -l
65e00e04e   Masahiro Yamada   initramfs: refact...
62
  -include $(obj)/.initramfs_data.cpio.d
9e3596b0c   Nicholas Piggin   kbuild: initramfs...
63

58a2f7d85   Sam Ravnborg   kbuild: do not tr...
64
65
  # do not try to update files included in initramfs
  $(deps_initramfs): ;
65e00e04e   Masahiro Yamada   initramfs: refact...
66
67
68
69
70
71
  quiet_cmd_initfs = GEN     $@
        cmd_initfs = \
  	$(CONFIG_SHELL) $< -o $@ -l $(obj)/.initramfs_data.cpio.d \
  	$(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \
  	$(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID)) \
  	$(ramfs-input)
a26ee60f9   Alain Knaff   bzip2/lzma: fix b...
72
  # We rebuild initramfs_data.cpio if:
c7fe06088   Eugen Cazacu   user/Makefile: Fi...
73
  # 1) Any included file is newer than initramfs_data.cpio
d39a206bc   Sam Ravnborg   kbuild: rebuild i...
74
  # 2) There are changes in which files are included (added or deleted)
a26ee60f9   Alain Knaff   bzip2/lzma: fix b...
75
  # 3) If gen_init_cpio are newer than initramfs_data.cpio
c7fe06088   Eugen Cazacu   user/Makefile: Fi...
76
  # 4) Arguments to gen_initramfs.sh changes
65e00e04e   Masahiro Yamada   initramfs: refact...
77
  $(obj)/initramfs_data.cpio: $(src)/gen_initramfs.sh $(obj)/gen_init_cpio $(deps_initramfs) FORCE
d39a206bc   Sam Ravnborg   kbuild: rebuild i...
78
  	$(call if_changed,initfs)
d6fc9fcba   Masahiro Yamada   kbuild: compile-t...
79

65e00e04e   Masahiro Yamada   initramfs: refact...
80
81
82
83
84
85
  endif
  
  $(obj)/initramfs_inc_data: $(cpio-data) FORCE
  	$(call if_changed,$(compress-y))
  
  targets += initramfs_data.cpio initramfs_inc_data
d6fc9fcba   Masahiro Yamada   kbuild: compile-t...
86
  subdir-$(CONFIG_UAPI_HEADER_TEST) += include