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

config ADK_TARGET_KERNEL_VMLINUZ
	boolean

config ADK_TARGET_KERNEL_ZIMAGE
	boolean

config ADK_TARGET_KERNEL_LINUXBIN
	boolean

config ADK_TARGET_KERNEL_IMAGE
	boolean

config ADK_TARGET_KERNEL_BZIMAGE
	boolean

config ADK_TARGET_KERNEL
	string
	default "zImage" if ADK_TARGET_KERNEL_ZIMAGE
	default "Image" if ADK_TARGET_KERNEL_IMAGE
	default "linux.bin" if ADK_TARGET_KERNEL_LINUXBIN
	default "vmlinuz" if ADK_TARGET_KERNEL_VMLINUZ
	default "bzImage" if ADK_TARGET_KERNEL_BZIMAGE
	default "vmlinux"

config ADK_big
	boolean

config ADK_little
	boolean

config ADK_soft_float
	boolean

config ADK_hard_float
	boolean

config ADK_mode_arm
	boolean

config ADK_mode_thumb
	boolean

config ADK_TARGET_FLOAT
	string
	default "hard" if ADK_hard_float
	default "soft" if ADK_soft_float

config ADK_TARGET_ARM_MODE
	depends on ADK_LINUX_ARM
	string
	default "arm" if ADK_mode_arm
	default "thumb" if ADK_mode_thumb
	default "arm"

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

config ADK_JFFS2_OPTS
	string
	default "-l" if ADK_little
	default "-b" 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 \
	|| ADK_TARGET_SYSTEM_QEMU_MIPS64 \
	|| ADK_TARGET_SYSTEM_QEMU_MIPS64EL \
	|| ADK_TARGET_SYSTEM_TOOLCHAIN_MIPS64 \
	|| ADK_TARGET_SYSTEM_TOOLCHAIN_MIPS64EL \
	|| ADK_LINUX_X86_64

config ADK_TARGET_KERNEL64
	boolean "64 Bit Kernel"

config ADK_TARGET_KERNEL32
	boolean "32 Bit Kernel"

endchoice

config ADK_32
	boolean

config ADK_64
	boolean

config ADK_x32
	boolean

config ADK_o32
	boolean

config ADK_n32
	boolean

config ADK_n64
	boolean

config ADK_eabi
	boolean

config ADK_eabihf
	boolean

config ADK_TARGET_ABI
	string
	default "n32" if ADK_n32
	default "n64" if ADK_n64
	default "32" if ADK_32
	default "x32" if ADK_x32
	default "eabi" if ADK_eabi
	default "eabihf" if ADK_eabihf

config ADK_TARGET_MIPS_ABI
	depends on ADK_TARGET_KERNEL64 && ADK_LINUX_MIPS
	string
	default "32" if ADK_o32
	default "n32" if ADK_n32
	default "64" if ADK_n64

config ADK_TARGET_ABI_MIPS_O32
	boolean
	select ADK_o32
	depends on !ADK_TARGET_KERNEL64 && ADK_LINUX_MIPS
	default y

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

config ADK_TARGET_ABI_N32
	boolean "N32 ABI (new)"
	select ADK_n32
	depends on !ADK_TARGET_LIB_MUSL

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

config ADK_TARGET_ABI_N64
	boolean "N64 ABI"
	select ADK_n64
	depends on !ADK_TARGET_LIB_MUSL

endchoice

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

config ADK_TARGET_ABI_64
	boolean "64 Bit ABI"
	select ADK_64

config ADK_TARGET_ABI_X32
	boolean "x32 ABI (new)"
	select ADK_x32

config ADK_TARGET_ABI_32
	boolean "32 Bit ABI"
	select ADK_32

endchoice

config ADK_TARGET_LIBC_PATH
	string
	default "lib32" if ADK_n32
	default "libx32" if ADK_x32
	default "lib64" if ADK_n64 \
				|| ADK_64 \
				|| ADK_LINUX_SPARC64 \
				|| ADK_LINUX_PPC64 \
				|| ADK_LINUX_X86_64
	default "lib"


