#########################################################################
#	       Makefile for making NARM using VC			#
#########################################################################
#									#
# Revised: 09/Jan/2000  hans.walheim@acm.org				#
#    http://www.bahnhof.se/~inters/downld.html				#
#    http://www.geocities.com/SiliconValley/Hub/6461/			#
#									#
#########################################################################

RESDIR	= test/

OBJD	= tmp/

#########################################################################
# Tool configurations
#########################################################################

#
CC	= cl
#CC	= ncc

!ifdef USE_GNU
CFLAGS	= @gnu.rsp -S
!else
#CFLAGS	= @ms.rsp -S
CFLAGS	=  -c -DDEBUG -Fo$@
!endif

#AS	= nasmw
#AFLAGS	= -s -f win32
AS	= echo

!ifdef USE_GNU
LINK	= gcc
LINKFLAGS =
LOUT	= -o
LIBRARIES =

!else
LINK	= link
LINKFLAGS = /incremental:no
LOUT	= /out:
LIBRARIES = libc.lib

!endif

#########################################################################
# Nasm default's.  May be usable for Linux/NT configurations later on
#########################################################################

EXE	= .exe#
OBJ	= obj#
SUFFIX	= w#

#########################################################################
#
#########################################################################

NASMOBJS = $(OBJD)nasm.$(OBJ)     $(OBJD)nasmlib.$(OBJ)  $(OBJD)float.$(OBJ)   $(OBJD)insnsa.$(OBJ)	\
           $(OBJD)assemble.$(OBJ) $(OBJD)labels.$(OBJ)   $(OBJD)parser.$(OBJ)  $(OBJD)outform.$(OBJ)	\
	   $(OBJD)outbin.$(OBJ)   $(OBJD)outaout.$(OBJ)  $(OBJD)outcoff.$(OBJ) $(OBJD)outelf.$(OBJ)	\
	   $(OBJD)outobj.$(OBJ)   $(OBJD)outas86.$(OBJ)  $(OBJD)outrdf.$(OBJ)  $(OBJD)outrdf2.$(OBJ)	\
	   $(OBJD)outdbg.$(OBJ)   $(OBJD)zoutieee.$(OBJ) $(OBJD)preproc.$(OBJ) $(OBJD)listing.$(OBJ)	\
	   $(OBJD)eval.$(OBJ)

NDISASMOBJS = \
	   ndisasm.$(OBJ)  disasm.$(OBJ)   sync.$(OBJ)   nasmlib.$(OBJ)	\
	   insnsd.$(OBJ)

#########################################################################
#
#########################################################################
all : $(RESDIR)narm$(SUFFIX)$(EXE)  #  $(RESDIR)ndisasm$(SUFFIX)$(EXE)

#########################################################################
#
#########################################################################
$(RESDIR)narm$(SUFFIX)$(EXE): $(NASMOBJS)
	$(LINK) $(LINKFLAGS) $(LOUT)$@ $(NASMOBJS)	\
		$(LIBRARIES)

$(RESDIR)ndisasm$(SUFFIX)$(EXE): $(NDISASMOBJS)
	$(LINK) $(LINKFLAGS) $(LOUT)$@ $(NDISASMOBJS) \
		$(LIBRARIES)



#########################################################################
#
#########################################################################

insnsa.c insnsd.c insnsi.h insnsn.c: insns.dat arm.pl
	perl arm.pl insns.dat

macros.c: standard.mac macros.pl
	perl macros.pl standard.mac


#########################################################################
#
#########################################################################

$(OBJD)assemble.$(OBJ): assemble.c nasm.h insnsi.h assemble.h insns.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)disasm.$(OBJ): disasm.c nasm.h insnsi.h disasm.h sync.h insns.h names.c insnsn.c
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)eval.$(OBJ): eval.c nasm.h insnsi.h nasmlib.h eval.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)float.$(OBJ): float.c nasm.h insnsi.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)insnsa.$(OBJ): insnsa.c nasm.h insnsi.h insns.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)insnsd.$(OBJ): insnsd.c nasm.h insnsi.h insns.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)labels.$(OBJ): labels.c nasm.h insnsi.h nasmlib.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)listing.$(OBJ): listing.c nasm.h insnsi.h nasmlib.h listing.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)nasm.$(OBJ): nasm.c nasm.h insnsi.h nasmlib.h parser.h assemble.h labels.h \
	listing.h outform.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)nasmlib.$(OBJ): nasmlib.c nasm.h insnsi.h nasmlib.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)ndisasm.$(OBJ): ndisasm.c nasm.h insnsi.h sync.h disasm.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)outas86.$(OBJ): outas86.c nasm.h insnsi.h nasmlib.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)outaout.$(OBJ): outaout.c nasm.h insnsi.h nasmlib.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)outbin.$(OBJ): outbin.c nasm.h insnsi.h nasmlib.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)outcoff.$(OBJ): outcoff.c nasm.h insnsi.h nasmlib.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)outdbg.$(OBJ): outdbg.c nasm.h insnsi.h nasmlib.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)outelf.$(OBJ): outelf.c nasm.h insnsi.h nasmlib.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)outobj.$(OBJ): outobj.c nasm.h insnsi.h nasmlib.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)outrdf.$(OBJ): outrdf.c nasm.h insnsi.h nasmlib.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)outrdf2.$(OBJ): outrdf2.c nasm.h insnsi.h nasmlib.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)outform.$(OBJ): outform.c outform.h nasm.h insnsi.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)parser.$(OBJ): parser.c nasm.h insnsi.h nasmlib.h parser.h float.h names.c insnsn.c
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)preproc.$(OBJ): preproc.c macros.c preproc.h nasm.h insnsi.h nasmlib.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)sync.$(OBJ): sync.c sync.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm

$(OBJD)zoutieee.$(OBJ): zoutieee.c nasm.h insnsi.h nasmlib.h outform.h
	$(CC) $(CFLAGS) $(@B).c
	$(AS) $(AFLAGS) $*.asm


clean :
	del *.asm
	del *.$(OBJ)
	del narm$(SUFFIX)$(EXE)
	del ndisasm$(SUFFIX)$(EXE)
