Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/JAVA/Openjdk/make/modules/java.desktop/lib/   (Sun/Oracle ©)  Datei vom 13.11.2022 mit Größe 33 kB image not shown  

Quelle  Awt2dLibraries.gmk   Sprache: Shell

 
#
# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

WIN_AWT_LIB := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libawt/awt.lib

LIBAWT_DEFAULT_HEADER_DIRS := \
    common/awt/utility \
    libawt/awt/image \
    libawt/awt/image/cvutils \
    libawt/java2d \
    libawt/java2d/loops \
    libawt/java2d/pipe \
    #

################################################################################

BUILD_LIBMLIB_CFLAGS := -D__USE_J2D_NAMES -D__MEDIALIB_OLD_NAMES -DMLIB_NO_LIBSUNMATH

ifeq ($(call isTargetCpuBits, 64), true)
  BUILD_LIBMLIB_CFLAGS += -DMLIB_OS64BIT
endif

$(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), \
    DISABLED_WARNINGS_gcc := unused-function, \
    LDFLAGS := $(LDFLAGS_JDKLIB) \
        $(call SET_SHARED_LIBRARY_ORIGIN), \
    LIBS := $(JDKLIB_LIBS), \
    LIBS_unix := $(LIBM) $(LIBDL), \
))

$(BUILD_LIBMLIB_IMAGE): $(call FindLib, java.base, java)

TARGETS += $(BUILD_LIBMLIB_IMAGE)

################################################################################

LIBAWT_EXTRA_SRC := \
    common/awt/debug \
    $(TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
    #

ifeq ($(call isTargetOs, windows), true)
  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

ifeq ($(call isTargetOs, linux macosx aix), true)
  LIBAWT_EXFILES += awt_Font.c CUPSfuncs.c fontpath.c X11Color.c
endif

ifeq ($(call isTargetOs, macosx), true)
  LIBAWT_EXFILES += initIDs.c awt/image/cvutils/img_colors.c
endif

ifeq ($(call isTargetOs, windows), true)
  LIBAWT_EXFILES += \
      java2d/d3d/D3DShaderGen.c \
      awt/image/cvutils/img_colors.c \
      #
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 \
    #

LIBAWT_CFLAGS += -D__MEDIALIB_OLD_NAMES -D__USE_J2D_NAMES $(X_CFLAGS)

LIBAWT_CFLAGS += -DMLIB_NO_LIBSUNMATH

ifeq ($(call isTargetOs, windows), true)
  LIBAWT_CFLAGS += -EHsc -DUNICODE -D_UNICODE
  ifeq ($(call isTargetCpuBits, 64), true)
    LIBAWT_CFLAGS += -DMLIB_OS64BIT
  endif

  LIBAWT_RCFLAGS ?= -I$(TOPDIR)/src/java.base/windows/native/launcher/icons
  LIBAWT_VERSIONINFO_RESOURCE := $(TOPDIR)/src/$(MODULE)/windows/native/libawt/windows/awt.rc
endif

ifeq ($(call isTargetOs, linux), true)
  # 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
# about initializing a declared 'extern' cannot be turned off individually. Only
# applies to debug builds. This limitation in gcc is tracked in
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45977
ifeq ($(TOOLCHAIN_TYPE), gcc)
  BUILD_LIBAWT_debug_mem.c_CFLAGS := -w
  # This option improves performance of MaskFill in Java2D by 20% for some gcc
  LIBAWT_CFLAGS += -fgcse-after-reload
endif

$(eval $(call SetupJdkLibrary, BUILD_LIBAWT, \
    NAME := awt, \
    EXTRA_SRC := $(LIBAWT_EXTRA_SRC), \
    EXCLUDES := $(LIBAWT_EXCLUDES), \
    EXCLUDE_FILES := $(LIBAWT_EXFILES), \
    OPTIMIZATION := HIGHEST, \
    CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_CFLAGS), \
    EXTRA_HEADER_DIRS := $(LIBAWT_EXTRA_HEADER_DIRS), \
    DISABLED_WARNINGS_gcc_awt_ImagingLib.c := unused-function sign-compare, \
    DISABLED_WARNINGS_gcc_awt_LoadLibrary.c := unused-result, \
    DISABLED_WARNINGS_gcc_awt_Mlib.c := unused-function, \
    DISABLED_WARNINGS_gcc_awt_parseImage.c := sign-compare unused-function, \
    DISABLED_WARNINGS_gcc_debug_trace.c := unused-function, \
    DISABLED_WARNINGS_gcc_ProcessPath.c := maybe-uninitialized, \
    DISABLED_WARNINGS_gcc_Region.c := maybe-uninitialized, \
    DISABLED_WARNINGS_gcc_SurfaceData.c := unused-value, \
    DISABLED_WARNINGS_gcc_TransformHelper.c := sign-compare, \
    DISABLED_WARNINGS_clang_awt_ImagingLib.c := sign-compare, \
    DISABLED_WARNINGS_clang_awt_parseImage.c := sign-compare, \
    DISABLED_WARNINGS_clang_debug_mem.c := extern-initializer format-nonliteral, \
    DISABLED_WARNINGS_clang_debug_trace.c := format-nonliteral, \
    DISABLED_WARNINGS_clang_Trace.c := format-nonliteral, \
    DISABLED_WARNINGS_clang_TransformHelper.c := sign-compare, \
    DISABLED_WARNINGS_microsoft := 4244 4996, \
    DISABLED_WARNINGS_microsoft_awt_Toolkit.cpp := 4267, \
    DISABLED_WARNINGS_microsoft_OGLContext.c := 4267, \
    LDFLAGS := $(LDFLAGS_JDKLIB) $(call SET_SHARED_LIBRARY_ORIGIN), \
    LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \
    LDFLAGS_windows := -delayload:user32.dll -delayload:gdi32.dll \
        -delayload:shell32.dll -delayload:winmm.dll \
        -delayload:winspool.drv -delayload:imm32.dll \
        -delayload:ole32.dll -delayload:comdlg32.dll \
        -delayload:comctl32.dll -delayload:shlwapi.dll, \
    LIBS_unix := -ljvm -ljava $(LIBM), \
    LIBS_linux :=  $(LIBDL), \
    LIBS_aix := $(LIBDL),\
    LIBS_macosx := -lmlib_image \
        -framework Cocoa \
        -framework OpenGL \
        -framework Metal \
        -framework JavaRuntimeSupport \
        -framework ApplicationServices \
        -framework AudioToolbox, \
    LIBS_windows := kernel32.lib user32.lib gdi32.lib winspool.lib \
        imm32.lib ole32.lib uuid.lib shell32.lib \
        comdlg32.lib winmm.lib comctl32.lib shlwapi.lib \
        delayimp.lib jvm.lib $(WIN_JAVA_LIB) advapi32.lib, \
    VERSIONINFO_RESOURCE := $(LIBAWT_VERSIONINFO_RESOURCE), \
    EXTRA_RCFLAGS := $(LIBAWT_RCFLAGS), \
))

