[Buildroot] [PATCH 6/6] toolchain: Clarify configuration option files organization

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Tue Jan 12 23:27:25 UTC 2010


Instead of a mess of Config.in, Config.in.1 and Config.in.2 files, the
organization is now as follows:

 * Config.in only provides the Buildroot toolchain vs. external
   toolchain choices. Depending on this, it sources either
   Config.in.buildroot or Config.in.external files

 * Config.in.buildroot provides the Buildroot toolchain configuration
   options

 * Config.in.external provides the external toolchain configuration
   options

Options such as RPC, IPv6, large file, wide char, locale support,
program invocation and so forth are duplicated in Buildroot and
external toolchain support. This allows to provide an option label
that really matches what the option is for.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
---
 toolchain/Config.in                            |   16 +--
 toolchain/Config.in.1                          |    9 --
 toolchain/{Config.in.2 => Config.in.buildroot} |   60 ++++++------
 toolchain/Config.in.external                   |  128 ++++++++++++++++++++++++
 toolchain/external-toolchain/Config.in         |   22 ----
 toolchain/external-toolchain/Config.in.2       |   17 ---
 6 files changed, 165 insertions(+), 87 deletions(-)
 delete mode 100644 toolchain/Config.in.1
 rename toolchain/{Config.in.2 => Config.in.buildroot} (80%)
 create mode 100644 toolchain/Config.in.external
 delete mode 100644 toolchain/external-toolchain/Config.in
 delete mode 100644 toolchain/external-toolchain/Config.in.2

diff --git a/toolchain/Config.in b/toolchain/Config.in
index ee34e03..c3052fc 100644
--- a/toolchain/Config.in
+++ b/toolchain/Config.in
@@ -16,16 +16,12 @@ config BR2_TOOLCHAIN_EXTERNAL
 
 endchoice
 
-source "toolchain/Config.in.1"
-source "toolchain/external-toolchain/Config.in"
+if BR2_TOOLCHAIN_BUILDROOT
+source "toolchain/Config.in.buildroot"
+endif
 
-# we want gdb config in the middle of both source and external
-# toolchains, but mconf won't let us source the same file twice,
-# so put it here instead
-source "toolchain/gdb/Config.in"
-comment "Common Toolchain Options"
-
-source "toolchain/Config.in.2"
-source "toolchain/external-toolchain/Config.in.2"
+if BR2_TOOLCHAIN_EXTERNAL
+source "toolchain/Config.in.external"
+endif
 
 endmenu
diff --git a/toolchain/Config.in.1 b/toolchain/Config.in.1
deleted file mode 100644
index 5c26858..0000000
--- a/toolchain/Config.in.1
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-
-if BR2_TOOLCHAIN_BUILDROOT
-source "toolchain/kernel-headers/Config.in"
-source "toolchain/uClibc/Config.in"
-source "toolchain/binutils/Config.in"
-source "toolchain/gcc/Config.in"
-source "toolchain/ccache/Config.in"
-endif
diff --git a/toolchain/Config.in.2 b/toolchain/Config.in.buildroot
similarity index 80%
rename from toolchain/Config.in.2
rename to toolchain/Config.in.buildroot
index e404657..70ac3ec 100644
--- a/toolchain/Config.in.2
+++ b/toolchain/Config.in.buildroot
@@ -1,43 +1,58 @@
-#
+source "toolchain/kernel-headers/Config.in"
+source "toolchain/uClibc/Config.in"
+source "toolchain/binutils/Config.in"
+source "toolchain/gcc/Config.in"
+source "toolchain/gdb/Config.in"
+source "toolchain/ccache/Config.in"
+
+comment "Toolchain options"
+
 config BR2_LARGEFILE
 	bool "Enable large file (files > 2 GB) support?"
 	depends on !BR2_cris
 	help
-	  If you are building your own toolchain and you want to 
+	  If you are building your own toolchain and you want to
 	  support files larger than 2GB then enable this option.
-	  If you have an external binary toolchain that has been 
-	  built with large file support (files > 2GB) then enable 
-	  this option.
 
 config BR2_INET_IPV6
 	bool "Enable IPv6"
 	help
-	  If you are building your own toolchain and you want to 
+	  If you are building your own toolchain and you want to
 	  enable IPV6 support then enable this option.
-	  If you have an external binary toolchain that has been 
-	  built with IPV6 support then enable this option.
 
 config BR2_INET_RPC
 	bool "Enable RPC"
 	help
 	  Enable RPC. RPC support is needed for nfs.
