# HG changeset patch # User Bryan Hundven # Date 1345663570 25200 # Node ID ff167977b16313c705e71779aa71e4b4f9588d6a # Parent 08aecbc69f1238529c4f89161740fa9d7414d179 cc/gcc: Add the ability to build gcc from svn I took some of the svn functionality from eglibc. Signed-off-by: Bryan Hundven [yann.morin.1998@free.fr: fix the conditional test in build script] Signed-off-by: "Yann E. MORIN" diff -r 08aecbc69f12 -r ff167977b163 config/cc/gcc.in --- a/config/cc/gcc.in Sun Aug 26 10:35:20 2012 +0100 +++ b/config/cc/gcc.in Wed Aug 22 12:26:10 2012 -0700 @@ -33,6 +33,14 @@ choice bool prompt "gcc version" + +config CC_V_SVN + bool + prompt "gcc from svn" + depends on EXPERIMENTAL + depends on CONFIGURE_has_svn + select CC_GCC_latest + # Don't remove next line # CT_INSERT_VERSION_BELOW @@ -228,6 +236,62 @@ endchoice +if CC_V_SVN + +config GCC_BRANCH + string + prompt "Branch or tag to use" + default "trunk" + help + Enter the branch of gcc to use. Default is trunk + + A few examples might be: + * trunk + * branches/gcc-4_7-branch + * branches/gcc-4_4-branch + * branches/gccgo + * branches/google + * tags/gcc_4_7_1_release + * tags/microblaze-4.4.2 + +config GCC_REVISION + string + prompt "Revision to use" + default "HEAD" + help + Enter the revision of you want to use. Default is HEAD + + A revision argument can be one of: + NUMBER revision number + '{' DATE '}' revision at start of the date (*) + 'HEAD' latest in repository + + (*) If you want to use a date, please use ISO-8601 formats if + at all possible. + +config GCC_HTTP + bool + prompt "use http:// instead of svn://" + help + By default, when gcc is downloaded it is checked out using + svn://gcc.gnu.org/svn/gcc. This option allows you to download gcc + from http://gcc.gnu.org/svn/gcc, if you are behind a proxy or firewall. + If you are behind a proxy, don't forget to update your + .subversion/servers file with your proxy info in [global]. + +config GCC_CHECKOUT + bool + prompt "checkout instead of export" + help + By default, the gcc download will be an export of the subversion + repository. If you say 'y' here, then the repository will instead be + checked-out, so that you can update it later. + + Note that crosstool-NG will *not* update your working copy, you will + have to do that yourself. + +endif + config CC_GCC_4_2 bool select CC_GCC_4_2_or_later @@ -301,6 +365,18 @@ bool select CC_GCC_4_6_or_later +config CC_GCC_latest + bool + select CC_GCC_4_7_or_later + select CC_GCC_USE_GMP_MPFR + select CC_GCC_USE_MPC + select CC_GCC_HAS_GRAPHITE + select CC_GCC_HAS_LTO + select CC_GCC_HAS_PKGVERSION_BUGURL + select CC_GCC_HAS_BUILD_ID + select CC_GCC_HAS_LNK_HASH_STYLE + select CC_GCC_HAS_LIBQUADMATH + config CC_GCC_HAS_GRAPHITE bool @@ -362,6 +438,7 @@ config CC_VERSION string + default "SVN" if CC_V_SVN # Don't remove next line # CT_INSERT_VERSION_STRING_BELOW default "linaro-4.7-2012.08" if CC_V_linaro_4_7_2012_08 diff -r 08aecbc69f12 -r ff167977b163 scripts/build/cc/gcc.sh --- a/scripts/build/cc/gcc.sh Sun Aug 26 10:35:20 2012 +0100 +++ b/scripts/build/cc/gcc.sh Wed Aug 22 12:26:10 2012 -0700 @@ -4,30 +4,49 @@ # Download gcc do_cc_get() { - local linaro_version - local linaro_series - local linaro_base_url="http://launchpad.net/gcc-linaro" + if [ -n "${CT_CC_V_SVN}" ]; then + # Get gcc from SVN! + local svn_base + if [ "${CT_GCC_HTTP}" = "y" ]; then + svn_base="http://gcc.gnu.org/svn/gcc" + else + svn_base="svn://gcc.gnu.org/svn/gcc" + fi + + svn_base+="/${CT_GCC_BRANCH:-trunk}" - # Account for the Linaro versioning - linaro_version="$( echo "${CT_CC_VERSION}" \ - |sed -r -e 's/^linaro-//;' \ - )" - linaro_series="$( echo "${linaro_version}" \ - |sed -r -e 's/-.*//;' \ - )" + CT_CC_VERSION="${CT_GCC_BRANCH//\//_}" - # Ah! gcc folks are kind of 'different': they store the tarballs in - # subdirectories of the same name! - # 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! - 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} \ - ftp://ftp.uvsq.fr/pub/gcc/snapshots/${CT_CC_VERSION} \ - "${linaro_base_url}/${linaro_series}/${linaro_version}/+download" + CT_GetSVN "gcc-${CT_CC_VERSION}" \ + "${svn_base}/" \ + "${CT_GCC_REVISION:-HEAD}" + else + local linaro_version + local linaro_series + local linaro_base_url="http://launchpad.net/gcc-linaro" + + # Account for the Linaro versioning + linaro_version="$( echo "${CT_CC_VERSION}" \ + |sed -r -e 's/^linaro-//;' \ + )" + linaro_series="$( echo "${linaro_version}" \ + |sed -r -e 's/-.*//;' \ + )" + + # Ah! gcc folks are kind of 'different': they store the tarballs in + # subdirectories of the same name! + # 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! + 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} \ + ftp://ftp.uvsq.fr/pub/gcc/snapshots/${CT_CC_VERSION} \ + "${linaro_base_url}/${linaro_series}/${linaro_version}/+download" + + fi # -n ${CT_CC_V_SVN} # 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