< prev index next >

make/lib/CoreLibraries.gmk

Print this page
@  rev 51624 : 8210416: [linux] Poor StrictMath performance due to non-optimized compilation
|  Summary: Compile fdlibm with -O2 -ffp-contract=off on gcc/clang arches.
~  Reviewed-by: aph, erikj, dholmes, darcy


  22 # or visit www.oracle.com if you need additional information or have any
  23 # questions.
  24 #
  25 
  26 WIN_VERIFY_LIB := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libverify/verify.lib
  27 
  28 # Hook to include the corresponding custom file, if present.
  29 $(eval $(call IncludeCustomExtension, lib/CoreLibraries.gmk))
  30 
  31 
  32 ##########################################################################################
  33 # libfdlibm is statically linked with libjava below and not delivered into the
  34 # product on its own.
  35 
  36 BUILD_LIBFDLIBM_OPTIMIZATION := NONE
  37 
  38 ifeq ($(OPENJDK_TARGET_OS), solaris)
  39   BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
  40 endif
  41 
  42 ifeq ($(OPENJDK_TARGET_OS), linux)
  43   ifeq ($(OPENJDK_TARGET_CPU), ppc64)
  44     BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
  45   else ifeq ($(OPENJDK_TARGET_CPU), ppc64le)
  46     BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
  47   else ifeq ($(OPENJDK_TARGET_CPU), s390x)
  48     BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
  49   else ifeq ($(OPENJDK_TARGET_CPU), aarch64)
  50     BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
  51   endif
  52 endif
  53 
  54 LIBFDLIBM_SRC := $(TOPDIR)/src/java.base/share/native/libfdlibm
  55 LIBFDLIBM_CFLAGS := -I$(LIBFDLIBM_SRC)
  56 
  57 ifneq ($(OPENJDK_TARGET_OS), macosx)
  58   $(eval $(call SetupNativeCompilation, BUILD_LIBFDLIBM, \
  59       NAME := fdlibm, \
  60       TYPE := STATIC_LIBRARY, \
  61       OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
  62       SRC := $(LIBFDLIBM_SRC), \
  63       OPTIMIZATION := $(BUILD_LIBFDLIBM_OPTIMIZATION), \
  64       CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \
  65       CFLAGS_windows_debug := -DLOGGING, \
  66       CFLAGS_aix := -qfloat=nomaf, \
  67       CFLAGS_linux_ppc64 := -ffp-contract=off, \
  68       CFLAGS_linux_ppc64le := -ffp-contract=off, \
  69       CFLAGS_linux_s390x := -ffp-contract=off, \
  70       CFLAGS_linux_aarch64 := -ffp-contract=off, \
  71       DISABLED_WARNINGS_gcc := sign-compare misleading-indentation, \
  72       DISABLED_WARNINGS_microsoft := 4146 4244 4018, \
  73       ARFLAGS := $(ARFLAGS), \
  74       OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
  75   ))
  76 
  77 else
  78 
  79   # On macosx the old build does partial (incremental) linking of fdlibm instead of
  80   # a plain static library.
  81   $(eval $(call SetupNativeCompilation, BUILD_LIBFDLIBM_MAC, \
  82       NAME := fdlibm, \
  83       OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
  84       SRC := $(LIBFDLIBM_SRC), \
  85       CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \
  86       LDFLAGS := -nostdlib $(ARFLAGS), \
  87       OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
  88   ))
  89 
  90   BUILD_LIBFDLIBM := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/$(LIBRARY_PREFIX)fdlibm$(STATIC_LIBRARY_SUFFIX)




  22 # or visit www.oracle.com if you need additional information or have any
  23 # questions.
  24 #
  25 
  26 WIN_VERIFY_LIB := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libverify/verify.lib
  27 
  28 # Hook to include the corresponding custom file, if present.
  29 $(eval $(call IncludeCustomExtension, lib/CoreLibraries.gmk))
  30 
  31 
  32 ##########################################################################################
  33 # libfdlibm is statically linked with libjava below and not delivered into the
  34 # product on its own.
  35 
  36 BUILD_LIBFDLIBM_OPTIMIZATION := NONE
  37 
  38 ifeq ($(OPENJDK_TARGET_OS), solaris)
  39   BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
  40 endif
  41 
  42 # If FDLIBM_CFLAGS is non-empty we know that we can optimize
  43 # fdlibm by adding those extra C flags. Currently GCC,
  44 # and clang only.
  45 ifneq ($(FDLIBM_CFLAGS), )
  46   BUILD_LIBFDLIBM_OPTIMIZATION := LOW





  47 endif
  48 
  49 LIBFDLIBM_SRC := $(TOPDIR)/src/java.base/share/native/libfdlibm
  50 LIBFDLIBM_CFLAGS := -I$(LIBFDLIBM_SRC) $(FDLIBM_CFLAGS)
  51 
  52 ifneq ($(OPENJDK_TARGET_OS), macosx)
  53   $(eval $(call SetupNativeCompilation, BUILD_LIBFDLIBM, \
  54       NAME := fdlibm, \
  55       TYPE := STATIC_LIBRARY, \
  56       OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
  57       SRC := $(LIBFDLIBM_SRC), \
  58       OPTIMIZATION := $(BUILD_LIBFDLIBM_OPTIMIZATION), \
  59       CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \
  60       CFLAGS_windows_debug := -DLOGGING, \
  61       CFLAGS_aix := -qfloat=nomaf, \




  62       DISABLED_WARNINGS_gcc := sign-compare misleading-indentation, \
  63       DISABLED_WARNINGS_microsoft := 4146 4244 4018, \
  64       ARFLAGS := $(ARFLAGS), \
  65       OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
  66   ))
  67 
  68 else
  69 
  70   # On macosx the old build does partial (incremental) linking of fdlibm instead of
  71   # a plain static library.
  72   $(eval $(call SetupNativeCompilation, BUILD_LIBFDLIBM_MAC, \
  73       NAME := fdlibm, \
  74       OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
  75       SRC := $(LIBFDLIBM_SRC), \
  76       CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \
  77       LDFLAGS := -nostdlib $(ARFLAGS), \
  78       OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
  79   ))
  80 
  81   BUILD_LIBFDLIBM := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/$(LIBRARY_PREFIX)fdlibm$(STATIC_LIBRARY_SUFFIX)


< prev index next >