make/defs.make

Thu, 20 Nov 2008 16:56:09 -0800

author
ysr
date
Thu, 20 Nov 2008 16:56:09 -0800
changeset 888
c96030fff130
parent 670
9c2ecc2ffb12
child 1445
354d3184f6b2
child 1619
7fbf850d87b7
permissions
-rw-r--r--

6684579: SoftReference processing can be made more efficient
Summary: For current soft-ref clearing policies, we can decide at marking time if a soft-reference will definitely not be cleared, postponing the decision of whether it will definitely be cleared to the final reference processing phase. This can be especially beneficial in the case of concurrent collectors where the marking is usually concurrent but reference processing is usually not.
Reviewed-by: jmasa

     1 #
     2 # Copyright 2006-2008 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
    20 # CA 95054 USA or visit www.sun.com if you need additional information or
    21 # have any questions.
    22 #  
    23 #
    25 # The common definitions for hotspot builds.
    27 # Default to verbose build logs (show all compile lines):
    28 MAKE_VERBOSE=y
    30 # Make macros for install files or preparing targets
    31 CD=cd
    32 CP=cp
    33 ECHO=echo
    34 GREP=grep
    35 MKDIR=mkdir
    36 MV=mv
    37 PWD=pwd
    38 RM=rm -f
    39 SED=sed
    40 TAR=tar
    41 ZIPEXE=zip
    43 define install-file
    44 @$(MKDIR) -p $(@D)
    45 @$(RM) $@
    46 $(CP) $< $@
    47 endef
    48 define prep-target
    49 @$(MKDIR) -p $(@D)
    50 @$(RM) $@
    51 endef
    53 # Directory paths and user name
    54 # Unless GAMMADIR is set on the command line, search upward from
    55 # the current directory for a parent directory containing "src/share/vm".
    56 # If that fails, look for $GAMMADIR in the environment.
    57 # When the tree of subdirs is built, this setting is stored in each flags.make.
    58 GAMMADIR := $(shell until ([ -d dev ]&&echo $${GAMMADIR:-/GAMMADIR/}) || ([ -d src/share/vm ]&&pwd); do cd ..; done)
    59 HS_SRC_DIR=$(GAMMADIR)/src
    60 HS_MAKE_DIR=$(GAMMADIR)/make
    61 HS_BUILD_DIR=$(GAMMADIR)/build
    63 ifeq ($(USER),)
    64   USER=$(USERNAME)
    65 endif
    67 # hotspot version definitions
    68 include $(GAMMADIR)/make/hotspot_version
    70 # Java versions needed
    71 ifeq ($(PREVIOUS_JDK_VERSION),)
    72   PREVIOUS_JDK_VERSION=$(JDK_PREVIOUS_VERSION)
    73 endif
    74 ifeq ($(JDK_MAJOR_VERSION),)
    75   JDK_MAJOR_VERSION=$(JDK_MAJOR_VER)
    76 endif
    77 ifeq ($(JDK_MINOR_VERSION),)
    78   JDK_MINOR_VERSION=$(JDK_MINOR_VER)
    79 endif
    80 ifeq ($(JDK_MICRO_VERSION),)
    81   JDK_MICRO_VERSION=$(JDK_MICRO_VER)
    82 endif
    83 ifeq ($(JDK_MKTG_VERSION),)
    84   JDK_MKTG_VERSION=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)
    85 endif
    86 ifeq ($(JDK_VERSION),)
    87   JDK_VERSION=$(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)
    88 endif
    89 ifeq ($(FULL_VERSION),)
    90   FULL_VERSION="$(JDK_VERSION)"
    91 endif
    93 # FULL_VERSION is only used to define JRE_RELEASE_VERSION which is used
    94 # as JRE version in VM -Xinternalversion output.
    95 ifndef JRE_RELEASE_VERSION
    96   JRE_RELEASE_VERSION=$(FULL_VERSION)
    97 endif
    99 ifndef HOTSPOT_RELEASE_VERSION
   100   HOTSPOT_RELEASE_VERSION=$(HS_MAJOR_VER).$(HS_MINOR_VER)-b$(HS_BUILD_NUMBER)
   101 endif
   103 ifdef HOTSPOT_BUILD_VERSION
   104 # specified in command line (PRT build)
   105 else
   106   ifdef JPRT_BUILD_VERSION
   107 # JPR build
   108     HOTSPOT_BUILD_VERSION=$(JPRT_BUILD_VERSION)
   109   else
   110     ifdef COOKED_BUILD_NUMBER
   111 # JRE build
   112       HOTSPOT_BUILD_VERSION=
   113     else
   114       HOTSPOT_BUILD_VERSION=internal
   115     endif
   116   endif
   117 endif
   119 # Windows should have OS predefined
   120 ifeq ($(OS),)
   121   OS   := $(shell uname -s)
   122   HOST := $(shell uname -n)
   123 endif
   125 # If not SunOS and not Linux, assume Windows
   126 ifneq ($(OS), Linux)
   127   ifneq ($(OS), SunOS)
   128     OSNAME=windows
   129   else
   130     OSNAME=solaris
   131   endif
   132 else
   133   OSNAME=linux
   134 endif
   136 # Determinations of default make arguments and platform specific settings
   137 MAKE_ARGS=
   139 # ARCH_DATA_MODEL==64 is equivalent to LP64=1
   140 ifeq ($(ARCH_DATA_MODEL), 64)
   141   ifndef LP64
   142     LP64 := 1
   143   endif
   144 endif
   146 # Defaults set for product build
   147 EXPORT_SUBDIR=
   149 # Change default /java path if requested
   150 ifneq ($(ALT_SLASH_JAVA),)
   151   SLASH_JAVA=$(ALT_SLASH_JAVA)
   152 endif
   154 # Default OUTPUTDIR
   155 OUTPUTDIR=$(HS_BUILD_DIR)/$(OSNAME)
   156 ifneq ($(ALT_OUTPUTDIR),)
   157   OUTPUTDIR=$(ALT_OUTPUTDIR)
   158 endif
   160 # Find latest promoted JDK area
   161 JDK_IMPORT_PATH=$(SLASH_JAVA)/re/j2se/$(JDK_VERSION)/promoted/latest/binaries/$(PLATFORM)
   162 ifneq ($(ALT_JDK_IMPORT_PATH),)
   163   JDK_IMPORT_PATH=$(ALT_JDK_IMPORT_PATH)
   164 endif
   166 # Find JDK used for javac compiles
   167 BOOTDIR=$(SLASH_JAVA)/re/j2se/$(PREVIOUS_JDK_VERSION)/latest/binaries/$(PLATFORM)
   168 ifneq ($(ALT_BOOTDIR),)
   169   BOOTDIR=$(ALT_BOOTDIR)
   170 endif
   172 # The platform dependent defs.make defines platform specific variable such 
   173 # as ARCH, EXPORT_LIST etc. We must place the include here after BOOTDIR is defined.
   174 include $(GAMMADIR)/make/$(OSNAME)/makefiles/defs.make
   176 # We are trying to put platform specific defintions
   177 # files to make/$(OSNAME)/makefiles dictory. However
   178 # some definitions are common for both linux and solaris,
   179 # so we put them here.
   180 ifneq ($(OSNAME),windows)
   181   ABS_OUTPUTDIR     := $(shell mkdir -p $(OUTPUTDIR); $(CD) $(OUTPUTDIR); $(PWD))
   182   ABS_BOOTDIR       := $(shell $(CD) $(BOOTDIR); $(PWD))
   183   ABS_GAMMADIR      := $(shell $(CD) $(GAMMADIR); $(PWD))
   184   ABS_OS_MAKEFILE   := $(shell $(CD) $(HS_MAKE_DIR)/$(OSNAME); $(PWD))/Makefile
   186   # uname, HotSpot source directory, build directory and JDK use different names
   187   # for CPU architectures.
   188   #   ARCH      - uname output
   189   #   SRCARCH   - where to find HotSpot cpu and os_cpu source files
   190   #   BUILDARCH - build directory
   191   #   LIBARCH   - directory name in JDK/JRE
   193   # Use uname output for SRCARCH, but deal with platform differences. If ARCH
   194   # is not explicitly listed below, it is treated as x86. 
   195   SRCARCH     = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64,$(ARCH)))
   196   ARCH/       = x86
   197   ARCH/sparc  = sparc
   198   ARCH/sparc64= sparc
   199   ARCH/ia64   = ia64
   200   ARCH/amd64  = x86
   201   ARCH/x86_64 = x86
   203   # BUILDARCH is usually the same as SRCARCH, except for sparcv9
   204   BUILDARCH = $(SRCARCH)
   205   ifeq ($(BUILDARCH), x86)
   206     ifdef LP64
   207       BUILDARCH = amd64
   208     else
   209       BUILDARCH = i486
   210     endif
   211   endif
   212   ifeq ($(BUILDARCH), sparc)
   213     ifdef LP64
   214       BUILDARCH = sparcv9
   215     endif
   216   endif
   218   # LIBARCH is 1:1 mapping from BUILDARCH
   219   LIBARCH         = $(LIBARCH/$(BUILDARCH))
   220   LIBARCH/i486    = i386
   221   LIBARCH/amd64   = amd64
   222   LIBARCH/sparc   = sparc
   223   LIBARCH/sparcv9 = sparcv9
   224   LIBARCH/ia64    = ia64
   226   LP64_ARCH = sparcv9 amd64 ia64
   227 endif
   229 # Required make macro settings for all platforms
   230 MAKE_ARGS += JAVA_HOME=$(ABS_BOOTDIR)
   231 MAKE_ARGS += OUTPUTDIR=$(ABS_OUTPUTDIR)
   232 MAKE_ARGS += GAMMADIR=$(ABS_GAMMADIR)
   233 MAKE_ARGS += MAKE_VERBOSE=$(MAKE_VERBOSE)
   234 MAKE_ARGS += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION)
   235 MAKE_ARGS += JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION)
   237 # Pass HOTSPOT_BUILD_VERSION as argument to OS specific Makefile
   238 # to overwrite the default definition since OS specific Makefile also
   239 # includes this make/defs.make file.
   240 MAKE_ARGS += HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION)
   242 # Select name of export directory
   243 EXPORT_PATH=$(OUTPUTDIR)/export-$(PLATFORM)$(EXPORT_SUBDIR)
   244 ifneq ($(ALT_EXPORT_PATH),)
   245   EXPORT_PATH=$(ALT_EXPORT_PATH)
   246 endif
   248 # Default jdk image if one is created for you with create_jdk
   249 JDK_IMAGE_DIR=$(OUTPUTDIR)/jdk-$(PLATFORM)
   251 # Various export sub directories
   252 EXPORT_INCLUDE_DIR = $(EXPORT_PATH)/include
   253 EXPORT_DOCS_DIR = $(EXPORT_PATH)/docs
   254 EXPORT_LIB_DIR = $(EXPORT_PATH)/lib
   255 EXPORT_JRE_DIR = $(EXPORT_PATH)/jre
   256 EXPORT_JRE_BIN_DIR = $(EXPORT_JRE_DIR)/bin
   257 EXPORT_JRE_LIB_DIR = $(EXPORT_JRE_DIR)/lib
   258 EXPORT_JRE_LIB_ARCH_DIR = $(EXPORT_JRE_LIB_DIR)/$(LIBARCH)
   260 # Common export list of files
   261 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jvmti.h
   262 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jni.h
   263 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h
   264 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jmm.h

mercurial