SHELL=sh

.SUFFIXES: .c .obj .i .d

#	src/otfccbuild.c
#	src/otfccdump.c
#	src/stopwatch.c

SRCS = \
	dep/extern/emyg-dtoa/emyg-dtoa.c \
	dep/extern/json.c \
	dep/extern/json-builder.c \
	dep/extern/sds.c \
	src/luafunc.c \
	src/otfccdll.c \
	lib/consolidate/consolidate.c \
	lib/consolidate/otl/gsub-single.c \
	lib/consolidate/otl/gpos-single.c \
	lib/consolidate/otl/chaining.c \
	lib/consolidate/otl/common.c \
	lib/consolidate/otl/gsub-multi.c \
	lib/consolidate/otl/gsub-reverse.c \
	lib/consolidate/otl/gsub-ligature.c \
	lib/consolidate/otl/GDEF.c \
	lib/consolidate/otl/gpos-pair.c \
	lib/consolidate/otl/gpos-cursive.c \
	lib/consolidate/otl/mark.c \
	lib/support/options.c \
	lib/support/unicodeconv/unicodeconv.c \
	lib/support/buffer/buffer.c \
	lib/support/glyph-order.c \
	lib/support/primitives.c \
	lib/support/sha1/sha1.c \
	lib/support/ttinstr/ttinstr.c \
	lib/support/base64/base64.c \
	lib/support/handle.c \
	lib/support/json/json-ident.c \
	lib/support/aglfn/aglfn.c \
	lib/otf-writer/stat.c \
	lib/otf-writer/otf-writer.c \
	lib/otf-reader/otf-reader.c \
	lib/otf-reader/unconsolidate.c \
	lib/vf/region.c \
	lib/logger/logger.c \
	lib/bk/bkgraph.c \
	lib/bk/bkblock.c \
	lib/font/caryll-font.c \
	lib/font/caryll-sfnt-builder.c \
	lib/font/caryll-sfnt.c \
	lib/json-writer/json-writer.c \
	lib/json-reader/json-reader.c \
	lib/libcff/cff-string.c \
	lib/libcff/cff-opmean.c \
	lib/libcff/charstring-il.c \
	lib/libcff/cff-fdselect.c \
	lib/libcff/cff-parser.c \
	lib/libcff/subr.c \
	lib/libcff/cff-charset.c \
	lib/libcff/cff-index.c \
	lib/libcff/cff-codecs.c \
	lib/libcff/cff-writer.c \
	lib/libcff/cff-dict.c \
	lib/libcff/cff-value.c \
	lib/table/vhea.c \
	lib/table/fvar.c \
	lib/table/cmap.c \
	lib/table/meta/read.c \
	lib/table/meta/type.c \
	lib/table/meta/build.c \
	lib/table/meta/parse.c \
	lib/table/meta/dump.c \
	lib/table/vdmx/funcs.c \
	lib/table/hhea.c \
	lib/table/post.c \
	lib/table/cvt.c \
	lib/table/CFF.c \
	lib/table/LTSH.c \
	lib/table/maxp.c \
	lib/table/COLR.c \
	lib/table/vmtx.c \
	lib/table/fpgm-prep.c \
	lib/table/head.c \
	lib/table/_TSI.c \
	lib/table/name.c \
	lib/table/OS_2.c \
	lib/table/hdmx.c \
	lib/table/glyf/read.c \
	lib/table/glyf/build.c \
	lib/table/GDEF.c \
	lib/table/VORG.c \
	lib/table/otl/coverage.c \
	lib/table/otl/read.c \
	lib/table/otl/classdef.c \
	lib/table/otl/build.c \
	lib/table/otl/parse.c \
	lib/table/otl/dump.c \
	lib/table/otl/subtables/gsub-single.c \
	lib/table/otl/subtables/gpos-single.c \
	lib/table/otl/subtables/chaining/read.c \
	lib/table/otl/subtables/chaining/common.c \
	lib/table/otl/subtables/chaining/classifier.c \
	lib/table/otl/subtables/chaining/build.c \
	lib/table/otl/subtables/chaining/parse.c \
	lib/table/otl/subtables/chaining/dump.c \
	lib/table/otl/subtables/gpos-mark-to-ligature.c \
	lib/table/otl/subtables/gpos-mark-to-single.c \
	lib/table/otl/subtables/gsub-multi.c \
	lib/table/otl/subtables/gsub-reverse.c \
	lib/table/otl/subtables/gpos-common.c \
	lib/table/otl/subtables/gsub-ligature.c \
	lib/table/otl/subtables/extend.c \
	lib/table/otl/subtables/gpos-pair.c \
	lib/table/otl/subtables/gpos-cursive.c \
	lib/table/otl/constants.c \
	lib/table/hmtx.c \
	lib/table/BASE.c \
	lib/table/SVG.c \
	lib/table/TSI5.c \
	lib/vf/axis.d \
	lib/vf/vq.d \
	lib/table/vdmx/type.d \
	lib/table/gasp.d \
	lib/table/CPAL.d \
	lib/table/glyf/glyf.d \
	lib/table/otl/otl.d


