# This file is part of the OpenADK project. OpenADK is copyrighted
# material, please see the LICENCE file in the top-level directory.

choice
prompt "Filesystem / Image type" if !ADK_TARGET_CHOOSE_ARCH
depends on !ADK_APPLIANCE_TOOLCHAIN && !ADK_TARGET_OS_BAREMETAL
default ADK_TARGET_ROOTFS_INITRAMFSPIGGYBACK if ADK_TARGET_QEMU || ADK_TARGET_SIM
default ADK_TARGET_ROOTFS_ARCHIVE

config ADK_TARGET_ROOTFS_INITRAMFSPIGGYBACK
	bool "initramfs filesystem included into kernel image"
	select ADK_TARGET_ARCH_INITRAMFS_BUILTIN
	depends on \
		ADK_TARGET_QEMU || \
		ADK_TARGET_SIM || \
		ADK_TARGET_ARCH_AARCH64 || \
		ADK_TARGET_ARCH_ARC || \
		ADK_TARGET_ARCH_ARM || \
		ADK_TARGET_ARCH_H8300 || \
		ADK_TARGET_ARCH_M68K || \
		ADK_TARGET_ARCH_MICROBLAZE || \
		ADK_TARGET_ARCH_MIPS || \
		ADK_TARGET_ARCH_MIPS64 || \
		ADK_TARGET_ARCH_PPC || \
		ADK_TARGET_ARCH_SH || \
		ADK_TARGET_ARCH_SPARC || \
		ADK_TARGET_ARCH_X86 || \
		ADK_TARGET_ARCH_X86_64
	depends on !ADK_TARGET_VBOX
	depends on !ADK_TARGET_SYSTEM_MIKROTIK_RB532
	help
	  create an read-only initramfs system.

config ADK_TARGET_ROOTFS_INITRAMFS
	bool "initramfs filesystem"
	depends on \
		ADK_TARGET_QEMU || \
		ADK_TARGET_ARCH_M68K || \
		ADK_TARGET_ARCH_ARM || \
		ADK_TARGET_ARCH_MICROBLAZE || \
		ADK_TARGET_ARCH_MIPS || \
		ADK_TARGET_ARCH_MIPS64 || \
		ADK_TARGET_ARCH_PPC || \
		ADK_TARGET_ARCH_SH || \
		ADK_TARGET_ARCH_SPARC || \
		ADK_TARGET_ARCH_X86 || \
		ADK_TARGET_ARCH_X86_64
	depends on !ADK_TARGET_VBOX
	depends on !ADK_TARGET_SYSTEM_MIKROTIK_RB532
	depends on !ADK_TARGET_SYSTEM_QEMU_M68K_MCF5208
	depends on !ADK_TARGET_SYSTEM_QEMU_METAG
	select ADK_KERNEL_BLK_DEV_INITRD
	help
	  create an read-only initramfs system.

config ADK_TARGET_ROOTFS_SQUASHFS
	bool "Compressed read-only root filesystem (squashfs)"
	select ADK_KERNEL_SQUASHFS
	select ADK_HOST_NEED_SQUASHFS
	select ADK_HOST_NEED_QEMU if ADK_TARGET_QEMU
	select ADK_TARGET_QEMU_WITH_BLOCK if ADK_TARGET_QEMU
	depends on ADK_TARGET_WITH_MTD \
		|| ADK_TARGET_SYSTEM_QEMU_MICROBLAZE_S3ADSP1800 \
		|| ADK_TARGET_SYSTEM_QEMU_MICROBLAZE_ML605
	help
	  highly compressed read-only filesystem for MTD flash systems.

config ADK_TARGET_ROOTFS_JFFS2
	bool "Compressed read-write root filesystem (jffs2)"
	select ADK_KERNEL_JFFS2_FS
	select ADK_HOST_NEED_MTD_UTILS
	select ADK_TARGET_QEMU_WITH_BLOCK if ADK_TARGET_QEMU
	depends on ADK_TARGET_WITH_MTD \
		|| ADK_TARGET_SYSTEM_QEMU_MICROBLAZE_S3ADSP1800 \
		|| ADK_TARGET_SYSTEM_QEMU_MICROBLAZE_ML605
	help
	  compressed read-write filesystem for MTD flash systems.

config ADK_TARGET_ROOTFS_UBIFS
	bool "UBIFS root filesystem (NAND)"
	select ADK_KERNEL_UBIFS_FS
	select ADK_HOST_NEED_MTD_UTILS
	select ADK_HOST_NEED_KERNEL2MINOR
	depends on ADK_TARGET_WITH_NAND
	help
	  Root filesystem on NAND flash with UBI.

