# makefile for gnu/cygwin make, using msvc compiler,
# needs environment setup with 'vcvars32.bat' ( from vstudio )
#
# author: Willem Hengeveld <itsme@xs4all.nl>
# web: http://www.xs4all.nl/~itsme/projects/disassemblers/ida/idp-Makefile
#

DESCRIPTION="ARM processors:ARM710a:ARM:ARMB:xScaleL:xScaleB"

.SUFFIXES:
.SUFFIXES: .cpp .obj .w32

#   microsoft's headers are loaded with warnings:
#C4514: 'uint128::uint128' : unreferenced inline function has been removed
#C4710: function 'int __stdcall getreg(unsigned long,int)' not inlined
#C4244: '+=' : conversion from 'int' to 'unsigned short', possible loss of data
#C4242: '=' : conversion from 'int' to 'ushort', possible loss of data
#C4127: conditional expression is constant
#C4146: unary minus operator applied to unsigned type, result still unsigned
#C4820: '__stat64' : '4' bytes padding added after member '__stat64::st_rdev'
#C4217: member template functions cannot be used for copy-assignment or copy-construction
#C4668: '_MT' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
#C4619: #pragma warning : there is no warning number '4284'

# disabling them all, to get a more readable compiler output.
NOWARN=-wd4619 -wd4514 -wd4710 -wd4244 -wd4242 -wd4127 -wd4668 -wd4146 -wd4820 -wd4217

CDEFS=-DWIN32 -D_USRDLL -D__NT__ -D__IDP__ -DMAXSTR=1024
CINCS=-I ..\..\INCLUDE 
COPTS=-GX -Gz

LDLIBS=/libpath:..\..\LIBVC.W32  ..\..\LIBVC.W32\ida.lib
LDFLAGS=/nologo /dll /stub:..\stub /export:LPH

%.obj: %.cpp
	CL -c -Wall $(NOWARN) $(COPTS) $(CINCS) $(CDEFS) -Fo$@ $<

all: ../../BIN/W32/MKIDP.exe arm.w32

arm.w32: ins.obj ana.obj out.obj reg.obj emu.obj
	LINK $(LDFLAGS) $(LDLIBS) $^ /out:$@
	../../BIN/W32/MKIDP.exe $@ $(DESCRIPTION)

../../BIN/W32/MKIDP.exe: ../../ETC/MKIDP.CPP
	CL -Fe$@ $<

ana.obj: ana.cpp
emu.obj: emu.cpp
ins.obj: ins.cpp
out.obj: out.cpp
reg.obj: reg.cpp

clean:
	-rm *.lib *.exp *.obj *.exe *.dll *.w32

install:
	cp arm.w32 ../../..


