#!/bin/bash

# In this configuration, the following dependent libraries are compiled:
#
# * zlib
# * c-ares
# * expat
# * sqlite3
# * openSSL
# * libssh2

#IMPORTANT: Require install gcc-multilib g++-multilib libc6-dev-i386
#COMPILER AND PATH
PREFIX=/opt/aria2-i386/build_libs
C_COMPILER="gcc"
CXX_COMPILER="g++"

## 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.2d.tar.gz
EXPAT=http://sourceforge.net/projects/expat/files/expat/2.1.0/expat-2.1.0.tar.gz
SQLITE3=https://www.sqlite.org/2015/sqlite-autoconf-3090100.tar.gz
C_ARES=http://c-ares.haxx.se/download/c-ares-1.10.0.tar.gz
SSH2=http://www.libssh2.org/download/libssh2-1.6.0.tar.gz

## CONFIG ##
BUILD_DIRECTORY=/tmp/

## BUILD ##
cd $BUILD_DIRECTORY
export CFLAGS="-m32" 
export CXXFLAGS="-m32"
export LDFLAGS="-m32"
#
 # zlib build
  wget -c $ZLIB
  tar zxvf zlib-1.2.8.tar.gz
  cd zlib-1.2.8/
  CFLAGS="-m32" CXXFLAGS="-m32" LDFLAGS="-m32" PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER -m32" CXX="$CXX_COMPILER -m32" ./configure --prefix=$PREFIX --static
  make
  make install
# 
 # expat build
  cd ..
  wget -c $EXPAT
  tar zxvf expat-2.1.0.tar.gz
  cd expat-2.1.0/
  CFLAGS="-m32" CXXFLAGS="-m32" LDFLAGS="-m32" PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER -m32" CXX="$CXX_COMPILER -m32" ./configure --prefix=$PREFIX --enable-static --disable-shared
  make
  make install
#
 # c-ares build
  cd ..
  wget -c $C_ARES
  tar zxvf c-ares-1.10.0.tar.gz
  cd c-ares-1.10.0/
  CFLAGS="-m32" CXXFLAGS="-m32" LDFLAGS="-m32" PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER -m32" CXX="$CXX_COMPILER -m32" ./configure --prefix=$PREFIX --enable-static --disable-shared
  make
  make install
#
 # Openssl build
  cd ..
  wget -c $OPENSSL
  tar zxvf openssl-1.0.2d.tar.gz
  cd openssl-1.0.2d/
  CFLAGS="-m32" CXXFLAGS="-m32" LDFLAGS="-m32" PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER -m32" CXX="$CXX_COMPILER -m32" ./Configure --prefix=$PREFIX linux-elf
  make
  make install
#
 # sqlite3
  cd ..
  wget -c $SQLITE3
  tar zxvf sqlite-autoconf-3090100.tar.gz
  cd sqlite-autoconf-3090100/
  CFLAGS="-m32" CXXFLAGS="-m32" LDFLAGS="-m32" PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER -m32" CXX="$CXX_COMPILER -m32" ./configure --prefix=$PREFIX --enable-static --disable-shared
  make
  make install
#
 # libssh2
  cd ..
  wget -c $SSH2
  tar zxvf libssh2-1.6.0.tar.gz
  cd libssh2-1.6.0/
  rm -rf $PREFIX/lib/pkgconfig/libssh2.pc
  CFLAGS="-m32" CXXFLAGS="-m32" LDFLAGS="-m32" PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ CC="$C_COMPILER -m32" CXX="$CXX_COMPILER -m32" ./configure --without-libgcrypt --with-openssl --without-wincng --prefix=$PREFIX --enable-static --disable-shared
  make
  make install
  if [ -f $PREFIX/lib/pkgconfig/libssh2.pc ] ; then
     echo "$PREFIX/lib/pkgconfig/libssh2.pc"
  else
     echo "################################" > $PREFIX/lib/pkgconfig/libssh2.pc
     echo "# libssh2 installation details #" >> $PREFIX/lib/pkgconfig/libssh2.pc
     echo "#################################" >> $PREFIX/lib/pkgconfig/libssh2.pc
     echo "" >> $PREFIX/lib/pkgconfig/libssh2.pc
     echo "prefix=$PREFIX" >> $PREFIX/lib/pkgconfig/libssh2.pc
     echo "exec_prefix=$PREFIX" >> $PREFIX/lib/pkgconfig/libssh2.pc
     echo "libdir=$PREFIX/lib" >> $PREFIX/lib/pkgconfig/libssh2.pc
     echo "includedir=$PREFIX/include" >> $PREFIX/lib/pkgconfig/libssh2.pc
     echo "" >> $PREFIX/lib/pkgconfig/libssh2.pc
     echo "Name: libssh2" >> $PREFIX/lib/pkgconfig/libssh2.pc
     echo "URL: http://www.libssh2.org/" >> $PREFIX/lib/pkgconfig/libssh2.pc
     echo "Description: Library for SSH-based communication" >> $PREFIX/lib/pkgconfig/libssh2.pc
     echo "Version: 1.6.0" >> $PREFIX/lib/pkgconfig/libssh2.pc
     echo "Requires.private:" >> $PREFIX/lib/pkgconfig/libssh2.pc
     echo "Libs: -L$PREFIX/lib -lssh2 -m32 -lssl -lcrypto -lz" >> $PREFIX/lib/pkgconfig/libssh2.pc
     echo "Libs.private:  -m32 -lssl -lcrypto -lz" >> $PREFIX/lib/pkgconfig/libssh2.pc
     echo "Cflags: -I$PREFIX/include" >> $PREFIX/lib/pkgconfig/libssh2.pc
     echo "$PREFIX/lib/pkgconfig/libssh2.pc created!"
     cp -rf include/*.h $PREFIX/include
  fi   
#
 #cleaning
  cd ..
  rm -rf c-ares*
  rm -rf sqlite-autoconf*
  rm -rf zlib-*
  rm -rf expat-*
  rm -rf openssl-*
  rm -rf libssh2-*
#
 echo "finished!"