$(BUILD_LIBAWT): $(call FindLib, java.base, java)

ifeq ($(call isTargetOs, macosx), true)
  $(BUILD_LIBAWT): $(BUILD_LIBMLIB_IMAGE)
endif

TARGETS += $(BUILD_LIBAWT)

################################################################################

ifeq ($(call isTargetOs, windows macosx), false)
  ifeq ($(ENABLE_HEADLESS_ONLY), false)

    LIBAWT_XAWT_EXTRA_SRC := \
        common/awt \
        common/java2d \
        common/font \
        #

    LIBAWT_XAWT_EXCLUDES := medialib debug

    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 \
        $(FONTCONFIG_CFLAGS) \
        $(CUPS_CFLAGS)

    ifeq ($(call isTargetOs, linux), true)
      ifeq ($(DISABLE_XRENDER), true)
        LIBAWT_XAWT_CFLAGS += -DDISABLE_XRENDER_BY_DEFAULT=true
      endif
    endif

    LIBAWT_XAWT_LIBS := $(LIBM) -lawt -lXext -lX11 -lXrender $(LIBDL) -lXtst -lXi -ljava -ljvm

    ifeq ($(call isTargetOs, linux), true)
      LIBAWT_XAWT_LIBS += -lpthread
    endif

    $(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) \
            $(X_CFLAGS), \
        WARNINGS_AS_ERRORS_xlc := false, \
        DISABLED_WARNINGS_gcc := int-to-pointer-cast, \
        DISABLED_WARNINGS_gcc_awt_Taskbar.c := parentheses, \
        DISABLED_WARNINGS_gcc_GLXSurfaceData.c := unused-function, \
        DISABLED_WARNINGS_gcc_gtk2_interface.c := parentheses type-limits, \
        DISABLED_WARNINGS_gcc_gtk3_interface.c := parentheses type-limits unused-function, \
        DISABLED_WARNINGS_gcc_OGLBufImgOps.c := format-nonliteral, \
        DISABLED_WARNINGS_gcc_OGLPaints.c := format-nonliteral, \
        DISABLED_WARNINGS_gcc_sun_awt_X11_GtkFileDialogPeer.c := parentheses, \
        DISABLED_WARNINGS_gcc_X11SurfaceData.c := implicit-fallthrough pointer-to-int-cast, \
        DISABLED_WARNINGS_gcc_XlibWrapper.c := type-limits pointer-to-int-cast, \
        DISABLED_WARNINGS_gcc_XRBackendNative.c := maybe-uninitialized, \
        DISABLED_WARNINGS_gcc_XToolkit.c := unused-result, \
        DISABLED_WARNINGS_gcc_XWindow.c := unused-function, \
        LDFLAGS := $(LDFLAGS_JDKLIB) \
            $(call SET_SHARED_LIBRARY_ORIGIN) \
            -L$(INSTALL_LIBRARIES_HERE), \
        LIBS :=  $(X_LIBS) $(LIBAWT_XAWT_LIBS), \
    ))

    $(BUILD_LIBAWT_XAWT): $(call FindLib, java.base, java)

    $(BUILD_LIBAWT_XAWT): $(BUILD_LIBAWT)

    TARGETS += $(BUILD_LIBAWT_XAWT)

  endif
