瀏覽代碼

add dynamic binutils requirement (especially for too old Linux)

Ralf S. Engelschall 23 年之前
父節點
當前提交
55a85e4342
共有 2 個文件被更改,包括 52 次插入4 次删除
  1. 47 0
      gcc/gcc.sh
  2. 5 4
      gcc/gcc.spec

+ 47 - 0
gcc/gcc.sh

@@ -0,0 +1,47 @@
+#!/bin/sh
+##
+##  gcc.sh -- GCC Package Build Utility
+##  Copyright (c) 2002 Ralf S. Engelschall <rse@engelschall.com> 
+##
+
+check="$1"
+shift
+case $check in
+    require-binutils ) 
+         #   determine whether GNU gcc requires GNU binutils on this platform
+         require="no"
+         target="$1"
+         shift
+         case $target in
+            *-linux* )
+                v=unknown
+                if [ -f /etc/debian_version ]; then
+                    v=`/usr/bin/dpkg -l binutils | grep binutils | awk '{ print $3; }'`
+                elif [ -f /etc/redhat-release ]; then
+                    v=`/bin/rpm -q --qf '%{VERSION}' binutils`
+                elif [ -f /etc/SuSE-release ]; then
+                    v=`/bin/rpm -q --qf '%{VERSION}' binutils`
+                else
+                    v=`(ld --version | grep 'GNU ld' | sed -e 's;^[^0-9]*\([0-9].[0-9.]*\).*;\1;') 2>/dev/null`
+                fi
+                #   require GNU binutils >= 2.12
+                case "$v" in
+                    2.1[2-9] | 2.1[2-9].* ) ;;
+                    * ) require="yes" ;;
+                esac
+                ;;
+             * )
+                if [ ".`(ld --version) 2>/dev/null | grep 'GNU ld'`" != . ]; then
+                    v=`(ld --version | grep 'GNU ld' | sed -e 's;^[^0-9]*\([0-9].[0-9.]*\).*;\1;') 2>/dev/null`
+                    #   require GNU binutils >= 2.12
+                    case "$v" in
+                        2.1[2-9] | 2.1[2-9].* ) ;;
+                        * ) require="yes" ;;
+                    esac
+                fi
+                ;;
+         esac
+         echo "$require" | awk '{ printf("%s", $1); }'
+         ;;
+esac
+

+ 5 - 4
gcc/gcc.spec

@@ -24,9 +24,9 @@
 ##
 
 #   package versions
-%define       V_major 3.1.1
-%define       V_short 3.1.1
-%define       V_long  3.1.1
+%define       V_major        3.1.1
+%define       V_short        3.1.1
+%define       V_long         3.1.1
 
 #   package options
 %ifndef       with_cxx
@@ -36,7 +36,7 @@
 %define       with_optimize  yes
 %endif
 %ifndef       with_binutils
-%define       with_binutils  yes
+%define       with_binutils  %(sh %{SOURCE gcc.sh} require-binutils %{l_target})
 %endif
 
 #   package information
@@ -53,6 +53,7 @@ Release:      20020808
 
 #   list of sources
 Source0:      ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_long}/gcc-%{V_long}.tar.bz2
+Source1:      gcc.sh
 Patch0:       gcc.patch
 
 #   build information