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