#
# kbuild file for usr/ - including initramfs image and klibc
#

CONFIG_KLIBC := 1

klibc-subdir := klibc
usr-subdirs  := kinit utils dash gzip
subdir-      := $(klibc-subdir) $(usr-subdirs)

usr-subdirs  := $(addprefix _usr_,$(usr-subdirs))
klibc-subdir := $(addprefix _usr_,$(klibc-subdir))

# Klibc binaries
ifdef CONFIG_KLIBC

# .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

# build klibc library before the klibc programs
# build klibc programs before cpio.gz
.PHONY: initramfs $(usr-subdirs) $(klibc-subdir)
initramfs:         $(usr-subdirs) $(klibc-subdir)
$(deps_initramfs): $(usr-subdirs) $(klibc-subdir)

$(usr-subdirs): $(klibc-subdir)
	$(Q)$(MAKE) $(klibc)=$(src)/$(patsubst _usr_%,%,$(@))

$(klibc-subdir):
	$(Q)$(MAKE) $(klibc)=$(src)/$(patsubst _usr_%,%,$(@))
endif


# 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
ginitramfs  := $(CONFIG_SHELL) $(srctree)/scripts/gen_initramfs_list.sh
ramfs-def   := $(srctree)/$(src)/initramfs.default
ramfs-input := $(shell echo $(CONFIG_INITRAMFS_SOURCE))
ramfs-input := $(if $(ramfs-input), $(ramfs-input), $(ramfs-def))

ramfs-args  := \
        $(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \
        $(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID))

quiet_cmd_initfs = GEN     $@
      cmd_initfs = $(ginitramfs) -o $@ $(ramfs-args) $(ramfs-input)

targets := initramfs_data.cpio.gz
# 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) initramfs
	$(Q)$(ginitramfs) -l $(ramfs-input) > $(obj)/.initramfs_data.cpio.gz.d
	$(call if_changed,initfs)