endif

################################################################################

# The fast floor code loses precision.
LCMS_CFLAGS=-DCMS_DONT_USE_FAST_FLOOR -DCMS_NO_HALF_SUPPORT

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 :=
endif

ifeq ($(TOOLCHAIN_TYPE), clang)
 ifeq ($(TOOLCHAIN_VERSION), 10.1)
   # Work around an optimizer bug seen with Xcode 10.1, but fixed by 10.3
   BUILD_LIBLCMS_cmsopt.c_CFLAGS := -O0
 endif
endif

$(eval $(call SetupJdkLibrary, BUILD_LIBLCMS, \
    NAME := lcms, \
    INCLUDE_FILES := $(BUILD_LIBLCMS_INCLUDE_FILES), \
    OPTIMIZATION := HIGHEST, \
    CFLAGS := $(CFLAGS_JDKLIB) \
        $(LCMS_CFLAGS), \
    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 stringop-truncation, \
    DISABLED_WARNINGS_clang := format-nonliteral, \
    LDFLAGS := $(LDFLAGS_JDKLIB) \
        $(call SET_SHARED_LIBRARY_ORIGIN), \
    LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
    LIBS_unix := -lawt -ljvm -ljava $(LCMS_LIBS) $(LIBM), \
    LIBS_windows := $(WIN_AWT_LIB) $(WIN_JAVA_LIB), \
))

TARGETS += $(BUILD_LIBLCMS)

$(BUILD_LIBLCMS): $(BUILD_LIBAWT)

################################################################################

# "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.

ifeq ($(USE_EXTERNAL_LIBJPEG), true)
  LIBJPEG_LIBS := -ljpeg
  BUILD_LIBJAVAJPEG_INCLUDE_FILES := \
      imageioJPEG.c \
      jpegdecoder.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.
  LIBJPEG_HEADERS_FROM_SRC := false
else
  LIBJPEG_LIBS :=
  BUILD_LIBJAVAJPEG_INCLUDE_FILES :=
endif

$(eval $(call SetupJdkLibrary, BUILD_LIBJAVAJPEG, \
    NAME := javajpeg, \
    INCLUDE_FILES := $(BUILD_LIBJAVAJPEG_INCLUDE_FILES), \
    OPTIMIZATION := HIGHEST, \
    CFLAGS := $(CFLAGS_JDKLIB), \
    HEADERS_FROM_SRC := $(LIBJPEG_HEADERS_FROM_SRC), \
    DISABLED_WARNINGS_gcc_imageioJPEG.c := clobbered array-bounds, \
    DISABLED_WARNINGS_gcc_jcmaster.c := implicit-fallthrough, \
    DISABLED_WARNINGS_gcc_jdphuff.c := shift-negative-value, \
    LDFLAGS := $(LDFLAGS_JDKLIB) \
        $(call SET_SHARED_LIBRARY_ORIGIN), \
    LIBS := $(LIBJPEG_LIBS) $(JDKLIB_LIBS), \
    LIBS_windows := $(WIN_JAVA_LIB) jvm.lib, \
))

$(BUILD_LIBJAVAJPEG): $(call FindLib, java.base, java)

TARGETS += $(BUILD_LIBJAVAJPEG)

################################################################################

