From 2a89c32193658d2fde1240908a0e367899a41212 Mon Sep 17 00:00:00 2001
From: Bryan Hundven <bryanhundven@gmail.com>
Date: Sat, 21 Nov 2015 02:10:50 -0800
Subject: [PATCH] gcc: Remove gcc <= 4.7.x

As per #222, in crosstool-NG >= 1.23.0, we will only support:

 [upstream supported gcc versions] - 1

As of this writing, these versions are:

* 5.2.0
* 4.9.3
* 4.8.5 (the -1, since development on 4.8.x is now closed)

I plan to keep 4.8.5 around because of some architectures having issues
with over-optimization or just faulty optimization in the 4.9.x and
possibly newer versions.

I also cleaned up a requirement for glibc to depend on >= gcc-4.6.x for
>= glibc-2.20, but since the lowest gcc we support after this change is
>= 4.8.5, this condition can go away.

Patches for older gcc versions are removed in the next commit.

This closes #222

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
---
 config/cc/gcc.in            | 144 +-----------------------------------
 config/cc/gcc.in.2          |   7 +-
 config/global/paths.in      |   1 -
 config/libc/glibc.in        |  10 +--
 scripts/build/cc/100-gcc.sh |  27 ++-----
 5 files changed, 13 insertions(+), 176 deletions(-)

diff --git a/config/cc/gcc.in b/config/cc/gcc.in
index e67e4354..bbc46bc4 100644
--- a/config/cc/gcc.in
+++ b/config/cc/gcc.in
@@ -64,60 +64,6 @@ config CC_GCC_V_4_8_5
     prompt "4.8.5"
     select CC_GCC_4_8
 
-config CC_GCC_V_linaro_4_7
-    bool
-    prompt "linaro-4.7-2014.06"
-    depends on CC_GCC_SHOW_LINARO
-    select CC_GCC_4_7
-
-config CC_GCC_V_4_7_4
-    bool
-    prompt "4.7.4"
-    select CC_GCC_4_7
-
-config CC_GCC_V_linaro_4_6
-    bool
-    prompt "linaro-4.6-2013.05"
-    depends on CC_GCC_SHOW_LINARO
-    select CC_GCC_4_6
-
-config CC_GCC_V_4_6_4
-    bool
-    prompt "4.6.4"
-    select CC_GCC_4_6
-
-config CC_GCC_V_linaro_4_5
-    bool
-    prompt "linaro-4.5-2012.03"
-    depends on CC_GCC_SHOW_LINARO
-    select CC_GCC_4_5
-
-config CC_GCC_V_4_5_4
-    bool
-    prompt "4.5.4"
-    select CC_GCC_4_5
-
-config CC_GCC_V_linaro_4_4
-    bool
-    prompt "linaro-4.4-2011.02-0"
-    depends on CC_GCC_SHOW_LINARO
-    select CC_GCC_4_4
-
-config CC_GCC_V_4_4_7
-    bool
-    prompt "4.4.7"
-    select CC_GCC_4_4
-
-config CC_GCC_V_4_3_6
-    bool
-    prompt "4.3.6"
-    select CC_GCC_4_3
-
-config CC_GCC_V_4_2_4
-    bool
-    prompt "4.2.4"
-    select CC_GCC_4_2
-
 endchoice
 
 config CC_GCC_CUSTOM
@@ -140,79 +86,6 @@ config CC_GCC_CUSTOM_LOCATION
 
 endif #CC_GCC_CUSTOM
 
-config CC_GCC_4_2
-    bool
-    select CC_GCC_4_2_or_later
-
-config CC_GCC_4_2_or_later
-    bool
-
-config CC_GCC_4_3
-    bool
-    select CC_GCC_4_3_or_later
-    select CC_GCC_USE_GMP_MPFR
-    select CC_GCC_HAS_PKGVERSION_BUGURL
-
-config CC_GCC_4_3_or_later
-    bool
-    select CC_GCC_4_2_or_later
-
-config CC_GCC_4_4
-    bool
-    select CC_GCC_4_4_or_later
-    select CC_GCC_USE_GMP_MPFR
-    select CC_GCC_HAS_GRAPHITE
-    select CC_GCC_HAS_PKGVERSION_BUGURL
-
-config CC_GCC_4_4_or_later
-    bool
-    select CC_GCC_4_3_or_later
-
-config CC_GCC_4_5
-    bool
-    select CC_GCC_4_5_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
-
-config CC_GCC_4_5_or_later
-    bool
-    select CC_GCC_4_4_or_later
-
-config CC_GCC_4_6
-    bool
-    select CC_GCC_4_6_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_LIBQUADMATH
-
-config CC_GCC_4_6_or_later
-    bool
-    select CC_GCC_4_5_or_later
-
-config CC_GCC_4_7
-    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_4_7_or_later
-    bool
-    select CC_GCC_4_6_or_later
-
 config CC_GCC_4_8
     bool
     select CC_GCC_4_8_or_later
