summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/cc/gcc.in35
-rw-r--r--scripts/build/cc/gcc.sh34
2 files changed, 52 insertions, 17 deletions
diff --git a/config/cc/gcc.in b/config/cc/gcc.in
index 4609c15..de5d511 100644
--- a/config/cc/gcc.in
+++ b/config/cc/gcc.in
@@ -112,10 +112,39 @@ config CC_V_4_3_3
depends on EXPERIMENTAL
select CC_GCC_4_3_or_later
+config CC_V_4_4_0
+ bool
+ prompt "4.4.0 snapshot"
+ depends on EXPERIMENTAL
+ select CC_GCC_4_3_or_later
+ select CC_GCC_4_4_snapshot
+
# CT_INSERT_VERSION_ABOVE
# Don't remove above line!
endchoice
+config CC_GCC_4_3_or_later
+ bool
+ default n
+ select GMP_MPFR
+
+config CC_GCC_4_4_snapshot
+ bool
+ default n
+
+config CC_GCC_4_4_snapshot_date
+ string
+ prompt "Snapshot date"
+ depends on CC_GCC_4_4_snapshot
+ help
+ Enter the snapshot date in the form YYYYMMDD.
+ Snapshots are made every friday, at around 22:30 GMT+1,
+ so look at your calendar to find a suitable date.
+
+ Also, know that crosstool-NG does *not* carry any patch
+ for the gcc-4.4 snapshots. So, you may have to answer
+ 'y' to CUSTOM_PATCH, and set CUSTOM_PATCH_DIR adequately.
+
config CC_VERSION
string
default "3.2.3" if CC_V_3_2_3
@@ -138,14 +167,10 @@ config CC_VERSION
default "4.3.1" if CC_V_4_3_1
default "4.3.2" if CC_V_4_3_2
default "4.3.3" if CC_V_4_3_3
+ default "4.4-" if CC_V_4_4_0
# CT_INSERT_VERSION_STRING_ABOVE
# Don't remove above line!
-config CC_GCC_4_3_or_later
- bool
- default n
- select GMP_MPFR
-
config CC_CXA_ATEXIT
bool
prompt "Use __cxa_atexit"
diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh
index c2debb1..897434a 100644
--- a/scripts/build/cc/gcc.sh
+++ b/scripts/build/cc/gcc.sh
@@ -4,15 +4,19 @@
# Download gcc
do_cc_get() {
+ local version="${CT_CC_VERSION}${CT_CC_GCC_4_4_snapshot_date}"
+
# Ah! gcc folks are kind of 'different': they store the tarballs in
# subdirectories of the same name! That's because gcc is such /crap/ that
# it is such /big/ that it needs being splitted for distribution! Sad. :-(
# Arrgghh! Some of those versions does not follow this convention:
# gcc-3.3.3 lives in releases/gcc-3.3.3, while gcc-2.95.* isn't in a
# subdirectory! You bastard!
- CT_GetFile "gcc-${CT_CC_VERSION}" \
- {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${CT_CC_VERSION}} \
- ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${CT_CC_VERSION}
+ CT_GetFile "gcc-${version}" \
+ {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${version}} \
+ ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${version} \
+ ftp://ftp.uvsq.fr/pub/gcc/snapshots/${version}
+
# Starting with GCC 4.3, ecj is used for Java, and will only be
# built if the configure script finds ecj.jar at the top of the
# GCC source tree, which will not be there unless we get it and
@@ -25,13 +29,16 @@ do_cc_get() {
# Extract gcc
do_cc_extract() {
- CT_Extract "gcc-${CT_CC_VERSION}"
- CT_Patch "gcc-${CT_CC_VERSION}"
+ local version="${CT_CC_VERSION}${CT_CC_GCC_4_4_snapshot_date}"
+
+ CT_Extract "gcc-${version}"
+ CT_Patch "gcc-${version}"
+
# Copy ecj-latest.jar to ecj.jar at the top of the GCC source tree
- if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" \
- -a ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar" \
+ if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" \
+ -a ! -f "${CT_SRC_DIR}/gcc-${version}/ecj.jar" \
]; then
- CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar"
+ CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${version}/ecj.jar"
fi
}
@@ -83,6 +90,7 @@ do_cc_core() {
local core_prefix_dir
local extra_config
local lang_opt
+ local version="${CT_CC_VERSION}${CT_CC_GCC_4_4_snapshot_date}"
eval $1
eval $2
@@ -142,7 +150,7 @@ do_cc_core() {
CC_FOR_BUILD="${CT_BUILD}-gcc" \
CFLAGS="${CT_CFLAGS_FOR_HOST}" \
CT_DoExecLog ALL \
- "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure" \
+ "${CT_SRC_DIR}/gcc-${version}/configure" \
--build=${CT_BUILD} \
--host=${CT_HOST} \
--target=${CT_TARGET} \
@@ -174,7 +182,7 @@ do_cc_core() {
# so we configure then build it.
# Next we have to configure gcc, create libgcc.mk then edit it...
# So much easier if we just edit the source tree, but hey...
- if [ ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then
+ if [ ! -f "${CT_SRC_DIR}/gcc-${version}/gcc/BASE-VER" ]; then
CT_DoExecLog ALL make configure-libiberty
CT_DoExecLog ALL make ${PARALLELMFLAGS} -C libiberty libiberty.a
CT_DoExecLog ALL make configure-gcc configure-libcpp
@@ -184,7 +192,7 @@ do_cc_core() {
CT_DoExecLog ALL make ${PARALLELMFLAGS} all-libcpp all-build-libiberty
fi
# HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here.
- if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/libdecnumber" ]; then
+ if [ -d "${CT_SRC_DIR}/gcc-${version}/libdecnumber" ]; then
CT_DoExecLog ALL make configure-libdecnumber
CT_DoExecLog ALL make ${PARALLELMFLAGS} -C libdecnumber libdecnumber.a
fi
@@ -226,6 +234,8 @@ do_cc_core() {
#------------------------------------------------------------------------------
# Build final gcc
do_cc() {
+ local version="${CT_CC_VERSION}${CT_CC_GCC_4_4_snapshot_date}"
+
# If building for bare metal, nothing to be done here, the static core conpiler is enough!
[ "${CT_BARE_METAL}" = "y" ] && return 0
@@ -282,7 +292,7 @@ do_cc() {
CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \
LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}" \
CT_DoExecLog ALL \
- "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure" \
+ "${CT_SRC_DIR}/gcc-${version}/configure" \
--build=${CT_BUILD} \
--host=${CT_HOST} \
--target=${CT_TARGET} \