#
# Makefile for diskcopy
#
# Works for borland make.
#
# Works for GNU make only if you don't use the 16 bit dpmi version of the
# borland tools.
#

## change to reflect the real path where you installed tcc.
#includepath  = c:\tclite\include  -| Only needed if tcc is incorrectly installed
#libdir       = c:\tclite\lib      _|

# libraries used with diskcopy
catsdir = .\cats
catslib = $(catsdir)\catsdb.lib
io95dir = .\io95
io95lib = $(io95dir)\io95.lib

libs = $(catslib) $(io95lib)

compiler  = tcc -c -I$(includepath)
assembler = nasm                      #change to nasm16 on 8086/80286
indenter  = indenter.bat              #indenter.bat

#hlpoptions =             
hlpoptions = -DDEF_HELP

recoptions = 
#recoptions = -DALL_RECOVERY_MODE

#updateoptions =
updateoptions = -DUPDATE_SERIALNUM

backdrv = d:                          # just happens to be my ZIP drive
                                      # change to a: for backup to
                                      # floppy disk

options  = -w  -O  -Z  $(hlpoptions) $(recoptions) $(updateoptions)

sources = diskcopy.c drive.c ems.asm memtypes.c simplcpy.c xms.asm waitfinp.c tdrvcpy.c \
     diskcopy.h drive.h ems.h memtypes.h misc.h xms.h waitfinp.h tdrvcpy.h \
     mouse.asm mouse.h switchch.asm drvtypes.asm scanner.c parser.c scanner.h \
     parser.h recovery.c datgen.c fastcopy.h boot.h \
     fastcopy.c smdskcpy.c smdskcpy.h critical.asm hicritcl.asm critical.h \
     lfnapi.c lfnapi.h lfnchk.asm serialnm.c

objects = diskcopy.obj drive.obj ems.obj memtypes.obj simplcpy.obj xms.obj \
     waitfinp.obj tdrvcpy.obj mouse.obj switchch.obj \
     drvtypes.obj scanner.obj parser.obj recovery.obj \
     exepath.obj datgen.obj fastcopy.obj smdskcpy.obj critical.obj \
     hicritcl.obj lfnapi.obj lfnchk.obj serialnm.obj

diskcopy.exe: $(sources)  $(objects)
	@cd $(catsdir)
	@makecats
	@cd ..
	@cd $(io95dir)
	@makeio95
	@cd ..
#@tlib diskcopy + diskcopy.obj
	@delete diskcopy.lib
	@tlib diskcopy + drive.obj
	@tlib diskcopy + ems.obj
	@tlib diskcopy + memtypes.obj
	@tlib diskcopy + simplcpy.obj
	@tlib diskcopy + xms.obj
	@tlib diskcopy + waitfinp.obj
	@tlib diskcopy + tdrvcpy.obj
	@tlib diskcopy + mouse.obj
	@tlib diskcopy + switchch.obj
	@tlib diskcopy + drvtypes.obj
	@tlib diskcopy + scanner.obj
	@tlib diskcopy + parser.obj
	@tlib diskcopy + recovery.obj
	@tlib diskcopy + exepath.obj
	@tlib diskcopy + datgen.obj
	@tlib diskcopy + fastcopy.obj
	@tlib diskcopy + smdskcpy.obj
	@tlib diskcopy + critical.obj
	@tlib diskcopy + hicritcl.obj
	@tlib diskcopy + lfnapi.obj
	@tlib diskcopy + lfnchk.obj
	@tlib diskcopy + serialnm.obj
	@tcc -M -ediskcopy.exe diskcopy.lib diskcopy.obj $(libs)
	@del  diskcopy.lib
	@del  diskcopy.bak

diskcopy.obj: diskcopy.c drive.h diskcopy.h memtypes.h misc.h waitfinp.h\
    tdrvcpy.h parser.h exepath.h nlsaspct.h simplcpy.h
	@$(compiler) $(options) diskcopy.c

drive.obj: drive.c drive.h misc.h drvtypes.h
	@$(compiler) $(options) drive.c

ems.obj: ems.asm
	@$(assembler) ems.asm -f obj -o ems.obj

memtypes.obj: memtypes.c memtypes.h xms.h ems.h diskcopy.h drive.h parser.h
	@$(compiler) $(options) memtypes.c

simplcpy.obj: simplcpy.c simplcpy.h
	@$(compiler) $(options) simplcpy.c

xms.obj: xms.asm
	@$(assembler) xms.asm -f obj -o xms.obj

waitfinp.obj: waitfinp.c waitfinp.h mouse.h
	@$(compiler) $(options) waitfinp.c

tdrvcpy.obj: tdrvcpy.c diskcopy.h tdrvcpy.h memtypes.h waitfinp.h drive.h \
	     nlsaspct.h
	@$(compiler) $(options) tdrvcpy.c

