@@ -432,10 +432,15 @@ endif
432432
433433###########################################################################
434434
435- #### Begin harfbuzz configuration
436-
437435HARFBUZZ_CFLAGS := -DHAVE_OT -DHAVE_FALLBACK -DHAVE_UCDN -DHAVE_ROUND
438436
437+ # This is better than adding EXPORT_ALL_SYMBOLS
438+ ifneq ($(filter $(TOOLCHAIN_TYPE), gcc clang), )
439+ HARFBUZZ_CFLAGS += -DHB_EXTERN=__attribute__\(\(visibility\(\"default\"\)\)\)
440+ else ifeq ($(TOOLCHAIN_TYPE), microsoft)
441+ HARFBUZZ_CFLAGS += -DHB_EXTERN=__declspec\(dllexport\)
442+ endif
443+
439444ifeq ($(call isTargetOs, windows), false)
440445 HARFBUZZ_CFLAGS += -DGETPAGESIZE -DHAVE_MPROTECT -DHAVE_PTHREAD \
441446 -DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H \
@@ -448,27 +453,74 @@ ifeq ($(call isTargetOs, macosx), true)
448453 HARFBUZZ_CFLAGS += -DHAVE_CORETEXT
449454endif
450455ifeq ($(call isTargetOs, macosx), false)
451- LIBFONTMANAGER_EXCLUDE_FILES += harfbuzz/hb-coretext.cc
456+ LIBHARFBUZZ_EXCLUDE_FILES += harfbuzz/hb-coretext.cc
452457endif
453458# hb-ft.cc is not presently needed, and requires freetype 2.4.2 or later.
454- LIBFONTMANAGER_EXCLUDE_FILES += harfbuzz/hb-ft.cc
459+ LIBHARFBUZZ_EXCLUDE_FILES += harfbuzz/hb-ft.cc
455460
456- LIBFONTMANAGER_CFLAGS += $(HARFBUZZ_CFLAGS)
461+ LIBHARFBUZZ_CFLAGS += $(HARFBUZZ_CFLAGS)
462+
463+ # For use by libfontmanager:
464+ ifeq ($(call isTargetOs, windows), true)
465+ LIBHARFBUZZ_LIBS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libharfbuzz/harfbuzz.lib
466+ else
467+ LIBHARFBUZZ_LIBS := -lharfbuzz
468+ endif
469+
470+ LIBHARFBUZZ_EXTRA_HEADER_DIRS := \
471+ libharfbuzz/hb-ucdn \
472+ #
457473
458- #### End harfbuzz configuration
474+ LIBHARFBUZZ_OPTIMIZATION := HIGH
475+
476+ LIBHARFBUZZ_CFLAGS += $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS
477+
478+ $(eval $(call SetupJdkLibrary, BUILD_LIBHARFBUZZ, \
479+ NAME := harfbuzz, \
480+ EXCLUDE_FILES := $(LIBHARFBUZZ_EXCLUDE_FILES), \
481+ TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
482+ CFLAGS := $(CFLAGS_JDKLIB) $(LIBHARFBUZZ_CFLAGS), \
483+ CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBHARFBUZZ_CFLAGS), \
484+ OPTIMIZATION := $(LIBHARFBUZZ_OPTIMIZATION), \
485+ CFLAGS_windows = -DCC_NOEX, \
486+ EXTRA_HEADER_DIRS := $(LIBHARFBUZZ_EXTRA_HEADER_DIRS), \
487+ WARNINGS_AS_ERRORS_xlc := false, \
488+ DISABLED_WARNINGS_gcc := type-limits missing-field-initializers strict-aliasing, \
489+ DISABLED_WARNINGS_CXX_gcc := reorder delete-non-virtual-dtor strict-overflow \
490+ maybe-uninitialized class-memaccess, \
491+ DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \
492+ tautological-constant-out-of-range-compare int-to-pointer-cast \
493+ undef missing-field-initializers, \
494+ DISABLED_WARNINGS_microsoft := 4267 4244 4090 4146 4334 4819 4101 4068 4805 4138, \
495+ LDFLAGS := $(LDFLAGS_JDKLIB) \
496+ $(call SET_SHARED_LIBRARY_ORIGIN), \
497+ LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
498+ LDFLAGS_aix := -Wl$(COMMA)-berok, \
499+ LIBS := $(BUILD_LIBHARFBUZZ), \
500+ LIBS_unix := $(LIBM) $(LIBCXX), \
501+ LIBS_macosx := -framework CoreText -framework CoreFoundation -framework CoreGraphics, \
502+ LIBS_windows := user32.lib, \
503+ ))
504+
505+ ifeq ($(FREETYPE_TO_USE), bundled)
506+ $(BUILD_LIBHARFBUZZ): $(BUILD_LIBFREETYPE)
507+ endif
508+
509+ TARGETS += $(BUILD_LIBHARFBUZZ)
510+
511+ ###########################################################################
459512
460513LIBFONTMANAGER_EXTRA_HEADER_DIRS := \
461- libfontmanager/harfbuzz \
462- libfontmanager/harfbuzz/hb-ucdn \
514+ libharfbuzz \
463515 common/awt \
464516 common/font \
465517 libawt/java2d \
466518 libawt/java2d/pipe \
467519 libawt/java2d/loops \
468520 #
469521
470- LIBFONTMANAGER_CFLAGS += $(LIBFREETYPE_CFLAGS)
471- BUILD_LIBFONTMANAGER_FONTLIB += $(LIBFREETYPE_LIBS)
522+ LIBFONTMANAGER_CFLAGS += $(LIBFREETYPE_CFLAGS) $(HARFBUZZ_FLAGS)
523+ BUILD_LIBFONTMANAGER_FONTLIB += $(LIBHARFBUZZ_LIBS) $( LIBFREETYPE_LIBS)
472524
473525LIBFONTMANAGER_OPTIMIZATION := HIGH
474526
@@ -509,29 +561,22 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \
509561 CFLAGS_windows = -DCC_NOEX, \
510562 EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS), \
511563 WARNINGS_AS_ERRORS_xlc := false, \
512- DISABLED_WARNINGS_gcc := sign-compare int-to-pointer-cast \
513- type-limits missing-field-initializers implicit-fallthrough \
514- strict-aliasing undef unused-function, \
515- DISABLED_WARNINGS_CXX_gcc := reorder delete-non-virtual-dtor strict-overflow \
516- maybe-uninitialized class-memaccess, \
517- DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \
518- tautological-constant-out-of-range-compare int-to-pointer-cast \
519- sign-compare undef missing-field-initializers, \
520- DISABLED_WARNINGS_microsoft := 4267 4244 4018 4090 4996 4146 4334 4819 4101 4068 4805 4138, \
564+ DISABLED_WARNINGS_gcc := sign-compare unused-function, \
565+ DISABLED_WARNINGS_clang := sign-compare, \
566+ DISABLED_WARNINGS_microsoft := 4018 4146 4244 4996, \
521567 LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
522568 $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \
523569 $(call SET_SHARED_LIBRARY_ORIGIN), \
524570 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
525571 LDFLAGS_aix := -Wl$(COMMA)-berok, \
526572 LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \
527573 LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \
528- LIBS_macosx := -lawt_lwawt -framework CoreText -framework CoreFoundation \
529- -framework CoreGraphics, \
574+ LIBS_macosx := -lawt_lwawt, \
530575 LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \
531576 $(WIN_AWT_LIB), \
532577))
533578
534- $(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT)
579+ $(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT) $(BUILD_LIBHARFBUZZ)
535580
536581ifeq ($(call isTargetOs, macosx), true)
537582 $(BUILD_LIBFONTMANAGER): $(call FindLib, $(MODULE), awt_lwawt)
0 commit comments