# Copyright (C) 2006-2013 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

menu "Target Images"

	menuconfig TARGET_ROOTFS_INITRAMFS
		bool "ramdisk"
		default y if USES_INITRAMFS
		help
		  Embed the root filesystem into the kernel (initramfs).

		choice
			prompt "Compression"
			default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_ar71xx
			default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_ramips
			default TARGET_INITRAMFS_COMPRESSION_NONE
			depends on TARGET_ROOTFS_INITRAMFS
			help
			  Select ramdisk compression.

			config TARGET_INITRAMFS_COMPRESSION_NONE
				bool "none"

			config TARGET_INITRAMFS_COMPRESSION_GZIP
				bool "gzip"

			config TARGET_INITRAMFS_COMPRESSION_BZIP2
				bool "bzip2"

			config TARGET_INITRAMFS_COMPRESSION_LZMA
				bool "lzma"

			config TARGET_INITRAMFS_COMPRESSION_LZO
				bool "lzo"

			config TARGET_INITRAMFS_COMPRESSION_LZ4
				bool "lz4"

			config TARGET_INITRAMFS_COMPRESSION_XZ
				bool "xz"
		endchoice

		config EXTERNAL_CPIO
			string
			prompt "Use external cpio" if TARGET_ROOTFS_INITRAMFS
			default ""
			help
			  Kernel uses specified external cpio as INITRAMFS_SOURCE.

	comment "Root filesystem archives"

	config TARGET_ROOTFS_CPIOGZ
		bool "cpio.gz"
		default y if USES_CPIOGZ
		help
		  Build a compressed cpio archive of the root filesystem.

	config TARGET_ROOTFS_TARGZ
		bool "tar.gz"
		default y if USES_TARGZ
		help
		  Build a compressed tar archive of the root filesystem.

	comment "Root filesystem images"

	menuconfig TARGET_ROOTFS_EXT4FS
		bool "ext4"
		default y if USES_EXT4
		help
		  Build an ext4 root filesystem.

		config TARGET_EXT4_MAXINODE
			int "Maximum number of inodes in root filesystem"
			depends on TARGET_ROOTFS_EXT4FS
			default 6000
			help
			  Select the maximum number of inodes in the root filesystem.

		config TARGET_EXT4_RESERVED_PCT
			int "Percentage of reserved blocks in root filesystem"
			depends on TARGET_ROOTFS_EXT4FS
			default 0
			help
			  Select the percentage of reserved blocks in the root filesystem.

		choice
			prompt "Root filesystem block size"
			default TARGET_EXT4_BLOCKSIZE_4K
			depends on TARGET_ROOTFS_EXT4FS
			help
			  Select the block size of the root filesystem.

			config TARGET_EXT4_BLOCKSIZE_4K
				bool "4k"

			config TARGET_EXT4_BLOCKSIZE_2K
				bool "2k"

			config TARGET_EXT4_BLOCKSIZE_1K
				bool "1k"
		endchoice

		config TARGET_EXT4_BLOCKSIZE
			int
			default 4096 if TARGET_EXT4_BLOCKSIZE_4K
			default 2048 if TARGET_EXT4_BLOCKSIZE_2K
			default 1024 if TARGET_EXT4_BLOCKSIZE_1K
			depends on TARGET_ROOTFS_EXT4FS

		config TARGET_EXT4_JOURNAL
			bool "Create a journaling filesystem"
			depends on TARGET_ROOTFS_EXT4FS
			default n
			help
			  Create an ext4 filesystem with a journal.

	config TARGET_ROOTFS_ISO
		bool "iso"
		default n
		depends on TARGET_x86_generic
		help
		  Create a bootable ISO image.

	config TARGET_ROOTFS_JFFS2
		bool "jffs2"
		default y if USES_JFFS2
		help
		  Build a JFFS2 root filesystem.

	config TARGET_ROOTFS_JFFS2_NAND
		bool "jffs2 for NAND"
		default y if USES_JFFS2_NAND
		depends on USES_JFFS2_NAND
		help
		  Build a JFFS2 root filesystem for NAND flash.

	menuconfig TARGET_ROOTFS_SQUASHFS
		bool "squashfs"
		default y if USES_SQUASHFS
		help
		  Build a squashfs-lzma root filesystem.

		config TARGET_SQUASHFS_BLOCK_SIZE
			int "Block size (in KiB)"
			depends on TARGET_ROOTFS_SQUASHFS
			default 64 if LOW_MEMORY_FOOTPRINT
			default 256

	menuconfig TARGET_ROOTFS_UBIFS
		bool "ubifs"
		default y if USES_UBIFS
		depends on USES_UBIFS
		help
		  Build a UBIFS root filesystem.

		choice
			prompt "compression"
			default TARGET_UBIFS_COMPRESSION_ZLIB
			depends on TARGET_ROOTFS_UBIFS
			help
			  Select compression type

			config TARGET_UBIFS_COMPRESSION_NONE
				bool "none"

			config TARGET_UBIFS_COMPRESSION_LZO
				bool "lzo"

			config TARGET_UBIFS_COMPRESSION_ZLIB
				bool "zlib"
		endchoice

		config TARGET_UBIFS_FREE_SPACE_FIXUP
			bool "free space fixup" if TARGET_ROOTFS_UBIFS
			default y
			help
			  The filesystem free space has to be fixed up on first mount.

		config TARGET_UBIFS_JOURNAL_SIZE
			string
			prompt "journal size" if TARGET_ROOTFS_UBIFS
			default ""

	config GRUB_IMAGES
		bool "Build GRUB images (Linux x86 or x86_64 host only)"
		depends on TARGET_x86_64 || (TARGET_x86 && !(TARGET_x86_olpc || TARGET_x86_rdc))
		depends on TARGET_ROOTFS_EXT4FS || TARGET_ROOTFS_ISO || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS
		select PACKAGE_grub2
		default y

	config GRUB_CONSOLE
		bool "Use Console Terminal (in addition to Serial)"
		depends on GRUB_IMAGES
		default n if (TARGET_x86_generic_Soekris45xx || TARGET_x86_generic_Soekris48xx || TARGET_x86_net5501 || TARGET_x86_geos || TARGET_x86_alix2)
		default y

	config GRUB_SERIAL
		string "Serial port device"
		depends on GRUB_IMAGES
		default "hvc0" if TARGET_x86_xen_domu
		default "ttyS0" if ! TARGET_x86_xen_domu

	config GRUB_BAUDRATE
		int "Serial port baud rate"
		depends on GRUB_IMAGES
		default 19200 if TARGET_x86_generic_Soekris45xx || TARGET_x86_generic_Soekris48xx || TARGET_x86_net5501
		default 38400 if TARGET_x86_alix2
		default 115200 if TARGET_x86_geos || TARGET_x86_kvm_guest
		default 38400

	config GRUB_BOOTOPTS
		string "Extra kernel boot options"
		depends on GRUB_IMAGES
		default "xencons=hvc" if TARGET_x86_xen_domu
		help
		  If you don't know, just leave it blank.

	config GRUB_TIMEOUT
		string "Seconds to wait before booting the default entry"
		depends on GRUB_IMAGES
		default "5"
		help
		  If you don't know, 5 seconds is a reasonable default.

	config VDI_IMAGES
		bool "Build VirtualBox image files (VDI)"
		depends on TARGET_x86 || TARGET_x86_64
		select GRUB_IMAGES
		select TARGET_IMAGES_PAD
		select PACKAGE_kmod-e1000

	config VMDK_IMAGES
		bool "Build VMware image files (VMDK)"
		depends on TARGET_x86 || TARGET_x86_64
		select GRUB_IMAGES
		select TARGET_IMAGES_PAD
		select PACKAGE_kmod-e1000

	config TARGET_IMAGES_PAD
		bool "Pad images to filesystem size (for JFFS2)"
		depends on OLPC_BOOTSCRIPT_IMAGES || GRUB_IMAGES

	config TARGET_IMAGES_GZIP
		bool "GZip images"
		depends on TARGET_IMAGES_PAD || TARGET_ROOTFS_EXT4FS
		default y

	comment "Image Options"

	source "target/linux/*/image/Config.in"

	config TARGET_KERNEL_PARTSIZE
		int "Kernel partition size (in MB)"
		depends on OLPC_BOOTSCRIPT_IMAGES || GRUB_IMAGES
		default 4

	config TARGET_ROOTFS_PARTSIZE
		int "Root filesystem partition size (in MB)"
		depends on GRUB_IMAGES || TARGET_ROOTFS_EXT4FS || TARGET_rb532
		default 48
		help
		  Select the root filesystem partition size.

	config TARGET_ROOTFS_PARTNAME
		string "Root partition on target device"
		depends on OLPC_BOOTSCRIPT_IMAGES || GRUB_IMAGES
		default "/dev/xvda2" if TARGET_x86_xen_domu
		default "/dev/sda2" if TARGET_x86 && ! TARGET_x86_xen_domu
		help
		  Override the root partition on the final device. If left empty,
		  it will be mounted by PARTUUID which makes the kernel find the
		  appropriate disk automatically.


	menuconfig TARGET_ROOTFS_INCLUDE_KERNEL
		bool "Include kernel in root filesystem"
		depends on TARGET_ROOTFS_UBIFS || TARGET_ROOTFS_EXT4FS
		default n
		help
		  Include the kernel image in the rootfs. Typically, the image is placed
		  below /boot.

		config TARGET_ROOTFS_INCLUDE_UIMAGE
			bool "include uImage" if TARGET_ROOTFS_INCLUDE_KERNEL
			default y
			help
			  This option might not apply to all targets. Make sure
			  to check target/linux/<your_target>/image/Makefile to
			  see if this option will have any effect.

		config TARGET_ROOTFS_INCLUDE_ZIMAGE
			bool "include zImage" if TARGET_ROOTFS_INCLUDE_KERNEL
			default y
			help
			  This option might not apply to all targets. Make sure
			  to check target/linux/<your_target>/image/Makefile to
			  see if this option will have any effect.

		config TARGET_ROOTFS_INCLUDE_FIT
			bool "include FIT" if TARGET_ROOTFS_INCLUDE_KERNEL
			default y
			help
			  This option might not apply to all targets. Make sure
			  to check target/linux/<your_target>/image/Makefile to
			  see if this option will have any effect.

	config TARGET_ROOTFS_INCLUDE_DTB
		bool "Include DTB in root filesystem"
		depends on USES_DEVICETREE && (TARGET_ROOTFS_UBIFS || TARGET_ROOTFS_EXT4FS)
		default n
		help
		  Include the device tree blob file(s) in the rootfs. Typically the DTBs
		  are placed below /boot.

endmenu