1 #
   2 # Copyright (c) 1998, 2015, 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.
   8 #
   9 # This code is distributed in the hope that it will be useful, but WITHOUT
  10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12 # version 2 for more details (a copy is included in the LICENSE file that
  13 # accompanied this code).
  14 #
  15 # You should have received a copy of the GNU General Public License version
  16 # 2 along with this work; if not, write to the Free Software Foundation,
  17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18 #
  19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20 # or visit www.oracle.com if you need additional information or have any
  21 # questions.
  22 #
  23 #
  24 
  25 # Note: this makefile is invoked both from build.bat and from the J2SE
  26 # control workspace in exactly the same manner; the required
  27 # environment variables (Variant, WorkSpace, BootStrapDir, BuildUser, HOTSPOT_BUILD_VERSION)
  28 # are passed in as command line arguments.
  29 
  30 # Note: Running nmake or build.bat from the Windows command shell requires
  31 # that "sh" be accessible on the PATH. An MKS install does this.
  32 
  33 # SA components are built if BUILD_WIN_SA=1 is specified.
  34 # See notes in README. This produces files:
  35 #  1. sa-jdi.jar       - This is built before building jvm.dll
  36 #  2. sawindbg.dll     - Native library for SA - This is built after jvm.dll
  37 #                      - Also, .lib, .map, .pdb.
  38 #
  39 # Please refer to ./makefiles/sa.make
  40 
  41 # If we haven't set an ARCH yet use x86
  42 # create.bat and build.bat will set it, if used.
  43 !ifndef ARCH
  44 ARCH=x86
  45 !endif
  46 
  47 
  48 # Must be one of these values (if value comes in from env, can't trust it)
  49 !if "$(ARCH)" != "x86"
  50 !if "$(ARCH)" != "ia64"
  51 ARCH=x86
  52 !endif
  53 !endif
  54 
  55 # At this point we should be certain that ARCH has a definition
  56 # now determine the BUILDARCH
  57 #
  58 
  59 # the default BUILDARCH
  60 BUILDARCH=i486
  61 
  62 # Allow control workspace to force Itanium or AMD64 builds with LP64
  63 ARCH_TEXT=
  64 !ifdef LP64
  65 !if "$(LP64)" == "1"
  66 ARCH_TEXT=64-Bit
  67 !if "$(ARCH)" == "x86"
  68 BUILDARCH=amd64
  69 !else
  70 BUILDARCH=ia64
  71 !endif
  72 !endif
  73 !endif
  74 
  75 !if "$(BUILDARCH)" != "ia64"
  76 !ifndef CC_INTERP
  77 !ifndef FORCE_TIERED
  78 FORCE_TIERED=1
  79 !endif
  80 !endif
  81 !endif
  82 
  83 !if "$(BUILDARCH)" == "amd64"
  84 Platform_arch=x86
  85 Platform_arch_model=x86_64
  86 !endif
  87 !if "$(BUILDARCH)" == "i486"
  88 Platform_arch=x86
  89 Platform_arch_model=x86_32
  90 !endif
  91 
  92 # Supply these from the command line or the environment
  93 #  It doesn't make sense to default this one
  94 Variant=
  95 #  It doesn't make sense to default this one
  96 WorkSpace=
  97 
  98 variantDir = windows_$(BUILDARCH)_$(Variant)
  99 
 100 realVariant=$(Variant)
 101 VARIANT_TEXT=Core
 102 !if "$(Variant)" == "compiler1"
 103 VARIANT_TEXT=Client
 104 !elseif "$(Variant)" == "compiler2"
 105 !if "$(FORCE_TIERED)" == "1"
 106 VARIANT_TEXT=Server
 107 realVariant=tiered
 108 !else
 109 VARIANT_TEXT=Server
 110 !endif
 111 !elseif "$(Variant)" == "tiered"
 112 VARIANT_TEXT=Tiered
 113 !endif
 114 
 115 #########################################################################
 116 # Parameters for VERSIONINFO resource for jvm.dll.
 117 # These can be overridden via the nmake.exe command line.
 118 # They are overridden by RE during the control builds.
 119 #
 120 !include "$(WorkSpace)/make/jdk_version"
 121 
 122 # Define HOTSPOT_VM_DISTRO based on settings in make/openjdk_distro
 123 # or make/hotspot_distro.
 124 !ifndef HOTSPOT_VM_DISTRO
 125 !if exists($(WorkSpace)\src\closed)
 126 !include $(WorkSpace)\make\hotspot_distro
 127 !else
 128 !include $(WorkSpace)\make\openjdk_distro
 129 !endif
 130 !endif
 131 
 132 HS_FILEDESC=$(HOTSPOT_VM_DISTRO) $(ARCH_TEXT) $(VARIANT_TEXT) VM
 133 
 134 # JDK ProductVersion:
 135 # 1.5.0_<wx>-b<yz> will have DLL version 5.0.wx*10.yz
 136 # Thus, 1.5.0_10-b04  will be 5.0.100.4
 137 #       1.6.0-b01     will be 6.0.0.1
 138 #       1.6.0_01a-b02 will be 6.0.11.2
 139 #
 140 # STANDALONE_JDK_* variables are defined in make/jdk_version or on command line
 141 #
 142 !if "$(JDK_VER)" == ""
 143 JDK_VER=$(STANDALONE_JDK_MAJOR_VER),$(STANDALONE_JDK_MINOR_VER),$(STANDALONE_JDK_SECURITY_VER),$(STANDALONE_JDK_PATCH_VER)
 144 !endif
 145 !if "$(JDK_DOTVER)" == ""
 146 JDK_DOTVER=$(STANDALONE_JDK_MAJOR_VER).$(STANDALONE_JDK_MINOR_VER).$(STANDALONE_JDK_SECURITY_VER).$(STANDALONE_JDK_PATCH_VER)
 147 !endif
 148 !if "$(VERSION_SHORT)" == ""
 149 VERSION_SHORT=$(STANDALONE_JDK_MAJOR_VER).$(STANDALONE_JDK_MINOR_VER).$(STANDALONE_JDK_SECURITY_VER)
 150 !endif
 151 
 152 HS_VER=$(JDK_VER)
 153 HS_DOTVER=$(JDK_DOTVER)
 154 
 155 !if "$(HOTSPOT_RELEASE_VERSION)" == ""
 156 HOTSPOT_RELEASE_VERSION=$(VERSION_STRING)
 157 !endif
 158 
 159 !if "$(HOTSPOT_VERSION_STRING)" == ""
 160 HOTSPOT_VERSION_STRING=$(HOTSPOT_RELEASE_VERSION)
 161 !endif
 162 
 163 # End VERSIONINFO parameters
 164 
 165 # if hotspot-only build and/or OPENJDK isn't passed down, need to set OPENJDK
 166 !ifndef OPENJDK
 167 !if !exists($(WorkSpace)\src\closed)
 168 OPENJDK=true
 169 !endif
 170 !endif
 171 
 172 # We don't support SA on ia64, and we can't
 173 # build it if we are using a version of Vis Studio
 174 # older than .Net 2003.
 175 # SA_INCLUDE and SA_LIB are hold-overs from a previous
 176 # implementation in which we could build SA using
 177 # Debugging Tools For Windows, in which the .h/.lib files
 178 # and the .dlls are in different places than
 179 # they are for Vis Studio .Net 2003.
 180 # If that code ever needs to be resurrected, these vars
 181 # can be set here.  They are used in makefiles/sa.make.
 182 
 183 checkSA::
 184 
 185 !if "$(BUILD_WIN_SA)" != "1"
 186 checkSA::
 187         @echo     Not building SA:  BUILD_WIN_SA != 1
 188 
 189 !elseif "$(ARCH)" == "ia64"
 190 BUILD_WIN_SA = 0
 191 checkSA::
 192         @echo     Not building SA:  ARCH = ia64
 193 
 194 !endif  # ! "$(BUILD_WIN_SA)" != "1"
 195 
 196 #########################################################################
 197 
 198 defaultTarget: product
 199 
 200 # The product or release build is an optimized build, and is the default
 201 
 202 # note that since all the build targets depend on local.make that BUILDARCH
 203 # and Platform_arch and Platform_arch_model will get set in local.make
 204 # and there is no need to pass them thru here on the command line
 205 #
 206 product release optimized: checks $(variantDir) $(variantDir)\local.make sanity
 207         cd $(variantDir)
 208         nmake -nologo -f $(WorkSpace)\make\windows\makefiles\top.make BUILD_FLAVOR=product ARCH=$(ARCH)
 209 
 210 # The debug build is an optional build
 211 debug: checks $(variantDir) $(variantDir)\local.make sanity
 212         cd $(variantDir)
 213         nmake -nologo -f $(WorkSpace)\make\windows\makefiles\top.make BUILD_FLAVOR=debug ARCH=$(ARCH)
 214 fastdebug: checks $(variantDir) $(variantDir)\local.make sanity
 215         cd $(variantDir)
 216         nmake -nologo -f $(WorkSpace)\make\windows\makefiles\top.make BUILD_FLAVOR=fastdebug ARCH=$(ARCH)
 217 
 218 # target to create just the directory structure
 219 tree: checks $(variantDir) $(variantDir)\local.make sanity
 220         mkdir $(variantDir)\product
 221         mkdir $(variantDir)\debug
 222         mkdir $(variantDir)\fastdebug
 223 
 224 sanity:
 225         @ echo;
 226         @ cd $(variantDir)
 227         @ nmake -nologo -f $(WorkSpace)\make\windows\makefiles\sanity.make
 228         @ cd ..
 229         @ echo;
 230 
 231 clean: checkVariant
 232         - rm -r -f $(variantDir)
 233 
 234 $(variantDir):
 235         mkdir $(variantDir)
 236 
 237 $(variantDir)\local.make: checks
 238         @ echo # Generated file                                 >  $@
 239         @ echo Variant=$(realVariant)                           >> $@
 240         @ echo WorkSpace=$(WorkSpace)                           >> $@
 241         @ echo BootStrapDir=$(BootStrapDir)                     >> $@
 242         @ if "$(USERNAME)" NEQ "" echo BuildUser=$(USERNAME)    >> $@
 243         @ echo HS_VER=$(HS_VER)                                 >> $@
 244         @ echo HS_DOTVER=$(HS_DOTVER)                           >> $@
 245         @ echo HS_COMPANY=$(COMPANY_NAME)                       >> $@
 246         @ echo HS_FILEDESC=$(HS_FILEDESC)                       >> $@
 247         @ echo HOTSPOT_VM_DISTRO=$(HOTSPOT_VM_DISTRO)           >> $@
 248         @ if "$(OPENJDK)" NEQ "" echo OPENJDK=$(OPENJDK)        >> $@
 249         @ echo HS_COPYRIGHT=$(HOTSPOT_VM_COPYRIGHT)             >> $@
 250         @ echo HS_NAME=$(PRODUCT_NAME) $(VERSION_SHORT)         >> $@
 251         @ echo HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) >> $@
 252         @ echo BUILD_WIN_SA=$(BUILD_WIN_SA)                     >> $@
 253         @ echo SA_BUILD_VERSION=$(HOTSPOT_VERSION_STRING)       >> $@
 254         @ echo SA_INCLUDE=$(SA_INCLUDE)                         >> $@
 255         @ echo SA_LIB=$(SA_LIB)                                 >> $@
 256         @ echo JDK_VER=$(JDK_VER)                               >> $@
 257         @ echo JDK_DOTVER=$(JDK_DOTVER)                         >> $@
 258         @ echo VERSION_STRING=$(VERSION_STRING)                 >> $@
 259         @ echo BUILDARCH=$(BUILDARCH)                           >> $@
 260         @ echo Platform_arch=$(Platform_arch)                   >> $@
 261         @ echo Platform_arch_model=$(Platform_arch_model)       >> $@
 262         @ echo CXX=$(CXX)                                       >> $@
 263         @ echo LD=$(LD)                                         >> $@
 264         @ echo MT=$(MT)                                         >> $@
 265         @ echo RC=$(RC)                                         >> $@
 266         @ sh $(WorkSpace)/make/windows/get_msc_ver.sh           >> $@
 267         @ if "$(ENABLE_FULL_DEBUG_SYMBOLS)" NEQ "" echo ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS) >> $@
 268         @ if "$(ZIP_DEBUGINFO_FILES)" NEQ "" echo ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES) >> $@
 269         @ if "$(RM)" NEQ "" echo RM=$(RM)                       >> $@
 270         @ if "$(CP)" NEQ "" echo CP=$(CP)                       >> $@
 271         @ if "$(MV)" NEQ "" echo MV=$(MV)                       >> $@
 272         @ if "$(ZIPEXE)" NEQ "" echo ZIPEXE=$(ZIPEXE)           >> $@
 273 
 274 checks: checkVariant checkWorkSpace checkSA
 275 
 276 checkVariant:
 277         @ if "$(Variant)"=="" echo Need to specify "Variant=[tiered|compiler2|compiler1|core]" && false
 278         @ if "$(Variant)" NEQ "tiered" if "$(Variant)" NEQ "compiler2" if "$(Variant)" NEQ "compiler1" if "$(Variant)" NEQ "core" \
 279           echo Need to specify "Variant=[tiered|compiler2|compiler1|core]" && false
 280 
 281 checkWorkSpace:
 282         @ if "$(WorkSpace)"=="" echo Need to specify "WorkSpace=..." && false
 283 
 284 checkBuildID:
 285         @ if "$(BuildID)"=="" echo Need to specify "BuildID=..." && false