 #
 # 68K/386 32-bit C compiler.
 #
 # copyright (c) 1996, David Lindauer
 # 
 # This compiler is intended for educational use.  It may not be used
 # for profit without the express written consent of the author.
 #
 # It may be freely redistributed, as long as this notice remains intact
 # and sources are distributed along with any executables derived from them.
 #
 # The author is not responsible for damages, either direct or consequential,
 # that may arise from use of this software.
 #
 # v1.75 November 1998
 # David Lindauer, camille@bluegrass.net
 #
 # Credits to Mathew Brandt for original K&R C compiler
 #
 #
# This makefile is for Borland make (IBM PC/80386+)
#.AUTODEPEND
#		*Translator Definitions*
# Comment this next line out to generate the 68k compiler
# leave it in to generate the 386 compiler
 i386 = 1
!ifdef i386
i386 = -Di386
!endif

CC = cc386 /I..\include /C+N /O-i $(i386) -DCPLUSPLUS
ASM = nasm -fobj
LIB = xlib
LINK = valx
SOURCE = ..\source
LIBPATH = C:\cc386\lib
#INCLUDEPATH = C:\cc386\include

.c.obj:
	$(CC) $&
	@$(ASM) $&.asm

#		*List Macros*
libfiles =  args.obj ext.obj fatal.obj phitext.obj \
 	pstr.obj srchpath.obj usage.obj
miscfiles = cmain.obj symbol.obj memmgt.obj error.obj list.obj \
	mangle.obj
lexfiles = getsym.obj symchar.obj preproc.obj searchkw.obj
parsefiles = floatexp.obj func.obj expr.obj init.obj intexpr.obj \
	stmt.obj decl.obj declass.obj types.obj
optfiles = optimize.obj analyze.obj inline.obj


!ifdef i386
codegenfiles =  inasm386.obj conf386.obj an386.obj reg386.obj gexpr386.obj peep386.obj gstmt386.obj intr386.obj
outputfiles = outas386.obj
!else
codegenfiles = inasm68.obj conf68.obj an68.obj reg68.obj gexpr68.obj peep68.obj  gstmt68.obj 
outputfiles = outas68.obj
!endif

EXE_dependencies = $(libfiles) $(miscfiles) $(lexfiles) $(parsefiles) \
	$(optfiles) $(codegenfiles) $(outputfiles)

#		*Explicit Rules*
cc.exe: $(EXE_dependencies)
  $(LINK) -use32 -nocaseignore -Map @&&|
\cc386\lib\c0dos.obj $(EXE_dependencies),cc.exe,cc.map,\cc386\lib\cldos.lib
|

#		*Individual File Dependencies*

proftime.obj: proftime.c
	$(CC) /C+N proftime
	nasm -fobj proftime.asm
profile.obj: profile.c
	$(CC) /C+N profile
	nasm -fobj profile.asm
inasm68.obj: $(SOURCE)\inasm68.c
	$(CC) $(SOURCE)\inasm68.c
	&$(ASM)	inasm68.asm
inasm386.obj: $(SOURCE)\inasm386.c
	$(CC) $(SOURCE)\inasm386.c
	&$(ASM)	inasm386.asm
intr386.obj: $(SOURCE)\intr386.c
	$(CC) $(SOURCE)\intr386.c
	&$(ASM)	intr386.asm
outas68.obj: $(SOURCE)\outas68.c
	$(CC) $(SOURCE)\outas68.c
	&$(ASM)	outas68.asm
outda68.obj: $(SOURCE)\outda68.c
	$(CC) $(SOURCE)\outda68.c
	&$(ASM)	outda68.asm
ieee695.obj: $(SOURCE)\ieee695.c
	$(CC) $(SOURCE)\ieee695.c
	&$(ASM)	ieee695.asm
outas386.obj: $(SOURCE)\outas386.c
	$(CC) $(SOURCE)\outas386.c
	&$(ASM)	outas386.asm
srchpath.obj: $(SOURCE)\srchpath.c
	$(CC) $(SOURCE)\srchpath.c
	&$(ASM)	srchpath.asm
usage.obj: $(SOURCE)\usage.c
	$(CC) $(SOURCE)\usage.c
	&$(ASM)	usage.asm
args.obj: $(SOURCE)\args.c
	$(CC) $(SOURCE)\args.c
	&$(ASM)	args.asm
ext.obj: $(SOURCE)\ext.c
	$(CC) $(SOURCE)\ext.c
	&$(ASM)	ext.asm
fatal.obj: $(SOURCE)\fatal.c
	$(CC) $(SOURCE)\fatal.c
	&$(ASM)	fatal.asm
phitext.obj: $(SOURCE)\phitext.c
	$(CC) $(SOURCE)\phitext.c
	&$(ASM)	phitext.asm
pstr.obj: $(SOURCE)\pstr.c
	$(CC) $(SOURCE)\pstr.c
	&$(ASM)	pstr.asm
floatexp.obj: $(SOURCE)\floatexp.c
	$(CC) $(SOURCE)\floatexp.c
	&$(ASM)	floatexp.asm
analyze.obj: $(SOURCE)\analyze.c
	$(CC) $(SOURCE)\analyze.c
	&$(ASM)	analyze.asm
