The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#PLEASE NOTE: this Makefile was designed to be compatible with GNU make and dmake

CC       = gcc
AR       = ar
ARFLAGS  = csr
PERL     = perl

CP     = $(PERL) -MExtUtils::Command -e cp --
RM_F   = $(PERL) -MExtUtils::Command -e rm_f --
MKPATH = $(PERL) -MExtUtils::Command -e mkpath --

### GLOBAL PART ###

BUILDBITS= 32
BUILDNICK= mingw

PREFIX   = ../../_output_
INCDIR   = $(PREFIX)/include
LIBDIR   = $(PREFIX)/lib

CF_ALL   = -DTEC_UNAME=gcc4 -DTEC_SYSNAME=Win$(BUILDBITS) -DTEC_LITTLEENDIAN -DTEC_$(BUILDBITS) -DWIN32 -DNDEBUG -I"$(INCDIR)"
LF_ALL   = -L../lib/$(BUILDNICK) -L"$(LIBDIR)"

VER_OBJ      = version.o
VER_RC       = version.rc

BUILD_DIRS   = ../obj/$(BUILDNICK)/cd_ftgl ../lib/$(BUILDNICK)

ALL_OBJS     = $(OBJS_cd_ftgl)

STATIC_LIBS  = $(SLIB_cd_ftgl)

DYNAMIC_LIBS = $(DLIB_cd_ftgl) $(ILIB_cd_ftgl)

ALL_LIBS     = $(STATIC_LIBS) $(DYNAMIC_LIBS)

.PHONY: install-all install-static install-dynamic all all-static all-dynamic clean build-dirs

all: all-static all-dynamic


### START OF cd_ftgl ###
CF_cd_ftgl   = -c  -Wall -O2 -I../include -I. -I../../freetype/include   -DFTGL_LIBRARY $(CF_cd_ftgl_EXTRA)
LF_cd_ftgl   = -lfreetype6 -lzlib1 -lglaux -lglu32 -lopengl32 -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -luuid -loleaut32 -lole32 -lcomctl32 $(LF_cd_ftgl_EXTRA)
SLIB_cd_ftgl = ../lib/$(BUILDNICK)/libftgl.a
DLIB_cd_ftgl = ../lib/$(BUILDNICK)/libftgl.dll.a
ILIB_cd_ftgl = ../lib/$(BUILDNICK)/ftgl_alien_.dll
OBJS_cd_ftgl = ../obj/$(BUILDNICK)/cd_ftgl/FTBuffer.o ../obj/$(BUILDNICK)/cd_ftgl/FTCharmap.o ../obj/$(BUILDNICK)/cd_ftgl/FTContour.o ../obj/$(BUILDNICK)/cd_ftgl/FTFace.o ../obj/$(BUILDNICK)/cd_ftgl/FTGlyphContainer.o ../obj/$(BUILDNICK)/cd_ftgl/FTLibrary.o ../obj/$(BUILDNICK)/cd_ftgl/FTPoint.o ../obj/$(BUILDNICK)/cd_ftgl/FTSize.o ../obj/$(BUILDNICK)/cd_ftgl/FTVectoriser.o ../obj/$(BUILDNICK)/cd_ftgl/FTGlyph.o ../obj/$(BUILDNICK)/cd_ftgl/FTGlyphGlue.o ../obj/$(BUILDNICK)/cd_ftgl/FTBitmapGlyph.o ../obj/$(BUILDNICK)/cd_ftgl/FTBufferGlyph.o ../obj/$(BUILDNICK)/cd_ftgl/FTExtrudeGlyph.o ../obj/$(BUILDNICK)/cd_ftgl/FTOutlineGlyph.o ../obj/$(BUILDNICK)/cd_ftgl/FTPixmapGlyph.o ../obj/$(BUILDNICK)/cd_ftgl/FTPolygonGlyph.o ../obj/$(BUILDNICK)/cd_ftgl/FTTextureGlyph.o ../obj/$(BUILDNICK)/cd_ftgl/FTFont.o ../obj/$(BUILDNICK)/cd_ftgl/FTFontGlue.o ../obj/$(BUILDNICK)/cd_ftgl/FTBitmapFont.o ../obj/$(BUILDNICK)/cd_ftgl/FTBufferFont.o ../obj/$(BUILDNICK)/cd_ftgl/FTExtrudeFont.o ../obj/$(BUILDNICK)/cd_ftgl/FTOutlineFont.o ../obj/$(BUILDNICK)/cd_ftgl/FTPixmapFont.o ../obj/$(BUILDNICK)/cd_ftgl/FTPolygonFont.o ../obj/$(BUILDNICK)/cd_ftgl/FTTextureFont.o ../obj/$(BUILDNICK)/cd_ftgl/FTLayout.o ../obj/$(BUILDNICK)/cd_ftgl/FTLayoutGlue.o ../obj/$(BUILDNICK)/cd_ftgl/FTSimpleLayout.o