# Mac and Windows only use the native AWT lib, do not build libawt_headless
ifeq ($(call isTargetOs, windows macosx), false)

  LIBAWT_HEADLESS_EXTRA_SRC := \
      common/font \
      common/java2d \
      $(TOPDIR)/src/$(MODULE)/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
      #

  LIBAWT_HEADLESS_EXCLUDES := medialib

  LIBAWT_HEADLESS_EXTRA_HEADER_DIRS := \
      $(LIBAWT_DEFAULT_HEADER_DIRS) \
      common/awt/debug \
      common/font \
      common/java2d/opengl \
      #

  LIBAWT_HEADLESS_CFLAGS := $(CUPS_CFLAGS) $(FONTCONFIG_CFLAGS) $(X_CFLAGS) \
      -DHEADLESS=true

  $(eval $(call SetupJdkLibrary, BUILD_LIBAWT_HEADLESS, \
      NAME := awt_headless, \
      EXTRA_SRC := $(LIBAWT_HEADLESS_EXTRA_SRC), \
      EXCLUDES := $(LIBAWT_HEADLESS_EXCLUDES), \
      OPTIMIZATION := LOW, \
      CFLAGS := $(CFLAGS_JDKLIB) \
          $(LIBAWT_HEADLESS_CFLAGS), \
      EXTRA_HEADER_DIRS := $(LIBAWT_HEADLESS_EXTRA_HEADER_DIRS), \
      DISABLED_WARNINGS_gcc_X11Renderer.c := unused-function, \
      DISABLED_WARNINGS_gcc_X11SurfaceData.c := unused-function, \
      LDFLAGS := $(LDFLAGS_JDKLIB) \
          $(call SET_SHARED_LIBRARY_ORIGIN), \
      LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
      LIBS_unix := -lawt -ljvm -ljava, \
      LIBS_linux := $(LIBM) $(LIBDL), \
  ))

  $(BUILD_LIBAWT_HEADLESS): $(BUILD_LIBAWT)

  TARGETS += $(BUILD_LIBAWT_HEADLESS)

endif

################################################################################

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 ($(call isTargetOs, windows), true)
    LIBFREETYPE_LIBS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfreetype/freetype.lib
    # freetype now requires you to manually define this (see ftconfig.h)
    BUILD_LIBFREETYPE_CFLAGS += -DDLL_EXPORT
  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_microsoft := 4267 4244 4996, \
      LDFLAGS := $(LDFLAGS_JDKLIB) \
          $(call SET_SHARED_LIBRARY_ORIGIN), \
  ))

  TARGETS += $(BUILD_LIBFREETYPE)
endif

###########################################################################


ifeq ($(USE_EXTERNAL_HARFBUZZ), true)
   LIBFONTMANAGER_EXTRA_SRC =
   BUILD_LIBFONTMANAGER_FONTLIB += $(HARFBUZZ_LIBS)
else
   LIBFONTMANAGER_EXTRA_SRC = libharfbuzz

   ifeq ($(call isTargetOs, windows), false)
     HARFBUZZ_CFLAGS += -DGETPAGESIZE -DHAVE_MPROTECT -DHAVE_PTHREAD \
                        -DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H \
                        -DHB_NO_PRAGMA_GCC_DIAGNOSTIC
   endif
   ifeq ($(call isTargetOs, linux macosx), true)
     HARFBUZZ_CFLAGS += -DHAVE_INTEL_ATOMIC_PRIMITIVES
   endif

   # Early re-canonizing has to be disabled to workaround an internal XlC compiler error
   # when building libharfbuzz
   ifeq ($(call isTargetOs, aix), true)
     HARFBUZZ_CFLAGS += -qdebug=necan
   endif

   # hb-ft.cc is not presently needed, and requires freetype 2.4.2 or later.
   LIBFONTMANAGER_EXCLUDE_FILES += libharfbuzz/hb-ft.cc

   HARFBUZZ_DISABLED_WARNINGS_gcc := missing-field-initializers strict-aliasing \
       unused-result
   HARFBUZZ_DISABLED_WARNINGS_CXX_gcc := class-memaccess
   HARFBUZZ_DISABLED_WARNINGS_clang := missing-field-initializers range-loop-analysis
   HARFBUZZ_DISABLED_WARNINGS_microsoft := 4267 4244

   LIBFONTMANAGER_CFLAGS += $(HARFBUZZ_CFLAGS)

endif

LIBFONTMANAGER_EXTRA_HEADER_DIRS := \
    libharfbuzz \
    common/awt \
    common/awt/utility \
    common/font \
    libawt/java2d \
    libawt/java2d/pipe \
    libawt/java2d/loops \
    #

LIBFONTMANAGER_CFLAGS += $(LIBFREETYPE_CFLAGS)
BUILD_LIBFONTMANAGER_FONTLIB +=  $(LIBFREETYPE_LIBS)

LIBFONTMANAGER_OPTIMIZATION := HIGHEST

