cookutils annotate cross @ rev 450

cross: install kernel headers in source then copy, add libc_cv_forced_unwind=yes to glibc-headers build
author Christophe Lincoln <pankso@slitaz.org>
date Thu May 31 15:28:32 2012 +0200 (2012-05-31)
parents 19ff6f323fe4
children e8f5f3a99544
rev   line source
pankso@361 1 #!/bin/sh
pankso@361 2 #
pankso@361 3 # Cross - Help build a cross toolchain on SliTaz.
pankso@361 4 #
pankso@361 5 # Copyright 2012 (C) SliTaz GNU/Linux - BSD License
pankso@361 6 # Author: Christophe Lincoln <pankso@slitaz.org>
pankso@361 7 #
pankso@361 8 . /lib/libtaz.sh
pankso@370 9
pankso@370 10 [ -f "/etc/slitaz/cross.conf" ] && . /etc/slitaz/cross.conf
pankso@370 11 [ -f "cross.conf" ] && . ./cross.conf
pankso@361 12
pankso@374 13 # Handle --config=/path/to/cross.conf
pankso@374 14 [ "$config" ] && . $config
pankso@412 15 source=$WORK/source
pankso@441 16 tools=$WORK/tools
pankso@441 17 sysroot=$WORK/sysroot
pankso@412 18 logdir=$WORK/log
pankso@374 19
pankso@361 20 # Help and usage.
pankso@361 21 usage() {
pankso@361 22 cat << EOT
pankso@361 23
pankso@361 24 Usage: $(basename $0) command --option
pankso@361 25
pankso@361 26 Commands:
pankso@361 27 howto Man alike and howto
paul@382 28 info Display cross-tools info
pankso@361 29 testsuite Execute a small testsuite
pankso@421 30 check Check build host environment
pankso@361 31 download Download necessary sources
pankso@361 32 show-log Show a compile log
pankso@361 33 binutils Compile Binutils
pankso@421 34 linux-headers Install Kernel headers
pankso@361 35 gcc-static Compile GCC static
pankso@361 36 glibc Compile GNU Glibc
pankso@361 37 gcc-final Compile final GCC
pankso@361 38 compile Compile everything at once
pankso@419 39 clean Clean-up build environment
pankso@441 40 clean-tools Clean: $tools
pankso@419 41 gen-prebuilt Create an prebuilt toolchain archive
pankso@361 42
pankso@361 43 EOT
pankso@361 44 }
pankso@361 45
pankso@420 46 # Prebuilt README
pankso@420 47 prebuilt_readme() {
pankso@420 48 echo -n "Creating toolchain README..."
pankso@420 49 cat >> $package/README << EOT
pankso@420 50
pankso@420 51 SliTaz Prebuilt $ARCH cross toolchain
pankso@420 52 ================================================================================
pankso@420 53 Move this $ARCH cross compilation toolchain to /usr/cross then add tools
pankso@420 54 to your PATH environment and test the toolchain:
pankso@420 55
pankso@441 56 # mv $ARCH /cross
pankso@441 57 # export PATH=\$PATH:/cross/$ARCH/tools/bin
pankso@420 58
pankso@420 59 # echo 'int main() { return 0; }' > test.c
pankso@420 60 # $TARGET-gcc -v -o test.out test.c
pankso@420 61 # readelf -h test.out
pankso@420 62
pankso@420 63 ================================================================================
pankso@420 64
pankso@420 65 EOT
pankso@420 66 status
pankso@420 67 }
pankso@420 68
pankso@361 69 # Make sure we have all directories.
pankso@361 70 init_compile() {
pankso@441 71 unset CFLAGS CXXFLAGS
pankso@361 72 export LC_ALL=POSIX LANG=POSIX
pankso@441 73 export PATH=$PATH:$tools/bin
pankso@400 74 export CROSS_COMPILE=${TARGET}-
pankso@441 75 mkdir -p $source $logdir $sysroot $tools
pankso@441 76 echo "Tools prefix : --prefix=$tools "
pankso@441 77 echo "Target sysroot : --with-sysroot=$sysroot"
pankso@361 78 cd $source
pankso@361 79 }
pankso@361 80
pankso@361 81 # Get source if not yet in $SRC.
pankso@361 82 download_src() {
pankso@361 83 mkdir -p $SRC && cd $SRC
pankso@421 84 [ -f "$BINUTILS_TARBALL" ] || wget $BINUTILS_WGET
pankso@421 85 [ -f "$LINUX_TARBALL" ] || wget $LINUX_WGET
pankso@421 86 [ -f "$GLIBC_TARBALL" ] || wget $GLIBC_WGET
pankso@421 87 [ -f "$GCC_TARBALL" ] || wget $GCC_WGET
pankso@403 88 }
pankso@403 89
pankso@361 90 # 1. Binutils
pankso@361 91 binutils() {
pankso@408 92 init_compile
pankso@411 93 rm -rf binutils-$BINUTILS_VERSION
pankso@421 94 echo "Extracting: $BINUTILS_TARBALL"
pankso@421 95 tar xjf $SRC/$BINUTILS_TARBALL
pankso@421 96 echo "Configure: $BINUTILS_ARGS"
pankso@361 97 cd binutils-$BINUTILS_VERSION
pankso@361 98 ./configure \
pankso@441 99 --prefix=$tools \
pankso@361 100 --target=$TARGET \
pankso@440 101 --enable-plugins \
pankso@440 102 --enable-threads \
pankso@361 103 --enable-targets=$BUILD_SYSTEM \
pankso@441 104 --with-sysroot=$sysroot \
pankso@442 105 $BINUTILS_ARGS &&
pankso@361 106 make || exit 1
pankso@361 107 make install
pankso@421 108 echo "cross: binutils compiled on: $(date)"
pankso@361 109 }
pankso@361 110
pankso@421 111 # 2. Kernel headers could use CROSS_COMPILE but gcc is not yet build.
pankso@421 112 linux_headers() {
pankso@421 113 init_compile
pankso@421 114 echo "Extracting: $LINUX_TARBALL"
pankso@421 115 tar xjf $SRC/$LINUX_TARBALL
pankso@421 116 cd linux-$LINUX_VERSION
pankso@421 117 make mrproper
pankso@421 118 make ARCH=$ARCH headers_check
pankso@450 119 make ARCH=$ARCH headers_install \
pankso@450 120 INSTALL_HDR_PATH=$source/linux-headers
pankso@450 121 echo "Copying headers to: $sysroot/usr"
pankso@450 122 cp -a $source/linux-headers/* $sysroot/usr
pankso@421 123 }
pankso@421 124
pankso@447 125 # 2.1 Glibc headers needed to compile x86_64 gcc-static.
pankso@447 126 glibc_headers() {
pankso@447 127 init_compile
pankso@447 128 echo "Extracting: $GLIBC_TARBALL"
pankso@447 129 tar xjf $SRC/$GLIBC_TARBALL
pankso@447 130 rm -rf glibc-headers
pankso@447 131 mkdir glibc-headers && cd glibc-headers
pankso@450 132 libc_cv_forced_unwind=yes \
pankso@450 133 libc_cv_c_cleanup=yes \
pankso@447 134 ../glibc-$GLIBC_VERSION/configure \
pankso@447 135 --prefix=/usr \
pankso@447 136 --host=$TARGET \
pankso@447 137 --with-headers=$sysroot/usr/include \
pankso@447 138 --without-cvs \
pankso@447 139 --disable-sanity-checks \
pankso@447 140 --enable-kernel=2.6.32 &&
pankso@447 141 make -k install-headers install_root=$sysroot
pankso@448 142 # Fixes
pankso@448 143 mkdir -p $sysroot/usr/include/gnu
pankso@448 144 touch $sysroot/usr/include/gnu/stubs.h
pankso@448 145 cp bits/stdio_lim.h $sysroot/usr/include/bits
pankso@447 146 }
pankso@447 147
pankso@421 148 # 3. GCC static (first pass)
pankso@361 149 gcc_static() {
pankso@408 150 init_compile
pankso@421 151 echo "Extracting: $GCC_TARBALL"
pankso@421 152 tar xjf $SRC/$GCC_TARBALL
pankso@421 153 echo "Configure: $GCC_STATIC_ARGS"
pankso@403 154 # Arch fixes and work around
pankso@403 155 case "$ARCH" in
pankso@403 156 x86_64)
pankso@403 157 # GCC wants Glib headers in cross environment (not tested
pankso@403 158 # with sysroot) Should we install glibc-headers before ?
pankso@441 159 echo "Try with eglibc or install glibc-headers first"
pankso@441 160 #rm -f $tools/$TARGET/include
pankso@441 161 #ln -s /usr/include $tools/$TARGET/include
pankso@441 162 ;;
pankso@403 163 esac
pankso@361 164 rm -rf gcc-static
pankso@361 165 mkdir gcc-static && cd gcc-static
pankso@361 166 ../gcc-$GCC_VERSION/configure \
pankso@441 167 --prefix=$tools \
pankso@441 168 --libexec=$tools/lib \
pankso@361 169 --target=$TARGET \
pankso@361 170 --disable-shared \
pankso@361 171 --disable-threads \
pankso@441 172 --disable-libgomp \
pankso@441 173 --disable-libmudflap \
pankso@441 174 --disable-libssp \
pankso@361 175 --without-headers \
pankso@361 176 --with-newlib \
pankso@441 177 --with-sysroot=$sysroot \
pankso@442 178 $GCC_STATIC_ARGS &&
pankso@361 179 make all-gcc all-target-libgcc || exit 1
pankso@361 180 make install-gcc install-target-libgcc
pankso@421 181 echo "cross: gcc-static compiled on: $(date)"
pankso@403 182 }
pankso@403 183
pankso@361 184 # 4. GNU Glibc
pankso@361 185 glibc() {
pankso@408 186 init_compile
pankso@421 187 echo "Extracting: $GLIBC_TARBALL"
pankso@421 188 tar xjf $SRC/$GLIBC_TARBALL
pankso@421 189 echo "Configure: $GLIBC_ARGS"
pankso@400 190 # Some arch may need glibc-ports and custom CFLAGS
pankso@403 191 case "$ARCH" in
pankso@361 192 arm)
pankso@433 193 export CFLAGS="-march=armv6 -O2"
pankso@362 194 [ -f "$SRC/glibc-ports-$GLIBC_VERSION.tar.bz2" ] || wget \
pankso@362 195 http://ftp.gnu.org/gnu/libc/glibc-ports-$GLIBC_VERSION.tar.bz2 \
pankso@362 196 -O $SRC/glibc-ports-$GLIBC_VERSION.tar.bz2 || exit 1
pankso@361 197 echo "Extracting: glibc-ports-$GLIBC_VERSION.tar.bz2"
pankso@361 198 rm -rf glibc-$GLIBC_VERSION/ports
pankso@361 199 tar xjf $SRC/glibc-ports-$GLIBC_VERSION.tar.bz2
pankso@449 200 mv glibc-ports-$GLIBC_VERSION glibc-$GLIBC_VERSION/ports
pankso@449 201 libexec=/usr/lib/glibc ;;
pankso@418 202 x86_64)
pankso@449 203 #export CFLAGS="-march=nocona -O2 -pipe"
pankso@449 204 ccflags="-m64"
pankso@449 205 libexec=/usr/lib64/glibc ;;
pankso@361 206 esac
pankso@441 207 # Disable linking to libgcc_eh
pankso@441 208 cd glibc-$GLIBC_VERSION
pankso@441 209 cp Makeconfig Makeconfig.orig
pankso@441 210 sed -e 's/-lgcc_eh//g' Makeconfig.orig > Makeconfig
pankso@441 211 cd ..
pankso@421 212 echo "CFLAGS: $CFLAGS"
pankso@441 213 rm -rf glibc-build
pankso@361 214 mkdir -p glibc-build && cd glibc-build
pankso@365 215 BUILD_CC="gcc" \
pankso@418 216 CC="${TARGET}-gcc $ccflags" \
pankso@441 217 AR="${TARGET}-ar" \
pankso@441 218 RANLIB="${TARGET}-ranlib" \
pankso@361 219 libc_cv_forced_unwind=yes \
pankso@361 220 libc_cv_c_cleanup=yes \
pankso@361 221 ../glibc-$GLIBC_VERSION/configure \
pankso@441 222 --prefix=/usr \
pankso@449 223 --libexec=$libexec \
pankso@361 224 --host=$TARGET \
pankso@441 225 --with-headers=$sysroot/usr/include \
pankso@441 226 --with-binutils=$tools/bin \
pankso@425 227 --enable-kernel=2.6.32 \
pankso@442 228 $GLIBC_ARGS &&
pankso@361 229 make || exit 1
pankso@441 230 make install_root=$sysroot install
pankso@403 231 # Work around to let GCC find Glibc headers.
pankso@441 232 #cd $sysroot
pankso@441 233 #ln -s usr/include sys-include
pankso@421 234 echo "cross: glibc compiled on: $(date)"
pankso@361 235 }
pankso@361 236
pankso@441 237 # 4. Eglibc: always use --prefix=/usr
pankso@441 238 eglibc() {
pankso@441 239 init_compile
pankso@441 240 rm -rf eglibc-build eglibc-$EGLIBC_VERSION
pankso@441 241 echo "Extracting: $EGLIBC_TARBALL"
pankso@441 242 tar xjf $SRC/$EGLIBC_TARBALL
pankso@441 243 # Some arch may need glibc-ports and custom CFLAGS
pankso@441 244 case "$ARCH" in
pankso@441 245 arm)
pankso@441 246 export CFLAGS="-march=armv6 -O2"
pankso@441 247 if [ ! -d "$source/eglibc-ports-$EGLIBC_VERSION" ]; then
pankso@441 248 echo "Cloning $EGLIBC_WGET/ports"
pankso@441 249 svn co $EGLIBC_WGET/ports eglibc-ports-$EGLIBC_VERSION >/dev/null
pankso@441 250 fi
pankso@449 251 cp -a eglibc-ports-$EGLIBC_VERSION eglibc-$EGLIBC_VERSION/ports
pankso@449 252 libexec=/usr/lib/eglibc ;;
pankso@441 253 x86_64)
pankso@449 254 #export CFLAGS="-march=nocona -O2 -pipe"
pankso@449 255 ccflags="-m64"
pankso@449 256 libexec=/usr/lib64/eglibc ;;
pankso@441 257 esac
pankso@441 258 # Disable linking to libgcc_eh
pankso@441 259 cd eglibc-$EGLIBC_VERSION
pankso@441 260 cp Makeconfig Makeconfig.orig
pankso@441 261 sed -e 's/-lgcc_eh//g' Makeconfig.orig > Makeconfig
pankso@441 262 cd ..
pankso@441 263 mkdir -p eglibc-build && cd eglibc-build
pankso@441 264 # config.cache
pankso@441 265 cat > config.cache << EOT
pankso@441 266 libc_cv_forced_unwind=yes
pankso@441 267 libc_cv_c_cleanup=yes
pankso@441 268 libc_cv_gnu89_inline=yes
pankso@441 269 EOT
pankso@441 270 BUILD_CC="gcc" \
pankso@441 271 CC="${TARGET}-gcc $ccflags" \
pankso@441 272 AR="${TARGET}-ar" \
pankso@441 273 RANLIB="${TARGET}-ranlib" \
pankso@441 274 ../eglibc-$EGLIBC_VERSION/configure \
pankso@441 275 --prefix=/usr \
pankso@449 276 --libexec=$libexec \
pankso@441 277 --host=$TARGET \
pankso@441 278 --with-headers=$sysroot/usr/include \
pankso@441 279 --with-binutils=$tools/bin \
pankso@441 280 --enable-kernel=2.6.32 \
pankso@441 281 --with-__thread \
pankso@441 282 --without-gd \
pankso@441 283 --without-cvs \
pankso@441 284 --cache-file=config.cache \
pankso@442 285 $EGLIBC_ARGS &&
pankso@441 286 make || exit 1
pankso@441 287 make install_root=$sysroot install
pankso@449 288 # The rpc headers (RPC is no longer in eglibc <2.13)
pankso@445 289 #
pankso@445 290 #if [ "$EGLIBC_VERSION" -gt "2.13" ]; then
pankso@445 291 #rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
pankso@445 292 #yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
pankso@445 293 #rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
pankso@445 294 #cd sunrpc/rpcsvc
pankso@445 295 #for r in ${rpcsvc}; do
pankso@449 296 #h=$(echo $r|sed -e's,\.x$,.h,')
pankso@449 297 #rpcgen -h $r -o $h || echo "unable to generate header for $r"
pankso@445 298 #done
pankso@445 299 #fi
pankso@441 300 }
pankso@441 301
pankso@361 302 # 5. GCC final
pankso@361 303 gcc_final() {
pankso@408 304 init_compile
pankso@361 305 if [ ! -d "gcc-$GCC_VERSION" ]; then
pankso@421 306 echo "Extracting: $GCC_TARBALL"
pankso@421 307 tar xjf $SRC/$GCC_TARBALL
pankso@361 308 fi
pankso@421 309 echo "Configure: $GCC_FINAL_ARGS"
pankso@441 310 rm -rf gcc-build
pankso@421 311 mkdir -p gcc-build && cd gcc-build
pankso@441 312 AR=ar \
pankso@361 313 ../gcc-$GCC_VERSION/configure \
pankso@441 314 --prefix=$tools \
pankso@441 315 --libexec=$tools/lib \
pankso@361 316 --target=$TARGET \
pankso@361 317 --enable-shared \
pankso@361 318 --enable-c99 \
pankso@361 319 --enable-long-long \
pankso@361 320 --enable-__cxa_atexit \
pankso@440 321 --with-system-zlib \
pankso@440 322 --enable-plugin \
pankso@440 323 --disable-multilib \
pankso@440 324 --disable-libssp \
pankso@441 325 --disable-checking \
pankso@441 326 --disable-werror \
pankso@400 327 --with-pkgversion="SliTaz" \
pankso@440 328 --with-bugurl="https://bugs.slitaz.org/" \
pankso@442 329 --with-sysroot=$sysroot \
pankso@442 330 $GCC_FINAL_ARGS &&
pankso@441 331 make AS_FOR_TARGET="${TARGET}-as" \
pankso@441 332 LD_FOR_TARGET="${TARGET}-ld" || exit 1
pankso@441 333 make install
pankso@421 334 echo "cross: GCC final compiled on: $(date)"
pankso@361 335 }
pankso@361 336
pankso@361 337 #
pankso@361 338 # Commands
pankso@361 339 #
pankso@361 340
pankso@361 341 case "$1" in
pankso@361 342 howto|man)
pankso@361 343 doc=/usr/share/doc/cookutils/cross.txt
pankso@361 344 [ -f "$doc" ] && less -E $doc ;;
pankso@361 345 info)
pankso@361 346 init_compile
pankso@361 347 CC=${TARGET}-gcc
paul@382 348 echo -e "\nCross Toolchain information" && separator
pankso@374 349 [ "$config" ] && echo "Config file : $config"
pankso@361 350 cat << EOT
pankso@374 351 Target arch : $ARCH
pankso@374 352 C Compiler : $CC
pankso@374 353 Build directory : $WORK
pankso@441 354 Tools prefix : $tools/bin
pankso@441 355 Arch sysroot : $sysroot
pankso@361 356 EOT
pankso@361 357 separator && echo ""
pankso@361 358 echo "GCC version" && separator
pankso@441 359 if [ -x "$tools/bin/$CC" ]; then
pankso@374 360 $CC -v
pankso@374 361 else
pankso@374 362 echo "No C compiler. To build a toolchain run: cross compile"
pankso@441 363 echo "Missing: $tools/bin/$CC"
pankso@374 364 fi
pankso@361 365 separator && echo "" ;;
pankso@361 366 testsuite)
pankso@361 367 init_compile
pankso@361 368 echo "[COMPILING] $TARGET-gcc -v -Wall -o test.out test.c" \
pankso@361 369 | tee $logdir/testsuite.log
pankso@361 370 echo 'int main() { return 0; }' > test.c
pankso@361 371 $TARGET-gcc -v -Wall -o test.out test.c 2>&1 | tee -a $logdir/testsuite.log
pankso@361 372 if [ -x /usr/bin/file ]; then
pankso@361 373 echo -e "\n[CHECKING] file test.out" | tee -a $logdir/testsuite.log
pankso@361 374 file test.out | tee -a $logdir/testsuite.log
pankso@361 375 fi
pankso@361 376 echo -e "\n[CHECKING] readelf -h test.out" | tee -a $logdir/testsuite.log
pankso@361 377 readelf -h test.out | tee -a $logdir/testsuite.log ;;
pankso@421 378 check)
pankso@421 379 echo "Checking: build system packages"
pankso@421 380 for pkg in slitaz-toolchain mpfr mpfr-dev gmp gmp-dev mpc-library \
pankso@421 381 gawk autoconf; do
pankso@361 382 if [ ! -d "/var/lib/tazpkg/installed/$pkg" ]; then
pankso@361 383 echo "Missing packages: $pkg"
pankso@421 384 if [ -x /usr/sbin/spk-add ]; then
pankso@421 385 spk-add $pkg
pankso@421 386 else
pankso@421 387 tazpkg -gi $pkg
pankso@421 388 fi
pankso@361 389 fi
pankso@421 390 done
pankso@441 391 echo "Using: --with-sysroot=$sysroot" ;;
pankso@361 392 download)
pankso@361 393 download_src ;;
pankso@361 394 show-log)
pankso@361 395 pkg=$2
pankso@371 396 log=$logdir/$pkg.log
pankso@371 397 if [ ! -f "$log" ]; then
pankso@371 398 echo "No log file found for: $pkg" && exit 1
pankso@371 399 fi
pankso@371 400 less -E $log ;;
pankso@361 401 binutils)
pankso@412 402 rm -f $logdir/binutils.log
pankso@361 403 binutils 2>&1 | tee $logdir/binutils.log ;;
pankso@447 404 linux-headers)
pankso@447 405 linux_headers 2>&1 | tee $logdir/linux-headers.log ;;
pankso@447 406 glibc-headers)
pankso@447 407 glibc_headers 2>&1 | tee $logdir/glibc-headers.log ;;
pankso@403 408 gcc-static)
pankso@403 409 gcc_static 2>&1 | tee $logdir/gcc-static.log ;;
pankso@361 410 glibc)
pankso@361 411 glibc 2>&1 | tee $logdir/glibc.log ;;
pankso@441 412 eglibc)
pankso@441 413 eglibc 2>&1 | tee $logdir/eglibc.log ;;
pankso@361 414 gcc-final)
pankso@361 415 gcc_final 2>&1 | tee $logdir/gcc-final.log ;;
pankso@361 416 compile)
pankso@400 417 # Compile the full toolchain.
pankso@400 418 time=$(date +%s)
pankso@361 419 init_compile
pankso@361 420 echo "Compile start: $(date)" | tee $logdir/compile.log
pankso@361 421 download_src
pankso@361 422 binutils 2>&1 | tee $logdir/binutils.log
pankso@447 423 case "$ARCH" in
pankso@447 424 x86_64) glibc_headers 2>&1 | tee $logdir/glibc-headers.log ;;
pankso@447 425 esac
pankso@403 426 gcc_static 2>&1 | tee $logdir/gcc-static.log
pankso@361 427 linux_headers 2>&1 | tee $logdir/linux-headers.log
pankso@441 428 case "$ARCH" in
pankso@441 429 arm) eglibc 2>&1 | tee $logdir/eglibc.log ;;
pankso@441 430 x86_64) glibc 2>&1 | tee $logdir/glibc.log ;;
pankso@441 431 esac
pankso@361 432 gcc_final 2>&1 | tee $logdir/gcc-final.log
pankso@361 433 echo ""
pankso@365 434 echo "Compile end : $(date)" | tee -a $logdir/compile.log
pankso@400 435 time=$(($(date +%s) - $time))
pankso@400 436 sec=$time
pankso@400 437 div=$(( ($time + 30) / 60))
pankso@400 438 [ "$div" != 0 ] && min="~ ${div}m"
pankso@401 439 echo "Build time : ${sec}s $min" | tee -a $logdir/compile.log
pankso@361 440 echo "" ;;
pankso@416 441 clean)
pankso@416 442 echo -n "Removing all source files..."
pankso@441 443 rm -rf $WORK/source && status
pankso@441 444 [ "$log" ] && rm -f $WORK/log/*.log ;;
pankso@371 445 clean-tools)
pankso@371 446 # Remove crap :-)
pankso@371 447 init_compile
pankso@441 448 echo "Cleaning : $tools ($(du -sh $tools | awk '{print $1}'))"
pankso@443 449 for file in share/info share/man share/local
pankso@371 450 do
pankso@440 451 echo -n "Removing : $file"
pankso@441 452 rm -rf $tools/$file && status
pankso@371 453 done
pankso@419 454 echo -n "Stripping : shared libs and binaries"
pankso@443 455 find $tools/bin -type f -exec strip -s '{}' 2>/dev/null \;
pankso@443 456 find $tools/lib -name cc1* -exec strip -s '{}' 2>/dev/null \;
pankso@443 457 find $tools/lib -name lto* -exec strip -s '{}' 2>/dev/null \;
pankso@444 458 find $sysroot -name "*.so*" -exec ${TARGET}-strip -s '{}' 2>/dev/null \;
pankso@416 459 sleep 1 && status
pankso@441 460 echo -n "Tools size : " && du -sh $tools | awk '{print $1}' ;;
pankso@416 461 gen-prebuilt)
pankso@420 462 # Create a prebuilt cross toolchain tarball.
pankso@416 463 init_compile
pankso@420 464 date=$(date "+%Y%m%d")
pankso@443 465 package="slitaz-$ARCH-toolchain-$date"
pankso@419 466 tarball="$package.tar.bz2"
pankso@441 467 cd /cross
pankso@443 468 mkdir -p $package/$ARCH || exit 1
pankso@419 469 echo ""
pankso@419 470 echo -n "Copying $ARCH to: $package"
pankso@443 471 cp -a $ARCH/tools $package/$ARCH
pankso@443 472 cp -a $ARCH/sysroot $package/$ARCH
pankso@419 473 status
pankso@420 474 prebuilt_readme
pankso@416 475 echo -n "Creating prebuilt $ARCH toolchain tarball..."
pankso@419 476 tar cjf $tarball $package
pankso@416 477 status
pankso@419 478 rm -rf $package
pankso@441 479 size=$(du -sh $tarball | awk '{print $1}')
pankso@441 480 echo "Tarball path: $(pwd)/$tarball"
pankso@419 481 echo "Tarball size: $size"
pankso@419 482 echo "" ;;
pankso@361 483 *)
pankso@361 484 usage ;;
pankso@361 485 esac
pankso@361 486