@@ -229,7 +102,6 @@ config CC_GCC_4_8
 
 config CC_GCC_4_8_or_later
     bool
-    select CC_GCC_4_7_or_later
 
 config CC_GCC_4_9
     bool
@@ -291,8 +163,7 @@ config CC_GCC_USE_GRAPHITE
     default y
     depends on CC_GCC_HAS_GRAPHITE
     select CLOOG_NEEDED if !CC_GCC_5_or_later
-    select PPL_NEEDED if !CC_GCC_4_8_or_later
-    select ISL_NEEDED if CC_GCC_4_8_or_later
+    select ISL_NEEDED
     help
       Enable the GRAPHITE loop optimsations.
       
@@ -316,7 +187,7 @@ config CC_GCC_USE_LTO
     bool
     default y
     depends on CC_GCC_HAS_LTO
-    select CC_GCC_USE_LIBELF if CC_GCC_4_5
+    select CC_GCC_USE_LIBELF
     help
       Enable the Link Time Optimisations.
 
@@ -372,22 +243,11 @@ config CC_GCC_VERSION
     default "4.9.3" if CC_GCC_V_4_9_3
     default "linaro-4.8-2015.06" if CC_GCC_V_linaro_4_8
     default "4.8.5" if CC_GCC_V_4_8_5
-    default "linaro-4.7-2014.06" if CC_GCC_V_linaro_4_7
-    default "4.7.4" if CC_GCC_V_4_7_4
-    default "linaro-4.6-2013.05" if CC_GCC_V_linaro_4_6
-    default "4.6.4" if CC_GCC_V_4_6_4
-    default "linaro-4.5-2012.03" if CC_GCC_V_linaro_4_5
-    default "4.5.4" if CC_GCC_V_4_5_4
-    default "linaro-4.4-2011.02-0" if CC_GCC_V_linaro_4_4
-    default "4.4.7" if CC_GCC_V_4_4_7
-    default "4.3.6" if CC_GCC_V_4_3_6
-    default "4.2.4" if CC_GCC_V_4_2_4
 
 config CC_LANG_JAVA_USE_ECJ
     bool
     default y
     depends on CC_LANG_JAVA
-    depends on CC_GCC_4_3_or_later
 
 # Fortran always requires GMP+MPFR, whatever the gcc version
 config CC_LANG_FORTRAN
diff --git a/config/cc/gcc.in.2 b/config/cc/gcc.in.2
index 577bf42e..b947668c 100644
--- a/config/cc/gcc.in.2
+++ b/config/cc/gcc.in.2
@@ -59,13 +59,13 @@ config CC_GCC_TARGET_FINAL
       tricks are not done and the compiler is build with all/install.
 
 config STATIC_TOOLCHAIN
-    select CC_GCC_STATIC_LIBSTDCXX if CC_GCC_4_4_or_later
+    bool
+    select CC_GCC_STATIC_LIBSTDCXX
 
 config CC_GCC_STATIC_LIBSTDCXX
     bool
     prompt "Link libstdc++ statically into the gcc binary"
     default y
-    depends on CC_GCC_4_4_or_later
     select WANTS_STATIC_LINK
     help
       Newer gcc versions use the PPL library which is C++ code.  Statically
@@ -142,7 +142,7 @@ config CC_GCC_LIBGOMP
       Interface (API) for multi-platform shared-memory parallel programming in
       C/C++ and Fortran". See:
         http://gcc.gnu.org/onlinedocs/libgomp/
-      
+
       The default is 'N'. Say 'Y' if you need it, and report success/failure.
 
 config CC_GCC_LIBSSP
@@ -229,7 +229,6 @@ config CC_GCC_LDBL_128
     tristate
     prompt "Enable 128-bit long doubles"
     default m
-    depends on CC_GCC_4_2_or_later
     help
       Saying 'Y' will force gcc to use 128-bit wide long doubles
       Saying 'N' will force gcc to use 64-bit wide long doubles