# submodel support

config ADK_TARGET_KERNEL_MINICONFIG
	string
	default "qemu-microblaze-s3adsp1800" if ADK_TARGET_QEMU_MICROBLAZE_MODEL_S3ADSP1800
	default "qemu-microblaze-ml605" if ADK_TARGET_QEMU_MICROBLAZE_MODEL_ML605
	default "qemu-arm-versatilepb" if ADK_TARGET_QEMU_ARM_MODEL_VERSATILEPB
	default "qemu-arm-vexpress-a9" if ADK_TARGET_QEMU_ARM_MODEL_VEXPRESS_A9
	default "qemu-arm-spitz" if ADK_TARGET_QEMU_ARM_MODEL_SPITZ
	default "qemu-mips" if ADK_TARGET_SYSTEM_QEMU_MIPS
	default "qemu-mipsel" if ADK_TARGET_SYSTEM_QEMU_MIPSEL
	default "qemu-mips64" if ADK_TARGET_SYSTEM_QEMU_MIPS64
	default "qemu-mips64el" if ADK_TARGET_SYSTEM_QEMU_MIPS64EL
	default "qemu-ppc" if ADK_TARGET_SYSTEM_QEMU_PPC
	default "qemu-ppc64" if ADK_TARGET_SYSTEM_QEMU_PPC64
	default "qemu-sh" if ADK_TARGET_SYSTEM_QEMU_SH4
	default "qemu-sh" if ADK_TARGET_SYSTEM_QEMU_SH4EB
	default "qemu-sparc" if ADK_TARGET_SYSTEM_QEMU_SPARC
	default "qemu-sparc64" if ADK_TARGET_SYSTEM_QEMU_SPARC64
	default "qemu-i686" if ADK_TARGET_SYSTEM_QEMU_I686
	default "qemu-x86_64" if ADK_TARGET_SYSTEM_QEMU_X86_64
	default "cubox-i" if ADK_TARGET_SYSTEM_CUBOX_I
	default "raspberry-pi" if ADK_TARGET_SYSTEM_RASPBERRY_PI
	default "sharp-zaurus" if ADK_TARGET_SYSTEM_SHARP_ZAURUS

config ADK_QEMU_ARGS
	string
	default "-nographic" if ADK_TARGET_QEMU_WITHOUT_GRAPHIC

choice
prompt "Qemu Emulation with graphical output"
depends on ADK_HARDWARE_QEMU

config ADK_TARGET_QEMU_WITHOUT_GRAPHIC
	boolean "disabled"

config ADK_TARGET_QEMU_WITH_GRAPHIC
	boolean "enabled"
	select ADK_KERNEL_VT
	select ADK_KERNEL_VT_CONSOLE
	select ADK_KERNEL_FONTS
	select ADK_KERNEL_FONT_8x16
	select ADK_KERNEL_FB
	select ADK_KERNEL_FRAMEBUFFER_CONSOLE
	select ADK_KERNEL_FB_SM501 if ADK_TARGET_SYSTEM_QEMU_SH4 || ADK_TARGET_SYSTEM_QEMU_SH4EB
	select ADK_KERNEL_FB_CIRRUS if ADK_TARGET_SYSTEM_QEMU_I686 || ADK_TARGET_SYSTEM_QEMU_X86_64
	select ADK_KERNEL_FB_PXA if ADK_TARGET_QEMU_ARM_MODEL_SPITZ
	select ADK_KERNEL_INPUT
	select ADK_KERNEL_INPUT_KEYBOARD
	select ADK_KERNEL_KEYBOARD_ATKBD if ADK_TARGET_SYSTEM_QEMU_I686 || ADK_TARGET_SYSTEM_QEMU_X86_64
	select ADK_KERNEL_INPUT_MOUSE
	select ADK_KERNEL_INPUT_MOUSEDEV

endchoice

