blob: c4f5be2c6836d5741c2e9ceac7fa7afce6b9c645 [file] [log] [blame]
#
# kbuild file for usr/ - including initramfs image and klibc
#
# klibc definitions - to be moved to top-level Makefile later
export KLIBCSRC := $(srctree)/$(src)/klibc
export KLIBCINC := $(srctree)/$(src)/include
export KLIBCOBJ := $(objtree)/$(obj)/klibc
CONFIG_KLIBC := 1
# Klibc binaries
ifdef CONFIG_KLIBC
klibc := -f $(srctree)/scripts/Kbuild.klibc obj
.PHONY: klibcdirs
$(obj)/initramfs_list: klibcdirs
klibcdirs: FORCE
$(Q)$(MAKE) $(klibc)=$(src)/klibc
$(Q)$(MAKE) $(klibc)=$(src)/kinit
$(Q)$(MAKE) $(klibc)=$(src)/utils
$(Q)$(MAKE) $(klibc)=$(src)/dash
$(Q)$(MAKE) $(klibc)=$(src)/gzip
endif
subdir- := klibc kinit utils dash gzip
# 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 := $(shell echo $(CONFIG_INITRAMFS_SOURCE))
ramfs-input := $(if $(ramfs-input), $(ramfs-input), -d)
ramfs-args := \
$(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \
$(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID)) \
$(ramfs-input)
# .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
$(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)