cpio.mk 1.5 KB

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