# Copyright (c) 1997-2019 Alexei G. Malinin <Alexei.Malinin@mail.ru>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


MAIN_DIR!=	pwd

OUT_DIR:=	${MAIN_DIR}/OUT

ATTENTION:=	"******************"

MBR:=		iMBR
MBR_DIR:=	${MAIN_DIR}/mbr

EDITOR:=	iMBR_editor
EDITOR_DIR:=	${MAIN_DIR}/editor

WEDITOR:=	${EDITOR}.exe
WEDITOR_DIR:=	${EDITOR_DIR}.WINDOWS

TESTS:=		tests
TESTS_DIR:=	${MAIN_DIR}/tests

DOC_DIR:=	${MAIN_DIR}/doc
MAN_PREFIX:=	man
MAN_EXT:=	8
MANS:=		${EDITOR}.${MAN_EXT} ${MBR}.${MAN_EXT}
HTML_EXT:=	html
DOCS:=		${DOC_DIR}/*.${HTML_EXT}
DOC_FILES:=	README AUTHORS COPYING NEWS INSTALL

MINGW:=		mingw32 gcc
MINGW_PATH:=	/usr/local/mingw32/bin

RM:=		rm -rf
MKDIR:=		mkdir -p
MV:=		mv -f
CP:=		cp -fp
INSTALL:=	${CP}
AWK:=		awk

PACKAGE:=	iMBR
VERSION:=	1.7
DIST:=		${PACKAGE}-${VERSION}

#DESTDIR:=	${OUT_DIR}
prefix:=	/usr/local
sbindir:=	${prefix}/sbin
libdatadir:=	${prefix}/libdata
mandir:=	${prefix}/man
datadir:=	${prefix}/share
docdir:=	${datadir}/doc


.PHONY: all WINDOWS clean tests


OUT: all ${TESTS}
	@echo "--> $@:"
	@${MKDIR} ${OUT_DIR} && \
		cd ${DOC_DIR} && ${CP} *.${MAN_EXT} *.${HTML_EXT} \
			${OUT_DIR} && \
		cd ${MBR_DIR} && ${CP} ${MBR}* ${OUT_DIR} && \
		cd ${EDITOR_DIR} && ${CP} ${EDITOR} ${OUT_DIR}
	@echo && echo

all:
	@echo "--> $@:"
	@echo
	@for d in ${DOC_DIR} ${MBR_DIR} ${EDITOR_DIR}; do \
		echo $$d && cd $$d && ${MAKE} $@; \
	done && \
	echo ${ATTENTION} && \
	echo -n "run \"${MAKE} WINDOWS\" to get ${WEDITOR} " && \
	echo "(${MINGW} must be in ${MINGW_PATH})"
	@echo && echo

WINDOWS:
	@echo "--> $@:"
	@echo
	@echo ${WEDITOR_DIR} && cd ${WEDITOR_DIR} && \
		PATH=${MINGW_PATH}:$${PATH} ${MAKE} && \
	${MKDIR} ${OUT_DIR} && \
		cd ${WEDITOR_DIR} && ${CP} ${WEDITOR} ${OUT_DIR}

WINDOWS_PKG: OUT WINDOWS
	@echo "--> $@:"
	@echo
	cd ${OUT_DIR} && ${RM} ${DIST} ${DIST}.zip && ${MKDIR} ${DIST} && \
		${CP} ${WEDITOR} ${MBR} ${MBR}.CHS ${MBR}.LBA *.${HTML_EXT} \
			${DIST} && \
		for f in ${DOC_FILES}; do \
			cat ${MAIN_DIR}/$$f | \
			${AWK} '{ printf("%s\r\n", $$0) }' >${DIST}/$$f.txt; \
		done && \
		zip -r9 ${DIST}.zip ${DIST} && echo && unzip -t ${DIST}.zip
	@echo && echo

clean:
	@echo "--> $@:"
	@echo
	@${RM} ${OUT_DIR} && \
	for d in \
			${DOC_DIR} \
			${MBR_DIR} \
			${EDITOR_DIR} \
			${WEDITOR_DIR} \
			${TESTS_DIR} \
			; do \
		echo $$d && cd $$d && ${MAKE} $@; \
	done

${TESTS}:
	@echo "--> $@:"
	@cd ${TESTS_DIR} && \
		echo && echo ${ATTENTION} && \
		echo "instruction for ${TESTS}:" && \
		echo -n "change directory to " && \
		pwd && echo "and" && cat README

dist: clean
	@echo "--> $@:"
	cd ${MAIN_DIR}/.. && \
		tar zvcf ${DIST}.tgz ${DIST} && \
		${MKDIR} ${OUT_DIR} && \
		${MV} ${DIST}.tgz ${OUT_DIR} && \
		cd ${OUT_DIR} && \
		echo && \
		gunzip -tv ${DIST}.tgz
	@echo && echo

install: OUT
	@echo "--> $@:"
	cd ${OUT_DIR} && \
	${MKDIR} ${DESTDIR}${docdir}/${DIST} \
		${DESTDIR}${libdatadir} \
		${DESTDIR}${sbindir} \
		${DESTDIR}${mandir}/${MAN_PREFIX}${MAN_EXT} && \
	for f in ${DOC_FILES}; do \
		${INSTALL} ${MAIN_DIR}/$$f ${DESTDIR}${docdir}/${DIST}; \
	done && \
	${INSTALL} ${DOCS} ${DESTDIR}${docdir}/${DIST} && \
	${INSTALL} ${EDITOR} ${DESTDIR}${sbindir} && \
	${INSTALL} ${MBR} ${MBR}.CHS ${MBR}.LBA ${DESTDIR}${libdatadir} && \
	${INSTALL} ${MANS} ${DESTDIR}${mandir}/${MAN_PREFIX}${MAN_EXT}
	@echo && echo

uninstall:
	@echo "--> $@:"
	${RM} ${DESTDIR}${docdir}/${DIST}
	${RM} ${DESTDIR}${sbindir}/${EDITOR}
	${RM} \
		${DESTDIR}${libdatadir}/${MBR} \
		${DESTDIR}${libdatadir}/${MBR}.CHS \
		${DESTDIR}${libdatadir}/${MBR}.LBA
	for f in ${MANS}; do \
		${RM} ${DESTDIR}${mandir}/${MAN_PREFIX}${MAN_EXT}/$$f; \
	done
	@echo && echo


PDF:=		p.pdf
2PDF:=		echo ${PDF} ; ( \
				cat makefile; echo "\f"; \
				cat ${DOC_FILES} \
				) | \
			a2ps.sh 80 1 | fixps.sh | ps2pdf13 - ${PDF}

pdf: makefile
	@echo "--> $@:"
	${RM} ${PDF}
	@${2PDF}
	@echo && echo


