make/sanity-rules.gmk
changeset 0 fd16c54261b3
child 2778 6df702c8ca19
equal deleted inserted replaced
-1:000000000000 0:fd16c54261b3
       
     1 #
       
     2 # Copyright 2001-2007 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 #
       
    25 
       
    26 ################################################################
       
    27 # SANITY
       
    28 ################################################################
       
    29 
       
    30 sanity:: pre-sanity settings insane environment
       
    31 
       
    32 ifeq ($(BUILD_HOTSPOT), true)
       
    33   sanity:: hotspot-sanity
       
    34 endif
       
    35 
       
    36 ifeq ($(BUILD_DEPLOY), true)
       
    37   sanity:: deploy-sanity
       
    38 endif
       
    39 
       
    40 ifeq ($(BUILD_JDK), true)
       
    41   sanity:: jdk-sanity 
       
    42 endif
       
    43 
       
    44 # Only need these sanity rules when not doing a debug build
       
    45 ifeq ($(DEBUG_NAME),)
       
    46 
       
    47   ifeq ($(BUILD_INSTALL), true)
       
    48     sanity:: install-sanity
       
    49   endif
       
    50 
       
    51   ifeq ($(BUILD_SPONSORS), true)
       
    52     sanity:: sponsors-sanity
       
    53   endif
       
    54 
       
    55 endif
       
    56 
       
    57 sanity:: post-sanity
       
    58 
       
    59 source-sanity : pre-sanity alt_bootdir bootdir post-sanity
       
    60 
       
    61 $(ERROR_FILE) $(WARNING_FILE) $(MESSAGE_FILE):
       
    62 	@$(prep-target)
       
    63 
       
    64 purge-sanity: $(ERROR_FILE) $(WARNING_FILE) $(MESSAGE_FILE)
       
    65 	-@$(RM) $(ERROR_FILE) $(WARNING_FILE) $(MESSAGE_FILE)
       
    66 
       
    67 pre-sanity: purge-sanity 
       
    68 
       
    69 # this should be the last rule in any target's sanity rule.
       
    70 post-sanity post-sanity-hotspot post-sanity-jdk post-sanity-install post-sanity-deploy:
       
    71 	@if [ -r $(MESSAGE_FILE) ]; then \
       
    72 	  $(ECHO) "" ; \
       
    73 	  $(CAT) $(MESSAGE_FILE) ; \
       
    74 	fi
       
    75 	@if [ -r $(WARNING_FILE) ]; then \
       
    76 	  $(CAT) $(WARNING_FILE) ; \
       
    77 	fi
       
    78 	@if [ "x$(INSANE)" != x ]; then \
       
    79 	  $(ECHO) "INSANE mode requested. \n" \
       
    80 	    "Sanity will not force a build termination, even with errors.\n" \
       
    81 	    "" >> $(ERROR_FILE); \
       
    82 	fi
       
    83 	@if [ -r $(ERROR_FILE) ]; then \
       
    84 	  if [ "x$(INSANE)" = x ]; then \
       
    85 	    $(ECHO) "Exiting because of the above error(s). \n" \
       
    86 	      "">> $(ERROR_FILE); \
       
    87 	  fi ; \
       
    88 	  $(CAT) $(ERROR_FILE) ; \
       
    89 	  if [ "x$(INSANE)" = x ]; then \
       
    90 	    exit 1 ; \
       
    91 	  fi ; \
       
    92 	fi
       
    93 ifdef PEDANTIC
       
    94 	@if [ -r $(WARNING_FILE) ]; then \
       
    95 	  $(ECHO) "PEDANTIC mode requested. \n" \
       
    96 	    "Exiting because of the above warning(s). \n" \
       
    97 	    "" >> $(ERROR_FILE); \
       
    98 	  $(CAT) $(ERROR_FILE) ; \
       
    99 	  exit 1 ; \
       
   100 	fi
       
   101 endif
       
   102 	@if [ ! -r $(ERROR_FILE) ]; then \
       
   103 	  $(ECHO) "Sanity check passed." ; \
       
   104 	fi
       
   105 
       
   106 insane:
       
   107 ifdef INSANE
       
   108 	@$(ECHO) "WARNING: You are building in 'INSANE' mode. You \n" \
       
   109 	   "        should not use this mode, and in fact, \n" \
       
   110 	   "        it may be removed at any time. If you \n" \
       
   111 	   "        have build problems as a result of using \n" \
       
   112 	   "        INSANE mode, then you should not expect \n" \
       
   113 	   "        assistance from anyone with the problems \n" \
       
   114 	   "        or consequences you experience. \n" \
       
   115 	   "" >> $(WARNING_FILE)
       
   116 endif
       
   117 
       
   118 # Get list of environment variables set that we do not want set
       
   119 ifdef ALT_HOTSPOT_SERVER_PATH
       
   120   DO_NOT_SET_LIST += ALT_HOTSPOT_SERVER_PATH
       
   121 endif
       
   122 ifdef ALT_HOTSPOT_CLIENT_PATH
       
   123   DO_NOT_SET_LIST += ALT_HOTSPOT_CLIENT_PATH
       
   124 endif
       
   125 ifdef ALT_HOTSPOT_LIB_PATH
       
   126   DO_NOT_SET_LIST += ALT_HOTSPOT_LIB_PATH
       
   127 endif
       
   128 
       
   129 # Error message for environment variable set that should not be
       
   130 %.do_not_set:
       
   131 	@$(ECHO) "ERROR: Your build environment has the variable\n" \
       
   132 	   "        $* defined. Please unset it and restart your build. \n" \
       
   133 	   "" >> $(ERROR_FILE)
       
   134 
       
   135 # Check the environment variables	
       
   136 environment: $(DO_NOT_SET_LIST:%=%.do_not_set)
       
   137 ifeq ($(LANGTOOLS_SRC_AVAILABLE), true)
       
   138   ifneq ($(BUILD_LANGTOOLS), true)
       
   139 	@$(ECHO) "WARNING: You are not building the LANGTOOLS sources.\n" \
       
   140            "        Lang tools (javac) will be obtained from \n" \
       
   141            "        the location set in ALT_JDK_IMPORT_PATH. \n" \
       
   142            "" >> $(WARNING_FILE)
       
   143   endif
       
   144 endif
       
   145 ifeq ($(JAXP_SRC_AVAILABLE), true)
       
   146   ifneq ($(BUILD_JAXP), true)
       
   147 	@$(ECHO) "WARNING: You are not building the JAXP sources.\n" \
       
   148            "        The jaxp files will be obtained from \n" \
       
   149            "        the location set in ALT_JDK_IMPORT_PATH. \n" \
       
   150            "" >> $(WARNING_FILE)
       
   151   endif
       
   152 endif
       
   153 ifeq ($(JAXWS_SRC_AVAILABLE), true)
       
   154   ifneq ($(BUILD_JAXWS), true)
       
   155 	@$(ECHO) "WARNING: You are not building the JAXWS sources.\n" \
       
   156            "        The jaxws files will be obtained from \n" \
       
   157            "        the location set in ALT_JDK_IMPORT_PATH. \n" \
       
   158            "" >> $(WARNING_FILE)
       
   159   endif
       
   160 endif
       
   161 ifeq ($(CORBA_SRC_AVAILABLE), true)
       
   162   ifneq ($(BUILD_CORBA), true)
       
   163 	@$(ECHO) "WARNING: You are not building the CORBA sources.\n" \
       
   164            "        The corba files will be obtained from \n" \
       
   165            "        the location set in ALT_JDK_IMPORT_PATH. \n" \
       
   166            "" >> $(WARNING_FILE)
       
   167   endif
       
   168 endif
       
   169 ifeq ($(HOTSPOT_SRC_AVAILABLE), true)
       
   170   ifneq ($(BUILD_HOTSPOT), true)
       
   171 	@$(ECHO) "WARNING: You are not building the HOTSPOT sources.\n" \
       
   172            "        Hotspot libs will be obtained from \n" \
       
   173            "        the location set in ALT_HOTSPOT_IMPORT_PATH. \n" \
       
   174            "" >> $(WARNING_FILE)
       
   175   endif
       
   176 endif
       
   177 ifeq ($(JDK_SRC_AVAILABLE), true)
       
   178   ifneq ($(BUILD_JDK), true)
       
   179 	@$(ECHO) "WARNING: You are not building the JDK sources.\n" \
       
   180 	   "        This will result in a development-only\n" \
       
   181 	   "        build of the JDK , lacking the jdk binaries.\n" \
       
   182 	   "" >> $(WARNING_FILE)
       
   183   endif
       
   184 endif
       
   185 ifeq ($(DEPLOY_SRC_AVAILABLE), true)
       
   186   ifneq ($(BUILD_DEPLOY), true)
       
   187 	@$(ECHO) "WARNING: You are not building the DEPLOY sources.\n" \
       
   188 	   "        This will result in a development-only\n" \
       
   189 	   "        build of the JDK, lacking the plugin and javaws binaries.\n" \
       
   190 	   "" >> $(WARNING_FILE)
       
   191   endif
       
   192 endif
       
   193 ifeq ($(INSTALL_SRC_AVAILABLE), true)
       
   194   ifneq ($(BUILD_INSTALL), true)
       
   195 	@$(ECHO) "WARNING: You are not building the INSTALL sources.\n" \
       
   196 	   "        This will result in a development-only\n" \
       
   197 	   "        build of the JDK, lacking the installation bundles\n" \
       
   198 	   "" >> $(WARNING_FILE)
       
   199   endif
       
   200 endif
       
   201 ifeq ($(SPONSORS_SRC_AVAILABLE), true)
       
   202   ifneq ($(BUILD_SPONSORS), true)
       
   203 	@$(ECHO) "WARNING: You are not building the SPONSORS sources.\n" \
       
   204 	   "" >> $(WARNING_FILE)
       
   205   endif
       
   206 endif
       
   207 ifndef OPENJDK
       
   208   ifdef NO_DOCS
       
   209 	@$(ECHO) "WARNING: Your build environment has the variable NO_DOCS\n" \
       
   210 	   "        defined. This will result in a development-only\n" \
       
   211 	   "        build of the JDK, lacking the documentation.\n" \
       
   212 	   "" >> $(WARNING_FILE)
       
   213   endif
       
   214 endif
       
   215 ifdef NO_IMAGES
       
   216 	@$(ECHO) "WARNING: Your build environment has the variable NO_IMAGES\n" \
       
   217 	   "        defined. This will result in a development-only\n" \
       
   218 	   "        build of the JDK, lacking the install images\n" \
       
   219 	   "        and bundles.\n" \
       
   220 	   "" >> $(WARNING_FILE)
       
   221 endif
       
   222 ifdef DEV_ONLY
       
   223 	@$(ECHO) "WARNING: Your build environment has the variable DEV_ONLY\n" \
       
   224 	   "        defined. This will result in a development-only\n" \
       
   225 	   "        build of the JDK, lacking the documentation\n" \
       
   226 	   "        build and installation bundles.\n" \
       
   227 	   "" >> $(WARNING_FILE)
       
   228 endif
       
   229 
       
   230 ######################################################
       
   231 # if specified, ALT_BOOTDIR must point to non-relative path if set
       
   232 ######################################################
       
   233 alt_bootdir:
       
   234 ifdef ALT_BOOTDIR
       
   235 	@if [ `$(ECHO) $(subst \,/,$(ALT_BOOTDIR)) | $(EGREP) -ci '^([a-z]:)?/'` -ne 1 ]; then \
       
   236 	  $(ECHO) "ERROR: ALT_BOOTDIR must be an Absolute Path Name, \n" \
       
   237 	    "      not a Relative Path Name. \n" \
       
   238 	    "      The current value of ALT_BOOTDIR is \n" \
       
   239 	    "          $(ALT_BOOTDIR) \n" \
       
   240 	    "      Please fix this and continue your build. \n" \
       
   241 	    "" >> $(ERROR_FILE) ; \
       
   242 	fi
       
   243 endif
       
   244 
       
   245 ######################################################
       
   246 # BOOTDIR must point to a valid JDK.
       
   247 ######################################################
       
   248 JAVA_VERSION := $(shell $(BOOTDIR)/bin/java$(EXE_SUFFIX) -version 2>&1  | $(NAWK) -F'"' '{ print $$2 }')
       
   249 JAVA_VERSION_OK := $(shell $(ECHO) $(JAVA_VERSION) | $(EGREP) -c '^1.[5-6].[0-9]')
       
   250 bootdir:
       
   251 	@if [ -x $(BOOTDIR)/bin/java$(EXE_SUFFIX) ]; then \
       
   252 	  if [ $(JAVA_VERSION_OK) -ne 1 ]; then \
       
   253 	    $(ECHO) "ERROR: Your BOOTDIR environment variable does not point \n" \
       
   254 	      "      to a valid JDK for bootstrapping this build. \n" \
       
   255 	      "      A JDK $(JDK_MKTG_VERSION) source generation process must be \n" \
       
   256 	      "      bootstrapped using JDK $(PREVIOUS_JDK_VERSION) fcs (or later). \n" \
       
   257 	      "      Apparently, your bootstrap JDK is version $(JAVA_VERSION) \n" \
       
   258 	      "      Please update your ALT_BOOTDIR setting and start your build again. \n" \
       
   259 	      "" >> $(ERROR_FILE) ; \
       
   260 	  fi \
       
   261 	else \
       
   262 	  $(ECHO) "ERROR: BOOTDIR does not point to a valid Java 2 SDK \n" \
       
   263 	    "      Check that you have access to \n" \
       
   264 	    "          $(BOOTDIR)/bin/java$(EXE_SUFFIX) \n" \
       
   265 	    "      and/or check your value of ALT_BOOTDIR. \n" \
       
   266 	    "" >> $(ERROR_FILE) ; \
       
   267 	fi
       
   268 
       
   269 ######################################################
       
   270 # dump out the variable settings...
       
   271 ######################################################
       
   272 ifneq ($(PLATFORM), windows)
       
   273   ifndef HOSTNAME
       
   274     HOSTNAME := $(shell hostname)
       
   275   endif
       
   276 endif
       
   277 settings:: 
       
   278 	@$(ECHO) "Build Machine Information:" >> $(MESSAGE_FILE)
       
   279 ifeq ($(PLATFORM), windows)
       
   280 	@$(ECHO) "   build machine = $(COMPUTERNAME)"  >> $(MESSAGE_FILE)
       
   281 else
       
   282 	@$(ECHO) "   build machine = $(HOSTNAME)"  >> $(MESSAGE_FILE)
       
   283 endif
       
   284 	@$(ECHO) "" >> $(MESSAGE_FILE)
       
   285 	@$(ECHO) "Build Directory Structure:" >> $(MESSAGE_FILE)
       
   286 	@$(ECHO) "   CWD = `$(PWD)`" >> $(MESSAGE_FILE)
       
   287 	@$(ECHO) "   TOPDIR = $(TOPDIR)"  >> $(MESSAGE_FILE)
       
   288 	@$(ECHO) "   CONTROL_TOPDIR = $(CONTROL_TOPDIR)"  >> $(MESSAGE_FILE)
       
   289 ifeq ($(LANGTOOLS_SRC_AVAILABLE), true)
       
   290 	@$(ECHO) "   LANGTOOLS_TOPDIR = $(LANGTOOLS_TOPDIR)"  >> $(MESSAGE_FILE)
       
   291 endif
       
   292 ifeq ($(JAXP_SRC_AVAILABLE), true)
       
   293 	@$(ECHO) "   JAXP_TOPDIR = $(JAXP_TOPDIR)"  >> $(MESSAGE_FILE)
       
   294 endif
       
   295 ifeq ($(JAXWS_SRC_AVAILABLE), true)
       
   296 	@$(ECHO) "   JAXWS_TOPDIR = $(JAXWS_TOPDIR)"  >> $(MESSAGE_FILE)
       
   297 endif
       
   298 ifeq ($(CORBA_SRC_AVAILABLE), true)
       
   299 	@$(ECHO) "   CORBA_TOPDIR = $(CORBA_TOPDIR)"  >> $(MESSAGE_FILE)
       
   300 endif
       
   301 ifeq ($(HOTSPOT_SRC_AVAILABLE), true)
       
   302 	@$(ECHO) "   HOTSPOT_TOPDIR = $(HOTSPOT_TOPDIR)"  >> $(MESSAGE_FILE)
       
   303 endif
       
   304 ifeq ($(JDK_SRC_AVAILABLE), true)
       
   305 	@$(ECHO) "   JDK_TOPDIR = $(JDK_TOPDIR)"  >> $(MESSAGE_FILE)
       
   306 endif
       
   307 ifeq ($(DEPLOY_SRC_AVAILABLE), true)
       
   308 	@$(ECHO) "   DEPLOY_TOPDIR = $(DEPLOY_TOPDIR)"  >> $(MESSAGE_FILE)
       
   309 endif
       
   310 ifeq ($(INSTALL_SRC_AVAILABLE), true)
       
   311 	@$(ECHO) "   INSTALL_TOPDIR = $(INSTALL_TOPDIR)"  >> $(MESSAGE_FILE)
       
   312 endif
       
   313 ifeq ($(SPONSORS_SRC_AVAILABLE), true)
       
   314 	@$(ECHO) "   SPONSORS_TOPDIR = $(SPONSORS_TOPDIR)"  >> $(MESSAGE_FILE)
       
   315 endif
       
   316 	@$(ECHO) "" >> $(MESSAGE_FILE)
       
   317 ifneq ($(SKIP_COMPARE_IMAGES), true)
       
   318 	@$(ECHO) "External File/Binary Locations:" >> $(MESSAGE_FILE)
       
   319 	@$(ECHO) "   PREVIOUS_JRE_BUNDLE = $(PREVIOUS_JRE_BUNDLE) " >> $(MESSAGE_FILE)
       
   320 	@$(ECHO) "   PREVIOUS_JDK_BUNDLE = $(PREVIOUS_JDK_BUNDLE) " >> $(MESSAGE_FILE)
       
   321 	@$(ECHO) "" >> $(MESSAGE_FILE)
       
   322 endif
       
   323 	@$(ECHO) "Build Directives:" >> $(MESSAGE_FILE)
       
   324 ifeq ($(LANGTOOLS_SRC_AVAILABLE), true)
       
   325 	@$(ECHO) "   BUILD_LANGTOOLS = $(BUILD_LANGTOOLS) " >> $(MESSAGE_FILE)
       
   326 endif
       
   327 ifeq ($(JAXP_SRC_AVAILABLE), true)
       
   328 	@$(ECHO) "   BUILD_JAXP = $(BUILD_JAXP) " >> $(MESSAGE_FILE)
       
   329 endif
       
   330 ifeq ($(JAXWS_SRC_AVAILABLE), true)
       
   331 	@$(ECHO) "   BUILD_JAXWS = $(BUILD_JAXWS) " >> $(MESSAGE_FILE)
       
   332 endif
       
   333 ifeq ($(CORBA_SRC_AVAILABLE), true)
       
   334 	@$(ECHO) "   BUILD_CORBA = $(BUILD_CORBA) " >> $(MESSAGE_FILE)
       
   335 endif
       
   336 ifeq ($(HOTSPOT_SRC_AVAILABLE), true)
       
   337 	@$(ECHO) "   BUILD_HOTSPOT = $(BUILD_HOTSPOT) " >> $(MESSAGE_FILE)
       
   338 endif
       
   339 ifeq ($(JDK_SRC_AVAILABLE), true)
       
   340 	@$(ECHO) "   BUILD_JDK    = $(BUILD_JDK) " >> $(MESSAGE_FILE)
       
   341 endif
       
   342 ifeq ($(DEPLOY_SRC_AVAILABLE), true)
       
   343 	@$(ECHO) "   BUILD_DEPLOY  = $(BUILD_DEPLOY) " >> $(MESSAGE_FILE)
       
   344 endif
       
   345 ifeq ($(INSTALL_SRC_AVAILABLE), true)
       
   346 	@$(ECHO) "   BUILD_INSTALL = $(BUILD_INSTALL) " >> $(MESSAGE_FILE)
       
   347 endif
       
   348 ifeq ($(SPONSORS_SRC_AVAILABLE), true)
       
   349 	@$(ECHO) "   BUILD_SPONSORS = $(BUILD_SPONSORS) " >> $(MESSAGE_FILE)
       
   350 endif
       
   351 	@$(ECHO) "" >> $(MESSAGE_FILE)
       
   352 
       
   353 .PHONY: sanity settings pre-sanity insane \
       
   354 	post-sanity post-sanity-hotspot post-sanity-jdk \
       
   355 	post-sanity-install post-sanity-deploy \
       
   356 	alt_bootdir bootdir