ifneq ($(filter $(TOOLCHAIN_TYPE), gcc clang), )
  # gcc (and to an extent clang) is particularly bad at optimizing these files,
  # causing a massive spike in compile time. We don't care about these
  # particular files anyway, so lower optimization level.
  BUILD_LIBFONTMANAGER_hb-subset.cc_OPTIMIZATION := SIZE
  BUILD_LIBFONTMANAGER_hb-subset-plan.cc_OPTIMIZATION := SIZE
endif

ifeq ($(call isTargetOs, windows), true)
  LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
      X11TextRenderer.c
  LIBFONTMANAGER_OPTIMIZATION := HIGHEST
else ifeq ($(call isTargetOs, macosx), true)
  LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
      X11TextRenderer.c \
      fontpath.c \
      lcdglyph.c
else
  LIBFONTMANAGER_EXCLUDE_FILES += fontpath.c \
      lcdglyph.c
endif

LIBFONTMANAGER_CFLAGS += $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS

# 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, \
    CFLAGS := $(CFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \
    CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \
    OPTIMIZATION := $(LIBFONTMANAGER_OPTIMIZATION), \
    CFLAGS_windows = -DCC_NOEX, \
    EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS), \
    EXTRA_SRC := $(LIBFONTMANAGER_EXTRA_SRC), \
    WARNINGS_AS_ERRORS_xlc := false, \
    DISABLED_WARNINGS_gcc := $(HARFBUZZ_DISABLED_WARNINGS_gcc), \
    DISABLED_WARNINGS_CXX_gcc := $(HARFBUZZ_DISABLED_WARNINGS_CXX_gcc), \
    DISABLED_WARNINGS_clang := $(HARFBUZZ_DISABLED_WARNINGS_clang), \
    DISABLED_WARNINGS_microsoft := $(HARFBUZZ_DISABLED_WARNINGS_microsoft), \
    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_aix := -Wl$(COMMA)-berok, \
    LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \
    LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \
    LIBS_macosx := -lawt_lwawt -framework CoreText -framework CoreFoundation -framework CoreGraphics, \
    LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \
        $(WIN_AWT_LIB), \
))

$(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT)

ifeq ($(call isTargetOs, macosx), true)
  $(BUILD_LIBFONTMANAGER): $(call FindLib, $(MODULE), awt_lwawt)
endif

ifeq ($(FREETYPE_TO_USE), bundled)
  $(BUILD_LIBFONTMANAGER): $(BUILD_LIBFREETYPE)
endif

TARGETS += $(BUILD_LIBFONTMANAGER)

################################################################################

ifeq ($(call isTargetOs, windows), true)

  LIBJAWT_CFLAGS := -EHsc -DUNICODE -D_UNICODE

  LIBJAWT_EXTRA_HEADER_DIRS := \
      include \
      common/awt/debug \
      common/awt/utility \
      libawt/awt/image/cvutils \
      libawt/java2d \
      libawt/java2d/windows \
      libawt/windows \
      java.base:libjava \
      #

  ifeq ($(call isTargetCpu, x86), true)
    KERNEL32_LIB := kernel32.lib
  endif

  $(eval $(call SetupJdkLibrary, BUILD_LIBJAWT, \
      NAME := jawt, \
      OPTIMIZATION := LOW, \
      CFLAGS := $(CXXFLAGS_JDKLIB) \
          $(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), \
  ))

  $(BUILD_LIBJAWT): $(BUILD_LIBAWT)

  $(eval $(call SetupCopyFiles, COPY_JAWT_LIB, \
      FILES := $(BUILD_LIBJAWT_IMPORT_LIBRARY), \
      DEST := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \
  ))

  $(COPY_JAWT_LIB): $(BUILD_LIBJAWT)

  TARGETS += $(COPY_JAWT_LIB)

