Makefile 2.1 KB
Newer Older
1 2 3
#
# kbuild file for usr/ - including initramfs image
#
L
Linus Torvalds 已提交
4

5
klibcdirs:;
6 7
PHONY += klibcdirs

8 9

# Gzip, but no bzip2
10
suffix_$(CONFIG_INITRAMFS_COMPRESSION_GZIP)   = .gz
11 12

# Bzip2
13
suffix_$(CONFIG_INITRAMFS_COMPRESSION_BZIP2)  = .bz2
14

15 16
# Lzma
suffix_$(CONFIG_INITRAMFS_COMPRESSION_LZMA)   = .lzma
L
Linus Torvalds 已提交
17

18
# Generate builtin.o based on initramfs_data.o
19
obj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data$(suffix_y).o
L
Linus Torvalds 已提交
20

21
# initramfs_data.o contains the compressed initramfs_data.cpio image.
L
Linus Torvalds 已提交
22 23
# The image is included using .incbin, a dependency which is not
# tracked automatically.
24
$(obj)/initramfs_data$(suffix_y).o: $(obj)/initramfs_data.cpio$(suffix_y) FORCE
L
Linus Torvalds 已提交
25

26 27 28 29 30 31
#####
# Generate the initramfs cpio archive

hostprogs-y := gen_init_cpio
initramfs   := $(CONFIG_SHELL) $(srctree)/scripts/gen_initramfs_list.sh
ramfs-input := $(if $(filter-out "",$(CONFIG_INITRAMFS_SOURCE)), \
32
			$(shell echo $(CONFIG_INITRAMFS_SOURCE)),-d)
33 34
ramfs-args  := \
        $(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \
N
Nickolay 已提交
35
        $(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID))
36

37
# .initramfs_data.cpio.d is used to identify all files included
38 39 40
# 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
41 42
ifneq ($(wildcard $(obj)/.initramfs_data.cpio.d),)
	include $(obj)/.initramfs_data.cpio.d
L
Linus Torvalds 已提交
43 44
endif

45 46 47
quiet_cmd_initfs = GEN     $@
      cmd_initfs = $(initramfs) -o $@ $(ramfs-args) $(ramfs-input)

48
targets := initramfs_data.cpio.gz initramfs_data.cpio.bz2 initramfs_data.cpio.lzma initramfs_data.cpio
49 50 51
# do not try to update files included in initramfs
$(deps_initramfs): ;

52
$(deps_initramfs): klibcdirs
53 54
# We rebuild initramfs_data.cpio if:
# 1) Any included file is newer then initramfs_data.cpio
55
# 2) There are changes in which files are included (added or deleted)
56
# 3) If gen_init_cpio are newer than initramfs_data.cpio
57
# 4) arguments to gen_initramfs.sh changes
58 59
$(obj)/initramfs_data.cpio$(suffix_y): $(obj)/gen_init_cpio $(deps_initramfs) klibcdirs
	$(Q)$(initramfs) -l $(ramfs-input) > $(obj)/.initramfs_data.cpio.d
60
	$(call if_changed,initfs)
L
Linus Torvalds 已提交
61