diff -r edf8a95b46e5 -r 01b558efd286 make/lib/Awt2dLibraries.gmk --- a/make/lib/Awt2dLibraries.gmk Tue Feb 13 15:28:07 2018 +0100 +++ b/make/lib/Awt2dLibraries.gmk Mon Jun 11 11:23:20 2018 +0200 @@ -27,45 +27,38 @@ WIN_AWT_LIB := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libawt/awt.lib +LIBAWT_DEFAULT_HEADER_DIRS := \ + libawt/awt/image \ + libawt/awt/image/cvutils \ + libawt/java2d \ + libawt/java2d/loops \ + libawt/java2d/pipe \ + # + ################################################################################ -BUILD_LIBMLIB_SRC := $(TOPDIR)/src/java.desktop/share/native/libmlib_image \ - $(TOPDIR)/src/java.desktop/share/native/common/awt/medialib -BUILD_LIBMLIB_CFLAGS := -D__USE_J2D_NAMES -D__MEDIALIB_OLD_NAMES \ - $(addprefix -I, $(BUILD_LIBMLIB_SRC)) \ - -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libmlib_image +# We must not include java.desktop/unix/native/libmlib_image, which is only +# for usage by solaris-sparc in libmlib_image_v. +BUILD_LIBMLIB_EXCLUDE_SRC_PATTERNS := unix -BUILD_LIBMLIB_LDLIBS := - -BUILD_LIBMLIB_CFLAGS += -DMLIB_NO_LIBSUNMATH +BUILD_LIBMLIB_CFLAGS := -D__USE_J2D_NAMES -D__MEDIALIB_OLD_NAMES -DMLIB_NO_LIBSUNMATH ifeq ($(OPENJDK_TARGET_CPU_BITS), 64) BUILD_LIBMLIB_CFLAGS += -DMLIB_OS64BIT endif -ifneq ($(OPENJDK_TARGET_OS), windows) - BUILD_LIBMLIB_LDLIBS += $(LIBM) $(LIBDL) -endif - -$(eval $(call SetupNativeCompilation,BUILD_LIBMLIB_IMAGE, \ - LIBRARY := mlib_image, \ - OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ - SRC := $(BUILD_LIBMLIB_SRC), \ +$(eval $(call SetupJdkLibrary, BUILD_LIBMLIB_IMAGE, \ + NAME := mlib_image, \ + EXTRA_SRC := common/awt/medialib, \ EXCLUDE_FILES := mlib_c_ImageBlendTable.c, \ + EXCLUDE_SRC_PATTERNS := $(BUILD_LIBMLIB_EXCLUDE_SRC_PATTERNS), \ OPTIMIZATION := HIGHEST, \ CFLAGS := $(CFLAGS_JDKLIB) \ $(BUILD_LIBMLIB_CFLAGS), \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ - LIBS := $(BUILD_LIBMLIB_LDLIBS) \ - $(JDKLIB_LIBS), \ - LIBS_solaris := -lc, \ - VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ - RC_FLAGS := $(RC_FLAGS) \ - -D "JDK_FNAME=mlib_image.dll" \ - -D "JDK_INTERNAL_NAME=mlib_image" \ - -D "JDK_FTYPE=0x2L", \ - OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libmlib_image, \ + LIBS := $(JDKLIB_LIBS), \ + LIBS_unix := $(LIBM) $(LIBDL), \ )) $(BUILD_LIBMLIB_IMAGE): $(call FindLib, java.base, java) @@ -76,14 +69,19 @@ ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH), solaris-sparc) - LIBMLIB_IMAGE_V_SRC := $(TOPDIR)/src/java.desktop/share/native/libmlib_image \ - $(TOPDIR)/src/java.desktop/unix/native/libmlib_image \ - $(TOPDIR)/src/java.desktop/share/native/common/awt/medialib \ - $(TOPDIR)/src/java.desktop/unix/native/common/awt/medialib \ - # - LIBMLIB_IMAGE_V_CFLAGS := $(TOPDIR)/src/java.desktop/unix/native/libmlib_image/vis_$(OPENJDK_TARGET_CPU_BITS).il \ - $(addprefix -I, $(LIBMLIB_IMAGE_V_SRC)) \ - # + # libmlib_image_v is basically built from mlib_image sources, with some additions + # and some exclusions. + LIBMLIB_IMAGE_V_SRC := \ + libmlib_image \ + common/awt/medialib \ + # + + LIBMLIB_IMAGE_V_CFLAGS := -xarch=sparcvis -D__USE_J2D_NAMES -D__MEDIALIB_OLD_NAMES \ + $(TOPDIR)/src/$(MODULE)/unix/native/libmlib_image/vis_$(OPENJDK_TARGET_CPU_BITS).il + + ifeq ($(OPENJDK_TARGET_CPU_BITS), 64) + LIBMLIB_IMAGE_V_CFLAGS += -DMLIB_OS64BIT + endif BUILD_LIBMLIB_IMAGE_V_EXFILES := \ awt_ImagingLib.c \ @@ -103,21 +101,16 @@ mlib_c_ImageLookUp_f.c \ # - LIBMLIB_IMAGE_V_CFLAGS += $(filter-out -DMLIB_NO_LIBSUNMATH, $(BUILD_LIBMLIB_CFLAGS)) - - $(eval $(call SetupNativeCompilation,BUILD_LIBMLIB_IMAGE_V, \ - LIBRARY := mlib_image_v, \ - OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + $(eval $(call SetupJdkLibrary, BUILD_LIBMLIB_IMAGE_V, \ + NAME := mlib_image_v, \ SRC := $(LIBMLIB_IMAGE_V_SRC), \ EXCLUDE_FILES := $(BUILD_LIBMLIB_IMAGE_V_EXFILES), \ OPTIMIZATION := HIGHEST, \ - CFLAGS := -xarch=sparcvis \ - $(LIBMLIB_IMAGE_V_CFLAGS) \ - $(CFLAGS_JDKLIB), \ + CFLAGS := $(CFLAGS_JDKLIB) \ + $(LIBMLIB_IMAGE_V_CFLAGS), \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ - LIBS := -ljava -ljvm -lc $(BUILD_LIBMLIB_LDLIBS), \ - OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libmlib_image_v, \ + LIBS := -ljava -ljvm $(LIBM) $(LIBDL), \ )) $(BUILD_LIBMLIB_IMAGE_V): $(call FindLib, java.base, java) @@ -128,18 +121,22 @@ ################################################################################ -LIBAWT_DIRS := $(TOPDIR)/src/java.desktop/share/native/libawt \ - $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt \ - $(TOPDIR)/src/java.desktop/share/native/common/awt/debug \ - $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \ +LIBAWT_EXTRA_SRC := \ + common/awt/debug \ + $(TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \ # -ifeq ($(OPENJDK_TARGET_OS), aix) - LIBAWT_DIRS += $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS)/native/libawt +ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH), solaris-sparc) + LIBAWT_EXTRA_SRC += $(TOPDIR)/src/$(MODULE)/share/native/common/awt/medialib endif ifeq ($(OPENJDK_TARGET_OS), windows) - LIBAWT_DIRS += $(TOPDIR)/src/java.desktop/share/native/common/awt/utility + LIBAWT_EXTRA_SRC += \ + $(TOPDIR)/src/$(MODULE)/share/native/common/awt/utility \ + $(TOPDIR)/src/$(MODULE)/share/native/common/font \ + $(TOPDIR)/src/$(MODULE)/share/native/common/java2d/opengl \ + $(TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt/systemscale \ + # endif ifneq ($(filter $(OPENJDK_TARGET_OS), solaris linux macosx aix), ) @@ -150,33 +147,45 @@ LIBAWT_EXFILES += initIDs.c awt/image/cvutils/img_colors.c endif -LIBAWT_CFLAGS += -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \ - $(addprefix -I, $(shell find $(LIBAWT_DIRS) -type d)) \ - $(LIBJAVA_HEADER_FLAGS) \ - $(addprefix -I, $(BUILD_LIBMLIB_IMAGE_SRC)) \ +ifeq ($(OPENJDK_TARGET_OS), windows) + LIBAWT_EXFILES += \ + java2d/d3d/D3DShaderGen.c \ + awt/image/cvutils/img_colors.c \ + # +endif + +ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU), solaris-sparcv9) + LIBAWT_EXFILES += java2d/loops/MapAccelFunc.c +else + LIBAWT_EXCLUDES += \ + $(TOPDIR)/src/$(MODULE)/unix/native/libawt/awt/medialib \ + $(TOPDIR)/src/$(MODULE)/unix/native/libawt/java2d/loops \ + $(TOPDIR)/src/$(MODULE)/unix/native/common/awt/medialib \ + # +endif + +LIBAWT_EXTRA_HEADER_DIRS := \ + $(LIBAWT_DEFAULT_HEADER_DIRS) \ + $(call GetJavaHeaderDir, java.base) \ + libawt/awt/medialib \ + libawt/java2d/d3d \ + libawt/java2d/opengl \ + libawt/java2d/windows \ + libawt/windows \ + common/awt/medialib \ + libmlib_image \ + include \ + java.base:libjava \ + java.base:include \ # LIBAWT_CFLAGS += -D__MEDIALIB_OLD_NAMES -D__USE_J2D_NAMES $(X_CFLAGS) -ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH), solaris-sparc) - LIBAWT_CFLAGS += -DMLIB_ADD_SUFF - LIBAWT_CFLAGS += -xarch=sparcvis - - LIBAWT_CFLAGS += $(TOPDIR)/src/java.desktop/unix/native/libmlib_image/vis_$(OPENJDK_TARGET_CPU_BITS).il - LIBAWT_DIRS += $(TOPDIR)/src/java.desktop/share/native/common/awt/medialib - LIBAWT_EXFILES += java2d/loops/MapAccelFunc.c +ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU), solaris-sparcv9) + LIBAWT_CFLAGS += -xarch=sparcvis -DMLIB_ADD_SUFF \ + $(TOPDIR)/src/$(MODULE)/unix/native/libmlib_image/vis_$(OPENJDK_TARGET_CPU_BITS).il - ifeq ($(OPENJDK_TARGET_CPU), sparcv9) - LIBAWT_ASFLAGS = -P -xarch=v9a - else - LIBAWT_ASFLAGS = -P -xarch=v8plusa - endif -else - LIBAWT_EXCLUDES += \ - $(TOPDIR)/src/java.desktop/unix/native/libawt/awt/medialib \ - $(TOPDIR)/src/java.desktop/unix/native/libawt/java2d/loops \ - $(TOPDIR)/src/java.desktop/unix/native/common/awt/medialib \ - # + LIBAWT_ASFLAGS = -P -xarch=v9a endif ifneq ($(OPENJDK_TARGET_OS), solaris) @@ -184,29 +193,18 @@ endif ifeq ($(OPENJDK_TARGET_OS), windows) - LIBAWT_DIRS += $(TOPDIR)/src/java.desktop/share/native/common/font \ - $(TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \ - $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt/systemscale \ - # Why does libawt need java.base headers? - LIBAWT_CFLAGS += -I$(TOPDIR)/src/java.desktop/share/native/common/font \ - -I$(TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \ - -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/opengl \ - -I$(TOPDIR)/src/java.desktop/windows/native/include \ - -I$(TOPDIR)/src/java.desktop/share/native/include \ - -I$(SUPPORT_OUTPUTDIR)/headers/java.base \ - # - LIBAWT_EXFILES += \ - java2d/d3d/D3DShaderGen.c \ - awt/image/cvutils/img_colors.c \ - # - LIBAWT_CFLAGS += -EHsc -DUNICODE -D_UNICODE ifeq ($(OPENJDK_TARGET_CPU_BITS), 64) LIBAWT_CFLAGS += -DMLIB_OS64BIT endif LIBAWT_RC_FLAGS ?= -I $(TOPDIR)/src/java.base/windows/native/launcher/icons - LIBAWT_VERSIONINFO_RESOURCE := $(TOPDIR)/src/java.desktop/windows/native/libawt/windows/awt.rc + LIBAWT_VERSIONINFO_RESOURCE := $(TOPDIR)/src/$(MODULE)/windows/native/libawt/windows/awt.rc +endif + +ifeq ($(OPENJDK_TARGET_OS), linux) + # FIXME: This is probably not what we want to do, but keep it now for compatibility. + LIBAWT_CFLAGS += $(EXPORT_ALL_SYMBOLS) endif # Turn off all warnings for debug_mem.c This is needed because the specific warning @@ -218,19 +216,19 @@ LIBAWT_CFLAGS += -fgcse-after-reload endif -$(eval $(call SetupNativeCompilation,BUILD_LIBAWT, \ - LIBRARY := awt, \ - OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ - SRC := $(LIBAWT_DIRS), \ +$(eval $(call SetupJdkLibrary, BUILD_LIBAWT, \ + NAME := awt, \ + EXTRA_SRC := $(LIBAWT_EXTRA_SRC), \ EXCLUDES := $(LIBAWT_EXCLUDES), \ EXCLUDE_FILES := $(LIBAWT_EXFILES), \ OPTIMIZATION := LOW, \ CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_CFLAGS), \ + EXTRA_HEADER_DIRS := $(LIBAWT_EXTRA_HEADER_DIRS), \ DISABLED_WARNINGS_gcc := sign-compare unused-result maybe-uninitialized \ format-nonliteral parentheses, \ DISABLED_WARNINGS_clang := logical-op-parentheses extern-initializer, \ DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE, \ - DISABLED_WARNINGS_microsoft := 4297 4244 4267 4996, \ + DISABLED_WARNINGS_microsoft := 4244 4267 4996, \ ASFLAGS := $(LIBAWT_ASFLAGS), \ LDFLAGS := $(LDFLAGS_JDKLIB) $(call SET_SHARED_LIBRARY_ORIGIN), \ LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \ @@ -241,7 +239,7 @@ -delayload:comctl32.dll -delayload:shlwapi.dll, \ LIBS_unix := -ljvm -ljava $(LIBM), \ LIBS_linux := $(LIBDL), \ - LIBS_solaris := $(LIBDL) -lc, \ + LIBS_solaris := $(LIBDL), \ LIBS_aix := $(LIBDL),\ LIBS_macosx := -lmlib_image \ -framework Cocoa \ @@ -259,7 +257,6 @@ -D "JDK_FNAME=awt.dll" \ -D "JDK_INTERNAL_NAME=awt" \ -D "JDK_FTYPE=0x2L", \ - OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libawt, \ )) $(BUILD_LIBAWT): $(call FindLib, java.base, java) @@ -272,38 +269,26 @@ ################################################################################ -ifeq ($(findstring $(OPENJDK_TARGET_OS),windows macosx),) +ifeq ($(findstring $(OPENJDK_TARGET_OS), windows macosx), ) ifeq ($(ENABLE_HEADLESS_ONLY), false) - LIBAWT_XAWT_DIRS := \ - $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt_xawt \ - $(TOPDIR)/src/java.desktop/share/native/common/awt/debug \ - $(TOPDIR)/src/java.desktop/share/native/common/awt/utility \ - $(TOPDIR)/src/java.desktop/share/native/common/font \ - $(TOPDIR)/src/java.desktop/share/native/common/java2d \ - $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d \ - $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \ + LIBAWT_XAWT_EXTRA_SRC := \ + common/awt \ + common/java2d \ + common/font \ # - ifneq ($(filter $(OPENJDK_TARGET_OS),linux solaris aix), ) - LIBAWT_XAWT_DIRS += $(TOPDIR)/src/java.desktop/unix/native/common/awt/systemscale - endif - LIBAWT_XAWT_EXCLUDES := medialib - LIBAWT_XAWT_CFLAGS := $(addprefix -I, $(shell $(FIND) $(LIBAWT_XAWT_DIRS) -type d)) \ - -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \ - -I$(TOPDIR)/src/java.desktop/share/native/include \ - -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS)/native/include \ - -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/include \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d \ - -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d/loops \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d/pipe \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image \ - -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/font \ - $(LIBJAVA_HEADER_FLAGS) + LIBAWT_XAWT_EXTRA_HEADER_DIRS := \ + $(LIBAWT_DEFAULT_HEADER_DIRS) \ + libawt_xawt/awt \ + include \ + common/awt/debug \ + common/awt/systemscale \ + common/font \ + common/java2d/opengl \ + common/java2d/x11 \ # LIBAWT_XAWT_CFLAGS += -DXAWT -DXAWT_HACK \ @@ -321,7 +306,7 @@ endif endif - LIBAWT_XAWT_LIBS := $(LIBM) -lawt -lXext -lX11 -lXrender $(LIBDL) -lXtst -lXi -ljava -ljvm -lc + LIBAWT_XAWT_LIBS := $(LIBM) -lawt -lXext -lX11 -lXrender $(LIBDL) -lXtst -lXi -ljava -ljvm ifeq ($(OPENJDK_TARGET_OS), linux) LIBAWT_XAWT_LIBS += -lpthread @@ -336,12 +321,12 @@ BUILD_LIBAWT_XAWT_awt_Font.c_CFLAGS := -w # initializing a declared 'extern' BUILD_LIBAWT_XAWT_debug_mem.c_CFLAGS := -w - endif + endif - $(eval $(call SetupNativeCompilation,BUILD_LIBAWT_XAWT, \ - LIBRARY := awt_xawt, \ - OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ - SRC := $(LIBAWT_XAWT_DIRS), \ + $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_XAWT, \ + NAME := awt_xawt, \ + EXTRA_SRC := $(LIBAWT_XAWT_EXTRA_SRC), \ + EXTRA_HEADER_DIRS := $(LIBAWT_XAWT_EXTRA_HEADER_DIRS), \ EXCLUDES := $(LIBAWT_XAWT_EXCLUDES), \ OPTIMIZATION := LOW, \ CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_XAWT_CFLAGS) \ @@ -357,12 +342,6 @@ $(call SET_SHARED_LIBRARY_ORIGIN) \ -L$(INSTALL_LIBRARIES_HERE), \ LIBS := $(X_LIBS) $(LIBAWT_XAWT_LIBS), \ - VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ - RC_FLAGS := $(RC_FLAGS) \ - -D "JDK_FNAME=xawt.dll" \ - -D "JDK_INTERNAL_NAME=xawt" \ - -D "JDK_FTYPE=0x2L", \ - OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libawt_xawt, \ )) $(BUILD_LIBAWT_XAWT): $(call FindLib, java.base, java) @@ -376,37 +355,34 @@ ################################################################################ -LIBLCMS_SRC := $(TOPDIR)/src/java.desktop/share/native/liblcms -LIBLCMS_CPPFLAGS += -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d \ - -I$(TOPDIR)/src/java.desktop/share/native/common/awt/debug \ - $(LIBJAVA_HEADER_FLAGS) \ - # # The fast floor code loses precision. LCMS_CFLAGS=-DCMS_DONT_USE_FAST_FLOOR +LCMS_CFLAGS_JDKLIB := $(filter-out -xc99=%none, $(CFLAGS_JDKLIB)) + ifeq ($(USE_EXTERNAL_LCMS), true) # If we're using an external library, we'll just need the wrapper part. # By including it explicitly, all other files will be excluded. BUILD_LIBLCMS_INCLUDE_FILES := LCMS.c + # If we're using an external library, we can't include our own SRC path + # as includes, instead the system headers should be used. + LIBLCMS_HEADERS_FROM_SRC := false else BUILD_LIBLCMS_INCLUDE_FILES := - # If we're using the bundled library, we'll need to include it in the - # include path explicitly. Otherwise the system headers will be used. - LIBLCMS_CPPFLAGS += $(addprefix -I, $(LIBLCMS_SRC)) endif -$(eval $(call SetupNativeCompilation,BUILD_LIBLCMS, \ - LIBRARY := lcms, \ - OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ - SRC := $(LIBLCMS_SRC), \ +$(eval $(call SetupJdkLibrary, BUILD_LIBLCMS, \ + NAME := lcms, \ INCLUDE_FILES := $(BUILD_LIBLCMS_INCLUDE_FILES), \ OPTIMIZATION := HIGHEST, \ - CFLAGS := $(filter-out -xc99=%none, $(CFLAGS_JDKLIB)) \ - $(LIBLCMS_CPPFLAGS) \ + CFLAGS := $(LCMS_CFLAGS_JDKLIB) \ $(LCMS_CFLAGS), \ CFLAGS_solaris := -xc99=no_lib, \ CFLAGS_windows := -DCMS_IS_WINDOWS_, \ + EXTRA_HEADER_DIRS := \ + common/awt/debug \ + libawt/java2d, \ + HEADERS_FROM_SRC := $(LIBLCMS_HEADERS_FROM_SRC), \ DISABLED_WARNINGS_gcc := format-nonliteral type-limits misleading-indentation, \ DISABLED_WARNINGS_clang := tautological-compare, \ DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \ @@ -414,19 +390,8 @@ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ - LDFLAGS_solaris := /usr/lib$(OPENJDK_TARGET_CPU_ISADIR)/libm.so.2, \ - LIBS_unix := -lawt -ljvm -ljava $(LCMS_LIBS), \ - LIBS_linux := $(LIBM), \ - LIBS_macosx := $(LIBM), \ - LIBS_solaris := -lc, \ - LIBS_aix := $(LIBM),\ + LIBS_unix := -lawt -ljvm -ljava $(LCMS_LIBS) $(LIBM), \ LIBS_windows := $(WIN_AWT_LIB) $(WIN_JAVA_LIB), \ - VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ - RC_FLAGS := $(RC_FLAGS) \ - -D "JDK_FNAME=lcms.dll" \ - -D "JDK_INTERNAL_NAME=lcms" \ - -D "JDK_FTYPE=0x2L", \ - OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/liblcms, \ )) TARGETS += $(BUILD_LIBLCMS) @@ -435,55 +400,38 @@ ################################################################################ -LIBJAVAJPEG_SRC += $(TOPDIR)/src/java.desktop/share/native/libjavajpeg - +# "DISABLED_WARNINGS_gcc := clobbered" rationale: # Suppress gcc warnings like "variable might be clobbered by 'longjmp' # or 'vfork'": this warning indicates that some variable is placed to # a register by optimized compiler and it's value might be lost on longjmp(). # Recommended way to avoid such warning is to declare the variable as # volatile to prevent the optimization. However, this approach does not # work because we have to declare all variables as volatile in result. -#ifndef CROSS_COMPILE_ARCH -# CC_43_OR_NEWER := \ -# $(shell $(EXPR) $(CC_MAJORVER) \> 4 \| \ -# \( $(CC_MAJORVER) = 4 \& $(CC_MINORVER) \>= 3 \) ) -# ifeq ($(CC_43_OR_NEWER), 1) -# BUILD_LIBJAVAJPEG_CFLAGS_linux += -Wno-clobbered -# endif -#endif ifeq ($(USE_EXTERNAL_LIBJPEG), true) LIBJPEG_LIBS := -ljpeg BUILD_LIBJAVAJPEG_INCLUDE_FILES := \ imageioJPEG.c \ jpegdecoder.c - BUILD_LIBJAVAJPEG_HEADERS := + # If we're using an external library, we can't include our own SRC path + # as includes, instead the system headers should be used. + LIBJPEG_HEADERS_FROM_SRC := false else LIBJPEG_LIBS := BUILD_LIBJAVAJPEG_INCLUDE_FILES := - BUILD_LIBJAVAJPEG_HEADERS := $(addprefix -I, $(LIBJAVAJPEG_SRC)) endif -$(eval $(call SetupNativeCompilation,BUILD_LIBJAVAJPEG, \ - LIBRARY := javajpeg, \ - OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ - SRC := $(LIBJAVAJPEG_SRC), \ +$(eval $(call SetupJdkLibrary, BUILD_LIBJAVAJPEG, \ + NAME := javajpeg, \ INCLUDE_FILES := $(BUILD_LIBJAVAJPEG_INCLUDE_FILES), \ OPTIMIZATION := HIGHEST, \ - CFLAGS := $(CFLAGS_JDKLIB) $(BUILD_LIBJAVAJPEG_HEADERS) \ - $(LIBJAVA_HEADER_FLAGS) \ - -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop, \ + CFLAGS := $(CFLAGS_JDKLIB), \ + HEADERS_FROM_SRC := $(LIBJPEG_HEADERS_FROM_SRC), \ DISABLED_WARNINGS_gcc := clobbered implicit-fallthrough shift-negative-value, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ LIBS := $(LIBJPEG_LIBS) $(JDKLIB_LIBS), \ LIBS_windows := $(WIN_JAVA_LIB) jvm.lib, \ - VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ - RC_FLAGS := $(RC_FLAGS) \ - -D "JDK_FNAME=javajpeg.dll" \ - -D "JDK_INTERNAL_NAME=javajpeg" \ - -D "JDK_FTYPE=0x2L", \ - OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjavajpeg, \ )) $(BUILD_LIBJAVAJPEG): $(call FindLib, java.base, java) @@ -495,43 +443,32 @@ # Mac and Windows only use the native AWT lib, do not build libawt_headless ifeq ($(findstring $(OPENJDK_TARGET_OS), windows macosx),) - LIBAWT_HEADLESS_DIRS := $(TOPDIR)/src/java.desktop/unix/native/libawt_headless/awt \ - $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \ - $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d \ - $(TOPDIR)/src/java.desktop/share/native/common/java2d \ - $(TOPDIR)/src/java.desktop/share/native/common/font \ + LIBAWT_HEADLESS_EXTRA_SRC := \ + common/font \ + common/java2d \ + $(TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \ # LIBAWT_HEADLESS_EXCLUDES := medialib - LIBAWT_HEADLESS_CFLAGS := -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \ - $(addprefix -I, $(LIBAWT_HEADLESS_DIRS)) \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d \ - -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d/loops \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d/pipe \ - -I$(TOPDIR)/src/java.desktop/share/native/common/awt/debug \ - -I$(TOPDIR)/src/java.desktop/share/native/common/font \ - -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/font \ - -I$(TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \ - -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/opengl \ - $(LIBJAVA_HEADER_FLAGS) \ + + LIBAWT_HEADLESS_EXTRA_HEADER_DIRS := \ + $(LIBAWT_DEFAULT_HEADER_DIRS) \ + common/awt/debug \ + common/font \ + common/java2d/opengl \ # - $(eval $(call SetupNativeCompilation,BUILD_LIBAWT_HEADLESS, \ - LIBRARY := awt_headless, \ - OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ - SRC := $(LIBAWT_HEADLESS_DIRS), \ + LIBAWT_HEADLESS_CFLAGS := $(CUPS_CFLAGS) $(FONTCONFIG_CFLAGS) $(X_CFLAGS) \ + -DHEADLESS=true -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" + + $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_HEADLESS, \ + NAME := awt_headless, \ + EXTRA_SRC := $(LIBAWT_HEADLESS_EXTRA_SRC), \ EXCLUDES := $(LIBAWT_HEADLESS_EXCLUDES), \ OPTIMIZATION := LOW, \ CFLAGS := $(CFLAGS_JDKLIB) \ - -DHEADLESS=true \ - -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" \ - $(CUPS_CFLAGS) \ - $(FONTCONFIG_CFLAGS) \ - $(X_CFLAGS) \ $(LIBAWT_HEADLESS_CFLAGS), \ + EXTRA_HEADER_DIRS := $(LIBAWT_HEADLESS_EXTRA_HEADER_DIRS), \ DISABLED_WARNINGS_xlc := 1506-356, \ DISABLED_WARNINGS_solstudio := E_EMPTY_TRANSLATION_UNIT, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ @@ -539,8 +476,7 @@ LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ LIBS_unix := -lawt -ljvm -ljava, \ LIBS_linux := $(LIBM) $(LIBDL), \ - LIBS_solaris := $(LIBM) $(LIBDL) $(LIBCXX) -lc, \ - OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libawt_headless, \ + LIBS_solaris := $(LIBM) $(LIBDL) $(LIBCXX), \ )) # AIX warning explanation: @@ -555,18 +491,41 @@ ################################################################################ -LIBFONTMANAGER_SRC := $(TOPDIR)/src/java.desktop/share/native/libfontmanager \ - $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libfontmanager -LIBFONTMANAGER_CFLAGS := \ - $(addprefix -I, $(shell $(FIND) \ - $(LIBFONTMANAGER_SRC) \ - $(TOPDIR)/src/java.desktop/share/native/libawt \ - $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt \ - $(TOPDIR)/src/java.desktop/share/native/common \ - $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common -type d)) \ - -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \ - $(LIBJAVA_HEADER_FLAGS) \ - # +ifeq ($(FREETYPE_TO_USE), system) + # For use by libfontmanager: + LIBFREETYPE_CFLAGS := $(FREETYPE_CFLAGS) + LIBFREETYPE_LIBS := $(FREETYPE_LIBS) +else + BUILD_LIBFREETYPE_HEADER_DIRS := $(TOPDIR)/src/$(MODULE)/share/native/libfreetype/include + BUILD_LIBFREETYPE_CFLAGS := -DFT2_BUILD_LIBRARY $(EXPORT_ALL_SYMBOLS) + + # For use by libfontmanager: + LIBFREETYPE_CFLAGS := -I$(BUILD_LIBFREETYPE_HEADER_DIRS) + ifeq ($(OPENJDK_TARGET_OS), windows) + LIBFREETYPE_LIBS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfreetype/freetype.lib + else + LIBFREETYPE_LIBS := -lfreetype + endif + + $(eval $(call SetupJdkLibrary, BUILD_LIBFREETYPE, \ + NAME := freetype, \ + OPTIMIZATION := HIGHEST, \ + CFLAGS := $(CFLAGS_JDKLIB) \ + $(BUILD_LIBFREETYPE_CFLAGS), \ + EXTRA_HEADER_DIRS := $(BUILD_LIBFREETYPE_HEADER_DIRS), \ + DISABLED_WARNINGS_solstudio := \ + E_STATEMENT_NOT_REACHED \ + E_END_OF_LOOP_CODE_NOT_REACHED, \ + DISABLED_WARNINGS_microsoft := 4267 4244 4312, \ + DISABLED_WARNINGS_gcc := implicit-fallthrough, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + )) + + TARGETS += $(BUILD_LIBFREETYPE) +endif + +########################################################################### #### Begin harfbuzz configuration @@ -595,8 +554,18 @@ #### End harfbuzz configuration -LIBFONTMANAGER_CFLAGS += $(FREETYPE_CFLAGS) -BUILD_LIBFONTMANAGER_FONTLIB += $(FREETYPE_LIBS) +LIBFONTMANAGER_EXTRA_HEADER_DIRS := \ + libfontmanager/harfbuzz \ + libfontmanager/harfbuzz/hb-ucdn \ + common/awt \ + common/font \ + libawt/java2d \ + libawt/java2d/pipe \ + libawt/java2d/loops \ + # + +LIBFONTMANAGER_CFLAGS += $(LIBFREETYPE_CFLAGS) +BUILD_LIBFONTMANAGER_FONTLIB += $(LIBFREETYPE_LIBS) LIBFONTMANAGER_OPTIMIZATION := HIGH @@ -604,7 +573,6 @@ LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \ X11TextRenderer.c LIBFONTMANAGER_OPTIMIZATION := HIGHEST - LIBFONTMANAGER_CFLAGS += -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/windows else ifeq ($(OPENJDK_TARGET_OS), macosx) LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \ X11TextRenderer.c \ @@ -615,7 +583,7 @@ lcdglyph.c endif -LIBFONTMANAGER_CFLAGS += $(FONT_HEADERS) $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS +LIBFONTMANAGER_CFLAGS += $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS ifeq ($(TOOLCHAIN_TYPE), gcc) # Turn off all warnings for sunFont.c. This is needed because the specific warning @@ -625,10 +593,12 @@ BUILD_LIBFONTMANAGER_ExtensionSubtables.cpp_CXXFLAGS := -fno-strict-aliasing endif -$(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \ - LIBRARY := fontmanager, \ - OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfontmanager, \ - SRC := $(LIBFONTMANAGER_SRC), \ +# LDFLAGS clarification: +# Filter relevant linker flags disallowing unresolved symbols as we cannot +# build-time decide to which library to link against (libawt_headless or +# libawt_xawt). See JDK-8196516 for details. +$(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \ + NAME := fontmanager, \ EXCLUDE_FILES := $(LIBFONTMANAGER_EXCLUDE_FILES) \ AccelGlyphCache.c, \ TOOLCHAIN := TOOLCHAIN_LINK_CXX, \ @@ -636,6 +606,7 @@ CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \ OPTIMIZATION := $(LIBFONTMANAGER_OPTIMIZATION), \ CFLAGS_windows = -DCC_NOEX, \ + EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS), \ WARNINGS_AS_ERRORS_xlc := false, \ DISABLED_WARNINGS_gcc := sign-compare int-to-pointer-cast \ type-limits missing-field-initializers implicit-fallthrough, \ @@ -651,44 +622,27 @@ truncwarn wvarhidenmem wvarhidemem wbadlkginit identexpected \ hidevf w_novirtualdescr arrowrtn2, \ DISABLED_WARNINGS_microsoft := 4267 4244 4018 4090 4996 4146 4334 4819 4101, \ - LDFLAGS := $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \ + LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \ + $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ - LDFLAGS_macosx := -undefined dynamic_lookup, \ + LDFLAGS_aix := -Wl$(COMMA)-berok, \ LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \ LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \ - LIBS_linux := -lc, \ - LIBS_solaris := -lawt_headless -lc, \ - LIBS_aix := -lawt_headless,\ + LIBS_macosx := -lawt_lwawt -framework CoreText -framework CoreFoundation \ + -framework CoreGraphics, \ LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \ $(WIN_AWT_LIB), \ - VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ - RC_FLAGS := $(RC_FLAGS) \ - -D "JDK_FNAME=fontmanager.dll" \ - -D "JDK_INTERNAL_NAME=fontmanager" \ - -D "JDK_FTYPE=0x2L", \ - OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfontmanager, \ )) -$(INSTALL_LIBRARIES_HERE)/$(call SHARED_LIBRARY,fontmanager): $(BUILD_LIBFONTMANAGER_TARGET) - $(install-file) - ifneq ($(FREETYPE_BUNDLE_LIB_PATH), ) - ifeq ($(OPENJDK_TARGET_OS), macosx) - # If bundling freetype on macosx, we need to rewrite the rpath location - # in the libfontmanager library to point to the bundled location - $(INSTALL_NAME_TOOL) -change \ - `$(OTOOL) -D $(FREETYPE_BUNDLE_LIB_PATH)/$(call SHARED_LIBRARY,freetype) | $(TAIL) -n1` \ - '@rpath/$(call SHARED_LIBRARY,freetype)' \ - $@ - endif - endif - -BUILD_LIBFONTMANAGER += $(INSTALL_LIBRARIES_HERE)/$(call SHARED_LIBRARY,fontmanager) - $(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT) -ifneq (, $(findstring $(OPENJDK_TARGET_OS), solaris aix)) - $(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT_HEADLESS) +ifeq ($(OPENJDK_TARGET_OS), macosx) + $(BUILD_LIBFONTMANAGER): $(call FindLib, $(MODULE), awt_lwawt) +endif + +ifeq ($(FREETYPE_TO_USE), bundled) + $(BUILD_LIBFONTMANAGER): $(BUILD_LIBFREETYPE) endif TARGETS += $(BUILD_LIBFONTMANAGER) @@ -696,44 +650,38 @@ ################################################################################ ifeq ($(OPENJDK_TARGET_OS), windows) - LIBJAWT_SRC := $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libjawt - LIBJAWT_CFLAGS := -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/windows \ - -I$(TOPDIR)/src/java.desktop/share/native/common/awt/debug \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \ - -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d/windows \ - -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \ - -I$(TOPDIR)/src/java.desktop/windows/native/include \ - -I$(TOPDIR)/src/java.desktop/share/native/include \ - $(LIBJAVA_HEADER_FLAGS) \ + + LIBJAWT_CFLAGS := -EHsc -DUNICODE -D_UNICODE + + LIBJAWT_EXTRA_HEADER_DIRS := \ + include \ + common/awt/debug \ + libawt/awt/image/cvutils \ + libawt/java2d \ + libawt/java2d/windows \ + libawt/windows \ + java.base:include \ + java.base:libjava \ # ifeq ($(OPENJDK_TARGET_CPU), x86) KERNEL32_LIB := kernel32.lib endif - $(eval $(call SetupNativeCompilation,BUILD_LIBJAWT, \ - LIBRARY := jawt, \ - OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ - SRC := $(LIBJAWT_SRC), \ - INCLUDE_FILES := $(LIBJAWT_INCLUDE_FILES), \ + + $(eval $(call SetupJdkLibrary, BUILD_LIBJAWT, \ + NAME := jawt, \ OPTIMIZATION := LOW, \ CFLAGS := $(CXXFLAGS_JDKLIB) \ - -EHsc -DUNICODE -D_UNICODE \ $(LIBJAWT_CFLAGS), \ + EXTRA_HEADER_DIRS := $(LIBJAWT_EXTRA_HEADER_DIRS), \ LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK), \ LIBS := $(JDKLIB_LIBS) $(KERNEL32_LIB) advapi32.lib $(WIN_AWT_LIB), \ - VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ - RC_FLAGS := $(RC_FLAGS) \ - -D "JDK_FNAME=jawt.dll" \ - -D "JDK_INTERNAL_NAME=jawt" \ - -D "JDK_FTYPE=0x2L", \ - OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjawt, \ )) $(BUILD_LIBJAWT): $(BUILD_LIBAWT) $(eval $(call SetupCopyFiles, COPY_JAWT_LIB, \ - FILES := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjawt/$(LIBRARY_PREFIX)jawt$(STATIC_LIBRARY_SUFFIX), \ + FILES := $(BUILD_LIBJAWT_IMPORT_LIBRARY), \ DEST := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \ )) @@ -744,17 +692,9 @@ else # OPENJDK_TARGET_OS not windows ifeq ($(OPENJDK_TARGET_OS), macosx) - LIBJAWT_SRC := $(TOPDIR)/src/java.desktop/macosx/native/libjawt - else - LIBJAWT_SRC := $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libjawt + # libjawt on macosx do not use the unix code + LIBJAWT_EXCLUDE_SRC_PATTERNS := unix endif - LIBJAWT_CFLAGS := \ - -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \ - -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS)/native/include \ - -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/include \ - -I$(TOPDIR)/src/java.desktop/share/native/include \ - $(LIBJAVA_HEADER_FLAGS) \ - # ifeq ($(OPENJDK_TARGET_OS), macosx) JAWT_LIBS := -lawt_lwawt @@ -767,20 +707,22 @@ JAWT_LIBS += -lawt_xawt else JAWT_LIBS += -lawt_headless - HEADLESS_CFLAG += -DHEADLESS + ifeq ($(OPENJDK_TARGET_OS), linux) + JAWT_CFLAGS += -DHEADLESS + endif endif endif - $(eval $(call SetupNativeCompilation,BUILD_LIBJAWT, \ - LIBRARY := jawt, \ - OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ - SRC := $(LIBJAWT_SRC), \ + $(eval $(call SetupJdkLibrary, BUILD_LIBJAWT, \ + NAME := jawt, \ + EXCLUDE_SRC_PATTERNS := $(LIBJAWT_EXCLUDE_SRC_PATTERNS), \ INCLUDE_FILES := $(JAWT_FILES), \ OPTIMIZATION := LOW, \ CFLAGS := $(CFLAGS_JDKLIB) \ - $(LIBJAWT_CFLAGS), \ - CFLAGS_linux := $(HEADLESS_CFLAG), \ - CFLAGS_macosx := $(LIBJAWT_CFLAGS_macosx), \ + $(JAWT_CFLAGS), \ + EXTRA_HEADER_DIRS := \ + include \ + common/awt, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ @@ -788,7 +730,6 @@ LIBS_unix := $(JAWT_LIBS) $(JDKLIB_LIBS), \ LIBS_solaris := $(X_LIBS) -lXrender, \ LIBS_macosx := -framework Cocoa, \ - OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjawt, \ )) ifeq ($(ENABLE_HEADLESS_ONLY), false) @@ -809,52 +750,56 @@ ifeq ($(ENABLE_HEADLESS_ONLY), false) - LIBSPLASHSCREEN_DIRS := \ - $(TOPDIR)/src/java.desktop/share/native/libjavajpeg \ - $(TOPDIR)/src/java.desktop/share/native/libsplashscreen \ + LIBSPLASHSCREEN_EXTRA_SRC := \ + common/awt/systemscale \ # - ifeq ($(USE_EXTERNAL_LIBGIF), true) - GIFLIB_LIBS := -lgif + ifeq ($(USE_EXTERNAL_LIBGIF), false) + LIBSPLASHSCREEN_HEADER_DIRS += libsplashscreen/giflib + else LIBSPLASHSCREEN_EXCLUDES := giflib - else - LIBSPLASHSCREEN_CFLAGS += -I$(TOPDIR)/src/java.desktop/share/native/libsplashscreen/giflib + GIFLIB_LIBS := -lgif endif - ifeq ($(USE_EXTERNAL_LIBJPEG), true) - LIBJPEG_LIBS := -ljpeg + ifeq ($(USE_EXTERNAL_LIBJPEG), false) + # While the following ought to work, it will currently pull in the closed + # additions to this library, and this was not done previously in the build. + # LIBSPLASHSCREEN_EXTRA_SRC += libjavajpeg + LIBSPLASHSCREEN_EXTRA_SRC += $(TOPDIR)/src/java.desktop/share/native/libjavajpeg else - LIBSPLASHSCREEN_DIRS += $(TOPDIR)/src/java.desktop/share/native/libjavajpeg - LIBJPEG_CFLAGS := -I$(TOPDIR)/src/java.desktop/share/native/libjavajpeg + LIBJPEG_LIBS := -ljpeg endif ifeq ($(USE_EXTERNAL_LIBPNG), false) - LIBSPLASHSCREEN_DIRS += $(TOPDIR)/src/java.desktop/share/native/libsplashscreen/libpng + LIBSPLASHSCREEN_HEADER_DIRS += libsplashscreen/libpng + + ifeq ($(OPENJDK_TARGET_OS), macosx) + ifeq ($(USE_EXTERNAL_LIBZ), true) + # When building our own libpng and using an external libz, we need to + # inject our own libz.h to tweak the exported ZLIB_VERNUM macro. See + # $(TOPDIR)/src/java.desktop/macosx/native/libsplashscreen/libpng/zlibwrapper/zlib.h + # for details. This must be specified with -iquote, not -I to avoid a + # circular include. + LIBSPLASHSCREEN_CFLAGS += -iquote $(TOPDIR)/src/$(MODULE)/macosx/native/libsplashscreen/libpng/zlibwrapper + endif + endif else LIBSPLASHSCREEN_EXCLUDES += libpng endif - ifneq ($(OPENJDK_TARGET_OS), macosx) - LIBSPLASHSCREEN_DIRS += $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libsplashscreen - else - LIBSPLASHSCREEN_DIRS += $(TOPDIR)/src/java.desktop/macosx/native/libsplashscreen + ifeq ($(USE_EXTERNAL_LIBZ), false) + LIBSPLASHSCREEN_EXTRA_SRC += java.base:libzip/zlib endif - ifneq ($(filter $(OPENJDK_TARGET_OS),linux solaris aix), ) - LIBSPLASHSCREEN_DIRS += $(TOPDIR)/src/java.desktop/unix/native/common/awt/systemscale + ifeq ($(OPENJDK_TARGET_OS), macosx) + # libsplashscreen on macosx do not use the unix code + LIBSPLASHSCREEN_EXCLUDE_SRC_PATTERNS := unix endif - ifeq ($(OPENJDK_TARGET_OS), windows) - LIBSPLASHSCREEN_DIRS += $(TOPDIR)/src/java.desktop/windows/native/common/awt/systemscale - endif - LIBSPLASHSCREEN_CFLAGS += -DSPLASHSCREEN -DPNG_NO_MMX_CODE -DPNG_ARM_NEON_OPT=0 \ - $(addprefix -I, $(LIBSPLASHSCREEN_DIRS)) \ - $(LIBJAVA_HEADER_FLAGS) \ - # + LIBSPLASHSCREEN_CFLAGS += -DSPLASHSCREEN -DPNG_NO_MMX_CODE -DPNG_ARM_NEON_OPT=0 ifeq ($(OPENJDK_TARGET_OS), macosx) LIBSPLASHSCREEN_CFLAGS += -DWITH_MACOSX - LIBSPLASHSCREEN_CFLAGS += -I$(TOPDIR)/src/java.desktop/macosx/native/libosxapp BUILD_LIBSPLASHSCREEN_java_awt_SplashScreen.c_CFLAGS := -x objective-c -O0 BUILD_LIBSPLASHSCREEN_splashscreen_gfx_impl.c_CFLAGS := -x objective-c -O0 @@ -872,22 +817,7 @@ LIBSPLASHSCREEN_LIBS := - ifeq ($(USE_EXTERNAL_LIBZ), false) - LIBSPLASHSCREEN_DIRS += $(TOPDIR)/src/java.base/share/native/libzip/zlib - else - ifeq ($(OPENJDK_TARGET_OS), macosx) - ifeq ($(USE_EXTERNAL_LIBPNG), false) - # When building our own libpng and using an external libz, we need to - # inject our own libz.h to tweak the exported ZLIB_VERNUM macro. See - # $(TOPDIR)/src/java.desktop/macosx/native/libsplashscreen/libpng/zlib.h - # for details. - LIBSPLASHSCREEN_CFLAGS += -iquote $(TOPDIR)/src/java.desktop/macosx/native/libsplashscreen/libpng - endif - endif - endif - ifeq ($(OPENJDK_TARGET_OS), macosx) - LIBSPLASHSCREEN_LDFLAGS := -L$(INSTALL_LIBRARIES_HERE) LIBSPLASHSCREEN_LIBS += \ $(LIBM) -lpthread -liconv -losxapp \ -framework ApplicationServices \ @@ -895,44 +825,46 @@ -framework Cocoa \ -framework JavaNativeFoundation else ifeq ($(OPENJDK_TARGET_OS), windows) - LIBSPLASHSCREEN_LDFLAGS := -delayload:user32.dll LIBSPLASHSCREEN_LIBS += kernel32.lib user32.lib gdi32.lib delayimp.lib $(WIN_JAVA_LIB) jvm.lib else LIBSPLASHSCREEN_LIBS += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread -ldl endif - $(eval $(call SetupNativeCompilation,BUILD_LIBSPLASHSCREEN, \ - LIBRARY := splashscreen, \ - OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ - SRC := $(LIBSPLASHSCREEN_DIRS), \ + LIBSPLASHSCREEN_HEADER_DIRS += \ + libosxapp \ + java.base:include \ + java.base:libjava \ + # + + $(eval $(call SetupJdkLibrary, BUILD_LIBSPLASHSCREEN, \ + NAME := splashscreen, \ + EXTRA_SRC := $(LIBSPLASHSCREEN_EXTRA_SRC), \ + EXCLUDE_SRC_PATTERNS := $(LIBSPLASHSCREEN_EXCLUDE_SRC_PATTERNS), \ EXCLUDE_FILES := imageioJPEG.c jpegdecoder.c pngtest.c, \ EXCLUDES := $(LIBSPLASHSCREEN_EXCLUDES), \ OPTIMIZATION := LOW, \ - CFLAGS := $(LIBSPLASHSCREEN_CFLAGS) $(CFLAGS_JDKLIB) \ + CFLAGS := $(CFLAGS_JDKLIB) $(LIBSPLASHSCREEN_CFLAGS) \ $(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(PNG_CFLAGS) $(LIBZ_CFLAGS), \ + EXTRA_HEADER_DIRS := $(LIBSPLASHSCREEN_HEADER_DIRS), \ DISABLED_WARNINGS_gcc := sign-compare type-limits unused-result \ maybe-uninitialized shift-negative-value implicit-fallthrough, \ DISABLED_WARNINGS_clang := incompatible-pointer-types, \ DISABLED_WARNINGS_solstudio := E_NEWLINE_NOT_LAST E_DECLARATION_IN_CODE \ E_STATEMENT_NOT_REACHED, \ DISABLED_WARNINGS_microsoft := 4018 4244 4267, \ - LDFLAGS := $(LIBSPLASHSCREEN_LDFLAGS) $(LDFLAGS_JDKLIB) \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ + LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \ + LDFLAGS_windows := -delayload:user32.dll, \ LIBS := $(JDKLIB_LIBS) $(LIBSPLASHSCREEN_LIBS) $(LIBZ_LIBS) \ $(GIFLIB_LIBS) $(LIBJPEG_LIBS) $(PNG_LIBS), \ LIBS_aix := -liconv, \ - VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ - RC_FLAGS := $(RC_FLAGS) \ - -D "JDK_FNAME=splashscreen.dll" \ - -D "JDK_INTERNAL_NAME=splashscreen" \ - -D "JDK_FTYPE=0x2L", \ - OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libsplashscreen, \ )) TARGETS += $(BUILD_LIBSPLASHSCREEN) ifeq ($(OPENJDK_TARGET_OS), macosx) - $(BUILD_LIBSPLASHSCREEN): $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)osxapp$(SHARED_LIBRARY_SUFFIX) + $(BUILD_LIBSPLASHSCREEN): $(call FindLib, $(MODULE), osxapp) endif endif @@ -941,50 +873,38 @@ ifeq ($(OPENJDK_TARGET_OS), macosx) - LIBAWT_LWAWT_DIRS := \ - $(TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt \ - $(TOPDIR)/src/java.desktop/unix/native/common/awt \ - $(TOPDIR)/src/java.desktop/share/native/common/font \ - $(TOPDIR)/src/java.desktop/share/native/common/java2d \ + LIBAWT_LWAWT_EXTRA_SRC := \ + $(TOPDIR)/src/$(MODULE)/unix/native/common/awt \ + $(TOPDIR)/src/$(MODULE)/share/native/common/font \ + $(TOPDIR)/src/$(MODULE)/share/native/common/java2d \ # - LIBAWT_LWAWT_CFLAGS := \ - $(addprefix -I, $(LIBAWT_LWAWT_DIRS)) \ - -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \ - -I$(TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/awt \ - -I$(TOPDIR)/src/java.desktop/unix/native/libawt_xawt/awt \ - -I$(TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/font \ - -I$(TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl \ - -I$(TOPDIR)/src/java.desktop/share/native/common/awt/debug \ - -I$(TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \ - -I$(TOPDIR)/src/java.desktop/macosx/native/include \ - -I$(TOPDIR)/src/java.desktop/share/native/include \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d \ - -I$(TOPDIR)/src/java.desktop/unix/native/libawt/java2d \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d/loops \ - -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d/pipe \ - -I$(TOPDIR)/src/java.desktop/share/native/libmlib_image/ \ - -I$(TOPDIR)/src/java.desktop/macosx/native/libosxapp \ - $(LIBJAVA_HEADER_FLAGS) \ + LIBAWT_LWAWT_EXTRA_HEADER_DIRS := \ + $(LIBAWT_DEFAULT_HEADER_DIRS) \ + libawt_lwawt/awt \ + libawt_lwawt/font \ + libawt_lwawt/java2d/opengl \ + include \ + common/awt/debug \ + common/java2d/opengl \ + libosxapp \ # - LIBAWT_LWAWT_EXFILES := fontpath.c awt_Font.c X11Color.c - LIBAWT_LWAWT_EXCLUDES := $(TOPDIR)/src/java.desktop/unix/native/common/awt/medialib + LIBAWT_LWAWT_CFLAGS := $(X_CFLAGS) $(X_LIBS) - $(eval $(call SetupNativeCompilation,BUILD_LIBAWT_LWAWT, \ - LIBRARY := awt_lwawt, \ - OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ - SRC := $(LIBAWT_LWAWT_DIRS), \ + LIBAWT_LWAWT_EXFILES := fontpath.c awt_Font.c X11Color.c + LIBAWT_LWAWT_EXCLUDES := $(TOPDIR)/src/$(MODULE)/unix/native/common/awt/medialib + + $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_LWAWT, \ + NAME := awt_lwawt, \ + EXTRA_SRC := $(LIBAWT_LWAWT_EXTRA_SRC), \ INCLUDE_FILES := $(LIBAWT_LWAWT_FILES), \ EXCLUDE_FILES := $(LIBAWT_LWAWT_EXFILES), \ EXCLUDES := $(LIBAWT_LWAWT_EXCLUDES), \ OPTIMIZATION := LOW, \ CFLAGS := $(CFLAGS_JDKLIB) \ - $(X_CFLAGS) \ - $(X_LIBS) \ $(LIBAWT_LWAWT_CFLAGS), \ + EXTRA_HEADER_DIRS := $(LIBAWT_LWAWT_EXTRA_HEADER_DIRS), \ DISABLED_WARNINGS_clang := incomplete-implementation enum-conversion \ deprecated-declarations objc-method-access bitwise-op-parentheses \ incompatible-pointer-types parentheses-equality extra-tokens, \ @@ -1003,7 +923,6 @@ -framework JavaRuntimeSupport \ -framework OpenGL \ -framework QuartzCore -ljava, \ - OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libawt_lwawt, \ )) TARGETS += $(BUILD_LIBAWT_LWAWT) @@ -1012,7 +931,7 @@ $(BUILD_LIBAWT_LWAWT): $(BUILD_LIBMLIB_IMAGE) - $(BUILD_LIBAWT_LWAWT): $(BUILD_LIBOSXAPP) + $(BUILD_LIBAWT_LWAWT): $(call FindLib, $(MODULE), osxapp) $(BUILD_LIBAWT_LWAWT): $(call FindLib, java.base, java) @@ -1022,18 +941,14 @@ ifeq ($(OPENJDK_TARGET_OS), macosx) - $(eval $(call SetupNativeCompilation,BUILD_LIBOSXUI, \ - LIBRARY := osxui, \ - OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ - SRC := $(TOPDIR)/src/java.desktop/macosx/native/libosxui, \ + $(eval $(call SetupJdkLibrary, BUILD_LIBOSXUI, \ + NAME := osxui, \ OPTIMIZATION := LOW, \ - CFLAGS := $(CFLAGS_JDKLIB) \ - -I$(TOPDIR)/src/java.desktop/macosx/native/libosxui \ - -I$(TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/awt \ - -I$(TOPDIR)/src/java.desktop/macosx/native/libosxapp \ - -I$(TOPDIR)/src/java.base/share/native/libjava \ - -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \ - -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop, \ + CFLAGS := $(CFLAGS_JDKLIB), \ + EXTRA_HEADER_DIRS := \ + libawt_lwawt/awt \ + libosxapp, \ + DISABLED_WARNINGS_clang := deprecated-declarations, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN) \ -Wl$(COMMA)-rpath$(COMMA)@loader_path \ @@ -1045,19 +960,16 @@ -framework JavaNativeFoundation \ -framework JavaRuntimeSupport \ -ljava -ljvm, \ - OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libosxui, \ )) TARGETS += $(BUILD_LIBOSXUI) $(BUILD_LIBOSXUI): $(BUILD_LIBAWT) - $(BUILD_LIBOSXUI): $(BUILD_LIBOSXAPP) + $(BUILD_LIBOSXUI): $(call FindLib, $(MODULE), osxapp) $(BUILD_LIBOSXUI): $(BUILD_LIBAWT_LWAWT) - #$(BUILD_LIBOSXUI): $(call FindLib, java.base, java) - endif ################################################################################