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