
# ======================================================================
#                Visual C (nmake) Makefile for libmpdec
# ======================================================================


INSTALLDIR = .
LIBSTATIC = libmpdec-2.4.0.lib
LIBIMPORT = libmpdec-2.4.0.dll.lib
LIBSHARED = libmpdec-2.4.0.dll


OBJS = basearith.obj context.obj constants.obj convolute.obj crt.obj \
       mpdecimal.obj mpsignal.obj difradix2.obj fnt.obj fourstep.obj \
       io.obj memory.obj numbertheory.obj sixstep.obj transpose.obj


MPD_HEADER = mpdecimal32vc.h
MPD_PREC = 9
MPD_DPREC = 18

!if "$(MACHINE)" == "x64"
CONFIG = /DCONFIG_64 /DMASM
MPD_HEADER = mpdecimal64vc.h
MPD_PREC = 19
MPD_DPREC = 38
OBJS = $(OBJS) vcdiv64.obj
!endif
!if "$(MACHINE)" == "ansi64"
CONFIG = /DCONFIG_64 /DANSI
MPD_HEADER = mpdecimal64vc.h
MPD_PREC = 19
MPD_DPREC = 38
!endif
!if "$(MACHINE)" == "ppro"
CONFIG = /DCONFIG_32 /DPPRO /DMASM
!endif
!if "$(MACHINE)" == "ansi32"
CONFIG = /DCONFIG_32 /DANSI
!endif
!if "$(MACHINE)" == "ansi-legacy"
CONFIG = /DCONFIG_32 /DANSI /DLEGACY_COMPILER
!endif

!if "$(DLL)" == "1"
BFLAGS= /DBUILD_DLL
UFLAGS= /DUSE_DLL
LFLAGS= $(LFLAGS) /DLL /MANIFEST
BUILDLIB = $(LIBSHARED)
USELIB = $(LIBIMPORT)
!if "$(DEBUG)" == "1"
OPT = /MDd /Od /Zi
!else
OPT = /MD /Ox /GS /EHsc
!endif
!else
BUILDLIB = $(LIBSTATIC)
USELIB = $(LIBSTATIC)
!if "$(DEBUG)" == "1"
OPT = /MTd /Od /Zi
!else
OPT = /MT /Ox /GS /EHsc
!endif
!endif

CFLAGS = /W3 /D_CRT_SECURE_NO_WARNINGS /nologo $(CONFIG) $(OPT)


default: $(BUILDLIB) runtest


$(LIBSTATIC): Makefile $(OBJS)
	-@if exist $@ del $(LIBSTATIC)
	lib $(LFLAGS) /out:$(LIBSTATIC) $(OBJS)


$(LIBSHARED): Makefile $(OBJS)
	-@if exist $@ del $(LIBSHARED)
	link $(LFLAGS) /out:$(LIBSHARED) /implib:$(LIBIMPORT) $(OBJS)
	mt -manifest $(LIBSHARED).manifest -outputresource:$(LIBSHARED);2


mpdecimal.h:\
Makefile $(MPD_HEADER) vccompat.h vcstdint.h
	-@copy /y $(MPD_HEADER) mpdecimal.h

basearith.obj:\
Makefile basearith.c constants.h mpdecimal.h memory.h typearith.h \
basearith.h
	$(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c basearith.c

constants.obj:\
Makefile constants.c mpdecimal.h constants.h
	$(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c constants.c

context.obj:\
Makefile context.c mpdecimal.h
	$(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c context.c

convolute.obj:\
Makefile convolute.c mpdecimal.h bits.h constants.h fnt.h fourstep.h \
numbertheory.h sixstep.h umodarith.h typearith.h convolute.h
	$(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c convolute.c

crt.obj:\
Makefile crt.c mpdecimal.h numbertheory.h constants.h umodarith.h \
typearith.h crt.h
	$(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c crt.c

difradix2.obj:\
Makefile difradix2.c mpdecimal.h bits.h numbertheory.h constants.h \
umodarith.h typearith.h difradix2.h
	$(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c difradix2.c

fnt.obj:\
Makefile fnt.c mpdecimal.h bits.h difradix2.h numbertheory.h constants.h fnt.h
	$(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c fnt.c

fourstep.obj:\
Makefile fourstep.c mpdecimal.h numbertheory.h constants.h sixstep.h \
transpose.h umodarith.h typearith.h fourstep.h
	$(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c fourstep.c

io.obj:\
Makefile io.c mpdecimal.h bits.h constants.h memory.h typearith.h io.h
	$(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c io.c

memory.obj:\
Makefile memory.c mpdecimal.h typearith.h memory.h
	$(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c memory.c

mpdecimal.obj:\
Makefile  mpdecimal.c basearith.h mpdecimal.h typearith.h bits.h \
convolute.h crt.h memory.h umodarith.h constants.h
	$(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c mpdecimal.c

mpsignal.obj:\
Makefile mpdecimal.c mpdecimal.h
	$(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c mpsignal.c

numbertheory.obj:\
Makefile numbertheory.c mpdecimal.h bits.h umodarith.h constants.h \
typearith.h numbertheory.h
	$(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c numbertheory.c

sixstep.obj:\
Makefile sixstep.c mpdecimal.h bits.h difradix2.h numbertheory.h \
constants.h transpose.h umodarith.h typearith.h sixstep.h
	$(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c sixstep.c

transpose.obj:\
Makefile transpose.c mpdecimal.h bits.h constants.h typearith.h \
transpose.h
	$(CC) $(BFLAGS) $(CFLAGS) $(PFLAGS) -c transpose.c

vcdiv64.obj:\
Makefile vcdiv64.asm
	ml64 /c /Cx vcdiv64.asm


runtest:\
$(BUILDLIB)
	-@if exist $(LIBSHARED) copy /y $(LIBSHARED) ..\tests
	-@cd ..\tests
	-@copy /y Makefile.vc Makefile
	-@nmake UFLAGS="$(UFLAGS)" CFLAGS="$(CFLAGS)" USELIB="$(USELIB)"


FORCE:

bench.exe: Makefile bench.obj
	$(CC) $(UFLAGS) $(CFLAGS) $(PFLAGS) bench.obj $(USELIB)

bench.obj: FORCE
	$(CC) $(UFLAGS) $(CFLAGS) $(PFLAGS) -c bench.c

profile: FORCE
	nmake clean
	nmake "DLL=1" "PFLAGS=/GL" "LFLAGS=/DLL /LTCG:PGI"
	nmake "DLL=1" "PFLAGS=/GL" bench.exe
	bench.exe $(MPD_PREC) 1000
	bench.exe $(MPD_DPREC) 1000
	del /Q *.dll bench.exe
	link /DLL /LTCG:PGO /out:$(LIBSHARED) /implib:$(LIBIMPORT) $(OBJS)
	mt -manifest $(LIBSHARED).manifest -outputresource:$(LIBSHARED);2
	$(CC) $(UFLAGS) $(CFLAGS) $(PFLAGS) bench.c $(USELIB)
	bench.exe $(MPD_PREC) 1000
	bench.exe $(MPD_DPREC) 1000

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
	-@if exist mpdecimal.h del mpdecimal.h
	-@cd ..\tests
	-@if exist Makefile nmake clean

distclean: FORCE
	nmake clean
	-@if exist Makefile del Makefile
	-@cd ..\tests
	-@if exist Makefile nmake distclean


