make a stable version while working out bugs in target rewrite
authorMike Frysinger <vapier@gentoo.org>
Sat, 17 Feb 2007 13:50:04 +0000 (13:50 +0000)
committerMike Frysinger <vapier@gentoo.org>
Sat, 17 Feb 2007 13:50:04 +0000 (13:50 +0000)
sys-devel/crossdev/crossdev-0.9.17-r3.ebuild
sys-devel/crossdev/files/crossdev

index 8977114c2093b925ec3910747b19057988ea0e69..0d4974e06d55e358136bcef77120301754b4dfe3 100644 (file)
@@ -1,6 +1,6 @@
 # Copyright 1999-2007 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/crossdev/crossdev-0.9.17-r3.ebuild,v 1.1 2007/02/10 04:47:35 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/crossdev/crossdev-0.9.17-r3.ebuild,v 1.2 2007/02/17 13:50:04 vapier Exp $
 
 DESCRIPTION="Gentoo Cross-toolchain generator"
 HOMEPAGE="http://www.gentoo.org/"
@@ -16,6 +16,6 @@ RDEPEND=">=sys-apps/portage-2.1
        dev-util/unifdef"
 
 src_install() {
-       dosbin "${FILESDIR}"/crossdev || die
+       dosbin "${FILESDIR}"/crossdev-stable || die
        dosed "s:GENTOO_PV:${PV}:" /usr/sbin/crossdev
 }
index 6c42450163fd26207b0d467605817b06a5e12727..a19cd716c62b475949dffd5838ec029b38dbf71f 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/bash
 # Copyright 1999-2007 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/crossdev/files/crossdev,v 1.86 2007/02/10 04:46:15 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/crossdev/files/crossdev,v 1.87 2007/02/17 13:50:04 vapier Exp $
 
 cd /
 umask 0022 #159111
@@ -60,169 +60,146 @@ STAGE_C_CPP=4
 STAGE_DISP=( "binutils" "C compiler only" "kernel headers" "C compiler & libc" "C/C++ compiler" )
 
 parse_target() {
-       [[ -z $1 ]] && usage 1
        CTARGET=${1#cross-}
-       local CPRE=${CTARGET%%-*} CPOST=${CTARGET#*-}
 
-       # Did they give us just an ARCH or the full TARGET ?
-       if [[ ${CTARGET/-} == ${CTARGET} || -z ${CPOST} ]] ; then
-               case ${CPRE} in
-                       x86|i?86*|amd64|x86_64*) CPOST="pc-linux-gnu";;
-                       s390*)                   CPOST="ibm-linux-gnu";;
+       [[ -z ${CTARGET} ]] && usage 1
+
+       if [[ ${CTARGET} == "help" ]] ; then
+               cat <<-EOF
+               Supported Architectures:
+                  - alpha                                     - arm / armeb
+                  - hppa (parisc)                             - ia64
+                  - i386 / i486 / i586 / i686 (x86)           - m68k
+                  - mips / mipsel / mips64 / mips64el
+                  - powerpc (ppc) / powerpc64 (ppc64)
+                  - sparc / sparc64                           - s390 / s390x
+                  - sh / sh[1-5] / sh64                       - x86_64 (amd64)
+               Supported C Libraries:
+                  - glibc (gnu)
+                  - klibc       [prob wont work]
+                  - newlib      [bare metal/no operating system]
+                  - uclibc      [not all arches are ported]
+               Special Targets:
+                  - avr      http://www.nongnu.org/avr-libc/
+                  - bfin     http://blackfin.uclinux.org/
+                  - h8300    http://h8300-hms.sourceforge.net/
+                  - mingw32  http://www.mingw.org/
+                  - msp430   http://mspgcc.sourceforge.net/
+                  - nios2    http://www.altera.com/products/ip/processors/nios2/ni2-index.html
+                  - xc16x    http://www.infineon.com/
+                  - ee / iop / dvp (ps2) [Playstation 2 targets]
+                  - ppu / spu (cell) [Cell/Playstation 3 targets]
+               Softfloat toolchains:
+                  Include 'softfloat' in the 'vendor' field
+                  e.g. armeb-softfloat-linux-uclibc  powerpc-booya_softfloat-linux-gnu
+               EOF
+               exit 0
+       fi
+
+       # Allow for laziness
+       if [[ ${CTARGET} != *-* ]] ; then
+               # First translate portage ARCH to actual tuple
+               case ${CTARGET} in
+                       amd64)      CTARGET="x86_64";;
+                       parisc*)    CTARGET=${CTARGET/parisc/hppa};;
+                       ppc|ppc64)  CTARGET=${CTARGET/ppc/powerpc};;
+                       x86)        CTARGET="i686";;
+               esac
+
+               # Then add common suffixes
+               case ${CTARGET} in
+                       i?86|x86_64)
+                               CTARGET="${CTARGET}-pc-linux-gnu";;
+                       s390*)       
+                               CTARGET="${CTARGET}-ibm-linux-gnu";;
+                       alpha*|arm*|cris*|hppa*|ia64*|m68*|mips*|powerpc*|sparc*|sh*)
+                               CTARGET="${CTARGET}-unknown-linux-gnu";;
                        bfin*|h8300*|nios2*|spu*|xc16x*)