diff --git a/config/global/paths.in b/config/global/paths.in
index f3059b9c..96319fac 100644
--- a/config/global/paths.in
+++ b/config/global/paths.in
@@ -130,7 +130,6 @@ config STRIP_HOST_TOOLCHAIN_EXECUTABLES
 config STRIP_TARGET_TOOLCHAIN_EXECUTABLES
     bool
     prompt "Strip target toolchain executables"
-    depends on CC_GCC_4_6_or_later
     help
       It means using install-strip target for GCC 4.6 or later.
       An install-strip make target is provided that installs stripped
diff --git a/config/libc/glibc.in b/config/libc/glibc.in
index 71df5011..c2ba7b91 100644
--- a/config/libc/glibc.in
+++ b/config/libc/glibc.in
@@ -38,12 +38,12 @@ choice
 config LIBC_GLIBC_V_2_22
     bool
     prompt "2.22"
-    select LIBC_GLIBC_2_21_or_later
+    select LIBC_GLIBC_2_20_or_later
 
 config LIBC_GLIBC_V_2_21
     bool
     prompt "2.21"
-    select LIBC_GLIBC_2_21_or_later
+    select LIBC_GLIBC_2_20_or_later
 
 config LIBC_GLIBC_LINARO_V_2_20
     bool
@@ -141,12 +141,6 @@ config LIBC_GLIBC_CUSTOM
 
 endchoice
 
-# glibc 2.21 depends on gcc >= 4.6
-config LIBC_GLIBC_2_21_or_later
-    bool
-    depends on CC_GCC_4_6_or_later
-    select LIBC_GLIBC_2_20_or_later
-
 config LIBC_GLIBC_2_20_or_later
     bool
     select LIBC_GLIBC_2_17_or_later
diff --git a/scripts/build/cc/100-gcc.sh b/scripts/build/cc/100-gcc.sh
index 6ed9e9cd..ea7d2224 100644
--- a/scripts/build/cc/100-gcc.sh
+++ b/scripts/build/cc/100-gcc.sh
@@ -148,9 +148,7 @@ do_gcc_core_pass_2() {
             ;;
         *)
             core_opts+=( "mode=static" )
-            if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then
-                core_opts+=( "build_libgcc=yes" )
-            fi
+	    core_opts+=( "build_libgcc=yes" )
             ;;
     esac
 
@@ -486,16 +484,8 @@ do_gcc_core_backend() {
             CT_DoExecLog ALL ${make} ${JOBSFLAGS} -C libbacktrace
         fi
 
-        # Starting with GCC 4.3, libgcc.mk is no longer built,
-        # and libgcc.mvars is used instead.
-
-        if [ "${CT_CC_GCC_4_3_or_later}" = "y" ]; then
-            libgcc_rule="libgcc.mvars"
-            core_targets=( gcc target-libgcc )
-        else
-            libgcc_rule="libgcc.mk"
-            core_targets=( gcc )
-        fi
+	libgcc_rule="libgcc.mvars"
+	core_targets=( gcc target-libgcc )
 
         # On bare metal and canadian build the host-compiler is used when
         # actually the build-system compiler is required. Choose the correct
@@ -731,10 +721,8 @@ do_gcc_backend() {
     if [ -n "${CT_CC_GCC_ENABLE_CXX_FLAGS}" ]; then
         extra_config+=("--enable-cxx-flags=${CT_CC_GCC_ENABLE_CXX_FLAGS}")
     fi
-    if [ "${CT_CC_GCC_4_8_or_later}" = "y" ]; then
-        if [ "${CT_THREADS}" = "none" ]; then
-            extra_config+=(--disable-libatomic)
-        fi
+    if [ "${CT_THREADS}" = "none" ]; then
+	extra_config+=(--disable-libatomic)
     fi
     if [ "${CT_CC_GCC_LIBMUDFLAP}" = "y" ]; then
         extra_config+=(--enable-libmudflap)
@@ -842,10 +830,7 @@ do_gcc_backend() {
 
     if [ "${CT_THREADS}" = "none" ]; then
         extra_config+=("--disable-threads")
-        if [ "${CT_CC_GCC_4_2_or_later}" = y ]; then
-            CT_Test "Disabling libgomp for no-thread gcc>=4.2" "${CT_CC_GCC_LIBGOMP}" = "Y"
-            extra_config+=("--disable-libgomp")
-        fi
+	extra_config+=("--disable-libgomp")
     else
         if [ "${CT_THREADS}" = "win32" ]; then
             extra_config+=("--enable-threads=win32")