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

config ADK_big
	boolean

config ADK_little
	boolean

config ADK_TARGET_ENDIAN
	string
	default "little" if ADK_little
	default "big" if ADK_big

config ADK_TOOLCHAIN
	boolean

source "target/config/Config.in.arch"
source "target/config/Config.in.system"

choice
prompt "Toolchain options"
depends on ADK_TOOLCHAIN
config ADK_TOOLCHAIN_ONLY
	boolean "Only build toolchain and selected packages"

config ADK_TOOLCHAIN_ARCHIVE
	boolean "Build a complete system usable f.e. via chroot"

endchoice

choice
prompt "Target Kernel"
depends on ADK_TARGET_SYSTEM_LEMOTE_YEELONG
config ADK_TARGET_KERNEL64
	boolean "64 Bit Kernel"

config ADK_TARGET_KERNEL32
	boolean "32 Bit Kernel"

endchoice

config ADK_o32
	boolean

config ADK_n32
	boolean

config ADK_n64
	boolean

config ADK_TARGET_ABI
	string
	default "32" if ADK_o32
	default "n32" if ADK_n32
	default "64" if ADK_n64

choice
prompt "Target ABI"
depends on ADK_TARGET_KERNEL64 && ADK_LINUX_MIPS

config ADK_TARGET_ABI_N32
	boolean "N32 ABI (new)"
	select ADK_n32

config ADK_TARGET_ABI_O32
	boolean "O32 ABI (old)"
	select ADK_o32

config ADK_TARGET_ABI_N64
	boolean "N64 ABI"
	select ADK_n64

endchoice

# submodel support
#
choice
prompt "Qemu ARM Emulation"
depends on ADK_TARGET_SYSTEM_QEMU_ARM

config ADK_TARGET_QEMU_ARM_MODEL_SPITZ
	boolean "Xscale PXA270 Spitz PDA"
	select ADK_KERNEL_ARCH_PXA
	select ADK_KERNEL_PXA_SHARPSL
	select ADK_KERNEL_MACH_SPITZ
	select ADK_KERNEL_SPI_PXA2XX

config ADK_TARGET_QEMU_ARM_MODEL_VERSATILE
	boolean "ARM Ltd. Versatile"
	select ADK_KERNEL_ARCH_VERSATILE

endchoice

choice
prompt "Foxboard LX Model"
depends on ADK_TARGET_SYSTEM_FOXBOARD_LX

config ADK_TARGET_FOXBOARD_MODEL_LX416
	boolean "Foxboard LX 4x16"

config ADK_TARGET_FOXBOARD_MODEL_LX832
	boolean "Foxboard LX 8x32"

endchoice

choice 
prompt "Broadcom BCM47xx Model"
depends on ADK_TARGET_SYSTEM_BROADCOM_BCM47XX

config ADK_TARGET_BROADCOM_MODEL_LINKSYS_WRT54G
	boolean "Linksys WRT54g"
	
config ADK_TARGET_BROADCOM_MODEL_LINKSYS_WRT54GS
	boolean "Linksys WRT54gs"

endchoice

if ADK_LINUX_NATIVE
source "target/config/Config.in.native"
endif

# hardware features
config ADK_TARGET_WITH_USB
	boolean

config ADK_TARGET_WITH_PCI
	boolean

config ADK_TARGET_WITH_SSB
	boolean

config ADK_TARGET_WITH_AHB
	boolean

config ADK_TARGET_WITH_MINIPCI
	boolean

config ADK_TARGET_WITH_ACPI
	boolean

config ADK_TARGET_WITH_VGA
	boolean

config ADK_TARGET_WITH_CF
	boolean

config ADK_TARGET_WITH_MMC
	boolean

config ADK_TARGET_WITH_NAND
	boolean

config ADK_TARGET_WITH_MTD
	boolean

config ADK_TARGET_WITH_GEODE_CRYPTO
	boolean

config ADK_TARGET_WITH_HDD
	boolean

config ADK_TARGET_WITH_SATA
	boolean

config ADK_TARGET_WITH_INPUT
	boolean

config ADK_TARGET_WITH_LEDS
	boolean

config ADK_TARGET_WITH_PP
	boolean

config ADK_TARGET_WITH_CARDBUS
	boolean

config ADK_TARGET_WITH_RTC
	boolean

config ADK_TARGET_WITH_WATCHDOG
	boolean

config ADK_TARGET_WITH_DSL
	boolean

config ADK_TARGET_WITH_USB_BOOT
	boolean

# global symbols
config ADK_TOOLCHAIN_ONLY
	boolean