else # not windows

  ifeq ($(call isTargetOs, macosx), true)
    # libjawt on macosx do not use the unix code
    LIBJAWT_EXCLUDE_SRC_PATTERNS := /unix/
  endif

  ifeq ($(call isTargetOs, macosx), true)
    JAWT_LIBS := -lawt_lwawt
  else
    JAWT_LIBS := -lawt
    ifeq ($(ENABLE_HEADLESS_ONLY), false)
      JAWT_LIBS += -lawt_xawt
    else
      JAWT_LIBS += -lawt_headless
      ifeq ($(call isTargetOs, linux), true)
        JAWT_CFLAGS += -DHEADLESS
      endif
    endif
  endif

  $(eval $(call SetupJdkLibrary, BUILD_LIBJAWT, \
      NAME := jawt, \
      EXCLUDE_SRC_PATTERNS := $(LIBJAWT_EXCLUDE_SRC_PATTERNS), \
      INCLUDE_FILES := $(JAWT_FILES), \
      OPTIMIZATION := LOW, \
      CFLAGS := $(CFLAGS_JDKLIB) \
          $(JAWT_CFLAGS), \
      DISABLED_WARNINGS_clang_jawt.m := sign-compare, \
      EXTRA_HEADER_DIRS := \
          include \
          common/awt, \
      LDFLAGS := $(LDFLAGS_JDKLIB) \
          $(call SET_SHARED_LIBRARY_ORIGIN), \
      LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
      LDFLAGS_macosx := -Wl$(COMMA)-rpath$(COMMA)@loader_path, \
      LIBS_unix := $(JAWT_LIBS) $(JDKLIB_LIBS), \
      LIBS_macosx := -framework Cocoa, \
  ))

  ifeq ($(ENABLE_HEADLESS_ONLY), false)
    $(BUILD_LIBJAWT): $(BUILD_LIBAWT_XAWT)
  else
    $(BUILD_LIBJAWT): $(call FindLib, $(MODULE), awt_headless)
  endif

  ifeq ($(call isTargetOs, macosx), true)
   $(BUILD_LIBJAWT): $(call FindLib, $(MODULE), awt_lwawt)
  endif

endif

TARGETS += $(BUILD_LIBJAWT)

################################################################################

ifeq ($(ENABLE_HEADLESS_ONLY), false)

  LIBSPLASHSCREEN_EXTRA_SRC := \
      common/awt/systemscale \
      #

  LIBSPLASHSCREEN_HEADER_DIRS += common/awt/utility

  ifeq ($(USE_EXTERNAL_LIBGIF), false)
    LIBSPLASHSCREEN_HEADER_DIRS += libsplashscreen/giflib
  else
    LIBSPLASHSCREEN_EXCLUDES := giflib
    GIFLIB_LIBS := -lgif
  endif

  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
    LIBJPEG_LIBS := -ljpeg
  endif

  ifeq ($(USE_EXTERNAL_LIBPNG), false)
    LIBSPLASHSCREEN_HEADER_DIRS += libsplashscreen/libpng
  else
    LIBSPLASHSCREEN_EXCLUDES += libpng
  endif

  ifeq ($(USE_EXTERNAL_LIBZ), false)
    LIBSPLASHSCREEN_EXTRA_SRC += java.base:libzip/zlib
  endif

  ifeq ($(call isTargetOs, macosx), true)
    # libsplashscreen on macosx do not use the unix code
    LIBSPLASHSCREEN_EXCLUDE_SRC_PATTERNS := /unix/
  endif

  LIBSPLASHSCREEN_CFLAGS += -DSPLASHSCREEN -DPNG_NO_MMX_CODE \
                            -DPNG_ARM_NEON_OPT=0 -DPNG_ARM_NEON_IMPLEMENTATION=0

  ifeq ($(call isTargetOs, linux), true)
    ifeq ($(call isTargetCpuArch, ppc), true)
      LIBSPLASHSCREEN_CFLAGS += -DPNG_POWERPC_VSX_OPT=0
    endif
  endif

  ifeq ($(call isTargetOs, macosx), true)
    LIBSPLASHSCREEN_CFLAGS += -DWITH_MACOSX

    BUILD_LIBSPLASHSCREEN_java_awt_SplashScreen.c_CFLAGS := -x objective-c -O0
    BUILD_LIBSPLASHSCREEN_splashscreen_gfx_impl.c_CFLAGS := -x objective-c -O0
    BUILD_LIBSPLASHSCREEN_splashscreen_gif.c_CFLAGS := -x objective-c -O0
    BUILD_LIBSPLASHSCREEN_splashscreen_impl.c_CFLAGS := -x objective-c -O0
    BUILD_LIBSPLASHSCREEN_splashscreen_jpeg.c_CFLAGS := -x objective-c -O0
    BUILD_LIBSPLASHSCREEN_splashscreen_png.c_CFLAGS := -x objective-c -O0
    BUILD_LIBSPLASHSCREEN_splashscreen_sys.m_CFLAGS := -O0

  else ifeq ($(call isTargetOs, windows), true)
    LIBSPLASHSCREEN_CFLAGS += -DWITH_WIN32
  else
    LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS)
  endif

  LIBSPLASHSCREEN_LIBS :=

  ifeq ($(call isTargetOs, macosx), true)
    LIBSPLASHSCREEN_LIBS += \
        $(LIBM) -lpthread -liconv -losxapp \
        -framework ApplicationServices \
        -framework Foundation \
        -framework Security \
        -framework Cocoa \
        -framework Metal
  else ifeq ($(call isTargetOs, windows), true)
    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

  LIBSPLASHSCREEN_HEADER_DIRS += \
      libosxapp \
      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 := $(CFLAGS_JDKLIB) $(LIBSPLASHSCREEN_CFLAGS) \
          $(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(PNG_CFLAGS) $(LIBZ_CFLAGS), \
      EXTRA_HEADER_DIRS := $(LIBSPLASHSCREEN_HEADER_DIRS), \
      DISABLED_WARNINGS_gcc_dgif_lib.c := sign-compare, \
      DISABLED_WARNINGS_gcc_jcmaster.c := implicit-fallthrough, \
      DISABLED_WARNINGS_gcc_jdphuff.c := shift-negative-value, \
      DISABLED_WARNINGS_gcc_png.c := maybe-uninitialized, \
      DISABLED_WARNINGS_gcc_pngerror.c := maybe-uninitialized, \
      DISABLED_WARNINGS_gcc_splashscreen_gfx_impl.c := implicit-fallthrough maybe-uninitialized, \
      DISABLED_WARNINGS_gcc_splashscreen_impl.c := implicit-fallthrough sign-compare unused-function, \
      DISABLED_WARNINGS_gcc_splashscreen_sys.c := type-limits unused-result, \
      DISABLED_WARNINGS_clang_dgif_lib.c := sign-compare, \
      DISABLED_WARNINGS_clang_gzwrite.c := format-nonliteral, \
      DISABLED_WARNINGS_clang_splashscreen_impl.c := sign-compare, \
      DISABLED_WARNINGS_clang_splashscreen_png.c := incompatible-pointer-types, \
      DISABLED_WARNINGS_clang_splashscreen_sys.m := deprecated-declarations, \
      DISABLED_WARNINGS_microsoft_dgif_lib.c := 4018 4267, \
      DISABLED_WARNINGS_microsoft_splashscreen_impl.c := 4018 4267 4244, \
      DISABLED_WARNINGS_microsoft_splashscreen_png.c := 4267, \
      DISABLED_WARNINGS_microsoft_splashscreen_sys.c := 4267 4244, \
      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, \
  ))

  TARGETS += $(BUILD_LIBSPLASHSCREEN)

  ifeq ($(call isTargetOs, macosx), true)
    $(BUILD_LIBSPLASHSCREEN): $(call FindLib, $(MODULE), osxapp)
  endif

