#
#  Master MAKE.INI file for NDMAKE
#
#  jim nutt
#  'the computer handyman'
#

.SUFFIXES : .doc .exe .prf .obj .cpp .c .a86 .asm .com .a86

#
# generate response files for these as well as lib and link
#

.RESPONSE_LINK: tlink blink ztcmap
.RESPONSE_LIB:  tlib zorlib

VPATH   = .;c:\include;
MAKE_TMP= $(TMP)

#
# some defaults
#

project =
obj     =
cc      = ztc
mcflags = $p $s $w
cflags  =

#
# zortech c settings
#

ztclib     = c:\lib\$(cc)                  # where are the libraries
ztcinclude = c:\include\$(cc)
ztclibrary = $(lib)\zl$(model)
ztccompile = $(cc) -c -m$(options)
ztcoptions = $(model) $(mcflags) -I$(include) -ic:\include
ztcstartup =
ztcwild    =
ztcscheck  = -s
ztcpcheck  =
ztcalign   = -a
ztcunsigned= -J
ztccodeview= -g
ztcmaxwarnings= -p -r
ztcinline  = -f
ztcoptimize= -o+all -o+loop
ztcmodel   = -m
ztcdefine  = -d
ztcstdc    = -A

#
# quick c settings
#

qcllib     = c:\lib\msc
qclinclude = c:\include\msc
qcllibrary = $(lib)\$(model)libcr $(lib)\libh
qclcompile = qcl /c /X /Zl /A$(options) /D__MSC__=1
qcloptions = $(model) $(mcflags) /I$(include)
qclstartup =
qclwild    =
qclscheck  =
qclpcheck  = /Zr
qclalign   = /Zp
qclunsigned=
qclcodeview= /Zi
qclmaxwarnings = /W3
qclinline  = /FPi87
qcloptimize= /Ox
qclmodel   = /A
qcldefine  = /D
qclstdc    = /Za

#
# msc 5.1 settings
#

msclib     = c:\lib\msc
mscinclude = c:\include\$(cc)
msclibrary = $(lib)\$(model)libcr $(lib)\libh
msccompile = cl /c /X /Zl /A$(options) /D__MSC__=1
mscoptions = $(model) $(mcflags) /I$(include) /Ic:\include
mscstartup =
mscwild    =
mscscheck  =
mscpcheck  =
mscalign   = /Zp
mscunsigned=
msccodeview= /Zi
mscmaxwarnings = /W3
mscinline  = /FPi87
mscoptimize= /Owilt
mscmodel   = /A
mscdefine  = /D
mscstdc    = /Za

#
# turbo c settings
#

tcclib     = c:\lib\$(cc)                  # where are the libraries
tccinclude = c:\include\$(cc)
tcclibrary = $(lib)\c$(model)
tcccompile = $(cc) -c -m$(options)
tccoptions = $(model) $(mcflags) -I$(include)
tccstartup = $(lib)\c0$(model)
tccwild    =
tccscheck  = -N
tccpcheck  =
tccalign   = -a-
tccunsigned= -K
tcccodeview= -y
tccmaxwarnings = -w -w-stv
tccinline  = -f87
tccmodel   = -m
tccdefine  = -D
tccoptimize= -O -G -r
tccstdc    = -A

lib             = $($(cc)lib)
include         = $($(cc)include)
library         = $($(cc)library)
cxl             = $(lib)\cxl$(model)
options         = $($(cc)options)
compile         = $($(cc)compile) $(cflags)
startup         = $($(cc)startup)
wild            = $($(cc)wild)
libs            = $(library)

# compiler options

a       = $($(cc)align)         # byte align structures
c       = $($(cc)codeview)      # codeview debugging (if avail, else symdeb)
d       = $($(cc)define)        # command line #define
i       = $($(cc)inline)        # inline 8087 code generation
m       = $($(cc)model)         # memory model selection
p       = $($(cc)pcheck)        # pointer checking (if available)
s       = $($(cc)scheck)        # turn on stack checking
u       = $($(cc)unsigned)      # chars are unsigned
o       = $($(cc)optimize)      # do max optimizations
w       = $($(cc)maxwarnings)   # give maximum warnings
stdc    = $($(cc)stdc)          # use ANSI standard keywords only

model   = S

# the linker

linkopt = /noi
linker  = link

# an easy linking macros

linklst = $($(project)obj),$(project),$(project),$(libs) $(linkopt);
link    = $(linker) $(wild) $(startup) $(linklst)

# default rules

markfile :
        calltree -z markfile *.c

.c.exe :
        .c.obj
        $(linker) $(wild) $(startup) $*, $* ,$* ,$(libs) $(linkopt);

.obj.exe :
        $(link)

.c.obj : 
        $(compile) $*.c

.cpp.obj :
        $(cc) $*

.asm.obj :
        masm $*;

.a86.obj :
        a86 +o +s $*.a86 $*.obj

.a86.com :
        a86 $*.a86

.a86.exe :
        a86 +o +s $*.a86
        link $*;

.prf.doc :
        proff $*.prf $*.doc
