summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2009-10-21 20:51:39 (GMT)
committerYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2009-10-21 20:51:39 (GMT)
commit68b9b30f6bdcfab194408b06a3fcbc6363fb7ede (patch)
tree9b285dc55c10bf807eb8e9ac33626c95b8ff8c7b
parentf5cfdc13690648af79d48d5be4f851877c353886 (diff)
libc/newlib: allow using newlib with archs other than avr32
-rw-r--r--config/libc.in13
-rw-r--r--config/libc/newlib.in16
-rw-r--r--config/libc/none.in14
-rw-r--r--scripts/build/arch/arm.sh2
-rw-r--r--scripts/functions2
5 files changed, 32 insertions, 15 deletions
diff --git a/config/libc.in b/config/libc.in
index c3d64ae..42fe272 100644
--- a/config/libc.in
+++ b/config/libc.in
@@ -4,8 +4,6 @@ menu "C-library"
config LIBC
string
- default "newlib" if BARE_METAL && ARCH_avr32 && EXPERIMENTAL
- default "none" if BARE_METAL
config LIBC_VERSION
string
@@ -23,8 +21,6 @@ config LIBC_VERSION
source config.gen/libc.in
-comment "Common C library options"
-
config LIBC_SUPPORT_NPTL
bool
default n
@@ -37,7 +33,12 @@ config THREADS
string
default "nptl" if THREADS_NPTL
default "linuxthreads" if THREADS_LINUXTHREADS
- default "none" if THREADS_NONE
+ default "none" if THREADS_NONE || LIBC_none
+# No C library, no threads!
+
+if ! LIBC_none
+
+comment "Common C library options"
choice
bool
@@ -62,4 +63,6 @@ config THREADS_NONE
endchoice
+endif # ! LIBC_none
+
endmenu
diff --git a/config/libc/newlib.in b/config/libc/newlib.in
index ad92112..61803d7 100644
--- a/config/libc/newlib.in
+++ b/config/libc/newlib.in
@@ -1,14 +1,14 @@
# newlib options
-# depends on EXPERIMENTAL
+# depends on EXPERIMENTAL && BARE_METAL
config LIBC_newlib
help
- Newlib is a C library intended for use on embedded systems. It is a
- conglomeration of several library parts, all under free software
- licenses that make them easily usable on embedded products. Newlib
- is only available in source form. It can be compiled for a wide
- array of processors, and will usually work on any architecture with
- the addition of a few low-level routines.
+ Newlib is a C library intended for use on embedded systems. It is a
+ conglomeration of several library parts, all under free software
+ licenses that make them easily usable on embedded products. Newlib
+ is only available in source form. It can be compiled for a wide
+ array of processors, and will usually work on any architecture with
+ the addition of a few low-level routines.
choice
bool
@@ -31,10 +31,10 @@ config LIBC_VERSION
config ATMEL_AVR32_HEADERS
bool
prompt "Install Atmel AVR32 headers"
+ depends on ARCH_avr32
default y
help
Install Atmel AVR32 headers for native AVR32 development. Most
AVR32 MCU devices are supported.
If you do native AVR32 development you want to say 'Y' here.
-
diff --git a/config/libc/none.in b/config/libc/none.in
new file mode 100644
index 0000000..9507007
--- /dev/null
+++ b/config/libc/none.in
@@ -0,0 +1,14 @@
+# Dummy config file to not use a C library *at all*
+# depends on BARE_METAL
+
+config LIBC_none
+ help
+ Do not use a C library.
+
+ This is usefull if your project is self-contained, does not rely on
+ an external C library, and provides all the necessary bits.
+
+ Most probably usefull to bootloaders, as they generally don't depend
+ on the C library.
+
+ If unsure: do *not* choose that, and use another option in the choice.
diff --git a/scripts/build/arch/arm.sh b/scripts/build/arch/arm.sh
index fafd871..a551c61 100644
--- a/scripts/build/arch/arm.sh
+++ b/scripts/build/arch/arm.sh
@@ -8,7 +8,7 @@ CT_DoArchTupleValues() {
case "${CT_LIBC},${CT_ARCH_ARM_EABI}" in
*glibc,y) CT_TARGET_SYS=gnueabi;;
uClibc,y) CT_TARGET_SYS=uclibcgnueabi;;
- none,y) CT_TARGET_SYS=eabi;;
+ *,y) CT_TARGET_SYS=eabi;;
esac
# In case we're EABI, do *not* specify any ABI!
diff --git a/scripts/functions b/scripts/functions
index bbafeef..f6cbdf1 100644
--- a/scripts/functions
+++ b/scripts/functions
@@ -696,9 +696,9 @@ CT_DoBuildTargetTuple() {
# Set defaults for the system part of the tuple. Can be overriden
# by architecture-specific values.
case "${CT_LIBC}" in
- none) CT_TARGET_SYS=elf;;
*glibc) CT_TARGET_SYS=gnu;;
uClibc) CT_TARGET_SYS=uclibc;;
+ *) CT_TARGET_SYS=elf;;
esac
# Transform the ARCH into a kernel-understandable ARCH