endif

################################################################################

ifeq ($(call isTargetOs, macosx), true)

  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_EXTRA_HEADER_DIRS := \
      $(LIBAWT_DEFAULT_HEADER_DIRS) \
      libawt_lwawt/awt \
      libawt_lwawt/font \
      libawt_lwawt/java2d/opengl \
      libawt_lwawt/java2d/metal \
      include \
      common/awt/debug \
      common/java2d/opengl \
      libosxapp \
      #

  LIBAWT_LWAWT_CFLAGS := $(X_CFLAGS) $(X_LIBS)

  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) \
          $(LIBAWT_LWAWT_CFLAGS), \
      EXTRA_HEADER_DIRS := $(LIBAWT_LWAWT_EXTRA_HEADER_DIRS), \
      DISABLED_WARNINGS_clang := incomplete-implementation deprecated-declarations \
          objc-method-access incompatible-pointer-types extra-tokens sign-compare undef, \
      DISABLED_WARNINGS_clang_AWTWindow.m := bitwise-op-parentheses, \
      DISABLED_WARNINGS_clang_CFileDialog.m := semicolon-before-method-body, \
      DISABLED_WARNINGS_clang_CGGlyphImages.m := pointer-arith, \
      DISABLED_WARNINGS_clang_CGLLayer.m := semicolon-before-method-body, \
      DISABLED_WARNINGS_clang_ImageSurfaceData.m := enum-conversion parentheses-equality, \
      DISABLED_WARNINGS_clang_MTLBlitLoops.m := pointer-arith, \
      DISABLED_WARNINGS_clang_MTLPipelineStatesStorage.m := semicolon-before-method-body, \
      DISABLED_WARNINGS_clang_MTLVertexCache.m := pointer-arith, \
      DISABLED_WARNINGS_clang_OGLBufImgOps.c := format-nonliteral, \
      DISABLED_WARNINGS_clang_OGLPaints.c := format-nonliteral, \
      DISABLED_WARNINGS_clang_PrinterView.m := enum-conversion, \
      LDFLAGS := $(LDFLAGS_JDKLIB) \
          $(call SET_SHARED_LIBRARY_ORIGIN) \
          -L$(INSTALL_LIBRARIES_HERE), \
      LIBS := -lawt -lmlib_image -losxapp -ljvm $(LIBM) \
          -framework Accelerate \
          -framework ApplicationServices \
          -framework AudioToolbox \
          -framework Carbon \
          -framework Cocoa \
          -framework Metal \
          -framework Security \
          -framework ExceptionHandling \
          -framework JavaRuntimeSupport \
          -framework OpenGL \
          -framework QuartzCore -ljava, \
  ))

  TARGETS += $(BUILD_LIBAWT_LWAWT)

  $(BUILD_LIBAWT_LWAWT): $(BUILD_LIBAWT)

  $(BUILD_LIBAWT_LWAWT): $(BUILD_LIBMLIB_IMAGE)

  $(BUILD_LIBAWT_LWAWT): $(call FindLib, $(MODULE), osxapp)

  $(BUILD_LIBAWT_LWAWT): $(call FindLib, java.base, java)