config ADK_TARGET_NO_FPU
	boolean

config ADK_EABI
	boolean

config ADK_LINUX_64
	boolean

config ADK_HARDWARE_QEMU
	boolean

config ADK_NATIVE
	boolean

# the inverse of ADK_TARGET_KERNEL_CUSTOMISING,
# allows for selecting it off (i.e., to disable it)
config ADK_TARGET_FIXED_KERNEL
	bool
	default n

config ADK_TARGET_KERNEL_CUSTOMISING
	bool
	default y
	depends on !ADK_TARGET_FIXED_KERNEL

# cpu features
config ADK_TARGET_CPU_WITH_VT
	boolean

config ADK_TARGET_CPU_WITH_MTRR
	boolean

config ADK_TARGET_CPU_WITH_MMX
	boolean

config ADK_TARGET_CPU_WITH_MMXEXT
	boolean

config ADK_TARGET_CPU_WITH_SSE
	boolean

config ADK_TARGET_CPU_WITH_SSE2
	boolean

config ADK_TARGET_CPU_WITH_SSE3
	boolean

config ADK_TARGET_CPU_WITH_SSSE3
	boolean

# hyper threading
config ADK_TARGET_CPU_WITH_HT
	boolean

config ADK_TARGET_CPU_WITH_3DNOW
	boolean

config ADK_TARGET_CPU_WITH_3DNOWEXT
	boolean

# cpu configuration
config ADK_CPU_CRIS_V10
	boolean

config ADK_CPU_CRIS_V32
	boolean

config ADK_CPU_SH4
	boolean

config ADK_CPU_SPARC_V8
	boolean

config ADK_CPU_SPARC_V9
	boolean

config ADK_CPU_I486
	boolean

config ADK_CPU_I586
	boolean

config ADK_CPU_I686
	boolean

config ADK_CPU_X86_64
	boolean

config ADK_CPU_GEODE
	boolean

config ADK_CPU_PPC
	boolean

config ADK_CPU_PPC64
	boolean

config ADK_CPU_PENTIUM_M
	boolean

config ADK_CPU_ATOM
	boolean

config ADK_CPU_AMDFAM10
	select ADK_TARGET_CPU_WITH_VT
	boolean

config ADK_CPU_LOONGSON2F
	boolean

config ADK_CPU_ARMV5
	boolean

config ADK_TARGET_CPU_ARCH
	string
	default "x86_64" if ADK_CPU_X86_64
	default "i486" if ADK_CPU_I486
	default "i586" if ADK_CPU_I586
	default "i686" if ADK_CPU_I686
	default "i586" if ADK_CPU_GEODE
	default "i686" if ADK_CPU_PENTIUM_M
	default "i686" if ADK_CPU_ATOM
	default "mips64" if ADK_LINUX_MIPS && ADK_big && ADK_TARGET_KERNEL64
	default "mips64el" if ADK_LINUX_MIPS && ADK_little && ADK_TARGET_KERNEL64
	default "mips" if ADK_LINUX_MIPS && ADK_big
	default "mipsel" if ADK_LINUX_MIPS && ADK_little
	default "arm" if ADK_LINUX_ARM && ADK_little
	default "armeb" if ADK_LINUX_ARM && ADK_big
	default "sparc" if ADK_LINUX_SPARC
	default "sh" if ADK_LINUX_SH
	default "cris" if ADK_CPU_CRIS_V10
	default "crisv32" if ADK_CPU_CRIS_V32
	default "ppc" if ADK_CPU_PPC
	default "ppc64" if ADK_CPU_PPC64

config ADK_TARGET_ABI_CFLAGS
	string
	default "-mabi=32" if ADK_TARGET_ABI_O32
	default "-mabi=n32 -Wl,-m -Wl,elf32ltsmipn32" if ADK_TARGET_ABI_N32
	default "-mabi=64 -Wl,-m -Wl,elf64ltsmip" if ADK_TARGET_ABI_N64

config ADK_TARGET_KERNEL_LDFLAGS
	string
	default "-mabi=64 -m elf64ltsmip" if ADK_TARGET_ABI_N32
	default "-mabi=64 -m elf64ltsmip" if ADK_TARGET_ABI_O32
	default "-mabi=64 -m elf64ltsmip" if ADK_TARGET_ABI_N64