-                               CPOST="elf";;
-                       *)                       CPOST="unknown-linux-gnu";;
+                               CTARGET="${CTARGET}-elf";;
                esac
        fi
 
-       # Let's accept ARCH in both the portage and the standard forms ...
-       # CTARGET is in the standard form while TARCH is in the portage form
-       case ${CPRE} in
-
-               #####################
-               ### linux targets ###
+       # Figure out an acceptable portage ARCH for this target
+       case ${CTARGET} in
                alpha*)     TARCH=alpha;;
                arm*)       TARCH=arm;;
                hppa*)      TARCH=hppa;;
-               parisc)     TARCH=hppa;   CPRE="hppa";;
                ia64*)      TARCH=ia64    WITH_DEF_HEADERS="yes";;
                i?86*)      TARCH=x86;;
-               x86)        TARCH=x86;    CPRE="i386";;
                m68*)       TARCH=m68k;;
                mips*)      TARCH=mips ;  KPKG="mips-headers";;
                powerpc64*) TARCH=ppc64;;
-               ppc64)      TARCH=ppc64;  CPRE="powerpc64";;
                powerpc*)   TARCH=ppc;;
-               ppc)        TARCH=ppc;    CPRE="powerpc";;
                sparc*)     TARCH=sparc;;
                s390*)      TARCH=s390;;
                sh*)        TARCH=sh;;
                x86_64*)    TARCH=amd64;;
-               amd64)      TARCH=amd64;  CPRE="x86_64";;
+               *)          TARCH=${HARCH};;
+       esac
+       case ${CTARGET} in
+               *-freebsd*) TARCH="${TARCH}-fbsd";;
+       esac
 
-               #####################
-               ### other targets ###
-               avr*) TARCH=${HARCH}; CPOST="";
-                     KPKG="[none]"; STAGE=${STAGE_LIBC};
+       # Now account for all the "special" architectures out there
+       case ${CTARGET} in
+               avr*) KPKG="[none]"; STAGE=${STAGE_LIBC};
                      LCAT="dev-embedded"; LPKG="avr-libc";
                      GVER="3.4.6"; BVER="2.16.1-r3";
                      GUSE=${GUSE_DISABLE};;
 
-               bfin*)
-                     TARCH=${HARCH};
-                     LPKG="uclibc";;
-
-               h8300*)
-                     TARCH=${HARCH};
-                     LPKG="uclibc";;
-
-               cris*)
-                     TARCH=${HARCH};
-                     LPKG="uclibc";;
-
-               mingw*)
-                     TARCH=${HARCH}; CPOST="";
+               mingw*|*-mingw*)
                      WITH_DEF_HEADERS="yes";
                      KCAT="dev-util"; KPKG="w32api";
                      LCAT="dev-util"; LPKG="mingw-runtime";;
 
                msp430)
-                     TARCH=${HARCH}; CPOST="";
                      STAGE=${STAGE_BINUTILS};;
 
                nios2*)
-                     TARCH=${HARCH};
                      BPKG="binutils-nios2";
-                     GPKG="gcc-nios2";
-                     LPKG="uclibc";;
-
-               vax*) TARCH=${HARCH};
-                     LPKG="uclibc";;
-
-               xc16x*)
-                     TARCH=${HARCH};
-                     LPKG="newlib";;
+                     GPKG="gcc-nios2";;
 
-               cell*)einfo "The cell target is really an alias for the spu/ppu targets"
+               celleinfo "The cell target is really an alias for the spu/ppu targets"
                      ${CROSSDEV} -t ppu || exit 1
                      ${CROSSDEV} -t spu-elf || exit 1
                      exit 0;;
                spu*) TARCH=ppc64;
                      KPKG="[none]";
                      LPKG="newlib";;
