# 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.


IMBR:=		iMBR
APP:=		MBR

SRC:=		${APP}.S
OBJ:=		${APP}.o

APP_CHS:=	${APP}.CHS
IMBR_CHS:=	${IMBR}.CHS

APP_LBA:=	${APP}.LBA
IMBR_LBA:=	${IMBR}.LBA

AS:=		gcc -pipe
AFLAGS:=	-m32 -fno-pie

AFLAGS_CHS:=	-D CHS
AFLAGS_LBA:=	-D LBA

LD:=		ld
LDFLAGS:=	-nostdlib -Ttext 0 -x -N -s -Bstatic -e START -nopie -znorelro \
		-melf_i386 -L/usr/libdata

RM:=		rm -f

NDISASM!=	ndisasm -r >/dev/null 2>&1 && echo ndisasm || echo true


.PHONY: all clean pdf


all: ${APP} ${APP_CHS} ${APP_LBA}
	@echo "--> $@:"
	@echo && echo


${APP}: makefile ${SRC}
	@echo "--> $@:"
	${AS} ${AFLAGS} -c ${SRC}
	${LD} ${LDFLAGS} -o $@ ${OBJ}
	objcopy -O binary $@
	@echo
	dd if=$@ of=${IMBR} bs=1 skip=1536 count=440 >/dev/null 2>&1
	@echo
	@ls -l ${IMBR}
	@echo
	objdump -b binary -m i8086 -D $@ >${IMBR}.objdump
	${NDISASM} -k0,1536 $@ >${IMBR}.${NDISASM}
	@echo && echo

${APP_CHS}: makefile ${SRC}
	@echo "--> $@:"
	${AS} ${AFLAGS} ${AFLAGS_CHS} -c ${SRC}
	${LD} ${LDFLAGS} -o $@ ${OBJ}
	objcopy -O binary $@
	@echo
	dd if=$@ of=${IMBR_CHS} bs=1 skip=1536 count=440 >/dev/null 2>&1
	@echo
	@ls -l ${IMBR_CHS}
	@echo
	objdump -b binary -m i8086 -D $@ >${IMBR_CHS}.objdump
	${NDISASM} -k0,1536 $@ >${IMBR_CHS}.${NDISASM}
	@echo && echo

${APP_LBA}: makefile ${SRC}
	@echo "--> $@:"
	${AS} ${AFLAGS} ${AFLAGS_LBA} -c ${SRC}
	${LD} ${LDFLAGS} -o $@ ${OBJ}
	objcopy -O binary $@
	@echo
	dd if=$@ of=${IMBR_LBA} bs=1 skip=1536 count=440 >/dev/null 2>&1
	@echo
	@ls -l ${IMBR_LBA}
	@echo
	objdump -b binary -m i8086 -D $@ >${IMBR_LBA}.objdump
	${NDISASM} -k0,1536 $@ >${IMBR_LBA}.${NDISASM}
	@echo && echo


clean:
	@echo "--> $@:"
	${RM} ${OBJ} \
	${APP} ${IMBR} ${IMBR}.objdump ${IMBR}.${NDISASM} \
	${APP_CHS} ${IMBR_CHS} ${IMBR_CHS}.objdump ${IMBR_CHS}.${NDISASM} \
	${APP_LBA} ${IMBR_LBA} ${IMBR_LBA}.objdump ${IMBR_LBA}.${NDISASM}
	@echo && echo


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

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