config ADK_TARGET_CFLAGS
	string
	default "-march=geode" if ADK_CPU_GEODE
	default "-march=i486" if ADK_CPU_I486
	default "-march=i586" if ADK_CPU_I586
	default "-march=i686" if ADK_CPU_I686
	default "-march=pentium-m" if ADK_CPU_PENTIUM_M
	default "-march=atom" if ADK_CPU_ATOM
	default "-march=amdfam10" if ADK_CPU_AMDFAM10
	default "-mcpu=v8" if ADK_CPU_SPARC_V8
	default "-m64 -mcpu=v9" if ADK_CPU_SPARC_V9
	default "-march=loongson2f" if ADK_CPU_LOONGSON2F
	default "-march=mips32" if ADK_CPU_MIPS32
	default "-march=mips64" if ADK_CPU_MIPS64
	default "-march=armv5te -mtune=arm926ej-s" if ADK_CPU_ARMV5
	default "-march=v32" if ADK_CPU_CRIS_V32
	default "-march=v10" if ADK_CPU_CRIS_V10

config ADK_TARGET_CMDLINE
	string
	default "console=tty no_auto_cmd" if ADK_TARGET_SYSTEM_LEMOTE_YEELONG
	default "console=ttyS0,9600" if ADK_TARGET_SYSTEM_FON_FON2100
	default "console=ttyS0,38400" if ADK_TARGET_SYSTEM_PCENGINES_WRAP
	default "console=ttyS0,115200 console=tty0 geodewdt.nowayout=1" if ADK_TARGET_SYSTEM_PCENGINES_ALIX1C
	default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_IBM_X40
	default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_INTEL_ATOM
	default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_QEMU_X86
	default "console=ttyS0,115200 console=tty0" if ADK_TARGET_QEMU_ARM_MODEL_SPITZ
	default "console=ttyAMA0 console=tty0" if ADK_TARGET_QEMU_ARM_MODEL_VERSATILE
	default "console=tty0" if ADK_TARGET_SYSTEM_QEMU_SH
	default "console=ttyS0,115200" if ADK_TARGET_SYSTEM_PCENGINES_ALIX2D13
	default "console=ttyS0,115200" if ADK_TARGET_SYSTEM_PCENGINES_ALIX2D2
	default "console=ttyS0,115200" if ADK_TARGET_SYSTEM_FOXBOARD_LX
	default ""

# c library
config ADK_uclibc
	boolean

config ADK_eglibc
	boolean

config ADK_glibc
	boolean

config ADK_libc
	boolean

config ADK_TARGET_LIBC
	string
	default "uclibc"  if ADK_uclibc
	default "eglibc"  if ADK_eglibc
	default "glibc"  if ADK_glibc
	default "libc"  if ADK_libc

source "target/linux/config/Config.in.kernel"

choice 
prompt "Target C library"
depends on !ADK_CHOOSE_TARGET_SYSTEM && !ADK_CHOOSE_TARGET_ARCH
config ADK_TARGET_LIB_UCLIBC
	prompt "uClibc embedded C library"
	boolean
	select ADK_uclibc
	depends on \
		   !ADK_LINUX_SPARC64 && \
		   !ADK_LINUX_PPC64 && \
		   !ADK_LINUX_NATIVE
	help
 	 http://uclibc.org

config ADK_TARGET_LIB_EGLIBC
	prompt "Embedded GNU C library"
	boolean
	select ADK_eglibc
	depends on \
		ADK_LINUX_ARM || \
		ADK_LINUX_ARMEB || \
		ADK_LINUX_MIPS || \
		ADK_LINUX_MIPSEL || \
		ADK_LINUX_MIPS64 || \
		ADK_LINUX_MIPS64EL || \
		ADK_LINUX_PPC || \
		ADK_LINUX_PPC64 || \
		ADK_LINUX_SPARC || \
		ADK_LINUX_SPARC64 || \
		ADK_LINUX_X86 || \
		ADK_LINUX_X86_64
	help
	 http://www.eglibc.org

config ADK_TARGET_LIB_GLIBC
	prompt "GNU C library"
	boolean
	select ADK_glibc
	depends on \
		ADK_LINUX_ARM || \
		ADK_LINUX_ARMEB || \
		ADK_LINUX_MIPS || \
		ADK_LINUX_MIPSEL || \
		ADK_LINUX_MIPS64 || \
		ADK_LINUX_MIPS64EL || \
		ADK_LINUX_PPC || \
		ADK_LINUX_PPC64 || \
		ADK_LINUX_SPARC || \
		ADK_LINUX_SPARC64 || \
		ADK_LINUX_X86 || \
		ADK_LINUX_X86_64
	help
	 http://www.gnu.org/libc

config ADK_TARGET_LIB_LIBC
	prompt "Native C library"
	boolean
	select ADK_libc
	depends on ADK_LINUX_NATIVE

endchoice

