#!/bin/bash
#
# script to compile yap for Android.
#
# variables are
#
# SDK_ROOT: where is the SDK
# NDK_ROOT: and the NDK
# GMPDIR: get your copy of GMP from
# SQLite3DIr: a pre-compiled version of sqlite3
# BUILDDROID: where we want to compile yap


# ANDROID_RELEASE= 17 is 4.2.2, 19 is 4.4.2
ANDROID_RELEASE=19
# ANDROID_ARCH= arm, x86, mips
ANDROID_ARCH=arm
# ANDROID_BUILD=linux
if test `uname` = Darwin
then
  ANDROID_BUILD_TOOLS=macosx
  ANDROID_BUILD=darwin
else
  ANDROID_BUILD_TOOLS=linux
  ANDROID_BUILD=linux
fi

# use `android list target` to check for available targets
export ANDROID_TARGET=3

# what android to compile for, use
ANDROID_IMAGE=first

# YAP_SRC="$HOME/Yap/yap-6.3"
if test -d "$HOME/git/yap-6.3"
then
  export YAP_SRC="$HOME/git/yap-6.3"
elif test -d "$HOME/Yap/yap-6.3"
then
  export YAP_SRC="$HOME/Yap/yap-6.3"
fi

# check if the SDK is at the usual locations

if test -d $HOME/Yap/android-sdk-"$ANDROID_BUILD_TOOLS"
then
  export SDK_ROOT=$HOME/Yap/android-sdk-"$ANDROID_BUILD_TOOLS"
else
  export SDK_ROOT=/scratch/vitor/android-sdk-"$ANDROID_BUILD_TOOLS"
fi

# check if the NDK is at the usual locations
if test -d $HOME/Yap/android-ndk-r9d
then
  export NDK_ROOT=$HOME/Yap/android-ndk-r9d
elif test -d /scratch/vitor/android-ndk-r9d
then
  export NDK_ROOT=/scratch/vitor/android-ndk-r9d
fi

# fetch GMP from https://github.com/Rupan/gmp,
# or compile it.
if test -d /scratch
then
  export GMPDIR=/scratch/vitor/gmp-android
else
  export GMPDIR="$HOME"/Yap/gmp-android
fi

# fetch SQLITE3 from https://github.com/Rupan/gmp,
# and have two versions: one to build myddas, the
# other to build the app.
#
# This one is used to build myddas
if test -d /scratch
then
    export SQLITE3DIR=/scratch/vitor/sqlite3-android
else
  export SQLITE3DIR="$HOME"/Yap/sqlite3-android
fi

#where I want to compile
#export BUILDTOOLCHAIN="$HOME/Yap/my-android-toolchain"
if test -d /scratch
then
  export BUILDTOOLCHAIN="/scratch/vitor/my-android-toolchain"
  export BUILDDROID="/scratch/vitor/yap-android"
else
  export BUILDTOOLCHAIN="$HOME/Yap/my-android-toolchain"
    export BUILDDROID="$HOME/Yap/bins/android"
fi

# which gcc to use
GCC_VERSION=4.8

#========================================================
# should need no further work.
#========================================================

export ANDROID_NDK_ROOT="$NDK_ROOT"/
export ANDROID_SYSROOT="$NDK_ROOT"/platforms/android-"$ANDROID_RELEASE"/arch-"$ANDROID_ARCH"

# which platform to compile for
ANDROID_PLATFORM=android-"$ANDROID_RELEASE"
# which disk
IMAGE="$ANDROID_IMAGE"

export PATH="$BUILDTOOLCHAIN"/bin:"$NDK_ROOT":"$SDK_ROOT/tools":"$SDK_ROOT/platform-tools":$PATH

echo $PATH

if test -d "$BUILDTOOLCHAIN"
then
  echo using the setup at "$BUILDTOOLCHAIN"
else
  "$NDK_ROOT"/build/tools/make-standalone-toolchain.sh \
                             --platform="$ANDROID_PLATFORM" \
                             --toolchain="$ANDROID_ARCH"-linux-androideabi-"$GCC_VERSION" \
                             --install-dir="$BUILDTOOLCHAIN"
fi


mkdir -p $BUILDDROID

startemulator () {
 EMS=`ps -ef | grep emulator64| grep -v grep`
  if test x"$EMS" = x
  then
    nohup emulator -avd $IMAGE &
  fi
 }

androidize () {
  cd  packages/swig
  mkdir -p "$ANDROID_NDK_ROOT"/build/core/lib
  make install-android
  cd ../..
}

cd $BUILDDROID

export HOST="$ANDROID_ARCH"-linux-androideabi
export CPP="$HOST"-cpp
export DESTDIR=`pwd`/packages/swig/android    
export PATH="$PATH":/usr/local/bin

if test x$1 = xenv
then
    return 0
elif test x$1 = xdmake
then
    make
elif test x$1 = xmake
then
    pushd packages/swig
    make clean
    popd
    ./config.status
    CFLAGS="-g" make -j install
elif test x$1 = xeclipse
then
   startemulator
   "$ECLIPSE" &
   return 0
else
  startemulator
  rm -rf "$BUILDDROID"/*
  cd "$BUILDDROID"
  "$YAP_SRC"/configure \
  --host="$HOST" \
  --enable-low-level-tracer \
  --enable-debug-yap \
  --enable-dynamic-loading \
  --bindir=/usr/bin \
  --prefix=/assets \
  --enable-dynamic-loading \
  --with-swig \
  --with-gmp="$GMPDIR" \
  --with-sqlite3="$SQLITE3DIR" 

  #\
  #--enable-chr=yes #--enable-threads
  make depend
  CFLAGS="-g" make -j install
fi
androidize