#################################################################
#			    PCCURSES				#
# Makefile to generate scurses.lib, ccurses.lib, mcurses.lib,	#
# lcurses.lib for MicroSoft 'C'. Use MicroSoft 'C' v.4.0!	#
#								#
# This makefile will generate subdirectories and call itself	#
# recursively...						#
#################################################################
# 1.0:	Release:					870515	#
#################################################################

# The following are the directories where your lib and include files
# will be installed

LIBDIR=	\msc\lib
INCDIR= \msc\inc

# General definitions:

COBJS=		attrib.obj   beep.obj     boxes.obj    charadd.obj   \
		chardel.obj  charget.obj  charins.obj  charpick.obj  \
		clrtobot.obj clrtoeol.obj endwin.obj   initscr.obj   \
		linedel.obj  lineins.obj  longname.obj move.obj      \
		mvcursor.obj newwin.obj   options.obj  overlay.obj   \
		prntscan.obj refresh.obj  scrreg.obj   setterm.obj   \
		stradd.obj   strget.obj   termmisc.obj tabsize.obj   \
		unctrl.obj   update.obj   winclear.obj windel.obj    \
		winerase.obj winmove.obj  winscrol.obj wintouch.obj

ASMOBJS=	cursesio.obj

OBJS=		$(COBJS) $(ASMOBJS)

#################################################################
# 'all' is all that can (and usually is) done			#
#################################################################

all:		small compact medium large

#################################################################
# The following copies the header files to their proper place	#
#################################################################

headers:	$(INCDIR)\curses.h $(INCDIR)\curspriv.h

$(INCDIR)\curses.h:	curses.h
	copy curses.h $(INCDIR)\curses.h

$(INCDIR)\curspriv.h:	curspriv.h
	copy curspriv.h $(INCDIR)\curspriv.h

#################################################################
# The following will create a subdirectory for each memory	#
# model, and initiate the make:ing in each one.			#
#################################################################

#################################################################
# create work directory if non-existent, go to it, and		#
# perform the job - small model					#
#################################################################

small:		headers			\
		smodel			\
		smodel\farnear.inc	\
		smodel\smalhuge.inc
	cd	smodel
	-make	-f ..\makefile $(MAKEFLAGS) "MODEL=s" $(LIBDIR)\scurses.lib
	cd	..

smodel:
	mkdir	smodel

smodel\farnear.inc:	nearcall.inc
	copy	nearcall.inc	smodel\farnear.inc

smodel\smalhuge.inc:	smaldata.inc
	copy	smaldata.inc	smodel\smalhuge.inc

#################################################################
# create work directory if non-existent, go to it, and		#
# perform the job - compact model				#
#################################################################

compact:	headers			\
		cmodel			\
		cmodel\farnear.inc	\
		cmodel\smalhuge.inc
	cd	cmodel
	-make	-f ..\makefile $(MAKEFLAGS) "MODEL=c" $(LIBDIR)\ccurses.lib
	cd	..

cmodel:
	mkdir	cmodel

cmodel\farnear.inc:	nearcall.inc
	copy	nearcall.inc	cmodel\farnear.inc

cmodel\smalhuge.inc:	hugedata.inc
	copy	hugedata.inc	cmodel\smalhuge.inc

#################################################################
# create work directory if non-existent, go to it, and		#
# perform the job - medium model				#
#################################################################

medium:		headers			\
		mmodel			\
		mmodel\farnear.inc	\
		mmodel\smalhuge.inc
	cd	mmodel
	-make	-f ..\makefile $(MAKEFLAGS) "MODEL=m" $(LIBDIR)\mcurses.lib
	cd	..

mmodel:
	mkdir	mmodel

mmodel\farnear.inc:	farcall.inc
	copy	farcall.inc	mmodel\farnear.inc

mmodel\smalhuge.inc:	smaldata.inc
	copy	smaldata.inc	mmodel\smalhuge.inc

#################################################################
# create work directory if non-existent, go to it, and		#
# perform the job - large model					#
#################################################################

large:		headers			\
		lmodel			\
		lmodel\farnear.inc	\
		lmodel\smalhuge.inc
	cd	lmodel
	-make	-f ..\makefile $(MAKEFLAGS) "MODEL=l" $(LIBDIR)\lcurses.lib
	cd	..

lmodel:
	mkdir	lmodel

lmodel\farnear.inc:	farcall.inc
	copy	farcall.inc	lmodel\farnear.inc

lmodel\smalhuge.inc:	hugedata.inc
	copy	hugedata.inc	lmodel\smalhuge.inc

#################################################################
# Put together the library in file tmp.lib, then copy it to	#
# the appropriate name for the memory model in question, and	#
# delete the temporary file					#
#################################################################

$(LIBDIR)\$(MODEL)curses.lib:	$(OBJS)
	del	tmp.lib
	lib @..\curses.cmd
	copy	tmp.lib $(LIBDIR)\$(MODEL)curses.lib
	del	tmp.lib

#################################################################
# commands and dependencies for individual modules		#
#################################################################

attrib.obj:	..\attrib.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Foattrib   ..\attrib.c

beep.obj:	..\beep.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fobeep     ..\beep.c

boxes.obj:	..\boxes.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Foboxes    ..\boxes.c

charadd.obj:	..\charadd.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Focharadd    ..\charadd.c

chardel.obj:	..\chardel.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fochardel  ..\chardel.c

charget.obj:	..\charget.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Focharget  ..\charget.c

charins.obj:	..\charins.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Focharins  ..\charins.c

charpick.obj:	..\charpick.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Focharpick ..\charpick.c

clrtobot.obj:	..\clrtobot.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Foclrtobot ..\clrtobot.c

clrtoeol.obj:	..\clrtoeol.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Foclrtoeol ..\clrtoeol.c

endwin.obj:	..\endwin.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Foendwin   ..\endwin.c

initscr.obj:	..\initscr.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Foinitscr  ..\initscr.c

linedel.obj:	..\linedel.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Folinedel  ..\linedel.c

lineins.obj:	..\lineins.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Folineins  ..\lineins.c

longname.obj:	..\longname.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Folongname ..\longname.c

move.obj:	..\move.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fomove     ..\move.c

mvcursor.obj:	..\mvcursor.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fomvcursor ..\mvcursor.c

newwin.obj:	..\newwin.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fonewwin   ..\newwin.c

options.obj:	..\options.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fooptions  ..\options.c

overlay.obj:	..\overlay.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fooverlay  ..\overlay.c

prntscan.obj:	..\prntscan.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Oat -Foprntscan ..\prntscan.c

refresh.obj:	..\refresh.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Forefresh  ..\refresh.c

scrreg.obj:	..\scrreg.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Foscrreg   ..\scrreg.c

setterm.obj:	..\setterm.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fosetterm  ..\setterm.c

stradd.obj:	..\stradd.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fostradd   ..\stradd.c

strget.obj:	..\strget.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fostrget   ..\strget.c

tabsize.obj:	..\tabsize.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fotabsize  ..\tabsize.c

termmisc.obj:	..\termmisc.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fotermmisc ..\termmisc.c

unctrl.obj:	..\unctrl.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Founctrl   ..\unctrl.c

update.obj:	..\update.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Foupdate   ..\update.c

winclear.obj:	..\winclear.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fowinclear  ..\winclear.c

windel.obj:	..\windel.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fowindel   ..\windel.c

winerase.obj:	..\winerase.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fowinerase ..\winerase.c

winmove.obj:	..\winmove.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fowinmove  ..\winmove.c

winscrol.obj:	..\winscrol.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fowinscrol ..\winscrol.c

wintouch.obj:	..\wintouch.c ..\curses.h ..\curspriv.h
	cl -M$(MODEL) -c -Ox -Fowintouch ..\wintouch.c

cursesio.obj:	..\cursesio.asm
	masm ..\cursesio.asm/mx,cursesio.obj,nul,nul;

#################################################################
# Perform a backup of the files in the directory where the	#
# 'make backup' command was issued - copies all files to the	#
# directory \pccurses on the A: floppy				#
#################################################################

backup:
	@echo ***** backup of curses *****
	@echo Insert backup diskette in drive A: and hit any key!
	@pause
	mkdir a:\pccurses
	del   a:\pccurses\*.*
	copy  *.* a:\pccurses

#################################################################
# Remove all temporary files and work directories that were	#
# created							#
#################################################################

clean:
	del smodel\*.*
	del cmodel\*.*
	del mmodel\*.*
	del lmodel\*.*
	rmdir smodel
	rmdir cmodel
	rmdir mmodel
	rmdir lmodel