config ADK_TARGET_SUFFIX
	string
	default "gnueabi" if (ADK_TARGET_LIB_GLIBC || ADK_TARGET_LIB_EGLIBC) && ADK_EABI
	default "gnu" if (ADK_TARGET_LIB_GLIBC || ADK_TARGET_LIB_EGLIBC) && !ADK_EABI
	default "uclibcgnueabi" if ADK_TARGET_LIB_UCLIBC && ADK_EABI
	default "uclibc" if ADK_TARGET_LIB_UCLIBC && !ADK_EABI
	default "gnu"

choice
prompt "Target firmware type"
depends on !ADK_CHOOSE_TARGET_SYSTEM && !ADK_CHOOSE_TARGET_ARCH && !ADK_TOOLCHAIN
default ADK_TARGET_ROOTFS_ARCHIVE

config ADK_TARGET_ROOTFS_INITRAMFS
	bool "initramfs filesystem"
	depends on \
		ADK_HARDWARE_QEMU || \
		ADK_LINUX_MIPS64EL || \
		ADK_LINUX_PPC || \
		ADK_LINUX_SPARC || \
		ADK_LINUX_X86 || \
		ADK_LINUX_X86_64 || \
		ADK_LINUX_NATIVE
	select ADK_KERNEL_BLK_DEV_INITRD
	select ADK_KERNEL_RD_XZ
	help
	  create an read-only initramfs system.

config ADK_TARGET_ROOTFS_INITRAMFS_PIGGYBACK
	bool "initramfs filesystem included into kernel image"
	select ADK_LINUX_INITRAMFS_BUILTIN
	depends on \
		ADK_HARDWARE_QEMU || \
		ADK_LINUX_MIPS64EL || \
		ADK_LINUX_PPC || \
		ADK_LINUX_SPARC || \
		ADK_LINUX_X86 || \
		ADK_LINUX_X86_64 || \
		ADK_LINUX_NATIVE
	help
	  create an read-only initramfs system.

config ADK_TARGET_ROOTFS_SQUASHFS
	bool "Compressed read-only root filesystem (squashfs)"
	select ADK_KERNEL_SQUASHFS
	depends on ADK_TARGET_WITH_MTD
	help
	  highly compressed read-only 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_HARDWARE_QEMU
	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_KERNEL_EXT2_FS
	depends on ADK_TARGET_WITH_USB_BOOT
	help
	  Boot system from USB stick.

config ADK_TARGET_ROOTFS_CF
	bool "read-write filesystem for compact flash"
	depends on ADK_TARGET_WITH_CF
	select ADK_KERNEL_EXT2_FS
	select ADK_KERNEL_SCSI
	help
	  Use this option if you have a compact flash based system.
	  (ext2 filesystem is used.)

config ADK_TARGET_ROOTFS_MMC
	bool "read-write filesystem for mmc/sdcard"
	depends on ADK_TARGET_WITH_MMC
	select ADK_KERNEL_EXT2_FS
	select ADK_KERNEL_SCSI
	help
	  Use this option if you have a MMC/SDCARD based system.
	  (ext2 filesystem is used.)

config ADK_TARGET_ROOTFS_ARCHIVE
	bool "Archive usable for different filesystems"
	help
	  Use this option if your root filesystem is ext2/ext3/ext4/xfs.

endchoice

choice
prompt "Root filesystem type"
depends on ADK_TARGET_ROOTFS_ARCHIVE
default ADK_TARGET_ROOT_EXT2_FS

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

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

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

config ADK_TARGET_ROOT_XFS
	boolean
	prompt "XFS filesystem"
	select ADK_KERNEL_XFS_FS
	help
	  Compile XFS 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
	help

config ADK_PACKAGE_SUFFIX
	string
	default "ipk" if ADK_TARGET_PACKAGE_IPKG
	default "tar.gz" if ADK_TARGET_PACKAGE_TGZ
	help

choice
prompt "Target package format"
default ADK_TARGET_PACKAGE_IPKG
depends on !ADK_CHOOSE_TARGET_SYSTEM && !ADK_CHOOSE_TARGET_ARCH

config ADK_TARGET_PACKAGE_IPKG
	boolean
	prompt "ipkg"
	select BUSYBOX_IPKG
	help
	  Create ipkg packages and use ipkg package management on the target.

config ADK_TARGET_PACKAGE_TGZ
	boolean
	prompt "tar archive"
	help
	  Create compressed tar archives of packages.
	  Pre- and post install scripts will be executed in the target
	  directory. There will be no package manager installed onto the target.
	  
endchoice

source "target/config/Config.in.tools"