#	obj/src/otfccbuild.obj \
#	obj/src/otfccdump.obj \
#	obj/lib/vf/axis.obj \
#	obj/lib/vf/vq.obj \
#	obj/lib/table/vdmx/type.obj \
#	obj/lib/table/gasp.obj \
#	obj/lib/table/CPAL.obj \
#	obj/lib/table/glyf/glyf.obj \
#	obj/lib/table/otl/otl.obj \

OBJS = \
	obj/dep/extern/emyg-dtoa/emyg-dtoa.obj \
	obj/dep/extern/json.obj \
	obj/dep/extern/json-builder.obj \
	obj/dep/extern/sds.obj \
	obj/src/luafunc.obj \
	obj/src/otfccdll.obj \
	obj/lib/consolidate/consolidate.obj \
	obj/lib/consolidate/otl/gsub-single.obj \
	obj/lib/consolidate/otl/gpos-single.obj \
	obj/lib/consolidate/otl/chaining.obj \
	obj/lib/consolidate/otl/common.obj \
	obj/lib/consolidate/otl/gsub-multi.obj \
	obj/lib/consolidate/otl/gsub-reverse.obj \
	obj/lib/consolidate/otl/gsub-ligature.obj \
	obj/lib/consolidate/otl/GDEF.obj \
	obj/lib/consolidate/otl/gpos-pair.obj \
	obj/lib/consolidate/otl/gpos-cursive.obj \
	obj/lib/consolidate/otl/mark.obj \
	obj/lib/support/options.obj \
	obj/lib/support/unicodeconv/unicodeconv.obj \
	obj/lib/support/buffer/buffer.obj \
	obj/lib/support/glyph-order.obj \
	obj/lib/support/handle.obj \
	obj/lib/support/primitives.obj \
	obj/lib/support/sha1/sha1.obj \
	obj/lib/support/ttinstr/ttinstr.obj \
	obj/lib/support/base64/base64.obj \
	obj/lib/support/json/json-ident.obj \
	obj/lib/support/aglfn/aglfn.obj \
	obj/lib/otf-writer/stat.obj \
	obj/lib/otf-writer/otf-writer.obj \
	obj/lib/otf-reader/otf-reader.obj \
	obj/lib/otf-reader/unconsolidate.obj \
	obj/lib/vf/region.obj \
	obj/lib/logger/logger.obj \
	obj/lib/bk/bkgraph.obj \
	obj/lib/bk/bkblock.obj \
	obj/lib/font/caryll-font.obj \
	obj/lib/font/caryll-sfnt-builder.obj \
	obj/lib/font/caryll-sfnt.obj \
	obj/lib/json-writer/json-writer.obj \
	obj/lib/json-reader/json-reader.obj \
	obj/lib/libcff/cff-string.obj \
	obj/lib/libcff/cff-opmean.obj \
	obj/lib/libcff/charstring-il.obj \
	obj/lib/libcff/cff-fdselect.obj \
	obj/lib/libcff/cff-parser.obj \
	obj/lib/libcff/subr.obj \
	obj/lib/libcff/cff-charset.obj \
	obj/lib/libcff/cff-index.obj \
	obj/lib/libcff/cff-codecs.obj \
	obj/lib/libcff/cff-writer.obj \
	obj/lib/libcff/cff-dict.obj \
	obj/lib/libcff/cff-value.obj \
	obj/lib/table/vhea.obj \
	obj/lib/table/fvar.obj \
	obj/lib/table/cmap.obj \
	obj/lib/table/meta/read.obj \
	obj/lib/table/meta/build.obj \
	obj/lib/table/meta/parse.obj \
	obj/lib/table/meta/dump.obj \
	obj/lib/table/meta/type.obj \
	obj/lib/table/vdmx/funcs.obj \
	obj/lib/table/hhea.obj \
	obj/lib/table/post.obj \
	obj/lib/table/cvt.obj \
	obj/lib/table/CFF.obj \
	obj/lib/table/LTSH.obj \
	obj/lib/table/maxp.obj \
	obj/lib/table/COLR.obj \
	obj/lib/table/vmtx.obj \
	obj/lib/table/fpgm-prep.obj \
	obj/lib/table/head.obj \
	obj/lib/table/_TSI.obj \
	obj/lib/table/name.obj \
	obj/lib/table/OS_2.obj \
	obj/lib/table/hdmx.obj \
	obj/lib/table/glyf/read.obj \
	obj/lib/table/glyf/build.obj \
	obj/lib/table/GDEF.obj \
	obj/lib/table/VORG.obj \
	obj/lib/table/otl/coverage.obj \
	obj/lib/table/otl/read.obj \
	obj/lib/table/otl/classdef.obj \
	obj/lib/table/otl/build.obj \
	obj/lib/table/otl/parse.obj \
	obj/lib/table/otl/dump.obj \
	obj/lib/table/otl/subtables/gsub-single.obj \
	obj/lib/table/otl/subtables/gpos-single.obj \
	obj/lib/table/otl/subtables/chaining/read.obj \
	obj/lib/table/otl/subtables/chaining/common.obj \
	obj/lib/table/otl/subtables/chaining/classifier.obj \
	obj/lib/table/otl/subtables/chaining/build.obj \
	obj/lib/table/otl/subtables/chaining/parse.obj \
	obj/lib/table/otl/subtables/chaining/dump.obj \
	obj/lib/table/otl/subtables/gpos-mark-to-ligature.obj \
	obj/lib/table/otl/subtables/gpos-mark-to-single.obj \
	obj/lib/table/otl/subtables/gsub-multi.obj \
	obj/lib/table/otl/subtables/gsub-reverse.obj \
	obj/lib/table/otl/subtables/gpos-common.obj \
	obj/lib/table/otl/subtables/gsub-ligature.obj \
	obj/lib/table/otl/subtables/extend.obj \
	obj/lib/table/otl/subtables/gpos-pair.obj \
	obj/lib/table/otl/subtables/gpos-cursive.obj \
	obj/lib/table/otl/constants.obj \
	obj/lib/table/hmtx.obj \
	obj/lib/table/BASE.obj \
	obj/lib/table/SVG.obj \
	obj/lib/table/TSI5.obj \
	obj/lib/vf/axis.obj \
	obj/lib/vf/vq.obj \
	obj/lib/table/vdmx/type.obj \
	obj/lib/table/gasp.obj \
	obj/lib/table/CPAL.obj \
	obj/lib/table/glyf/glyf.obj \
	obj/lib/table/otl/otl.obj

