#

mainmenu "Buildroot2 Configuration"

config BR2_HAVE_DOT_CONFIG
	bool
	default y

config BR2_VERSION
	string
	default "2009.02-svn"

source "target/Config.in.arch"
source "target/device/Config.in"

menu "Build options"

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

config BR2_SVN_CO
	string "Subversion (svn) command to download source tree"
	default "svn co"

config BR2_SVN_UP
	string "Subversion (svn) command to update source tree"
	default "svn up"

config BR2_GIT
	string "Git command to download source tree"
	default "git clone"

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.
	  If the Linux shell environment has defined the BUILDROOT_DL_DIR
	  environment variable, then this overrides this configuration item.

	  The default is $(BASE_DIR)/dl

source	"target/device/Config.in.mirrors"

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_FPU_SUFFIX
	bool "Add '_nofpu' suffix for softfloat toolchains"
	help
	  If the toolchain is configured to use softfloat, then
	  the "_nofpu" suffix will be added to the toolchain build
	  directory name and to any rootfs image name

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_ROOTFS_PREFIX
	string "Custom root fs prefix"
	default "rootfs"
	help
	  Add a custom string to the beginning of the root file system name.

config BR2_ROOTFS_SUFFIX
	string "Custom root fs suffix"
	default ""
	help
	  Add a custom string to the end of the root file system name.

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
	      gnuhurd-uclibc for the hurd

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"
	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"
	help
	  This option hides outdated/obsolete versions of packages.

config BR2_RECENT
	bool "Show packages that are of the latest major version"
	default y
	help
	  This option show recent versions of packages.

config BR2_CONFIG_CACHE
	bool "Use a central configure cache file"
	help
	  This determines if a central config cache is used by
	  packages, reducing the configure time for packages as each
	  one caches its findings.

config BR2_ENABLE_DEBUG
	bool "build packages with debugging symbols"
	select BR2_PACKAGE_GDB_SERVER
	help
	  Build packages with debugging symbols
	  enabled

if BR2_ENABLE_DEBUG
choice
	prompt "gcc debug level"
	default BR2_DEBUG_2
	help
	  Set the debug level for gcc

config BR2_DEBUG_1
	bool "debug level 1"
	help
	  Debug level 1 produces minimal information, enough
	  for making backtraces in parts of the program that
	  you don't plan to debug. This includes descriptions
	  of functions and external variables, but no information
	  about local variables and no line numbers.

config BR2_DEBUG_2
	bool "debug level 2"
	help
	  The default gcc debug level is 2

config BR2_DEBUG_3
	bool "debug level 3"
	help
	  Level 3 includes extra information, such as all the
	  macro definitions present in the program. Some debuggers
	  support macro expansion when you use -g3.
endchoice
endif

choice
	prompt "strip"
	default BR2_STRIP_strip
	help
	  Select whether to strip binaries and libraries for the target
	  or not.
	  strip   is the normal strip command
	  sstrip  is a strip that discards more than the normal strip
	  none    do not strip (only for debugging!)

config BR2_STRIP_strip
	bool "strip"
	depends on !BR2_ENABLE_DEBUG
	help
	  strip   is the normal strip command

config BR2_STRIP_sstrip
	bool "sstrip"
	select BR2_PACKAGE_SSTRIP_HOST
	depends on !BR2_ENABLE_DEBUG
	help
	  sstrip  is a strip that discards more than the normal strip

config BR2_STRIP_none
	bool "none"
	help
	  none    do not strip (only for debugging!)
endchoice

choice
	prompt "gcc optimization level"
	default BR2_OPTIMIZE_S
	help
	  Set the optimization level for gcc

config BR2_OPTIMIZE_0
	bool "optimization level 0"
	depends on !BR2_PACKAGE_LINUX
	help
	  Do not optimize. This is the default.

config BR2_OPTIMIZE_1
	bool "optimization level 1"
	depends on !BR2_PACKAGE_LINUX
	help
	  Optimize. Optimizing compilation takes somewhat more time,
	  and a lot more memory for a large function. With -O, the
	  compiler tries to reduce code size and execution time,
	  without performing any optimizations that take a great deal
	  of compilation time. -O turns on the following optimization
	  flags: -fdefer-pop -fdelayed-branch -fguess-branch-probability
	  -fcprop-registers -floop-optimize -fif-conversion
	  -fif-conversion2 -ftree-ccp -ftree-dce -ftree-dominator-opts
	  -ftree-dse -ftree-ter -ftree-lrs -ftree-sra -ftree-copyrename
	  -ftree-fre -ftree-ch -funit-at-a-time -fmerge-constants
	  -O also turns on -fomit-frame-pointer on machines where doing
	  so does not interfere with debugging.

config BR2_OPTIMIZE_2
	bool "optimization level 2"
	help
	  Optimize even more. GCC performs nearly all supported optimizations
	  that do not involve a space-speed tradeoff. The compiler does not
	  perform loop unrolling or function inlining when you specify -O2.
	  As compared to -O, this option increases both compilation time and
	  the performance of the generated code. -O2 turns on all optimization
	  flags specified by -O. It also turns on the following optimization
	  flags: -fthread-jumps -fcrossjumping -foptimize-sibling-calls
	  -fcse-follow-jumps -fcse-skip-blocks -fgcse  -fgcse-lm
	  -fexpensive-optimizations -fstrength-reduce -frerun-cse-after-loop
	  -frerun-loop-opt -fcaller-saves -fpeephole2 -fschedule-insns
	  -fschedule-insns2 -fsched-interblock -fsched-spec -fregmove
	  -fstrict-aliasing -fdelete-null-pointer-checks -freorder-blocks
	  -freorder-functions -falign-functions -falign-jumps -falign-loops
	  -falign-labels -ftree-vrp -ftree-pre
	  Please note the warning under -fgcse about invoking -O2 on programs
	  that use computed gotos.

config BR2_OPTIMIZE_3
	bool "optimization level 3"
	help
	  Optimize yet more. -O3 turns on all optimizations specified by -O2
	  and also turns on the -finline-functions, -funswitch-loops and
	  -fgcse-after-reload options.

config BR2_OPTIMIZE_S
	bool "optimize for size"
	help
	  Optimize for size. -Os enables all -O2 optimizations that do not
	  typically increase code size. It also performs further optimizations
	  designed to reduce code size. -Os disables the following optimization
	  flags: -falign-functions -falign-jumps -falign-loops -falign-labels
	  -freorder-blocks -freorder-blocks-and-partition -fprefetch-loop-arrays
	  -ftree-vect-loop-version

endchoice

config BR2_PREFER_STATIC_LIB
	bool "prefer static libraries"
	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.

config BR2_HAVE_MANPAGES
	bool "manpages on the target"
	help
	  Leave the manpages on the target.
	  If you say n here, your target will not contain any
	  manpage.

config BR2_HAVE_INFOPAGES
	bool "infopages on the target"
	help
	  Leave the infopages on the target.
	  If you say n here, your target will not contain any
	  infopage.

config BR2_HAVE_DOCUMENTATION
	bool "documentation on the target"
	help
	  Leave the documentation on the target.
	  If you say n here, your target will not contain any
	  documentation.

config BR2_HAVE_DEVFILES
	bool "development files in target filesystem"
	help
	  Install headers and static libraries in the
	  target filesystem

source package/gnuconfig/Config.in

endmenu

source "toolchain/Config.in"

source "package/Config.in"

source "target/Config.in"