-	  If you are building your own toolchain and you want to 
+	  If you are building your own toolchain and you want to
 	  enable RPC support then enable this option.
-	  If you have an external binary toolchain that has been 
-	  built with RPC support then enable this option.
 
 config BR2_ENABLE_LOCALE
 	bool "Enable toolchain locale/i18n support?"
 	select BR2_USE_WCHAR
 	help
-	  If you are building your own toolchain and you want to 
+	  If you are building your own toolchain and you want to
 	  enable locale/i18n support then enable this option.
-	  If you have an external binary toolchain that has been 
-	  built with locale/i18n support then enable this option.
+
+config BR2_USE_WCHAR
+	bool "Enable WCHAR support"
+	help
+	  If you are building your own toolchain and you want to
+	  enable WCHAR support then enable this option.
+
+config BR2_PROGRAM_INVOCATION
+	bool "Enable 'program invocation name'"
+	help
+	  Support for the GNU-specific program_invocation_name and
+	  program_invocation_short_name strings.  Some GNU packages
+	  (like tar and coreutils) utilize these for extra useful
+	  output, but in general are not required.
+	  If you have an external binary toolchain that has been built
+	  with program invocation support then enable this option.
 
 config BR2_ENABLE_LOCALE_PREGENERATED
 	bool "Use pregenerated locale data?"
-	depends on BR2_ENABLE_LOCALE && BR2_TOOLCHAIN_BUILDROOT && BROKEN # tarball missing
+	depends on BR2_ENABLE_LOCALE && BROKEN # tarball missing
 	help
 	  Instead of generating the locale data locally you can optionally
 	  download a pregenerated set of locales.
@@ -87,16 +102,6 @@ choice
 		bool "Native POSIX Threading (NPTL)"
 endchoice
 
-config BR2_PROGRAM_INVOCATION
-	bool "Enable 'program invocation name'"
-	help
-	  Support for the GNU-specific program_invocation_name and
-	  program_invocation_short_name strings.  Some GNU packages
-	  (like tar and coreutils) utilize these for extra useful
-	  output, but in general are not required.
-	  If you have an external binary toolchain that has been built
-	  with program invocation support then enable this option.
-
 config BR2_GCC_CROSS_CXX
 	bool
 	help
@@ -107,7 +112,7 @@ config BR2_GCC_CROSS_CXX
 
 config BR2_INSTALL_LIBSTDCPP
 	bool "Build/install c++ compiler and libstdc++?"
-	select BR2_LARGEFILE if (!BR2_GCC_SUPPORTS_SYSROOT && BR2_TOOLCHAIN_BUILDROOT)
+	select BR2_LARGEFILE if !BR2_GCC_SUPPORTS_SYSROOT
 	select BR2_GCC_CROSS_CXX
 	help
 	  If you are building your own toolchain and want to build and install
@@ -116,7 +121,6 @@ config BR2_INSTALL_LIBSTDCPP
 	  support and you want to use the compiler / library then you need 
 	  to select this option.
 
-if BR2_TOOLCHAIN_BUILDROOT
 source "toolchain/elf2flt/Config.in"
 source "toolchain/mklibs/Config.in"
 source "toolchain/sstrip/Config.in"
@@ -137,5 +141,3 @@ config BR2_CROSS_TOOLCHAIN_TARGET_UTILS
 
 	  Answer Y if you want these apps (if built) copied into the
 	  cross toolchain dir under <arch>-linux-uclibc/target_utils/.
