#!/bin/sh
VERSION=1.2.0
VERSION_FULL=${VERSION}$(./version.sh)
PREFIX="${PREFIX:-/usr/local}"
BINDIR="${BINDIR:-${PREFIX}/bin}"
MANDIR="${MANDIR:-${PREFIX}/share/man}"
DOCDIR="${DOCDIR:-${PREFIX}/share/doc/badwolf-${VERSION}}"
DATADIR="${DATADIR:-${PREFIX}/share/badwolf}"
APPSDIR="${APPSDIR:-${PREFIX}/share/applications}"

PKGCONFIG="${PKGCONFIG:-pkg-config}"
MSGFMT="${MSGFMT:-msgfmt}"
INKSCAPE="${INKSCAPE:-inkscape}"
CC="${CC:-cc}"
CFLAGS="${CFLAGS:--g -O2 -pie -fPIE} -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wall -Wextra -Wconversion -Wsign-conversion -Werror=implicit-function-declaration -Werror=implicit-int -Werror=vla ${EXTRA_CFLAGS}"
MANDOC="mandoc"

DEPS="gtk+-3.0 libxml-2.0"

is_ok() {
	status="$?"

	if test $status -eq 0; then
		printf " OK\n"
	else
		printf " FAIL\n"
	fi

	return $status
}

required() {
	is_ok || exit 1
}

pkg_config_check() {
	printf 'Checking: %s %s ...' "${PKGCONFIG}" "$*"
	"${PKGCONFIG}" "$@"
	is_ok
}

printf 'Checking %s command existance ...' "${PKGCONFIG}"
command -v "${PKGCONFIG}" >/dev/null ; required

printf 'Checking %s command existance ...' "${CC}"
command -v "${CC}" >/dev/null ; required

printf 'Checking %s command existance ...' "${MANDOC}"
if command -v "${CC}" >/dev/null ; is_ok
then
	:
else
	MANDOC="true"
fi


for dep in ${DEPS}
do
	pkg_config_check --exists "$dep" || exit 1
done

case "${WITH_WEBKITGTK}n" in
	4.1n)
		pkg_config_check --atleast-version=2.32.0 webkit2gtk-4.1 || exit 1
		DEPS="${DEPS} webkit2gtk-4.1"
	;;
	4.0n)
		pkg_config_check --atleast-version=2.32.0 webkit2gtk-4.0 || exit 1
		DEPS="${DEPS} webkit2gtk-4.0"
	;;
	n)
		echo "warning: Packagers should specify the ABI version (4.0 or 4.1) in WITH_WEBKITGTK" >&2
		if pkg_config_check --atleast-version=2.32.0 webkit2gtk-4.1
		then
			DEPS="${DEPS} webkit2gtk-4.1"
		else
			pkg_config_check --atleast-version=2.32.0 webkit2gtk-4.0 || exit 1
			DEPS="${DEPS} webkit2gtk-4.0"
		fi
	;;
	*)
		echo "error: invalid webkit2gtk version in WITH_WEBKITGTK environment variable, must be 4.0 or 4.1" >&2
		exit 1
	;;
esac

get_cflags() { "${PKGCONFIG}" --cflags "${DEPS}"; }
DEPS_cflags="$(get_cflags)"
get_libs() { "${PKGCONFIG}" --libs "${DEPS}";  }
DEPS_libs="$(get_libs)"

ICON_SIZES="$(for i in 24 32 48 64 128 256; do printf 'icons/hicolor/%sx%s/apps/badwolf.png ' $i $i ; done)"

printf 'Writing to config.mk ...'
cat >config.mk <<EOF
# Autogenerated by ./configure
PACKAGE = Badwolf
VERSION = ${VERSION}
VERSION_FULL = ${VERSION_FULL}

PREFIX  = ${PREFIX}
BINDIR  = ${BINDIR}
MANDIR  = ${MANDIR}
DOCDIR  = ${DOCDIR}
DATADIR = ${DATADIR}
APPSDIR = ${APPSDIR}

PKGCONFIG = ${PKGCONFIG}
CC = ${CC}
INKSCAPE = ${INKSCAPE}
MSGFMT = ${MSGFMT}
DBG = ${DBG}
MANDOC = ${MANDOC}

CFLAGS = ${CFLAGS} -DDATADIR=\"\${DATADIR}\" -DPACKAGE=\"\${PACKAGE}\" -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L -DVERSION=\"\${VERSION_FULL}\" ${DEPS_cflags}
LIBS = ${DEPS_libs}
ICON_SIZES = ${ICON_SIZES}
EOF
is_ok

echo 'Done, you can now run make'
