#!/bin/bash

# fail hard
set -o pipefail
# fail harder
set -eu

source $(dirname $BASH_SOURCE)/../_util/include/manifest.sh

OUT_PREFIX=$1

dep_formula=${0#$WORKSPACE_DIR/}
dep_name=$(basename $BASH_SOURCE)
dep_version=${dep_formula##*"/${dep_name}-"}
dep_package=${dep_name}-${dep_version}
dep_dirname=cpp-driver-${dep_version}
dep_archive_name=${dep_version}.tar.gz
dep_url=https://github.com/datastax/cpp-driver/archive/${dep_version}.tar.gz
dep_manifest=${dep_package}.composer.json

# we need libgmp-dev and cmake
needed=( libgmp-dev cmake )
missing=$(comm -1 -3 <(dpkg-query -W -f '${package}\n' | sort) <(IFS=$'\n'; echo "${needed[*]}" | sort))
if [[ "$missing" ]]; then
	apt-get update -qq || { echo "Failed to 'apt-get update'. You must build this formula using Docker."; exit 1; }
	apt-get install -q -y $missing
fi

echo "-----> Building ${dep_package}..."

curl -L ${dep_url} | tar xz
pushd ${dep_dirname}
cmake -DCMAKE_CXX_FLAGS="-fPIC" -DCMAKE_INSTALL_PREFIX:PATH=${OUT_PREFIX} -DCMAKE_BUILD_TYPE=RELEASE -DCASS_USE_ZLIB=ON -DCMAKE_INSTALL_LIBDIR:PATH=lib .
make -s -j9
make install -s
strip --strip-unneeded ${OUT_PREFIX}/lib/libcassandra*.so*
popd

ABI_VERSION=$(soname_version ${OUT_PREFIX}/lib/libcassandra.so)
echo
echo "ABI version is: ${ABI_VERSION}"
echo

python $(dirname $BASH_SOURCE)/../_util/include/manifest.py "heroku-sys-library" "heroku-sys/${dep_name}" "$dep_version" "${dep_formula}.tar.gz" "{}" "{}" "{}" "{\"heroku-sys/libcassandra-abi\":\"${ABI_VERSION}\"}" > $dep_manifest

print_or_export_manifest_cmd "$(generate_manifest_cmd "$dep_manifest")"
