#

mainmenu "Buildroot2 Configuration"

config BR2_HAVE_DOT_CONFIG
	bool
	default y

source "project/Config.in"

choice
	prompt "Target Architecture"
	default BR2_i386
	help
	  Select the target architecture family to build for.

config BR2_alpha
	bool "alpha"
config BR2_arm
	bool "arm"
config BR2_armeb
	bool "armeb"
config BR2_avr32
	bool "avr32"
config BR2_cris
	bool "cris"
config BR2_ia64
	bool "ia64"
config BR2_i386
	bool "i386"
config BR2_m68k
	bool "m68k"
config BR2_mips
	bool "mips"
config BR2_mipsel
	bool "mipsel"
config BR2_nios2
	bool "nios2"
config BR2_powerpc
	bool "powerpc"
config BR2_s390
	bool "s390"
config BR2_sh
	bool "superh"
config BR2_sh64
	bool "superh64"
config BR2_sparc
	bool "sparc"
config BR2_x86_64
	bool "x86_64"
endchoice

#
# Keep the variants separate, there's no need to clutter everything else.
# sh is fairly "special" in this regard, as virtually everyone else has
# things kept down to a _sensible_ number of target variants. No such
# luck for sh..
#
choice
	prompt "Target Architecture Variant"
	depends BR2_arm || BR2_armeb
	default BR2_generic_arm
	help
	  Specific CPU variant to use

config BR2_generic_arm
	bool "generic_arm"
config BR2_arm610
	bool "arm610"
config BR2_arm710
	bool "arm710"
config BR2_arm720t
	bool "arm720t"
config BR2_arm920t
	bool "arm920t"
config BR2_arm922t
	bool "arm922t"
config BR2_arm926t
	bool "arm926t"
config BR2_arm1136jf_s
	bool "arm1136jf_s"
config BR2_arm1176jz_s
	bool "arm1176jz-s"
config BR2_arm1176jzf_s
	bool "arm1176jzf-s"
config BR2_sa110
	bool "sa110"
config BR2_sa1100
	bool "sa1100"
config BR2_xscale
	bool "xscale"
config BR2_iwmmxt
	bool "iwmmxt"
endchoice

config BR2_ARM_TYPE
	string
	default ARM610		if BR2_arm610
	default ARM710		if BR2_arm710
	default ARM720T		if BR2_arm720t
	default ARM920T		if BR2_arm920t
	default ARM922T		if BR2_arm922t
	default ARM926T		if BR2_arm926t
	default ARM1136JF_S 	if BR2_arm1136jf_s
	default ARM1176JZ_S	if BR2_arm1176jz_s
	default ARM1176JZF_S	if BR2_arm1176jzf_s
	default ARM_SA110	if BR2_sa110
	default ARM_SA1100	if BR2_sa1100
	default ARM_XSCALE	if BR2_xscale
	default ARM_IWMMXT	if BR2_iwmmxt
	default GENERIC_ARM	if BR2_generic_arm

choice
	prompt "Target ABI"
	depends BR2_arm || BR2_armeb
	default BR2_ARM_OABI
	help
	  Application Binary Interface to use

config BR2_ARM_OABI
	bool "OABI"
config BR2_ARM_EABI
	bool "EABI"
endchoice

choice
	prompt "Target Architecture Variant"
	depends BR2_avr32
config BR2_at32ap7000
	bool "AT32AP7000"
config BR2_at32ap7001
	bool "AT32AP7001"
config BR2_at32ap7002
	bool "AT32AP7002"
endchoice


choice
	prompt "Target Architecture Variant"
	depends BR2_sh
	default BR2_sh4
	help
	  Specific CPU variant to use

config BR2_sh2a_nofpueb
	bool "sh2a_nofpueb"
config BR2_sh2eb
	bool "sh2eb"
config BR2_sh3
	bool "sh3"
config BR2_sh3eb
	bool "sh3eb"
config BR2_sh4
	bool "sh4"
config BR2_sh4eb
	bool "sh4eb"
endchoice

#
# gcc builds libstdc++ differently depending on the
# host tuplet given to it, so let people choose
#
choice
	prompt "Target Architecture Variant"
	depends BR2_i386
	default BR2_x86_i386
	help
	  Specific CPU variant to use

config BR2_x86_i386
	bool "i386"
config BR2_x86_i486
	bool "i486"
config BR2_x86_i586
	bool "i586"
config BR2_x86_i686
	bool "i686"
config BR2_x86_pentiumpro
	bool "pentium pro"
config BR2_x86_pentium_mmx
	bool "pentium MMX"
