#
# Makefile for W32
#

CAIROVER=cairo-1.14.2
PIXMANVER=pixman-0.32.6
GMPVER=gmp-6.0.0
MPFRVER=mpfr-3.1.2

LD = cl
CC = cl
CFLAGS = -nologo -w -MT -O2 -DWIN32=1 -DMSVC=1 -DHAVE_SNPRINTF=1 \
-Dstrcasecmp=stricmp -D_CRT_SECURE_NO_DEPRECATE=1 \
-DLUA_COMPAT_MODULE -DLUA_COMPAT_LOADSTRING=1 \
-DHAVE_SYS_TIMEB_H=1 -DHAVE_SYS_STAT_H=1 -DNO_KPSE_DLL=1 \
-DCAIRO_WIN32_STATIC_BUILD=1 -DLUA_BUILD_AS_DLL=1 \
-DNATIVE_TEXLIVE_BUILD=1 \
-I../.. -I../../kpathsea -I. -I../lualibs/lua52 -I.. \
-I../../../libs/cairo/$(CAIROVER)/src \
-I../../../libs/pixman/$(PIXMANVER)/pixman \
-I../../../libs/mpfr/$(MPFRVER)/src \
-I../../../libs/gmp/$(GMPVER) \
-I../../../libs/libpng -I../../../libs/zlib

LKDEBUG =

#CFLAGS = -nologo -w -MT -Od -Zi -DWIN32=1 -DMSVC=1  \
#-Dstrcasecmp=stricmp -I../.. -I. -I. -I../lualibs/lua52 -I..
#LKDEBUG = /DEBUG:FULL

KPSEBUILDDIR = ../../kpathsea
KPSESRCDIR = ../..
KPSELIB=$(KPSEBUILDDIR)/libkpathsea.lib

bin_PROGRAMS = mpost.dll
mpost_SOURCES = mpost.c mpxout.c
mpost_DEPENDENCIES = libmplib.lib
mpost_LDADD = libmplib.lib $(KPSELIB)
CAIROLIB = ../../../libs/cairo/$(CAIROVER)/src/release/cairo-static.lib
MPFRLIB = ../../../libs/mpfr/$(MPFRVER)/src/libmpfr.lib
GMPLIB = ../../../libs/gmp/$(GMPVER)/libgmp.lib
PNGLIB = ../../../libs/libpng/libpng.lib
ZLIBLIB = ../../../libs/zlib/libz.lib
SYSLIBS = user32.lib advapi32.lib gdi32.lib shell32.lib
ADDLIB = $(ZLIBLIB) $(PNGLIB) $(SYSLIBS)

noinst_LIBRARIES = libmplib.lib
libmplib_a_SOURCES = avl.c mp.c psout.c tfmin.c mpmath.c mpmathdouble.c \
svgout.c mpmathdecimal.c mpmathbinary.c \
strndup.c decNumber.c decContext.c

include_HEADERS = mplib.h

CTANGLE=../ctangle

all: $(bin_PROGRAMS) libmplib.lib lmplib.obj

mpstrings.h mpstrings.c: mpstrings.w
psout.c: mpstrings.c
mpost.c: mp.c mpxout.c
mp.c: psout.c mpxout.c tfmin.c svgout.c mpmath.c mpmathdouble.c mpstrings.c \
pngout.c mpmathdecimal.c mpmathbinary.c

lmplib.c: mp.c

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

OBJECTS = mpost.obj mpxout.obj

libmplib.lib: $(MPLIB)
	lib -out:$@ $(MPLIB) $(CAIROLIB) $(MPFRLIB)

mpost.dll: $(OBJECTS) $(mpost_LDADD) $(ZLIBLIB) $(PNGLIB) $(CAIROLIB) \
$(MPFRLIB) $(GMPLIB)
	$(LD) -LD -Fe$@ $(OBJECTS) $(mpost_LDADD) $(ADDLIB) $(LKDEBUG) $(GMPLIB)

avl.obj: avl.c
	$(CC) $(CFLAGS) -c $<

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

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

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

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

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

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

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

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

lmplib.obj:lmplib.c
	$(CC) -c $(CFLAGS) -DpdfTeX=1 -I$(MPLIBSRCDIR) -I$(KPSESRCDIR) $< -Fo$@

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

clean::
	$(RM) mplib.h mplibps.h mplibsvg.h mplibpng.h mpmath.h mpmathdouble.h \
        mpmp.h mppsout.h mpsvgout.h mppngout.h mpxout.h mp.c mpmath.c \
        mpmathdouble.c mpost.c mpxout.c psout.c pngout.c svgout.c tfmin.c \
        mpstrings.h mpstrings.c *~ *.obj *.lib *.dll *.exp \
        decNumber.obj decContext.obj mpmathdecimal.obj \
        mpmathdecimal.h mpmathdecimal.c \
        mpmathbinary.h mpmathbinary.c

install: mpost.dll
	cp -p mpost.dll c:/usr/local/bin/
	cp -p mpost.dll c:/usr/work/edrive/wk/dist/WEB2CBIN/bin/
