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]

[PATCH 1 of 3] cc/gcc: Add the ability to build gcc from svn


# 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

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 @@
 # Don't remove next line
 # CT_INSERT_VERSION_BELOW
 
+config CC_V_SVN
+    bool
+    prompt "gcc from svn"
+    depends on EXPERIMENTAL
+    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
+
+config GCC_BRANCH
+    string
+    prompt "Branch to use"
+    default "trunk"
+    help
+      Enter the branch of gcc to use.
+      Default is trunk
+      
+      You can find other branches here:
+       http://gcc.gnu.org/viewcvs/branches/
+
+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
+
 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
+        
+        CT_CC_VERSION="${CT_GCC_BRANCH}"
 
+        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!
+        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
 }
 

--
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]