config BR2_x86_pentium_m
	bool "pentium mobile"
config BR2_x86_pentium2
	bool "pentium2"
config BR2_x86_pentium3
	bool "pentium3"
config BR2_x86_pentium4
	bool "pentium4"
config BR2_x86_prescott
	bool "prescott"
config BR2_x86_nocona
	bool "nocona"
config BR2_x86_core2
	bool "core2"
config BR2_x86_k6
	bool "k6"
config BR2_x86_k6_2
	bool "k6-2"
config BR2_x86_athlon
	bool "athlon"
config BR2_x86_athlon_4
	bool "athlon-4"
config BR2_x86_opteron
	bool "opteron"
config BR2_x86_opteron_sse3
	bool "opteron w/ SSE3"
config BR2_x86_barcelona
	bool "barcelona"
config BR2_x86_geode
	bool "geode"
config BR2_x86_c3
	bool "cyrix 3 (MMX + 3dNOW!)"
config BR2_x86_winchip_c6
	bool "IDT winchip C6 (i486 + slow MMX)"
config BR2_x86_winchip2
	bool "IDT winchip2 (i486 +MMX +SSE)"
endchoice

choice
	prompt "Target Architecture Variant"
	depends BR2_x86_64
	default BR2_x86_64_core2
	help
	  Specific CPU variant to use

config BR2_x86_64_barcelona
	bool "barcelona"
config BR2_x86_64_opteron_sse3
	bool "opteron w/ sse3"
config BR2_x86_64_opteron
	bool "opteron"
config BR2_x86_64_nocona
	bool "nocona"
config BR2_x86_64_core2
	bool "core2"
endchoice

choice
	prompt "Target Architecture Variant"
	depends BR2_alpha
	default BR2_alpha_21064
	help
	  Specific CPU variant to use

config BR2_alpha_21064
	bool "21064"
config BR2_alpha_21164
	bool "21164"
config BR2_alpha_21164a
	bool "21164a"
config BR2_alpha_21164pc
	bool "21164pc"
config BR2_alpha_21264
	bool "21264"
config BR2_alpha_21264a
	bool "21264a"
endchoice

choice
	prompt "Target Architecture Variant"
	depends BR2_s390
	default BR2_s390_g5
	help
	  Specific CPU variant to use

config BR2_s390_g5
	bool "g5"
config BR2_s390_g6
	bool "g6"
config BR2_s390_z900
	bool "z900"
config BR2_s390_z990
	bool "z990"
config BR2_s390_z9_109
	bool "z9_109"
endchoice

choice
	prompt "Target Architecture Variant"
	depends BR2_ia64
	default BR2_ia64_itanium2
	help
	  Specific CPU variant to use

config BR2_ia64_itanium1
	bool "itanium 1"
config BR2_ia64_itanium2
	bool "itanium 2"
endchoice



config BR2_ARCH
	string
	default "alpha"		if BR2_alpha
	default "arm"		if BR2_arm
	default "armeb"		if BR2_armeb
	default "avr32"		if BR2_avr32
	default "cris"		if BR2_cris
	default "i386"		if BR2_x86_i386
	default "i486"		if BR2_x86_i486
	default "i586"		if BR2_x86_i586
	default "i686"		if BR2_x86_i686
	default "i686"		if BR2_x86_pentium4
	default "i686"		if BR2_x86_nocona
	default "i686"		if BR2_x86_core2
	default "ia64"		if BR2_ia64
	default "m68k"		if BR2_m68k
	default "mips"		if BR2_mips
	default "mipsel"	if BR2_mipsel
	default "nios2"		if BR2_nios2
	default "powerpc"	if BR2_powerpc
	default "s390"		if BR2_s390
	default "s390"		if BR2_s390x
	default "sh2a_nofpueb"	if BR2_sh2a_nofpueb
	default "sh2eb"		if BR2_sh2eb
	default "sh3"		if BR2_sh3
	default "sh3eb"		if BR2_sh3eb
	default "sh4"		if BR2_sh4
	default "sh4eb"		if BR2_sh4eb
	default "sh64"		if BR2_sh64
	default "sparc"		if BR2_sparc
	default "x86_64"	if BR2_x86_64
	default "x86_64"	if BR2_x86_64_nocona
	default "x86_64"	if BR2_x86_64_core2
	default "x86_64"	if BR2_x86_64_opteron
	default "x86_64"	if BR2_x86_64_opteron_sse3
	default "x86_64"	if BR2_x86_64_barcelona


config BR2_ENDIAN
	string
	default "LITTLE" if BR2_arm || BR2_cris || BR2_i386 || BR2_mipsel || \
	                    BR2_sh3 || BR2_sh4 || BR2_x86_64 || BR2_nios2 || \
			    BR2_sh64
	default "BIG"    if BR2_alpha || BR2_armeb || BR2_avr32 || BR2_m68k || BR2_mips || \
	                    BR2_powerpc || BR2_sh2a_nofpueb || BR2_sh2eb || \
	                    BR2_sh3eb || BR2_sh4eb || BR2_sparc

config BR2_GCC_TARGET_TUNE
	string
	default i386		if BR2_x86_i386
	default i486		if BR2_x86_i486
	default i586		if BR2_x86_i586
	default pentium-mmx	if BR2_x86_pentium_mmx
	default i686		if BR2_x86_i686
	default pentiumpro	if BR2_x86_pentiumpro
	default pentium-m	if BR2_x86_pentium_m
	default pentium2	if BR2_x86_pentium2
	default pentium3	if BR2_x86_pentium3
	default pentium4	if BR2_x86_pentium4
	default prescott	if BR2_x86_prescott
	default nocona		if BR2_x86_nocona
	default core2		if BR2_x86_core2
	default k8		if BR2_x86_opteron
	default k8-sse3		if BR2_x86_opteron_sse3
	default barcelona	if BR2_x86_barcelona
	default k6		if BR2_x86_k6
	default k6-2		if BR2_x86_k6_2
	default athlon		if BR2_x86_athlon
	default athlon-4	if BR2_x86_athlon_4
	default winchip-c6	if BR2_x86_winchip_c6
	default winchip2	if BR2_x86_winchip2
	default c3		if BR2_x86_c3
	default geode		if BR2_x86_geode
	default nocona		if BR2_x86_64_nocona
	default core2		if BR2_x86_64_core2
	default k8		if BR2_x86_64_opteron
	default k8-sse3		if BR2_x86_64_opteron_sse3
	default barcelona	if BR2_x86_64_barcelona
	default arm600		if BR2_arm600
	default arm610		if BR2_arm610
	default arm620		if BR2_arm620
	default arm7tdmi	if BR2_arm7tdmi
	default arm7tdmi	if BR2_arm720t
	default arm7tdmi	if BR2_arm740t
	default arm920		if BR2_arm920
	default arm920t		if BR2_arm920t
	default arm922t		if BR2_arm922t
	default arm9tdmi	if BR2_arm926t
	default arm1136j-s	if BR2_arm1136j_s
	default arm1136jf-s	if BR2_arm1136jf_s
	default arm1176jz-s	if BR2_arm1176jz_s
	default arm1176jzf-s	if BR2_arm1176jzf_s
	default strongarm110	if BR2_sa110
	default strongarm1100	if BR2_sa1100
	default xscale		if BR2_xscale
	default iwmmxt		if BR2_iwmmxt
	default v0		if BR2_cris_unknown
	default v10		if BR2_cris_generic
	default v3		if BR2_cris_etrax_4
	default v8		if BR2_cris_etrax_100
	default v10		if BR2_cris_etrax_100lx
	default ev4		if BR2_alpha_21064
	default ev5		if BR2_alpha_21164
	default ev56		if BR2_alpha_21164a
	default pca56		if BR2_alpha_21164pc
	default ev6		if BR2_alpha_21264
	default ev67		if BR2_alpha_21264a
