Home | History | Annotate | Download | only in win32
      1 # NMake Makefile portion for enabling features for Windows builds
      2 
      3 # You may change these lines to customize the .lib files that will be linked to
      4 # Additional Libraries for building HarfBuzz-ICU
      5 # icudt.lib may be required for static ICU builds
      6 HB_ICU_DEP_LIBS = icuuc.lib
      7 
      8 # GLib is required for all utility programs and tests
      9 HB_GLIB_LIBS = glib-2.0.lib
     10 
     11 # Needed for building HarfBuzz-GObject
     12 HB_GOBJECT_DEP_LIBS = gobject-2.0.lib $(HB_GLIB_LIBS)
     13 
     14 # Freetype is needed for building FreeType support and hb-view
     15 FREETYPE_LIB = freetype.lib
     16 
     17 # Cairo is needed for building hb-view
     18 CAIRO_LIB = cairo.lib
     19 
     20 # Graphite2 is needed for building SIL Graphite2 support
     21 GRAPHITE2_LIB = graphite2.lib
     22 
     23 # Directwrite is needed for DirectWrite shaping support
     24 DIRECTWRITE_LIB = dwrite.lib
     25 
     26 # Please do not change anything beneath this line unless maintaining the NMake Makefiles
     27 # Bare minimum features and sources built into HarfBuzz on Windows
     28 HB_DEFINES =
     29 HB_CFLAGS = /DHAVE_CONFIG_H
     30 HB_UCDN_CFLAGS = /I..\src\hb-ucdn
     31 HB_SOURCES =	\
     32 	$(HB_BASE_sources)		\
     33 	$(HB_FALLBACK_sources)	\
     34 	$(HB_OT_sources)		\
     35 	$(HB_UNISCRIBE_sources)	\
     36 
     37 HB_HEADERS =	\
     38 	$(HB_BASE_headers)		\
     39 	$(HB_NODIST_headers)	\
     40 	$(HB_OT_headers)		\
     41 	$(HB_UNISCRIBE_headers)
     42 
     43 # Minimal set of (system) libraries needed for the HarfBuzz DLL
     44 HB_DEP_LIBS = usp10.lib gdi32.lib rpcrt4.lib user32.lib
     45 
     46 # We build the HarfBuzz DLL/LIB at least
     47 HB_LIBS = $(CFG)\$(PLAT)\harfbuzz.lib
     48 
     49 # Note: All the utility and test programs require GLib support to be present!
     50 HB_UTILS =
     51 HB_UTILS_DEP_LIBS = $(HB_GLIB_LIBS)
     52 HB_TESTS =
     53 HB_TESTS_DEP_LIBS = $(HB_GLIB_LIBS)
     54 
     55 # Use libtool-style DLL names, if desired
     56 !if "$(LIBTOOL_DLL_NAME)" == "1"
     57 HARFBUZZ_DLL_FILENAME = $(CFG)\$(PLAT)\libharfbuzz-0
     58 HARFBUZZ_ICU_DLL_FILENAME = $(CFG)\$(PLAT)\libharfbuzz-icu-0
     59 HARFBUZZ_GOBJECT_DLL_FILENAME = $(CFG)\$(PLAT)\libharfbuzz-gobject-0
     60 !else
     61 HARFBUZZ_DLL_FILENAME = $(CFG)\$(PLAT)\harfbuzz-vs$(VSVER)
     62 HARFBUZZ_ICU_DLL_FILENAME = $(CFG)\$(PLAT)\harfbuzz-icu-vs$(VSVER)
     63 HARFBUZZ_GOBJECT_DLL_FILENAME = $(CFG)\$(PLAT)\harfbuzz-gobject-vs$(VSVER)
     64 !endif
     65 
     66 # Enable HarfBuzz-ICU, if desired
     67 !if "$(ICU)" == "1"
     68 HB_ICU_CFLAGS =
     69 HB_LIBS =	\
     70 	$(HB_LIBS)	\
     71 	$(CFG)\$(PLAT)\harfbuzz-icu.lib
     72 
     73 # We don't want to re-define int8_t Visual Studio 2008, will cause build breakage
     74 # as we define it in hb-common.h, and we ought to use the definitions there.
     75 !if "$(VSVER)" == "9"
     76 HB_ICU_CFLAGS = /DU_HAVE_INT8_T
     77 !endif
     78 
     79 !endif
     80 
     81 # Enable Introspection (enables HarfBuzz-Gobject as well)
     82 !if "$(INTROSPECTION)" == "1"
     83 GOBJECT = 1
     84 CHECK_PACKAGE = gobject-2.0
     85 EXTRA_TARGETS = $(CFG)\$(PLAT)\HarfBuzz-0.0.gir $(CFG)\$(PLAT)\HarfBuzz-0.0.typelib
     86 !else
     87 EXTRA_TARGETS =
     88 !endif
     89 
     90 # Enable HarfBuzz-GObject (enables GLib support as well)
     91 !if "$(GOBJECT)" == "1"
     92 GLIB = 1
     93 HB_LIBS =	\
     94 	$(HB_LIBS)	\
     95 	$(CFG)\$(PLAT)\harfbuzz-gobject.lib
     96 
     97 HB_GOBJECT_ENUM_GENERATED_SOURCES = \
     98 	$(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.cc	\
     99 	$(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.h
    100 
    101 !endif
    102 
    103 # Enable cairo-ft (enables cairo and freetype as well)
    104 !if "$(CAIRO_FT)" == "1"
    105 HB_DEFINES = $(HB_DEFINES) /DHAVE_CAIRO_FT=1
    106 CAIRO = 1
    107 FREETYPE = 1
    108 !if "$(GLIB)" == "1"
    109 HB_UTILS = \
    110 	$(HB_UTILS)	\
    111 	$(CFG)\$(PLAT)\hb-view.exe
    112 
    113 HB_UTILS_DEP_LIBS = $(HB_UTILS_DEP_LIBS) $(CAIRO_LIB) $(FREETYPE_LIB)
    114 !else
    115 !if [echo Warning: GLib support not enabled, hb-view not built]
    116 !endif
    117 !endif
    118 !endif
    119 
    120 # Enable cairo
    121 !if "$(CAIRO)" == "1"
    122 HB_DEFINES = $(HB_DEFINES) /DHAVE_CAIRO=1
    123 !endif
    124 
    125 # Enable freetype if desired
    126 !if "$(FREETYPE)" == "1"
    127 HB_DEFINES = $(HB_DEFINES) /DHAVE_FREETYPE=1
    128 HB_SOURCES = $(HB_SOURCES) $(HB_FT_sources)
    129 HB_HEADERS = $(HB_HEADERS) $(HB_FT_headers)
    130 HB_DEP_LIBS = $(HB_DEP_LIBS) $(FREETYPE_LIB)
    131 !endif
    132 
    133 # Enable graphite2 if desired
    134 !if "$(GRAPHITE2)" == "1"
    135 HB_DEFINES = $(HB_DEFINES) /DHAVE_GRAPHITE2=1
    136 HB_SOURCES = $(HB_SOURCES) $(HB_GRAPHITE2_sources)
    137 HB_HEADERS = $(HB_HEADERS) $(HB_GRAPHITE2_headers)
    138 HB_DEP_LIBS = $(HB_DEP_LIBS) $(GRAPHITE2_LIB)
    139 !endif
    140 
    141 # Enable GLib if desired
    142 !if "$(GLIB)" == "1"
    143 HB_DEFINES = $(HB_DEFINES) /DHAVE_GLIB=1
    144 HB_CFLAGS =	\
    145 	$(HB_CFLAGS)					\
    146 	/FImsvc_recommended_pragmas.h	\
    147 	/I$(PREFIX)\include\glib-2.0	\
    148 	/I$(PREFIX)\lib\glib-2.0\include
    149 
    150 HB_SOURCES = $(HB_SOURCES) $(HB_GLIB_sources)
    151 HB_HEADERS = $(HB_HEADERS) $(HB_GLIB_headers)
    152 HB_DEP_LIBS = $(HB_DEP_LIBS) $(HB_GLIB_LIBS)
    153 
    154 HB_UTILS = \
    155 	$(HB_UTILS)					\
    156 	$(CFG)\$(PLAT)\hb-shape.exe	\
    157 	$(CFG)\$(PLAT)\hb-ot-shape-closure.exe
    158 
    159 HB_TESTS = \
    160 	$(HB_TESTS)	\
    161 	$(CFG)\$(PLAT)\main.exe						\
    162 	$(CFG)\$(PLAT)\test.exe						\
    163 	$(CFG)\$(PLAT)\test-buffer-serialize.exe	\
    164 	$(CFG)\$(PLAT)\test-size-params.exe			\
    165 	$(CFG)\$(PLAT)\test-would-substitute.exe	\
    166 	$(CFG)\$(PLAT)\test-blob.exe				\
    167 	$(CFG)\$(PLAT)\test-buffer.exe				\
    168 	$(CFG)\$(PLAT)\test-common.exe				\
    169 	$(CFG)\$(PLAT)\test-font.exe				\
    170 	$(CFG)\$(PLAT)\test-object.exe				\
    171 	$(CFG)\$(PLAT)\test-set.exe					\
    172 	$(CFG)\$(PLAT)\test-shape.exe				\
    173 	$(CFG)\$(PLAT)\test-unicode.exe				\
    174 	$(CFG)\$(PLAT)\test-version.exe
    175 
    176 !else
    177 # If there is no GLib support, use the built-in UCDN
    178 # and define some of the macros in GLib's msvc_recommended_pragmas.h
    179 # to reduce some unneeded build-time warnings
    180 HB_DEFINES = $(HB_DEFINES) /DHAVE_UCDN=1
    181 HB_CFLAGS =	\
    182 	$(HB_CFLAGS)					\
    183 	$(HB_UCDN_CFLAGS)				\
    184 	/wd4244							\
    185 	/D_CRT_SECURE_NO_WARNINGS		\
    186 	/D_CRT_NONSTDC_NO_WARNINGS
    187 
    188 HB_SOURCES = $(HB_SOURCES) $(LIBHB_UCDN_sources) $(HB_UCDN_sources)
    189 !endif
    190 
    191 !if "$(DIRECTWRITE)" == "1"
    192 HB_CFLAGS = $(HB_CFLAGS) /DHAVE_DIRECTWRITE
    193 HB_SOURCES = $(HB_SOURCES) $(HB_DIRECTWRITE_sources)
    194 HB_HEADERS = $(HB_HEADERS) $(HB_DIRECTWRITE_headers)
    195 HB_DEP_LIBS = $(HB_DEP_LIBS) $(DIRECTWRITE_LIB)
    196 !endif
    197 
    198 HB_LIB_CFLAGS = $(HB_CFLAGS) /DHB_EXTERN="__declspec (dllexport) extern"
    199