LIBRARY = freetype

CC = kos32-gcc
AR = kos32-ar
LD = kos32-ld
STRIP = kos32-strip

INSTALLDIR:= /home/autobuild/tools/win32/lib
DLL_DIR:= ../../../../data/common/lib

CFLAGS = -U_Win32 -U_WIN32 -U__MINGW32__ -U__WIN32__ -UWIN32 -c -O2 -fno-ident -fomit-frame-pointer -fno-strict-aliasing

LDFLAGS = -shared -s -T dll.lds --entry _DllStartup --image-base=0
LDFLAGS+= --out-implib lib$(LIBRARY).dll.a

ARFLAGS = crs

BROTLI = ../brotli/c

INCLUDES= -I. -I./include -I../newlib/libc/include -I../libpng -I$(BROTLI)/include

# PNG (color bitmap fonts) comes from libpng16.dll, brotli (WOFF2) is linked in
LIBS:= -ldll -lgcc ../../../../data/common/lib/libpng16.dll -lc.dll

DEFINES:= -DFT2_BUILD_LIBRARY -DFT_CONFIG_MODULES_H="<kosmodule.h>"	\
	  -DFT_CONFIG_OPTION_USE_PNG -DFT_CONFIG_OPTION_USE_BROTLI	\
	  -DFT_CONFIG_OPTION_ERROR_STRINGS -DBROTLI_BUILD_LITTLE_ENDIAN

SOURCES =				\
	src/autofit/autofit.c		\
	src/base/ftbase.c		\
	src/base/ftbbox.c		\
	src/base/ftbdf.c		\
	src/base/ftbitmap.c		\
	src/base/ftcid.c		\
	src/base/ftdebug.c		\
	src/base/ftfstype.c		\
	src/base/ftgasp.c		\
	src/base/ftglyph.c		\
	src/base/ftgxval.c		\
	src/base/ftinit.c		\
	src/base/ftmm.c			\
	src/base/ftotval.c		\
	src/base/ftpatent.c		\
	src/base/ftpfr.c		\
	src/base/ftstroke.c		\
	src/base/ftsynth.c		\
	src/base/ftsystem.c		\
	src/base/fttype1.c		\
	src/base/ftwinfnt.c		\
	src/bdf/bdf.c			\
	src/bzip2/ftbzip2.c		\
	src/cache/ftcache.c		\
	src/cff/cff.c			\
	src/cid/type1cid.c		\
	src/gxvalid/gxvalid.c		\
	src/gzip/ftgzip.c		\
	src/lzw/ftlzw.c			\
	src/otvalid/otvalid.c		\
	src/pcf/pcf.c			\
	src/pfr/pfr.c			\
	src/psaux/psaux.c		\
	src/pshinter/pshinter.c		\
	src/psnames/psnames.c		\
	src/raster/raster.c		\
	src/sdf/sdf.c			\
	src/sfnt/sfnt.c			\
	src/smooth/smooth.c		\
	src/svg/svg.c			\
	src/truetype/truetype.c		\
	src/type1/type1.c		\
	src/type42/type42.c		\
	src/winfonts/winfnt.c		\
	$(BROTLI)/common/constants.c	\
	$(BROTLI)/common/context.c	\
	$(BROTLI)/common/dictionary.c	\
	$(BROTLI)/common/platform.c	\
	$(BROTLI)/common/shared_dictionary.c \
	$(BROTLI)/common/transform.c	\
	$(BROTLI)/dec/bit_reader.c	\
	$(BROTLI)/dec/decode.c		\
	$(BROTLI)/dec/huffman.c		\
	$(BROTLI)/dec/state.c

OBJECTS     = $(patsubst %.c, %.o, $(SOURCES))

# targets

all:lib$(LIBRARY).a $(LIBRARY).dll

lib$(LIBRARY).a: $(OBJECTS) Makefile
	$(AR) $(ARFLAGS) lib$(LIBRARY).a $(OBJECTS)
	mv -f lib$(LIBRARY).a $(INSTALLDIR)

$(LIBRARY).dll: lib$(LIBRARY).def $(OBJECTS) Makefile
	$(LD) $(LDFLAGS) -o $@ lib$(LIBRARY).def $(OBJECTS) $(LIBS)
	$(STRIP) $@
	mv -f $@ $(DLL_DIR)
	mv -f lib$(LIBRARY).dll.a $(INSTALLDIR)

%.o : %.c Makefile
	$(CC) $(INCLUDES) $(CFLAGS) $(DEFINES) -o $@ $<

clean:
	-rm -f $(OBJECTS)
