#
# To assemble, compile, link and build JEMM386.EXE, you will need:
#
# Assembler:  Masm 6.14/6.15/7.00
#        or   Tasm 3.2/4.1/5.0
# C Compiler: Open Watcom WCC 1.5
#        or   Borland Turbo C 2.01/4.0 
#        or   MS VC++ 1.5 
#        or   Digital Mars C++
# OMF Linker: Digital Mars OptLink
#        or   Borland TLink 7.1.30 (older versions might work) 
#        or   MS Link (OMF version!)
#        or   LADSoft VALX (currently NOT!)
# MAKE tool:  Open Watcom WMAKE
#        or   Borland MAKE (v3.6+)
#        or   MS NMAKE
#

!ifndef DEBUG
DEBUG=0
!endif

# select assembler, default MASM

!ifndef MASM
MASM=1
!endif

# select C compiler, default MS C

!ifndef WCC
WCC=0
!endif
!ifndef DMC
DMC=0
!endif
!ifndef TCC
TCC=0
!endif
!ifndef MSC
!if $(WCC)+$(DMC)+$(TCC)==0
MSC=1
!else
MSC=0
!endif
!endif

# select linker, default OPTLINK

!ifndef VALX
VALX=0
!endif
!ifndef TLINK
TLINK=0
!endif
!ifndef OPTLINK
!if $(VALX)+$(TLINK)==0
OPTLINK=1
!else
OPTLINK=0
!endif
!endif

NAME=JEMM386

!if $(DEBUG)
AOPTD=/d_DEBUG
OUTDIR=DEBUG
!else
AOPTD=
OUTDIR=RELEASE
!endif

!if $(MASM)
ML=ml.exe -c -nologo -D?MASM=1 -D?WCC=$(WCC) -D?MSC=$(MSC) -D?DMC=$(DMC) -Fl$(OUTDIR)\$(NAME).LST -Fo$(OUTDIR)\$(NAME).OBJ 
AS=$(ML) $(AOPTD) $(NAME).asm
!else
TASM=tasm.exe /la /m3 /z /n /d?MASM=0 /d?WCC=$(WCC) /d?MSC=$(MSC)
#TASM=tasm32.exe /la /m3 /z /n /d?MASM=0 /d?WCC=$(WCC) /d?MSC=$(MSC)
AS=$(TASM) $(AOPTD) $(NAME).asm, $(OUTDIR)\$(NAME).OBJ, $(OUTDIR)\$(NAME).LST;
!endif

!if $(WCC)
CC=wcc.exe -3 -bt=dos -ecc -ms -os -q -s -fp3 -w=3
# the OW C++ compiler produces slightly better code
#CC=wpp.exe -3 -bt=dos -ecc -ms -os -q -s -fp3 -w=3
OUTO=-fo
!endif
!if $(DMC)
CC=\dm\bin\sc.exe -msd -c -3 -J -o
OUTO=-o
!endif
!if $(TCC)
CC=tcc.exe -c -G- -w -r -N- -O -Z -k-
#CC=bcc.exe -c -3 -N- -O -w -Z
OUTO=-o
!endif
!if $(MSC)
CC=cl.exe -c -nologo -O1 -G3 -Gs -J -Zl -Fl$*.lst
OUTO=-Fo
!endif

!if $(VALX)
LINK=valx.exe /32 /MAP $(NAME).obj jemm386c.obj prf.obj useful.obj,$(NAME).EXE,$(NAME).MAP;
!endif
!if $(TLINK)
LINK=tlink.exe /3 /m /s /n $(NAME).obj jemm386c.obj prf.obj useful.obj,$(NAME).EXE,$(NAME).MAP;
!endif
!if $(OPTLINK)
LINK=\dm\bin\link.exe /MAP:FULL /NOD $(NAME).obj jemm386c.obj prf.obj useful.obj,$(NAME).EXE,$(NAME).MAP;
!endif  

$(OUTDIR)\jemm386.exe: $(OUTDIR)\jemm386.obj $(OUTDIR)\jemm386c.obj $(OUTDIR)\prf.obj $(OUTDIR)\useful.obj
    @cd $(OUTDIR)
	$(LINK)
    @cd ..

$(OUTDIR)\jemm386.obj: jemm386.asm jemm386.inc debug.inc MAKEFILE
	$(AS)

$(OUTDIR)\jemm386c.obj: jemm386c.c MAKEFILE
	$(CC) $(OUTO)$(OUTDIR)\jemm386c.obj jemm386c.c

$(OUTDIR)\prf.obj: prf.c MAKEFILE
	$(CC) $(OUTO)$(OUTDIR)\prf.obj prf.c
	
$(OUTDIR)\useful.obj: useful.c MAKEFILE
	$(CC) $(OUTO)$(OUTDIR)\useful.obj useful.c

