Browse Source
This commit adds support for the avr-libc C library. According to the project page at http://www.nongnu.org/avr-libc , the avr-libc package provides a subset of the standard C library for Atmel AVR 8-bit RISC microcontrollers. In addition, the library provides the basic startup code needed by most applications. Support for this library in crosstool-ng is only enabled for the AVR 8-bit target. The avr-libc manual and most distributions build the AVR 8-bit gcc toolchain with the "avr" (non-canonical) target. Some experimentation also led to the conclusion that other (canonical) targets are not very well supported, so we force the "avr" target for crosstool-ng as well. The manual also recommends building avr-libc after the final gcc build. To accomplish this with crosstool-ng, a new do_libc_post_cc step is added, in which currently only avr-libc performs its build, and is a no-op for the other libc options. Signed-off-by: Erico Nunes <nunes.erico@gmail.com>1.22

12 changed files with 165 additions and 1 deletions
@ -0,0 +1,51 @@
|
||||
# avr-libc options |
||||
|
||||
## depends on ARCH_avr |
||||
## depends on ! LINUX && ! WINDOWS && BARE_METAL |
||||
## |
||||
## select LIBC_SUPPORT_THREADS_NONE |
||||
## |
||||
## help The AVR Libc package provides a subset of the standard C library for |
||||
## help Atmel AVR 8-bit RISC microcontrollers. In addition, the library |
||||
## help provides the basic startup code needed by most applications. |
||||
|
||||
choice |
||||
bool |
||||
prompt "avr-libc version" |
||||
# Don't remove next line |
||||
# CT_INSERT_VERSION_BELOW |
||||
|
||||
config LIBC_AVR_LIBC_V_1_8_1 |
||||
bool |
||||
prompt "1.8.1" |
||||
|
||||
config LIBC_AVR_LIBC_V_1_8_0 |
||||
bool |
||||
prompt "1.8.0" |
||||
|
||||
config LIBC_AVR_LIBC_CUSTOM |
||||
bool |
||||
prompt "Custom avr-libc" |
||||
depends on EXPERIMENTAL |
||||
|
||||
endchoice |
||||
|
||||
if LIBC_AVR_LIBC_CUSTOM |
||||
|
||||
config LIBC_AVR_LIBC_CUSTOM_LOCATION |
||||
string |
||||
prompt "Full path to custom avr-libc source" |
||||
default "" |
||||
help |
||||
Enter the path to the directory (or tarball) of your source for avr-libc, |
||||
or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/avr-libc |
||||
|
||||
endif # LIBC_AVR_LIBC_CUSTOM |
||||
|
||||
config LIBC_VERSION |
||||
string |
||||
# Don't remove next line |
||||
# CT_INSERT_VERSION_STRING_BELOW |
||||
default "1.8.1" if LIBC_AVR_LIBC_V_1_8_1 |
||||
default "1.8.0" if LIBC_AVR_LIBC_V_1_8_0 |
||||
default "custom" if LIBC_AVR_LIBC_CUSTOM |
@ -0,0 +1,8 @@
|
||||
# avr-libc second-part options |
||||
|
||||
config LIBC_AVR_LIBC_EXTRA_CONFIG_ARRAY |
||||
string |
||||
prompt "Extra config for avr-libc" |
||||
default "" |
||||
help |
||||
Extra flags to pass onto ./configure when configuring the avr-libc. |
@ -0,0 +1,71 @@
|
||||
# This file adds functions to build the avr-libc C library |
||||
|
||||
do_libc_get() { |
||||
local libc_src |
||||
|
||||
libc_src="http://download.savannah.gnu.org/releases/avr-libc" |
||||
|
||||
if [ "${CT_LIBC_AVR_LIBC_CUSTOM}" = "y" ]; then |
||||
CT_GetCustom "avr-libc" "${CT_LIBC_VERSION}" \ |
||||
"${CT_LIBC_AVR_LIBC_CUSTOM_LOCATION}" |
||||
else # ! custom location |
||||
CT_GetFile "avr-libc-${CT_LIBC_VERSION}" "${libc_src}" |
||||
fi # ! custom location |
||||
} |
||||
|
||||
do_libc_extract() { |
||||
# If using custom directory location, nothing to do. |
||||
if [ "${CT_LIBC_AVR_LIBC_CUSTOM}" = "y" ]; then |
||||
# Abort if the custom directory is not found. |
||||
if ! [ -d "${CT_SRC_DIR}/avr-libc-${CT_LIBC_VERSION}" ]; then |
||||
CT_Abort "Directory not found: ${CT_SRC_DIR}/avr-libc-${CT_LIBC_VERSION}" |
||||
fi |
||||
|
||||
return 0 |
||||
fi |
||||
|
||||
CT_Extract "avr-libc-${CT_LIBC_VERSION}" |
||||
CT_Patch "avr-libc" "${CT_LIBC_VERSION}" |
||||
} |
||||
|
||||
do_libc_check_config() { |
||||
: |
||||
} |
||||
|
||||
do_libc_configure() { |
||||
CT_DoLog EXTRA "Configuring C library" |
||||
|
||||
CT_DoExecLog CFG \ |
||||
./configure \ |
||||
--build=${CT_BUILD} \ |
||||
--host=${CT_TARGET} \ |
||||
--prefix=${CT_PREFIX_DIR} \ |
||||
"${CT_LIBC_AVR_LIBC_EXTRA_CONFIG_ARRAY[@]}" |
||||
} |
||||
|
||||
do_libc_start_files() { |
||||
: |
||||
} |
||||
|
||||
do_libc() { |
||||
: |
||||
} |
||||
|
||||
do_libc_post_cc() { |
||||
CT_DoStep INFO "Installing C library" |
||||
|
||||
CT_DoLog EXTRA "Copying sources to build directory" |
||||
CT_DoExecLog ALL cp -av "${CT_SRC_DIR}/avr-libc-${CT_LIBC_VERSION}" \ |
||||
"${CT_BUILD_DIR}/build-libc-post-cc" |
||||
cd "${CT_BUILD_DIR}/build-libc-post-cc" |
||||
|
||||
do_libc_configure |
||||
|
||||
CT_DoLog EXTRA "Building C library" |
||||
CT_DoExecLog ALL make ${JOBSFLAGS} |
||||
|
||||
CT_DoLog EXTRA "Installing C library" |
||||
CT_DoExecLog ALL make install |
||||
|
||||
CT_EndStep |
||||
} |
Loading…
Reference in new issue