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

CONFIG_KLIBC := 1

include-subdir := include
klibc-subdir := klibc
usr-subdirs  := kinit utils dash gzip
subdir-      := $(include-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) $(include-subdir)
initramfs:         $(usr-subdirs) $(klibc-subdir) $(include-subdir)
$(deps_initramfs): $(usr-subdirs) $(klibc-subdir) $(include-subdir)

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

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

$(include-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)
