Skip to content
Snippets Groups Projects
Makefile 2.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • Kenneth Johansson's avatar
    Kenneth Johansson committed
    #
    # kbuild file for usr/ - including initramfs image
    #
    
    klibcdirs:;
    PHONY += klibcdirs
    
    
    # Bzip2
    suffix_$(CONFIG_RD_BZIP2)  = .bz2
    
    # Lzma
    suffix_$(CONFIG_RD_LZMA)   = .lzma
    
    # XZ
    suffix_$(CONFIG_RD_XZ)     = .xz
    
    # Lzo
    suffix_$(CONFIG_RD_LZO)    = .lzo
    
    # Lz4
    suffix_$(CONFIG_RD_LZ4)    = .lz4
    
    # Gzip
    suffix_$(CONFIG_RD_GZIP)   = .gz
    
    AFLAGS_initramfs_data.o += -DINITRAMFS_IMAGE="usr/initramfs_data.cpio$(suffix_y)"
    
    # Generate builtin.o based on initramfs_data.o
    obj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data.o
    
    # initramfs_data.o contains the compressed initramfs_data.cpio image.
    # The image is included using .incbin, a dependency which is not
    # tracked automatically.
    $(obj)/initramfs_data.o: $(obj)/initramfs_data.cpio$(suffix_y) 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)), \
    			$(shell echo $(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.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.d),)
    	include $(obj)/.initramfs_data.cpio.d
    endif
    
    
    deps_initramfs_sane := $(foreach v,$(deps_initramfs),$(if $(findstring :,$(v)),,$(v)))
    
    
    Kenneth Johansson's avatar
    Kenneth Johansson committed
    quiet_cmd_initfs = GEN     $@
          cmd_initfs = $(initramfs) -o $@ $(ramfs-args) $(ramfs-input)
    
    targets := initramfs_data.cpio.gz initramfs_data.cpio.bz2 \
    	initramfs_data.cpio.lzma initramfs_data.cpio.xz \
    	initramfs_data.cpio.lzo initramfs_data.cpio.lz4 \
    	initramfs_data.cpio
    # do not try to update files included in initramfs
    
    Kenneth Johansson's avatar
    Kenneth Johansson committed
    
    
    Kenneth Johansson's avatar
    Kenneth Johansson committed
    # We rebuild initramfs_data.cpio if:
    # 1) Any included file is newer then initramfs_data.cpio
    # 2) There are changes in which files are included (added or deleted)
    # 3) If gen_init_cpio are newer than initramfs_data.cpio
    # 4) arguments to gen_initramfs.sh changes
    
    $(obj)/initramfs_data.cpio$(suffix_y): $(obj)/gen_init_cpio $(deps_initramfs_sane) klibcdirs
    
    Kenneth Johansson's avatar
    Kenneth Johansson committed
    	$(Q)$(initramfs) -l $(ramfs-input) > $(obj)/.initramfs_data.cpio.d
    	$(call if_changed,initfs)