#!/bin/sh

# ===========
# = Globals =
# ===========

SCRIPTS_DIR=$(dirname "$0")
cd "$SCRIPTS_DIR/.."
SOURCE_DIR="$(pwd)"
BUILD_DIR="$SOURCE_DIR/../build"
ICHECK_DIR="$SOURCE_DIR/../icheck"

CMPVERSION='0.8.22'
FILES="src/include/kdbmeta.h src/include/kdbease.h src/include/kdbplugin.h src/include/kdbproposal.h"

# =============
# = Functions =
# =============

init_build()
{
	rm -rf "$BUILD_DIR"
	mkdir "$BUILD_DIR"
}

init_cmake()
{
	cd "$BUILD_DIR"
	cmake "$SOURCE_DIR"
	cd "$SOURCE_DIR"
}

# Check out current version
init_build
init_cmake

rm -rf "$ICHECK_DIR"
mkdir "$ICHECK_DIR"
icheck --canonify -I"$BUILD_DIR/src/include" -I"$SOURCE_DIR/src/include" ${FILES} -o "$ICHECK_DIR/new_interface.h"
while read line; do
	printf '%s' "$line" | grep -q '^\s*//' && continue
	printf 'Remove entry matching “%s” from new interface\n' "$line"
	ex '+g/^.*'"$line"'.*$/d' -cwq "$ICHECK_DIR/new_interface.h"
done < "tests/icheck.suppression"

# Compare against the version we want to be ABI/API compatible with
init_build
git checkout $CMPVERSION
init_cmake
icheck --canonify -I"$BUILD_DIR/src/include" -I"$SOURCE_DIR/src/include" ${FILES} -o "$ICHECK_DIR/old_interface.h"

icheck --compare "$ICHECK_DIR/old_interface.h" "$ICHECK_DIR/new_interface.h"