#	default itanium		if BR2_ia64_itanium1
#	default itanium2	if BR2_ia64_itanium2
	default 68000		if BR2_m68k_68000
	default 68010		if BR2_m68k_68010
	default 68020		if BR2_m68k_68020
	default 68030		if BR2_m68k_68030
	default 68040		if BR2_m68k_68040
	default 68060		if BR2_m68k_68060
	default mips1		if BR2_mips_1
	default mips2		if BR2_mips_2
	default mips3		if BR2_mips_3
	default mips4		if BR2_mips_4
	default mips32		if BR2_mips_32
	default mips32r2	if BR2_mips_32r2
	default mips64		if BR2_mips_64
	default mips16		if BR2_mips_16
	default 401		if BR2_powerpc_401
	default 403		if BR2_powerpc_403
	default 405		if BR2_powerpc_405
	default 405fp		if BR2_powerpc_405fp
	default 440		if BR2_powerpc_440
	default 440fp		if BR2_powerpc_440fp
	default 505		if BR2_powerpc_505
	default 601		if BR2_powerpc_601
	default 602		if BR2_powerpc_602
	default 603		if BR2_powerpc_603
	default 603e		if BR2_powerpc_603e
	default 604		if BR2_powerpc_604
	default 604e		if BR2_powerpc_604e
	default 620		if BR2_powerpc_620
	default 630		if BR2_powerpc_630
	default 740		if BR2_powerpc_740
	default 7400		if BR2_powerpc_7400
	default 7450		if BR2_powerpc_7450
	default 750		if BR2_powerpc_750
	default 801		if BR2_powerpc_801
	default 821		if BR2_powerpc_821
	default 823		if BR2_powerpc_823
	default 860		if BR2_powerpc_860
	default 970		if BR2_powerpc_970
	default 8540		if BR2_powerpc_8540
	default cypress		if BR2_sparc_cypress
	default supersparc	if BR2_sparc_supersparc
	default hypersparc	if BR2_sparc_hypersparc
	default f930		if BR2_sparc_f930
	default f934		if BR2_sparc_f934
	default sparclite86x	if BR2_sparc_sparclite86x
	default tsc701		if BR2_sparc_tsc701
	default ultrasparc	if BR2_sparc_ultrasparc
	default ultrasparc3	if BR2_sparc_ultrasparc3
	default niagara		if BR2_sparc_niagara
	default g5		if BR2_s390_g5
	default g6		if BR2_s390_g6
	default z900		if BR2_s390_z900
	default z990		if BR2_s390_z990
	default z9-109		if BR2_s390_z9_109

config BR2_GCC_TARGET_ARCH
	string
	default i386		if BR2_x86_i386
	default i486		if BR2_x86_i486
	default i586		if BR2_x86_i586
	default pentium-mmx	if BR2_x86_pentium_mmx
	default i686		if BR2_x86_i686
	default pentiumpro	if BR2_x86_pentiumpro
	default pentium-m	if BR2_x86_pentium_m
	default pentium2	if BR2_x86_pentium2
	default pentium3	if BR2_x86_pentium3
	default pentium4	if BR2_x86_pentium4
	default prescott	if BR2_x86_prescott
	default nocona		if BR2_x86_nocona
	default core2		if BR2_x86_core2
	default k8		if BR2_x86_opteron
	default k8-sse3		if BR2_x86_opteron_sse3
	default barcelona	if BR2_x86_barcelona
	default k6		if BR2_x86_k6
	default k6-2		if BR2_x86_k6_2
	default athlon		if BR2_x86_athlon
	default athlon-4	if BR2_x86_athlon_4
	default winchip-c6	if BR2_x86_winchip_c6
	default winchip2	if BR2_x86_winchip2
	default c3		if BR2_x86_c3
	default geode		if BR2_x86_geode
	default iwmmxt		if BR2_iwmmxt
	default v0		if BR2_cris_unknown
	default v10		if BR2_cris_generic
	default v3		if BR2_cris_etrax_4
	default v8		if BR2_cris_etrax_100
	default v10		if BR2_cris_etrax_100lx
	default 68000		if BR2_m68k_68000
	default 68010		if BR2_m68k_68010
	default 68020		if BR2_m68k_68020
	default 68030		if BR2_m68k_68030
	default 68040		if BR2_m68k_68040
	default 68060		if BR2_m68k_68060
	default g5		if BR2_s390_g5
	default g6		if BR2_s390_g6
	default z900		if BR2_s390_z900
	default z990		if BR2_s390_z990
	default z9-109		if BR2_s390_z9_109

config BR2_GCC_TARGET_ABI
	string
	default apcs-gnu	if BR2_arm_dunno
	default atpcs		if BR2_arm_dunno
	default aapcs		if BR2_arm_dunno
	default aapcs-linux	if BR2_arm_dunno
	default iwmmxt		if BR2_iwmmxt
	default 32		if BR2_mipsel && BR2_OABI
	default n32		if BR2_mipsel && BR2_EABI
	default o64		if BR2_mips && BR2_OABI
	default 64		if BR2_mips && BR2_ABI64
	default eabi		if BR2_mips && BR2_EABI
	default mmixware	if BR2_mmix && BR2_ABI_native
	default gnu		if BR2_mmix && !BR2_ABI_native
	default altivec		if BR2_powerpc && BR2_ABI_altivec
	default no-altivec	if BR2_powerpc && BR2_ABI_no-altivec
	default spe		if BR2_powerpc && BR2_ABI_spe
	default no-spe		if BR2_powerpc && BR2_ABI_no-spe
	default ibmlongdouble	if BR2_powerpc && BR2_ABI_ibmlongdouble
	default ieeelongdouble	if BR2_powerpc && BR2_ABI_ieeelongdouble

menu "Build options"

