wok-undigest annotate gcc/receipt @ rev 1037

gcc: remove wrong error trigger
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon Oct 14 21:55:19 2013 +0000 (2013-10-14)
parents 415629c3d341
children 01af0e72b841
rev   line source
admin@1024 1 # SliTaz package receipt.
admin@1024 2
admin@1024 3 PACKAGE="gcc"
admin@1024 4 VERSION="4.8.1"
admin@1024 5 CATEGORY="development"
admin@1024 6 SHORT_DESC="The the GNU Compiler Collection."
admin@1024 7 MAINTAINER="pankso@slitaz.org"
pascal@1037 8 LICENSE="GPL2"
admin@1024 9 TARBALL="$PACKAGE-$VERSION.tar.bz2"
admin@1024 10 WEB_SITE="http://gcc.gnu.org/"
admin@1024 11 WGET_URL="ftp://gcc.gnu.org/pub/gcc/releases/gcc-$VERSION/$TARBALL"
admin@1024 12 TAGS="compiler C"
admin@1024 13
admin@1024 14 # We need gawk since busybox awk is not sufficient. We have BUILD_DEPENDS
admin@1024 15 # for cookutils that are not used by tazwok/cook-toolchain since it install
admin@1024 16 # and use it's own copy.
admin@1024 17 DEPENDS="binutils libgomp libobjc gcc-lib-base mpc-library elfutils"
admin@1024 18 BUILD_DEPENDS="elfutils mpc-library mpfr mpfr-dev gmp gmp-dev \
admin@1024 19 elfutils-dev"
admin@1024 20
admin@1024 21 # Rules to compile & install the temporary toolchain.
admin@1024 22 precook_tmp_toolchain()
admin@1024 23 {
admin@1024 24 report open-bloc
admin@1024 25 cd $src
admin@1024 26
admin@1024 27 # GCC requires the GMP, MPFR and MPC packages.
admin@1024 28 tazwok get-src mpfr --target=$PWD/mpfr || { report close-bloc; return 1; }
admin@1024 29 tazwok get-src gmp --target=$PWD/gmp || { report close-bloc; return 1; }
admin@1024 30 tazwok get-src mpc-library --target=$PWD/mpc || { report close-bloc; return 1; }
admin@1024 31
admin@1024 32 report step "Running compilation"
admin@1024 33
admin@1024 34 # Use libiberty.a from binutils.
admin@1024 35 sed -i 's/install_to_$(INSTALL_DEST) //' \
admin@1024 36 libiberty/Makefile.in || return 1
admin@1024 37
admin@1024 38 # Build it in a separate directory.
admin@1024 39 mkdir ../gcc-build
admin@1024 40 cd ../gcc-build
admin@1024 41
admin@1024 42 { $src/configure \
admin@1024 43 --target=$HOST_SYSTEM \
admin@1024 44 --disable-nls --disable-shared --disable-multilib \
admin@1024 45 --disable-decimal-float --disable-threads \
admin@1024 46 --disable-libmudflap --disable-libssp \
admin@1024 47 --disable-libgomp --enable-languages=c \
admin@1024 48 --with-gmp-include=$(pwd)/gmp --with-gmp-lib=$(pwd)/gmp/.libs \
admin@1024 49 --without-ppl --without-cloog &&
admin@1024 50 make &&
admin@1024 51 make install
pascal@1037 52 } | sed 's/: execvp: No such file/: execvp: no such file/' ||
pascal@1037 53 { report close-bloc; return 1; }
admin@1024 54
admin@1024 55 # See LFS for more detais about this.
admin@1024 56 ln -s libgcc.a `$HOST_SYSTEM-gcc -print-libgcc-file-name | \
admin@1024 57 sed 's/libgcc/&_eh/'`
admin@1024 58 report close-bloc
admin@1024 59 }
admin@1024 60
admin@1024 61 cook_tmp_toolchain()
admin@1024 62 {
admin@1024 63 report open-bloc
admin@1024 64 cd $src
admin@1024 65 patch -Np1 -i $stuff/gcc-$VERSION-startfiles_fix-1.patch || { report close-bloc; return 1; }
admin@1024 66
admin@1024 67 # Details about theses lines are in LFS book.
admin@1024 68 sed 's@\./fixinc\.sh@-c true@' -i gcc/Makefile.in
admin@1024 69 sed 's/^T_CFLAGS =$/& -fomit-frame-pointer/' -i gcc/Makefile.in
admin@1024 70 for file in \
admin@1024 71 $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
admin@1024 72 do
admin@1024 73 sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
admin@1024 74 -e 's@/usr@/tools@g' -i $file
admin@1024 75 echo '
admin@1024 76 #undef STANDARD_INCLUDE_DIR
admin@1024 77 #define STANDARD_INCLUDE_DIR 0
admin@1024 78 #define STANDARD_STARTFILE_PREFIX_1 ""
admin@1024 79 #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
admin@1024 80 done
admin@1024 81
admin@1024 82 if [ "$ARCH" = x86_64 ]; then
admin@1024 83 for file in $(find gcc/config -name t-linux64) ; do
admin@1024 84 sed '/MULTILIB_OSDIRNAMES/d' -i $file
admin@1024 85 done
admin@1024 86 fi
admin@1024 87
admin@1024 88 # GCC requires the GMP, MPFR and MPC packages.
admin@1024 89 tazwok get-src mpfr --target=$PWD/mpfr || { report close-bloc; return 1; }
admin@1024 90 tazwok get-src gmp --target=$PWD/gmp || { report close-bloc; return 1; }
admin@1024 91 tazwok get-src mpc-library --target=$PWD/mpc || { report close-bloc; return 1; }
admin@1024 92
admin@1024 93 report step "Running compilation"
admin@1024 94
admin@1024 95 # Use libiberty.a from binutils.
admin@1024 96 sed -i 's/install_to_$(INSTALL_DEST) //' \
admin@1024 97 libiberty/Makefile.in || return 1
admin@1024 98
admin@1024 99 # Build it in a separate directory.
admin@1024 100 mkdir ../gcc-build
admin@1024 101 cd ../gcc-build
admin@1024 102
admin@1024 103 { CC="$HOST_SYSTEM-gcc -B/tools/lib/" \
admin@1024 104 AR=$HOST_SYSTEM-ar RANLIB=$HOST_SYSTEM-ranlib \
admin@1024 105 $src/configure \
admin@1024 106 --with-local-prefix=/tools --enable-clocale=gnu \
admin@1024 107 --enable-shared --enable-threads=posix \
admin@1024 108 --enable-__cxa_atexit --enable-languages=c,c++ \
admin@1024 109 --disable-libstdcxx-pch --disable-multilib \
admin@1024 110 --disable-bootstrap --disable-libgomp \
admin@1024 111 --with-gmp-include=$(pwd)/gmp --with-gmp-lib=$(pwd)/gmp/.libs \
admin@1024 112 --without-ppl --without-cloog &&
admin@1024 113 make &&
admin@1024 114 make install
admin@1024 115 } || { report close-bloc; return 1; }
admin@1024 116 ln -s gcc /tools/bin/cc
admin@1024 117 report close-bloc
admin@1024 118 }
admin@1024 119
admin@1024 120 # Rules to configure and make the package.
admin@1024 121 compile_rules()
admin@1024 122 {
admin@1024 123 cd $src
admin@1024 124
admin@1024 125 # SliTaz is a Busybox based OS, why we so small and fast. Using gawk by
admin@1024 126 # default to build package will not ensure package work with Busybox awk
admin@1024 127 # and so should NOT be use to cook.
admin@1024 128 if [ -x /usr/bin/cook ]; then
admin@1024 129 [ -d "/var/lib/tazpkg/installed/gawk" ] || tazpkg get-install gawk
admin@1024 130 fi
admin@1024 131
admin@1024 132 # Package slitaz-toolchain use 'cook --options' when rebuilding
admin@1024 133 # the full SliTaz toolchain.
admin@1024 134 [ "$2" == "--first-pass" ] && opt=$2
admin@1024 135 [ "$3" == "--first-pass" ] && opt=$3
admin@1024 136
admin@1024 137 # Use libiberty.a from binutils.
admin@1024 138 sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in || return 1
admin@1024 139
admin@1024 140 case $ARCH in
admin@1024 141 i?86) sed -i 's/^T_CFLAGS =$/& -fomit-frame-pointer/' \
admin@1024 142 gcc/Makefile.in ;;
admin@1024 143 esac
admin@1024 144
admin@1024 145 #sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
admin@1024 146
admin@1024 147 mkdir -p ../gcc-build && cd ../gcc-build
admin@1024 148
admin@1024 149 # This is the default GCC and we want a native build to cross compile after.
admin@1024 150 # SliTaz target i486 host so we need a native i486 build for GCC.
admin@1024 151 case "$opt" in
admin@1024 152 --first-pass)
admin@1024 153 # Used by slitaz-toolchain when rebuilding the full toolchain.
admin@1024 154 echo "cook: configure GCC for: toolchain first pass"
admin@1024 155 $src/configure \
admin@1024 156 --libexecdir=/usr/lib \
admin@1024 157 --disable-nls \
admin@1024 158 --enable-shared \
admin@1024 159 --enable-languages=c,c++ \
admin@1024 160 --disable-libstdcxx-pch \
admin@1024 161 --enable-__cxa_atexit \
admin@1024 162 --enable-clocale=gnu \
admin@1024 163 --enable-threads=posix \
admin@1024 164 --disable-bootstrap \
admin@1024 165 --build=$HOST_SYSTEM \
admin@1024 166 --host=$HOST_SYSTEM &&
admin@1024 167 make && make install ;;
admin@1024 168 *)
admin@1024 169 # Used by default to produce a full featured X86 GCC compiler.
admin@1024 170 echo "cook: configure GCC for: final/full build"
admin@1024 171 $src/configure \
admin@1024 172 --libexecdir=/usr/lib \
admin@1024 173 --enable-nls \
admin@1024 174 --enable-languages=c,c++,objc,fortran \
admin@1024 175 --enable-shared \
admin@1024 176 --with-system-zlib \
admin@1024 177 --enable-clocale=gnu \
admin@1024 178 --enable-objc-gc \
admin@1024 179 --enable-__cxa_atexit \
admin@1024 180 --enable-lto \
admin@1024 181 --enable-threads=posix \
admin@1024 182 --disable-bootstrap \
admin@1024 183 --with-pkgversion="SliTaz" \
admin@1024 184 --with-tune=$ARCH \
admin@1024 185 --build=$HOST_SYSTEM \
admin@1024 186 --host=$HOST_SYSTEM &&
admin@1024 187 make && make install ;;
admin@1024 188 esac
admin@1024 189 }
admin@1024 190
admin@1024 191 # Rules to gen a SliTaz package suitable for Tazpkg.
admin@1024 192 genpkg_rules()
admin@1024 193 {
admin@1024 194 mkdir -p $fs/usr/share
admin@1024 195 cp -a $install/usr/bin $fs/usr
admin@1024 196
admin@1024 197 # Copy all libs. Remove libgcc_s.so and libstdc++.so they goes in
admin@1024 198 # the gcc-lib-base package.
admin@1024 199 cp -a $install/usr/lib $fs/usr
admin@1024 200 rm -f $fs/usr/lib/libgcc_s.so*
admin@1024 201 rm -f $fs/usr/lib/libstdc++.so*
admin@1024 202 rm -f $fs/usr/lib/libgomp.so*
admin@1024 203 rm -f $fs/usr/lib/libobjc.so*
admin@1024 204
admin@1024 205 # Include files.
admin@1024 206 cp -a $install/usr/include $fs/usr
admin@1024 207
admin@1024 208 # Gfortran goes in gfortran package.
admin@1024 209 rm -f $fs/usr/bin/*gfortran
admin@1024 210 rm -f $fs/usr/lib/libgfortran*
admin@1024 211 rm -f $fs/usr/lib/gcc/*/$VERSION/libgfortran*
admin@1024 212 rm -rf $fs/usr/lib/gcc/*/$VERSION/f*
admin@1024 213
admin@1024 214 # Remove build directory.
admin@1024 215 rm -rf $WOK/$PACKAGE/source/$PACKAGE-build
admin@1024 216 rm -rf $WOK/$PACKAGE/$PACKAGE-build
admin@1024 217 }
admin@1024 218
admin@1024 219 # Post install commands for Tazpkg.
admin@1024 220 post_install()
admin@1024 221 {
admin@1024 222 local root
admin@1024 223 root=$1
admin@1024 224 echo "Processing post-install commands..."
admin@1024 225 if [ ! -f "$root/lib/cpp" ]; then
admin@1024 226 ln -s ../usr/bin/cpp $root/lib
admin@1024 227 fi
admin@1024 228 if [ ! -f "$root/usr/bin/cc" ]; then
admin@1024 229 ln -s gcc $root/usr/bin/cc
admin@1024 230 fi
admin@1024 231 }