#!/bin/sh
# 
# Copyright (c) 2015-2017 Carsten Sonne Larsen  <cs@innolan.dk>
# All rights reserved.
# 
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
# 
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#

set -e

HDRS='
        createcat.h
        createcatsrc.h
        createct.h
        FlexCat_cat.h
        FlexCat_cat_other.h
        flexcat.h
        globals.h
        openlibs.h
        readprefs.h
        scancd.h
        scanct.h
        scanpo.h
        SDI_compiler.h
        showfuncs.h
        swapfuncs.h
        utils.h
        version.h
'

SRCS='
        asprintf.c
        createcat.c
        createcatsrc.c
        createct.c
        globals.c
        locale_other.c
        main.c
        openlibs.c
        readprefs.c
        scancd.c
        scanct.c
        scanpo.c
        showfuncs.c
        strptime.c
        swapfuncs.c
        utils.c
        vastubs.c
'

if make -v 2>&1 | grep GNU > /dev/null 2>&1 ; then
	echo "make(1) is GNU make."
	BSD=false
elif [ -f /usr/share/mk/bsd.prog.mk ] ; then
	echo "Found bsd.prog.mk, will use it."
	BSD=true
else
	echo "Defaulting to plain makefile"
	BSD=false
fi

if $BSD ; then
	(
	echo '# BSD-style Makefile generated by configure'
	echo 'PROG	=	flexcat'
	for f in ${SRCS}
	do
		echo "SRCS	+=	${f}"
	done

	echo 'NO_MAN	=	not_yet'
	echo 'LDADD	+=	-lm'
	echo 'WARNS	?=	6'
	echo '.include <bsd.prog.mk>'
	) > Makefile

	msg=", remember to run 'make depend'"
else
	(
	echo '# Portable Makefile generated by configure'
	echo ''
	echo 'all:	flexcat'
	echo ''
	echo "CFLAGS += -I. -Wall"
	echo ''

	for f in ${HDRS}
	do
		b=`basename $f .h`
		i=`sed -n -e '/#include.*"/{
			s/"$//
			s/.*"//
			p
		}' $f | sort -u`
		if [ "x${i}" != "x" ] ; then
			echo "${b}.h:	" ${i}
			echo "	touch ${b}.h"
			echo
		fi
	done
	
	l=""
	for f in ${SRCS}
	do
		b=`basename $f .c`
		i=`sed -n -e '/#include.*"/{
			s/"$//
			s/.*"//
			p
		}' $f | sort -u`
		echo "${b}.o:	${b}.c" ${i}
		echo
		l="${l} ${b}.o"
	done

	echo
	echo "flexcat:	${l}"
	echo "	\${CC} \${CFLAGS} -o flexcat ${l} -lm"
	echo
	echo "clean:"
	echo "	rm -f ${l} flexcat"
	echo
	echo "depend:"
	echo "	@echo Dependencies already done"
	) > Makefile
fi

echo "Makefile generated${msg}"
