make/Defs-internal.gmk
changeset 21759 e24e22311718
parent 21510 0b432ae58dd5
child 21760 9f542d8601a8
equal deleted inserted replaced
21510:0b432ae58dd5 21759:e24e22311718
     1 #
       
     2 # Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
       
     3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4 #
       
     5 # This code is free software; you can redistribute it and/or modify it
       
     6 # under the terms of the GNU General Public License version 2 only, as
       
     7 # published by the Free Software Foundation.  Oracle designates this
       
     8 # particular file as subject to the "Classpath" exception as provided
       
     9 # by Oracle in the LICENSE file that accompanied this code.
       
    10 #
       
    11 # This code is distributed in the hope that it will be useful, but WITHOUT
       
    12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    13 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    14 # version 2 for more details (a copy is included in the LICENSE file that
       
    15 # accompanied this code).
       
    16 #
       
    17 # You should have received a copy of the GNU General Public License version
       
    18 # 2 along with this work; if not, write to the Free Software Foundation,
       
    19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    20 #
       
    21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    22 # or visit www.oracle.com if you need additional information or have any
       
    23 # questions.
       
    24 #
       
    25 
       
    26 #
       
    27 # Common variables used by all the Java makefiles.  This file should
       
    28 # not contain rules.
       
    29 #
       
    30 
       
    31 # The build times report is turned off by setting REPORT_BUILD_TIMES to nothing.
       
    32 # This is necessary for the target clobber/clean which will erase the
       
    33 # directories where the buildtimes are stored.
       
    34 REPORT_BUILD_TIMES=1
       
    35 # Store the build times in this directory.
       
    36 BUILDTIMESDIR=$(ABS_OUTPUTDIR)/tmp/buildtimes
       
    37 
       
    38 # Record starting time for build of a sub repository.
       
    39 define RecordStartTime
       
    40 $(MKDIR) -p $(BUILDTIMESDIR)
       
    41 $(DATE) '+%Y %m %d %H %M %S' | $(NAWK) '{ print $$1,$$2,$$3,$$4,$$5,$$6,($$4*3600+$$5*60+$$6) }' > $(BUILDTIMESDIR)/build_time_start_$1
       
    42 $(DATE) '+%Y-%m-%d %H:%M:%S' > $(BUILDTIMESDIR)/build_time_start_$1_human_readable
       
    43 endef
       
    44 
       
    45 # Indicate that we started to build a sub repository and record starting time. 
       
    46 define MakeStart
       
    47 $(call RecordStartTime,$1)
       
    48 $(PRINTF) "\n\n%s\n%s\n##### %-60.60s #####\n%s\n\n" \
       
    49 "########################################################################" \
       
    50 "########################################################################" \
       
    51 "Entering $1 for target(s) $2" \
       
    52 "########################################################################"
       
    53 endef
       
    54 
       
    55 # Record ending time and calculate the difference and store it in a
       
    56 # easy to read format. Handles builds that cross midnight. Expects
       
    57 # that a build will never take 24 hours or more. 
       
    58 define RecordEndTime
       
    59 $(DATE) '+%Y %m %d %H %M %S' | $(NAWK) '{ print $$1,$$2,$$3,$$4,$$5,$$6,($$4*3600+$$5*60+$$6) }' > $(BUILDTIMESDIR)/build_time_end_$1
       
    60 $(DATE) '+%Y-%m-%d %H:%M:%S' > $(BUILDTIMESDIR)/build_time_end_$1_human_readable
       
    61 $(ECHO) `$(CAT) $(BUILDTIMESDIR)/build_time_start_$1` `$(CAT) $(BUILDTIMESDIR)/build_time_end_$1` $1 | \
       
    62   $(NAWK) '{ F=$$7; T=$$14; if (F > T) { T+=3600*24 }; D=T-F; H=int(D/3600); \
       
    63              M=int((D-H*3600)/60); S=D-H*3600-M*60; printf("%02d:%02d:%02d %s\n",H,M,S,$$15); }' \
       
    64   > $(BUILDTIMESDIR)/build_time_diff_$1
       
    65 endef
       
    66 
       
    67 # Indicate that we are done.
       
    68 # Record ending time and print out the total time it took to build.
       
    69 define MakeFinish 
       
    70 $(if $(REPORT_BUILD_TIMES),$(call RecordEndTime,$1),) 
       
    71 $(PRINTF) "%s\n##### %-60.60s #####\n%s\n##### %-60.60s #####\n%s\n\n" \
       
    72 "########################################################################" \
       
    73 "Leaving $1 for target(s) $2" \
       
    74 "########################################################################" \
       
    75 $(if $(REPORT_BUILD_TIMES),"Build time `$(CAT) $(BUILDTIMESDIR)/build_time_diff_$1` for target(s) $2","") \
       
    76 "########################################################################" 
       
    77 endef
       
    78 
       
    79 # Find all build_time_* files and print their contents in a list sorted
       
    80 # on the name of the sub repository.
       
    81 define ReportBuildTimes
       
    82 $(PRINTF) -- "-- Build times ----------\nTarget %s\nStart %s\nEnd   %s\n%s\n%s\n-------------------------\n" \
       
    83 $1 \
       
    84 "`$(CAT) $(BUILDTIMESDIR)/build_time_start_TOTAL_human_readable`" \
       
    85 "`$(CAT) $(BUILDTIMESDIR)/build_time_end_TOTAL_human_readable`" \
       
    86 "`$(LS) $(BUILDTIMESDIR)/build_time_diff_* | $(GREP) -v _TOTAL | $(XARGS) $(CAT) | $(SORT) -k 2`" \
       
    87 "`$(CAT) $(BUILDTIMESDIR)/build_time_diff_TOTAL`"
       
    88 endef
       
    89 
       
    90 ifdef OPENJDK
       
    91   ifneq ($(OPENJDK),true)
       
    92     x:=$(error "OPENJDK (if defined) can only be set to true")
       
    93   endif
       
    94 endif
       
    95 
       
    96 # Define absolute paths to TOPDIRs
       
    97 ABS_LANGTOOLS_TOPDIR:=$(call OptFullPath,"$(LANGTOOLS_TOPDIR)")
       
    98 ABS_CORBA_TOPDIR:=$(call OptFullPath,"$(CORBA_TOPDIR)")
       
    99 ABS_JAXP_TOPDIR:=$(call OptFullPath,"$(JAXP_TOPDIR)")
       
   100 ABS_JAXWS_TOPDIR:=$(call OptFullPath,"$(JAXWS_TOPDIR)")
       
   101 ABS_JDK_TOPDIR:=$(call OptFullPath,"$(JDK_TOPDIR)")
       
   102 ABS_HOTSPOT_TOPDIR:=$(call OptFullPath,"$(HOTSPOT_TOPDIR)")
       
   103 ABS_NASHORN_TOPDIR:=$(call OptFullPath,"$(NASHORN_TOPDIR)")
       
   104 ABS_INSTALL_TOPDIR:=$(call OptFullPath,"$(INSTALL_TOPDIR)")
       
   105 ABS_SPONSORS_TOPDIR:=$(call OptFullPath,"$(SPONSORS_TOPDIR)")
       
   106 ABS_DEPLOY_TOPDIR:=$(call OptFullPath,"$(DEPLOY_TOPDIR)")
       
   107 
       
   108 # Macro to return true or false if a file exists and is readable
       
   109 define MkExists
       
   110 $(shell if [ -r $1 ]; then $(ECHO) true; else $(ECHO) false; fi)
       
   111 endef
       
   112 
       
   113 HOTSPOT_SRC_AVAILABLE := $(call MkExists,$(HOTSPOT_TOPDIR)/make/Makefile)
       
   114 ifndef BUILD_HOTSPOT
       
   115   ifdef ALT_HOTSPOT_IMPORT_PATH
       
   116     BUILD_HOTSPOT := false
       
   117   else
       
   118     BUILD_HOTSPOT := $(HOTSPOT_SRC_AVAILABLE)
       
   119   endif
       
   120 endif
       
   121 
       
   122 LANGTOOLS_SRC_AVAILABLE := $(call MkExists,$(LANGTOOLS_TOPDIR)/make/Makefile)
       
   123 ifndef BUILD_LANGTOOLS
       
   124   ifdef ALT_LANGTOOLS_DIST
       
   125     BUILD_LANGTOOLS := false
       
   126   else
       
   127     BUILD_LANGTOOLS := $(LANGTOOLS_SRC_AVAILABLE)
       
   128   endif
       
   129 endif
       
   130 
       
   131 CORBA_SRC_AVAILABLE := $(call MkExists,$(CORBA_TOPDIR)/make/Makefile)
       
   132 ifndef BUILD_CORBA
       
   133   ifdef ALT_CORBA_DIST
       
   134     BUILD_CORBA := false
       
   135   else
       
   136     BUILD_CORBA := $(CORBA_SRC_AVAILABLE)
       
   137   endif
       
   138 endif
       
   139 
       
   140 JAXP_SRC_AVAILABLE := $(call MkExists,$(JAXP_TOPDIR)/make/Makefile)
       
   141 ifndef BUILD_JAXP
       
   142   ifdef ALT_JAXP_DIST
       
   143     BUILD_JAXP := false
       
   144   else
       
   145     BUILD_JAXP := $(JAXP_SRC_AVAILABLE)
       
   146   endif
       
   147 endif
       
   148 
       
   149 JAXWS_SRC_AVAILABLE := $(call MkExists,$(JAXWS_TOPDIR)/make/Makefile)
       
   150 ifndef BUILD_JAXWS
       
   151   ifdef ALT_JAXWS_DIST
       
   152     BUILD_JAXWS := false
       
   153   else
       
   154     BUILD_JAXWS := $(JAXWS_SRC_AVAILABLE)
       
   155   endif
       
   156 endif
       
   157 
       
   158 JDK_SRC_AVAILABLE := $(call MkExists,$(JDK_TOPDIR)/make/Makefile)
       
   159 ifndef BUILD_JDK
       
   160   BUILD_JDK := $(JDK_SRC_AVAILABLE)
       
   161 endif
       
   162 ifeq ($(JDK_SRC_AVAILABLE),true)
       
   163   JDK_CLOSED_SRC_AVAILABLE := $(call MkExists,$(JDK_TOPDIR)/src/closed)
       
   164   ifeq ($(JDK_CLOSED_SRC_AVAILABLE),false)
       
   165     OPENJDK = true
       
   166   endif
       
   167 endif
       
   168 
       
   169 NASHORN_SRC_AVAILABLE := $(call MkExists,$(NASHORN_TOPDIR)/make/Makefile)
       
   170 ifndef BUILD_NASHORN
       
   171   ifdef ALT_NASHORN_DIST
       
   172     BUILD_NASHORN := false
       
   173   else
       
   174     BUILD_NASHORN := $(NASHORN_SRC_AVAILABLE)
       
   175   endif
       
   176 endif
       
   177 
       
   178 DEPLOY_SRC_AVAILABLE := $(call MkExists,$(DEPLOY_TOPDIR)/make/Makefile)
       
   179 ifndef BUILD_DEPLOY
       
   180   BUILD_DEPLOY := $(DEPLOY_SRC_AVAILABLE)
       
   181 endif
       
   182 
       
   183 INSTALL_SRC_AVAILABLE := $(call MkExists,$(INSTALL_TOPDIR)/make/Makefile)
       
   184 ifndef BUILD_INSTALL
       
   185   ifdef DEV_ONLY
       
   186     BUILD_INSTALL := false
       
   187   else
       
   188     BUILD_INSTALL := $(INSTALL_SRC_AVAILABLE)
       
   189   endif
       
   190 endif
       
   191 
       
   192 SPONSORS_SRC_AVAILABLE := $(call MkExists,$(SPONSORS_TOPDIR)/make/Makefile)
       
   193 ifndef BUILD_SPONSORS
       
   194   ifdef DEV_ONLY
       
   195     BUILD_SPONSORS := false
       
   196   else
       
   197     BUILD_SPONSORS := $(SPONSORS_SRC_AVAILABLE)
       
   198   endif
       
   199 endif
       
   200 
       
   201 
       
   202 # Do we build the source bundles?
       
   203 BUNDLE_RULES = $(JDK_TOPDIR)/make/closed/bundles.gmk
       
   204 ifeq ($(SKIP_BUNDLES_BUILD), true)
       
   205   BUNDLE_RULES_AVAILABLE := false
       
   206 else 
       
   207   BUNDLE_RULES_AVAILABLE := $(call MkExists,$(BUNDLE_RULES))
       
   208 endif
       
   209 
       
   210 # Current things we do NOT build for OPENJDK
       
   211 ifdef OPENJDK
       
   212   BUILD_DEPLOY = false
       
   213   BUILD_INSTALL = false
       
   214   BUILD_SPONSORS = false
       
   215   BUNDLE_RULES_AVAILABLE := false
       
   216   # These could be over-ridden on the command line or in environment
       
   217   ifndef SKIP_FASTDEBUG_BUILD
       
   218     SKIP_FASTDEBUG_BUILD = true
       
   219   endif
       
   220   ifndef SKIP_DEBUG_BUILD
       
   221     SKIP_DEBUG_BUILD = true
       
   222   endif
       
   223   ifndef SKIP_COMPARE_IMAGES
       
   224     SKIP_COMPARE_IMAGES = true
       
   225   endif
       
   226 else
       
   227   
       
   228   # Various non-OPENJDK reasons to NOT build the deploy repository
       
   229   ifeq ($(ARCH), ia64)
       
   230     BUILD_DEPLOY=false
       
   231   endif
       
   232   ifeq ($(ARCH), sparcv9)
       
   233     BUILD_DEPLOY=false
       
   234   endif
       
   235   ifeq ($(ARCH), amd64)
       
   236     ifeq ($(PLATFORM), solaris)
       
   237       BUILD_DEPLOY=false
       
   238     endif
       
   239   endif
       
   240 
       
   241 endif
       
   242 ifndef SKIP_PRODUCT_BUILD
       
   243   SKIP_PRODUCT_BUILD = false
       
   244 endif
       
   245 
       
   246 # Many reasons why we would want to skip the comparison to previous jdk
       
   247 ifndef SKIP_COMPARE_IMAGES
       
   248   ifeq ($(BUILD_JDK), false)
       
   249     SKIP_COMPARE_IMAGES = true
       
   250   endif
       
   251   ifeq ($(BUILD_DEPLOY), false)
       
   252     SKIP_COMPARE_IMAGES = true
       
   253   endif
       
   254   ifeq ($(BUILD_INSTALL), false)
       
   255     SKIP_COMPARE_IMAGES = true
       
   256   endif
       
   257   ifdef DEV_ONLY
       
   258     SKIP_COMPARE_IMAGES = true
       
   259   endif
       
   260 endif
       
   261 
       
   262 # Select defaults if these are not set to true or false
       
   263 ifndef SKIP_DEBUG_BUILD
       
   264   SKIP_DEBUG_BUILD=true
       
   265 endif
       
   266 ifndef SKIP_FASTDEBUG_BUILD
       
   267   SKIP_FASTDEBUG_BUILD=true
       
   268 endif
       
   269 
       
   270 # Select javadoc setting GENERATE_DOCS
       
   271 ifndef NO_DOCS
       
   272   # Default value (we want javadoc run)
       
   273   GENERATE_DOCS=true
       
   274   # No DOCS build when JDK_UPDATE_VERSION set on non-OPENJDK builds
       
   275   ifndef OPENJDK
       
   276     ifdef JDK_UPDATE_VERSION
       
   277       GENERATE_DOCS=false
       
   278     endif
       
   279   endif
       
   280   # If langtools, corba, jaxp, and jaxws are not being built, 
       
   281   #   a full jdk javadoc is not possible
       
   282   ifneq ($(BUILD_LANGTOOLS), true)
       
   283     GENERATE_DOCS=false
       
   284   endif
       
   285   ifneq ($(BUILD_CORBA), true)
       
   286     GENERATE_DOCS=false
       
   287   endif
       
   288   ifneq ($(BUILD_JAXP), true)
       
   289     GENERATE_DOCS=false
       
   290   endif
       
   291   ifneq ($(BUILD_JAXWS), true)
       
   292     GENERATE_DOCS=false
       
   293   endif
       
   294   ifeq ($(GENERATE_DOCS),false)
       
   295     NO_DOCS=true
       
   296   endif
       
   297 else
       
   298   GENERATE_DOCS=false
       
   299 endif
       
   300 
       
   301 # Output directory for hotspot build
       
   302 HOTSPOT_DIR = $(ABS_OUTPUTDIR)/hotspot
       
   303 
       
   304 # If we are building components
       
   305 ifndef ALT_LANGTOOLS_DIST
       
   306   LANGTOOLS_OUTPUTDIR = $(ABS_OUTPUTDIR)/langtools
       
   307   ABS_LANGTOOLS_DIST = $(LANGTOOLS_OUTPUTDIR)/dist
       
   308 endif
       
   309 ifndef ALT_CORBA_DIST
       
   310   CORBA_OUTPUTDIR = $(ABS_OUTPUTDIR)/corba
       
   311   ABS_CORBA_DIST = $(CORBA_OUTPUTDIR)/dist
       
   312 endif
       
   313 ifndef ALT_JAXP_DIST
       
   314   JAXP_OUTPUTDIR = $(ABS_OUTPUTDIR)/jaxp
       
   315   ABS_JAXP_DIST = $(JAXP_OUTPUTDIR)/dist
       
   316 endif
       
   317 ifndef ALT_JAXWS_DIST
       
   318   JAXWS_OUTPUTDIR = $(ABS_OUTPUTDIR)/jaxws
       
   319   ABS_JAXWS_DIST = $(JAXWS_OUTPUTDIR)/dist
       
   320 endif
       
   321 ifndef ALT_NASHORN_DIST
       
   322   NASHORN_OUTPUTDIR = $(ABS_OUTPUTDIR)/nashorn
       
   323   ABS_NASHORN_DIST = $(NASHORN_OUTPUTDIR)/dist
       
   324 endif
       
   325 
       
   326 # Common make arguments (supplied to all component builds)
       
   327 COMMON_BUILD_ARGUMENTS = \
       
   328     JDK_TOPDIR=$(ABS_JDK_TOPDIR) \
       
   329     JDK_MAKE_SHARED_DIR=$(ABS_JDK_TOPDIR)/make/common/shared \
       
   330     EXTERNALSANITYCONTROL=true \
       
   331     SOURCE_LANGUAGE_VERSION=$(SOURCE_LANGUAGE_VERSION) \
       
   332     TARGET_CLASS_VERSION=$(TARGET_CLASS_VERSION) \
       
   333     MILESTONE=$(MILESTONE) \
       
   334     BUILD_NUMBER=$(BUILD_NUMBER) \
       
   335     JDK_BUILD_NUMBER=$(JDK_BUILD_NUMBER) \
       
   336     FULL_VERSION=$(FULL_VERSION) \
       
   337     PREVIOUS_JDK_VERSION=$(PREVIOUS_JDK_VERSION) \
       
   338     JDK_VERSION=$(JDK_VERSION) \
       
   339     JDK_MKTG_VERSION=$(JDK_MKTG_VERSION) \
       
   340     JDK_MAJOR_VERSION=$(JDK_MAJOR_VERSION) \
       
   341     JDK_MINOR_VERSION=$(JDK_MINOR_VERSION) \
       
   342     JDK_MICRO_VERSION=$(JDK_MICRO_VERSION) \
       
   343     PREVIOUS_MAJOR_VERSION=$(PREVIOUS_MAJOR_VERSION) \
       
   344     PREVIOUS_MINOR_VERSION=$(PREVIOUS_MINOR_VERSION) \
       
   345     PREVIOUS_MICRO_VERSION=$(PREVIOUS_MICRO_VERSION)
       
   346 
       
   347 ifdef OPENJDK
       
   348   COMMON_BUILD_ARGUMENTS += OPENJDK=$(OPENJDK)
       
   349 endif
       
   350 
       
   351 ifdef ARCH_DATA_MODEL
       
   352   COMMON_BUILD_ARGUMENTS += ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)
       
   353 endif
       
   354 
       
   355 ifeq ($(DEBUG_NAME), debug)
       
   356   COMMON_BUILD_ARGUMENTS += VARIANT=DBG DEBUG_CLASSFILES=true
       
   357 endif
       
   358 
       
   359 ifeq ($(DEBUG_NAME), fastdebug)
       
   360   COMMON_BUILD_ARGUMENTS += VARIANT=DBG FASTDEBUG=true DEBUG_CLASSFILES=true
       
   361 endif
       
   362 
       
   363 ifdef COOKED_JDK_UPDATE_VERSION
       
   364   COMMON_BUILD_ARGUMENTS += COOKED_JDK_UPDATE_VERSION=$(COOKED_JDK_UPDATE_VERSION)
       
   365 endif
       
   366 
       
   367 ifdef COOKED_BUILD_NUMBER
       
   368   COMMON_BUILD_ARGUMENTS += COOKED_BUILD_NUMBER=$(COOKED_BUILD_NUMBER)
       
   369 endif
       
   370 
       
   371 ifdef ANT_HOME
       
   372   COMMON_BUILD_ARGUMENTS += ANT_HOME="$(ANT_HOME)"
       
   373 endif
       
   374 
       
   375 # When all repos support FULL_DEBUG_SYMBOLS and ZIP_DEBUGINFO_FILES,
       
   376 # then these can be set here:
       
   377 #ifdef FULL_DEBUG_SYMBOLS
       
   378 #  COMMON_BUILD_ARGUMENTS += FULL_DEBUG_SYMBOLS=$(FULL_DEBUG_SYMBOLS)
       
   379 #endif
       
   380 #
       
   381 #ifdef ZIP_DEBUGINFO_FILES
       
   382 #  COMMON_BUILD_ARGUMENTS += ZIP_DEBUGINFO_FILES="$(ZIP_DEBUGINFO_FILES)"
       
   383 #endif