#
# Makefile for W32
#
PTEXENCDIR=../../ptexenc

RM = rm -f
CC = cl
LD = cl
CTANGLE = ../ctangle
CTIE = ctie
AR = lib

CAIROVER=cairo-1.12.16
PIXMANVER=pixman-0.32.4

KPSEBUILDDIR = ../../kpathsea
KPSESRCDIR = ../..
KPSELIB=$(KPSEBUILDDIR)/libkpathsea.lib
PTEXENCLIB= ../../ptexenc/libptexenc.lib
CAIROLIB = ../../../libs/cairo/$(CAIROVER)/src/release/cairo-static.lib
PNGLIB = ../../../libs/libpng/libpng.lib
ZLIBLIB = ../../../libs/zlib/libz.lib
SYSLIBS = user32.lib advapi32.lib gdi32.lib shell32.lib
ADDLIBS = $(ZLIBLIB) $(PNGLIB) $(CAIROLIB) $(SYSLIBS)


MPLIBBUILDDIR = .
MPLIBSRCDIR = .
MPLIB = libjmplib.lib

CFLAGS = -nologo -w -MT -O2 -DMPXOUT=1 -DWIN32=1 -DMSVC=1 \
-D_CRT_SECURE_NO_DEPRECATE=1 -DNO_KPSE_DLL=1 \
-DCAIRO_WIN32_STATIC_BUILD=1 -DNATIVE_TEXLIVE_BUILD=1 \
-DHAVE_SNPRINTF=1 -Dstrcasecmp=stricmp -I. -I../.. -I../../kpathsea \
-I../../../libs/cairo/$(CAIROVER)/src \
-I../../../libs/pixman/$(PIXMANVER)/pixman \
-I../../../libs/libpng -I../../../libs/zlib \
-I$(PTEXENCDIR) -I..

LIBOBJECTS = avl.obj mp.obj pngout.obj psout.obj svgout.obj tfmin.obj \
mpmath.obj mpmathdouble.obj mpstrings.obj mpmathdecimal.obj \
strndup.obj decNumber.obj decContext.obj

OBJECTS = mpost.obj mpxout.obj

upmpost.exe: $(MPLIB) $(OBJECTS) $(KPSELIB)
	$(LD) -Fe$@ $(OBJECTS) setargv.obj $(MPLIB) $(KPSELIB) $(PTEXENCLIB) $(ADDLIBS)

libjmplib.lib: $(LIBOBJECTS)
	$(AR) -out:$@ $(LIBOBJECTS)

.w.c:
	$(CTANGLE) $< $@

mp.c: mp.w upjmp.ch pngout.c psout.c svgout.c tfmin.c mpmath.c \
mpmathdouble.c mpmathdecimal.c mpstrings.c
	$(CTANGLE) mp.w upjmp.ch

mpost.c: mpxout.c mpost.ch mpost.w
	$(CTANGLE) mpost.w mpost.ch

mpxout.c: mpxout.w updvitomp.ch
	$(CTANGLE) mpxout.w updvitomp.ch

mpstrings.c: mpstrings.w
	$(CTANGLE) mpstrings.w

tfmin.c: tfmin.w upjfm.ch
	$(CTANGLE) tfmin.w upjfm.ch
 
psout.c: psout.w upjmppsw.ch mpstrings.c
	$(CTANGLE) psout.w upjmppsw.ch 

svgout.c: svgout.w svgout.ch
	$(CTANGLE) svgout.w svgout.ch

mpmath.c: mpmath.w
	$(CTANGLE) mpmath.w

mpmathdouble.c: mpmathdouble.w
	$(CTANGLE) mpmathdouble.w

mpmathdecimal.c: mpmathdecimal.w
	$(CTANGLE) mpmathdecimal.w

$(OBJECTS): %.obj: %.c
	$(CC) -c $(CFLAGS) $< -Fo$@

$(LIBOBJECTS): %.obj: %.c
	$(CC) -c $(CFLAGS) $< -Fo$@

install:: upmpost.exe
	cp -p upmpost.exe c:/usr/local/bin/
	cp -p upmpost.exe c:/usr/work/edrive/wk/dist/UPTEX/bin/

clean::
	$(RM) *.obj mp.c mpxout.c psout.c psout.h mp*.h *.scn \
        *.idx *.toc *.pdf *.log mpmath.c mpost.c tfmin.c svgout.c \
        mpstrings.c *~ pngout.c mpmathdouble.c mp-tot.ch mpxout-tot.ch \
        psout-tot.ch *.pdb *.eps *.exp *.exe *.lib \
        decNumber.obj decContext.obj mpmathdecimal.obj \
        mpmathdecimal.h mpmathdecimal.c
