@@ -85,6 +85,13 @@
help
Selecting this will export the trunk of the eglibc subversion repository.
+config LIBC_EGLIBC_CUSTOM
+ bool
+ prompt "Custom eglibc"
+ depends on EXPERIMENTAL
+ select LIBC_EGLIBC_2_16_or_later
+ select LIBC_CUSTOM
+
endchoice
config LIBC_VERSION
@@ -104,6 +111,7 @@
default "2_6" if LIBC_EGLIBC_V_2_6
default "2_5" if LIBC_EGLIBC_V_2_5
default "trunk" if LIBC_EGLIBC_V_TRUNK
+ default "custom" if LIBC_EGLIBC_CUSTOM
config LIBC_EGLIBC_2_16_or_later
bool
@@ -140,6 +148,22 @@
config LIBC_EGLIBC_HAS_PKGVERSION_BUGURL
bool
+config LIBC_CUSTOM
+ bool
+
+if LIBC_EGLIBC_CUSTOM
+
+config LIBC_EGLIBC_CUSTOM_LOCATION
+ string
+ prompt "full path to custom eglibc source"
+ default ""
+ help
+ Enter the path to the directory (or tarball) of your source for eglibc,
+ or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/eglibc
+
+endif # LIBC_EGLIBC_CUSTOM
+if ! LIBC_EGLIBC_CUSTOM
+
if CONFIGURE_has_svn
config EGLIBC_REVISION
@@ -189,6 +213,7 @@
comment "otherwise you won't be able to download eglibc"
endif # ! CONFIGURE_has_svn
+endif # ! LIBC_EGLIBC_CUSTOM
config EGLIBC_OPT_SIZE
bool
@@ -9,34 +9,6 @@
choice
bool
- prompt "Retrieval method"
- default LIBC_GLIBC_TARBALL
-
-config LIBC_GLIBC_TARBALL
- bool
- prompt "Released tarball"
- help
- Until end of Februrary 2009, there was no tarball for glibc releases
- 2.8 and later. This was intentional.
-
- Then, all of a sudden, tarballs for those releases have appeared at the
- traditional download place (ftp.gnu.org).
-
- Some of the glibc people argue that fixes are committed to the maintenance
- branch, and thus it is the best plac e to retrieve the glibc from.
- On the other hand, it might be preferable to always generate a toolchain
- using a known code-base, so the toolchain can be reproducible.
-
- For version prior to 2.8, tarballs were readily available.
-
- If you want your toolchain to really be reproducible, say 'Y' here.
- If you can live with a moving code-base, look at the other choice
- entries, below.
-
-endchoice
-
-choice
- bool
prompt "glibc version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
@@ -109,8 +81,60 @@
depends on OBSOLETE
select LIBC_SUPPORT_LINUXTHREADS
+config LIBC_GLIBC_CUSTOM
+ bool
+ prompt "Custom glibc"
+ depends on EXPERIMENTAL
+ select LIBC_CUSTOM
+
endchoice
+config LIBC_CUSTOM
+ bool
+
+if LIBC_GLIBC_CUSTOM
+
+config LIBC_GLIBC_CUSTOM_LOCATION
+ string
+ prompt "full path to custom glibc source"
+ default ""
+ help
+ Enter the path to the directory (or tarball) of your source for glibc,
+ or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/glibc
+
+endif # LIBC_GLIBC_CUSTOM
+if ! LIBC_GLIBC_CUSTOM
+
+choice
+ bool
+ prompt "Retrieval method"
+ default LIBC_GLIBC_TARBALL
+
+config LIBC_GLIBC_TARBALL
+ bool
+ prompt "Released tarball"
+ help
+ Until end of Februrary 2009, there was no tarball for glibc releases
+ 2.8 and later. This was intentional.
+
+ Then, all of a sudden, tarballs for those releases have appeared at the
+ traditional download place (ftp.gnu.org).
+
+ Some of the glibc people argue that fixes are committed to the maintenance
+ branch, and thus it is the best plac e to retrieve the glibc from.
+ On the other hand, it might be preferable to always generate a toolchain
+ using a known code-base, so the toolchain can be reproducible.
+
+ For version prior to 2.8, tarballs were readily available.
+
+ If you want your toolchain to really be reproducible, say 'Y' here.
+ If you can live with a moving code-base, look at the other choice
+ entries, below.
+
+endchoice
+
+endif # ! LIBC_GLIBC_CUSTOM
+
config LIBC_VERSION
string
# Don't remove next line
@@ -130,3 +154,4 @@
default "2.6" if LIBC_GLIBC_V_2_6
default "2.5.1" if LIBC_GLIBC_V_2_5_1
default "2.5" if LIBC_GLIBC_V_2_5
+ default "custom" if LIBC_GLIBC_CUSTOM
@@ -52,8 +52,25 @@
In a word: use the CVS snapshot at your own risk!
+config LIBC_NEWLIB_CUSTOM
+ bool
+ prompt "Custom newlib"
+ depends on EXPERIMENTAL
+
endchoice
+if LIBC_NEWLIB_CUSTOM
+
+config LIBC_NEWLIB_CUSTOM_LOCATION
+ string
+ prompt "full path to custom newlib source"
+ default ""
+ help
+ Enter the path to the directory (or tarball) of your source for newlib,
+ or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/newlib
+
+endif # LIBC_NEWLIB_CUSTOM
+
config LIBC_VERSION
string
prompt "use CVS tag" if LIBC_NEWLIB_CVS
@@ -63,6 +80,7 @@
default "1.19.0" if LIBC_NEWLIB_V_1_19_0
default "1.18.0" if LIBC_NEWLIB_V_1_18_0
default "1.17.0" if LIBC_NEWLIB_V_1_17_0
+ default "custom" if LIBC_NEWLIB_CUSTOM
help
Enter the tag you want to use.
Leave empty to use the 'head' of the repository.
@@ -28,9 +28,19 @@
*) svn_base+="/branches/eglibc-${CT_LIBC_VERSION}";;
esac
- CT_GetSVN "eglibc-${CT_LIBC_VERSION}" \
- "${svn_base}/libc" \
- "${CT_EGLIBC_REVISION:-HEAD}"
+ if [ "${CT_LIBC_CUSTOM}" = "y" ]; then
+ CT_TestAndAbort "Custom eglibc: CT_CUSTOM_LOCATION_ROOT_DIR or CT_LIBC_EGLIBC_CUSTOM_LOCATION must be set." \
+ -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_EGLIBC_CUSTOM_LOCATION}"
+ CT_LIBC_CUSTOM_LOCATION="${CT_LIBC_EGLIBC_CUSTOM_LOCATION}"
+ if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_EGLIBC_CUSTOM_LOCATION}" ]; then
+ CT_LIBC_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/eglibc"
+ fi
+ CT_GetCustom "eglibc-${CT_LIBC_VERSION}" "${CT_LIBC_CUSTOM_LOCATION}"
+ else
+ CT_GetSVN "eglibc-${CT_LIBC_VERSION}" \
+ "${svn_base}/libc" \
+ "${CT_EGLIBC_REVISION:-HEAD}"
+ fi
if [ "${CT_LIBC_LOCALES}" = "y" ]; then
extra_addons+=("localedef")
@@ -5,7 +5,10 @@
local addon
# Extract the main tarball
- CT_Extract "${CT_LIBC}-${CT_LIBC_VERSION}"
+ if [ "${CT_LIBC_CUSTOM}" != "y" \
+ -o ! -d "${CT_LIBC_CUSTOM_LOCATION}" ]; then
+ CT_Extract "${CT_LIBC}-${CT_LIBC_VERSION}"
+ fi
CT_Pushd "${CT_SRC_DIR}/${CT_LIBC}-${CT_LIBC_VERSION}"
CT_Patch nochdir "${CT_LIBC}" "${CT_LIBC_VERSION}"
@@ -20,10 +20,20 @@
addons_list=($(do_libc_add_ons_list " "))
# Main source
- CT_GetFile "glibc-${CT_LIBC_VERSION}" \
- {ftp,http}://ftp.gnu.org/gnu/glibc \
- ftp://gcc.gnu.org/pub/glibc/releases \
- ftp://gcc.gnu.org/pub/glibc/snapshots
+ if [ "${CT_LIBC_CUSTOM}" = "y" ]; then
+ CT_TestAndAbort "Custom glibc: CT_CUSTOM_LOCATION_ROOT_DIR or CT_LIBC_GLIBC_CUSTOM_LOCATION must be set." \
+ -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_GLIBC_CUSTOM_LOCATION}"
+ CT_LIBC_CUSTOM_LOCATION="${CT_LIBC_GLIBC_CUSTOM_LOCATION}"
+ if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_GLIBC_CUSTOM_LOCATION}" ]; then
+ CT_LIBC_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/glibc"
+ fi
+ CT_GetCustom "glibc-${CT_LIBC_VERSION}" "${CT_LIBC_CUSTOM_LOCATION}"
+ else
+ CT_GetFile "glibc-${CT_LIBC_VERSION}" \
+ {ftp,http}://ftp.gnu.org/gnu/glibc \
+ ftp://gcc.gnu.org/pub/glibc/releases \
+ ftp://gcc.gnu.org/pub/glibc/snapshots
+ fi
# C library addons
for addon in "${addons_list[@]}"; do
@@ -20,7 +20,14 @@
libc_src="ftp://sources.redhat.com/pub/newlib"
avr32headers_src="http://dev.doredevelopment.dk/avr32-toolchain/sources"
- if [ -z "${CT_LIBC_NEWLIB_CVS}" ]; then
+ if [ "${CT_LIBC_NEWLIB_CUSTOM}" = "y" ]; then
+ CT_TestAndAbort "Custom newlib: CT_CUSTOM_LOCATION_ROOT_DIR or CT_LIBC_NEWLIB_CUSTOM_LOCATION must be set." \
+ -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_NEWLIB_CUSTOM_LOCATION}"
+ if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_NEWLIB_CUSTOM_LOCATION}" ]; then
+ CT_LIBC_NEWLIB_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/newlib"
+ fi
+ CT_GetCustom "newlib-${CT_LIBC_VERSION}" "${CT_LIBC_NEWLIB_CUSTOM_LOCATION}"
+ elif [ -z "${CT_LIBC_NEWLIB_CVS}" ]; then
CT_GetFile "newlib-${CT_LIBC_VERSION}" ${libc_src}
else
CT_GetCVS "newlib-$(libc_newlib_version)" \
@@ -36,7 +43,10 @@
}
do_libc_extract() {
- CT_Extract "newlib-$(libc_newlib_version)"
+ if [ "${CT_LIBC_NEWLIB_CUSTOM}" != "y" \
+ -o ! -d "${CT_LIBC_NEWLIB_CUSTOM_LOCATION}" ]; then
+ CT_Extract "newlib-$(libc_newlib_version)"
+ fi
CT_Patch "newlib" "$(libc_newlib_version)"
if [ "${CT_ATMEL_AVR32_HEADERS}" = "y" ]; then