blob: b53f73bfdbde6df9384c0a2183d1a66b42ffbd0b [file] [log] [blame]
duke6e45e102007-12-01 00:00:00 +00001#
ohair2283b9d2010-05-25 15:58:33 -07002# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
duke6e45e102007-12-01 00:00:00 +00003# 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
ohair2283b9d2010-05-25 15:58:33 -07007# published by the Free Software Foundation. Oracle designates this
duke6e45e102007-12-01 00:00:00 +00008# particular file as subject to the "Classpath" exception as provided
ohair2283b9d2010-05-25 15:58:33 -07009# by Oracle in the LICENSE file that accompanied this code.
duke6e45e102007-12-01 00:00:00 +000010#
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#
ohair2283b9d2010-05-25 15:58:33 -070021# 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.
duke6e45e102007-12-01 00:00:00 +000024#
25
26#
27# WARNING: This file is shared with other workspaces.
28#
29
30#
31# Shared sanity rules for the JDK builds.
32#
33
34.SUFFIXES: .hdiffs
35
36# All files created during sanity checking
37
38SANITY_FILES = $(ERROR_FILE) $(WARNING_FILE) $(MESSAGE_FILE)
39
40# How to say "The Release Engineering people use this"
ohair8df39292009-01-31 17:31:21 -080041THE_OFFICIAL_USES=The official builds on $(PLATFORM) use
duke6e45e102007-12-01 00:00:00 +000042
43# How to say "You are using:"
44YOU_ARE_USING=You appear to be using
45
ohair8df39292009-01-31 17:31:21 -080046# Error message
47define SanityError
48$(ECHO) "ERROR: $1\n" >> $(ERROR_FILE)
49endef
50
51# Warning message
52define SanityWarning
53$(ECHO) "WARNING: $1\n" >> $(WARNING_FILE)
54endef
55
56# Official version error message: name version required_version
57define OfficialErrorMessage
58$(call SanityError,\
59$(THE_OFFICIAL_USES) $1 $3. Your $1 $(if $2,undefined,$2) will not work.)
60endef
61
62# Official version warning message: name version required_version
63define OfficialWarningMessage
64$(call SanityWarning,\
65$(THE_OFFICIAL_USES) $1 $3. $(YOU_ARE_USING) $1 $2.)
66endef
67
68
duke6e45e102007-12-01 00:00:00 +000069# Settings and rules to validate the JDK build environment.
70
71ifeq ($(PLATFORM), solaris)
72 FREE_SPACE := $(shell $(DF) -b $(OUTPUTDIR) | $(TAIL) -1 | $(NAWK) '{print $$2;}')
73 TEMP_FREE_SPACE := $(shell $(DF) -b $(TEMP_DISK) | $(TAIL) -1 | $(NAWK) '{print $$2;}')
ohair8df39292009-01-31 17:31:21 -080074 # What kind of system we are using (Variations are Solaris and OpenSolaris)
75 OS_VERSION := $(shell uname -r)
76 OS_VARIANT_NAME := $(strip $(shell head -1 /etc/release | awk '{print $$1;}') )
77 OS_VARIANT_VERSION := $(OS_VERSION)
duke6e45e102007-12-01 00:00:00 +000078 REQ_PATCH_LIST = $(JDK_TOPDIR)/make/PatchList.solaris
79 ifeq ($(ARCH_FAMILY), sparc)
80 PATCH_POSITION = $$4
81 else
82 PATCH_POSITION = $$6
83 endif
ohair8df39292009-01-31 17:31:21 -080084 ifndef OPENJDK
85 _GCC_VER :=$(shell $(GCC) -dumpversion 2>&1 )
86 GCC_VER :=$(call GetVersion,"$(_GCC_VER)")
87 endif
duke6e45e102007-12-01 00:00:00 +000088endif
89
90ifeq ($(PLATFORM), linux)
91 FREE_SPACE := $(shell $(DF) --sync -kP $(OUTPUTDIR) | $(TAIL) -1 | $(NAWK) '{print $$4;}')
92 TEMP_FREE_SPACE := $(shell $(DF) --sync -kP $(TEMP_DISK) | $(TAIL) -1 | $(NAWK) '{print $$4;}')
ohair8df39292009-01-31 17:31:21 -080093 # What kind of system we are using (Variation is the Linux vendor)
94 OS_VERSION := $(shell uname -r)
95 OS_VARIANT_NAME := $(shell \
96 if [ -f /etc/fedora-release ] ; then \
97 echo "Fedora"; \
98 elif [ -f /etc/redhat-release ] ; then \
99 echo "RedHat"; \
100 elif [ -f /etc/SuSE-release ] ; then \
101 echo "SuSE"; \
102 else \
103 echo "Unknown"; \
104 fi)
105 OS_VARIANT_VERSION := $(shell \
106 if [ "$(OS_VARIANT_NAME)" = "Fedora" ] ; then \
107 $(CAT) /etc/fedora-release | $(HEAD) -1 | $(NAWK) '{ print $$3; }' ; \
108 fi)
109 ALSA_INCLUDE=/usr/include/alsa/version.h
110 ALSA_LIBRARY=/usr/lib/libasound.so
111 _ALSA_VERSION := $(shell $(EGREP) SND_LIB_VERSION_STR $(ALSA_INCLUDE) | \
112 $(SED) -e 's@.*\"\(.*\)\".*@\1@' )
113 ALSA_VERSION := $(call GetVersion,$(_ALSA_VERSION))
duke6e45e102007-12-01 00:00:00 +0000114endif
115
116ifeq ($(PLATFORM), windows)
duke6e45e102007-12-01 00:00:00 +0000117 FREE_SPACE := $(shell $(DF) -kP $(OUTPUTDIR) | $(TAIL) -1 | $(NAWK) '{print $$4;}')
118 TEMP_FREE_SPACE := $(shell $(DF) -kP $(TEMP_DISK) | $(TAIL) -1 | $(NAWK) '{print $$4;}')
ohair8df39292009-01-31 17:31:21 -0800119 # Windows 2000 is 5.0, Windows XP is 5.1, Windows 2003 is 5.2
120 # Assume 5.0 (Windows 2000) if systeminfo does not help
121 WINDOWS_MAPPING-5.0 := Windows2000
122 WINDOWS_MAPPING-5.1 := WindowsXP
123 WINDOWS_MAPPING-5.2 := Windows2003
124 # What kind of system we are using (Variation is the common name)
125 _OS_VERSION := \
126 $(shell systeminfo 2> $(DEV_NULL) | \
127 egrep '^OS Version:' | \
128 awk '{print $$3;}' )
129 ifeq ($(_OS_VERSION),)
130 OS_VERSION = 5.0
131 else
ohair82280fd2009-03-16 11:24:06 -0700132 OS_VERSION = $(call MajorVersion,$(_OS_VERSION)).$(call MinorVersion,$(_OS_VERSION))
ohair653661f2008-07-08 09:27:08 -0700133 endif
ohair8df39292009-01-31 17:31:21 -0800134 OS_VARIANT_NAME := $(WINDOWS_MAPPING-$(OS_VERSION))
135 OS_VARIANT_VERSION := $(OS_VERSION)
136 ifdef USING_CYGWIN
137 # CYGWIN version
138 _CYGWIN_VER := $(SYSTEM_UNAME)
139 CYGWIN_VER :=$(call GetVersion,$(_CYGWIN_VER))
140 endif
tdvcf2e2232008-07-18 10:48:44 -0700141 DXSDK_VER := $(shell $(EGREP) DIRECT3D_VERSION $(DXSDK_INCLUDE_PATH)/d3d9.h 2>&1 | \
duke6e45e102007-12-01 00:00:00 +0000142 $(EGREP) "\#define" | $(NAWK) '{print $$3}')
143endif
144
145# Get the version numbers of what we are using
146_MAKE_VER :=$(shell $(MAKE) --version 2>&1 | $(HEAD) -n 1)
147_ZIP_VER :=$(shell $(ZIPEXE) -help 2>&1 | $(HEAD) -n 4 | $(EGREP) '^Zip')
148_UNZIP_VER :=$(shell $(UNZIP) -help 2>&1 | $(HEAD) -n 4 | $(EGREP) '^UnZip')
149_BOOT_VER :=$(shell $(BOOTDIR)/bin/java -version 2>&1 | $(HEAD) -n 1)
150MAKE_VER :=$(call GetVersion,"$(_MAKE_VER)")
151ZIP_VER :=$(call GetVersion,"$(_ZIP_VER)")
152UNZIP_VER :=$(call GetVersion,"$(_UNZIP_VER)")
153BOOT_VER :=$(call GetVersion,"$(_BOOT_VER)")
154
ohairc4093c42008-09-10 10:16:54 -0700155_ANT_VER:=$(shell $(ANT) -version 2>&1 )
ohair67d66e12008-03-18 11:08:09 -0700156ANT_VER:=$(call GetVersion,"$(_ANT_VER)")
duke6e45e102007-12-01 00:00:00 +0000157
duke6e45e102007-12-01 00:00:00 +0000158ifdef ALT_BINDIR
159 ALT_BINDIR_VERSION := $(shell $(ALT_BINDIR)/java$(EXE_SUFFIX) -version 2>&1 | $(NAWK) -F'"' '{ print $$2 }')
160 ALT_BINDIR_OK := $(shell $(ECHO) $(ALT_BINDIR_VERSION) | $(EGREP) -c '^$(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION)')
161endif
162
163INSTALL_PATCHES_FILE = $(TEMPDIR)/installed.patches
164
165# Get ALL_SETTINGS defined
166include $(JDK_MAKE_SHARED_DIR)/Sanity-Settings.gmk
167
168.PHONY: \
169 sane-copyrightyear\
170 sane-settings \
171 sane-insane \
172 sane-build_number \
173 sane-os_version \
174 sane-memory_check \
175 sane-windows \
176 sane-locale \
177 sane-linux \
178 sane-cygwin \
179 sane-cygwin-shell \
180 sane-mks \
181 sane-arch_data_model \
182 sane-os_patch_level \
183 sane-classpath \
184 sane-java_home \
185 sane-fonts \
186 sane-binary-plugs \
187 sane-variant \
188 sane-ld_library_path \
189 sane-ld_library_path_64 \
190 sane-ld_options \
191 sane-ld_run_path \
192 sane-makeflags \
193 sane-alt_outputdir \
194 sane-outputdir \
195 sane-alt_bootdir \
196 sane-bootdir \
anthony14003f02009-05-19 14:43:49 +0400197 sane-local-bootdir \
198 sane-cups \
duke6e45e102007-12-01 00:00:00 +0000199 sane-devtools_path \
200 sane-compiler_path \
201 sane-unixcommand_path \
202 sane-usrbin_path \
203 sane-unixccs_path \
204 sane-docs_import \
205 sane-math_iso \
206 sane-libCrun \
207 sane-odbcdir \
208 sane-msdevtools_path \
209 sane-hotspot_binaries \
210 sane-hotspot_import \
211 sane-hotspot_import_dir \
212 sane-hotspot_import_include \
213 sane-compiler \
214 sane-link \
215 sane-cacerts \
duke6e45e102007-12-01 00:00:00 +0000216 sane-alsa-headers \
217 sane-ant_version \
duke6e45e102007-12-01 00:00:00 +0000218 sane-zip_version \
219 sane-unzip_version \
220 sane-msvcrt_path \
mchunge2857652010-02-10 17:51:07 -0800221 sane-freetype \
222 sane-build_modules
duke6e45e102007-12-01 00:00:00 +0000223
224######################################################
225# check for COPYRIGHT_YEAR variable
226######################################################
227sane-copyrightyear:
228ifdef ALT_COPYRIGHT_YEAR
229 @$(ECHO) "WARNING: ALT_COPYRIGHT_YEAR but not the current year\n" \
230 " will be used for copyright year.\n " \
231 "" >>$(WARNING_FILE)
232endif
233
234######################################################
235# check for INSANE variable
236######################################################
237sane-insane:
238ifdef INSANE
239 @$(ECHO) "WARNING: You are building in 'INSANE' mode. You \n" \
240 " should not use this mode, and in fact, \n" \
241 " it may be removed at any time. If you \n" \
242 " have build problems as a result of using \n" \
243 " INSANE mode, then you should not expect \n" \
244 " assistance from anyone with the problems \n" \
245 " or consequences you experience. \n" \
246 "" >> $(WARNING_FILE)
247endif
248
249######################################################
250# check for GNU Make version
251######################################################
252MAKE_CHECK :=$(call CheckVersions,$(MAKE_VER),$(REQUIRED_MAKE_VER))
253sane-make:
254 @if [ "$(MAKE_CHECK)" != "same" -a "$(MAKE_CHECK)" != "newer" ]; then \
255 $(ECHO) "WARNING: The version of make being used is older than \n" \
256 " the required version of '$(REQUIRED_MAKE_VER)'. \n" \
257 " The version of make found was '$(MAKE_VER)'. \n" \
258 "" >> $(WARNING_FILE) ; \
259 fi
260
261######################################################
262# Check the BUILD_NUMBER to make sure it contains bNN
263######################################################
264sane-build_number:
265 @if [ "`$(ECHO) $(BUILD_NUMBER) | $(SED) 's@.*b[0-9][0-9]*.*@bNN@'`" != "bNN" ] ; then \
266 $(ECHO) "WARNING: The BUILD_NUMBER needs to contain b[0-9][0-9]*. Currently BUILD_NUMBER=$(BUILD_NUMBER). \n" \
267 " This has been known to cause build failures. \n" \
268 "" >> $(WARNING_FILE) ; \
269 fi
270
271######################################################
272# Check the ARCH_DATA_MODEL setting
273######################################################
274sane-arch_data_model:
275 @if [ "$(ARCH_DATA_MODEL)" != 32 -a "$(ARCH_DATA_MODEL)" != 64 ]; then \
276 $(ECHO) "ERROR: The setting of ARCH_DATA_MODEL must be 32 or 64.\n" \
277 " $(YOU_ARE_USING) ARCH_DATA_MODEL=$(ARCH_DATA_MODEL). \n" \
278 "" >> $(ERROR_FILE) ; \
279 fi
280
281######################################################
282# Check the OS version (windows and linus have release name checks)
283# NOTE: OPENJDK explicitly does not check for OS release information.
284# Unless we know for sure that it will not build somewhere, we cannot
285# generate a fatal sanity error, and a warning about the official
286# build platform just becomes clutter.
287######################################################
ohair8df39292009-01-31 17:31:21 -0800288ifndef OPENJDK
289 OS_VERSION_CHECK := \
290 $(call CheckVersions,$(OS_VERSION),$(REQUIRED_OS_VERSION))
291 ifeq ($(OS_VARIANT_NAME),$(REQUIRED_OS_VARIANT_NAME))
292 OS_VARIANT_VERSION_CHECK := \
293 $(call CheckVersions,$(OS_VARIANT_VERSION),$(REQUIRED_OS_VARIANT_VERSION))
294 endif
295endif
duke6e45e102007-12-01 00:00:00 +0000296sane-os_version:: sane-arch_data_model sane-memory_check sane-locale sane-os_patch_level
297ifndef OPENJDK
ohair8df39292009-01-31 17:31:21 -0800298 ifneq ($(OS_VARIANT_NAME),$(REQUIRED_OS_VARIANT_NAME))
299 ifeq ($(OS_VERSION_CHECK),missing)
300 @$(call OfficialErrorMessage,OS version,$(OS_VERSION),$(REQUIRED_OS_VERSION))
301 endif
302 ifneq ($(OS_VERSION_CHECK),same)
303 @$(call OfficialWarningMessage,OS version,$(OS_VERSION),$(REQUIRED_OS_VERSION))
304 endif
305 @$(call OfficialWarningMessage,OS variant,$(OS_VARIANT_NAME),$(REQUIRED_OS_VARIANT_NAME))
306 else
307 ifneq ($(OS_VARIANT_VERSION_CHECK),same)
308 @$(call OfficialWarningMessage,$(OS_VARIANT_NAME) version,$(OS_VARIANT_VERSION),$(REQUIRED_OS_VARIANT_VERSION))
309 endif
310 endif
duke6e45e102007-12-01 00:00:00 +0000311endif # OPENJDK
312
313ifeq ($(PLATFORM), windows)
314 sane-os_version:: sane-cygwin sane-mks sane-cygwin-shell
315endif
316
317######################################################
318# Check the memory available on this machine
319######################################################
320sane-memory_check:
321 @if [ "$(LOW_MEMORY_MACHINE)" = "true" ]; then \
322 $(ECHO) "WARNING: This machine appears to only have $(MB_OF_MEMORY)Mb of physical memory, \n" \
323 " builds on this machine could be slow. \n" \
324 "" >> $(WARNING_FILE) ; \
325 fi
326
327######################################################
328# Check the locale (value of LC_ALL, not being empty or ==C can be a problem)
329######################################################
330sane-locale:
331ifneq ($(PLATFORM), windows)
332 @if [ "$(LC_ALL)" != "" -a "$(LC_ALL)" != "C" ]; then \
333 $(ECHO) "WARNING: LC_ALL has been set to $(LC_ALL), this can cause build failures. \n" \
334 " Try setting LC_ALL to \"C\". \n" \
335 "" >> $(WARNING_FILE) ; \
336 fi
337 @if [ "$(LANG)" != "" -a "$(LANG)" != "C" ]; then \
338 $(ECHO) "WARNING: LANG has been set to $(LANG), this can cause build failures. \n" \
339 " Try setting LANG to \"C\". \n" \
340 "" >> $(WARNING_FILE) ; \
341 fi
342endif
343
344######################################################
345# Check the Windows cygwin version
346######################################################
347ifeq ($(PLATFORM), windows)
348 CYGWIN_CHECK :=$(call CheckVersions,$(CYGWIN_VER),$(REQUIRED_CYGWIN_VER))
349sane-cygwin:
350 ifdef USING_CYGWIN
ohair8df39292009-01-31 17:31:21 -0800351 ifeq ($(CYGWIN_CHECK),missing)
352 @$(call OfficialErrorMessage,CYGWIN version,$(CYGWIN_VER),$(REQUIRED_CYGWIN_VER))
353 endif
354 ifeq ($(CYGWIN_CHECK),older)
355 @$(call OfficialWarningMessage,CYGWIN version,$(CYGWIN_VER),$(REQUIRED_CYGWIN_VER))
356 endif
duke6e45e102007-12-01 00:00:00 +0000357 endif
358endif
359
360######################################################
361# Check the cygwin shell is used, not cmd.exe
362######################################################
363ifeq ($(PLATFORM), windows)
364sane-cygwin-shell:
365 ifdef USING_CYGWIN
366 @if [ "$(SHLVL)" = "" -a "$(_)" = "" ]; then \
367 $(ECHO) "ERROR: You are using an unsupported shell. \n" \
368 " Use either sh, bash, ksh, zsh, or tcsh. \n" \
369 " Using the cmd.exe utility is not supported. \n" \
370 " If you still want to try your current shell, \n" \
371 " please export SHLVL=1 when running $(MAKE). \n" \
372 "" >> $(ERROR_FILE) ; \
373 fi
374 endif
375endif
376
377######################################################
378# Check the Windows mks version
379######################################################
380ifeq ($(PLATFORM), windows)
381 MKS_CHECK :=$(call CheckVersions,$(MKS_VER),$(REQUIRED_MKS_VER))
382sane-mks:
383 ifndef USING_CYGWIN
ohair8df39292009-01-31 17:31:21 -0800384 ifeq ($(MKS_CHECK),missing)
385 @$(call OfficialErrorMessage,MKS version,$(MKS_VER),$(REQUIRED_MKS_VER))
386 endif
387 ifeq ($(MKS_CHECK),older)
388 @$(call OfficialErrorMessage,MKS version,$(MKS_VER),$(REQUIRED_MKS_VER))
389 endif
duke6e45e102007-12-01 00:00:00 +0000390 endif
391endif
392
393######################################################
394# Get list of installed patches (this file has a particular format)
395######################################################
396$(INSTALL_PATCHES_FILE):
397 @$(prep-target)
398ifeq ($(PLATFORM), solaris)
399 ifeq ($(OS_VERSION),$(REQUIRED_OS_VERSION))
400 $(SHOWREV) -p > $@ 2>&1
401 endif
402endif
403 @$(ECHO) "" >> $@
404
405######################################################
406# Check list of Solaris patches
407######################################################
408sane-os_patch_level: $(INSTALL_PATCHES_FILE)
409ifeq ($(PLATFORM), solaris)
410 ifeq ($(OS_VERSION),$(REQUIRED_OS_VERSION))
411 @$(NAWK) 'BEGIN { \
412 readingInstallPatches = 0; \
413 requiredCount = 0; \
414 installCount = 0; \
415} \
416{ \
417 if (readingInstallPatches) { \
418 if ($$1=="Patch:") { \
419 ns = split($$2,parts,"-"); \
420 installPatchNo[installCount]=parts[1]; \
421 installPatchRev[installCount]=parts[2]; \
422 installCount++; \
423 } \
424 } \
425 \
426 if (!readingInstallPatches) { \
427 if (index($$1,"#") != 0) continue; \
428 if (match($$1,"BUILD") > 0 \
429 && $$2 == $(OS_VERSION) \
430 && ($$7 == "REQ" || $$7 == "req") \
431 && $(PATCH_POSITION) != "none" \
432 && $(PATCH_POSITION) != "NONE") { \
433 ns = split($(PATCH_POSITION),parts,"-"); \
434 requiredPatchNo[requiredCount]=parts[1]; \
435 requiredPatchRev[requiredCount]=parts[2]; \
436 requiredCount++; \
437 } \
438 } \
439} \
440END { \
441 errorCount=0; \
442 for (i=0; i<requiredCount; i++) { \
443 foundMatch = 0; \
444 for (j=0; j<installCount; j++) { \
445 if (installPatchNo[j] == requiredPatchNo[i] \
446 && installPatchRev[j] >= requiredPatchRev[i]) { \
447 foundMatch = 1; \
448 break; \
449 } \
450 } \
451 if ( foundMatch == 0) { \
452 printf("WARNING: Your solaris install is missing the required patch %s-%s\n", requiredPatchNo[i], requiredPatchRev[i] ); \
453 printf(" Please update your your system patches or build on a different machine.\n\n" ); \
454 errorCount++; \
455 } \
456 } \
457}' $(REQ_PATCH_LIST) readingInstallPatches=1 $(INSTALL_PATCHES_FILE) >> $(WARNING_FILE)
458 endif
459endif # PLATFORM
460
461######################################################
462# CLASSPATH cannot be set, unless you are insane.
463######################################################
464sane-classpath:
465ifdef CLASSPATH
466 @$(ECHO) "ERROR: Your CLASSPATH environment variable is set. This will \n" \
467 " most likely cause the build to fail. Please unset it \n" \
468 " and start your build again. \n" \
469 "" >> $(ERROR_FILE)
470endif
471
472######################################################
473# JAVA_HOME cannot be set, unless you are insane.
474######################################################
475sane-java_home:
476ifdef JAVA_HOME
477 @$(ECHO) "ERROR: Your JAVA_HOME environment variable is set. This will \n" \
478 " most likely cause the build to fail. Please unset it \n" \
479 " and start your build again. \n" \
480 "" >> $(ERROR_FILE)
481endif
482
483######################################################
484# Make sure the fonts are there
485# Exceptions are when explicitly building OPENJDK, or
486# when the entire CLOSED_SRC dir is excluded, so we are
487# implicitly building OPENJDK
488######################################################
489FONT_FILE=$(CLOSED_SRC)/share/lib/fonts/LucidaTypewriterRegular.ttf
490sane-fonts:
491ifndef OPENJDK
492 @if [ -d $(CLOSED_SRC) ] ; then \
493 if [ ! -f $(FONT_FILE) ] ; then \
494 $(ECHO) "ERROR: Missing $(FONT_FILE). \n" \
495 " Verify you have downloaded and overlayed on the source area all the binary files. \n" \
496 "" >> $(ERROR_FILE); \
497 fi \
498 fi
499endif
500
501######################################################
502# If building OPENJDK check pre-built binaries are
503# available for binary plug source components.
504######################################################
505ifdef OPENJDK
506sane-binary-plugs:
ohair2711ef82009-04-01 16:49:43 -0700507 ifeq ($(IMPORT_BINARY_PLUGS),true)
duke6e45e102007-12-01 00:00:00 +0000508 @if [ ! -d "$(BINARY_PLUGS_PATH)" ]; then \
ohair2711ef82009-04-01 16:49:43 -0700509 $(ECHO) "WARNING: Can't locate pre-built libraries. \n" \
duke6e45e102007-12-01 00:00:00 +0000510 " Please check your access to \n" \
511 " $(BINARY_PLUGS_PATH) \n" \
512 " and/or check your value of ALT_BINARY_PLUGS_PATH. \n" \
ohair2711ef82009-04-01 16:49:43 -0700513 "" >> $(WARNING_FILE); \
duke6e45e102007-12-01 00:00:00 +0000514 fi
ohair2711ef82009-04-01 16:49:43 -0700515 endif
duke6e45e102007-12-01 00:00:00 +0000516endif
517
518######################################################
519# VARIANT must be set to DBG or OPT
520######################################################
521sane-variant:
522 @if [ "$(VARIANT)" != DBG -a "$(VARIANT)" != OPT ] ; then \
523 $(ECHO) "ERROR: Your VARIANT environment variable is set to $(VARIANT). \n" \
524 " Needs to be set to DBG or OPT \n" \
525 "" >> $(ERROR_FILE); \
526 fi
527
528######################################################
529# LD_LIBRARY_PATH should not be set, unless you are insane.
530######################################################
531sane-ld_library_path:
532ifdef LD_LIBRARY_PATH
533 @$(ECHO) "ERROR: Your LD_LIBRARY_PATH environment variable is set. This may \n" \
534 " produce binaries binaries incorrectly. Please unset it \n" \
535 " and start your build again. \n" \
536 "" >> $(ERROR_FILE)
537endif
538
539######################################################
540# LD_LIBRARY_PATH_64 should not be set, unless you are insane.
541######################################################
542sane-ld_library_path_64:
543ifdef LD_LIBRARY_PATH_64
544 @$(ECHO) "ERROR: Your LD_LIBRARY_PATH_64 environment variable is set. This may \n" \
545 " produce binaries binaries incorrectly. Please unset it \n" \
546 " and start your build again. \n" \
547 "" >> $(ERROR_FILE)
548endif
549
550######################################################
551# LD_OPTIONS should not be set, unless you are insane.
552######################################################
553sane-ld_options:
554ifdef LD_OPTIONS
555 @$(ECHO) "ERROR: Your LD_OPTIONS environment variable is set. This may \n" \
556 " produce binaries binaries incorrectly. Please unset it \n" \
557 " and start your build again. \n" \
558 "" >> $(ERROR_FILE)
559endif
560
561######################################################
562# LD_RUN_PATH should not be set, unless you are insane.
563######################################################
564sane-ld_run_path:
565ifdef LD_RUN_PATH
566 @$(ECHO) "ERROR: Your LD_RUN_PATH environment variable is set. This may \n" \
567 " produce binaries binaries incorrectly. Please unset it \n" \
568 " produce binaries binaries incorrectly. Please unset it \n" \
569 " and start your build again. \n" \
570 "" >> $(ERROR_FILE)
571endif
572
573######################################################
574# MAKEFLAGS cannot be set, unless you are insane.
575######################################################
576ifeq ($(PLATFORM), windows)
577ifdef USING_CYGWIN
578REAL_MAKEFLAGS:=$(subst --unix,,$(MAKEFLAGS))
579else
580REAL_MAKEFLAGS:=$(MAKEFLAGS)
581endif
582else
583REAL_MAKEFLAGS:=$(MAKEFLAGS)
584endif
585sane-makeflags:
586# ifneq ($(strip $(REAL_MAKEFLAGS)),)
587ifeq ($(origin MAKEFLAGS),environment)
588 @#
589 @# it is unacceptable to have the-e or --environment-overrides value in MAKEFLAGS
590 @#
591 @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(e|--environment-overrides)( |$$)'` -ne 0 ]; then \
592 $(ECHO) "ERROR: Either the build was started with the flag -e or \n" \
593 " --environment-overrides, or the MAKEFLAGS environment \n" \
594 " variable has this value set. This will cause any \n" \
595 " environment variables you have defined to override \n" \
596 " the values defined by the makefiles. This practice is \n" \
597 " not recommemded by the authors of GNU Make, and \n" \
598 " will lead to an improper build. \n" \
599 " Please fix and restart the build. \n" \
600 "" >> $(ERROR_FILE) ; \
601 fi
602 @#
603 @# it is unacceptable to havethe -i or --ignore-errors value in MAKEFLAGS
604 @#
605 @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(i|--ignore-errors)( |$$)'` -ne 0 ]; then \
606 $(ECHO) "ERROR: Either the build was started with the flag -i or \n" \
607 " --ignore-errors, or the MAKEFLAGS environment \n" \
608 " variable has this value set. 1111 You will be unable \n" \
609 " to determine if the build is broken or not. \n" \
610 " Please fix and restart the build. \n" \
611 "" >> $(ERROR_FILE) ; \
612 fi
613 @#
614 @# it is unacceptable to have the -I or --include-dir value in MAKEFLAGS
615 @#
616 @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(I|--include-dir)( |$$)'` -ne 0 ]; then \
617 $(ECHO) "ERROR: Either the build was started with the flag -I or \n" \
618 " --include-dir, or the MAKEFLAGS environment \n" \
619 " variable has this value set. This will render your \n" \
620 " build questionable as not all the rules and depenencies \n" \
621 " are captured by the build. \n" \
622 " Please fix and restart the build. \n" \
623 "" >> $(ERROR_FILE) ; \
624 fi
625 @#
626 @# it is unacceptable to have the -k or --keep-going value in MAKEFLAGS:
627 @#
628 @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(k|--keep-going)( |$$)'` -ne 0 ]; then \
629 $(ECHO) "ERROR: Either the build was started with the flag -k or \n" \
630 " --keep-going, or the MAKEFLAGS environment \n" \
631 " variable has this value set. 222 You will be unable \n" \
632 " to determine if the build is broken or not. \n" \
633 " Please fix and restart the build. \n" \
634 "" >> $(ERROR_FILE) ; \
635 fi
636 @#
637 @# it is unacceptable to have the -o or --assume-old or --old-filevalue in MAKEFLAGS:
638 @# Note - this rule never gets invoked because it is processed out
639 @# in GNU Make startup
640 @#
641 @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(o|--assume-old|--old-file)( |$$)'` -ne 0 ]; then \
642 $(ECHO) "ERROR: Either the build was started with the flag -o or \n" \
643 " --assume-old or --old-file, or the MAKEFLAGS environment \n" \
644 " variable has this value set. This could prevent the \n" \
645 " build from executing rules it should, thus rendering a \n" \
646 " questionable result. \n" \
647 " Please fix and restart the build. \n" \
648 "" >> $(ERROR_FILE) ; \
649 fi
650 @#
651 @# it is unacceptable to have the -r or --nobuiltin-rules value in MAKEFLAGS
652 @#
653 @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(r|--no-builtin-rules)( |$$)'` -ne 0 ]; then \
654 $(ECHO) "ERROR: Either the build was started with the flag -r or \n" \
655 " --no-builtin-rules, or the MAKEFLAGS environment \n" \
656 " variable has this value set. This may break the build \n" \
657 " by not allowing builtin rules that may be required. \n" \
658 " Please fix and restart the build. \n" \
659 "" >> $(ERROR_FILE) ; \
660 fi
661 @#
662 @# it is unacceptable to have the -t or --touch value in MAKEFLAGS
663 @# Note - this rule never gets invoked because it is processed out
664 @# in GNU Make startup
665 @#
666 @if [ `$(ECHO) $(MAKEFLAGS) | $(EGREP) -c '(^| )(t|--touch)( |$$)'` -ne 0 ]; then \
667 $(ECHO) "ERROR: Either the build was started with the flag -t or \n" \
668 " --touch, or the MAKEFLAGS environment \n" \
669 " variable has this value set. This will leave the \n" \
670 " build in a unclear state and could lead to not executing \n" \
671 " rules which should be executed. \n" \
672 " Please fix and restart the build. \n" \
673 "" >> $(ERROR_FILE) ; \
674 fi
675 @#
676 @# show what is in MAKEFLAGS so the user is aware...
677 @#
678 @$(ECHO) "WARNING: Your MAKEFLAGS environment variable is set. \n" \
679 " You should be very careful about the values set here. \n" \
680 "\n" \
681 " MAKEFLAGS is set to =>$(MAKEFLAGS)<= \n" \
682 "" >> $(WARNING_FILE)
683endif
684
685######################################################
686# if specified, ALT_OUTPUTDIR must point to non-relative path if set
687######################################################
688sane-alt_outputdir:
689ifdef ALT_OUTPUTDIR
ohair5dfae9b2010-03-03 11:29:44 -0800690 @if [ `$(ECHO) $(subst \,/,$(ALT_OUTPUTDIR)) | $(EGREP) -c '^([A-Za-z]:)?/'` -ne 1 ]; then \
duke6e45e102007-12-01 00:00:00 +0000691 $(ECHO) "ERROR: ALT_OUTPUTDIR must be an Absolute Path Name, \n" \
692 " not a Relative Path Name. \n" \
693 "" >> $(ERROR_FILE) ; \
694 fi
695 ifeq ($(PLATFORM), windows)
ohair5dfae9b2010-03-03 11:29:44 -0800696 @if [ `$(ECHO) $(subst \,/,$(ALT_OUTPUTDIR)) | $(EGREP) -c '^([A-Za-z]:)'` -ne 1 ]; then \
duke6e45e102007-12-01 00:00:00 +0000697 $(ECHO) "ERROR: On windows, ALT_OUTPUTDIR must contain the drive letter. \n" \
698 "" >> $(ERROR_FILE) ; \
699 fi
700 endif
701endif
702
703######################################################
704# OUTPUTDIR tests
705######################################################
706sane-outputdir:
707 @#
708 @# OUTPUTDIR must be a directory...
709 @#
710 @if [ ! -d "$(OUTPUTDIR)" ]; then \
711 $(ECHO) "ERROR: OUTPUTDIR must be an existing directory. The current \n" \
712 " value of OUTPUTDIR is \n" \
713 " $(OUTPUTDIR) \n" \
714 " Please check your value of ALT_OUTPUTDIR. \n" \
715 "" >> $(ERROR_FILE) ; \
716 fi
717 @#
718 @# OUTPUTDIR must be writeable by user...
719 @#
720 @if [ ! -w "$(OUTPUTDIR)" ]; then \
721 $(ECHO) "ERROR: You must have write permissions to OUTPUTDIR. The \n" \
722 " current value of OUTPUTDIR is \n" \
723 " $(OUTPUTDIR) \n" \
724 " Either obtain these permissions or set ALT_OUTPUTDIR. \n" \
725 "" >> $(ERROR_FILE) ; \
726 fi
727 @#
728 @# OUTPUTDIR must have enough free space...
729 @#
730 @if [ $(FREE_SPACE) -lt $(REQUIRED_FREE_SPACE) ]; then \
731 $(ECHO) "WARNING: You may not have enough free space in your OUTPUTDIR. The \n" \
732 " current value of OUTPUTDIR is \n" \
733 " $(OUTPUTDIR) \n" \
734 " You need "$(REQUIRED_FREE_SPACE)" Kbytes free on this device to build \n" \
735 " and it appears that only "$(FREE_SPACE)" Kbytes are free. \n" \
736 " Either obtain more space or set ALT_OUTPUTDIR to a larger disk. \n" \
737 "" >> $(WARNING_FILE) ; \
738 fi
739
740######################################################
741# if specified, ALT_BOOTDIR must point to non-relative path if set
742######################################################
743sane-alt_bootdir:
744ifdef ALT_BOOTDIR
ohair5dfae9b2010-03-03 11:29:44 -0800745 @if [ `$(ECHO) $(subst \,/,$(ALT_BOOTDIR)) | $(EGREP) -c '^([A-Za-z]:)?/'` -ne 1 ]; then \
duke6e45e102007-12-01 00:00:00 +0000746 $(ECHO) "ERROR: ALT_BOOTDIR must be an Absolute Path Name, \n" \
747 " not a Relative Path Name. \n" \
748 " The current value of ALT_BOOTDIR is \n" \
749 " $(ALT_BOOTDIR) \n" \
750 " Please fix this and continue your build. \n" \
751 "" >> $(ERROR_FILE) ; \
752 fi
753endif
754
755######################################################
756# BOOTDIR must point to a valid JDK.
757######################################################
758BOOT_CHECK :=$(call CheckVersions,$(BOOT_VER),$(REQUIRED_BOOT_VER))
759sane-bootdir:
760 @if [ "$(BOOT_CHECK)" != "same" -a "$(BOOT_CHECK)" != "newer" ]; then \
761 $(ECHO) "ERROR: Your BOOTDIR environment variable does not point \n" \
762 " to a valid JDK for bootstrapping this build. \n" \
763 " A JDK $(JDK_MINOR_VERSION) $(MARKET_NAME) build must be bootstrapped using \n" \
764 " JDK $(PREVIOUS_JDK_VERSION) fcs (or later). \n" \
765 " Apparently, your bootstrap JDK is version $(BOOT_VER) \n" \
766 " Please update your ALT_BOOTDIR setting and start your build again. \n" \
767 "" >> $(ERROR_FILE) ; \
768 fi
769
770######################################################
anthony14003f02009-05-19 14:43:49 +0400771# BOOTDIR is recommended to reside on a local drive
772######################################################
773sane-local-bootdir:
774ifeq ($(PLATFORM), windows)
ohair5dfae9b2010-03-03 11:29:44 -0800775 @if [ `$(ECHO) $(BOOTDIR) | $(EGREP) -c '^[jJ]:'` -ne 0 ]; then \
anthony14003f02009-05-19 14:43:49 +0400776 $(ECHO) "WARNING: Your BOOTDIR is located on the J: drive. Often the J:\n" \
777 " drive is mapped over a network. Using a mapped drive for\n" \
778 " the BOOTDIR may significantly slow down the build process.\n" \
779 " You may want to consider using the ALT_BOOTDIR variable\n" \
780 " to point the build to another location for the BOOTDIR instead. \n" \
781 " Your current BOOTDIR is:\n" \
782 " $(BOOTDIR) \n" \
783 "" >> $(WARNING_FILE) ; \
784 fi
785endif
786
787######################################################
duke6e45e102007-12-01 00:00:00 +0000788# CACERTS_FILE must be absoulte path and readable
789######################################################
790sane-cacerts:
791 ifdef ALT_CACERTS_FILE
ohair5dfae9b2010-03-03 11:29:44 -0800792 @if [ `$(ECHO) $(subst \,/,$(ALT_CACERTS_FILE)) | $(EGREP) -c '^([A-Za-z]:)?/'` -ne 1 ]; then \
duke6e45e102007-12-01 00:00:00 +0000793 $(ECHO) "ERROR: ALT_CACERTS_FILE must be an Absolute Path Name, \n" \
794 " not a Relative Path Name. \n" \
795 " The current value of ALT_CACERTS_FILE is \n" \
796 " $(ALT_CACERTS_FILE) \n" \
797 " Please fix this and continue your build. \n" \
798 "" >> $(ERROR_FILE) ; \
799 fi
800 endif
801 @#
802 @# CACERTS_FILE must be readable
803 @#
804 @if [ ! -r "$(subst \,/,$(CACERTS_FILE))" ]; then \
805 $(ECHO) "ERROR: You do not have access to a valid cacerts file. \n" \
806 " Please check your access to \n" \
807 " $(subst \,/,$(CACERTS_FILE)) \n" \
808 " and/or check your value of ALT_CACERTS_FILE. \n" \
809 "" >> $(ERROR_FILE) ; \
810 fi
811 @#
812 @# CACERTS_FILE must be a file
813 @#
814 @if [ -d "$(subst \,/,$(CACERTS_FILE))" ]; then \
815 $(ECHO) "ERROR: You do not have access to a valid cacerts file.\n" \
816 " The value of CACERTS_FILE must point to a normal file.\n" \
817 " Please check your access to \n" \
818 " $(subst \,/,$(CACERTS_FILE)) \n" \
819 " and/or check your value of ALT_CACERTS_FILE. \n" \
820 "" >> $(ERROR_FILE) ; \
821 fi
822
823
824######################################################
825# Check for availability of FreeType (OpenJDK specific)
826######################################################
827
828ifdef OPENJDK
829
ohaird71c3922008-03-31 17:17:18 -0700830# The freetypecheck Makefile prints out "Failed" if not good enough
831$(TEMPDIR)/freetypeinfo: FRC
832 @$(prep-target)
833 @(($(CD) $(BUILDDIR)/tools/freetypecheck && $(MAKE)) || \
834 $(ECHO) "Failed to build freetypecheck." ) > $@
duke6e45e102007-12-01 00:00:00 +0000835
ohaird71c3922008-03-31 17:17:18 -0700836sane-freetype: $(TEMPDIR)/freetypeinfo
837 @if [ "`$(CAT) $< | $(GREP) Fail`" != "" ]; then \
duke6e45e102007-12-01 00:00:00 +0000838 $(ECHO) "ERROR: FreeType version " $(REQUIRED_FREETYPE_VERSION) \
ohaird71c3922008-03-31 17:17:18 -0700839 " or higher is required. \n" \
840 "`$(CAT) $<` \n" >> $(ERROR_FILE) ; \
duke6e45e102007-12-01 00:00:00 +0000841 fi
842
843else
844#do nothing (not OpenJDK)
845sane-freetype:
846endif
847
848######################################################
mchunge2857652010-02-10 17:51:07 -0800849# if specified, BUILD_MODULES must contain valid values.
850######################################################
851MODULES_REGEX="all|base|desktop|management|enterprise|misc|tools"
852sane-build_modules:
853ifdef BUILD_MODULES
854 @for m in $(BUILD_MODULES) ; do \
855 valid=`$(ECHO) $$m | $(EGREP) $(MODULES_REGEX)`; \
856 if [ "x$$valid" = "x" ] ; then \
857 $(ECHO) "ERROR: $$m set in the BUILD_MODULES variable is invalid.\n" \
858 "" >> $(ERROR_FILE); \
859 fi \
860 done
861endif
862
863######################################################
duke6e45e102007-12-01 00:00:00 +0000864# CUPS_HEADERS_PATH must be valid
865######################################################
866sane-cups:
867ifneq ($(PLATFORM), windows)
868 @if [ ! -r $(CUPS_HEADERS_PATH)/cups/cups.h ]; then \
869 $(ECHO) "ERROR: You do not have access to valid Cups header files. \n" \
870 " Please check your access to \n" \
871 " $(CUPS_HEADERS_PATH)/cups/cups.h \n" \
872 " and/or check your value of ALT_CUPS_HEADERS_PATH, \n" \
873 " CUPS is frequently pre-installed on many systems, \n" \
874 " or may be downloaded from http://www.cups.org \n" \
875 "" >> $(ERROR_FILE) ; \
876 fi
877endif
878
879######################################################
880# Check for existence of DEVTOOLS_PATH
881######################################################
882sane-devtools_path:
883 @if [ "$(DEVTOOLS_PATH)" != "" -a ! -r "$(DEVTOOLS_PATH)" ]; then \
884 $(ECHO) "ERROR: You do not have a valid DEVTOOLS_PATH setting. \n" \
885 " Please check your access to \n" \
886 " $(DEVTOOLS_PATH) \n" \
887 " and/or check your value of ALT_DEVTOOLS_PATH. \n" \
888 "" >> $(ERROR_FILE) ; \
889 fi
890
891######################################################
892# Check for existence of MS_RUNTIME_LIBRARIES
893######################################################
894sane-msvcrt_path:
895ifeq ($(PLATFORM), windows)
896 @if [ ! -r "$(MSVCRT_DLL_PATH)/msvcrt.dll" ]; then \
897 $(ECHO) "ERROR: You do not have access to msvcrt.dll. \n" \
898 " Please check your access to \n" \
899 " $(MSVCRT_DLL_PATH) \n" \
900 " and/or check your value of ALT_MSVCRT_DLL_PATH. \n" \
901 "" >> $(ERROR_FILE) ; \
902 fi
ohair82280fd2009-03-16 11:24:06 -0700903 ifneq ($(MSVCRNN_DLL),)
tbellfc2a6fe2009-01-14 21:35:03 -0800904 @if [ ! -r "$(MSVCRNN_DLL_PATH)/$(MSVCRNN_DLL)" ]; then \
905 $(ECHO) "ERROR: You do not have access to $(MSVCRNN_DLL). \n" \
duke6e45e102007-12-01 00:00:00 +0000906 " Please check your access to \n" \
tbellfc2a6fe2009-01-14 21:35:03 -0800907 " $(MSVCRNN_DLL_PATH) \n" \
908 " and/or check your value of ALT_MSVCRNN_DLL_PATH. \n" \
duke6e45e102007-12-01 00:00:00 +0000909 "" >> $(ERROR_FILE) ; \
910 fi
duke6e45e102007-12-01 00:00:00 +0000911 endif
912endif
913
914######################################################
915# Check for existence of COMPILER_PATH
916######################################################
917sane-compiler_path:
918 @if [ "$(COMPILER_PATH)" != "" -a ! -r "$(COMPILER_PATH)" ]; then \
919 $(ECHO) "ERROR: You do not have a valid COMPILER_PATH setting. \n" \
920 " Please check your access to \n" \
921 " $(COMPILER_PATH) \n" \
922 " and/or check your value of ALT_COMPILER_PATH. \n" \
923 "" >> $(ERROR_FILE) ; \
924 fi
925
926######################################################
927# Check for existence of UNIXCOMMAND_PATH
928######################################################
929sane-unixcommand_path:
930 @if [ "$(UNIXCOMMAND_PATH)" != "" -a ! -r "$(UNIXCOMMAND_PATH)" ]; then \
931 $(ECHO) "ERROR: You do not have a valid UNIXCOMMAND_PATH setting. \n" \
932 " Please check your access to \n" \
933 " $(UNIXCOMMAND_PATH) \n" \
934 " and/or check your value of ALT_UNIXCOMMAND_PATH. \n" \
935 "" >> $(ERROR_FILE) ; \
936 fi
937ifeq ($(PLATFORM), windows)
938 @for utility in cpio ar file m4 ; do \
939 if [ ! -r "`$(WHICH) $${utility}`" ]; then \
940 $(ECHO) "WARNING: You do not have the utility $${utility} in the \n" \
941 " directory $(UNIXCOMMAND_PATH). \n" \
942 " The utilities cpio, ar, file, and m4 are required. \n" \
943 "" >> $(WARNING_FILE) ; \
944 fi; \
945 done
946endif
947
948######################################################
949# Check for existence of USRBIN_PATH on linux
950######################################################
951sane-usrbin_path:
952ifeq ($(PLATFORM), linux)
953 @if [ "$(USRBIN_PATH)" != "" -a ! -r "$(USRBIN_PATH)" ]; then \
954 $(ECHO) "ERROR: You do not have a valid USRBIN_PATH setting. \n" \
955 " Please check your access to \n" \
956 " $(USRBIN_PATH) \n" \
957 " and/or check your value of ALT_USRBIN_PATH. \n" \
958 "" >> $(ERROR_FILE) ; \
959 fi
960endif
961
962######################################################
963# Check for existence of UNIXCCS_PATH on solaris
964######################################################
965sane-unixccs_path:
966ifeq ($(PLATFORM), solaris)
967 @if [ "$(UNIXCCS_PATH)" != "" -a ! -r "$(UNIXCCS_PATH)" ]; then \
968 $(ECHO) "ERROR: You do not have a valid UNIXCCS_PATH setting. \n" \
969 " Please check your access to \n" \
970 " $(UNIXCCS_PATH) \n" \
971 " and/or check your value of ALT_UNIXCCS_PATH. \n" \
972 "" >> $(ERROR_FILE) ; \
973 fi
974endif
975
976######################################################
977# Verify the docs directory exists
978######################################################
979sane-docs_import:
980 @if [ ! -d "$(HOTSPOT_DOCS_IMPORT_PATH)" ]; then \
981 $(ECHO) "WARNING: The directory HOTSPOT_DOCS_IMPORT_PATH=$(HOTSPOT_DOCS_IMPORT_PATH) \n" \
982 " does not exist, check your value of ALT_HOTSPOT_DOCS_IMPORT_PATH. \n" \
983 "" >> $(WARNING_FILE) ; \
984 fi
985
986######################################################
987# Check for possible problem regarding __fabsf, math_iso.h and the libm patch.
988# Hotspot should have been changed in Mustang 6.0 Build 47 to not depend
989# on __fabsf, this is just checking that fact now.
990######################################################
991sane-math_iso:
992ifeq ($(PLATFORM), solaris)
993 @if [ -f $(HOTSPOT_SERVER_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) ]; then \
994 if [ "`$(NM) $(HOTSPOT_SERVER_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) | $(GREP) __fabsf`" != "" ]; then \
995 $(ECHO) "WARNING: This version of hotspot relies on __fabsf \n" \
996 " which is not always available on Solaris 8 and 9 machines \n" \
997 " unless they have the latest libm patch and the file \n" \
998 " /usr/include/iso/math_iso.h which can trigger this dependency.\n" \
999 " Hotspot should NOT be dependent on this extern, check the \n" \
1000 " version of the hotspot library you are using. \n" \
1001 "" >> $(WARNING_FILE) ; \
1002 fi; \
1003 fi
1004endif
1005
1006######################################################
1007# Check for possible patch problem regarding /usr/lib/libCrun.so
1008######################################################
1009sane-libCrun:
1010ifeq ($(PLATFORM), solaris)
1011 @if [ "`$(NM) /usr/lib/libCrun.so.1 | $(GREP) __1c2n6FIpv_0_`" = "" ]; then \
1012 $(ECHO) "WARNING: The file /usr/lib/libCrun.so.1 is missing the extern \n" \
1013 " __1c2n6FIpv_0_ which indicates that the system is missing \n" \
1014 " a required Solaris patch, or you are using a pre-FCS release \n" \
1015 " of Solaris 10. You need the latest /usr/lib/libCrun.so.1 \n" \
1016 " which comes with the FCS release of Solaris 10 and available \n" \
1017 " through the latest Solaris 8 or 9 C++ runtime patches. \n" \
1018 "" >> $(WARNING_FILE) ; \
1019 fi
1020endif
1021
1022######################################################
ohair3ae113d2010-12-21 18:21:26 -08001023# Check for existence of the extra tools on windows
duke6e45e102007-12-01 00:00:00 +00001024######################################################
1025sane-msdevtools_path:
1026ifeq ($(PLATFORM), windows)
ohair3ae113d2010-12-21 18:21:26 -08001027 ifneq ($(COMPILER_VERSION), VS2010)
duke6e45e102007-12-01 00:00:00 +00001028 @if [ "$(MSDEVTOOLS_PATH)" != "" -a ! -r "$(MSDEVTOOLS_PATH)" ]; then \
1029 $(ECHO) "ERROR: You do not have a valid MSDEVTOOLS_PATH setting. \n" \
1030 " Please check your access to \n" \
1031 " $(MSDEVTOOLS_PATH) \n" \
1032 " and/or check your value of ALT_MSDEVTOOLS_PATH. \n" \
1033 "" >> $(ERROR_FILE) ; \
1034 fi
ohair3ae113d2010-12-21 18:21:26 -08001035 endif
duke6e45e102007-12-01 00:00:00 +00001036endif
1037
1038######################################################
1039# Check for existence of Hotspot binaries
1040######################################################
1041sane-hotspot_binaries:
1042ifeq ($(ARCH_DATA_MODEL), 32)
1043 @if [ ! -r $(HOTSPOT_CLIENT_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) ]; then \
1044 $(ECHO) "ERROR: HOTSPOT_CLIENT_PATH does not point to a valid HotSpot VM. \n" \
1045 " Please check your access to \n" \
1046 " $(HOTSPOT_CLIENT_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) \n" \
1047 " and/or check your value of ALT_HOTSPOT_CLIENT_PATH. \n" \
1048 "" >> $(ERROR_FILE) ; \
1049 fi
1050endif
1051 @if [ ! -r $(HOTSPOT_SERVER_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) ]; then \
1052 $(ECHO) "ERROR: HOTSPOT_SERVER_PATH does not point to a valid HotSpot VM. \n" \
1053 " Please check your access to \n" \
1054 " $(HOTSPOT_SERVER_PATH)/$(LIB_PREFIX)jvm.$(LIBRARY_SUFFIX) \n" \
1055 " and/or check your value of ALT_HOTSPOT_SERVER_PATH. \n" \
1056 "" >> $(ERROR_FILE) ; \
1057 fi
1058 @#
1059 @# Check value of HOTSPOT_LIB_PATH
1060 @#
1061ifeq ($(PLATFORM), windows)
1062 @if [ ! -r $(HOTSPOT_LIB_PATH)/jvm.lib ]; then \
1063 $(ECHO) "ERROR: HOTSPOT_LIB_PATH does not point to a valid HotSpot library. \n" \
1064 " Please check your access to \n" \
1065 " $(HOTSPOT_LIB_PATH)/jvm.lib \n" \
1066 " and/or check your value of ALT_HOTSPOT_LIB_PATH. \n" \
1067 "" >> $(ERROR_FILE) ; \
1068 fi
1069 @#
1070 @# Check for the .map files - its OK if they are not there..
1071 @#
1072 ifeq ($(ARCH_DATA_MODEL), 32)
1073 @# There is no 64-bit HotSpot client VM
1074 @if [ ! -r $(HOTSPOT_CLIENT_PATH)/jvm.map ]; then \
1075 $(ECHO) "WARNING: HOTSPOT_CLIENT_PATH does not point to valid HotSpot .map files. \n" \
1076 " These files are optional and aid in the debugging of the JVM. \n" \
1077 " Please check your access to \n" \
1078 " $(HOTSPOT_CLIENT_PATH)/jvm.map \n" \
1079 " and/or check your value of ALT_HOTSPOT_CLIENT_PATH. \n" \
1080 "" >> $(WARNING_FILE) ; \
1081 fi
1082 @if [ ! -r $(HOTSPOT_CLIENT_PATH)/jvm.pdb ]; then \
1083 $(ECHO) "WARNING: HOTSPOT_CLIENT_PATH does not point to valid HotSpot .pdb files. \n" \
1084 " These files are optional and aid in the debugging of the JVM. \n" \
1085 " Please check your access to \n" \
1086 " $(HOTSPOT_CLIENT_PATH)/jvm.pdb \n" \
1087 " and/or check your value of ALT_HOTSPOT_CLIENT_PATH. \n" \
1088 "" >> $(WARNING_FILE) ; \
1089 fi
1090 endif
1091 @if [ ! -r $(HOTSPOT_SERVER_PATH)/jvm.map ]; then \
1092 $(ECHO) "WARNING: HOTSPOT_SERVER_PATH does not point to valid HotSpot .map files. \n" \
1093 " These files are optional and aid in the debugging of the JVM. \n" \
1094 " Please check your access to \n" \
1095 " $(HOTSPOT_SERVER_PATH)/jvm.map \n" \
1096 " and/or check your value of ALT_HOTSPOT_SERVER_PATH. \n" \
1097 "" >> $(WARNING_FILE) ; \
1098 fi
1099 @if [ ! -r $(HOTSPOT_SERVER_PATH)/jvm.pdb ]; then \
1100 $(ECHO) "WARNING: HOTSPOT_SERVER_PATH does not point to valid HotSpot .pdb files. \n" \
1101 " These files are optional and aid in the debugging of the JVM. \n" \
1102 " Please check your access to \n" \
1103 " $(HOTSPOT_SERVER_PATH)/jvm.pdb \n" \
1104 " and/or check your value of ALT_HOTSPOT_SERVER_PATH. \n" \
1105 "" >> $(WARNING_FILE) ; \
1106 fi
1107endif
1108
1109
1110######################################################
1111# Check for existence of misc Hotspot imported files
1112######################################################
1113HOTSPOT_INCLUDE_FILE_LIST = jvmti.h
dcubed861f7322010-01-20 12:09:31 -07001114HOTSPOT_INCLUDE_FILE_LIST += jvmticmlr.h
duke6e45e102007-12-01 00:00:00 +00001115#HOTSPOT_INCLUDE_FILE_LIST += jni.h jni_md.h
1116#HOTSPOT_INCLUDE_FILE_LIST += jvm.h jvm_md.h
1117#HOTSPOT_INCLUDE_FILE_LIST += jmm.h
1118TMP_SDK_INCLUDE_FILE_LIST=$(HOTSPOT_INCLUDE_FILE_LIST:%.h=$(TEMPDIR)/%.h)
1119TMP_SDK_INCLUDE_FILE_DIFFS=$(HOTSPOT_INCLUDE_FILE_LIST:%.h=$(TEMPDIR)/%.hdiffs)
1120
1121# These include files must have a pattern: 'version: MAJOR.MINOR.MICRO'
1122# where MACRO, MINOR, and MICRO are numbers, e.g. 1.0.1, 0.2.90, etc.
1123# The critical version we are checking is MAJOR.MINOR, we print all three
1124# when we detect an error.
1125
1126TMP_SDK_INCLUDE_FIND_VERSION= $(EGREP) 'version:'
1127TMP_SDK_INCLUDE_GET_VERSION= $(TMP_SDK_INCLUDE_FIND_VERSION) | \
1128 $(SED) -e 's@.*\([0-9][0-9]*\.[0-9][0-9]*\)\.[0-9].*@\1@'
1129TMP_SDK_INCLUDE_GET_FULL_VERSION= $(TMP_SDK_INCLUDE_FIND_VERSION) | \
1130 $(SED) -e 's@.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*@\1@'
1131
1132# Compare an interface file (Rule creates 2 temp files: %.h and %.h.IMPORT)
1133# Files jvm.h, jvm_md.h and jmm.h are special in that they are not publicly
1134# exported but do represent VM interfaces used by the rest of the jdk.
1135# So these 3 will not be found in a promoted build and can only
1136# be checked when this represents a full control build (i.e. the
1137# HOTSPOT_IMPORT_PATH includes these files in it's 'include' directory).
1138$(TEMPDIR)/%.h: $(SHARE_SRC)/javavm/export/%.h
mchung3baa2d62010-01-07 08:14:48 -08001139 @$(install-non-module-file)
duke6e45e102007-12-01 00:00:00 +00001140 @$(RM) $@.IMPORT
1141 @if [ -r $(HOTSPOT_IMPORT_PATH)/include/$(@F) ]; then \
1142 $(CP) $(HOTSPOT_IMPORT_PATH)/include/$(@F) $@.IMPORT ; \
1143 elif [ "$(@F)" != "jvm.h" -a "$(@F)" != "jmm.h" ] ; then \
1144 $(ECHO) "WARNING: HOTSPOT_IMPORT_PATH does not contain the interface file $(@F). \n" \
1145 " Check your value of ALT_HOTSPOT_IMPORT_PATH. \n" \
1146 "" >> $(WARNING_FILE) ; \
1147 $(CP) $< $@.IMPORT; \
1148 else \
1149 $(CP) $< $@.IMPORT; \
1150 fi
1151
1152$(TEMPDIR)/%.h: $(PLATFORM_SRC)/javavm/export/%.h
mchung3baa2d62010-01-07 08:14:48 -08001153 @$(install-non-module-file)
duke6e45e102007-12-01 00:00:00 +00001154 @$(RM) $@.IMPORT
1155 @if [ -r $(HOTSPOT_IMPORT_PATH)/include/$(PLATFORM_INCLUDE_NAME)/$(@F) ]; then \
1156 $(CP) $(HOTSPOT_IMPORT_PATH)/include/$(PLATFORM_INCLUDE_NAME)/$(@F) $@.IMPORT ; \
1157 elif [ "$(@F)" != "jvm_md.h" ] ; then \
1158 $(ECHO) "WARNING: HOTSPOT_IMPORT_PATH does not contain the interface file $(@F). \n" \
1159 " Check your value of ALT_HOTSPOT_IMPORT_PATH. \n" \
1160 "" >> $(WARNING_FILE) ; \
1161 $(CP) $< $@.IMPORT; \
1162 else \
1163 $(CP) $< $@.IMPORT; \
1164 fi
1165
1166# Compares the two tempfiles: %.h and %.h.IMPORT, answer in %.hdiffs
1167# Note: Putting anything into the hdiffs file will trigger generic IMPORT
1168# warning message in hotspot_import_include.
1169# First checks the major.minor versions, the micro number can differ.
1170# Second checks the full version.
1171# Lastly does a full diff if the full version differs or it has no version
1172$(TEMPDIR)/%.hdiffs: $(TEMPDIR)/%.h
1173 @$(prep-target)
1174 @$(TOUCH) $@
1175 @if [ "`$(CAT) $< | $(TMP_SDK_INCLUDE_GET_VERSION)`" != \
1176 "`$(CAT) $<.IMPORT | $(TMP_SDK_INCLUDE_GET_VERSION)`" ] ; then \
1177 $(ECHO) "WARNING: The file $(<F) is not the same interface as the VM version.\n " \
1178 " this workspace has $(<F) `$(CAT) $< | $(TMP_SDK_INCLUDE_GET_FULL_VERSION)` and \n " \
1179 " HOTSPOT_IMPORT_PATH contains $(<F) `$(CAT) $<.IMPORT | $(TMP_SDK_INCLUDE_GET_FULL_VERSION)` \n" \
1180 "" >> $(WARNING_FILE) ; \
1181 $(ECHO) "Version mis-match" > $@ ; \
1182 fi
1183 @if [ "`$(CAT) $< | $(TMP_SDK_INCLUDE_GET_FULL_VERSION)`" != \
1184 "`$(CAT) $<.IMPORT | $(TMP_SDK_INCLUDE_GET_FULL_VERSION)`" ] ; then \
1185 $(RM) $<.filtered $<.IMPORT.filtered; \
1186 $(EGREP) -v 'VERSION' $< > $<.filtered; \
1187 $(EGREP) -v 'VERSION' $<.IMPORT > $<.IMPORT.filtered; \
1188 ($(DIFF) -w $<.filtered $<.IMPORT.filtered || exit 0) >> $@ ; \
1189 elif [ "`$(CAT) $< | $(TMP_SDK_INCLUDE_FIND_VERSION)`" = "" ] ; then \
1190 $(RM) $<.filtered $<.IMPORT.filtered; \
1191 $(EGREP) -v '@\(#\)' $< > $<.filtered; \
1192 $(EGREP) -v '@\(#\)' $<.IMPORT > $<.IMPORT.filtered; \
1193 ($(DIFF) -w $<.filtered $<.IMPORT.filtered || exit 0) >> $@ ; \
1194 fi
1195
1196# Verify all imported hotspot files
1197sane-hotspot_import:: sane-hotspot_import_dir sane-hotspot_import_include
1198
1199# Verify the base directory exists
1200sane-hotspot_import_dir:
1201 @$(RM) $(TMP_SDK_INCLUDE_FILE_DIFFS)
1202 @$(RM) $(TMP_SDK_INCLUDE_FILE_LIST)
1203 @if [ ! -d "$(HOTSPOT_IMPORT_PATH)" ]; then \
1204 $(ECHO) "WARNING: The directory HOTSPOT_IMPORT_PATH=$(HOTSPOT_IMPORT_PATH) \n" \
1205 " does not exist, check your value of ALT_HOTSPOT_IMPORT_PATH. \n" \
1206 "" >> $(WARNING_FILE) ; \
1207 fi
1208
1209# Verify hotspot include files
1210sane-hotspot_import_include: $(TMP_SDK_INCLUDE_FILE_LIST) $(TMP_SDK_INCLUDE_FILE_DIFFS)
1211 @if [ "`$(CAT) $(TMP_SDK_INCLUDE_FILE_DIFFS)`" != "" ] ; then \
1212 $(ECHO) "WARNING: Possible HotSpot VM interface conflict. \n" \
1213 " HOTSPOT_IMPORT_PATH is used to import files from the VM build. \n" \
1214 " It is also used to verify that any copied files are consistent between \n" \
1215 " these two components. It has been detected that one or more of the \n" \
1216 " VM interface files inside this workspace may not match the interfaces \n" \
1217 " exported by the VM, or the VM versions could not be found. \n" \
1218 " The list of VM interface files is: \n" \
1219 " $(HOTSPOT_INCLUDE_FILE_LIST). \n" \
1220 " This workspace has copies of these files at: \n" \
1221 " $(SHARE_SRC)/javavm/export and $(PLATFORM_SRC)/javavm/export \n" \
1222 " for build purposes, and they should contain the same interfaces \n" \
1223 " as the VM versions imported from: \n" \
1224 " \$$(HOTSPOT_IMPORT_PATH)/include \n" \
1225 " (i.e. $(HOTSPOT_IMPORT_PATH)/include) \n" \
1226 " If an interface indeed doesn't match, then the use of this interface \n" \
1227 " at JDK runtime could cause serious errors. \n" \
1228 "" >> $(WARNING_FILE) ; \
1229 for i in $(TMP_SDK_INCLUDE_FILE_DIFFS); do \
1230 if [ -s $$i ] ; then \
1231 $(ECHO) " " >> $(WARNING_FILE); \
1232 $(ECHO) "VM Interface Differences: $$i" >> $(WARNING_FILE); \
1233 $(CAT) $$i >> $(WARNING_FILE); \
1234 $(ECHO) " " >> $(WARNING_FILE); \
1235 fi; \
1236 done; \
1237 fi
1238 @$(RM) $(TMP_SDK_INCLUDE_FILE_DIFFS)
1239 @$(RM) $(TMP_SDK_INCLUDE_FILE_LIST)
1240
1241# The JDI-SA feature is not currently released on some platforms.
1242# See the Defs-<arch>.gmk files.
1243
1244ifeq ($(INCLUDE_SA), true)
1245# Verify that hotspot Serviceability Agent files are present. To keep
1246# it simple, we will just check for one of them. The others have arch
1247# dependent paths.
1248
1249sane-hotspot_import::
1250 @if [ ! -r $(HOTSPOT_IMPORT_PATH)/lib/sa-jdi.jar ] ; then \
1251 $(ECHO) "WARNING: File $(HOTSPOT_IMPORT_PATH)/lib/sa-jdi.jar does not exist.\n" \
1252 " The JDI binding for the Serviceability Agent will not be included in the build.\n" \
1253 " Please check your access to\n" \
1254 " $(HOTSPOT_IMPORT_PATH)/lib/sa-jdi.jar\n" \
1255 " and/or check your value of ALT_HOTSPOT_IMPORT_PATH.\n" \
1256 "" >> $(WARNING_FILE) ; \
1257 fi
1258endif
1259
1260######################################################
1261# Check the ant version
1262######################################################
1263ANT_CHECK :=$(call CheckVersions,$(ANT_VER),$(REQUIRED_ANT_VER))
1264sane-ant_version:
1265 @if [ "$(ANT_CHECK)" != "same" \
1266 -a "$(ANT_CHECK)" != "newer" ]; then \
1267 $(ECHO) "WARNING: The version of ant being used is older than \n" \
1268 " the required version of '$(REQUIRED_ANT_VER)'. \n" \
1269 " The version of ant found was '$(ANT_VER)'. \n" \
1270 "" >> $(WARNING_FILE) ; \
1271 fi
1272
1273######################################################
duke6e45e102007-12-01 00:00:00 +00001274# Check the zip file version
1275######################################################
1276ZIP_CHECK :=$(call CheckVersions,$(ZIP_VER),$(REQUIRED_ZIP_VER))
1277sane-zip_version: sane-unzip_version
1278 @if [ "$(ZIP_CHECK)" != "same" -a "$(ZIP_CHECK)" != "newer" ]; then \
1279 $(ECHO) "WARNING: The version of zip being used is older than \n" \
1280 " the required version of '$(REQUIRED_ZIP_VER)'. \n" \
1281 " The version of zip found was '$(ZIP_VER)'. \n" \
1282 "" >> $(WARNING_FILE) ; \
1283 fi
1284
1285######################################################
1286# Check the unzip file version
1287######################################################
1288UNZIP_CHECK :=$(call CheckVersions,$(UNZIP_VER),$(REQUIRED_UNZIP_VER))
1289sane-unzip_version:
1290 @if [ "$(UNZIP_CHECK)" != "same" -a "$(UNZIP_CHECK)" != "newer" ]; then \
1291 $(ECHO) "WARNING: The version of unzip being used is older than \n" \
1292 " the required version of '$(REQUIRED_UNZIP_VER)'. \n" \
1293 " The version of unzip found was '$(UNZIP_VER)'. \n" \
1294 "" >> $(WARNING_FILE) ; \
1295 fi
1296
1297######################################################
1298# Check for windows DirectX sdk directory
1299######################################################
1300sane-dxsdk:
1301ifeq ($(PLATFORM), windows)
tdvcf2e2232008-07-18 10:48:44 -07001302 @if [ ! -r $(DXSDK_INCLUDE_PATH)/d3d9.h ]; then \
duke6e45e102007-12-01 00:00:00 +00001303 $(ECHO) "ERROR: You do not have access to a valid DirectX SDK Include dir.\n" \
1304 " The value of DXSDK_INCLUDE_PATH must point a valid DX SDK dir.\n" \
1305 " Please check your access to \n" \
1306 " $(DXSDK_INCLUDE_PATH) \n" \
1307 " and/or check your value of ALT_DXSDK_PATH or ALT_DXSDK_INCLUDE_PATH.\n" \
1308 " Microsoft DirectX 9 SDK (Summer 2004 Update or newer) can be downloaded from the following location:\n" \
1309 " http://msdn.microsoft.com/library/default.asp?url=/downloads/list/directx.asp\n" \
1310 " Or http://www.microsoft.com/directx\n" \
1311 "" >> $(ERROR_FILE) ; \
1312 else \
1313 if [ ! "$(DXSDK_VER)" = "$(REQUIRED_DXSDK_VER)" ]; then \
1314 $(ECHO) "ERROR: The DirectX SDK must be version $(REQUIRED_DXSDK_VER).\n" \
1315 " $(YOU_ARE_USING) DirectX SDK version: $(DXSDK_VER)\n" \
1316 " The DirectX SDK was obtained from the following location: \n" \
1317 " $(DXSDK_PATH) \n" \
1318 " Please change your DirectX SDK. \n" \
1319 " Microsoft DirectX 9 SDK (Summer 2004 Update or newer) can be downloaded from the following location:\n" \
1320 " http://msdn.microsoft.com/library/default.asp?url=/downloads/list/directx.asp\n" \
1321 " Or http://www.microsoft.com/directx\n" \
1322 "" >> $(ERROR_FILE) ; \
1323 else \
1324 if [ -r $(DXSDK_INCLUDE_PATH)/basetsd.h ]; then \
1325 if [ `$(EGREP) -c __int3264 $(DXSDK_INCLUDE_PATH)/basetsd.h` -ne 0 ]; then \
1326 $(ECHO) "WARNING: The DirectX SDK Include directory contains a newer basetsd.h,\n" \
1327 " which may indicate that you're using an incorrect version of DirectX SDK.\n" \
1328 " This may result in a build failure.\n" \
1329 " The DirectX SDK Include dir was obtained from the following location:\n" \
1330 " $(DXSDK_INCLUDE_PATH) \n" \
tdvcf2e2232008-07-18 10:48:44 -07001331 " Please change your DirectX SDK to version 9 (Summer 2004 Update or newer).\n" \
duke6e45e102007-12-01 00:00:00 +00001332 " Microsoft DirectX 9 SDK can be downloaded from the following location:\n" \
1333 " http://msdn.microsoft.com/library/default.asp?url=/downloads/list/directx.asp\n" \
1334 " Or http://www.microsoft.com/directx\n" \
1335 "" >> $(WARNING_FILE) ; \
1336 fi \
1337 fi \
1338 fi \
1339 fi
1340endif
1341
1342######################################################
1343# Check the linker version(s)
1344######################################################
1345ifeq ($(PLATFORM), windows)
1346 LINK_CHECK :=$(call CheckVersions,$(LINK_VER),$(REQUIRED_LINK_VER))
1347endif
1348sane-link:
1349ifdef LINK_VER
1350 @if [ "$(LINK_CHECK)" = "missing" ]; then \
1351 $(ECHO) "ERROR: The Linker version is undefined. \n" \
1352 "" >> $(ERROR_FILE) ; \
1353 fi
1354 @if [ "$(LINK_CHECK)" != "same" ]; then \
1355 $(ECHO) "WARNING: To build Java 2 SDK $(JDK_VERSION) you need : \n" \
ohair82280fd2009-03-16 11:24:06 -07001356 " $(REQUIRED_COMPILER_VERSION) - link.exe version \"$(REQUIRED_LINK_VER)\" \n" \
1357 " Specifically the $(REQUIRED_COMPILER_NAME) link.exe. \n " \
duke6e45e102007-12-01 00:00:00 +00001358 " $(YOU_ARE_USING) Linker version \"$(LINK_VER)\" \n" \
1359 "" >> $(WARNING_FILE) ; \
1360 fi
1361endif
1362
1363######################################################
1364# Check the compiler version(s)
1365######################################################
1366CC_CHECK :=$(call CheckVersions,$(CC_VER),$(REQUIRED_CC_VER))
duke6e45e102007-12-01 00:00:00 +00001367sane-compiler: sane-link
1368 @if [ "$(CC_CHECK)" = "missing" ]; then \
1369 $(ECHO) "ERROR: The Compiler version is undefined. \n" \
1370 "" >> $(ERROR_FILE) ; \
1371 fi
1372ifndef OPENJDK
1373 @if [ "$(CC_CHECK)" != "same" ]; then \
ohair82280fd2009-03-16 11:24:06 -07001374 $(ECHO) "WARNING: The $(PLATFORM) compiler is not version $(REQUIRED_COMPILER_VERSION) $(REQUIRED_CC_VER) \n" \
1375 " Specifically the $(REQUIRED_COMPILER_NAME) compiler. \n " \
1376 " $(YOU_ARE_USING) $(COMPILER_VERSION): $(CC_VER) \n" \
duke6e45e102007-12-01 00:00:00 +00001377 " The compiler was obtained from the following location: \n" \
1378 " $(COMPILER_PATH) \n" \
1379 "" >> $(WARNING_FILE) ; \
1380 fi
duke6e45e102007-12-01 00:00:00 +00001381endif
1382
1383######################################################
1384# Check that ALSA headers and libs are installed and
1385# that the header has the right version. We only
ohair8df39292009-01-31 17:31:21 -08001386# need /usr/include/alsa/version.h and /usr/lib/libasound.so
duke6e45e102007-12-01 00:00:00 +00001387######################################################
1388
ohair8df39292009-01-31 17:31:21 -08001389ifdef REQUIRED_ALSA_VERSION
1390 ALSA_CHECK := $(call CheckVersions,$(ALSA_VERSION),$(REQUIRED_ALSA_VERSION))
duke6e45e102007-12-01 00:00:00 +00001391endif
ohair8df39292009-01-31 17:31:21 -08001392sane-alsa-headers:
1393ifdef REQUIRED_ALSA_VERSION
andrew4d52e1c2010-11-23 02:17:23 +00001394 @if [ "$(ALSA_CHECK)" != "missing" ] ; then \
1395 if [ "$(ALSA_CHECK)" != "same" -a "$(ALSA_CHECK)" != "newer" ] ; then \
1396 $(ECHO) "ERROR: The ALSA version must be $(REQUIRED_ALSA_VERSION) or higher. \n" \
1397 " You have the following ALSA version installed: $${alsa_version} \n" \
1398 " Please reinstall ALSA (drivers and lib). You can download \n" \
1399 " the source distribution from http://www.alsa-project.org \n" \
1400 " or go to http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages. \n" \
1401 "" >> $(ERROR_FILE) ; \
1402 fi ; \
duke6e45e102007-12-01 00:00:00 +00001403 else \
andrew4d52e1c2010-11-23 02:17:23 +00001404 $(ECHO) "ERROR: You seem to not have installed ALSA $(REQUIRED_ALSA_VERSION) or higher. \n" \
1405 " Please install ALSA (drivers and lib). You can download the \n" \
1406 " source distribution from http://www.alsa-project.org or go to \n" \
1407 " http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages. \n" \
1408 "" >> $(ERROR_FILE) ; \
duke6e45e102007-12-01 00:00:00 +00001409 fi
1410endif
1411
1412# If a sanity file doesn't exist, just make sure it's dir exists
1413$(SANITY_FILES):
1414 -@$(prep-target)
1415
1416######################################################
1417# dump out the variable settings...
1418######################################################
ohair8df39292009-01-31 17:31:21 -08001419sane-settings::
duke6e45e102007-12-01 00:00:00 +00001420 @$(ECHO) >> $(MESSAGE_FILE)
1421 @$(ECHO) $(ALL_SETTINGS) >> $(MESSAGE_FILE)
1422 @$(ECHO) >> $(MESSAGE_FILE)
1423
1424######################################################
1425# Check for existence of DEPLOY_MSSDK on windows
1426######################################################
1427sane-mssdk_path:
1428ifeq ($(PLATFORM), windows)
1429 @if [ -z "$(DEPLOY_MSSDK)" ]; then \
1430 $(ECHO) "WARNING: Your DEPLOY_MSSDK setting is empty.\n" \
1431 " It is recommended to set ALT_DEPLOY_MSSDK.\n" \
1432 "" >> $(WARNING_FILE) ; \
1433 fi
1434 @if [ ! -r "$(DEPLOY_MSSDK)" ]; then \
1435 $(ECHO) "ERROR: You do not have a valid DEPLOY_MSSDK setting. \n" \
1436 " Please check your access to \n" \
1437 " $(DEPLOY_MSSDK) \n" \
1438 " and/or check your value of ALT_DEPLOY_MSSDK. \n" \
1439 "" >> $(ERROR_FILE) ; \
1440 fi
1441endif
1442
1443######################################################
ohair3ae113d2010-12-21 18:21:26 -08001444# Check for existence of the MSSDK on windows
duke6e45e102007-12-01 00:00:00 +00001445######################################################
1446sane-install-mssdk_path:
1447ifeq ($(PLATFORM), windows)
ohair3ae113d2010-12-21 18:21:26 -08001448 ifeq ($(COMPILER_VERSION), VS2010)
1449 @if [ -z "$(WINDOWSSDKDIR)" ]; then \
1450 $(ECHO) "WARNING: Your WINDOWSSDKDIR setting is empty.\n" \
1451 " It is recommended to set ALT_WINDOWSSDKDIR.\n" \
1452 "" >> $(WARNING_FILE) ; \
1453 fi
1454 @if [ ! -r "$(WINDOWSSDKDIR)" ]; then \
1455 $(ECHO) "ERROR: You do not have a valid WINDOWSSDKDIR setting. \n" \
1456 " Please check your access to \n" \
1457 " $(WINDOWSSDKDIR) \n" \
1458 " and/or check your value of ALT_WINDOWSSDKDIR. \n" \
1459 "" >> $(ERROR_FILE) ; \
1460 fi
1461 endif
duke6e45e102007-12-01 00:00:00 +00001462 @if [ -z "$(INSTALL_MSSDK)" ]; then \
1463 $(ECHO) "WARNING: Your INSTALL_MSSDK setting is empty.\n" \
1464 " It is recommended to set ALT_INSTALL_MSSDK.\n" \
1465 "" >> $(WARNING_FILE) ; \
1466 fi
1467 @if [ ! -r "$(INSTALL_MSSDK)" ]; then \
1468 $(ECHO) "ERROR: You do not have a valid INSTALL_MSSDK setting. \n" \
1469 " Please check your access to \n" \
1470 " $(INSTALL_MSSDK) \n" \
1471 " and/or check your value of ALT_INSTALL_MSSDK. \n" \
1472 "" >> $(ERROR_FILE) ; \
1473 fi
1474endif
1475
1476######################################################
1477# Check for existence of INSTALL_MSIVAL2 on windows
1478######################################################
1479sane-install-msival2_path:
1480ifeq ($(PLATFORM), windows)
1481 @if [ -z "$(INSTALL_MSIVAL2)" ]; then \
1482 $(ECHO) "WARNING: Your INSTALL_MSIVAL2 setting is empty.\n" \
1483 " It is recommended to set ALT_INSTALL_MSIVAL2.\n" \
1484 "" >> $(WARNING_FILE) ; \
1485 fi
1486 @if [ ! -r "$(INSTALL_MSIVAL2)" ]; then \
1487 $(ECHO) "ERROR: You do not have a valid INSTALL_MSIVAL2 setting. \n" \
1488 " Please check your access to \n" \
1489 " $(INSTALL_MSIVAL2) \n" \
1490 " and/or check your value of ALT_INSTALL_MSIVAL2. \n" \
1491 "" >> $(ERROR_FILE) ; \
1492 fi
1493endif
1494
1495######################################################
1496# Check the Solaris GNU c++ compiler for solaris plugin
1497######################################################
1498sane-gcc-compiler:
1499ifeq ($(PLATFORM), solaris)
1500 ifndef OPENJDK
1501 @if [ -r $(GCC_COMPILER_PATH) ]; then \
ohair8df39292009-01-31 17:31:21 -08001502 if [ ! "$(GCC_VER)" = $(REQUIRED_GCC_VERSION) ]; then \
1503 $(ECHO) "ERROR: The Solaris GCC compiler version must be $(REQUIRED_GCC_VERSION). \n" \
duke6e45e102007-12-01 00:00:00 +00001504 " You are using the following compiler version: $(GCC_VER) \n" \
1505 " The compiler was obtained from the following location: \n" \
1506 " $(GCC_COMPILER_PATH) \n" \
1507 " Please change your compiler. \n" \
1508 "" >> $(ERROR_FILE) ; \
1509 fi \
1510 else \
1511 $(ECHO) "ERROR: You do not have a valid GCC_COMPILER_PATH setting. \n" \
1512 " Please check your access to \n" \
1513 " $(GCC_COMPILER_PATH) \n" \
1514 " and/or check your value of ALT_GCC_COMPILER_PATH. \n" \
1515 " This will affect you if you build the plugin target. \n" \
1516 "" >> $(ERROR_FILE) ; \
1517 fi
1518 endif
1519
1520 ifeq ($(PLATFORM), linux)
1521 ifdef ALT_GCC29_COMPILER_PATH
1522 @if [ ! -x $(ALT_GCC29_COMPILER_PATH)/bin/gcc ]; then \
1523 $(ECHO) "ERROR: You do not have a valid ALT_GCC29_COMPILER_PATH setting. \n" \
1524 " Please check your access to \n" \
1525 " $(ALT_GCC29_COMPILER_PATH)/bin/gcc \n" \
1526 " This will affect you if you build the plugin target. \n" \
1527 "" >> $(ERROR_FILE) ; \
1528 fi
1529 endif
1530 ifdef ALT_GCC29_PLUGIN_LIB_PATH
1531 @if [ ! -r $(ALT_GCC29_PLUGIN_LIB_PATH)/libjavaplugin_oji.so ]; then \
1532 $(ECHO) "Error: You do not have a valid ALT_GCC29_PLUGIN_LIB_PATH setting. \n" \
1533 " Please check your access to \n" \
1534 " $(ALT_GCC29_PLUGIN_LIB_PATH)/libjavaplugin_oji.so \n" \
1535 " This will affect you if you build the plugin target, specifically for gcc 2.9 version of OJI plugin library. \n" \
1536 "" >> $(ERROR_FILE) ; \
1537 fi
1538 else
1539 @if [ ! -r $(GCC29_COMPILER_PATH) ]; then \
1540 $(ECHO) "ERROR: You do not have a valid GCC29_COMPILER_PATH setting. \n" \
1541 " Please check your access to \n" \
1542 " $(GCC29_COMPILER_PATH) \n" \
1543 " and/or check your value of ALT_GCC29_COMPILER_PATH. \n" \
1544 " This will affect you if you build the plugin target. \n" \
1545 "" >> $(ERROR_FILE) ; \
1546 fi
1547 endif
1548 endif
1549endif
1550
1551
1552######################################################
1553# MOZILLA_HEADERS_PATH must be valid
1554######################################################
1555sane-mozilla:
1556ifeq ($(ARCH_DATA_MODEL), 32)
1557 ifdef ALT_MOZILLA_HEADERS_PATH
ohair5dfae9b2010-03-03 11:29:44 -08001558 @if [ `$(ECHO) $(subst \,/,$(ALT_MOZILLA_HEADERS_PATH)) | $(EGREP) -c '^([A-Za-z]:)?/'` -ne 1 ]; then \
duke6e45e102007-12-01 00:00:00 +00001559 $(ECHO) "ERROR: ALT_MOZILLA_HEADERS_PATH must be an Absolute Path Name, \n" \
1560 " not a Relative Path Name. \n" \
1561 " The current value of ALT_MOZILLA_HEADERS_PATH is \n" \
1562 " $(ALT_MOZILLA_HEADERS_PATH) \n" \
1563 " Please fix this and continue your build. \n" \
1564 "" >> $(ERROR_FILE) ; \
1565 fi
1566 endif
1567 @#
1568 @# MOZILLA_HEADERS_PATH must be valid....
1569 @#
1570 ifeq ($(PLATFORM), windows)
1571 @if [ ! -r $(subst \,/,$(MOZILLA_HEADERS_PATH))/mozilla_headers_18.win32/java/bool.h ]; then \
1572 $(ECHO) "ERROR: You do not have access to valid Mozilla header files. \n" \
1573 " Please check your access to \n" \
1574 " $(subst \,/,$(MOZILLA_HEADERS_PATH))/mozilla_headers_18.win32/java/bool.h \n" \
1575 " and/or check your value of ALT_JDK_DEVTOOLS_DIR, ALT_MOZILLA_HEADERS_PATH, \n" \
1576 " and on Windows, ALT_JDK_JAVA_DRIVE. \n" \
1577 "" >> $(ERROR_FILE) ; \
1578 fi
1579 else
1580 @if [ ! -r $(subst \,/,$(MOZILLA_HEADERS_PATH))/mozilla_headers_18/java/bool.h ]; then \
1581 $(ECHO) "ERROR: You do not have access to valid Mozilla header files. \n" \
1582 " Please check your access to \n" \
1583 " $(subst \,/,$(MOZILLA_HEADERS_PATH))/mozilla_headers_18/java/bool.h \n" \
1584 " and/or check your value of ALT_JDK_DEVTOOLS_DIR, ALT_MOZILLA_HEADERS_PATH, \n" \
1585 "" >> $(ERROR_FILE) ; \
1586 fi
1587 endif
herrick43e2a0c2009-06-12 14:56:32 -04001588 @#
1589 @# Check for presence of headers required for new Java Plug-In ("plugin2")
1590 @#
1591 @if [ ! -r $(subst \,/,$(MOZILLA_HEADERS_PATH))/plugin2_mozilla_headers/npapi.h ]; then \
1592 $(ECHO) "ERROR: You do not have access to valid Mozilla header files for the new Java Plug-In. \n" \
1593 " Please check your access to \n" \
1594 " $(subst \,/,$(MOZILLA_HEADERS_PATH))/plugin2_mozilla_headers/npapi.h \n" \
1595 " and/or check your value of ALT_JDK_DEVTOOLS_DIR, ALT_MOZILLA_HEADERS_PATH, \n" \
1596 "" >> $(ERROR_FILE) ; \
1597 fi
duke6e45e102007-12-01 00:00:00 +00001598endif
1599
1600
ohaird36311a2008-03-25 14:40:43 -07001601######################################################
herrick43e2a0c2009-06-12 14:56:32 -04001602# Make sure Java Kernel VM is accessible
1603######################################################
1604sane-kernel-vm:
1605ifeq ($(PLATFORM), windows)
1606 ifeq ($(ARCH_DATA_MODEL), 32)
1607 @if [ ! -r $(HOTSPOT_KERNEL_PATH)/jvm.dll ]; then \
herrick446553d2009-06-19 11:46:39 -04001608 $(ECHO) "WARNING: Your HOTSPOT_IMPORT_PATH does not include a Kernel VM... \n" \
1609 " The kernel installer may not be built (unless hotspot is also). \n" \
herrick43e2a0c2009-06-12 14:56:32 -04001610 " $(HOTSPOT_KERNEL_PATH)/jvm.dll \n" \
1611 " Please check the value of ALT_HOTSPOT_IMPORT_PATH. \n" \
herrick446553d2009-06-19 11:46:39 -04001612 >> $(WARNING_FILE) ; \
herrick43e2a0c2009-06-12 14:56:32 -04001613 fi
1614 endif
1615endif
1616
1617
1618######################################################
1619# SECURITY_BASELINE_131 test
1620######################################################
1621security_baseline_131:
1622ifeq ($(PLATFORM), windows)
1623 @if [ -z "$(SECURITY_BASELINE_131)" ]; then \
1624 $(ECHO) "WARNING: Your SECURITY_BASELINE_131 setting is empty.\n" \
1625 " Setting it to the default value of 1.3.1_20.\n" \
1626 " It is recommended to set SECURITY_BASELINE_131.\n" \
1627 "" >> $(WARNING_FILE) ; \
1628 fi
1629endif
1630
1631######################################################
ohaird36311a2008-03-25 14:40:43 -07001632# SECURITY_BASELINE_142 test
1633######################################################
1634security_baseline_142:
1635ifeq ($(PLATFORM), windows)
1636 @if [ -z "$(SECURITY_BASELINE_142)" ]; then \
1637 $(ECHO) "WARNING: Your SECURITY_BASELINE_142 setting is empty.\n" \
1638 " Setting it to the default value of 1.4.2_10.\n" \
1639 " It is recommended to set SECURITY_BASELINE_142.\n" \
1640 "" >> $(WARNING_FILE) ; \
1641 fi
1642endif
1643
1644######################################################
1645# SECURITY_BASELINE_150 test
1646######################################################
1647security_baseline_150:
1648ifeq ($(PLATFORM), windows)
1649 @if [ -z "$(SECURITY_BASELINE_150)" ]; then \
1650 $(ECHO) "WARNING: Your SECURITY_BASELINE_150 setting is empty.\n" \
1651 " Setting it to the default value of 1.5.0_07.\n" \
1652 " It is recommended to set SECURITY_BASELINE_150.\n" \
1653 "" >> $(WARNING_FILE) ; \
1654 fi
1655endif
duke6e45e102007-12-01 00:00:00 +00001656
herrick43e2a0c2009-06-12 14:56:32 -04001657######################################################
1658# SECURITY_BASELINE_160 test
1659######################################################
1660security_baseline_160:
1661ifeq ($(PLATFORM), windows)
1662 @if [ -z "$(SECURITY_BASELINE_160)" ]; then \
1663 $(ECHO) "WARNING: Your SECURITY_BASELINE_160 setting is empty.\n" \
1664 " Setting it to the default value of 1.6.0_11.\n" \
1665 " It is recommended to set SECURITY_BASELINE_160.\n" \
1666 "" >> $(WARNING_FILE) ; \
1667 fi
1668endif
1669
duke6e45e102007-12-01 00:00:00 +00001670
1671######################################################
1672# this should be the last rule in any target's sanity rule.
1673######################################################
1674sane-lastrule:
1675ifndef EXTERNALSANITYCONTROL
1676 @if [ -r $(MESSAGE_FILE) ]; then \
1677 $(CAT) $(MESSAGE_FILE) ; \
1678 fi
1679 @if [ -r $(WARNING_FILE) ]; then \
1680 $(CAT) $(WARNING_FILE) ; \
1681 fi
1682 @if [ "x$(INSANE)" != x ]; then \
1683 $(ECHO) "INSANE mode requested. \n" \
1684 "Sanity will not force a build termination, even with errors.\n" \
1685 "" >> $(ERROR_FILE); \
1686 fi
1687 @if [ -r $(ERROR_FILE) ]; then \
1688 if [ "x$(INSANE)" = x ]; then \
1689 $(ECHO) "Exiting because of the above error(s). \n" \
1690 "">> $(ERROR_FILE); \
1691 fi ; \
1692 $(CAT) $(ERROR_FILE) ; \
1693 if [ "x$(INSANE)" = x ]; then \
1694 exit 1 ; \
1695 fi ; \
1696 fi
1697ifdef PEDANTIC
1698 @if [ -r $(WARNING_FILE) ]; then \
1699 $(ECHO) "PEDANTIC mode requested. \n" \
1700 "Exiting because of the above warning(s). \n" \
1701 "" >> $(ERROR_FILE); \
1702 $(CAT) $(ERROR_FILE) ; \
1703 exit 1 ; \
1704 fi
1705endif # PEDANTIC
1706 @if [ ! -r $(ERROR_FILE) ]; then \
1707 $(ECHO) "Sanity check passed." ; \
1708 fi
1709endif # EXTERNALSANITYCONTROL
1710