../obj/$(BUILDNICK)/cd_ftgl/FTBuffer.o : ./FTBuffer.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTCharmap.o : ./FTCharmap.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTContour.o : ./FTContour.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTFace.o : ./FTFace.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTGlyphContainer.o : ./FTGlyphContainer.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTLibrary.o : ./FTLibrary.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTPoint.o : ./FTPoint.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTSize.o : ./FTSize.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTVectoriser.o : ./FTVectoriser.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTGlyph.o : ./FTGlyph/FTGlyph.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTGlyphGlue.o : ./FTGlyph/FTGlyphGlue.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTBitmapGlyph.o : ./FTGlyph/FTBitmapGlyph.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTBufferGlyph.o : ./FTGlyph/FTBufferGlyph.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTExtrudeGlyph.o : ./FTGlyph/FTExtrudeGlyph.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTOutlineGlyph.o : ./FTGlyph/FTOutlineGlyph.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTPixmapGlyph.o : ./FTGlyph/FTPixmapGlyph.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTPolygonGlyph.o : ./FTGlyph/FTPolygonGlyph.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTTextureGlyph.o : ./FTGlyph/FTTextureGlyph.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTFont.o : ./FTFont/FTFont.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTFontGlue.o : ./FTFont/FTFontGlue.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTBitmapFont.o : ./FTFont/FTBitmapFont.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTBufferFont.o : ./FTFont/FTBufferFont.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTExtrudeFont.o : ./FTFont/FTExtrudeFont.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTOutlineFont.o : ./FTFont/FTOutlineFont.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTPixmapFont.o : ./FTFont/FTPixmapFont.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTPolygonFont.o : ./FTFont/FTPolygonFont.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTTextureFont.o : ./FTFont/FTTextureFont.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTLayout.o : ./FTLayout/FTLayout.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTLayoutGlue.o : ./FTLayout/FTLayoutGlue.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@
../obj/$(BUILDNICK)/cd_ftgl/FTSimpleLayout.o : ./FTLayout/FTSimpleLayout.cpp ; g++ $(CF_ALL) $(CF_cd_ftgl) $^ -o $@

$(SLIB_cd_ftgl): $(OBJS_cd_ftgl)
	$(AR) $(ARFLAGS) $@ $^

$(ILIB_cd_ftgl) $(DLIB_cd_ftgl) : $(OBJS_cd_ftgl)
	g++ -s -shared -o $(ILIB_cd_ftgl) $^ -Wl,--enable-auto-import,--export-all -Wl,--out-implib=$(DLIB_cd_ftgl) $(LF_cd_ftgl) $(LF_ALL)
	-strip $(ILIB_cd_ftgl)

cd_ftgl-static: build-dirs $(SLIB_cd_ftgl)
cd_ftgl-dynamic: build-dirs $(ILIB_cd_ftgl) $(DLIB_cd_ftgl)

### compile RC

$(VER_OBJ) : $(VER_RC) ; windres --define GCC_WINDRES $^ -o $@

all: build-dirs $(STATIC_LIBS) $(DYNAMIC_LIBS)
all-static: build-dirs $(STATIC_LIBS)
all-dynamic: build-dirs $(DYNAMIC_LIBS)

install-all:
	$(MKPATH) "$(LIBDIR)"
	$(MKPATH) "$(INCDIR)"
	$(CP) ../lib/$(BUILDNICK)/* "$(LIBDIR)"
	$(CP) ../include/*.h "$(INCDIR)"

install-static: all-static
	$(MKPATH) "$(LIBDIR)"
	$(MKPATH) "$(INCDIR)"
	$(CP) $(STATIC_LIBS) "$(LIBDIR)"
	$(CP) ../include/*.h "$(INCDIR)"

install-dynamic: all-dynamic
	$(MKPATH) "$(LIBDIR)"
	$(MKPATH) "$(INCDIR)"
	$(CP) $(DYNAMIC_LIBS) "$(LIBDIR)"
	$(CP) ../include/*.h "$(INCDIR)"

build-dirs:
	$(MKPATH) $(BUILD_DIRS)

clean:
	$(RM_F) $(ALL_OBJS) $(ALL_LIBS) $(VER_OBJ)