-               ppu*) TARCH=ppc64;
-                     CPRE=powerpc64;;
+               ppu*) TARCH=ppc64;;
 
-               ps2*) einfo "The ps2 target is really an alias for the ee/iop/dvp targets"
+               ps2 einfo "The ps2 target is really an alias for the ee/iop/dvp targets"
                      ${CROSSDEV} -t ee  || exit 1
                      ${CROSSDEV} -t iop || exit 1
                      ${CROSSDEV} -t dvp || exit 1
                      exit 0;;
-               ee*)  TARCH=${HARCH}; CPOST="";
+               ee*)  TARCH="mips";
                      KPKG="[none]"
                      GVER="3.2.2"; BVER="2.14";
                      STAGE=${STAGE_C_ONLY};
                      GUSE=${GUSE_DISABLE};;
-               iop*) TARCH=${HARCH}; CPOST="";
+               iop*) TARCH="mips";
                      GVER="3.2.2"; BVER="2.14";
                      STAGE=${STAGE_C_ONLY};
                      GUSE=${GUSE_DISABLE};;
-               dvp*) TARCH=${HARCH}; CPOST="";
+               dvp*) TARCH="mips";
                      GVER="3.2.2"; BVER="2.14";
                      STAGE=${STAGE_BINUTILS};;
-
-               ############
-               ### help ###
-               help)
-                       cat <<-EOF
-                       Supported Architectures:
-                          - alpha                                     - arm / armeb
-                          - hppa (parisc)                             - ia64
-                          - i386 / i486 / i586 / i686 (x86)           - m68k
-                          - mips / mipsel / mips64 / mips64el
-                          - powerpc (ppc) / powerpc64 (ppc64)
-                          - sparc / sparc64                           - s390 / s390x
-                          - sh / sh[1-5] / sh64                       - x86_64 (amd64)
-                       Supported C Libraries:
-                          - gnu (glibc)
-                          - klibc       [prob wont work]
-                          - uclibc      [not all arches are ported]
-                       Special Targets:
-                          - avr      http://www.nongnu.org/avr-libc/
-                          - bfin     http://blackfin.uclinux.org/
-                          - h8300    http://h8300-hms.sourceforge.net/
-                          - mingw32  http://www.mingw.org/
-                          - msp430   http://mspgcc.sourceforge.net/
-                          - nios2    http://www.altera.com/products/ip/processors/nios2/ni2-index.html
-                          - xc16x    http://www.infineon.com/
-                          - ee / iop / dvp (ps2) [Playstation 2 targets]
-                          - ppu / spu (cell) [Cell/Playstation 3 targets]
-                       Softfloat toolchains:
-                          Include 'softfloat' in the 'vendor' field
-                          e.g. armeb-softfloat-linux-uclibc  powerpc-booya_softfloat-linux-gnu
-                       EOF
-                       exit 0
-                       ;;
-
-               #######################
-               ### unknown targets ###
-               *) usage 1 "Unknown target '$1'; bug vapier@gentoo.org to add it" ;;
        esac
 
-       CTARGET=${CPRE}
-       [[ -n ${CPOST} ]] && CTARGET=${CTARGET}-${CPOST}
-
        # Tweak packages based upon CTARGET
        case ${CTARGET} in
                # Normal Linux host, just diff libc
                *-dietlibc) LPKG="dietlibc";;
-               *-klibc)    LPKG="klibc";;
-               *-uclibc)   LPKG="uclibc";;
+               *-elf)      LPKG="newlib";;
                *-gnu*)     LPKG="glibc";;
+               *-klibc)    LPKG="klibc";;
+               *-newlib)   LPKG="newlib";;
+               *-uclibc*)  LPKG="uclibc";;
+               *-uclinux)  LPKG="uclibc";;
 
                # Now for the BSDs ...
                *-freebsd*)
-                       TARCH="${TARCH}-fbsd"
                        LCAT="sys-freebsd" LPKG="freebsd-lib"
                        KPKG="[none]"
                        ;;
@@ -630,7 +607,7 @@ USE="${GUSE} ${USE} ${GUSE_DISABLE_STAGE_2}" \
 
 }
 
-EOPTS=${EOPTS_UP}
+EOPTS="${EOPTS_UP} --newuse"
 ex_gcc && USE="${GUSE} ${USE}" doemerge ${GPKG} ${GPKG}-extra
 ex_gdb && doemerge gdb