xref: /OK3568_Linux_fs/buildroot/fs/cpio/cpio.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1################################################################################
2#
3# cpio to archive target filesystem
4#
5################################################################################
6
7ifeq ($(BR2_ROOTFS_DEVICE_CREATION_STATIC),y)
8
9define ROOTFS_CPIO_ADD_INIT
10	if [ ! -e $(TARGET_DIR)/init ]; then \
11		ln -sf sbin/init $(TARGET_DIR)/init; \
12	fi
13endef
14
15else
16# devtmpfs does not get automounted when initramfs is used.
17# Add a pre-init script to mount it before running init
18# We must have /dev/console very early, even before /init runs,
19# for stdin/stdout/stderr
20define ROOTFS_CPIO_ADD_INIT
21	if [ ! -e $(TARGET_DIR)/init ]; then \
22		$(INSTALL) -m 0755 fs/cpio/init $(TARGET_DIR)/init; \
23	fi
24	mkdir -p $(TARGET_DIR)/dev
25	mknod -m 0622 $(TARGET_DIR)/dev/console c 5 1
26endef
27
28endif # BR2_ROOTFS_DEVICE_CREATION_STATIC
29
30ROOTFS_CPIO_PRE_GEN_HOOKS += ROOTFS_CPIO_ADD_INIT
31
32# --reproducible option was introduced in cpio v2.12, which may not be
33# available in some old distributions, so we build host-cpio
34ifeq ($(BR2_REPRODUCIBLE),y)
35ROOTFS_CPIO_DEPENDENCIES += host-cpio
36ROOTFS_CPIO_OPTS += --reproducible
37endif
38
39define ROOTFS_CPIO_CMD
40	cd $(TARGET_DIR) && \
41	find . \
42	| LC_ALL=C sort \
43	| cpio $(ROOTFS_CPIO_OPTS) --quiet -o -H newc \
44	> $@
45endef
46
47ifeq ($(BR2_TARGET_ROOTFS_CPIO_UIMAGE),y)
48ROOTFS_CPIO_DEPENDENCIES += host-uboot-tools
49define ROOTFS_CPIO_UBOOT_MKIMAGE
50	$(MKIMAGE) -A $(MKIMAGE_ARCH) -T ramdisk \
51		-C none -d $@$(ROOTFS_CPIO_COMPRESS_EXT) $@.uboot
52endef
53ROOTFS_CPIO_POST_GEN_HOOKS += ROOTFS_CPIO_UBOOT_MKIMAGE
54endif
55
56$(eval $(rootfs))
57