X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=usr%2FMakefile;h=e93824269da2aeebdd99c41aebda07a0eb0e5993;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=fe62659ff483074ccb3e629e2cc58beaf4f57d8b;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/usr/Makefile b/usr/Makefile index fe62659ff..e93824269 100644 --- a/usr/Makefile +++ b/usr/Makefile @@ -1,33 +1,47 @@ +# +# kbuild file for usr/ - including initramfs image +# -obj-y := initramfs_data.o - -host-progs := gen_init_cpio +klibcdirs:; -clean-files := initramfs_data.cpio.gz +# 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 -# initramfs-y are the programs which will be copied into the CPIO -# archive. Currently, the filenames are hardcoded in gen_init_cpio, -# but we need the information for the build as well, so it's duplicated -# here. - -# Commented out for now -# initramfs-y := $(obj)/root/hello - -quiet_cmd_cpio = CPIO $@ - cmd_cpio = ./$< > $@ - -$(obj)/initramfs_data.cpio: $(obj)/gen_init_cpio $(initramfs-y) FORCE - $(call if_changed,cpio) - -targets += initramfs_data.cpio - -$(obj)/initramfs_data.cpio.gz: $(obj)/initramfs_data.cpio FORCE - $(call if_changed,gzip) - -targets += initramfs_data.cpio.gz +##### +# 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 +$(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)