choice
prompt "Qemu Emulation using VirtIO drivers"
depends on ADK_TARGET_SYSTEM_QEMU_SPARC64

config ADK_TARGET_QEMU_WITH_VIRTIO
	boolean "enabled"
	select ADK_KERNEL_BLK_DEV
	select ADK_KERNEL_VIRTIO
	select ADK_KERNEL_VIRTIO_PCI
	select ADK_KERNEL_VIRTIO_NET
	select ADK_KERNEL_VIRTIO_BLK

config ADK_TARGET_QEMU_WITHOUT_VIRTIO
	boolean "disabled"

endchoice

choice
prompt "Qemu MICROBLAZE Emulation"
depends on ADK_TARGET_SYSTEM_QEMU_MICROBLAZE || ADK_TARGET_SYSTEM_QEMU_MICROBLAZEEL

config ADK_TARGET_QEMU_MICROBLAZE_MODEL_ML605
	boolean "Xilinx ml605"
	select ADK_TARGET_WITH_MTD

config ADK_TARGET_QEMU_MICROBLAZE_MODEL_S3ADSP1800
	boolean "Xilinx Spartan S3ADSP1800"

endchoice

choice
prompt "Qemu ARM Emulation"
depends on ADK_TARGET_SYSTEM_QEMU_ARM

config ADK_TARGET_QEMU_ARM_MODEL_VERSATILEPB
	boolean "ARM Ltd. Versatile/PB"
	select ADK_soft_float
	select ADK_eabi
	select ADK_CPU_ARM926EJ_S

config ADK_TARGET_QEMU_ARM_MODEL_VEXPRESS_A9
	boolean "ARM Ltd. Versatile Express for Cortex-A9"
	select ADK_hard_float
	select ADK_eabihf
	select ADK_CPU_CORTEX_A9

config ADK_TARGET_QEMU_ARM_MODEL_SPITZ
	boolean "Xscale PXA270 Spitz PDA"
	select ADK_soft_float
	select ADK_eabi
	select ADK_CPU_XSCALE
	select ADK_TARGET_WITH_VGA

endchoice

choice
prompt "Use ARM thumb mode"
depends on ADK_CPU_CORTEX_A9

config ADK_LINUX_ARM_WITHOUT_THUMB
	boolean "disabled"
	select ADK_mode_arm

config ADK_LINUX_ARM_WITH_THUMB
	boolean "enabled"
	select ADK_mode_thumb
	select ADK_KERNEL_THUMB2_KERNEL

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"

config ADK_TARGET_BROADCOM_MODEL_ASUS_WL500GP
	boolean "Asus WL500gP"

endchoice

# 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_SOUND
	boolean

config ADK_TARGET_WITH_TOUCHSCREEN
	boolean

config ADK_TARGET_WITH_LEDS
	boolean

config ADK_TARGET_WITH_PP
	boolean

config ADK_TARGET_WITH_CARDBUS
	boolean

config ADK_TARGET_WITH_PCMCIA
	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

config ADK_TARGET_KERNEL_MAY_64BIT
	boolean

# global symbols
config ADK_TOOLCHAIN_ONLY
	boolean

config ADK_LINUX_64
	boolean

config ADK_HARDWARE_QEMU
	boolean

config ADK_HARDWARE_VBOX
	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

config ADK_TARGET_CPU_WITH_IWMMXT
	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_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_XSCALE
	boolean

config ADK_CPU_M68K
	boolean

config ADK_CPU_MIPS32
	boolean

config ADK_CPU_MIPS64
	boolean

config ADK_CPU_MICROBLAZE
	boolean

config ADK_CPU_ARM926EJ_S
	boolean

config ADK_CPU_ARM1176JZF_S
	boolean

config ADK_CPU_CORTEX_A9
	boolean

