Sun, 03 Nov 2013 07:32:11 +0000
Merge
1 #
2 # Copyright (c) 2005, 2010, 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. Oracle designates this
8 # particular file as subject to the "Classpath" exception as provided
9 # by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 # or visit www.oracle.com if you need additional information or have any
23 # 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, 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,VARIANT,),\
161 $(call CheckValue,PLATFORM,)
163 # Misc common settings for all workspaces
164 # This determines the version of the product, and the previous version or boot
165 ifndef JDK_MAJOR_VERSION
166 JDK_MAJOR_VERSION = 1
167 PREVIOUS_MAJOR_VERSION = 1
168 endif
170 ifndef JDK_MINOR_VERSION
171 JDK_MINOR_VERSION = 7
172 PREVIOUS_MINOR_VERSION = 6
173 endif
175 ifndef JDK_MICRO_VERSION
176 JDK_MICRO_VERSION = 0
177 PREVIOUS_MICRO_VERSION = 0
178 endif
180 ifndef MILESTONE
181 MILESTONE = internal
182 endif
184 ifndef BUILD_NUMBER
185 JDK_BUILD_NUMBER = b00
186 else
187 ifndef JDK_BUILD_NUMBER
188 JDK_BUILD_NUMBER = $(BUILD_NUMBER)
189 endif
190 endif
192 # Default variant is the optimized version of everything
193 # can be OPT or DBG, default is OPT
194 # Determine the extra pattern to add to the release name for debug/fastdebug.
195 # Determine the JDK_IMPORT_VARIANT, so we get the right VM files copied over.
196 #
197 ifeq ($(VARIANT), DBG)
198 BUILD_VARIANT_RELEASE=-debug
199 else
200 BUILD_VARIANT_RELEASE=
201 endif
202 ifeq ($(FASTDEBUG), true)
203 VARIANT=DBG
204 BUILD_VARIANT_RELEASE=-fastdebug
205 _JDK_IMPORT_VARIANT=/fastdebug
206 endif
208 # Depending on the flavor of the build, add a -debug or -fastdebug to the name
209 ifdef DEBUG_NAME
210 BUILD_VARIANT_RELEASE=-$(DEBUG_NAME)
211 endif
213 JDK_VERSION = $(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)
214 JDK_UNDERSCORE_VERSION = $(subst .,_,$(JDK_VERSION))
216 # RELEASE is JDK_VERSION and -MILESTONE if MILESTONE is set
217 ifneq ($(MILESTONE),fcs)
218 RELEASE = $(JDK_VERSION)-$(MILESTONE)$(BUILD_VARIANT_RELEASE)
219 else
220 RELEASE = $(JDK_VERSION)$(BUILD_VARIANT_RELEASE)
221 endif
223 # FULL_VERSION is RELEASE and -BUILD_NUMBER if BUILD_NUMBER is set
224 ifndef FULL_VERSION
225 ifdef BUILD_NUMBER
226 FULL_VERSION = $(RELEASE)-$(BUILD_NUMBER)
227 else
228 BUILD_NUMBER = b00
229 USER_RELEASE_SUFFIX := $(shell echo $(USER)_`date '+%d_%b_%Y_%H_%M' | tr "A-Z" "a-z"`)
230 FULL_VERSION = $(RELEASE)-$(USER_RELEASE_SUFFIX)-$(BUILD_NUMBER)
231 endif
232 export FULL_VERSION
233 endif
235 # Promoted build location
236 PROMOTED_RE_AREA = $(SLASH_JAVA)/re/jdk/$(JDK_VERSION)/promoted
237 PROMOTED_BUILD_LATEST = latest
238 PROMOTED_BUILD_BASEDIR = $(PROMOTED_RE_AREA)/$(PROMOTED_BUILD_LATEST)
239 PROMOTED_BUILD_BINARIES = $(PROMOTED_BUILD_BASEDIR)/binaries
241 # OPT: Changes what the optimizations settings (in _OPT)
242 POPT = $(_OPT$(ALT_OPT))$(ALT_OPT)
244 # PARALLEL_COMPILE_JOBS: is the number of compiles done in parallel.
245 # If the user sets ALT_PARALLEL_COMPILE_JOBS, then COMPILE_APPROACH is set
246 # to parallel.
247 #
248 # Recommended setting: 2 seems to be ideal for single cpu machines,
249 # 2 times the number of CPU's is a basic formula,
250 # but probably not more than 4 if the machine is
251 # being shared by others, or the machine is limited
252 # in RAM or swap.
253 #
254 ifdef ALT_PARALLEL_COMPILE_JOBS
255 PARALLEL_COMPILE_JOBS=$(ALT_PARALLEL_COMPILE_JOBS)
256 else
257 PARALLEL_COMPILE_JOBS=2
258 endif
260 # Previous JDK release (version of BOOTDIR version)
261 ifdef ALT_PREVIOUS_JDK_VERSION
262 PREVIOUS_JDK_VERSION = $(ALT_PREVIOUS_JDK_VERSION)
263 else
264 PREVIOUS_JDK_VERSION = $(PREVIOUS_MAJOR_VERSION).$(PREVIOUS_MINOR_VERSION).$(PREVIOUS_MICRO_VERSION)
265 endif
266 export PREVIOUS_JDK_VERSION
267 PREVIOUS_JDK_VERSION:=$(call AltCheckSpaces,PREVIOUS_JDK_VERSION)
268 PREVIOUS_JDK_VERSION:=$(call AltCheckValue,PREVIOUS_JDK_VERSION)
270 # Version with _ instead of . in number
271 ifeq ($(PREVIOUS_MINOR_VERSION),5)
272 PREVIOUS_JDK_UNDERSCORE_VERSION = $(subst .,_,$(PREVIOUS_JDK_VERSION))
273 else
274 PREVIOUS_JDK_UNDERSCORE_VERSION = $(PREVIOUS_MINOR_VERSION)
275 endif
277 # Get platform specific settings
278 include $(BUILDDIR)/common/shared/Defs-$(PLATFORM).gmk
280 # Components
281 ifdef ALT_LANGTOOLS_DIST
282 LANGTOOLS_DIST :=$(call FullPath,$(ALT_LANGTOOLS_DIST))
283 else
284 LANGTOOLS_DIST =
285 endif
287 # These are the same on all platforms but require the above platform include 1st
289 # BOOTDIR: Bootstrap JDK, previous released JDK.
290 # _BOOTDIR1 and _BOOTDIR2 picked by platform
291 ifdef ALT_BOOTDIR
292 BOOTDIR =$(ALT_BOOTDIR)
293 else
294 BOOTDIR :=$(call DirExists,$(_BOOTDIR1),$(_BOOTDIR2),/NO_BOOTDIR)
295 endif
296 export BOOTDIR
297 BOOTDIR:=$(call AltCheckSpaces,BOOTDIR)
298 BOOTDIR:=$(call AltCheckValue,BOOTDIR)
300 # OUTPUTDIR: Location of all output for the build
301 _BACKUP_OUTPUTDIR = $(TEMP_DISK)/$(USER)/jdk-outputdir
302 ifdef ALT_OUTPUTDIR
303 _POSSIBLE_OUTPUTDIR =$(subst \,/,$(ALT_OUTPUTDIR))
304 else
305 ifndef _OUTPUTDIR
306 _OUTPUTDIR = $(_BACKUP_OUTPUTDIR)
307 endif
308 _POSSIBLE_OUTPUTDIR =$(_OUTPUTDIR)
309 endif
310 _create_outputdir1:=$(shell mkdir -p $(_POSSIBLE_OUTPUTDIR) > $(DEV_NULL) 2>&1)
311 OUTPUTDIR:=$(call WriteDirExists,$(_POSSIBLE_OUTPUTDIR),$(_BACKUP_OUTPUTDIR))
312 _create_outputdir2:=$(shell mkdir -p $(OUTPUTDIR) > $(DEV_NULL) 2>&1)
313 ifeq "$(OUTPUTDIR)" "$(_BACKUP_OUTPUTDIR)"
314 _outputdir_warning:=$(warning "WARNING: OUTPUTDIR '$(_POSSIBLE_OUTPUTDIR)' not writable, will use '$(_BACKUP_OUTPUTDIR)'")
315 endif
316 OUTPUTDIR:=$(call AltCheckSpaces,OUTPUTDIR)
317 OUTPUTDIR:=$(call AltCheckValue,OUTPUTDIR)
319 # Bin directory
320 # NOTE: ISA_DIR is usually empty, on Solaris it might be /sparcv9 or /amd64
321 BINDIR = $(OUTPUTDIR)/bin$(ISA_DIR)
323 # Absolute path to output directory
324 ABS_OUTPUTDIR:=$(call FullPath,$(OUTPUTDIR))