# This file is part of the FreeType project.
#
# It builds the library and test programs for Microsoft Visual C++ 1.x
# and Microsoft C/C++ v.7.0 compilers for 16-bit Windows, large model,
# using QuickWin to display console outputs.
#
# You will need NMAKE.
#
#
# Use this file while in the 'test' directory with the following statement:
#
#   nmake /f arch\win16\Makefile.VC
#
# A DLL version of the library can be built and then used with
#
#   nmake DLL=1 /f arch\win16\Makefile.VC dll
#
# (do not forget to define DLL, otherwise the link phase will fail).
#
#
# Debug versions can be obtained with
#
#   nmake DEBUG=1 /f arch\win16\Makefile.VC
#
# Special versions enabled to handle big fonts (with more than 16,384
# glyphs) can be obtained with
#
#   nmake BIGFONTS=1 /f arch\win16\Makefile.VC

ARCH = arch\win16
FT_MAKEFILE = $(ARCH)\Makefile.VC
FT_MAKE = $(MAKE) /nologo
FT_DLL = ft13_16.dll

CC = cl /nologo

LIBDIR = ..\lib
INCDIRS = -I$(LIBDIR) -I$(LIBDIR)\$(ARCH) -I. -I$(LIBDIR)\extend

# One can also consider using "set MSC_CMD_FLAGS=/Gr /Op- /Gy /YX".
# With Microsoft C/C++ 7.0, use /G2 instead of /G3.
!ifndef DEBUG
CFLAGS =     /Ox /AL /Za /W2 /G3 $(INCDIRS)
LDFLAGS = /AL
!else
CFLAGS = /Zi /Ge /AL /Za /W2 /G3 $(INCDIRS)
LDFLAGS = /Zi /AL
!endif

CFLAGS = $(CFLAGS) /Mq
LDFLAGS = $(LDFLAGS) /Mq

!ifdef DLL
CFLAGS = $(CFLAGS) /DFREETYPE_DLL
!endif


# Windows graphic driver
GDRIVER = $(ARCH)\gw_win16.c

GSRC = display.c gmain.c blitter.c $(GDRIVER)

GOBJ = $(GSRC:.c=.obj)


SRC = arabic.c \
      common.c \
      ftdump.c \
      fterror.c \
      ftlint.c \
      ftmetric.c \
      ftsbit.c \
      ftstring.c \
      ftstrpnm.c \
      ftstrtto.c \
      fttimer.c \
      ftview.c \
      ftzoom.c

OBJ = $(SRC:.c=.obj)


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

EXEFILES = ftdump.exe \
           fterror.exe \
           ftlint.exe \
           ftmetric.exe \
           ftsbit.exe \
           ftstring.exe \
           ftstrpnm.exe \
           ftstrtto.exe \
           fttimer.exe \
           ftview.exe \
           ftzoom.exe

!ifndef DEBUG
# Skiped if DEBUG build
all: freetype $(EXEFILES)

dll: the_dll $(EXEFILES)

!else
# Skipped if non-DEBUG build
default_target: debug
dll: the_debug_dll $(EXEFILES)

!endif

debug: freetype_debug $(EXEFILES)

!ifdef BIGFONTS
MAKEBIG = BIGFONTS=1
!endif

freetype:
	cd $(LIBDIR)
	$(FT_MAKE) /f $(FT_MAKEFILE) $(MAKEBIG) all
	cd ..\test

freetype_debug:
	cd $(LIBDIR)
	$(FT_MAKE) /f $(FT_MAKEFILE) DEBUG=1 $(MAKEBIG) debug
	cd ..\test

the_dll:
	cd $(LIBDIR)
	$(FT_MAKE) /f $(FT_MAKEFILE) DLL=1 $(MAKEBIG) dll
	cd ..\test
	-copy $(LIBDIR)\$(FT_DLL)

the_debug_dll:
	cd $(LIBDIR)
	$(FT_MAKE) /f $(FT_MAKEFILE) DEBUG=1 DLL=1 $(MAKEBIG) dll
	cd ..\test
	-copy $(LIBDIR)\$(FT_DLL)


# C compilers are unable to include 16-bit <windows.h> in ANSI mode.
# So we have a special rule for this file, to build it outside ANSI.
$(GDRIVER:.c=.obj):
	@$(CC) /c /Fo$* @<<
	    $(CFLAGS) /Ze $(GDRIVER)
<<

.obj.exe:
	$(CC) /Fe$* @<<
            $(LDFLAGS) $**
<<

ftzoom.exe: $(GOBJ) ftzoom.obj common.obj $(LIBDIR)\libttf.lib
ftview.exe: $(GOBJ) ftview.obj common.obj $(LIBDIR)\libttf.lib
ftstring.exe: $(GOBJ) ftstring.obj common.obj $(LIBDIR)\libttf.lib
ftstrtto.exe: $(GOBJ) ftstrtto.obj common.obj arabic.obj $(LIBDIR)\libttf.lib
fttimer.exe: $(GOBJ) fttimer.obj common.obj $(LIBDIR)\libttf.lib
ftlint.exe: ftlint.obj common.obj $(LIBDIR)\libttf.lib
ftdump.exe: ftdump.obj common.obj $(LIBDIR)\libttf.lib
ftstrpnm.exe: ftstrpnm.obj common.obj $(LIBDIR)\libttf.lib
ftsbit.exe: ftsbit.obj common.obj $(LIBDIR)\libttf.lib
ftmetric.exe: ftmetric.obj common.obj $(LIBDIR)\libttf.lib
fterror.exe: fterror.obj common.obj $(LIBDIR)\libttf.lib


clean: do_clean
	cd $(LIBDIR)
	$(FT_MAKE) /f $(FT_MAKEFILE) clean
	cd ..\test

distclean: do_clean
	cd $(LIBDIR)
	$(FT_MAKE) /f $(FT_MAKEFILE) distclean
	cd ..\test
	-del *.exe
	-del *.dll
	-del *.pdb

do_clean:
	-del *.obj
	-del $(ARCH)\*.obj


!include "$(ARCH)\depend.win"

# end of Makefile.VC
