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 ################################################################################
31
32 BUILD_LIBMLIB_SRC := $(TOPDIR)/src/java.desktop/share/native/libmlib_image \
33 $(TOPDIR)/src/java.desktop/share/native/common/awt/medialib
34 BUILD_LIBMLIB_CFLAGS := -D__USE_J2D_NAMES -D__MEDIALIB_OLD_NAMES \
35 $(addprefix -I, $(BUILD_LIBMLIB_SRC)) \
36 -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libmlib_image
37
38 BUILD_LIBMLIB_LDLIBS :=
39 BUILD_LIBMLIB_IMAGE_MAPFILE := $(TOPDIR)/make/mapfiles/libmlib_image/mapfile-vers
40
41 BUILD_LIBMLIB_CFLAGS += -DMLIB_NO_LIBSUNMATH
42
43 ifeq ($(OPENJDK_TARGET_CPU_BITS), 64)
44 BUILD_LIBMLIB_CFLAGS += -DMLIB_OS64BIT
45 endif
46
47 ifneq ($(OPENJDK_TARGET_OS), windows)
48 BUILD_LIBMLIB_LDLIBS += $(LIBM) $(LIBDL)
49 endif
50
51 $(eval $(call SetupJdkLibrary, BUILD_LIBMLIB_IMAGE, \
52 NAME := mlib_image, \
53 SRC := $(BUILD_LIBMLIB_SRC), \
54 EXCLUDE_FILES := mlib_c_ImageBlendTable.c, \
55 OPTIMIZATION := HIGHEST, \
56 CFLAGS := $(CFLAGS_JDKLIB) \
57 $(BUILD_LIBMLIB_CFLAGS), \
58 MAPFILE := $(BUILD_LIBMLIB_IMAGE_MAPFILE), \
59 LDFLAGS := $(LDFLAGS_JDKLIB) \
60 $(call SET_SHARED_LIBRARY_ORIGIN), \
61 LIBS := $(BUILD_LIBMLIB_LDLIBS) \
62 $(JDKLIB_LIBS), \
63 ))
64
65 $(BUILD_LIBMLIB_IMAGE): $(call FindLib, java.base, java)
66
67 TARGETS += $(BUILD_LIBMLIB_IMAGE)
68
69 ################################################################################
70
71 ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH), solaris-sparc)
72
73 LIBMLIB_IMAGE_V_SRC := $(TOPDIR)/src/java.desktop/share/native/libmlib_image \
74 $(TOPDIR)/src/java.desktop/unix/native/libmlib_image \
75 $(TOPDIR)/src/java.desktop/share/native/common/awt/medialib \
76 $(TOPDIR)/src/java.desktop/unix/native/common/awt/medialib \
77 #
78 LIBMLIB_IMAGE_V_CFLAGS := $(TOPDIR)/src/java.desktop/unix/native/libmlib_image/vis_$(OPENJDK_TARGET_CPU_BITS).il \
90 mlib_c_ImageAffine_NN.c \
91 mlib_c_ImageConvClearEdge.c \
92 mlib_c_ImageConvCopyEdge.c \
93 mlib_c_ImageConv_f.c \
94 mlib_c_ImageConvVersion.c \
95 mlib_c_ImageCopy.c \
96 mlib_c_ImageLookUp.c \
97 mlib_c_ImageLookUp_f.c \
98 #
99
100 LIBMLIB_IMAGE_V_CFLAGS += $(filter-out -DMLIB_NO_LIBSUNMATH, $(BUILD_LIBMLIB_CFLAGS))
101
102 $(eval $(call SetupJdkLibrary, BUILD_LIBMLIB_IMAGE_V, \
103 NAME := mlib_image_v, \
104 SRC := $(LIBMLIB_IMAGE_V_SRC), \
105 EXCLUDE_FILES := $(BUILD_LIBMLIB_IMAGE_V_EXFILES), \
106 OPTIMIZATION := HIGHEST, \
107 CFLAGS := -xarch=sparcvis \
108 $(LIBMLIB_IMAGE_V_CFLAGS) \
109 $(CFLAGS_JDKLIB), \
110 MAPFILE := $(BUILD_LIBMLIB_IMAGE_MAPFILE), \
111 LDFLAGS := $(LDFLAGS_JDKLIB) \
112 $(call SET_SHARED_LIBRARY_ORIGIN), \
113 LIBS := -ljava -ljvm $(BUILD_LIBMLIB_LDLIBS), \
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_DIRS := $(TOPDIR)/src/java.desktop/share/native/libawt \
125 $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt \
126 $(TOPDIR)/src/java.desktop/share/native/common/awt/debug \
127 $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
128 #
129
130 ifeq ($(OPENJDK_TARGET_OS), aix)
185 -I$(TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \
186 -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/opengl \
187 -I$(TOPDIR)/src/java.desktop/windows/native/include \
188 -I$(TOPDIR)/src/java.desktop/share/native/include \
189 -I$(SUPPORT_OUTPUTDIR)/headers/java.base \
190 #
191 LIBAWT_EXFILES += \
192 java2d/d3d/D3DShaderGen.c \
193 awt/image/cvutils/img_colors.c \
194 #
195
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/java.desktop/windows/native/libawt/windows/awt.rc
203 endif
204
205 LIBAWT_MAPFILE := $(TOPDIR)/make/mapfiles/libawt/mapfile-vers
206 ifeq ($(OPENJDK_TARGET_OS), linux)
207 LIBAWT_MAPFILE :=
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 SRC := $(LIBAWT_DIRS), \
222 EXCLUDES := $(LIBAWT_EXCLUDES), \
223 EXCLUDE_FILES := $(LIBAWT_EXFILES), \
224 OPTIMIZATION := LOW, \
225 CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_CFLAGS), \
226 DISABLED_WARNINGS_gcc := sign-compare unused-result maybe-uninitialized \
227 format-nonliteral parentheses, \
228 DISABLED_WARNINGS_clang := logical-op-parentheses extern-initializer, \
229 DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE, \
230 DISABLED_WARNINGS_microsoft := 4297 4244 4267 4996, \
231 ASFLAGS := $(LIBAWT_ASFLAGS), \
232 MAPFILE := $(LIBAWT_MAPFILE), \
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 \
332 # comparison between pointer and integer
333 BUILD_LIBAWT_XAWT_awt_Font.c_CFLAGS := -w
334 # initializing a declared 'extern'
335 BUILD_LIBAWT_XAWT_debug_mem.c_CFLAGS := -w
336 endif
337
338 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_XAWT, \
339 NAME := awt_xawt, \
340 SRC := $(LIBAWT_XAWT_DIRS), \
341 EXCLUDES := $(LIBAWT_XAWT_EXCLUDES), \
342 OPTIMIZATION := LOW, \
343 CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_XAWT_CFLAGS) \
344 $(X_CFLAGS), \
345 WARNINGS_AS_ERRORS_xlc := false, \
346 DISABLED_WARNINGS_gcc := type-limits pointer-to-int-cast \
347 unused-result maybe-uninitialized format \
348 format-security int-to-pointer-cast parentheses \
349 implicit-fallthrough, \
350 DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE \
351 E_ASSIGNMENT_TYPE_MISMATCH E_NON_CONST_INIT, \
352 MAPFILE := $(TOPDIR)/make/mapfiles/libawt_xawt/mapfile-vers, \
353 LDFLAGS := $(LDFLAGS_JDKLIB) \
354 $(call SET_SHARED_LIBRARY_ORIGIN) \
355 -L$(INSTALL_LIBRARIES_HERE), \
356 LIBS := $(X_LIBS) $(LIBAWT_XAWT_LIBS), \
357 RC_FLAGS := $(RC_FLAGS) \
358 -D "JDK_FNAME=xawt.dll" \
359 -D "JDK_INTERNAL_NAME=xawt" \
360 -D "JDK_FTYPE=0x2L", \
361 ))
362
363 $(BUILD_LIBAWT_XAWT): $(call FindLib, java.base, java)
364
365 $(BUILD_LIBAWT_XAWT): $(BUILD_LIBAWT)
366
367 TARGETS += $(BUILD_LIBAWT_XAWT)
368
369 endif
370 endif
371
372 ################################################################################
388 BUILD_LIBLCMS_INCLUDE_FILES :=
389 # If we're using the bundled library, we'll need to include it in the
390 # include path explicitly. Otherwise the system headers will be used.
391 LIBLCMS_CPPFLAGS += $(addprefix -I, $(LIBLCMS_SRC))
392 endif
393
394 $(eval $(call SetupJdkLibrary, BUILD_LIBLCMS, \
395 NAME := lcms, \
396 SRC := $(LIBLCMS_SRC), \
397 INCLUDE_FILES := $(BUILD_LIBLCMS_INCLUDE_FILES), \
398 OPTIMIZATION := HIGHEST, \
399 CFLAGS := $(filter-out -xc99=%none, $(CFLAGS_JDKLIB)) \
400 $(LIBLCMS_CPPFLAGS) \
401 $(LCMS_CFLAGS), \
402 CFLAGS_solaris := -xc99=no_lib, \
403 CFLAGS_windows := -DCMS_IS_WINDOWS_, \
404 DISABLED_WARNINGS_gcc := format-nonliteral type-limits misleading-indentation, \
405 DISABLED_WARNINGS_clang := tautological-compare, \
406 DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \
407 DISABLED_WARNINGS_microsoft := 4819, \
408 MAPFILE := $(TOPDIR)/make/mapfiles/liblcms/mapfile-vers, \
409 LDFLAGS := $(LDFLAGS_JDKLIB) \
410 $(call SET_SHARED_LIBRARY_ORIGIN), \
411 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
412 LDFLAGS_solaris := /usr/lib$(OPENJDK_TARGET_CPU_ISADIR)/libm.so.2, \
413 LIBS_unix := -lawt -ljvm -ljava $(LCMS_LIBS), \
414 LIBS_linux := $(LIBM), \
415 LIBS_macosx := $(LIBM), \
416 LIBS_aix := $(LIBM),\
417 LIBS_windows := $(WIN_AWT_LIB) $(WIN_JAVA_LIB), \
418 ))
419
420 TARGETS += $(BUILD_LIBLCMS)
421
422 $(BUILD_LIBLCMS): $(BUILD_LIBAWT)
423
424 ################################################################################
425
426 LIBJAVAJPEG_SRC += $(TOPDIR)/src/java.desktop/share/native/libjavajpeg
427
428 BUILD_LIBJAVAJPEG_REORDER :=
429 ifeq ($(OPENJDK_TARGET_OS), solaris)
430 ifneq ($(OPENJDK_TARGET_CPU), x86_64)
431 BUILD_LIBJAVAJPEG_REORDER := $(TOPDIR)/make/mapfiles/libjpeg/reorder-$(OPENJDK_TARGET_CPU)
432 endif
433 endif
434
435
436 # Suppress gcc warnings like "variable might be clobbered by 'longjmp'
437 # or 'vfork'": this warning indicates that some variable is placed to
438 # a register by optimized compiler and it's value might be lost on longjmp().
439 # Recommended way to avoid such warning is to declare the variable as
440 # volatile to prevent the optimization. However, this approach does not
441 # work because we have to declare all variables as volatile in result.
442 #ifndef CROSS_COMPILE_ARCH
443 # CC_43_OR_NEWER := \
444 # $(shell $(EXPR) $(CC_MAJORVER) \> 4 \| \
445 # \( $(CC_MAJORVER) = 4 \& $(CC_MINORVER) \>= 3 \) )
446 # ifeq ($(CC_43_OR_NEWER), 1)
447 # BUILD_LIBJAVAJPEG_CFLAGS_linux += -Wno-clobbered
448 # endif
449 #endif
450
451 ifeq ($(USE_EXTERNAL_LIBJPEG), true)
452 LIBJPEG_LIBS := -ljpeg
453 BUILD_LIBJAVAJPEG_INCLUDE_FILES := \
454 imageioJPEG.c \
455 jpegdecoder.c
456 BUILD_LIBJAVAJPEG_HEADERS :=
457 else
458 LIBJPEG_LIBS :=
459 BUILD_LIBJAVAJPEG_INCLUDE_FILES :=
460 BUILD_LIBJAVAJPEG_HEADERS := $(addprefix -I, $(LIBJAVAJPEG_SRC))
461 endif
462
463 $(eval $(call SetupJdkLibrary, BUILD_LIBJAVAJPEG, \
464 NAME := javajpeg, \
465 SRC := $(LIBJAVAJPEG_SRC), \
466 INCLUDE_FILES := $(BUILD_LIBJAVAJPEG_INCLUDE_FILES), \
467 OPTIMIZATION := HIGHEST, \
468 CFLAGS := $(CFLAGS_JDKLIB) $(BUILD_LIBJAVAJPEG_HEADERS) \
469 $(LIBJAVA_HEADER_FLAGS) \
470 -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop, \
471 DISABLED_WARNINGS_gcc := clobbered implicit-fallthrough shift-negative-value, \
472 MAPFILE := $(TOPDIR)/make/mapfiles/libjpeg/mapfile-vers, \
473 LDFLAGS := $(LDFLAGS_JDKLIB) \
474 $(call SET_SHARED_LIBRARY_ORIGIN), \
475 LIBS := $(LIBJPEG_LIBS) $(JDKLIB_LIBS), \
476 LIBS_windows := $(WIN_JAVA_LIB) jvm.lib, \
477 REORDER := $(BUILD_LIBJAVAJPEG_REORDER), \
478 ))
479
480 $(BUILD_LIBJAVAJPEG): $(call FindLib, java.base, java)
481
482 TARGETS += $(BUILD_LIBJAVAJPEG)
483
484 ################################################################################
485
486 # Mac and Windows only use the native AWT lib, do not build libawt_headless
487 ifeq ($(findstring $(OPENJDK_TARGET_OS), windows macosx),)
488
489 LIBAWT_HEADLESS_DIRS := $(TOPDIR)/src/java.desktop/unix/native/libawt_headless/awt \
490 $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
491 $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d \
492 $(TOPDIR)/src/java.desktop/share/native/common/java2d \
493 $(TOPDIR)/src/java.desktop/share/native/common/font \
494 #
495
496 LIBAWT_HEADLESS_EXCLUDES := medialib
497 LIBAWT_HEADLESS_CFLAGS := -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \
498 $(addprefix -I, $(LIBAWT_HEADLESS_DIRS)) \
499 -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image \
500 -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
501 -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d \
502 -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d \
503 -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d/loops \
504 -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d/pipe \
505 -I$(TOPDIR)/src/java.desktop/share/native/common/awt/debug \
506 -I$(TOPDIR)/src/java.desktop/share/native/common/font \
507 -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/font \
508 -I$(TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \
509 -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/opengl \
510 $(LIBJAVA_HEADER_FLAGS) \
511 #
512
513 LIBAWT_HEADLESS_REORDER :=
514 ifeq ($(OPENJDK_TARGET_OS), solaris)
515 ifneq ($(OPENJDK_TARGET_CPU), x86_64)
516 LIBAWT_HEADLESS_REORDER := $(TOPDIR)/make/mapfiles/libawt_headless/reorder-$(OPENJDK_TARGET_CPU)
517 endif
518 endif
519
520 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_HEADLESS, \
521 NAME := awt_headless, \
522 SRC := $(LIBAWT_HEADLESS_DIRS), \
523 EXCLUDES := $(LIBAWT_HEADLESS_EXCLUDES), \
524 OPTIMIZATION := LOW, \
525 CFLAGS := $(CFLAGS_JDKLIB) \
526 -DHEADLESS=true \
527 -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" \
528 $(CUPS_CFLAGS) \
529 $(FONTCONFIG_CFLAGS) \
530 $(X_CFLAGS) \
531 $(LIBAWT_HEADLESS_CFLAGS), \
532 DISABLED_WARNINGS_xlc := 1506-356, \
533 DISABLED_WARNINGS_solstudio := E_EMPTY_TRANSLATION_UNIT, \
534 MAPFILE := $(TOPDIR)/make/mapfiles/libawt_headless/mapfile-vers, \
535 LDFLAGS := $(LDFLAGS_JDKLIB) \
536 $(call SET_SHARED_LIBRARY_ORIGIN), \
537 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
538 REORDER := $(LIBAWT_HEADLESS_REORDER), \
539 LIBS_unix := -lawt -ljvm -ljava, \
540 LIBS_linux := $(LIBM) $(LIBDL), \
541 LIBS_solaris := $(LIBM) $(LIBDL) $(LIBCXX), \
542 ))
543
544 # AIX warning explanation:
545 # 1506-356 : (W) Compilation unit is empty.
546 # This happens during the headless build
547
548 $(BUILD_LIBAWT_HEADLESS): $(BUILD_LIBAWT)
549
550 TARGETS += $(BUILD_LIBAWT_HEADLESS)
551
552 endif
553
554 ################################################################################
555
556 ifeq ($(FREETYPE_TO_USE), system)
557 LIBFREETYPE_CFLAGS := $(FREETYPE_CFLAGS)
558 LIBFREETYPE_LIBS := $(FREETYPE_LIBS)
559 else
560 LIBFREETYPE_SRC := $(TOPDIR)/src/java.desktop/share/native/libfreetype
561 BUILD_LIBFREETYPE_HEADERS := $(addprefix -I, $(LIBFREETYPE_SRC)/include)
562 LIBFREETYPE_CFLAGS := $(BUILD_LIBFREETYPE_HEADERS)
563 ifeq ($(OPENJDK_TARGET_OS), windows)
564 LIBFREETYPE_LIBS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfreetype/freetype.lib
565 else
566 LIBFREETYPE_LIBS := -lfreetype
567 endif
568
569 $(eval $(call SetupJdkLibrary, BUILD_LIBFREETYPE, \
570 NAME := freetype, \
571 SRC := $(LIBFREETYPE_SRC)/src, \
572 OPTIMIZATION := HIGHEST, \
573 CFLAGS := $(CFLAGS_JDKLIB) $(BUILD_LIBFREETYPE_HEADERS) \
574 -DFT2_BUILD_LIBRARY, \
575 DISABLED_WARNINGS_solstudio := \
576 E_STATEMENT_NOT_REACHED \
577 E_END_OF_LOOP_CODE_NOT_REACHED, \
578 DISABLED_WARNINGS_microsoft := 4267 2220 4244, \
579 LDFLAGS := $(LDFLAGS_JDKLIB) \
580 $(call SET_SHARED_LIBRARY_ORIGIN), \
581 ))
582
583 TARGETS += $(BUILD_LIBFREETYPE)
584 endif
585
586 ###########################################################################
587
588 LIBFONTMANAGER_SRC := $(TOPDIR)/src/java.desktop/share/native/libfontmanager \
589 $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libfontmanager
590 LIBFONTMANAGER_CFLAGS := \
591 $(addprefix -I, $(shell $(FIND) \
592 $(LIBFONTMANAGER_SRC) \
593 $(TOPDIR)/src/java.desktop/share/native/libawt \
594 $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt \
609 ifneq (, $(findstring $(OPENJDK_TARGET_OS), linux macosx))
610 HARFBUZZ_CFLAGS += -DHAVE_INTEL_ATOMIC_PRIMITIVES
611 endif
612 ifeq ($(OPENJDK_TARGET_OS), solaris)
613 HARFBUZZ_CFLAGS += -DHAVE_SOLARIS_ATOMIC_OPS
614 endif
615 ifeq ($(OPENJDK_TARGET_OS), macosx)
616 HARFBUZZ_CFLAGS += -DHAVE_CORETEXT
617 endif
618 ifneq ($(OPENJDK_TARGET_OS), macosx)
619 LIBFONTMANAGER_EXCLUDE_FILES += harfbuzz/hb-coretext.cc
620 endif
621 # hb-ft.cc is not presently needed, and requires freetype 2.4.2 or later.
622 LIBFONTMANAGER_EXCLUDE_FILES += harfbuzz/hb-ft.cc
623
624 LIBFONTMANAGER_CFLAGS += $(HARFBUZZ_CFLAGS)
625
626 #### End harfbuzz configuration
627
628 LIBFONTMANAGER_CFLAGS += $(LIBFREETYPE_CFLAGS)
629 # This may be overridden in a custom makefile
630 BUILD_LIBFONTMANAGER_MAPFILE ?= $(TOPDIR)/make/mapfiles/libfontmanager/mapfile-vers
631 BUILD_LIBFONTMANAGER_FONTLIB += $(LIBFREETYPE_LIBS)
632
633 LIBFONTMANAGER_OPTIMIZATION := HIGH
634
635 ifeq ($(OPENJDK_TARGET_OS), windows)
636 LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
637 X11TextRenderer.c
638 LIBFONTMANAGER_OPTIMIZATION := HIGHEST
639 LIBFONTMANAGER_CFLAGS += -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/windows
640 else ifeq ($(OPENJDK_TARGET_OS), macosx)
641 LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
642 X11TextRenderer.c \
643 fontpath.c \
644 lcdglyph.c
645 else
646 LIBFONTMANAGER_EXCLUDE_FILES += fontpath.c \
647 lcdglyph.c
648 endif
649
650 LIBFONTMANAGER_CFLAGS += $(FONT_HEADERS) $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS
665 TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
666 CFLAGS := $(CFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \
667 CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \
668 OPTIMIZATION := $(LIBFONTMANAGER_OPTIMIZATION), \
669 CFLAGS_windows = -DCC_NOEX, \
670 WARNINGS_AS_ERRORS_xlc := false, \
671 DISABLED_WARNINGS_gcc := sign-compare int-to-pointer-cast \
672 type-limits missing-field-initializers implicit-fallthrough, \
673 DISABLED_WARNINGS_CXX_gcc := reorder delete-non-virtual-dtor strict-overflow \
674 maybe-uninitialized, \
675 DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \
676 tautological-constant-out-of-range-compare int-to-pointer-cast, \
677 DISABLED_WARNINGS_C_solstudio = \
678 E_INTEGER_OVERFLOW_DETECTED \
679 E_ARG_INCOMPATIBLE_WITH_ARG_L \
680 E_ENUM_VAL_OVERFLOWS_INT_MAX, \
681 DISABLED_WARNINGS_CXX_solstudio := \
682 truncwarn wvarhidenmem wvarhidemem wbadlkginit identexpected \
683 hidevf w_novirtualdescr arrowrtn2, \
684 DISABLED_WARNINGS_microsoft := 4267 4244 4018 4090 4996 4146 4334 4819 4101, \
685 MAPFILE := $(BUILD_LIBFONTMANAGER_MAPFILE), \
686 LDFLAGS := $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \
687 $(call SET_SHARED_LIBRARY_ORIGIN), \
688 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
689 LDFLAGS_macosx := -undefined dynamic_lookup, \
690 LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \
691 LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \
692 LIBS_aix := -lawt_headless,\
693 LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \
694 $(WIN_AWT_LIB), \
695 ))
696
697 $(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT)
698
699 ifneq (, $(findstring $(OPENJDK_TARGET_OS), solaris aix))
700 $(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT_HEADLESS)
701 endif
702
703 ifeq ($(FREETYPE_TO_USE), bundled)
704 $(BUILD_LIBFONTMANAGER): $(BUILD_LIBFREETYPE)
705 endif
769 ifneq ($(OPENJDK_TARGET_OS), solaris)
770 JAWT_LIBS += -lawt
771 endif
772 ifeq ($(ENABLE_HEADLESS_ONLY), false)
773 JAWT_LIBS += -lawt_xawt
774 else
775 JAWT_LIBS += -lawt_headless
776 HEADLESS_CFLAG += -DHEADLESS
777 endif
778 endif
779
780 $(eval $(call SetupJdkLibrary, BUILD_LIBJAWT, \
781 NAME := jawt, \
782 SRC := $(LIBJAWT_SRC), \
783 INCLUDE_FILES := $(JAWT_FILES), \
784 OPTIMIZATION := LOW, \
785 CFLAGS := $(CFLAGS_JDKLIB) \
786 $(LIBJAWT_CFLAGS), \
787 CFLAGS_linux := $(HEADLESS_CFLAG), \
788 CFLAGS_macosx := $(LIBJAWT_CFLAGS_macosx), \
789 MAPFILE := $(TOPDIR)/make/mapfiles/libjawt/mapfile-vers, \
790 LDFLAGS := $(LDFLAGS_JDKLIB) \
791 $(call SET_SHARED_LIBRARY_ORIGIN), \
792 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
793 LDFLAGS_macosx := -Wl$(COMMA)-rpath$(COMMA)@loader_path, \
794 LIBS_unix := $(JAWT_LIBS) $(JDKLIB_LIBS), \
795 LIBS_solaris := $(X_LIBS) -lXrender, \
796 LIBS_macosx := -framework Cocoa, \
797 ))
798
799 ifeq ($(ENABLE_HEADLESS_ONLY), false)
800 $(BUILD_LIBJAWT): $(BUILD_LIBAWT_XAWT)
801 else
802 $(BUILD_LIBJAWT): $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)awt_headless$(SHARED_LIBRARY_SUFFIX)
803 endif
804
805 ifeq ($(OPENJDK_TARGET_OS), macosx)
806 $(BUILD_LIBJAWT): $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)awt_lwawt$(SHARED_LIBRARY_SUFFIX)
807 endif
808
809 endif # OPENJDK_TARGET_OS
901 else ifeq ($(OPENJDK_TARGET_OS), windows)
902 LIBSPLASHSCREEN_LIBS += kernel32.lib user32.lib gdi32.lib delayimp.lib $(WIN_JAVA_LIB) jvm.lib
903 else
904 LIBSPLASHSCREEN_LIBS += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread -ldl
905 endif
906
907 $(eval $(call SetupJdkLibrary, BUILD_LIBSPLASHSCREEN, \
908 NAME := splashscreen, \
909 SRC := $(LIBSPLASHSCREEN_DIRS), \
910 EXCLUDE_FILES := imageioJPEG.c jpegdecoder.c pngtest.c, \
911 EXCLUDES := $(LIBSPLASHSCREEN_EXCLUDES), \
912 OPTIMIZATION := LOW, \
913 CFLAGS := $(LIBSPLASHSCREEN_CFLAGS) $(CFLAGS_JDKLIB) \
914 $(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(PNG_CFLAGS) $(LIBZ_CFLAGS), \
915 DISABLED_WARNINGS_gcc := sign-compare type-limits unused-result \
916 maybe-uninitialized shift-negative-value implicit-fallthrough, \
917 DISABLED_WARNINGS_clang := incompatible-pointer-types, \
918 DISABLED_WARNINGS_solstudio := E_NEWLINE_NOT_LAST E_DECLARATION_IN_CODE \
919 E_STATEMENT_NOT_REACHED, \
920 DISABLED_WARNINGS_microsoft := 4018 4244 4267, \
921 MAPFILE := $(TOPDIR)/make/mapfiles/libsplashscreen/mapfile-vers, \
922 LDFLAGS := $(LDFLAGS_JDKLIB) \
923 $(call SET_SHARED_LIBRARY_ORIGIN), \
924 LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \
925 LDFLAGS_windows := -delayload:user32.dll, \
926 LIBS := $(JDKLIB_LIBS) $(LIBSPLASHSCREEN_LIBS) $(LIBZ_LIBS) \
927 $(GIFLIB_LIBS) $(LIBJPEG_LIBS) $(PNG_LIBS), \
928 LIBS_aix := -liconv, \
929 ))
930
931 TARGETS += $(BUILD_LIBSPLASHSCREEN)
932
933 ifeq ($(OPENJDK_TARGET_OS), macosx)
934 $(BUILD_LIBSPLASHSCREEN): $(call FindLib, java.desktop, osxapp)
935 endif
936
937 endif
938
939 ################################################################################
940
941 ifeq ($(OPENJDK_TARGET_OS), macosx)
|
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 ################################################################################
31
32 BUILD_LIBMLIB_SRC := $(TOPDIR)/src/java.desktop/share/native/libmlib_image \
33 $(TOPDIR)/src/java.desktop/share/native/common/awt/medialib
34 BUILD_LIBMLIB_CFLAGS := -D__USE_J2D_NAMES -D__MEDIALIB_OLD_NAMES \
35 $(addprefix -I, $(BUILD_LIBMLIB_SRC)) \
36 -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libmlib_image
37
38 BUILD_LIBMLIB_LDLIBS :=
39
40 BUILD_LIBMLIB_CFLAGS += -DMLIB_NO_LIBSUNMATH
41
42 ifeq ($(OPENJDK_TARGET_CPU_BITS), 64)
43 BUILD_LIBMLIB_CFLAGS += -DMLIB_OS64BIT
44 endif
45
46 ifneq ($(OPENJDK_TARGET_OS), windows)
47 BUILD_LIBMLIB_LDLIBS += $(LIBM) $(LIBDL)
48 endif
49
50 $(eval $(call SetupJdkLibrary, BUILD_LIBMLIB_IMAGE, \
51 NAME := mlib_image, \
52 SRC := $(BUILD_LIBMLIB_SRC), \
53 EXCLUDE_FILES := mlib_c_ImageBlendTable.c, \
54 OPTIMIZATION := HIGHEST, \
55 CFLAGS := $(CFLAGS_JDKLIB) \
56 $(BUILD_LIBMLIB_CFLAGS), \
57 LDFLAGS := $(LDFLAGS_JDKLIB) \
58 $(call SET_SHARED_LIBRARY_ORIGIN), \
59 LIBS := $(BUILD_LIBMLIB_LDLIBS) \
60 $(JDKLIB_LIBS), \
61 ))
62
63 $(BUILD_LIBMLIB_IMAGE): $(call FindLib, java.base, java)
64
65 TARGETS += $(BUILD_LIBMLIB_IMAGE)
66
67 ################################################################################
68
69 ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH), solaris-sparc)
70
71 LIBMLIB_IMAGE_V_SRC := $(TOPDIR)/src/java.desktop/share/native/libmlib_image \
72 $(TOPDIR)/src/java.desktop/unix/native/libmlib_image \
73 $(TOPDIR)/src/java.desktop/share/native/common/awt/medialib \
74 $(TOPDIR)/src/java.desktop/unix/native/common/awt/medialib \
75 #
76 LIBMLIB_IMAGE_V_CFLAGS := $(TOPDIR)/src/java.desktop/unix/native/libmlib_image/vis_$(OPENJDK_TARGET_CPU_BITS).il \
88 mlib_c_ImageAffine_NN.c \
89 mlib_c_ImageConvClearEdge.c \
90 mlib_c_ImageConvCopyEdge.c \
91 mlib_c_ImageConv_f.c \
92 mlib_c_ImageConvVersion.c \
93 mlib_c_ImageCopy.c \
94 mlib_c_ImageLookUp.c \
95 mlib_c_ImageLookUp_f.c \
96 #
97
98 LIBMLIB_IMAGE_V_CFLAGS += $(filter-out -DMLIB_NO_LIBSUNMATH, $(BUILD_LIBMLIB_CFLAGS))
99
100 $(eval $(call SetupJdkLibrary, BUILD_LIBMLIB_IMAGE_V, \
101 NAME := mlib_image_v, \
102 SRC := $(LIBMLIB_IMAGE_V_SRC), \
103 EXCLUDE_FILES := $(BUILD_LIBMLIB_IMAGE_V_EXFILES), \
104 OPTIMIZATION := HIGHEST, \
105 CFLAGS := -xarch=sparcvis \
106 $(LIBMLIB_IMAGE_V_CFLAGS) \
107 $(CFLAGS_JDKLIB), \
108 LDFLAGS := $(LDFLAGS_JDKLIB) \
109 $(call SET_SHARED_LIBRARY_ORIGIN), \
110 LIBS := -ljava -ljvm $(BUILD_LIBMLIB_LDLIBS), \
111 ))
112
113 $(BUILD_LIBMLIB_IMAGE_V): $(call FindLib, java.base, java)
114
115 TARGETS += $(BUILD_LIBMLIB_IMAGE_V)
116
117 endif
118
119 ################################################################################
120
121 LIBAWT_DIRS := $(TOPDIR)/src/java.desktop/share/native/libawt \
122 $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt \
123 $(TOPDIR)/src/java.desktop/share/native/common/awt/debug \
124 $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
125 #
126
127 ifeq ($(OPENJDK_TARGET_OS), aix)
182 -I$(TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \
183 -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/opengl \
184 -I$(TOPDIR)/src/java.desktop/windows/native/include \
185 -I$(TOPDIR)/src/java.desktop/share/native/include \
186 -I$(SUPPORT_OUTPUTDIR)/headers/java.base \
187 #
188 LIBAWT_EXFILES += \
189 java2d/d3d/D3DShaderGen.c \
190 awt/image/cvutils/img_colors.c \
191 #
192
193 LIBAWT_CFLAGS += -EHsc -DUNICODE -D_UNICODE
194 ifeq ($(OPENJDK_TARGET_CPU_BITS), 64)
195 LIBAWT_CFLAGS += -DMLIB_OS64BIT
196 endif
197
198 LIBAWT_RC_FLAGS ?= -I $(TOPDIR)/src/java.base/windows/native/launcher/icons
199 LIBAWT_VERSIONINFO_RESOURCE := $(TOPDIR)/src/java.desktop/windows/native/libawt/windows/awt.rc
200 endif
201
202 ifeq ($(OPENJDK_TARGET_OS), linux)
203 # FIXME: This is probably not what we want to do, but keep it now for compatibility.
204 LIBAWT_CFLAGS += $(EXPORT_ALL_SYMBOLS)
205 endif
206
207 # Turn off all warnings for debug_mem.c This is needed because the specific warning
208 # about initializing a declared 'extern' cannot be turned off individually. Only
209 # applies to debug builds.
210 ifeq ($(TOOLCHAIN_TYPE), gcc)
211 BUILD_LIBAWT_debug_mem.c_CFLAGS := -w
212 # This option improves performance of MaskFill in Java2D by 20% for some gcc
213 LIBAWT_CFLAGS += -fgcse-after-reload
214 endif
215
216 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT, \
217 NAME := awt, \
218 SRC := $(LIBAWT_DIRS), \
219 EXCLUDES := $(LIBAWT_EXCLUDES), \
220 EXCLUDE_FILES := $(LIBAWT_EXFILES), \
221 OPTIMIZATION := LOW, \
222 CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_CFLAGS), \
223 DISABLED_WARNINGS_gcc := sign-compare unused-result maybe-uninitialized \
224 format-nonliteral parentheses, \
225 DISABLED_WARNINGS_clang := logical-op-parentheses extern-initializer, \
226 DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE, \
227 DISABLED_WARNINGS_microsoft := 4297 4244 4267 4996, \
228 ASFLAGS := $(LIBAWT_ASFLAGS), \
229 LDFLAGS := $(LDFLAGS_JDKLIB) $(call SET_SHARED_LIBRARY_ORIGIN), \
230 LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \
231 LDFLAGS_windows := -delayload:user32.dll -delayload:gdi32.dll \
232 -delayload:shell32.dll -delayload:winmm.dll \
233 -delayload:winspool.drv -delayload:imm32.dll \
234 -delayload:ole32.dll -delayload:comdlg32.dll \
235 -delayload:comctl32.dll -delayload:shlwapi.dll, \
236 LIBS_unix := -ljvm -ljava $(LIBM), \
237 LIBS_linux := $(LIBDL), \
238 LIBS_solaris := $(LIBDL), \
239 LIBS_aix := $(LIBDL),\
240 LIBS_macosx := -lmlib_image \
241 -framework Cocoa \
242 -framework OpenGL \
243 -framework JavaNativeFoundation \
244 -framework JavaRuntimeSupport \
245 -framework ApplicationServices \
246 -framework AudioToolbox, \
247 LIBS_windows := kernel32.lib user32.lib gdi32.lib winspool.lib \
248 imm32.lib ole32.lib uuid.lib shell32.lib \
328 # comparison between pointer and integer
329 BUILD_LIBAWT_XAWT_awt_Font.c_CFLAGS := -w
330 # initializing a declared 'extern'
331 BUILD_LIBAWT_XAWT_debug_mem.c_CFLAGS := -w
332 endif
333
334 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_XAWT, \
335 NAME := awt_xawt, \
336 SRC := $(LIBAWT_XAWT_DIRS), \
337 EXCLUDES := $(LIBAWT_XAWT_EXCLUDES), \
338 OPTIMIZATION := LOW, \
339 CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_XAWT_CFLAGS) \
340 $(X_CFLAGS), \
341 WARNINGS_AS_ERRORS_xlc := false, \
342 DISABLED_WARNINGS_gcc := type-limits pointer-to-int-cast \
343 unused-result maybe-uninitialized format \
344 format-security int-to-pointer-cast parentheses \
345 implicit-fallthrough, \
346 DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE \
347 E_ASSIGNMENT_TYPE_MISMATCH E_NON_CONST_INIT, \
348 LDFLAGS := $(LDFLAGS_JDKLIB) \
349 $(call SET_SHARED_LIBRARY_ORIGIN) \
350 -L$(INSTALL_LIBRARIES_HERE), \
351 LIBS := $(X_LIBS) $(LIBAWT_XAWT_LIBS), \
352 RC_FLAGS := $(RC_FLAGS) \
353 -D "JDK_FNAME=xawt.dll" \
354 -D "JDK_INTERNAL_NAME=xawt" \
355 -D "JDK_FTYPE=0x2L", \
356 ))
357
358 $(BUILD_LIBAWT_XAWT): $(call FindLib, java.base, java)
359
360 $(BUILD_LIBAWT_XAWT): $(BUILD_LIBAWT)
361
362 TARGETS += $(BUILD_LIBAWT_XAWT)
363
364 endif
365 endif
366
367 ################################################################################
383 BUILD_LIBLCMS_INCLUDE_FILES :=
384 # If we're using the bundled library, we'll need to include it in the
385 # include path explicitly. Otherwise the system headers will be used.
386 LIBLCMS_CPPFLAGS += $(addprefix -I, $(LIBLCMS_SRC))
387 endif
388
389 $(eval $(call SetupJdkLibrary, BUILD_LIBLCMS, \
390 NAME := lcms, \
391 SRC := $(LIBLCMS_SRC), \
392 INCLUDE_FILES := $(BUILD_LIBLCMS_INCLUDE_FILES), \
393 OPTIMIZATION := HIGHEST, \
394 CFLAGS := $(filter-out -xc99=%none, $(CFLAGS_JDKLIB)) \
395 $(LIBLCMS_CPPFLAGS) \
396 $(LCMS_CFLAGS), \
397 CFLAGS_solaris := -xc99=no_lib, \
398 CFLAGS_windows := -DCMS_IS_WINDOWS_, \
399 DISABLED_WARNINGS_gcc := format-nonliteral type-limits misleading-indentation, \
400 DISABLED_WARNINGS_clang := tautological-compare, \
401 DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \
402 DISABLED_WARNINGS_microsoft := 4819, \
403 LDFLAGS := $(LDFLAGS_JDKLIB) \
404 $(call SET_SHARED_LIBRARY_ORIGIN), \
405 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
406 LDFLAGS_solaris := /usr/lib$(OPENJDK_TARGET_CPU_ISADIR)/libm.so.2, \
407 LIBS_unix := -lawt -ljvm -ljava $(LCMS_LIBS), \
408 LIBS_linux := $(LIBM), \
409 LIBS_macosx := $(LIBM), \
410 LIBS_aix := $(LIBM),\
411 LIBS_windows := $(WIN_AWT_LIB) $(WIN_JAVA_LIB), \
412 ))
413
414 TARGETS += $(BUILD_LIBLCMS)
415
416 $(BUILD_LIBLCMS): $(BUILD_LIBAWT)
417
418 ################################################################################
419
420 LIBJAVAJPEG_SRC += $(TOPDIR)/src/java.desktop/share/native/libjavajpeg
421
422 # "DISABLED_WARNINGS_gcc := clobbered" rationale:
423 # Suppress gcc warnings like "variable might be clobbered by 'longjmp'
424 # or 'vfork'": this warning indicates that some variable is placed to
425 # a register by optimized compiler and it's value might be lost on longjmp().
426 # Recommended way to avoid such warning is to declare the variable as
427 # volatile to prevent the optimization. However, this approach does not
428 # work because we have to declare all variables as volatile in result.
429
430 ifeq ($(USE_EXTERNAL_LIBJPEG), true)
431 LIBJPEG_LIBS := -ljpeg
432 BUILD_LIBJAVAJPEG_INCLUDE_FILES := \
433 imageioJPEG.c \
434 jpegdecoder.c
435 BUILD_LIBJAVAJPEG_HEADERS :=
436 else
437 LIBJPEG_LIBS :=
438 BUILD_LIBJAVAJPEG_INCLUDE_FILES :=
439 BUILD_LIBJAVAJPEG_HEADERS := $(addprefix -I, $(LIBJAVAJPEG_SRC))
440 endif
441
442 $(eval $(call SetupJdkLibrary, BUILD_LIBJAVAJPEG, \
443 NAME := javajpeg, \
444 SRC := $(LIBJAVAJPEG_SRC), \
445 INCLUDE_FILES := $(BUILD_LIBJAVAJPEG_INCLUDE_FILES), \
446 OPTIMIZATION := HIGHEST, \
447 CFLAGS := $(CFLAGS_JDKLIB) $(BUILD_LIBJAVAJPEG_HEADERS) \
448 $(LIBJAVA_HEADER_FLAGS) \
449 -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop, \
450 DISABLED_WARNINGS_gcc := clobbered implicit-fallthrough shift-negative-value, \
451 LDFLAGS := $(LDFLAGS_JDKLIB) \
452 $(call SET_SHARED_LIBRARY_ORIGIN), \
453 LIBS := $(LIBJPEG_LIBS) $(JDKLIB_LIBS), \
454 LIBS_windows := $(WIN_JAVA_LIB) jvm.lib, \
455 ))
456
457 $(BUILD_LIBJAVAJPEG): $(call FindLib, java.base, java)
458
459 TARGETS += $(BUILD_LIBJAVAJPEG)
460
461 ################################################################################
462
463 # Mac and Windows only use the native AWT lib, do not build libawt_headless
464 ifeq ($(findstring $(OPENJDK_TARGET_OS), windows macosx),)
465
466 LIBAWT_HEADLESS_DIRS := $(TOPDIR)/src/java.desktop/unix/native/libawt_headless/awt \
467 $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
468 $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d \
469 $(TOPDIR)/src/java.desktop/share/native/common/java2d \
470 $(TOPDIR)/src/java.desktop/share/native/common/font \
471 #
472
473 LIBAWT_HEADLESS_EXCLUDES := medialib
474 LIBAWT_HEADLESS_CFLAGS := -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \
475 $(addprefix -I, $(LIBAWT_HEADLESS_DIRS)) \
476 -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image \
477 -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
478 -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d \
479 -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d \
480 -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d/loops \
481 -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d/pipe \
482 -I$(TOPDIR)/src/java.desktop/share/native/common/awt/debug \
483 -I$(TOPDIR)/src/java.desktop/share/native/common/font \
484 -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/font \
485 -I$(TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \
486 -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/opengl \
487 $(LIBJAVA_HEADER_FLAGS) \
488 #
489
490 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_HEADLESS, \
491 NAME := awt_headless, \
492 SRC := $(LIBAWT_HEADLESS_DIRS), \
493 EXCLUDES := $(LIBAWT_HEADLESS_EXCLUDES), \
494 OPTIMIZATION := LOW, \
495 CFLAGS := $(CFLAGS_JDKLIB) \
496 -DHEADLESS=true \
497 -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" \
498 $(CUPS_CFLAGS) \
499 $(FONTCONFIG_CFLAGS) \
500 $(X_CFLAGS) \
501 $(LIBAWT_HEADLESS_CFLAGS), \
502 DISABLED_WARNINGS_xlc := 1506-356, \
503 DISABLED_WARNINGS_solstudio := E_EMPTY_TRANSLATION_UNIT, \
504 LDFLAGS := $(LDFLAGS_JDKLIB) \
505 $(call SET_SHARED_LIBRARY_ORIGIN), \
506 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
507 LIBS_unix := -lawt -ljvm -ljava, \
508 LIBS_linux := $(LIBM) $(LIBDL), \
509 LIBS_solaris := $(LIBM) $(LIBDL) $(LIBCXX), \
510 ))
511
512 # AIX warning explanation:
513 # 1506-356 : (W) Compilation unit is empty.
514 # This happens during the headless build
515
516 $(BUILD_LIBAWT_HEADLESS): $(BUILD_LIBAWT)
517
518 TARGETS += $(BUILD_LIBAWT_HEADLESS)
519
520 endif
521
522 ################################################################################
523
524 ifeq ($(FREETYPE_TO_USE), system)
525 LIBFREETYPE_CFLAGS := $(FREETYPE_CFLAGS)
526 LIBFREETYPE_LIBS := $(FREETYPE_LIBS)
527 else
528 LIBFREETYPE_SRC := $(TOPDIR)/src/java.desktop/share/native/libfreetype
529 BUILD_LIBFREETYPE_HEADERS := $(addprefix -I, $(LIBFREETYPE_SRC)/include)
530 LIBFREETYPE_CFLAGS := $(BUILD_LIBFREETYPE_HEADERS)
531 ifeq ($(OPENJDK_TARGET_OS), windows)
532 LIBFREETYPE_LIBS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfreetype/freetype.lib
533 else
534 LIBFREETYPE_LIBS := -lfreetype
535 endif
536
537 $(eval $(call SetupJdkLibrary, BUILD_LIBFREETYPE, \
538 NAME := freetype, \
539 SRC := $(LIBFREETYPE_SRC)/src, \
540 OPTIMIZATION := HIGHEST, \
541 CFLAGS := $(CFLAGS_JDKLIB) $(BUILD_LIBFREETYPE_HEADERS) \
542 -DFT2_BUILD_LIBRARY $(EXPORT_ALL_SYMBOLS), \
543 DISABLED_WARNINGS_solstudio := \
544 E_STATEMENT_NOT_REACHED \
545 E_END_OF_LOOP_CODE_NOT_REACHED, \
546 DISABLED_WARNINGS_microsoft := 4267 2220 4244, \
547 LDFLAGS := $(LDFLAGS_JDKLIB) \
548 $(call SET_SHARED_LIBRARY_ORIGIN), \
549 ))
550
551 TARGETS += $(BUILD_LIBFREETYPE)
552 endif
553
554 ###########################################################################
555
556 LIBFONTMANAGER_SRC := $(TOPDIR)/src/java.desktop/share/native/libfontmanager \
557 $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libfontmanager
558 LIBFONTMANAGER_CFLAGS := \
559 $(addprefix -I, $(shell $(FIND) \
560 $(LIBFONTMANAGER_SRC) \
561 $(TOPDIR)/src/java.desktop/share/native/libawt \
562 $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt \
577 ifneq (, $(findstring $(OPENJDK_TARGET_OS), linux macosx))
578 HARFBUZZ_CFLAGS += -DHAVE_INTEL_ATOMIC_PRIMITIVES
579 endif
580 ifeq ($(OPENJDK_TARGET_OS), solaris)
581 HARFBUZZ_CFLAGS += -DHAVE_SOLARIS_ATOMIC_OPS
582 endif
583 ifeq ($(OPENJDK_TARGET_OS), macosx)
584 HARFBUZZ_CFLAGS += -DHAVE_CORETEXT
585 endif
586 ifneq ($(OPENJDK_TARGET_OS), macosx)
587 LIBFONTMANAGER_EXCLUDE_FILES += harfbuzz/hb-coretext.cc
588 endif
589 # hb-ft.cc is not presently needed, and requires freetype 2.4.2 or later.
590 LIBFONTMANAGER_EXCLUDE_FILES += harfbuzz/hb-ft.cc
591
592 LIBFONTMANAGER_CFLAGS += $(HARFBUZZ_CFLAGS)
593
594 #### End harfbuzz configuration
595
596 LIBFONTMANAGER_CFLAGS += $(LIBFREETYPE_CFLAGS)
597 BUILD_LIBFONTMANAGER_FONTLIB += $(LIBFREETYPE_LIBS)
598
599 LIBFONTMANAGER_OPTIMIZATION := HIGH
600
601 ifeq ($(OPENJDK_TARGET_OS), windows)
602 LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
603 X11TextRenderer.c
604 LIBFONTMANAGER_OPTIMIZATION := HIGHEST
605 LIBFONTMANAGER_CFLAGS += -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/windows
606 else ifeq ($(OPENJDK_TARGET_OS), macosx)
607 LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
608 X11TextRenderer.c \
609 fontpath.c \
610 lcdglyph.c
611 else
612 LIBFONTMANAGER_EXCLUDE_FILES += fontpath.c \
613 lcdglyph.c
614 endif
615
616 LIBFONTMANAGER_CFLAGS += $(FONT_HEADERS) $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS
631 TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
632 CFLAGS := $(CFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \
633 CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \
634 OPTIMIZATION := $(LIBFONTMANAGER_OPTIMIZATION), \
635 CFLAGS_windows = -DCC_NOEX, \
636 WARNINGS_AS_ERRORS_xlc := false, \
637 DISABLED_WARNINGS_gcc := sign-compare int-to-pointer-cast \
638 type-limits missing-field-initializers implicit-fallthrough, \
639 DISABLED_WARNINGS_CXX_gcc := reorder delete-non-virtual-dtor strict-overflow \
640 maybe-uninitialized, \
641 DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \
642 tautological-constant-out-of-range-compare int-to-pointer-cast, \
643 DISABLED_WARNINGS_C_solstudio = \
644 E_INTEGER_OVERFLOW_DETECTED \
645 E_ARG_INCOMPATIBLE_WITH_ARG_L \
646 E_ENUM_VAL_OVERFLOWS_INT_MAX, \
647 DISABLED_WARNINGS_CXX_solstudio := \
648 truncwarn wvarhidenmem wvarhidemem wbadlkginit identexpected \
649 hidevf w_novirtualdescr arrowrtn2, \
650 DISABLED_WARNINGS_microsoft := 4267 4244 4018 4090 4996 4146 4334 4819 4101, \
651 LDFLAGS := $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \
652 $(call SET_SHARED_LIBRARY_ORIGIN), \
653 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
654 LDFLAGS_macosx := -undefined dynamic_lookup, \
655 LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \
656 LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \
657 LIBS_aix := -lawt_headless,\
658 LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \
659 $(WIN_AWT_LIB), \
660 ))
661
662 $(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT)
663
664 ifneq (, $(findstring $(OPENJDK_TARGET_OS), solaris aix))
665 $(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT_HEADLESS)
666 endif
667
668 ifeq ($(FREETYPE_TO_USE), bundled)
669 $(BUILD_LIBFONTMANAGER): $(BUILD_LIBFREETYPE)
670 endif
734 ifneq ($(OPENJDK_TARGET_OS), solaris)
735 JAWT_LIBS += -lawt
736 endif
737 ifeq ($(ENABLE_HEADLESS_ONLY), false)
738 JAWT_LIBS += -lawt_xawt
739 else
740 JAWT_LIBS += -lawt_headless
741 HEADLESS_CFLAG += -DHEADLESS
742 endif
743 endif
744
745 $(eval $(call SetupJdkLibrary, BUILD_LIBJAWT, \
746 NAME := jawt, \
747 SRC := $(LIBJAWT_SRC), \
748 INCLUDE_FILES := $(JAWT_FILES), \
749 OPTIMIZATION := LOW, \
750 CFLAGS := $(CFLAGS_JDKLIB) \
751 $(LIBJAWT_CFLAGS), \
752 CFLAGS_linux := $(HEADLESS_CFLAG), \
753 CFLAGS_macosx := $(LIBJAWT_CFLAGS_macosx), \
754 LDFLAGS := $(LDFLAGS_JDKLIB) \
755 $(call SET_SHARED_LIBRARY_ORIGIN), \
756 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
757 LDFLAGS_macosx := -Wl$(COMMA)-rpath$(COMMA)@loader_path, \
758 LIBS_unix := $(JAWT_LIBS) $(JDKLIB_LIBS), \
759 LIBS_solaris := $(X_LIBS) -lXrender, \
760 LIBS_macosx := -framework Cocoa, \
761 ))
762
763 ifeq ($(ENABLE_HEADLESS_ONLY), false)
764 $(BUILD_LIBJAWT): $(BUILD_LIBAWT_XAWT)
765 else
766 $(BUILD_LIBJAWT): $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)awt_headless$(SHARED_LIBRARY_SUFFIX)
767 endif
768
769 ifeq ($(OPENJDK_TARGET_OS), macosx)
770 $(BUILD_LIBJAWT): $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)awt_lwawt$(SHARED_LIBRARY_SUFFIX)
771 endif
772
773 endif # OPENJDK_TARGET_OS
865 else ifeq ($(OPENJDK_TARGET_OS), windows)
866 LIBSPLASHSCREEN_LIBS += kernel32.lib user32.lib gdi32.lib delayimp.lib $(WIN_JAVA_LIB) jvm.lib
867 else
868 LIBSPLASHSCREEN_LIBS += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread -ldl
869 endif
870
871 $(eval $(call SetupJdkLibrary, BUILD_LIBSPLASHSCREEN, \
872 NAME := splashscreen, \
873 SRC := $(LIBSPLASHSCREEN_DIRS), \
874 EXCLUDE_FILES := imageioJPEG.c jpegdecoder.c pngtest.c, \
875 EXCLUDES := $(LIBSPLASHSCREEN_EXCLUDES), \
876 OPTIMIZATION := LOW, \
877 CFLAGS := $(LIBSPLASHSCREEN_CFLAGS) $(CFLAGS_JDKLIB) \
878 $(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(PNG_CFLAGS) $(LIBZ_CFLAGS), \
879 DISABLED_WARNINGS_gcc := sign-compare type-limits unused-result \
880 maybe-uninitialized shift-negative-value implicit-fallthrough, \
881 DISABLED_WARNINGS_clang := incompatible-pointer-types, \
882 DISABLED_WARNINGS_solstudio := E_NEWLINE_NOT_LAST E_DECLARATION_IN_CODE \
883 E_STATEMENT_NOT_REACHED, \
884 DISABLED_WARNINGS_microsoft := 4018 4244 4267, \
885 LDFLAGS := $(LDFLAGS_JDKLIB) \
886 $(call SET_SHARED_LIBRARY_ORIGIN), \
887 LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \
888 LDFLAGS_windows := -delayload:user32.dll, \
889 LIBS := $(JDKLIB_LIBS) $(LIBSPLASHSCREEN_LIBS) $(LIBZ_LIBS) \
890 $(GIFLIB_LIBS) $(LIBJPEG_LIBS) $(PNG_LIBS), \
891 LIBS_aix := -liconv, \
892 ))
893
894 TARGETS += $(BUILD_LIBSPLASHSCREEN)
895
896 ifeq ($(OPENJDK_TARGET_OS), macosx)
897 $(BUILD_LIBSPLASHSCREEN): $(call FindLib, java.desktop, osxapp)
898 endif
899
900 endif
901
902 ################################################################################
903
904 ifeq ($(OPENJDK_TARGET_OS), macosx)
|