#!/bin/bash
#
# Build the cmark-gfm library and extensions within CURRENT DIRECTORY.
#
# USAGE:
#   $ build-cmark.sh [ VERSION [ TARDIR ] ]
#
#   VERSION: defaults to 0.28.3.gfm.12
#   TARDIR: where to find a downloaded/cached tarball of the cmark
#           code, or where to place a tarball
#

# Echo all of our steps
set -x

#VERSION=0.28.3.gfm.20  ### not yet
VERSION=0.28.3.gfm.12
if [ "$1" != "" ]; then VERSION="$1"; fi

# The tarball exists here, or will be downloaded here.
TARDIR="."
if [ "$2" != "" ]; then TARDIR="$2"; fi

ARCHIVES="https://github.com/github/cmark/archive"
LOCAL="${TARDIR}/cmark-gfm.$VERSION.orig.tar.gz"

# WARNING: this must agree with the parent directory in the tar file or the build will fail
EXTRACTED_AS="cmark-gfm-$VERSION"

# Follow redirects, and place the result into known name $LOCAL
if [ -f "$LOCAL" ]; then
    echo "Using cached tarball: ${LOCAL}"
else
    echo "Fetching from cmark archives"
    curl -L -o "$LOCAL" "$ARCHIVES/$VERSION.tar.gz" || exit 1
fi

# Clean anything old, then extract and build.
### somebody smart could peek into the .tgz. ... MEH
if [ -d "$EXTRACTED_AS" ]; then rm -r "$EXTRACTED_AS"; fi
tar xzf "$LOCAL"
pushd "$EXTRACTED_AS"
  mkdir build
  pushd build
    cmake -DCMARK_TESTS=OFF -DCMARK_STATIC=OFF ..
    make
  popd

  mkdir lib
  cp -Pp build/src/lib* lib/
  cp -Pp build/extensions/lib* lib/
popd

# These files/dir may need a reference with LD_LIBRARY_PATH.
# gfm.py wants this lib/ in LIBCMARKDIR.
ls -laF "$EXTRACTED_AS/lib/"

# Provide a handy line for copy/paste.
echo "export LIBCMARKDIR='$(pwd)/$EXTRACTED_AS/lib'"
