##
## Copyright 2012 Google Inc.  All rights reserved.
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; version 2 of the License.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

source src/libpayload/Kconfig

config BIG_ENDIAN
	default n
	bool

config LITTLE_ENDIAN
	default n
	bool

# Whether the target system has an IO address space.
config IO_ADDRESS_SPACE
	default n
	bool

choice
	prompt "Architecture"
	help
	  The architecture depthcharge will run on.

config ARCH_X86
	bool "X86"
	select LITTLE_ENDIAN
	select IO_ADDRESS_SPACE

config ARCH_ARM
	bool "ARM"
	select KERNEL_FIT
	select LITTLE_ENDIAN

endchoice

config EXTRA_CFLAGS
	string "Extra flags for the compiler when compiling"
	default ""

config EXTRA_LINK_FLAGS
	string "Extra flags for the compiler when linking"
	default ""

config HOSTED
	default n
	bool
	help
	  Whether depthcharge is hosted by some other piece of software. That
	  might be, for instance, UEFI, or a running Linux kernel. This does
	  not include situations where something else ran before depthcharge
	  but surrendered control of the system to it when depthcharge started
	  running.

source src/arch/Kconfig

source src/base/Kconfig
source src/boot/Kconfig
source src/fastboot/Kconfig

menu "UIP network stack"
source src/net/Kconfig
endmenu

source src/module/Kconfig

menu "Image layout"
source src/image/Kconfig
endmenu

menu "Vboot"
source src/vboot/Kconfig
endmenu

menu "Drivers"
source src/drivers/Kconfig
endmenu
