#!/bin/sh

set -e

BOLD="\e[1m"
RESET="\e[0m"
LIGHT_RED="\e[91m"
LIGHT_GREEN="\e[92m"
LIGHT_CYAN="\e[96m"

logging(){
	local type=$1; shift
	printf "${LIGHT_CYAN}${BOLD}configure${RESET} [%b] : %b\n" "$type" "$*"
}
log_info(){
	logging "${LIGHT_GREEN}info${RESET}" "$@"
}
log_error(){
	logging "${LIGHT_RED}error${RESET}" "$@" >&2
}

# find and print x11 header path
get_xlib_include_path(){
	local result=""

	for inc in \
		/usr/X11/include          \
		/usr/X11R6/include        \
		/usr/X11R5/include        \
		/usr/X11R4/include        \
								\
		/usr/include              \
		/usr/include/X11          \
		/usr/include/X11R6        \
		/usr/include/X11R5        \
		/usr/include/X11R4        \
								\
		/usr/local/X11/include    \
		/usr/local/X11R6/include  \
		/usr/local/X11R5/include  \
		/usr/local/X11R4/include  \
								\
		/usr/local/include/X11    \
		/usr/local/include/X11R6  \
		/usr/local/include/X11R5  \
		/usr/local/include/X11R4  \
								\
		/usr/X386/include         \
		/usr/x386/include         \
		/usr/XFree86/include/X11  \
								\
		/usr/local/include        \
		/usr/athena/include       \
		/usr/local/x11r5/include  \
		/usr/lpp/Xamples/include  \
								\
		/usr/openwin/include      \
		/usr/openwin/share/include
	do
		if [ -f "$inc/X11/Xlib.h" -a -f "$inc/X11/extensions/XShm.h" ]; then
			result=$inc
			break
		fi
	done
	echo $result
}

show_help(){
cat <<EOF
Usage :
$0              Auto-configure and make MinilibX
$0 clean        Execute the clean rule of both Makefile.gen
EOF
}

clean(){
	log_info 'Execute "make clean" from "makefile.gen"'
	make -f Makefile.gen clean 			
	log_info 'Execute "make clean" from "test/makefile.gen"'
	make -f Makefile.gen -C test/ --no-print-directory clean
}

parse_args(){
	case "$1" in
		--help | -h)
			show_help
			exit 0;;
		clean)
			clean
			exit 0;;
		"") return;;
		*)
			log_error "unknown command \"$1\"\nRun \"./configure --help\" for usage."
			exit 1;;
	esac
}

main(){
	local xlib_inc="$(get_xlib_include_path)"

	parse_args "$@"
	if [ -z "$xlib_inc" ]; then
		log_error "Can't find a suitable X11 include directory."
		exit 1
	fi
	log_info "Found X11 include path directory: $xlib_inc"

	log_info 'Generate "makefile.gen" from template "makefile.mk"'
		echo "INC=$xlib_inc"  	 	    	>  Makefile.gen 
		cat Makefile.mk | grep -v %%%%  	>> Makefile.gen
	log_info 'Generate "test/makefile.gen" from template "test/makefile.mk"'
		echo "INC=$xlib_inc"				>  test/Makefile.gen
		cat test/Makefile.mk | grep -v %%%% >> test/Makefile.gen

	log_info 'Execute "make all" from file "makefile.gen"'
		make -f Makefile.gen all
	log_info 'Execute "make all" from file "test/makefile.gen"'
		(cd test ; make -f Makefile.gen all )
}

main "$@"