all: preps dsrcs cpds libmfluaotfcc.lib
libmfluaotfcc.lib: $(OBJS)
	lib -out:$@ $(OBJS)

preps: axis.i vq.i type.i gasp.i CPAL.i glyf.i otl.i
axis.i:	lib/vf/axis.c
	$(CC) $(CFLAGS) -P $<
	sed 's/()(x);//g' $@ >xxx
	cp xxx $@
	rm xxx

vq.i:	lib/vf/vq.c
	$(CC) $(CFLAGS) -P $<
	sed 's/()(x);//g' $@ >xxx
	cp xxx $@
	rm xxx

type.i:	lib/table/vdmx/type.c
	$(CC) $(CFLAGS) -P $<
	sed 's/()(x);//g' $@ >xxx
	cp xxx $@
	rm xxx

gasp.i:	lib/table/gasp.c
	$(CC) $(CFLAGS) -P $<
	sed 's/()(x);//g' $@ >xxx
	cp xxx $@
	rm xxx

CPAL.i:	lib/table/CPAL.c
	$(CC) $(CFLAGS) -P $<
	sed 's/()(x);//g' $@ >xxx
	cp xxx $@
	rm xxx

glyf.i:	lib/table/glyf/glyf.c
	$(CC) $(CFLAGS) -P $<
	sed 's/()(x);//g' $@ >xxx
	cp xxx $@
	rm xxx

otl.i:	lib/table/otl/otl.c
	$(CC) $(CFLAGS) -P $<
	sed 's/()(x);//g' $@ >xxx
	cp xxx $@
	rm xxx

dsrcs: axis.d vq.d type.d gasp.d CPAL.d glyf.d otl.d

%.d: %.i
	sed 's/^#line.*$$//g' $< >$@

cpds: axis.d vq.d type.d gasp.d CPAL.d glyf.d otl.d
	cp axis.d lib/vf/axis.d
	cp vq.d lib/vf/vq.d
	cp type.d lib/table/vdmx/type.d
	cp gasp.d lib/table/gasp.d
	cp CPAL.d lib/table/CPAL.d
	cp glyf.d lib/table/glyf/glyf.d
	cp otl.d lib/table/otl/otl.d


CC=cl
OPTIMIZE=-O2
CFLAGS=-D_CARYLL_USE_PRE_SERIALIZED -DMAIN_VER=0 -DSECONDARY_VER=10 \
-DPATCH_VER=4 -DJIT -DWIN32=1  -Isrc -Iinclude -Iinclude/dep -Ilib \
-Igetopt -nologo $(OPTIMIZE) -MT -Zc:preprocessor

obj/lib/vf/axis.obj: lib/vf/axis.d
	$(CC) $(CFLAGS) -TC -c -Fo$@ $<

obj/lib/vf/vq.obj: lib/vf/vq.d
	$(CC) $(CFLAGS) -TC -c -Fo$@ $<

obj/lib/table/vdmx/type.obj: lib/table/vdmx/type.d
	$(CC) $(CFLAGS) -TC -c -Fo$@ $<

obj/lib/table/gasp.obj: lib/table/gasp.d
	$(CC) $(CFLAGS) -TC -c -Fo$@ $<

obj/lib/table/CPAL.obj: lib/table/CPAL.d
	$(CC) $(CFLAGS) -TC -c -Fo$@ $<

obj/lib/table/glyf/glyf.obj: lib/table/glyf/glyf.d
	$(CC) $(CFLAGS) -TC -c -Fo$@ $<

obj/lib/table/otl/otl.obj: lib/table/otl/otl.d
	$(CC) $(CFLAGS) -TC -c -Fo$@ $<

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

clean::
	./deleteobj.sh
	rm -f *~ *.lib *.i *.d

include depend.mk
