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

choice
prompt "Firmware type" if !ADK_TARGET_CHOOSE_ARCH
depends on !ADK_APPLIANCE_TOOLCHAIN && !ADK_TARGET_OS_BAREMETAL
default ADK_TARGET_ROOTFS_ARCHIVE

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_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_INITRAMFSPIGGYBACK
	bool "initramfs filesystem included into kernel image"
	select ADK_TARGET_ARCH_INITRAMFS_BUILTIN
	depends on \
		ADK_TARGET_QEMU || \
		ADK_TARGET_SIM || \
		ADK_TARGET_SYSTEM_OR1K_SIM || \
		ADK_TARGET_ARCH_AARCH64 || \
		ADK_TARGET_ARCH_ARC || \
		ADK_TARGET_ARCH_ARM || \
		ADK_TARGET_ARCH_M68K || \
		ADK_TARGET_ARCH_MICROBLAZE || \
		ADK_TARGET_ARCH_MIPS || \
		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_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
	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
	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_YAFFS
	bool "YAFFS2 root filesystem (NAND)"
	select ADK_KERNEL_MISC_FILESYSTEMS
	select ADK_KERNEL_YAFFS_FS
	select ADK_KERNEL_YAFFS_YAFFS2
	select ADK_KERNEL_YAFFS_AUTO_YAFFS2
	depends on ADK_TARGET_WITH_NAND
	help
	  Root filesystem on NAND flash with YAFFS2.

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_ARM_FM
	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 different filesystems"
	select ADK_HOST_NEED_GENEXT2FS if ADK_TARGET_QEMU || ADK_TARGET_VBOX
	select ADK_KERNEL_EXT2_FS if ADK_TARGET_QEMU || ADK_TARGET_VBOX
	depends on !ADK_TARGET_SIM \
		&& !ADK_TARGET_SYSTEM_QEMU_M68K_MCF5208 \
		&& !ADK_TARGET_SYSTEM_QEMU_METAG
	help
	  Use this option if your root filesystem is ext2/ext3/ext4/xfs.

endchoice

choice
prompt "Root filesystem"
depends on ADK_TARGET_ROOTFS_ARCHIVE || ADK_TARGET_ROOTFS_USB && !ADK_TARGET_QEMU
default ADK_TARGET_ROOT_EXT4

config ADK_TARGET_ROOT_EXT4
	bool "EXT4"
	select ADK_KERNEL_EXT4_FS
	help
	  Compile EXT4 filesystem into kernel and use it as root filesystem.

config ADK_TARGET_ROOT_XFS
	bool "XFS"
	select ADK_KERNEL_XFS_FS
	help
	  Compile XFS filesystem into kernel and use it as root filesystem.

config ADK_TARGET_ROOT_EXT2
	bool "EXT2"
	select ADK_KERNEL_EXT2_FS
	help
	  Compile EXT2 filesystem into kernel and use it as root filesystem.

config ADK_TARGET_ROOT_EXT3
	bool "EXT3"
	select ADK_KERNEL_EXT3_FS
	help
	  Compile EXT3 filesystem into kernel and use it as root filesystem.

endchoice

config ADK_TARGET_ROOTFS
	string
	default "xfs" if ADK_TARGET_ROOT_XFS
	default "ext2" if ADK_TARGET_ROOT_EXT2
	default "ext3" if ADK_TARGET_ROOT_EXT3
	default "ext4" if ADK_TARGET_ROOT_EXT4