# NMake Makefile for building HarfBuzz as a DLL on Windows

# The items below this line should not be changed, unless one is maintaining
# the NMake Makefiles.  Customizations can be done in the following NMake Makefile
# portions (please see comments in the these files to see what can be customized):
#
# detectenv-msvc.mak
# config-msvc.mak

!include detectenv-msvc.mak

# Include the Makefile portions with the source listings
!include ..\src\Makefile.sources
!include ..\src\hb-ucdn\Makefile.sources
!include ..\util\Makefile.sources

# Include the Makefile portion that enables features based on user input
!include config-msvc.mak

!if "$(VALID_CFGSET)" == "TRUE"

# Include the Makefile portion to convert the source and header lists
# into the lists we need for compilation and introspection
!include create-lists-msvc.mak

all: $(HB_LIBS) $(HB_UTILS) $(EXTRA_TARGETS) all-build-info

tests: all $(HB_TESTS)

# Include the build rules for sources, DLLs and executables
!include build-rules-msvc.mak

# Include the rules for build directory creation and code generation
!include generate-msvc.mak

# Generate the introspection files

!if "$(INTROSPECTION)" == "1"
# Include the rules for building the introspection files
!include introspection-msvc.mak
!include hb-introspection-msvc.mak
!endif

!include install.mak

!else
all: help
	@echo You need to specify a valid configuration, via
	@echo CFG=release or CFG=debug
!endif

!include info-msvc.mak
