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 #
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 \
317 # redefining a macro
318 BUILD_LIBAWT_XAWT_gtk2_interface.c_CFLAGS := -w
319 # comparison between pointer and integer
320 BUILD_LIBAWT_XAWT_awt_Font.c_CFLAGS := -w
321 # initializing a declared 'extern'
322 BUILD_LIBAWT_XAWT_debug_mem.c_CFLAGS := -w
323 endif
324
325 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_XAWT, \
326 NAME := awt_xawt, \
327 EXTRA_SRC := $(LIBAWT_XAWT_EXTRA_SRC), \
328 EXTRA_HEADER_DIRS := $(LIBAWT_XAWT_EXTRA_HEADER_DIRS), \
329 EXCLUDES := $(LIBAWT_XAWT_EXCLUDES), \
330 OPTIMIZATION := LOW, \
331 CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_XAWT_CFLAGS) \
332 $(X_CFLAGS), \
333 WARNINGS_AS_ERRORS_xlc := false, \
334 DISABLED_WARNINGS_gcc := type-limits pointer-to-int-cast \
335 unused-result maybe-uninitialized format \
336 format-security int-to-pointer-cast parentheses \
337 implicit-fallthrough, \
338 DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE \
339 E_ASSIGNMENT_TYPE_MISMATCH E_NON_CONST_INIT, \
340 LDFLAGS := $(LDFLAGS_JDKLIB) \
341 $(call SET_SHARED_LIBRARY_ORIGIN) \
342 -L$(INSTALL_LIBRARIES_HERE), \
343 LIBS := $(X_LIBS) $(LIBAWT_XAWT_LIBS), \
344 ))
345
346 $(BUILD_LIBAWT_XAWT): $(call FindLib, java.base, java)
347
348 $(BUILD_LIBAWT_XAWT): $(BUILD_LIBAWT)
349
350 TARGETS += $(BUILD_LIBAWT_XAWT)
351
352 endif
353 endif
354
355 ################################################################################
356
357 # The fast floor code loses precision.
363 BUILD_LIBLCMS_INCLUDE_FILES := LCMS.c
364 # If we're using an external library, we can't include our own SRC path
365 # as includes, instead the system headers should be used.
366 LIBLCMS_HEADERS_FROM_SRC := false
367 else
368 BUILD_LIBLCMS_INCLUDE_FILES :=
369 endif
370
371 $(eval $(call SetupJdkLibrary, BUILD_LIBLCMS, \
372 NAME := lcms, \
373 INCLUDE_FILES := $(BUILD_LIBLCMS_INCLUDE_FILES), \
374 OPTIMIZATION := HIGHEST, \
375 CFLAGS := $(CFLAGS_JDKLIB) \
376 $(LCMS_CFLAGS), \
377 CFLAGS_solaris := -xc99=no_lib, \
378 CFLAGS_windows := -DCMS_IS_WINDOWS_, \
379 EXTRA_HEADER_DIRS := \
380 common/awt/debug \
381 libawt/java2d, \
382 HEADERS_FROM_SRC := $(LIBLCMS_HEADERS_FROM_SRC), \
383 DISABLED_WARNINGS_gcc := format-nonliteral type-limits misleading-indentation, \
384 DISABLED_WARNINGS_clang := tautological-compare, \
385 DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \
386 DISABLED_WARNINGS_microsoft := 4819, \
387 LDFLAGS := $(LDFLAGS_JDKLIB) \
388 $(call SET_SHARED_LIBRARY_ORIGIN), \
389 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
390 LIBS_unix := -lawt -ljvm -ljava $(LCMS_LIBS) $(LIBM), \
391 LIBS_windows := $(WIN_AWT_LIB) $(WIN_JAVA_LIB), \
392 ))
393
394 TARGETS += $(BUILD_LIBLCMS)
395
396 $(BUILD_LIBLCMS): $(BUILD_LIBAWT)
397
398 ################################################################################
399
400 # "DISABLED_WARNINGS_gcc := clobbered" rationale:
401 # Suppress gcc warnings like "variable might be clobbered by 'longjmp'
402 # or 'vfork'": this warning indicates that some variable is placed to
403 # a register by optimized compiler and it's value might be lost on longjmp().
404 # Recommended way to avoid such warning is to declare the variable as
449 LIBAWT_HEADLESS_EXCLUDES := medialib
450
451 LIBAWT_HEADLESS_EXTRA_HEADER_DIRS := \
452 $(LIBAWT_DEFAULT_HEADER_DIRS) \
453 common/awt/debug \
454 common/font \
455 common/java2d/opengl \
456 #
457
458 LIBAWT_HEADLESS_CFLAGS := $(CUPS_CFLAGS) $(FONTCONFIG_CFLAGS) $(X_CFLAGS) \
459 -DHEADLESS=true
460
461 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_HEADLESS, \
462 NAME := awt_headless, \
463 EXTRA_SRC := $(LIBAWT_HEADLESS_EXTRA_SRC), \
464 EXCLUDES := $(LIBAWT_HEADLESS_EXCLUDES), \
465 OPTIMIZATION := LOW, \
466 CFLAGS := $(CFLAGS_JDKLIB) \
467 $(LIBAWT_HEADLESS_CFLAGS), \
468 EXTRA_HEADER_DIRS := $(LIBAWT_HEADLESS_EXTRA_HEADER_DIRS), \
469 DISABLED_WARNINGS_xlc := 1506-356, \
470 DISABLED_WARNINGS_solstudio := E_EMPTY_TRANSLATION_UNIT, \
471 LDFLAGS := $(LDFLAGS_JDKLIB) \
472 $(call SET_SHARED_LIBRARY_ORIGIN), \
473 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
474 LIBS_unix := -lawt -ljvm -ljava, \
475 LIBS_linux := $(LIBM) $(LIBDL), \
476 LIBS_solaris := $(LIBM) $(LIBDL) $(LIBCXX), \
477 ))
478
479 # AIX warning explanation:
480 # 1506-356 : (W) Compilation unit is empty.
481 # This happens during the headless build
482
483 $(BUILD_LIBAWT_HEADLESS): $(BUILD_LIBAWT)
484
485 TARGETS += $(BUILD_LIBAWT_HEADLESS)
486
487 endif
488
587 # about discarding 'const' qualifier cannot be turned off individually.
588 BUILD_LIBFONTMANAGER_sunFont.c_CFLAGS := -w
589 endif
590
591 # LDFLAGS clarification:
592 # Filter relevant linker flags disallowing unresolved symbols as we cannot
593 # build-time decide to which library to link against (libawt_headless or
594 # libawt_xawt). See JDK-8196516 for details.
595 $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \
596 NAME := fontmanager, \
597 EXCLUDE_FILES := $(LIBFONTMANAGER_EXCLUDE_FILES) \
598 AccelGlyphCache.c, \
599 TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
600 CFLAGS := $(CFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \
601 CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \
602 OPTIMIZATION := $(LIBFONTMANAGER_OPTIMIZATION), \
603 CFLAGS_windows = -DCC_NOEX, \
604 EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS), \
605 WARNINGS_AS_ERRORS_xlc := false, \
606 DISABLED_WARNINGS_gcc := sign-compare int-to-pointer-cast \
607 type-limits missing-field-initializers implicit-fallthrough strict-aliasing, \
608 DISABLED_WARNINGS_CXX_gcc := reorder delete-non-virtual-dtor strict-overflow \
609 maybe-uninitialized, \
610 DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \
611 tautological-constant-out-of-range-compare int-to-pointer-cast, \
612 DISABLED_WARNINGS_C_solstudio = \
613 E_INTEGER_OVERFLOW_DETECTED \
614 E_ARG_INCOMPATIBLE_WITH_ARG_L \
615 E_ENUM_VAL_OVERFLOWS_INT_MAX, \
616 DISABLED_WARNINGS_CXX_solstudio := \
617 truncwarn wvarhidenmem wvarhidemem wbadlkginit identexpected \
618 hidevf w_novirtualdescr arrowrtn2, \
619 DISABLED_WARNINGS_microsoft := 4267 4244 4018 4090 4996 4146 4334 4819 4101, \
620 LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
621 $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \
622 $(call SET_SHARED_LIBRARY_ORIGIN), \
623 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
624 LDFLAGS_aix := -Wl$(COMMA)-berok, \
625 LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \
626 LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \
627 LIBS_macosx := -lawt_lwawt -framework CoreText -framework CoreFoundation \
628 -framework CoreGraphics, \
629 LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \
630 $(WIN_AWT_LIB), \
631 ))
698 ifneq ($(OPENJDK_TARGET_OS), solaris)
699 JAWT_LIBS += -lawt
700 endif
701 ifeq ($(ENABLE_HEADLESS_ONLY), false)
702 JAWT_LIBS += -lawt_xawt
703 else
704 JAWT_LIBS += -lawt_headless
705 ifeq ($(OPENJDK_TARGET_OS), linux)
706 JAWT_CFLAGS += -DHEADLESS
707 endif
708 endif
709 endif
710
711 $(eval $(call SetupJdkLibrary, BUILD_LIBJAWT, \
712 NAME := jawt, \
713 EXCLUDE_SRC_PATTERNS := $(LIBJAWT_EXCLUDE_SRC_PATTERNS), \
714 INCLUDE_FILES := $(JAWT_FILES), \
715 OPTIMIZATION := LOW, \
716 CFLAGS := $(CFLAGS_JDKLIB) \
717 $(JAWT_CFLAGS), \
718 EXTRA_HEADER_DIRS := \
719 include \
720 common/awt, \
721 LDFLAGS := $(LDFLAGS_JDKLIB) \
722 $(call SET_SHARED_LIBRARY_ORIGIN), \
723 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
724 LDFLAGS_macosx := -Wl$(COMMA)-rpath$(COMMA)@loader_path, \
725 LIBS_unix := $(JAWT_LIBS) $(JDKLIB_LIBS), \
726 LIBS_solaris := $(X_LIBS) -lXrender, \
727 LIBS_macosx := -framework Cocoa, \
728 ))
729
730 ifeq ($(ENABLE_HEADLESS_ONLY), false)
731 $(BUILD_LIBJAWT): $(BUILD_LIBAWT_XAWT)
732 else
733 $(BUILD_LIBJAWT): $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)awt_headless$(SHARED_LIBRARY_SUFFIX)
734 endif
735
736 ifeq ($(OPENJDK_TARGET_OS), macosx)
737 $(BUILD_LIBJAWT): $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)awt_lwawt$(SHARED_LIBRARY_SUFFIX)
831 LIBSPLASHSCREEN_LIBS += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread -ldl
832 endif
833
834 LIBSPLASHSCREEN_HEADER_DIRS += \
835 libosxapp \
836 java.base:include \
837 java.base:libjava \
838 #
839
840 $(eval $(call SetupJdkLibrary, BUILD_LIBSPLASHSCREEN, \
841 NAME := splashscreen, \
842 EXTRA_SRC := $(LIBSPLASHSCREEN_EXTRA_SRC), \
843 EXCLUDE_SRC_PATTERNS := $(LIBSPLASHSCREEN_EXCLUDE_SRC_PATTERNS), \
844 EXCLUDE_FILES := imageioJPEG.c jpegdecoder.c pngtest.c, \
845 EXCLUDES := $(LIBSPLASHSCREEN_EXCLUDES), \
846 OPTIMIZATION := LOW, \
847 CFLAGS := $(CFLAGS_JDKLIB) $(LIBSPLASHSCREEN_CFLAGS) \
848 $(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(PNG_CFLAGS) $(LIBZ_CFLAGS), \
849 EXTRA_HEADER_DIRS := $(LIBSPLASHSCREEN_HEADER_DIRS), \
850 DISABLED_WARNINGS_gcc := sign-compare type-limits unused-result \
851 maybe-uninitialized shift-negative-value implicit-fallthrough, \
852 DISABLED_WARNINGS_clang := incompatible-pointer-types, \
853 DISABLED_WARNINGS_solstudio := E_NEWLINE_NOT_LAST E_DECLARATION_IN_CODE \
854 E_STATEMENT_NOT_REACHED, \
855 DISABLED_WARNINGS_microsoft := 4018 4244 4267, \
856 LDFLAGS := $(LDFLAGS_JDKLIB) \
857 $(call SET_SHARED_LIBRARY_ORIGIN), \
858 LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \
859 LDFLAGS_windows := -delayload:user32.dll, \
860 LIBS := $(JDKLIB_LIBS) $(LIBSPLASHSCREEN_LIBS) $(LIBZ_LIBS) \
861 $(GIFLIB_LIBS) $(LIBJPEG_LIBS) $(PNG_LIBS), \
862 LIBS_aix := -liconv, \
863 ))
864
865 TARGETS += $(BUILD_LIBSPLASHSCREEN)
866
867 ifeq ($(OPENJDK_TARGET_OS), macosx)
868 $(BUILD_LIBSPLASHSCREEN): $(call FindLib, $(MODULE), osxapp)
869 endif
870
871 endif
872
891 libosxapp \
892 #
893
894 LIBAWT_LWAWT_CFLAGS := $(X_CFLAGS) $(X_LIBS)
895
896 LIBAWT_LWAWT_EXFILES := fontpath.c awt_Font.c X11Color.c
897 LIBAWT_LWAWT_EXCLUDES := $(TOPDIR)/src/$(MODULE)/unix/native/common/awt/medialib
898
899 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_LWAWT, \
900 NAME := awt_lwawt, \
901 EXTRA_SRC := $(LIBAWT_LWAWT_EXTRA_SRC), \
902 INCLUDE_FILES := $(LIBAWT_LWAWT_FILES), \
903 EXCLUDE_FILES := $(LIBAWT_LWAWT_EXFILES), \
904 EXCLUDES := $(LIBAWT_LWAWT_EXCLUDES), \
905 OPTIMIZATION := LOW, \
906 CFLAGS := $(CFLAGS_JDKLIB) \
907 $(LIBAWT_LWAWT_CFLAGS), \
908 EXTRA_HEADER_DIRS := $(LIBAWT_LWAWT_EXTRA_HEADER_DIRS), \
909 DISABLED_WARNINGS_clang := incomplete-implementation enum-conversion \
910 deprecated-declarations objc-method-access bitwise-op-parentheses \
911 incompatible-pointer-types parentheses-equality extra-tokens, \
912 LDFLAGS := $(LDFLAGS_JDKLIB) \
913 $(call SET_SHARED_LIBRARY_ORIGIN) \
914 -L$(INSTALL_LIBRARIES_HERE), \
915 LIBS := -lawt -lmlib_image -losxapp -ljvm $(LIBM) \
916 -framework Accelerate \
917 -framework ApplicationServices \
918 -framework AudioToolbox \
919 -framework Carbon \
920 -framework Cocoa \
921 -framework Security \
922 -framework ExceptionHandling \
923 -framework JavaNativeFoundation \
924 -framework JavaRuntimeSupport \
925 -framework OpenGL \
926 -framework QuartzCore -ljava, \
927 ))
928
929 TARGETS += $(BUILD_LIBAWT_LWAWT)
930
931 $(BUILD_LIBAWT_LWAWT): $(BUILD_LIBAWT)
932
933 $(BUILD_LIBAWT_LWAWT): $(BUILD_LIBMLIB_IMAGE)
934
935 $(BUILD_LIBAWT_LWAWT): $(call FindLib, $(MODULE), osxapp)
936
937 $(BUILD_LIBAWT_LWAWT): $(call FindLib, java.base, java)
938
939 endif
940
941 ################################################################################
942
943 ifeq ($(OPENJDK_TARGET_OS), macosx)
944
945 $(eval $(call SetupJdkLibrary, BUILD_LIBOSXUI, \
946 NAME := osxui, \
947 OPTIMIZATION := LOW, \
948 CFLAGS := $(CFLAGS_JDKLIB), \
949 EXTRA_HEADER_DIRS := \
950 libawt_lwawt/awt \
951 libosxapp, \
952 DISABLED_WARNINGS_clang := deprecated-declarations, \
953 LDFLAGS := $(LDFLAGS_JDKLIB) \
954 $(call SET_SHARED_LIBRARY_ORIGIN) \
955 -Wl$(COMMA)-rpath$(COMMA)@loader_path \
956 -L$(INSTALL_LIBRARIES_HERE), \
957 LIBS := -lawt -losxapp -lawt_lwawt \
958 -framework Cocoa \
959 -framework Carbon \
960 -framework ApplicationServices \
961 -framework JavaNativeFoundation \
962 -framework JavaRuntimeSupport \
963 -ljava -ljvm, \
964 ))
965
966 TARGETS += $(BUILD_LIBOSXUI)
967
968 $(BUILD_LIBOSXUI): $(BUILD_LIBAWT)
969
970 $(BUILD_LIBOSXUI): $(call FindLib, $(MODULE), osxapp)
971
972 $(BUILD_LIBOSXUI): $(BUILD_LIBAWT_LWAWT)
|
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 DISABLED_WARNINGS_gcc := unused-function, \
59 LDFLAGS := $(LDFLAGS_JDKLIB) \
60 $(call SET_SHARED_LIBRARY_ORIGIN), \
61 LIBS := $(JDKLIB_LIBS), \
62 LIBS_unix := $(LIBM) $(LIBDL), \
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 is basically built from mlib_image sources, with some additions
74 # and some exclusions.
75 LIBMLIB_IMAGE_V_SRC := \
76 libmlib_image \
77 common/awt/medialib \
78 #
209 endif
210
211 # Turn off all warnings for debug_mem.c This is needed because the specific warning
212 # about initializing a declared 'extern' cannot be turned off individually. Only
213 # applies to debug builds.
214 ifeq ($(TOOLCHAIN_TYPE), gcc)
215 BUILD_LIBAWT_debug_mem.c_CFLAGS := -w
216 # This option improves performance of MaskFill in Java2D by 20% for some gcc
217 LIBAWT_CFLAGS += -fgcse-after-reload
218 endif
219
220 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT, \
221 NAME := awt, \
222 EXTRA_SRC := $(LIBAWT_EXTRA_SRC), \
223 EXCLUDES := $(LIBAWT_EXCLUDES), \
224 EXCLUDE_FILES := $(LIBAWT_EXFILES), \
225 OPTIMIZATION := LOW, \
226 CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_CFLAGS), \
227 EXTRA_HEADER_DIRS := $(LIBAWT_EXTRA_HEADER_DIRS), \
228 DISABLED_WARNINGS_gcc := sign-compare unused-result maybe-uninitialized \
229 format-nonliteral parentheses unused-value unused-function, \
230 DISABLED_WARNINGS_clang := logical-op-parentheses extern-initializer \
231 sign-compare format-nonliteral, \
232 DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE, \
233 DISABLED_WARNINGS_microsoft := 4244 4267 4996, \
234 ASFLAGS := $(LIBAWT_ASFLAGS), \
235 LDFLAGS := $(LDFLAGS_JDKLIB) $(call SET_SHARED_LIBRARY_ORIGIN), \
236 LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \
237 LDFLAGS_windows := -delayload:user32.dll -delayload:gdi32.dll \
238 -delayload:shell32.dll -delayload:winmm.dll \
239 -delayload:winspool.drv -delayload:imm32.dll \
240 -delayload:ole32.dll -delayload:comdlg32.dll \
241 -delayload:comctl32.dll -delayload:shlwapi.dll, \
242 LIBS_unix := -ljvm -ljava $(LIBM), \
243 LIBS_linux := $(LIBDL), \
244 LIBS_solaris := $(LIBDL), \
245 LIBS_aix := $(LIBDL),\
246 LIBS_macosx := -lmlib_image \
247 -framework Cocoa \
248 -framework OpenGL \
249 -framework JavaNativeFoundation \
250 -framework JavaRuntimeSupport \
251 -framework ApplicationServices \
319 # redefining a macro
320 BUILD_LIBAWT_XAWT_gtk2_interface.c_CFLAGS := -w
321 # comparison between pointer and integer
322 BUILD_LIBAWT_XAWT_awt_Font.c_CFLAGS := -w
323 # initializing a declared 'extern'
324 BUILD_LIBAWT_XAWT_debug_mem.c_CFLAGS := -w
325 endif
326
327 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_XAWT, \
328 NAME := awt_xawt, \
329 EXTRA_SRC := $(LIBAWT_XAWT_EXTRA_SRC), \
330 EXTRA_HEADER_DIRS := $(LIBAWT_XAWT_EXTRA_HEADER_DIRS), \
331 EXCLUDES := $(LIBAWT_XAWT_EXCLUDES), \
332 OPTIMIZATION := LOW, \
333 CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_XAWT_CFLAGS) \
334 $(X_CFLAGS), \
335 WARNINGS_AS_ERRORS_xlc := false, \
336 DISABLED_WARNINGS_gcc := type-limits pointer-to-int-cast \
337 unused-result maybe-uninitialized format \
338 format-security int-to-pointer-cast parentheses \
339 implicit-fallthrough undef unused-function, \
340 DISABLED_WARNINGS_clang := parentheses format undef \
341 logical-op-parentheses format-nonliteral int-conversion, \
342 DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE \
343 E_ASSIGNMENT_TYPE_MISMATCH E_NON_CONST_INIT, \
344 LDFLAGS := $(LDFLAGS_JDKLIB) \
345 $(call SET_SHARED_LIBRARY_ORIGIN) \
346 -L$(INSTALL_LIBRARIES_HERE), \
347 LIBS := $(X_LIBS) $(LIBAWT_XAWT_LIBS), \
348 ))
349
350 $(BUILD_LIBAWT_XAWT): $(call FindLib, java.base, java)
351
352 $(BUILD_LIBAWT_XAWT): $(BUILD_LIBAWT)
353
354 TARGETS += $(BUILD_LIBAWT_XAWT)
355
356 endif
357 endif
358
359 ################################################################################
360
361 # The fast floor code loses precision.
367 BUILD_LIBLCMS_INCLUDE_FILES := LCMS.c
368 # If we're using an external library, we can't include our own SRC path
369 # as includes, instead the system headers should be used.
370 LIBLCMS_HEADERS_FROM_SRC := false
371 else
372 BUILD_LIBLCMS_INCLUDE_FILES :=
373 endif
374
375 $(eval $(call SetupJdkLibrary, BUILD_LIBLCMS, \
376 NAME := lcms, \
377 INCLUDE_FILES := $(BUILD_LIBLCMS_INCLUDE_FILES), \
378 OPTIMIZATION := HIGHEST, \
379 CFLAGS := $(CFLAGS_JDKLIB) \
380 $(LCMS_CFLAGS), \
381 CFLAGS_solaris := -xc99=no_lib, \
382 CFLAGS_windows := -DCMS_IS_WINDOWS_, \
383 EXTRA_HEADER_DIRS := \
384 common/awt/debug \
385 libawt/java2d, \
386 HEADERS_FROM_SRC := $(LIBLCMS_HEADERS_FROM_SRC), \
387 DISABLED_WARNINGS_gcc := format-nonliteral type-limits \
388 misleading-indentation undef unused-function, \
389 DISABLED_WARNINGS_clang := tautological-compare format-nonliteral undef, \
390 DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \
391 DISABLED_WARNINGS_microsoft := 4819, \
392 LDFLAGS := $(LDFLAGS_JDKLIB) \
393 $(call SET_SHARED_LIBRARY_ORIGIN), \
394 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
395 LIBS_unix := -lawt -ljvm -ljava $(LCMS_LIBS) $(LIBM), \
396 LIBS_windows := $(WIN_AWT_LIB) $(WIN_JAVA_LIB), \
397 ))
398
399 TARGETS += $(BUILD_LIBLCMS)
400
401 $(BUILD_LIBLCMS): $(BUILD_LIBAWT)
402
403 ################################################################################
404
405 # "DISABLED_WARNINGS_gcc := clobbered" rationale:
406 # Suppress gcc warnings like "variable might be clobbered by 'longjmp'
407 # or 'vfork'": this warning indicates that some variable is placed to
408 # a register by optimized compiler and it's value might be lost on longjmp().
409 # Recommended way to avoid such warning is to declare the variable as
454 LIBAWT_HEADLESS_EXCLUDES := medialib
455
456 LIBAWT_HEADLESS_EXTRA_HEADER_DIRS := \
457 $(LIBAWT_DEFAULT_HEADER_DIRS) \
458 common/awt/debug \
459 common/font \
460 common/java2d/opengl \
461 #
462
463 LIBAWT_HEADLESS_CFLAGS := $(CUPS_CFLAGS) $(FONTCONFIG_CFLAGS) $(X_CFLAGS) \
464 -DHEADLESS=true
465
466 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_HEADLESS, \
467 NAME := awt_headless, \
468 EXTRA_SRC := $(LIBAWT_HEADLESS_EXTRA_SRC), \
469 EXCLUDES := $(LIBAWT_HEADLESS_EXCLUDES), \
470 OPTIMIZATION := LOW, \
471 CFLAGS := $(CFLAGS_JDKLIB) \
472 $(LIBAWT_HEADLESS_CFLAGS), \
473 EXTRA_HEADER_DIRS := $(LIBAWT_HEADLESS_EXTRA_HEADER_DIRS), \
474 DISABLED_WARNINGS_gcc := unused-function, \
475 DISABLED_WARNINGS_xlc := 1506-356, \
476 DISABLED_WARNINGS_solstudio := E_EMPTY_TRANSLATION_UNIT, \
477 LDFLAGS := $(LDFLAGS_JDKLIB) \
478 $(call SET_SHARED_LIBRARY_ORIGIN), \
479 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
480 LIBS_unix := -lawt -ljvm -ljava, \
481 LIBS_linux := $(LIBM) $(LIBDL), \
482 LIBS_solaris := $(LIBM) $(LIBDL) $(LIBCXX), \
483 ))
484
485 # AIX warning explanation:
486 # 1506-356 : (W) Compilation unit is empty.
487 # This happens during the headless build
488
489 $(BUILD_LIBAWT_HEADLESS): $(BUILD_LIBAWT)
490
491 TARGETS += $(BUILD_LIBAWT_HEADLESS)
492
493 endif
494
593 # about discarding 'const' qualifier cannot be turned off individually.
594 BUILD_LIBFONTMANAGER_sunFont.c_CFLAGS := -w
595 endif
596
597 # LDFLAGS clarification:
598 # Filter relevant linker flags disallowing unresolved symbols as we cannot
599 # build-time decide to which library to link against (libawt_headless or
600 # libawt_xawt). See JDK-8196516 for details.
601 $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \
602 NAME := fontmanager, \
603 EXCLUDE_FILES := $(LIBFONTMANAGER_EXCLUDE_FILES) \
604 AccelGlyphCache.c, \
605 TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
606 CFLAGS := $(CFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \
607 CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \
608 OPTIMIZATION := $(LIBFONTMANAGER_OPTIMIZATION), \
609 CFLAGS_windows = -DCC_NOEX, \
610 EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS), \
611 WARNINGS_AS_ERRORS_xlc := false, \
612 DISABLED_WARNINGS_gcc := sign-compare int-to-pointer-cast \
613 type-limits missing-field-initializers implicit-fallthrough \
614 strict-aliasing undef unused-function, \
615 DISABLED_WARNINGS_CXX_gcc := reorder delete-non-virtual-dtor strict-overflow \
616 maybe-uninitialized, \
617 DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \
618 tautological-constant-out-of-range-compare int-to-pointer-cast \
619 sign-compare undef missing-field-initializers, \
620 DISABLED_WARNINGS_C_solstudio = \
621 E_INTEGER_OVERFLOW_DETECTED \
622 E_ARG_INCOMPATIBLE_WITH_ARG_L \
623 E_ENUM_VAL_OVERFLOWS_INT_MAX, \
624 DISABLED_WARNINGS_CXX_solstudio := \
625 truncwarn wvarhidenmem wvarhidemem wbadlkginit identexpected \
626 hidevf w_novirtualdescr arrowrtn2, \
627 DISABLED_WARNINGS_microsoft := 4267 4244 4018 4090 4996 4146 4334 4819 4101, \
628 LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
629 $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \
630 $(call SET_SHARED_LIBRARY_ORIGIN), \
631 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
632 LDFLAGS_aix := -Wl$(COMMA)-berok, \
633 LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \
634 LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \
635 LIBS_macosx := -lawt_lwawt -framework CoreText -framework CoreFoundation \
636 -framework CoreGraphics, \
637 LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \
638 $(WIN_AWT_LIB), \
639 ))
706 ifneq ($(OPENJDK_TARGET_OS), solaris)
707 JAWT_LIBS += -lawt
708 endif
709 ifeq ($(ENABLE_HEADLESS_ONLY), false)
710 JAWT_LIBS += -lawt_xawt
711 else
712 JAWT_LIBS += -lawt_headless
713 ifeq ($(OPENJDK_TARGET_OS), linux)
714 JAWT_CFLAGS += -DHEADLESS
715 endif
716 endif
717 endif
718
719 $(eval $(call SetupJdkLibrary, BUILD_LIBJAWT, \
720 NAME := jawt, \
721 EXCLUDE_SRC_PATTERNS := $(LIBJAWT_EXCLUDE_SRC_PATTERNS), \
722 INCLUDE_FILES := $(JAWT_FILES), \
723 OPTIMIZATION := LOW, \
724 CFLAGS := $(CFLAGS_JDKLIB) \
725 $(JAWT_CFLAGS), \
726 DISABLED_WARNINGS_clang := sign-compare, \
727 EXTRA_HEADER_DIRS := \
728 include \
729 common/awt, \
730 LDFLAGS := $(LDFLAGS_JDKLIB) \
731 $(call SET_SHARED_LIBRARY_ORIGIN), \
732 LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
733 LDFLAGS_macosx := -Wl$(COMMA)-rpath$(COMMA)@loader_path, \
734 LIBS_unix := $(JAWT_LIBS) $(JDKLIB_LIBS), \
735 LIBS_solaris := $(X_LIBS) -lXrender, \
736 LIBS_macosx := -framework Cocoa, \
737 ))
738
739 ifeq ($(ENABLE_HEADLESS_ONLY), false)
740 $(BUILD_LIBJAWT): $(BUILD_LIBAWT_XAWT)
741 else
742 $(BUILD_LIBJAWT): $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)awt_headless$(SHARED_LIBRARY_SUFFIX)
743 endif
744
745 ifeq ($(OPENJDK_TARGET_OS), macosx)
746 $(BUILD_LIBJAWT): $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)awt_lwawt$(SHARED_LIBRARY_SUFFIX)
840 LIBSPLASHSCREEN_LIBS += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread -ldl
841 endif
842
843 LIBSPLASHSCREEN_HEADER_DIRS += \
844 libosxapp \
845 java.base:include \
846 java.base:libjava \
847 #
848
849 $(eval $(call SetupJdkLibrary, BUILD_LIBSPLASHSCREEN, \
850 NAME := splashscreen, \
851 EXTRA_SRC := $(LIBSPLASHSCREEN_EXTRA_SRC), \
852 EXCLUDE_SRC_PATTERNS := $(LIBSPLASHSCREEN_EXCLUDE_SRC_PATTERNS), \
853 EXCLUDE_FILES := imageioJPEG.c jpegdecoder.c pngtest.c, \
854 EXCLUDES := $(LIBSPLASHSCREEN_EXCLUDES), \
855 OPTIMIZATION := LOW, \
856 CFLAGS := $(CFLAGS_JDKLIB) $(LIBSPLASHSCREEN_CFLAGS) \
857 $(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(PNG_CFLAGS) $(LIBZ_CFLAGS), \
858 EXTRA_HEADER_DIRS := $(LIBSPLASHSCREEN_HEADER_DIRS), \
859 DISABLED_WARNINGS_gcc := sign-compare type-limits unused-result \
860 maybe-uninitialized shift-negative-value implicit-fallthrough \
861 unused-function, \
862 DISABLED_WARNINGS_clang := incompatible-pointer-types sign-compare, \
863 DISABLED_WARNINGS_solstudio := E_NEWLINE_NOT_LAST E_DECLARATION_IN_CODE \
864 E_STATEMENT_NOT_REACHED, \
865 DISABLED_WARNINGS_microsoft := 4018 4244 4267, \
866 LDFLAGS := $(LDFLAGS_JDKLIB) \
867 $(call SET_SHARED_LIBRARY_ORIGIN), \
868 LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \
869 LDFLAGS_windows := -delayload:user32.dll, \
870 LIBS := $(JDKLIB_LIBS) $(LIBSPLASHSCREEN_LIBS) $(LIBZ_LIBS) \
871 $(GIFLIB_LIBS) $(LIBJPEG_LIBS) $(PNG_LIBS), \
872 LIBS_aix := -liconv, \
873 ))
874
875 TARGETS += $(BUILD_LIBSPLASHSCREEN)
876
877 ifeq ($(OPENJDK_TARGET_OS), macosx)
878 $(BUILD_LIBSPLASHSCREEN): $(call FindLib, $(MODULE), osxapp)
879 endif
880
881 endif
882
901 libosxapp \
902 #
903
904 LIBAWT_LWAWT_CFLAGS := $(X_CFLAGS) $(X_LIBS)
905
906 LIBAWT_LWAWT_EXFILES := fontpath.c awt_Font.c X11Color.c
907 LIBAWT_LWAWT_EXCLUDES := $(TOPDIR)/src/$(MODULE)/unix/native/common/awt/medialib
908
909 $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_LWAWT, \
910 NAME := awt_lwawt, \
911 EXTRA_SRC := $(LIBAWT_LWAWT_EXTRA_SRC), \
912 INCLUDE_FILES := $(LIBAWT_LWAWT_FILES), \
913 EXCLUDE_FILES := $(LIBAWT_LWAWT_EXFILES), \
914 EXCLUDES := $(LIBAWT_LWAWT_EXCLUDES), \
915 OPTIMIZATION := LOW, \
916 CFLAGS := $(CFLAGS_JDKLIB) \
917 $(LIBAWT_LWAWT_CFLAGS), \
918 EXTRA_HEADER_DIRS := $(LIBAWT_LWAWT_EXTRA_HEADER_DIRS), \
919 DISABLED_WARNINGS_clang := incomplete-implementation enum-conversion \
920 deprecated-declarations objc-method-access bitwise-op-parentheses \
921 incompatible-pointer-types parentheses-equality extra-tokens \
922 sign-compare semicolon-before-method-body format-nonliteral undef \
923 pointer-arith, \
924 LDFLAGS := $(LDFLAGS_JDKLIB) \
925 $(call SET_SHARED_LIBRARY_ORIGIN) \
926 -L$(INSTALL_LIBRARIES_HERE), \
927 LIBS := -lawt -lmlib_image -losxapp -ljvm $(LIBM) \
928 -framework Accelerate \
929 -framework ApplicationServices \
930 -framework AudioToolbox \
931 -framework Carbon \
932 -framework Cocoa \
933 -framework Security \
934 -framework ExceptionHandling \
935 -framework JavaNativeFoundation \
936 -framework JavaRuntimeSupport \
937 -framework OpenGL \
938 -framework QuartzCore -ljava, \
939 ))
940
941 TARGETS += $(BUILD_LIBAWT_LWAWT)
942
943 $(BUILD_LIBAWT_LWAWT): $(BUILD_LIBAWT)
944
945 $(BUILD_LIBAWT_LWAWT): $(BUILD_LIBMLIB_IMAGE)
946
947 $(BUILD_LIBAWT_LWAWT): $(call FindLib, $(MODULE), osxapp)
948
949 $(BUILD_LIBAWT_LWAWT): $(call FindLib, java.base, java)
950
951 endif
952
953 ################################################################################
954
955 ifeq ($(OPENJDK_TARGET_OS), macosx)
956
957 $(eval $(call SetupJdkLibrary, BUILD_LIBOSXUI, \
958 NAME := osxui, \
959 OPTIMIZATION := LOW, \
960 CFLAGS := $(CFLAGS_JDKLIB), \
961 EXTRA_HEADER_DIRS := \
962 libawt_lwawt/awt \
963 libosxapp, \
964 DISABLED_WARNINGS_clang := deprecated-declarations sign-compare, \
965 LDFLAGS := $(LDFLAGS_JDKLIB) \
966 $(call SET_SHARED_LIBRARY_ORIGIN) \
967 -Wl$(COMMA)-rpath$(COMMA)@loader_path \
968 -L$(INSTALL_LIBRARIES_HERE), \
969 LIBS := -lawt -losxapp -lawt_lwawt \
970 -framework Cocoa \
971 -framework Carbon \
972 -framework ApplicationServices \
973 -framework JavaNativeFoundation \
974 -framework JavaRuntimeSupport \
975 -ljava -ljvm, \
976 ))
977
978 TARGETS += $(BUILD_LIBOSXUI)
979
980 $(BUILD_LIBOSXUI): $(BUILD_LIBAWT)
981
982 $(BUILD_LIBOSXUI): $(call FindLib, $(MODULE), osxapp)
983
984 $(BUILD_LIBOSXUI): $(BUILD_LIBAWT_LWAWT)
|