cookutils rev 649
cros: add support for armv6hf and armv7 arch + better setup command
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Mon Mar 03 23:18:29 2014 +0100 (2014-03-03) |
parents | 9298c9293ae0 |
children | 5dfdf8fe7dcd |
files | Makefile cross cross.conf data/cross-arm.conf data/cross-armv6hf.conf data/cross-armv7.conf data/cross-x86_64.conf doc/cross.txt |
line diff
1.1 --- a/Makefile Sun Mar 02 19:47:46 2014 +0100 1.2 +++ b/Makefile Mon Mar 03 23:18:29 2014 +0100 1.3 @@ -62,9 +62,10 @@ 1.4 install -m 0755 -d $(DESTDIR)/etc/slitaz 1.5 install -m 0755 -d $(DESTDIR)$(PREFIX)/bin 1.6 install -m 0755 -d $(DESTDIR)$(PREFIX)/share/doc/cookutils 1.7 + install -m 0755 -d $(DESTDIR)$(PREFIX)/share/cross 1.8 install -m 0755 cross $(DESTDIR)$(PREFIX)/bin 1.9 - install -m 0644 cross.conf $(DESTDIR)/etc/slitaz 1.10 install -m 0644 doc/cross.txt $(DESTDIR)$(PREFIX)/share/doc/cookutils 1.11 + install -m 0644 data/cross-*.conf $(DESTDIR)$(PREFIX)/share/cross 1.12 1.13 uninstall-cross: 1.14 rm -rf \
2.1 --- a/cross Sun Mar 02 19:47:46 2014 +0100 2.2 +++ b/cross Mon Mar 03 23:18:29 2014 +0100 2.3 @@ -17,6 +17,20 @@ 2.4 sysroot=$WORK/sysroot 2.5 logdir=$WORK/log 2.6 2.7 +# Cross-tools tarballs 2.8 +binutils_tarball="binutils-$BINUTILS_VERSION.tar.bz2" 2.9 +linux_tarball="linux-$LINUX_VERSION.tar.xz" 2.10 +glibc_tarball="glibc-$GLIBC_VERSION.tar.bz2" 2.11 +eglibc_tarball="eglibc-$EGLIBC_VERSION.tar.bz2" 2.12 +gcc_tarball="gcc-$GCC_VERSION.tar.bz2" 2.13 + 2.14 +# Cross-tools URLs 2.15 +binutils_wget="http://ftp.gnu.org/gnu/binutils/$binutils_tarball" 2.16 +linux_wget="http://www.kernel.org/pub/linux/kernel/v3.x/$linux_tarball" 2.17 +glibc_wget="http://ftp.gnu.org/gnu/libc/$glibc_tarball" 2.18 +eglibc_wget="svn://svn.eglibc.org/branches/eglibc-2_13" 2.19 +gcc_wget="http://ftp.gnu.org/gnu/gcc/gcc-$GCC_VERSION/$gcc_tarball" 2.20 + 2.21 # Help and usage. 2.22 usage() { 2.23 cat << EOT 2.24 @@ -27,7 +41,7 @@ 2.25 howto Man[like] page and howto 2.26 info Display cross-tools info 2.27 testsuite Execute a small testsuite 2.28 - check Check build host environment 2.29 + setup [arch] Setup build host environment 2.30 download Download necessary sources 2.31 show-log Show a compile log 2.32 binutils Compile Binutils 2.33 @@ -81,18 +95,18 @@ 2.34 # Get source if not yet in $SRC. 2.35 download_src() { 2.36 mkdir -p $SRC && cd $SRC 2.37 - [ -f "$BINUTILS_TARBALL" ] || wget $BINUTILS_WGET 2.38 - [ -f "$LINUX_TARBALL" ] || wget $LINUX_WGET 2.39 - [ -f "$GLIBC_TARBALL" ] || wget $GLIBC_WGET 2.40 - [ -f "$GCC_TARBALL" ] || wget $GCC_WGET 2.41 + [ -f "$binutils_tarball" ] || wget $binutils_wget 2.42 + [ -f "$linux_tarball" ] || wget $linux_wget 2.43 + [ -f "$glibc_tarball" ] || wget $glibc_wget 2.44 + [ -f "$gcc_tarball" ] || wget $gcc_wget 2.45 } 2.46 2.47 # 1. Binutils 2.48 binutils() { 2.49 init_compile 2.50 rm -rf binutils-$BINUTILS_VERSION 2.51 - echo "Extracting: $BINUTILS_TARBALL" 2.52 - tar xjf $SRC/$BINUTILS_TARBALL 2.53 + echo "Extracting: $binutils_tarball" 2.54 + tar xjf $SRC/$binutils_tarball 2.55 echo "Configure: $BINUTILS_ARGS" 2.56 cd binutils-$BINUTILS_VERSION 2.57 ./configure \ 2.58 @@ -112,14 +126,18 @@ 2.59 linux_headers() { 2.60 init_compile 2.61 if [ ! -d "linux-$LINUX_VERSION" ]; then 2.62 - echo "Extracting: $LINUX_TARBALL" 2.63 - tar xJf $SRC/$LINUX_TARBALL 2.64 + echo "Extracting: $linux_tarball" 2.65 + tar xJf $SRC/$linux_tarball 2.66 fi 2.67 + case "$ARCH" in 2.68 + armv6hf) KARCH="arm" ;; 2.69 + *) KARCH="$ARCH" ;; 2.70 + esac 2.71 rm -rf linux-headers 2.72 cd linux-$LINUX_VERSION 2.73 - make mrproper 2.74 - make ARCH=$ARCH headers_check 2.75 - make ARCH=$ARCH headers_install \ 2.76 + make CROSS_COMPILE="" mrproper 2.77 + make ARCH=$KARCH headers_check 2.78 + make ARCH=$KARCH headers_install \ 2.79 INSTALL_HDR_PATH=$source/linux-headers 2.80 rm $source/linux-headers/include/.*install* 2.81 echo "Copying headers to: $sysroot/usr" 2.82 @@ -129,8 +147,8 @@ 2.83 # 2.1 Glibc headers needed to compile x86_64 gcc-static. 2.84 glibc_headers() { 2.85 init_compile 2.86 - echo "Extracting: $GLIBC_TARBALL" 2.87 - tar xjf $SRC/$GLIBC_TARBALL 2.88 + echo "Extracting: $glibc_tarball" 2.89 + tar xjf $SRC/$glibc_tarball 2.90 rm -rf glibc-headers 2.91 mkdir glibc-headers && cd glibc-headers 2.92 libc_cv_forced_unwind=yes \ 2.93 @@ -152,8 +170,8 @@ 2.94 # 3. GCC static (first pass) 2.95 gcc_static() { 2.96 init_compile 2.97 - echo "Extracting: $GCC_TARBALL" 2.98 - tar xjf $SRC/$GCC_TARBALL 2.99 + echo "Extracting: $gcc_tarball" 2.100 + tar xjf $SRC/$gcc_tarball 2.101 echo "Configure: $GCC_STATIC_ARGS" 2.102 rm -rf gcc-static 2.103 mkdir gcc-static && cd gcc-static 2.104 @@ -178,8 +196,8 @@ 2.105 # 4. GNU Glibc 2.106 glibc() { 2.107 init_compile 2.108 - echo "Extracting: $GLIBC_TARBALL" 2.109 - tar xjf $SRC/$GLIBC_TARBALL 2.110 + echo "Extracting: $glibc_tarball" 2.111 + tar xjf $SRC/$glibc_tarball 2.112 echo "Configure: $GLIBC_ARGS" 2.113 # Some arch may need glibc-ports and custom CFLAGS 2.114 case "$ARCH" in 2.115 @@ -232,19 +250,19 @@ 2.116 echo "cross: glibc compiled on: $(date)" 2.117 } 2.118 2.119 -# 4. Eglibc: always use --prefix=/usr 2.120 +# 4. eglibc: always use --prefix=/usr 2.121 eglibc() { 2.122 init_compile 2.123 rm -rf eglibc-build eglibc-$EGLIBC_VERSION 2.124 - echo "Extracting: $EGLIBC_TARBALL" 2.125 - tar xjf $SRC/$EGLIBC_TARBALL || exit 1 2.126 + echo "Extracting: $eglibc_tarball" 2.127 + tar xjf $SRC/$eglibc_tarball || exit 1 2.128 # Some arch may need glibc-ports and custom CFLAGS 2.129 case "$ARCH" in 2.130 arm) 2.131 export CFLAGS="-march=armv6 -O2" 2.132 if [ ! -d "$source/eglibc-ports-$EGLIBC_VERSION" ]; then 2.133 - echo "Cloning $EGLIBC_WGET/ports" 2.134 - svn co $EGLIBC_WGET/ports eglibc-ports-$EGLIBC_VERSION >/dev/null 2.135 + echo "Cloning $eglibc_wget/ports" 2.136 + svn co $eglibc_wget/ports eglibc-ports-$EGLIBC_VERSION >/dev/null 2.137 fi 2.138 cp -a eglibc-ports-$EGLIBC_VERSION eglibc-$EGLIBC_VERSION/ports 2.139 libexec=/usr/lib/eglibc ;; 2.140 @@ -290,8 +308,8 @@ 2.141 gcc_final() { 2.142 init_compile 2.143 if [ ! -d "gcc-$GCC_VERSION" ]; then 2.144 - echo "Extracting: $GCC_TARBALL" 2.145 - tar xjf $SRC/$GCC_TARBALL 2.146 + echo "Extracting: $gcc_tarball" 2.147 + tar xjf $SRC/$gcc_tarball 2.148 fi 2.149 echo "Configure: $GCC_FINAL_ARGS" 2.150 rm -rf gcc-build 2.151 @@ -362,7 +380,11 @@ 2.152 fi 2.153 echo -e "\n[CHECKING] readelf -h test.out" | tee -a $logdir/testsuite.log 2.154 readelf -h test.out | tee -a $logdir/testsuite.log ;; 2.155 - check) 2.156 + *setup) 2.157 + data="/usr/share/cross" 2.158 + arch=${1%-setup} 2.159 + [ "$arch" == "setup" ] && arch="arm" 2.160 + newline 2.161 echo "Checking: build system packages" 2.162 for pkg in slitaz-toolchain mpfr mpfr-dev gmp gmp-dev mpc-library \ 2.163 gawk autoconf; do 2.164 @@ -375,7 +397,12 @@ 2.165 fi 2.166 fi 2.167 done 2.168 - echo "Using: --with-sysroot=$sysroot" ;; 2.169 + echo "Getting $arch cross.conf" 2.170 + cp -f ${data}/cross-${arch}.conf /etc/slitaz/cross.conf 2.171 + cook ${arch}-setup 2.172 + echo "Setting up cook environment" 2.173 + cook setup >/dev/null 2.174 + newline ;; 2.175 download) 2.176 download_src ;; 2.177 show-log) 2.178 @@ -413,7 +440,7 @@ 2.179 gcc_static 2>&1 | tee $logdir/gcc-static.log 2.180 linux_headers 2>&1 | tee $logdir/linux-headers.log 2.181 case "$ARCH" in 2.182 - arm) eglibc 2>&1 | tee $logdir/eglibc.log ;; 2.183 + arm*) eglibc 2>&1 | tee $logdir/eglibc.log ;; 2.184 x86_64) glibc 2>&1 | tee $logdir/glibc.log ;; 2.185 esac 2.186 gcc_final 2>&1 | tee $logdir/gcc-final.log
3.1 --- a/cross.conf Sun Mar 02 19:47:46 2014 +0100 3.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 3.3 @@ -1,43 +0,0 @@ 3.4 -# SliTaz Cross Toolchain configuration file 3.5 -# 3.6 - 3.7 -# Main settings 3.8 -ARCH=arm 3.9 -BUILD_SYSTEM=i486-slitaz-linux 3.10 -TARGET=$ARCH-slitaz-linux-gnueabi 3.11 -WORK=/cross/$ARCH 3.12 -SRC=/home/slitaz/src 3.13 - 3.14 -# Cross-tools versions 3.15 -BINUTILS_VERSION="2.22" 3.16 -LINUX_VERSION="3.2.14" 3.17 -GLIBC_VERSION="2.13" 3.18 -# x86_64: GLIBC_VERSION="2.14.1" 3.19 -EGLIBC_VERSION="2.13" 3.20 -GCC_VERSION="4.6.3" 3.21 - 3.22 -# Cross-tools tarballs 3.23 -BINUTILS_TARBALL="binutils-$BINUTILS_VERSION.tar.bz2" 3.24 -LINUX_TARBALL="linux-$LINUX_VERSION.tar.xz" 3.25 -GLIBC_TARBALL="glibc-$GLIBC_VERSION.tar.bz2" 3.26 -EGLIBC_TARBALL="eglibc-$EGLIBC_VERSION.tar.bz2" 3.27 -GCC_TARBALL="gcc-$GCC_VERSION.tar.bz2" 3.28 - 3.29 -# Cross-tools URLs 3.30 -BINUTILS_WGET="http://ftp.gnu.org/gnu/binutils/$BINUTILS_TARBALL" 3.31 -LINUX_WGET="http://www.kernel.org/pub/linux/kernel/v3.x/$LINUX_TARBALL" 3.32 -GLIBC_WGET="http://ftp.gnu.org/gnu/libc/$GLIBC_TARBALL" 3.33 -EGLIBC_WGET="svn://svn.eglibc.org/branches/eglibc-2_13" 3.34 -GCC_WGET="http://ftp.gnu.org/gnu/gcc/gcc-$GCC_VERSION/$GCC_TARBALL" 3.35 - 3.36 -# Per package configure arguments 3.37 -# 3.38 -# x86_64: BINUTILS_ARGS="--disable-multilib --enable-64-bit-bfd" 3.39 -# x86_64: GCC_STATIC_ARGS="--enable-languages=c --disable-multilib" 3.40 -# x86_64: GCC_FINAL_ARGS="--enable-languages=c,c++ --disable-multilib" 3.41 -# 3.42 -BINUTILS_ARGS="--enable-shared" 3.43 -GLIBC_ARGS="--enable-add-ons" 3.44 -EGLIBC_ARGS="--enable-add-ons --with-tls" 3.45 -GCC_STATIC_ARGS="--enable-languages=c" 3.46 -GCC_FINAL_ARGS="--enable-languages=c,c++"
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 4.2 +++ b/data/cross-arm.conf Mon Mar 03 23:18:29 2014 +0100 4.3 @@ -0,0 +1,23 @@ 4.4 +# SliTaz Cross Toolchain configuration file 4.5 +# 4.6 + 4.7 +# Main settings 4.8 +ARCH=arm 4.9 +BUILD_SYSTEM=i486-slitaz-linux 4.10 +TARGET=$ARCH-slitaz-linux-gnueabi 4.11 +WORK=/cross/$ARCH 4.12 +SRC=/home/slitaz/src 4.13 + 4.14 +# Cross-tools versions 4.15 +BINUTILS_VERSION="2.22" 4.16 +LINUX_VERSION="3.2.14" 4.17 +GLIBC_VERSION="2.13" 4.18 +EGLIBC_VERSION="2.13" 4.19 +GCC_VERSION="4.6.3" 4.20 + 4.21 +# Per package configure arguments 4.22 +BINUTILS_ARGS="--enable-shared" 4.23 +GLIBC_ARGS="--enable-add-ons" 4.24 +EGLIBC_ARGS="--enable-add-ons --with-tls" 4.25 +GCC_STATIC_ARGS="--enable-languages=c" 4.26 +GCC_FINAL_ARGS="--enable-languages=c,c++"
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 5.2 +++ b/data/cross-armv6hf.conf Mon Mar 03 23:18:29 2014 +0100 5.3 @@ -0,0 +1,25 @@ 5.4 +# SliTaz Cross Toolchain configuration file 5.5 +# 5.6 +# ARM v6 with hard float support for the Rpi 5.7 +# CFLAGS="-O2 -march=armv6j -mfpu=vfp -mfloat-abi=hard" 5.8 +# 5.9 + 5.10 +# Main settings 5.11 +ARCH=armv6hf 5.12 +BUILD_SYSTEM=i486-slitaz-linux 5.13 +TARGET=$ARCH-slitaz-linux-gnueabi 5.14 +WORK=/cross/$ARCH 5.15 +SRC=/home/slitaz/src 5.16 + 5.17 +# Cross-tools versions 5.18 +BINUTILS_VERSION="2.22" 5.19 +LINUX_VERSION="3.2.14" 5.20 +GLIBC_VERSION="2.13" 5.21 +EGLIBC_VERSION="2.13" 5.22 +GCC_VERSION="4.6.3" 5.23 + 5.24 +# Per package configure arguments 5.25 +BINUTILS_ARGS="--enable-shared" 5.26 +EGLIBC_ARGS="--enable-add-ons --with-tls" 5.27 +GCC_STATIC_ARGS="--enable-languages=c" 5.28 +GCC_FINAL_ARGS="--enable-languages=c,c++ --with-float=hard"
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 6.2 +++ b/data/cross-armv7.conf Mon Mar 03 23:18:29 2014 +0100 6.3 @@ -0,0 +1,26 @@ 6.4 +# SliTaz Cross Toolchain configuration file 6.5 +# 6.6 +# ARM v7 6.7 +# CFLAGS="-Os -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp -pipe" 6.8 +# 6.9 + 6.10 +# Main settings 6.11 +ARCH=armv7 6.12 +BUILD_SYSTEM=i486-slitaz-linux 6.13 +TARGET=$ARCH-slitaz-linux-gnueabi 6.14 +WORK=/cross/$ARCH 6.15 +SRC=/home/slitaz/src 6.16 + 6.17 +# Cross-tools versions 6.18 +BINUTILS_VERSION="2.22" 6.19 +LINUX_VERSION="3.2.14" 6.20 +GLIBC_VERSION="2.13" 6.21 +EGLIBC_VERSION="2.13" 6.22 +GCC_VERSION="4.6.3" 6.23 + 6.24 +# Per package configure arguments 6.25 +BINUTILS_ARGS="--enable-shared" 6.26 +GLIBC_ARGS="--enable-add-ons" 6.27 +EGLIBC_ARGS="--enable-add-ons --with-tls" 6.28 +GCC_STATIC_ARGS="--enable-languages=c" 6.29 +GCC_FINAL_ARGS="--enable-languages=c,c++"
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 7.2 +++ b/data/cross-x86_64.conf Mon Mar 03 23:18:29 2014 +0100 7.3 @@ -0,0 +1,23 @@ 7.4 +# SliTaz Cross Toolchain configuration file 7.5 +# 7.6 +# x86_64 cross tools settings 7.7 +# 7.8 + 7.9 +# Main settings 7.10 +ARCH=x86_64 7.11 +BUILD_SYSTEM=i486-slitaz-linux 7.12 +TARGET=$ARCH-slitaz-linux 7.13 +WORK=/cross/$ARCH 7.14 +SRC=/home/slitaz/src 7.15 + 7.16 +# Cross-tools versions 7.17 +BINUTILS_VERSION="2.22" 7.18 +LINUX_VERSION="3.2.14" 7.19 +GLIBC_VERSION="2.14.1" 7.20 +GCC_VERSION="4.6.3" 7.21 + 7.22 +# Per package configure arguments 7.23 +BINUTILS_ARGS="--disable-multilib --enable-64-bit-bfd" 7.24 +GLIBC_ARGS="--enable-add-ons" 7.25 +GCC_STATIC_ARGS="--enable-languages=c --disable-multilib" 7.26 +GCC_FINAL_ARGS="--enable-languages=c,c++ --disable-multilib"
8.1 --- a/doc/cross.txt Sun Mar 02 19:47:46 2014 +0100 8.2 +++ b/doc/cross.txt Mon Mar 03 23:18:29 2014 +0100 8.3 @@ -38,10 +38,7 @@ 8.4 8.5 Setup the build environment, get source and compile a cross toolchain 8.6 --------------------------------------------------------------------- 8.7 - # cook arm-setup 8.8 - # cook setup 8.9 - (vi/nano /etc/slitaz/cross.conf) 8.10 - # cross check 8.11 + # cross setup 8.12 # cross download 8.13 # cross compile 8.14