config ADK_TARGET_CPU_ARCH
	string
	default "x86_64" if ADK_CPU_X86_64
	default "x86_64" if ADK_CPU_AMDFAM10
	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 "m68k" if ADK_LINUX_M68K
	default "microblaze" if ADK_LINUX_MICROBLAZE && ADK_big
	default "microblazeel" if ADK_LINUX_MICROBLAZE && ADK_little
	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 "sparc64" if ADK_LINUX_SPARC64
	default "sh4" if ADK_LINUX_SH && ADK_little
	default "sh4eb" if ADK_LINUX_SH && ADK_big
	default "ppc" if ADK_CPU_PPC
	default "ppc64" if ADK_CPU_PPC64
	default "mips64el" if ADK_native && ADK_lemote_yeelong	

config ADK_TARGET_ABI_CFLAGS
	string
	default "-mabi=32" if ADK_TARGET_ABI_O32 || ADK_TARGET_ABI_MIPS_O32
	default "-mabi=n32" if ADK_TARGET_ABI_N32
	default "-mabi=64" if ADK_TARGET_ABI_N64
	default "-m32" if ADK_TARGET_ABI_32
	default "-mx32" if ADK_TARGET_ABI_X32
	default "-m64" if ADK_TARGET_ABI_64

config ADK_TARGET_ABI_LDFLAGS
	string
	default "-Wl,-m -Wl,elf_i386" if ADK_TARGET_ABI_32

config ADK_TARGET_KERNEL_LDFLAGS
	string
	default "-mabi=64" if ADK_TARGET_ABI_N32 && ADK_TARGET_KERNEL64
	default "-mabi=64" if ADK_TARGET_ABI_O32 && ADK_TARGET_KERNEL64
	default "-mabi=64" if ADK_TARGET_ABI_N64 && ADK_TARGET_KERNEL64
	default ""

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=ultrasparc" if ADK_CPU_SPARC_V9
	default "-march=loongson2f -Wa,-mfix-loongson2f-nop" if ADK_CPU_LOONGSON2F
	default "-march=mips32" if ADK_CPU_MIPS32
	default "-march=mips64" if ADK_CPU_MIPS64
	default "-march=armv5te -mtune=iwmmxt" if ADK_CPU_XSCALE
	default "-march=armv5te -mtune=arm926ej-s -mfloat-abi=soft" if ADK_CPU_ARM926EJ_S && ADK_soft_float
	default "-march=armv5te -mtune=arm926ej-s -mfloat-abi=hard" if ADK_CPU_ARM926EJ_S && ADK_hard_float
	default "-march=armv6 -mtune=arm1176jzf-s -mfloat-abi=soft" if ADK_CPU_ARM1176JZF_S && ADK_soft_float
	default "-march=armv6 -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard" if ADK_CPU_ARM1176JZF_S && ADK_hard_float
	default "-march=armv7-a -mtune=cortex-a9 -mfloat-abi=soft" if ADK_CPU_CORTEX_A9 && ADK_soft_float
	default "-march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard" if ADK_CPU_CORTEX_A9 && ADK_hard_float

config ADK_TARGET_CMDLINE
	string
	default "dwc_otg.fiq_split_enable=1" if ADK_TARGET_SYSTEM_RASPBERRY_PI
	default "console=tty no_auto_cmd" if ADK_TARGET_SYSTEM_LEMOTE_YEELONG
	default "console=ttymxc0,115200" if ADK_TARGET_SYSTEM_CUBOX_I
	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_I686
	default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_QEMU_SPARC64
	default "console=ttyS0,9600 console=tty0" if ADK_TARGET_SYSTEM_QEMU_PPC
	default "console=hvc0 console=tty0" if ADK_TARGET_SYSTEM_QEMU_PPC64
	default "console=ttyUL0" if ADK_TARGET_QEMU_MICROBLAZE_MODEL_S3ADSP1800
	default "console=ttyS0,115200" if ADK_TARGET_QEMU_MICROBLAZE_MODEL_ML605
	default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_VBOX_I686
	default "console=ttyS0,115200 console=tty0" if ADK_TARGET_QEMU_ARM_MODEL_SPITZ
	default "console=ttyAMA0 console=tty0" if ADK_TARGET_QEMU_ARM_MODEL_VERSATILEPB
	default "console=ttyAMA0 console=tty0" if ADK_TARGET_QEMU_ARM_MODEL_VEXPRESS_A9
	default "console=ttyS0,115200 console=tty0 fbcon=rotate:1" if ADK_TARGET_SYSTEM_SHARP_ZAURUS
	default "console=ttySC1 console=tty0" if ADK_TARGET_SYSTEM_QEMU_SH4
	default "console=ttySC1 console=tty0" if ADK_TARGET_SYSTEM_QEMU_SH4EB
	default "console=ttyS0" if ADK_TARGET_SYSTEM_ARANYM_M68K
	default "console=ttyS0,115200" if ADK_TARGET_SYSTEM_PCENGINES_ALIX2D13
	default "console=ttyS0,115200" if ADK_TARGET_SYSTEM_PCENGINES_ALIX2D2
	default ""

