1 # 2 # Copyright (c) 2011, 2019, 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 $(eval $(call IncludeCustomExtension, lib/Awt2dLibraries-pre.gmk)) 27 28 WIN_AWT_LIB := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libawt/awt.lib 29 30 LIBAWT_DEFAULT_HEADER_DIRS := \ 31 libawt/awt/image \ 32 libawt/awt/image/cvutils \ 33 libawt/java2d \ 34 libawt/java2d/loops \ 35 libawt/java2d/pipe \ 36 # 37 38 ################################################################################ 39 40 # We must not include java.desktop/unix/native/libmlib_image, which is only 41 # for usage by solaris-sparc in libmlib_image_v. 42 BUILD_LIBMLIB_EXCLUDE_SRC_PATTERNS := unix 43 44 BUILD_LIBMLIB_CFLAGS := -D__USE_J2D_NAMES -D__MEDIALIB_OLD_NAMES -DMLIB_NO_LIBSUNMATH 45 46 ifeq ($(OPENJDK_TARGET_CPU_BITS), 64) 47 BUILD_LIBMLIB_CFLAGS += -DMLIB_OS64BIT 48 endif 49 50 $(eval $(call SetupJdkLibrary, BUILD_LIBMLIB_IMAGE, \ 51 NAME := mlib_image, \ 52 EXTRA_SRC := common/awt/medialib, \ 53 EXCLUDE_FILES := mlib_c_ImageBlendTable.c, \ 54 EXCLUDE_SRC_PATTERNS := $(BUILD_LIBMLIB_EXCLUDE_SRC_PATTERNS), \ 55 OPTIMIZATION := HIGHEST, \ 56 CFLAGS := $(CFLAGS_JDKLIB) \ 57 $(BUILD_LIBMLIB_CFLAGS), \ 58 LDFLAGS := $(LDFLAGS_JDKLIB) \ 59 $(call SET_SHARED_LIBRARY_ORIGIN), \ 60 LIBS := $(JDKLIB_LIBS), \ 61 LIBS_unix := $(LIBM) $(LIBDL), \ 62 )) 63 64 $(BUILD_LIBMLIB_IMAGE): $(call FindLib, java.base, java) 65 66 TARGETS += $(BUILD_LIBMLIB_IMAGE) 67 68 ################################################################################ 69 70 ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH), solaris-sparc) 71 72 # libmlib_image_v is basically built from mlib_image sources, with some additions 73 # and some exclusions. 74 LIBMLIB_IMAGE_V_SRC := \ 75 libmlib_image \ 76 common/awt/medialib \ 77 # 78 79 LIBMLIB_IMAGE_V_CFLAGS := -xarch=sparcvis -D__USE_J2D_NAMES -D__MEDIALIB_OLD_NAMES \ 80 $(TOPDIR)/src/$(MODULE)/unix/native/libmlib_image/vis_$(OPENJDK_TARGET_CPU_BITS).il 81 82 ifeq ($(OPENJDK_TARGET_CPU_BITS), 64) 83 LIBMLIB_IMAGE_V_CFLAGS += -DMLIB_OS64BIT 84 endif 85 86 BUILD_LIBMLIB_IMAGE_V_EXFILES := \ 87 awt_ImagingLib.c \ 88 mlib_c_ImageAffine_BC.c \ 89 mlib_c_ImageAffine_BC_S16.c \ 90 mlib_c_ImageAffine_BC_U16.c \ 91 mlib_c_ImageAffine_BL.c \ 92 mlib_c_ImageAffine_BL_S16.c \ 93 mlib_c_ImageAffine_BL_U16.c \ 94 mlib_c_ImageAffine_NN.c \ 95 mlib_c_ImageConvClearEdge.c \ 96 mlib_c_ImageConvCopyEdge.c \ 97 mlib_c_ImageConv_f.c \ 98 mlib_c_ImageConvVersion.c \ 99 mlib_c_ImageCopy.c \ 100 mlib_c_ImageLookUp.c \ 101 mlib_c_ImageLookUp_f.c \ 102 # 103 104 $(eval $(call SetupJdkLibrary, BUILD_LIBMLIB_IMAGE_V, \ 105 NAME := mlib_image_v, \ 106 SRC := $(LIBMLIB_IMAGE_V_SRC), \ 107 EXCLUDE_FILES := $(BUILD_LIBMLIB_IMAGE_V_EXFILES), \ 108 OPTIMIZATION := HIGHEST, \ 109 CFLAGS := $(CFLAGS_JDKLIB) \ 110 $(LIBMLIB_IMAGE_V_CFLAGS), \ 111 LDFLAGS := $(LDFLAGS_JDKLIB) \ 112 $(call SET_SHARED_LIBRARY_ORIGIN), \ 113 LIBS := -ljava -ljvm $(LIBM) $(LIBDL), \ 114 )) 115 116 $(BUILD_LIBMLIB_IMAGE_V): $(call FindLib, java.base, java) 117 118 TARGETS += $(BUILD_LIBMLIB_IMAGE_V) 119 120 endif 121 122 ################################################################################ 123 124 LIBAWT_EXTRA_SRC := \ 125 common/awt/debug \ 126 $(TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \ 127 # 128 129 ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH), solaris-sparc) 130 LIBAWT_EXTRA_SRC += $(TOPDIR)/src/$(MODULE)/share/native/common/awt/medialib 131 endif 132 133 ifeq ($(OPENJDK_TARGET_OS), windows) 134 LIBAWT_EXTRA_SRC += \ 135 $(TOPDIR)/src/$(MODULE)/share/native/common/awt/utility \ 136 $(TOPDIR)/src/$(MODULE)/share/native/common/font \ 137 $(TOPDIR)/src/$(MODULE)/share/native/common/java2d/opengl \ 138 $(TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt/systemscale \ 139 # 140 endif 141 142 ifneq ($(filter $(OPENJDK_TARGET_OS), solaris linux macosx aix), ) 143 LIBAWT_EXFILES += awt_Font.c CUPSfuncs.c fontpath.c X11Color.c 144 endif 145 146 ifeq ($(OPENJDK_TARGET_OS), macosx) 147 LIBAWT_EXFILES += initIDs.c awt/image/cvutils/img_colors.c 148 endif 149 150 ifeq ($(OPENJDK_TARGET_OS), windows) 151 LIBAWT_EXFILES += \ 152 java2d/d3d/D3DShaderGen.c \ 153 awt/image/cvutils/img_colors.c \ 154 # 155 endif 156 157 ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU), solaris-sparcv9) 158 LIBAWT_EXFILES += java2d/loops/MapAccelFunc.c 159 else 160 LIBAWT_EXCLUDES += \ 161 $(TOPDIR)/src/$(MODULE)/unix/native/libawt/awt/medialib \ 162 $(TOPDIR)/src/$(MODULE)/unix/native/libawt/java2d/loops \ 163 $(TOPDIR)/src/$(MODULE)/unix/native/common/awt/medialib \ 164 # 165 endif 166 167 LIBAWT_EXTRA_HEADER_DIRS := \ 168 $(LIBAWT_DEFAULT_HEADER_DIRS) \ 169 $(call GetJavaHeaderDir, java.base) \ 170 libawt/awt/medialib \ 171 libawt/java2d/d3d \ 172 libawt/java2d/opengl \ 173 libawt/java2d/windows \ 174 libawt/windows \ 175 common/awt/medialib \ 176 libmlib_image \ 177 include \ 178 java.base:libjava \ 179 java.base:include \ 180 # 181 182 LIBAWT_CFLAGS += -D__MEDIALIB_OLD_NAMES -D__USE_J2D_NAMES $(X_CFLAGS) 183 184 ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU), solaris-sparcv9) 185 LIBAWT_CFLAGS += -xarch=sparcvis -DMLIB_ADD_SUFF \ 186 $(TOPDIR)/src/$(MODULE)/unix/native/libmlib_image/vis_$(OPENJDK_TARGET_CPU_BITS).il 187 188 LIBAWT_ASFLAGS = -P -xarch=v9a 189 endif 190 191 ifneq ($(OPENJDK_TARGET_OS), solaris) 192 LIBAWT_CFLAGS += -DMLIB_NO_LIBSUNMATH 193 endif 194 195 ifeq ($(OPENJDK_TARGET_OS), windows) 196 LIBAWT_CFLAGS += -EHsc -DUNICODE -D_UNICODE 197 ifeq ($(OPENJDK_TARGET_CPU_BITS), 64) 198 LIBAWT_CFLAGS += -DMLIB_OS64BIT 199 endif 200 201 LIBAWT_RC_FLAGS ?= -I $(TOPDIR)/src/java.base/windows/native/launcher/icons 202 LIBAWT_VERSIONINFO_RESOURCE := $(TOPDIR)/src/$(MODULE)/windows/native/libawt/windows/awt.rc 203 endif 204 205 ifeq ($(OPENJDK_TARGET_OS), linux) 206 # FIXME: This is probably not what we want to do, but keep it now for compatibility. 207 LIBAWT_CFLAGS += $(EXPORT_ALL_SYMBOLS) 208 endif 209 210 # Turn off all warnings for debug_mem.c This is needed because the specific warning 211 # about initializing a declared 'extern' cannot be turned off individually. Only 212 # applies to debug builds. 213 ifeq ($(TOOLCHAIN_TYPE), gcc) 214 BUILD_LIBAWT_debug_mem.c_CFLAGS := -w 215 # This option improves performance of MaskFill in Java2D by 20% for some gcc 216 LIBAWT_CFLAGS += -fgcse-after-reload 217 endif 218 219 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT, \ 220 NAME := awt, \ 221 EXTRA_SRC := $(LIBAWT_EXTRA_SRC), \ 222 EXCLUDES := $(LIBAWT_EXCLUDES), \ 223 EXCLUDE_FILES := $(LIBAWT_EXFILES), \ 224 OPTIMIZATION := LOW, \ 225 CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_CFLAGS), \ 226 EXTRA_HEADER_DIRS := $(LIBAWT_EXTRA_HEADER_DIRS), \ 227 DISABLED_WARNINGS_gcc := sign-compare unused-result maybe-uninitialized \ 228 format-nonliteral parentheses, \ 229 DISABLED_WARNINGS_clang := logical-op-parentheses extern-initializer, \ 230 DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE, \ 231 DISABLED_WARNINGS_microsoft := 4244 4267 4996, \ 232 ASFLAGS := $(LIBAWT_ASFLAGS), \ 233 LDFLAGS := $(LDFLAGS_JDKLIB) $(call SET_SHARED_LIBRARY_ORIGIN), \ 234 LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \ 235 LDFLAGS_windows := -delayload:user32.dll -delayload:gdi32.dll \ 236 -delayload:shell32.dll -delayload:winmm.dll \ 237 -delayload:winspool.drv -delayload:imm32.dll \ 238 -delayload:ole32.dll -delayload:comdlg32.dll \ 239 -delayload:comctl32.dll -delayload:shlwapi.dll, \ 240 LIBS_unix := -ljvm -ljava $(LIBM), \ 241 LIBS_linux := $(LIBDL), \ 242 LIBS_solaris := $(LIBDL), \ 243 LIBS_aix := $(LIBDL),\ 244 LIBS_macosx := -lmlib_image \ 245 -framework Cocoa \ 246 -framework OpenGL \ 247 -framework JavaNativeFoundation \ 248 -framework JavaRuntimeSupport \ 249 -framework ApplicationServices \ 250 -framework AudioToolbox, \ 251 LIBS_windows := kernel32.lib user32.lib gdi32.lib winspool.lib \ 252 imm32.lib ole32.lib uuid.lib shell32.lib \ 253 comdlg32.lib winmm.lib comctl32.lib shlwapi.lib \ 254 delayimp.lib jvm.lib $(WIN_JAVA_LIB) advapi32.lib, \ 255 VERSIONINFO_RESOURCE := $(LIBAWT_VERSIONINFO_RESOURCE), \ 256 RC_FLAGS := $(RC_FLAGS) $(LIBAWT_RC_FLAGS) \ 257 -D "JDK_FNAME=awt.dll" \ 258 -D "JDK_INTERNAL_NAME=awt" \ 259 -D "JDK_FTYPE=0x2L", \ 260 )) 261 262 $(BUILD_LIBAWT): $(call FindLib, java.base, java) 263 264 ifeq ($(OPENJDK_TARGET_OS), macosx) 265 $(BUILD_LIBAWT): $(BUILD_LIBMLIB_IMAGE) 266 endif 267 268 TARGETS += $(BUILD_LIBAWT) 269 270 ################################################################################ 271 272 ifeq ($(findstring $(OPENJDK_TARGET_OS), windows macosx), ) 273 ifeq ($(ENABLE_HEADLESS_ONLY), false) 274 275 LIBAWT_XAWT_EXTRA_SRC := \ 276 common/awt \ 277 common/java2d \ 278 common/font \ 279 # 280 281 LIBAWT_XAWT_EXCLUDES := medialib 282 283 LIBAWT_XAWT_EXTRA_HEADER_DIRS := \ 284 $(LIBAWT_DEFAULT_HEADER_DIRS) \ 285 libawt_xawt/awt \ 286 include \ 287 common/awt/debug \ 288 common/awt/systemscale \ 289 common/font \ 290 common/java2d/opengl \ 291 common/java2d/x11 \ 292 # 293 294 LIBAWT_XAWT_CFLAGS += -DXAWT -DXAWT_HACK \ 295 -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" \ 296 $(FONTCONFIG_CFLAGS) \ 297 $(CUPS_CFLAGS) 298 299 ifeq ($(OPENJDK_TARGET_OS), solaris) 300 LIBAWT_XAWT_CFLAGS += -DFUNCPROTO=15 301 endif 302 303 ifeq ($(OPENJDK_TARGET_OS), linux) 304 ifeq ($(DISABLE_XRENDER), true) 305 LIBAWT_XAWT_CFLAGS += -DDISABLE_XRENDER_BY_DEFAULT=true 306 endif 307 endif 308 309 LIBAWT_XAWT_LIBS := $(LIBM) -lawt -lXext -lX11 -lXrender $(LIBDL) -lXtst -lXi -ljava -ljvm 310 311 ifeq ($(OPENJDK_TARGET_OS), linux) 312 LIBAWT_XAWT_LIBS += -lpthread 313 endif 314 315 ifeq ($(TOOLCHAIN_TYPE), gcc) 316 # Turn off all warnings for the following files since they contain warnings 317 # that cannot be turned of individually. 318 # redefining a macro 319 BUILD_LIBAWT_XAWT_gtk2_interface.c_CFLAGS := -w 320 # comparison between pointer and integer 321 BUILD_LIBAWT_XAWT_awt_Font.c_CFLAGS := -w 322 # initializing a declared 'extern' 323 BUILD_LIBAWT_XAWT_debug_mem.c_CFLAGS := -w 324 endif 325 326 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_XAWT, \ 327 NAME := awt_xawt, \ 328 EXTRA_SRC := $(LIBAWT_XAWT_EXTRA_SRC), \ 329 EXTRA_HEADER_DIRS := $(LIBAWT_XAWT_EXTRA_HEADER_DIRS), \ 330 EXCLUDES := $(LIBAWT_XAWT_EXCLUDES), \ 331 OPTIMIZATION := LOW, \ 332 CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_XAWT_CFLAGS) \ 333 $(X_CFLAGS), \ 334 WARNINGS_AS_ERRORS_xlc := false, \ 335 DISABLED_WARNINGS_gcc := type-limits pointer-to-int-cast \ 336 unused-result maybe-uninitialized format \ 337 format-security int-to-pointer-cast parentheses \ 338 implicit-fallthrough, \ 339 DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE \ 340 E_ASSIGNMENT_TYPE_MISMATCH E_NON_CONST_INIT, \ 341 LDFLAGS := $(LDFLAGS_JDKLIB) \ 342 $(call SET_SHARED_LIBRARY_ORIGIN) \ 343 -L$(INSTALL_LIBRARIES_HERE), \ 344 LIBS := $(X_LIBS) $(LIBAWT_XAWT_LIBS), \ 345 )) 346 347 $(BUILD_LIBAWT_XAWT): $(call FindLib, java.base, java) 348 349 $(BUILD_LIBAWT_XAWT): $(BUILD_LIBAWT) 350 351 TARGETS += $(BUILD_LIBAWT_XAWT) 352 353 endif 354 endif 355 356 ################################################################################ 357 358 # The fast floor code loses precision. 359 LCMS_CFLAGS=-DCMS_DONT_USE_FAST_FLOOR 360 361 LCMS_CFLAGS_JDKLIB := $(filter-out -xc99=%none, $(CFLAGS_JDKLIB)) 362 363 ifeq ($(USE_EXTERNAL_LCMS), true) 364 # If we're using an external library, we'll just need the wrapper part. 365 # By including it explicitly, all other files will be excluded. 366 BUILD_LIBLCMS_INCLUDE_FILES := LCMS.c 367 # If we're using an external library, we can't include our own SRC path 368 # as includes, instead the system headers should be used. 369 LIBLCMS_HEADERS_FROM_SRC := false 370 else 371 BUILD_LIBLCMS_INCLUDE_FILES := 372 endif 373 374 ifeq ($(TOOLCHAIN_TYPE), clang) 375 ifeq ($(TOOLCHAIN_VERSION), 10.1) 376 # Work around an optimizer bug seen with Xcode 10.1, but fixed by 10.3 377 BUILD_LIBLCMS_cmsopt.c_CFLAGS := -O0 378 endif 379 endif 380 381 $(eval $(call SetupJdkLibrary, BUILD_LIBLCMS, \ 382 NAME := lcms, \ 383 INCLUDE_FILES := $(BUILD_LIBLCMS_INCLUDE_FILES), \ 384 OPTIMIZATION := HIGHEST, \ 385 CFLAGS := $(LCMS_CFLAGS_JDKLIB) \ 386 $(LCMS_CFLAGS), \ 387 CFLAGS_solaris := -xc99=no_lib, \ 388 CFLAGS_windows := -DCMS_IS_WINDOWS_, \ 389 EXTRA_HEADER_DIRS := \ 390 common/awt/debug \ 391 libawt/java2d, \ 392 HEADERS_FROM_SRC := $(LIBLCMS_HEADERS_FROM_SRC), \ 393 DISABLED_WARNINGS_gcc := format-nonliteral type-limits misleading-indentation, \ 394 DISABLED_WARNINGS_clang := tautological-compare, \ 395 DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \ 396 DISABLED_WARNINGS_microsoft := 4819, \ 397 LDFLAGS := $(LDFLAGS_JDKLIB) \ 398 $(call SET_SHARED_LIBRARY_ORIGIN), \ 399 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ 400 LIBS_unix := -lawt -ljvm -ljava $(LCMS_LIBS) $(LIBM), \ 401 LIBS_windows := $(WIN_AWT_LIB) $(WIN_JAVA_LIB), \ 402 )) 403 404 TARGETS += $(BUILD_LIBLCMS) 405 406 $(BUILD_LIBLCMS): $(BUILD_LIBAWT) 407 408 ################################################################################ 409 410 # "DISABLED_WARNINGS_gcc := clobbered" rationale: 411 # Suppress gcc warnings like "variable might be clobbered by 'longjmp' 412 # or 'vfork'": this warning indicates that some variable is placed to 413 # a register by optimized compiler and it's value might be lost on longjmp(). 414 # Recommended way to avoid such warning is to declare the variable as 415 # volatile to prevent the optimization. However, this approach does not 416 # work because we have to declare all variables as volatile in result. 417 418 ifeq ($(USE_EXTERNAL_LIBJPEG), true) 419 LIBJPEG_LIBS := -ljpeg 420 BUILD_LIBJAVAJPEG_INCLUDE_FILES := \ 421 imageioJPEG.c \ 422 jpegdecoder.c 423 # If we're using an external library, we can't include our own SRC path 424 # as includes, instead the system headers should be used. 425 LIBJPEG_HEADERS_FROM_SRC := false 426 else 427 LIBJPEG_LIBS := 428 BUILD_LIBJAVAJPEG_INCLUDE_FILES := 429 endif 430 431 $(eval $(call SetupJdkLibrary, BUILD_LIBJAVAJPEG, \ 432 NAME := javajpeg, \ 433 INCLUDE_FILES := $(BUILD_LIBJAVAJPEG_INCLUDE_FILES), \ 434 OPTIMIZATION := HIGHEST, \ 435 CFLAGS := $(CFLAGS_JDKLIB), \ 436 HEADERS_FROM_SRC := $(LIBJPEG_HEADERS_FROM_SRC), \ 437 DISABLED_WARNINGS_gcc := clobbered implicit-fallthrough shift-negative-value, \ 438 LDFLAGS := $(LDFLAGS_JDKLIB) \ 439 $(call SET_SHARED_LIBRARY_ORIGIN), \ 440 LIBS := $(LIBJPEG_LIBS) $(JDKLIB_LIBS), \ 441 LIBS_windows := $(WIN_JAVA_LIB) jvm.lib, \ 442 )) 443 444 $(BUILD_LIBJAVAJPEG): $(call FindLib, java.base, java) 445 446 TARGETS += $(BUILD_LIBJAVAJPEG) 447 448 ################################################################################ 449 450 # Mac and Windows only use the native AWT lib, do not build libawt_headless 451 ifeq ($(findstring $(OPENJDK_TARGET_OS), windows macosx),) 452 453 LIBAWT_HEADLESS_EXTRA_SRC := \ 454 common/font \ 455 common/java2d \ 456 $(TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \ 457 # 458 459 LIBAWT_HEADLESS_EXCLUDES := medialib 460 461 LIBAWT_HEADLESS_EXTRA_HEADER_DIRS := \ 462 $(LIBAWT_DEFAULT_HEADER_DIRS) \ 463 common/awt/debug \ 464 common/font \ 465 common/java2d/opengl \ 466 # 467 468 LIBAWT_HEADLESS_CFLAGS := $(CUPS_CFLAGS) $(FONTCONFIG_CFLAGS) $(X_CFLAGS) \ 469 -DHEADLESS=true -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" 470 471 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_HEADLESS, \ 472 NAME := awt_headless, \ 473 EXTRA_SRC := $(LIBAWT_HEADLESS_EXTRA_SRC), \ 474 EXCLUDES := $(LIBAWT_HEADLESS_EXCLUDES), \ 475 OPTIMIZATION := LOW, \ 476 CFLAGS := $(CFLAGS_JDKLIB) \ 477 $(LIBAWT_HEADLESS_CFLAGS), \ 478 EXTRA_HEADER_DIRS := $(LIBAWT_HEADLESS_EXTRA_HEADER_DIRS), \ 479 DISABLED_WARNINGS_xlc := 1506-356, \ 480 DISABLED_WARNINGS_solstudio := E_EMPTY_TRANSLATION_UNIT, \ 481 LDFLAGS := $(LDFLAGS_JDKLIB) \ 482 $(call SET_SHARED_LIBRARY_ORIGIN), \ 483 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ 484 LIBS_unix := -lawt -ljvm -ljava, \ 485 LIBS_linux := $(LIBM) $(LIBDL), \ 486 LIBS_solaris := $(LIBM) $(LIBDL) $(LIBCXX), \ 487 )) 488 489 # AIX warning explanation: 490 # 1506-356 : (W) Compilation unit is empty. 491 # This happens during the headless build 492 493 $(BUILD_LIBAWT_HEADLESS): $(BUILD_LIBAWT) 494 495 TARGETS += $(BUILD_LIBAWT_HEADLESS) 496 497 endif 498 499 ################################################################################ 500 501 ifeq ($(FREETYPE_TO_USE), system) 502 # For use by libfontmanager: 503 LIBFREETYPE_CFLAGS := $(FREETYPE_CFLAGS) 504 LIBFREETYPE_LIBS := $(FREETYPE_LIBS) 505 else 506 BUILD_LIBFREETYPE_HEADER_DIRS := $(TOPDIR)/src/$(MODULE)/share/native/libfreetype/include 507 BUILD_LIBFREETYPE_CFLAGS := -DFT2_BUILD_LIBRARY $(EXPORT_ALL_SYMBOLS) 508 509 # For use by libfontmanager: 510 LIBFREETYPE_CFLAGS := -I$(BUILD_LIBFREETYPE_HEADER_DIRS) 511 ifeq ($(OPENJDK_TARGET_OS), windows) 512 LIBFREETYPE_LIBS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfreetype/freetype.lib 513 # freetype now requires you to manually define this (see ftconfig.h) 514 BUILD_LIBFREETYPE_CFLAGS += -DDLL_EXPORT 515 else 516 LIBFREETYPE_LIBS := -lfreetype 517 endif 518 519 $(eval $(call SetupJdkLibrary, BUILD_LIBFREETYPE, \ 520 NAME := freetype, \ 521 OPTIMIZATION := HIGHEST, \ 522 CFLAGS := $(CFLAGS_JDKLIB) \ 523 $(BUILD_LIBFREETYPE_CFLAGS), \ 524 EXTRA_HEADER_DIRS := $(BUILD_LIBFREETYPE_HEADER_DIRS), \ 525 DISABLED_WARNINGS_solstudio := \ 526 E_STATEMENT_NOT_REACHED \ 527 E_END_OF_LOOP_CODE_NOT_REACHED, \ 528 DISABLED_WARNINGS_microsoft := 4018 4267 4244 4312 4819, \ 529 DISABLED_WARNINGS_gcc := implicit-fallthrough cast-function-type bad-function-cast, \ 530 LDFLAGS := $(LDFLAGS_JDKLIB) \ 531 $(call SET_SHARED_LIBRARY_ORIGIN), \ 532 )) 533 534 TARGETS += $(BUILD_LIBFREETYPE) 535 endif 536 537 ########################################################################### 538 539 ifeq ($(USE_EXTERNAL_HARFBUZZ), true) 540 LIBHARFBUZZ_LIBS := $(HARFBUZZ_LIBS) 541 else 542 HARFBUZZ_CFLAGS := -DHAVE_OT -DHAVE_FALLBACK -DHAVE_UCDN -DHAVE_ROUND 543 # This is better than adding EXPORT_ALL_SYMBOLS 544 ifneq ($(filter $(TOOLCHAIN_TYPE), gcc clang solstudio), ) 545 HARFBUZZ_CFLAGS += -DHB_EXTERN=__attribute__\(\(visibility\(\"default\"\)\)\) 546 else ifeq ($(TOOLCHAIN_TYPE), microsoft) 547 HARFBUZZ_CFLAGS += -DHB_EXTERN=__declspec\(dllexport\) 548 endif 549 550 LIBHARFBUZZ_LDFLAGS := $(LDFLAGS_JDKLIB) \ 551 $(call SET_SHARED_LIBRARY_ORIGIN) 552 ifeq ($(TOOLCHAIN_TYPE), gcc) 553 ifeq ($(CC_VERSION_NUMBER), 4.4.7) 554 LIBHARFBUZZ_LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \ 555 $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) \ 556 $(call SET_SHARED_LIBRARY_ORIGIN) 557 endif 558 endif 559 560 ifneq ($(OPENJDK_TARGET_OS), windows) 561 HARFBUZZ_CFLAGS += -DGETPAGESIZE -DHAVE_MPROTECT -DHAVE_PTHREAD \ 562 -DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H \ 563 -DHB_NO_PRAGMA_GCC_DIAGNOSTIC 564 endif 565 ifneq (, $(findstring $(OPENJDK_TARGET_OS), linux macosx)) 566 HARFBUZZ_CFLAGS += -DHAVE_INTEL_ATOMIC_PRIMITIVES 567 endif 568 ifeq ($(OPENJDK_TARGET_OS), solaris) 569 HARFBUZZ_CFLAGS += -DHAVE_SOLARIS_ATOMIC_OPS 570 endif 571 ifeq ($(OPENJDK_TARGET_OS), macosx) 572 HARFBUZZ_CFLAGS += -DHAVE_CORETEXT 573 endif 574 ifneq ($(OPENJDK_TARGET_OS), macosx) 575 LIBHARFBUZZ_EXCLUDE_FILES += harfbuzz/hb-coretext.cc 576 endif 577 # hb-ft.cc is not presently needed, and requires freetype 2.4.2 or later. 578 LIBHARFBUZZ_EXCLUDE_FILES += harfbuzz/hb-ft.cc 579 580 LIBHARFBUZZ_CFLAGS += $(HARFBUZZ_CFLAGS) 581 582 # For use by libfontmanager: 583 ifeq ($(OPENJDK_TARGET_OS), windows) 584 LIBHARFBUZZ_LIBS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libharfbuzz/harfbuzz.lib 585 else 586 LIBHARFBUZZ_LIBS := -lharfbuzz 587 endif 588 589 LIBHARFBUZZ_EXTRA_HEADER_DIRS := \ 590 libharfbuzz/hb-ucdn \ 591 # 592 593 LIBHARFBUZZ_OPTIMIZATION := HIGH 594 595 LIBHARFBUZZ_CFLAGS += $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS 596 597 $(eval $(call SetupJdkLibrary, BUILD_LIBHARFBUZZ, \ 598 NAME := harfbuzz, \ 599 EXCLUDE_FILES := $(LIBHARFBUZZ_EXCLUDE_FILES), \ 600 TOOLCHAIN := TOOLCHAIN_LINK_CXX, \ 601 CFLAGS := $(CFLAGS_JDKLIB) $(LIBHARFBUZZ_CFLAGS), \ 602 CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBHARFBUZZ_CFLAGS), \ 603 OPTIMIZATION := $(LIBHARFBUZZ_OPTIMIZATION), \ 604 CFLAGS_windows = -DCC_NOEX, \ 605 EXTRA_HEADER_DIRS := $(LIBHARFBUZZ_EXTRA_HEADER_DIRS), \ 606 WARNINGS_AS_ERRORS_xlc := false, \ 607 DISABLED_WARNINGS_gcc := type-limits missing-field-initializers strict-aliasing, \ 608 DISABLED_WARNINGS_CXX_gcc := reorder delete-non-virtual-dtor strict-overflow \ 609 maybe-uninitialized class-memaccess, \ 610 DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \ 611 tautological-constant-out-of-range-compare int-to-pointer-cast \ 612 undef missing-field-initializers, \ 613 DISABLED_WARNINGS_C_solstudio := \ 614 E_INTEGER_OVERFLOW_DETECTED \ 615 E_ARG_INCOMPATIBLE_WITH_ARG_L \ 616 E_ENUM_VAL_OVERFLOWS_INT_MAX, \ 617 DISABLED_WARNINGS_CXX_solstudio := \ 618 truncwarn wvarhidenmem wvarhidemem wbadlkginit identexpected \ 619 hidevf w_novirtualdescr arrowrtn2 unknownpragma, \ 620 DISABLED_WARNINGS_microsoft := 4267 4244 4090 4146 4334 4819 4101 4068 4805 4138, \ 621 LDFLAGS := $(LIBHARFBUZZ_LDFLAGS), \ 622 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ 623 LDFLAGS_aix := -Wl$(COMMA)-berok, \ 624 LIBS := $(BUILD_LIBHARFBUZZ), \ 625 LIBS_unix := $(LIBM) $(LIBCXX), \ 626 LIBS_macosx := -framework CoreText -framework CoreFoundation -framework CoreGraphics, \ 627 LIBS_windows := user32.lib, \ 628 )) 629 630 ifeq ($(FREETYPE_TO_USE), bundled) 631 $(BUILD_LIBHARFBUZZ): $(BUILD_LIBFREETYPE) 632 endif 633 634 TARGETS += $(BUILD_LIBHARFBUZZ) 635 636 endif 637 638 ########################################################################### 639 640 LIBFONTMANAGER_EXTRA_HEADER_DIRS := \ 641 libharfbuzz \ 642 common/awt \ 643 common/font \ 644 libawt/java2d \ 645 libawt/java2d/pipe \ 646 libawt/java2d/loops \ 647 # 648 649 LIBFONTMANAGER_CFLAGS += $(LIBFREETYPE_CFLAGS) $(HARFBUZZ_FLAGS) 650 BUILD_LIBFONTMANAGER_FONTLIB += $(LIBHARFBUZZ_LIBS) $(LIBFREETYPE_LIBS) 651 652 LIBFONTMANAGER_OPTIMIZATION := HIGH 653 654 ifeq ($(OPENJDK_TARGET_OS), windows) 655 LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \ 656 X11TextRenderer.c 657 LIBFONTMANAGER_OPTIMIZATION := HIGHEST 658 else ifeq ($(OPENJDK_TARGET_OS), macosx) 659 LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \ 660 X11TextRenderer.c \ 661 fontpath.c \ 662 lcdglyph.c 663 else 664 LIBFONTMANAGER_EXCLUDE_FILES += fontpath.c \ 665 lcdglyph.c 666 endif 667 668 LIBFONTMANAGER_CFLAGS += $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS 669 670 ifeq ($(TOOLCHAIN_TYPE), gcc) 671 # Turn off all warnings for sunFont.c. This is needed because the specific warning 672 # about discarding 'const' qualifier cannot be turned off individually. 673 BUILD_LIBFONTMANAGER_sunFont.c_CFLAGS := -w 674 endif 675 676 # LDFLAGS clarification: 677 # Filter relevant linker flags disallowing unresolved symbols as we cannot 678 # build-time decide to which library to link against (libawt_headless or 679 # libawt_xawt). See JDK-8196516 for details. 680 $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \ 681 NAME := fontmanager, \ 682 EXCLUDE_FILES := $(LIBFONTMANAGER_EXCLUDE_FILES) \ 683 AccelGlyphCache.c, \ 684 TOOLCHAIN := TOOLCHAIN_LINK_CXX, \ 685 CFLAGS := $(CFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \ 686 CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \ 687 OPTIMIZATION := $(LIBFONTMANAGER_OPTIMIZATION), \ 688 CFLAGS_windows = -DCC_NOEX, \ 689 EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS), \ 690 WARNINGS_AS_ERRORS_xlc := false, \ 691 DISABLED_WARNINGS_gcc := sign-compare unused-function int-to-pointer-cast, \ 692 DISABLED_WARNINGS_clang := sign-compare, \ 693 DISABLED_WARNINGS_C_solstudio := \ 694 E_INTEGER_OVERFLOW_DETECTED \ 695 E_ARG_INCOMPATIBLE_WITH_ARG_L \ 696 E_ENUM_VAL_OVERFLOWS_INT_MAX, \ 697 DISABLED_WARNINGS_CXX_solstudio := \ 698 truncwarn wvarhidenmem wvarhidemem wbadlkginit identexpected \ 699 hidevf w_novirtualdescr arrowrtn2 unknownpragma, \ 700 DISABLED_WARNINGS_microsoft := 4018 4146 4244 4996 4996 4146 4334 4819 4101 4068 4805 4138, \ 701 LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \ 702 $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \ 703 $(call SET_SHARED_LIBRARY_ORIGIN), \ 704 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ 705 LDFLAGS_aix := -Wl$(COMMA)-berok, \ 706 LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \ 707 LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \ 708 LIBS_macosx := -lawt_lwawt, \ 709 LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \ 710 $(WIN_AWT_LIB), \ 711 )) 712 713 $(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT) 714 715 ifeq ($(USE_EXTERNAL_HARFBUZZ), false) 716 $(BUILD_LIBFONTMANAGER): $(BUILD_LIBHARFBUZZ) 717 endif 718 719 ifeq ($(OPENJDK_TARGET_OS), macosx) 720 $(BUILD_LIBFONTMANAGER): $(call FindLib, $(MODULE), awt_lwawt) 721 endif 722 723 ifeq ($(FREETYPE_TO_USE), bundled) 724 $(BUILD_LIBFONTMANAGER): $(BUILD_LIBFREETYPE) 725 endif 726 727 TARGETS += $(BUILD_LIBFONTMANAGER) 728 729 ################################################################################ 730 731 ifeq ($(OPENJDK_TARGET_OS), windows) 732 733 LIBJAWT_CFLAGS := -EHsc -DUNICODE -D_UNICODE 734 735 LIBJAWT_EXTRA_HEADER_DIRS := \ 736 include \ 737 common/awt/debug \ 738 libawt/awt/image/cvutils \ 739 libawt/java2d \ 740 libawt/java2d/windows \ 741 libawt/windows \ 742 java.base:include \ 743 java.base:libjava \ 744 # 745 746 ifeq ($(OPENJDK_TARGET_CPU), x86) 747 KERNEL32_LIB := kernel32.lib 748 endif 749 750 $(eval $(call SetupJdkLibrary, BUILD_LIBJAWT, \ 751 NAME := jawt, \ 752 OPTIMIZATION := LOW, \ 753 CFLAGS := $(CXXFLAGS_JDKLIB) \ 754 $(LIBJAWT_CFLAGS), \ 755 EXTRA_HEADER_DIRS := $(LIBJAWT_EXTRA_HEADER_DIRS), \ 756 LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK), \ 757 LIBS := $(JDKLIB_LIBS) $(KERNEL32_LIB) advapi32.lib $(WIN_AWT_LIB), \ 758 )) 759 760 $(BUILD_LIBJAWT): $(BUILD_LIBAWT) 761 762 $(eval $(call SetupCopyFiles, COPY_JAWT_LIB, \ 763 FILES := $(BUILD_LIBJAWT_IMPORT_LIBRARY), \ 764 DEST := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \ 765 )) 766 767 $(COPY_JAWT_LIB): $(BUILD_LIBJAWT) 768 769 TARGETS += $(COPY_JAWT_LIB) 770 771 else # OPENJDK_TARGET_OS not windows 772 773 ifeq ($(OPENJDK_TARGET_OS), macosx) 774 # libjawt on macosx do not use the unix code 775 LIBJAWT_EXCLUDE_SRC_PATTERNS := unix 776 endif 777 778 ifeq ($(OPENJDK_TARGET_OS), macosx) 779 JAWT_LIBS := -lawt_lwawt 780 else 781 JAWT_LIBS := 782 ifneq ($(OPENJDK_TARGET_OS), solaris) 783 JAWT_LIBS += -lawt 784 endif 785 ifeq ($(ENABLE_HEADLESS_ONLY), false) 786 JAWT_LIBS += -lawt_xawt 787 else 788 JAWT_LIBS += -lawt_headless 789 ifeq ($(OPENJDK_TARGET_OS), linux) 790 JAWT_CFLAGS += -DHEADLESS 791 endif 792 endif 793 endif 794 795 $(eval $(call SetupJdkLibrary, BUILD_LIBJAWT, \ 796 NAME := jawt, \ 797 EXCLUDE_SRC_PATTERNS := $(LIBJAWT_EXCLUDE_SRC_PATTERNS), \ 798 INCLUDE_FILES := $(JAWT_FILES), \ 799 OPTIMIZATION := LOW, \ 800 CFLAGS := $(CFLAGS_JDKLIB) \ 801 $(JAWT_CFLAGS), \ 802 EXTRA_HEADER_DIRS := \ 803 include \ 804 common/awt, \ 805 LDFLAGS := $(LDFLAGS_JDKLIB) \ 806 $(call SET_SHARED_LIBRARY_ORIGIN), \ 807 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ 808 LDFLAGS_macosx := -Wl$(COMMA)-rpath$(COMMA)@loader_path, \ 809 LIBS_unix := $(JAWT_LIBS) $(JDKLIB_LIBS), \ 810 LIBS_solaris := $(X_LIBS) -lXrender, \ 811 LIBS_macosx := -framework Cocoa, \ 812 )) 813 814 ifeq ($(ENABLE_HEADLESS_ONLY), false) 815 $(BUILD_LIBJAWT): $(BUILD_LIBAWT_XAWT) 816 else 817 $(BUILD_LIBJAWT): $(call FindLib, $(MODULE), awt_headless) 818 endif 819 820 ifeq ($(OPENJDK_TARGET_OS), macosx) 821 $(BUILD_LIBJAWT): $(call FindLib, $(MODULE), awt_lwawt) 822 endif 823 824 endif # OPENJDK_TARGET_OS 825 826 TARGETS += $(BUILD_LIBJAWT) 827 828 ################################################################################ 829 830 ifeq ($(ENABLE_HEADLESS_ONLY), false) 831 832 LIBSPLASHSCREEN_EXTRA_SRC := \ 833 common/awt/systemscale \ 834 # 835 836 ifeq ($(USE_EXTERNAL_LIBGIF), false) 837 LIBSPLASHSCREEN_HEADER_DIRS += libsplashscreen/giflib 838 else 839 LIBSPLASHSCREEN_EXCLUDES := giflib 840 GIFLIB_LIBS := -lgif 841 endif 842 843 ifeq ($(USE_EXTERNAL_LIBJPEG), false) 844 # While the following ought to work, it will currently pull in the closed 845 # additions to this library, and this was not done previously in the build. 846 # LIBSPLASHSCREEN_EXTRA_SRC += libjavajpeg 847 LIBSPLASHSCREEN_EXTRA_SRC += $(TOPDIR)/src/java.desktop/share/native/libjavajpeg 848 else 849 LIBJPEG_LIBS := -ljpeg 850 endif 851 852 ifeq ($(USE_EXTERNAL_LIBPNG), false) 853 LIBSPLASHSCREEN_HEADER_DIRS += libsplashscreen/libpng 854 855 ifeq ($(OPENJDK_TARGET_OS), macosx) 856 ifeq ($(USE_EXTERNAL_LIBZ), true) 857 # When building our own libpng and using an external libz, we need to 858 # inject our own libz.h to tweak the exported ZLIB_VERNUM macro. See 859 # $(TOPDIR)/src/java.desktop/macosx/native/libsplashscreen/libpng/zlibwrapper/zlib.h 860 # for details. This must be specified with -iquote, not -I to avoid a 861 # circular include. 862 LIBSPLASHSCREEN_CFLAGS += -iquote $(TOPDIR)/src/$(MODULE)/macosx/native/libsplashscreen/libpng/zlibwrapper 863 endif 864 endif 865 else 866 LIBSPLASHSCREEN_EXCLUDES += libpng 867 endif 868 869 ifeq ($(USE_EXTERNAL_LIBZ), false) 870 LIBSPLASHSCREEN_EXTRA_SRC += java.base:libzip/zlib 871 endif 872 873 ifeq ($(OPENJDK_TARGET_OS), macosx) 874 # libsplashscreen on macosx do not use the unix code 875 LIBSPLASHSCREEN_EXCLUDE_SRC_PATTERNS := unix 876 endif 877 878 LIBSPLASHSCREEN_CFLAGS += -DSPLASHSCREEN -DPNG_NO_MMX_CODE \ 879 -DPNG_ARM_NEON_OPT=0 -DPNG_ARM_NEON_IMPLEMENTATION=0 880 881 ifeq ($(OPENJDK_TARGET_OS), macosx) 882 LIBSPLASHSCREEN_CFLAGS += -DWITH_MACOSX 883 884 BUILD_LIBSPLASHSCREEN_java_awt_SplashScreen.c_CFLAGS := -x objective-c -O0 885 BUILD_LIBSPLASHSCREEN_splashscreen_gfx_impl.c_CFLAGS := -x objective-c -O0 886 BUILD_LIBSPLASHSCREEN_splashscreen_gif.c_CFLAGS := -x objective-c -O0 887 BUILD_LIBSPLASHSCREEN_splashscreen_impl.c_CFLAGS := -x objective-c -O0 888 BUILD_LIBSPLASHSCREEN_splashscreen_jpeg.c_CFLAGS := -x objective-c -O0 889 BUILD_LIBSPLASHSCREEN_splashscreen_png.c_CFLAGS := -x objective-c -O0 890 BUILD_LIBSPLASHSCREEN_splashscreen_sys.m_CFLAGS := -O0 891 892 else ifeq ($(OPENJDK_TARGET_OS), windows) 893 LIBSPLASHSCREEN_CFLAGS += -DWITH_WIN32 894 else 895 LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS) 896 endif 897 898 LIBSPLASHSCREEN_LIBS := 899 900 ifeq ($(OPENJDK_TARGET_OS), macosx) 901 LIBSPLASHSCREEN_LIBS += \ 902 $(LIBM) -lpthread -liconv -losxapp \ 903 -framework ApplicationServices \ 904 -framework Foundation \ 905 -framework Cocoa \ 906 -framework JavaNativeFoundation 907 else ifeq ($(OPENJDK_TARGET_OS), windows) 908 LIBSPLASHSCREEN_LIBS += kernel32.lib user32.lib gdi32.lib delayimp.lib $(WIN_JAVA_LIB) jvm.lib 909 else 910 LIBSPLASHSCREEN_LIBS += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread -ldl 911 endif 912 913 LIBSPLASHSCREEN_HEADER_DIRS += \ 914 libosxapp \ 915 java.base:include \ 916 java.base:libjava \ 917 # 918 919 $(eval $(call SetupJdkLibrary, BUILD_LIBSPLASHSCREEN, \ 920 NAME := splashscreen, \ 921 EXTRA_SRC := $(LIBSPLASHSCREEN_EXTRA_SRC), \ 922 EXCLUDE_SRC_PATTERNS := $(LIBSPLASHSCREEN_EXCLUDE_SRC_PATTERNS), \ 923 EXCLUDE_FILES := imageioJPEG.c jpegdecoder.c pngtest.c, \ 924 EXCLUDES := $(LIBSPLASHSCREEN_EXCLUDES), \ 925 OPTIMIZATION := LOW, \ 926 CFLAGS := $(CFLAGS_JDKLIB) $(LIBSPLASHSCREEN_CFLAGS) \ 927 $(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(PNG_CFLAGS) $(LIBZ_CFLAGS), \ 928 EXTRA_HEADER_DIRS := $(LIBSPLASHSCREEN_HEADER_DIRS), \ 929 DISABLED_WARNINGS_gcc := sign-compare type-limits unused-result \ 930 maybe-uninitialized shift-negative-value implicit-fallthrough, \ 931 DISABLED_WARNINGS_clang := incompatible-pointer-types, \ 932 DISABLED_WARNINGS_solstudio := E_NEWLINE_NOT_LAST E_DECLARATION_IN_CODE \ 933 E_STATEMENT_NOT_REACHED, \ 934 DISABLED_WARNINGS_microsoft := 4018 4244 4267, \ 935 LDFLAGS := $(LDFLAGS_JDKLIB) \ 936 $(call SET_SHARED_LIBRARY_ORIGIN), \ 937 LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \ 938 LDFLAGS_windows := -delayload:user32.dll, \ 939 LIBS := $(JDKLIB_LIBS) $(LIBSPLASHSCREEN_LIBS) $(LIBZ_LIBS) \ 940 $(GIFLIB_LIBS) $(LIBJPEG_LIBS) $(PNG_LIBS), \ 941 LIBS_aix := -liconv, \ 942 )) 943 944 TARGETS += $(BUILD_LIBSPLASHSCREEN) 945 946 ifeq ($(OPENJDK_TARGET_OS), macosx) 947 $(BUILD_LIBSPLASHSCREEN): $(call FindLib, $(MODULE), osxapp) 948 endif 949 950 endif 951 952 ################################################################################ 953 954 ifeq ($(OPENJDK_TARGET_OS), macosx) 955 956 LIBAWT_LWAWT_EXTRA_SRC := \ 957 $(TOPDIR)/src/$(MODULE)/unix/native/common/awt \ 958 $(TOPDIR)/src/$(MODULE)/share/native/common/font \ 959 $(TOPDIR)/src/$(MODULE)/share/native/common/java2d \ 960 # 961 962 LIBAWT_LWAWT_EXTRA_HEADER_DIRS := \ 963 $(LIBAWT_DEFAULT_HEADER_DIRS) \ 964 libawt_lwawt/awt \ 965 libawt_lwawt/font \ 966 libawt_lwawt/java2d/opengl \ 967 include \ 968 common/awt/debug \ 969 common/java2d/opengl \ 970 libosxapp \ 971 # 972 973 LIBAWT_LWAWT_CFLAGS := $(X_CFLAGS) $(X_LIBS) 974 975 LIBAWT_LWAWT_EXFILES := fontpath.c awt_Font.c X11Color.c 976 LIBAWT_LWAWT_EXCLUDES := $(TOPDIR)/src/$(MODULE)/unix/native/common/awt/medialib 977 978 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_LWAWT, \ 979 NAME := awt_lwawt, \ 980 EXTRA_SRC := $(LIBAWT_LWAWT_EXTRA_SRC), \ 981 INCLUDE_FILES := $(LIBAWT_LWAWT_FILES), \ 982 EXCLUDE_FILES := $(LIBAWT_LWAWT_EXFILES), \ 983 EXCLUDES := $(LIBAWT_LWAWT_EXCLUDES), \ 984 OPTIMIZATION := LOW, \ 985 CFLAGS := $(CFLAGS_JDKLIB) \ 986 $(LIBAWT_LWAWT_CFLAGS), \ 987 EXTRA_HEADER_DIRS := $(LIBAWT_LWAWT_EXTRA_HEADER_DIRS), \ 988 DISABLED_WARNINGS_clang := incomplete-implementation enum-conversion \ 989 deprecated-declarations objc-method-access bitwise-op-parentheses \ 990 incompatible-pointer-types parentheses-equality extra-tokens, \ 991 LDFLAGS := $(LDFLAGS_JDKLIB) \ 992 $(call SET_SHARED_LIBRARY_ORIGIN) \ 993 -L$(INSTALL_LIBRARIES_HERE), \ 994 LIBS := -lawt -lmlib_image -losxapp -ljvm $(LIBM) \ 995 -framework Accelerate \ 996 -framework ApplicationServices \ 997 -framework AudioToolbox \ 998 -framework Carbon \ 999 -framework Cocoa \ 1000 -framework Security \ 1001 -framework ExceptionHandling \ 1002 -framework JavaNativeFoundation \ 1003 -framework JavaRuntimeSupport \ 1004 -framework OpenGL \ 1005 -framework QuartzCore -ljava, \ 1006 )) 1007 1008 TARGETS += $(BUILD_LIBAWT_LWAWT) 1009 1010 $(BUILD_LIBAWT_LWAWT): $(BUILD_LIBAWT) 1011 1012 $(BUILD_LIBAWT_LWAWT): $(BUILD_LIBMLIB_IMAGE) 1013 1014 $(BUILD_LIBAWT_LWAWT): $(call FindLib, $(MODULE), osxapp) 1015 1016 $(BUILD_LIBAWT_LWAWT): $(call FindLib, java.base, java) 1017 1018 endif 1019 1020 ################################################################################ 1021 1022 ifeq ($(OPENJDK_TARGET_OS), macosx) 1023 1024 $(eval $(call SetupJdkLibrary, BUILD_LIBOSXUI, \ 1025 NAME := osxui, \ 1026 OPTIMIZATION := LOW, \ 1027 CFLAGS := $(CFLAGS_JDKLIB), \ 1028 EXTRA_HEADER_DIRS := \ 1029 libawt_lwawt/awt \ 1030 libosxapp, \ 1031 DISABLED_WARNINGS_clang := deprecated-declarations, \ 1032 LDFLAGS := $(LDFLAGS_JDKLIB) \ 1033 $(call SET_SHARED_LIBRARY_ORIGIN) \ 1034 -Wl$(COMMA)-rpath$(COMMA)@loader_path \ 1035 -L$(INSTALL_LIBRARIES_HERE), \ 1036 LIBS := -lawt -losxapp -lawt_lwawt \ 1037 -framework Cocoa \ 1038 -framework Carbon \ 1039 -framework ApplicationServices \ 1040 -framework JavaNativeFoundation \ 1041 -framework JavaRuntimeSupport \ 1042 -ljava -ljvm, \ 1043 )) 1044 1045 TARGETS += $(BUILD_LIBOSXUI) 1046 1047 $(BUILD_LIBOSXUI): $(BUILD_LIBAWT) 1048 1049 $(BUILD_LIBOSXUI): $(call FindLib, $(MODULE), osxapp) 1050 1051 $(BUILD_LIBOSXUI): $(BUILD_LIBAWT_LWAWT) 1052 1053 endif 1054 1055 ################################################################################ 1056 1057 # Hook to include the corresponding custom file, if present. 1058 $(eval $(call IncludeCustomExtension, lib/Awt2dLibraries.gmk))