config ADK_TARGET_ROOTFS_NFSROOT
	bool "NFS root"
	select ADK_KERNEL_NETWORK_FILESYSTEMS
	select ADK_KERNEL_SUNRPC
	select ADK_KERNEL_NFS_FS
	select ADK_KERNEL_NFS_V3
	select ADK_KERNEL_ROOT_NFS
	select ADK_KERNEL_NFS_COMMON
	select ADK_KERNEL_IP_PNP
	select ADK_KERNEL_IP_PNP_DHCP
	depends on !ADK_TARGET_QEMU && \
		   !ADK_TARGET_SIM && \
	           !ADK_TARGET_VBOX && \
		   !ADK_TARGET_SYSTEM_ARANYM_M68K && \
		   !ADK_TARGET_SYSTEM_FOXBOARD_LX832 && \
		   !ADK_TARGET_SYSTEM_LINKSYS_NSLU2 
	help
	  Root filesystem mounted via NFS. (DHCP)

config ADK_TARGET_ROOTFS_USB
	bool "Boot from USB stick"
	select ADK_KERNEL_NLS
	select ADK_KERNEL_SCSI
	select ADK_KERNEL_BLK_DEV_SD
	select ADK_KERNEL_USB
	select ADK_KERNEL_USB_EHCI_HCD
	select ADK_KERNEL_USB_OHCI_HCD
	select ADK_KERNEL_USB_UHCI_HCD
	select ADK_KERNEL_USB_STORAGE
	select ADK_PACKAGE_ADKINSTALL
	depends on ADK_TARGET_WITH_USB_BOOT
	help
	  Boot system from USB stick. 

config ADK_TARGET_ROOTFS_ISO
	bool "ISO image"
	select ADK_KERNEL_ISO9660_FS
	select ADK_KERNEL_JOLIET
	select ADK_KERNEL_SCSI
	select ADK_KERNEL_BLK_DEV_SR
	select ADK_HOST_NEED_CDRTOOLS
	select ADK_HOST_NEED_SYSLINUX
	depends on ADK_TARGET_ARCH_X86
	help
	  Use this option to create a bootable ISO image.

config ADK_TARGET_ROOTFS_INITRAMFSARCHIVE
	bool "Archive usable for initramfs creation"
	depends on !ADK_TARGET_SYSTEM_MIKROTIK_RB532 \
		&& !ADK_TARGET_SYSTEM_QEMU_M68K_MCF5208 \
		&& !ADK_TARGET_SYSTEM_QEMU_METAG \
		&& !ADK_TARGET_SIM
	select ADK_KERNEL_BLK_DEV_INITRD
	help
	  Use this option if your planning to create a initramfs.

config ADK_TARGET_ROOTFS_ARCHIVE
	bool "Archive usable for ext4 filesystems"
	select ADK_HOST_NEED_GENEXT2FS if ADK_TARGET_QEMU || ADK_TARGET_VBOX
	select ADK_KERNEL_EXT4_FS
	select ADK_TARGET_QEMU_WITH_BLOCK if ADK_TARGET_QEMU
	depends on !ADK_TARGET_SIM \
		&& !ADK_TARGET_ARCH_NDS32 \
		&& !ADK_TARGET_SYSTEM_QEMU_M68K_MCF5208 \
		&& !ADK_TARGET_SYSTEM_QEMU_METAG
	help
	  Use this option if your root filesystem is ext4 and you use 
	  for example install.sh to install firmware on a block device
	  connected to your development machine.

config ADK_TARGET_ROOTFS_GENIMAGE
	bool "Create a disk image for the target"
	select ADK_KERNEL_EXT4_FS
	select ADK_KERNEL_VFAT_FS
	select ADK_TARGET_QEMU_WITH_BLOCK if ADK_TARGET_QEMU
	select ADK_TARGET_QEMU_WITH_BOOTLOADER if ADK_TARGET_QEMU
	select ADK_HOST_BUILD_GENIMAGE
	help
	  Create a complete disk image for the target with genimage.

endchoice

config ADK_TARGET_ROOTDEV
	string "Root device name"
	depends on ADK_TARGET_ROOTFS_GENIMAGE
	default "sda"
	help
	  If you a embedded device with multiple block devices and want to
	  set the root device name.

config ADK_TARGET_DUAL_BOOT
	bool "Activate dual-boot partition layout"
	depends on ADK_TARGET_ROOTFS_GENIMAGE
	select ADK_PACKAGE_FWUPDATE
	select ADK_PACKAGE_GRUB if ADK_TARGET_ARCH_X86_64 || ADK_TARGET_ARCH_X86
	select ADK_PACKAGE_GRUB_TOOLS if ADK_TARGET_ARCH_X86_64 || ADK_TARGET_ARCH_X86
	help
	  Activate dual-boot partition scheme for simple full updates into
	  a second unused partition. You can use fwupdate on the target to 
	  update your system. A firmware update tar archive is created in
	  firmware output directory together with the full image.

config ADK_TARGET_GENIMAGE_FILENAME
	string
	default "genimage-efi-dual.cfg" if ADK_PACKAGE_GRUB_EFI_X86_64 || ADK_PACKAGE_GRUB_EFI_X86 && ADK_TARGET_DUAL_BOOT
	default "genimage-efi.cfg" if ADK_PACKAGE_GRUB_EFI_X86_64 || ADK_PACKAGE_GRUB_EFI_X86
	default "genimage-dual.cfg" if ADK_TARGET_DUAL_BOOT
	default "genimage.cfg"