scanner.obj: scanner.c diskcopy.h drive.h scanner.h parser.h datgen.h
	@$(compiler) $(options) scanner.c

parser.obj: parser.c diskcopy.h drive.h scanner.h parser.h datgen.h \
	    nlsaspct.h
	@$(compiler) $(options) parser.c

recovery.obj: recovery.c diskcopy.h drive.h nlsaspct.h
	@$(compiler) $(options) recovery.c

exepath.obj: exepath.c exepath.h
	@$(compiler) $(options) exepath.c

mouse.obj: mouse.asm
	@$(assembler) mouse.asm -f obj -o mouse.obj

switchch.obj: switchch.asm
	@$(assembler) switchch.asm -f obj -o switchch.obj

drvtypes.obj: drvtypes.asm
	@$(assembler) drvtypes.asm -f obj -o drvtypes.obj

critical.obj: critical.asm
	@$(assembler) critical.asm -f obj -o critical.obj

hicritcl.obj: critical.asm
	@$(assembler) hicritcl.asm -f obj -o hicritcl.obj

datgen.obj: datgen.c datgen.h scanner.h parser.h drive.h fastcopy.h
	@$(compiler) $(options) datgen.c

fastcopy.obj: fastcopy.c fastcopy.h drive.h diskcopy.h
	@$(compiler) $(options) fastcopy.c

smdskcpy.obj: smdskcpy.c drive.h memtypes.h smdskcpy.h
	@$(compiler) $(options) smdskcpy.c

lfnapi.obj: lfnapi.c drive.h lfnapi.h
	@$(compiler) $(options) lfnapi.c

lfnchk.obj: lfnchk.asm
	@$(assembler) lfnchk.asm -f obj -o lfnchk.obj

serialnm.obj: serialnm.c boot.h nlsaspct.h
	@$(compiler) $(options) serialnm.c

clean:
	@cd $(catsdir)
	@make clean
	@cd ..
	@cd $(io95dir)
	@make clean
	@cd ..
	@delete diskcopy.exe
	@delete diskcopy.obj
	@delete drive.obj
	@delete ems.obj
	@delete memtypes.obj
	@delete simplcpy.obj
	@delete xms.obj
	@delete *.bak
	@delete waitfinp.obj
	@delete tdrvcpy.obj
	@delete mouse.obj
	@delete switchch.obj
	@delete drvtypes.obj
	@delete scanner.obj
	@delete parser.obj
	@delete exepath.obj
	@delete recovery.obj
	@delete fastcopy.obj
	@delete datgen.obj
	@delete smdskcpy.obj
	@delete lfnapi.obj
	@delete lfnchk.obj
	@delete serialnm.obj
	@delete critical.obj
	@delete hicritcl.obj

backup: $(sources) #diskcopy.exe -- We assume that you know what need backing up
	@make clean
	@cls
	@echo Put your backup diskette in drive $(backdrv), and
	@pause
	@md $(backdrv)\diskcopy
	@xcopy \diskcopy $(backdrv)\diskcopy /s
	@echo Done.


debugger: diskcopy.exe
	@delete diskcopy.exe
	@delete diskcopy.obj
	@delete drive.obj
	@delete memtypes.obj
	@delete simplcpy.obj
	@delete waitfinp.obj
	@delete tdrvcpy.obj
	@delete scanner.obj
	@delete parser.obj
	@delete exepath.obj
	@delete recovery.obj
	@delete datgen.obj
	@delete fastcopy.obj
	@delete smdskcpy.obj
	@delete lfnapi.obj
	@delete serialnm.obj

indentation: $(sources)             # requires GNU indent (DOS version)
#all C files
	@$(indenter) diskcopy.c
	@$(indenter) drive.c
	@$(indenter) memtypes.c
	@$(indenter) simplcpy.c
	@$(indenter) waitfinp.c
	@$(indenter) tdrvcpy.c
	@$(indenter) parser.c
	@$(indenter) scanner.c
	@$(indenter) recovery.c
	@$(indenter) datgen.c
	@$(indenter) fastcopy.c
	@$(indenter) exepath.c
	@$(indenter) smdskcpy.c
	@$(indenter) lfnapi.c
	@$(indenter) serialnm.c
#no asm files (indent doesn't work for assembly)
#all header file
	@$(indenter) ems.h
	@$(indenter) critical.h
	@$(indenter) datgen.h
	@$(indenter) diskcopy.h
	@$(indenter) drive.h
	@$(indenter) drvtypes.h
	@$(indenter) exepath.h
	@$(indenter) fastcopy.h
	@$(indenter) memtypes.h
	@$(indenter) simplcpy.h
	@$(indenter) mouse.h
	@$(indenter) parser.h
	@$(indenter) scanner.h
	@$(indenter) tdrvcpy.h
	@$(indenter) waitfinp.h
	@$(indenter) xms.h
	@$(indenter) smdskcpy.h
	@$(indenter) lfnapi.h
	@$(indenter) serialnm.h
