xref: /linux/usr/Makefile (revision ff5417107b7615fcef772cabcb717f4a715ffadc)
1d39a206bSSam Ravnborg#
2d39a206bSSam Ravnborg# kbuild file for usr/ - including initramfs image
3d39a206bSSam Ravnborg#
41da177e4SLinus Torvalds
5d39a206bSSam Ravnborgklibcdirs:;
6d39a206bSSam Ravnborg
7d39a206bSSam Ravnborg# Generate builtin.o based on initramfs_data.o
81da177e4SLinus Torvaldsobj-y := initramfs_data.o
91da177e4SLinus Torvalds
101da177e4SLinus Torvalds# initramfs_data.o contains the initramfs_data.cpio.gz image.
111da177e4SLinus Torvalds# The image is included using .incbin, a dependency which is not
121da177e4SLinus Torvalds# tracked automatically.
131da177e4SLinus Torvalds$(obj)/initramfs_data.o: $(obj)/initramfs_data.cpio.gz FORCE
141da177e4SLinus Torvalds
15d39a206bSSam Ravnborg#####
16d39a206bSSam Ravnborg# Generate the initramfs cpio archive
17d39a206bSSam Ravnborg
18d39a206bSSam Ravnborghostprogs-y := gen_init_cpio
19d39a206bSSam Ravnborginitramfs   := $(CONFIG_SHELL) $(srctree)/scripts/gen_initramfs_list.sh
20d39a206bSSam Ravnborgramfs-input := $(if $(filter-out "",$(CONFIG_INITRAMFS_SOURCE)), \
21d39a206bSSam Ravnborg                    $(CONFIG_INITRAMFS_SOURCE),-d)
22d39a206bSSam Ravnborgramfs-args  := \
23d39a206bSSam Ravnborg        $(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \
24*ff541710SNickolay        $(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID))
25d39a206bSSam Ravnborg
26d39a206bSSam Ravnborg# .initramfs_data.cpio.gz.d is used to identify all files included
27d39a206bSSam Ravnborg# in initramfs and to detect if any files are added/removed.
28d39a206bSSam Ravnborg# Removed files are identified by directory timestamp being updated
29d39a206bSSam Ravnborg# The dependency list is generated by gen_initramfs.sh -l
30d39a206bSSam Ravnborgifneq ($(wildcard $(obj)/.initramfs_data.cpio.gz.d),)
31d39a206bSSam Ravnborg	include $(obj)/.initramfs_data.cpio.gz.d
321da177e4SLinus Torvaldsendif
331da177e4SLinus Torvalds
34d39a206bSSam Ravnborgquiet_cmd_initfs = GEN     $@
35d39a206bSSam Ravnborg      cmd_initfs = $(initramfs) -o $@ $(ramfs-args) $(ramfs-input)
361da177e4SLinus Torvalds
37d39a206bSSam Ravnborgtargets := initramfs_data.cpio.gz
38d39a206bSSam Ravnborg$(deps_initramfs): klibcdirs
39d39a206bSSam Ravnborg# We rebuild initramfs_data.cpio.gz if:
40d39a206bSSam Ravnborg# 1) Any included file is newer then initramfs_data.cpio.gz
41d39a206bSSam Ravnborg# 2) There are changes in which files are included (added or deleted)
42d39a206bSSam Ravnborg# 3) If gen_init_cpio are newer than initramfs_data.cpio.gz
43d39a206bSSam Ravnborg# 4) arguments to gen_initramfs.sh changes
44d39a206bSSam Ravnborg$(obj)/initramfs_data.cpio.gz: $(obj)/gen_init_cpio $(deps_initramfs) klibcdirs
45d39a206bSSam Ravnborg	$(Q)$(initramfs) -l $(ramfs-input) > $(obj)/.initramfs_data.cpio.gz.d
46d39a206bSSam Ravnborg	$(call if_changed,initfs)
471da177e4SLinus Torvalds
48