Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • npl/system/gcc/gcc.SlackBuild

    rc5c522c r1a19ecd  
    1 #!/bin/sh
     1#!/bin/bash
     2#
     3# Automaticly created by importpackage v1.0
     4# Imported from: http://mirrors.slackware.com/slackware/slackware-current/source/d/gcc/
     5# Created at Tue Jan 31 00:22:45 CET 2017
     6
     7#NEED:gawk
     8#NEED:binutils
     9
     10#DEP:zlib
    211#DEP:gmp
     12#DEP:mpfr
    313#DEP:mpc
    4 #DEP:mpfr
     14#DEP:gtk2
     15#DEP:glib2
     16#DEP:pango
     17#DEP:cairo
     18#DEP:pixman
     19#DEP:fontconfig
     20#DEP:freetype2
     21#DEP:expat
     22#DEP:libpng
     23#DEP:gdk_pixbuf
     24#DEP:xorg_lib
     25#DEP:pthread_stubs
     26#DEP:atk
     27#DEP:harfbuzz
     28#DEP:libart_lgpl
     29#DEP:libffi
    530
    6 # GCC package build script (written by volkerdi@slackware.com)
    7 #
    8 # Copyright 2003, 2004  Slackware Linux, Inc., Concord, California, USA
    9 # Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014  Patrick J. Volkerding, Sebeka, MN, USA
    10 # All rights reserved.
    11 #
    12 # Redistribution and use of this script, with or without modification, is
    13 # permitted provided that the following conditions are met:
    14 #
    15 # 1. Redistributions of this script must retain the above copyright
    16 #    notice, this list of conditions and the following disclaimer.
    17 #
    18 #  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
    19 #  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    20 #  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
    21 #  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    22 #  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    23 #  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
    24 #  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    25 #  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
    26 #  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
    27 #  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    28 #
     31#for testing
     32#NEED:tcl
    2933
    30 # Modified 2011 by Eric Hameleers <alien at slackware.com> for OpenJDK.
     34########### source original slackbuild (hopefully we dont need to modify it)
     35CWD=`pwd`
     36set -e
    3137
    32 # Some notes, Fri May 16 12:31:32 PDT 2003:
    33 #
    34 # Why i486 and not i386?  Because the shared C++ libraries in gcc-3.2.x will
    35 # require 486 opcodes even when a 386 target is used (so we already weren't
    36 # compatible with the i386 for Slackware 9.0, didn't notice, and nobody
    37 # complained :-).  gcc-3.3 fixes this issue and allows you to build a 386
    38 # compiler, but the fix is done in a way that produces binaries that are not
    39 # compatible with gcc-3.2.x compiled binaries.  To retain compatibility with
    40 # Slackware 9.0, we'll have to use i486 (or better) as the compiler target
    41 # for gcc-3.3.
    42 #
    43 # It's time to say goodbye to i386 support in Slackware.  I've surveyed 386
    44 # usage online, and the most common thing I see people say when someone asks
    45 # about running Linux on a 386 is to "run Slackware", but then they also
    46 # usually go on to say "be sure to get an OLD version, like 4.0, before glibc,
    47 # because it'll be more efficient."  Now, if that's the general advice, then
    48 # I see no reason to continue 386 support in the latest Slackware (and indeed
    49 # it's no longer easily possible).
     38#export GCCCHECK=1
     39source ./gcc.SlackBuild.orig
    5040
    51 PKGNAM=gcc
    52 VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
    53 BUILD=${BUILD:-1}
    54 
    55 # How many jobs to run in parallel:
    56 NUMJOBS=" -j 7 "
    57 
    58 # Automatically determine the architecture we're building on:
    59 if [ -z "$ARCH" ]; then
    60   case "$(uname -m)" in
    61     i?86) ARCH=i486 ;;
    62     arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7lh ;;
    63     # Unless $ARCH is already set, use uname -m for all other archs:
    64     *) ARCH=$(uname -m) ;;
    65   esac
    66   export ARCH
    67 fi
    68 
    69 if [ "$ARCH" = "i386" ]; then
    70   SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
    71   LIBDIRSUFFIX=""
    72   LIB_ARCH=i386
    73 elif [ "$ARCH" = "i486" ]; then
    74   SLKCFLAGS="-O2 -march=i486 -mtune=i686"
    75   LIBDIRSUFFIX=""
    76   LIB_ARCH=i386
    77 elif [ "$ARCH" = "i586" ]; then
    78   SLKCFLAGS="-O2 -march=i586 -mtune=i686"
    79   LIBDIRSUFFIX=""
    80   LIB_ARCH=i386
    81 elif [ "$ARCH" = "i686" ]; then
    82   SLKCFLAGS="-O2 -march=i686"
    83   LIBDIRSUFFIX=""
    84   LIB_ARCH=i386
    85 elif [ "$ARCH" = "s390" ]; then
    86   SLKCFLAGS="-O2"
    87   LIBDIRSUFFIX=""
    88   LIB_ARCH=s390
    89 elif [ "$ARCH" = "x86_64" ]; then
    90   SLKCFLAGS="-O2 -fPIC"
    91   LIBDIRSUFFIX="64"
    92   LIB_ARCH=amd64
    93 elif [ "$ARCH" = "armv7hl" ]; then
    94   SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16"
    95   LIBDIRSUFFIX=""
    96   LIB_ARCH=armv7hl
    97 else
    98   SLKCFLAGS="-O2"
    99   LIBDIRSUFFIX=""
    100   LIB_ARCH=$ARCH
    101 fi
    102 
    103 case "$ARCH" in
    104     arm*) TARGET=$ARCH-slackware-linux-gnueabi ;;
    105     *)    TARGET=$ARCH-slackware-linux ;;
    106 esac
    107 
    108 CWD=$(pwd)
    109 # Temporary build location.  This should *NOT* be a directory
    110 # path a non-root user could create later...
    111 TMP=${TMP:-"/gcc-$(mcookie)"}
    112 
    113 # This is the main DESTDIR target:
    114 PKG1=$TMP/package-gcc
    115 # These are the directories to build other packages in:
    116 PKG2=$TMP/package-gcc-g++
    117 PKG3=$TMP/package-gcc-gfortran
    118 PKG4=$TMP/package-gcc-gnat
    119 PKG5=$TMP/package-gcc-java
    120 PKG6=$TMP/package-gcc-objc
    121 PKG7=$TMP/package-gcc-g++-gch
    122 PKG8=$TMP/package-gcc-go
    123 
    124 # Clear the build locations:
    125 if [ -d $TMP ]; then
    126   rm -rf $TMP
    127 fi
    128 mkdir -p $PKG{1,2,3,4,5,6,7,8}/usr/doc/gcc-$VERSION
    129 
    130 # Insert package descriptions:
    131 mkdir -p $PKG{1,2,3,4,5,6,7,8}/install
    132 cat $CWD/slack-desc.gcc > $PKG1/install/slack-desc
    133 cat $CWD/slack-desc.gcc-g++ > $PKG2/install/slack-desc
    134 cat $CWD/slack-desc.gcc-gfortran > $PKG3/install/slack-desc
    135 cat $CWD/slack-desc.gcc-gnat > $PKG4/install/slack-desc
    136 cat $CWD/slack-desc.gcc-java > $PKG5/install/slack-desc
    137 cat $CWD/slack-desc.gcc-objc > $PKG6/install/slack-desc
    138 # cat $CWD/slack-desc.gcc-g++-gch > $PKG7/install/slack-desc
    139 cat $CWD/slack-desc.gcc-go > $PKG8/install/slack-desc
    140 
    141 cd $TMP
    142 tar xvf $CWD/gcc-$VERSION.tar.?z*
    143 
    144 #( cd gcc-$VERSION
    145 #  If we had any patches, we would apply them here, but we're .diff free now.
    146 #) || exit 1
    147 
    148 # Copy ecj.jar into the TLD of the source. Needed for java compiler.
    149 # This can be retrieved from ftp://sourceware.org/pub/java
    150 cp $CWD/ecj-4.5.jar gcc-$VERSION/ecj.jar
    151 
    152 # Use an antlr runtime to compile javadoc.
    153 # The runtime can be obtained from:
    154 #https://oss.sonatype.org/content/repositories/releases/org/antlr/antlr-runtime/
    155 ANTLJAR=$(echo $CWD/antlr-*.jar | tail -1)
    156 
    157 # install docs
    158 ( cd gcc-$VERSION
    159   # Smite the fixincludes:
    160   zcat $CWD/gcc-no_fixincludes.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
    161   # Fix perms/owners
    162   chown -R root:root .
    163   find . -perm 777 -exec chmod 755 {} \;
    164   find . -perm 775 -exec chmod 755 {} \;
    165   find . -perm 754 -exec chmod 755 {} \;
    166   find . -perm 664 -exec chmod 644 {} \;
    167   mkdir -p $PKG1/usr/doc/gcc-$VERSION
    168   cp -a \
    169     COPYING* ChangeLog* FAQ INSTALL \
    170     LAST_UPDATED MAINTAINERS NEWS \
    171     README* *.html \
    172   $PKG1/usr/doc/gcc-$VERSION
    173 
    174   # We will keep part of these, but they are really big...
    175   if [ -r ChangeLog ]; then
    176     DOCSDIR=$(echo $PKG1/usr/doc/gcc-$VERSION)
    177     cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
    178     touch -r ChangeLog $DOCSDIR/ChangeLog
    179   fi
    180   if [ -r NEWS ]; then
    181     DOCSDIR=$(echo $PKG1/usr/doc/gcc-$VERSION)
    182     cat NEWS | head -n 1000 > $DOCSDIR/NEWS
    183     touch -r NEWS $DOCSDIR/NEWS
    184   fi
    185 
    186   mkdir -p $PKG1/usr/doc/gcc-${VERSION}/gcc
    187   ( cd gcc
    188     cp -a \
    189       ABOUT* COPYING* DATESTAMP DEV-PHASE LANG* ONEWS README* SERVICE \
    190     $PKG1/usr/doc/gcc-$VERSION/gcc
    191          
    192     mkdir -p $PKG3/usr/doc/gcc-${VERSION}/gcc/fortran
    193     ( cd fortran
    194       if [ -r ChangeLog ]; then
    195         cat ChangeLog | head -n 1000 > $PKG3/usr/doc/gcc-$VERSION/gcc/fortran/ChangeLog
    196         touch -r ChangeLog $PKG3/usr/doc/gcc-$VERSION/gcc/fortran/ChangeLog
    197       fi
    198     )
    199 
    200     mkdir -p $PKG4/usr/doc/gcc-${VERSION}/gcc/ada
    201     ( cd ada
    202       cp -a \
    203         ChangeLog.tree-ssa \
    204       $PKG4/usr/doc/gcc-$VERSION/gcc/ada
    205       if [ -r ChangeLog ]; then
    206         cat ChangeLog | head -n 1000 > $PKG4/usr/doc/gcc-$VERSION/gcc/ada/ChangeLog
    207         touch -r ChangeLog $PKG4/usr/doc/gcc-$VERSION/gcc/ada/ChangeLog
    208       fi
    209     )
    210 
    211     mkdir -p $PKG5/usr/doc/gcc-${VERSION}/gcc/java
    212     ( cd java
    213       cp -a \
    214         ChangeLog.tree-ssa \
    215       $PKG5/usr/doc/gcc-${VERSION}/gcc/java
    216       if [ -r ChangeLog ]; then
    217         cat ChangeLog | head -n 1000 > $PKG5/usr/doc/gcc-${VERSION}/gcc/java/ChangeLog
    218         touch -r ChangeLog $PKG5/usr/doc/gcc-${VERSION}/gcc/java/ChangeLog
    219       fi
    220     )
    221  
    222     mkdir -p $PKG6/usr/doc/gcc-${VERSION}/gcc/objc
    223     ( cd objc
    224       cp -a \
    225         README* \
    226       $PKG6/usr/doc/gcc-${VERSION}/gcc/objc
    227       if [ -r ChangeLog ]; then
    228         cat ChangeLog | head -n 1000 > $PKG6/usr/doc/gcc-${VERSION}/gcc/objc/ChangeLog
    229         touch -r ChangeLog $PKG6/usr/doc/gcc-${VERSION}/gcc/objc/ChangeLog
    230       fi
    231     )
    232 
    233     mkdir -p $PKG8/usr/doc/gcc-${VERSION}/gcc/go
    234     ( cd go
    235       if [ -r ChangeLog ]; then
    236         cat ChangeLog | head -n 1000 > $PKG8/usr/doc/gcc-${VERSION}/gcc/go/ChangeLog
    237         touch -r ChangeLog $PKG8/usr/doc/gcc-${VERSION}/gcc/go/ChangeLog
    238       fi
    239       cp -a \
    240         README* THREADS* \
    241         gofrontend/{LICENSE,PATENTS,README} \
    242       $PKG8/usr/doc/gcc-${VERSION}/gcc/go
    243     )
    244 
    245   ) || exit 1
    246 
    247   mkdir -p $PKG3/usr/doc/gcc-${VERSION}/libgfortran
    248   ( cd libgfortran
    249     if [ -r ChangeLog ]; then
    250       cat ChangeLog | head -n 1000 > $PKG3/usr/doc/gcc-${VERSION}/libgfortran/ChangeLog
    251       touch -r ChangeLog $PKG3/usr/doc/gcc-${VERSION}/libgfortran/ChangeLog
    252     fi
    253   )
    254 
    255   mkdir -p $PKG4/usr/doc/gcc-${VERSION}/libada
    256   ( cd libada
    257     if [ -r ChangeLog ]; then
    258       cat ChangeLog | head -n 1000 > $PKG4/usr/doc/gcc-${VERSION}/libada/ChangeLog
    259       touch -r ChangeLog $PKG4/usr/doc/gcc-${VERSION}/libada/ChangeLog
    260     fi
    261   )
    262 
    263   mkdir -p $PKG5/usr/doc/gcc-${VERSION}/libffi
    264   ( cd libffi
    265     cp -a \
    266       ChangeLog.libgcj ChangeLog.v1 \
    267       LICENSE* README* \
    268     $PKG5/usr/doc/gcc-${VERSION}/libffi
    269     if [ -r ChangeLog ]; then
    270       cat ChangeLog | head -n 1000 > $PKG5/usr/doc/gcc-${VERSION}/libffi/ChangeLog
    271       touch -r ChangeLog $PKG5/usr/doc/gcc-${VERSION}/libffi/ChangeLog
    272     fi
    273   )
    274 
    275   mkdir -p $PKG5/usr/doc/gcc-${VERSION}/libjava
    276   ( cd libjava
    277     cp -a \
    278       COPYING* HACKING LIBGCJ_LICENSE \
    279       NEWS README* THANKS \
    280     $PKG5/usr/doc/gcc-${VERSION}/libjava
    281     if [ -r ChangeLog ]; then
    282       cat ChangeLog | head -n 1000 > $PKG5/usr/doc/gcc-${VERSION}/libjava/ChangeLog
    283       touch -r ChangeLog $PKG5/usr/doc/gcc-${VERSION}/libjava/ChangeLog
    284     fi
    285   )
    286 
    287   mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libmudflap
    288   ( cd libmudflap
    289     if [ -r ChangeLog ]; then
    290       cat ChangeLog | head -n 1000 > $PKG1/usr/doc/gcc-${VERSION}/libmudflap/ChangeLog
    291       touch -r ChangeLog $PKG1/usr/doc/gcc-${VERSION}/libmudflap/ChangeLog
    292     fi
    293   )
    294 
    295   mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libgomp
    296   ( cd libgomp
    297     if [ -r ChangeLog ]; then
    298       cat ChangeLog | head -n 1000 > $PKG1/usr/doc/gcc-${VERSION}/libgomp/ChangeLog
    299       touch -r ChangeLog $PKG1/usr/doc/gcc-${VERSION}/libgomp/ChangeLog
    300     fi
    301   )
    302  
    303   mkdir -p $PKG6/usr/doc/gcc-${VERSION}/libobjc
    304   ( cd libobjc
    305     if [ -r ChangeLog ]; then
    306       cat ChangeLog | head -n 1000 > $PKG6/usr/doc/gcc-${VERSION}/libobjc/ChangeLog
    307       touch -r ChangeLog $PKG6/usr/doc/gcc-${VERSION}/libobjc/ChangeLog
    308     fi
    309     cp -a \
    310       README* THREADS* \
    311     $PKG6/usr/doc/gcc-${VERSION}/libobjc
    312   )
    313    
    314   mkdir -p $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3
    315   ( cd libstdc++-v3
    316     cp -a \
    317       README* \
    318       doc/html/faq.html \
    319     $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3
    320     if [ -r ChangeLog ]; then
    321       cat ChangeLog | head -n 1000 > $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3/ChangeLog
    322       touch -r ChangeLog $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3/ChangeLog
    323     fi
    324   )
    325 
    326 )
    327 
    328 # Add fastjar to the gcc-java package:
    329 ( cd $TMP
    330   FASTJARVER=$(echo $CWD/fastjar-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)
    331   echo
    332   echo "Building fastjar-$FASTJARVER first"
    333   echo
    334   rm -rf fastjar-$FASTJARVER
    335   tar xvf $CWD/fastjar-$FASTJARVER.tar.xz || exit 1
    336   cd fastjar-$FASTJARVER || exit 1
    337   chown -R root:root .
    338   find . \
    339     \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
    340     -exec chmod 755 {} \; -o \
    341     \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
    342     -exec chmod 644 {} \;
    343   for patch in $CWD/fastjar-patches/*.gz ; do
    344     zcat $patch | patch -p1 --verbose || exit 1
    345   done
    346   CFLAGS="$SLKCFLAGS" \
    347   CXXFLAGS="$SLKCFLAGS" \
    348   ./configure \
    349      --prefix=/usr \
    350      --libdir=/usr/lib$LIBDIRSUFFIX \
    351      --mandir=/usr/man \
    352      --infodir=/usr/info \
    353      --build=$TARGET
    354   make $NUMJOBS || exit 1
    355   make install DESTDIR=$PKG5 || exit 1
    356   mkdir -p $PKG5/usr/doc/fastjar-$FASTJARVER
    357   cp -a \
    358     AUTHORS CHANGES COPYING* INSTALL NEWS README* TODO \
    359     $PKG5/usr/doc/fastjar-$FASTJARVER
    360   # If there's a ChangeLog, installing at least part of the recent history
    361   # is useful, but don't let it get totally out of control:
    362   if [ -r ChangeLog ]; then
    363     DOCSDIR=$(echo $PKG5/usr/doc/fastjar-$FASTJARVER)
    364     cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
    365     touch -r ChangeLog $DOCSDIR/ChangeLog
    366   fi
    367   find $PKG5 | xargs file | grep -e "executable" -e "shared object" | grep ELF \
    368     | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
    369   # Compress and if needed symlink the man pages:
    370   if [ -d $PKG5/usr/man ]; then
    371     ( cd $PKG5/usr/man
    372       for manpagedir in $(find . -type d -name "man*") ; do
    373         ( cd $manpagedir
    374           for eachpage in $( find . -type l -maxdepth 1) ; do
    375             ln -s $( readlink $eachpage ).gz $eachpage.gz
    376             rm $eachpage
    377           done
    378           gzip -9 *.?
    379         )
    380       done
    381     )
    382   fi
    383   # Compress info files, if any:
    384   if [ -d $PKG5/usr/info ]; then
    385     ( cd $PKG5/usr/info
    386       rm -f dir
    387       gzip -9 *
    388     )
    389   fi
    390   echo
    391 ) || exit 1
    392 
    393 # build gcc
    394 ( mkdir gcc.build.lnx;
    395   cd gcc.build.lnx;
    396 
    397   # If enough people need "treelang" support for it may be considered.
    398   #  --enable-languages=ada,c,c++,fortran,java,objc,treelang
    399   # I think it's incorrect to include this option (as it'll end up set
    400   # to i486 on x86 platforms), and we want to tune the binary structure
    401   # for i686, as that's where almost all of the optimization speedups
    402   # are to be found.
    403   # Correct me if my take on this is wrong.
    404   #  --with-cpu=$ARCH
    405  
    406   if [ "$ARCH" != "x86_64" ]; then
    407     GCC_ARCHOPTS="--with-arch=$ARCH"
    408   else
    409     GCC_ARCHOPTS="--disable-multilib"
    410   fi
    411  
    412   CFLAGS="$SLKCFLAGS" \
    413   CXXFLAGS="$SLKCFLAGS" \
    414   ../gcc-$VERSION/configure --prefix=/usr \
    415      --libdir=/usr/lib$LIBDIRSUFFIX \
    416      --mandir=/usr/man \
    417      --infodir=/usr/info \
    418      --enable-shared \
    419      --enable-bootstrap \
    420      --enable-languages=c,c++,fortran,go,java,lto,objc \
    421      --enable-threads=posix \
    422      --enable-checking=release \
    423      --enable-objc-gc \
    424      --with-system-zlib \
    425      --with-python-dir=/lib$LIBDIRSUFFIX/python2.7/site-packages \
    426      --disable-libunwind-exceptions \
    427      --enable-__cxa_atexit \
    428      --enable-libssp \
    429      --enable-lto \
    430      --with-gnu-ld \
    431      --verbose \
    432      --enable-java-home \
    433      --with-java-home=/usr/lib$LIBDIRSUFFIX/jvm/jre \
    434      --with-jvm-root-dir=/usr/lib$LIBDIRSUFFIX/jvm \
    435      --with-jvm-jar-dir=/usr/lib$LIBDIRSUFFIX/jvm/jvm-exports \
    436      --with-arch-directory=$LIB_ARCH \
    437      --with-antlr-jar=$ANTLJAR \
    438      --enable-java-awt=gtk \
    439      --disable-gtktest \
    440      $GCC_ARCHOPTS \
    441      --target=${TARGET} \
    442      --build=${TARGET} \
    443      --host=${TARGET} || exit 1
    444 
    445   # Start the build:
    446 
    447   # Include all debugging info (for now):
    448   make $NUMJOBS bootstrap;
    449 
    450   ( cd gcc
    451     make $NUMJOBS gnatlib GNATLIBCFLAGS="$SLKCFLAGS"
    452     # This wants a shared -ladd2line?
    453     #make gnatlib-shared
    454    
    455     CFLAGS="$SLKCFLAGS" \
    456     CXXFLAGS="$SLKCFLAGS" \
    457     make $NUMJOBS gnattools
    458   )
    459   make info
    460 
    461   # Set GCCCHECK=something to run the tests
    462   if [ ! -z $GCCCHECK ]; then
    463     make $NUMJOBS check
    464   fi
    465 
    466   make install DESTDIR=$PKG1
    467 
    468 # KLUDGE ALERT
    469 # These *gdb.py files are causing ldconfig to complain, so they are going
    470 # to be REMOVED for now...  at some point, they might be moved somewhere
    471 # else, in which case things should Just Work(tm).  Keep an eye on it.
    472 rm -f $PKG1/usr/lib${LIBDIRSUFFIX}/*gdb.py
    473 
    474 # Be sure the "specs" file is installed.
    475 if [ ! -r $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs ]; then
    476   cat stage1-gcc/specs > $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs
    477 fi
    478 
    479 # Make our 64bit gcc look for 32bit gcc binaries in ./32 subdirectory:
    480 if [ "$ARCH" = "x86_64" ]; then
    481   sed -i 's#;.\(:../lib !m64 m32;\)$#;32\1#' \
    482     $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs
    483 fi
    484 
    485 #  make ada.install-common DESTDIR=$PKG1
    486 #  make install-gnatlib DESTDIR=$PKG1
    487 make -i install-info DESTDIR=$PKG1
    488 
    489 chmod 755 $PKG1/usr/lib${LIBDIRSUFFIX}/libgcc_s.so.1
    490 
    491 # The (huge) static GNU java libraries are not packaged.  In nearly all
    492 # cases one or more dependencies will not be available as static anyway.
    493 rm -f $PKG1/usr/lib${LIBDIRSUFFIX}/libgcj.a
    494 rm -f $PKG1/usr/lib${LIBDIRSUFFIX}/libgcj-tools.a
    495 
    496 # Fix stuff up:
    497 ( cd $PKG1/usr/info ; rm dir ; gzip -9 * )
    498 ( cd $PKG1
    499   # *not* ${LIBDIRSUFFIX}
    500   mkdir -p lib
    501   cd lib
    502   ln -sf /usr/bin/cpp .
    503 )
    504 
    505 ( cd $PKG1/usr/bin
    506   mv g++ g++-gcc-$VERSION
    507   mv gcc gcc-$VERSION
    508   mv ${TARGET}-gfortran gfortran-gcc-$VERSION
    509   ln -sf g++-gcc-$VERSION g++
    510   ln -sf gcc-$VERSION gcc
    511   ln -sf g++ c++
    512   ln -sf gcc cc
    513   ln -sf gcc-$VERSION ${TARGET}-gcc
    514   ln -sf gcc-$VERSION ${TARGET}-gcc-$VERSION
    515   ln -sf gcc-ar ${TARGET}-gcc-ar
    516   ln -sf gcc-nm ${TARGET}-gcc-nm
    517   ln -sf gcc-ranlib ${TARGET}-gcc-ranlib
    518   ln -sf gcj ${TARGET}-gcj
    519   ln -sf gcjh ${TARGET}-gcjh
    520   ln -sf g++-gcc-$VERSION ${TARGET}-c++
    521   ln -sf g++-gcc-$VERSION ${TARGET}-g++
    522   ln -sf gfortran-gcc-$VERSION gfortran
    523   ln -sf gfortran-gcc-$VERSION ${TARGET}-gfortran
    524   ln -sf gfortran-gcc-$VERSION ${TARGET}-gfortran-$VERSION
    525   ln -sf gfortran-gcc-$VERSION ${TARGET}-g95
    526   ln -sf gfortran g95
    527   ln -sf gfortran f95
    528   ln -sf gfortran-gcc-$VERSION ${TARGET}-g77
    529   ln -sf gfortran g77
    530   ln -sf gfortran f77
    531 )
    532 
    533 ( cd $PKG1/usr/man
    534   gzip -9 */*
    535   cd man1
    536   ln -sf g++.1.gz c++.1.gz
    537   ln -sf gcc.1.gz cc.1.gz
    538 
    539 
    540 ## build the txz package
    541 #(
    542 #  cd $PKG1;
    543 #  makepkg -l y -c n $TMP/gcc-$VERSION-$ARCH-$BUILD.txz
    544 #)
    545 # keep a log
    546 ) 2>&1 | tee $TMP/gcc.build.log
    547 
    548 # OK, time to split the big package where needed:
    549 
    550 # gcc-g++:
    551 ( cd $PKG2
    552   mkdir -p usr/bin
    553   mv $PKG1/usr/bin/*++* usr/bin
    554   mkdir -p usr/include
    555   mv $PKG1/usr/include/c++ usr/include
    556   mkdir -p usr/lib${LIBDIRSUFFIX}
    557   mv $PKG1/usr/lib${LIBDIRSUFFIX}/*++* usr/lib${LIBDIRSUFFIX}
    558   mkdir -p usr/libexec/gcc/$TARGET/$VERSION
    559   mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/cc1plus usr/libexec/gcc/$TARGET/$VERSION/cc1plus
    560   mkdir -p usr/man/man1
    561   mv $PKG1/usr/man/man1/*++* usr/man/man1
    562 )
    563 
    564 # gcc-gfortran:
    565 ( cd $PKG3
    566   mkdir -p usr/bin
    567   mv $PKG1/usr/bin/*gfortran* usr/bin
    568   mv $PKG1/usr/bin/*95* usr/bin
    569   mv $PKG1/usr/bin/*77* usr/bin
    570   # Doesn't this seem like a logical idea?
    571   ( cd usr/bin ; ln -sf gfortran-gcc-${VERSION} fortran )
    572   mkdir -p usr/info
    573   mv $PKG1/usr/info/gfortran* usr/info
    574   mkdir -p usr/lib${LIBDIRSUFFIX}
    575   mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgfortran* usr/lib${LIBDIRSUFFIX}
    576   mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
    577   mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/finclude usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
    578   mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/libgfortran* usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
    579   mkdir -p usr/libexec/gcc/$TARGET/$VERSION
    580   mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/f951 usr/libexec/gcc/$TARGET/$VERSION/f951
    581   mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/libgfortran* usr/libexec/gcc/$TARGET/$VERSION
    582   mkdir -p usr/man/man1
    583   mv $PKG1/usr/man/man1/gfortran* usr/man/man1
    584 )
    585 
    586 # gcc-gnat:
    587 # First, relocate usr/bin/gnative2ascii to the gcc-java package so it
    588 # isn't matched and accidentally put in gcc-gnat:
    589 mkdir -p $PKG5/usr/bin
    590 mv $PKG1/usr/bin/gnative2ascii $PKG5/usr/bin
    591 # Now make the gcc-gnat package tree:
    592 ( cd $PKG4
    593   mkdir -p usr/bin
    594   mv $PKG1/usr/bin/gnat* usr/bin
    595   mv $PKG1/usr/bin/gpr* usr/bin
    596   mkdir -p usr/info
    597   mv $PKG1/usr/info/gnat* usr/info
    598   mkdir -p usr/libexec/gcc/$TARGET/$VERSION
    599   mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/gnat1 usr/libexec/gcc/$TARGET/$VERSION
    600   mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
    601   mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/adainclude usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
    602   mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/adalib usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
    603 )
    604 
    605 # gcc-java:
    606 ( cd $PKG5
    607   mkdir -p usr/bin
    608   mv $PKG1/usr/bin/aot-compile usr/bin
    609   mv $PKG1/usr/bin/addr2name.awk usr/bin
    610   # mv $PKG1/usr/bin/fastjar usr/bin
    611   mv $PKG1/usr/bin/gappletviewer usr/bin
    612   mv $PKG1/usr/bin/gc-analyze usr/bin
    613   mv $PKG1/usr/bin/*gcj* usr/bin
    614   mv $PKG1/usr/bin/gij usr/bin
    615   mv $PKG1/usr/bin/gjar usr/bin
    616   mv $PKG1/usr/bin/gjarsigner usr/bin
    617   mv $PKG1/usr/bin/gjdoc usr/bin
    618   mv $PKG1/usr/bin/gkeytool usr/bin
    619   mv $PKG1/usr/bin/grepjar usr/bin
    620   mv $PKG1/usr/bin/grmid usr/bin
    621   mv $PKG1/usr/bin/grmic usr/bin
    622   mv $PKG1/usr/bin/grmiregistry usr/bin
    623   mv $PKG1/usr/bin/gserialver usr/bin
    624   mv $PKG1/usr/bin/gtnameserv usr/bin
    625   mv $PKG1/usr/bin/gjavah usr/bin
    626   mv $PKG1/usr/bin/gorbd usr/bin
    627   mv $PKG1/usr/bin/jar usr/bin
    628   mv $PKG1/usr/bin/jcf-dump usr/bin
    629   mv $PKG1/usr/bin/jv-* usr/bin
    630   mv $PKG1/usr/bin/rmi* usr/bin
    631   mkdir -p usr/include/c++/$VERSION
    632   # Move some Java only C++ headers from the C++ package:
    633   mv $PKG2/usr/include/c++/$VERSION/{gcj,gnu,java,javax,org,sun} usr/include/c++/$VERSION
    634   mv $PKG1/usr/include/ffi.h usr/include
    635   mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
    636   mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jawt.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
    637   mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/ffi.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
    638   mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/ffitarget.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
    639   mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jawt_md.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
    640   mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jni.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
    641   mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jni_md.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
    642   mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jvmpi.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
    643   mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/libffi usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
    644   # aot-compile Python plugins:
    645   if [ ! -d $PKG1/usr/lib${LIBDIRSUFFIX}/python2.7 ]; then
    646     echo "NO $PKG1/usr/lib${LIBDIRSUFFIX}/python2.7 !"
    647     exit 1
    648   fi
    649   mv $PKG1/usr/lib${LIBDIRSUFFIX}/python2.7 usr/lib${LIBDIRSUFFIX}
    650   mkdir -p usr/info
    651   mv $PKG1/usr/info/gcj.* usr/info
    652   # mv $PKG1/usr/info/fastjar.* usr/info
    653   mkdir -p usr/lib${LIBDIRSUFFIX}
    654   mv $PKG1/usr/lib${LIBDIRSUFFIX}/libffi* usr/lib${LIBDIRSUFFIX}
    655   mv $PKG1/usr/lib${LIBDIRSUFFIX}/logging.properties usr/lib${LIBDIRSUFFIX}
    656   mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcj* usr/lib${LIBDIRSUFFIX}
    657   mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgcj* usr/lib${LIBDIRSUFFIX}
    658   mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgij* usr/lib${LIBDIRSUFFIX}
    659   mv $PKG1/usr/lib${LIBDIRSUFFIX}/lib-org* usr/lib${LIBDIRSUFFIX}
    660   mv $PKG1/usr/lib${LIBDIRSUFFIX}/security usr/lib${LIBDIRSUFFIX}
    661   mkdir -p usr/lib${LIBDIRSUFFIX}/pkgconfig
    662   mv $PKG1/usr/lib${LIBDIRSUFFIX}/pkgconfig/libgcj*.pc usr/lib${LIBDIRSUFFIX}/pkgconfig
    663   rmdir $PKG1/usr/lib${LIBDIRSUFFIX}/pkgconfig 2> /dev/null
    664   mkdir -p usr/libexec/gcc/$TARGET/$VERSION
    665   mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/jc1 usr/libexec/gcc/$TARGET/$VERSION
    666   mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/ecj1 usr/libexec/gcc/$TARGET/$VERSION
    667   mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/jvgenmain usr/libexec/gcc/$TARGET/$VERSION
    668   mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
    669   mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/gcj usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
    670   mkdir -p usr/man/man1
    671   mv $PKG1/usr/man/man1/aot-compile.1.gz usr/man/man1
    672   mv $PKG1/usr/man/man1/gappletviewer.1.gz usr/man/man1
    673   mv $PKG1/usr/man/man1/gc-analyze.1.gz usr/man/man1
    674   mv $PKG1/usr/man/man1/gcj.1.gz usr/man/man1
    675   mv $PKG1/usr/man/man1/gcjh.1.gz usr/man/man1
    676   mv $PKG1/usr/man/man1/gcj-dbtool.1.gz usr/man/man1
    677   mv $PKG1/usr/man/man1/gij.1.gz usr/man/man1
    678   mv $PKG1/usr/man/man1/gjar.1.gz usr/man/man1
    679   mv $PKG1/usr/man/man1/gjarsigner.1.gz usr/man/man1
    680   mv $PKG1/usr/man/man1/gjavah.1.gz usr/man/man1
    681   mv $PKG1/usr/man/man1/gjdoc.1.gz usr/man/man1
    682   mv $PKG1/usr/man/man1/gjnih.1.gz usr/man/man1
    683   mv $PKG1/usr/man/man1/gkeytool.1.gz usr/man/man1
    684   mv $PKG1/usr/man/man1/gnative2ascii.1.gz usr/man/man1
    685   mv $PKG1/usr/man/man1/gorbd.1.gz usr/man/man1
    686   mv $PKG1/usr/man/man1/grmic.1.gz usr/man/man1
    687   mv $PKG1/usr/man/man1/grmid.1.gz usr/man/man1
    688   mv $PKG1/usr/man/man1/grmiregistry.1.gz usr/man/man1
    689   mv $PKG1/usr/man/man1/gserialver.1.gz usr/man/man1
    690   mv $PKG1/usr/man/man1/gtnameserv.1.gz usr/man/man1
    691   mv $PKG1/usr/man/man1/jcf-dump.1.gz usr/man/man1
    692   mv $PKG1/usr/man/man1/jv-convert.1.gz usr/man/man1
    693   mv $PKG1/usr/man/man1/jv-scan.1.gz usr/man/man1
    694   mv $PKG1/usr/man/man1/rebuild-gcj-db.1.gz usr/man/man1
    695   mkdir -p usr/man/man3
    696   mv $PKG1/usr/man/man3/ffi* usr/man/man3
    697   mkdir -p usr/share
    698   mv $PKG1/usr/share/java usr/share
    699   # The ecj wrapper script:
    700   cat $CWD/ecj.sh | sed -e "s,@JAVADIR@,/usr/share/java," > usr/bin/ecj
    701   chmod 755 usr/bin/ecj
    702   # The JAVA_HOME compatibility links.
    703   # Caution: non-multilib arch-independent stuff! No lib64 here.
    704   mkdir -p usr/lib$LIBDIRSUFFIX
    705   mv $PKG1/usr/lib$LIBDIRSUFFIX/jvm* usr/lib$LIBDIRSUFFIX
    706   # And add the missing javac symlink:
    707   ln -s ../../../bin/ecj usr/lib$LIBDIRSUFFIX/jvm/bin/javac
    708   # Don't package libffi stuff anymore.  GCC will link the internal version
    709   # statically, and we'll need a newer one elsewhere.
    710   find . -name "ffi*.h" | xargs rm
    711   find . -name "libffi*" | xargs rm
    712   rm -f usr/man/man3/ffi*
    713   rm -f usr/info/libffi*
    714 )
    715 
    716 # gcc-objc:
    717 ( cd $PKG6
    718   mkdir -p usr/lib${LIBDIRSUFFIX}
    719   mv $PKG1/usr/lib${LIBDIRSUFFIX}/libobjc* usr/lib${LIBDIRSUFFIX}
    720   mkdir -p usr/libexec/gcc/$TARGET/$VERSION
    721   mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/cc1obj usr/libexec/gcc/$TARGET/$VERSION
    722   mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
    723   mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/objc usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
    724 )
    725 
    726 ## NOTE: Thought about this, because the precompiled headers are so large.
    727 ## Probably easier to keep everything together, though.
    728 ## gcc-g++-gch (precompiled c++ headers)
    729 #( cd $PKG7
    730 #  mkdir -p usr/include/c++/$VERSION/$TARGET/bits
    731 #  mv $PKG2/usr/include/c++/$VERSION/$TARGET/bits/stdc++.h.gch usr/include/c++/$VERSION/$TARGET/bits
    732 #)
    733 
    734 # gcc-go:
    735 ( cd $PKG8
    736   mkdir -p usr/bin
    737   mv $PKG1/usr/bin/*gccgo* usr/bin
    738   mkdir -p usr/libexec/gcc/$TARGET/$VERSION
    739   mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/go1 usr/libexec/gcc/$TARGET/$VERSION/go1
    740   mkdir -p usr/info
    741   mv $PKG1/usr/info/gccgo.info.gz usr/info
    742   mkdir -p usr/lib${LIBDIRSUFFIX}
    743   mv $PKG1/usr/lib${LIBDIRSUFFIX}/go usr/lib${LIBDIRSUFFIX}
    744   mv $PKG1/usr/lib${LIBDIRSUFFIX}/{libgo.la,libgo.so*,libgobegin.a} usr/lib${LIBDIRSUFFIX} || exit 1
    745   # Ordinarily Slackware doesn't package static libraries, but in this case
    746   # it is useful for deploying compiled binaries on machines that do not yet
    747   # have libgo.so.0.0.0.
    748   mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgo.a usr/lib${LIBDIRSUFFIX}
    749   mkdir -p usr/man/man1
    750   mv $PKG1/usr/man/man1/gccgo.1.gz usr/man/man1
    751 ) || exit 1
    752 
    753 # Filter all .la files (thanks much to Mark Post for the sed script):
    754 ( cd $TMP
    755   for file in $(find . -type f -name "*.la") ; do
    756     cat $file | sed -e 's%-L/gcc-[[:graph:]]* % %g' > $TMP/tmp-la-file
    757     cat $TMP/tmp-la-file > $file
    758   done
    759   rm $TMP/tmp-la-file
    760 )
    761 
    762 ## Strip bloated binaries and libraries:
    763 for dir in $PKG{1,2,3,4,5,6,8}; do
    764   ( cd $dir
    765     find . -name "lib*so*" -exec strip --strip-unneeded "{}" \;
    766     find . -name "lib*a" -exec strip -g "{}" \;
    767     strip --strip-unneeded usr/bin/* 2> /dev/null
    768     find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
    769     find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
    770   )
    771 done
    772 
    773 ( cd $PKG1
    774   makepkg -l y -c n $TMP/gcc-$VERSION-$ARCH-$BUILD.txz )
    775 ( cd $PKG2
    776   makepkg -l y -c n $TMP/gcc-g++-$VERSION-$ARCH-$BUILD.txz )
    777 ( cd $PKG3
    778   makepkg -l y -c n $TMP/gcc-gfortran-$VERSION-$ARCH-$BUILD.txz )
    779 ( cd $PKG4
    780   makepkg -l y -c n $TMP/gcc-gnat-$VERSION-$ARCH-$BUILD.txz )
    781 ( cd $PKG5
    782   makepkg -l y -c n $TMP/gcc-java-$VERSION-$ARCH-$BUILD.txz )
    783 ( cd $PKG6
    784   makepkg -l y -c n $TMP/gcc-objc-$VERSION-$ARCH-$BUILD.txz )
    785 #( cd $PKG7
    786 #  makepkg -l y -c n $TMP/gcc-g++-gch-$VERSION-$ARCH-$BUILD.txz )
    787 ( cd $PKG8
    788   makepkg -l y -c n $TMP/gcc-go-$VERSION-$ARCH-$BUILD.txz )
    789 
    790 echo
    791 echo "Slackware GCC package build complete!"
    792 echo
    793 
    794 
    795 ############ syn3 patches
    796 
    797 #backwards compatibility
    798 #NO: not allowed, just recompile the stuff..
    799 #P=`echo  /gcc-*""/package-gcc-g++/usr/lib/`
    800 #ln -s libstdc++.so $P/libstdc++.so.5 || exit 1
    80141
    80242############ make syn3 packages
Note: See TracChangeset for help on using the changeset viewer.