412 NAME := freetype, \ 413 OPTIMIZATION := HIGHEST, \ 414 CFLAGS := $(CFLAGS_JDKLIB) \ 415 $(BUILD_LIBFREETYPE_CFLAGS), \ 416 EXTRA_HEADER_DIRS := $(BUILD_LIBFREETYPE_HEADER_DIRS), \ 417 DISABLED_WARNINGS_microsoft := 4018 4267 4244 4312 4819, \ 418 DISABLED_WARNINGS_gcc := implicit-fallthrough cast-function-type bad-function-cast, \ 419 LDFLAGS := $(LDFLAGS_JDKLIB) \ 420 $(call SET_SHARED_LIBRARY_ORIGIN), \ 421 )) 422 423 TARGETS += $(BUILD_LIBFREETYPE) 424 endif 425 426 ########################################################################### 427 428 #### Begin harfbuzz configuration 429 430 HARFBUZZ_CFLAGS := -DHAVE_OT -DHAVE_FALLBACK -DHAVE_UCDN -DHAVE_ROUND 431 432 ifeq ($(call isTargetOs, windows), false) 433 HARFBUZZ_CFLAGS += -DGETPAGESIZE -DHAVE_MPROTECT -DHAVE_PTHREAD \ 434 -DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H \ 435 -DHB_NO_PRAGMA_GCC_DIAGNOSTIC 436 endif 437 ifeq ($(call isTargetOs, linux macosx), true) 438 HARFBUZZ_CFLAGS += -DHAVE_INTEL_ATOMIC_PRIMITIVES 439 endif 440 ifeq ($(call isTargetOs, macosx), true) 441 HARFBUZZ_CFLAGS += -DHAVE_CORETEXT 442 endif 443 ifeq ($(call isTargetOs, macosx), false) 444 LIBFONTMANAGER_EXCLUDE_FILES += harfbuzz/hb-coretext.cc 445 endif 446 # hb-ft.cc is not presently needed, and requires freetype 2.4.2 or later. 447 LIBFONTMANAGER_EXCLUDE_FILES += harfbuzz/hb-ft.cc 448 449 LIBFONTMANAGER_CFLAGS += $(HARFBUZZ_CFLAGS) 450 451 #### End harfbuzz configuration 452 453 LIBFONTMANAGER_EXTRA_HEADER_DIRS := \ 454 libfontmanager/harfbuzz \ 455 libfontmanager/harfbuzz/hb-ucdn \ 456 common/awt \ 457 common/font \ 458 libawt/java2d \ 459 libawt/java2d/pipe \ 460 libawt/java2d/loops \ 461 # 462 463 LIBFONTMANAGER_CFLAGS += $(LIBFREETYPE_CFLAGS) 464 BUILD_LIBFONTMANAGER_FONTLIB += $(LIBFREETYPE_LIBS) 465 466 LIBFONTMANAGER_OPTIMIZATION := HIGH 467 468 ifeq ($(call isTargetOs, windows), true) 469 LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \ 470 X11TextRenderer.c 471 LIBFONTMANAGER_OPTIMIZATION := HIGHEST 472 else ifeq ($(call isTargetOs, macosx), true) 473 LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \ 474 X11TextRenderer.c \ 475 fontpath.c \ 476 lcdglyph.c 477 else 478 LIBFONTMANAGER_EXCLUDE_FILES += fontpath.c \ 479 lcdglyph.c 480 endif 481 482 LIBFONTMANAGER_CFLAGS += $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS 483 484 ifeq ($(TOOLCHAIN_TYPE), gcc) 485 # Turn off all warnings for sunFont.c. This is needed because the specific warning 486 # about discarding 'const' qualifier cannot be turned off individually. 487 BUILD_LIBFONTMANAGER_sunFont.c_CFLAGS := -w 488 endif 489 490 # LDFLAGS clarification: 491 # Filter relevant linker flags disallowing unresolved symbols as we cannot 492 # build-time decide to which library to link against (libawt_headless or 493 # libawt_xawt). See JDK-8196516 for details. 494 $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \ 495 NAME := fontmanager, \ 496 EXCLUDE_FILES := $(LIBFONTMANAGER_EXCLUDE_FILES) \ 497 AccelGlyphCache.c, \ 498 TOOLCHAIN := TOOLCHAIN_LINK_CXX, \ 499 CFLAGS := $(CFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \ 500 CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \ 501 OPTIMIZATION := $(LIBFONTMANAGER_OPTIMIZATION), \ 502 CFLAGS_windows = -DCC_NOEX, \ 503 EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS), \ 504 WARNINGS_AS_ERRORS_xlc := false, \ 505 DISABLED_WARNINGS_gcc := sign-compare int-to-pointer-cast \ 506 type-limits missing-field-initializers implicit-fallthrough \ 507 strict-aliasing undef unused-function, \ 508 DISABLED_WARNINGS_CXX_gcc := reorder delete-non-virtual-dtor strict-overflow \ 509 maybe-uninitialized class-memaccess, \ 510 DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \ 511 tautological-constant-out-of-range-compare int-to-pointer-cast \ 512 sign-compare undef missing-field-initializers, \ 513 DISABLED_WARNINGS_microsoft := 4267 4244 4018 4090 4996 4146 4334 4819 4101 4068 4805 4138, \ 514 LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \ 515 $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \ 516 $(call SET_SHARED_LIBRARY_ORIGIN), \ 517 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ 518 LDFLAGS_aix := -Wl$(COMMA)-berok, \ 519 LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \ 520 LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \ 521 LIBS_macosx := -lawt_lwawt -framework CoreText -framework CoreFoundation \ 522 -framework CoreGraphics, \ 523 LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \ 524 $(WIN_AWT_LIB), \ 525 )) 526 527 $(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT) 528 529 ifeq ($(call isTargetOs, macosx), true) 530 $(BUILD_LIBFONTMANAGER): $(call FindLib, $(MODULE), awt_lwawt) 531 endif 532 533 ifeq ($(FREETYPE_TO_USE), bundled) 534 $(BUILD_LIBFONTMANAGER): $(BUILD_LIBFREETYPE) 535 endif 536 537 TARGETS += $(BUILD_LIBFONTMANAGER) 538 539 ################################################################################ 540 541 ifeq ($(call isTargetOs, windows), true) 542 543 LIBJAWT_CFLAGS := -EHsc -DUNICODE -D_UNICODE 544 545 LIBJAWT_EXTRA_HEADER_DIRS := \ 546 include \ 547 common/awt/debug \ | 412 NAME := freetype, \ 413 OPTIMIZATION := HIGHEST, \ 414 CFLAGS := $(CFLAGS_JDKLIB) \ 415 $(BUILD_LIBFREETYPE_CFLAGS), \ 416 EXTRA_HEADER_DIRS := $(BUILD_LIBFREETYPE_HEADER_DIRS), \ 417 DISABLED_WARNINGS_microsoft := 4018 4267 4244 4312 4819, \ 418 DISABLED_WARNINGS_gcc := implicit-fallthrough cast-function-type bad-function-cast, \ 419 LDFLAGS := $(LDFLAGS_JDKLIB) \ 420 $(call SET_SHARED_LIBRARY_ORIGIN), \ 421 )) 422 423 TARGETS += $(BUILD_LIBFREETYPE) 424 endif 425 426 ########################################################################### 427 428 #### Begin harfbuzz configuration 429 430 HARFBUZZ_CFLAGS := -DHAVE_OT -DHAVE_FALLBACK -DHAVE_UCDN -DHAVE_ROUND 431 432 # This is better than adding EXPORT_ALL_SYMBOLS 433 ifneq ($(filter $(TOOLCHAIN_TYPE), gcc clang), ) 434 HARFBUZZ_CFLAGS += -DHB_EXTERN=__attribute__\(\(visibility\(\"default\"\)\)\) 435 else ifeq ($(TOOLCHAIN_TYPE), microsoft) 436 HARFBUZZ_CFLAGS += -DHB_EXTERN=__declspec\(dllexport\) 437 endif 438 439 440 ifeq ($(call isTargetOs, windows), false) 441 HARFBUZZ_CFLAGS += -DGETPAGESIZE -DHAVE_MPROTECT -DHAVE_PTHREAD \ 442 -DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H \ 443 -DHB_NO_PRAGMA_GCC_DIAGNOSTIC 444 endif 445 ifeq ($(call isTargetOs, linux macosx), true) 446 HARFBUZZ_CFLAGS += -DHAVE_INTEL_ATOMIC_PRIMITIVES 447 endif 448 ifeq ($(call isTargetOs, macosx), true) 449 HARFBUZZ_CFLAGS += -DHAVE_CORETEXT 450 endif 451 ifeq ($(call isTargetOs, macosx), false) 452 LIBHARFBUZZ_EXCLUDE_FILES += harfbuzz/hb-coretext.cc 453 endif 454 # hb-ft.cc is not presently needed, and requires freetype 2.4.2 or later. 455 LIBHARFBUZZ_EXCLUDE_FILES += harfbuzz/hb-ft.cc 456 457 LIBHARFBUZZ_CFLAGS += $(HARFBUZZ_CFLAGS) 458 459 # For use by libfontmanager: 460 ifeq ($(call isTargetOs, windows), true) 461 LIBHARFBUZZ_LIBS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libharfbuzz/harfbuzz.lib 462 else 463 LIBHARFBUZZ_LIBS := -lharfbuzz 464 endif 465 466 #### End harfbuzz configuration 467 468 LIBHARFBUZZ_EXTRA_HEADER_DIRS := \ 469 libharfbuzz/hb-ucdn \ 470 # 471 472 LIBHARFBUZZ_OPTIMIZATION := HIGH 473 474 LIBHARFBUZZ_CFLAGS += $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS 475 476 $(eval $(call SetupJdkLibrary, BUILD_LIBHARFBUZZ, \ 477 NAME := harfbuzz, \ 478 EXCLUDE_FILES := $(LIBHARFBUZZ_EXCLUDE_FILES), \ 479 TOOLCHAIN := TOOLCHAIN_LINK_CXX, \ 480 CFLAGS := $(CFLAGS_JDKLIB) $(LIBHARFBUZZ_CFLAGS), \ 481 CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBHARFBUZZ_CFLAGS), \ 482 OPTIMIZATION := $(LIBHARFBUZZ_OPTIMIZATION), \ 483 CFLAGS_windows = -DCC_NOEX, \ 484 EXTRA_HEADER_DIRS := $(LIBHARFBUZZ_EXTRA_HEADER_DIRS), \ 485 WARNINGS_AS_ERRORS_xlc := false, \ 486 DISABLED_WARNINGS_gcc := type-limits missing-field-initializers strict-aliasing, \ 487 DISABLED_WARNINGS_CXX_gcc := reorder delete-non-virtual-dtor strict-overflow \ 488 maybe-uninitialized class-memaccess, \ 489 DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \ 490 tautological-constant-out-of-range-compare int-to-pointer-cast \ 491 undef missing-field-initializers, \ 492 DISABLED_WARNINGS_microsoft := 4267 4244 4090 4146 4334 4819 4101 4068 4805 4138, \ 493 LDFLAGS := $(LDFLAGS_JDKLIB) \ 494 $(call SET_SHARED_LIBRARY_ORIGIN), \ 495 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ 496 LDFLAGS_aix := -Wl$(COMMA)-berok, \ 497 LIBS := $(BUILD_LIBHARFBUZZ), \ 498 LIBS_unix := $(LIBM) $(LIBCXX), \ 499 LIBS_macosx := -framework CoreText -framework CoreFoundation -framework CoreGraphics, \ 500 LIBS_windows := user32.lib, \ 501 )) 502 503 ifeq ($(FREETYPE_TO_USE), bundled) 504 $(BUILD_LIBHARFBUZZ): $(BUILD_LIBFREETYPE) 505 endif 506 507 TARGETS += $(BUILD_LIBHARFBUZZ) 508 509 ########################################################################### 510 511 LIBFONTMANAGER_EXTRA_HEADER_DIRS := \ 512 libharfbuzz \ 513 common/awt \ 514 common/font \ 515 libawt/java2d \ 516 libawt/java2d/pipe \ 517 libawt/java2d/loops \ 518 # 519 520 LIBFONTMANAGER_CFLAGS += $(LIBFREETYPE_CFLAGS) $(HARFBUZZ_FLAGS) 521 BUILD_LIBFONTMANAGER_FONTLIB += $(LIBHARFBUZZ_LIBS) $(LIBFREETYPE_LIBS) 522 523 LIBFONTMANAGER_OPTIMIZATION := HIGH 524 525 ifeq ($(call isTargetOs, windows), true) 526 LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \ 527 X11TextRenderer.c 528 LIBFONTMANAGER_OPTIMIZATION := HIGHEST 529 else ifeq ($(call isTargetOs, macosx), true) 530 LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \ 531 X11TextRenderer.c \ 532 fontpath.c \ 533 lcdglyph.c 534 else 535 LIBFONTMANAGER_EXCLUDE_FILES += fontpath.c \ 536 lcdglyph.c 537 endif 538 539 LIBFONTMANAGER_CFLAGS += $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS 540 541 ifeq ($(TOOLCHAIN_TYPE), gcc) 542 # Turn off all warnings for sunFont.c. This is needed because the specific warning 543 # about discarding 'const' qualifier cannot be turned off individually. 544 BUILD_LIBFONTMANAGER_sunFont.c_CFLAGS := -w 545 endif 546 547 # LDFLAGS clarification: 548 # Filter relevant linker flags disallowing unresolved symbols as we cannot 549 # build-time decide to which library to link against (libawt_headless or 550 # libawt_xawt). See JDK-8196516 for details. 551 $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \ 552 NAME := fontmanager, \ 553 EXCLUDE_FILES := $(LIBFONTMANAGER_EXCLUDE_FILES) \ 554 AccelGlyphCache.c, \ 555 TOOLCHAIN := TOOLCHAIN_LINK_CXX, \ 556 CFLAGS := $(CFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \ 557 CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \ 558 OPTIMIZATION := $(LIBFONTMANAGER_OPTIMIZATION), \ 559 CFLAGS_windows = -DCC_NOEX, \ 560 EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS), \ 561 WARNINGS_AS_ERRORS_xlc := false, \ 562 DISABLED_WARNINGS_gcc := sign-compare unused-function, \ 563 DISABLED_WARNINGS_clang := sign-compare, \ 564 DISABLED_WARNINGS_microsoft := 4018 4146 4244 4996, \ 565 LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \ 566 $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \ 567 $(call SET_SHARED_LIBRARY_ORIGIN), \ 568 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ 569 LDFLAGS_aix := -Wl$(COMMA)-berok, \ 570 LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \ 571 LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \ 572 LIBS_macosx := -lawt_lwawt, \ 573 LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \ 574 $(WIN_AWT_LIB), \ 575 )) 576 577 $(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT) $(BUILD_LIBHARFBUZZ) 578 579 ifeq ($(call isTargetOs, macosx), true) 580 $(BUILD_LIBFONTMANAGER): $(call FindLib, $(MODULE), awt_lwawt) 581 endif 582 583 ifeq ($(FREETYPE_TO_USE), bundled) 584 $(BUILD_LIBFONTMANAGER): $(BUILD_LIBFREETYPE) 585 endif 586 587 TARGETS += $(BUILD_LIBFONTMANAGER) 588 589 ################################################################################ 590 591 ifeq ($(call isTargetOs, windows), true) 592 593 LIBJAWT_CFLAGS := -EHsc -DUNICODE -D_UNICODE 594 595 LIBJAWT_EXTRA_HEADER_DIRS := \ 596 include \ 597 common/awt/debug \ |