This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.
See crosstool-NG for lots more information.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Bryan, All, On Sunday 19 August 2012 10:14:10 Bryan Hundven wrote: > # HG changeset patch > # User Bryan Hundven <bryanhundven@gmail.com> > # Date 1345363489 25200 > # Node ID 1c7363e92ede42f223edf3497fab348e16d4b05d > # Parent 11c23aa9c9f9e748cd6059367ef19fff23d61bd5 > cc/gcc: Add the ability to build gcc from svn Any reason you do not use the git tree instead? http://gcc.gnu.org/wiki/GitMirror There should already be some provisions for using git in ct-ng. See: scripts/functions:687:CT_GetGit() { scripts/functions:812:CT_ExtractGit() Maybe some stuff is incorrect/missing, and probably it can be enhanced... YMMV, as they say... > I took some of the svn functionality from eglibc. > > Signed-off-by: Bryan Hundven <bryanhundven@gmail.com> > > diff -r 11c23aa9c9f9 -r 1c7363e92ede config/cc/gcc.in > --- a/config/cc/gcc.in Wed Aug 15 22:06:22 2012 +0200 > +++ b/config/cc/gcc.in Sun Aug 19 01:04:49 2012 -0700 > @@ -36,6 +36,12 @@ Insert svn entry here, not after the comment below. That way, newer versions added with the scripts/addToolVersion.sh will be properly ordered (I guess we want SVN to always be at the top). > # Don't remove next line > # CT_INSERT_VERSION_BELOW > > +config CC_V_SVN > + bool > + prompt "gcc from svn" > + depends on EXPERIMENTAL + depends on CONFIGURE_has_svn > + select CC_GCC_latest > + > config CC_V_linaro_4_7_2012_07 > bool > prompt "linaro-4.7-2012.07 (EXPERIMENTAL)" > @@ -228,6 +234,59 @@ > > endchoice > > +if CC_V_SVN && CONFIGURE_has_svn No need for CONFIGURE_has_svn, it's hiding CC_V_SVN above. > + > +config GCC_BRANCH > + string > + prompt "Branch to use" Branch or tag to use (see below) > + default "trunk" > + help > + Enter the branch of gcc to use. > + Default is trunk Add a few examples: eg.: branches/gcc-4_7-branch, branches/gcc-in-cxx, branches/x32... And I'd state that the full path to the branch should be specified. That way, it is possible to use any reference (branch, level-2 branch or tag). > + You can find other branches here: > + http://gcc.gnu.org/viewcvs/branches/ Probably, the persons that will be using this feature know what branch they'll want to use. Using svn/git is not for the faint of heart! ;-) So, I'd remove that last part of the comment. > +config GCC_REVISION > + string > + prompt "Revision to use" > + default "HEAD" > + help > + Enter the revision of trunk 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" > + default n > + 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 +360,10 @@ > bool > select CC_GCC_4_6_or_later > > +config CC_GCC_latest > + bool > + select CC_GCC_4_7 - select CC_GCC_4_7 + select CC_GCC_4_7_or_later + select CC_GCC_HAS_GRAPHITE + select CC_GCC_HAS_LTO ... and so on... > + > config CC_GCC_HAS_GRAPHITE > bool > > @@ -364,6 +427,7 @@ > string > # Don't remove next line > # CT_INSERT_VERSION_STRING_BELOW > + default "SVN" if CC_V_SVN > default "linaro-4.7-2012.07" if CC_V_linaro_4_7_2012_07 > default "4.7.1" if CC_V_4_7_1 > default "4.7.0" if CC_V_4_7_0 > diff -r 11c23aa9c9f9 -r 1c7363e92ede scripts/build/cc/gcc.sh > --- a/scripts/build/cc/gcc.sh Wed Aug 15 22:06:22 2012 +0200 > +++ b/scripts/build/cc/gcc.sh Sun Aug 19 01:04:49 2012 -0700 > @@ -4,31 +4,53 @@ > > # Download gcc > do_cc_get() { > - local linaro_version > - local linaro_series > - local linaro_base_url="http://launchpad.net/gcc-linaro" > + if [ -n ${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 > + > + case "${CT_GCC_BRANCH}" in > + trunk) svn_base+="/trunk";; > + *) svn_base+="/branches/${CT_GCC_BRANCH}";; > + esac case-esac undeed, the full patch nust be specified in the configuration. (see above) > + > + CT_CC_VERSION="${CT_GCC_BRANCH}" Of course, '/' in CT_GCC_BRANCH should be 's:/:_:g' > + CT_GetSVN "gcc-${CT_GCC_BRANCH}" \ > + "${svn_base}/" \ > + "${CT_GCC_REVISION:-HEAD}" > + else > + # Get gcc from a released tarball! > + 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! 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} \ > - ftp://ftp.uvsq.fr/pub/gcc/snapshots/${CT_CC_VERSION} \ > - "${linaro_base_url}/${linaro_series}/${linaro_version}/+download" > + # 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! 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! Well, I guess all the insanities *I* did put in there in the early days (ie. when nothing would work as expected, and I would get heated quite fast) should now go... Tatata... Shame on me... I'll address this issue myself. > + 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 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 > @@ -41,14 +63,16 @@ > > # Extract gcc > do_cc_extract() { > - CT_Extract "gcc-${CT_CC_VERSION}" > - CT_Patch "gcc" "${CT_CC_VERSION}" > + if [ -z "${CC_V_SVN}" ]; then > + CT_Extract "gcc-${CT_CC_VERSION}" > + CT_Patch "gcc" "${CT_CC_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" \ > - ]; then > - CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar" > + # 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" \ > + ]; then > + CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar" > + fi > fi > } Otherwise, untested, but looks good. Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' -- For unsubscribe information see http://sourceware.org/lists.html#faq
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |