#################################################################
#			   PCCURSES				#
# Makefile to generate scurses.lib, ccurses.lib, mcurses.lib,	#
# lcurses.lib and hcurses.lib for Borland Turbo-'C'.		#
#								#
# This makefile will generate subdirectories and call itself	#
# recursively...						#
#################################################################
# 1.3:	Release:					881005	#
#################################################################

# The following are the directories where your lib and include files
# will be installed. These need to be edited for your system.

LIBDIR=	\trc\lib
INCDIR= \trc\inc

# General definitions:

CFLAGS=		-m$(MODEL) -c -O -Z -w -w-pro -I\trc -L\trc

COBJS=		attrib.obj   beep.obj     border.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    \
		setmode.obj  setterm.obj  stradd.obj   strget.obj    \
		tabsize.obj  termmisc.obj unctrl.obj   update.obj    \
		winclear.obj windel.obj   winerase.obj winmove.obj   \
		winscrol.obj wintouch.obj

ASMOBJS=	cursesio.obj

OBJS=		$(COBJS) $(ASMOBJS)

CHMOD=		attrib

CC=		\trc\tcc

#################################################################
# '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
	$(CHMOD) -r $(INCDIR)\curses.h
	copy curses.h $(INCDIR)\curses.h
	$(CHMOD) +r $(INCDIR)\curses.h

$(INCDIR)\curspriv.h:	curspriv.h
	$(CHMOD) -r $(INCDIR)\curspriv.h
	copy curspriv.h $(INCDIR)\curspriv.h
	$(CHMOD) +r $(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.trc $(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.trc $(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.trc $(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.trc $(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
	$(CHMOD) -r $(LIBDIR)\$(MODEL)curses.lib
	copy	tmp.lib $(LIBDIR)\$(MODEL)curses.lib
	$(CHMOD) +r $(LIBDIR)\$(MODEL)curses.lib
	del	tmp.lib

#################################################################
# Commands and dependencies for individual modules		#
#################################################################

attrib.obj:	..\attrib.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -oattrib ..\attrib.c

beep.obj:	..\beep.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -obeep ..\beep.c

border.obj:	..\border.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -oborder ..\border.c

boxes.obj:	..\boxes.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -oboxes ..\boxes.c

charadd.obj:	..\charadd.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -ocharadd ..\charadd.c

chardel.obj:	..\chardel.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -ochardel ..\chardel.c

charget.obj:	..\charget.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -ocharget ..\charget.c

charins.obj:	..\charins.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -ocharins ..\charins.c

charpick.obj:	..\charpick.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -ocharpick ..\charpick.c

clrtobot.obj:	..\clrtobot.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -oclrtobot ..\clrtobot.c

clrtoeol.obj:	..\clrtoeol.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -oclrtoeol ..\clrtoeol.c

endwin.obj:	..\endwin.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -oendwin ..\endwin.c

initscr.obj:	..\initscr.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -oinitscr ..\initscr.c

linedel.obj:	..\linedel.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -olinedel ..\linedel.c

lineins.obj:	..\lineins.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -olineins ..\lineins.c

longname.obj:	..\longname.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -olongname ..\longname.c

move.obj:	..\move.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -omove ..\move.c

mvcursor.obj:	..\mvcursor.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -w-par -omvcursor ..\mvcursor.c

newwin.obj:	..\newwin.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -onewwin ..\newwin.c

options.obj:	..\options.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -ooptions ..\options.c

overlay.obj:	..\overlay.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -ooverlay ..\overlay.c

prntscan.obj:	..\prntscan.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -N -oprntscan ..\prntscan.c

refresh.obj:	..\refresh.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -orefresh ..\refresh.c

scrreg.obj:	..\scrreg.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -oscrreg ..\scrreg.c

setmode.obj:	..\setmode.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -osetmode ..\setmode.c

setterm.obj:	..\setterm.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -osetterm ..\setterm.c

stradd.obj:	..\stradd.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -ostradd ..\stradd.c

strget.obj:	..\strget.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -ostrget ..\strget.c

tabsize.obj:	..\tabsize.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -otabsize ..\tabsize.c

termmisc.obj:	..\termmisc.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -otermmisc ..\termmisc.c

unctrl.obj:	..\unctrl.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -ounctrl ..\unctrl.c

update.obj:	..\update.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -oupdate ..\update.c

winclear.obj:	..\winclear.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -owinclear ..\winclear.c

windel.obj:	..\windel.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -owindel ..\windel.c

winerase.obj:	..\winerase.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -owinerase ..\winerase.c

winmove.obj:	..\winmove.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -owinmove ..\winmove.c

winscrol.obj:	..\winscrol.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -owinscrol ..\winscrol.c

wintouch.obj:	..\wintouch.c ..\curses.h ..\curspriv.h
	$(CC) $(CFLAGS) -owintouch ..\wintouch.c

#################################################################
# You have to choose one of the two following ways to make a	#
# CURSESIO.OBJ - either the 'C' version or the 'ASM' version.	#
# Comment out the one you do not like.				#
#################################################################

cursesio.obj:	..\cursesio.c
	$(CC) $(CFLAGS) -ocursesio ..\cursesio.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	#
# floppy in drive A:						#
#################################################################

backup:
	@echo ***** Backup of PCcurses *****
	@echo Insert backup diskette in drive A: and hit any key!
	@pause
	@echo Y > yes.txt
	del a:\*.* < yes.txt >NUL
	@del yes.txt
	copy *.* a:

#################################################################
# Remove all temporary files and work directories that were	#
# created							#
#################################################################

clean:
	@echo Y > yes.txt
	del smodel\*.* < yes.txt >NUL
	del cmodel\*.* < yes.txt >NUL
	del mmodel\*.* < yes.txt >NUL
	del lmodel\*.* < yes.txt >NUL
	@del yes.txt
	rmdir smodel
	rmdir cmodel
	rmdir mmodel
	rmdir lmodel
