#!/bin/bash

# usage if extraction lines are uncommented: ./build_rdkit.sh <boost archive> <rdkit archive>
# usage if dirs are already extracted: ./build_rdkit.sh

# you must be in a virtual environment to run this script
[ -z "$VIRTUAL_ENV" ] && echo "Must be in a virtualenv to run this script" && exit 1;

# extract boost and rdkit archives
# tar xfz $1   # boost
# tar xfz $2   # rdkit
# boost_dir="${1%%.*}"
# rdkit_dir="rdkit-${2%%.*}"

boost_dir=$(echo boost_*/)
rdkit_dir=$(echo rdkit-Release*/)

root_dir=`pwd`

boost_prefix=$root_dir/boost
rdkit_prefix=$root_dir/rdkit

python_root=`python -c 'import sys; print(sys.prefix)'`
python_interp=`which python`
python_version=`python -c 'import platform; print(".".join(platform.python_version().split(".")[:2]))'`
python_include_dir=$(echo $python_root/include/python*)

# boost install
cd $boost_dir
# don't want boost to build using user config in home dir
mv ~/user-config.jam ~/user-config.jam.bak
# boost needs to know where the python header files are
export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:$python_include_dir"
# "configure" step for boost
./bootstrap.sh --with-python-root=$python_root --prefix=$boost_prefix --with-python=$python_interp –with-libraries=python,regex,thread,serialization --with-python-version=$python_version
# install boost
./b2 -j 8 install
cd $root_dir

# rdkit install
RDBASE=$rdkit_prefix
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$rdkit_prefix/lib:$boost_prefix/lib
echo $LD_LIBRARY_PATH
cd $rdkit_dir
mkdir build
cd build
cmake -D BOOST_ROOT=$boost_prefix \
      -D Boost_NO_SYSTEM_PATHS=ON \
      -D Boost_INCLUDE_DIR=$boost_prefix/include \
      -D Boost_LIBRARY_DIR=$boost_prefix/lib \
      -D PYTHON_INCLUDE_DIR=$python_include_dir \
      -D PYTHON_EXECUTABLE=$python_interp \
      -D PYTHON_LIBRARY=$(echo $python_root/lib/python${python_version}/conf*/libpython*) \
      -D PYTHON_NUMPY_INCLUDE_PATH=$python_root/lib/python${python_version}/site-packages/numpy/core/include/ \
      -D RDK_BUILD_INCHI_SUPPORT=ON \
      -D CMAKE_INSTALL_PREFIX=$RDBASE \
      -D RDK_INSTALL_INTREE=OFF \
      ..
make
make install
cd $root_dir

# link to python site-packages for current virtual env
ln -v -s $root_dir/rdkit/lib/python${python_version}/site-packages/rdkit $VIRTUAL_ENV/lib/python${python_version}/site-packages/rdkit

# add LD_LIBRARY_PATH update to virtualenv postactivate script
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$root_dir/boost/lib:$root_dir/rdkit/lib" >> $VIRTUAL_ENV/bin/postactivate
# for macs only
echo "export DYLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$root_dir/boost/lib:$root_dir/rdkit/lib" >> $VIRTUAL_ENV/bin/postactivate


