1 # 2 # Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved. 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 # 5 # This code is free software; you can redistribute it and/or modify it 6 # under the terms of the GNU General Public License version 2 only, as 7 # published by the Free Software Foundation. Oracle designates this 8 # particular file as subject to the "Classpath" exception as provided 9 # by Oracle in the LICENSE file that accompanied this code. 10 # 11 # This code is distributed in the hope that it will be useful, but WITHOUT 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 # version 2 for more details (a copy is included in the LICENSE file that 15 # accompanied this code). 16 # 17 # You should have received a copy of the GNU General Public License version 18 # 2 along with this work; if not, write to the Free Software Foundation, 19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 # 21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 # or visit www.oracle.com if you need additional information or have any 23 # questions. 24 # 25 26 WIN_AWT_LIB := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libawt/awt.lib 27 28 LIBAWT_DEFAULT_HEADER_DIRS := \ 29 libawt/awt/image \ 30 libawt/awt/image/cvutils \ 31 libawt/java2d \ 32 libawt/java2d/loops \ 33 libawt/java2d/pipe \ 34 # 35 36 ################################################################################ 37 38 BUILD_LIBMLIB_CFLAGS := -D__USE_J2D_NAMES -D__MEDIALIB_OLD_NAMES -DMLIB_NO_LIBSUNMATH 39 40 ifeq ($(call isTargetCpuBits, 64), true) 41 BUILD_LIBMLIB_CFLAGS += -DMLIB_OS64BIT 42 endif 43 44 $(eval $(call SetupJdkLibrary, BUILD_LIBMLIB_IMAGE, \ 45 NAME := mlib_image, \ 46 EXTRA_SRC := common/awt/medialib, \ 47 EXCLUDE_FILES := mlib_c_ImageBlendTable.c, \ 48 EXCLUDE_SRC_PATTERNS := $(BUILD_LIBMLIB_EXCLUDE_SRC_PATTERNS), \ 49 OPTIMIZATION := HIGHEST, \ 50 CFLAGS := $(CFLAGS_JDKLIB) \ 51 $(BUILD_LIBMLIB_CFLAGS), \ 52 DISABLED_WARNINGS_gcc := unused-function, \ 53 LDFLAGS := $(LDFLAGS_JDKLIB) \ 54 $(call SET_SHARED_LIBRARY_ORIGIN), \ 55 LIBS := $(JDKLIB_LIBS), \ 56 LIBS_unix := $(LIBM) $(LIBDL), \ 57 )) 58 59 $(BUILD_LIBMLIB_IMAGE): $(call FindLib, java.base, java) 60 61 TARGETS += $(BUILD_LIBMLIB_IMAGE) 62 63 ################################################################################ 64 65 LIBAWT_EXTRA_SRC := \ 66 common/awt/debug \ 67 $(TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \ 68 # 69 70 ifeq ($(call isTargetOs, windows), true) 71 LIBAWT_EXTRA_SRC += \ 72 $(TOPDIR)/src/$(MODULE)/share/native/common/awt/utility \ 73 $(TOPDIR)/src/$(MODULE)/share/native/common/font \ 74 $(TOPDIR)/src/$(MODULE)/share/native/common/java2d/opengl \ 75 $(TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt/systemscale \ 76 # 77 endif 78 79 ifeq ($(call isTargetOs, linux macosx aix), true) 80 LIBAWT_EXFILES += awt_Font.c CUPSfuncs.c fontpath.c X11Color.c 81 endif 82 83 ifeq ($(call isTargetOs, macosx), true) 84 LIBAWT_EXFILES += initIDs.c awt/image/cvutils/img_colors.c 85 endif 86 87 ifeq ($(call isTargetOs, windows), true) 88 LIBAWT_EXFILES += \ 89 java2d/d3d/D3DShaderGen.c \ 90 awt/image/cvutils/img_colors.c \ 91 # 92 endif 93 94 LIBAWT_EXTRA_HEADER_DIRS := \ 95 $(LIBAWT_DEFAULT_HEADER_DIRS) \ 96 $(call GetJavaHeaderDir, java.base) \ 97 libawt/awt/medialib \ 98 libawt/java2d/d3d \ 99 libawt/java2d/opengl \ 100 libawt/java2d/windows \ 101 libawt/windows \ 102 common/awt/medialib \ 103 libmlib_image \ 104 include \ 105 java.base:libjava \ 106 java.base:include \ 107 # 108 109 LIBAWT_CFLAGS += -D__MEDIALIB_OLD_NAMES -D__USE_J2D_NAMES $(X_CFLAGS) 110 111 LIBAWT_CFLAGS += -DMLIB_NO_LIBSUNMATH 112 113 ifeq ($(call isTargetOs, windows), true) 114 LIBAWT_CFLAGS += -EHsc -DUNICODE -D_UNICODE 115 ifeq ($(call isTargetCpuBits, 64), true) 116 LIBAWT_CFLAGS += -DMLIB_OS64BIT 117 endif 118 119 LIBAWT_RC_FLAGS ?= -I $(TOPDIR)/src/java.base/windows/native/launcher/icons 120 LIBAWT_VERSIONINFO_RESOURCE := $(TOPDIR)/src/$(MODULE)/windows/native/libawt/windows/awt.rc 121 endif 122 123 ifeq ($(call isTargetOs, linux), true) 124 # FIXME: This is probably not what we want to do, but keep it now for compatibility. 125 LIBAWT_CFLAGS += $(EXPORT_ALL_SYMBOLS) 126 endif 127 128 # Turn off all warnings for debug_mem.c This is needed because the specific warning 129 # about initializing a declared 'extern' cannot be turned off individually. Only 130 # applies to debug builds. 131 ifeq ($(TOOLCHAIN_TYPE), gcc) 132 BUILD_LIBAWT_debug_mem.c_CFLAGS := -w 133 # This option improves performance of MaskFill in Java2D by 20% for some gcc 134 LIBAWT_CFLAGS += -fgcse-after-reload 135 endif 136 137 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT, \ 138 NAME := awt, \ 139 EXTRA_SRC := $(LIBAWT_EXTRA_SRC), \ 140 EXCLUDES := $(LIBAWT_EXCLUDES), \ 141 EXCLUDE_FILES := $(LIBAWT_EXFILES), \ 142 OPTIMIZATION := LOW, \ 143 CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_CFLAGS), \ 144 EXTRA_HEADER_DIRS := $(LIBAWT_EXTRA_HEADER_DIRS), \ 145 DISABLED_WARNINGS_gcc := sign-compare unused-result maybe-uninitialized \ 146 format-nonliteral parentheses unused-value unused-function, \ 147 DISABLED_WARNINGS_clang := logical-op-parentheses extern-initializer \ 148 sign-compare format-nonliteral, \ 149 DISABLED_WARNINGS_microsoft := 4244 4267 4996, \ 150 LDFLAGS := $(LDFLAGS_JDKLIB) $(call SET_SHARED_LIBRARY_ORIGIN), \ 151 LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \ 152 LDFLAGS_windows := -delayload:user32.dll -delayload:gdi32.dll \ 153 -delayload:shell32.dll -delayload:winmm.dll \ 154 -delayload:winspool.drv -delayload:imm32.dll \ 155 -delayload:ole32.dll -delayload:comdlg32.dll \ 156 -delayload:comctl32.dll -delayload:shlwapi.dll, \ 157 LIBS_unix := -ljvm -ljava $(LIBM), \ 158 LIBS_linux := $(LIBDL), \ 159 LIBS_aix := $(LIBDL),\ 160 LIBS_macosx := -lmlib_image \ 161 -framework Cocoa \ 162 -framework OpenGL \ 163 -framework JavaNativeFoundation \ 164 -framework JavaRuntimeSupport \ 165 -framework ApplicationServices \ 166 -framework AudioToolbox, \ 167 LIBS_windows := kernel32.lib user32.lib gdi32.lib winspool.lib \ 168 imm32.lib ole32.lib uuid.lib shell32.lib \ 169 comdlg32.lib winmm.lib comctl32.lib shlwapi.lib \ 170 delayimp.lib jvm.lib $(WIN_JAVA_LIB) advapi32.lib, \ 171 VERSIONINFO_RESOURCE := $(LIBAWT_VERSIONINFO_RESOURCE), \ 172 RC_FLAGS := $(RC_FLAGS) $(LIBAWT_RC_FLAGS) \ 173 -D "JDK_FNAME=awt.dll" \ 174 -D "JDK_INTERNAL_NAME=awt" \ 175 -D "JDK_FTYPE=0x2L", \ 176 )) 177 178 $(BUILD_LIBAWT): $(call FindLib, java.base, java) 179 180 ifeq ($(call isTargetOs, macosx), true) 181 $(BUILD_LIBAWT): $(BUILD_LIBMLIB_IMAGE) 182 endif 183 184 TARGETS += $(BUILD_LIBAWT) 185 186 ################################################################################ 187 188 ifeq ($(call isTargetOs, windows macosx), false) 189 ifeq ($(ENABLE_HEADLESS_ONLY), false) 190 191 LIBAWT_XAWT_EXTRA_SRC := \ 192 common/awt \ 193 common/java2d \ 194 common/font \ 195 # 196 197 LIBAWT_XAWT_EXCLUDES := medialib debug 198 199 LIBAWT_XAWT_EXTRA_HEADER_DIRS := \ 200 $(LIBAWT_DEFAULT_HEADER_DIRS) \ 201 libawt_xawt/awt \ 202 include \ 203 common/awt/debug \ 204 common/awt/systemscale \ 205 common/font \ 206 common/java2d/opengl \ 207 common/java2d/x11 \ 208 # 209 210 LIBAWT_XAWT_CFLAGS += -DXAWT -DXAWT_HACK \ 211 $(FONTCONFIG_CFLAGS) \ 212 $(CUPS_CFLAGS) 213 214 ifeq ($(call isTargetOs, linux), true) 215 ifeq ($(DISABLE_XRENDER), true) 216 LIBAWT_XAWT_CFLAGS += -DDISABLE_XRENDER_BY_DEFAULT=true 217 endif 218 endif 219 220 LIBAWT_XAWT_LIBS := $(LIBM) -lawt -lXext -lX11 -lXrender $(LIBDL) -lXtst -lXi -ljava -ljvm 221 222 ifeq ($(call isTargetOs, linux), true) 223 LIBAWT_XAWT_LIBS += -lpthread 224 endif 225 226 ifeq ($(TOOLCHAIN_TYPE), gcc) 227 # Turn off all warnings for the following files since they contain warnings 228 # that cannot be turned of individually. 229 # redefining a macro 230 BUILD_LIBAWT_XAWT_gtk2_interface.c_CFLAGS := -w 231 # comparison between pointer and integer 232 BUILD_LIBAWT_XAWT_awt_Font.c_CFLAGS := -w 233 # initializing a declared 'extern' 234 BUILD_LIBAWT_XAWT_debug_mem.c_CFLAGS := -w 235 endif 236 237 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_XAWT, \ 238 NAME := awt_xawt, \ 239 EXTRA_SRC := $(LIBAWT_XAWT_EXTRA_SRC), \ 240 EXTRA_HEADER_DIRS := $(LIBAWT_XAWT_EXTRA_HEADER_DIRS), \ 241 EXCLUDES := $(LIBAWT_XAWT_EXCLUDES), \ 242 OPTIMIZATION := LOW, \ 243 CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_XAWT_CFLAGS) \ 244 $(X_CFLAGS), \ 245 WARNINGS_AS_ERRORS_xlc := false, \ 246 DISABLED_WARNINGS_gcc := type-limits pointer-to-int-cast \ 247 unused-result maybe-uninitialized format \ 248 format-security int-to-pointer-cast parentheses \ 249 implicit-fallthrough undef unused-function, \ 250 DISABLED_WARNINGS_clang := parentheses format undef \ 251 logical-op-parentheses format-nonliteral int-conversion, \ 252 LDFLAGS := $(LDFLAGS_JDKLIB) \ 253 $(call SET_SHARED_LIBRARY_ORIGIN) \ 254 -L$(INSTALL_LIBRARIES_HERE), \ 255 LIBS := $(X_LIBS) $(LIBAWT_XAWT_LIBS), \ 256 )) 257 258 $(BUILD_LIBAWT_XAWT): $(call FindLib, java.base, java) 259 260 $(BUILD_LIBAWT_XAWT): $(BUILD_LIBAWT) 261 262 TARGETS += $(BUILD_LIBAWT_XAWT) 263 264 endif 265 endif 266 267 ################################################################################ 268 269 # The fast floor code loses precision. 270 LCMS_CFLAGS=-DCMS_DONT_USE_FAST_FLOOR 271 272 ifeq ($(USE_EXTERNAL_LCMS), true) 273 # If we're using an external library, we'll just need the wrapper part. 274 # By including it explicitly, all other files will be excluded. 275 BUILD_LIBLCMS_INCLUDE_FILES := LCMS.c 276 # If we're using an external library, we can't include our own SRC path 277 # as includes, instead the system headers should be used. 278 LIBLCMS_HEADERS_FROM_SRC := false 279 else 280 BUILD_LIBLCMS_INCLUDE_FILES := 281 endif 282 283 $(eval $(call SetupJdkLibrary, BUILD_LIBLCMS, \ 284 NAME := lcms, \ 285 INCLUDE_FILES := $(BUILD_LIBLCMS_INCLUDE_FILES), \ 286 OPTIMIZATION := HIGHEST, \ 287 CFLAGS := $(CFLAGS_JDKLIB) \ 288 $(LCMS_CFLAGS), \ 289 CFLAGS_windows := -DCMS_IS_WINDOWS_, \ 290 EXTRA_HEADER_DIRS := \ 291 common/awt/debug \ 292 libawt/java2d, \ 293 HEADERS_FROM_SRC := $(LIBLCMS_HEADERS_FROM_SRC), \ 294 DISABLED_WARNINGS_gcc := format-nonliteral type-limits \ 295 misleading-indentation undef unused-function stringop-truncation, \ 296 DISABLED_WARNINGS_clang := tautological-compare format-nonliteral undef, \ 297 DISABLED_WARNINGS_microsoft := 4819, \ 298 LDFLAGS := $(LDFLAGS_JDKLIB) \ 299 $(call SET_SHARED_LIBRARY_ORIGIN), \ 300 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ 301 LIBS_unix := -lawt -ljvm -ljava $(LCMS_LIBS) $(LIBM), \ 302 LIBS_windows := $(WIN_AWT_LIB) $(WIN_JAVA_LIB), \ 303 )) 304 305 TARGETS += $(BUILD_LIBLCMS) 306 307 $(BUILD_LIBLCMS): $(BUILD_LIBAWT) 308 309 ################################################################################ 310 311 # "DISABLED_WARNINGS_gcc := clobbered" rationale: 312 # Suppress gcc warnings like "variable might be clobbered by 'longjmp' 313 # or 'vfork'": this warning indicates that some variable is placed to 314 # a register by optimized compiler and it's value might be lost on longjmp(). 315 # Recommended way to avoid such warning is to declare the variable as 316 # volatile to prevent the optimization. However, this approach does not 317 # work because we have to declare all variables as volatile in result. 318 319 ifeq ($(USE_EXTERNAL_LIBJPEG), true) 320 LIBJPEG_LIBS := -ljpeg 321 BUILD_LIBJAVAJPEG_INCLUDE_FILES := \ 322 imageioJPEG.c \ 323 jpegdecoder.c 324 # If we're using an external library, we can't include our own SRC path 325 # as includes, instead the system headers should be used. 326 LIBJPEG_HEADERS_FROM_SRC := false 327 else 328 LIBJPEG_LIBS := 329 BUILD_LIBJAVAJPEG_INCLUDE_FILES := 330 endif 331 332 $(eval $(call SetupJdkLibrary, BUILD_LIBJAVAJPEG, \ 333 NAME := javajpeg, \ 334 INCLUDE_FILES := $(BUILD_LIBJAVAJPEG_INCLUDE_FILES), \ 335 OPTIMIZATION := HIGHEST, \ 336 CFLAGS := $(CFLAGS_JDKLIB), \ 337 HEADERS_FROM_SRC := $(LIBJPEG_HEADERS_FROM_SRC), \ 338 DISABLED_WARNINGS_gcc := clobbered implicit-fallthrough shift-negative-value, \ 339 LDFLAGS := $(LDFLAGS_JDKLIB) \ 340 $(call SET_SHARED_LIBRARY_ORIGIN), \ 341 LIBS := $(LIBJPEG_LIBS) $(JDKLIB_LIBS), \ 342 LIBS_windows := $(WIN_JAVA_LIB) jvm.lib, \ 343 )) 344 345 $(BUILD_LIBJAVAJPEG): $(call FindLib, java.base, java) 346 347 TARGETS += $(BUILD_LIBJAVAJPEG) 348 349 ################################################################################ 350 351 # Mac and Windows only use the native AWT lib, do not build libawt_headless 352 ifeq ($(call isTargetOs, windows macosx), false) 353 354 LIBAWT_HEADLESS_EXTRA_SRC := \ 355 common/font \ 356 common/java2d \ 357 $(TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \ 358 # 359 360 LIBAWT_HEADLESS_EXCLUDES := medialib 361 362 LIBAWT_HEADLESS_EXTRA_HEADER_DIRS := \ 363 $(LIBAWT_DEFAULT_HEADER_DIRS) \ 364 common/awt/debug \ 365 common/font \ 366 common/java2d/opengl \ 367 # 368 369 LIBAWT_HEADLESS_CFLAGS := $(CUPS_CFLAGS) $(FONTCONFIG_CFLAGS) $(X_CFLAGS) \ 370 -DHEADLESS=true 371 372 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_HEADLESS, \ 373 NAME := awt_headless, \ 374 EXTRA_SRC := $(LIBAWT_HEADLESS_EXTRA_SRC), \ 375 EXCLUDES := $(LIBAWT_HEADLESS_EXCLUDES), \ 376 OPTIMIZATION := LOW, \ 377 CFLAGS := $(CFLAGS_JDKLIB) \ 378 $(LIBAWT_HEADLESS_CFLAGS), \ 379 EXTRA_HEADER_DIRS := $(LIBAWT_HEADLESS_EXTRA_HEADER_DIRS), \ 380 DISABLED_WARNINGS_gcc := unused-function, \ 381 LDFLAGS := $(LDFLAGS_JDKLIB) \ 382 $(call SET_SHARED_LIBRARY_ORIGIN), \ 383 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ 384 LIBS_unix := -lawt -ljvm -ljava, \ 385 LIBS_linux := $(LIBM) $(LIBDL), \ 386 )) 387 388 $(BUILD_LIBAWT_HEADLESS): $(BUILD_LIBAWT) 389 390 TARGETS += $(BUILD_LIBAWT_HEADLESS) 391 392 endif 393 394 ################################################################################ 395 396 ifeq ($(FREETYPE_TO_USE), system) 397 # For use by libfontmanager: 398 LIBFREETYPE_CFLAGS := $(FREETYPE_CFLAGS) 399 LIBFREETYPE_LIBS := $(FREETYPE_LIBS) 400 else 401 BUILD_LIBFREETYPE_HEADER_DIRS := $(TOPDIR)/src/$(MODULE)/share/native/libfreetype/include 402 BUILD_LIBFREETYPE_CFLAGS := -DFT2_BUILD_LIBRARY $(EXPORT_ALL_SYMBOLS) 403 404 # For use by libfontmanager: 405 LIBFREETYPE_CFLAGS := -I$(BUILD_LIBFREETYPE_HEADER_DIRS) 406 ifeq ($(call isTargetOs, windows), true) 407 LIBFREETYPE_LIBS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfreetype/freetype.lib 408 # freetype now requires you to manually define this (see ftconfig.h) 409 BUILD_LIBFREETYPE_CFLAGS += -DDLL_EXPORT 410 else 411 LIBFREETYPE_LIBS := -lfreetype 412 endif 413 414 $(eval $(call SetupJdkLibrary, BUILD_LIBFREETYPE, \ 415 NAME := freetype, \ 416 OPTIMIZATION := HIGHEST, \ 417 CFLAGS := $(CFLAGS_JDKLIB) \ 418 $(BUILD_LIBFREETYPE_CFLAGS), \ 419 EXTRA_HEADER_DIRS := $(BUILD_LIBFREETYPE_HEADER_DIRS), \ 420 DISABLED_WARNINGS_microsoft := 4018 4267 4244 4312 4819, \ 421 DISABLED_WARNINGS_gcc := implicit-fallthrough cast-function-type bad-function-cast, \ 422 LDFLAGS := $(LDFLAGS_JDKLIB) \ 423 $(call SET_SHARED_LIBRARY_ORIGIN), \ 424 )) 425 426 TARGETS += $(BUILD_LIBFREETYPE) 427 endif 428 429 ########################################################################### 430 431 #### Begin harfbuzz configuration 432 433 HARFBUZZ_CFLAGS := -DHAVE_OT -DHAVE_FALLBACK -DHAVE_UCDN -DHAVE_ROUND 434 435 ifeq ($(call isTargetOs, windows), false) 436 HARFBUZZ_CFLAGS += -DGETPAGESIZE -DHAVE_MPROTECT -DHAVE_PTHREAD \ 437 -DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H \ 438 -DHB_NO_PRAGMA_GCC_DIAGNOSTIC 439 endif 440 ifeq ($(call isTargetOs, linux macosx), true) 441 HARFBUZZ_CFLAGS += -DHAVE_INTEL_ATOMIC_PRIMITIVES 442 endif 443 ifeq ($(call isTargetOs, macosx), true) 444 HARFBUZZ_CFLAGS += -DHAVE_CORETEXT 445 endif 446 ifeq ($(call isTargetOs, macosx), false) 447 LIBFONTMANAGER_EXCLUDE_FILES += harfbuzz/hb-coretext.cc 448 endif 449 # hb-ft.cc is not presently needed, and requires freetype 2.4.2 or later. 450 LIBFONTMANAGER_EXCLUDE_FILES += harfbuzz/hb-ft.cc 451 452 LIBFONTMANAGER_CFLAGS += $(HARFBUZZ_CFLAGS) 453 454 #### End harfbuzz configuration 455 456 LIBFONTMANAGER_EXTRA_HEADER_DIRS := \ 457 libfontmanager/harfbuzz \ 458 libfontmanager/harfbuzz/hb-ucdn \ 459 common/awt \ 460 common/font \ 461 libawt/java2d \ 462 libawt/java2d/pipe \ 463 libawt/java2d/loops \ 464 # 465 466 LIBFONTMANAGER_CFLAGS += $(LIBFREETYPE_CFLAGS) 467 BUILD_LIBFONTMANAGER_FONTLIB += $(LIBFREETYPE_LIBS) 468 469 LIBFONTMANAGER_OPTIMIZATION := HIGH 470 471 ifeq ($(call isTargetOs, windows), true) 472 LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \ 473 X11TextRenderer.c 474 LIBFONTMANAGER_OPTIMIZATION := HIGHEST 475 else ifeq ($(call isTargetOs, macosx), true) 476 LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \ 477 X11TextRenderer.c \ 478 fontpath.c \ 479 lcdglyph.c 480 else 481 LIBFONTMANAGER_EXCLUDE_FILES += fontpath.c \ 482 lcdglyph.c 483 endif 484 485 LIBFONTMANAGER_CFLAGS += $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS 486 487 ifeq ($(TOOLCHAIN_TYPE), gcc) 488 # Turn off all warnings for sunFont.c. This is needed because the specific warning 489 # about discarding 'const' qualifier cannot be turned off individually. 490 BUILD_LIBFONTMANAGER_sunFont.c_CFLAGS := -w 491 endif 492 493 # LDFLAGS clarification: 494 # Filter relevant linker flags disallowing unresolved symbols as we cannot 495 # build-time decide to which library to link against (libawt_headless or 496 # libawt_xawt). See JDK-8196516 for details. 497 $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \ 498 NAME := fontmanager, \ 499 EXCLUDE_FILES := $(LIBFONTMANAGER_EXCLUDE_FILES) \ 500 AccelGlyphCache.c, \ 501 TOOLCHAIN := TOOLCHAIN_LINK_CXX, \ 502 CFLAGS := $(CFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \ 503 CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \ 504 OPTIMIZATION := $(LIBFONTMANAGER_OPTIMIZATION), \ 505 CFLAGS_windows = -DCC_NOEX, \ 506 EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS), \ 507 WARNINGS_AS_ERRORS_xlc := false, \ 508 DISABLED_WARNINGS_gcc := sign-compare int-to-pointer-cast \ 509 type-limits missing-field-initializers implicit-fallthrough \ 510 strict-aliasing undef unused-function, \ 511 DISABLED_WARNINGS_CXX_gcc := reorder delete-non-virtual-dtor strict-overflow \ 512 maybe-uninitialized class-memaccess, \ 513 DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \ 514 tautological-constant-out-of-range-compare int-to-pointer-cast \ 515 sign-compare undef missing-field-initializers, \ 516 DISABLED_WARNINGS_microsoft := 4267 4244 4018 4090 4996 4146 4334 4819 4101 4068 4805 4138, \ 517 LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \ 518 $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \ 519 $(call SET_SHARED_LIBRARY_ORIGIN), \ 520 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ 521 LDFLAGS_aix := -Wl$(COMMA)-berok, \ 522 LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \ 523 LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \ 524 LIBS_macosx := -lawt_lwawt -framework CoreText -framework CoreFoundation \ 525 -framework CoreGraphics, \ 526 LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \ 527 $(WIN_AWT_LIB), \ 528 )) 529 530 $(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT) 531 532 ifeq ($(call isTargetOs, macosx), true) 533 $(BUILD_LIBFONTMANAGER): $(call FindLib, $(MODULE), awt_lwawt) 534 endif 535 536 ifeq ($(FREETYPE_TO_USE), bundled) 537 $(BUILD_LIBFONTMANAGER): $(BUILD_LIBFREETYPE) 538 endif 539 540 TARGETS += $(BUILD_LIBFONTMANAGER) 541 542 ################################################################################ 543 544 ifeq ($(call isTargetOs, windows), true) 545 546 LIBJAWT_CFLAGS := -EHsc -DUNICODE -D_UNICODE 547 548 LIBJAWT_EXTRA_HEADER_DIRS := \ 549 include \ 550 common/awt/debug \ 551 libawt/awt/image/cvutils \ 552 libawt/java2d \ 553 libawt/java2d/windows \ 554 libawt/windows \ 555 java.base:include \ 556 java.base:libjava \ 557 # 558 559 ifeq ($(call isTargetCpu, x86), true) 560 KERNEL32_LIB := kernel32.lib 561 endif 562 563 $(eval $(call SetupJdkLibrary, BUILD_LIBJAWT, \ 564 NAME := jawt, \ 565 OPTIMIZATION := LOW, \ 566 CFLAGS := $(CXXFLAGS_JDKLIB) \ 567 $(LIBJAWT_CFLAGS), \ 568 EXTRA_HEADER_DIRS := $(LIBJAWT_EXTRA_HEADER_DIRS), \ 569 LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK), \ 570 LIBS := $(JDKLIB_LIBS) $(KERNEL32_LIB) advapi32.lib $(WIN_AWT_LIB), \ 571 )) 572 573 $(BUILD_LIBJAWT): $(BUILD_LIBAWT) 574 575 $(eval $(call SetupCopyFiles, COPY_JAWT_LIB, \ 576 FILES := $(BUILD_LIBJAWT_IMPORT_LIBRARY), \ 577 DEST := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \ 578 )) 579 580 $(COPY_JAWT_LIB): $(BUILD_LIBJAWT) 581 582 TARGETS += $(COPY_JAWT_LIB) 583 584 else # not windows 585 586 ifeq ($(call isTargetOs, macosx), true) 587 # libjawt on macosx do not use the unix code 588 LIBJAWT_EXCLUDE_SRC_PATTERNS := /unix/ 589 endif 590 591 ifeq ($(call isTargetOs, macosx), true) 592 JAWT_LIBS := -lawt_lwawt 593 else 594 JAWT_LIBS := -lawt 595 ifeq ($(ENABLE_HEADLESS_ONLY), false) 596 JAWT_LIBS += -lawt_xawt 597 else 598 JAWT_LIBS += -lawt_headless 599 ifeq ($(call isTargetOs, linux), true) 600 JAWT_CFLAGS += -DHEADLESS 601 endif 602 endif 603 endif 604 605 $(eval $(call SetupJdkLibrary, BUILD_LIBJAWT, \ 606 NAME := jawt, \ 607 EXCLUDE_SRC_PATTERNS := $(LIBJAWT_EXCLUDE_SRC_PATTERNS), \ 608 INCLUDE_FILES := $(JAWT_FILES), \ 609 OPTIMIZATION := LOW, \ 610 CFLAGS := $(CFLAGS_JDKLIB) \ 611 $(JAWT_CFLAGS), \ 612 DISABLED_WARNINGS_clang := sign-compare, \ 613 EXTRA_HEADER_DIRS := \ 614 include \ 615 common/awt, \ 616 LDFLAGS := $(LDFLAGS_JDKLIB) \ 617 $(call SET_SHARED_LIBRARY_ORIGIN), \ 618 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ 619 LDFLAGS_macosx := -Wl$(COMMA)-rpath$(COMMA)@loader_path, \ 620 LIBS_unix := $(JAWT_LIBS) $(JDKLIB_LIBS), \ 621 LIBS_macosx := -framework Cocoa, \ 622 )) 623 624 ifeq ($(ENABLE_HEADLESS_ONLY), false) 625 $(BUILD_LIBJAWT): $(BUILD_LIBAWT_XAWT) 626 else 627 $(BUILD_LIBJAWT): $(call FindLib, $(MODULE), awt_headless) 628 endif 629 630 ifeq ($(call isTargetOs, macosx), true) 631 $(BUILD_LIBJAWT): $(call FindLib, $(MODULE), awt_lwawt) 632 endif 633 634 endif 635 636 TARGETS += $(BUILD_LIBJAWT) 637 638 ################################################################################ 639 640 ifeq ($(ENABLE_HEADLESS_ONLY), false) 641 642 LIBSPLASHSCREEN_EXTRA_SRC := \ 643 common/awt/systemscale \ 644 # 645 646 ifeq ($(USE_EXTERNAL_LIBGIF), false) 647 LIBSPLASHSCREEN_HEADER_DIRS += libsplashscreen/giflib 648 else 649 LIBSPLASHSCREEN_EXCLUDES := giflib 650 GIFLIB_LIBS := -lgif 651 endif 652 653 ifeq ($(USE_EXTERNAL_LIBJPEG), false) 654 # While the following ought to work, it will currently pull in the closed 655 # additions to this library, and this was not done previously in the build. 656 # LIBSPLASHSCREEN_EXTRA_SRC += libjavajpeg 657 LIBSPLASHSCREEN_EXTRA_SRC += $(TOPDIR)/src/java.desktop/share/native/libjavajpeg 658 else 659 LIBJPEG_LIBS := -ljpeg 660 endif 661 662 ifeq ($(USE_EXTERNAL_LIBPNG), false) 663 LIBSPLASHSCREEN_HEADER_DIRS += libsplashscreen/libpng 664 else 665 LIBSPLASHSCREEN_EXCLUDES += libpng 666 endif 667 668 ifeq ($(USE_EXTERNAL_LIBZ), false) 669 LIBSPLASHSCREEN_EXTRA_SRC += java.base:libzip/zlib 670 endif 671 672 ifeq ($(call isTargetOs, macosx), true) 673 # libsplashscreen on macosx do not use the unix code 674 LIBSPLASHSCREEN_EXCLUDE_SRC_PATTERNS := /unix/ 675 endif 676 677 LIBSPLASHSCREEN_CFLAGS += -DSPLASHSCREEN -DPNG_NO_MMX_CODE \ 678 -DPNG_ARM_NEON_OPT=0 -DPNG_ARM_NEON_IMPLEMENTATION=0 679 680 ifeq ($(call isTargetOs, linux), true) 681 ifeq ($(call isTargetCpuArch, ppc), true) 682 LIBSPLASHSCREEN_CFLAGS += -DPNG_POWERPC_VSX_OPT=0 683 endif 684 endif 685 686 ifeq ($(call isTargetOs, macosx), true) 687 LIBSPLASHSCREEN_CFLAGS += -DWITH_MACOSX 688 689 BUILD_LIBSPLASHSCREEN_java_awt_SplashScreen.c_CFLAGS := -x objective-c -O0 690 BUILD_LIBSPLASHSCREEN_splashscreen_gfx_impl.c_CFLAGS := -x objective-c -O0 691 BUILD_LIBSPLASHSCREEN_splashscreen_gif.c_CFLAGS := -x objective-c -O0 692 BUILD_LIBSPLASHSCREEN_splashscreen_impl.c_CFLAGS := -x objective-c -O0 693 BUILD_LIBSPLASHSCREEN_splashscreen_jpeg.c_CFLAGS := -x objective-c -O0 694 BUILD_LIBSPLASHSCREEN_splashscreen_png.c_CFLAGS := -x objective-c -O0 695 BUILD_LIBSPLASHSCREEN_splashscreen_sys.m_CFLAGS := -O0 696 697 else ifeq ($(call isTargetOs, windows), true) 698 LIBSPLASHSCREEN_CFLAGS += -DWITH_WIN32 699 else 700 LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS) 701 endif 702 703 LIBSPLASHSCREEN_LIBS := 704 705 ifeq ($(call isTargetOs, macosx), true) 706 LIBSPLASHSCREEN_LIBS += \ 707 $(LIBM) -lpthread -liconv -losxapp \ 708 -framework ApplicationServices \ 709 -framework Foundation \ 710 -framework Security \ 711 -framework Cocoa \ 712 -framework JavaNativeFoundation 713 else ifeq ($(call isTargetOs, windows), true) 714 LIBSPLASHSCREEN_LIBS += kernel32.lib user32.lib gdi32.lib delayimp.lib $(WIN_JAVA_LIB) jvm.lib 715 else 716 LIBSPLASHSCREEN_LIBS += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread -ldl 717 endif 718 719 LIBSPLASHSCREEN_HEADER_DIRS += \ 720 libosxapp \ 721 java.base:include \ 722 java.base:libjava \ 723 # 724 725 $(eval $(call SetupJdkLibrary, BUILD_LIBSPLASHSCREEN, \ 726 NAME := splashscreen, \ 727 EXTRA_SRC := $(LIBSPLASHSCREEN_EXTRA_SRC), \ 728 EXCLUDE_SRC_PATTERNS := $(LIBSPLASHSCREEN_EXCLUDE_SRC_PATTERNS), \ 729 EXCLUDE_FILES := imageioJPEG.c jpegdecoder.c pngtest.c, \ 730 EXCLUDES := $(LIBSPLASHSCREEN_EXCLUDES), \ 731 OPTIMIZATION := LOW, \ 732 CFLAGS := $(CFLAGS_JDKLIB) $(LIBSPLASHSCREEN_CFLAGS) \ 733 $(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(PNG_CFLAGS) $(LIBZ_CFLAGS), \ 734 EXTRA_HEADER_DIRS := $(LIBSPLASHSCREEN_HEADER_DIRS), \ 735 DISABLED_WARNINGS_gcc := sign-compare type-limits unused-result \ 736 maybe-uninitialized shift-negative-value implicit-fallthrough \ 737 unused-function, \ 738 DISABLED_WARNINGS_clang := incompatible-pointer-types sign-compare, \ 739 DISABLED_WARNINGS_microsoft := 4018 4244 4267, \ 740 LDFLAGS := $(LDFLAGS_JDKLIB) \ 741 $(call SET_SHARED_LIBRARY_ORIGIN), \ 742 LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \ 743 LDFLAGS_windows := -delayload:user32.dll, \ 744 LIBS := $(JDKLIB_LIBS) $(LIBSPLASHSCREEN_LIBS) $(LIBZ_LIBS) \ 745 $(GIFLIB_LIBS) $(LIBJPEG_LIBS) $(PNG_LIBS), \ 746 LIBS_aix := -liconv, \ 747 )) 748 749 TARGETS += $(BUILD_LIBSPLASHSCREEN) 750 751 ifeq ($(call isTargetOs, macosx), true) 752 $(BUILD_LIBSPLASHSCREEN): $(call FindLib, $(MODULE), osxapp) 753 endif 754 755 endif 756 757 ################################################################################ 758 759 ifeq ($(call isTargetOs, macosx), true) 760 761 LIBAWT_LWAWT_EXTRA_SRC := \ 762 $(TOPDIR)/src/$(MODULE)/unix/native/common/awt \ 763 $(TOPDIR)/src/$(MODULE)/share/native/common/font \ 764 $(TOPDIR)/src/$(MODULE)/share/native/common/java2d \ 765 # 766 767 LIBAWT_LWAWT_EXTRA_HEADER_DIRS := \ 768 $(LIBAWT_DEFAULT_HEADER_DIRS) \ 769 libawt_lwawt/awt \ 770 libawt_lwawt/font \ 771 libawt_lwawt/java2d/opengl \ 772 include \ 773 common/awt/debug \ 774 common/java2d/opengl \ 775 libosxapp \ 776 # 777 778 LIBAWT_LWAWT_CFLAGS := $(X_CFLAGS) $(X_LIBS) 779 780 LIBAWT_LWAWT_EXFILES := fontpath.c awt_Font.c X11Color.c 781 LIBAWT_LWAWT_EXCLUDES := $(TOPDIR)/src/$(MODULE)/unix/native/common/awt/medialib 782 783 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_LWAWT, \ 784 NAME := awt_lwawt, \ 785 EXTRA_SRC := $(LIBAWT_LWAWT_EXTRA_SRC), \ 786 INCLUDE_FILES := $(LIBAWT_LWAWT_FILES), \ 787 EXCLUDE_FILES := $(LIBAWT_LWAWT_EXFILES), \ 788 EXCLUDES := $(LIBAWT_LWAWT_EXCLUDES), \ 789 OPTIMIZATION := LOW, \ 790 CFLAGS := $(CFLAGS_JDKLIB) \ 791 $(LIBAWT_LWAWT_CFLAGS), \ 792 EXTRA_HEADER_DIRS := $(LIBAWT_LWAWT_EXTRA_HEADER_DIRS), \ 793 DISABLED_WARNINGS_clang := incomplete-implementation enum-conversion \ 794 deprecated-declarations objc-method-access bitwise-op-parentheses \ 795 incompatible-pointer-types parentheses-equality extra-tokens \ 796 sign-compare semicolon-before-method-body format-nonliteral undef \ 797 pointer-arith, \ 798 LDFLAGS := $(LDFLAGS_JDKLIB) \ 799 $(call SET_SHARED_LIBRARY_ORIGIN) \ 800 -L$(INSTALL_LIBRARIES_HERE), \ 801 LIBS := -lawt -lmlib_image -losxapp -ljvm $(LIBM) \ 802 -framework Accelerate \ 803 -framework ApplicationServices \ 804 -framework AudioToolbox \ 805 -framework Carbon \ 806 -framework Cocoa \ 807 -framework Security \ 808 -framework ExceptionHandling \ 809 -framework JavaNativeFoundation \ 810 -framework JavaRuntimeSupport \ 811 -framework OpenGL \ 812 -framework QuartzCore -ljava, \ 813 )) 814 815 TARGETS += $(BUILD_LIBAWT_LWAWT) 816 817 $(BUILD_LIBAWT_LWAWT): $(BUILD_LIBAWT) 818 819 $(BUILD_LIBAWT_LWAWT): $(BUILD_LIBMLIB_IMAGE) 820 821 $(BUILD_LIBAWT_LWAWT): $(call FindLib, $(MODULE), osxapp) 822 823 $(BUILD_LIBAWT_LWAWT): $(call FindLib, java.base, java) 824 825 endif 826 827 ################################################################################ 828 829 ifeq ($(call isTargetOs, macosx), true) 830 831 $(eval $(call SetupJdkLibrary, BUILD_LIBOSXUI, \ 832 NAME := osxui, \ 833 OPTIMIZATION := LOW, \ 834 CFLAGS := $(CFLAGS_JDKLIB), \ 835 EXTRA_HEADER_DIRS := \ 836 libawt_lwawt/awt \ 837 libosxapp, \ 838 DISABLED_WARNINGS_clang := deprecated-declarations sign-compare, \ 839 LDFLAGS := $(LDFLAGS_JDKLIB) \ 840 $(call SET_SHARED_LIBRARY_ORIGIN) \ 841 -Wl$(COMMA)-rpath$(COMMA)@loader_path \ 842 -L$(INSTALL_LIBRARIES_HERE), \ 843 LIBS := -lawt -losxapp -lawt_lwawt \ 844 -framework Cocoa \ 845 -framework Carbon \ 846 -framework ApplicationServices \ 847 -framework JavaNativeFoundation \ 848 -framework JavaRuntimeSupport \ 849 -ljava -ljvm, \ 850 )) 851 852 TARGETS += $(BUILD_LIBOSXUI) 853 854 $(BUILD_LIBOSXUI): $(BUILD_LIBAWT) 855 856 $(BUILD_LIBOSXUI): $(call FindLib, $(MODULE), osxapp) 857 858 $(BUILD_LIBOSXUI): $(BUILD_LIBAWT_LWAWT) 859 860 endif