diff --git a/config/libc.in b/config/libc.in index c3d64aef..42fe2729 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 ad92112a..61803d74 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 00000000..95070075 --- /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 fafd8715..a551c617 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 bbafeefe..f6cbdf17 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