From 6855ad3f67797b5d4daa59e0e30df30adec43ac4 Mon Sep 17 00:00:00 2001 From: q3aql Date: Sun, 7 Aug 2016 17:45:46 +0200 Subject: [PATCH] Added script to cross-compile libraries for ARM (Raspberry) --- .../aria2-arm-rbpi-gnu-linux-cross-build-libs | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100755 build-scripts/gnu-linux-arm-rbpi-config/aria2-arm-rbpi-gnu-linux-cross-build-libs diff --git a/build-scripts/gnu-linux-arm-rbpi-config/aria2-arm-rbpi-gnu-linux-cross-build-libs b/build-scripts/gnu-linux-arm-rbpi-config/aria2-arm-rbpi-gnu-linux-cross-build-libs new file mode 100755 index 0000000..8610223 --- /dev/null +++ b/build-scripts/gnu-linux-arm-rbpi-config/aria2-arm-rbpi-gnu-linux-cross-build-libs @@ -0,0 +1,114 @@ +#!/bin/bash + +# In this configuration, the following dependent libraries are compiled: +# +# * zlib +# * c-ares +# * expat +# * sqlite3 +# * openSSL +# * libssh2 + +#CHECK TOOL FOR DOWNLOAD + aria2c --help > /dev/null + if [ "$?" -eq 0 ] ; then + DOWNLOADER="aria2c --check-certificate=false" + else + DOWNLOADER="wget -c" + fi + +## DEPENDENCES ## +ZLIB=http://sourceforge.net/projects/libpng/files/zlib/1.2.8/zlib-1.2.8.tar.gz +OPENSSL=http://www.openssl.org/source/openssl-1.0.2h.tar.gz +EXPAT=https://sourceforge.net/projects/expat/files/expat/2.2.0/expat-2.2.0.tar.bz2 +SQLITE3=http://www.sqlite.org/2016/sqlite-autoconf-3130000.tar.gz +C_ARES=http://c-ares.haxx.se/download/c-ares-1.11.0.tar.gz +SSH2=https://www.libssh2.org/download/libssh2-1.7.0.tar.gz + +## CONFIG ## +ARCH="armhf" +HOST="arm-linux-gnueabihf" +PREFIX="/opt/aria2-arm-rbpi/build_libs" +LOCAL_DIR="/opt/aria2-arm-rbpi/build_libs" + +TOOL_BIN_DIR="/opt/aria2-arm-rbpi/tools/arm-bcm2708/gcc-linaro-$HOST-raspbian/bin" +PATH=${TOOL_BIN_DIR}:$PATH + +CFLAGS="-march=armv7-a -mtune=cortex-a9" +DEST="/opt/aria2-arm-rbpi/build_libs" +CC=$HOST-gcc +CXX=$HOST-g++ +LDFLAGS="-L$DEST/lib" +CPPFLAGS="-I$DEST/include" +CXXFLAGS=$CFLAGS +MAKE="make -j`nproc`" +CONFIGURE="./configure --prefix=${LOCAL_DIR} --host=$HOST" +BUILD_DIRECTORY=/tmp/ + +## BUILD ## +cd $BUILD_DIRECTORY +# + # zlib build + $DOWNLOADER $ZLIB + tar zxvf zlib-1.2.8.tar.gz + cd zlib-1.2.8/ + PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC=$HOST-gcc STRIP=$HOST-strip RANLIB=$HOST-ranlib CXX=$HOST-g++ AR=$HOST-ar LD=$HOST-ld ./configure --prefix=$PREFIX --static + make + make install +# + # expat build + cd .. + $DOWNLOADER $EXPAT + tar jxvf expat-2.2.0.tar.bz2 + cd expat-2.2.0/ + PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC=$HOST-gcc CXX=$HOST-g++ ./configure --host=$HOST --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` --prefix=$PREFIX --enable-static=yes --enable-shared=no + make + make install +# + # c-ares build + cd .. + $DOWNLOADER $C_ARES + tar zxvf c-ares-1.11.0.tar.gz + cd c-ares-1.11.0/ + PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC=$HOST-gcc CXX=$HOST-g++ ./configure --host=$HOST --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` --prefix=$PREFIX --enable-static --disable-shared + make + make install +# + # Openssl build + cd .. + $DOWNLOADER $OPENSSL + tar zxvf openssl-1.0.2h.tar.gz + cd openssl-1.0.2h/ + PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC=$HOST-gcc CXX=$HOST-g++ ./Configure linux-armv4 $CFLAGS --prefix=$PREFIX shared zlib zlib-dynamic -D_GNU_SOURCE -D_BSD_SOURCE --with-zlib-lib=$LOCAL_DIR/lib --with-zlib-include=$LOCAL_DIR/include + make CC=$CC + make CC=$CC install INSTALLTOP=$DEST OPENSSLDIR=$DEST/ssl +# + # sqlite3 + cd .. + $DOWNLOADER $SQLITE3 + tar zxvf sqlite-autoconf-3130000.tar.gz + cd sqlite-autoconf-3130000/ + PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC=$HOST-gcc CXX=$HOST-g++ ./configure --host=$HOST --prefix=$PREFIX --enable-static --enable-shared --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` + make + make install +# + # libssh2 + cd .. + $DOWNLOADER $SSH2 + tar zxvf libssh2-1.7.0.tar.gz + cd libssh2-1.7.0/ + rm -rf $PREFIX/lib/pkgconfig/libssh2.pc + PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC=$HOST-gcc CXX=$HOST-g++ AR=$HOST-ar RANLIB=$HOST-ranlib ./configure --host=$HOST --without-libgcrypt --with-openssl --without-wincng --prefix=$PREFIX --enable-static --disable-shared + make + make install +# + #cleaning + cd .. + rm -rf c-ares* + rm -rf sqlite-autoconf* + rm -rf zlib-* + rm -rf expat-* + rm -rf openssl-* + rm -rf libssh2-* +# + echo "finished!"