endif

################################################################################

# MACOSX_METAL_VERSION_MIN specifies the lowest version of Macosx
# that should be used to compile Metal shaders. We support Metal
# pipeline only on Macosx >=10.14. For Macosx versions <10.14 even if
# we enable Metal pipeline using -Dsun.java2d.metal=true, at
# runtime we force it to use OpenGL pipeline. And MACOSX_VERSION_MIN
# for aarch64 has always been >10.14 so we use continue to use
# MACOSX_VERSION_MIN for aarch64.
ifeq ($(OPENJDK_TARGET_CPU_ARCH), xaarch64)
    MACOSX_METAL_VERSION_MIN=$(MACOSX_VERSION_MIN)
else
    MACOSX_METAL_VERSION_MIN=10.14.0
endif

ifeq ($(call isTargetOs, macosx), true)
  SHADERS_SRC := $(TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/shaders.metal
  SHADERS_SUPPORT_DIR := $(SUPPORT_OUTPUTDIR)/native/java.desktop/libosxui
  SHADERS_AIR := $(SHADERS_SUPPORT_DIR)/shaders.air
  SHADERS_LIB := $(INSTALL_LIBRARIES_HERE)/shaders.metallib

  $(eval $(call SetupExecute, metal_shaders, \
      INFO := Running metal on $(notdir $(SHADERS_SRC)) (for libosxui.dylib), \
      DEPS := $(SHADERS_SRC), \
      OUTPUT_FILE := $(SHADERS_AIR), \
      SUPPORT_DIR := $(SHADERS_SUPPORT_DIR), \
      COMMAND := $(METAL) -c -std=osx-metal2.0 \
          -mmacosx-version-min=$(MACOSX_METAL_VERSION_MIN) \
          -o $(SHADERS_AIR) $(SHADERS_SRC), \
  ))

  $(eval $(call SetupExecute, metallib_shaders, \
      INFO := Running metallib on $(notdir $(SHADERS_AIR)) (for libosxui.dylib), \
      DEPS := $(SHADERS_AIR), \
      OUTPUT_FILE := $(SHADERS_LIB), \
      SUPPORT_DIR := $(SHADERS_SUPPORT_DIR), \
      COMMAND := $(METALLIB) -o $(SHADERS_LIB) $(SHADERS_AIR), \
  ))

  TARGETS += $(SHADERS_LIB)

  $(eval $(call SetupJdkLibrary, BUILD_LIBOSXUI, \
      NAME := osxui, \
      OPTIMIZATION := LOW, \
      CFLAGS := $(CFLAGS_JDKLIB), \
      EXTRA_HEADER_DIRS := \
          libawt_lwawt/awt \
          libosxapp, \
      DISABLED_WARNINGS_clang_AquaFileView.m := deprecated-declarations sign-compare, \
      DISABLED_WARNINGS_clang_ScreenMenu.m := deprecated-declarations, \
      LDFLAGS := $(LDFLAGS_JDKLIB) \
          $(call SET_SHARED_LIBRARY_ORIGIN) \
          -Wl$(COMMA)-rpath$(COMMA)@loader_path \
          -L$(INSTALL_LIBRARIES_HERE), \
      LIBS := -lawt -losxapp -lawt_lwawt \
          -framework Cocoa \
          -framework Metal \
          -framework Carbon \
          -framework ApplicationServices \
          -framework JavaRuntimeSupport \
          -ljava -ljvm, \
  ))

  TARGETS += $(BUILD_LIBOSXUI)
  $(BUILD_LIBOSXUI): $(SHADERS_LIB)

  $(BUILD_LIBOSXUI): $(BUILD_LIBAWT)

  $(BUILD_LIBOSXUI): $(call FindLib, $(MODULE), osxapp)

  $(BUILD_LIBOSXUI): $(BUILD_LIBAWT_LWAWT)

endif

91%


¤ Dauer der Verarbeitung: 0.14 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.