-
-endif
diff --git a/toolchain/Config.in.external b/toolchain/Config.in.external
new file mode 100644
index 0000000..060b9bb
--- /dev/null
+++ b/toolchain/Config.in.external
@@ -0,0 +1,128 @@
+config BR2_TOOLCHAIN_EXTERNAL_PATH
+	string "External toolchain path"
+	default "/path/to/staging_dir/usr"
+	help
+	  Path to where the external toolchain is installed.
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+	string "External toolchain prefix"
+	default "$(ARCH)-linux"
+	help
+	  This the the external toolchain prefix. For example:
+	    armeb-unknown-linux-gnu, mipsel-unknown-linux-gnu, etc.
+
+choice
+	prompt "External toolchain C library"
+	default BR2_TOOLCHAIN_EXTERNAL_UCLIBC
+
+config BR2_TOOLCHAIN_EXTERNAL_UCLIBC
+	bool "uClibc"
+
+config BR2_TOOLCHAIN_EXTERNAL_GLIBC
+	bool "glibc"
+
+endchoice
+
+#
+# Toolchain options with uClibc
+#
+if BR2_TOOLCHAIN_EXTERNAL_UCLIBC
+
+comment "External toolchain features"
+
+config BR2_LARGEFILE
+	bool "Toolchain has large file (files > 2 GB) support?"
+	depends on !BR2_cris
+	help
+	  Select this option if your external toolchain has a uClibc
+	  configured with large file support.
+
+config BR2_INET_IPV6
+	bool "Toolchain has IPv6?"
+	help
+	  Select this option if your external toolchain has a uClibc
+	  configured with IPv6 support.
+
+config BR2_INET_RPC
+	bool "Toolchain has RPC?"
+	help
+	  Select this option if your external toolchain has a uClibc
+	  configured with RPC support.
+
+config BR2_USE_WCHAR
+	bool "Toolchain has WCHAR support?"
+	help
+	  Select this option if your external toolchain has a uClibc
+	  configured with wide char support.
+
+config BR2_ENABLE_LOCALE
+	bool "Toolchain has locale/i18n support?"
+	select BR2_USE_WCHAR
+	help
+	  Select this option if your external toolchain has a uClibc
+	  configured with locale support.
+
+config BR2_PROGRAM_INVOCATION
+	bool "Toolchain supports program invocation name?"
+	help
+	  Select this option if your external toolchain has a uClibc
+	  configured with program invocation support.
+
+endif
+
+#
+# Toolchain options with glibc
+#
+
+if BR2_TOOLCHAIN_EXTERNAL_GLIBC
+
+config BR2_LARGEFILE
+       bool
+       default y
+
+config BR2_INET_IPV6
+       bool
+       default y
+
+config BR2_INET_RPC
+       bool
+       default y
+
+config BR2_ENABLE_LOCALE
+       bool
+       default y
+
+config BR2_USE_WCHAR
+       bool
+       default y
+
+config BR2_PROGRAM_INVOCATION
+       bool
+       default y
+
+endif
+
+#
+# Common toolchain options
+#
+
+comment "Integration options"
+
+config BR2_GCC_CROSS_CXX
+	bool
+
+config BR2_INSTALL_LIBSTDCPP
+	bool "Install libstdc++?"
+	select BR2_LARGEFILE
+	select BR2_GCC_CROSS_CXX
+	help
+	  If you have an external toolchain that has been built with C++
+	  support and you want to use the compiler / library then you need
+	  to select this option.
+
+config BR2_TOOLCHAIN_EXTERNAL_STRIP
+        bool
+        default y
+        prompt "Strip shared libraries"
+	help
+	  Strip shared libraries copied from the external toolchain.
diff --git a/toolchain/external-toolchain/Config.in b/toolchain/external-toolchain/Config.in
deleted file mode 100644
index efc8378..0000000
--- a/toolchain/external-toolchain/Config.in
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-
-if BR2_TOOLCHAIN_EXTERNAL
-choice
-	prompt "External toolchain C library"
-	default BR2_TOOLCHAIN_EXTERNAL_UCLIBC
-
-config BR2_TOOLCHAIN_EXTERNAL_UCLIBC
-	bool "uClibc"
-
-config BR2_TOOLCHAIN_EXTERNAL_GLIBC
-	bool "glibc"
-
-endchoice
-
-config BR2_TOOLCHAIN_EXTERNAL_STRIP
-        bool
-        default y
-        prompt "Strip shared libraries"
-	help
-	  Strip shared libraries copied from the external toolchain.
-endif
diff --git a/toolchain/external-toolchain/Config.in.2 b/toolchain/external-toolchain/Config.in.2
deleted file mode 100644
index 489558c..0000000
--- a/toolchain/external-toolchain/Config.in.2
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-
-if BR2_TOOLCHAIN_EXTERNAL
-config BR2_TOOLCHAIN_EXTERNAL_PATH
-	string "External toolchain path"
-	default "/path/to/staging_dir/usr"
-	help
-	  Path to where the external toolchain is installed.
-
-config BR2_TOOLCHAIN_EXTERNAL_PREFIX
-	string "External toolchain prefix"
-	default "$(ARCH)-linux"
-	help
-	  This the the external toolchain prefix. For example:
-	    armeb-unknown-linux-gnu, mipsel-unknown-linux-gnu, etc.
-
-endif
-- 
1.6.3.3



More information about the buildroot mailing list