error.obj: $(SOURCE)\error.c
	$(CC) $(SOURCE)\error.c
	&$(ASM)	error.asm
expr.obj: $(SOURCE)\expr.c
	$(CC) $(SOURCE)\expr.c
	&$(ASM)	expr.asm
init.obj: $(SOURCE)\init.c
	$(CC) $(SOURCE)\init.c
	&$(ASM)	init.asm
optimize.obj: $(SOURCE)\optimize.c
	$(CC) $(SOURCE)\optimize.c
	&$(ASM)	optimize.asm
register.obj: $(SOURCE)\register.c
	$(CC) $(SOURCE)\register.c
	&$(ASM)	register.asm
func.obj: $(SOURCE)\func.c
	$(CC) $(SOURCE)\func.c
	&$(ASM)	func.asm
intexpr.obj: $(SOURCE)\intexpr.c
	$(CC) $(SOURCE)\intexpr.c
	&$(ASM)	intexpr.asm
searchkw.obj: $(SOURCE)\searchkw.c
	$(CC) $(SOURCE)\searchkw.c
	&$(ASM)	searchkw.asm
outco68.obj: $(SOURCE)\outco68.c
	$(CC) $(SOURCE)\outco68.c
	&$(ASM)	outco68.asm
an68.obj: $(SOURCE)\an68.c
	$(CC) $(SOURCE)\an68.c
	&$(ASM)	an68.asm
conf68.obj: $(SOURCE)\conf68.c
	$(CC) $(SOURCE)\conf68.c
	&$(ASM)	conf68.asm
reg68.obj: $(SOURCE)\reg68.c
	$(CC) $(SOURCE)\reg68.c
	&$(ASM)	reg68.asm
gexpr68.obj: $(SOURCE)\gexpr68.c
	$(CC) $(SOURCE)\gexpr68.c
	&$(ASM)	gexpr68.asm
peep68.obj: $(SOURCE)\peep68.c
	$(CC) $(SOURCE)\peep68.c
	&$(ASM)	peep68.asm
gstmt68.obj: $(SOURCE)\gstmt68.c
	$(CC) $(SOURCE)\gstmt68.c
	&$(ASM)	gstmt68.asm
outco386.obj: $(SOURCE)\outco386.c
	$(CC) $(SOURCE)\outco386.c
	&$(ASM)	outco386.asm
reg386.obj: $(SOURCE)\reg386.c
	$(CC) $(SOURCE)\reg386.c
	&$(ASM)	reg386.asm
conf386.obj: $(SOURCE)\conf386.c
	$(CC) $(SOURCE)\conf386.c
	&$(ASM)	conf386.asm
an386.obj: $(SOURCE)\an386.c
	$(CC) $(SOURCE)\an386.c
	&$(ASM)	an386.asm
gexpr386.obj: $(SOURCE)\gexpr386.c
	$(CC) $(SOURCE)\gexpr386.c
	&$(ASM)	gexpr386.asm
peep386.obj: $(SOURCE)\peep386.c
	$(CC) $(SOURCE)\peep386.c
	&$(ASM)	peep386.asm
gstmt386.obj: $(SOURCE)\gstmt386.c
	$(CC) $(SOURCE)\gstmt386.c
	&$(ASM)	gstmt386.asm
list.obj: $(SOURCE)\list.c
	$(CC) $(SOURCE)\list.c
	&$(ASM)	list.asm
stmt.obj: $(SOURCE)\stmt.c
	$(CC) $(SOURCE)\stmt.c
	&$(ASM)	stmt.asm
cmain.obj: $(SOURCE)\cmain.c
	$(CC) $(SOURCE)\cmain.c
	&$(ASM)	cmain.asm
memmgt.obj: $(SOURCE)\memmgt.c
	$(CC) $(SOURCE)\memmgt.c
	&$(ASM)	memmgt.asm
preproc.obj: $(SOURCE)\preproc.c
	$(CC) $(SOURCE)\preproc.c
	&$(ASM)	preproc.asm
symbol.obj: $(SOURCE)\symbol.c
	$(CC) $(SOURCE)\symbol.c
	&$(ASM)	symbol.asm
mangle.obj: $(SOURCE)\mangle.c
	$(CC) $(SOURCE)\mangle.c
	&$(ASM)	mangle.asm
decl.obj: $(SOURCE)\decl.c
	$(CC) $(SOURCE)\decl.c
	&$(ASM)	decl.asm
declass.obj: $(SOURCE)\declass.c
	$(CC) $(SOURCE)\declass.c
	&$(ASM)	declass.asm
getsym.obj: $(SOURCE)\getsym.c
	$(CC) $(SOURCE)\getsym.c
	&$(ASM)	getsym.asm
types.obj: $(SOURCE)\types.c
	$(CC) $(SOURCE)\types.c
	&$(ASM)	types.asm
symchar.obj: $(SOURCE)\symchar.c
	$(CC) $(SOURCE)\symchar.c
	&$(ASM)	symchar.asm
inline.obj: $(SOURCE)\inline.c
	$(CC) $(SOURCE)\inline.c
	&$(ASM)	inline.asm