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