make/linux/makefiles/defs.make

Fri, 28 Aug 2020 07:38:21 +0100

author
andrew
date
Fri, 28 Aug 2020 07:38:21 +0100
changeset 9995
633a3d28d2fe
parent 9357
0ef29304c2b4
child 9448
73d689add964
permissions
-rw-r--r--

8251120: [8u] HotSpot build assumes ENABLE_JFR is set to either true or false
Summary: Only test for ENABLE_JFR being true, and assume undefined == false
Reviewed-by: neugens

     1 #
     2 # Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
     3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4 #
     5 # This code is free software; you can redistribute it and/or modify it
     6 # under the terms of the GNU General Public License version 2 only, as
     7 # published by the Free Software Foundation.
     8 #
     9 # This code is distributed in the hope that it will be useful, but WITHOUT
    10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    11 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    12 # version 2 for more details (a copy is included in the LICENSE file that
    13 # accompanied this code).
    14 #
    15 # You should have received a copy of the GNU General Public License version
    16 # 2 along with this work; if not, write to the Free Software Foundation,
    17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    18 #
    19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    20 # or visit www.oracle.com if you need additional information or have any
    21 # questions.
    22 #
    23 #
    25 # The common definitions for hotspot linux builds.
    26 # Include the top level defs.make under make directory instead of this one.
    27 # This file is included into make/defs.make.
    29 SLASH_JAVA ?= /java
    31 # Need PLATFORM (os-arch combo names) for jdk and hotspot, plus libarch name
    33 # ARCH can be set explicitly in spec.gmk
    34 ifndef ARCH
    35   ARCH := $(shell uname -m)
    36   # Fold little endian PowerPC64 into big-endian (if ARCH is set in
    37   # hotspot-spec.gmk, this will be done by the configure script).
    38   ifeq ($(ARCH),ppc64le)
    39     ARCH := ppc64
    40   endif
    41 endif
    43 PATH_SEP ?= :
    45 ifeq ($(LP64), 1)
    46   ARCH_DATA_MODEL ?= 64
    47 else
    48   ARCH_DATA_MODEL ?= 32
    49 endif
    51 # zero
    52 ifeq ($(findstring true, $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK)), true)
    53   ifeq ($(ARCH_DATA_MODEL), 64)
    54     MAKE_ARGS      += LP64=1
    55   endif
    56   PLATFORM         = linux-zero
    57   VM_PLATFORM      = linux_$(subst i386,i486,$(ZERO_LIBARCH))
    58   HS_ARCH          = zero
    59   ARCH             = zero
    60 endif
    62 # ia64
    63 ifeq ($(ARCH), ia64)
    64   ARCH_DATA_MODEL = 64
    65   MAKE_ARGS      += LP64=1
    66   PLATFORM        = linux-ia64
    67   VM_PLATFORM     = linux_ia64
    68   HS_ARCH         = ia64
    69 endif
    71 # sparc
    72 ifneq (,$(findstring $(ARCH), sparc))
    73   ifeq ($(ARCH_DATA_MODEL), 64)
    74     ARCH_DATA_MODEL  = 64
    75     MAKE_ARGS        += LP64=1
    76     PLATFORM         = linux-sparcv9
    77     VM_PLATFORM      = linux_sparcv9
    78   else
    79     ARCH_DATA_MODEL  = 32
    80     PLATFORM         = linux-sparc
    81     VM_PLATFORM      = linux_sparc
    82   endif
    83   HS_ARCH            = sparc
    84 endif
    86 # i686/i586 and amd64/x86_64
    87 ifneq (,$(findstring $(ARCH), amd64 x86_64 i686 i586))
    88   ifeq ($(ARCH_DATA_MODEL), 64)
    89     ARCH_DATA_MODEL = 64
    90     MAKE_ARGS       += LP64=1
    91     PLATFORM        = linux-amd64
    92     VM_PLATFORM     = linux_amd64
    93   else
    94     ARCH_DATA_MODEL = 32
    95     PLATFORM        = linux-i586
    96     VM_PLATFORM     = linux_i486
    97   endif
    98   HS_ARCH           = x86
    99 endif
   101 # PPC
   102 # Notice: after 8046471 ARCH will be 'ppc' for top-level ppc64 builds but
   103 # 'ppc64' for HotSpot-only ppc64 builds. Need to detect both variants here!
   104 ifneq (,$(findstring $(ARCH), ppc ppc64))
   105   ifeq ($(ARCH_DATA_MODEL), 64)
   106     MAKE_ARGS        += LP64=1
   107     PLATFORM         = linux-ppc64
   108     VM_PLATFORM      = linux_ppc64
   109   else
   110     ARCH_DATA_MODEL  = 32
   111     PLATFORM         = linux-ppc
   112     VM_PLATFORM      = linux_ppc
   113   endif
   114   HS_ARCH = ppc
   115 endif
   117 # On 32 bit linux we build server and client, on 64 bit just server.
   118 ifeq ($(JVM_VARIANTS),)
   119   ifeq ($(ARCH_DATA_MODEL), 32)
   120     JVM_VARIANTS:=client,server
   121     JVM_VARIANT_CLIENT:=true
   122     JVM_VARIANT_SERVER:=true
   123   else
   124     JVM_VARIANTS:=server
   125     JVM_VARIANT_SERVER:=true
   126   endif
   127 endif
   129 # determine if HotSpot is being built in JDK6 or earlier version
   130 JDK6_OR_EARLIER=0
   131 ifeq "$(shell expr \( '$(JDK_MAJOR_VERSION)' != '' \& '$(JDK_MINOR_VERSION)' != '' \& '$(JDK_MICRO_VERSION)' != '' \))" "1"
   132   # if the longer variable names (newer build style) are set, then check those
   133   ifeq "$(shell expr \( $(JDK_MAJOR_VERSION) = 1 \& $(JDK_MINOR_VERSION) \< 7 \))" "1"
   134     JDK6_OR_EARLIER=1
   135   endif
   136 else
   137   # the longer variables aren't set so check the shorter variable names
   138   ifeq "$(shell expr \( '$(JDK_MAJOR_VER)' = 1 \& '$(JDK_MINOR_VER)' \< 7 \))" "1"
   139     JDK6_OR_EARLIER=1
   140   endif
   141 endif
   143 ifeq ($(JDK6_OR_EARLIER),0)
   144   # Full Debug Symbols is supported on JDK7 or newer.
   145   # The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
   146   # builds is enabled with debug info files ZIP'ed to save space. For
   147   # BUILD_FLAVOR != product builds, FDS is always enabled, after all a
   148   # debug build without debug info isn't very useful.
   149   # The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
   150   #
   151   # If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
   152   # disabled for a BUILD_FLAVOR == product build.
   153   #
   154   # Note: Use of a different variable name for the FDS override option
   155   # versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
   156   # versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
   157   # in options via environment variables, use of distinct variables
   158   # prevents strange behaviours. For example, in a BUILD_FLAVOR !=
   159   # product build, the FULL_DEBUG_SYMBOLS environment variable will be
   160   # 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
   161   # the same variable name is used, then different values can be picked
   162   # up by different parts of the build. Just to be clear, we only need
   163   # two variable names because the incoming option value can be
   164   # overridden in some situations, e.g., a BUILD_FLAVOR != product
   165   # build.
   167   # Due to the multiple sub-make processes that occur this logic gets
   168   # executed multiple times. We reduce the noise by at least checking that
   169   # BUILD_FLAVOR has been set.
   170   ifneq ($(BUILD_FLAVOR),)
   171     ifeq ($(BUILD_FLAVOR), product)
   172       FULL_DEBUG_SYMBOLS ?= 1
   173       ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
   174     else
   175       # debug variants always get Full Debug Symbols (if available)
   176       ENABLE_FULL_DEBUG_SYMBOLS = 1
   177     endif
   178     _JUNK_ := $(shell \
   179       echo >&2 "INFO: ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)")
   180     # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
   182     ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
   183       # Default OBJCOPY comes from GNU Binutils on Linux
   184       ifeq ($(CROSS_COMPILE_ARCH),)
   185         DEF_OBJCOPY=/usr/bin/objcopy
   186       else
   187         # Assume objcopy is part of the cross-compilation toolset
   188         ifneq ($(ALT_COMPILER_PATH),)
   189           DEF_OBJCOPY=$(ALT_COMPILER_PATH)/objcopy
   190         endif
   191       endif
   192       OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
   193       ifneq ($(ALT_OBJCOPY),)
   194         _JUNK_ := $(shell echo >&2 "INFO: ALT_OBJCOPY=$(ALT_OBJCOPY)")
   195         OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
   196       endif
   198       ifeq ($(OBJCOPY),)
   199         _JUNK_ := $(shell \
   200           echo >&2 "INFO: no objcopy cmd found so cannot create .debuginfo files. You may need to set ALT_OBJCOPY.")
   201         ENABLE_FULL_DEBUG_SYMBOLS=0
   202         _JUNK_ := $(shell \
   203           echo >&2 "INFO: ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)")
   204       else
   205         _JUNK_ := $(shell \
   206           echo >&2 "INFO: $(OBJCOPY) cmd found so will create .debuginfo files.")
   208         # Library stripping policies for .debuginfo configs:
   209         #   all_strip - strips everything from the library
   210         #   min_strip - strips most stuff from the library; leaves minimum symbols
   211         #   no_strip  - does not strip the library at all
   212         #
   213         # Oracle security policy requires "all_strip". A waiver was granted on
   214         # 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
   215         #
   216         # Currently, STRIP_POLICY is only used when Full Debug Symbols is enabled.
   217         #
   218         STRIP_POLICY ?= min_strip
   220         _JUNK_ := $(shell \
   221           echo >&2 "INFO: STRIP_POLICY=$(STRIP_POLICY)")
   223         ZIP_DEBUGINFO_FILES ?= 1
   225         _JUNK_ := $(shell \
   226           echo >&2 "INFO: ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)")
   227       endif
   228     endif # ENABLE_FULL_DEBUG_SYMBOLS=1
   229   endif # BUILD_FLAVOR
   230 endif # JDK_6_OR_EARLIER
   232 JDK_INCLUDE_SUBDIR=linux
   234 # Library suffix
   235 LIBRARY_SUFFIX=so
   237 EXPORT_LIST += $(EXPORT_DOCS_DIR)/platform/jvmti/jvmti.html
   239 # client and server subdirectories have symbolic links to ../libjsig.so
   240 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX)
   241 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
   242   ifneq ($(STRIP_POLICY),no_strip)
   243     ifeq ($(ZIP_DEBUGINFO_FILES),1)
   244       EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.diz
   245     else
   246       EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.debuginfo
   247     endif
   248   endif
   249 endif
   250 EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server
   251 EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client
   252 EXPORT_MINIMAL_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/minimal
   254 ifeq ($(findstring true, $(JVM_VARIANT_SERVER) $(JVM_VARIANT_ZERO) $(JVM_VARIANT_ZEROSHARK) $(JVM_VARIANT_CORE)), true)
   255   EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt
   256   EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.$(LIBRARY_SUFFIX)
   257   ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
   258     ifneq ($(STRIP_POLICY),no_strip)
   259       ifeq ($(ZIP_DEBUGINFO_FILES),1)
   260         EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.diz
   261       else
   262         EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.debuginfo
   263       endif
   264     endif
   265   endif
   266 endif
   268 ifeq ($(JVM_VARIANT_CLIENT),true)
   269   EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
   270   EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX)
   271   ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
   272     ifneq ($(STRIP_POLICY),no_strip)
   273       ifeq ($(ZIP_DEBUGINFO_FILES),1)
   274         EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.diz
   275       else
   276         EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.debuginfo
   277       endif
   278     endif
   279   endif
   280 endif
   282 ifeq ($(JVM_VARIANT_MINIMAL1),true)
   283   EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/Xusage.txt
   284   EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/libjvm.$(LIBRARY_SUFFIX)
   286   ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
   287     ifneq ($(STRIP_POLICY),no_strip)
   288       ifeq ($(ZIP_DEBUGINFO_FILES),1)
   289           EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/libjvm.diz
   290       else
   291           EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/libjvm.debuginfo
   292       endif
   293     endif
   294   endif
   295 endif
   297 # Serviceability Binaries
   298 # No SA Support for PPC, IA64, ARM or zero
   299 ADD_SA_BINARIES/x86   = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
   300                         $(EXPORT_LIB_DIR)/sa-jdi.jar
   301 ADD_SA_BINARIES/sparc = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
   302                         $(EXPORT_LIB_DIR)/sa-jdi.jar
   303 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
   304   ifneq ($(STRIP_POLICY),no_strip)
   305     ifeq ($(ZIP_DEBUGINFO_FILES),1)
   306       ADD_SA_BINARIES/x86   += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.diz
   307       ADD_SA_BINARIES/sparc += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.diz
   308     else
   309       ADD_SA_BINARIES/x86   += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.debuginfo
   310       ADD_SA_BINARIES/sparc += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.debuginfo
   311     endif
   312   endif
   313 endif
   314 ADD_SA_BINARIES/ppc   =
   315 ADD_SA_BINARIES/ia64  =
   316 ADD_SA_BINARIES/arm   =
   317 ADD_SA_BINARIES/zero  =
   319 -include $(HS_ALT_MAKE)/linux/makefiles/defs.make
   321 EXPORT_LIST += $(ADD_SA_BINARIES/$(HS_ARCH))

mercurial