#!/bin/sh

# Swirc configure script
#
# Copyright (C) 2016-2022 Markus Uhlin. All rights reserved.

MAKE_DEF_FILE=options.mk

. "posixshell/check_strcasestr.sh"
. "posixshell/fix_cflags.sh"
. "posixshell/link_with_gnu_libidn.sh"
. "posixshell/link_with_gnu_libintl.sh"
. "posixshell/link_with_libiconv.sh"
. "posixshell/link_with_libnotify.sh"
. "posixshell/os_BSD.sh"
. "posixshell/os_GNU.sh"
. "posixshell/os_LINUX.sh"
. "posixshell/os_LINUX_suncc.sh"
. "posixshell/os_MAC.sh"
. "posixshell/os_NETBSD.sh"

_fuzz_mode=0
_with_libnotify=0
_without_libiconv=0
_without_libidn=0
_without_libintl=0

print_help () {
	echo ""
	echo "Configuration options:"
	echo ""
	echo "  --with-libnotify   Enable support for desktop notifications"
	echo "  --without-libiconv Build without GNU libiconv"
	echo "  --without-libidn   Build without GNU libidn"
	echo "  --without-libintl  No internationalization"
	echo ""
}

for arg in "$@"; do
	case "$arg" in
	"--fuzz-mode")
		_fuzz_mode=1
		;;
	"--help" | "-?" | "-h")
		print_help
		exit 0
		;;
	"--with-libnotify")
		_with_libnotify=1
		;;
	"--without-libiconv")
		_without_libiconv=1
		;;
	"--without-libidn")
		_without_libidn=1
		;;
	"--without-libintl")
		_without_libintl=1
		;;
	*)
		;;
	esac
done

cat <<EOF >$MAKE_DEF_FILE
E = @echo
Q = @
RM = @rm -f
SLASH_SYM = /
EOF

case "$(uname -s)" in
"Darwin")
	os_MAC
	;;
"FreeBSD" | "OpenBSD")
	os_BSD
	;;
"GNU")
	os_GNU
	;;
"Linux")
	if [ "$1" = "suncc" ]; then
		os_LINUX_suncc
	else
		os_LINUX
	fi

	fix_cflags_with_pkg_config

	if [ "$(uname -m)" = "riscv64" ]; then
		cat <<EOF >>$MAKE_DEF_FILE
LDLIBS += -latomic
EOF
	fi
	;;
"NetBSD")
	os_NETBSD
	;;
*)
	echo "OS not supported!"
	exit 1
	;;
esac

check_strcasestr

if [ ${_fuzz_mode} -eq 1 ]; then
	cat <<EOF >>$MAKE_DEF_FILE
CFLAGS += -DIRCFUZZ_MODE=1
CXXFLAGS += -DIRCFUZZ_MODE=1
EOF
fi

if [ ${_with_libnotify} -eq 1 ]; then
	link_with_libnotify
fi

if [ ${_without_libiconv} -eq 0 ]; then
	link_with_libiconv
fi

if [ ${_without_libidn} -eq 0 ]; then
	link_with_gnu_libidn
fi

if [ ${_without_libintl} -eq 0 ]; then
	link_with_gnu_libintl
#	${MAKE:-make} -Cpo clean
	${MAKE:-make} -Cpo
fi

if [ -f "$MAKE_DEF_FILE" ]; then
	echo "configure: $MAKE_DEF_FILE successfully created!"
else
	echo "configure: fatal error"
	exit 1
fi