# c library
config ADK_uclibc
	boolean

config ADK_glibc
	boolean

config ADK_musl
	boolean

config ADK_libc
	boolean

config ADK_TARGET_LIBC
	string
	default "uclibc"  if ADK_uclibc
	default "glibc"  if ADK_glibc
	default "musl"  if ADK_musl
	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_MICROBLAZE && \
		   !ADK_LINUX_SPARC64 && \
		   !ADK_LINUX_PPC64 && \
		   !ADK_LINUX_NATIVE
	help
 	 http://uclibc.org

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

config ADK_TARGET_LIB_MUSL
	prompt "musl C library"
	boolean
	select ADK_musl
	depends on \
		ADK_LINUX_ARM || \
		ADK_LINUX_MICROBLAZE || \
		ADK_LINUX_MIPS || \
		ADK_LINUX_PPC || \
		ADK_LINUX_SH || \
		ADK_LINUX_X86 || \
		ADK_LINUX_X86_64
	help
 	 http://musl-libc.org

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 "gnueabihf" if ADK_TARGET_LIB_GLIBC && ADK_eabihf
	default "gnueabi" if ADK_TARGET_LIB_GLIBC && ADK_eabi
	default "gnuabi64" if ADK_TARGET_LIB_GLIBC && ADK_n64 && ADK_TARGET_KERNEL64
	default "gnuabin32" if ADK_TARGET_LIB_GLIBC && ADK_n32 && ADK_TARGET_KERNEL64
	default "gnuabi32" if ADK_TARGET_LIB_GLIBC && ADK_o32 && ADK_TARGET_KERNEL64
	default "gnu32" if ADK_TARGET_LIB_GLIBC && ADK_32 && ADK_TARGET_KERNEL64
	default "gnux32" if ADK_TARGET_LIB_GLIBC && ADK_x32 && ADK_TARGET_KERNEL64
	default "gnu" if ADK_TARGET_LIB_GLIBC
	default "uclibcgnueabihf" if ADK_TARGET_LIB_UCLIBC && ADK_eabihf
	default "uclibcgnueabi" if ADK_TARGET_LIB_UCLIBC && ADK_eabi
	default "uclibcabi64" if ADK_TARGET_LIB_UCLIBC && ADK_n64 && ADK_TARGET_KERNEL64
	default "uclibcabin32" if ADK_TARGET_LIB_UCLIBC && ADK_n32 && ADK_TARGET_KERNEL64
	default "uclibcabi32" if ADK_TARGET_LIB_UCLIBC && ADK_o32 && ADK_TARGET_KERNEL64
	default "uclibc32" if ADK_TARGET_LIB_UCLIBC && ADK_32 && ADK_TARGET_KERNEL64
	default "uclibcx32" if ADK_TARGET_LIB_UCLIBC && ADK_x32 && ADK_TARGET_KERNEL64
	default "uclibc" if ADK_TARGET_LIB_UCLIBC
	default "muslgnueabihf" if ADK_TARGET_LIB_MUSL && ADK_eabihf
	default "muslgnueabi" if ADK_TARGET_LIB_MUSL && ADK_eabi
	default "muslabi64" if ADK_TARGET_LIB_MUSL && ADK_n64 && ADK_TARGET_KERNEL64
	default "muslabin32" if ADK_TARGET_LIB_MUSL && ADK_n32 && ADK_TARGET_KERNEL64
	default "muslabi32" if ADK_TARGET_LIB_MUSL && ADK_o32 && ADK_TARGET_KERNEL64
	default "musl32" if ADK_TARGET_LIB_MUSL && ADK_32 && ADK_TARGET_KERNEL64
	default "muslx32" if ADK_TARGET_LIB_MUSL && ADK_x32 && ADK_TARGET_KERNEL64
	default "musl" if ADK_TARGET_LIB_MUSL

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_M68K || \
		ADK_LINUX_ARM || \
		ADK_LINUX_MICROBLAZE || \
		ADK_LINUX_MIPS || \
		ADK_LINUX_PPC || \
		ADK_LINUX_SPARC || \
		ADK_LINUX_X86 || \
		ADK_LINUX_X86_64 || \
		ADK_LINUX_NATIVE
	depends on !ADK_HARDWARE_VBOX
	depends on !ADK_TARGET_SYSTEM_RASPBERRY_PI
	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_ARM || \
		ADK_LINUX_MICROBLAZE || \
		ADK_LINUX_MIPS || \
		ADK_LINUX_PPC || \
		ADK_LINUX_SPARC || \
		ADK_LINUX_X86 || \
		ADK_LINUX_X86_64 || \
		ADK_LINUX_NATIVE
	depends on !ADK_HARDWARE_VBOX
	select ADK_KERNEL_EXT2_FS
	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
	depends on ADK_TARGET_WITH_MTD
	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_MISC_FILESYSTEMS
	select ADK_KERNEL_JFFS2
	select ADK_HOST_NEED_JFFS2
	depends on ADK_TARGET_WITH_MTD
	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_HARDWARE_QEMU && !ADK_HARDWARE_VBOX && !ADK_TARGET_SYSTEM_ARANYM_M68K
	depends on !ADK_TARGET_SYSTEM_RASPBERRY_PI
	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_GENEXT2FS
	bool "read-write filesystem for compact flash (genext2fs version)"
	depends on ADK_TARGET_WITH_CF
	select ADK_KERNEL_EXT2_FS
	select ADK_KERNEL_SCSI
	select ADK_HOST_NEED_GENEXT2FS
	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
	depends on !ADK_TARGET_SYSTEM_RASPBERRY_PI
	help
	  Use this option if you have a MMC/SDCARD based system.
	  (ext2 filesystem is used.)

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_MKISOFS
	select ADK_HOST_NEED_SYSLINUX
	depends on ADK_HOST_LINUX
	depends on ADK_LINUX_X86
	help
	  Use this option to create a bootable ISO image.

config ADK_TARGET_ROOTFS_ARCHIVE
	bool "Archive usable for different filesystems"
	select ADK_HOST_NEED_GENEXT2FS if ADK_HARDWARE_QEMU
	select ADK_KERNEL_EXT2_FS if ADK_HARDWARE_QEMU
	depends on !ADK_LINUX_MICROBLAZE
	help
	  Use this option if your root filesystem is ext2/ext3/ext4/xfs.

endchoice

config ADK_TARGET_ROOT_EXT4_RASPBERRY_PI
        boolean
	depends on ADK_TARGET_SYSTEM_RASPBERRY_PI && ADK_TARGET_ROOTFS_ARCHIVE
        select ADK_KERNEL_EXT4_FS
	default y
        help
          Compile EXT4 filesystem into kernel and use it as root filesystem.

choice
prompt "Root filesystem type"
depends on ADK_TARGET_ROOTFS_ARCHIVE && !ADK_TARGET_SYSTEM_RASPBERRY_PI && !ADK_HARDWARE_QEMU
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"