

CC = cl.exe
LD = $(CC)

SRCDIR = ..\libmpdec


default: runtest


# dectest
runtest:\
Makefile runtest.c $(SRCDIR)\io.h $(SRCDIR)\mpdecimal.h $(SRCDIR)\memory.h \
                   $(SRCDIR)\$(USELIB) malloc_fail.c malloc_fail.h mptest.h
	$(CC) -I$(SRCDIR) $(UFLAGS) $(CFLAGS) runtest.c malloc_fail.c $(SRCDIR)\$(USELIB)


FORCE:

clean: FORCE
	-@if exist *.obj del *.obj
	-@if exist *.dll del *.dll
	-@if exist *.exp del *.exp
	-@if exist *.lib del *.lib
	-@if exist *.ilk del *.ilk
	-@if exist *.pdb del *.pdb
	-@if exist *.pgc del *.pgc
	-@if exist *.pgd del *.pgd
	-@if exist *.manifest del *.manifest
	-@if exist *.exe del *.exe

distclean: FORCE
	nmake clean
	-@if exist testdata rd /q /s testdata
	-@if exist Makefile del Makefile