config BR2_WGET
	string "Wget command"
	default "wget --passive-ftp -nd"

config BR2_SVN
	string "Subversion (svn) checkout command"
	default "svn co"

config BR2_ZCAT
	string "zcat command"
	default "gzip -d -c"
	help
	  Command to be used to extract a gzip'ed file to stdout.
	  zcat is identical to gunzip -c except that the former may
	  not be available on your system.
	  Default is "gzip -d -c"
	  Other possible values include "gunzip -c" or "zcat".

config BR2_BZCAT
	string "bzcat command"
	default "bzcat"
	help
	  Command to be used to extract a bzip2'ed file to stdout.
	  bzcat is identical to bunzip2 -c except that the former may
	  not be available on your system.
	  Default is "bzcat"
	  Other possible values include "bunzip2 -c" or "bzip2 -d -c".

config BR2_TAR_OPTIONS
	string "Tar options"
	default ""
	help
	  Options to pass to tar when extracting the sources.
	  E.g. " -v --exclude='*.svn*'" to exclude all .svn internal files
	  and to be verbose.

config BR2_DL_DIR
	string "Download dir"
	default "$(BASE_DIR)/dl"
	help
	  Directory to store all the source files that we need to fetch.

source	"target/device/Mirrors.in"
	  
config BR2_STAGING_DIR
	string "Toolchain and header file location?"
	default "$(BUILD_DIR)/staging_dir"
	help
	  This is the location where the toolchain will be installed.  The
	  toolchain will not work if it is moved from this location.
	  Therefore, if you wish to package up a uClibc toolchain, it is
	  important that is is set to the final location where the toolchain
	  will be used.

	  Most people will leave this set to the default value of
	  "$(BUILD_DIR)/staging_dir".

config BR2_TOPDIR_PREFIX
	string "Custom build dir prefix"
	default ""
	help
	  Add a custom string to the beginning of the build directories.

	  build_ARCH -> [PREFIX]_build_ARCH
	  toolchain_build_ARCH -> [PREFIX]_toolchain_build_ARCH

config BR2_TOPDIR_SUFFIX
	string "Custom build dir suffix"
	default ""
	help
	  Add a custom string to the end of the build directories.

	  build_ARCH -> build_ARCH_[SUFFIX]
	  toolchain_build_ARCH -> toolchain_build_ARCH_[SUFFIX] 

config BR2_GNU_BUILD_SUFFIX
	string "GNU build hostname suffix"
	default "pc-linux-gnu"
	help
	  The string used to pass to configure scripts via the
	  --build= option.  Just specify the suffix here, the leading
	  arch will be filled in automatically.

	  Here's some copy and paste build host options for you:
	      linux:   pc-linux-gnu
	      cygwin:  pc-cygwin
	      os x:    apple-darwin7 / apple-darwin8

config BR2_GNU_TARGET_SUFFIX
	string "GNU target suffix"
	default "linux-uclibcgnueabi" if BR2_ARM_EABI
	default "linux-uclibc"
	help
	  The string used to pass to configure scripts via the
	  --target= option.  Just specify the suffix here, the leading
	  arch will be filled in automatically.

	  Most users will want to stick with the default setting, though
	  other users (most notably ARM EABI) like to add on to this in
	  order to stay in line with gcc conventions.

	  Default options are:
	      linux-uclibcgnueabi for ARM EABI
	      linux-uclibc for the rest

config BR2_JLEVEL
	int "Number of jobs to run simultaneously"
	default "1"
	help
	  Number of jobs to run simultaneously

config BR2_PREFER_IMA
	bool "prefer IMA compiles"
	default n
	help
	  Where possible, compile package with Inter Module Analysis.
	  This potentially uses alot of system resources on your compile
	  host with the benefit of creating smaller binaries for the target.

	  If unsure, say No.

	  WARNING: This is highly experimental at the moment.

config BR2_DEPRECATED
	bool "Show packages that are deprecated or obsolete"
	default n
	help
	  This option hides outdated/obsolete versions of packages.

config BR2_USE_WCHAR
	bool "Show packages that are require WCHAR support"
	default y
	help
	  This option hides packages which cannot be built without WCHAR.

config BR2_PREFER_STATIC_LIB
	bool "prefer static libraries"
	default n
	help
	  Where possible, build and use static libraries for the target.
	  This potentially increases your code size and should only be
	  used if you know what you do.
	  The default is to build dynamic libraries and use those on
	  the target filesystem.

	  WARNING: This is highly experimental at the moment.

endmenu

source "toolchain/Config.in"

source "package/Config.in"

source "target/Config.in"


