make/common/shared/Defs.gmk

Wed, 02 Jul 2008 12:55:05 -0700

author
xdono
date
Wed, 02 Jul 2008 12:55:05 -0700
changeset 13
c0252adbb2ab
parent 4
a51017b6ba6d
child 49
e2f388853a9d
permissions
-rw-r--r--

6719955: Update copyright year
Summary: Update copyright year for files that have been modified in 2008
Reviewed-by: ohair, tbell

     1 #
     2 # Copyright 2005-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.  Sun designates this
     8 # particular file as subject to the "Classpath" exception as provided
     9 # by Sun in the LICENSE file that accompanied this code.
    10 #
    11 # This code is distributed in the hope that it will be useful, but WITHOUT
    12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    13 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    14 # version 2 for more details (a copy is included in the LICENSE file that
    15 # accompanied this code).
    16 #
    17 # You should have received a copy of the GNU General Public License version
    18 # 2 along with this work; if not, write to the Free Software Foundation,
    19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    20 #
    21 # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
    22 # CA 95054 USA or visit www.sun.com if you need additional information or
    23 # have any questions.
    24 #
    26 #
    27 # Defnitions for all platforms.
    28 #
    29 # Normally the convention is that these alternate definitions of
    30 #   primary make variables are never defined inside the Makefiles anywhere
    31 #   but are defined via environment variables or set on the make command
    32 #   line. So you should never see an ALT_* variable defined in any
    33 #   makefiles, just used. This is the convention and there are some
    34 #   exceptions, either mistakes or unusual circumstances.
    35 #
    36 # The naming convention for the default value of one of these variables
    37 #   that has an ALT_* override capability is to name the default value with a
    38 #   leading underscore (_). So for XXX you would have:
    39 #      _XXX      default value
    40 #      ALT_XXX   any override the user is providing if any
    41 #      XXX       the final value, either the default _XXX or the ALT_XXX value.
    42 #
    44 # On Directory names. In very rare cases should the Windows directory
    45 #    names use the backslash, please use the C:/ style of windows paths.
    46 #    Avoid duplicating the // characters in paths, this has known to cause
    47 #    strange problems with jar and other utilities, e.g. /a//b/ != /a/b/.
    48 #    Some of these variables have an explicit trailing / character, but in
    49 #    general, they should NOT have the trailing / character.
    51 # Get shared system utilities macros defined
    52 include $(BUILDDIR)/common/shared/Defs-utils.gmk
    54 # Assumes ARCH, PLATFORM, ARCH_VM_SUBDIR, etc. have been defined.
    56 # Simple pwd path
    57 define PwdPath
    58 $(shell cd $1 2> $(DEV_NULL) && pwd)
    59 endef
    61 # Checks an ALT value for spaces (should be one word), 
    62 #       warns and returns Check_ALT_$1 if spaces
    63 define AltCheckSpaces
    64 $(if $(word 2,$($1)),$(warning "WARNING: Value of $1 contains a space: '$($1)', check or set ALT_$1")Check_ALT_$1,$($1))
    65 endef
    67 # Checks an ALT value for empty, warns and returns Check_ALT_$1 if empty
    68 define AltCheckValue
    69 $(if $($1),$($1),$(warning "WARNING: Value of $1 cannot be empty, check or set ALT_$1")Check_ALT_$1)
    70 endef
    72 # Checks any value for empty, warns and returns $2 if empty
    73 define CheckValue
    74 $(if $($1),$($1),$(warning "WARNING: Value of $1 cannot be empty, will use '$2'")$2)
    75 endef
    77 # Prefix for a utility prefix path, if empty leave alone, otherwise end with a /
    78 define PrefixPath
    79 $(if $1,$(subst //,/,$1/),)
    80 endef
    82 # Select a directory if it exists, or the alternate 2 or the alternate 3
    83 define DirExists
    84 $(shell \
    85   if [ -d "$1" ]; then  \
    86     echo "$1"; \
    87   elif [ -d "$2" ]; then \
    88     echo "$2"; \
    89   else \
    90     echo "$3"; \
    91   fi)
    92 endef
    94 # Select a writable directory if it exists and is writable, or the alternate
    95 define WriteDirExists
    96 $(shell \
    97   if [ -d "$1" -a -w "$1" ]; then  \
    98     echo "$1"; \
    99   else \
   100     echo "$2"; \
   101   fi)
   102 endef
   104 # Select a file if it exists, or the alternate 1, or the alternate 2
   105 define FileExists
   106 $(shell \
   107   if [ -r "$1" ]; then \
   108     echo "$1"; \
   109   elif [ -r "$2" ]; then \
   110     echo "$2"; \
   111   else \
   112     echo "NO_FILE_EXISTS"; \
   113   fi)
   114 endef
   116 # Given a line of text, get the major.minor version number from it
   117 define GetVersion
   118 $(shell echo $1 | sed -e 's@[^1-9]*\([1-9][0-9]*\.[0-9][0-9]*\).*@\1@' )
   119 endef
   121 # Given a major.minor.micro version, return the major, minor, or micro number
   122 define MajorVersion
   123 $(if $(word 1, $(subst ., ,$1)),$(word 1, $(subst ., ,$1)),0)
   124 endef
   125 define MinorVersion
   126 $(if $(word 2, $(subst ., ,$1)),$(word 2, $(subst ., ,$1)),0)
   127 endef
   128 define MicroVersion
   129 $(if $(word 3, $(subst ., ,$1)),$(word 3, $(subst ., ,$1)),0)
   130 endef
   132 # Macro that returns missing, same, newer, or older $1=version $2=required
   133 #  (currently does not check the micro number)
   134 define CheckVersions
   135 $(shell \
   136   if [ "$1" = "" -o "$2" = "" ]; then \
   137     echo missing; \
   138   else \
   139     if [ "$1" = "$2" ]; then \
   140       echo same; \
   141     else \
   142       if [ $(call MajorVersion,$1) -lt $(call MajorVersion,$2) ] ; then \
   143         echo older; \
   144       else \
   145 	if [ $(call MajorVersion,$1) -eq $(call MajorVersion,$2) -a \
   146 	     $(call MinorVersion,$1) -lt $(call MinorVersion,$2) ]; then \
   147           echo older; \
   148         else \
   149           echo newer; \
   150         fi; \
   151       fi; \
   152     fi; \
   153   fi)
   154 endef
   156 # Make sure certain variables are non-empty at this point
   157 _check_values:=\
   158 $(call CheckValue,ARCH,),\
   159 $(call CheckValue,ARCH_DATA_MODEL,),\
   160 $(call CheckValue,ARCH_VM_SUBDIR,),\
   161 $(call CheckValue,VARIANT,),\
   162 $(call CheckValue,PLATFORM,)
   164 # Misc common settings for all workspaces
   165 #   This determines the version of the product, and the previous version or boot
   166 ifndef JDK_MAJOR_VERSION
   167   JDK_MAJOR_VERSION      = 1
   168   PREVIOUS_MAJOR_VERSION = 1
   169 endif
   171 ifndef JDK_MINOR_VERSION
   172   JDK_MINOR_VERSION      = 7
   173   PREVIOUS_MINOR_VERSION = 6
   174 endif
   176 ifndef JDK_MICRO_VERSION
   177   JDK_MICRO_VERSION      = 0
   178   PREVIOUS_MICRO_VERSION = 0
   179 endif
   181 ifndef MILESTONE
   182   MILESTONE = internal
   183 endif
   185 ifndef BUILD_NUMBER
   186   JDK_BUILD_NUMBER = b00
   187 else
   188   ifndef JDK_BUILD_NUMBER
   189     JDK_BUILD_NUMBER = $(BUILD_NUMBER)
   190   endif
   191 endif
   193 # Default variant is the optimized version of everything
   194 #    can be OPT or DBG,  default is OPT
   195 #    Determine the extra pattern to add to the release name for debug/fastdebug.
   196 #    Determine the JDK_IMPORT_VARIANT, so we get the right VM files copied over.
   197 #    Determine suffix for obj directory or OBJDIR, for .o files.
   198 #    (by keeping .o files separate, just .o files, they don't clobber each
   199 #     other, however, the library files will clobber each other).
   200 #
   201 ifeq ($(VARIANT), DBG)
   202   BUILD_VARIANT_RELEASE=-debug
   203   OBJDIRNAME_SUFFIX=_g
   204 else
   205   BUILD_VARIANT_RELEASE=
   206   OBJDIRNAME_SUFFIX=
   207 endif
   208 ifeq ($(FASTDEBUG), true)
   209   VARIANT=DBG
   210   BUILD_VARIANT_RELEASE=-fastdebug
   211   OBJDIRNAME_SUFFIX=_gO
   212   _JDK_IMPORT_VARIANT=/fastdebug
   213 endif
   215 # Depending on the flavor of the build, add a -debug or -fastdebug to the name
   216 ifdef DEBUG_NAME
   217   BUILD_VARIANT_RELEASE=-$(DEBUG_NAME)
   218 endif
   220 JDK_VERSION  = $(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)
   221 JDK_UNDERSCORE_VERSION =  $(subst .,_,$(JDK_VERSION))
   223 # RELEASE is JDK_VERSION and -MILESTONE if MILESTONE is set
   224 ifneq ($(MILESTONE),fcs)
   225   RELEASE      = $(JDK_VERSION)-$(MILESTONE)$(BUILD_VARIANT_RELEASE)
   226 else
   227   RELEASE      = $(JDK_VERSION)$(BUILD_VARIANT_RELEASE)
   228 endif
   230 # FULL_VERSION is RELEASE and -BUILD_NUMBER if BUILD_NUMBER is set
   231 ifdef BUILD_NUMBER
   232   FULL_VERSION = $(RELEASE)-$(BUILD_NUMBER)
   233 else
   234   BUILD_NUMBER = b00
   235   USER_RELEASE_SUFFIX := $(shell echo $(USER)_`date '+%d_%b_%Y_%H_%M' | tr "A-Z" "a-z"`)
   236   FULL_VERSION = $(RELEASE)-$(USER_RELEASE_SUFFIX)-$(BUILD_NUMBER)
   237 endif
   239 # Promoted build location
   240 PROMOTED_RE_AREA = $(SLASH_JAVA)/re/jdk/$(JDK_VERSION)/promoted
   241 PROMOTED_BUILD_LATEST = latest
   242 PROMOTED_BUILD_BASEDIR = $(PROMOTED_RE_AREA)/$(PROMOTED_BUILD_LATEST)
   243 PROMOTED_BUILD_BINARIES = $(PROMOTED_BUILD_BASEDIR)/binaries
   245 # OPT: Changes what the optimizations settings (in _OPT)
   246 POPT = $(_OPT$(ALT_OPT))$(ALT_OPT)
   248 # PARALLEL_COMPILE_JOBS: is the number of compiles done in parallel.
   249 #  If the user sets ALT_PARALLEL_COMPILE_JOBS, then COMPILE_APPROACH is set
   250 #  to parallel.
   251 #
   252 #  Recommended setting: 2 seems to be ideal for single cpu machines,
   253 #                       2 times the number of CPU's is a basic formula, 
   254 #                       but probably not more than 4 if the machine is 
   255 #                       being shared by others, or the machine is limited 
   256 #                       in RAM or swap.
   257 #
   258 ifdef ALT_PARALLEL_COMPILE_JOBS
   259   PARALLEL_COMPILE_JOBS=$(ALT_PARALLEL_COMPILE_JOBS)
   260 else
   261   PARALLEL_COMPILE_JOBS=2
   262 endif
   264 # Previous JDK release (version of BOOTDIR version)
   265 ifdef ALT_PREVIOUS_JDK_VERSION
   266   PREVIOUS_JDK_VERSION = $(ALT_PREVIOUS_JDK_VERSION)
   267 else
   268   PREVIOUS_JDK_VERSION  = $(PREVIOUS_MAJOR_VERSION).$(PREVIOUS_MINOR_VERSION).$(PREVIOUS_MICRO_VERSION)
   269 endif
   270 export PREVIOUS_JDK_VERSION
   271 PREVIOUS_JDK_VERSION:=$(call AltCheckSpaces,PREVIOUS_JDK_VERSION)
   272 PREVIOUS_JDK_VERSION:=$(call AltCheckValue,PREVIOUS_JDK_VERSION)
   274 # Version with _ instead of . in number
   275 ifeq ($(PREVIOUS_MINOR_VERSION),5)
   276   PREVIOUS_JDK_UNDERSCORE_VERSION =  $(subst .,_,$(PREVIOUS_JDK_VERSION))
   277 else
   278   PREVIOUS_JDK_UNDERSCORE_VERSION = $(PREVIOUS_MINOR_VERSION)
   279 endif
   281 # Get platform specific settings
   282 include $(BUILDDIR)/common/shared/Defs-$(PLATFORM).gmk
   284 # Components
   285 ifdef ALT_LANGTOOLS_DIST
   286   LANGTOOLS_DIST :=$(call FullPath,$(ALT_LANGTOOLS_DIST))
   287 else
   288   LANGTOOLS_DIST =
   289 endif
   291 # These are the same on all platforms but require the above platform include 1st
   293 # BOOTDIR: Bootstrap JDK, previous released JDK.
   294 #   _BOOTDIR1 and _BOOTDIR2 picked by platform
   295 ifdef ALT_BOOTDIR
   296   BOOTDIR =$(ALT_BOOTDIR)
   297 else
   298   BOOTDIR  :=$(call DirExists,$(_BOOTDIR1),$(_BOOTDIR2),/NO_BOOTDIR)
   299 endif
   300 export BOOTDIR
   301 BOOTDIR:=$(call AltCheckSpaces,BOOTDIR)
   302 BOOTDIR:=$(call AltCheckValue,BOOTDIR)
   304 # OUTPUTDIR: Location of all output for the build
   305 _BACKUP_OUTPUTDIR = $(TEMP_DISK)/$(USER)/jdk-outputdir
   306 ifdef ALT_OUTPUTDIR
   307   _POSSIBLE_OUTPUTDIR =$(subst \,/,$(ALT_OUTPUTDIR))
   308 else
   309   ifndef _OUTPUTDIR
   310     _OUTPUTDIR = $(_BACKUP_OUTPUTDIR)
   311   endif
   312   _POSSIBLE_OUTPUTDIR =$(_OUTPUTDIR)
   313 endif
   314 _create_outputdir1:=$(shell mkdir -p $(_POSSIBLE_OUTPUTDIR) > $(DEV_NULL) 2>&1)
   315 OUTPUTDIR:=$(call WriteDirExists,$(_POSSIBLE_OUTPUTDIR),$(_BACKUP_OUTPUTDIR))
   316 _create_outputdir2:=$(shell mkdir -p $(OUTPUTDIR) > $(DEV_NULL) 2>&1)
   317 ifeq "$(OUTPUTDIR)" "$(_BACKUP_OUTPUTDIR)"
   318   _outputdir_warning:=$(warning "WARNING: OUTPUTDIR '$(_POSSIBLE_OUTPUTDIR)' not writable, will use '$(_BACKUP_OUTPUTDIR)'")
   319 endif
   320 OUTPUTDIR:=$(call AltCheckSpaces,OUTPUTDIR)
   321 OUTPUTDIR:=$(call AltCheckValue,OUTPUTDIR)
   323 # Bin directory
   324 #   NOTE: ISA_DIR is usually empty, on Solaris it might be /sparcv9 or /amd64
   325 BINDIR      = $(OUTPUTDIR)/bin$(ISA_DIR)
   327 # Absolute path to output directory
   328 ABS_OUTPUTDIR:=$(call FullPath,$(OUTPUTDIR))
   330 # Get shared compiler settings
   331 include $(BUILDDIR)/common/shared/Compiler.gmk

mercurial