![Sam Ravnborg](/assets/img/avatar_default.png)
When a file supplied via CONFIG_INITRAMFS pointed to a file for which kbuild had a rule to compile it (foo.c => foo.o) then kbuild would compile the file before adding the file to the initramfs. Teach make that files included in initramfs shall not be updated by adding an 'empty command'. (See "Using Empty Commands" in info make). Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
51 lines
1.8 KiB
Makefile
51 lines
1.8 KiB
Makefile
#
|
|
# kbuild file for usr/ - including initramfs image
|
|
#
|
|
|
|
klibcdirs:;
|
|
|
|
# Generate builtin.o based on initramfs_data.o
|
|
obj-y := initramfs_data.o
|
|
|
|
# initramfs_data.o contains the initramfs_data.cpio.gz image.
|
|
# The image is included using .incbin, a dependency which is not
|
|
# tracked automatically.
|
|
$(obj)/initramfs_data.o: $(obj)/initramfs_data.cpio.gz FORCE
|
|
|
|
#####
|
|
# 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)), \
|
|
$(CONFIG_INITRAMFS_SOURCE),-d)
|
|
ramfs-args := \
|
|
$(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \
|
|
$(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID))
|
|
|
|
# .initramfs_data.cpio.gz.d is used to identify all files included
|
|
# 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
|
|
ifneq ($(wildcard $(obj)/.initramfs_data.cpio.gz.d),)
|
|
include $(obj)/.initramfs_data.cpio.gz.d
|
|
endif
|
|
|
|
quiet_cmd_initfs = GEN $@
|
|
cmd_initfs = $(initramfs) -o $@ $(ramfs-args) $(ramfs-input)
|
|
|
|
targets := initramfs_data.cpio.gz
|
|
# do not try to update files included in initramfs
|
|
$(deps_initramfs): ;
|
|
|
|
$(deps_initramfs): klibcdirs
|
|
# We rebuild initramfs_data.cpio.gz if:
|
|
# 1) Any included file is newer then initramfs_data.cpio.gz
|
|
# 2) There are changes in which files are included (added or deleted)
|
|
# 3) If gen_init_cpio are newer than initramfs_data.cpio.gz
|
|
# 4) arguments to gen_initramfs.sh changes
|
|
$(obj)/initramfs_data.cpio.gz: $(obj)/gen_init_cpio $(deps_initramfs) klibcdirs
|
|
$(Q)$(initramfs) -l $(ramfs-input) > $(obj)/.initramfs_data.cpio.gz.d
|
|
$(call if_changed,initfs)
|
|
|