1 #
   2 # Copyright (c) 1998, 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.
   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/hotspot_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 
 127 # if the build is for JDK6 or earlier version, it should include jdk6_hotspot_distro,
 128 # instead of hotspot_distro.
 129 JDK6_OR_EARLIER=0
 130 !if "$(JDK_MAJOR_VERSION)" != "" && "$(JDK_MINOR_VERSION)" != "" && "$(JDK_MICRO_VERSION)" != ""
 131 !if $(JDK_MAJOR_VERSION) == 1 && $(JDK_MINOR_VERSION) < 7
 132 JDK6_OR_EARLIER=1
 133 !endif
 134 !else
 135 !if $(JDK_MAJOR_VER) == 1 && $(JDK_MINOR_VER) < 7
 136 JDK6_OR_EARLIER=1
 137 !endif
 138 !endif
 139 
 140 !if $(JDK6_OR_EARLIER) == 1
 141 !include $(WorkSpace)\make\jdk6_hotspot_distro
 142 !else
 143 !include $(WorkSpace)\make\hotspot_distro
 144 !endif
 145 !else
 146 !include $(WorkSpace)\make\openjdk_distro
 147 !endif
 148 !endif
 149 
 150 # Following the Web Start / Plugin model here....
 151 # We can have update versions like "01a", but Windows requires
 152 # we use only integers in the file version field.  So:
 153 # JDK_UPDATE_VER = JDK_UPDATE_VERSION * 10 + EXCEPTION_VERSION
 154 #
 155 JDK_UPDATE_VER=0
 156 JDK_BUILD_NUMBER=0
 157 
 158 HS_FILEDESC=$(HOTSPOT_VM_DISTRO) $(ARCH_TEXT) $(VARIANT_TEXT) VM
 159 
 160 # JDK ProductVersion:
 161 # 1.5.0_<wx>-b<yz> will have DLL version 5.0.wx*10.yz
 162 # Thus, 1.5.0_10-b04  will be 5.0.100.4
 163 #       1.6.0-b01     will be 6.0.0.1
 164 #       1.6.0_01a-b02 will be 6.0.11.2
 165 #
 166 # JDK_* variables are defined in make/hotspot_version or on command line
 167 #
 168 JDK_VER=$(JDK_MINOR_VER),$(JDK_MICRO_VER),$(JDK_UPDATE_VER),$(JDK_BUILD_NUMBER)
 169 JDK_DOTVER=$(JDK_MINOR_VER).$(JDK_MICRO_VER).$(JDK_UPDATE_VER).$(JDK_BUILD_NUMBER)
 170 !if "$(JRE_RELEASE_VERSION)" == ""
 171 JRE_RELEASE_VER=$(JDK_MAJOR_VER).$(JDK_MINOR_VER).$(JDK_MICRO_VER)
 172 !else
 173 JRE_RELEASE_VER=$(JRE_RELEASE_VERSION)
 174 !endif
 175 !if "$(JDK_MKTG_VERSION)" == ""
 176 JDK_MKTG_VERSION=$(JDK_MINOR_VER).$(JDK_MICRO_VER)
 177 !endif
 178 
 179 # Hotspot Express VM FileVersion:
 180 # 10.0-b<yz> will have DLL version 10.0.0.yz (need 4 numbers).
 181 #
 182 # HS_* variables are defined in make/hotspot_version
 183 #
 184 HS_VER=$(HS_MAJOR_VER),$(HS_MINOR_VER),0,$(HS_BUILD_NUMBER)
 185 HS_DOTVER=$(HS_MAJOR_VER).$(HS_MINOR_VER).0.$(HS_BUILD_NUMBER)
 186 
 187 !if "$(HOTSPOT_RELEASE_VERSION)" == ""
 188 HOTSPOT_RELEASE_VERSION=$(HS_MAJOR_VER).$(HS_MINOR_VER)-b$(HS_BUILD_NUMBER)
 189 !endif
 190 
 191 !if "$(HOTSPOT_BUILD_VERSION)" == ""
 192 HS_BUILD_VER=$(HOTSPOT_RELEASE_VERSION)
 193 !else
 194 HS_BUILD_VER=$(HOTSPOT_RELEASE_VERSION)-$(HOTSPOT_BUILD_VERSION)
 195 !endif
 196 
 197 # End VERSIONINFO parameters
 198 
 199 
 200 # We don't support SA on ia64, and we can't
 201 # build it if we are using a version of Vis Studio
 202 # older than .Net 2003.
 203 # SA_INCLUDE and SA_LIB are hold-overs from a previous
 204 # implementation in which we could build SA using
 205 # Debugging Tools For Windows, in which the .h/.lib files
 206 # and the .dlls are in different places than
 207 # they are for Vis Studio .Net 2003.
 208 # If that code ever needs to be resurrected, these vars
 209 # can be set here.  They are used in makefiles/sa.make.
 210 
 211 checkSA::
 212 
 213 !if "$(BUILD_WIN_SA)" != "1"
 214 checkSA::
 215         @echo     Not building SA:  BUILD_WIN_SA != 1
 216 
 217 !elseif "$(ARCH)" == "ia64"
 218 BUILD_WIN_SA = 0
 219 checkSA::
 220         @echo     Not building SA:  ARCH = ia64
 221 
 222 !endif  # ! "$(BUILD_WIN_SA)" != "1"
 223 
 224 #########################################################################
 225 
 226 defaultTarget: product
 227 
 228 # The product or release build is an optimized build, and is the default
 229 
 230 # note that since all the build targets depend on local.make that BUILDARCH
 231 # and Platform_arch and Platform_arch_model will get set in local.make
 232 # and there is no need to pass them thru here on the command line
 233 #
 234 product release optimized: checks $(variantDir) $(variantDir)\local.make sanity
 235         cd $(variantDir)
 236         nmake -nologo -f $(WorkSpace)\make\windows\makefiles\top.make BUILD_FLAVOR=product ARCH=$(ARCH)
 237 
 238 # The debug or jvmg (all the same thing) is an optional build
 239 debug jvmg: checks $(variantDir) $(variantDir)\local.make sanity
 240         cd $(variantDir)
 241         nmake -nologo -f $(WorkSpace)\make\windows\makefiles\top.make BUILD_FLAVOR=debug ARCH=$(ARCH)
 242 fastdebug: checks $(variantDir) $(variantDir)\local.make sanity
 243         cd $(variantDir)
 244         nmake -nologo -f $(WorkSpace)\make\windows\makefiles\top.make BUILD_FLAVOR=fastdebug ARCH=$(ARCH)
 245 
 246 develop: checks $(variantDir) $(variantDir)\local.make sanity
 247         cd $(variantDir)
 248         nmake -nologo -f $(WorkSpace)\make\windows\makefiles\top.make BUILD_FLAVOR=product DEVELOP=1 ARCH=$(ARCH)
 249 
 250 # target to create just the directory structure
 251 tree: checks $(variantDir) $(variantDir)\local.make sanity
 252         mkdir $(variantDir)\product
 253         mkdir $(variantDir)\debug
 254         mkdir $(variantDir)\fastdebug
 255 
 256 sanity:
 257         @ echo;
 258         @ cd $(variantDir)
 259         @ nmake -nologo -f $(WorkSpace)\make\windows\makefiles\sanity.make
 260         @ cd ..
 261         @ echo;
 262 
 263 clean: checkVariant
 264         - rm -r -f $(variantDir)
 265 
 266 $(variantDir):
 267         mkdir $(variantDir)
 268 
 269 $(variantDir)\local.make: checks
 270         @ echo # Generated file                                 >  $@
 271         @ echo Variant=$(realVariant)                           >> $@
 272         @ echo WorkSpace=$(WorkSpace)                           >> $@
 273         @ echo BootStrapDir=$(BootStrapDir)                     >> $@
 274         @ if "$(USERNAME)" NEQ "" echo BuildUser=$(USERNAME)    >> $@
 275         @ echo HS_VER=$(HS_VER)                                 >> $@
 276         @ echo HS_DOTVER=$(HS_DOTVER)                           >> $@
 277         @ echo HS_COMPANY=$(COMPANY_NAME)                       >> $@
 278         @ echo HS_FILEDESC=$(HS_FILEDESC)                       >> $@
 279         @ echo HOTSPOT_VM_DISTRO=$(HOTSPOT_VM_DISTRO)           >> $@
 280         @ echo HS_COPYRIGHT=$(HOTSPOT_VM_COPYRIGHT)             >> $@
 281         @ echo HS_NAME=$(PRODUCT_NAME) $(JDK_MKTG_VERSION)      >> $@
 282         @ echo HS_BUILD_VER=$(HS_BUILD_VER)                     >> $@
 283         @ echo BUILD_WIN_SA=$(BUILD_WIN_SA)                     >> $@
 284         @ echo SA_BUILD_VERSION=$(HS_BUILD_VER)                 >> $@
 285         @ echo SA_INCLUDE=$(SA_INCLUDE)                         >> $@
 286         @ echo SA_LIB=$(SA_LIB)                                 >> $@
 287         @ echo JDK_VER=$(JDK_VER)                               >> $@
 288         @ echo JDK_DOTVER=$(JDK_DOTVER)                         >> $@
 289         @ echo JRE_RELEASE_VER=$(JRE_RELEASE_VER)               >> $@
 290         @ echo BUILDARCH=$(BUILDARCH)                           >> $@
 291         @ echo Platform_arch=$(Platform_arch)                   >> $@
 292         @ echo Platform_arch_model=$(Platform_arch_model)       >> $@
 293         @ echo CXX=$(CXX)                                       >> $@
 294         @ echo LD=$(LD)                                         >> $@
 295         @ echo MT=$(MT)                                         >> $@
 296         @ echo RC=$(RC)                                         >> $@
 297         @ sh $(WorkSpace)/make/windows/get_msc_ver.sh           >> $@
 298         @ if "$(ENABLE_FULL_DEBUG_SYMBOLS)" NEQ "" echo ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS) >> $@
 299         @ if "$(ZIP_DEBUGINFO_FILES)" NEQ "" echo ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES) >> $@
 300         @ if "$(RM)" NEQ "" echo RM=$(RM)                       >> $@
 301         @ if "$(ZIPEXE)" NEQ "" echo ZIPEXE=$(ZIPEXE)           >> $@
 302 
 303 checks: checkVariant checkWorkSpace checkSA
 304 
 305 checkVariant:
 306         @ if "$(Variant)"=="" echo Need to specify "Variant=[tiered|compiler2|compiler1|core]" && false
 307         @ if "$(Variant)" NEQ "tiered" if "$(Variant)" NEQ "compiler2" if "$(Variant)" NEQ "compiler1" if "$(Variant)" NEQ "core" \
 308           echo Need to specify "Variant=[tiered|compiler2|compiler1|core]" && false
 309 
 310 checkWorkSpace:
 311         @ if "$(WorkSpace)"=="" echo Need to specify "WorkSpace=..." && false
 312 
 313 checkBuildID:
 314         @ if "$(BuildID)"=="" echo Need to specify "BuildID=..." && false